ROBBO03 - NATIVE MICROBEE ADAPTATION
Premium 128K colour PCG / CP/M 2.2 / 3.375 MHz

INSTALL
Copy BOTH ROBBO03.COM and ROBBO03.DAT to the same CP/M drive/user area.
Run ROBBO03. The data file is 89408 bytes; it contains all 60 planets.
This is Z80 machine code, compiled from C with assembly input and sound.
It does not emulate the DOS executable. A BDOS address of C000h or above
is required. Quit with Q for CP/M warm boot / games-menu return.

CONTROLS
Premium arrow keys: move Robbo; held directions repeat until released.
Space + a direction: shoot in that direction, using one ammo unit.
Space alone does not shoot. Fire + joystick direction works the same way.
J toggles the standard Microbee PIO joystick. Return the stick to neutral
and release fire after enabling it. Arrow keys remain available.
R: restart the current planet, costing one life. Release movement/fire
before pressing R. P: pause/resume. M: sound on/off. Q: quit.
On the title, tap Up/Down to select a starting planet, then Space/fire.
Game Over and completion screens wait for a fresh Space/fire press.

PLAY
Collect all the bolts to open the exit capsule, then enter it. Some
planets start with no visible bolts; their surprises may contain more.
Ammo batteries supply nine shots, capped at 99. Keys open doors and are
consumed; up to four can be carried. Boxes, bombs, surprise objects and
closed capsules can be pushed when the cell behind is empty.
Arrow-marked sliding blocks continue travelling after they are pushed.
Shooting a bomb starts a chain explosion. Explosions can kill Robbo.
Enemies are dangerous in adjacent cells, not just when occupying Robbo's
cell. Guards follow walls; bats patrol; eyes pursue. Guns, rotating guns,
lasers and blasters use their original object interaction rules.
Matching teleport numbers link pads. Magnets pull Robbo along an open
horizontal corridor. Extra-life pickups are not reissued by restarting
the same planet after collecting one.

DISPLAY AND SPEED
Original DOS-derived sprite patterns are precomputed as colour PCG tiles.
The 16-column playfield uses 32x16 screen tiles to fill the Microbee width.
Only ten of the 31 map rows are visible, retaining the original limited
view. Scrolling advances in three-row steps with a two-row margin.
Only changed tiles are published between scrolling steps. No runtime
sprite bitmap synthesis or upload takes place during gameplay.
Logic is paced at two 50 Hz video ticks, up to 25 updates/sec.
Actual speed depends on logic/rendering cost. No catch-up burst occurs.
Static terrain bypasses object logic and unchanged static tiles bypass
frame lookup. Animation frames and object processing order are retained.
HUD updates only changed numbers instead of repainting every status row.
Video clock is sampled per map row rather than for every map cell.

WHAT IS INCLUDED / WHAT DIFFERS
All 60 DOS-edition level layouts and all 33 object categories are included.
The mechanics follow the original programmer's published Playdate source
reconstruction, translated into native C for Z80. See the references below.
This Microbee adaptation is not claimed to be cycle- or RNG-identical
to the DOS executable. The random generator differs. Idle vocal/humming
animations are simplified. The view scrolls in tile steps, not the DOS
pixel pan. Colours and aspect correction are adapted to PCG hardware.
The Microbee build starts with five lives (rather than four), permits
starting on any planet from the title, and uses short native sound effects.
Original sampled voices, music, title-credit animation, passwords, disk
progress saving and DOS configuration options are not reproduced.
Ammo/keys reset at each new/retried planet, as in the reference engine.

VALIDATION
Host checks load all 60 levels and validate their object/frame indices;
run up to 80 idle updates per level; check movement release, shooting,
bolt/exit rules, ammo, keys/doors, pushing, bombs, enemy contact, teleport,
magnets, extra lives, restart, staged creation, barriers and guard movement.
Native Z80 execution tests cover actual COM startup, PCG publication,
CP/M data-file reads, level reload/advance, keyboard/joystick, firing,
Game Over, completion, Q warm boot and resident-memory preservation.
No real Microbee hardware testing has been performed here. Please test
this faster build on your Premium 128K / uBee512 setup.

SOURCE / REBUILD
Install z88dk 2.4, Python 3 and Pillow. Set Z88DK to its install directory
and run python3 build.py. The default path is this development machine's.
python3 assets.py rebuilds the PCG atlas and ROBBO03.DAT from reference data.
Game logic is in logic.inc; video, flow and loading are in game.c.
keyboard.asm, pace.asm and sound.asm implement hardware services.
Host tests: cc -O2 test_game.c -o test_game && ./test_game
Run host tests from the source directory so ROBBO03.DAT is found.
Native tests require the Python z80 package; adapt its import path as needed.

ATTRIBUTION AND LICENSES
Robbo was designed by Janusz Pelc. The DOS edition was programmed by
Maciej Miasik and Janusz Pelc, developed by xLand and published by Epic.
The supplied DOS archive contains the 2006 CC BY-SA 2.5 release README,
retained as reference/DOS_README.txt. It contains compiled DOS files, not
source. This build uses decoded assets and mechanics reference from:
https://github.com/tosiabunio/robbo-playdate
That project is published by original DOS programmer Maciej Miasik, and
credits Claude Code working under his supervision for the Playdate port.
Its Lua code is MIT licensed (copyright 2026 Maciej Miasik). That license
and attribution apply to the translated/adapted engine in this package.
See reference/UPSTREAM_LICENSE.txt and LICENSE_CODE.txt.
The decoded level data and converted graphics, including the Microbee
adaptations of them, are CC BY-SA 4.0:
https://creativecommons.org/licenses/by-sa/4.0/
Attribution: Janusz Pelc, Maciej Miasik, xLand / original DOS edition;
Playdate asset conversion by Maciej Miasik's robbo-playdate project;
Microbee conversion/adaptation made for this package.

ROBBO03 retains the original graphics and all 60 level layouts.
