1

Temat: arcade2atari8

witam,

http://atariarea.krap.pl/forum/viewtopic.php?id=5853

http://atari.online.pl/v01/index.phtml? … ct=nowinki

http://atari.pl/nr.rar  - filmik

na filmiku widac, ze sprity smieca po ekranie... chcialbym prosic o pomoc w napisaniu dobrego i szybkiego silnika spritow dla tej gry.

obecnie wyglada on tak:

; sprite engine

_x       equ $b0
_y       equ $b1
_hv      equ $b2
_ekran   equ $b3
_sprite1 equ $b5
_sprite2 equ $b6
_temp_x  equ $b7

_sprite_engine

                ldx #$0f  - 16 spritow
_next_spr  stx _temp_x
                lda $400,x - od $400 do $42f znajduja sie rejestry hardwarowe. $400-$40f to pozycja x spritow ponizej sposob liczenia
                sta _x
                lda $410,x - pozycja y
                sta _y
                lda $420,x - szerokosc i wysokosc sprita. starszy nibbel=0 oznacza sprita wylaczonego
                sta _hv
                jsr _se0
                ldx _temp_x
                dex
                bpl _next_spr
                rts
                
_se0
                lda _hv
                and #%11110000
                bne _se1
                rts
_se1      

                lda #$00
                sta _sprite2
                lda _x
                and #%111
                tay
                
                lda _hv
                lsr @
                lsr @
                lsr @
                lsr @
                tax
                lda _tab_h,x
                cpy #0
                beq _se5
_se2         lsr @
                ror _sprite2
                dey
                bne _se2
_se5         sta _sprite1
                
                lda _y
                lsr @
                lsr @
                lsr @
                tax
                lda _tab_y,x
                sta _ekran+1
                lda _y
                and #%111
                tax
                lda _tab_y_fine,x
                sta _ekran
                lda _x
                lsr @
                lsr @
                lsr @
                clc
                adc _ekran
                sta _ekran
                
                lda _hv
                and #%1111
                eor #%1111
                tax
_se4         ldy #0

                ;lda (_ekran),y
                ;ora _sprite1
              lda _sprite1

                sta (_ekran),y
                iny

                ;lda (_ekran),y
                ;ora _sprite2
              lda _sprite2

                sta (_ekran),y
                lda _ekran
                clc
                adc #$20
                sta _ekran
                bcc _se3
                inc _ekran+1
_se3         dex
                bpl _se4
                rts

; szerokosc sprita
_tab_h  dta %00000000,%10000000,%11000000,%11100000
        dta %11110000,%11111000,%11111100,%11111110,%11111111 - hardware obsluguje szersze ale w tej grze nie ma spritow szerszych od 8
        
; numer lini przelozyc na starszy adres 0,1,2,3..7 zawsze puste
_tab_y  dta $40,$40,$40,$40,$40,$40,$40,$40
        dta $40,$41,$42,$43,$44,$45,$46,$47
        dta $48,$49,$4a,$4b,$4c,$4d,$4e,$4f
        dta $50,$51,$52,$53,$54,$55,$56,$57
        
; mlodszy bajt pozycji pionowej
_tab_y_fine     dta $00,$20,$40,$60,$80,$a0,$c0,$e0

nie bylo by problemu gdyby mozna bylo szybko na vbi wymazac pamiec ekranu, ale nie mozna...

na powyzsza procedurke jesli jest taka potrzeba mozna przeznaczyc pamiec: $b0-$1af

procedura bedzie wykonywana na vbi ale byc moze lepiej bedzie sie wpiac w kod gry:

            ldy #$0f
            ldx #$1f
_1        lda $08,x
            sta $420,y
            lda $28,x
            eor #$ff
            sta $400,y
            lda $48,x
            sta $410,y
            dex
            dex
            dey
            bpl _1
http://atari.pl/hsc/ad.php?i=1.

2

Odp: arcade2atari8

Az sie prosi by te "slupki" byly na duszkach sprzetowych (ze zmiana wspolzednych poziomych na DLI) albo narysowane "na stale" i przesuwane za pomoca plunnego przesuwu linii (w poziomie) i manipulacji adresem danych obrazu (w pionie) - przyklad: gra "Ballblazer". To nie zajmuje prawie czasu procesora, bo jest juz narysowane.

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

3

Odp: arcade2atari8

slupki na pm - tez o tym myslalem tylko, ze oprocz pozycji na dli trzeba by ustawiac tez szerokosc bo czasem 6 slupkow nachodzi na siebie czyli missiles tez sa potrzebne... ale gra sporo by stracila - zmiana pozycji co 2 pixele, zmana szerokosci co 2 pixele, a co najwazniejsze gra nie wygladalaby jak oryginal wink poza tym moze pm uzyje sie do narysowania auta? albo do symulacji oswietlenia przez reflektory drogi w nocy ;D



---
poprawiony silnik spritow:
http://atari.pl/nr1.rar - nie wyswietlam 4 spritow bo obraz zacznie migac - w ostatecznej wersji obraz bedzie 2buforowy

Ostatnio edytowany przez xxl (2008-05-04 13:28:14)

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

4

Odp: arcade2atari8

XXL, nie wiem, czy to coś pomoże, ale kiedyś "dawno temu bawiąc się" w program do animacji sticki-bones'ów wykorzystałem to, że możesz pamięć grafiki przełączać pomiędzy różnymi obszarami pamięci, a wywołanie graphics N czyściło ten obszar w locie... więc jak w jednym obszarze rysowałem, to drugi "podsyłałem" do zerowania...

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

5

Odp: arcade2atari8

http://atari.pl/nr2.rar - wszystkie sprity na ekranie w 1 ramce. czas na klawiature

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

6

Odp: arcade2atari8

O ile dobrze pamiętam, to milion lat temu nad jez. białym grałem w tą grę w takiej budzie z automatami.

All I hear is the sound of me falling on the ground

7

Odp: arcade2atari8

plik uruchamiamlny dla atariwinplus  http://atari.pl/nightdriver1.a8s

f2 sart, f3 gaz do dechy

brakuje 2 spritow - gdy sa rysowane brakuje czasu na sama gre i zaczynaja sie smieci. optymalizacja w toku.

Ostatnio edytowany przez xxl (2008-05-06 08:13:19)

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

8

Odp: arcade2atari8

zrob doubble buffering - rysuj na 2 ekranach i przelaczaj (pokazuj narysowany, a rysuj na roboczym), chyba ze z jakis wzledow tutaj nie mozesz - dopiero w domu lookne sobie .rary ;o.

9

Odp: arcade2atari8

xxl napisał/a:

plik uruchamiamlny dla atariwinplus  http://atari.pl/nightdriver1.as8

link coś nie tegez

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

10

Odp: arcade2atari8

poprawione

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

11

Odp: arcade2atari8

http://www.flashfactory.ovh.org/show/atari/nr1_a8s.png ups smile

//EDIT: fioletowe linie od góry pulsowały (raz było ich mniej, raz więcej) przy jeździe, pozostałe pasy wylazły, gdy coś nacisłem - SELECT+LEFT ?

Ostatnio edytowany przez maw (2008-05-06 08:20:06)

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

12

Odp: arcade2atari8

slepe irq. tak ma byc narazie. fioletowy pasek to czas jaki potrzebuje silnik spritow do obslugi 14 obiektow. obslugiwane sa tylko klawisze konsoli - tylko dla demonstracji tego co narazie jest zrobione.

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

13

Odp: arcade2atari8

ciężki ten silnik - przy full speed i odświeżaniem co 2gą klatkę 300% szybkości atarynki (c2 4300@1.8Ghz)

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

14

Odp: arcade2atari8

? nie rozumiem.

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

15

Odp: arcade2atari8

mea culpa - można usunąć tamte info, mieszałem z odświeżaniem ekranu i musiałem coś przemieszać za bardzo - leci tak samo szybko jak river raid smile

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

16

Odp: arcade2atari8

http://atari.pl/nightdriver2.a8s

f2 - start
joy sterowanie, ustawiony jest bieg 2 na stale.

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

17

Odp: arcade2atari8

http://www.flashfactory.ovh.org/show/atari/nr2_a8s.png
za pierwszym razem myślałem, że to brak jakiejś pocedurki pod koniec (np. migania ekranu jak kończy się czas) ponieważ śmieci pojawiały się w regularnych odstępach czasu, za drugim myślałem, że to wina mojego jeżdżenia po "pachołkach"...

za trzecim razem zaczęły się pojawiać po paru naprzemiennych ostrych zakrętach.

Co do rysowania i czyszczenia słupków - rysowałbym od pierwszej linii słupki, od ostatniej bym kasował obszary zmienne (a więc tylko słupki), a po kasowaniu rysował nowe słupki - ale wymagało by to trzymania tablicy pozycji słupków (obszarów zmiennych) w pamięci i przeliczania jej przed przystąpieniem do wyświetlania.

//EDIT: myślę, że to widać, jak układają się ślady słupków w drogę w lewo, potem prosto właściwa droga, a potem znowu ślady układają się w drogę w prawo

Ostatnio edytowany przez maw (2008-05-07 07:35:54)

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

18

Odp: arcade2atari8

http://atari.pl/nd3.jpg

ze smieceniem sobie poradzilem, dodalem cieniowanie na pm (slupki dalej polozone sa ciemniejsze), dodalem zmiane biegow.

brakuje zmiany trasy (3 trasy)

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

19

Odp: arcade2atari8

łooo, XXL rządzi! (ponownie big_smile)

Kiedy będzie jakiś zrzut do przetestowania ?

Ostatnio edytowany przez maw (2008-05-13 10:46:46)

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

20

Odp: arcade2atari8

http://atari.pl/ndx.a8s

wylaczylem pm, cieniowanie zostawilem... biegi: joy do siebie wyzszy bieg, joy do gory nizszy bieg.

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

21

Odp: arcade2atari8

czyli standard z PolePosition, okey.


//EDIT: gra się super, nie zauważyłem jakichś "nieścisłości", czekam na domontowanie autka lub przynajmniej jakąś kreskę jego szerokości na dole, bo teraz strasznie trudno jest się zmieścić między słupkami smile

Ostatnio edytowany przez maw (2008-05-14 07:59:14)

[CIT] Proszę sobie dobrać samemu mordę do sytuacji: :D :-) :-( ;,( ;-) :P :-/ :-} ]:-> :-* :-o 8-| [/CIT]

22

Odp: arcade2atari8

sroll gor: http://atari.pl/ndm.rar filmik

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

23

Odp: arcade2atari8

No ladne cacko!!!
Jeszcze tylko 4 playery i 4 missile ladnie pokolorowane na dole jako samochod (niech z wykopem bedzie wink ) i gotowe!!!

Moje gratulacje!

Bla bla bla bla, bla bla bla. Bla bla bla - bla - bla. Blabla bleee.

24

Odp: arcade2atari8

demo gry. gra jest na finiszu jesli ma ktos jakies uwagi to slucham.

1. wylaczanie basica bedzie w czolowce ktorej tu nie ma dlatego nalezy wylaczyc basic przed zaladowaniem gry.
2. wcisniecie jakiegokolwiek klawisza zawiesi gre (potrzebne mi do testowania) usune w koncowej wersji
3. klawisz start rozpoczecie, dzoj gora/dol - biegi, prawo/lewo - skret, fire - gaz
4. w czolowce jest wybor trasy (tu jest tylko jedna)


http://atari.pl/night_demo.obx

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

25

Odp: arcade2atari8

Ładne. Kolejne potwierdzenie teorii, że grywalność jest odwrotnie proporcjonalna do złożoności grafiki.

"Physics is like sex: sure, it may give some practical results, but that's not why we do it." (Richard Feynman)
and... "Physics is to mathematics as sex is to masturbation." (podobno również R.F.)