wz

novinky | články | hardware | emulátor | ostatní | download | odkazy | kniha návštěv

 

ROMAN DOLEJŠÍ - ROZHOVOR

Rozhovor s jedním z předních remakerů her ze ZX Spectra, Romanem Dolejším si můžete přečíst zde. Pro MZunity připravil Zdeněk Adler

Ahoj Romane, Velice mne těší tvůj zájem pomoci dosavadnímu dění okolo Sharpíka a moc si toho cením. Pokusím se Ti tedy položit několikero otázek, tykajících se Tvého působení na SHARPu, ale i tvého současného zaměřeni:

Jaká byla Tvoje počítačová historie a které z počítačů ti přirostly nejvíce k srdci?

K počítačům jsem se poprvé dostal, když jsem byl v 5. třídě. Byl jsem tehdy velký fanda do elektrotechniky a i když jsem moc nevynikal při stavbě různých elektrických obvodu, docela mne to bavilo. Tehdy jsme se s našim elektrotechnickým kroužkem čas od času chodili dívat na velké sálové počítače do tehdejšího PVT v Českých Budějovicích. Vzpomínám si, ze to byly takové obrovské bedny s točícími se páskovými jednotkami a mne tam ti lide v pláštích připadali jako ve snu. Když mi pak jednou udělali vlastni kondiciogram a vyjeli ho na traktorový papír, můj osud byl zpečetěn :-)) Někdy v 6. třídě jsem se jako zázrakem dostal do kroužku výpočetní techniky, ve kterém jsme měli několik PMD-85 a par Slušovických IQ-151. O PMD byl obrovský zájem a jen málokdy jsem měl možnost na něm něco dělat. Když už ta možnost byla, většinu času jsme na něm hráli hry, ale ne vždy. Čas od času tam hry ale neměli, takže na nás zbyl Karel. I stalo se, že jsem se Karla naučil ovládat a "programovat", čímž jsem úspěšné započal mou programátorskou kariéru :-) Později jsem již na PMD moc nechodil, spíše jsem seděl u věčné volných IQ-151 a snažil jsem se něco programovat v Basicu. Později otevřela naše škola zájmový kroužek s IQ-151, s jehož vedoucím jsme zkoušeli programovat různé malé věci v Basicu a hlavně ovládat graficky modul Basic-G, který umožňoval, tuším, na svou dobu nevídané jemnou grafiku 512x256 černobílých bodu. Když jsem šel jednou vrátit vedoucímu vypůjčené materiály domů, shodou náhod jsem ho nezastihl a protože se mi nechtělo jít tam znovu, počkal jsem na něj u jeho syna Ondry Staška, který byl ve stejném věku jako já a navíc měl doma malý zázrak Sharp MZ-821 se zabudovaným kazetakem. Ukázal mi nějaké staré hry (pamatuji se na Bruce Lee), které jsme hráli dlouho do noci. Slovo dalo slovo a začal jsem k nim chodit čím dál častěji. Navíc se ukázalo, že Ondru baví programovat stejně jako mne, takže jsme začali dělat nějaké věci v Basicu a později také ve strojaku (to až potom, co jsme si přečetli knihu Bity do Bytu, která nám ukázala, jak takové "pravé" programovaní vypadá. Protože doma se jsem s mým počítačovým zaměřením setkal s trochou pochopení, koupili mi rodiče ze skromných úspor na inzerát ZX Spectrum 48k (legendárního gumáka). Na něm jsem objevil, jak vypadají opravdové hry a rozhodl se, že na Sharpu přeci musí být hry také. Když jsme pak jednou na nějaké zapomenuté Sharpacke kazetě objevili prográmek Spectrum Master, mysleli jsme, že je to loader, do kterého se nahrají hry ze ZX Spectra a ty se pak prostě spustí. Naše zklamaní z toho, že se jedná "jen" o jakýsi debugger, ale netrvalo dlouho. Brzy jsem začal (s podporou Ondry Staška) zjišťovat, proč ony hry nejde jednoduše pustit a jak to vlastně je s hardwarem ZX Spectra a Sharpa MZ-800. Začal jsem předělávat hru, která se mi dostala do ruky (už si asi nevzpomenu na název, ale tuším, že nikdy nakonec nebyla vypuštěna) a na ni jsem zkoumal, jak na to. Postupně jsem získal znalosti toho, jak hry na Spectru a grafické rutiny obecně vypadají. Zároveň s tím rostla i moje znalost hardwaru Sharpa. Vybudoval jsem si základní rutiny pro předělávání her, jako byly emulace klávesnice, barevné a černobíle přepisy obrazu (ty jsem ale ve hrách moc nepoužíval), emulace zvuku, konverzní rutiny adres ze ZX-Vram do MZ-Vram a další pomůcky. Někdy v té době jsem dokončil můj emulátor ZX Spectra na Sharpu, který dělal prostě to, ze cyklicky zobrazoval obraz ZX Spectra, měl napíchnuté klávesnicové a zvukové rutiny a v momentě, kdy do něj někdo nahrál standardním loaderem nějaký blok kódu, prohledalo ho to a pokusilo se to všechny instrukce, které by mohly nějak ovlivnit chod HW Spectra (nastavení přerusení, vstup či výstup na port atd.) přepsat na odkazy na mé emulační rutiny. V mnoha případech to docela fungovalo a prostě stačilo nahrát hru ze ZX do emulátoru a šla hrát (i když pomalu a s přepisem). Myslel jsem si, ze bych si vydělal na vlastní Sharp a tak jsem se rozhodl, ze emulátor budu prodávat.

Dal jsem inzerát do Annonce a čekal. Kromě jiných se mi ozval i Otta Zemek (MZX), kterého jsem v té době ještě neznal a který shodou okolností zrovna přesídlil z Českého Krumlova do Českých Budějovic. Ten mi navrhnul, abych dělal hry a emulátor pro něj. Protože jsem nikdy moc neměl rád kšeftaření, rád jsem s tím souhlasil a sám se věnoval čisté programovaní. Zároveň jsem se seznámil s Davidem Voráčkem (alias Microcode), který později začal předělávat hry také. Časem jsem pod značkou MZX udělal několik her a postupné si vydělal na moje vlastni PC 386-DX40 se 4MB RAM a 1MB Video RAM v době, kdy do různých podniků teprve nastupovaly 286 a 386SX. Moje první PC jsem začal hned (alespoň částečné) používat k předělávání (za pomocí v té době vyvíjeného emulátoru Sharpa kamaráda Jardy Kyselého) a později jsem si bez něj předělávání ani nedovedl představit. Když Otta Zemek se svými Sharpistickými aktivitami skončil, začali jsme s Davidem Voráčkem pod hlavičkou Dimension prodávat předělané hry sami. To se ale zase tak moc nedařilo a cca po roce jsme s tím přestali. Od té doby jsem se začal více zajímat o PC a jeho hardware. Věčným problémem, který jsem na PC měl, bylo obsazení volné paměti v DOSu. U PC bylo volno 640kB pro DOS a programy a horní část až do 1MB byla sice adresovatelná, ale byly tam pouze různé ROM paměti jednotlivých připojených zařízeni (jako VGA, SCSI atd.). Jarda Kyselý tehdy začal dělat ovladač, který na jeho čipové sadě PC povolil části vyšších paměti jako RAM, takže se do nich daly nahrát rezidentní programy a tím se uvolnilo drahocenné místo ve spodní paměti. Protože jsem sám měl jiný chipset PC, převzal jsem Jardův jednoduchý program a postupně (cca 3 roky) ho programoval tak, že z něj nakonec vzniknul univerzální ovladač UMB paměti pro DOS, který je v současné době kupodivu stalé používán - viz hra Ultima, jejiž autoři RdosUMB stalé doporučuji jako jedinou možnost, jak hru bez problému spustit. Vždy mne bavila hudba a protože jsem tak trochu přilnul k té syntetické, začal jsem se zajímat o programovaní FM-zvukové karty Adlib s čipem OPL-2. Sám jsem měl Sound Blaster Pro3, který obsahoval čip OPL-3, a tak jsem mohl směle začít programovat. Postupně z prvotních pokusů vznikl univerzální přehrávač velkého množství formátu hudeb na OPL-2 a OPL-3 (hlavně z her a různých trackerů). RdosPlay je stalé ještě (a asi už zůstane) s cca 20 podporovanými FM formáty jediný svého druhu a stalé má své příznivce (podle ohlasu, které mi čas od času chodí). Později jsem s k mému Sound Blasteru koupil ještě Gravis Ultrasound Interwave (zvukový wavetable čip, který předběhl svou dobu) a moc mne zarmoutilo, že plně nepodporuje emulaci Sound Blasteru a tak si Sound Blaster musím nechat. Rozhodl jsem se, ze zkusím takový emulátor napsat sám. Nejprve mi mnoho usilí dalo zvládnutí programovaní v Protected Mode Ring Level 0 (nejvyšší stupeň běhu procesoru, běží v něm například jádro Windows či kernel Linuxu) a pak jsem již začal programovat ovladače paměti XMS a EMS a samozřejmé emulační rutiny. Nakonec jsem zjistil, že více než co jiného bych chtěl dělat univerzální emulátor jakékoli karty na jakékoli kartě a tak vznikl REMUS - docela kuriózní projekt, který si získal řadu příznivců diky skoro 100% emulaci Gravis Ultrasoundu na obyčejném D/A převodníku za pár korun (či dolarů). Projektu bylo i víc (RAC - odchytávač Adlib hudeb v protected módu, DXT - vzdálené bezdiskové přihlašovaní bezdiskovým terminálem k Linuxu, Fellow - emulátor Amigy 500), ale těmi již nebudu zatěžovat. Všechny jsou ke staženi na mé adrese http://sorry.vše.cz/~roman/dimension/rdos. Později jsem zabředl do bouřlivých vod Linuxu a tam jsem i zůstal. V současné době tvořím internetové aplikace (Linux, HP-UX, PHP, C, Oracle, PostgreSQL, MySQL) a původním projektům se již nevěnuji (i když jsem na ně až tak docela nezapomněl). Ze všech počítačů mi asi nejvíce prirostli k srdci dva: Sharp MZ-800 a PC. Sharp pro svoji vyspělost v době svého vzniku, pro to, co mi přinesl do života a pro jeho všeobecnou "útulnost". PC zase pro svoji univerzálnost (díky které vlastně vydrželo až doteď).

Je o Tobě známo, ze jsi byl jedním z největších dodavatelů softwaru přepsaného ze ZX Spectra na Sharpa pro MZX Software, později jsi se stal i distributorem SW. Umožnil bys nám nahlédnout do své dílny, jak takové přepisy softwaru probíhaly a kolik her jsi takto upravil?

Postup předělávání se u každé hry trochu lišil (to podle programátora, který ji dělal), ale pokusím se popsat ho z pohledu ideálních podmínek a ideálních prostředků pro předělávání (PC, potřebný software). Každou hru bylo nejprve nutné získat v digitální podobě - tj. z tehdejšího Internetu (který v ČSFR teprve začínal) či z pásky nahrát přes nějaký interface do PC. Pak bylo dobré zhodnotit hru z hlediska "programátorské obtížnosti". Jednou z mých menších pomůcek, které jsem si udělal ještě v dobách předělávání, byl prográmek, který nahrál do paměti tehdy jediný emulátor ZX Spectra na PC - zxemu. Po nahrátí ho "opravil", takže získal barvy, 128k zvuk a stránkování a hlavně si zaznamenával seznam adres v paměťovém prostoru Z80, které zapisovaly na obrazovku ZX Spectra. Když jsem zjistil, ze se mi nějaká hra libí a ze nemá moc adres, které zapisují do Vram Spectra, začal jsem předělávat. V první fázi jsem jel v Sharp emulátoru jeden podprogram za druhým a stalé sledoval, zda se nezměnila vram spectra. Když ano, zkusil jsem to znovu až onomu místu a podíval se do podprogramu, co ze tam tvůrci hry dělali. Někdy bylo například jen otázkou čtvrt hodiny objevit a předělat rutinu zapisující texty na obrazovku a okamžité bylo hotové hlavni menu hry (např. Cauldron II nebo Rick Dangerous). Když bylo hotové menu a na obrazovce Sharpa již bylo něco vidět, většinou přišla na radu klávesnice, aby se dala hra (alespoň ono předělané menu) ovládat. Opět jsem hledal, v kterém podprogramku čekají autoři na stisk klávesy a ono čekání jsem nahradil voláním mého emulačního kódu klávesnice, který obstaral kompletní převod na klávesnici Sharpa a zpět. Nezřídka se stávalo, ze přepsáním tohoto kódu začala pracovat klávesnice v cele hře. Jakmile bylo možné se dostat z hlavního menu do hry, nastala opravdová práce. Bylo nutné postupné předělat všechny vykreslovací rutiny tak, aby místo na ZX Spectrum kreslily na Sharpa. Často nestačilo jen podle nějaké tabulky převést adresu ZX Vram na Sharp Vram v místě zapísu na obrazovku (Cauldron II), ale bylo kvůli rychlosti nebo grafickým změnám nutné předělat kompletní vykreslovací rutiny (Dizzy 6 a Dizzy 5, Chase HQ, Hard Drivin a většina dalších). Když hra již běžela, bylo potřeba dodělat ZX-48k zvuk (takové to pípání, ze kterého se některým podařilo udělat slušné znějící hudby - David Whittacker 2 kanály a bubny, Tím Follin dokonce 5 kanálu) - opět odkazem na mé emulační rutiny nebo přímým přepisem portu a bitu v originálních rutinách (diky tomu, ze Sharp má podobny hardware v sobě také). Třešničkou na dortu byl 128k zvuk - emulace zvukového čipu AY 3-891x, který měl 3 nezávislé zvukové kanály a ke každému mohl být zapnutý šumový generátor. Problém byl v tom, že Sharpuv 3-kanalový zvuk byl oktávově posunutý trochu výše a tak nebylo možné nízké tóny plně emulovat. Emulační rutiny tohoto čipu jsem (a to se musím přiznat bez mučení) sebral z Lamačova FX Soundtracků III. Ten nízké tóny emuloval pomoci šumu a tak mu (zřejmě) nezbývalo moc šumu na opravdové šumy AY. Později jsem získal ještě jednu rutinu (už přesné nevím odkud, tuším že z Interkarate), která posunula celou AY o oktavu výš a tak zbylo dost šumu i na šumový rozsah AY. Tato rutina měla ale své chyby a tak se někdy do hudby vloudil nevhodný tón a rutina se nedala použit. Ve finále jsem tedy používal obě dvě verze a sám jsem se nikdy udělat vlastní emulaci ani nepokusil. Nejtěžší práce nastala s příchodem 128k her. ZX Spectrum 128 mělo několik paměťových bank, které se po 16k mapovaly do nejvyšší části paměti. Vzhledem k tomu, ze měl Sharp "pouze" 64k RAM, je každému jasné, že odpovídající emulace stránkování ZX Spectra 128 nemohla být udělaná. Nejčastěji byla situace u 128-kovych her ještě ucházející - používaly přídavnou paměť jen k ukládaní zvukových rutin a Spectrum prostě jednou za čas přepnulo horní banku na jinou paměť, provedlo změnu nějakého tónu a přeplo se zpět (např. Terramex či hudba z Mask3 v Total Eclipse). V takových případech jsem prostě vzal zvukové rutiny, celé jsem je přepsal na jiné místo v paměti (např. na místo ZX Vram nebo ZX ROM) a odtud se bez nutnosti přepínání stránek volaly. Relokace rutin byla sice hrozná práce (člověk nikdy nevěděl, kde přesné je kód, kde jsou data a kde jsou adresové informace o datech), ale nebyla až tak zdlouhavá. Horší bylo, když se ve stránkovaných oblastech vyskytoval přídavný grafický kód či jen grafické informace a ZX 128 stránkovalo jak zběsilé a tahalo data na obrazovku ze všech koutů paměti (např. Total Recall, Robocop 3 či 128 extenze u Dizzy 5). Protože takovéto grafiky většinou již bylo moc a do 64k se jednoduše nevešla, bylo nutné ji dát na ramdisk. Proto jsem si udělal univerzální čtecí rutiny z ramdisku (zálohovaného i nezálohovaného), opět relokoval všechny grafické rutiny z vedlejších stránek paměti a nakonec je předělal tak, aby četly data přes moje ramdiskove rutiny. Když byla hra hotová, dodělal jsem do ní já nebo kolega David Voráček přídavnou grafiku (někdy) a celou hru jsme zabalili pomoci programu Uprava2 od J.O. Předělal jsem takto kolem dvacítky her, prakticky všechny přímým přepisem grafických rutin na rutiny pro sharp. Všechny hry jsem předělával pro 32k Vram a běžely jak z kazety, tak i z diskety.

Které tituly bys vyhodnotil jako vrchol tvé prace?

Už si na všechny mnou předělané hry nevzpomínám, ale určitě bylo jedním z tvrdých ořišků Dizzy 5 (i se všemi 128-kovymi extenzemi) a starší Dizzy 6, také Terramex či Total Recall (i když ten jsem už nedokončil). Samozřejmě nesmím zapomenout na ZX-Emulator, který byl svým způsobem jedinečným dílem (i když v použivatelnosti trochu pokulhaval).

Chtěl by jsi na závěr vzkázat něco současným fanouškům SHARPa?

Stalé věřím, že Sharp MZ-800 je jedním z nejkvalitnějších 8-bitovych počítačů a všem současným příznivcům Sharpa držím palce, aby v jeho podpoře setrvali. Určité si myslím, že i v dnešní době si muže najít dostatek příznivců a přinést jim pěkné chvíle, tak jak je přinesl i mě. Kdo ví, třeba se ještě u Sharpa setkáme.. s pozdravem Roman Dolejší - RDOS EuroTel

Romane, díky za rozhovor, Zdeněk.

 

Copyright 2003 by ZA Software, zdeneka@seznam.cz