1

Temat: DeathChase

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 ...

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

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

Odp: DeathChase

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

Odp: DeathChase

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

Odp: DeathChase

@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

Odp: DeathChase

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

6

Odp: DeathChase

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

Odp: DeathChase

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

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

8

Odp: DeathChase

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

Odp: DeathChase

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

przechodze na tumiwisizm

10

Odp: DeathChase

nie wiem jak, przykladzik?

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

11

Odp: DeathChase

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

Odp: DeathChase

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

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

13

Odp: DeathChase

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

Odp: DeathChase

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

przechodze na tumiwisizm

15

Odp: DeathChase

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

Odp: DeathChase

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

Odp: DeathChase

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

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

18

Odp: DeathChase

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

Odp: DeathChase

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

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

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

20

Odp: DeathChase

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

Odp: DeathChase

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

ADRES: pin@atari.pl - konto zlikwidowane. Aktualny adres: pin(at)atari8.info

22

Odp: DeathChase

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

Odp: DeathChase

wersja plikowa też może zapisywać

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

24

Odp: DeathChase

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

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

25

Odp: DeathChase

jak najbardziej

przechodze na tumiwisizm