Treasure Island – 2nd release

Základní informace

  • datum vydání poslední verze na PMD-85: 1. 2. 2021
  • portace kódu ze ZX Spectra (hudba převzata z verze pro Commodore Plus/4)
  • využití RAM: 0000h ÷ 7FFFh, C000h ÷ FFFFh (včetně zápisníku)
  • podpora modelů: všechny verze PMD-85 (1/2/2A/3)
  • grafika: volitelně ČB, 4-barevný RGBM, ColorAce
  • hudba/zvuky: ano – vestavěný akustický měnič
  • ovládání: klávesnice (Q,A,O,P,M,H,T,B,K0) nebo joystick A/B

Ovládací klávesy

  • Q = nahoru, A = dolů, O = vlevo, P = vpravo, M = hození meče
  • H = pozastavení hry
  • T = pokračování ve hře
  • B+T = restart hry
  • K0 = vypnutí/zapnutí zvuku během úvodní obrazovky

Popis hry a její vlastnosti

Po absolvování prvních dvou meziher (nalodění se na Hispaniolu a cesta v podpalubí lodi) se hráč ocitne na ostrově. Cílem je najít poklad a… vrátit se na loď. Ovšem tak jednoduché to nebude. Sbírání předmětů, které hráč nalézá na ostrově, přináší ve většině případů (s jednou výjimkou) pouze bodový zisk. Stejně tak zabíjení pirátů vržením meče je někdy zbytečné, jindy ovšem nezbytné pro průchod do části ostrova, kterou pirát hlídá. Nějaké meče jsou volně roztroušeny po ostrově, jindy zase můžete sebrat meč, který po Vás hodí pirát, pokud se ocitnete v jeho blízkosti. Pro klid Vaší duše nutno říci, že hru zřejmě nelze dohrát se skóre 100%, přestože ostrov obsahuje dostatek „materiálu“ pro 100% naplnění hry.

Po automatickém spuštění hry je uživatel vyzván k volbě, v jakém barevném režimu chce hru spustit, a zda bude používat joystick. Výběr barevného režimu provede „degradaci“ počtu barev a bez nového načtení hry se již nelze vrátit k vyššímu počtu barev.

Hra je přímou portací verze ze ZX Spectra, proto pro ni platí stejná pravidla. Navíc je opravena chyba původní předlohy, která znemožňovala regulérní pohyb hráčova protivníka v závěru hry. Aby se kód hry i s nově přidanou hudbou vešel do 32kB RAM, došlo k redukci animačních dat a mapa ostrova je uložena v komprimované podobě. Naopak kvůli rychlosti, se kterou je PMD-85 vůči ZX Spectru na štíru, jsou animační fáze slepců v 1. mezihře a pirátů na ostrově ukládány odděleně pro každou odlišnou barvu. Jejich obarvování za chodu totiž drasticky snižovalo celkovou rychlost hry.

Předchozí verze hry

Pre-release verze hry obsahovala chybu, v důsledku které se na reálném PMD-85 pohyboval hráč příliš rychle. Oficiální první verze (bez označení v logu) obsahovala chybu inicializace proměnných, v důsledku které docházelo ke kolapsu hry během první či druhé mezihry. Opravená verze nese v logu označení „2nd RELEASE“.

POKE

  • >0896 AF C9   =>   v 1. a 2. mezihře nevadí hráči kontakt s nepřítelem
  • >113B 00 00 00   =>   na ostrově neubývají životy (smrt ovšem může nastat)
  • >0FA3 00   =>   trvalé vlastnictví meče

Soubory ke stažení

Galerie obrázků (hra v režimu ColorAce)

obrázek během nahrávání

konfigurace hry

titulní obrazovka

1. mezihra

2. mezihra

 

 

 

 

..a na ostrově..

24 komentářů u „Treasure Island – 2nd release

  1. Libor L.A.

    Při nostalgickém procházení starých her jsem si ověřil, že u hry Treasure Island je v první části hry chyba. To je to kličkování mezi postavami s holemi. Už dříve se mi několikrát stalo, že při přechodu do druhé části hry (skákání po sudech) se hra restartovala. Nyní se mi to podařilo několikrát vyvolat, ovšem šlo o metodu pokus-omyl. Řízené vyvolání chyby se nedaří. Mám takové tušení, že to souvisí se smrtí hráče v první části hry v okamžiku, kdy jedna z těch nepřátelských postav mění směr. Ale..

    Pokud se někomu podaří určit se stoprocentní jistotou situaci, ve které k tomuto jevu dochází, udělá hodně záslužnou práci pro skupinu sběračů her pro PMD-85. Já bych pak vydal opravenou verzi, ve které bych se zároveň pokusil opravit tu příšernou animaci postavy hráče při vodorovném pohybu.

    1. Libor L.A.

      Asi zastavím bádání nad potenciální chybou ve hře Treasure Island. Ono se mi totiž i u ostatních her začíná nějak rozpadat obraz a objevovat defekty, klasicky známé z verze 1 při přehřátí. Být to na reálném železe, řekl bych, že je to únavou materiálu nebo tím přehřátím. Ale u emulátoru? Musím udělat nějakou rozsáhlejší analýzu, zda to dělá i dvojková verze emulátoru (já už delší dobu vyvíjím na verzi 3.1.5.204).

      1. Libor L.A.

        Tak opět: chyba mezi klávesnicí a židlí. Samozřejmě u mne doma. Kluci z RM-Teamu chybu v emulátoru nemají. Když jsem před dokončením hry slučoval různé procedury, neuvědomil jsem si, že už před první mezihrou musím nastavit začátek buferu, kam se ukládají data o pohybu hráče (aby jej na závěr hry mohl sledovat duch). Ovládání první mezihry totiž volá některé části, používané až vlastní hrou. Ve vlastní hře je bufer korektně inicializován, ovšem v první mezihře ne. Chyba byla opět maskována faktem, že s poctivě vynulovanou RAMkou se neprojevila..

        Takže tato chyba je odstraněna a pokusím se něco udělat i s již zmíněnou animací pohybu hráče do stran. Nová verze bude vydána… brzy.

        1. Libor L.A.

          V hlavním článku je ke stažení testovací verze Treasure Island – 2nd release. Toto druhé vydání má opravenu jednu kritickou chybu a je změněna celá řada věcí. Z těch významnějších:

          – opravena kritická chyba (chybějící inicializace sledovače hráče – program padal)
          – korektní inicializace portů (je možný start z ROM modulu bez inicializace BIOSu)
          – hru je možno ovládat kterýmkoliv joystickem (nebo i žádným – řeší kolizi s PMD32)
          – korektní aktivace ducha na závěr hry
          – některé objekty mírně změnily barvu
          – ČB režim používá i šedou barvu (hra v tomto režimu teď vypadá mnohem lépe)
          – byl zrušen časový limit hry (8253 rozdrtit a vytěžený křemík darovat na výrobu 8080A)

          Naopak se nekoná vícebarevný hráč ani pirát. Oba pokusy vedly k neřešitelným problémům v rámci dostupného množství paměti. Ze stejných důvodů nakonec zůstal i počet animačních fází hráče.

          1. Zdeněk

            … tak na to se budu muset mrknout 😉 jak jsi to teda poladil ✌
            Už dlouho jsem si totiž taky nic nezahrál, natož něco pro PMD …
            ( začínám mít už slušnej absťák )
            Uff

      1. Libor L.A.

        Alespoň ve zkratce: Díky. Teď mám pár dní jiné povinnosti, ale koncem týdne bych se chtěl vrátit k osmibitům.

        1. Zdeněk

          … ve zkatce, není vůbec zač.
          i já mám teď jinné povinnosti ( pro změnu lítám po doktorech, velmi záživná činnost, hlavně to neustálé čekání na cokoliv … )
          Tak snad se tu zase brzy sejdeme ke kontruktivní práci a debatě …
          ZDAR A SÍLU, NAJDEŠ HLAVNĚ V PÍVU :-)

  2. Zdeněk

    … mám pocit, že je ve hře nakonec chyba se kterou nelze pokračovat dál ( chybí zobrazení jedné mačety )
    Ať na to koukám, jak koukám tak to bez ní nevychází … nebo se pletu? 👽️

    1. Libor L.A.

      Ale ne, tu hru lze bez problémů dojet. Dokonce je tam více mačet, než je pro průchod hry nutné. Jen je třeba je sbírat ve správném pořadí (ale není to zase nějak moc kritické. jak říkám, je tam rezerva).

      Projel jsem to několik desítek-krát, takže je to potvrzeno. Ale kouknu na to ještě jednou.

      1. Libor L.A.

        Mimochodem, počítají se ovšem i mačety, které po Tobě hází piráti a Ty je musíš zvednout a použít (někdy ovšem na jiného piráta).

  3. Zdeněk

    …jestli jsem to nenapsal tak se jedná o 2nd release, ale stím, že můžeš sebrat mačety co po tobě hodí oiráti jsem nepočítal ….asi nějaké Vooo Doo ☠️ ☺️

  4. Libor L.A.

    Uvolněna verze 2 této hry (2nd release). Opraveny chyby, mírně změna grafika. Základní testy provedeny. Nyní bude následovat výměna náhledových obrázků, sekce POKE a detailní testy.

    Možná se ještě pokusím napsat RLE komrimátor, který zohlední specifika této hry. Uvolněná verze je bez distribuční komprimace.

  5. Libor L.A.

    Komprimace pomocí metody RLE se povedla. Aniž bych nějak komprimátor optimalizoval pro datovou podobu této hry, podařilo se z délky 7E2Bh dostat na 6AA5h. Momentálně ověřuji spustitelnost autostarteru (a vlastně i celé hry) za všech podmínek a na všech verzích PMD-85.

    1. Libor L.A.

      Já jsem ten kompresor ale udělal jako aplikaci pro PMD-85. Samotný kompresor je v oblasti 9000h. Nejprve si posune komprimovaný blok nadoraz nahoru tak, aby končil na adrese 7FFFh. Jednak se tím udělá prostor pro případ, že by chvilkově zdrojová data byla „předběhnuta“ komprimovanými daty při záporném stupni komprese a jednak se dobře testuje konec zdrojového souboru (testem příznaku znaménka vyššího bajtu adresy zdrojových dat). Navíc není nutné vkládat například nulové bajty před vlastní komprimovaná data.

      Těch necelých 32kB to na PMD-85 spakovalo za zhruba tři vteřiny s kompresním poměrem 85%.

      1. Libor L.A.

        A v hlavním článku už je ta spakovaná verze. Testy spustitelnosti v emulátoru RM-TEAMu pro všechny verze PMD-85 jak v standardním tak i v TURBO režimu proběhly v pořádku, stejně tak i test na fyzickém PMD 85-2A. Je nutné vždy testovat TURBO i NETURBO režim nahrávání, protože se liší hloubkou použití zásobníku. Rozdíly jsou, mohu potvrdit.

        Základní testy upraveného ovladače joysticku jsou rovněž v pořádku. Lze nyní volit oba joysticky, navíc při volbě ihned aktivují spínací signály na portu C obvodu GPIO MHB8255, takže kdo má jako já u joysticku pověšenou LEDku na kolektoru spínacího tranzistoru, tak hned vidí, který joystick je aktivován. Rovněž zotavení po RESETu počítače korektně nastavuje porty, včetně toho pro čtení joysticku.

      2. Libor L.A.

        Možná by ještě bylo dobré poznamenat, že RLE kompresor byl napsán primárně pro zabalení hry TreasureIsland – 2nd release. Poměry v RAM jsou po rozbalení následující:

        0000h-7E2Ah = samotná hra
        7E7Eh-7FFFh = zavaděč hry včetně dekomprese obrázku a dat

        Pokud chci fungovat i na verzích se 48kB RAM, tak mi zbylo 84 bajtů, a to už není mnoho. Samozřejmě zbyl prostor ve značně fragmentovaném zápisníku „vedle“ videoram a část zavaděče lze přepsat při dekompresi (například rutiny úvodního smazání obrazovky a dekomprese obrázku). Ovšem než dělat „stěhování“ dekompresních rutin do zmíněného zápisníku, tak jsem zvolil ten ne příliš výkonný RLE kompresor ve stylu „lepší něco než nic“.

        Ovšem přečtení příspěvků na Oldcompu na téma BUSYho kompresoru mě inspirovalo. A až bude někdy čas, zkusím nějaký jednodušší LZ77 kompresor. Samozřejmě přímo pro i8080 na PMD-85.

        1. RomBor

          Len pre zaujímavosť, Quido spakoval hlavný kód hry na 22346 bytov. To je už vrátane rozpakovacej rutiny o dĺžke 177 bytov, ktorá sa presunie „vedľa“ VideoRAM..

          1. Libor L.A.

            Zkoušel jsem Quida taky. U této hry mi vyšla komprese s Quidem na 69% původní délky. Ten můj pokus s RLE kompresí dal zmíněných 85%. Takže rozdíl tam je velký. Právě ten Tvůj odkaz a diskuse na Oldcompu, na kterou jsem narazil, mě nakoply a červ už hlodá v hlavě. Asi opráším svůj starý pokus a zkusím udělat svůj LZ77-based komresor. Určitě si budu chtít vyzkoušet i tuhle úlohu. Ovšem budu to dělat pro i8080 a kompresi přímo v PMD-85. Pokud bych komprimoval na PC, tak bych samozřejmě použil Quida a neobjevoval objevené. Je super, když jsou tyhle nástroje sdílené, ušetří to hodně času a člověk se může zaměřit na to, kde vidí potenciál pro nové objevy.

            1. RomBor

              Quido pôvodne vznikol priamo pre ZX Spectrum.
              https://blog.borik.net/2008/11/quido-v12.html
              Kedysi som chvíľu uvažoval, že by som ho prepísal aj pre PMD 85, ale vzhľadom na to, že na Speccy trvalo spakovanie 40 kB bloku 30+ minút (neviem, či nie aj 40+), tak som sa tejto myšlienky rýchlo vzdal, pretože na PMD 85 by to bol nekonečný príbeh.

              1. Libor L.A.

                Taky mám trochu obavy z toho zpětného hledání vhodných slovníkových předloh, ale je to výzva. Když to bude tak pomalé, jak říkáš, založím projekt do šuplíku a řeknu mou oblíbenou větu: „Tudy ne, přátelé!“ Ale touha vyzkoušet cestu, po které jsem ještě nešel, je silná.

Napsat komentář: Zdeněk Zrušit odpověď na komentář

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