Defender is now in the games archive. It's a native C11/SDL2 port of the 1981 Williams arcade game for Linux handhelds through PortMaster, Linux desktops, the Steam Deck and Windows. Release 0.1.0 is on GitHub.
// THE GAME
Eugene Jarvis and Larry DeMar created Defender for Williams Electronics in 1981. Three years later they made Robotron: 2084. You fly over a scrolling planet, protecting humanoids from alien Landers. Any humanoid that gets carried off becomes a Mutant, and if they're all lost, the planet explodes. It was one of the first games with a world larger than the screen, shown in full on the scanner. Its controls (a joystick plus thrust, reverse, fire, smart bomb and hyperspace) are still famous for their difficulty.
// THE PORT
Like the Joust port, it runs the arcade ROM's own code on an emulated Williams board, with a 6809 main CPU with banked ROM and a 6808 sound CPU. The emulation is checked against MAME's instruction traces through a scripted minute of play. The main CPU matches cycle for cycle and the sound CPU matches instruction for instruction, with RAM and screen checked along the way. Timing fixes found while building Defender were also carried back to Joust.
GFX ........ 8 presets, from classic pixels to HD glow with CRT scanlines (F3/F4/F5)
PADS ....... every connected pad drives the one control panel, as on the cabinet
SAVES ...... the arcade's CMOS (settings, high scores) saved to disk
TEST CARD .. ROM status, input tester and the graphics presets
PACKAGES ... Linux x86_64/aarch64, PortMaster, Windows
On a pad, the five buttons map naturally: A fires, B or R1 thrusts, L1 reverses, X is the smart bomb and Y is hyperspace.
// YOUR ROM SET
No ROM data is included. You need your own MAME defender set (defender.zip, red label). The game finds it next to the program, through --rom, or through $DEFENDER_ROM. Files are matched by CRC, so MAME, older MAME and FBNeo sets all work. On PortMaster, put defender.zip in the defender/ folder.
git clone https://github.com/monkeyx-net/defender.git
cd defender
cmake -S . -B build && cmake --build build -j
build/defender --windowed --rom /path/to/defender.zipSee the Defender game page for the full controls, or get the source on GitHub.