MB Maniax / novinka na webu

Emulátor ZX Spectra přímo v prohlížeči

Psát o hrách a programech pro ZX Spectrum má jednu vadu. Čtenář si je musí stáhnout, nakopírovat na kazetu, disketu nebo SD kartu, najít počítač, najít k němu kabel a nakonec zjistit, že ten kabel má půjčený soused. Rozhodl jsem se celý tenhle proces zkrátit na jedno kliknutí.

Na MB Maniax teď běží emulátor ZX Spectra přímo v prohlížeči – a to včetně ZX Spectrum Next. Program se spustí přímo tam, kde o něm čtete: v článku nebo v sekci Ke stažení. Nic se neinstaluje, nic se nekopíruje a SD karta může zůstat v šuplíku.

A protože tvrzení „ono to funguje“ nemá na tomto webu bez důkazu žádnou váhu, najdete hned pod tímto odstavcem FableDevil – snad nejnenáviděnější plošinovku na ZX Spectrum Next. Stačí kliknout.

Ovládání: A/D chůze, W nebo mezerník skok, R restart levelu, M vypne hudbu. Úvodní obrázek odklepnete libovolnou klávesou.

Co emulátor umí

  • Klasické ZX Spectrum 48K, 128K a Pentagon – soubory TAP, TZX, Z80, SNA a SZX, klidně i zabalené v ZIPu.
  • ZX Spectrum Next – soubory NEX, včetně Layer 2, hardwarových spritů, tilemapy, copperu a TurboSoundu.
  • Emulátor se načte až po kliknutí, takže kvůli němu žádná stránka nezpomalí.
  • Celá obrazovka, restart a nastavení hlasitosti. Výchozích je 50 %, protože tři AY čipy najednou umí být nečekaně upřímné.
  • Program jde otevřít i v samostatném okně, kde se u klasického Spectra dá přepnout stroj a zvětšení.

Jak se to ovládá

Emulátor poslouchá klávesnici počítače, jakmile do něj kliknete. Pokud nereaguje, klikněte do obrazu ještě jednou – klávesy dostává jen tehdy, když na něm máte zrovna fokus, aby vám šipkami nescrolloval celou stránku.

  • Shift funguje jako CAPS SHIFT.
  • Ctrl funguje jako SYMBOL SHIFT.
  • Na mobilu emulátor poběží, ale bez klávesnice si v něm moc nezahrajete.

Pod kapotou

Klasické Spectrum pohání JSSpeccy 3 od Matta Westcotta. Pro Next jsem sáhl po emulátoru JNEXT od Jorgeho Gonzáleze Villalongy a přeložil ho do WebAssembly. JNEXT bere hardware Nextu doslova – vychází přímo z VHDL popisu FPGA a nevynechá ani čekací stav paměti při 28 MHz. Pro přesnost je to skvělé, pro výkon méně: v prohlížeči zpočátku některé hry nestíhaly plnou rychlost.

Nejvíc času přitom emulátor trávil tím, že nesmírně přesně emuloval, jak procesor nic nedělá. Většina her na Nextu po každém snímku čeká na přerušení instrukcí HALT a JNEXT to čekání počítal takt po taktu. Naučil jsem ho tyhle chvíle přeskočit najednou. Výsledek je bit po bitu stejný.

Next se v prohlížeči nahrává bez NextZXOS a bez SD karty. Programy, které NextZXOS potřebují, zatím nepoběží, a co si program uloží, vydrží jen do zavření stránky. Na slabších počítačích nemusí všechny programy stihnout plnou rychlost.

Ukázka: FableDevil

Na zkoušku jsem do článku vložil FableDevil, moji starší hru, kterou jsem portoval na ZX Spectrum Next podle stejnojmenné hry pro prohlížeč od Leonxlnx. Je to snad nejnenáviděnější plošinovka na Nextu. Tedy zatím – ve vývoji je mnohem lepší rage plošinovka, ale o té až jindy. ;)

Na první pohled v ní stačí dojít ke dveřím. Na druhý pohled se pod vámi propadne podlaha, ze země vyjedou bodáky a dveře se dají na útěk. Třetí pohled už obvykle nestihnete.

Pro emulátor je to docela poctivá zatěžkávací zkouška: hra běží na 28 MHz, kreslí tilemapou a hardwarovými sprity a hudba i zvukové efekty hrají na TurboSoundu přes všechny tři AY čipy. A jen pro jistotu: postup, který si hra na skutečném Nextu ukládá na SD kartu, vydrží v prohlížeči jen do zavření stránky. U hry, kterou budete nenávidět, to může být i výhoda.

Autoři a poděkování

Co dál

Emulátor se bude postupně objevovat u programů v sekci Ke stažení a v článcích, kde dává smysl si program rovnou vyzkoušet. Pokud narazíte na program, který v něm nejede, napište to do komentářů – jen prosím nejdřív zkontrolujte, jestli se vám zrovna nepropadla podlaha.