JET SET WILLY

Demo JET SET WILLY podle verze ze ZX Spectra (11. 11. 2018)

JET SET WILLY – Soubor virtuální MGF pásky pro emulátor RM-Teamu s demoverzí hry

Ukázka demoverze JSW

12 komentářů u „JET SET WILLY

  1. Libor L.A.

    Studie proveditelnosti s použitím systému dvou buferů, tak jak je používá originální verze pro ZX Spectrum, ukázala ca 2/3 rychlosti, kterou jsem naměřil na XBOXu. Více z toho asi vyždímat nepůjde. Těch figurek WILLYho v herním poli je osm, abych nasimuloval animaci příšer. Ale jestli tam je jeden WILLY, nebo jich je osm, tak to na rychlosti hry skoro vůbec není poznat. Stejně tak nemá žádný dopad vynechání animace figurek, symbolizujících zbývající životy hráče. Prostě kopírovat 2x 6kbajtů na každý průchod herní smyčkou (což připadá na jeden krok WILLYho o 2 pixely) je samo o sobě velice konstantní a spolehlivý zpomalovač.

    Mám ještě takový nápad, jak vynechat to kopírování buferů. Ale potřebuje to čas. Tedy čas na rozjímání nad možnostmi.

    V této variantě se určitě nelze bavit o barevném provedení. Vlastně v žádné variantě. Zkoušel jsem to, avšak prosakování barevných atributů vytváří ještě vyšší level než u originálu a není to vůbec pěkné. Nemluvě o další ztrátě rychlosti.

  2. Libor L.A.

    Protože předchozí uvolněná demoverze neukazovala v plném rozsahu, cože to vlastně umí, nahrál jsem jak nový program s hýbajícími se figurkami Willyho, tak jsem i pro rychlý náhled nahrál statický obrázek.

  3. Libor L.A.

    Pokročilé demo uvolněno.

    Prosakování atributu polojasu sbíratelných objektů do okolního zdiva budu řešit jednak posunem těchto objektů tak, aby se prosakování atributů barvy neprojevovalo, a tam, kde by to ovlivnilo hratelnost hry, posunu celý výřez obrazovky o jeden videobajt vlevo nebo vpravo. A pak mám ještě jednu možnost. A hra je tak už zkompilována. Sbíratelným objektům nekolísá jas ale natvrdo blikají. Ovšem už to není tak pěkné.

    Zbývá modul lana, nepřátelských objektů a pár drobností. Bludiště je komplet.

  4. RomBor

    Tak toto sa hrá úplne perfektne. Tá Šuhajdova verzia bola fakt nehrateľná.
    Podarilo sa mi ale spadnúť do nejakej „diery“ (už si nespomeniem, čo to bola za miestnosť) a nešlo z nej vyskočiť. A keďže nefugovala STOPka, na prerušenie hry, tak som to musel iba Resetnúť. Ale to je detail.

    1. Libor L.A.

      STOP funkci jsem z tlačítka STOP přesunul na RCL, aby nedošlo k nechtěnému stisknutí spolu se SHIFTem. Přemýšlím nad variantou, že bude funkce STOP (=RCL) pouze ubírat jeden život a restartovat hru v daném sektoru. To je sice užitečnější ale originál to tak tuším nemá. Ten restartuje celou hru. A s tím souvisí i pád do díry například v místnosti The Bridge. Mám takový dojem, že ta nemožnost vyskočit z díry koreluje s nemožností restartovat místnost, že je prostě původním záměrem nastražit totální past. Takových míst je ve hře několik, alespoň pokud mohu soudit podle verze na XBOXu.

      Ale mám tam nějakou chybu v detekci sbíratelných objektů. Například v místnosti The Hall lze sebrat objekt, který tam není.. A takových věcí se určitě ještě najde mnoho.

      Momentálně dělám rozbor nepřátel, tedy jejich definičních dat. Podle toho se rozhodnu o způsobu uložení těchto dat. Zbývá mi zhruba 2D00h místa v RAM a to musím dodělat právě animace nepřátel. Bohužel místo 4 pohybových fází každého nepřítele musím definovat těch fází 12, abych dokázal emulovat pohyb, původně propočtený na osmipixelový bat. V tom je hlavní výzva, týkající se dostupné paměti. Ale když už se podařilo vyřešit rychlost..

  5. Libor L.A.

    Dnes nová verze. Základní struktura GUARDIANS (pohybující se příšery) jede. Nicméně postupně teď budu „nahazovat“ jednotlivé kousky v místnostech a ladit jejich pozice. Tak třeba ptáci už lítají ve všech místnostech, medúza jezdí zatím jen v „The Off Licence“ a „Inside the MegaTrunk“. Zrovna zmíněná „The Off Licence“ je celkem náročná na strojový čas kvůli blikání sbíratelných objektů plus ty dvě příšery a samozřejmě WILLY. Přesto se přechod přes celou místnost na šířku téměř přesně rovná „spektráckým“ zhruba deseti vteřinám. Verze pro PMD-85 je zcela zřetelně více závislá na počtu objektů v místnosti než je tomu na Spectru. Ale je to daň za to, že se to vůbec podařilo.

    Přestože jsem data místností zkomprimoval z 256 bajtů na místnost na hodnotu 85 bajtů na místnost (mínus 10kbajtů) a všechny sprites 8×8 pixelů uložil do zápisníku vedle videoram (3kbajty) a… plno dalších věcí, začíná mi rapidně rychle ubývat RAMky s každou další animací GUARDIANS. Je možné, že budu muset omezit počet různých potvor oproti verzi na Spectru. Z hlediska funkčního kódu už chybí jen zvuková reakce na smrt a sekvence GAME OVER. Ostatní věci jsou hotové, jen jsou třeba v aktuální verzi vypnuty.

  6. Libor L.A.

    Opět nová verze. Všechny programové části jsou hotovy, s jednou jedinou výjimkou (o které tedy vím). A tou je obsluha kývajícího se lana, které se nachází v některých místnostech. Až obsluhu tohoto lana dokončím, budu pokračovat v přidávání GUARDIANs (tedy pohyblivých nepřátel) až do vyčerpání paměti.

    Hra bude opět pro všechny verze PMD-85 a proto využívá pouze 48kBajtů RAM. Protože hra nepoužívá kromě služební PPI 8255 (čtení stavu klávesnice a obsluha LED a BEEPru) žádný další periferní obvod, konverze na Consul 2717 či Maťo by měla být relativně bezproblémová.

  7. Libor L.A.

    Upload nové verze.

    Zbývá dodělat:
    – letící šipky nezpůsobují smrt WILLYho
    – implementuji rozdílnou rychlost střídání animačních fází u svislých pohyblivých potvor
    – doplnit animační fáze pohyblivých potvor podle dostupné paměti
    – začistit místnosti podle hardwarových dispozic PMD-85

    S těmi animacemi se to má následovně: Klíčové vodorovné potvory budu chtít animovat v osmipixelovém kroku, aby se to blížilo originálu. Typicky WILLY či jeho prasečí reinkarnace nebo tančící zajíc. Některé méně klíčové (pila, pták, pojízdný radar) asi převedu na šestipixelový krok, čímž ušetřím kvanta animačních dat a myslím si, že se tolik nestane. Ty svislé potvory bych tak teoreticky mohl mít všechny a to včetně střídání jejich fází (například ta mrkající medúza či žiletka se prostě animovat musí!)

    Stejně jsem udělal jednu věc, kterou jsem se zpronevěřil originálu: šipky létají po šesti pixelech, nikoliv po osmi. Je vidět, že začínám tvrdě šetřit místem. Doteď jsem preferoval maximální rychlost..

  8. Libor L.A.

    Poslední vývojové kroky dospěly k těmto úvahám (a pokusům):

    1) Ačkoliv je hra monochromatická, lze zvolit počet barev, které se pro každou místnost střídají. Pochodující životy pod hracím polem demonstrují dostupný počet barev v daném barvovém režimu. Režimy budou: monochrom (standardní UHF výstup), čtyři barvy (RGBM nebo WGRA) či osm barev (ColorAce). Ukázku ze hry v režimu ColorAce jsem hodil do článku nahoře.

    2) Hodně animací bude redukováno ale na druhou stranu tam budou přítomny všechny jako na ZXS. Pokud hra zjistí, že je spuštěna na modelu s 64kB RAM, animace budou plnohodnotné podle originálu.

  9. Libor L.A.

    Upload poslední verze. Podpora monochromatické kolorace se povedla pro všechny části hry. Všechny objekty ve hře žijí. Jsem si vědom řady funkčních chyb (hlavně lano). Nyní pracuji na expanzi pohyblivých GUARDIANS u modelů se 64kB RAM. Na modelech se 48kB RAM jsou výběr a animace GUARDIANs dosti omezeny. Ale hra pojede i na těchto modelech a myslím, že to hratelnosti zase až tak moc neubírá.

    Na modelech se 64kB RAM budou rozdíly vůči originální ZXS verzi pouze tyto: redukce barev, posun sbíratelných objektů v prostoru, aby nekolidovaly s GUARDIANS a aby jejich barevné atributy neprosakovaly do okolních objektů. Šipky se pohybují po 6 a ne po 8 pixelech. To by mělo být vše.

    1. Libor L.A.

      Tohle ještě pár týdnů potrvá, než to učešu do finální podoby. Takže to bude takový vánoční dárek.

Napsat komentář

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