A z88dk nem egy egyszerű C fordító, hanem egy olyan, Z80 alapú számítógépekre optimalizált C fordító, amely képes kihasználni az egyes platformok különböző előnyeit. Számos Z80 alapú számítógép típust támogat már most is, bár a támogatottság mértéke számítógépenként más és más. Mivel ez szoros összefüggésben van az adott számítógép típus elterjedtségével, így nem meglepő, ha az egyik legjobban támogatott platform a ZX Spectrum.
A fejlesztés során többféle koncepciót lehet követni:
#1 Ragaszkodni a teljes C kompatibilitásra annak érdekében, hogy a programunk bármilyen platformra lefordítható és futtatható legyen.
Ennek sajnos nincs túl sok létjogosultsága, mert bár a program valóban futtatható lesz több platformon is, kielégítő felhasználói élményt sehol sem fog nyújtani. Esetleg nagyon egyszerű játékok (logikai vagy szöveges kaland), vagy felhasználói programok esetében van értelme. Utóbbi esetben is csak akkor, ha az nem az éppen adott platformra vonatkozó speciális feladatot akar ellátni (pl. lemezkezelő program), hanem valami sokkal általánosabb szerepet szánnak neki. Mindazonáltal hatalmas élmény, amikor lefordul ugyanaz a program több különböző platformra, és mindegyiken futtatható anélkül, hogy változtatni kellene a forráskódon.
#2 A teljes programot C-ben megírni, tudatosan egy platformra optimalizálva
Ebben az esetben lehetőségünk nyílik olyan függvénykönyvtárak és fordítási opciók alkalmazására, amelyeket egy adott platformra optimalizáltak vagy fejlesztettek ki. Példának említeném az SP1 nevű sprite kezelő függvénykönyvtárat, amelyet kimondottan ZX Spectrum-ra fejlesztettek ki, és ennek megfelelően elég gyors ahhoz, hogy egy közepes szintű animációs igényékkel rendelkező játékprogramot gond nélkül el lehessen készíteni vele:
http://www.z88dk.org/wiki/doku.php?id=l ... prites:sp1.
Ennek a fejlesztési modellnek a nagy előnye, hogy nem a hardverre, hanem csupán a feladatra kell összpontosítani, így sokkal gyorsabb és élvezetesebb lehet a fejlesztés (hacsak valaki nem kimondottan az assembly kódolással kötelezően együtt járó mérhetetlen szívást élvezi

). Véleményem szerint ugyanannak a programnak az elkészítése 50-75%-al kevesebb időt igényel így, mint gépi kódban, feltételezve, hogy a fejlesztő egyaránt jártas a C és Assembly nyelvekben. A 25% különbség az eltérésben attól függ, hogy mennyi grafikai és zenei elemet kell elkészíteni a programhoz, mert az mindkét esetben ugyanannyi időt vesz igénybe.
#3 A program alapvetően C nyelven íródik, de a processzorigényes részek gépi kódban készülnek
Ez az a modell, amit a 90-es évek első felében a PC-s demo készítők alkalmaztak. A szakipari munkát megírták egy magas szintű nyelven (többnyire Pascalban); ilyenek voltak a betöltők, menük és opció kiválasztók, különböző előre kalkulált értékek kiszámítása és betöltése a memóriába: vagyis a keretrendszer működéséhez szükséges programrészek elkészítése. Majd amikor minden feltétel adott volt, bevágták a programot az Assembly ágba, a nézőknek meg leesett az álla.
Ezt a modellt remekül lehet alkalmazni a z88dk-val is, csak Pascal helyett a C nyelvet kell ismerni. Onnantól kezdve, hogy a program belépett az Assembly blokkba, ugyanazok a lehetőségek adottá válnak, mintha a teljes program gépi kódban készült volna. Véleményem szerint, még ezzel a módszerrel is 20-40%-al kevesebb időráfordítás szükséges ugyanazon program megíráshoz C + Assembly-ben, mint tiszta gépi kódban. Ráadásul a gép teljes kapacitását ki tudjuk használni.
Edy