Magicland Dizzy

Není lepšího načasování pro uvolnění vajíčkové epizody než právě první jarní den roku 2019. Je to první hra, kterou jsem předělal pro PMD85, a pro její portaci jsem zvolil ten nejhorší možný způsob – prostým odpozorováním. Grafiku jsem sice vytáhl z originálu, ale původní kód jsem neanalyzoval, zkoušel jsem psát vlastní (abych se to „naučil“). A tak jsem několikrát přeprogramovával celou grafickou knihovnu a chování objektů. V posledních měsících hlavně kvůli ubývající paměti. Aby té práce při předělávkách a opakovaných překladech nebylo tolik, tvořil jsem paralelně nejen emulátor ePMD85, ale také vlastní vývojové prostředí DevX85 postavené na Macro Assembleru AS.

Srovnání s verzí pro ZX Spectrum

Hra se grafikou podobá verzi pro ZX Spectrum, včetně kolizí atributů. Tu a tam bylo nutno některé objekty šoupnout o 2 pixely doleva nebo doprava, aby bylo dodržené správné probarvení (ZX zobrazuje stejnou barvu na 8 pixelech, PMD jen na 6). Některé prvky jsem převzal z verze pro C64, kterou jsem hrál jako první, např. žralok se pohybuje stejně rychle jako Dizzy, troll na mostě zmizí přes obláčky apod. Co se mi asi nepovedlo trefit úplně přesně, je ono nezastavitelné kutálení Dizzyho, takže v této verzi je to trochu jednodušší na dohrání. Na závěrečný ohňostroj už také nezbyl prostor, je tam trochu jiná animace 🙂

Ve hře hraje také hudba, prostřednictvím MIF85. Ačkoliv se mi více líbí ta z verze pro C64, bylo jednodušší převést hudbu původně určenou pro AY. Doprovodné zvuky se pak přehrávají na klasickém repráčku v PMD.

Výkon Z80 je někde jinde, než u 8080 a ve hře je to znát v komplikovanějších levelech (Zadní vrátka do zámku, Hádés). Kvůli nutnosti komprimovat grafická data i deskriptory levelů je přechod mezi obrazovkami pomalejší. Jinak běží hra docela svižně. Zobrazování textových rámečků jsem neurychloval schválně, budí více dojem rozbalování svitku (ale možná to tak vidím jenom já).

Videoukázka ze hry

 

Spuštění

Hru lze provozovat jen na PMD85 s 64 kB RAM. Primárně se načítá a spouští pro barevný režim COLORACE. Pokud se hned ze začátku před načtením loga drží SHIFT, načte se v černobílé verzi. Ke stažení je k dispozici PTP soubor, v archivu je přibalený i emulátor ePMD85.exe s dávkovým souborem play.bat, který zajistí automatické spuštění hry. Kdo nemá důvěru k cizím exe souborům, může hrát i v emulátoru od RM-TEAMu. Pro hraní na reálném PMD je největším problémem, jak tuto hru na něj dostat. Nahrávat to z wav souboru je zdlouhavé a pro PMD32-SD bude třeba dodělat nahrávač. Sám používám Arduino Nano s SD kartou napojené do ROM modulu. Tím je vyřešeno i automatické načtení rozhraní, které s kartou pracuje a emuluje načítání z pásky. Určitě jej na těchto stránkách představím.

Ovládání

Hru lze ovládat pomocí joysticku (zasunutém do portu GPIOB) nebo z klávesnice. Přiřazení kláves:

  • šipky doleva/doprava – pohyb
  • SHIFT – spuštění hry, skok
  • EOL (enter) – vyvolání akce, zvednutí předmětu, potvrzení textového rámečku
  • K0/K1 – vypnutí/zapnutí doprovodné hudby
Opravy

Ačkoliv jsem tuto hru projížděl několikrát a s výsledkem jsem spokojen, nevylučuji, že jsem něco přehlédl a že se časem objeví návrhy na zlepšení. Pak bych vydal opravenou verzi. Zatím jsem celou hru nezkoušel na reálném PMD (jen některé části) a také nemám postavený MIF85, ale to je jen otázka času, kdy se k tomu dostanu.

Doplněno 24. 3. 2019

To místo s Džinem je prostě prokleté. Dozy, jako poslední zachráněný, unikl Zaksovy pozornosti a nevyprokoval ho k zahřmění, které probudilo sopku. Dizzy tak chudák zůstal uvězněný v kouzelné říši…

Takže na druhý pokus vydávám Magicland, kde je opravena tato chybička. Navíc jsem přidal možnost přepnout v hlavním menu COLORACE do 4 barevného režimu (pomocí PMD klávesy C-D, která by měla být namapována na tabelátor). Ale je to jízdenka jen jedním směrem! Titulní obrázek v COLORACE zůstane.

Download

Magicland.zip

Image disku pro PMD-32 je ke stažení zde (děkuji RM-TEAMu za úpravu).

Video s průchodem hry vytvořil Solaris104 a je možné prohlédnout zde.

24 komentářů

  • To je teda veľká paráda!
    Verziu pre PMD 32-SD s radosťou pripravím. Robil som to tak vždy aj pri hrách od Libora Lasotu.
    S dovolením hru radi pridáme na naše stránky.

    • Teda, tak rychlou reakci jsem nečekal. Děkuji za pozitivní zpětnou vazbu!
      Budu rád za přípravu verze pro PMD 32-SD. Pomůžou k tomu nějaké dodatečné informace?
      A samozřejmě umístění na Vaše stránky je dovoleno a vítáno 😉

  • Na tomto mieste by som rád zložil obrovskú poklonu.
    Nič krajšie som na péemdéčku ešte nevidel a to som si myslel, že Lemmings už v rozsiahlosti nič neprekoná. Úprimne, keď som pred 10 rokmi začínal tvoriť hru Kvádro a niekde v kúte duše som veril, že by sa tým mohla nakopnúť scéna okolo PMD 85, ani vo sne by mi nenapadlo, že sa o dekádu dočkám jednej z najrozsiahlejších Dizzyoviek v plnej farbe a muzikou. Mám ohromnú radosť, čo sa vám všetkým darí z tohto stroja „vyždímať“. Skvele!

    • Děkuji, od kapacity z oboru si ocenění nesmírně vážím. Určitě bych chtěl v rozšiřování softwarového portfolia pokračovat a ty pozitivní ohlasy mi dávají obrovskou energii.

  • Libor L.A.

    Tak teda to je něco. Klobouk dolů. Jedním slovem nádhera. Měl bych pár otázek. Jak dlouho jsi to tvořil? Je to „jen“ překlad ze Z80 na i8080 plus úprava grafiky nebo jsi to dělal od základu nové a původní verzí ses pouze inspiroval? Používáš jednu pomocnou videoram nebo dvě? Nebo ještě jinak? Prostě ta animace je bezchybná. Jak to je s výkonem CPU? Ždímeš výkon na max, nebo to nějakou drastickou optimalizací nemuselo projít? Tak přece povídej, přeháněj.. Měl bych jen jednu prosbičku. Pokud budeš dělat úpravy pro finální verzi, nešlo by tam vsunout někde volbu pro provoz na čtyřech barvách?

    • Reaguji až teď, chtěl jsem si dát na chvíli pauzu…
      4 barevná verze může být, ale zkus navrhnout, jakou barvu nahradit žlutou?
      Na zbytek otázek jsem sepsal nějaké povídání, netušil jsem, že by detaily mohly někoho zajímat, viz
      Jak jsem 20 let vařil vejce

      • Libor L.A.

        Nevím, jaký systém pro práci s barvami používáš. Já jsem kdysi zkoušel při redukci barevné hloubky přímé náhrady barev kus za kus, pak jsem však zvolil systém barvových registrů. Každý objekt (či příbuzná skupina objektů) má svůj barvový registr a celá sada barvových registrů se volí v menu podle zvolené barevné hloubky. Pak může být žlutá v jednom případě nahrazena zelenou, jindy zase červenou atd. podle situace. Pravda je, že i tyhle zdánlivě banální věci se musí ošetřit pokud možno smysluplně.

        Jinak díky za povídání. Velice poučné. Hlavně je hra velice rychlá na to, že z Tvého popisu vyplývá řada postupů, které „zavání“ použitím metod z vyšších programovacích jazyků a že to není hardcore struktura, kde se maximum odehrává v registrech a maximálně se využívá všech (i těch bočních) efektů použitých instrukcí. Asi se budu inspirovat pro svá další dílka. Program je čitelný a přesto rychlý.

        Obecně se přimlouvám za to, aby každá hra byla „přepnutelná“ do základního, minimalistického režimu, tak aby jela na všech modelech PMD-85 bez doplňkového hardware. Připouštím variantu, že na modelech se 48kB holt prostě vše nepojede. To je asi něco, co úplně vždy ovlivnit nelze. A ještě jednou – veliká poklona. Rozsahem i kvalitou je to něco, co na PMD-85 fakt chybělo.

        • V celé hře používám identifikátory pro 7 barev. Ty se pak převedou tabulkou na atributy pro liché a sudé mikrořádky. Jednoduchou náhradou této tabulky přebarvím celou hru. Ale vše, co bylo např. žluté, nahradím jinou barvou. Musel bych překopat celé deskriptory levelů, abych někdy žlutou převedl na červenou a jindy na fialovou. K tomu už sílu nenajdu. Navíc si ani nejsem jistý, na jaké 4 barvy to mám přesměrovat, když se to každému ukazuje jinak… Ale počkám, až se toho nasbírá více, pak udělám i 4 barevnou volbu.

          PMD85 s 64kB s Colorace, MIF85 a SD kartou je už zajímavá a konkurenceschopná platforma. I tak lze Magicland hrát bez přídavného hw na 2A/3. Původně jsem věřil, že bych se do 48 kB vlezl, ale nakonec jsem rád, že mi stačilo 64kB.

  • ZX Cygnus

    Paráda a díky. Ale teď abych si konečně a opravdu postavil i MIF85 🙂

    Za šťavnaté detaily z tvorby se taky přimlouvám.

  • Libor L.A.

    Zdeňku, jestli jsi nezkoušel celou hru na reálném PMD-85, tak existuje jedná zákeřná odlišnost mezi emulátory a reálným PMD-85. Klávesnice PC negeneruje ty šílené zákmity při stisku tlačítek… Vzhledem k tomu, kolik různých chyb jsem už udělal, založil jsem si raději sbírku výstražných přikázání. Bohužel dodnes mi přibývají další podněty.

    • Ano, s klávesnicí to není nijak růžové. Proto mám dva různá tlačítka na zapnutí/vypnutí hudby. A taky je třeba brát v úvahu parazitní kapacitu, takže po aktivaci sloupce se nemůže hned číst stav kláves, nějaká pauzička mezi tím musí být.
      Opravil jsem si klávesnici (našroubované klávesy s nalepenou sadou pro opravu ovladačů, tak zatím s tímto nemám větší problémy.

  • Krátce jsem zkusil a posílám pár postřehů.

    Nenačítá se na PMD 85-3, prostě spadne bez jakékoli hlášky na bloku s obrázkem aniž by se obrázek začal zobrazovat. Hádám, že by to mohlo být režimem kompatibility? Nepřepne se samo?

    Na emulovaném PMD 85-2A jsem uspěl, hra načte bez problémů.

    Zkusil jsem i monochrom, podle úvodního obrázku jsem se bál, že hra bude bez alespoň toho jednoho odstínu šedi, ale je to ok 🙂

    Až bude hra fungovat na reálném PMD 85-3 z PMD 32-SD, tak určitě zkusím i se zeleným monochrom monitorem.

    Bez ColorAce v RGB režimu dle očekávání vypadá pruhovaně, ale pořád jsou tam znát „barvy navíc“, protože barvy opticky splývají a ColorAci se to velmi vzdáleně podobá. Je samozřejmě otázka, co to provede na reálném hardwaru, který má barvy jiné než emulátor (viz zde http://oldcomp.cz/viewtopic.php?f=49&t=6106) a různá zobrazovadla s mikrořádky provedou něco jiného. K dispozici na zkoušení mám jen GBS-8220 a LCD monitor, skutečnou TV s RGB nemám.

    V emulátoru od bří Bóriků hra funguje, hraje na MIF 85, ale občas zůstane speaker pípat a někdy hodně otravně a dlouho, často se pípání spustí samo, častěji po přechodu mezi obrazovkami. Nestalo se mi v monochrom režimu, jen v barevném s ColorAcí. Nezáleží na tom, jestli je zapnutá hudba pro MIF 85.

    (Tři životy jsou pro Dizziho fakt málo, nebo jsem nemehlo.)

    Ale je fascinující, jak málo se hra liší od ZX Spectra a že vůbec něco takového funguje na PMD.

    • NA PMD 85-3 je treba najprv prejsť do režimu kompatibility príkazom JUMP FFF0 a až potom hru nahrať pomocou MGLD 00.

      K tomu pískaniu – nestalo sa ti to po tom, ako si uložil Snapshot a ten potom nahral do Emulátora? Predvčerom som zistil (vďaka Solarisovi), že v Emulátore v3.0.2.176 je chyba pri nahrávaní Snapshotu, kedy sa na port C systémového PIO zapíše nesprávna hodnota, ktorá môže spôsobiť to pískanie.
      Toto samozrejme súvisí aj s PRC, ktoré by boli v tejto verzii vytvárané. Súčasťou PRC je samozrejme Snapshot, takže môže nastať rovnaký problém.
      Dnes sa pokúsim vydať opravenú verziu Emulátora.

      • Určitě to pískalo po uložení snapshotu a načtení z něj. Přeci jen se z pásky nahrává tak dlouho, že uložení do snapu bylo první, co jsem udělal hned v úvodní obrazovce.

        Režim kompatibility pomohl, asi jsem příliš zhýčkaný runnerem na PMD 32-SD 🙂

    • Je to přesně tak, jak píše Roman. Hru jsem zkoušel i v emulátoru RM-TEAMu, ale protože ji po tolika testováních znám jak své boty, projedu ji vždy na poprvé asi do 25 minut. Dnes jsem použil poprvé snapshot v nejnovější verzi a taky se mi to rozpískalo.

      Jinak dnes ráno jsem ji celou projel na skutečném PMD85-3, pochopitelně v režimu kompatibility:
      Foto

      Zkoušel jsem i na PMD85-2A, ale to mám mírně nestabilní, podezřívám konektor od zdroje, takže po 10 minutách mi to spadlo, při opakované hře opět, ale v jiném místě.

      Co se týká složitosti – je to podle mě jednodušší než na ZX Spectru, ale chce to tu hru znát a vědět, kde jak skočit. Projet celou hru je dobrý zážitek. Nechci ji ani více zlehčovat ani cheatovat.

      Mimochodem sám jsem narazil na tento grafický kiks: když se zničí duch, zůstává (někdy) na obrazovce jeho neodmazaný kousek.

    • Jo a děkuji za sdílení zkušeností, nikdo není neomylný a na tak velký projekt bude potřeba více testerů.

  • solaris104

    Ahoj, našel jsem bug. Zachránil jsem celou Dizzy rodinku a neobjevil se text, že jsem je zachránil a neobjevily se obláčky nad sopkou. Zkus mi napsat na mail a pošlu ti prc záznam.

  • Zdravím, skvělá práce, ta podobnost se ZX verzí je úžasná. Nevadilo by, kdybych se o existenci této konverze zmínil ve fcb skupině „Dizzy : RetroGaming“?

    • Děkuji! Je zajímavé, že i když původní předloha pro mě byla ta z C64 (např. rychlost pohybu žraloka, reakce trola na trknutí kozy, ale třeba i možnost vypnout vysouvání mostu), tak nakonec se to více podobá ZX verzi 🙂 Zmínka o této konverzi mi určitě nevadí, v češtině to asi stejně moc populární nebude…

  • Paráda ! Neskutečný luxus !

  • Clouseau

    Ahoj
    Upravil jsem speciálně kvůli Dizzy modul ROM se stránkováním přepínačem na stránkování na port. A napsal k tomu zavaděč. Nakonec upravil disk verzi dizzy aby se z toho uměla zavést a spustit… Rád bych to i nabídl ostatním zájemcům, tak ode mne dotaz respektive prosba o souhlas…
    Modul jako takový je popsán na oldcompu, a stránkování je kompatibilní s Nostalcompem..

    • Jasně, nemám nic proti. Naopak mě těší, kolik se toho (kolem PMD85) díky Dizzyho hnulo dopředu. 🙂

Přidat komentář

Vaše emailová adresa nebude zveřejněna.