Files

7.4 KiB

Robotron 2084 setup and fidelity notes

Robotron is installed in the project and registered in the Games database. Open Robotron.tscn and run the current scene to play. The game uses the framework's ArcadeGame start, win, loss, and reset signals. Existing cabinet assignments remain unchanged.

Controls

  • Enter, arcade_start, or gamepad Start begins a fresh game, including during a demonstration.
  • WASD moves; arrow keys fire independently in eight directions. Diagonal speed is normalized.
  • On a gamepad, the left stick moves and the right stick fires. Releasing the firing stick stops shooting.
  • The cabinet requires dual_joystick_8way and start_button capabilities. Add these to a cabinet profile only when that cabinet provides the matching controls.

The game installs default input actions at runtime only when they do not already exist. For a cabinet encoder, define robotron_move_left/right/up/down and robotron_fire_left/right/up/down in Project Settings, Input Map, with the desired bindings. Existing definitions take precedence. These use their own names so Robotron's arrow-key firing does not change the other games' movement actions. Physical cabinet/gamepad testing remains necessary.

Scene settings

Select the Robotron root to change Waves To Win (default 1; set 0 for endless), Starting Lives (3), Difficulty (1), Extra Life Interval (25000; 0 disables), Sound Enabled, CRT Aspect, and Reduced Flashes. Save the scene before running through a cabinet. Settings are scene exports, not run_config overrides.

Waves To Win defaults to one for escape-room completion. Set it to 0 to keep playing through brain waves starting at 5 and tank waves starting at 7. Completing the configured wave emits game_won and holds the victory screen. Losing all lives emits game_lost, then returns to the idle sequence. Reset preserves only the session high score.

Included gameplay

Independent eight-way movement and rapid directional fire, four simultaneous player shots, human rescue chains worth 1000 through 5000, repeat extra-life thresholds, electrodes, and increasingly crowded waves are implemented. Shooting does not hurt humans. Player respawn preserves surviving entities and grants a short protective interval.

Grunts chase the player and can destroy themselves on electrodes. Hulks survive shots, can be pushed back, and kill humans. Spheroids spawn enforcers; enforcers roam and fire. Quarks spawn tanks whose shells bounce off the arena boundaries. Brains take three hits, seek humans, convert them into hostile Progs, and launch homing cruise missiles. Enemy projectiles can be shot. Remaining hulks, electrodes, and humans do not prevent a wave from ending.

The idle loop has an animated title, instruction screen, enemy roster, silent gameplay demonstration, and session high-score screen. Demonstration scores cannot change the real high score, and the demo never emits room start/win/loss events. Start interrupts any idle phase and initializes a fresh run.

Art and display

All four supplied PNGs are included unchanged. Runtime sprite crops preserve existing transparency and opaque white details. The title uses the supplied logo/credit artwork, with extracted Williams emblems moving around its perimeter and a cycling logo palette. The screenshot's fixed credit count is replaced with FREE PLAY. HUD and instruction lettering use an approximate pixel font because no complete font sheet was supplied.

The logical viewport is 292 by 240 with nearest-neighbor presentation and black margins. CRT Aspect presents it at 4:3; disable it for square source pixels. The renderer also provides an editor preview. Reduced Flashes stops the title movement/palette cycling and uses a steady accent color. Transition geometry still animates.

Sound mapping

All 23 supplied WAVs are copied unchanged and loaded by the audio controller. Startup plays once when the runtime scene opens; game-start plays for a new run. Player-lazer accompanies firing, grunt-walk follows active grunts, and the human-save/human-die clips accompany rescue or loss. Robot-explode is the generic enemy destruction sound, with dedicated electrode, tank, brain, and spheroid destruction clips. Spheroid-spawn and quark-spawn accompany spawning. Enforcer-fire and tank-fire accompany projectiles, with tank-projectile-bounce on reflection. Human-to-prog and prog-transformation mark the two conversion stages. Player-death, extra-life, level-transition, and brain-wave-start follow their corresponding events. High-score-top plays when a completed losing run meets the session high score.

Sound effects are muted during demo play. A single audio channel plays effects: each accepted new sound stops the previous sound before starting, preventing overlapping echoes. Repeated effects remain rate limited to avoid rapid retriggering in crowded waves. Audio timing approximates the original sound hardware.

Fidelity boundaries

This is a playable recreation, not ROM emulation. Wave populations and placements, spawn quotas, shot limits, movement speeds, collision radii, projectile paths, respawn protection, and timing are approximations that still need side-by-side tuning. In particular, the original Brain target-human bug and exact Enforcer firing behavior are not reproduced. Sprite variants are drawn from the supplied sheets but not every original palette/animation state is implemented. The story, roster, transition effects, and demo are recreations rather than exact playback of the original sequences. Play is one-player free play; coin accounting, alternating two-player games, initials entry, and persistent high scores are not implemented.

Visual reference: supplied arcade footage. The native display dimensions and 4:3 presentation are corroborated by the FinalBurn Neo machine definition. Original manual references are catalogued in the Robotron document archive.

Validation

Automated checks pass for start guards, independent input actions, diagonal movement, firing release, rescue chains, extra-life thresholds, hulk knockback, human bullet immunity, electrode destruction, hulk kills, brain conversion, three-hit brains, spawners, shell bounces, brain/tank waves, wave completion, endless progression, room events, reset, and demo isolation. Tests ran in Godot 4.6.1 Compatibility; the project remains configured for 4.7. Title, roster, and gameplay captures were visually inspected. A desktop dense-wave render check reached 120 entities without a game-script failure; Raspberry Pi performance is unverified. Sandbox certificate-store and shader-cache warnings occurred, and desktop test shutdown reported a retained resource.

Run tests/robotron/check_robotron.gd with Godot --headless --path . --script. The same directory includes render_preview.gd and benchmark.gd.

Play checklist:

  • Move diagonally while firing in another direction, then release the firing control.
  • Rescue several humans and check increasing awards; lose a life and verify the chain resets.
  • Shoot a hulk and an electrode; confirm the hulk survives and the electrode disappears.
  • In endless mode, check brain conversion on wave 5 and tank shells on wave 7.
  • Start during the demo; confirm clean score/lives and no demo-triggered room events.
  • Verify cabinet input, sound levels, room completion, reset, and display scaling on the target machine.