Shoot the Castle Logo

This is baochan120's page. I make games and hack roms.

Tools and Scripts

Copies a file, replacing a specified percentage of bits or bytes with random data. An alternate version specifically targets MOS 6502 ROMs (2600/NES/SNES), setting bytes to NOP instructions rather than random values. Often renders ROMs completely unplayable, but by using a low percentage and choosing the "best" corruptions as a new starting point, this can produce an unlimited number of weird effects. Between 0.0001 and 0.0005 on the byte corruptor seems to be the sweet spot for NES ROMs. It's amazing how reliably these simple games remain playable even with significant errors. Requires Python 2.

ROM Hacks

I've created numerous minor rom hacks, mostly to create cheats or provide playability changes to make the games a little easier and accessible. The ones that I think would be of interest to people I've provided below.

You'll need a tool such as Lunar IPS to apply the patches, as well as the corresponding ROM image. These are typically for the US/English version of the game with standard ROM headers.

1943 - The Battle of Midway (NES) - Energy does not decrease constantly, only when you take damage

1943 - The Battle of Midway (NES) - Rapidfire - Adds moderate rapid-fire cabability to base weapon and shotgun (cheerios)

1943 - The Battle of Midway (NES) - Menu Tweaks - "Continue" selected by default instead of "New Game", use up/down in addition to Select in menus

Adventures of Batman and Robin (Genesis) - Start with 5 Lives

Bad Dudes (NES) - Swap A/B, Speedup Text - Make the controls more sensible and speed up the intro text crawl

Berzerk (Atari 2600) - Start on Game Mode 6, a more reasonable default than Game 1

Blaster Master (NES) - 5 Lives, Infinite Continues

Cabal (NES) - 5 Continues

Cabal (NES) - Infinite Continues

Code Name: Viper (NES) - Infinite Continues

Dragon Spirit (NES) - 5 Continues

Dragon Spirit (NES) - Infinite Continues

DuckTales (NES) - Easy Pogo - Don't need to press down to use pogo-cane, just B

Ecco the Dolphin (Genesis) - Invincible - You won't die when health and air run out (it's possible to get stuck)

Ecco 2 - The Tides of Time (Genesis) - Invincible - You won't die when health and air run out (it's possible to get stuck)

The Firemen (SNES) - Infinite Continues

Hudson's Adventure Island (NES) - Always Continue without having to use secret code

Knights of the Round (SNES) - Infinite Continues

Metroid (NES) - Spawn with full health and any acquired energy tanks full, instead of just 30 HP

Panic Restaurant (NES) - Burgerboss Conversion - Changes the title screen to look like the legendary arcade game, Burgerboss. I changed the villain's name to Pesto for good measure as well.

Q-Bert (Atari 2600) - Always Advanced Difficulty - Spawn red balls regardless of difficulty switches

R.C. Pro-Am (NES) - Infinite Continues

R.C. Pro-Am (NES) - Infinite Continues, Infinite Ammo

RoadBlasters (NES) - Auto Accelerate - Accelerate without having to hold Up. Can still press Down to brake.

RoadBlasters (NES) - Auto Accelerate, Up to Cruise - Same, but hold Up to maintain speed

Rolling Thunder (US/Tengen) (NES) - Infinite Continues

Rolling Thunder (Japan) (NES/FC) - Infinite Continues

Skitchin' (Genesis) - Shorten Warning Screen Timer during game intro

Smash TV (SNES) - Infinite Continues

Spider-Man and Venom - Maximum Carnage (Genesis) - Start with 3 Continues instead of just 1

Umihara Kawase/海腹川背 (Japan) (SNES/SFC) - 30 Lives instead of 10

Umihara Kawase/海腹川背 (Japan) (SNES/SFC) - Infinite Lives (Practice Mode!)

Wizards and Warriors (NES) - Gain Lots of Gems - Gain about 80 gems per gem collected

Wizards and Warriors (NES) - Moon Jump - Jump really, really high. I made these two so I could blast through that irritating first level while working on another hack.

Wizards and Warriors (NES) - High Jump - Not quite as broken

Video Pinball (Atari 2600) - Always Difficulty A, Game Mode 3 - Force the most challenging 1P game despite switches

Yars' Revenge (Atari 2600) - Force Game Mode 2 (1P Normal difficulty)

Yars' Revenge (Atari 2600) - Force Game Mode 6 Advanced (1P Ultimate difficulty)

These were all made with rasm2 from the Radare2 suite, vim, bvi, yy-chr, and scans of some old-ass assembly programming manuals. Radare2 is the bee's knees. 🐝

I've created a bunch of other patches, mostly in an effort to allow games to be played on an arcade cabinet with only 3 buttons, often by mapping several virtual joypad buttons to a single keypress on a per-game basis. It's an awfully specific use case and I don't expect them to be helpful to anybody, but I provide the full list of my rom patches here in case anyone would like to use them. It should hopefully be obvious from the .ips file name and extension what system/rom the patch applies to; generally they are for the US/English version of the game with standard headers.

Contact me at