Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / XML

M1.NET - Decrypt Arcade Audio

5.00/5 (15 votes)
6 Feb 2023CPOL17 min read 51.1K   1.3K  
Software named M1.NET which shows the details of decrypting arcade game audio
In this article, I explain how M1.NET works and which arcade system boards (M72, M92, Taito, Taito B, Capcom, CPS-1, CPS-1(Qsound), CPS2, Data East, Tehkan, Neo Geo, Namco System 1), and how to make the ROMs for both boards.

Introduction

Arcade is popular in the 1990s. There are many classic arcade games released on famous system boards. For example: Street Fighter II': Champion Edition on CPS-1 board, Cadillacs and Dinosaurs on Capcom CPS-1 (Qsound) board, The King of Fighters series on Neo Geo board, Tank Force on Namco System 1 board... There are some emulators to emulate it: MAME, WinKawaks, Nebula, FBA...

The sound of arcade is amazing too. I have found the only software named M1 to reproduce the music of arcade games. M1 lets you enjoy music from over 1900 arcade games. But M1 is not an open source software.

MAME is strictly a non-profit project. Its main purpose is to be a reference to the inner workings of the emulated arcade machines. You can do anything about arcade games with MAME source code. To show the details of decrypting arcade game audio, I programmed this software named M1.NET .

How It Works?

M1.NET supports the following arcade system boards: M72, M92, Taito, Taibo B, Capcom, CPS-1, CPS-1(Qsound), CPS2, Data East, Tehkan, Konami 68000, Neo Geo, Namco System 1.

There are 2 CPUs working in Irem M72 board: a NEC V30 CPU and a Zilog Z80 CPU. There are 20-bits address and 16-bits data in V30. There are 16-bits address and 8-bits data in Z80. The V30 CPU runs at 8MHz. The program loads the file "maincpu.rom" as V30 ROM. The Z80 CPU runs at 3579545 Hz. The program loads the file "soundcpu.rom" as Z80 ROM. There are two sound chips: Yamaha YM2151, DAC chip.

There are 2 CPUs working in Irem M92 board: a NEC V33 CPU and a NEC V30 CPU. There are 20-bits address and 16-bits data in both CPUs. The V30 CPU runs at 7159090 Hz. The program loads the file "soundcpu.rom" as V30 ROM. There are two sound chips: Yamaha YM2151, Irem GA20.

For Taito board, there are various CPU and chip settings. There are relevant sound chips: General Instrument AY8910, Yamaha YM2203, Yamaha YM3526.

For Taito B board, the Z80 CPU runs at 4MHz, and there are two sound chips: General Instrument AY8910, Yamaha YM2610. The program loads the file "audiocpu.rom" as the Z80 ROM, the file "ymsnd.rom" and the optional file "ymsnddeltat.rom" as the Yamaha YM2610 ROM.

For Capcom board, there are various CPU and chip settings.

For CPS-1, the Z80 CPU runs at 3579545 Hz, and there are two sound chips: Yamaha YM2151, Oki OKI6295. The program loads the file "audiocpu.rom" as the Z80 ROM, file "oki.rom" as the OKI6295 ROM. Then the Z80 CPU runs.

For CPS-1(Qsound) and CPS2, the Z80 CPU runs at 8000000 Hz, and there is a Q-Sound chip. CPS-1(Qsound) encrypted the Z80 the code with Kabuki. The program loads the file "audiocpu.rom" as the Z80 ROM for ReadMemory only, file "audiocpuop.rom" as the Z80 ROM for ReadOp only. CPS2 loads the file "audiocpu.rom" as the Z80 ROM. CPS-1(Qsound) and CPS2 load the file "qsound.rom" as the Q-Sound chip ROM.

For Data East board, the M6502 CPU runs at 1500000Hz, and there are four sound chips: General Instrument AY8910, Yamaha YM2203, Yamaha YM3812, Oki MSM5205.

For Tehkan board, the Z80 CPU runs at 3072000Hz, and there are 3 General Instrument AY8910 sound chips.

For Konami 68000 board, there are various CPU and chip settings. There are relevant sound chips: Yamaha YM2151, Konami K007232, Konami K053260, Konami K054539, NEC UPD7759.

FOR Neo Geo, the Z80 CPU runs at 4000000 Hz, and there are two sound chips: General Instrument AY8910 and Yamaha YM2610. The program loads the file "audiocpu.rom" as the Z80 ROM, file "ymsnd.rom" and optional file "ymsnddeltat.rom" as the YM2610 ROM.

FOR Namco System 1, there are two CPUs work about sound: a Motorola M6809 CPU and a Hitachi HD63701 CPU. The two CPUs run at 1536000 Hz. There are three sound chips: Yamaha YM2151, Namco CUS30 and DAC. The program loads the file "audiocpu.rom" as the M6809 ROM, files "voice.rom" and "cus64-64a1.mcu" as the HD63701 ROM.

When you double click the track or click the play button, the function PlayDelegate, StopDelegate, StopAndPlayDelegate is triggered. By examining the running MAME, I find detail of the functions. The files "emu\Inptport.cs", "mame\cps\CPS.cs", "mame\neogeo\Neogeo.cs" and "mame\namcos1\Namcos1.cs" show the detail.

The program uses the same .lst file as M1, and it uses the truncated format of the file "m1.xml" of BridgeM1. You should install Microsoft .NET Framework 3.5 or higher before running the program. The UI is simple and it has the similar function as BridgeM1. I’ve added some .lst files. You can edit "m1.xml", .lst files and make ROMs for any game to get its audio.

Image 1

M1.NET user interface

Make the ROMs

Now I explain how to make the roms for both boards.
For CPS-1 game "ffight", I will make the following files: "audiocpu.rom", "oki.rom". From the MAME CPS1 code:
https://github.com/mamedev/mame/blob/master/src/mame/drivers/cps1.cpp.
Find the following code:

C#
/* B-Board 89624B-3 */
ROM_START( ffight )
…
    ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
    ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, 
    CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
    ROM_CONTINUE(          0x10000, 0x08000 )
 
    ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
    ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, 
    CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
    ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, 
    CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
…
ROM_END

Insert 0x8000 zero bytes at offset 0x8000 of file "ff_09.12b" (or other name in previous version, just check the CRC32 b8367eb5 to confirm the file), and save it as file "audiocpu.rom" with the length 0x18000. Simply sequentially concatenate the files "ff_18.11c", "ff_19.12c" to a file "oki.rom" with the length 0x40000. You can do it with WinHex easily.

Image 2

Insert 0x8000 (32768) bytes of 0x00 at the offset 0x8000

Image 3

Sequentially concatenate the files "ff_18.11c", "ff_19.12c"

For Capcom QSound (CPS version) game "wof", so I will make the following files: "audiocpu.rom", "audiocpuop.rom", "qsound.rom". Find the following code from the MAME CPS1 code:

C#
/* B-Board 91635B-2 */
ROM_START( wof )
…
    ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */
    ROM_LOAD( "tk2_qa.5k",   0x00000, 0x08000, 
    CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) )
    ROM_CONTINUE(          ; 0x10000, 0x18000 )
 
    ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */
    ROM_LOAD( "tk2-q1.1k",   0x000000, 0x80000, 
    CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) )
    ROM_LOAD( "tk2-q2.2k",   0x080000, 0x80000, 
    CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) )
    ROM_LOAD( "tk2-q3.3k",   0x100000, 0x80000, 
    CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) )
    ROM_LOAD( "tk2-q4.4k",   0x180000, 0x80000, 
    CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) )
…
ROM_END

Simply sequentially concatenate the files "tk2-q1.1k", "tk2-q2.2k", "tk2-q3.3k", "tk2-q4.4k" to a file "qsound.rom" with the length 0x200000. By debugging MAME, you can set a breakpoint at the end of function "kabuki_decode" in source file "src\mame\machine\kabuki.c" and find the start address, then dump the memory to file:

Image 4

Dump memory by MAME debugging

 

start address length filename
0x048114c0(dest_op address) 0x8000 audiocpuop.rom
0x04798660(dest_data address) 0x28000 audiocpu.rom

 

Or you can do the same as type CPS-1 for file "audiocpu.rom". Then dump memory from running process (for example: MAME, WinKawaks, Nebula, FBA, BridgeM1…) when ROMs loaded by finding key bytes and replace the first 0x8000 bytes of file "audiocpu.rom". And dump memory for "audiocpuop.rom" with the length 0x8000.

Image 5

Dump memory from running Nebula by finding key bytes

Supported Games

I've made the following games supported:

  • Air Duel (Japan, M72) [airduelm72]
  • Lightning Swords [ltswords]
  • Gunforce - Battle Fire Engulfed Terror Island (World) [gunforce]
  • Blade Master (World) [bmaster]
  • Lethal Thunder (World) [lethalth]
  • Undercover Cops (World) [uccops]
  • Mystic Riders (World) [mysticri]
  • Major Title 2 (World, set 1) [majtitl2]
  • Hook (World) [hook]
  • R-Type Leo (World) [rtypeleo]
  • In The Hunt (World) [inthunt]
  • Superior Soldiers (US) [ssoldier]
  • Gun Force II (US) [gunforc2]
  • Tokio / Scramble Formation (newer) [tokio]
  • Bubble Bobble (Japan, Ver 0.1) [bublbobl]
  • Silent Dragon (World) [silentd]
  • Puzzle Bobble (Japan, B-System) [pbobble]
  • Ghosts'n Goblins (World? set 1) [gng]
  • Street Fighter (US, set 1) [sf]
  • Forgotten Worlds (World, newer) [forgottn]
  • Lost Worlds (Japan) [lostwrld]
  • Ghouls'n Ghosts (World) [ghouls]
  • Strider (USA, B-Board 89624B-2) [strider]
  • Strider (USA, B-Board 89624B-3) [striderua]
  • Dynasty Wars (USA, B-Board 89624B-?) [dynwar]
  • Tenchi wo Kurau (Japan) [dynwarj]
  • Willow (World) [willow]
  • U.N. Squadron (US) [unsquad]
  • Final Fight (World, set 1) [ffight]
  • 1941: Counter Attack (World 900227) [1941]
  • Mercs (World 900302) [mercs]
  • Mega Twins (World 900619) [mtwins]
  • Magic Sword: Heroic Fantasy (World 900725) [msword]
  • Carrier Air Wing (World 901012) [cawing]
  • Nemo (World 901130) [nemo]
  • Street Fighter II: The World Warrior (World 910522) [sf2]
  • Three Wonders (World 910520) [3wonders]
  • Three Wonders (World 910513) [3wondersr1]
  • The King of Dragons (World 910805) [kod]
  • The King of Dragons (World 910711) [kodr1]
  • Captain Commando (World 911202) [captcomm]
  • Knights of the Round (World 911127) [knights]
  • Street Fighter II': Champion Edition (World 920513) [sf2ce]
  • Street Fighter II': Champion Edition (L735 Test Rom, bootleg) [sf2amf2]
  • Adventure Quiz Capcom World 2 (Japan 920611) [cworld2j]
  • Varth: Operation Thunderstorm (World 920714) [varth]
  • Quiz & Dragons: Capcom Quiz Game (USA 920701) [qad]
  • Quiz & Dragons: Capcom Quiz Game (Japan Resale Ver. 940921) [qadjr]
  • Warriors of Fate (World 921031) [wof]
  • Huo Feng Huang (Chinese bootleg of Sangokushi II) [wofhfh]
  • Cadillacs and Dinosaurs (World 930201) [dino]
  • Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs) [dinohunt]
  • The Punisher (World 930422) [punisher]
  • Biaofeng Zhanjing (Chinese bootleg of The Punisher) [punisherbz]
  • Saturday Night Slam Masters (World 930713) [slammast]
  • Muscle Bomber Duo: Ultimate Team Battle (World 931206) [mbombrd]
  • Pnickies (Japan 940608) [pnickj]
  • Quiz Tonosama no Yabou 2: Zenkoku-ban (Japan 950123) [qtono2j]
  • Mega Man: The Power Battle (CPS1, USA 951006) [megaman]
  • Pokonyan! Balloon (Japan 940322) [pokonyan]
  • Pang! 3 (Euro 950601) [pang3]
  • Street Fighter Zero (CPS Changer, Japan 951020) [sfzch]
  • Super Street Fighter II: The New Challengers (World 931005) [ssf2]
  • Eco Fighters (World 931203) [ecofghtr]
  • Dungeons & Dragons: Tower of Doom (Euro 940412) [ddtod]
  • Super Street Fighter II Turbo (World 940223) [ssf2t]
  • Alien vs. Predator (Euro 940520) [avsp]
  • Darkstalkers: The Night Warriors (Euro 940705) [dstlk]
  • Ring of Destruction: Slammasters II (Euro 940902) [ringdest]
  • Armored Warriors (Euro 941024) [armwar]
  • X-Men: Children of the Atom (Euro 950331) [xmcota]
  • Night Warriors: Darkstalkers' Revenge (Euro 950316) [nwarr]
  • Cyberbots: Fullmetal Madness (Euro 950424) [cybots]
  • Street Fighter Alpha: Warriors' Dreams (Euro 950727) [sfa]
  • Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version) [mmancp2u]
  • Marvel Super Heroes (Euro 951024) [msh]
  • 19XX: The War Against Destiny (USA 951207) [19xx]
  • Dungeons & Dragons: Shadow over Mystara (Euro 960619) [ddsom]
  • Street Fighter Alpha 2 (Euro 960229) [sfa2]
  • Super Puzzle Fighter II Turbo (Euro 960529) [spf2t]
  • Mega Man 2: The Power Fighters (USA 960708) [megaman2]
  • Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826) [qndream]
  • X-Men Vs. Street Fighter (Euro 961004) [xmvsf]
  • Battle Circuit (Euro 970319) [batcir]
  • Vampire Savior: The Lord of Vampire (Euro 970519) [vsav]
  • Marvel Super Heroes Vs. Street Fighter (Euro 970625) [mshvsf]
  • Capcom Sports Club (Euro 971017) [csclub]
  • Super Gem Fighter Mini Mix (USA 970904) [sgemf]
  • Vampire Hunter 2: Darkstalkers Revenge (Japan 970929) [vhunt2]
  • Vampire Savior 2: The Lord of Vampire (Japan 970913) [vsav2]
  • Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123) [mvsc]
  • Street Fighter Alpha 3 (Euro 980904) [sfa3]
  • Jyangokushi: Haoh no Saihai (Japan 990527) [jyangoku]
  • Hyper Street Fighter II: The Anniversary Edition (USA 040202) [hsf2]
  • Giga Wing (USA 990222) [gigawing]
  • Mars Matrix: Hyper Solid Shooting (USA 000412) [mmatrix]
  • Mighty! Pang (Euro 001010) [mpang]
  • Mighty! Pang (Japan 001011) [mpangj]
  • Puzz Loop 2 (Euro 010302) [pzloop2]
  • Janpai Puzzle Choukou (Japan 010820) [choko]
  • Dimahoo (Euro 000121) [dimahoo]
  • 1944: The Loop Master (USA 000620) [1944]
  • Progear (USA 010117) [progear]
  • Pocket Gal (Japan) [pcktgal]
  • Pinball Action (set 1) [pbaction]
  • M.I.A. - Missing in Action (version T) [mia]
  • Teenage Mutant Ninja Turtles (World 4 Players, version X) [tmnt]
  • Punk Shot (US 4 Players) [punkshot]
  • Lightning Fighters (World) [lgtnfght]
  • Bells & Whistles (World, version L) [blswhstl]
  • Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA) [tmnt2]
  • Quiz Gakumon no Susume (Japan ver. JA2 Type L) [qgakumon]
  • Sunset Riders (4 Players ver EAC) [ssriders]
  • Thunder Cross II (World) [thndrx2]
  • NAM-1975 (NGM-001 ~ NGH-001) [nam1975]
  • Baseball Stars Professional (NGM-002) [bstars]
  • Top Player's Golf (NGM-003 ~ NGH-003) [tpgolf]
  • Mahjong Kyo Retsuden (NGM-004 ~ NGH-004) [mahretsu]
  • Riding Hero (NGM-006 ~ NGH-006) [ridhero]
  • Alpha Mission II / ASO II - Last Guardian (NGM-007 ~ NGH-007) [alpham2]
  • Alpha Mission II / ASO II - Last Guardian (prototype) [alpham2p]
  • Cyber-Lip (NGM-010) [cyberlip]
  • The Super Spy (NGM-011 ~ NGH-011) [superspy]
  • Mutation Nation (NGM-014 ~ NGH-014) [mutnat]
  • King of the Monsters (set 1) [kotm]
  • Sengoku / Sengoku Denshou (NGM-017 ~ NGH-017) [sengoku]
  • Burning Fight (NGM-018 ~ NGH-018) [burningf]
  • Burning Fight (prototype, older) [burningfp]
  • League Bowling (NGM-019 ~ NGH-019) [lbowling]
  • Ghost Pilots (NGM-020 ~ NGH-020) [gpilots]
  • Puzzled / Joy Joy Kid (NGM-021 ~ NGH-021) [joyjoy]
  • Quiz Daisousa Sen - The Last Count Down (NGM-023 ~ NGH-023) [quizdais]
  • Last Resort [lresort]
  • Eight Man (NGM-025 ~ NGH-025) [eightman]
  • Legend of Success Joe / Ashita no Joe Densetsu [legendos]
  • 2020 Super Baseball (set 1) [2020bb]
  • Soccer Brawl (NGM-031) [socbrawl]
  • Fatal Fury - King of Fighters / Garou Densetsu - Shukumei no Tatakai (NGM-033 ~ NGH-033) [fatfury1]
  • Robo Army [roboarmy]
  • Football Frenzy (NGM-034 ~ NGH-034) [fbfrenzy]
  • King of the Monsters 2 - The Next Thing (NGM-039 ~ NGH-039) [kotm2]
  • Sengoku 2 / Sengoku Denshou 2 [sengoku2]
  • Baseball Stars 2 [bstars2]
  • Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042 ~ NGH-042) [quizdai2]
  • 3 Count Bout / Fire Suplex (NGM-043 ~ NGH-043) [3countb]
  • Art of Fighting / Ryuuko no Ken (NGM-044 ~ NGH-044) [aof]
  • Samurai Shodown / Samurai Spirits (NGM-045) [samsho]
  • Top Hunter - Roddy & Cathy (NGM-046) [tophuntr]
  • Fatal Fury 2 / Garou Densetsu 2 - Arata-naru Tatakai (NGM-047 ~ NGH-047) [fatfury2]
  • Super Sidekicks / Tokuten Ou [ssideki]
  • The King of Fighters '94 (NGM-055 ~ NGH-055) [kof94]
  • Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056) [aof2]
  • Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 1) [fatfursp]
  • Savage Reign / Fu'un Mokushiroku - Kakutou Sousei [savagere]
  • Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - Real Fight Football (NGM-061 ~ NGH-061) [ssideki2]
  • Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (NGM-063 ~ NGH-063) [samsho2]
  • Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - Haruka-naru Tatakai (NGM-069 ~ NGH-069) [fatfury3]
  • Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - Eikou e no Michi [ssideki3]
  • The King of Fighters '95 (NGM-084) [kof95]
  • Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087) [samsho3]
  • Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095 ~ NGH-095) [rbff1]
  • Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden [aof3]
  • The King of Fighters '96 (NGM-214) [kof96]
  • The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero [ssideki4]
  • Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle [kizuna]
  • Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222 ~ NGH-222) [samsho4]
  • Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special [rbffspec]
  • The King of Fighters '97 (NGM-2320) [kof97]
  • The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340) [lastblad]
  • The Irritating Maze / Ultra Denryu Iraira Bou [irrmaze]
  • Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGM-2400) [rbff2]
  • Metal Slug 2 - Super Vehicle-001/II (NGM-2410 ~ NGH-2410) [mslug2]
  • The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420) [kof98]
  • The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430 ~ NGH-2430) [lastbld2]
  • Neo-Geo Cup '98 - The Road to the Victory [neocup98]
  • Metal Slug X - Super Vehicle-001 (NGM-2500 ~ NGH-2500) [mslugx]
  • The King of Fighters '99 - Millennium Battle (NGM-2510) [kof99]
  • Garou - Mark of the Wolves (NGM-2530) [garou]
  • Metal Slug 3 (NGM-2560) [mslug3]
  • The King of Fighters 2000 (NGM-2570 ~ NGH-2570) [kof2000]
  • Zupapa! [zupapa]
  • Sengoku 3 / Sengoku Densho 2001 [sengoku3]
  • The King of Fighters 2001 (NGM-262?) [kof2001]
  • The King of Fighters 2002 (NGM-2650 ~ NGH-2650) [kof2002]
  • Metal Slug 5 (NGM-2680) [mslug5]
  • SNK vs. Capcom - SVC Chaos (NGM-2690 ~ NGH-2690) [svc]
  • Samurai Shodown V / Samurai Spirits Zero (NGM-2700) [samsho5]
  • The King of Fighters 2003 (NGM-2710) [kof2003]
  • Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720) [samsh5sp]
  • Magician Lord (NGM-005) [maglord]
  • Ninja Combat (NGM-009) [ncombat]
  • Blue's Journey / Raguy (ALM-001 ~ ALH-001) [bjourney]
  • Crossed Swords (ALM-002 ~ ALH-002) [crsword]
  • Thrash Rally (ALM-003 ~ ALH-003) [trally]
  • Ninja Commando [ncommand]
  • World Heroes (ALM-005) [wh1]
  • World Heroes 2 (ALM-006 ~ ALH-006) [wh2]
  • World Heroes 2 Jet (ADM-007 ~ ADH-007) [wh2j]
  • Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008 ~ ADH-008) [aodk]
  • World Heroes Perfect [whp]
  • Shougi No Tatsujin - Master of Shougi [moshougi]
  • Over Top [overtop]
  • Ninja Master's - Haoh-ninpo-cho [ninjamas]
  • Twinkle Star Sprites [twinspri]
  • Zintrick / Oshidashi Zentrix (bootleg of CD version) [zintrckb]
  • Crossed Swords 2 (bootleg of CD version) [crswd2bl]
  • Viewpoint [viewpoin]
  • Janshin Densetsu - Quest of Jongmaster [janshin]
  • Pulstar [pulstar]
  • Blazing Star [blazstar]
  • Prehistoric Isle 2 [preisle2]
  • Spin Master / Miracle Adventure [spinmast]
  • Windjammers / Flying Power Disc [wjammers]
  • Karnov's Revenge / Fighter's History Dynamite [karnovr]
  • Street Hoop / Street Slam / Dunk Dream (DEM-004 ~ DEH-004) [strhoop]
  • Ghostlop (prototype) [ghostlop]
  • Magical Drop II [magdrop2]
  • Magical Drop III [magdrop3]
  • Nightmare in the Dark [nitd]
  • Gururin [gururin]
  • Money Puzzle Exchanger / Money Idol Exchanger [miexchng]
  • Panic Bomber [panicbom]
  • Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den [kabukikl]
  • Neo Bomberman [neobombe]
  • Minasan no Okagesamadesu! Dai Sugoroku Taikai (MOM-001 ~ MOH-001) [minasan]
  • Bakatonosama Mahjong Manyuuki (MOM-002 ~ MOH-002) [bakatono]
  • Neo Turf Masters / Big Tournament Golf [turfmast]
  • Metal Slug - Super Vehicle-001 [mslug]
  • Zed Blade / Operation Ragnarok [zedblade]
  • Strikers 1945 Plus [s1945p]
  • Quiz King of Fighters (SAM-080 ~ SAH-080) [quizkof]
  • Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi [stakwin]
  • Ragnagard / Shin-Oh-Ken [ragnagrd]
  • Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219) [pgoal]
  • Choutetsu Brikin'ger - Iron Clad (prototype) [ironclad]
  • Stakes Winner 2 [stakwin2]
  • Shock Troopers (set 1) [shocktro]
  • Shock Troopers - 2nd Squad [shocktr2]
  • Galaxy Fight - Universal Warriors [galaxyfg]
  • Waku Waku 7 [wakuwak7]
  • Puzzle Bobble / Bust-A-Move (Neo-Geo, NGM-083) [pbobblen]
  • Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo) [pbobbl2n]
  • Pochi and Nyaa [pnyaa]
  • Chibi Marukochan Deluxe Quiz [marukodq]
  • Double Dragon (Neo-Geo) [doubledr]
  • Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer [gowcaizr]
  • Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu [sdodgeb]
  • Tecmo World Soccer '96 [tws96]
  • Fight Fever (set 1) [fightfev]
  • Power Spikes II (NGM-068) [pspikes2]
  • Aero Fighters 2 / Sonic Wings 2 [sonicwi2]
  • Aero Fighters 3 / Sonic Wings 3 [sonicwi3]
  • Pop 'n Bounce / Gapporin [popbounc]
  • Idol Mahjong Final Romance 2 (Neo-Geo, bootleg of CD version) [froman2b]
  • Andro Dunos (NGM-049 ~ NGH-049) [androdun]
  • Puzzle De Pon! [puzzledp]
  • Neo Mr. Do! [neomrdo]
  • Goal! Goal! Goal! [goalx3]
  • Neo Drift Out - New Technology [neodrift]
  • Breakers [breakers]
  • Breakers Revenge [breakrev]
  • Battle Flip Shot [flipshot]
  • Captain Tomaday [ctomaday]
  • Ganryu / Musashi Ganryuki [ganryu]
  • Bang Bead [bangbead]
  • Bang Bang Busters (2010 NCI release) [b2b]
  • Metal Slug 4 (NGM-2630) [mslug4]
  • Rage of the Dragons (NGM-2640?) [rotd]
  • Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660 ~ NGH-2660) [matrim]
  • Jockey Grand Prix (set 1) [jockeygp]
  • V-Liner (set 1) [vliner]
  • Digger Man (prototype) [diggerma]
  • Last Hope (bootleg AES to MVS conversion, no coin support) [lasthope]
  • Shadowland (YD3) [shadowld]
  • Dragon Spirit (new version (DS3)) [dspirit]
  • Blazer (Japan) [blazer]
  • Quester (Japan) [quester]
  • Pac-Mania [pacmania]
  • Pac-Mania (Japan) [pacmaniaj]
  • Galaga '88 [galaga88]
  • World Stadium (Japan) [ws]
  • Beraboh Man (Japan, Rev C) [berabohm]
  • Marchen Maze (Japan) [mmaze]
  • Bakutotsu Kijuutei [bakutotu]
  • World Court (Japan) [wldcourt]
  • Splatter House (World, new version (SH3)) [splatter]
  • Face Off (Japan 2 Players) [faceoff]
  • Rompers (Japan, new version (Rev B)) [rompers]
  • Blast Off (Japan) [blastoff]
  • World Stadium '89 (Japan) [ws89]
  • Dangerous Seed (Japan) [dangseed]
  • Pistol Daimyo no Bouken (Japan) [pistoldm]
  • Boxy Boy (SB?) [boxyboy]
  • Puzzle Club (Japan prototype) [puzlclub]
  • Tank Force (US, 2 Player) [tankfrce]

Conclusion

I've finished M1.NET. It figures out how the audio ROMs work. You can make any other games supported. By the translation from C to C#, there is no unsafe code and the code is much more readable. I've preserved the main architecture of MAME. Programmers can do more refer to this. For example: make it support other sound chips, program an emulator like WinKawaks...

History

  • 2013-09-01: Finish M1.NET (build 20130901)
  • 2016-09-13: Support 43 games (build 20160913)
  • 2017-12-21: Support 265 games (build 20171221)
  • 2020-06-18: Add M72 and M92 boards, support 278 games (build 20200618)
  • 2021-08-17: Add Taito B, Capcom, Konami 68000 boards, support 290 games (build 20210817)
  • 2023-02-06: Add Taito board, support 292 games (build 20230206)
  • 2024-06-12: Add Data East, Tehkan board, support 295 games (build 20240612)

References

  1. MAME - Multiple Arcade Machine Emulator - https://github.com/mamedev/mame
  2. MSDN - https://msdn.microsoft.com
  3. bizhawk Z80 code - https://github.com/TASEmulators/BizHawk/tree/master/src/BizHawk.Emulation.Cores/CPUs/Z80A
  4. VCMAME detail by Bryan McPhail - https://www.codeproject.com/Articles/4923/VCMAME-Multiple-Arcade-Machine-Emulator-for-Visual
  5. MAME and MAMEUI Visual C Project Files - http://www.mikesarcade.com/arcade/vcmame.html
  6. BridgeM1 - https://e2j.net/downloads/
  7. WinHex - https://www.x-ways.net/winhex/

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)