The Magician’s Curse

Základní informace

  • datum vydání poslední verze na PMD-85: 29. 3. 2019
  • portace původního kódu pro Commodore 16, Commodore Plus/4
  • využití RAM: (ve vývoji)
  • podpora modelů: všechny verze PMD-85 (1/2/2A/3)
  • barvy: monochrom (2)
  • hudba/zvuky: vestavěný akustický měnič
  • ovládání: klávesnice, volitelně joystick A nebo B

Status

  • rozpracovaná verze (under construction)

Ovládací klávesy

  • QAOPM pro ovládání postavy hráče, RCL ubírá sílu hráče (řízený konec hry)

Popis hry a její vlastnosti

(ve vývoji)

POKE

(ve vývoji)

Soubory ke stažení

The Magician’s Curse – Soubor virtuální MGF pásky pro emulátor PMD-85 od RM-TEAMu

Galerie obrázků

 

 

 

 

 

10 komentářů u „The Magician’s Curse

  1. Libor L.A.

    Úvodní testovací demo pro ověření funkčnosti a rychlosti vykreslovacích rutin. Rychlostní rezerva pro ostatní objekty je prozatím dostatečná. Ale to se uvidí po jejich kompletní implementaci. Funkčně to vyhovuje, snad jen vykreslování postavy hráče za objekty v popředí (studna, zábradlí mostů) neumí stejně kvalitní jednopixelovou mezeru po jejich obvodu, tak jak to je vidět u postavy hráče na pozadí. Ale možná se to podaří vyřešit. A i kdyby ne, je to spíše okrajový problém.

    V tomto případě je výzvou fakt, že originál běží v textovém režimu a testuje si průchod paprsku CRT obrazovky, aby kreslil zaručeně synchronně s rozkladem obrazu a nedocházelo tak k trhání animací. Jinými slovy, pro vykreslení postavy hráče na obrazovku tak stačí zapsat 12 bajtů (3×4) do videoram, i když se pravda ty „znaky“ o velikosti 4×8 pixelů průběžně redefinují. Na originále hra běží v režimu 160×200, přičemž vodorovné pixely mají dvojnásobnou šířku oproti jejich výšce. Průhlednost je dělána pomocí barvových registrů, tedy ne programově. Proto originál ani nepotřebuje kreslit postavu hráče pomocí masky, aby vytvářel jednopixelový obrys. Přece jen bílý hráč na bílém pozadí musí být nějak ohraničen, aby se neztrácel. Jedním z pilířů této hry je algoritmus, který do jednoho bajtu umí zakódovat informaci o libovolné kombinaci 6 pixelů videobajtu, kde každý pixel může nabývat možnosti: zhasnutý, rozsvícený, potlačený (pak se zobrazuje pozadí za ním). Druhým stěžejním pilířem je schopnost nadefinovat vybrané části pozadí tak, aby se při průchodu postavy hráče chovaly jako popředí (studna, zábradlí mostů).

    Hra už nyní běží v multitaskovém režimu, kdy pohyb hráče zabírá pouze 50% strojového času. Zbylých 50% bude vyhrazeno pro „přehrávání“ primitivních zvuků, něco na způsob Arkanoidu během hry.

    Vývoj pro PMD-85 začal 19. 1. 2019.

  2. Libor L.A.

    Vyřešen problém obrysu objektů v popředí. Kříže, studna, zábradlí mostu a do budoucna i voda, které jsou v popředí, budou nyní lemovány tenkou oddělovací jednopixelovou mezerou. Jejich vizuální detekovatelnost, když za nimi prochází postava hráče, se tím výrazně zvýšila.

    Doplněn modul hvězdné oblohy, i když tam ještě dojde k „roztažení“ hvězdné oblohy do stran. Originál jsem zapomněl vynásobit koeficientem 45/40, který je dán počtem znakových sloupců obrazovky, do kterých se kreslí.

    Bylo rovněž dodefinováno několik dlaždic, hlavně těch pochozích, abych mohl začít vyvíjet pohybový modul. Ten stávající umožňuje pouze prohlížení bočních sousedních místností. Nyní budu převádět a modifikovat originální pohybový modul, který umožní plnohodnotný pohyb po všech místnostech, tedy i těch „nahoře“ a „dole“ a „uvnitř“ budov. Tedy i včetně pohybu po žebříku a včetně skoků a pádů.

    Hra má už v sobě obsaženy všechny místnosti. I ty, do kterých se momentálně nelze dostat. Celkem jich hra obsahuje 48.

  3. Libor L.A.

    Dnes zprovozněna další část modulu, zodpovědného za pohyb hráče. S hráčem lze nyní chodit vlevo a vpravo, přičemž jeho výška již kopíruje terén. Pohyb není výškově tak plynulý jako u originálu. To je však dáno tím, že zatímco originál má stoupání v rámci modulu 32:64 pixelů (tedy rovnoměrně 1:2), tak na PMD-85 vychází stoupání 32:54. A číslo 54 má za prvočinitele spíše samé trojky než dvojky. Tam ten pohyb při stoupání či klesání bude vždy trhavý, s tím z principu nic udělat nepůjde. Alespoň lze nyní vidět efekt přechodu přes most, na ten jsem se nejvíce těšil. Nyní je na řadě dokončení pohybového modulu, tedy iniciace skoků, šplhání po žebříku a volný pád.

    Po započtení všech stávajících i připravovaných modulů vychází časová bilance hry následovně: v rámci jedné animační periody (20ms~1/50Hz) zabírá animace postavy hráče 8,9ms, a například animace laserových pásů v nejnáročnější místnosti vychází (prozatím) teoreticky kolem 3ms. Takže hra bude pomocí limitního časování UARTem rozdělena na dva bloky po zhruba 10ms, čímž se rychlostně vyrovnáme originálu. Zvuky však zcela jistě nepůjde řešit jako u Arkanoidu, na to nám nezbude výpočetní výkon. Ale napadlo mě řešení s využitím hardwarových frekvencí 1kHz a 4kHz. A taky by se slušelo udělat konečně další hru pro MIF-85. Ale to až nakonec, podle zbylého místa.

  4. Libor L.A.

    Podařilo se mi vyřešit problém rovnoměrného stoupání postavy hráče na šikmých rampách. Ovšem za cenu překopání celé herní grafiky. Nyní má hrací pole 288 x 144 pixelů, čímž se vracím k „originálnímu“ poměru na Commodore Plus/4. Tam bylo rozlišení herní plochy 320 x 160 pixelů. Na PMD-85 budeme mít „jen“ 90% počtu pixelů v obou osách, což zase není takový pokles, abych kvůli tomu musel překreslovat postavu hráče. Zároveň jsem kvůli odladění celkových proporcí hry na obrazovce doplnil fonty a procedury pro průběžné zobrazování stavu hry. Původní grafika šla sice do kytek, ale udělal jsem alespoň testovací polygon pro pohyb hráče o délce tří místností.

    Nyní je tedy na řadě opětovné sestavení celé sady základních sprajtů 6×8 pixelů a z nich sestávajících dlaždic o velikosti 8 x 3 sprajty. A z dlaždic pak nově sestavit jednotlivé místnosti. Místnosti ovšem nebudou jako na originálu o velikosti 5 x 5 dlaždic ale 6 x 6 dlaždic. Za tu rovnoměrnost pohybu to stojí. Zejména při skoku a následném „plachtění“ postavy hráče by ten viklavý pohyb byl krajně nevhodný.

    V připojeném souboru virtuální magnetofonové pásky je pro porovnání jak stará (ještě s originálními místnostmi), tak i nová (jen testovací polygon) verze hry.

  5. Libor L.A.

    Nová verze přinesla správu životních funkcí a obsluhu sbíratelných předmětů. Je zapracována obsluha místností, kde je bez svíčky tma. Pro ověření tohoto efektu jsem dal do výchozí místnosti svíčku, i když tam nepatří.

    Na virtuální magnetofonové pásce jsem pod číslem 19 stále ponechal původní demoverzi, která posloužila pro úvodní testy a jejíž jádro jsem kompletně předělal.

  6. Libor L.A.

    Protože se podařilo zvládnout animaci laserových stěn, dal jsem tuto vývojovou verzi k dispozici. Je tam nesmrtelnost, zobrazování čísla místnosti v levém horním rohu pro lepší orientaci a všechny „přístupové“ předměty (klíče, svíčka, MAGIC pro otevření tajného průchodu a všechny talismany) mají nastaven atribut SEBRÁNO. Takže se dá dostat všude. Statické obrázky stromů, budov atd. si nechávám na konec. Přeci jen je to otrava.

    Uvedená verze má dvě známé mouchy. Pokud sbíratelný předmět neseberu v chodu ale skočím na něj, mohou zůstat na jeho místě nějaké artefakty, které ale po průchodu postavou hráče zmizí. Tohle budu určitě řešit, ale zatím se mi do toho nechce. Druhá věc souvisí s těmi laserovými stěnami. Pokud přes ně chodím, je vše v pořádku. Pokud opět začnu skákat, mohou se ve výšce hlavy a pat postavy hráče opět projevit nějaká rušivá probliknutí, ovšem zde nic nezůstává, vše se po 1/50 vteřiny korektně odmaže. Jen kvůli rychlosti se při skoku nepřekresluje pozadí, to by vše dost zpomalilo. Pokud se tento druhý vizuální problém neprojeví časem jako významný, nechám to tak.

    1. Libor L.A.

      Já sám se těším. Ani jsem nedoufal v tak rychlý přísun nápadů. Snad se podaří efektivně udělat i ty netopýry a padající jablka.

      I když s těmi nápady.. Ty laserové stěny jsou nakonec 3x časově náročnější, než jsem předpokládal. Přeci jen je musím nakonec kreslit jak do fyzické videoram, tak i do stínové videoram, která nese pozadí. To proto, že když postava hráče právě vkročí do té laserové stěny, už musí být vzorek té stěny ve stínové videoram, aby se korektně zobrazil jako pozadí za postavou. A protože nevím, kdy tento jev nastane, musím ty laserové stěny kreslit nadvakrát při každém jejich vykreslení, jak jsem už říkal. Ale je to na hraně. V místnosti s interním číslem 2Bh (to jsou ty tři vysoké laserové stěny vedle sebe) už je rychlost dokonce mírně za hranou. Je to slyšet na generované frekvenci 50Hz, která se ozývá při kontaktu hráče s tou stěnou.

      V této místnosti taky musím vypustit netopýra, jeho obsluha je zcela mimo výkonové možnosti PMD-85. A to nemluvím o systémové kolizi dvou pohyblivých objektů, kterou v originále moc neřeší a animace netopýra je vytesána dosti hrubě. Toho netopýra se pokusím na PMD-85 udělat kulturně a bez blikání.

      Mimochodem jsem dnes nahrál poslední verzi, kde jsem opravil řadu estetických prohřešků ohledně pohybu hráče, hráč korektně reaguje na kontakt s laserovými stěnami (i když je pravda zapnuta nesmrtelnost) a laserové stěny jsou ve finální podobě ve všech místnostech. Dokonce se podařilo odstranit jemná probliknutí při skoku hráče přes zmíněné laserové stěny. Nyní už by to mělo být animačně naprosto čisté.

  7. Libor L.A.

    Upload nové vývojové verze. Doplněno:

    – finální verze laserových stěn včetně interakce s postavou hráče
    – opraveny estetické prohřešky při pohybu hráče
    – doplněny stromy
    – připojena testovací verze modulu jablek

    Bohužel ten modul s jablky asi půjde pryč. Jejich pohyb se bude muset provádět ve stínové videoram, aby při průletu v těsné blízkosti postavy hráče ta jablka neblikala. A i v té stínové videoram se bude muset schovávat původní pozadí. Takže to uvádím spíše jako slepou uličku vývoje. Na druhou stranu, pokud ten pohyb jablek bude prováděn ve stínové videoram, která nese jinak informaci o pozadí scény, tak se velice korektně dá udělat souběh s dalším pohyblivým objektem – netopýry.

  8. Libor L.A.

    Dnes dokončen modul statické grafiky. Zbývá dodělat padající jablka a netopýry. Pokud zbude rozumné množství paměti, zkusil bych podporu MIF-85 a ColorACE. I když s těmi barvami by se to mělo tak, že barevné by bylo spíše menu. Herní plocha by byla monochromatická ve stylu Lemmings a byla by buď bílá (místnosti na zemském povrchu), asi červená (podzemní místnosti s laserovými stěnami) atd. Přeci jen mě Zdeňkův DIZZY nabudil. Barvy jsou barvy. A se zvukem je to stejně. Tady mě alespoň prozatím rychlost netrápí, takže minimálně podporu MIF-85 bych si chtěl tentokrát vyzkoušet.

Napsat komentář

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