Sound Hacking/Arcade Machines
Simple Hacks
Game | ROM name | System/Company | Music Trigger + Comments |
---|---|---|---|
3 on 3 Dunk Madness | 3on3dunk | Video System | maincpu.w@280000 = xx
|
Air Assault | airass | Irem (Irem M107) | maincpu.ib@00 = xx
|
Air Rescue | arescue | Sega (Sega System 32) | mainpcb:maincpu.b@700000 = xx
|
Alien³: The Gun | alien3 | Sega (Sega System 32) | mainpcb:maincpu.w@700700 = 8xxx
|
APB: All Points Bulletin | apb | Atari (Atari System 2) | maincpu.b@1680 = xx
|
Asura Blade: Sword of Dynasty | asurabld | Fuuki (Fuuki FG-3) | maincpu.w@903FE2 = xx; maincpu.w@903FE0 = 00A0
|
Asura Buster: Eternal Warriors | asurabus | Fuuki (Fuuki FG-3) | maincpu.w@903FE2 = xx; maincpu.w@903FE0 = 00A0
|
B.Rap Boys | brapboys | Kaneko | maincpu.b@102453 = xx
|
BanBam | banbam | Sun Electronics | maincpu.b@C740 = xx; maincpu.b@C741 = 06; maincpu.b@C742 = 0F
|
Pettan Pyu | pettanp | ||
Batman (USA 1.06) | btmn_106 | Data East/Pinball (Data East System 3) |
decobsmt:soundcpu.b@00BC = 00; decobsmt:soundcpu.b@00BD = 01; decobsmt:soundcpu.b@00BE = xx
|
Battle Balls | senkyu | Seibu Kaihatsu (Seibu SPI) | maincpu.b@680 = 93; maincpu.b@680 = FF; maincpu.b@680 = 80; maincpu.b@680 = xx
|
Battle Lane! Vol.5 | battlane | Technos Japan | maincpu.b@0D00 = xx
|
Battlecry | battlcry | Home Data | maincpu.b@404F = xx
|
Big Fight | bigfight | Tatsumi | maincpu.b@0B8000 = xx
|
Big Run | bigrun | Jaleco | cpu1.w@8000A = xx
|
Birdie Try | birdtry | Data East | maincpu.b@30C014 = xx
|
Black Panther | blkpnthr | Konami | maincpu.b@C0001 = xx; maincpu.w@a0000 = 800
|
Blood Warrior | bloodwar | Kaneko | maincpu.b@10688F = xx
|
Blood Bros. | bloodbro | TAD | maincpu.b@a0001 = xx; maincpu.b@a0003 = 80; maincpu.b@a000d = ff; maincpu.b@a0009 = ff
|
Blue Hawk | bluehawk | Dooyong | audiocpu.b@F040 = xx
|
Boogie Wings | boogwing | Data East | maincpu.b@24E151 = 0xXX
|
Burning Rival | brival | Sega (Sega System 32) | mainpcb:maincpu.b@208876 = xx
|
Buttobi Striker | buttobi | Konami | maincpu.b@a03d = xx; maincpu.b@a060 = 01
|
Cabal | cabal | TAD | maincpu.w@E8008 = 01FF; maincpu.w@E8002 = 8002; maincpu.w@E8000 = xx
|
Calorie kun vs Moguranian | calorie | Sega | maincpu.b@F800 = xx
|
Captain America and The Avengers | captaven | Data East | maincpu.b@1280C8 = xx
|
Caveman Ninja | cninja | Data East | maincpu.b@1BC0A8 = xx
|
Checkpoint (1.7) | ckpt_a17 | Data East/Pinball (Data East System 3) |
audiocpu.b@0067 = 00; audiocpu.b@0068 = 01; audiocpu.b@0069 = xx
|
China Town | chinatwn | Data East | maincpu.w@100000 = xx
|
Chopper I | chopper | SNK | maincpu.b@C400 = xx
|
Cosmo Gangs | cgang | Namco | audiocpu.b@B00 = xx; audiocpu.b@B01 = xx
In B00: |
Crazy Cross | crzcross | Konami (Konami GX) | maincpu.w@C004C0 = 0xxx; maincpu.d@C00018 = 00C004C2; maincpu.d@C0001C = 00C004C0
|
Crude Buster | cbuster | Data East | maincpu.w@0BC002 = xx
|
Cyber Tank | cybertnk | Coreland | maincpu.b@110001 = 0xXX
|
Dam Dam Boy | ddboy | Konami | maincpu.b@a03d = xx; maincpu.b@a060 = 01
|
Discs of Tron | dotron | Bally Midway | maincpu.b@E4F6=0x03; maincpu.w@E50C=0x0202; maincpu.b@E50E=0xXX
|
Dream Soccer '94 | dsoccr94 | Irem (Irem M107) | maincpu.ib@00 = xx
|
Dynamite Duke | dynduke | Seibu Kaihatsu | audiocpu.w@2520 = 2725; audiocpu.w@2522 = 2525; audiocpu.w@2525 = 8xxx
|
E Jong High School | ejanhs | Seibu Kaihatsu (Seibu SPI) | maincpu.b@680 = 93; maincpu.b@680 = FF; maincpu.b@680 = 80; maincpu.b@680 = xx
|
E.D.F.: Earth Defense Force | edf | Jaleco (Jaleco Mega System 1) | maincpu.w@044308 = 0xXX
|
Fail Gate | failgate | Seibu Kaihatsu | audiocpu.w@24D1 = 8xxx; audiocpu.b@24C5 = D3
|
Final Star Force | fstarfrc | Tecmo | maincpu.b@150011 = xx
|
Fishing Master | fishingm | Capcom | maincpu.b@1F2098 = 0xXX; maincpu.b@1F2090 = 0x02; maincpu.b@1F2091 = 0x00
|
Fuusen Pentai | fuusenpn | Konami | maincpu.b@810e = xx; maincpu.b@8029 = 01
|
Gamushara Battle! Puchi Monster | pmonster | Capcom (CP System) | maincpu.b@800180 = xx; maincpu.b@800189 = 00
|
Ganbare Ginkun | ginkun | Tecmo | maincpu.b@150011 = xx
|
Ganbare! Marine Kun | ganbare | Capcom (CP System) | maincpu.b@800180 = xx; maincpu.b@800189 = 00
|
Go! Go! Mile Smile | gogomile | Fuuki (Fuuki FG-2) | audiocpu.b@64BE = 0x01; audiocpu.b@64AE = 0xA0; audiocpu.b@64B6 = 0xXX
|
Golfing Greats | glfgreat | Konami | maincpu.b@1004C0 = xx; maincpu.w@10001E = 04C0; maincpu.w@10001A = 04C1
|
Gridiron Fight | gridiron | Tecmo | maincpu.b@F820 = 0xXX
|
Gunforce: Battle Fire Engulfed Terror Island | gunforce | Irem (Irem M92) | maincpu.ib@00 = xx
|
Gunforce II | gunforc2 | Irem (Irem M92) | maincpu.ib@00 = xx
|
Gyakuten!! Puzzle Bancho | pbancho | Fuuki (Fuuki FG-2) | audiocpu.b@64BE = 0x01; audiocpu.b@64AE = 0xA0; audiocpu.b@64B6 = 0xXX
|
Hangzo | hangzo | Hot-B | maincpu.w@3F3D99 = xx
|
Hook | hook | Irem (Irem M92) | maincpu.ib@00 = xx
|
Hotdog Storm | hotdogst | Marble | maincpu.w@300000 = xx
|
In The Hunt | inthunt | Irem (Irem M92) | maincpu.ib@00 = xx
|
In Your Face | inyourfa | Jaleco (Jaleco Mega System 1) | maincpu.w@084308 = xx
|
Joe & Mac Returns | joemacr | Data East | maincpu.pb@201040 = xx
|
Legend of Makai | lomakai | Jaleco (Jaleco Mega System 1) | maincpu.w@084308 = 0xXX
|
Legionnaire | legionna | TAD | maincpu.w@10800C = FFFF; maincpu.w@10800E = xx
|
Lethal Crash Race | crshrace | Video System | maincpu.b@FFF009 = 0xXX
|
Lethal Enforcers II: Gun Fighters | le2 | Konami (Konami GX) | maincpu.w@C00060 = 0xxx; maincpu.d@C0002E=00C00064; maincpu.d@C00032=00C00060
|
Lethal Thunder | lethalth | Irem (Irem M92) | maincpu.ib@00 = xx
|
Mad Motor | madmotor | Mitchell | maincpu.b@3FC005 = xx
|
Magical Pumpkin: Puroland de Daibouken | mpumpkin | Capcom (CP System) | maincpu.b@800180 = xx; maincpu.b@800189 = 00
|
Marble Madness II | marblmd2 | Atari | maincpu.w@600040 = #xx
|
Megumi Rescue | megrescu | Sega (Sega System E) | maincpu.b@F800 = xx
|
Metamorphic Force | metamrph | Konami | maincpu.w@202752 = 00xx; maincpu.d@202798 = 202754; maincpu.d@2027A0 = 202752
|
Mutant Fighter | mutantf | Data East | maincpu.w@1A0064 = xx
|
Mystic Warriors | mystwarr | Konami | maincpu.w@2004C0 = xx; maincpu.w@20001E = 04C0; maincpu.w@20001A = 04C2
|
Ninja Kazan | kazan | Jaleco (Jaleco Mega System 1) | maincpu.w@084308 = xx
|
Nitro Ball | nitrobal | Data East | maincpu.w@FF4260 = xx
|
Osman | osman | Mitchell | maincpu.b@180071 = FF; maincpu.b@180074 = xx
|
Paperboy | paperboy | Atari (Atari System 2) | maincpu.b@1680 = xx
|
Pokonyan! Balloon | pokonyan | Capcom (CP System) | maincpu.w@800180 = 0x00XX
|
Polygonet Commanders | plygonet | Konami | maincpu.w@FF9FC4 = xx00; maincpu.w@FF9FC0 = 0001; maincpu.w@FF9FC2 = 0000
|
Poly-Net Warriors | polynetw | Konami | maincpu.b@600006 = xx; maincpu.b@640000 = 00;
|
Premier Soccer | prmrsocr | Konami | maincpu.b@100B00 = xx
|
Raiden | raiden | Seibu Kaihatsu | audiocpu.w@2530 = 8xxx; audiocpu.w@2524 = 2532; audiocpu.w@2526 = 2530
|
Raiden II | raiden2 | Seibu Kaihatsu | audiocpu.w@26A3 = 8xxx; audiocpu.w@269C = A526; audiocpu.w@269E = A326
|
Raiden DX | raidendx | Seibu Kaihatsu | audiocpu.w@264B = 8xxx; audiocpu.w@2642 = 264B; audiocpu.b@2645 = 01
|
Raiden Fighters | rdft | Seibu Kaihatsu (Seibu SPI) | maincpu.b@680 = 93; maincpu.b@680 = FF; maincpu.b@680 = 80; maincpu.b@680 = xx
|
Raiden Fighters 2: Operation Hell Dive | rdft2 | Seibu Kaihatsu (Seibu SPI) | maincpu.b@680 = 93; maincpu.b@680 = FF; maincpu.b@680 = 80; maincpu.b@680 = xx
|
Raiden Fighters Jet | rfjet | Seibu Kaihatsu (Seibu SPI) | maincpu.b@680 = 93; maincpu.b@680 = FF; maincpu.b@680 = 80; maincpu.b@680 = xx
|
Raiga: Strato Fighter | stratof | Tecmo | maincpu.b@7A803 = xx
|
Riot | riot | Tecmo | maincpu.b@150011 = xx
|
RoboCop 2 | robocop2 | Data East | maincpu.w@18C064 = xx
|
Rohga: Armor Force | rohga | Data East | maincpu.b@2803A9 = xx
|
Run and Gun | rungun | Konami | maincpu.b@540000 = F8; maincpu.b@58000C = xx; maincpu.b@58000E = 00
|
Run and Gun 2 | rungun2 | Konami (Konami GX) | maincpu.d@C02932 = 0xxxFFFF; maincpu.d@C03764 = C02934; maincpu.d@C03760 = C02930
|
Rushing Heroes | rushhero | Konami (Konami GX) | maincpu.d@C10302 = 0xxxFFFF; maincpu.d@C010B4 = C10304; maincpu.d@C010B0 = C10300
|
Salamander 2 | salmndr2 | Konami (Konami GX) | maincpu.w@C00D0C = 0xxx; maincpu.w@C00D04 = 01; maincpu.w@C00D06 = 00
|
Samurai-Fighter Shingen | tshingen | Jaleco (Jaleco Mega System 1) | maincpu.w@084308 = xx
|
SD Gundam Sangokushi Rainbow Tairiku Senki | grainbow | EIM | audiocpu.w@24CF = 8xxx; audiocpu.b@24C7 = CF
|
Shadow Dancer | shdancer | Sega (Sega System 18) | maincpu.b@FE0007 = 0xXX
|
Shadow Warriors | shadoww | Tecmo | maincpu.b@7A803 = 0xXX
|
Shogun Warriors / Fujiyama Buster | shogwarr, fjbuster | Kaneko, Atop | maincpu.b@10683D = xx
|
Slap Shooter | slapshtr | Sega (Sega System E) | maincpu.b@F200 = 0xXX
|
Slime Kun | slimekun | Konami | maincpu.b@8031 = xx; maincpu.b@8040 = 01
|
Soccer Superstars | soccerss | Konami (Konami GX) | maincpu.d@C01E82 = 0xxxFFFF; maincpu.d@C0188C = C01E80; maincpu.d@C01890 = C01E80
|
Spider-Man: The Videogame | spidman | Sega (Sega System 32) | mainpcb:maincpu.b@700000 = xx
|
Super Medal Fighters | smf | Eighting, Capcom | maincpu.b@1F2098 = 0xXX; maincpu.b@1F2090 = 0x02; maincpu.b@1F2091 = 0x00
|
Super Pinball Action | spbactn | Tecmo | maincpu.b@90011 = xx
|
Taisen Tokkae-dama | tokkae | Konami (Konami GX) | maincpu.w@C08CC0 = xx01; maincpu.b@C08D89 = 01; maincpu.b@C08D88 = 00
|
Task Force Harrier | tharrier | NMK | maincpu.b@8001F = xx
|
Tecmo World Cup '90 | twcup90 | Tecmo | maincpu.b@FCC0 = 0xXX
|
Tecmo World Cup '94 | twcup94 | Tecmo | maincpu.b@2000A1 = xx
|
The Amazing Adventures of Mr. F. Lea | mrflea | Pacific Novelty | maincpu:io.b@40 = xx
|
Thunder Zone | thndzone | Data East | maincpu.w@180000 = xx
|
Tron | tron | Bally Midway | maincpu.b@C46C=0x02; maincpu.b@C482=0x02; maincpu.b@C483=0xXX
|
Tsurikko Penta | tsupenta | Konami | maincpu.b@8221 = xx; maincpu.b@822d = 01
|
Tumble Pop | tumblep | Data East | maincpu.w@100000 = xx
|
TwinBee Yahho! | tbyahhoo | Konami (Konami GX) | maincpu.w@C0F91E = 0xxx; maincpu.w@C0F914 = 02; maincpu.w@C0F916 = 00
|
USAAF Mustang | mustang | NMK | maincpu.b@8001F = xx
|
V Goal Soccer | vgoalsoc | Tecmo | maincpu.b@2000A1 = xx
|
Vendetta | vendetta | Konami | maincpu.w@2940 = xx00; maincpu.w@28D4 = 2941; maincpu.w@28D6 = 2940
|
Versus Net Soccer | vsnetscr | Konami (Konami GX) | maincpu.d@C00F02 = 0xxxFFFF; maincpu.d@C0188C = C00F00; maincpu.d@C01890 = C00F00
|
Violent Storm | viostorm | Konami | maincpu.d@200020 = 0020FA02; maincpu.d@200024 = 0020FA00; maincpu.w@20FA00 = xx00
|
Viper Phase 1 | viprp1 | Seibu Kaihatsu (Seibu SPI) | maincpu.b@680 = 93; maincpu.b@680 = FF; maincpu.b@680 = 80; maincpu.b@680 = xx
|
Wild Fang | wildfang | Tecmo | maincpu.b@7A803 = xx
|
Winning Spike | winspike | Konami (Konami GX) | maincpu.d@C00C02 = 0xxxFFFF; maincpu.d@C01060 = C00C00; maincpu.d@C01064 = C00C00
|
Witch | witch | Vic Tokai | subcpu.w@FD01 = xx
|
Wizard Fire | wizdfire | Data East | maincpu.w@FE4150 = xx
|
World Cup Volleyball '95 | wcvol95 | Data East | maincpu.b@136F10 = FF; maincpu.b@136F30 = xx
|
World PK Soccer | wpksoc | Jaleco (Irem M107) | maincpu.ib@00 = xx
|
Yam! Yam! / Wise Guy | yamyam, wiseguy | Dooyong | maincpu.b@E113 = 01; maincpu.b@E103 = xx
|
Zero Team | zeroteam | Seibu Kaihatsu | audiocpu.w@2544 = 8xxx; audiocpu.w@2540 = 2546; audiocpu.w@2542 = 2544
|
Advanced Hacks
This section contains ROM patches for playing songs/SFX, as well as hacking information like ROM/RAM offsets and sound driver RAM layouts. It involves using MAME built-in debugger to do that.
To use the debugger, just go to Command Prompt, and locate the MAME folder by using the "cd" command.
After that, type the following commands:
mame -debug thegame
"thegame" means the name of your ROM. I've just basically put that for example.
The Age of Heroes: Silkroad 2
Finding the appropriate sound code for this game is more complex than usual, due to the CPU architecture that Unico used in that game, rather than using the common 68000 one.
mame -debug aoh
As fever500 figured out the hack, here's what you gonna do: 1. Insert Coin. 2. Set a breakpoint on the command line "bp 71DBC". 3. Press the Start button, and the game will instantly pause in a second. This will indicated that the breakpoint address are working fine. 4. After that, change the register by typing on the command line "L21=XX". Where "XX" is basically the value of where the sound code was. 5. Press "F5" to resume the game. The character select music should be changed in a matter of seconds. 6. After logging the game, you need to remove the "welcome sample" in the vgm afterwards. (remove 2nd OKI altogether to achieve that using vgm_ptch "-strip" command.)
Song values:
00~18
= Music
Mitchell-based Machines
This is for games that are supported under MAME's Mitchell driver. The general way to create a makeshift sound test is with the following:
g XXX;w@e210=0000;w@e212=fc18;pc=e210;go
, where XXX
represents the end of the main loop. This will freeze the game and use the RAM to write values freely.
w@e200=XX3e;b@e202=cd;w@e203=XXXX;curpc=e200
, where XX
is the Sound ID and XXXX
is the play routine. It is important that you let the game initialize itself, so everything is working properly.
Game | End of Main Loop | Play Routine | Sound IDs + Comments |
---|---|---|---|
Mahjong Gakuen | 0x0bc |
0x03ec |
00 = stop, 20~33 = music |
Mahjong Gakuen 2 | 0x0bb |
0x03da |
00 = stop, 20~40 = musicNote: Play 3d first for correct playback
|
Poker Ladies | 0x0b7 |
0x04b5 |
00 = stop, 20~2f = music |
Capcom World | 0x08f |
0x1610 |
6f = stop, 1f~64 = music
|
Super Marukin-Ban | 0x0ba |
0x05b8 |
00 = stop, 20~3c = music
|
Block Block | 0x192 |
0x065a |
3e = stop, 20~3c = music
|
Adventure Quiz 2: Hatena? no Daibouken | 0x08f |
0x20c8 |
5f = stop, 1f~57 = music
|
Quiz Sangokushi | 0x121 |
0x0bca |
ee = stop, 20~ec = music
|
Oishii Puzzle Ha Irimasenka
w@0x203100
-> Sound ID from Sound Test Menu
b@0x20d0c8
-> Start Song = 00
/ Stop Song = ff
To loop songs in the Sound Test menu, edit the byte @ 0x54128
from ff
to 00
in the ss1u200.v10 ROM. Do note that you will have to restart the machine once the song plays since it won't stop.
Penguin Brothers
b@0x201ba5
-> Song ID from Sound Test Menu
saver bank#.bin,0,200000,:x1snd
-> To save sound banks
Song ID | Bank # |
---|---|
0, 2, 5, 7, 8, 12 | 1 |
3, 4 | 2 |
6, 9, 11, 13 | 3 |
1, 10 | 4 |
14 | 5 |
Penguin-Kun Wars
Insert a coin during the RAM/ROM check. Once you see the "Push 1P Button" on the screen, type g 38;w@c5ee=0000;w@c530=fc18;pc=c500;go
into the debugger.
This should freeze the game and let you run code inside the RAM. Since the game plays individual tracks rather than songs, you have to create a routine yourself. Fortunately, it's simple.
Depending on the number of tracks for a song, jingle, or sfx, type the following in the debugger:
Track 1: w@c500=xx3e;b@c502=cd;w@c503=0c21;
Track 2: w@c505=xx3e;b@c507=cd;w@c508=0c21;
Track 3: w@c50a=xx3e;b@c50c=cd;w@c50d=0c21;
Track 4: w@c50f=xx3e;b@c511=cd;w@c512=0c21;
0x0c21
is the Play Track Routine and it reads the value of register A and xx
is where you'll put in the track IDs to create the song. This line can be used to setup the songs, b@c501=xx;b@c506=xx;b@c50b=xx;b@c510=xx;
In order to play a different song, you have to restart the machine and repeat the process.
Valid Song IDs: 0a/0b/0c
, 0d/1d/1e
, 1c/1d/1e
, 16/17/18/19
, 25/28/29
, 2a/2b/2c
, 2d/2e/2f
, 37/38
, 40/41/42
, 4a/4b/4c/14
, 4f
, 53/54/55