Autor ::Lukáš Poslaná :: 27.11.2012 20:15:31 Predmet ::Re: JETPAC
Já jsem dělal port ze ZX spectra hry Space raiders na IQ151, mám takový pocit že tyto první hry (objevili se i jako cartridge do XZ IF2), byly port z nějakého jiného osmibitu nebo herní automatu s procesorem 8080, nikde žádné relativní skoky, IX, IY... jen předělané pro zobrazování na Spectru. Jestli se ti povede funkční 8080 převod měl bych zájem o zdroják... zkusil bych IQ151 port, ale obávám se že tady s rychlostí už asi narazím.
Správa
Autor ::Libor L.A. Poslaná :: 28.11.2012 05:10:34 Predmet ::Re: JETPAC
Cožpak IQ151 nemělo standardní osazení i8080A/8224/8228? Pokud ano, je dost pravděpodobné, že to bylo taktováno rovněž na 2.048MHz. Ale rád se nechám poučit, je-li to jinak.
Správa
Autor ::Lukáš Poslaná :: 28.11.2012 06:23:47 Predmet ::Re: JETPAC
Procesor a obvody kolem jsou standard, ale problém je s grafikou IQ151 má pouze textovou Videoram. Pro grafiku má speciální modul s 16kB RAM ale přistupuje se do ní ne pomocí stránkování, ale tak že je připojená adresovkou na 8255 (2 porty adresa, třetí řídící) + datovka na zvláštní port, takže přístup do videoram je přes 2xout, 1x in, pak operace (and or xor) a pak out - pro změnu bitů v 1 bajtu. Např. nejrychlejší mazání grafické obrazovky pak trvá okolo 3 vteřin.
Správa
Autor ::Libor L.A. Poslaná :: 28.11.2012 10:47:51 Predmet ::Re: JETPAC
Bože.. Kdo tohle vymyslel..
Ale měl bych nápad, zkus udržovat virtuální obrázek v normální RAMce a kopírovat do té videoram jen změny, popřípadě vše ale až po provedení těch XOR propočtů.
Správa
Autor ::Lukáš Poslaná :: 29.11.2012 19:10:37 Predmet ::Re: JETPAC
Zběžně jsem prolítl kód a zase tak jednoduché jako Space Raiders to určitě nebude. S tímhle si docela pohráli a je tam hodně velká spousta Z80 instrukcí... Koukám že se už v roce 1983 pokoušeli o jakousi malou ochranu :)
Jinak pro informaci jak jsem dělal ty Space raiders...
1. disassembling hlavních částí, určení kódu a dat
2. doplnění návěstí, odkazů na data a tabulky a grafiku, disassembling grafiky jako DEFB
3. zkouška překladu na stejnou adresu a potom zkouška relokace na jinou adresu (stále ještě na Spectru)
4. Nahrazení instrukcí pro procesor 8080 a test (na spectru)
-> takto funkční zdroják teprve začátek portování na IQ151
5. předělání grafických rutin a výpisů textů + klávesnice + zvuky
6. tisíce drobných dodělávek a úprava časování :)
Takže jestli už si z něčím začal a budeš mít zájem o pomoc/spolupráci tak řekni.
Správa
Autor ::Roman Bórik Poslaná :: 29.11.2012 20:50:03 Predmet ::Re: JETPAC
Keď som "portoval" hru Plotting zo Speccy, tak som všetko písal nanovo. Okrem skutočnosti, že sa tam používali Z80 inštrukcie, tak pôvodný kód bola neskutočná "šialenosť", i keď z určitého pohľadu tam boli zaujímavé a šikovné riešenia. V 90% kódu sa všetko riešilo cez zásobník - vyberanie z tabuliek, vykresľovanie grafiky. Napr. sa tam nepoužívala jedna rutina na zobrazenie spritov, ale všetko bolo rozpísané desiatky-krát pre každý prípad zobrazenia nejakého spritu a dáta spritu sa ťahali cez zásobníkové operácie. Takže niekoľko kB kódu bolo iba vykresľovanie spritov. To som si na PMD 85 z pamäťových dôvodov pochopiteľne nemohol dovoliť. Z pôvodného kódu som okukal iba niektoré algoritmy (rutiny) hernej logiky, ktoré som si ale aj tak upravil a prispôsobil pre seba.
Správa
Autor ::Lukáš Poslaná :: 29.11.2012 22:00:34 Predmet ::Re: JETPAC
Jak píšeš o tom zásobníku, připomíná mi to přeložený kód třeba Pascalu, to dělá tyhle šílenosti...
Správa
Autor ::Libor L.A. Poslaná :: 30.11.2012 05:38:54 Predmet ::Re: JETPAC
Já jsem pro disasemblaci použil snap paměti v herním režimu, takže jestli tam nějaká ochrana byla, to nevím. Ale přijde mi, že se tam dost plýtvá pamětí (na kód), řada věcí by šla určitě udělat úsporněji. Uvidíme, co s tím udělá převod na platformu i8080. A co se týče zásobníku, přičel jsem na chuť těmhle konstrukcím se zásobníkem. Většinou šetří místo pro kód a urychlí celou věc. Momentálně mám u JETPACa disasemblované části s "obyčejnými" printy, obsluhou klávesnice, generování pseudozvuků, různé podpůrné procedury pro převody adres a identifikoval jsem místo a smysl některých proměnných. Teď rozkresluju obrázkové "slices", ze kterých se skládají obrázkové objekty. Začínám mít základní představu, jak to funguje. Doufám, že identifikuju nějakou kulturní základní herní smyčku. U Flappyho (některé lidi bych považoval za bohy - bez ironie) je nádherná ukázka kompaktní hrací smyčky na pár bajtech, ze které se volají dílčí provedury.