A kiiras meg mindig eleg rosszul van megfogalmazva, de benne van, hogy "unexpanded c16"-en kell mennie a dolognak, es utolag nem tolthet semmit a lemezrol. Tehat vegul is az a lenyeg, hogy onefiler es C16.
Es tessek kodolni! Itt a nyar, a hetvegek, a delutanok, az estek, a hajnalok! :) Es buliiii! :)
Ha csak nehany cuccod van, tolem egyutt is kiadhatunk valamit! Vagy ha en nem fernek el mindennel, szivesen atadom ami kilog. :)
Graham: Igem, mar vagy egy eve. En tavaj nyaron hallottam Ninja/DRM-tol a Flag partyn. Kivancs vagyok, hogy csinal-e valami igazan Plus4-es dolgot, vagy csak portolgat.
Persze egy majdnem biztos: nehanyan meg fognak halni ha meglatnak egy Graham demot a Plus/4-en. :)
Akkor a C16 democompora összedobhatnátok valamit. Lavina előkerült hosszú hallgatás után, és már deadline is van (szeptember). Nézd meg a Plus/4 World híreit, most még pont az az első. Nagyon kéne, hogy minél többen részt vegyünk, és legyen végre valami kis élet megint a Plusin.
Ez amúgy mindenkinek szól, SJP ti is összedobhatnátok valamit, talán a régi szép idők kedvéért :-)
Igaz, de az enyim 8-9-10 évvel régebbi :)
Vannak új effectjeim a tarsolyban, de mikor lenne időm rájuk :(( Pedig Mauglival múltkor már nagyon beleéltük magunkat egy új alkotásba...
Hát ilyesmit már 94-ben a Legend of MC és a Fatal Mirror is tartalmazott :) Csak nem text volt benne, hanem különféle sík formák morfoltak át egymásba. Asszem a Legend végén még csak monokrómon volt az effekt, a Fatalban színes volt.
Hát ugye meg kell legyen az eredeti 'grafika' egy karakterkészletben (kép, logo, mindegy). A forgatáskor a grafika szélessége kb. 4 karakternyit "megy össze" vagy "húzódik szét". Ha ezeket a hosszabb/rövidebb változatokat előre megcsináljuk, akkor 4 kar * 4 pixel (nem 8, mivel multicolor) 16 verzió kell meglegyen, ez kb. 16K, szóval csak a negyed memória. Ha ez megvan, akkor maga az effekt annyi, hogy egy állat táblából ki kell szedni hogy melyiket használjuk, és váltogatjuk a karakterkészletet soronként (FF12/FF13 plusin). Valami ilyesmi, kéne menjen.
Es a scrollert is igy csinaltak? :-) Ami scrollozodott? De eszerint nem a Dawnfall volt, hanem valamelyik masik file-os Oxyron demo amire gondoltam, a The Party 1997-en adtak ki. De nem jut eszembe a cime. ;-(
A 4-edik, 7-edik, és a 9-edik kép ugyanaz az effect variálva (ha jól értem a dolgot). A dolog úgy néz ki, hogy nem sprite-okat, hanem karakterkészletet használ szóval nagy valószínűséggel menne plusin is.
Hogy hogy csinálják?
Hát ugye meg kell legyen az eredeti 'grafika' egy karakterkészletben (kép, logo, mindegy). A forgatáskor a grafika szélessége kb. 4 karakternyit "megy össze" vagy "húzódik szét". Ha ezeket a hosszabb/rövidebb változatokat előre megcsináljuk, akkor 4 kar * 4 pixel (nem 8, mivel multicolor) 16 verzió kell meglegyen, ez kb. 16K, szóval csak a negyed memória. Ha ez megvan, akkor maga az effekt annyi, hogy egy állat táblából ki kell szedni hogy melyiket használjuk, és váltogatjuk a karakterkészletet soronként (FF12/FF13 plusin). Valami ilyesmi, kéne menjen.
Na, most hogy ezen elgondolkoztam jöttem rá, hogy nem tudok semmit. Szégyen!
Breakpointon talalkoztam Grahammel, aki legnagyobb meglepetesemre egy plus/4-esen kodolt. :) Es szidta a lassu toltest, meg a halalbugos Csory fele turboassemblert. :) Viszont megcsinalta a (tobbek kozott) Dawnfallbol ismeros oxybars effektet, raadasul a fadelesnel kihasznalva a plus/4 121 szinet. Eleg jol nezett ki. Na koderek, itt a feladat. :) Azt mondta egyebkent lehet hogy valamikor csinalnak egy wild demot plus/4-re.
Jut eszembe, felpakoltam Pestre a cuccot és már nálam van a SID-kártya is :-), azaz ha még nem csináltál DivX-et a demóból akkor állok rendelkezésedre.
C64: egy frame-en belül 312 sor van, soronként pedig (emlékeim szerint) 63 órajelciklus. A 312 sorból van 25 bad line, amikor a 63 órajelciklusból csak 20 marad (lejön a negyven karakternek megfelelő 40 ciklus + max. 3 a DMA elkezdése előtt (ez persze a legrosszabb eset, ill. rosszabb csak akkor lehet ha valahol vannak sprite-ok de ez másik ügy). 312*63 - 25 * 43 az annyi mint 18581 órajelciklus / frame ( PAL C64).
Plus/4: Itt a helyzet bonyolultabb, és lehet hogy nem leszek teljesen pontos :-), de azért nagyot asszem nem fogok tévedni. Van 312 sorunk, amiből 200 + 8 (a nyolc plusz a látható mezőn kívüli, scrollozásra használható de már egyszeres órajelű rész) sor alatt van képszerkesztés. Tehát:
(312-208) sorunk megy tisztán (kivéve memfrissítést) kétszeres órajellel, az soronként 109 ciklus, az annyi mint 11336 ciklus.
A 208 fennmaradó sorból 25x2, azaz 50 bad line van. Van tehát 158 sorunk, amelyben (úgy emlékszem) 65 ciklusunk van. Az 10270 ciklus.
És van még 50 sor, amikor a 65-ből a DMA miatt megmarad 22. 50x22 = 1100.
Összesen 22706 ciklus per frame.
Elveri a C64-et, de nem túl sokkal. Olyan 20%-kal tud többet, a kétszeres órajellel együtt.
> Csak kivancsisagbol! A digi lejatszoidban szoktad korrigalni azt az orajel elterest ami a timer megszakitas letrejotte es a vezerles megkapasa kozott telik el? Csak azert, mert mostanaban kitalaltam erre valamit (C64-en mar lattam ehhez nagyon hasonlot)...
Digilejátszónál nem, már csak azért sem mert a fenti megoldás csak feltételekkel működne (akkor, ha a digilejátszás frekvenciája (a megszakok "helyei") össze volnának szinkronozva a sorfrekvenciával, _vagy_ ki volna kapcsolva lejátszás közben a képernyő). Pontos rasztermegszakhoz használtam hasonlót, igaz nem T1 segítségével hanem a soron belüli raszterszámlálóval ($ff1e).
Tudom, C64-en a 80x50-es FLI időzítéséhez szokás elsütni ezt a trükköt (a megszak nem rasztermegszakkal megy hanem egyik CIA időzítővel).
Egyszeres vs. kétszeres órajel vs. C64: jobban belegondolva, hiába a "nagyobb" órajel, végeredményben kb. olyan gyors a gép mint a C64 a maga "egyszeres" órajelével. Miért? A C64 órajele alapban magasabb, 0.985Mhz a Plus/4 0.886Mhz-éhez képest (PAL gépnél 17.73Mhz / 18 a Plus/4 17.73 / 20 -ához képest). További lassulást jelent az, hogy Plus/4-nél a szín-ramot is olvasnia kell a TED-nek, karaktersoronként (C64-ben ez egy külön statikus ram chipben van amit a VIC-II a karaktermemóriával "párhuzamosan", külön adatbuszon, azonos időben olvas) C64-en minden 8 rasztersorból 1 megy el a processzort blokkoló DMA műveletre, Plus/4-en pedig kettő. Azaz végeredményben a kétszeres órajellel sem vagyunk sokkal előbbre :-(. Utána lehetne számolni hogy mennyivel, ha egyáltalán.
Konkret adatokkal nem tudok szolgalni (regen volt, tan igaz se volt ;) de amikor a fraktalszamolgatos korszakomat eltem, es megirtam ugyanazt a mandelbrot, julia, ifs, stb. szamolot plus/4-re es c64-re, akkor erzesre a plus/4-es verzio sokkal gyorsabb volt. Ketszeres szorzot nem mernek mondani, de egy masfelszeres biztos megvolt. Persze ez nem tul meglepo, hiszen a fraktalszamolgatas altalaban sok CPU-t es keves grafikat igenyel (sokaig szamolgatsz egyetlen nyavajas pixelert :)
Csak kivancsisagbol! A digi lejatszoidban szoktad korrigalni azt az orajel elterest ami a timer megszakitas letrejotte es a vezerles megkapasa kozott telik el? Csak azert, mert mostanaban kitalaltam erre valamit (C64-en mar lattam ehhez nagyon hasonlot):
A nop #$xx a $80-as illegalis nop-al van megoldva (2 ciklus), a $04-pedig a nop $xx (3 ciklus). A wait-nel kezdodo kodban az a poen, hogy 10 cikulis alatt fut le, de ha wait+k-nal inditod el, akkor 10-k ciklus alatt er a cont cimkeeig. A wait resz lehet kisebb is, ha nem hasznlasz olyan 7-8 ciklust evo illegalis opcodokat mint pl a DCP.