Joust is now in the games archive. It's a native C11/SDL2 port of the 1982 Williams arcade game for Linux handhelds through PortMaster, Linux desktops, the Steam Deck and Windows. Release 0.1.0 is on GitHub.
// THE GAME
John Newcomer designed Joust for Williams Electronics in 1982. You ride a flying ostrich and joust with enemy knights on buzzards. The higher lance wins. Defeated riders leave eggs that hatch if you don't grab them, and the waves bring lava trolls, burning platforms and the pterodactyl. Two players can play at once, as a team or against each other.
// THE PORT
Instead of rewriting the game, the port runs the arcade ROM's own code on an emulated Williams board, with a 6809 main CPU and a 6808 sound CPU. The emulation is written in C and checked against MAME cycle for cycle. The test suite compares the ROM map, video and palette decoding, the blitter on every image in the ROM, the random number generator, and the board from power-on, frame by frame.
On top of that, the port adds:
GFX ........ 8 presets, from classic pixels to HD glow with CRT scanlines (F3/F4/F5)
PADS ....... two pads for simultaneous two-player games
SAVES ...... the arcade's CMOS (settings, high scores) saved to disk
TEST CARD .. ROM status, input tester and the ROM's decoded images
PACKAGES ... Linux x86_64/aarch64, PortMaster, Windows
The port started from the shared code of the Robotron: 2084 port, including its platform layer, framebuffer, blitter and enhanced graphics.
// YOUR ROM SET
No ROM data is included. You need your own MAME joust set (joust.zip). The game finds it next to the program, through --rom, or through $JOUST_ROM. Files are matched by CRC, so MAME, older MAME and FBNeo sets all work. On PortMaster, put joust.zip in the joust/ folder.
git clone https://github.com/monkeyx-net/joust.git
cd joust
cmake -S . -B build && cmake --build build -j
build/joust --windowed --rom /path/to/joust.zipSee the Joust game page for the full controls, or get the source on GitHub.