Miny

Základní informace

  • datum vydání poslední verze na PMD-85: 6. 2. 2021
  • původní kód, inspirovaný hrou z platformy Windows
  • využití RAM: 0000h-3656h program, 4000h-7FFFh stínová videoram, C000h-FFFFh videoram
  • podpora modelů: všechny verze PMD-85 (1/2/2A/3)
  • podpora barevných režimů: BW, RGBM, WGRM, ColorAce
  • hudba/zvuky: nejsou
  • ovládání: myš602, alternativně klávesnice

Status

  • finální verze hry, uvolněno k použití

Ovládací klávesy

  • VLEVO = kurzorová šipka vlevo
  • VPRAVO = kurzorová šipka vpravo
  • NAHORU = HOME / LINE LEFT
  • DOLŮ = END / LINE RIGHT
  • L-tlačítko = DELETE
  • P-tlačítko = CLR
  • restart hry = K1
  • návrat do menu = STOP

Popis hry a její vlastnosti

Cílem hry není nalézt všechny miny, jak by se dalo očekávat, ale úloha zrcadlově obrácená: označit všechna pole, kde miny nejsou. Jakmile všechna pole bez min označíš, hra úspěšně končí. Pokud kdykoliv během hry odkryješ pole s minou, hra končí také – ovšem neúspěchem.

Hru lze hrát ve třech rozměrových variantách: 9×9 polí (10 rozmístěných min), 15×15 polí (34 rozmístěných min) a 21×16 polí (60 rozmístěných min).

Na začátku hry jsou všechna pole ve výchozím stavu = neoznačená. Předpokládaná místa s minami označuješ kliknutím pravým tlačítkem myši na dané pole. Tím se v poli objeví symbol „vlajka“. Opakovaným kliknutím pravým tlačítkem změníš označení na „otazník“. Třetím kliknutím na totéž pole zcela zrušíš jeho označení a toto pole se opět nachází ve výchozím stavu. Symbol „otazník“ má pouze informativní charakter a mechanismus hry jej ignoruje. Je použit pouze z důvodu kompatibility s některými verzemi této hry. Vlajkou či otazníkem označená pole můžeš libovolně označovat a rušit jejich označení – toto nemá bezprostřední vliv na vývoj hry. Pouze si tím označuješ předpokládané rozmístění min bez provedení vlastního testu.

Kliknutím levým tlačítkem myši na pole toto pole odkryješ. Je-li tam mina, hra okamžitě končí neúspěchem. Není-li tam mina, odkryje se podle vnitřních pravidel hry určitý počet polí. Odkrytá pole jsou buď prázdná (sousední pole nejsou zaminovaná) nebo zobrazují cifru, určující počet zaminovaných sousedů. Tyto cifry Ti pomáhají rozkrýt strukturu minového pole.

Kliknutím levým tlačítkem na již odkryté pole se nejprve otestuje, zda cifra na něm odpovídá počtu vlajek (předpokládaných zaminovaných polí) v bezprostředním sousedství. Pokud cifra s počtem vlajek souhlasí, odkryjí se najednou všechna zbývající sousední pole. Pokud je některé z nich zaminované, hra opět končí neúspěchem. Tato funkce výrazně zrychluje hru a je bezpečnější variantou než jednoduché kliknutí v tom smyslu, že alespoň kontroluje počet předpokládaných zaminovaných sousedů. Ovšem zcela bezpečné není ani toto hromadné odkrytí.

Spuštění hry

Hra se nahraje z MGF příkazem MGLD 12. Po natažení z MGF autostarter hru automaticky spustí.

Restart hry je možný příkazem JUMP 0000.

Na PMD 85-3 je nutno před nahráváním přejít do režimu kompatibility příkazem JUMP FFF0.

Soubory ke stažení

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

Během nahrávání z MGF

Menu hry

Hrací pole 21×16 buněk

 

 

 

 

 

96 komentářů u „Miny

  1. Libor L.A.

    Momentálně dělám spíše na infrastruktuře, ovšem i něco vizuálního už vystrkuje růžky. Hrací pole se vykresluje ve velikosti 21×16 buněk s 60 minami. Hra má ještě přednastaveny velikosti 9×9 (10 min) a 15×15 (34min). To odstupňování velikostí minového pole je voleno tak, aby složitost hry rovnoměrně vzrůstala.

    „Uvnitř“ hra umožňuje nastavit minové pole do maximální velikosti 24×16 buněk. Ovšem pak už je problém s označováním krajních buněk kurzorem myši a na reálném PMD-85 by byla problematická rovněž viditelnost krajních buněk, zejména vpravo. Ale to je dáno kvalitou nastavení obrazu na starých TV přijímačích.

    Počet vygenerovaných min na celkový počet buněk minového pole je interpolací (mírně exponenciální) křivky originální hry. Proto vychází takové nekulaté počty min. Ale chtěl jsem zachovat přibližně stejnou složitost.

    Hra po spuštění zobrazí ihned rozložení min v minovém poli a stiskem levého tlačítka myši se generuje nové minové pole. Je to spíše takové demo, jak rychle se dá minové pole vygenerovat. Protože minové pole se skládá z dlaždic (momentálně 16), není problém měnit geometrii a charakter zaplnění minového pole minami.

    Hra už má podporu všech barevných režimů, momentálně zapnuto Colorace. Ovládání bych nechal asi výhradně myší. Hrát to joystickem nebo klávesnicí by byl stejně horor.

  2. Libor L.A.

    Momentálně hra najede vizuálně skoro v hotovém stavu. Ovšem zdání klame. Po stisku L tlačítka myši se pouze odkryje vygenerované minové pole a hra jezdí ve smyčce a umožňuje pohyb myší.

    Nevšímejte si barev (ladím hranice kreslení aby neprosakovaly barvové atributy), nevšímejte si rozdílných fontů (zkouším, co bude vypadat lépe).

    Upload je tak jen pro ty, co se nudí a nemají dostatek čerstvých zpráv.

  3. Zdeněk6

    Nenudím se i přesto mi stálo za to to vyzkoušet. Ta myš klouže jak po másle! Asi se skenuje dost často, co?

    1. Libor L.A.

      Minimálně 500 testů za vteřinu to dělá, jestli se dobře pamatuji. V maximu až 1000. Ale na skutečném hardware to není takové, jaké bych si představoval. Zpočátku u hry Miny použiji stávající ovladač, ovšem potom bych zkusil vyvinout ten s dynamickou korekcí rychlosti. Alespoň si to tak nějak plánuji.

  4. Libor L.A.

    Snaha o trochu propracovanější grafiku mě zavedla směrem, nad kterým tak trochu váhám. Hra Miny vypadá jako ty klávesnice pro seniory. A na skutečném monitoru to bude rozměrově ještě větší. Tak jsem ke stažení do *.ptp souboru dal i verzi 2.0, která je rozměrově poloviční. Cena za to je taková, že zmizely veškeré stínovací detaily a mám trochu obavy, zda bude myš dosti citlivá na zaměření těch maličkých buněk. V emulátoru to je dost na hraně (možná už za hranou) a na skutečném PMD-85 to vyzkouším asi až odpoledne.

    Můžete porovnat a sdělit svůj názor. Ovlivníte tím chod dějin :)

    1. Libor L.A.

      Tak jsem zařadil malou anketu ohledně preference grafiky hry Miny, ať se číselně projeví hlas většiny.

      1. Libor L.A.

        Až teď jsem si uvědomil chybu, kterou jsem u ankety udělal. Ta „menší“ grafika byla kvůli rychlosti nakreslena v rozměru 9×9 buněk, což může svádět k domněnce, že se rozhoduji mezi formáty 21×16 a 9×9. Tak to ne, počet buněk se v obou případech bude přepínat ve třech stupních podle složitosti. Jedná se pouze o rozměr bitmapových obrázků, které zastupují jednotlivé buňky (to jsou ty obrázky prázdného pole, miny, cifry s počtem sousedů apod.

        Při té příležitosti bych uvedl pro a proti u obou variant:

        U „velké“ grafiky se snadněji zacílí jednotlivé buňky kurzorem myši. Umožňuje propracovanější grafické detaily, je čitelnější (snad až moc). Na skutečném počítači bude mít grafika celkem obludné rozměry (představte si obrazovku TV TESLA MERKUR a přes její celou plochu minové pole o rozměru „pouze“ 21×16 buněk). Tato verze neumožňuje největší standardní hrací rozměr 30×16 buněk. Ten se na obrazovku nevejde. Navíc vás s ohledem na dvakrát delší tahové trajektorie myší bude po hře bolet ruka.

        „Malá“ grafika je oproti tomu méně přehledná, s méně grafickým detaily, hůře se zaciluje kurzor myši na ty drobnější detaily. Ovšem umožňuje realizaci všech standardních map 9×9, 16×16 a 30×16. Působí kompaktněji a ne tak roztahaně. K pohybu myši stačí menší rozkmit ruky.

        1. Zdeněk

          … jednoznačně “ MALÁ grafika “ jak už jsem se vyjádřil v anonymní anketě …
          ( vzhledem k tomu, že lze mít za MÉNĚ, vlastně VÍCE a to se vždycky vyplatí … )

        2. Zdeněk

          Pokud by měla být zvolena “ VELKÁ “ grafika pak bych byl za to, aby byla použita barva dlaždic jiná než BÍLÁ.

          Odůvodnění:

          – bílá bije moc do očí
          – nevhodné pro dlouhodobé hraní

          1. Libor L.A.

            Hra bude určitě podporovat 4 základní barevná schémata (ČB, RGBM, WGRM, Colorace) a u každého barevného schéma bude volně nastavitelná barva pro každý objekt (tím myslím nejen obsah buněk ale i objekty typu „rámeček“, „pozadí“, atd.) Takže změna barvy čehokoliv je technicky možná a pokud bude zájem, tak i pravděpodobná. Do volby barev taky promlouvá fakt, že těch objektů v minovém poli je více a barev je omezené množství. Takže až začnu dělat tu část s odkrýváním obsahu minového pole, tak si ta hra možná nakonec sama ukáže, jakou distribuci barev zvolit, aby to pole bylo barevně vyvážené. Prozatím je tedy požadavek zaevidován.

            Včera jsem ještě vylepšil ovladač myši, takže nakonec hra bude mít volbu pro myš SLOW, NORMAL, FAST (všechny budou mít dynamické zrychlování a volbu LINEAR pro její zbytečnost vynechám). Volba SLOW je vhodná pro emulátor, volba NORMAL bude pro fyzické myši s DPI v rozmezí 120..150 a volba FAST bude pro fyzickou myš s DPI v rozmezí cca 30..50.

            1. Zdeněk

              …ať se práce daří, tfuj,tfuj, tfuj
              ( nejde o plivání, nýbrž o přání ZDARU ) 😉✌️

  5. Libor L.A.

    Někdy se vyplatí vrátit se ke starým věcem. Poslední verze ovladače myši je schopna vyhodnotit 10000-12000 čtení (a tím i pohybových změn) za vteřinu. Oprostil jsem se od všeho, jak to dělal ovladač verze 1. Nejde ani tak o tu rychlost, spíše je to výchozí podmínka pro implementaci dynamického řízení rychlosti pohybu myšího kurzoru. Schválně si u svého PC myší jeďte velice pomalu nahoru a pak velice rychle dolů. Překvapí vás, jak velký rozdíl v ujeté vzdálenosti to představuje. A on to člověk bere jako přirozené..

    A tak stávající ovladač vždy cca 8ms snímá pohyb myši a pak překreslí (pokud je třeba) myší kurzor. To představuje přes 100 překreslení za vteřinu, což při vizuálním testu hodnotím jako naprosto dostatečné.

    1. Zdeněk

      …. no vidíš, a Ty jsi se toho tak bál a nakonec zjistíš, že Tě to vlastně hrozně baví, že?
      DON“T WORRY, BE HAPPY

      BACK TO THE FUTURE ….

  6. Libor L.A.

    Jeden ergonomický poznatek: zhruba 256 pixelů na obrazovce odpovídá cca 5cm trase myši po stole. Ale dojem z takového ovládání není moc dobrý. Buď jsem navyklý na to dynamické zrychlování nebo je v tom ještě jiný faktor. Fakt je, že když se řekne 5cm na plnou výšku obrazovky, tak to tak špatně nevypadá. Na mém PC to ale dělá jen 2,5cm při středně rychlé jízdě a to je tam těch pixelů 4x více.

    Měřením ATARI ST myši jsem zjistil tyto parametry: průměr pogumované koule je 25,4mm, průměr hnaných válečků je 4,9mm a clonky mají 20 děr na otáčku (DEX měl pravdu). Z toho všeho mi vychází 132DPI. A v praxi to na PMD-85 sedí. Jen to není ergonomicky to pravé ořechové.

    1. Libor L.A.

      No sláva. Dynamické zrychlování pohybu myši přineslo ovoce. Ještě to učešu ale ovladač myši602 verze3.0 je technicky hotový a pokud přežije stádium praktických zkoušek, bude samostatně uvolněn v sekci „Jak na to“.

      Obrazovku teď kurzor myši „přeletí“ s ekvivalentním posunem myši na stole v délce cca 25mm. Přitom pomalým pohybem najíždí kurzor poctivě po 1 pixelu a umožňuje přesně zacílit požadovaný objekt.

      Ještě tak den, dva nechám Miny na pokoji, ať se nasbírají preferenční hlasy, jakou zvolit grafiku. Mezitím bych dočistil ten ovladač a pak bych pokračoval.

      Díky všem zúčastněným v debatě a hlavně kolegům na OldCompu.

  7. Libor L.A.

    Do hlavního článku umístěny dvě mírně odlišné varianty titulní obrazovky. Tam proběhne nějaké to základní nastavení a případný start vlastní hry.

    Prohledávání internetu ohledně autorských práv ke hře nepřineslo co jsem očekával. Idea hry je zřejmě dosti stará a v době jejího vzniku snad autorských práv ve smyslu dnešní legislativy zřejmě nepožívala. Ale nejsem právník. Co by mohlo být předmětem autorských práv ve smyslu restrikcí k určitým částem hry, to je samotný název hry, stylizace objektů v hracím poli a ten obličej ve stavové liště, který bych rád převzal. Ovšem pokud budu tuto hru vydávat za akademickou záležitost (jakože to nic jiného není), tak by to snad autorům všech iterací této hry nemuselo (a nemohlo) vadit.

    1. Zdeněk

      😉✌️😁
      …no víš jak, nikdy nevíš, koho co v dnešní době napadne za stupiditu, jen aby mohl někomu škodit …

      ( … ale dalo by se také předpokládat, že určitá autorská práva na hru “ Miny “ by mohl mít “ M$ “ )

    2. mmartinka

      PMD je něco tak minoritního, že si internetový moloch ani nevšimne této herní nostalgie. Vždyť jen na c64 nebo ZX je několik variací v podobném kabátě.

      Jinak, více se mi zamlouvá titulní menu č. 2. Libore vždy mě překvapí tvá preciznost a posunoutí vzhledu o stupínek výše…paráda a držím palce.

  8. Libor L.A.

    Upload vývojové verze s funkčním menu na titulní obrazovce.

    Nastavení myši se prozatím nepromítá do jejích pohybových vlastností a samotné klikání do minového pole ještě není implementováno. Generátor min nebude na bázi dlaždic, protože jsem si uvědomil, že to hráči poskytuje „skryté“ informace o tom, kde miny být mohou a kde ne.

      1. Libor L.A.

        Opraveno, v názvu souboru jsem změnil velké „M“ na malé a v odkazu to zůstalo při starém. Děkuji za upozornění.

        Zároveň jsem nahrál novou verzi. Změna barev v titulním menu má sice po stisku klávesy „C“ prodlevu cca 0,5 vteřiny a je to znát, na druhou stranu už ta obrazovka při přepínání barvového systému nebliká. Prostě se nejprve vše vykreslí do virtuální obrazovky a pak najednou přenese do skutečné videoram. Je to rychlejší, ovšem uživatel nevidí překreslování od začátku a tak to budí dojem, že nestiskl klávesu „C“ dostatečně. Ale myslím, že je to o zvyku. Grafický dojem je naopak o 100% lepší.

  9. Libor L.A.

    Dnes ještě jeden upload. Myslím, že pokud tam nebudou chyby, tak tato verze se mi z hlediska rychlosti odezvy na stisky kláves v MENU zamlouvá asi nejvíce. Pokud se po stisku EOL vykreslí minové pole, stiskem klávesy STOP (v emulátoru CTRL) se dostanete zpět do MENU.

    Nyní bych přešel k realizaci té části, kde se kliká myší na buňky a odkrývá se tak minové pole. Až toto pojede, předělal bych generátor min a definitivně vyladil ovladač myši s ohledem na dynamiku pohybu myšího kurzoru.

    1. RomBor

      Vyzerá to výborne.
      Ale na PMD 85-3 bude treba odpojiť ROM, pretože sa do obrazu dostávajú „artefakty“ z ROM, v Menu a aj pri pohybovaní Myšou.

      1. Libor L.A.

        Aha, díky. Prozatím to ladím na verzi 2A, ale hned dávám tuto připomínku do souboru TODO.

  10. Libor L.A.

    Místo čtvrtečního večerníku jsem do hlavního článku přidal průběžnou verzi zdrojového kódu ke hře Miny. Samozřejmě je to raná verze, je více než pravděpodobné, že se řada věcí změní.

    1. Zdeněk

      … VEČERNÍČEK je přeci především pro DĚTI 😎😉
      Pravdou ale je, že i já se na VEČERNÍČEK rád n kdy podívám, když to stojí za to …

      Navíc, kdo si hraje NEZLOBÍ 👍✌️😁

      1. Libor L.A.

        Já jsem sice myslel večerník, ne večerníček, ale to nevadí. Ovšem z původní bleskové války se mi to pod rukama mění na klasickou zákopovou, a tak s tím asi ještě pár týdnů budu pokračovat. Když už jsem s tím začal, tak ať to nějak vypadá.

        Ovšem má to i své pozitivum. Jako u každého jiného projektu, tak i zde něco nového vyzkouším a mohu to pak použít u PoP. Navíc se u PoP budu muset vrátit o kousek cesty zpět. Začal jsem tušit slepou uličku. Alespoň mám teď čas v klidu přemýšlet, jak PoP nahodit zpět na správnou kolej. A myslím, že se pomalu v myšlenkách skládá ta správná cesta.

  11. Libor L.A.

    V poslední verzi se už dá pravým tlačítkem označovat buňky v minovém poli. V podstatě by se dalo říci, že obsluha samostatného pravého tlačítka je hotova. Ale budu muset nastudovat mechanismy těch tlačítek v originálu. Už je to dvacet let, co jsem to hrával..

    Dnes tedy přibyla podpora detekce označené buňky, která samozřejmě bude sdílena i obsluhou levého tlačítka myši. Taky jsem už sestavil výslednou podobu herní smyčky, do které budu přidávat jednotlivé funkcionality hry. Prozatím vše dostupné pouze v binární podobě. Zdrojové texty uvolním, až těch změn bude více. A hlavně až ty změny budou stabilní a já ty zdrojáky dočistím z pohledu čitelnosti.

  12. Libor L.A.

    Upload nové verze hry Miny. Při označování buněk pravým tlačítkem už korektně chodí odpočet min ve stavovém řádku. Rovněž běží čas. Ovšem pokud přejedete kurzorem myši po časomíře, dojde ke grafickým defektům. Prozatím jsem nahrál verzi, která to nemá ošetřeno. To aby bylo vidět, s jakými problémy se potýkám. Řešení je ovšem jednoduché. Během kreslení časomíry se „zhasne“ kurzor myši. Tak se to dělalo v aplikacích pod DOSem a tak to funguje i tady. Ovšem uvažuji o mnohem lepším řešení. Totiž že se při kolizi kurzoru myši s časomírou vše korektně vykreslí do buferu a teprve výsledek se neblikavým způsobem přenese do fyzické videoram. Ale uvidím, jestli to nepřinese nepřiměřené komplikace. Tolik pro dnešek.

    Vlastně ne. Protože jsem zanevřel na čtení dat z 8253/8254, tak je odpočet herního času realizován pomocí UARTu 8251. Bohužel nejbližší časová konstanta 480ms generuje trochu rychlejší palubní čas. Během dvou pozemských minut uplyne ve hře Miny 125 vteřin. Napadají mě filozofické myšlenky v souvislosti s dilatací času. Znáte tu astronomickou verzi o dvojčatech Castoru a Polluxovi? …

  13. Libor L.A.

    Upload nové verze hry Miny.

    Kurzor myši by nyní měl přejíždět „přes“ ukazatel času bez nežádoucích grafických defektů. Nakonec jsem to řešil tak, že pokud by došlo ke kolizi kurzoru myši a ukazatele času, tak se nejprve časomíra s nejnutnějším okolím a ukazatelem myši předkreslí ve správném pořadí do buferu, a pak se celé to okolí časomíry zase nakopíruje zpět z buferu do videoram. Takže uživatel nevidí tu sekvenci zhasnutí kurzoru myši, vykreslení nového stavu časomíry a opětovné vykreslení kurzoru myši.

    Ošetřil jsem i klikání do prázdného prostoru a restart hry kliknutím na ikonu obličeje. Takže nyní půjdu na klikání levým tlačítkem do prostoru minového pole. Čili vlastní hra..

  14. Libor L.A.

    Kliknutím levým tlačítkem myši do volného prostoru se už nyní spustí odkrývač minového pole. A je to kupodivu celkem rychlé, rozhodně rychlejší, než jsem čekal. Grafika je provizorní a rozmístění min je konstantní, aby se mi dobře testovalo.

  15. Libor L.A.

    Poslední verzi lze už plnohodnotně hrát. Jen to minové pole je stále stejné :) Grafika buněk minového pole dozná zcela jistě dalších změn. Prozatím je to nástřel, jak by to či ono vypadalo. Taky ještě není komplet doladěný ten obličej v záhlaví, respektive jeho animační fáze. Rovněž tam jsou nedočištěné přechody při klikání pravým tlačítkem myši. A pokud vyhrajete, rekord je sice zaznamenán, ovšem prozatím vám neumožní zadat své jméno.

    A když už říkám, co tam není, tak budu pokračovat: nastavení citlivosti myši budu teprve ladit, chybí jakýsi opičí dvojhmat při otevírání buněk v minovém poli, jehož princip musím ještě nastudovat z algoritmického hlediska, dále budu psát nový generátor minového pole, dialog zadávání jména při rekordu a samozřejmě autostarter. Taky se pokusím o to, aby mina, která hráče „zabila“, byla zobrazena jinak než ty ostatní (prozatím na to infrastruktura bohužel nepamatovala). Podobných grafických hračiček tam bude více.

  16. Libor L.A.

    Upload verze s návrhem finálního barevného řešení. Možná bude nakonec jiné, ale toto je nějaký kompaktní a systémově ucelený návrh. Při závěrečném odhalení minového pole se rozlišují miny, které hráč našel, od těch, které odhadl špatně a od té, na kterou „šlápnul“.

    Nyní bych vyzkoušel, zda bude účelné a estetické animovat ten obličej ve stavové liště při klikání myší.

  17. Libor L.A.

    Dnes ještě jeden upload, tentokrát s animací obličeje ve stavové liště. Je to rychlé, je to jako originál, nechám to tam. Kromě toho pár drobných oprav bitmap a jiných věcí.

    Zbývá generátor min a doladit ten ovladač myši. Pokud tedy nebudou nalezeny systémové chyby či nějaké návrhy na změny.

  18. Libor L.A.

    Dnes upload pokročilé verze.

    Zbývá doladit myší ovladač a implementovat jednu užitečnou funkci. Když kliknu levým tlačítkem myši na již odhalenou buňku a v jejím bezprostředním okolí je správný počet vlajek (nemusí být ovšem na správných místech!), tak se odkryjí jedním jediným kliknutím všechny okolní buňky. Výrazně to zpříjemňuje hru ve smyslu eliminace otrockých tahů a klikání a přitom to neubírá na složitosti samotné hry.

  19. Libor L.A.

    Hromadné odkrývání okolních buněk funguje, zbývá doladit ovladač myši a jeho nastavování. Prozatím hra obsahuje funkční verzi ovladače myši pro emulátor.

    Až na ten finální ovladač myši je kompletní hra dostupná ke stažení.

    1. Zdeněk

      … no ty jsi si teda pospíšil, SUPER ✌️😁🇨🇿
      “ ČARODĚJ ČÁRYFUK “ 👍😎
      * kdo nevyzkouší, neví ( důkaz místo slibů )

      1. Zdeněk

        … několikrát jsem si pěkně pohrál a neshledal jsem na této hře zatím žádnou vážnější ZÁVADU 👍😎

        Upřímně říkám, povedené RETRO v novém pěkném kabátě 😉✌️

        … jen tak dál, MISTŘE 🖖

        1. Libor L.A.

          Tak nějaké mouchy to má. Generátor pseudonáhodných čísel jede sekvenčně a losuje miny, takže existuje několik ustálených obrazců. Ale už na tom pracuji. Stejně tak mám hotovo (bude součástí dalšího uploadu) kulturní řešení editoru jména hráče při dosažení rekordu. Ta stará verze editoru byla dosti „light&crazy“.

          1. Libor L.A.

            Editor jména hráče při rekordu je upraven a je součástí poslední kompilace.

            Nyní tedy předposlední úkol (poslední bude autostarter). Ovladač myši dopilovat tak, aby byl použitelný na všech odlišných platformách: emulátor, reálné železo s myší cca 130DPI a reálné železo s myší cca 40DPI. Popřípadě zvažuji možnost, že by se klávesnicí dalo skákat po buňkách jako u FunnyFruits, jakkoliv ta hra bude při ovládání klávesnicí extrémně nezáživná.

            1. Zdeněk

              „… já, já už dávno skáču …řekl Jája “ 😁

              ano, ano to by URČITĚ nebylo od věci ( myš klávesnicí – alternativa při nefunkčnosti myši ) 👍

              1. Libor L.A.

                Já musím ještě chvíli přemýšlet.. Slyšíte, jak hluboce hloubám? Takže až odpoledne.

  20. Libor L.A.

    Dnes jsem prováděl spíše čištění a optimalizaci kódu. Do hlavního článku jsem vložil aktuální verzi zdrojového kódu, jakkoliv i ten ještě dozná změn.

    1. Zdeněk

      … jasný, pořádek musí bejt 😎✌️
      nejdřív hrubá stavba a pak OPTIMALIZACE zdrojů …
      Dobrá práce, jen tak dál, hlavně výdrž 🍺

  21. Libor L.A.

    Vlastní vývoj hry ukončen. Nyní začne ladění, hledání chyb a jejich odstraňování. Dnešní test na skutečném železe PMD 85-2A neprokázal žádné vady, ovšem to je jen začátek. Pokud by si tento článek přečetl nějaký majitel „pingpongové“ myši s cca 40DPI, byl bych mu nesmírně zavázán za test citlivosti s touto myší. Jinak totiž budu muset nasimulovat takovouto myš programově. Ne že by to byl zase až tak veliký problém, ale realita je realita. Tímto pozdravuji ZX Cygnuse…

    1. Libor L.A.

      Při testování nyní průběžně odstraňuji více či méně závažné vady.

      1) Při hromadném odhalení sousedních buněk kliknutím na již odhalenou buňku se správně určeným počtem sousedních min se při smrti zvýrazní právě ta smrticí buňka s minou. Chyběla instrukce XCHG. Toto nemělo destruktivní dohru, neboť se přepsal pouze seznam neodhalených buněk v okolí.

      2) Výchozí konstantní vzory rozmístění min měním tak, aby se při generování častěji dostávaly miny k okrajům pole. Tam byla extrémně vysoká pravděpodobnost, že v okrajové linii mina nebude.

      3) Běžné délkové optimalizace kódu.

      4) Doplňování komentářů ke zdrojovému kódu za účelem jeho zveřejnění.

  22. Libor L.A.

    Dnes upload verze, kde jsem odstranil řadu drobných vad na kráse, a kterou bych tímto považoval za první pokus o vypuštění finální verze. Testy samozřejmě budou pokračovat, ale nebudu spěchat. Rovněž je v hlavním článku připojena poslední verze komentovaného zdrojového kódu včetně „projektového“ souboru pro PSPad. Hlavní soubor pro kompilaci je „miny.asm“.

    Momentálně je kvůli pohodlí zapnuta kompilační varianta Colorace/myš pro emulátor, kteréžto volby budou u finální verze vypnuty.

  23. Libor L.A.

    V rámci optimalizačních a závěrečných testovacích snah byla nalezena „kritická chyba“. Někdy se stalo, že se při rozmisťování min jedna ztratila. Ale mohlo se jich ztratit i víc. Pravděpodobnost ztráty jedné miny se při testování pohybovala kolem 5%. Spustitelná binární verze ke stažení ještě tuto chybu má.

    Tato chyba byla ve zdrojovém kódu naštěstí zřetelně vidět. Oprava tedy proběhla. Následné testy, kdy několik hodin hra generuje rozmístění min a sčítá jejich počet, ukázaly, že chyba se již neopakuje. V aktuálním zdrojovém kódu pro stažení se chyba nachází v modulu „generator.asm“ a ta hlavní příčina je na řádcích 222 a 230. Prostě se během rozmisťování min při jejich drobné fluktuaci kolem výchozích poloh a následném posunu miny mimo hrací pole neobnoví její výchozí pozice, ale kumulativně se mina posune dál. A někdy vyjela zcela mimo pole.

    Rovněž došlo k překreslení buněk hracího pole. Při testech na reálném PMD-85 se ukázalo, že se ani v nejmenším nelze spolehnout na fakt, že šedá je šedá (a tedy tmavší než bílá). V černobílém režimu se hrací pole slévalo v jedné bílé kaši a velmi špatně se při hře orientovalo. Souběžně se změnami v ČB režimu byla sjednocena grafická pravidla pro kresbu buněk i v ostatních barevných režimech.

    Momentálně probíhají automatické testy a připravuje se autostarter s titulní obrazovkou, dnes nebo zítra by se měla objevit závěrečná testovací verze, která by se do týdne mohla překlopit do karantény. Pokud se tedy nenajde další chyba.

  24. Libor L.A.

    Během ladění na skutečném PMD-85 se ještě ukázalo, že křivka dynamického zrychlování pro myš s nízkým DPI (typicky pingpongová myš s hodnotou 40DPI) se velice podobá křivce pro myš se standardním DPI (Atari/Amiga myš s přibližně 130DPI). Proto ještě proběhlo „modelování“ této křivky, jakkoliv je to okrajová záležitost.

    Dále doplněna akustická odezva (kliknutí) při stisku kláves během zadávání jména při rekordu a během ovládání kurzoru v samotné hře pomocí klávesnice.

    Protože „subdodavatel“ stále nedodal titulní obrázek, celý balík včetně autostarteru bude asi zítra. Asi budu muset dceři domluvit, že oba dva nemůžeme termíny stále odkládat. Někdo musí plnit úkoly v termínu. Jinak tam dám osmibitově-pixelovou kreaturu, kterou jsem vytvořil já, coby osoba uměním nepotřísněná.

    1. Zdeněk

      njn, koukám, že to taky nemáš lehký a vývojářský chlebíček je o dost tužší ….
      S holkama je pořád nějaká starost, ať jsou malý nebo velký … ( „… ó bóže , kam si mě to zase poslal … “ )
      Mimochodem, kdo je tady ředitel? :-)))))

    2. Zdeněk

      … musím kvitovat provedené a povedené ovládání hry přes klávesnici vzhledem k absenci podpory myši M602 v GPMDEmulátoru pro Linux. Již jsem zadal žádost o dodělání této fce.

      1. Zdeněk

        …vyskytl se problém s touto hrou v emulátoru GPMD85Emulator, popis a screenshoty v mailu…
        Snad se z toho bude dát něco poznat, proč to mrzne …

        1. Libor L.A.

          Díky za odhalení chyby. Už vím, kde se co děje, a opravu udělám hned. Jen asi upload bude až zítra.

  25. Libor L.A.

    Takže poslední kompilace obsahuje další chyby. Ale ke stažení je k dispozici pro případné testy.

    1) Tlačítko STOP nemá prioritu za situace, kdy se ztratí nebo není přítomen signál myši.
    2) Klávesy DEL/CLR (simulace tlačítek myši při klávesovém ovládání) klikají i v situacích, kdy kliknutí na buňku nevyvolá akci.
    3) Při opakovaném rychlém stisku kurzorových kláves generuje autorepeat nějaké nežádoucí impulsy. Je to sice odezva na nestandardní situaci, ale mělo by se to chovat korektně i v těchto případech.

    A možná se ještě něco najde…

    1. Zdeněk

      …no pěkně, pěkně…koukám, že jsem šlápnul rovnou do vosího hnízda :-)))
      TAK TEĎ ASPOŇ ZASE BUDEŠ MÍT CO DĚLAT, ŽE ?

  26. Libor L.A.

    Takže všechny známé chyby opraveny. Navíc jsem vylepšil chování autorepeatu klávesnice v případě, kdy uživatel opakovaně rychle mačká tutéž klávesu. Tam totiž původní ovladač klávesnice (mimochodem vyvinutý pro reinkarnaci FLAPPYho) neměl příliš ergonomickou odezvu.

    Všechny testy probíhaly na reálném PMD-85, protože ty zmíněné chyby se na emulátoru moc neprojevovaly. Jejich projevy byly totiž překryty latencemi hardware PC a operačního systému.

    Poslední verze je k dispozici ke stažení v hlavním článku.

      1. Libor L.A.

        Ale ne, i když ty další domnělé chyby už nejsou chyby, přeci jen jsem rád za upozornění na tyto situace. Hledat chyby cíleně znamená navodit všechny možné kombinace a to nedám. Ani já, ani nikdo jiný. Proto je důležité nechat tu hru projít sítem pravděpodobných kroků uživatele.

        Prozatím tedy další chyby neeviduji a zveřejněnou verzi považuji za bezchybnou. Prozatím…

  27. Libor L.A.

    Vrtal mi hlavou Zdeňkem zachycený pád systému těsně před koncem nahrávání programu z MGF. A protože je ještě čas něco měnit, tak jsem něco preventivně změnil.

    Na reálném železe se mi to stávalo taky, ale tam to bylo proto, že se v té chvíli vyhodnocuje kontrolní součet. A pokud tento nesedí, hra řízeně spadne.

    V autostarteru byly na první pohled nepřístojnosti s hloubkou zásobníku, ovšem to nebyl problém. Bylo to uděláno tak, aby při chybě kontrolního součtu systém restartoval. Přesto jsem autostarter vyčistil, zkrátil a zkulturnil, protože po několika hrách, kdy u každé se mírně mění podmínky, už mohl autostarter obsahovat zbytečnosti.

    Takže upload nového souboru s virtuální MGF páskou.

    Zdeňku, otočil jsi kolem dějin. Nebo alespoň zakopl o zmateného kapitána, který tím kolem pootočil o jednu čárku. Ale i to se cení!

    1. Zdeněk

      Stahuji poslední verzi hry MINY
      ( datum vydání poslední verze na PMD-85: 6. 10. 2020 )

      Testuji na emulátoru “ GPMD85Emulator bez podpory myši M602 ( zatím není implementováno ) “

      Tak a teď děj se co děj …

      1. Zdeněk

        Nyní vše vypadá v pořádku a již se nevyskytnul žádný další zádrhel …

        … při pátku je to dobrá zpráva a může se jen hrát a hrát
        … jupíí

  28. Libor L.A.

    Ještě mě trochu dráždí jedna „anomálie“ během zadávání jména při dosažení rekordu. Je to spíše věc estetická, nejedná se o funkční chybu, a původně to bylo uděláno záměrně. Ovšem nelíbí se mi to.

    Pokud během psaní přepíšete nějaký znak opět tím samým znakem, neozve se pípnutí. To bylo původně zamýšleno kvůli opakování znaku (a s tím spojeným pípáním) vpravo na konci editačního pole, když už není kde psát. Ale asi zkusím najít jiné řešení… A že jich je!

    A teď mě ještě napadlo (místa je dost), že rozšířím font o další znaky, aby na klávesnici bylo kromě písmen a cifer vše, co nabízí ASCII sada od znaku s kódem 32 až po kód 127. A přemapuji tyto znaky na jejich správné pozice na klávesnici. Doteď byly speciální znaky na klávesnici náhodně rozesety tam, kde to bylo výhodné pro používání klávesnice bez SHIFTu.

  29. Libor L.A.

    Upload další verze hry Miny.

    Doplněn font o všechny znaky, nacházející se na klávesnici PMD-85 a namapování těchto znaků do klávesnicového ovladače. To proto, aby se estéti mohli podepisovat v Hall of fame různými originálními jmény. Dále optimalizace délky programu. V menu se po stisku kláves ozve krátké kliknutí.

    Tyto spíše drobné změny avizují, že už není co vylepšovat, a že se blíží okamžik „saturace“. Ještě počkám pár dní, jestli se při testech něco nenajde. Pokud ne, tak bych do týdne překlopil hru do stavu „karanténa“ a po dalších zhruba dvou týdnech by šla hra definitivně ze stolu.

  30. Zdeněk

    … když časomíra dojde na HODNOTU 999 ( nelze hrát ), neměla by následovat nějaká akce?

    * automatický návrat do hlavního MENU
    * nebo ukončení nápisem GAME OVER

    1. Libor L.A.

      To je věc volby. Originál pro Win to měl myslím stejně. Myslím, že není nutné hru končit. Pouze to znamená, že už nejedeš na rekord a hru můžeš klidně dohrát. Ale sám nejlépe víš, že jsi na ten stav 999 musel dlouho čekat :) To asi běžně nenastane. Tím neříkám, že se tím nechci zabývat. Máme to zde zaevidováno, pokud budou další změny, můžeme se k tomu vrátit. Ale je vidět, že pilně testuješ. Momentálně pilněji než já píšu. Hanba mi! A poděkování Tobě.

    2. Zdeněk

      poslední verzi hry MINY
      ( datum vydání poslední verze na PMD-85: 11. 10. 2020 )

      Testuji na emulátoru “ GPMD85Emulator ( bez podpory myši )
      a při dosažení stavu 999 nelze hru už dohrát … klávesy klikají, ale žádné pole se už neodkryje …

      1. Libor L.A.

        Zrovna jsem na to taky přišel, když jsi mě nakopnul a já to šel testovat. To je fakt nějaká divná kombinace. Píšu si do ToDo a asi bude ještě jedna verze… Prozatím díky moc.

          1. Libor L.A.

            Jo díky. Ale já vím přesně, co ta hra dělá. Aby se mohlo pohybovat kurzorem i po „smrti“, tak jakmile se časomíra zastaví, nelze dále označovat buňky. Příznak „smrt“ je ztotožněn s příznakem „zastavení časomíry“. A v tom je ten problém.

            Buď ty dva stavy „smrt“ a „zastavení časomíry“ od sebe oddělím (čímž riskuji vyvolání nových problémů), nebo to nechám tak jak to je (v zásadě to není destruktivní chyba a je to odladěno) nebo udělám, co jsi navrhoval – po dosažení stavu 999 se hra skutečně ukončí, například skokem do MENU.

            Popřemýšlím. Musím domyslet důsledky těch dvou změnových variant.

            1. RomBor

              Určite by som nehlasoval za „surové“ ukončenie hry a skok do Menu po dosiahnutí 999. Buď by som nechal hráčovi možnosť hru dohrať, bez nejakej hlášky, len s odstavenou časomierou (možno s nejakým výrazným pípnutím), alebo by som vypísal hlášku s otázkou, či to chce napriek dosiahnutiu maximálneho času ešte dohrať.

              1. Libor L.A.

                Tak nějak jsem si to představoval taky, ovšem zjevně jsem v průběhu vývoje „využil“ zastavené časomíry jako příznaku ukončené hry, což je logicky neslučitelné.

                Asi napříč tomu, že bude hru třeba důkladně znovu otestovat ve všech fázích, kdy zastavuje čas a testuje jeho nulovou hodnotu, zkusím udělat to, co navrhuje Roman a co se mi nejvíce líbí. Tedy nechat hráče dohrát tu hru i s časem 999 a to s tím pípnutím v čase 999.

                Jsou to takové prkotiny, řeklo by se. Ale když si procházím starší hry, tak mě velice mrzí, že jsem řadu takových detailů nepodchytil. Ono se totiž nedá neustále vydávat nové verze těch her s nalezenými vylepšeními.

                Takže díky vám oběma za nálezy a návrhy. Ještě dnes zkusím zakomponovat.

              2. Zdeněk

                … taky by se nabízela i alternativa, VYNULOVAT časomíru jako by hra začala od ZNOVA, pak bude mít kdokoliv neomezeně času k dohrání hry … :-)

  31. Libor L.A.

    Tak přeci jen další upgrade.

    Co přinesl:
    – při dosažení času 999 se časomíra zastaví, přičemž hra pokračuje
    – zdvojnásobena rychlost blikání kurzoru při zadávání jména po dosaženém rekordu
    – blikající kurzor u editace jména nyní invertuje znak namísto jeho zhasínání

    Nahrubo jsem to otestoval, ovšem teď to bude pár dní trvat, než to projde všemi různými testy včetně skutečného hardware.

    Procedura pro nastavení času na začátku hry je nyní na adrese 0822h. Výchozí čas se dá za účelem testu vypršení času „trochu“ posunout na 999 takto:

    SUB 0822 21 37 C4 3E 09 77 23 77 23 77

    nebo na stav 888 takto:

    SUB 0822 21 37 C4 3E 08 77 23 77 23 77

    Jdu testovat…

  32. Libor L.A.

    Aktualizován zdrojový kód a náhledy obrazovky. Připojen odkaz na video s průběhem hry na YouTube.

  33. Libor L.A.

    Dnes jsem testoval Miny na skutečném PMD-85 s myší připojenou přes redukci z dílny ZXCygnuse. A syn si všiml, že myš dělá při rychlejším pohybu jakési schodovité úskoky. A mi v té chvíli došlo, že mám v ovladači myši následující chybu: dynamické zrychlování pohybu se řeší pro každou osu zvlášť. To je ta chyba. Nejprve se pomocí mé oblíbené Pythagorovy věty musí z obou složek X a Y určit celkový posun kurzoru myši a podle ujeté vzdálenost se musí obě souřadnice X i Y korigovat stejnou konstantou. Někdy opravdu není kam spěchat.

  34. Libor L.A.

    Dnes sice ještě nebude upload poslední verze, ale podařilo se vyřešit následující problémy:

    1) Po dalším marném kole snah přimět i8253 ke správnému čítání vteřin definitivně opouštím tuto variantu. Nepomáhá ani hlídání prosté změny T2 ve vteřinových intervalech a čítání času programově. Falešné zákmity z hodinového strojku, které netrápí pouze mne, budou nejspíše neodstranitelným defektem. Alespoň jsem nastavil T1 v součinnosti s UARTem i8251 na základní měřicí interval 500ms, takže alespoň na verzích PMD-85 od dvojky výše poběží palubní čas téměř přesně. Tím myslím odchylku pod 1 vteřinu na 16 minut. Ale při kumulaci herních událostí se čas samozřejmě může mírně rozjet.

    2) Ovladač skutečných myší ATARI/Amiga má nyní odezvu, která byla i nestranným testerem hodnocena jako znatelně lepší. To je ta varianta s dynamickým vyhodnocováním rychlosti pohybu myši dle pana Pythagora. Ovladač pingpongové myši bude řešen extrapolací parametrů myši ATARI/Amiga. Ovladač myši v emulátoru je poplatný vlastnostem, jakým je pohyb myši ve Win převáděn do emulátoru a tak je takový jaký je. Prozatím asi nejlepší kompromis, co se mi podařilo navrhnout.

    Takže to hodím do nějakého balíku a ještě před koncem roku bych to chtěl uvolnit.

  35. Libor L.A.

    Momentálně se mi podařilo udělat nový pohybový model myši v Excelu, kde si graficky namodeluji převodní pohybovou charakteristiku a dostanu parametry pro stávající myší ovladač v assembleru. Díky tomu jsem mohl optimálně doladit sadu pohybových koeficientů pro HW myš ATARI/Amiga a nyní jsem s výsledkem naprosto spokojen. A nutno dodat, že nejen já.

    Ono to vypadá jako celkem jednoduchý krok, ovšem při realizaci bylo třeba se obejít bez takových věcí, jako jsou dělení a násobení (jsou moc pomalé), zjistit, co je pro plynulý a ergonomický pohyb myši důležité a co ne. Jako finální se jeví asi pátá varianta dynamického zrychlovače pohybu. No a potom plno dalších drobných věcí. Ten dynamický zrychlovač pohybu je pro ergonomii celkem důležitý. Třeba takové Funny Fruits jedou i bez toho, ale s tím zrychlovačem mi to přijde o třídu lepší.

    Dnes snad ještě stihnu stejně doladit myš v emulátoru a se zxcygnusem připravujeme opakovaný test s pingpongovou myší, ať je ten ovladač jednou provždy optimálně nastaven.

  36. Libor L.A.

    Upload verze hry Miny s upravenými pohybovými konstantami ovladače myši. Prozatím bez autostarteru a úvodního obrázku. Možno testovat, jak se s myší jezdí. Hlavně s těmi skutečnými, tedy ATARI/Amiga 130DPI nebo pingpongovou myší 40DPI.

  37. Libor L.A.

    Po více jak sedmi měsících vývoje uvolňuji hru Miny k volnému použití. Jedná se o program, který možno studovat, modifikovat, prostě nakládat s ním dle libosti. Za tímto účelem je přiložen i zdrojový kód v assembleru procesoru i8080.

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

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