1 Ostatnio edytowany przez xxl (2011-03-25 09:53:30)

pierwsze miejsce na liscie: http://worldofstuart.excellentcontent.c … top100.htm

http://atari.pl/deathchase_vbxe.jpg

problem w tym, ze procedura generujaca atrybuty dla vbxe zabiera za duzo czasu:

przyklad:

attrybuty
                lda <_build_atrybuty
                sta _sp
                lda >_build_atrybuty
                sta _sp+1

                ldy #0
_copatr         ldx $5800
                inc _copatr+1
                lda _ink_tab,x
                iny             ; 1
                sta (_sp),y
                lda _paper_tab,x
                iny             ; 2
                sta (_sp),y
                iny
                iny
                bne _copatr
                inc _sp+1
                lda _copatr+1
                bne _copatr1

to tworzy 1/3 atrybutow, czy ma ktos pomysl jak to zrobic na blitterze?

jesli sie to nie uda niestety trzeba bedzie gre przerobic na tryb $e :/ i juz nie bedzie wygladala jak oryginal ...

http://atari.pl/hsc/ad.php?i=1.

Xxl , sorry ze sie w...... ale jaki jest sens przerabiac gry z trumny na Atari ???

World f**k Olympique Marseille & Legia Warszawa i Sochi 2014

3

a jakbys mial dla nieuma atarowego opisac tworzenie atrybutow?
ewentualnie co trzeba skonwertowac? bo u mnie ciezko z analiza samomodyfikujacego sie kodu

przechodze na tumiwisizm

4

@bitman, tak jak z seksem - w efekcie moze byc z tego dziecko ale nie dlatego to robimy ;)

> co trzeba skonwertowac?

przykladowo pod adresem $5800 znajduje sie indeks do tablicy A, wartosc z tej tablicy nalezy ulozyc w pamieci atrybutow vbxe na pozycji 1 (nie zero), z tablicy B (ten sam indeks) wartoc na pozycje 2 atrybutow vbxe. z $5801 odpowiednio do 5 i 6 attr vbxe itd., kowersje nalezy przeprowadzic dla indeksow znajdujacych sie od $5800-$5aff

http://atari.pl/hsc/ad.php?i=1.

5

A co z dzieckiem o dźwięcznym imieniu "Asteroids"?

6

Asteroids - juz kiedys mowilem ile obiektow na raz trzeba umiescic na ekranie, tak gdzies do drugiej fazy chodzi w 1 ramce a pozniej 2...3 i juz nie jest to ;-) zmienilo by sie gdyby: http://atariarea.krap.pl/forum/viewtopi … 38#p118938

http://atari.pl/hsc/ad.php?i=1.

7 Ostatnio edytowany przez Jacques (2011-03-25 09:34:46)

Acha... No ale skoro Z80, to może coś ciekawszego? ;) Prince Of Persia z CPC? CPC jest na fali po demku Batman Forever :P Dobra, sorry za lobbing ;)

http://www.hardcoregaming101.net/princeofpersia/pop-cpc.png

8

gdybym rozumial jak dziala rozszerzenie pamieci w apple2 gdzie PoP jest w oryginale... temat na inny watek :p

http://atari.pl/hsc/ad.php?i=1.

9

tablica A Nx1
tablica B Nx1
tablica atrybutow vbxe: Nx4
kopiujesz paski - 4 operacje blittera

przechodze na tumiwisizm

10

nie wiem jak, przykladzik?

http://atari.pl/hsc/ad.php?i=1.

11

BLT_ATR1
    .long table_a    ; source address
    .word $1        ; source step y
    .byte $1        ; source step x
    .long attribute_map+1    ; destination address
    .word $4        ; destination step y
    .byte $1        ; destination step x
    .word $3        ; width (-1)
    .byte table_lenght -1        ; height (-1)
    dta 0xff        ; and mask
    dta 0x00        ; xor mask
    dta 0x00        ; collision and mask
    dta 0x00        ; zoom
    dta 0x00        ; patter feature
    dta 0x08        ; control
;-- second blitter operation
    .long table_b    ; source address
    .word $1        ; source step y
    .byte $1        ; source step x
    .long attribute_map+2    ; destination address
    .word $4        ; destination step y
    .byte $1        ; destination step x
    .word $3        ; width (-1)
    .byte table_lenght -1        ; height (-1)
    dta 0xff        ; and mask
    dta 0x00        ; xor mask
    dta 0x00        ; collision and mask
    dta 0x00        ; zoom
    dta 0x00        ; patter feature
    dta 0x00        ; control
;-- end of blit
przechodze na tumiwisizm

12

nie jestem pewny czy dokladnie przeczytales jak to ma dzialac...

http://atari.pl/hsc/ad.php?i=1.

13

Bo z tego co widzę to blitterem chyba nie da rady.
Na gumiaku się nie znam ale z tego co rozumiem to na tablicy 756 bajtowej ma zapisane wektory atrybutów dla tła i znaków.
Sprawdziłem sobie ile by zajeło przepisanie speedcodem czegoś takiego i wyszło mi 15k cykli i 11k kodu :)
Tak czy inaczej w ramce ciężko się by było zmieścić.
Zamiast tego stworzyłbym tablice atrybutów w vbxe i zmodyfikował procedury które operują na tablicy specrumowskiej, na takie które będą operować na tablicy atrybutów vbxe.
Nie ma sensu żeby program modyfikował atrybuty w systemie ZX'a a potem drugi raz je przenosić na vbxe.
Podwójna robota dla kompa. Szybszej metody nie znam.
No ale wymaga pewnie przegrzebania całego kodu.

14

xxl: tak opisalem jak zrozumialem, byc moze trzeba mi problem wyluszczyc jak krowie na rowie?
nie znam sie na ulach

przechodze na tumiwisizm

15

no wlasnie... zabiera czasu wiecej niz ramka, ale tylko 100 bajtow na program i 512 bajtow na tablice, uwzglednia tez miganie na atrybitach. to ma byc dla mnie procedurka biblioteczna ;-) zalaczam do dowolnej gry konwertowanej z zx i kolor na vbxe ma byc. ale... za duzo czasu zabiera :/

http://atari.pl/hsc/ad.php?i=1.

16

Wydaje mi się że jeśli zawartość danych z _copart można przetasować to taką procedurę w pętli można przyspieszyć o 20%.

17

20% niezle, z programem przed oczami lepiej sie mysli :-) mozna prosic o przyklad?

http://atari.pl/hsc/ad.php?i=1.

18

attrybuty
                lda <_build_atrybuty+1
                ldx >_build_atrybuty+1

                ldy #0
                clc

                sta _sp1
                adc #1
                sta _sp2

_copatrh        stx _sp1+1
                stx _sp2+1

_copatr         ldx $5800,y
                lda _ink_tab,x
                dta {sta 256,y}
_sp1            dta a(256+1)
                lda _paper_tab,x
                dta {sta 256,y}
_sp2            dta a(256+2)
                tya
                adc #4
                tay
                bne _copatr
                ldx _sp1+1
                inx
                lda _copatr+1
                adc #0
                and #3
                sta _copatr+1
                bne _copatrh

19 Ostatnio edytowany przez xxl (2011-03-26 01:05:51)

juz w drugim obiegu petla pobiera ze zlego miejsca dene ale zastosowales swietny pomysl ze zmiana adresowania z (),y na $ffff,y w petli co oszczedza 2 cykle na petle oraz z tya adc # tay - oszczednosc 2 cykle na petle. zastosowalem:

attrybuty       lda >_build_atrybuty
                sta _sp1+2
                sta _sp2+2
                lda #$58
                sta _copatr8+2
                
                ldy #0
_copatr81       clc
_copatr8        ldx $5800
                inc _copatr8+1
                lda _ink_tab,x
_sp1            sta _build_atrybuty+1,y
                lda _paper_tab,x
_sp2            sta _build_atrybuty+2,y
                tya
                adc #$04
                tay
                bne _copatr8
                inc _sp1+2
                inc _sp2+2
                lda _copatr8+1
                bne _copatr81

                inc _copatr8+2
                lda _copatr8+2
                cmp #$5B
                bcc _copatr8

co daje procke szybsza i krotsza ok ? 61 ? bajty. jednak ciagle wiecej niz jedna ramka

http://atari.pl/hsc/ad.php?i=1.

20

xxl: pobiera ze złego miejsca, ale zauważ że pisałem coś o przetasowaniu tych danych, więc potencjalnie procka może pobierać właściwe dane (i zaoszczędzić w najbardziej wewnętrznej pętli kolejnych 6 cykli, czyli razem już 10 na 41 wyjściowych, jeśli dobrze liczę)

to przetasowanie polegałoby na tym że:

x= ($3f and x)*4+int(x/$40)

np. x= $43
nowe x= 3*4+1= 13= $0d

21

XXL - jak by było trzeba cokolwiek potestować czy działa, to jestem do dyspozycji :P

Kontakt: pin@usdk.pl

22

marok, nie ma mowy o zmianie organizacji atrybutow.

http://atari.pl/deathchase_wip1.gif

jeszcze kilka procek jest do przepisania (cyklisci/czolg/smiglowiec/strzal/wybuch), plan jest taki: jesli bedzie chodzilo z szybkoscia oryginalu to kolory z atrybutow na vbxe zostana

Pin: moze byc problem... chce zeby ta gra byla "calodyskowa" - bedzie zapisywala hiscore.

http://atari.pl/hsc/ad.php?i=1.

23

wersja plikowa też może zapisywać

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

24

a czy wersja plikowa umozliwia zaladowanie danych od $0400 - $FFFF

http://atari.pl/hsc/ad.php?i=1.

25

jak najbardziej

przechodze na tumiwisizm