antxiko/

Old 8-bit binaries taken apart byte by byte and commented, with the tools to rebuild them: nothing gets claimed that the binary does not show, and the source has to give the original back, byte for byte. Right now that means 64 MSX games.

64 games1983-1989MSX8 tapes · 56 cartridges

The patches

What comes after understanding a cartridge: changing it. Same rule as the disassemblies — the build has to prove that outside the blocks it declares, the ROM is identical to the original. What is distributed is the difference file, never a cartridge image.

The Maze of Galious — saves on the Yamanooto 1987

Konami · MSX · 128 KB cartridge · Yamanooto patch, unofficial

The game keeps your progress in a 45-letter password that you have to write down. With the patch, in the password room you pick one of three slots and the game is saved to the cartridge’s flash. On the title screen, L no longer takes you to the typing screen: you get the slot menu. What gets saved is those same 45 letters, and the game checks them with its own checksum, as if they had been typed. It also works on bladeba’s Maze of Galious Enhanced (MSX2), and both come as IPS too.

87 bytes changed in 36 stretches · 8 KB driver · 3 slots in one 64 KB sector · Enhanced: 94 bytes in 10 stretches · no ROM distributed

RepositoryWebsitetested in openMSX and on a real MSX with a Yamanooto, by pabibiris; the Enhanced, in openMSX

Metal Gear — saves on the Yamanooto 1987

Konami · MSX · 128 KB cartridge · Yamanooto patch, unofficial

Metal Gear saves to tape. The patch redirects the game’s 20 calls to the tape BIOS to a virtual tape in the cartridge’s flash: the file name, SKIP/FOUND, VERIFY and the retries are still the game’s own. It holds 3 saves.

109 bytes changed in 34 stretches · 8 KB driver · one 64 KB sector · no ROM distributed

RepositoryWebsitetested in openMSX on 2026-07-05: save at an elevator, switch off and load

Metal Gear 2: Solid Snake — saves on the Yamanooto 1990

Konami · MSX2 · 512 KB SCC cartridge · Yamanooto patch, unofficial

Metal Gear 2 saves to the Game Master 2 or to disk. The patch makes it believe the Game Master 2 is plugged in and answers its calls itself, writing the game’s three files (SNAK1, SNAK2 and SNAK3) to the cartridge’s flash. No Game Master 2, no disk drive.

39 bytes changed in 3 stretches · 8 KB driver · one 64 KB sector · no ROM distributed

RepositoryWebsitetested in openMSX

Dunk Shot — MSX2 patch 1986

HAL Laboratory · MSX2 · 32 KB cartridge · IPS patch, unofficial

Every player is four sprites and the MSX draws four per line, so the game sorts them by depth and shows the list and its reverse on alternate frames: that is the flicker. An MSX2 draws eight. This takes the game to SCREEN 4, puts the sprite colour table and the attributes in the only free 1 KB block of VRAM and always shows the sorted list. The new code lives in the filler and in three orphan routines of the cartridge, not one pattern moves, and on a first-generation MSX it plays as the original.

164 bytes changed in 24 stretches · 292-byte IPS · sprites not drawn per frame 66.7 → 1.7 · no ROM distributed

RepositoryWebsitetested in openMSX (MSX and Philips NMS 8250); not yet on real hardware

Konami’s Mahjong Dojo — English patch 1984

Konami · MSX · RC-707 · IPS patch, unofficial

The cartridge is in Japanese, and so is the screen that tells you why you won. This puts every screen you have to read into English without changing one instruction of the game — and gives it the tutorial it never had: twenty attract screens with all thirty-four tiles drawn, hooked on with a single jp. The room came from a gap the cartridge leaves inside its own tiles, and the centre of the screen writes two letters per character cell to fit.

12,103 bytes changed in 46 blocks · 0 outside them · 12,511-byte IPS · 20 tutorial screens · no ROM distributed

RepositoryWebsitework in progress: playable, but not finished

War in Middle Earth — Araubi’s patch 1989

Melbourne House / Dro Soft · MSX · tape · IPS patch, unofficial

Araubi asked for three things on the forum and six came out. The enemy was invisible because the loop that plants units on the map stops one slot before the enemy side begins; a unit’s qualities were adjectives with no numbers; and the Ring’s deadline —a countdown of months the game never shows— now sits beside the ring in the bearer’s sheet. The enemy also got the Eye of Sauron, because a free bit in the map byte was all it took to tell the two sides apart. The new code lives inside the ZX beeper engine this port brought across and never calls. And the whole map is repainted: 122 of the 128 tiles, drawn in a PNG and turned into patch entries by the tool itself.

1,396 bytes changed in 130 places · 0 outside the table · 0 shifted · 1,718-byte IPS · no tape distributed

RepositoryWebsiteplayable; Araubi finished a game with the September build, nobody has with the map repainted