Sound Hacking/Game Boy
Simple Triggers
Game | Developer | Music Trigger + Comments |
---|---|---|
Action Man: Search for Base X | Natsume | maincpu.b@CF30 = 0xXX
|
Alien vs. Predator: The Last of His Clan | ASK Kodansha | maincpu.b@C786 = 0xXX
|
Aguri Suzuki no F-1 Super Driving | Pixel | maincpu.b@CFE0 = 0xXX
|
Chiki Chiki Machine Mou Race | Atlus | maincpu.b@DE80=0x01; maincpu.b@DE81=0xXX
|
Cosmo Tank | Atlus | maincpu.b@DF80=0x01; maincpu.b@DF81=0xXX
|
Croc 2 | Natsume | maincpu.b@FFA0 = 0xXX
|
Dragon Warrior I & II | TOSE | maincpu.b@C8A5 = 0xXX
|
DuckTales | Capcom | maincpu.b@FFA9 = 0xXX
|
DuckTales 2 | Make Software | maincpu.b@FF8F = 0xXX
|
Joe & Mac | Motivetime | maincpu.b@FF81 = 0xXX
|
Mighty Morphin Power Rangers | Pixel, Tom Create | maincpu.b@DE00 = 0xXX
|
Mighty Morphin Power Rangers: The Movie | Tom Create | maincpu.b@DEE0 = 0xXX
|
Power Rangers: Lightspeed Rescue | Natsume | maincpu.b@FFA0 = 0xXX
|
Power Rangers: Time Force | Natsume | maincpu.b@C130 = 0xXX
|
Tecmo Bowl | Sculptured Software | maincpu.b@DB2D = 0xXX
|
The Smurfs | Bit Managers | w@0xD95A = 0x4000+3*id
|
Twin | Athena | maincpu.b@D101 = 0xXX
|
Advanced Hacks
Baby's Day Out
Notes:
- Each ROM bank is 4000h bytes (16 KB) large.
- The game stores 3-byte pointers in various locations: 2 bytes address (into CPU space) + 1 byte ROM bank
These 3-byte pointers will be called "PtrB" below. - ROM locations below may be given in the format BB:PPPP where BB = ROM bank and PPPP = pointer into CPU space.
various ROM locations
- functions - Load Single Track: 4401 (register DE = pointer, register C = bank) Stop All Tracks: 2239 Start Title (1st boot): 0251 (set C0ED~EF = 04 40 0A, then call 2288) Start Title (return): 02D6 (set C0ED~EF = 04 40 0A, then call 22EB) Stage intro load: 2339 Stage BGM load: 08CD - other data - Level Pointer Bank: 05:4000 (ROM offset 14000) Level Header Pointers: 05:4004, 3 bytes each (2 bytes pointer, 1 byte bank) Level Header: 3 bytes: ?? (some PtrB) 3 bytes: music PtrB 6 bytes: level password Song Banks: 0A:4000 (ROM offset 28000) ~ 0D:4000 (ROM offset 34000) Song headers begin at xx:4004 with 3 bytes per header. (1 byte = ??, 2 bytes = pointer) Song offsets are BB:4004, BB:4007, BB:400A, etc. Bank 0A 2 songs Bank 0B 5 songs Bank 0C 1 song Bank 0D 1 song Example song pointers: Title 0A:4004 (bytes 04 40 0A) Stage 1 Intro 0C:4004 (bytes 04 40 0C) Stage 1 BGM 0B:4004 (bytes 04 40 0B) some song 0A:4007 (bytes 07 40 0A)
misc. info
Level load routine: 1. base pointer (e.g. 4004, points to "Level Header Pointers") into RAM CC23~CC24 2. read that PtrB (e.g. 05:4B80) -> result into RAM CC25~CC27 3. take CC25~CC27, add 3 to get music PtrB -> C0ED~C0EF 4. call subroutine 22EB: stops all music, copies C0ED~C0EF -> D729~D72B 5. start music based on PtrB in D729~D72B
Hacks
Silence title screen (1st boot): 00:025E CD 88 22 CALL 2288h ; start song via C0ED~EF -> 00:025E 00 00 00 NOP / NOP / NOP Play song on password screen: write PtrB of the song header to ROM offset 14B83~14B85 (e.g. bank 0A, ptr 4004 -> write 04 40 0A)
Note: The sound driver automatically loads the song pointed to at RAM D729~D72B when the GameBoy master volume (FF24) reaches 0.
Battle Bull
offset hex patch description 002779 3E 01 -> 3E xx ;Replace Title music
Valid Music IDs: 01~0D
Blade
offset hex patch description 02AA50 3E 0E -> 3E xx ;Replace Opening music 02B0F1 C6 01 -> C6 00 ;Freeze the Opening text scroll
Valid Music IDs: 01~10
Blades of Steel
offset hex patch description 004217 3E 00 -> 3E xx ;Play music on the copyright screen 004284 C0 -> C9 ;Stay on the copyright screen
Valid Music IDs: 13~15, 1E, 27~32
Ikari no Yousai 2
offset hex patch description 001E50 3E 08 -> 3E xx ;Replace Title music
Valid Music IDs: 00~0A
International Rally / It's a World Rally
offset hex patch description 015766 3E 36 -> 3E xx ;Replace Title music offset hex patch description 014BE6 3E 35 -> 3E xx ;Replace Title music (JP Version)
Valid Music IDs: 36~5C
(U) / 35~5C
(J)
Nemesis
offset hex patch description 0001A6 3E 00 -> 3E xx ;Play music on the Ultra Games logo screen 00051D C0 -> C9 ;Stay on the Ultra Games logo screen
Valid Music IDs: 2D~39
Raging Fighter
offset hex patch description 00528B 3E A1 -> 3E xx ;Play music on the Konami logo screen 005290 06 08 78 -> C3 90 52 ;Stay on the Konami logo screen
Valid Music IDs: 0C~18, A1, E8~F5, F7~F9, FB~FF
Samurai Shodown
offset hex patch description 000B0D 05 -> yy ;Replace Music Bank 000B0E 12 -> xx ;Replace Opening music 001C64 3C -> 00 ;Slow down the Opening text scroll
Valid Music IDs: 11, 12
(Bank 05), 11~1A
(Bank 06), 11~1C
(Bank 07)
Star Ocean: Blue Sphere
offset hex patch description 0040C3 3E 00 -> 3E xx 0040C5 EA 69 C9 -> CD 5E 30 ;Play Music on Enix logo screen 0040D2 D8 -> C9 ;Stay on the Enix logo screen
Valid Music IDs: 01~1E
Track & Field
offset hex patch description 000B59 3E 00 -> 3E xx ;Play music on the Konami logo screen 000B91 C0 -> C9 ;Stay on the Konami logo screen
Valid Music IDs: 43~4A
Wayne's World
offset hex patch description 002474 09 -> xx ;Replace Title Music 00110B 34 -> 00 ;Stay on the Copyright Screen
Valid Music IDs: 00~0F
World Bowling
offset hex patch description 00578A 3E 43 -> 3E xx ;Replace Title Music
Valid Music IDs: 41~48