OldComp.cz
https://oldcomp.cz/

Konverze her pro SAPI
https://oldcomp.cz/viewtopic.php?f=48&t=10328
Stránka 11

Autor:  Libor L.A. [ 08.09.2021, 15:35 ]
Předmět příspěvku:  Konverze her pro SAPI

Hned na úvod začnu jednou nemilou věcí. Přestože programy, původně určené pro PMD-85, poběží na deskách JPR-1x systému SAPI nebržděné, tedy o cca 15% rychleji, tak jejich skutečnou výslednou rychlost sráží zápisy a čtení do/z videoram.

U synchronního propojení PMD-85 a jeho videoprocesoru dochází občas k vložení nějakého toho WAIT stavu, který se projeví zmíněným poklesem výkonu na cca 85%. U SAPI to nemám změřeno, ale vizuální pokles rychlosti oproti PMD-85 je odhadem dalších 5%. Samozřejmě záleží na skladbě programu, jednodušší hry s menší četností zápisů do videoram mohou běžet naopak mírně rychleji. Na osciloskopu je vidět, že díky asynchronnímu přístupu CPU do videoram v systémech SAPI (a týká se to všech desek, tj. od AND-1 až po DGD-1 i BGP-1) se běžně vkládají 2-4 WAIT stavy. A to je důvod zmíněného zpoždění. A taky je to argument pro to, udělat desku BGP-1 bez možnosti zpětného čtení, tedy jen se zápisem do videoram. Pak by v systému musela být taková deska RAM, aby pokrývala oblast i "pod" vnitřní videoram desky BGP-1. Čtení z RAM mimo desku BGP-1 by tak o něco urychlilo hry. Ale bavíme se reálně o přínosu max. do 5%, spíše bych odhadoval méně. Eliminace zpětného čtení z BGP-1 by ovšem diskvalifikovalo ze sestav desku RAM-32 a možná i RAM-1 u složitějších her (tedy skoro u všech zajímavých).

Autor:  EC1045.01 [ 08.09.2021, 16:40 ]
Předmět příspěvku:  Re: Konverze her pro SAPI

Tak to je teda dost špatná správa aneb jsem čekal, že to bude spíše naopak.

Synchronní zápis by se dal realizovat aneb FI2 tj. 2MHz je synchronní s CPU ale to by se musel vynásobit, dále jsou na sběrnici i signály STSTB a /M1 a to jak u 8080 tak Z80. Rekonstrukce časování ala PMD-85 by bylo realizovatelné, ale bude to sát asi dost obvodů … na MPH-1 je ještě místo a tam by mohl být ten rekonstrukční obvod propoj mezi BGP-1 a MPH-1 by byl pak nutností.

RAM-1 by nebila diskvalifikovaná, aneb by vždy bylo 32KB+16KB tj. u ZPS-2 by byla RAM VRAM na konci RAM a u ZPS-3 a ZPS-4 na začátku RAM aneb schodě jak to bylo navrženo u DGD-1.

AND-1(A) nebrzdí CPU ale daní za to jsou poruchy v obrazu, aneb CPU má přednost, AND-1Z, DGD-1 a nove i BGP-1 brzdí CPU.

Autor:  Libor L.A. [ 08.09.2021, 17:18 ]
Předmět příspěvku:  Re: Konverze her pro SAPI

Máš pravdu, AND-1 nebrzdí procesor. Tam se procesor neptá... Platí to ale samozřejmě pro AND-1Z, DGD-1 a BGP-1. Ostatní desky neznám, nezkoumal jsem.

Do modelu se synchronním během CPU a videoprocesoru bych nešel. To časování signálu READY je dost časově kritické, asi i proto u PMD-85 obešli obvod 8224 a READY řídí přímo. A to mají vše k dispozici na jedné desce. Ale možná je to jen z důvodu jednoduchosti, nevím. U multideskového systému s velkým rozptylem zpoždění různých signálů tažených přes sběrnici by se však do úzkého časového okna pro vystavení signály READY dost těžko trefovalo. Ostatně z toho stejného důvodu je u 8080-ky možno generovat signál READY (tedy vkládání WAIT stavů) pouze na základě adresy paměti nebo portu. Řídicí signály /MR, /MW, /IOR a /IOW přichází příliš pozdě, ty do tohoto procesu nezasahují. A proto ta poznámka ing. Smutného v popisu AND-1Z: "Není to úplné řešení, protože při /IOR (ale i při /IOW) již procesor čekací cykl zařadí, ale alespoň je jen jeden." Z toho mmj. nepřímo vyplývá, že i jemu se při /MR a /MW (tedy zápis "do" a čtení "z" videoram AND-1Z) vkládalo těch čekacích stavů více, minimálně však dva na jeden zápis či čtení z interní videoram na grafické kartě.

Ale zpět k volbě, zda integrovat na BGP-1 zpětné čtení. Obvodově to je zvládnuté, v tom problém není, a místo na desce rev. 3.1 ASI taky zbude. Stávající deska BGP-1 rev. 2.1 zpětné čtení má a je odzkoušeno. Deaktivace zpětného čtení se dá v tom případě jednoduše udělat tak, že se vyhodí z patice záchytný registr 74xx574, který pouští data z videoram na sběrnici. Bohužel v tom případě nepřestane BGP-1 vkládat čekací stavy při čtení, protože by se signál /MR musel "odněkud" odpojit a "někam" přepojit a s každou takovou doplňkovou (avšak zbytečnou) funkcí roste náročnost na obvodové řešení a tím i hustotu spojů na desce.

Pořád zastávám názor, že co na desce být nemusí (ve smyslu, že tyto funkce přebere jiná deska), tak to bych na desku nedával. Typicky stránkovaná RAM suplující RAMDISK, více přepínatelných grafických stránek, snad i to zpětné čtení lze nahradit "paralelní" RAMkou na desce RAM-1Z nebo jejích následnících. Spíše bych do zbytku volného místa na desce BGP-1 doplnil možnost čtení stavu "polohy" paprsku TV rozkladu, protože tuto funkci sice programově lze nahradit, ovšem ztráta strojového času je při buferingu videa obrovská. Leckdy více jak 50% výkonu CPU.

Autor:  EC1045.01 [ 08.09.2021, 19:31 ]
Předmět příspěvku:  Re: Konverze her pro SAPI

Tak jak z toho teď ven … Překopat BGP-1 na SRAM 62010 (128KB) a jen čistě pro zápis. Na MPH-1 mít stínovou SRAM 62010 (128KB) pro čtení i zápis. Tím pádem by bylo 8 video stránek, v stránkovacím registru by 6 bitu padlo na řízení VRAM tj. 3bity, která stránka se bude zobrazovat a 3bity do které stránky bude mít CPU přistup. Zbylé dva bity budou generovat mapování pamětí tj. MAP1 a MAP2.

Otázky jak vyřešit zjišťování polohy paprsku … na MPH-1 je volný pro čtení jeden port …

To by bylo asi vhodnější řešit emailem …

Autor:  Libor L.A. [ 08.09.2021, 20:01 ]
Předmět příspěvku:  Re: Konverze her pro SAPI

Já bych to klidně řešil tady, ať k tomu více lidí přispěje svými návrhy.

Čtení polohy paprsku nelze řešit pomocí 8253 podobně jako na PMD-85. Minule mě tyto úvahy zavedly špatným směrem. My na SAPI totiž nemáme hodiny pro 8253 synchronní s rozkladem obrazu. Musely by se tahat z BGP-1 na MPH-1. Hodiny!! To ne, fuj! Momentálně nejjednodušší řešení bez potřeby adresace a čtení periferie je použití přerušení. Deska BGP-1 by uměla pomocí DIP přepínače aktivovat jedno nebo druhé systémové přerušení na sběrnici. A zbytek už je na programátorovi.

Pro zajímavost: deska BGP-1 by generovala přerušení v délce cca jednoho mikrořádku, tedy někde mezi 48 až 74usec. To je dost na to, aby se požadavek od BGP-1 neztratil během obsluhy předchozího přerušení od jiného zdroje (ten druhý zdroj přerušení by ale musel být "slušný" a udělat jen to nejnutnější za zmíněných 48-74usec). Zároveň je ta doba trvání požadavku na INT od BGP-1 dostatečně krátká, takže obsluha přerušení od BGP-1 by musela být minimálně těch 48-74usec dlouhá, aby se po závěrečné instrukci EI znovu neaktivovala obsluha téhož přerušení. Zní to složitě, ale je to extrémně jednoduché hardwarově a přijatelně složité softwarově. A kdo by to obsloužit neuměl, tak napíše hru bez synchronizace s kreslením obrazu, tak jak jsou napsány všechny hry pro PMD-85. Kdo to programátorsky zvládne, dostane navíc bonus v podobě konstantního "budíku" 20msec, který je celkem přijatelným základním časovým etalonem pro většinu herních smyček.

Autor:  EC1045.01 [ 08.09.2021, 20:31 ]
Předmět příspěvku:  Re: Konverze her pro SAPI

S tím přerušením bude problém pokut bude BGP-1 adresovaná od 0H. dále na JPR-1 je k dispozici RST7 a RST6 od 3214, u JPR-1A je k dispozici jen RST7 nebo 8259 z JPN-1, u JPR-1Z je k dispozici RST7 a NMI a u JPR-ZI je k dispozici 8259 z JPN-1 a NMI. A pokut možno bych se přerušení vyhnul.

Ta 8253 s trochou sekvenční logiky půjde zasynchronnyzovat. Já vím že propoj mezi BGP-1 a MPH-1 se ti nelíbí, ale asi to bez něj nepůjde a pak to nebude první dvoj deska s propojme … stejnak tam ty desky budou obě. Na sběrnici je teoreticky k dispozici jen 4 rezervní signály.

Autor:  Libor L.A. [ 02.10.2021, 22:35 ]
Předmět příspěvku:  Re: Konverze her pro SAPI

Tak MANIC MINER (Libovický/Jenné) už nám na SAPI kompletně běží. Potřebuje procesorovou desku JPR-1, 32kB RAM, desku BGP-1 a klávesnici ANK-1. Ještě musíme s Petrem doladit, jak se bude nastavovat výběr adresy klávesnice na začátku hry a takové ty věci kolem. Takže trochu práce vlastně ještě zbývá..

I když jsem chtěl začít něčím menším, tak tohle lákadlo bylo silné. Po převodu má hra délku 532Eh. Hra je identickou kopií verze z PMD-85, "pouze" se musela provést kompletní disassemblace a okomentování, aby šlo přeadresovat jednotlivé části hry. Vynechal jsem i vestavěné CHEATy, takže pokud je bude někdo potřebovat, doplním je formou doprovodných "POKE" pro MONITOR SAPI.

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/