Kod: |
 :  : ldy ColorCell :  : :  : :  ::dla danej komorki koloru lda MapC_colorsSpecimen,y :  ::pobierz kolor (:para): oryginalny beq + :  : :  : :  : :  ::jesli \'pusty\' to -> bierz sie za nastepny and #%00001111 :  : :  ::najpierw mlodszy nibble :wpierw badamy mlodszy nibble beq l_starszy-2 :  : :  ::jak czarny to dalej tax lda _multiTab,x :  : :  ::pomnoz przez 16 ora FadePhase tax lda _FullFadeTable,x :  ::i wez odpowiadajacy dla fazy kolor and #%00001111 :  ::tylko dla mlodszego nibble sta _cTmp2+1 :  : :  ::zapamietaj dalej (:dla OR): :  : :  : l_starszy lda MapC_colorsSpecimen,y :  ::pobierz kolor (:para): oryginalny and #%11110000 :  ::teraz starszy nibble beq _cTmp2 :  : :  ::czarny ? ora FadePhase :  : :  : :  : tax lda _FullFadeTable,x and #%11110000 _cTmp2 :  : :  :ora #$00 :  ::skladamy mlodszy i starszy nibble sta Colors_map,y :  : :  ::i na ekran + :  :iny :  :  : :nastepna komorka |
skull napisal: |
No i niestety najlepiej to wykonywac jakims efektem(tzn nie wszystko na raz) -bo obraz jest podzielony na 1000 komorek mapy koloru, +1000 dla $d800, i obsluzyc to wszystko w jedej ramce nie jest chyba nawet mozliwe. Oczywiscie mozna tez dodac jakies warunki przyspieszajace (np pomijac od razu kolor czarny). |
Nie pamietam dokladnie ale wydaje mi sie to jak najbardziej mozliwe zrobienie w jednej ramce (ale musimy unrollowac kod i oczywiscie korzystac z tabelki z kolorami do wygaszania)
/quote]
Ale konkrety chlopie, bo jak napisalem sam jestem ciekawy podejscia do tej sprawy - jasniej (unrollowac kod ?).
To czy w jednej ramce da sie obsluzyc efekt, zalezy tez oczywiscie od wielkosci obrazka, jednak chcac obluzyc kazda komorke wydaje sie to nie mozliwe - bo zmienic kazda komorke z tych 2000 to chyba tylko \"lda sta\" zostaje.
312 linii (PAL) * 63 cykle = 19656
- 25*40 (BadLines)
daje to 18656 / 2000 = 9,32 cykla na obsluge jedej komorki pamieci (nie wpominajac o tych z mapy koloru gdzie trzeba rozdzielac na nibble), glupie lda sta to 8 cykli, a co z jakas muzyczka w tle.
Tlumacz bo ja na razie tego nadal nie widze.
Nitro napisal: |
Moj fader dziala na zasadzie przedstawionej w tym watku i zdecydowanie nie jest to moj najlepszy kawalek kodu, bodajze o 3\'ciej w nocy byl napisany. Przedstawie idee na cos ciekawszego, poprawcie mnie jesli cos przeoczylem. Potraktujmy rejestr screen ramu jako state-machine, mamy w nim maksymalnie 256 kombinacji, dla kazdej chcemy uzyskac liczbe w ktorej oba nible zostana w jakis sposob zmodyfikowane. Coz za problem postawic 256 look-up tabelke. Przykladowo, wartosci w hexach: 31 - z tabelki 20 20 - z tabelki 10 10 - z tabelki 0 0 - z tabelki 0 i sie zapetla tak wiec nie trzeba nic sprawdzac. Mozna to spokojnie dostosowac do fade\'owania po luminancji. |
Cytat: |
Chyba kojarze zasade, ale wez wpisz klika linii listingu (dla pewnosci) |
Cytat: |
No i teraz zdalem sobie sprawe, ze mozna \"animowac\" zanik na rejestrze $d018 (mapy kolorow), tyle ze trzeba przed samym efektem wiliczyc 8 map kolorow (zasada analogiczna do FLI) dla kazdej fazy zaniku, a potem tylko co ramke przelaczac rejestr - zostaje jeszcze kwestia $d800, ale tu juz nie powinno byc problemu z wyrobieniem sie. Oczywisty minus tej metody to pamieciozernosc. |
Cytat: |
tyle tylko ze teraz chcialbym aby to pokazywalo sie np po ksztalcie okregu jak w Carrion Oldschool Pixels... tutaj mam nowa zagwozdke. |
Cytat: |
2. Fade co ramke nie koniecznie jest wymogiem. po zrobieniu tablicy fade\'u mamy 8 odcieni koloru gdy zaczynamy od bialego. zmiana odcienia co ramke poskutkuje takim blyskiem, ktorego nawet nie da sie zauwazyc |
Cytat: |
3. czy tego typu kod umieszcza sie w przerwaniu irq czy raczej nie koniecznie? |
Nitro napisal: |
Proste: ldx $0400 lda lut,x sta $0400 |
Cytat: |
tyle tylko ze teraz chcialbym aby to pokazywalo sie np po ksztalcie okregu jak w Carrion Oldschool Pixels... tutaj mam nowa zagwozdke. |
Kod: |
xcircle i ycircle - wspolrzedne srodka  :R=30  :XC=0::YC=R  :FX=0::FY=8*R::FS=4*R+3  :WHILE FX  :  :XC=XC+1  :  :FX=FX+8  :  :IF FS>0  :  :  :FS=FS-FX-4  :  :ELSE  :  :  :YC=YC-1  :  :  :FY=FY-8  :  :  :FS=FS-FX-4+FY  :  :ENDIF  :WEND splot8  :plot xcircle+XC,ycircle+YC  :plot xcircle+XC,ycircle-YC  :plot xcircle-XC,ycircle-YC  :plot xcircle-XC,ycircle+YC  :plot xcircle+YC,ycircle+XC  :plot xcircle+YC,ycircle-XC  :plot xcircle-YC,ycircle-XC  :plot xcircle-YC,ycircle+XC |
Cytat: |
2. Fade co ramke nie koniecznie jest wymogiem... |
Cytat: |
3. czy tego typu kod umieszcza sie w przerwaniu irq czy raczej nie koniecznie? |
skull napisal: |
Ale konkrety chlopie, bo jak napisalem sam jestem ciekawy podejscia do tej sprawy - jasniej (unrollowac kod ?). |
skull napisal: |
Tlumacz bo ja na razie tego nadal nie widze. |
zielok napisal: |
Unrollowac kody czyli wygenerowac kod ktory leci ciurkiem zamiast korzystac z petli czyli lda $xxxx sta $yyyy Poza tym nie moge tego sprawdzic bo jestem w pracy a nie mam w glowie ile cykli lda czy sta zajmuje (w koncu jestem co najwyzej przecietniakiem (c) Ramos). Kolejna kwestia to swoja wiedze opieralem na efekcie ktory kiedys napisalem i w okolo 0,5 ramki zmieniam caly obszar od $0400 do $07e8 (zaznacze, ze NIE PAMIETAM dokladnie ile to trwa bo calkiem mozliwe, ze troche dluzej niz 0,5 frame). |
skull napisal: |
Tlumacz bo ja na razie tego nadal nie widze. |
zielok napisal: |
A gdzie slowo prosze ? ![]() |
skull napisal: |
he,he i po co te nerwy... |
Cytat: |
no ale jesli ma sie to wykonac dla kazdej komorki, oraz dla colorRamu to nadal nie wystarcza czasu w jednej ramce -patrz wylicznia wyzej. |
Cytat: |
Kutfa Nitro daj tu jednak cala procedure tego fadingu |
skull napisal: |
dobra juz widze, czyli rewolucji nie bedzie. |
skull napisal: |
nie dawno wykorzystalem (z powodzeniem) to: |
Sebaloz/Lepsi.De napisal: | ||
Trzeba bylo wrzucic linka do calosci http://atariarea.krap.pl/forum/viewtopic.php?pid=104175#p104175 |
skull napisal: |
hehe, ale ja wykorzystalem tylko to co wkleilem ![]() |
fenek napisal: |
Przeszukujemy ekran pamieci kolorow dla pary bajtow zamienionych nybblami czyli np. dla wartosci #$5b szukamy #$b5 i jak znajdziemy #$b5 w pamieci kolorow to bierzemy wartosci bitmapy dla tego pola i podmieniamy kombinacje bitow ![]() |
Cytat: |
mowie 8 faz bo nie wydaje mi sie aby 16 faz (przez wszystkie kolory) wygladalo ok ablo bylo wogule potrzebne. zgadzam sie z zielokiem ze 8 faz (po odcieniach) wystarczy aby to ladnie wygladalo. |
Cytat: |
i jeszcze raz na koniec - nie jestem przekonany zeby to musialo chodzic co ramke - 8 odcieni np co druga ramke powinno wygladac rownie plynnie i ladnie. Tak patrzac na ten watek mam coraz wiecej szacunku dla SES\'a ktory skodowal fade po okregu we FLI. (COP 75%/100%) |
fenek napisal: |
Przeszukujemy ekran pamieci kolorow dla pary bajtow zamienionych nybblami czyli np. dla wartosci #$5b szukamy #$b5 i jak znajdziemy #$b5 w pamieci kolorow to bierzemy wartosci bitmapy dla tego pola i podmieniamy kombinacje bitow ![]() |