Nem szakértek hozzá, de... Ebből nem lenne gubanc (itt-ott fagyás) a "lefelé kompatibilitás" témában? Avagy hogy oldanád meg, hogy a memória olyan részeihez férjen hozzá, amik esetleg már egy adott programon belül foglaltak?
Ez EP32 emulátor forráskódját nézegettem.Nem biztos, hogy azt érdemes nézegetni, mivel az nagyon messze van a tökéletestől. Időzítéseket sem kezeli rendesen, és a Nick összes videómódját sem ismeri rendesen.
Nincs hardvare sprite kezelés a NICK-ben.Ki mondta, hogy van? Azért van rajta a külső színbemenet, hogy odadugod a gép oldalába a sprite kártyát, abban ott izegnek-mozognak a sprite-ok, a Nick meg szépen rákeveri a képre. Ez volt az eredeti terv, csak előbb csődbe mentek, mintsem, hogy ez elkészülhetett volna.
Nem biztos, hogy azt érdemes nézegetni, mivel az nagyon messze van a tökéletestől. Időzítéseket sem kezeli rendesen, és a Nick összes videómódját sem ismeri rendesen.
Nem is értem miért rángatod folyton elő ezt a régi, kezdetleges emulátort. :oops:
Ki mondta, hogy van? Azért van rajta a külső színbemenet, hogy odadugod a gép oldalába a sprite kártyát, abban ott izegnek-mozognak a sprite-ok, a Nick meg szépen rákeveri a képre. Ez volt az eredeti terv, csak előbb csődbe mentek, mintsem, hogy ez elkészülhetett volna.
...de én nagyon bonyolultnak tartom, hogy egy külső eszköz figyelje, számolja a Nick által generált elektronsugarat és ha éppen ott van ahol ő azt gondolja, akkor elkezdi a színeket felülírni a 4 bites színbemeneten keresztül.Nyilván nem értek a mögöttes dolgokhoz, amik a tényleges hardverben intéznék az ügyeket, de valamiért nekem nem tűnik ennyire problémásnak. De legfeljebb majd kijavítod mit látok rosszul. A bővítő csatlakozón ott van a NICK órajele és a két szinkronjel is kivezetve. Ezekből azért elég pontosan lehet tudni éppen merre jár a képalkotás.
Én ezt az utat nem tartom járhatónak.
Nyilván nem értek a mögöttes dolgokhoz, amik a tényleges hardverben intéznék az ügyeket, de valamiért nekem nem tűnik ennyire problémásnak. De legfeljebb majd kijavítod mit látok rosszul. A bővítő csatlakozón ott van a NICK órajele és a két szinkronjel is kivezetve. Ezekből azért elég pontosan lehet tudni éppen merre jár a képalkotás.
Egy képpontsor mindig 57*16=912 NICK órajel ciklus. Lehet tudni, hogy a /HSYNC utáni első 8*16=128 ciklusban nem érdemes rajzolni, mert ott olvassa be az LPB-t. Az is tudható, hogy a /HSYNC előtti 3*16=48 ciklusban szintén nem érdemes rajzolni, mert ott a VRAM frissítés folyik. (Úgy kb., mert most nem ugrik be hogyan van pontosan ezeknek az egymáshoz képesti időzítése. :()
Négy regiszterben megadható, hogy a /VSYNC-et követő hányadik sorban (függőleges 0 pozíció) kezdjen sprite-okat szintetizálni és hányadikban fejezze be, illetve a bal és jobb képhatártól mennyivel beljebb legyen a sorban a szintetizálás be- (vízszintes 0 pozíció) és kikapcsolása. Szóval órajelek számolgatásával elég pontosan meghatározható a képalkotás pillanatnyi pozíciója, amit "csak" össze kell vetni a sprite szintézis paramétereivel.
Ha pedig a programozó összevissza alkot az LPT módosítgatásával, akkor legyen szíves erről tájékoztatni a sprite generátort is, mert a megjelenítés menedzselése az ő feladata.