PMI-80

Když jsem v lednu 2014 začal vyvíjet první emulátor osmibitového počítače, stál jsem před otázkou, jaký prostředek – programovací jazyk, resp. platformu – k tomu zvolit. Tehdy jsem se rozhodl pro Javu, protože mi dovolila pracovat tak, aby výsledek konvenoval mému perfekcionismu: dokonalá grafika, absolutně věrná emulace, relativně vysoká rychlost, jíž mohlo konkurovat pouze C nebo jiný nízkoúrovňový jazyk. Zvažoval jsem i možnost, že bych použil JavaScript v HTML browseru, ale tu jsem zavrhl, hroze se, že by výsledek mohl připomínat emulátor PMI-80 Martina Malého, který je sice plně funkční, ale po stránce vzhledu a použitelnosti, řekneme-li to kulantně, zůstává pověsti autora cosi dlužen.

Uběhly čtyři roky, a situace se změnila: JavaScript prošel reformou, takže ve versi ECMAScript 6 už vypadá jako skutečný programovací jazyk, browsery běží na několikanásobně výkonnějším hardwaru než v r. 2014, CSS umí také několik nových kousků, a na druhé straně javové applety v browserech odešly natrvalo na smetiště dějin; není důvodu, proč bych místo aplikace, kterou si na svém počítači spustí málokdo, nedal tu spoustu skvělého kodu a sofistikované grafiky, kterou jsem pro své javové emulátory vytvořil, k disposici v javascriptové podobě tak, aby se dala se vší parádou spustit ve kterémkoli moderním browseru.

Zatímco k Javě, přestože jsem v ní napsal přes sto tisíc řádků kodu, mám stále poměrně reservovaný až negativní vztah, variující dle programovaného thematu mezi odtažitou lhostejností, mírnou nechutí a odporem, JavaScript mám za natolik primitivní, že jsem si k němu žádný vztah nevytvořil: tak jako člověk může mít rád psa nebo kočku, ale ne například žížalu.

Na konversi jsem dnes začal pracovat, a slibuji si od ní, že se mi podaří vyřešit zřejmě nejpalčivější problém stávajících javových emulátorů, nemožnost dosáhnout kvalitního zvukového výstupu: Java dokáže zvuk věrně přehrát, ale nelze ji přinutit, aby tak učinila přesně v určitém okamžiku, takže výsledkem je, že bez použití externí nepřenositelné knihovny (blobu) na sebe jednotlivé fragmenty zvukového výstupu emulovaného počítače nenavazují tak, jak by měly, což je přirozeně zejména v případě zvukových efektů typu pípnutí fatální. To si mi, jak doufám, podaří v JavaScriptu překonat, takže se můžete těšit na počítače, které nejen skvěle vypadají a každý si je může bez jakékoli přípravy spustit, ale také dokonale hrají.

Exerciser

Aktualisováno.
Jak patrno ze screenshotu, první testy, spíše ve formě proof-of-concept, ukazují, že rychlost JavaScriptu rozhodně nebude problém.

Komentovat články mohou pouze registrovaní uživatelé; prosím, zaregistrujte se