Akce: mz800_load("Bomber.mzf") + mz800_run(frames=150)
Vidím: ROM menu "Make ready CMT, Please push key" — C/M volby
Screenshot: screen-traces/001.png
Akce: mz800_key(col=4, bit=5, frames=5) + mz800_run(frames=50)
Vidím: Titulka BOMBER MAN — legenda prvků, ovládání, "PUSH SPACE TO START GAME", Hudson Soft 1983
Screenshot: screen-traces/002.png
Akce: mz800_key(SPACE, frames=5) + mz800_run(frames=30)
Vidím: Bludiště s červenými zdmi, zelený hráč uprostřed-vpravo nahoře. SCORE:000000 BONUS:01000 *3 bomba:1 STG:01
Screenshot: screen-traces/003.png
Akce: mz800_key(DOWN, frames=3) + mz800_run(5)
Vidím: Hráč se posunul o jedno pole dolů. Vpravo nahoře se objevil nepřítel (tyrkysový).
Screenshot: screen-traces/004.png
Akce: Několik pokusů doleva, nahoru, doprava (frames=3–10)
Vidím: Hráč se nehýbe — uzavřen v úzkém vertikálním koridoru. BONUS klesá na 00990.
Screenshoty: 005–011.png
Akce: mz800_key(UP, frames=15) opakovaně
Vidím: Hráč se posunul nahoru na řádek 7-8, pak 5-6. Nepřítel (žlutý→cyan) se přiblížil!
Screenshoty: 012–015.png
Akce: mz800_key(LEFT, frames=15) opakovaně
Vidím: Hráč se pohybuje doleva, nepřítel (cyan) ho pronásleduje zprava
Screenshot: 016–019.png
Akce: mz800_key(DOWN, frames=15), mz800_key(SPACE, frames=5), mz800_key(DOWN, frames=15)
Vidím: Fialový blok (bomba?) nad hráčem, hráč utíká dolů. BONUS: 00960
Screenshoty: 020–022.png
Akce: mz800_run(30–50 framů)
Vidím: Modrý blok u hráče, fialový objekt nahoře. Bomba zatím nevybuchla? BONUS: 00950
Screenshoty: 023–025.png
Akce: opakované DOWN a LEFT (frames=15)
Vidím: Hráč se pohybuje, vlevo zdi. BONUS: 00940→00930
Screenshoty: 027–030.png
Akce: SPACE (frames=5), pak RIGHT (frames=15) — útěk
Vidím: Žlutý blok = bomba vedle hráče. Hráč utíká doprava. BONUS: 00920
Screenshoty: 031–033.png
Akce: mz800_run (čekání na explozi)
Vidím: Bomba explodovala, zničila mnoho zdí. ALE hráč ztratil život! 3→2. BONUS resetován na 00990.
Screenshot: 035.png
Akce: SPACE (bomba), LEFT (frames=40, útěk), čekání
Vidím: Bomba exploduje doprava (frame 1394), ničí zdi. Přežil jsem! Nový prostor otevřen.
Screenshoty: 045–047.png
Akce: Pohyb doprava, nahoru, dolů — hledání cesty
Vidím: Nepřítel (žlutý) se blíží. Hráč obklopen zdmi, omezený pohyb.
Screenshoty: 048–053.png
Akce: Pohyb dolů a doprava
Vidím: Nepřítel chytil hráče! 2→1. BONUS resetován na 01000. Mapa se změnila.
Screenshot: 055.png
Akce: Opakované pohyby UP/DOWN/LEFT/RIGHT + VRAM inspekce
Vidím: Hráč uvězněn v pravé části mapy (col 29-32), obklopen zničitelnými zdmi. Nepřítel se blíží zleva.
Screenshoty: 056–066.png
Akce: SPACE (bomba) + útěk doprava (frames=30), čekání na explozi
Vidím: Bomba explodovala a otevřela cestu doleva. Hráč přežil.
Screenshoty: 067–068.png
Akce: LEFT opakovaně, pak SPACE (bomba) + útěk dolů (frames=40)
Vidím: Hráč se dostal doleva do otevřeného prostoru. Položil 4. bombu a utekl dolů.
Screenshoty: 069–074.png
Akce: mz800_run(frames=100) — čekání na explozi bomby
Vidím: Titulní obrazovka! Hráč zemřel (poslední život ztracen). SCORE: 000000. Konec hry.
Screenshot: 075.png
Metoda: Reverse-engineering rutiny smrti na adrese 0x1325
LD A,($26D0); DEC A; OR A; LD ($26D0),A; JR Z,gameOverDEC A (0x3D) na adrese 4904 nahrazeno NOP (0x00) — životy se nikdy nesnížíAkce: mz800_key(SPACE) + mz800_run(30)
Vidím: Nové bludiště, zelený hráč vpravo nahoře. SCORE:000000 BONUS:01000 *9 bomba:1 STG:01
Screenshot: screen-traces/076.png
Akce: Pohyb DOWN 3×, LEFT 4×, SPACE (bomba), DOWN (útěk)
Vidím: Bomba explodovala, zničila zdi. Nepřítel v rohu nahoře.
Screenshoty: 077–082.png
Akce: Opakované bombardování zdí, pohyb doleva
Vidím: 2× smrt (BONUS reset, nová mapa), ale *9 zůstává. Nesmrtelnost ověřena.
Screenshoty: 083–089.png
Akce: Pohyb po mapě, další smrt
Vidím: Další restart, BONUS 01000, *9. Mapa se mění při každém restartu.
Screenshoty: 090–092.png
Akce: Reverse-engineering exit detekce v kódu hry
Zjištěno:
Akce: mz800_poke($26D1, 2) — přímá změna stage counteru
Vidím: STG:02! Nová mapa, hráč uprostřed, nepřítel vpravo dole. 2 bomby!
Screenshot: screen-traces/100.png
Akce: Pohyb + 2 bomby simultánně, průzkum mapy
Vidím: 2 bomby! Víc prostoru, ale nepřítel agresivní. Několik smrtí (hack drží *9).
Screenshoty: 101–105.png
Akce: mz800_poke($26D1, 5)
Vidím: STG:05! SCORE:000120 (první body!), 4 bomby, 2-3 nepřátelé (cyan), otevřenější mapa
Screenshot: screen-traces/106.png
Akce: 3 bomby najednou + pohyb, další bomby
Vidím: Masivní exploze, mapa se otevírá. Přečtena EXIT pozice: col=29, row=3
Screenshoty: 107–108.png
Akce: Opakovaný pohyb nahoru (z row 15 na row 13), bomba u zdi
Vidím: Hráč postupuje nahoru směrem k EXITu. Zasekl se na row 13 (zeď).
Akce: DOWN (frames=40) — útěk od bomby
Výsledek: Emulátor se resetoval (frame 40, PC=0xF199=ROM). MCP server odpojen.
| Adresa | Patch | Efekt |
|---|---|---|
| 4904 (0x1328) | DEC A → NOP | Nesmrtelnost |
| 9937 ($26D1) | poke 2/5 | Stage skip |
| 9936 ($26D0) | poke 9 | 9 životů |
| Adresa | Název | Init |
|---|---|---|
| $26CA | Score (16-bit) | 0 |
| $26CE | BONUS (16-bit) | 1000 |
| $26D0 | Životy | 3 |
| $26D1 | Stage/Bomby | 1 |
| $21E2/$21E3 | EXIT pozice (col/row) | random |
| $26C6/$26C7 | Hráč pozice (col/row) | - |
| $26D7 | EXIT nalezen flag | 0 |
| $26D9 | Level kompletní flag | 0 |
| $1F84 | Smrt flag | 0 |