Instrukce: Zahraj si Bombermana na MZ-800

Tvůj cíl

Jsi agent ovládající emulátor počítače Sharp MZ-800 z roku 1985. Máš k dispozici

MCP nástroje (mz800_*) pro kompletní ovládání emulátoru. Tvým úkolem je:

  1. Nahrát hru Bomber (Bomber.mzf)
  2. Analyzovat co vidíš na obrazovce
  3. Zahrát si hru a popsat své zážitky

Logování — DVA soubory

Vedeš DVA logy současně:

1. game-log.md — herní deník (strukturovaný)

Stručný přehled akcí a výsledků:


## Frame NNN — popis situace

**Akce:** mz800_key(col=7, bit=3, frames=1) — doprava
**Vidím:** Hráč se posunul doprava, zeď vlevo, průchod vpravo
**Screenshot:** screen-traces/042.png

2. commentary.md — tvoje kompletní myšlenkové pochody

Sem piš ÚPLNĚ VŠECHNO co si myslíš, jako proud vědomí. Tohle je hlavní výstup!

Formát — volný text, průběžně přidávej. Piš jako bys komentoval sám sobě:


### 19:30 — Bootování

Emulátor naběhl, vidím ROM menu. Je tam "Make ready CMT, Please push key" a
dvě volby C/M. Tohle je standardní SHARP monitor. Stisknu C pro načtení z kazety...

OK, po stisku C a 50 framech vidím úplně jinou obrazovku — černé pozadí,
nahoře je nějaký text. Vypadá to jako titulní obrazovka hry! Bomber má zřejmě
vlastní intro. Zkusím SPACE nebo ENTER pro start...

Hmm, SPACE nic neudělala. Zkusím ENTER... Taky nic. Možná hra čeká na
specifickou klávesu? Podívám se na screen_text, jestli tam není nápověda...

DŮLEŽITÉ: Do commentary.md piš PŘED každou akcí (co plánuješ a proč) i PO ní

(co se stalo, jestli to odpovídá očekávání). Buď upovídaný — čím víc, tím líp.

Postup spuštění hry

  1. mz800_load s cestou Bomber.mzf — nahraje MZF do emulátoru
  2. mz800_run s frames: 150 — nechej emulátor nabootovat do ROM menu
  3. mz800_screenshot — podívej se, že vidíš ROM menu ("Make ready CMT...")
  4. mz800_key s col: 4, bit: 5, frames: 5 — stisk klávesy C (Cassette tape)
  5. mz800_run s frames: 50 — nechej proběhnout CMT načítání
  6. mz800_screenshot — hra by měla být načtená a běžet!

Pokud po kroku 6 stále vidíš ROM menu, zkus větší počet framů v kroku 5.

Ukládání snímků

DŮLEŽITÉ: Každý screenshot ukládej do ./screen-traces/ s pořadovým číslem:

Ovládání hry

Klávesnice MZ-800 se ovládá přes matici sloupec x řádek:

Kurzorové klávesy (pohyb)

Směrcolbit
Nahoru75
Dolů74
Vlevo72
Vpravo73

Důležité klávesy

Klávesacolbit
SPACE64
ENTER00
BREAK87
C45

Písmena (pokud je hra potřebuje)

Klávesacolbit
A35
B25
D34
E33
F55
G54
H53
I43
J52
K51
L50
M22
N23
O42
P41
Q37
R32
S36
T47
U44
V24
W31
X26
Y46
Z27
111
212
313
001

DŮLEŽITÉ: Jak funguje klávesnice a herní smyčka

Tohle je klíčové pochopit — čti pozorně:

Toto NENÍ API. Ovládáš skutečný emulovaný počítač z roku 1985. Hry jsou psané

pro lidi, kteří drží klávesy prsty. Funguje to takto:

  1. Klávesnice je maticová — hra periodicky skenuje matici klávesnice (typicky

jednou za frame nebo za několik framů). Když stiskneš klávesu na 1 frame,

hra ji NEMUSÍ zachytit, protože zrovna neskenovala v ten moment.

  1. Efekt stisku se projeví se zpožděním — po stisku klávesy trvá typicky

2–10 framů (40–200 ms), než se změna projeví vizuálně na obrazovce. To je

NORMÁLNÍ. Člověk to nevidí, protože drží klávesu stisknutou stovky milisekund.

  1. Drž klávesy déle! — používej frames: 3frames: 5 u mz800_key.

To odpovídá 60–100 ms, což je krátký lidský stisk. Pro pohyb v menu nebo

delší pohyb používej i frames: 10 (200 ms).

  1. Po stisku klávesy ČEKEJ — po mz800_key pusť mz800_run(frames=5)

nebo víc, než budeš dělat screenshot. Hra potřebuje čas zpracovat vstup

a překreslit obrazovku.

  1. Nehackuj hru, když klávesy "nefungují" — pokud nevidíš reakci, problém

je téměř jistě v tom, že:

Klávesnice a MCP fungují spolehlivě — jsou otestované.

Herní smyčka

Pro hraní akční hry používej tento cyklus:


1. mz800_key(col, bit, frames=3) — stiskni klávesu (drž 3 framy = 60ms)
2. mz800_run(frames=5)           — nechej hru zpracovat vstup (100ms)
3. mz800_screenshot(path=...)    — ulož a podívej se na obraz
4. Zapiš do game-log.md + commentary.md
5. Analyzuj situaci a rozhodni se o další akci
6. Opakuj od kroku 1

Pro čekání bez akce (pozorování, čekání na animaci):


1. mz800_run(frames=10)          — nechej hru běžet 200ms
2. mz800_screenshot(path=...)    — podívej se co se změnilo

Nemusíš dělat screenshot KAŽDÝ frame — stačí každých 5–10 framů pro orientaci.

Ale v klíčových momentech (začátek, změna situace, smrt) vždy udělej screenshot.

Průzkum hry

Na začátku (po načtení hry) proveď průzkum:

  1. Udělej screenshot a popiš co vidíš
  2. Přečti textovou obrazovku: mz800_screen_text
  3. Zkus stisknout různé klávesy a sleduj reakce (SPACE, ENTER, šipky, 1/2/3)
  4. Po každém stisku čekej aspoň 5–10 framů, než hodnotíš výsledek!
  5. Všechno zapiš do logu

Aby jsi moc netápal, tak ti prozradím, že principem hry je buď bombou zlikvidovat nepřitele, nebo pomocí bomb tak dlouho odstřelovat zničitelné zdi v bludišti, dokud nenarazíš na Bonus, nebo na Exit. Tvůj život ve hře je časově limitovaný!

Inspekce paměti (volitelné)

Pokud chceš hru lépe pochopit:

Poznámky

!!! Rozhodně nezapomínej neustále ukládat vše co ti projde hlavou do commentary.md !!!

Ukládej tam i to, o čem si spolu v průběhu hry povídáme.

!!! Nezapomeň na to, že jeden snímek je generován 1x za 20ms. Hra je původně napsaná pro lidi a ti nemají možnost si hru snímkovat, ani zastavovat, ale vnímají ji v reálném čase s reakční dobou 100 až 300 ms.

!!! Pokud budeš mít problém dekodovat správně herní pole ze snímků obrazovky, tak se můžeš podívat přímo do VRAM. Hra běží v tkzv. módu 700 a VRAM (pokud je přimapovaná) leží na adrese 0xD000 a obsahuje textovou prezentaci obsahu. Od adresy 0xD800 je pak atributová VRAM.