diff options
author | 2016-05-26 00:26:07 +1000 | |
---|---|---|
committer | 2016-05-26 00:26:07 +1000 | |
commit | 7e3fce4ba9ebd4e4dc6b53027e70653c656c643b (patch) | |
tree | 2add66db88bac7b2186e6fc89f843727f1b9907a | |
parent | 4772a2556d0f35de45d601bd604595279f250236 (diff) |
0.174 Release Fileshbmame174
136 files changed, 15853 insertions, 1813 deletions
diff --git a/docs/release/docs/hbnew.txt b/docs/release/docs/hbnew.txt index 2825ca995f0..32cfdcdd7dc 100644 --- a/docs/release/docs/hbnew.txt +++ b/docs/release/docs/hbnew.txt @@ -16,6 +16,9 @@ New Games --------- - [3wondrud] 3 Wonders (Phoenix) - [captcoud] Captain Commando (Phoenix) +- [ddsomavs] Dungeons & Dragons: Shadow over Mystara (1vs4 hack by Pipi899 29/06/09) +- [ddsomhp] Dungeons & Dragons: Shadow over Mystara (HP Revision hack by Pipi899, cheat by sssskkkk 15/06/09) +- [ddsomjfs] Dungeons & Dragons: Shadow over Mystara (Final Strike hack by e107 17/07/09) - [dino08h2] Cadillacs and Dinosaurs (Enhanced Revision 2008 set 3 v2.0f hack by Pipi899 17/10/08) - [dino08h3] Cadillacs and Dinosaurs (Enhanced Revision 2008 set 1 v1.1 hack by Pipi899 11/10/08) - [dino08hp] Cadillacs and Dinosaurs (Enhanced Revision 2008 set 2 v1.1f hack by Pipi899 17/10/08) @@ -29,6 +32,7 @@ New Games - [dinouphp] Cadillacs and Dinosaurs (Up Version hack by Pipi899 15/01/09) - [dkrdemo] Donkey Kong Remix demo 1.8 [by Sock Master] - [ffightb] Final Fight (Boss Hack dumped by Bonky0013, modified by MPT) +- [garoub] Garou - Mark of the Wolves (Boss hack by Ydmis) - [knightud] Knights of the Round (Phoenix) - [kodsp] The King of Dragons (Remix Special hack by Bonusjz) - [pacpen] Pacman on Pengo hardware [by Andrew Hannay] @@ -40,6 +44,7 @@ New Games - [sk2h15] Sangokushi 2 (Hack by Pipi899 2009-01-02) - [sk2h16] Sangokushi 2 (Easy Moves hack by Pipi899 12/01/09) - [slammastud] Saturday Night Slam Masters (USA 930713 Phoenix) +- [vampjb] Vampire: The Night Warriors (Boss hack by Yumeji) - [wofchspp] CPS Changer - Tenchi Wo Kurau II (Super Jian Huang hack by Pipi899 29/01/10) - [wofjhb] Tenchi wo Kurau II (Japan 921031) (Hack set 2) - [wofjhc] Tenchi wo Kurau II (Japan 921031) (Hack set 3) diff --git a/docs/release/docs/hlsl.txt b/docs/release/docs/hlsl.txt index 081d6a9aa4e..99660645bf3 100644 --- a/docs/release/docs/hlsl.txt +++ b/docs/release/docs/hlsl.txt @@ -60,13 +60,13 @@ saturation 0.0 to 4.0 This parameter defines the amount each c oversaturated equally beyond that. offset [r,g,b] These parameters define a value for each color channel that is added to said channel after scaling and after - matrix convolution. (-2.0 to 2.0) + matrix convolution. (-2.0 to 2.0) scale [r,g,b] These parameters define a value for each color channel that is multiplied with said channel after matrix convolution. (-2.0 to 2.0) power [r,g,b] These parameters define the exponent for each color channel that is applied after scaling, offsetting, - saturation and matrix convolution. (-4.0 to 4.0) + saturation and matrix convolution. (-4.0 to 4.0) floor [r,g,b] These parameters define the lower limit of each final color channel value; 0.05, for example, raises the minimum to 0.05 but re-scales to leave the max at 1.0. @@ -80,43 +80,43 @@ NTSC Processing Parameters -------------------------- Name Default Values Description -yiq_jitter 0.0 Jitter for the NTSC signal processing. (0.0 to 1.0) -yiq_cc 3.57954545 Color Carrier frequency for NTSC signal processing. (0.0 to 6.0) -yiq_a 0.5 A value for NTSC signal processing. (-1.0 to 1.0) -yiq_b 0.5 B value for NTSC signal processing. (-1.0 to 1.0) -yiq_o 0.0 Outgoing Color Carrier phase offset for NTSC signal processing. (-3.0 to 3.0) -yiq_p 1.0 Incoming Pixel Clock scaling value for NTSC signal processing. (-3.0 to 3.0) -yiq_n 1.0 Y filter notch width for NTSC signal processing. (0.0 to 6.0) -yiq_y 6.0 Y filter cutoff frequency for NTSC signal processing. (0.0 to 6.0) -yiq_i 1.2 I filter cutoff frequency for NTSC signal processing. (0.0 to 6.0) -yiq_q 0.6 Q filter cutoff frequency for NTSC signal processing. (0.0 to 6.0) -yiq_scan_time 52.6 Horizontal scanline duration for NTSC signal processing. (usec) -yiq_phase_count 2 Phase Count value for NTSC signal processing. (3 for NES, else 2) +yiq_jitter 0.0 Jitter for the NTSC signal processing. (0.0 to 1.0) +yiq_cc 3.57954545 Color Carrier frequency for NTSC signal processing. (0.0 to 6.0) +yiq_a 0.5 A value for NTSC signal processing. (-1.0 to 1.0) +yiq_b 0.5 B value for NTSC signal processing. (-1.0 to 1.0) +yiq_o 0.0 Outgoing Color Carrier phase offset for NTSC signal processing. (-3.0 to 3.0) +yiq_p 1.0 Incoming Pixel Clock scaling value for NTSC signal processing. (-3.0 to 3.0) +yiq_n 1.0 Y filter notch width for NTSC signal processing. (0.0 to 6.0) +yiq_y 6.0 Y filter cutoff frequency for NTSC signal processing. (0.0 to 6.0) +yiq_i 1.2 I filter cutoff frequency for NTSC signal processing. (0.0 to 6.0) +yiq_q 0.6 Q filter cutoff frequency for NTSC signal processing. (0.0 to 6.0) +yiq_scan_time 52.6 Horizontal scanline duration for NTSC signal processing. (usec) +yiq_phase_count 2 Phase Count value for NTSC signal processing. (3 for NES, else 2) Vector Post-Processing Options ------------------------------ Name Default Values Description -vector_length_scale 0.8 How much length affects vector fade. (0.00-1.00) -vector_length_ratio 500.0 Vector fade length (4.0 - vectors fade the most at and above 4 - pixels, etc.) (0.000 - 1000.000) +vector_length_scale 0.5 The maximum vector attenuation. (0.00 to 1.00) +vector_length_ratio 0.5 The minimum vector length (vector length to screen size ratio) + that is affected by the attenuation (0.000 to 1.000) Bloom Post-Processing Options ----------------------------- Name Default Values Description bloom_blend_mode 0 or 1 0 for brighten blend mode or 1 for darken blend mode. -bloom_scale 0.0 Bloom intensity factor. (0.000-2.000) -bloom_overdrive 0.0,0.0,0.0 Bloom overdrive factor to bright full saturated colors. (0.000-2.000) -bloom_lvl0_weight 1.00 Bloom level 0 (full-size target) weight. (0.00-1.00) -bloom_lvl1_weight 0.64 Bloom level 1 (1/2-size target) weight. (0.00-1.00) -bloom_lvl2_weight 0.32 Bloom level 2 (1/4-size target) weight. (0.00-1.00) -bloom_lvl3_weight 0.16 Bloom level 3 (1/8-size target) weight. (0.00-1.00) -bloom_lvl4_weight 0.08 Bloom level 4 (1/16-size target) weight. (0.00-1.00) -bloom_lvl5_weight 0.06 Bloom level 5 (1/32-size target) weight. (0.00-1.00) -bloom_lvl6_weight 0.04 Bloom level 6 (1/64-size target) weight. (0.00-1.00) -bloom_lvl7_weight 0.02 Bloom level 7 (1/128-size target) weight. (0.00-1.00) -bloom_lvl8_weight 0.01 Bloom level 8 (1/256-size target) weight. (0.00-1.00) +bloom_scale 0.0 Bloom intensity factor. (0.000 to 2.000) +bloom_overdrive 0.0,0.0,0.0 Bloom overdrive factor to bright full saturated colors. (0.000 to 2.000) +bloom_lvl0_weight 1.00 Bloom level 0 weight. (full-size target) (0.00 to 1.00) +bloom_lvl1_weight 0.64 Bloom level 1 weight. (1/4 smaller that level 0 target) (0.00 to 1.00) +bloom_lvl2_weight 0.32 Bloom level 2 weight. (1/4 smaller that level 1 target) (0.00 to 1.00) +bloom_lvl3_weight 0.16 Bloom level 3 weight. (1/4 smaller that level 2 target) (0.00 to 1.00) +bloom_lvl4_weight 0.08 Bloom level 4 weight. (1/4 smaller that level 3 target) (0.00 to 1.00) +bloom_lvl5_weight 0.06 Bloom level 5 weight. (1/4 smaller that level 4 target) (0.00 to 1.00) +bloom_lvl6_weight 0.04 Bloom level 6 weight. (1/4 smaller that level 5 target) (0.00 to 1.00) +bloom_lvl7_weight 0.02 Bloom level 7 weight. (1/4 smaller that level 6 target) +bloom_lvl8_weight 0.01 Bloom level 8 weight. (1/4 smaller that level 7 target) (0.00 to 1.00) Presets diff --git a/docs/release/hbmame173s.rar b/docs/release/hbmame174s.rar Binary files differindex 38ffdf1e852..8636ce6f1bb 100644 --- a/docs/release/hbmame173s.rar +++ b/docs/release/hbmame174s.rar diff --git a/docs/release/scripts/build/makedep.py b/docs/release/scripts/build/makedep.py index 2ce47d42cd0..b1278879d77 100644 --- a/docs/release/scripts/build/makedep.py +++ b/docs/release/scripts/build/makedep.py @@ -160,7 +160,9 @@ def parse_file(root, srcfile, folder): files_included.append(fullname) newfolder = fullname.rsplit('/', 1)[0] + '/' parse_file(root, fullname, newfolder) - if (fullname.endswith('.h')): + if (fullname.endswith('.h') and not("src/emu" in fullname) and not("src/devices" in fullname) and not("src/lib" in fullname) and not("src/osd" in fullname)): + parse_file_for_deps(root, fullname.replace('.h','.cpp'), newfolder) + elif fullname.endswith('.h'): parse_file(root, fullname.replace('.h','.cpp'), newfolder) continue fp.close() diff --git a/docs/release/scripts/genie.lua b/docs/release/scripts/genie.lua index 3281ca7813b..cfb30ed95d8 100644 --- a/docs/release/scripts/genie.lua +++ b/docs/release/scripts/genie.lua @@ -1,5 +1,6 @@ -- license:BSD-3-Clause -- copyright-holders:MAMEdev Team +STANDALONE = false newoption { trigger = 'build-dir', @@ -553,7 +554,7 @@ configuration { "Debug" } defines { "MAME_DEBUG", "MAME_PROFILER", - "BGFX_CONFIG_DEBUG=1", +-- "BGFX_CONFIG_DEBUG=1", } if _OPTIONS["FASTDEBUG"]=="1" then @@ -1317,14 +1318,18 @@ group "core" dofile(path.join("src", "emu.lua")) -dofile(path.join("src", "mame", "frontend.lua")) +if (STANDALONE~=true) then + dofile(path.join("src", "mame", "frontend.lua")) +end group "devices" dofile(path.join("src", "devices.lua")) devicesProject(_OPTIONS["target"],_OPTIONS["subtarget"]) -group "drivers" -findfunction("createProjects_" .. _OPTIONS["target"] .. "_" .. _OPTIONS["subtarget"])(_OPTIONS["target"], _OPTIONS["subtarget"]) +if (STANDALONE~=true) then + group "drivers" + findfunction("createProjects_" .. _OPTIONS["target"] .. "_" .. _OPTIONS["subtarget"])(_OPTIONS["target"], _OPTIONS["subtarget"]) +end group "emulator" dofile(path.join("src", "main.lua")) diff --git a/docs/release/scripts/resources/emscripten/emscripten_post.js b/docs/release/scripts/resources/emscripten/emscripten_post.js index aa7dac53894..92cbdd21f9b 100644 --- a/docs/release/scripts/resources/emscripten/emscripten_post.js +++ b/docs/release/scripts/resources/emscripten/emscripten_post.js @@ -7,4 +7,5 @@ JSMAME.ui_set_show_fps = Module.cwrap('_ZN15mame_ui_manager12set_show_fpsEb', '' JSMAME.ui_get_show_fps = Module.cwrap('_ZNK15mame_ui_manager8show_fpsEv', 'number', ['number']); JSMAME.sound_manager_mute = Module.cwrap('_ZN13sound_manager4muteEbh', '', ['number', 'number', 'number']); JSMAME.sdl_pauseaudio = Module.cwrap('SDL_PauseAudio', '', ['number']); +JSMAME.sdl_sendkeyboardkey = Module.cwrap('SDL_SendKeyboardKey', '', ['number', 'number']); var JSMESS = JSMAME; diff --git a/docs/release/scripts/src/3rdparty.lua b/docs/release/scripts/src/3rdparty.lua index 26d5c687cd0..664898d114e 100644 --- a/docs/release/scripts/src/3rdparty.lua +++ b/docs/release/scripts/src/3rdparty.lua @@ -811,6 +811,7 @@ end if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "clang") then buildoptions { "-Wno-switch", + "-Wno-unknown-pragmas", } end end @@ -1213,6 +1214,15 @@ project "uv" MAME_DIR .. "3rdparty/libuv/src/unix/kqueue.c", } end + if _OPTIONS["targetos"]=="netbsd" then + files { + MAME_DIR .. "3rdparty/libuv/src/unix/netbsd.c", + MAME_DIR .. "3rdparty/libuv/src/unix/kqueue.c", + } + links { + "kvm", + } + end if (_OPTIONS["SHADOW_CHECK"]=="1") then removebuildoptions { diff --git a/docs/release/scripts/src/bus.lua b/docs/release/scripts/src/bus.lua index c525ce46732..3da1e88cb3c 100644 --- a/docs/release/scripts/src/bus.lua +++ b/docs/release/scripts/src/bus.lua @@ -479,6 +479,7 @@ end --------------------------------------------------- -- --@src/devices/bus/coleco/ctrl.h,BUSES["COLECO"] = true +--@src/devices/bus/coleco/exp.h,BUSES["COLECO"] = true --------------------------------------------------- if (BUSES["COLECO"]~=null) then @@ -516,7 +517,7 @@ end --------------------------------------------------- -- ---@src/devices/bus/dmv/dmv.h,BUSES["DMV"] = true +--@src/devices/bus/dmv/dmvbus.h,BUSES["DMV"] = true --------------------------------------------------- if (BUSES["DMV"]~=null) then @@ -671,7 +672,7 @@ end --------------------------------------------------- -- ---@src/devices/bus/isbx/isbx.h,BUSES["IMI7000"] = true +--@src/devices/bus/imi7000/imi7000.h,BUSES["IMI7000"] = true --------------------------------------------------- if (BUSES["IMI7000"]~=null) then @@ -1188,7 +1189,7 @@ end --------------------------------------------------- -- ---@src/devices/bus/vcs/ctrl.h,BUSES["VCS_CTRL"] = true +--@src/devices/bus/vcs_ctrl/ctrl.h,BUSES["VCS_CTRL"] = true --------------------------------------------------- if (BUSES["VCS_CTRL"]~=null) then @@ -1633,9 +1634,9 @@ if (BUSES["NES"]~=null) then files { MAME_DIR .. "src/devices/bus/nes/nes_slot.cpp", MAME_DIR .. "src/devices/bus/nes/nes_slot.h", - MAME_DIR .. "src/devices/bus/nes/nes_ines.inc", - MAME_DIR .. "src/devices/bus/nes/nes_pcb.inc", - MAME_DIR .. "src/devices/bus/nes/nes_unif.inc", + MAME_DIR .. "src/devices/bus/nes/nes_ines.hxx", + MAME_DIR .. "src/devices/bus/nes/nes_pcb.hxx", + MAME_DIR .. "src/devices/bus/nes/nes_unif.hxx", MAME_DIR .. "src/devices/bus/nes/nes_carts.cpp", MAME_DIR .. "src/devices/bus/nes/nes_carts.h", MAME_DIR .. "src/devices/bus/nes/2a03pur.cpp", @@ -1886,65 +1887,69 @@ end --------------------------------------------------- -- ---@src/devices/bus/neogeo/neogeo_slot.h,BUSES["NEOGEO"] = true +--@src/devices/bus/neogeo/slot.h,BUSES["NEOGEO"] = true --------------------------------------------------- if (BUSES["NEOGEO"]~=null) then files { - MAME_DIR .. "src/devices/bus/neogeo/neogeo_slot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/neogeo_slot.h", - MAME_DIR .. "src/devices/bus/neogeo/neogeo_intf.cpp", - MAME_DIR .. "src/devices/bus/neogeo/neogeo_intf.h", - MAME_DIR .. "src/devices/bus/neogeo/neogeo_carts.cpp", - MAME_DIR .. "src/devices/bus/neogeo/neogeo_carts.h", - MAME_DIR .. "src/devices/bus/neogeo/neogeo_helper.cpp", - MAME_DIR .. "src/devices/bus/neogeo/neogeo_helper.h", - MAME_DIR .. "src/devices/bus/neogeo/banked_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/banked_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/mslugx_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/mslugx_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/mslugx_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/mslugx_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/sma_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/sma_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/sma_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/sma_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/cmc_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/cmc_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/cmc_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/cmc_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/pcm2_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/pcm2_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/pcm2_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/pcm2_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/kof2002_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/kof2002_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/kof2002_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/kof2002_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/pvc_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/pvc_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/pvc_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/pvc_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/fatfury2_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/fatfury2_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/fatfury2_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/fatfury2_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/kof98_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/kof98_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/kof98_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/kof98_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/bootleg_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/bootleg_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/bootleg_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/bootleg_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/bootleg_hybrid_cart.cpp", - MAME_DIR .. "src/devices/bus/neogeo/bootleg_hybrid_cart.h", - MAME_DIR .. "src/devices/bus/neogeo/sbp_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/sbp_prot.h", - MAME_DIR .. "src/devices/bus/neogeo/kog_prot.cpp", - MAME_DIR .. "src/devices/bus/neogeo/kog_prot.h", + MAME_DIR .. "src/devices/bus/neogeo/slot.cpp", + MAME_DIR .. "src/devices/bus/neogeo/slot.h", + MAME_DIR .. "src/devices/bus/neogeo/carts.cpp", + MAME_DIR .. "src/devices/bus/neogeo/carts.h", MAME_DIR .. "src/devices/bus/neogeo/rom.cpp", MAME_DIR .. "src/devices/bus/neogeo/rom.h", + MAME_DIR .. "src/devices/bus/neogeo/fatfury2.cpp", + MAME_DIR .. "src/devices/bus/neogeo/fatfury2.h", + MAME_DIR .. "src/devices/bus/neogeo/kof98.cpp", + MAME_DIR .. "src/devices/bus/neogeo/kof98.h", + MAME_DIR .. "src/devices/bus/neogeo/mslugx.cpp", + MAME_DIR .. "src/devices/bus/neogeo/mslugx.h", + MAME_DIR .. "src/devices/bus/neogeo/cmc.cpp", + MAME_DIR .. "src/devices/bus/neogeo/cmc.h", + MAME_DIR .. "src/devices/bus/neogeo/sma.cpp", + MAME_DIR .. "src/devices/bus/neogeo/sma.h", + MAME_DIR .. "src/devices/bus/neogeo/pcm2.cpp", + MAME_DIR .. "src/devices/bus/neogeo/pcm2.h", + MAME_DIR .. "src/devices/bus/neogeo/kof2k2.cpp", + MAME_DIR .. "src/devices/bus/neogeo/kof2k2.h", + MAME_DIR .. "src/devices/bus/neogeo/pvc.cpp", + MAME_DIR .. "src/devices/bus/neogeo/pvc.h", + MAME_DIR .. "src/devices/bus/neogeo/boot_cthd.cpp", + MAME_DIR .. "src/devices/bus/neogeo/boot_cthd.h", + MAME_DIR .. "src/devices/bus/neogeo/boot_misc.cpp", + MAME_DIR .. "src/devices/bus/neogeo/boot_misc.h", + MAME_DIR .. "src/devices/bus/neogeo/boot_svc.cpp", + MAME_DIR .. "src/devices/bus/neogeo/boot_svc.h", + MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k2.cpp", + MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k2.h", + MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k3.cpp", + MAME_DIR .. "src/devices/bus/neogeo/boot_kof2k3.h", + MAME_DIR .. "src/devices/bus/neogeo/sbp.cpp", + MAME_DIR .. "src/devices/bus/neogeo/sbp.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_fatfury2.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_fatfury2.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_kof98.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_kof98.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_mslugx.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_mslugx.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_cmc.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_cmc.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_sma.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_sma.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_pcm2.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_pcm2.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k2.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k2.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_pvc.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_pvc.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_cthd.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_cthd.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k3bl.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_kof2k3bl.h", + MAME_DIR .. "src/devices/bus/neogeo/boot_kof10th.cpp", + MAME_DIR .. "src/devices/bus/neogeo/boot_kof10th.h", + MAME_DIR .. "src/devices/bus/neogeo/prot_misc.cpp", + MAME_DIR .. "src/devices/bus/neogeo/prot_misc.h", } end @@ -2082,6 +2087,10 @@ end --------------------------------------------------- -- --@src/devices/bus/ti99x/990_dk.h,BUSES["TI99X"] = true +--@src/devices/bus/ti99x/990_tap.h,BUSES["TI99X"] = true +--@src/devices/bus/ti99x/990_hd.h,BUSES["TI99X"] = true +--@src/devices/bus/ti99x/genboard.h,BUSES["TI99X"] = true +--@src/devices/bus/ti99x/joyport.h,BUSES["TI99X"] = true --------------------------------------------------- if (BUSES["TI99X"]~=null) then @@ -2352,7 +2361,7 @@ end --------------------------------------------------- -- ---@src/devices/bus/compucolor/compclr_flp.h,BUSES["COMPUCOLOR"] = true +--@src/devices/bus/compucolor/floppy.h,BUSES["COMPUCOLOR"] = true --------------------------------------------------- if (BUSES["COMPUCOLOR"]~=null) then files { @@ -2596,7 +2605,7 @@ end --------------------------------------------------- -- ---@src/devices/bus/cgenie/expansion.h,BUSES["CGENIE_EXPANSION"] = true +--@src/devices/bus/cgenie/expansion/expansion.h,BUSES["CGENIE_EXPANSION"] = true --------------------------------------------------- if (BUSES["CGENIE_EXPANSION"]~=null) then @@ -2612,7 +2621,7 @@ end --------------------------------------------------- -- ---@src/devices/bus/cgenie/parallel.h,BUSES["CGENIE_PARALLEL"] = true +--@src/devices/bus/cgenie/parallel/parallel.h,BUSES["CGENIE_PARALLEL"] = true --------------------------------------------------- if (BUSES["CGENIE_PARALLEL"]~=null) then diff --git a/docs/release/scripts/src/cpu.lua b/docs/release/scripts/src/cpu.lua index 2590dea1c93..bb630af1e5c 100644 --- a/docs/release/scripts/src/cpu.lua +++ b/docs/release/scripts/src/cpu.lua @@ -73,7 +73,7 @@ end -------------------------------------------------- -- ARcompact (ARCtangent-A5, ARC 600, ARC 700) ---@src/devices/cpu/arc/arc.h,CPUS["ARCOMPACT"] = true +--@src/devices/cpu/arcompact/arcompact.h,CPUS["ARCOMPACT"] = true -------------------------------------------------- if (CPUS["ARCOMPACT"]~=null) then @@ -86,12 +86,12 @@ if (CPUS["ARCOMPACT"]~=null) then MAME_DIR .. "src/devices/cpu/arcompact/arcompact_common.h", } dependency { - { MAME_DIR .. "src/devices/cpu/arcompact/arcompact.cpp", GEN_DIR .. "emu/cpu/arcompact/arcompact.inc" }, - { MAME_DIR .. "src/devices/cpu/arcompact/arcompact_execute.cpp", GEN_DIR .. "emu/cpu/arcompact/arcompact.inc" }, + { MAME_DIR .. "src/devices/cpu/arcompact/arcompact.cpp", GEN_DIR .. "emu/cpu/arcompact/arcompact.hxx" }, + { MAME_DIR .. "src/devices/cpu/arcompact/arcompact_execute.cpp", GEN_DIR .. "emu/cpu/arcompact/arcompact.hxx" }, } custombuildtask { - { MAME_DIR .. "src/devices/cpu/arcompact/arcompact_make.py" , GEN_DIR .. "emu/cpu/arcompact/arcompact.inc", { MAME_DIR .. "src/devices/cpu/arcompact/arcompact_make.py" }, {"@echo Generating arcompact source .inc files...", PYTHON .. " $(1) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/arcompact/arcompact_make.py" , GEN_DIR .. "emu/cpu/arcompact/arcompact.hxx", { MAME_DIR .. "src/devices/cpu/arcompact/arcompact_make.py" }, {"@echo Generating ARCOMPACT source files...", PYTHON .. " $(1) $(@)" }}, } end @@ -129,10 +129,10 @@ if (CPUS["ARM7"]~=null) then MAME_DIR .. "src/devices/cpu/arm7/lpc210x.cpp", MAME_DIR .. "src/devices/cpu/arm7/lpc210x.h", MAME_DIR .. "src/devices/cpu/arm7/arm7core.h", - MAME_DIR .. "src/devices/cpu/arm7/arm7core.inc", - MAME_DIR .. "src/devices/cpu/arm7/arm7drc.inc", + MAME_DIR .. "src/devices/cpu/arm7/arm7core.hxx", + MAME_DIR .. "src/devices/cpu/arm7/arm7drc.hxx", MAME_DIR .. "src/devices/cpu/arm7/arm7help.h", - MAME_DIR .. "src/devices/cpu/arm7/arm7tdrc.inc", + MAME_DIR .. "src/devices/cpu/arm7/arm7tdrc.hxx", } end @@ -198,7 +198,7 @@ if (CPUS["ADSP21XX"]~=null) then files { MAME_DIR .. "src/devices/cpu/adsp2100/adsp2100.cpp", MAME_DIR .. "src/devices/cpu/adsp2100/adsp2100.h", - MAME_DIR .. "src/devices/cpu/adsp2100/2100ops.inc", + MAME_DIR .. "src/devices/cpu/adsp2100/2100ops.hxx", } end @@ -215,12 +215,12 @@ if (CPUS["ADSP21062"]~=null) then files { MAME_DIR .. "src/devices/cpu/sharc/sharc.cpp", MAME_DIR .. "src/devices/cpu/sharc/sharc.h", - MAME_DIR .. "src/devices/cpu/sharc/compute.inc", - MAME_DIR .. "src/devices/cpu/sharc/sharcdma.inc", + MAME_DIR .. "src/devices/cpu/sharc/compute.hxx", + MAME_DIR .. "src/devices/cpu/sharc/sharcdma.hxx", MAME_DIR .. "src/devices/cpu/sharc/sharcdsm.h", - MAME_DIR .. "src/devices/cpu/sharc/sharcmem.inc", + MAME_DIR .. "src/devices/cpu/sharc/sharcmem.hxx", MAME_DIR .. "src/devices/cpu/sharc/sharcops.h", - MAME_DIR .. "src/devices/cpu/sharc/sharcops.inc", + MAME_DIR .. "src/devices/cpu/sharc/sharcops.hxx", } end @@ -253,7 +253,7 @@ if (CPUS["DSP16A"]~=null) then files { MAME_DIR .. "src/devices/cpu/dsp16/dsp16.cpp", MAME_DIR .. "src/devices/cpu/dsp16/dsp16.h", - MAME_DIR .. "src/devices/cpu/dsp16/dsp16ops.inc", + MAME_DIR .. "src/devices/cpu/dsp16/dsp16ops.hxx", } end @@ -270,7 +270,7 @@ if (CPUS["DSP32C"]~=null) then files { MAME_DIR .. "src/devices/cpu/dsp32/dsp32.cpp", MAME_DIR .. "src/devices/cpu/dsp32/dsp32.h", - MAME_DIR .. "src/devices/cpu/dsp32/dsp32ops.inc", + MAME_DIR .. "src/devices/cpu/dsp32/dsp32ops.hxx", } end @@ -382,7 +382,7 @@ if (CPUS["E0C6200"]~=null) then MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200.h", MAME_DIR .. "src/devices/cpu/e0c6200/e0c6s46.cpp", MAME_DIR .. "src/devices/cpu/e0c6200/e0c6s46.h", - MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200op.inc", + MAME_DIR .. "src/devices/cpu/e0c6200/e0c6200op.cpp", } end @@ -415,7 +415,7 @@ if (CPUS["COP400"]~=null) then files { MAME_DIR .. "src/devices/cpu/cop400/cop400.cpp", MAME_DIR .. "src/devices/cpu/cop400/cop400.h", - MAME_DIR .. "src/devices/cpu/cop400/cop400op.inc", + MAME_DIR .. "src/devices/cpu/cop400/cop400op.hxx", } end @@ -466,8 +466,8 @@ if (CPUS["T11"]~=null) then files { MAME_DIR .. "src/devices/cpu/t11/t11.cpp", MAME_DIR .. "src/devices/cpu/t11/t11.h", - MAME_DIR .. "src/devices/cpu/t11/t11ops.inc", - MAME_DIR .. "src/devices/cpu/t11/t11table.inc", + MAME_DIR .. "src/devices/cpu/t11/t11ops.hxx", + MAME_DIR .. "src/devices/cpu/t11/t11table.hxx", } end @@ -566,30 +566,36 @@ if (CPUS["H8"]~=null) then MAME_DIR .. "src/devices/cpu/h8/h8s2655.h", MAME_DIR .. "src/devices/cpu/h8/h8_adc.cpp", MAME_DIR .. "src/devices/cpu/h8/h8_adc.h", - MAME_DIR .. "src/devices/cpu/h8/h8_port.cpp", - MAME_DIR .. "src/devices/cpu/h8/h8_port.h", + MAME_DIR .. "src/devices/cpu/h8/h8_dma.cpp", + MAME_DIR .. "src/devices/cpu/h8/h8_dma.h", + MAME_DIR .. "src/devices/cpu/h8/h8_dtc.cpp", + MAME_DIR .. "src/devices/cpu/h8/h8_dtc.h", MAME_DIR .. "src/devices/cpu/h8/h8_intc.cpp", MAME_DIR .. "src/devices/cpu/h8/h8_intc.h", + MAME_DIR .. "src/devices/cpu/h8/h8_port.cpp", + MAME_DIR .. "src/devices/cpu/h8/h8_port.h", MAME_DIR .. "src/devices/cpu/h8/h8_timer8.cpp", MAME_DIR .. "src/devices/cpu/h8/h8_timer8.h", MAME_DIR .. "src/devices/cpu/h8/h8_timer16.cpp", MAME_DIR .. "src/devices/cpu/h8/h8_timer16.h", MAME_DIR .. "src/devices/cpu/h8/h8_sci.cpp", MAME_DIR .. "src/devices/cpu/h8/h8_sci.h", + MAME_DIR .. "src/devices/cpu/h8/h8_watchdog.cpp", + MAME_DIR .. "src/devices/cpu/h8/h8_watchdog.h", } dependency { - { MAME_DIR .. "src/devices/cpu/h8/h8.cpp", GEN_DIR .. "emu/cpu/h8/h8.inc" }, - { MAME_DIR .. "src/devices/cpu/h8/h8h.cpp", GEN_DIR .. "emu/cpu/h8/h8h.inc" }, - { MAME_DIR .. "src/devices/cpu/h8/h8s2000.cpp", GEN_DIR .. "emu/cpu/h8/h8s2000.inc" }, - { MAME_DIR .. "src/devices/cpu/h8/h8s2600.cpp", GEN_DIR .. "emu/cpu/h8/h8s2600.inc" }, + { MAME_DIR .. "src/devices/cpu/h8/h8.cpp", GEN_DIR .. "emu/cpu/h8/h8.hxx" }, + { MAME_DIR .. "src/devices/cpu/h8/h8h.cpp", GEN_DIR .. "emu/cpu/h8/h8h.hxx" }, + { MAME_DIR .. "src/devices/cpu/h8/h8s2000.cpp", GEN_DIR .. "emu/cpu/h8/h8s2000.hxx" }, + { MAME_DIR .. "src/devices/cpu/h8/h8s2600.cpp", GEN_DIR .. "emu/cpu/h8/h8s2600.hxx" }, } custombuildtask { - { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8.inc", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300 source file...", PYTHON .. " $(1) $(<) o $(@)" }}, - { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8h.inc", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300H source file...", PYTHON .. " $(1) $(<) h $(@)" }}, - { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2000.inc", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2000 source file...", PYTHON .. " $(1) $(<) s20 $(@)" }}, - { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2600.inc", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2600 source file...", PYTHON .. " $(1) $(<) s26 $(@)" }}, + { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300 source file...", PYTHON .. " $(1) $(<) o $(@)" }}, + { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8h.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8-300H source file...", PYTHON .. " $(1) $(<) h $(@)" }}, + { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2000.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2000 source file...", PYTHON .. " $(1) $(<) s20 $(@)" }}, + { MAME_DIR .. "src/devices/cpu/h8/h8.lst" , GEN_DIR .. "emu/cpu/h8/h8s2600.hxx", { MAME_DIR .. "src/devices/cpu/h8/h8make.py" }, {"@echo Generating H8S/2600 source file...", PYTHON .. " $(1) $(<) s26 $(@)" }}, } end @@ -713,7 +719,7 @@ if (CPUS["E1"]~=null) then files { MAME_DIR .. "src/devices/cpu/e132xs/e132xs.cpp", MAME_DIR .. "src/devices/cpu/e132xs/e132xs.h", - MAME_DIR .. "src/devices/cpu/e132xs/e132xsop.inc", + MAME_DIR .. "src/devices/cpu/e132xs/e132xsop.hxx", } end @@ -846,7 +852,7 @@ if (CPUS["MCS51"]~=null) then files { MAME_DIR .. "src/devices/cpu/mcs51/mcs51.cpp", MAME_DIR .. "src/devices/cpu/mcs51/mcs51.h", - MAME_DIR .. "src/devices/cpu/mcs51/mcs51ops.inc", + MAME_DIR .. "src/devices/cpu/mcs51/mcs51ops.hxx", } end @@ -869,15 +875,15 @@ if (CPUS["MCS96"]~=null) then MAME_DIR .. "src/devices/cpu/mcs96/i8xc196.h", } dependency { - { MAME_DIR .. "src/devices/cpu/mcs96/mcs96.cpp", GEN_DIR .. "emu/cpu/mcs96/mcs96.inc" }, - { MAME_DIR .. "src/devices/cpu/mcs96/i8x9x.cpp", GEN_DIR .. "emu/cpu/mcs96/i8x9x.inc" }, - { MAME_DIR .. "src/devices/cpu/mcs96/i8xc196.cpp", GEN_DIR .. "emu/cpu/mcs96/i8xc196.inc" }, + { MAME_DIR .. "src/devices/cpu/mcs96/mcs96.cpp", GEN_DIR .. "emu/cpu/mcs96/mcs96.hxx" }, + { MAME_DIR .. "src/devices/cpu/mcs96/i8x9x.cpp", GEN_DIR .. "emu/cpu/mcs96/i8x9x.hxx" }, + { MAME_DIR .. "src/devices/cpu/mcs96/i8xc196.cpp", GEN_DIR .. "emu/cpu/mcs96/i8xc196.hxx" }, } custombuildtask { - { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/mcs96.inc", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating mcs96 source file...", PYTHON .. " $(1) mcs96 $(<) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8x9x.inc", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8x9x source file...", PYTHON .. " $(1) i8x9x $(<) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8xc196.inc", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8xc196 source file...", PYTHON .. " $(1) i8xc196 $(<) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/mcs96.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating mcs96 source file...", PYTHON .. " $(1) mcs96 $(<) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8x9x.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8x9x source file...", PYTHON .. " $(1) i8x9x $(<) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/mcs96/mcs96ops.lst" , GEN_DIR .. "emu/cpu/mcs96/i8xc196.hxx", { MAME_DIR .. "src/devices/cpu/mcs96/mcs96make.py" }, {"@echo Generating i8xc196 source file...", PYTHON .. " $(1) i8xc196 $(<) $(@)" }}, } end @@ -909,14 +915,14 @@ if (CPUS["I386"]~=null) then MAME_DIR .. "src/devices/cpu/i386/i386.cpp", MAME_DIR .. "src/devices/cpu/i386/i386.h", MAME_DIR .. "src/devices/cpu/i386/cycles.h", - MAME_DIR .. "src/devices/cpu/i386/i386op16.inc", - MAME_DIR .. "src/devices/cpu/i386/i386op32.inc", + MAME_DIR .. "src/devices/cpu/i386/i386op16.hxx", + MAME_DIR .. "src/devices/cpu/i386/i386op32.hxx", MAME_DIR .. "src/devices/cpu/i386/i386ops.h", - MAME_DIR .. "src/devices/cpu/i386/i386ops.inc", + MAME_DIR .. "src/devices/cpu/i386/i386ops.hxx", MAME_DIR .. "src/devices/cpu/i386/i386priv.h", - MAME_DIR .. "src/devices/cpu/i386/i486ops.inc", - MAME_DIR .. "src/devices/cpu/i386/pentops.inc", - MAME_DIR .. "src/devices/cpu/i386/x87ops.inc", + MAME_DIR .. "src/devices/cpu/i386/i486ops.hxx", + MAME_DIR .. "src/devices/cpu/i386/pentops.hxx", + MAME_DIR .. "src/devices/cpu/i386/x87ops.hxx", } end @@ -934,7 +940,7 @@ if (CPUS["I860"]~=null) then MAME_DIR .. "src/devices/cpu/i860/i860.cpp", MAME_DIR .. "src/devices/cpu/i860/i860.h", --MAME_DIR .. "src/devices/cpu/i860/i860dasm.cpp", - MAME_DIR .. "src/devices/cpu/i860/i860dec.inc", + MAME_DIR .. "src/devices/cpu/i860/i860dec.hxx", } end @@ -968,7 +974,7 @@ if (CPUS["LH5801"]~=null) then files { MAME_DIR .. "src/devices/cpu/lh5801/lh5801.cpp", MAME_DIR .. "src/devices/cpu/lh5801/lh5801.h", - MAME_DIR .. "src/devices/cpu/lh5801/5801tbl.inc", + MAME_DIR .. "src/devices/cpu/lh5801/5801tbl.hxx", } end @@ -1026,7 +1032,7 @@ end -------------------------------------------------- -- Fujitsu MB86235 ---@src/devices/cpu/mb86233/mb86235.h,CPUS["MB86235"] = true +--@src/devices/cpu/mb86235/mb86235.h,CPUS["MB86235"] = true -------------------------------------------------- if (CPUS["MB86235"]~=null) then @@ -1076,14 +1082,27 @@ end -------------------------------------------------- -- MIPS R3000 (MIPS I/II) series +--@src/devices/cpu/mips/r3000.h,CPUS["R3000"] = true +-------------------------------------------------- + +if (CPUS["R3000"]~=null) then + files { + MAME_DIR .. "src/devices/cpu/mips/r3000.cpp", + MAME_DIR .. "src/devices/cpu/mips/r3000.h", + } +end + +if (CPUS["R3000"]~=null or _OPTIONS["with-tools"]) then + table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/r3kdasm.cpp") +end + +-------------------------------------------------- -- MIPS R4000 (MIPS III/IV) series --@src/devices/cpu/mips/mips3.h,CPUS["MIPS"] = true -------------------------------------------------- if (CPUS["MIPS"]~=null) then files { - MAME_DIR .. "src/devices/cpu/mips/r3000.cpp", - MAME_DIR .. "src/devices/cpu/mips/r3000.h", MAME_DIR .. "src/devices/cpu/mips/mips3com.cpp", MAME_DIR .. "src/devices/cpu/mips/mips3com.h", MAME_DIR .. "src/devices/cpu/mips/mips3.cpp", @@ -1095,7 +1114,6 @@ if (CPUS["MIPS"]~=null) then end if (CPUS["MIPS"]~=null or _OPTIONS["with-tools"]) then - table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/r3kdasm.cpp") table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/mips/mips3dsm.cpp") end @@ -1235,30 +1253,30 @@ if (CPUS["M6502"]~=null) then } dependency { - { MAME_DIR .. "src/devices/cpu/m6502/deco16.cpp", GEN_DIR .. "emu/cpu/m6502/deco16.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/m4510.cpp", GEN_DIR .. "emu/cpu/m6502/m4510.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/m6502.cpp", GEN_DIR .. "emu/cpu/m6502/m6502.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/m65c02.cpp", GEN_DIR .. "emu/cpu/m6502/m65c02.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/m65ce02.cpp", GEN_DIR .. "emu/cpu/m6502/m65ce02.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/m6509.cpp", GEN_DIR .. "emu/cpu/m6502/m6509.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/m6510.cpp", GEN_DIR .. "emu/cpu/m6502/m6510.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/n2a03.cpp", GEN_DIR .. "emu/cpu/m6502/n2a03.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/r65c02.cpp", GEN_DIR .. "emu/cpu/m6502/r65c02.inc" }, - { MAME_DIR .. "src/devices/cpu/m6502/m740.cpp", GEN_DIR .. "emu/cpu/m6502/m740.inc" }, + { MAME_DIR .. "src/devices/cpu/m6502/deco16.cpp", GEN_DIR .. "emu/cpu/m6502/deco16.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/m4510.cpp", GEN_DIR .. "emu/cpu/m6502/m4510.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/m6502.cpp", GEN_DIR .. "emu/cpu/m6502/m6502.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/m65c02.cpp", GEN_DIR .. "emu/cpu/m6502/m65c02.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/m65ce02.cpp", GEN_DIR .. "emu/cpu/m6502/m65ce02.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/m6509.cpp", GEN_DIR .. "emu/cpu/m6502/m6509.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/m6510.cpp", GEN_DIR .. "emu/cpu/m6502/m6510.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/n2a03.cpp", GEN_DIR .. "emu/cpu/m6502/n2a03.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/r65c02.cpp", GEN_DIR .. "emu/cpu/m6502/r65c02.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6502/m740.cpp", GEN_DIR .. "emu/cpu/m6502/m740.hxx" }, } custombuildtask { - { MAME_DIR .. "src/devices/cpu/m6502/odeco16.lst", GEN_DIR .. "emu/cpu/m6502/deco16.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/ddeco16.lst" }, {"@echo Generating deco16 source file...", PYTHON .. " $(1) deco16_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/om4510.lst", GEN_DIR .. "emu/cpu/m6502/m4510.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm4510.lst" }, {"@echo Generating m4510 source file...", PYTHON .. " $(1) m4510_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/om6502.lst", GEN_DIR .. "emu/cpu/m6502/m6502.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6502.lst" }, {"@echo Generating m6502 source file...", PYTHON .. " $(1) m6502_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/om65c02.lst", GEN_DIR .. "emu/cpu/m6502/m65c02.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65c02.lst" }, {"@echo Generating m65c02 source file...", PYTHON .. " $(1) m65c02_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/om65ce02.lst",GEN_DIR .. "emu/cpu/m6502/m65ce02.inc",{ MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65ce02.lst" }, {"@echo Generating m65ce02 source file...", PYTHON .. " $(1) m65ce02_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/om6509.lst", GEN_DIR .. "emu/cpu/m6502/m6509.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6509.lst" }, {"@echo Generating m6509 source file...", PYTHON .. " $(1) m6509_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/om6510.lst", GEN_DIR .. "emu/cpu/m6502/m6510.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6510.lst" }, {"@echo Generating m6510 source file...", PYTHON .. " $(1) m6510_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/on2a03.lst", GEN_DIR .. "emu/cpu/m6502/n2a03.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dn2a03.lst" }, {"@echo Generating n2a03 source file...", PYTHON .. " $(1) n2a03_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/om740.lst" , GEN_DIR .. "emu/cpu/m6502/m740.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm740.lst" }, {"@echo Generating m740 source file...", PYTHON .. " $(1) m740_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/odeco16.lst", GEN_DIR .. "emu/cpu/m6502/deco16.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/ddeco16.lst" }, {"@echo Generating deco16 source file...", PYTHON .. " $(1) deco16_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/om4510.lst", GEN_DIR .. "emu/cpu/m6502/m4510.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm4510.lst" }, {"@echo Generating m4510 source file...", PYTHON .. " $(1) m4510_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/om6502.lst", GEN_DIR .. "emu/cpu/m6502/m6502.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6502.lst" }, {"@echo Generating m6502 source file...", PYTHON .. " $(1) m6502_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/om65c02.lst", GEN_DIR .. "emu/cpu/m6502/m65c02.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65c02.lst" }, {"@echo Generating m65c02 source file...", PYTHON .. " $(1) m65c02_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/om65ce02.lst",GEN_DIR .. "emu/cpu/m6502/m65ce02.hxx",{ MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm65ce02.lst" }, {"@echo Generating m65ce02 source file...", PYTHON .. " $(1) m65ce02_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/om6509.lst", GEN_DIR .. "emu/cpu/m6502/m6509.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6509.lst" }, {"@echo Generating m6509 source file...", PYTHON .. " $(1) m6509_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/om6510.lst", GEN_DIR .. "emu/cpu/m6502/m6510.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm6510.lst" }, {"@echo Generating m6510 source file...", PYTHON .. " $(1) m6510_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/on2a03.lst", GEN_DIR .. "emu/cpu/m6502/n2a03.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dn2a03.lst" }, {"@echo Generating n2a03 source file...", PYTHON .. " $(1) n2a03_device $(<) $(2) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/om740.lst" , GEN_DIR .. "emu/cpu/m6502/m740.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py", MAME_DIR .. "src/devices/cpu/m6502/dm740.lst" }, {"@echo Generating m740 source file...", PYTHON .. " $(1) m740_device $(<) $(2) $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6502/dr65c02.lst", GEN_DIR .. "emu/cpu/m6502/r65c02.inc", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py" }, {"@echo Generating r65c02 source file...", PYTHON .. " $(1) r65c02_device - $(<) $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6502/dr65c02.lst", GEN_DIR .. "emu/cpu/m6502/r65c02.hxx", { MAME_DIR .. "src/devices/cpu/m6502/m6502make.py" }, {"@echo Generating r65c02 source file...", PYTHON .. " $(1) r65c02_device - $(<) $(@)" }}, } end @@ -1271,8 +1289,8 @@ if (CPUS["M6800"]~=null) then files { MAME_DIR .. "src/devices/cpu/m6800/m6800.cpp", MAME_DIR .. "src/devices/cpu/m6800/m6800.h", - MAME_DIR .. "src/devices/cpu/m6800/6800ops.inc", - MAME_DIR .. "src/devices/cpu/m6800/6800tbl.inc", + MAME_DIR .. "src/devices/cpu/m6800/6800ops.hxx", + MAME_DIR .. "src/devices/cpu/m6800/6800tbl.hxx", } end @@ -1289,7 +1307,7 @@ if (CPUS["M6805"]~=null) then files { MAME_DIR .. "src/devices/cpu/m6805/m6805.cpp", MAME_DIR .. "src/devices/cpu/m6805/m6805.h", - MAME_DIR .. "src/devices/cpu/m6805/6805ops.inc", + MAME_DIR .. "src/devices/cpu/m6805/6805ops.hxx", } end @@ -1316,15 +1334,15 @@ if (CPUS["M6809"]~=null) then } dependency { - { MAME_DIR .. "src/devices/cpu/m6809/m6809.cpp", GEN_DIR .. "emu/cpu/m6809/m6809.inc" }, - { MAME_DIR .. "src/devices/cpu/m6809/hd6309.cpp", GEN_DIR .. "emu/cpu/m6809/hd6309.inc" }, - { MAME_DIR .. "src/devices/cpu/m6809/konami.cpp", GEN_DIR .. "emu/cpu/m6809/konami.inc" }, + { MAME_DIR .. "src/devices/cpu/m6809/m6809.cpp", GEN_DIR .. "emu/cpu/m6809/m6809.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6809/hd6309.cpp", GEN_DIR .. "emu/cpu/m6809/hd6309.hxx" }, + { MAME_DIR .. "src/devices/cpu/m6809/konami.cpp", GEN_DIR .. "emu/cpu/m6809/konami.hxx" }, } custombuildtask { - { MAME_DIR .. "src/devices/cpu/m6809/m6809.ops" , GEN_DIR .. "emu/cpu/m6809/m6809.inc", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating m6809 source file...", PYTHON .. " $(1) $(<) > $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6809/hd6309.ops" , GEN_DIR .. "emu/cpu/m6809/hd6309.inc", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating hd6309 source file...", PYTHON .. " $(1) $(<) > $(@)" }}, - { MAME_DIR .. "src/devices/cpu/m6809/konami.ops" , GEN_DIR .. "emu/cpu/m6809/konami.inc", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating konami source file...", PYTHON .. " $(1) $(<) > $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6809/m6809.ops" , GEN_DIR .. "emu/cpu/m6809/m6809.hxx", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating m6809 source file...", PYTHON .. " $(1) $(<) > $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6809/hd6309.ops" , GEN_DIR .. "emu/cpu/m6809/hd6309.hxx", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating hd6309 source file...", PYTHON .. " $(1) $(<) > $(@)" }}, + { MAME_DIR .. "src/devices/cpu/m6809/konami.ops" , GEN_DIR .. "emu/cpu/m6809/konami.hxx", { MAME_DIR .. "src/devices/cpu/m6809/m6809make.py" , MAME_DIR .. "src/devices/cpu/m6809/base6x09.ops" }, {"@echo Generating konami source file...", PYTHON .. " $(1) $(<) > $(@)" }}, } end @@ -1344,7 +1362,7 @@ if (CPUS["MC68HC11"]~=null) then MAME_DIR .. "src/devices/cpu/mc68hc11/mc68hc11.cpp", MAME_DIR .. "src/devices/cpu/mc68hc11/mc68hc11.h", MAME_DIR .. "src/devices/cpu/mc68hc11/hc11ops.h", - MAME_DIR .. "src/devices/cpu/mc68hc11/hc11ops.inc", + MAME_DIR .. "src/devices/cpu/mc68hc11/hc11ops.hxx", } end @@ -1364,7 +1382,7 @@ if (CPUS["M680X0"]~=null) then MAME_DIR .. "src/devices/cpu/m68000/m68kops.cpp", MAME_DIR .. "src/devices/cpu/m68000/m68kops.h", MAME_DIR .. "src/devices/cpu/m68000/m68000.h", - MAME_DIR .. "src/devices/cpu/m68000/m68kfpu.inc", + MAME_DIR .. "src/devices/cpu/m68000/m68kfpu.hxx", --MAME_DIR .. "src/devices/cpu/m68000/m68kmake.cpp", MAME_DIR .. "src/devices/cpu/m68000/m68kmmu.h", --MAME_DIR .. "src/devices/cpu/m68000/m68k_in.cpp", @@ -1389,7 +1407,7 @@ if (CPUS["DSP56156"]~=null) then MAME_DIR .. "src/devices/cpu/dsp56k/dsp56pcu.cpp", MAME_DIR .. "src/devices/cpu/dsp56k/dsp56pcu.h", MAME_DIR .. "src/devices/cpu/dsp56k/dsp56def.h", - MAME_DIR .. "src/devices/cpu/dsp56k/dsp56ops.inc", + MAME_DIR .. "src/devices/cpu/dsp56k/dsp56ops.hxx", MAME_DIR .. "src/devices/cpu/dsp56k/inst.h", MAME_DIR .. "src/devices/cpu/dsp56k/opcode.h", MAME_DIR .. "src/devices/cpu/dsp56k/pmove.h", @@ -1476,12 +1494,12 @@ if (CPUS["NEC"]~=null) then MAME_DIR .. "src/devices/cpu/nec/nec.h", MAME_DIR .. "src/devices/cpu/nec/necea.h", MAME_DIR .. "src/devices/cpu/nec/necinstr.h", - MAME_DIR .. "src/devices/cpu/nec/necinstr.inc", + MAME_DIR .. "src/devices/cpu/nec/necinstr.hxx", MAME_DIR .. "src/devices/cpu/nec/necmacro.h", MAME_DIR .. "src/devices/cpu/nec/necmodrm.h", MAME_DIR .. "src/devices/cpu/nec/necpriv.h", MAME_DIR .. "src/devices/cpu/nec/v25instr.h", - MAME_DIR .. "src/devices/cpu/nec/v25instr.inc", + MAME_DIR .. "src/devices/cpu/nec/v25instr.hxx", MAME_DIR .. "src/devices/cpu/nec/v25priv.h", MAME_DIR .. "src/devices/cpu/nec/v25.cpp", MAME_DIR .. "src/devices/cpu/nec/v25.h", @@ -1515,18 +1533,18 @@ if (CPUS["V60"]~=null) then files { MAME_DIR .. "src/devices/cpu/v60/v60.cpp", MAME_DIR .. "src/devices/cpu/v60/v60.h", - MAME_DIR .. "src/devices/cpu/v60/am.inc", - MAME_DIR .. "src/devices/cpu/v60/am1.inc", - MAME_DIR .. "src/devices/cpu/v60/am2.inc", - MAME_DIR .. "src/devices/cpu/v60/am3.inc", - MAME_DIR .. "src/devices/cpu/v60/op12.inc", - MAME_DIR .. "src/devices/cpu/v60/op2.inc", - MAME_DIR .. "src/devices/cpu/v60/op3.inc", - MAME_DIR .. "src/devices/cpu/v60/op4.inc", - MAME_DIR .. "src/devices/cpu/v60/op5.inc", - MAME_DIR .. "src/devices/cpu/v60/op6.inc", - MAME_DIR .. "src/devices/cpu/v60/op7a.inc", - MAME_DIR .. "src/devices/cpu/v60/optable.inc", + MAME_DIR .. "src/devices/cpu/v60/am.hxx", + MAME_DIR .. "src/devices/cpu/v60/am1.hxx", + MAME_DIR .. "src/devices/cpu/v60/am2.hxx", + MAME_DIR .. "src/devices/cpu/v60/am3.hxx", + MAME_DIR .. "src/devices/cpu/v60/op12.hxx", + MAME_DIR .. "src/devices/cpu/v60/op2.hxx", + MAME_DIR .. "src/devices/cpu/v60/op3.hxx", + MAME_DIR .. "src/devices/cpu/v60/op4.hxx", + MAME_DIR .. "src/devices/cpu/v60/op5.hxx", + MAME_DIR .. "src/devices/cpu/v60/op6.hxx", + MAME_DIR .. "src/devices/cpu/v60/op7a.hxx", + MAME_DIR .. "src/devices/cpu/v60/optable.hxx", } end @@ -1697,8 +1715,8 @@ if (CPUS["SATURN"]~=null) then files { MAME_DIR .. "src/devices/cpu/saturn/saturn.cpp", MAME_DIR .. "src/devices/cpu/saturn/saturn.h", - MAME_DIR .. "src/devices/cpu/saturn/satops.inc", - MAME_DIR .. "src/devices/cpu/saturn/sattable.inc", + MAME_DIR .. "src/devices/cpu/saturn/satops.hxx", + MAME_DIR .. "src/devices/cpu/saturn/sattable.hxx", } end @@ -1775,8 +1793,8 @@ if (CPUS["SC61860"]~=null) then MAME_DIR .. "src/devices/cpu/sc61860/sc61860.cpp", MAME_DIR .. "src/devices/cpu/sc61860/sc61860.h", --MAME_DIR .. "src/devices/cpu/sc61860/readpc.cpp", - MAME_DIR .. "src/devices/cpu/sc61860/scops.inc", - MAME_DIR .. "src/devices/cpu/sc61860/sctable.inc", + MAME_DIR .. "src/devices/cpu/sc61860/scops.hxx", + MAME_DIR .. "src/devices/cpu/sc61860/sctable.hxx", } end @@ -1894,7 +1912,7 @@ if (CPUS["TMS7000"]~=null) then files { MAME_DIR .. "src/devices/cpu/tms7000/tms7000.cpp", MAME_DIR .. "src/devices/cpu/tms7000/tms7000.h", - MAME_DIR .. "src/devices/cpu/tms7000/tms70op.inc", + MAME_DIR .. "src/devices/cpu/tms7000/tms7000op.cpp", } end @@ -1907,6 +1925,7 @@ end --@src/devices/cpu/tms9900/tms9900.h,CPUS["TMS9900"] = true --@src/devices/cpu/tms9900/tms9980a.h,CPUS["TMS9900"] = true --@src/devices/cpu/tms9900/tms9995.h,CPUS["TMS9900"] = true +--@src/devices/cpu/tms9900/ti990_10.h,CPUS["TMS9900"] = true -------------------------------------------------- if (CPUS["TMS9900"]~=null) then @@ -1936,11 +1955,11 @@ if (CPUS["TMS340X0"]~=null) then files { MAME_DIR .. "src/devices/cpu/tms34010/tms34010.cpp", MAME_DIR .. "src/devices/cpu/tms34010/tms34010.h", - MAME_DIR .. "src/devices/cpu/tms34010/34010fld.inc", - MAME_DIR .. "src/devices/cpu/tms34010/34010gfx.inc", + MAME_DIR .. "src/devices/cpu/tms34010/34010fld.hxx", + MAME_DIR .. "src/devices/cpu/tms34010/34010gfx.hxx", MAME_DIR .. "src/devices/cpu/tms34010/34010ops.h", - MAME_DIR .. "src/devices/cpu/tms34010/34010ops.inc", - MAME_DIR .. "src/devices/cpu/tms34010/34010tbl.inc", + MAME_DIR .. "src/devices/cpu/tms34010/34010ops.hxx", + MAME_DIR .. "src/devices/cpu/tms34010/34010tbl.hxx", --MAME_DIR .. "src/devices/cpu/tms34010/dis34010.cpp", } end @@ -1992,7 +2011,7 @@ if (CPUS["TMS32031"]~=null) then files { MAME_DIR .. "src/devices/cpu/tms32031/tms32031.cpp", MAME_DIR .. "src/devices/cpu/tms32031/tms32031.h", - MAME_DIR .. "src/devices/cpu/tms32031/32031ops.inc", + MAME_DIR .. "src/devices/cpu/tms32031/32031ops.hxx", } end @@ -2010,7 +2029,7 @@ if (CPUS["TMS32051"]~=null) then MAME_DIR .. "src/devices/cpu/tms32051/tms32051.cpp", MAME_DIR .. "src/devices/cpu/tms32051/tms32051.h", MAME_DIR .. "src/devices/cpu/tms32051/32051ops.h", - MAME_DIR .. "src/devices/cpu/tms32051/32051ops.inc", + MAME_DIR .. "src/devices/cpu/tms32051/32051ops.hxx", } end @@ -2048,18 +2067,18 @@ if (CPUS["TMS57002"]~=null) then MAME_DIR .. "src/devices/cpu/tms57002/tms57kdec.cpp", } dependency { - { MAME_DIR .. "src/devices/cpu/tms57002/tms57kdec.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.inc" }, - { MAME_DIR .. "src/devices/cpu/tms57002/tms57002.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.inc" }, + { MAME_DIR .. "src/devices/cpu/tms57002/tms57kdec.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx" }, + { MAME_DIR .. "src/devices/cpu/tms57002/tms57002.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx" }, } custombuildtask { - { MAME_DIR .. "src/devices/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002.inc", { MAME_DIR .. "src/devices/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", PYTHON .. " $(1) $(<) $(@)" } } + { MAME_DIR .. "src/devices/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx", { MAME_DIR .. "src/devices/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", PYTHON .. " $(1) $(<) $(@)" } } } end if (CPUS["TMS57002"]~=null or _OPTIONS["with-tools"]) then table.insert(disasm_files , MAME_DIR .. "src/devices/cpu/tms57002/57002dsm.cpp") - table.insert(disasm_dependency , { MAME_DIR .. "src/devices/cpu/tms57002/57002dsm.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.inc" } ) - table.insert(disasm_custombuildtask , { MAME_DIR .. "src/devices/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002.inc", { MAME_DIR .. "src/devices/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", PYTHON .. " $(1) $(<) $(@)" }}) + table.insert(disasm_dependency , { MAME_DIR .. "src/devices/cpu/tms57002/57002dsm.cpp", GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx" } ) + table.insert(disasm_custombuildtask , { MAME_DIR .. "src/devices/cpu/tms57002/tmsinstr.lst" , GEN_DIR .. "emu/cpu/tms57002/tms57002.hxx", { MAME_DIR .. "src/devices/cpu/tms57002/tmsmake.py" }, {"@echo Generating TMS57002 source file...", PYTHON .. " $(1) $(<) $(@)" }}) end -------------------------------------------------- @@ -2083,7 +2102,7 @@ if (CPUS["TLCS900"]~=null) then files { MAME_DIR .. "src/devices/cpu/tlcs900/tlcs900.cpp", MAME_DIR .. "src/devices/cpu/tlcs900/tlcs900.h", - MAME_DIR .. "src/devices/cpu/tlcs900/900tbl.inc", + MAME_DIR .. "src/devices/cpu/tlcs900/900tbl.hxx", } end @@ -2125,8 +2144,8 @@ if (CPUS["LR35902"]~=null) then files { MAME_DIR .. "src/devices/cpu/lr35902/lr35902.cpp", MAME_DIR .. "src/devices/cpu/lr35902/lr35902.h", - MAME_DIR .. "src/devices/cpu/lr35902/opc_cb.inc", - MAME_DIR .. "src/devices/cpu/lr35902/opc_main.inc", + MAME_DIR .. "src/devices/cpu/lr35902/opc_cb.hxx", + MAME_DIR .. "src/devices/cpu/lr35902/opc_main.hxx", } end @@ -2143,14 +2162,14 @@ if (CPUS["Z180"]~=null) then files { MAME_DIR .. "src/devices/cpu/z180/z180.cpp", MAME_DIR .. "src/devices/cpu/z180/z180.h", - MAME_DIR .. "src/devices/cpu/z180/z180cb.inc", - MAME_DIR .. "src/devices/cpu/z180/z180dd.inc", - MAME_DIR .. "src/devices/cpu/z180/z180ed.inc", - MAME_DIR .. "src/devices/cpu/z180/z180fd.inc", - MAME_DIR .. "src/devices/cpu/z180/z180op.inc", + MAME_DIR .. "src/devices/cpu/z180/z180cb.hxx", + MAME_DIR .. "src/devices/cpu/z180/z180dd.hxx", + MAME_DIR .. "src/devices/cpu/z180/z180ed.hxx", + MAME_DIR .. "src/devices/cpu/z180/z180fd.hxx", + MAME_DIR .. "src/devices/cpu/z180/z180op.hxx", MAME_DIR .. "src/devices/cpu/z180/z180ops.h", MAME_DIR .. "src/devices/cpu/z180/z180tbl.h", - MAME_DIR .. "src/devices/cpu/z180/z180xy.inc", + MAME_DIR .. "src/devices/cpu/z180/z180xy.hxx", MAME_DIR .. "src/devices/cpu/z80/z80daisy.cpp", MAME_DIR .. "src/devices/cpu/z80/z80daisy.h", } @@ -2172,8 +2191,8 @@ if (CPUS["Z8000"]~=null) then --MAME_DIR .. "src/devices/cpu/z8000/makedab.cpp", MAME_DIR .. "src/devices/cpu/z8000/z8000cpu.h", MAME_DIR .. "src/devices/cpu/z8000/z8000dab.h", - MAME_DIR .. "src/devices/cpu/z8000/z8000ops.inc", - MAME_DIR .. "src/devices/cpu/z8000/z8000tbl.inc", + MAME_DIR .. "src/devices/cpu/z8000/z8000ops.hxx", + MAME_DIR .. "src/devices/cpu/z8000/z8000tbl.hxx", } end @@ -2190,7 +2209,7 @@ if (CPUS["Z8"]~=null) then files { MAME_DIR .. "src/devices/cpu/z8/z8.cpp", MAME_DIR .. "src/devices/cpu/z8/z8.h", - MAME_DIR .. "src/devices/cpu/z8/z8ops.inc", + MAME_DIR .. "src/devices/cpu/z8/z8ops.hxx", } end diff --git a/docs/release/scripts/src/devices.lua b/docs/release/scripts/src/devices.lua index 1248bcc0fe5..cbdb046f397 100644 --- a/docs/release/scripts/src/devices.lua +++ b/docs/release/scripts/src/devices.lua @@ -19,9 +19,12 @@ function devicesProject(_target, _subtarget) uuid (os.uuid("optional-" .. _target .."_" .. _subtarget)) kind (LIBTYPE) targetsubdir(_target .."_" .. _subtarget) - options { - "ArchiveSplit", - } + + if (_OPTIONS["targetos"] ~= "asmjs") then + options { + "ArchiveSplit", + } + end addprojectflags() precompiledheaders() diff --git a/docs/release/scripts/src/emu.lua b/docs/release/scripts/src/emu.lua index 2fdefe75e3e..2449faa0ae5 100644 --- a/docs/release/scripts/src/emu.lua +++ b/docs/release/scripts/src/emu.lua @@ -10,7 +10,6 @@ --------------------------------------------------------------------------- project ("emu") -targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"]) uuid ("e6fa15e4-a354-4526-acef-13c8e80fcacf") kind (LIBTYPE) @@ -173,7 +172,7 @@ files { MAME_DIR .. "src/emu/validity.h", MAME_DIR .. "src/emu/video.cpp", MAME_DIR .. "src/emu/video.h", - MAME_DIR .. "src/emu/rendersw.inc", + MAME_DIR .. "src/emu/rendersw.hxx", MAME_DIR .. "src/emu/ui/uimain.h", MAME_DIR .. "src/emu/ui/cmdrender.h", -- TODO: remove MAME_DIR .. "src/emu/ui/cmddata.h", -- TODO: remove @@ -265,7 +264,6 @@ custombuildtask { } project ("precompile") -targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"]) uuid ("a6fb15d4-b123-4445-acef-13c8e80fcacf") kind (LIBTYPE) diff --git a/docs/release/scripts/src/machine.lua b/docs/release/scripts/src/machine.lua index 1eb90f5a81a..61fba0708e9 100644 --- a/docs/release/scripts/src/machine.lua +++ b/docs/release/scripts/src/machine.lua @@ -1591,6 +1591,7 @@ end --------------------------------------------------- -- --@src/devices/machine/mos6530.h,MACHINES["MIOT6530"] = true +--@src/devices/machine/mos6530n.h,MACHINES["MIOT6530"] = true --------------------------------------------------- if (MACHINES["MIOT6530"]~=null) then @@ -1736,6 +1737,8 @@ if (MACHINES["PCI"]~=null) then MAME_DIR .. "src/devices/machine/pci-usb.h", MAME_DIR .. "src/devices/machine/pci-sata.cpp", MAME_DIR .. "src/devices/machine/pci-sata.h", + MAME_DIR .. "src/devices/machine/pci-ide.cpp", + MAME_DIR .. "src/devices/machine/pci-ide.h", MAME_DIR .. "src/devices/machine/pci-apic.cpp", MAME_DIR .. "src/devices/machine/pci-apic.h", MAME_DIR .. "src/devices/machine/pci-smbus.cpp", @@ -1987,7 +1990,7 @@ if (MACHINES["S3C2400"]~=null) then files { MAME_DIR .. "src/devices/machine/s3c2400.cpp", MAME_DIR .. "src/devices/machine/s3c2400.h", - MAME_DIR .. "src/devices/machine/s3c24xx.inc", + MAME_DIR .. "src/devices/machine/s3c24xx.hxx", } end @@ -2000,7 +2003,7 @@ if (MACHINES["S3C2410"]~=null) then files { MAME_DIR .. "src/devices/machine/s3c2410.cpp", MAME_DIR .. "src/devices/machine/s3c2410.h", - MAME_DIR .. "src/devices/machine/s3c24xx.inc", + MAME_DIR .. "src/devices/machine/s3c24xx.hxx", } end @@ -2025,18 +2028,7 @@ if (MACHINES["S3C2440"]~=null) then files { MAME_DIR .. "src/devices/machine/s3c2440.cpp", MAME_DIR .. "src/devices/machine/s3c2440.h", - MAME_DIR .. "src/devices/machine/s3c24xx.inc", - } -end - ---------------------------------------------------- --- ---@src/devices/machine/saturn.h,MACHINES["SATURN"] = true ---------------------------------------------------- - -if (MACHINES["SATURN"]~=null) then - files { - MAME_DIR .. "src/devices/machine/saturn.cpp", + MAME_DIR .. "src/devices/machine/s3c24xx.hxx", } end @@ -2084,6 +2076,7 @@ end if (MACHINES["STVCD"]~=null) then files { MAME_DIR .. "src/devices/machine/stvcd.cpp", + MAME_DIR .. "src/devices/machine/stvcd.h", } end @@ -2285,8 +2278,6 @@ if (MACHINES["UPD765"]~=null) then files { MAME_DIR .. "src/devices/machine/upd765.cpp", MAME_DIR .. "src/devices/machine/upd765.h", - MAME_DIR .. "src/devices/machine/fdc_pll.cpp", - MAME_DIR .. "src/devices/machine/fdc_pll.h", } end @@ -2311,8 +2302,6 @@ if (MACHINES["WD_FDC"]~=null) then files { MAME_DIR .. "src/devices/machine/wd_fdc.cpp", MAME_DIR .. "src/devices/machine/wd_fdc.h", - MAME_DIR .. "src/devices/machine/fdc_pll.cpp", - MAME_DIR .. "src/devices/machine/fdc_pll.h", } end @@ -2561,7 +2550,7 @@ end --------------------------------------------------- -- ---@src/devices/machine/ncr5389.h,MACHINES["NCR5390"] = true +--@src/devices/machine/ncr5390.h,MACHINES["NCR5390"] = true --------------------------------------------------- if (MACHINES["NCR5390"]~=null) then @@ -2776,7 +2765,7 @@ end --------------------------------------------------- -- ---@src/emu/machine/pdc.h,MACHINES["PDC"] = true +--@src/devices/machine/pdc.h,MACHINES["PDC"] = true --------------------------------------------------- if (MACHINES["PDC"]~=null) then @@ -2800,7 +2789,7 @@ end --------------------------------------------------- -- ---@src/devices/machine/gen_latch.h,MACHINES["GEN_LATCH] = true +--@src/devices/machine/gen_latch.h,MACHINES["GEN_LATCH"] = true --------------------------------------------------- if (MACHINES["GEN_LATCH"]~=null) then @@ -2809,3 +2798,71 @@ if (MACHINES["GEN_LATCH"]~=null) then MAME_DIR .. "src/devices/machine/gen_latch.h", } end + +--------------------------------------------------- +-- +--@src/devices/machine/fdc_pll.h,MACHINES["FDC_PLL"] = true +--------------------------------------------------- + +if (MACHINES["FDC_PLL"]~=null) then + files { + MAME_DIR .. "src/devices/machine/fdc_pll.cpp", + MAME_DIR .. "src/devices/machine/fdc_pll.h", + } +end + +--------------------------------------------------- +-- +--@src/devices/machine/watchdog.h,MACHINES["WATCHDOG"] = true +--------------------------------------------------- + +if (MACHINES["WATCHDOG"]~=null) then + files { + MAME_DIR .. "src/devices/machine/watchdog.cpp", + MAME_DIR .. "src/devices/machine/watchdog.h", + } +end + + +--------------------------------------------------- +-- +--@src/devices/machine/smartmed.h,MACHINES["SMARTMEDIA"] = true +--------------------------------------------------- +if (MACHINES["SMARTMEDIA"]~=null) then + files { + MAME_DIR .. "src/devices/machine/smartmed.cpp", + MAME_DIR .. "src/devices/machine/smartmed.h", + } +end + +--------------------------------------------------- +-- +--@src/devices/machine/appldriv.h,MACHINES["APPLE_DRIVE"] = true +--------------------------------------------------- +if (MACHINES["APPLE_DRIVE"]~=null) then + files { + MAME_DIR .. "src/devices/machine/appldriv.cpp", + MAME_DIR .. "src/devices/machine/appldriv.h", + } +end + +--------------------------------------------------- +-- +--@src/devices/machine/applefdc.h,MACHINES["APPLE_FDC"] = true +--------------------------------------------------- +if (MACHINES["APPLE_FDC"]~=null) then + files { + MAME_DIR .. "src/devices/machine/applefdc.cpp", + MAME_DIR .. "src/devices/machine/applefdc.h", + } +end +--------------------------------------------------- +-- +--@src/devices/machine/sonydriv.h,MACHINES["SONY_DRIVE"] = true +--------------------------------------------------- +if (MACHINES["SONY_DRIVE"]~=null) then + files { + MAME_DIR .. "src/devices/machine/sonydriv.cpp", + MAME_DIR .. "src/devices/machine/sonydriv.h", + } +end diff --git a/docs/release/scripts/src/main.lua b/docs/release/scripts/src/main.lua index 56c93a996ee..31b9090d6b1 100644 --- a/docs/release/scripts/src/main.lua +++ b/docs/release/scripts/src/main.lua @@ -115,21 +115,30 @@ end targetextension ".bc" if os.getenv("EMSCRIPTEN") then local emccopts = "" - emccopts = emccopts .. " -O3" - emccopts = emccopts .. " -s USE_SDL=2" - emccopts = emccopts .. " -s USE_SDL_TTF=2" - emccopts = emccopts .. " --memory-init-file 0" - emccopts = emccopts .. " -s ALLOW_MEMORY_GROWTH=0" - emccopts = emccopts .. " -s TOTAL_MEMORY=268435456" - emccopts = emccopts .. " -s DISABLE_EXCEPTION_CATCHING=2" - emccopts = emccopts .. " -s EXCEPTION_CATCHING_WHITELIST='[\"__ZN15running_machine17start_all_devicesEv\",\"__ZN12cli_frontend7executeEiPPc\"]'" - emccopts = emccopts .. " -s EXPORTED_FUNCTIONS=\"['_main', '_malloc', '__Z14js_get_machinev', '__Z9js_get_uiv', '__Z12js_get_soundv', '__ZN15mame_ui_manager12set_show_fpsEb', '__ZNK15mame_ui_manager8show_fpsEv', '__ZN13sound_manager4muteEbh', '_SDL_PauseAudio']\"" - emccopts = emccopts .. " --pre-js " .. _MAKE.esc(MAME_DIR) .. "src/osd/modules/sound/js_sound.js" - emccopts = emccopts .. " --post-js " .. _MAKE.esc(MAME_DIR) .. "scripts/resources/emscripten/emscripten_post.js" - emccopts = emccopts .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/chains@bgfx/chains" - emccopts = emccopts .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/effects@bgfx/effects" - emccopts = emccopts .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/shaders/gles@bgfx/shaders/gles" - emccopts = emccopts .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "artwork/slot-mask.png@artwork/slot-mask.png" + .. " -O3" + .. " -s USE_SDL=2" + .. " -s USE_SDL_TTF=2" + .. " --memory-init-file 0" + .. " -s ALLOW_MEMORY_GROWTH=0" + .. " -s TOTAL_MEMORY=268435456" + .. " -s DISABLE_EXCEPTION_CATCHING=2" + .. " -s EXCEPTION_CATCHING_WHITELIST='[\"__ZN15running_machine17start_all_devicesEv\",\"__ZN12cli_frontend7executeEiPPc\"]'" + .. " -s EXPORTED_FUNCTIONS=\"['_main', '_malloc', '__Z14js_get_machinev', '__Z9js_get_uiv', '__Z12js_get_soundv', '__ZN15mame_ui_manager12set_show_fpsEb', '__ZNK15mame_ui_manager8show_fpsEv', '__ZN13sound_manager4muteEbh', '_SDL_PauseAudio', '_SDL_SendKeyboardKey']\"" + .. " --pre-js " .. _MAKE.esc(MAME_DIR) .. "src/osd/modules/sound/js_sound.js" + .. " --post-js " .. _MAKE.esc(MAME_DIR) .. "scripts/resources/emscripten/emscripten_post.js" + .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/chains@bgfx/chains" + .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/effects@bgfx/effects" + .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "bgfx/shaders/gles@bgfx/shaders/gles" + .. " --embed-file " .. _MAKE.esc(MAME_DIR) .. "artwork/slot-mask.png@artwork/slot-mask.png" + + if _OPTIONS["SYMBOLS"]~=nil and _OPTIONS["SYMBOLS"]~="0" then + emccopts = emccopts .. " -g" .. _OPTIONS["SYMLEVEL"] + end + + if _OPTIONS["ARCHOPTS"] then + emccopts = emccopts .. " " .. _OPTIONS["ARCHOPTS"] + end + postbuildcommands { os.getenv("EMSCRIPTEN") .. "/emcc " .. emccopts .. " $(TARGET) -o " .. _MAKE.esc(MAME_DIR) .. _OPTIONS["target"] .. _OPTIONS["subtarget"] .. ".js", } @@ -182,15 +191,21 @@ end end end +if (STANDALONE~=true) then findfunction("linkProjects_" .. _OPTIONS["target"] .. "_" .. _OPTIONS["subtarget"])(_OPTIONS["target"], _OPTIONS["subtarget"]) +end links { "osd_" .. _OPTIONS["osd"], } links { "qtdbg_" .. _OPTIONS["osd"], } +if (STANDALONE~=true) then links { "frontend", + } +end + links { "netlist", "optional", "emu", @@ -251,6 +266,12 @@ end ext_includedir("flac"), } + +if (STANDALONE==true) then + standalone(); +end + +if (STANDALONE~=true) then if _OPTIONS["targetos"]=="macosx" and (not override_resources) then linkoptions { "-sectcreate __TEXT __info_plist " .. _MAKE.esc(GEN_DIR) .. "resource/" .. _subtarget .. "-Info.plist" @@ -295,42 +316,42 @@ end GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", } -if (_OPTIONS["SOURCES"] == nil) then + if (_OPTIONS["SOURCES"] == nil) then - if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt") then - dependency { - { - GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, - } - custombuildtask { - { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) $(2) $(<) > $(@)" }}, - } - else - if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst") then + if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt") then + dependency { + { + GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, + } custombuildtask { - { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py" }, {"@echo Building driver list...", PYTHON .. " $(1) $(<) > $(@)" }}, + { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) $(2) $(<) > $(@)" }}, } else + if os.isfile(MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst") then + custombuildtask { + { MAME_DIR .. "src/".._target .."/" .. _subtarget ..".lst" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py" }, {"@echo Building driver list...", PYTHON .. " $(1) $(<) > $(@)" }}, + } + else + dependency { + { + GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, + } + custombuildtask { + { MAME_DIR .. "src/".._target .."/" .. _target ..".lst" , GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py" }, {"@echo Building driver list...", PYTHON .. " $(1) $(<) > $(@)" }}, + } + end + end + end + + if (_OPTIONS["SOURCES"] ~= nil) then dependency { { - GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, + GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, } custombuildtask { - { MAME_DIR .. "src/".._target .."/" .. _target ..".lst" , GEN_DIR .. _target .. "/" .. _target .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py" }, {"@echo Building driver list...", PYTHON .. " $(1) $(<) > $(@)" }}, + { GEN_DIR .. _target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) $(2) $(<) > $(@)" }}, } - end end -end - -if (_OPTIONS["SOURCES"] ~= nil) then - dependency { - { - GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", MAME_DIR .. "src/".._target .."/" .. _target ..".lst", true }, - } - custombuildtask { - { GEN_DIR .. _target .."/" .. _subtarget ..".flt" , GEN_DIR .. _target .. "/" .. _subtarget .."/drivlist.cpp", { MAME_DIR .. "scripts/build/makelist.py", MAME_DIR .. "src/".._target .."/" .. _target ..".lst" }, {"@echo Building driver list...", PYTHON .. " $(1) $(2) $(<) > $(@)" }}, - } -end configuration { "mingw*" } custombuildtask { @@ -343,6 +364,7 @@ end "@echo Emitting ".. rctarget .. "vers.rc...", PYTHON .. " " .. path.translate(MAME_DIR .. "scripts/build/verinfo.py","\\") .. " -r -b " .. rctarget .. " " .. path.translate(MAME_DIR .. "src/version.cpp","\\") .. " > " .. path.translate(GEN_DIR .. "resource/" .. rctarget .. "vers.rc", "\\") , } +end configuration { } diff --git a/docs/release/scripts/src/mame/frontend.lua b/docs/release/scripts/src/mame/frontend.lua index 2e4a35bf8a9..ea9bb933cfc 100644 --- a/docs/release/scripts/src/mame/frontend.lua +++ b/docs/release/scripts/src/mame/frontend.lua @@ -10,15 +10,18 @@ --------------------------------------------------------------------------- project ("frontend") -targetsubdir(_OPTIONS["target"] .."_" .. _OPTIONS["subtarget"]) uuid ("e98e14c4-82a4-4988-ba29-01c90c817ab8") kind (LIBTYPE) addprojectflags() precompiledheaders() -options { - "ArchiveSplit", -} + +if (_OPTIONS["targetos"] ~= "asmjs") then + options { + "ArchiveSplit", + } +end + includedirs { MAME_DIR .. "src/osd", MAME_DIR .. "src/emu", diff --git a/docs/release/scripts/src/netlist.lua b/docs/release/scripts/src/netlist.lua index cb389db8d8d..aa00ec2c194 100644 --- a/docs/release/scripts/src/netlist.lua +++ b/docs/release/scripts/src/netlist.lua @@ -86,28 +86,6 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_4020.h", MAME_DIR .. "src/lib/netlist/devices/nld_4066.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_4066.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7402.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7402.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7404.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7404.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7408.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7408.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7410.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7410.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7411.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7411.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7420.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7420.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7425.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7425.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7427.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7427.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7430.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7430.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7432.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7432.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7437.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7437.h", MAME_DIR .. "src/lib/netlist/devices/nld_7448.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_7448.h", MAME_DIR .. "src/lib/netlist/devices/nld_7450.cpp", @@ -116,8 +94,6 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_7474.h", MAME_DIR .. "src/lib/netlist/devices/nld_7483.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_7483.h", - MAME_DIR .. "src/lib/netlist/devices/nld_7486.cpp", - MAME_DIR .. "src/lib/netlist/devices/nld_7486.h", MAME_DIR .. "src/lib/netlist/devices/nld_7490.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_7490.h", MAME_DIR .. "src/lib/netlist/devices/nld_7493.cpp", @@ -161,7 +137,6 @@ project "netlist" MAME_DIR .. "src/lib/netlist/devices/nld_system.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_system.h", MAME_DIR .. "src/lib/netlist/devices/nld_cmos.h", - MAME_DIR .. "src/lib/netlist/devices/nld_signal.h", MAME_DIR .. "src/lib/netlist/devices/nld_truthtable.cpp", MAME_DIR .. "src/lib/netlist/devices/nld_truthtable.h", MAME_DIR .. "src/lib/netlist/macro/nlm_ttl74xx.cpp", diff --git a/docs/release/scripts/src/osd/modules.lua b/docs/release/scripts/src/osd/modules.lua index fef235457fe..a05e55ee4c6 100644 --- a/docs/release/scripts/src/osd/modules.lua +++ b/docs/release/scripts/src/osd/modules.lua @@ -57,7 +57,6 @@ function osdmodulesbuild() MAME_DIR .. "src/osd/modules/diagnostics/none.cpp", MAME_DIR .. "src/osd/modules/diagnostics/diagnostics_win32.cpp", MAME_DIR .. "src/osd/modules/debugger/none.cpp", - MAME_DIR .. "src/osd/modules/debugger/debugint.cpp", MAME_DIR .. "src/osd/modules/debugger/debugwin.cpp", MAME_DIR .. "src/osd/modules/debugger/debugimgui.cpp", MAME_DIR .. "src/osd/modules/font/font_sdl.cpp", @@ -114,9 +113,6 @@ function osdmodulesbuild() ext_includedir("uv"), } - includedirs { - MAME_DIR .. "src/frontend/mame", -- for internal debugger - } if _OPTIONS["targetos"]=="windows" then includedirs { MAME_DIR .. "3rdparty/winpcap/Include", diff --git a/docs/release/scripts/src/osd/newui.lua b/docs/release/scripts/src/osd/newui.lua index a5527ef4b0d..a86228e7c4c 100644 --- a/docs/release/scripts/src/osd/newui.lua +++ b/docs/release/scripts/src/osd/newui.lua @@ -125,9 +125,7 @@ project ("osd_" .. _OPTIONS["osd"]) MAME_DIR .. "src/osd/modules/file", MAME_DIR .. "src/osd/modules/render", MAME_DIR .. "3rdparty", - } - - includedirs { + MAME_DIR .. "src/frontend/mame", MAME_DIR .. "src/osd/windows", } diff --git a/docs/release/scripts/src/osd/winui.lua b/docs/release/scripts/src/osd/winui.lua index 263e4f42a74..1056384647d 100644 --- a/docs/release/scripts/src/osd/winui.lua +++ b/docs/release/scripts/src/osd/winui.lua @@ -106,7 +106,7 @@ project ("qtdbg_" .. _OPTIONS["osd"]) uuid (os.uuid("qtdbg_" .. _OPTIONS["osd"])) kind (LIBTYPE) - dofile("windows_cfg.lua") + dofile("winui_cfg.lua") includedirs { MAME_DIR .. "src/emu", MAME_DIR .. "src/devices", -- accessing imagedev from debugger @@ -148,9 +148,7 @@ project ("osd_" .. _OPTIONS["osd"]) MAME_DIR .. "src/osd/modules/file", MAME_DIR .. "src/osd/modules/render", MAME_DIR .. "3rdparty", - } - - includedirs { + MAME_DIR .. "src/frontend/mame", MAME_DIR .. "src/osd/windows", } diff --git a/docs/release/scripts/src/sound.lua b/docs/release/scripts/src/sound.lua index 17f9c6aa2b2..2c54bf7f0f6 100644 --- a/docs/release/scripts/src/sound.lua +++ b/docs/release/scripts/src/sound.lua @@ -81,21 +81,21 @@ if (SOUNDS["DISCRETE"]~=null) then MAME_DIR .. "src/devices/sound/discrete.h", MAME_DIR .. "src/devices/sound/disc_cls.h", MAME_DIR .. "src/devices/sound/disc_dev.h", - MAME_DIR .. "src/devices/sound/disc_dev.inc", + MAME_DIR .. "src/devices/sound/disc_dev.hxx", MAME_DIR .. "src/devices/sound/disc_flt.h", - MAME_DIR .. "src/devices/sound/disc_flt.inc", - MAME_DIR .. "src/devices/sound/disc_inp.inc", + MAME_DIR .. "src/devices/sound/disc_flt.hxx", + MAME_DIR .. "src/devices/sound/disc_inp.hxx", MAME_DIR .. "src/devices/sound/disc_mth.h", - MAME_DIR .. "src/devices/sound/disc_mth.inc", - MAME_DIR .. "src/devices/sound/disc_sys.inc", + MAME_DIR .. "src/devices/sound/disc_mth.hxx", + MAME_DIR .. "src/devices/sound/disc_sys.hxx", MAME_DIR .. "src/devices/sound/disc_wav.h", - MAME_DIR .. "src/devices/sound/disc_wav.inc", + MAME_DIR .. "src/devices/sound/disc_wav.hxx", } end --------------------------------------------------- -- AC97 ---@src/devices/sound/pic-ac97.h,SOUNDS["AC97"] = true +--@src/devices/sound/pci-ac97.h,SOUNDS["AC97"] = true --------------------------------------------------- if (SOUNDS["AC97"]~=null) then @@ -650,9 +650,10 @@ end --@src/devices/sound/okim6376.h,SOUNDS["OKIM6376"] = true --@src/devices/sound/okim6295.h,SOUNDS["OKIM6295"] = true --@src/devices/sound/okim9810.h,SOUNDS["OKIM9810"] = true +--@src/devices/sound/okiadpcm.h,SOUNDS["OKIADPCM"] = true --------------------------------------------------- -if (SOUNDS["OKIM6258"]~=null or SOUNDS["OKIM6295"]~=null or SOUNDS["OKIM9810"]~=null or SOUNDS["I5000_SND"]~=null) then +if (SOUNDS["OKIM6258"]~=null or SOUNDS["OKIM6295"]~=null or SOUNDS["OKIM9810"]~=null or SOUNDS["I5000_SND"]~=null or SOUNDS["OKIADPCM"]~=null) then files { MAME_DIR .. "src/devices/sound/okiadpcm.cpp", MAME_DIR .. "src/devices/sound/okiadpcm.h", @@ -1013,7 +1014,7 @@ if (SOUNDS["TMS5110"]~=null) then files { MAME_DIR .. "src/devices/sound/tms5110.cpp", MAME_DIR .. "src/devices/sound/tms5110.h", - MAME_DIR .. "src/devices/sound/tms5110r.inc", + MAME_DIR .. "src/devices/sound/tms5110r.hxx", } end @@ -1025,7 +1026,7 @@ if (SOUNDS["TMS5220"]~=null) then files { MAME_DIR .. "src/devices/sound/tms5220.cpp", MAME_DIR .. "src/devices/sound/tms5220.h", - MAME_DIR .. "src/devices/sound/tms5110r.inc", + MAME_DIR .. "src/devices/sound/tms5110r.hxx", MAME_DIR .. "src/devices/machine/spchrom.cpp", MAME_DIR .. "src/devices/machine/spchrom.h", } @@ -1081,7 +1082,7 @@ if (SOUNDS["VLM5030"]~=null) then files { MAME_DIR .. "src/devices/sound/vlm5030.cpp", MAME_DIR .. "src/devices/sound/vlm5030.h", - MAME_DIR .. "src/devices/sound/tms5110r.inc", + MAME_DIR .. "src/devices/sound/tms5110r.hxx", } end @@ -1343,3 +1344,26 @@ if (SOUNDS["AD1848"]~=null) then MAME_DIR .. "src/devices/sound/ad1848.h", } end + +--------------------------------------------------- +-- UPD1771 +--@src/devices/sound/upd1771.h,SOUNDS["UPD1771"] = true +--------------------------------------------------- + +if (SOUNDS["UPD1771"]~=null) then + files { + MAME_DIR .. "src/devices/sound/upd1771.cpp", + MAME_DIR .. "src/devices/sound/upd1771.h", + } +end +--------------------------------------------------- +-- GB_SOUND +--@src/devices/sound/gb.h,SOUNDS["GB_SOUND"] = true +--------------------------------------------------- + +if (SOUNDS["GB_SOUND"]~=null) then + files { + MAME_DIR .. "src/devices/sound/gb.cpp", + MAME_DIR .. "src/devices/sound/gb.h", + } +end diff --git a/docs/release/scripts/src/video.lua b/docs/release/scripts/src/video.lua index 984bac6a950..2220e65fff9 100644 --- a/docs/release/scripts/src/video.lua +++ b/docs/release/scripts/src/video.lua @@ -203,8 +203,8 @@ if (VIDEOS["EPIC12"]~=null) then MAME_DIR .. "src/devices/video/epic12_blit6.cpp", MAME_DIR .. "src/devices/video/epic12_blit7.cpp", MAME_DIR .. "src/devices/video/epic12_blit8.cpp", - MAME_DIR .. "src/devices/video/epic12in.inc", - MAME_DIR .. "src/devices/video/epic12pixel.inc", + MAME_DIR .. "src/devices/video/epic12in.hxx", + MAME_DIR .. "src/devices/video/epic12pixel.hxx", } end @@ -246,18 +246,6 @@ end -------------------------------------------------- -- ---@src/devices/video/h63484.h,VIDEOS["H63484"] = true --------------------------------------------------- - -if (VIDEOS["H63484"]~=null) then - files { - MAME_DIR .. "src/devices/video/h63484.cpp", - MAME_DIR .. "src/devices/video/h63484.h", - } -end - --------------------------------------------------- --- --@src/devices/video/hd44102.h,VIDEOS["HD44102"] = true -------------------------------------------------- @@ -666,7 +654,9 @@ end if (VIDEOS["STVVDP"]~=null) then files { MAME_DIR .. "src/devices/video/stvvdp1.cpp", + MAME_DIR .. "src/devices/video/stvvdp1.h", MAME_DIR .. "src/devices/video/stvvdp2.cpp", + MAME_DIR .. "src/devices/video/stvvdp2.h", } end @@ -862,3 +852,15 @@ if (VIDEOS["JANGOU_BLITTER"]~=null) then MAME_DIR .. "src/devices/video/jangou_blitter.h", } end + +-------------------------------------------------- +-- +--@src/devices/video/gb_lcd.h,VIDEOS["GB_LCD"] = true +-------------------------------------------------- + +if (VIDEOS["GB_LCD"]~=null) then + files { + MAME_DIR .. "src/devices/video/gb_lcd.cpp", + MAME_DIR .. "src/devices/video/gb_lcd.h", + } +end diff --git a/docs/release/scripts/target/hbmame/hbmame.lua b/docs/release/scripts/target/hbmame/hbmame.lua index 1ef6d7c7dc3..0b2b377152d 100644 --- a/docs/release/scripts/target/hbmame/hbmame.lua +++ b/docs/release/scripts/target/hbmame/hbmame.lua @@ -124,6 +124,7 @@ MACHINES["I2CMEM"] = true MACHINES["I8243"] = true MACHINES["I8255"] = true MACHINES["INTELFLASH"] = true +MACHINES["GEN_LATCH"] = true MACHINES["LATCH8"] = true MACHINES["LDPR8210"] = true MACHINES["MB14241"] = true @@ -136,6 +137,7 @@ MACHINES["TMS6100"] = true MACHINES["UPD1990A"] = true MACHINES["UPD4992"] = true MACHINES["V3021"] = true +MACHINES["WATCHDOG"] = true MACHINES["WD33C93"] = true MACHINES["WD_FDC"] = true MACHINES["Z80CTC"] = true @@ -147,8 +149,8 @@ MACHINES["Z80PIO"] = true -------------------------------------------------- BUSES["GENERIC"] = true -BUSES["NEOGEO"] = true -BUSES["NEOGEO_CTRL"] = true +-- BUSES["NEOGEO"] = true +-- BUSES["NEOGEO_CTRL"] = true BUSES["SCSI"] = true -------------------------------------------------- @@ -368,7 +370,7 @@ files { createHBMAMEProjects(_target, _subtarget, "itech") files { MAME_DIR .. "src/hbmame/drivers/itech8.cpp", - MAME_DIR .. "src/mame/machine/slikshot.cpp", + MAME_DIR .. "src/mame/machine/itech8.cpp", MAME_DIR .. "src/mame/video/itech8.cpp", } @@ -470,12 +472,78 @@ files { createHBMAMEProjects(_target, _subtarget, "neogeo") files { - MAME_DIR .. "src/mame/drivers/neogeo.cpp", - MAME_DIR .. "src/mame/video/neogeo.cpp", - MAME_DIR .. "src/mame/drivers/neogeo_noslot.cpp", - MAME_DIR .. "src/mame/video/neogeo_spr.cpp", - MAME_DIR .. "src/mame/machine/neocrypt.cpp", - MAME_DIR .. "src/mame/machine/ng_memcard.cpp", + MAME_DIR .. "src/hbmame/drivers/neogeo.cpp", + MAME_DIR .. "src/hbmame/video/neogeo.cpp", + MAME_DIR .. "src/hbmame/drivers/neogeo_noslot.cpp", + MAME_DIR .. "src/hbmame/video/neogeo_spr.cpp", + MAME_DIR .. "src/hbmame/machine/neocrypt.cpp", + MAME_DIR .. "src/hbmame/machine/ng_memcard.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_slot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_slot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_intf.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_intf.h", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_carts.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_carts.h", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_helper.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/neogeo_helper.h", + MAME_DIR .. "src/hbmame/bus/neogeo/banked_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/banked_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/mslugx_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/mslugx_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/mslugx_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/mslugx_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/sma_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/sma_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/sma_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/sma_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/cmc_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/cmc_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/cmc_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/cmc_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/pcm2_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/pcm2_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/pcm2_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/pcm2_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/kof2002_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/kof2002_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/kof2002_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/kof2002_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/pvc_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/pvc_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/pvc_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/pvc_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/fatfury2_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/fatfury2_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/fatfury2_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/fatfury2_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/kof98_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/kof98_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/kof98_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/kof98_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/bootleg_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/bootleg_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/bootleg_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/bootleg_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/bootleg_hybrid_cart.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/bootleg_hybrid_cart.h", + MAME_DIR .. "src/hbmame/bus/neogeo/sbp_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/sbp_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/kog_prot.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/kog_prot.h", + MAME_DIR .. "src/hbmame/bus/neogeo/rom.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo/rom.h", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/ctrl.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/ctrl.h", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/joystick.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/joystick.h", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/mahjong.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/mahjong.h", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/dial.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/dial.h", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/irrmaze.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/irrmaze.h", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp", + MAME_DIR .. "src/hbmame/bus/neogeo_ctrl/kizuna4p.h", } createHBMAMEProjects(_target, _subtarget, "nichibut") diff --git a/docs/release/scripts/target/mame/arcade.lua b/docs/release/scripts/target/mame/arcade.lua index ca5fc78e502..3c45c1f9d6d 100644 --- a/docs/release/scripts/target/mame/arcade.lua +++ b/docs/release/scripts/target/mame/arcade.lua @@ -58,6 +58,7 @@ CPUS["JAGUAR"] = true CPUS["CUBEQCPU"] = true CPUS["ESRIP"] = true CPUS["MIPS"] = true +CPUS["R3000"] = true CPUS["PSX"] = true CPUS["SH2"] = true CPUS["SH4"] = true @@ -259,6 +260,7 @@ SOUNDS["AC97"] = true SOUNDS["ES1373"] = true SOUNDS["L7A1045"] = true SOUNDS["AD1848"] = true +--SOUNDS["UPD1771"] = true -------------------------------------------------- -- specify available video cores @@ -283,7 +285,6 @@ VIDEOS["DM9368"] = true VIDEOS["GF7600GS"] = true VIDEOS["EPIC12"] = true VIDEOS["FIXFREQ"] = true -VIDEOS["H63484"] = true --VIDEOS["HD44102"] = true --VIDEOS["HD44352"] = true VIDEOS["HD44780"] = true @@ -539,6 +540,7 @@ MACHINES["UPD4701"] = true MACHINES["UPD7002"] = true MACHINES["UPD71071"] = true MACHINES["UPD765"] = true +MACHINES["FDC_PLL"] = true MACHINES["V3021"] = true MACHINES["WD_FDC"] = true MACHINES["WD11C00_17"] = true @@ -567,6 +569,7 @@ MACHINES["PCI9050"] = true --MACHINES["TMS1024"] = true MACHINES["GENPC"] = true MACHINES["GEN_LATCH"] = true +MACHINES["WATCHDOG"] = true -------------------------------------------------- -- specify available bus cores @@ -871,6 +874,7 @@ files { MAME_DIR .. "src/mame/machine/amiga.cpp", MAME_DIR .. "src/mame/video/amiga.cpp", MAME_DIR .. "src/mame/video/amigaaga.cpp", + MAME_DIR .. "src/mame/video/amigaaga.h", MAME_DIR .. "src/mame/drivers/arsystems.cpp", MAME_DIR .. "src/mame/drivers/cubo.cpp", MAME_DIR .. "src/mame/drivers/mquake.cpp", @@ -903,6 +907,7 @@ files { MAME_DIR .. "src/mame/machine/asteroid.cpp", MAME_DIR .. "src/mame/audio/asteroid.cpp", MAME_DIR .. "src/mame/audio/llander.cpp", + MAME_DIR .. "src/mame/audio/llander.h", MAME_DIR .. "src/mame/drivers/atarifb.cpp", MAME_DIR .. "src/mame/includes/atarifb.h", MAME_DIR .. "src/mame/machine/atarifb.cpp", @@ -1021,8 +1026,8 @@ files { MAME_DIR .. "src/mame/audio/jaguar.cpp", MAME_DIR .. "src/mame/video/jaguar.cpp", MAME_DIR .. "src/mame/video/jagblit.h", - MAME_DIR .. "src/mame/video/jagblit.inc", - MAME_DIR .. "src/mame/video/jagobj.inc", + MAME_DIR .. "src/mame/video/jagblit.hxx", + MAME_DIR .. "src/mame/video/jagobj.hxx", MAME_DIR .. "src/mame/drivers/jedi.cpp", MAME_DIR .. "src/mame/includes/jedi.h", MAME_DIR .. "src/mame/audio/jedi.cpp", @@ -1054,9 +1059,12 @@ files { MAME_DIR .. "src/mame/audio/orbit.cpp", MAME_DIR .. "src/mame/video/orbit.cpp", MAME_DIR .. "src/mame/drivers/pong.cpp", - MAME_DIR .. "src/mame/drivers/nl_pong.cpp", - MAME_DIR .. "src/mame/drivers/nl_pongd.cpp", - MAME_DIR .. "src/mame/drivers/nl_breakout.cpp", + MAME_DIR .. "src/mame/machine/nl_pong.cpp", + MAME_DIR .. "src/mame/machine/nl_pong.h", + MAME_DIR .. "src/mame/machine/nl_pongd.cpp", + MAME_DIR .. "src/mame/machine/nl_pongd.h", + MAME_DIR .. "src/mame/machine/nl_breakout.cpp", + MAME_DIR .. "src/mame/machine/nl_breakout.h", MAME_DIR .. "src/mame/drivers/poolshrk.cpp", MAME_DIR .. "src/mame/includes/poolshrk.h", MAME_DIR .. "src/mame/audio/poolshrk.cpp", @@ -1190,25 +1198,25 @@ createMAMEProjects(_target, _subtarget, "barcrest") files { MAME_DIR .. "src/mame/drivers/mpu2.cpp", MAME_DIR .. "src/mame/drivers/mpu3.cpp", - MAME_DIR .. "src/mame/drivers/mpu4hw.cpp", - MAME_DIR .. "src/mame/drivers/mpu4sw.cpp", MAME_DIR .. "src/mame/drivers/mpu4.cpp", + MAME_DIR .. "src/mame/drivers/mpu4sw.hxx", + MAME_DIR .. "src/mame/drivers/mpu4.hxx", MAME_DIR .. "src/mame/includes/mpu4.h", - MAME_DIR .. "src/mame/drivers/mpu4mod2sw.cpp", - MAME_DIR .. "src/mame/drivers/mpu4mod4yam.cpp", + MAME_DIR .. "src/mame/drivers/mpu4mod2sw.hxx", + MAME_DIR .. "src/mame/drivers/mpu4mod4yam.hxx", MAME_DIR .. "src/mame/drivers/mpu4plasma.cpp", MAME_DIR .. "src/mame/drivers/mpu4dealem.cpp", MAME_DIR .. "src/mame/drivers/mpu4vid.cpp", - MAME_DIR .. "src/mame/drivers/mpu4avan.cpp", - MAME_DIR .. "src/mame/drivers/mpu4union.cpp", - MAME_DIR .. "src/mame/drivers/mpu4concept.cpp", - MAME_DIR .. "src/mame/drivers/mpu4empire.cpp", - MAME_DIR .. "src/mame/drivers/mpu4mdm.cpp", - MAME_DIR .. "src/mame/drivers/mpu4crystal.cpp", - MAME_DIR .. "src/mame/drivers/mpu4bwb.cpp", - MAME_DIR .. "src/mame/drivers/mpu4misc.cpp", - MAME_DIR .. "src/mame/drivers/mpu5hw.cpp", + MAME_DIR .. "src/mame/drivers/mpu4avan.hxx", + MAME_DIR .. "src/mame/drivers/mpu4union.hxx", + MAME_DIR .. "src/mame/drivers/mpu4concept.hxx", + MAME_DIR .. "src/mame/drivers/mpu4empire.hxx", + MAME_DIR .. "src/mame/drivers/mpu4mdm.hxx", + MAME_DIR .. "src/mame/drivers/mpu4crystal.hxx", + MAME_DIR .. "src/mame/drivers/mpu4bwb.hxx", + MAME_DIR .. "src/mame/drivers/mpu4misc.hxx", MAME_DIR .. "src/mame/drivers/mpu5.cpp", + MAME_DIR .. "src/mame/drivers/mpu5.hxx", MAME_DIR .. "src/mame/video/awpvid.cpp", MAME_DIR .. "src/mame/video/awpvid.h", MAME_DIR .. "src/mame/machine/meters.cpp", @@ -1225,15 +1233,14 @@ files { MAME_DIR .. "src/mame/video/bfm_adr2.cpp", MAME_DIR .. "src/mame/video/bfm_adr2.h", MAME_DIR .. "src/mame/drivers/bfm_sc4.cpp", - MAME_DIR .. "src/mame/drivers/bfm_sc4h.cpp", MAME_DIR .. "src/mame/drivers/bfm_sc5.cpp", MAME_DIR .. "src/mame/includes/bfm_sc5.h", - MAME_DIR .. "src/mame/drivers/bfm_sc5sw.cpp", + MAME_DIR .. "src/mame/drivers/bfm_sc5.hxx", MAME_DIR .. "src/mame/drivers/bfm_ad5.cpp", MAME_DIR .. "src/mame/includes/bfm_ad5.h", - MAME_DIR .. "src/mame/drivers/bfm_ad5sw.cpp", - MAME_DIR .. "src/mame/drivers/bfm_sc45_helper.cpp", - MAME_DIR .. "src/mame/drivers/bfm_sc45_helper.h", + MAME_DIR .. "src/mame/drivers/bfm_ad5.hxx", + MAME_DIR .. "src/mame/machine/bfm_sc45_helper.cpp", + MAME_DIR .. "src/mame/machine/bfm_sc45_helper.h", MAME_DIR .. "src/mame/includes/bfm_sc45.h", MAME_DIR .. "src/mame/drivers/bfm_swp.cpp", MAME_DIR .. "src/mame/drivers/bfmsys83.cpp", @@ -1452,6 +1459,7 @@ files { MAME_DIR .. "src/mame/video/deco_mlc.cpp", MAME_DIR .. "src/mame/drivers/deco156.cpp", MAME_DIR .. "src/mame/machine/deco156.cpp", + MAME_DIR .. "src/mame/machine/deco156.h", MAME_DIR .. "src/mame/drivers/deco32.cpp", MAME_DIR .. "src/mame/includes/deco32.h", MAME_DIR .. "src/mame/video/deco32.cpp", @@ -1545,8 +1553,9 @@ files { MAME_DIR .. "src/mame/includes/vaportra.h", MAME_DIR .. "src/mame/video/vaportra.cpp", MAME_DIR .. "src/mame/machine/deco102.cpp", + MAME_DIR .. "src/mame/machine/deco102.h", MAME_DIR .. "src/mame/machine/decocrpt.cpp", - MAME_DIR .. "src/mame/includes/decocrpt.h", + MAME_DIR .. "src/mame/machine/decocrpt.h", MAME_DIR .. "src/mame/machine/deco104.cpp", MAME_DIR .. "src/mame/machine/deco104.h", MAME_DIR .. "src/mame/machine/deco146.cpp", @@ -1622,7 +1631,6 @@ files { MAME_DIR .. "src/mame/includes/eolith.h", MAME_DIR .. "src/mame/video/eolith.cpp", MAME_DIR .. "src/mame/drivers/eolith16.cpp", - MAME_DIR .. "src/mame/drivers/eolithsp.cpp", MAME_DIR .. "src/mame/drivers/ghosteo.cpp", MAME_DIR .. "src/mame/drivers/vegaeo.cpp", } @@ -1658,6 +1666,7 @@ files { MAME_DIR .. "src/mame/audio/exidy.h", MAME_DIR .. "src/mame/video/exidy.cpp", MAME_DIR .. "src/mame/audio/targ.cpp", + MAME_DIR .. "src/mame/audio/targ.h", MAME_DIR .. "src/mame/drivers/exidy440.cpp", MAME_DIR .. "src/mame/includes/exidy440.h", MAME_DIR .. "src/mame/audio/exidy440.cpp", @@ -1832,12 +1841,19 @@ files { MAME_DIR .. "src/mame/includes/pgm.h", MAME_DIR .. "src/mame/video/pgm.cpp", MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type1.cpp", + MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type1.h", MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type2.cpp", + MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type2.h", MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type3.cpp", + MAME_DIR .. "src/mame/machine/pgmprot_igs027a_type3.h", MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs012.cpp", + MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs012.h", MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs022.cpp", + MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs022.h", MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs028.cpp", + MAME_DIR .. "src/mame/machine/pgmprot_igs025_igs028.h", MAME_DIR .. "src/mame/machine/pgmprot_orlegend.cpp", + MAME_DIR .. "src/mame/machine/pgmprot_orlegend.h", MAME_DIR .. "src/mame/drivers/pgm2.cpp", MAME_DIR .. "src/mame/drivers/spoker.cpp", MAME_DIR .. "src/mame/machine/igs036crypt.cpp", @@ -1905,7 +1921,8 @@ files { MAME_DIR .. "src/mame/machine/irem_cpu.h", MAME_DIR .. "src/mame/audio/irem.cpp", MAME_DIR .. "src/mame/audio/irem.h", - MAME_DIR .. "src/mame/audio/nl_kidniki.cpp", + MAME_DIR .. "src/mame/audio/nl_kidniki.cpp", + MAME_DIR .. "src/mame/audio/nl_kidniki.h", } createMAMEProjects(_target, _subtarget, "itech") @@ -1915,7 +1932,7 @@ files { MAME_DIR .. "src/mame/video/capbowl.cpp", MAME_DIR .. "src/mame/drivers/itech8.cpp", MAME_DIR .. "src/mame/includes/itech8.h", - MAME_DIR .. "src/mame/machine/slikshot.cpp", + MAME_DIR .. "src/mame/machine/itech8.cpp", MAME_DIR .. "src/mame/video/itech8.cpp", MAME_DIR .. "src/mame/drivers/itech32.cpp", MAME_DIR .. "src/mame/includes/itech32.h", @@ -2366,7 +2383,7 @@ createMAMEProjects(_target, _subtarget, "maygay") files { MAME_DIR .. "src/mame/drivers/maygay1b.cpp", MAME_DIR .. "src/mame/includes/maygay1b.h", - MAME_DIR .. "src/mame/drivers/maygay1bsw.cpp", + MAME_DIR .. "src/mame/drivers/maygay1b.hxx", MAME_DIR .. "src/mame/drivers/maygayv1.cpp", MAME_DIR .. "src/mame/drivers/maygayep.cpp", MAME_DIR .. "src/mame/drivers/maygaysw.cpp", @@ -2435,7 +2452,9 @@ files { MAME_DIR .. "src/mame/includes/astrocde.h", MAME_DIR .. "src/mame/video/astrocde.cpp", MAME_DIR .. "src/mame/audio/gorf.cpp", + MAME_DIR .. "src/mame/audio/gorf.h", MAME_DIR .. "src/mame/audio/wow.cpp", + MAME_DIR .. "src/mame/audio/wow.h", MAME_DIR .. "src/mame/drivers/atlantis.cpp", MAME_DIR .. "src/mame/drivers/balsente.cpp", MAME_DIR .. "src/mame/includes/balsente.h", @@ -2477,6 +2496,7 @@ files { MAME_DIR .. "src/mame/video/midyunit.cpp", MAME_DIR .. "src/mame/drivers/midzeus.cpp", MAME_DIR .. "src/mame/includes/midzeus.h", + MAME_DIR .. "src/mame/includes/midzeus2.h", MAME_DIR .. "src/mame/video/midzeus.cpp", MAME_DIR .. "src/mame/video/midzeus2.cpp", MAME_DIR .. "src/mame/drivers/mw18w.cpp", @@ -2519,8 +2539,11 @@ files { MAME_DIR .. "src/mame/audio/galaga.cpp", MAME_DIR .. "src/mame/video/galaga.cpp", MAME_DIR .. "src/mame/video/bosco.cpp", + MAME_DIR .. "src/mame/includes/bosco.h", MAME_DIR .. "src/mame/video/digdug.cpp", + MAME_DIR .. "src/mame/includes/digdug.h", MAME_DIR .. "src/mame/machine/xevious.cpp", + MAME_DIR .. "src/mame/includes/xevious.h", MAME_DIR .. "src/mame/video/xevious.cpp", MAME_DIR .. "src/mame/drivers/galaxian.cpp", MAME_DIR .. "src/mame/includes/galaxian.h", @@ -2542,7 +2565,7 @@ files { MAME_DIR .. "src/mame/drivers/namcofl.cpp", MAME_DIR .. "src/mame/includes/namcofl.h", MAME_DIR .. "src/mame/video/namcofl.cpp", - MAME_DIR .. "src/mame/drivers/namcoic.cpp", + MAME_DIR .. "src/mame/machine/namcoic.cpp", MAME_DIR .. "src/mame/includes/namcoic.h", MAME_DIR .. "src/mame/drivers/namcona1.cpp", MAME_DIR .. "src/mame/includes/namcona1.h", @@ -2610,6 +2633,7 @@ files { MAME_DIR .. "src/mame/drivers/warpwarp.cpp", MAME_DIR .. "src/mame/includes/warpwarp.h", MAME_DIR .. "src/mame/audio/geebee.cpp", + MAME_DIR .. "src/mame/audio/geebee.h", MAME_DIR .. "src/mame/audio/warpwarp.cpp", MAME_DIR .. "src/mame/audio/warpwarp.h", MAME_DIR .. "src/mame/video/warpwarp.cpp", @@ -2651,11 +2675,11 @@ createMAMEProjects(_target, _subtarget, "neogeo") files { MAME_DIR .. "src/mame/drivers/neogeo.cpp", MAME_DIR .. "src/mame/includes/neogeo.h", + MAME_DIR .. "src/mame/drivers/neodriv.hxx", MAME_DIR .. "src/mame/video/neogeo.cpp", - MAME_DIR .. "src/mame/drivers/neogeo_noslot.cpp", + MAME_DIR .. "src/mame/drivers/neopcb.cpp", MAME_DIR .. "src/mame/video/neogeo_spr.cpp", MAME_DIR .. "src/mame/video/neogeo_spr.h", - MAME_DIR .. "src/mame/machine/neocrypt.cpp", MAME_DIR .. "src/mame/machine/ng_memcard.cpp", MAME_DIR .. "src/mame/machine/ng_memcard.h", } @@ -2874,9 +2898,13 @@ files { MAME_DIR .. "src/mame/includes/pacman.h", MAME_DIR .. "src/mame/video/pacman.cpp", MAME_DIR .. "src/mame/machine/acitya.cpp", + MAME_DIR .. "src/mame/machine/acitya.h", MAME_DIR .. "src/mame/machine/jumpshot.cpp", + MAME_DIR .. "src/mame/machine/jumpshot.h", MAME_DIR .. "src/mame/machine/pacplus.cpp", + MAME_DIR .. "src/mame/machine/pacplus.h", MAME_DIR .. "src/mame/machine/theglobp.cpp", + MAME_DIR .. "src/mame/machine/theglobp.h", MAME_DIR .. "src/mame/drivers/pengo.cpp", } @@ -3005,6 +3033,7 @@ files { MAME_DIR .. "src/mame/machine/megadriv.cpp", MAME_DIR .. "src/mame/includes/megadriv.h", MAME_DIR .. "src/mame/drivers/megadrvb.cpp", + MAME_DIR .. "src/mame/includes/megadrvb.h", MAME_DIR .. "src/mame/drivers/megaplay.cpp", MAME_DIR .. "src/mame/drivers/megatech.cpp", MAME_DIR .. "src/mame/drivers/model1.cpp", @@ -3019,7 +3048,7 @@ files { MAME_DIR .. "src/mame/audio/dsbz80.h", MAME_DIR .. "src/mame/drivers/model2.cpp", MAME_DIR .. "src/mame/includes/model2.h", - MAME_DIR .. "src/mame/video/model2rd.inc", + MAME_DIR .. "src/mame/video/model2rd.hxx", MAME_DIR .. "src/mame/video/model2.cpp", MAME_DIR .. "src/mame/drivers/model3.cpp", MAME_DIR .. "src/mame/includes/model3.h", @@ -3123,8 +3152,12 @@ files { MAME_DIR .. "src/mame/includes/stactics.h", MAME_DIR .. "src/mame/video/stactics.cpp", MAME_DIR .. "src/mame/drivers/stv.cpp", + MAME_DIR .. "src/mame/includes/saturn.h", + MAME_DIR .. "src/mame/drivers/saturn.cpp", + MAME_DIR .. "src/mame/machine/saturn.cpp", MAME_DIR .. "src/mame/includes/stv.h", MAME_DIR .. "src/mame/machine/stvprot.cpp", + MAME_DIR .. "src/mame/machine/stvprot.h", MAME_DIR .. "src/mame/machine/315-5838_317-0229_comp.cpp", MAME_DIR .. "src/mame/machine/315-5838_317-0229_comp.h", MAME_DIR .. "src/mame/drivers/suprloco.cpp", @@ -3146,11 +3179,16 @@ files { MAME_DIR .. "src/mame/drivers/vicdual.cpp", MAME_DIR .. "src/mame/includes/vicdual.h", MAME_DIR .. "src/mame/audio/vicdual.cpp", + MAME_DIR .. "src/mame/audio/vicdual.h", MAME_DIR .. "src/mame/video/vicdual.cpp", MAME_DIR .. "src/mame/audio/carnival.cpp", + MAME_DIR .. "src/mame/audio/carnival.h", MAME_DIR .. "src/mame/audio/depthch.cpp", + MAME_DIR .. "src/mame/audio/depthch.h", MAME_DIR .. "src/mame/audio/invinco.cpp", + MAME_DIR .. "src/mame/audio/invinco.h", MAME_DIR .. "src/mame/audio/pulsar.cpp", + MAME_DIR .. "src/mame/audio/pulsar.h", MAME_DIR .. "src/mame/drivers/zaxxon.cpp", MAME_DIR .. "src/mame/includes/zaxxon.h", MAME_DIR .. "src/mame/audio/zaxxon.cpp", @@ -3211,6 +3249,7 @@ files { MAME_DIR .. "src/mame/drivers/legionna.cpp", MAME_DIR .. "src/mame/includes/legionna.h", MAME_DIR .. "src/mame/video/legionna.cpp", + MAME_DIR .. "src/mame/drivers/metlfrzr.cpp", MAME_DIR .. "src/mame/drivers/mustache.cpp", MAME_DIR .. "src/mame/includes/mustache.h", MAME_DIR .. "src/mame/video/mustache.cpp", @@ -3221,6 +3260,7 @@ files { MAME_DIR .. "src/mame/drivers/raiden2.cpp", MAME_DIR .. "src/mame/includes/raiden2.h", MAME_DIR .. "src/mame/machine/r2crypt.cpp", + MAME_DIR .. "src/mame/machine/r2crypt.h", MAME_DIR .. "src/mame/machine/raiden2cop.cpp", MAME_DIR .. "src/mame/machine/raiden2cop.h", MAME_DIR .. "src/mame/drivers/r2dx_v33.cpp", @@ -3243,6 +3283,7 @@ files { MAME_DIR .. "src/mame/machine/seicop.cpp", MAME_DIR .. "src/mame/machine/seicop.h", MAME_DIR .. "src/mame/machine/spisprit.cpp", + MAME_DIR .. "src/mame/machine/spisprit.h", MAME_DIR .. "src/mame/audio/seibu.cpp", MAME_DIR .. "src/mame/audio/seibu.h", MAME_DIR .. "src/mame/video/seibu_crtc.cpp", @@ -3255,7 +3296,7 @@ files { MAME_DIR .. "src/mame/machine/n64.cpp", MAME_DIR .. "src/mame/video/n64.cpp", MAME_DIR .. "src/mame/video/n64types.h", - MAME_DIR .. "src/mame/video/rdpfiltr.inc", + MAME_DIR .. "src/mame/video/rdpfiltr.hxx", MAME_DIR .. "src/mame/video/n64.h", MAME_DIR .. "src/mame/video/rdpblend.cpp", MAME_DIR .. "src/mame/video/rdpblend.h", @@ -3318,8 +3359,9 @@ files { MAME_DIR .. "src/mame/video/hng64.cpp", MAME_DIR .. "src/mame/audio/hng64.cpp", MAME_DIR .. "src/mame/machine/hng64_net.cpp", - MAME_DIR .. "src/mame/video/hng64_3d.cpp", - MAME_DIR .. "src/mame/video/hng64_sprite.cpp", + MAME_DIR .. "src/mame/machine/hng64_net.h", + MAME_DIR .. "src/mame/video/hng64_3d.hxx", + MAME_DIR .. "src/mame/video/hng64_sprite.hxx", MAME_DIR .. "src/mame/drivers/lasso.cpp", MAME_DIR .. "src/mame/includes/lasso.h", MAME_DIR .. "src/mame/video/lasso.cpp", @@ -3361,6 +3403,7 @@ files { MAME_DIR .. "src/mame/drivers/berzerk.cpp", MAME_DIR .. "src/mame/drivers/cliffhgr.cpp", MAME_DIR .. "src/mame/audio/cliffhgr.cpp", + MAME_DIR .. "src/mame/audio/cliffhgr.h", MAME_DIR .. "src/mame/drivers/mazerbla.cpp", MAME_DIR .. "src/mame/drivers/supdrapo.cpp", } @@ -3439,6 +3482,7 @@ files { MAME_DIR .. "src/mame/drivers/asuka.cpp", MAME_DIR .. "src/mame/includes/asuka.h", MAME_DIR .. "src/mame/machine/bonzeadv.cpp", + MAME_DIR .. "src/mame/machine/bonzeadv.h", MAME_DIR .. "src/mame/video/asuka.cpp", MAME_DIR .. "src/mame/drivers/bigevglf.cpp", MAME_DIR .. "src/mame/includes/bigevglf.h", @@ -3606,6 +3650,7 @@ files { MAME_DIR .. "src/mame/drivers/taito_x.cpp", MAME_DIR .. "src/mame/includes/taito_x.h", MAME_DIR .. "src/mame/machine/cchip.cpp", + MAME_DIR .. "src/mame/machine/cchip.h", MAME_DIR .. "src/mame/drivers/taito_z.cpp", MAME_DIR .. "src/mame/includes/taito_z.h", MAME_DIR .. "src/mame/video/taito_z.cpp", @@ -3859,9 +3904,9 @@ files { MAME_DIR .. "src/mame/video/slapfght.cpp", MAME_DIR .. "src/mame/drivers/snowbros.cpp", MAME_DIR .. "src/mame/includes/snowbros.h", + MAME_DIR .. "src/mame/video/snowbros.cpp", MAME_DIR .. "src/mame/video/kan_pand.cpp", - MAME_DIR .. "src/mame/video/kan_pand.h", - MAME_DIR .. "src/mame/video/kan_panb.cpp", + MAME_DIR .. "src/mame/video/kan_pand.h", MAME_DIR .. "src/mame/drivers/toaplan1.cpp", MAME_DIR .. "src/mame/includes/toaplan1.h", MAME_DIR .. "src/mame/machine/toaplan1.cpp", @@ -3922,6 +3967,7 @@ files { MAME_DIR .. "src/mame/includes/mrdo.h", MAME_DIR .. "src/mame/video/mrdo.cpp", MAME_DIR .. "src/mame/drivers/redclash.cpp", + MAME_DIR .. "src/mame/includes/redclash.h", MAME_DIR .. "src/mame/video/redclash.cpp", MAME_DIR .. "src/mame/drivers/superdq.cpp", } @@ -4114,8 +4160,11 @@ files { MAME_DIR .. "src/mame/drivers/s11.cpp", MAME_DIR .. "src/mame/includes/s11.h", MAME_DIR .. "src/mame/drivers/s11a.cpp", + MAME_DIR .. "src/mame/includes/s11a.h", MAME_DIR .. "src/mame/drivers/s11b.cpp", + MAME_DIR .. "src/mame/includes/s11b.h", MAME_DIR .. "src/mame/drivers/s11c.cpp", + MAME_DIR .. "src/mame/includes/s11c.h", MAME_DIR .. "src/mame/audio/s11c_bg.cpp", MAME_DIR .. "src/mame/audio/s11c_bg.h", MAME_DIR .. "src/mame/drivers/s3.cpp", @@ -4142,12 +4191,14 @@ files { MAME_DIR .. "src/mame/drivers/wpc_an.cpp", MAME_DIR .. "src/mame/drivers/wpc_dcs.cpp", MAME_DIR .. "src/mame/drivers/wpc_dot.cpp", + MAME_DIR .. "src/mame/includes/wpc_dot.h", MAME_DIR .. "src/mame/drivers/wpc_flip1.cpp", + MAME_DIR .. "src/mame/includes/wpc_flip1.h", MAME_DIR .. "src/mame/drivers/wpc_flip2.cpp", + MAME_DIR .. "src/mame/includes/wpc_flip2.h", MAME_DIR .. "src/mame/drivers/wpc_s.cpp", MAME_DIR .. "src/mame/machine/wpc.cpp", MAME_DIR .. "src/mame/machine/wpc.h", - MAME_DIR .. "src/mame/includes/wpc_pin.h", MAME_DIR .. "src/mame/audio/wpcsnd.cpp", MAME_DIR .. "src/mame/audio/wpcsnd.h", MAME_DIR .. "src/mame/video/wpc_dmd.cpp", @@ -4422,7 +4473,6 @@ files { MAME_DIR .. "src/mame/drivers/multfish.cpp", MAME_DIR .. "src/mame/includes/multfish.h", MAME_DIR .. "src/mame/drivers/multfish_boot.cpp", - MAME_DIR .. "src/mame/drivers/multfish_ref.cpp", MAME_DIR .. "src/mame/drivers/murogem.cpp", MAME_DIR .. "src/mame/drivers/murogmbl.cpp", MAME_DIR .. "src/mame/drivers/neoprint.cpp", @@ -4536,7 +4586,6 @@ files { MAME_DIR .. "src/mame/drivers/ice_bozopail.cpp", MAME_DIR .. "src/mame/drivers/ice_tbd.cpp", MAME_DIR .. "src/mame/drivers/umipoker.cpp", - MAME_DIR .. "src/mame/drivers/unkfr.cpp", MAME_DIR .. "src/mame/drivers/unkhorse.cpp", MAME_DIR .. "src/mame/drivers/usgames.cpp", MAME_DIR .. "src/mame/includes/usgames.h", diff --git a/docs/release/scripts/target/mame/mess.lua b/docs/release/scripts/target/mame/mess.lua index a4ebde0ff24..13898021fd6 100644 --- a/docs/release/scripts/target/mame/mess.lua +++ b/docs/release/scripts/target/mame/mess.lua @@ -58,6 +58,7 @@ CPUS["JAGUAR"] = true CPUS["CUBEQCPU"] = true CPUS["ESRIP"] = true CPUS["MIPS"] = true +CPUS["R3000"] = true CPUS["PSX"] = true CPUS["SH2"] = true CPUS["SH4"] = true @@ -256,7 +257,8 @@ SOUNDS["T6721A"] = true SOUNDS["MOS7360"] = true SOUNDS["ESQPUMP"] = true SOUNDS["VRC6"] = true - +SOUNDS["UPD1771"] = true +SOUNDS["GB_SOUND"] = true -------------------------------------------------- -- specify available video cores -------------------------------------------------- @@ -279,7 +281,6 @@ VIDEOS["EF9365"] = true VIDEOS["GF4500"] = true --VIDEOS+= EPIC12"] = true --VIDEOS+= FIXFREQ"] = true ---VIDEOS+= H63484"] = true VIDEOS["HD44102"] = true VIDEOS["HD44352"] = true VIDEOS["HD44780"] = true @@ -328,6 +329,7 @@ VIDEOS["V9938"] = true VIDEOS["VIC4567"] = true --VIDEOS+= VOODOO"] = true VIDEOS["SCN2674"] = true +VIDEOS["GB_LCD"] = true -------------------------------------------------- -- specify available machine cores @@ -542,6 +544,7 @@ MACHINES["UPD4701"] = true MACHINES["UPD7002"] = true MACHINES["UPD71071"] = true MACHINES["UPD765"] = true +MACHINES["FDC_PLL"] = true MACHINES["V3021"] = true MACHINES["WD_FDC"] = true MACHINES["WD11C00_17"] = true @@ -575,6 +578,11 @@ MACHINES["NSC810"] = true MACHINES["VT82C496"] = true MACHINES["GENPC"] = true MACHINES["GEN_LATCH"] = true +MACHINES["WATCHDOG"] = true +MACHINES["SMARTMEDIA"] = true +MACHINES["APPLE_DRIVE"] = true +MACHINES["APPLE_FDC"] = true +MACHINES["SONY_DRIVE"] = true -------------------------------------------------- -- specify available bus cores @@ -936,7 +944,7 @@ function createProjects_mame_mess(_target, _subtarget) -- n64.c (MESS), aleck64.c (MAME) -- megadriv.c, segapico.c (MESS), hshavoc.c, megadrvb.c, megaplay.c, megatech.c, puckpkmn.c, segac2.c, segas18.c (MAME) -- dccons.c (MESS), naomi.c (MAME) --- ng_aes.c (MESS), midas.c, neogeo.c, neogeo_noslot.c, neoprint.c (MAME) +-- neogeocd.c (MESS), midas.c, neogeo.c, neoprint.c (MAME) -- cdi.c (MESS + MAME) -- 3do.c (MESS + MAME), konamim2.c (MAME) -- vectrex.c (MESS + MAME) @@ -950,6 +958,7 @@ files { MAME_DIR .. "src/mame/machine/amiga.cpp", MAME_DIR .. "src/mame/video/amiga.cpp", MAME_DIR .. "src/mame/video/amigaaga.cpp", + MAME_DIR .. "src/mame/video/amigaaga.h", MAME_DIR .. "src/mame/video/tia.cpp", MAME_DIR .. "src/mame/video/tia.h", MAME_DIR .. "src/mame/machine/atari400.cpp", @@ -964,8 +973,8 @@ files { MAME_DIR .. "src/mame/audio/jaguar.cpp", MAME_DIR .. "src/mame/video/jaguar.cpp", MAME_DIR .. "src/mame/video/jagblit.h", - MAME_DIR .. "src/mame/video/jagblit.inc", - MAME_DIR .. "src/mame/video/jagobj.inc", + MAME_DIR .. "src/mame/video/jagblit.hxx", + MAME_DIR .. "src/mame/video/jagobj.hxx", MAME_DIR .. "src/mame/audio/gorf.cpp", MAME_DIR .. "src/mame/audio/wow.cpp", MAME_DIR .. "src/mame/drivers/astrocde.cpp", @@ -982,7 +991,7 @@ files { MAME_DIR .. "src/mame/machine/n64.cpp", MAME_DIR .. "src/mame/video/n64.cpp", MAME_DIR .. "src/mame/video/n64types.h", - MAME_DIR .. "src/mame/video/rdpfiltr.inc", + MAME_DIR .. "src/mame/video/rdpfiltr.hxx", MAME_DIR .. "src/mame/video/n64.h", MAME_DIR .. "src/mame/video/rdpblend.cpp", MAME_DIR .. "src/mame/video/rdpblend.h", @@ -1028,7 +1037,6 @@ files { MAME_DIR .. "src/mame/video/powervr2.h", MAME_DIR .. "src/mame/drivers/neogeo.cpp", MAME_DIR .. "src/mame/includes/neogeo.h", - MAME_DIR .. "src/mame/machine/neocrypt.cpp", MAME_DIR .. "src/mame/machine/ng_memcard.cpp", MAME_DIR .. "src/mame/machine/ng_memcard.h", MAME_DIR .. "src/mame/video/neogeo.cpp", @@ -1057,6 +1065,9 @@ files { MAME_DIR .. "src/mame/video/cps1.cpp", MAME_DIR .. "src/mame/video/chihiro.cpp", MAME_DIR .. "src/mame/machine/xbox.cpp", + MAME_DIR .. "src/mame/includes/saturn.h", + MAME_DIR .. "src/mame/drivers/saturn.cpp", + MAME_DIR .. "src/mame/machine/saturn.cpp", } end -------------------------------------------------- @@ -1067,16 +1078,8 @@ createMESSProjects(_target, _subtarget, "messshared") files { MAME_DIR .. "src/mame/audio/mea8000.cpp", MAME_DIR .. "src/mame/audio/mea8000.h", - MAME_DIR .. "src/mame/machine/appldriv.cpp", - MAME_DIR .. "src/mame/machine/appldriv.h", - MAME_DIR .. "src/mame/machine/applefdc.cpp", - MAME_DIR .. "src/mame/machine/applefdc.h", MAME_DIR .. "src/mame/machine/microdrv.cpp", MAME_DIR .. "src/mame/machine/microdrv.h", - MAME_DIR .. "src/mame/machine/smartmed.cpp", - MAME_DIR .. "src/mame/machine/smartmed.h", - MAME_DIR .. "src/mame/machine/sonydriv.cpp", - MAME_DIR .. "src/mame/machine/sonydriv.h", MAME_DIR .. "src/mame/machine/teleprinter.cpp", MAME_DIR .. "src/mame/machine/teleprinter.h", MAME_DIR .. "src/mame/machine/z80bin.cpp", @@ -1146,6 +1149,7 @@ files { createMESSProjects(_target, _subtarget, "altos") files { MAME_DIR .. "src/mame/drivers/altos5.cpp", + MAME_DIR .. "src/mame/drivers/altos486.cpp", } createMESSProjects(_target, _subtarget, "amiga") @@ -1202,6 +1206,7 @@ files { MAME_DIR .. "src/mame/drivers/apple2.cpp", MAME_DIR .. "src/mame/includes/apple2.h", MAME_DIR .. "src/mame/drivers/apple2e.cpp", + MAME_DIR .. "src/mame/includes/apple2e.h", MAME_DIR .. "src/mame/machine/apple2.cpp", MAME_DIR .. "src/mame/video/apple2.cpp", MAME_DIR .. "src/mame/video/apple2.h", @@ -1224,6 +1229,7 @@ files { MAME_DIR .. "src/mame/machine/egret.h", MAME_DIR .. "src/mame/machine/mac.cpp", MAME_DIR .. "src/mame/machine/macadb.cpp", + MAME_DIR .. "src/mame/machine/macadb.h", MAME_DIR .. "src/mame/machine/macrtc.cpp", MAME_DIR .. "src/mame/machine/macrtc.h", MAME_DIR .. "src/mame/machine/mackbd.cpp", @@ -1677,8 +1683,6 @@ files { MAME_DIR .. "src/mame/includes/gamepock.h", MAME_DIR .. "src/mame/machine/gamepock.cpp", MAME_DIR .. "src/mame/drivers/scv.cpp", - MAME_DIR .. "src/devices/sound/upd1771.cpp", - MAME_DIR .. "src/devices/sound/upd1771.h", } createMESSProjects(_target, _subtarget, "epson") @@ -1839,8 +1843,7 @@ files { MAME_DIR .. "src/mame/drivers/hec2hrp.cpp", MAME_DIR .. "src/mame/includes/hec2hrp.h", MAME_DIR .. "src/mame/machine/hec2hrp.cpp", - MAME_DIR .. "src/mame/machine/hecdisk2.cpp", - MAME_DIR .. "src/mame/video/hec2video.cpp", + MAME_DIR .. "src/mame/video/hec2hrp.cpp", MAME_DIR .. "src/mame/drivers/interact.cpp", } @@ -1902,6 +1905,7 @@ files { MAME_DIR .. "src/mame/includes/kaypro.h", MAME_DIR .. "src/mame/machine/kaypro.cpp", MAME_DIR .. "src/mame/machine/kay_kbd.cpp", + MAME_DIR .. "src/mame/machine/kay_kbd.h", MAME_DIR .. "src/mame/video/kaypro.cpp", } @@ -1927,8 +1931,11 @@ files { MAME_DIR .. "src/mame/drivers/abc80x.cpp", MAME_DIR .. "src/mame/includes/abc80x.h", MAME_DIR .. "src/mame/video/abc800.cpp", + MAME_DIR .. "src/mame/video/abc800.h", MAME_DIR .. "src/mame/video/abc802.cpp", + MAME_DIR .. "src/mame/video/abc802.h", MAME_DIR .. "src/mame/video/abc806.cpp", + MAME_DIR .. "src/mame/video/abc806.h", MAME_DIR .. "src/mame/drivers/abc1600.cpp", MAME_DIR .. "src/mame/includes/abc1600.h", MAME_DIR .. "src/mame/machine/abc1600mac.cpp", @@ -2050,6 +2057,7 @@ createMESSProjects(_target, _subtarget, "motorola") files { MAME_DIR .. "src/mame/drivers/m6805evs.cpp", MAME_DIR .. "src/mame/drivers/mekd2.cpp", + MAME_DIR .. "src/mame/drivers/mvme147.cpp", } createMESSProjects(_target, _subtarget, "multitch") @@ -2134,11 +2142,7 @@ createMESSProjects(_target, _subtarget, "nintendo") files { MAME_DIR .. "src/mame/drivers/gb.cpp", MAME_DIR .. "src/mame/includes/gb.h", - MAME_DIR .. "src/mame/audio/gb.cpp", - MAME_DIR .. "src/mame/audio/gb.h", MAME_DIR .. "src/mame/machine/gb.cpp", - MAME_DIR .. "src/mame/video/gb_lcd.cpp", - MAME_DIR .. "src/mame/video/gb_lcd.h", MAME_DIR .. "src/mame/drivers/gba.cpp", MAME_DIR .. "src/mame/includes/gba.h", MAME_DIR .. "src/mame/video/gba.cpp", @@ -2153,10 +2157,10 @@ files { MAME_DIR .. "src/mame/includes/snes.h", MAME_DIR .. "src/mame/machine/snescx4.cpp", MAME_DIR .. "src/mame/machine/snescx4.h", - MAME_DIR .. "src/mame/machine/cx4data.inc", - MAME_DIR .. "src/mame/machine/cx4fn.inc", - MAME_DIR .. "src/mame/machine/cx4oam.inc", - MAME_DIR .. "src/mame/machine/cx4ops.inc", + MAME_DIR .. "src/mame/machine/cx4data.hxx", + MAME_DIR .. "src/mame/machine/cx4fn.hxx", + MAME_DIR .. "src/mame/machine/cx4oam.hxx", + MAME_DIR .. "src/mame/machine/cx4ops.hxx", MAME_DIR .. "src/mame/drivers/vboy.cpp", MAME_DIR .. "src/mame/audio/vboy.cpp", MAME_DIR .. "src/mame/audio/vboy.h", @@ -2247,7 +2251,7 @@ files { createMESSProjects(_target, _subtarget, "palm") files { MAME_DIR .. "src/mame/drivers/palm.cpp", - MAME_DIR .. "src/mame/drivers/palm_dbg.inc", + MAME_DIR .. "src/mame/drivers/palm_dbg.hxx", MAME_DIR .. "src/mame/drivers/palmz22.cpp", } @@ -2297,7 +2301,7 @@ files { MAME_DIR .. "src/mame/drivers/p2000t.cpp", MAME_DIR .. "src/mame/includes/p2000t.h", MAME_DIR .. "src/mame/machine/p2000t.cpp", - MAME_DIR .. "src/mame/video/p2000m.cpp", + MAME_DIR .. "src/mame/video/p2000t.cpp", MAME_DIR .. "src/mame/drivers/vg5k.cpp", } @@ -2438,7 +2442,6 @@ files { MAME_DIR .. "src/mame/machine/dccons.cpp", MAME_DIR .. "src/mame/drivers/megadriv.cpp", MAME_DIR .. "src/mame/includes/megadriv.h", - MAME_DIR .. "src/mame/drivers/saturn.cpp", MAME_DIR .. "src/mame/drivers/segapico.cpp", MAME_DIR .. "src/mame/drivers/sega_sawatte.cpp", MAME_DIR .. "src/mame/drivers/segapm.cpp", @@ -2533,8 +2536,11 @@ files { MAME_DIR .. "src/mame/drivers/spectrum.cpp", MAME_DIR .. "src/mame/includes/spectrum.h", MAME_DIR .. "src/mame/drivers/spec128.cpp", + MAME_DIR .. "src/mame/includes/spec128.h", MAME_DIR .. "src/mame/drivers/timex.cpp", + MAME_DIR .. "src/mame/includes/timex.h", MAME_DIR .. "src/mame/drivers/specpls3.cpp", + MAME_DIR .. "src/mame/includes/specpls3.h", MAME_DIR .. "src/mame/drivers/scorpion.cpp", MAME_DIR .. "src/mame/drivers/atm.cpp", MAME_DIR .. "src/mame/drivers/pentagon.cpp", @@ -2568,7 +2574,7 @@ files { createMESSProjects(_target, _subtarget, "snk") files { - MAME_DIR .. "src/mame/drivers/ng_aes.cpp", + MAME_DIR .. "src/mame/drivers/neogeocd.cpp", MAME_DIR .. "src/mame/drivers/ngp.cpp", MAME_DIR .. "src/mame/video/k1ge.cpp", MAME_DIR .. "src/mame/video/k1ge.h", @@ -3007,12 +3013,6 @@ files { MAME_DIR .. "src/mame/drivers/ymmu100.cpp", MAME_DIR .. "src/mame/drivers/fb01.cpp", } -dependency { - { MAME_DIR .. "src/mame/drivers/ymmu100.cpp", GEN_DIR .. "mame/drivers/ymmu100.inc" }, -} -custombuildtask { - { MAME_DIR .. "src/mame/drivers/ymmu100.ppm", GEN_DIR .. "mame/drivers/ymmu100.inc", { MAME_DIR .. "scripts/build/file2str.py" }, {"@echo Converting src/drivers/ymmu100.ppm...", PYTHON .. " $(1) $(<) $(@) ymmu100_bkg UINT8" }}, -} createMESSProjects(_target, _subtarget, "zenith") files { @@ -3086,6 +3086,7 @@ files { MAME_DIR .. "src/mame/drivers/fanucs15.cpp", MAME_DIR .. "src/mame/drivers/fanucspmg.cpp", MAME_DIR .. "src/mame/drivers/fc100.cpp", + MAME_DIR .. "src/mame/drivers/fcscsi.cpp", MAME_DIR .. "src/mame/drivers/fk1.cpp", MAME_DIR .. "src/mame/drivers/ft68m.cpp", MAME_DIR .. "src/mame/drivers/gamate.cpp", @@ -3101,6 +3102,7 @@ files { MAME_DIR .. "src/mame/drivers/ht68k.cpp", MAME_DIR .. "src/mame/drivers/hunter2.cpp", MAME_DIR .. "src/mame/drivers/i7000.cpp", + MAME_DIR .. "src/mame/drivers/ibm3153.cpp", MAME_DIR .. "src/mame/drivers/ibm6580.cpp", MAME_DIR .. "src/mame/drivers/icatel.cpp", MAME_DIR .. "src/mame/drivers/ie15.cpp", @@ -3191,6 +3193,7 @@ files { MAME_DIR .. "src/mame/includes/xor100.h", MAME_DIR .. "src/mame/drivers/xavix.cpp", MAME_DIR .. "src/mame/drivers/zorba.cpp", + MAME_DIR .. "src/mame/drivers/mvme350.cpp", } end diff --git a/docs/release/scripts/target/mame/nl.lua b/docs/release/scripts/target/mame/nl.lua index 6abf50dcd1e..08829959c1f 100644 --- a/docs/release/scripts/target/mame/nl.lua +++ b/docs/release/scripts/target/mame/nl.lua @@ -20,7 +20,7 @@ CPUS["Z80"] = true CPUS["M6800"] = true CPUS["M6803"] = true CPUS["M6809"] = true ---CPUS["MCS48"] = true +CPUS["MCS48"] = true --CPUS["MCS51"] = true --CPUS["M6800"] = true --CPUS["M6809"] = true @@ -57,6 +57,8 @@ VIDEOS["FIXFREQ"] = true -------------------------------------------------- MACHINES["NETLIST"] = true +MACHINES["Z80DMA"] = true +MACHINES["GEN_LATCH"] = true --MACHINES["6821PIA"] = true --MACHINES["TTL74148"] = true --MACHINES["TTL74153"] = true @@ -86,8 +88,8 @@ function createProjects_mame_nl(_target, _subtarget) targetsubdir(_target .."_" .. _subtarget) kind (LIBTYPE) uuid (os.uuid("drv-mame-nl")) - addprojectflags() - precompiledheaders() + addprojectflags() + precompiledheaders() includedirs { MAME_DIR .. "src/osd", @@ -103,24 +105,33 @@ function createProjects_mame_nl(_target, _subtarget) files{ MAME_DIR .. "src/mame/drivers/pong.cpp", - MAME_DIR .. "src/mame/drivers/nl_pong.cpp", - MAME_DIR .. "src/mame/drivers/nl_pongd.cpp", - MAME_DIR .. "src/mame/drivers/nl_breakout.cpp", + MAME_DIR .. "src/mame/machine/nl_pong.cpp", + MAME_DIR .. "src/mame/machine/nl_pong.h", + MAME_DIR .. "src/mame/machine/nl_pongd.cpp", + MAME_DIR .. "src/mame/machine/nl_pongd.h", + MAME_DIR .. "src/mame/machine/nl_breakout.cpp", + MAME_DIR .. "src/mame/machine/nl_breakout.h", MAME_DIR .. "src/mame/drivers/1942.cpp", MAME_DIR .. "src/mame/includes/1942.h", MAME_DIR .. "src/mame/video/1942.cpp", + MAME_DIR .. "src/mame/drivers/popeye.cpp", MAME_DIR .. "src/mame/includes/popeye.h", MAME_DIR .. "src/mame/video/popeye.cpp", - - MAME_DIR .. "src/mame/drivers/m62.cpp", - MAME_DIR .. "src/mame/includes/m62.h", - MAME_DIR .. "src/mame/video/m62.cpp", - MAME_DIR .. "src/mame/audio/irem.cpp", - MAME_DIR .. "src/mame/audio/nl_kidniki.cpp", - MAME_DIR .. "src/mame/audio/irem.h", + MAME_DIR .. "src/mame/drivers/mario.cpp", + MAME_DIR .. "src/mame/includes/mario.h", + MAME_DIR .. "src/mame/video/mario.cpp", + MAME_DIR .. "src/mame/audio/mario.cpp", + + MAME_DIR .. "src/mame/drivers/m62.cpp", + MAME_DIR .. "src/mame/includes/m62.h", + MAME_DIR .. "src/mame/video/m62.cpp", + MAME_DIR .. "src/mame/audio/irem.cpp", + MAME_DIR .. "src/mame/audio/irem.h", + MAME_DIR .. "src/mame/audio/nl_kidniki.cpp", + MAME_DIR .. "src/mame/audio/nl_kidniki.h", } end diff --git a/docs/release/scripts/target/mame/tiny.lua b/docs/release/scripts/target/mame/tiny.lua index 36b4032a525..4e3d4167587 100644 --- a/docs/release/scripts/target/mame/tiny.lua +++ b/docs/release/scripts/target/mame/tiny.lua @@ -61,6 +61,7 @@ MACHINES["PIT8253"] = true MACHINES["Z80CTC"] = true MACHINES["68681"] = true MACHINES["BANKDEV"] = true +MACHINES["WATCHDOG"] = true -------------------------------------------------- diff --git a/docs/release/scripts/target/zexall/zexall.lua b/docs/release/scripts/target/zexall/zexall.lua new file mode 100644 index 00000000000..739cd2a225a --- /dev/null +++ b/docs/release/scripts/target/zexall/zexall.lua @@ -0,0 +1,12 @@ +STANDALONE = true + +CPUS["Z80"] = true + +function standalone() + files{ + MAME_DIR .. "src/zexall/main.cpp", + MAME_DIR .. "src/zexall/zexall.cpp", + MAME_DIR .. "src/zexall/zexall.h", + } +end + diff --git a/docs/release/scripts/toolchain.lua b/docs/release/scripts/toolchain.lua index 2a5490fab06..e717102f44e 100644 --- a/docs/release/scripts/toolchain.lua +++ b/docs/release/scripts/toolchain.lua @@ -31,6 +31,7 @@ newoption { { "mingw64-gcc", "MinGW64" }, { "mingw-clang", "MinGW (clang compiler)" }, { "netbsd", "NetBSD" }, + { "openbsd", "OpenBSD" }, { "osx", "OSX (GCC compiler)" }, { "osx-clang", "OSX (Clang compiler)" }, { "pnacl", "Native Client - PNaCl" }, @@ -211,6 +212,10 @@ function toolchain(_buildDir, _subDir) location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-netbsd") end + if "openbsd" == _OPTIONS["gcc"] then + location (_buildDir .. "projects/" .. _subDir .. "/".. _ACTION .. "-openbsd") + end + if "ios-arm" == _OPTIONS["gcc"] then premake.gcc.cc = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" premake.gcc.cxx = "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++" @@ -785,6 +790,28 @@ function toolchain(_buildDir, _subDir) configuration { "netbsd", "x64", "Debug" } targetdir (_buildDir .. "netbsd" .. "/bin/x64/Debug") + configuration { "openbsd", "x32" } + objdir (_buildDir .. "openbsd" .. "/obj") + buildoptions { + "-m32", + } + configuration { "openbsd", "x32", "Release" } + targetdir (_buildDir .. "openbsd" .. "/bin/x32/Release") + + configuration { "openbsd", "x32", "Debug" } + targetdir (_buildDir .. "openbsd" .. "/bin/x32/Debug") + + configuration { "openbsd", "x64" } + objdir (_buildDir .. "openbsd" .. "/obj") + buildoptions { + "-m64", + } + configuration { "openbsd", "x64", "Release" } + targetdir (_buildDir .. "openbsd" .. "/bin/x64/Release") + + configuration { "openbsd", "x64", "Debug" } + targetdir (_buildDir .. "openbsd" .. "/bin/x64/Debug") + configuration { "android-*" } includedirs { MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos", diff --git a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp index 3c04f3671ca..b11b0d987af 100644 --- a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp +++ b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp @@ -29,7 +29,7 @@ static const char copyright_notice[] = #include "m68kcpu.h" #include "m68kops.h" -#include "m68kfpu.inc" +#include "m68kfpu.hxx" #include "m68kmmu.h" extern void m68040_fpu_op0(m68000_base_device *m68k); diff --git a/docs/release/src/emu/digfx.h b/docs/release/src/emu/digfx.h index 5b77ca691a5..7359aa4d340 100644 --- a/docs/release/src/emu/digfx.h +++ b/docs/release/src/emu/digfx.h @@ -72,7 +72,8 @@ const gfx_layout name = { width, height, RGN_FRAC(1,1), 8, { GFX_RAW }, { 0 }, { #define STEP1024(START,STEP) STEP512(START,STEP),STEP512((START)+512*(STEP),STEP) #define STEP2048(START,STEP) STEP1024(START,STEP),STEP1024((START)+1024*(STEP),STEP) - +#define STEP2_INV(START,STEP) (START)+(STEP),(START) +#define STEP4_INV(START,STEP) STEP2_INV(START+2*STEP,STEP),STEP2_INV(START,STEP) //************************************************************************** // GRAPHICS INFO MACROS diff --git a/docs/release/src/emu/validity.cpp b/docs/release/src/emu/validity.cpp index 7d416d8152f..1f4971b83a7 100644 --- a/docs/release/src/emu/validity.cpp +++ b/docs/release/src/emu/validity.cpp @@ -872,14 +872,22 @@ void validity_checker::validate_inputs() // verify dip switches if (field.type() == IPT_DIPSWITCH) { - // dip switch fields must have a name - if (field.name() == nullptr) - osd_printf_error("DIP switch has a nullptr name\n"); + // dip switch fields must have a specific name + if (field.specific_name() == nullptr) + osd_printf_error("DIP switch has no specific name\n"); // verify the settings list validate_dip_settings(field); } + // verify config settings + if (field.type() == IPT_CONFIG) + { + // config fields must have a specific name + if (field.specific_name() == nullptr) + osd_printf_error("Config switch has no specific name\n"); + } + // verify names const char *name = field.specific_name(); if (name != nullptr) diff --git a/docs/release/src/emu/video.cpp b/docs/release/src/emu/video.cpp index 2a6e5f03fe6..1babd7c720b 100644 --- a/docs/release/src/emu/video.cpp +++ b/docs/release/src/emu/video.cpp @@ -15,7 +15,7 @@ #include "ui/uimain.h" #include "aviio.h" #include "crsshair.h" -#include "rendersw.inc" +#include "rendersw.hxx" #include "output.h" #include "snap.lh" @@ -586,7 +586,7 @@ void video_manager::exit() m_snap_bitmap.reset(); // print a final result if we have at least 2 seconds' worth of data - if (m_overall_emutime.seconds() >= 1) + if (!emulator_info::standalone() && m_overall_emutime.seconds() >= 1) { osd_ticks_t tps = osd_ticks_per_second(); double final_real_time = (double)m_overall_real_seconds + (double)m_overall_real_ticks / (double)tps; diff --git a/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp b/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp new file mode 100644 index 00000000000..1ad3b0c34e1 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp @@ -0,0 +1,109 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#include "emu.h" +#include "banked_cart.h" + + + +extern const device_type NEOGEO_BANKED_CART = &device_creator<neogeo_banked_cart_device>; + + +neogeo_banked_cart_device::neogeo_banked_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, NEOGEO_BANKED_CART, "NeoGeo Banked Cartridge", tag, owner, clock, "neogeo_banked_cart", __FILE__), + m_bank_cartridge(nullptr), + m_main_cpu_bank_address(0), + m_region(nullptr), + m_region_size(0) + +{ +} + +void neogeo_banked_cart_device::postload() +{ + _set_main_cpu_bank_address(); +} + +void neogeo_banked_cart_device::device_start() +{ + save_item(NAME(m_main_cpu_bank_address)); + machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_banked_cart_device::postload), this)); +} + +void neogeo_banked_cart_device::device_reset() +{ +} + + + + + + +/************************************* + * + * Main CPU banking + * + *************************************/ + +void neogeo_banked_cart_device::_set_main_cpu_bank_address(void) +{ + if (!m_region) + printf("region is null\n"); + + if (!m_bank_cartridge) + printf("bank_cartridge is null\n"); + + if (m_region && m_bank_cartridge) m_bank_cartridge->set_base(m_region + m_main_cpu_bank_address); +} + + +void neogeo_banked_cart_device::neogeo_set_main_cpu_bank_address( UINT32 bank_address ) +{ +// if (LOG_MAIN_CPU_BANKING) logerror("MAIN CPU PC %06x: neogeo_set_main_cpu_bank_address %06x\n", m_maincpu->pc(), bank_address); + + m_main_cpu_bank_address = bank_address; + + _set_main_cpu_bank_address(); +} + + +WRITE16_MEMBER(neogeo_banked_cart_device::main_cpu_bank_select_w) +{ + UINT32 bank_address; + UINT32 len = m_region_size; + + if ((len <= 0x100000) && (data & 0x07)) + logerror("PC %06x: warning: bankswitch to %02x but no banks available\n", space.device().safe_pc(), data); + else + { + bank_address = ((data & 0x07) + 1) * 0x100000; + + if (bank_address >= len) + { + logerror("PC %06x: warning: bankswitch to empty bank %02x\n", space.device().safe_pc(), data); + bank_address = 0x100000; + } + + neogeo_set_main_cpu_bank_address(bank_address); + } +} + +void neogeo_banked_cart_device::init_banks(void) +{ + /* set initial main CPU bank */ + if (m_region_size > 0x100000) + neogeo_set_main_cpu_bank_address(0x100000); + else + neogeo_set_main_cpu_bank_address(0x000000); +} + +void neogeo_banked_cart_device::install_banks(running_machine& machine, cpu_device* maincpu, UINT8* region, UINT32 region_size) +{ + maincpu->space(AS_PROGRAM).install_read_bank(0x200000, 0x2fffff, 0, 0, "cartridge"); + maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(FUNC(neogeo_banked_cart_device::main_cpu_bank_select_w),this)); + + m_bank_cartridge = machine.root_device().membank("cartridge"); + m_region = region; + m_region_size = region_size; + + init_banks(); +} diff --git a/docs/release/src/hbmame/bus/neogeo/banked_cart.h b/docs/release/src/hbmame/bus/neogeo/banked_cart.h new file mode 100644 index 00000000000..5f9c4d9503d --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/banked_cart.h @@ -0,0 +1,40 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __NEOGEO_BANKED_CART__ +#define __NEOGEO_BANKED_CART__ + +extern const device_type NEOGEO_BANKED_CART; + +#define MCFG_NEOGEO_BANKED_CART_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, NEOGEO_BANKED_CART, 0) + + +class neogeo_banked_cart_device : public device_t +{ +public: + // construction/destruction + neogeo_banked_cart_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + memory_bank* m_bank_cartridge; + UINT32 m_main_cpu_bank_address; + UINT8* m_region; + UINT32 m_region_size; + + + void install_banks(running_machine& machine, cpu_device* maincpu, UINT8* region, UINT32 region_size); + WRITE16_MEMBER(main_cpu_bank_select_w); + void neogeo_set_main_cpu_bank_address(UINT32 bank_address); + void _set_main_cpu_bank_address(); + void init_banks(void); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + void postload(); +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/bootleg_cart.cpp b/docs/release/src/hbmame/bus/neogeo/bootleg_cart.cpp new file mode 100644 index 00000000000..45a4563f88d --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/bootleg_cart.cpp @@ -0,0 +1,378 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "bootleg_cart.h" + + +//------------------------------------------------- +// neogeo_bootleg_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_BOOTLEG_CART = &device_creator<neogeo_bootleg_cart>; + + +neogeo_bootleg_cart::neogeo_bootleg_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_bootleg_prot(*this, "bootleg_prot") + +{ +} + +neogeo_bootleg_cart::neogeo_bootleg_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_BOOTLEG_CART, "NEOGEO Bootleg Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_bootleg_prot(*this, "bootleg_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_bootleg_cart::device_start() +{ +} + +void neogeo_bootleg_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_bootleg_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( bootleg_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_NGBOOTLEG_PROT_ADD("bootleg_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_bootleg_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( bootleg_cart ); +} + + + +/* Individual cartridge types (mirror DRIVER_INIT functionality) */ + + +/************************************************* + garoubl +**************************************************/ + +const device_type NEOGEO_BOOTLEG_GAROUBL_CART = &device_creator<neogeo_bootleg_garoubl_cart>; + +neogeo_bootleg_garoubl_cart::neogeo_bootleg_garoubl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_GAROUBL_CART, "NEOGEO BOOT garoubl Cart", tag, owner, clock, "boot_garoubl_cart", __FILE__) {} + +void neogeo_bootleg_garoubl_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_garoubl_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2); + m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size); +} + +/************************************************* + cthd2003 +**************************************************/ + +const device_type NEOGEO_BOOTLEG_CTHD2003_CART = &device_creator<neogeo_bootleg_cthd2003_cart>; + +neogeo_bootleg_cthd2003_cart::neogeo_bootleg_cthd2003_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_CTHD2003_CART, "NEOGEO BOOT cthd2003 Cart", tag, owner, clock, "boot_cthd2003_cart", __FILE__) {} + +void neogeo_bootleg_cthd2003_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_bootleg_prot->patch_cthd2003(maincpu,m_banked_cart, cpuregion, cpuregion_size); +} + +void neogeo_bootleg_cthd2003_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->decrypt_cthd2003(spr_region, spr_region_size, audiocpu_region, audio_region_size, fix_region, fix_region_size); +} + +/******/ + +const device_type NEOGEO_BOOTLEG_CT2K3SP_CART = &device_creator<neogeo_bootleg_ct2k3sp_cart>; + +neogeo_bootleg_ct2k3sp_cart::neogeo_bootleg_ct2k3sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_CT2K3SP_CART, "NEOGEO BOOT ct2k3sp Cart", tag, owner, clock, "boot_ct2k3sp_cart", __FILE__) {} + +void neogeo_bootleg_ct2k3sp_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_bootleg_prot->patch_cthd2003(maincpu,m_banked_cart, cpuregion, cpuregion_size); +} + +void neogeo_bootleg_ct2k3sp_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->decrypt_ct2k3sp(spr_region, spr_region_size, audiocpu_region, audio_region_size, fix_region, fix_region_size); +} + +/******/ + +const device_type NEOGEO_BOOTLEG_CT2K3SA_CART = &device_creator<neogeo_bootleg_ct2k3sa_cart>; + +neogeo_bootleg_ct2k3sa_cart::neogeo_bootleg_ct2k3sa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_CT2K3SA_CART, "NEOGEO BOOT ct2k3sa Cart", tag, owner, clock, "boot_ct2k3sa_cart", __FILE__) {} + +void neogeo_bootleg_ct2k3sa_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); +} + +void neogeo_bootleg_ct2k3sa_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->decrypt_ct2k3sa(spr_region, spr_region_size, audiocpu_region, audio_region_size); + m_bootleg_prot->patch_ct2k3sa(cpuregion, cpuregion_size); +} + +/************************************************* + kf10thep +**************************************************/ + +const device_type NEOGEO_BOOTLEG_KF10THEP_CART = &device_creator<neogeo_bootleg_kf10thep_cart>; + +neogeo_bootleg_kf10thep_cart::neogeo_bootleg_kf10thep_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_KF10THEP_CART, "NEOGEO BOOT kf10thep Cart", tag, owner, clock, "boot_kf10thep_cart", __FILE__) {} + +void neogeo_bootleg_kf10thep_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_kf10thep_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->kf10thep_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region,fix_region_size,1); +} + + +/************************************************* + kf2k5uni +**************************************************/ + +const device_type NEOGEO_BOOTLEG_KF2K5UNI_CART = &device_creator<neogeo_bootleg_kf2k5uni_cart>; + +neogeo_bootleg_kf2k5uni_cart::neogeo_bootleg_kf2k5uni_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_KF2K5UNI_CART, "NEOGEO BOOT kf2k5uni Cart", tag, owner, clock, "boot_kf2k5uni_cart", __FILE__) {} + +void neogeo_bootleg_kf2k5uni_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_kf2k5uni_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->decrypt_kf2k5uni(cpuregion,cpuregion_size, audiocpu_region, audio_region_size, fix_region, fix_region_size); +} + + +/************************************************* + kf2k4se +**************************************************/ + +const device_type NEOGEO_BOOTLEG_KF2K4SE_CART = &device_creator<neogeo_bootleg_kf2k4se_cart>; + +neogeo_bootleg_kf2k4se_cart::neogeo_bootleg_kf2k4se_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_KF2K4SE_CART, "NEOGEO BOOT kf2k4se Cart", tag, owner, clock, "boot_kf2k4se_cart", __FILE__) {} + +void neogeo_bootleg_kf2k4se_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_kf2k4se_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->decrypt_kof2k4se_68k(cpuregion, cpuregion_size); +} + + + +/************************************************* + svcplus +**************************************************/ + +const device_type NEOGEO_BOOTLEG_SVCPLUS_CART = &device_creator<neogeo_bootleg_svcplus_cart>; + +neogeo_bootleg_svcplus_cart::neogeo_bootleg_svcplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_SVCPLUS_CART, "NEOGEO BOOT svcplus Cart", tag, owner, clock, "boot_svcplus_cart", __FILE__) {} + +void neogeo_bootleg_svcplus_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_svcplus_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->svcplus_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size, 1); + m_bootleg_prot->svcplus_px_hack(cpuregion, cpuregion_size); +} + + +/************************************************* + svcplusaa +**************************************************/ + +const device_type NEOGEO_BOOTLEG_SVCPLUSA_CART = &device_creator<neogeo_bootleg_svcplusa_cart>; + +neogeo_bootleg_svcplusa_cart::neogeo_bootleg_svcplusa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_SVCPLUSA_CART, "NEOGEO BOOT svcplusa Cart", tag, owner, clock, "boot_svcplusa_cart", __FILE__) {} + +void neogeo_bootleg_svcplusa_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_svcplusa_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->svcplusa_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size); + m_bootleg_prot->svcplus_px_hack(cpuregion, cpuregion_size); +} + +/************************************************* + samsho5b +**************************************************/ + +const device_type NEOGEO_BOOTLEG_SAMSHO5B_CART = &device_creator<neogeo_bootleg_samsho5b_cart>; + +neogeo_bootleg_samsho5b_cart::neogeo_bootleg_samsho5b_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_SAMSHO5B_CART, "NEOGEO BOOT samsho5b Cart", tag, owner, clock, "boot_samsho5b_cart", __FILE__) {} + +void neogeo_bootleg_samsho5b_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_samsho5b_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->samsho5b_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->samsho5b_vx_decrypt(ym_region, ym_region_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); + m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size); +} + + +/************************************************* + kof97oro +**************************************************/ + +const device_type NEOGEO_BOOTLEG_KOF97ORO_CART = &device_creator<neogeo_bootleg_kof97oro_cart>; + +neogeo_bootleg_kof97oro_cart::neogeo_bootleg_kof97oro_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_KOF97ORO_CART, "NEOGEO BOOT kof97oro Cart", tag, owner, clock, "boot_kof97oro_cart", __FILE__) {} + +void neogeo_bootleg_kof97oro_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_kof97oro_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->kof97oro_px_decode(cpuregion, cpuregion_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); + m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size); +} + + +/************************************************* + lans2004 +**************************************************/ + +const device_type NEOGEO_BOOTLEG_LANS2004_CART = &device_creator<neogeo_bootleg_lans2004_cart>; + +neogeo_bootleg_lans2004_cart::neogeo_bootleg_lans2004_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_LANS2004_CART, "NEOGEO BOOT lans2004 Cart", tag, owner, clock, "boot_lans2004_cart", __FILE__) {} + +void neogeo_bootleg_lans2004_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_lans2004_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->lans2004_decrypt_68k(cpuregion, cpuregion_size); + m_bootleg_prot->lans2004_vx_decrypt(ym_region, ym_region_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); + m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size); +} + + +/************************************************* + kof10th +**************************************************/ + +const device_type NEOGEO_BOOTLEG_KOF10TH_CART = &device_creator<neogeo_bootleg_kof10th_cart>; + +neogeo_bootleg_kof10th_cart::neogeo_bootleg_kof10th_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_KOF10TH_CART, "NEOGEO BOOT kof10th Cart", tag, owner, clock, "boot_kof10th_cart", __FILE__) {} + +void neogeo_bootleg_kof10th_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_bootleg_prot->install_kof10th_protection(maincpu,m_banked_cart, cpuregion, cpuregion_size, fixedregion, fixedregion_size); + +} + +void neogeo_bootleg_kof10th_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->decrypt_kof10th(cpuregion, cpuregion_size); +} + + + +/************************************************* + kog +**************************************************/ + +const device_type NEOGEO_BOOTLEG_KOG_CART = &device_creator<neogeo_bootleg_kog_cart>; + +neogeo_bootleg_kog_cart::neogeo_bootleg_kog_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_cart(mconfig, NEOGEO_BOOTLEG_KOG_CART, "NEOGEO BOOT kog Cart", tag, owner, clock, "boot_kog_cart", __FILE__), + m_kog_prot(*this, "kog_prot") +{} + +static MACHINE_CONFIG_FRAGMENT( kog_bootleg_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_NGBOOTLEG_PROT_ADD("bootleg_prot") + MCFG_KOG_PROT_ADD("kog_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_bootleg_kog_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( kog_bootleg_cart ); +} + + +void neogeo_bootleg_kog_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_kog_prot->kog_install_protection(maincpu); +} + +void neogeo_bootleg_kog_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kog_prot->kog_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); + m_bootleg_prot->neogeo_bootleg_cx_decrypt(spr_region, spr_region_size); +} diff --git a/docs/release/src/hbmame/bus/neogeo/bootleg_cart.h b/docs/release/src/hbmame/bus/neogeo/bootleg_cart.h new file mode 100644 index 00000000000..77082b7035d --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/bootleg_cart.h @@ -0,0 +1,250 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_BOOTLEG_CART_H +#define __NEOGEO_BOOTLEG_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "sma_prot.h" +#include "bootleg_prot.h" +#include "kog_prot.h" + +// ======================> neogeo_bootleg_cart + +class neogeo_bootleg_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_bootleg_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_bootleg_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override {} + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {} + virtual int get_fixed_bank_type(void) override { return 0; } + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<ngbootleg_prot_device> m_bootleg_prot; +}; + + + +// device type definition +extern const device_type NEOGEO_BOOTLEG_CART; + + +/************************************************* + GAROUBL +**************************************************/ + +class neogeo_bootleg_garoubl_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_garoubl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_GAROUBL_CART; + + +/************************************************* + CTHD2003 +**************************************************/ + +class neogeo_bootleg_cthd2003_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_cthd2003_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_CTHD2003_CART; + +class neogeo_bootleg_ct2k3sp_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_ct2k3sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_CT2K3SP_CART; + +class neogeo_bootleg_ct2k3sa_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_ct2k3sa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_CT2K3SA_CART; + + +/************************************************* + KF10THEP +**************************************************/ + +class neogeo_bootleg_kf10thep_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_kf10thep_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_KF10THEP_CART; + + +/************************************************* + KF2K5UNI +**************************************************/ + +class neogeo_bootleg_kf2k5uni_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_kf2k5uni_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_KF2K5UNI_CART; + +/************************************************* + KF2K4SE +**************************************************/ + +class neogeo_bootleg_kf2k4se_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_kf2k4se_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_KF2K4SE_CART; + + +/************************************************* + SVCPLUS +**************************************************/ + +class neogeo_bootleg_svcplus_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_svcplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_SVCPLUS_CART; + +/************************************************* + SVCPLUSA +**************************************************/ + +class neogeo_bootleg_svcplusa_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_svcplusa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_SVCPLUSA_CART; + +/************************************************* + SAMSHO5B +**************************************************/ + +class neogeo_bootleg_samsho5b_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_samsho5b_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_SAMSHO5B_CART; + + +/************************************************* + KOF97ORO +**************************************************/ + +class neogeo_bootleg_kof97oro_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_kof97oro_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_KOF97ORO_CART; + + +/************************************************* + LANS2004 +**************************************************/ + +class neogeo_bootleg_lans2004_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_lans2004_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_LANS2004_CART; + +/************************************************* + KOF10TH +**************************************************/ + +class neogeo_bootleg_kof10th_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_kof10th_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_KOF10TH_CART; + + + +/************************************************* + KOG +**************************************************/ + +class neogeo_bootleg_kog_cart : public neogeo_bootleg_cart +{ +public: + neogeo_bootleg_kog_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } + + virtual machine_config_constructor device_mconfig_additions() const override; + + required_device<kog_prot_device> m_kog_prot; +}; +extern const device_type NEOGEO_BOOTLEG_KOG_CART; + + + + + + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.cpp b/docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.cpp new file mode 100644 index 00000000000..5d677c8cc74 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.cpp @@ -0,0 +1,319 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + these are bootlegs using a mix of reimplemented original features, could be further sorted + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "bootleg_hybrid_cart.h" + + +//------------------------------------------------- +// neogeo_bootleg_hybrid_hybrid_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_BOOTLEG_HYBRID_HYBRID_CART = &device_creator<neogeo_bootleg_hybrid_hybrid_cart>; + + +neogeo_bootleg_hybrid_hybrid_cart::neogeo_bootleg_hybrid_hybrid_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_bootleg_prot(*this, "bootleg_prot"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot"), + m_kof2002_prot(*this, "kof2002_prot"), + m_pvc_prot(*this, "pvc_prot") +{ +} + +neogeo_bootleg_hybrid_hybrid_cart::neogeo_bootleg_hybrid_hybrid_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_BOOTLEG_HYBRID_HYBRID_CART, "NEOGEO SMA Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_bootleg_prot(*this, "bootleg_prot"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot"), + m_kof2002_prot(*this, "kof2002_prot"), + m_pvc_prot(*this, "pvc_prot") + +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_bootleg_hybrid_hybrid_cart::device_start() +{ +} + +void neogeo_bootleg_hybrid_hybrid_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_bootleg_hybrid_hybrid_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( bootleg_hybrid_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_NGBOOTLEG_PROT_ADD("bootleg_prot") + MCFG_CMC_PROT_ADD("cmc_prot") + MCFG_PCM2_PROT_ADD("pcm2_prot") + MCFG_KOF2002_PROT_ADD("kof2002_prot") + MCFG_PVC_PROT_ADD("pvc_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_bootleg_hybrid_hybrid_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( bootleg_hybrid_cart ); +} + + + +/* Individual cartridge types (mirror DRIVER_INIT functionality) */ + + +/************************************************* + mslug3b6 +**************************************************/ + +const device_type NEOGEO_BOOTLEG_HYBRID_MSLUG3B6_CART = &device_creator<neogeo_bootleg_hybrid_mslug3b6_cart>; + +neogeo_bootleg_hybrid_mslug3b6_cart::neogeo_bootleg_hybrid_mslug3b6_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_MSLUG3B6_CART, "NEOGEO BOOT mslug3b6 Cart", tag, owner, clock, "boot_mslug3b6_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_mslug3b6_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_hybrid_mslug3b6_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2); + m_cmc_prot->cmc42_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MSLUG3_GFX_KEY); +} + +/************************************************* + kof2002b +**************************************************/ + +const device_type NEOGEO_BOOTLEG_HYBRID_KOF2002B_CART = &device_creator<neogeo_bootleg_hybrid_kof2002b_cart>; + +neogeo_bootleg_hybrid_kof2002b_cart::neogeo_bootleg_hybrid_kof2002b_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_KOF2002B_CART, "NEOGEO BOOT kof2002b Cart", tag, owner, clock, "boot_kof2002b_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_kof2002b_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_hybrid_kof2002b_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_bootleg_prot->kof2002b_gfx_decrypt(spr_region,0x4000000); + m_bootleg_prot->kof2002b_gfx_decrypt(fix_region,0x20000); +} + +/***/ + +const device_type NEOGEO_BOOTLEG_HYBRID_KF2K2MP_CART = &device_creator<neogeo_bootleg_hybrid_kf2k2mp_cart>; + +neogeo_bootleg_hybrid_kf2k2mp_cart::neogeo_bootleg_hybrid_kf2k2mp_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_KF2K2MP_CART, "NEOGEO BOOT kf2k2mp Cart", tag, owner, clock, "boot_kf2k2mp_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_kf2k2mp_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_hybrid_kf2k2mp_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->kf2k2mp_decrypt(cpuregion, cpuregion_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2); + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2002_GFX_KEY); +} + +/***/ + +const device_type NEOGEO_BOOTLEG_HYBRID_KF2K2MP2_CART = &device_creator<neogeo_bootleg_hybrid_kf2k2mp2_cart>; + +neogeo_bootleg_hybrid_kf2k2mp2_cart::neogeo_bootleg_hybrid_kf2k2mp2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_KF2K2MP2_CART, "NEOGEO BOOT kf2k2mp2 Cart", tag, owner, clock, "boot_kf2k2mp2_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_kf2k2mp2_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_hybrid_kf2k2mp2_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->kf2k2mp2_px_decrypt(cpuregion, cpuregion_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2002_GFX_KEY); +} + +/************************************************* + matrimbl +**************************************************/ + +const device_type NEOGEO_BOOTLEG_HYBRID_MATRIMBL_CART = &device_creator<neogeo_bootleg_hybrid_matrimbl_cart>; + +neogeo_bootleg_hybrid_matrimbl_cart::neogeo_bootleg_hybrid_matrimbl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_MATRIMBL_CART, "NEOGEO BOOT matrimbl Cart", tag, owner, clock, "boot_matrimbl_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_matrimbl_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_hybrid_matrimbl_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof2002_prot->matrim_decrypt_68k(cpuregion, cpuregion_size); + m_bootleg_prot->matrimbl_decrypt(spr_region, spr_region_size, audiocpu_region,audio_region_size); + m_cmc_prot->neogeo_sfix_decrypt(spr_region, spr_region_size, fix_region, fix_region_size); /* required for text layer */ +} + +/************************************************* + ms5plus +**************************************************/ + +const device_type NEOGEO_BOOTLEG_HYBRID_MS5PLUS_CART = &device_creator<neogeo_bootleg_hybrid_ms5plus_cart>; + +neogeo_bootleg_hybrid_ms5plus_cart::neogeo_bootleg_hybrid_ms5plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_MS5PLUS_CART, "NEOGEO BOOT ms5plus Cart", tag, owner, clock, "boot_ms5plus_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_ms5plus_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_bootleg_prot->install_ms5plus_protection(maincpu,m_banked_cart); +} + +void neogeo_bootleg_hybrid_ms5plus_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MSLUG5_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size); +} + +/************************************************* + svcboot +**************************************************/ + +const device_type NEOGEO_BOOTLEG_HYBRID_SVCBOOT_CART = &device_creator<neogeo_bootleg_hybrid_svcboot_cart>; + +neogeo_bootleg_hybrid_svcboot_cart::neogeo_bootleg_hybrid_svcboot_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_SVCBOOT_CART, "NEOGEO BOOT svcboot Cart", tag, owner, clock, "boot_svcboot_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_svcboot_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_pvc_prot->install_pvc_protection(maincpu,m_banked_cart); +} + +void neogeo_bootleg_hybrid_svcboot_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->svcboot_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size); +} + +/***/ + +const device_type NEOGEO_BOOTLEG_HYBRID_SVCSPLUS_CART = &device_creator<neogeo_bootleg_hybrid_svcsplus_cart>; + +neogeo_bootleg_hybrid_svcsplus_cart::neogeo_bootleg_hybrid_svcsplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_SVCSPLUS_CART, "NEOGEO BOOT svcsplus Cart", tag, owner, clock, "boot_svcsplus_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_svcsplus_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_pvc_prot->install_pvc_protection(maincpu,m_banked_cart); + +} + +void neogeo_bootleg_hybrid_svcsplus_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_bootleg_prot->svcsplus_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2); + m_bootleg_prot->svcboot_cx_decrypt(spr_region, spr_region_size); + m_bootleg_prot->svcsplus_px_hack(cpuregion, cpuregion_size); +} + + +/************************************************* + kf2k3bl +**************************************************/ + +const device_type NEOGEO_BOOTLEG_HYBRID_KF2K3BL_CART = &device_creator<neogeo_bootleg_hybrid_kf2k3bl_cart>; + +neogeo_bootleg_hybrid_kf2k3bl_cart::neogeo_bootleg_hybrid_kf2k3bl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_KF2K3BL_CART, "NEOGEO BOOT kf2k3bl Cart", tag, owner, clock, "boot_kf2k3bl_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_kf2k3bl_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_bootleg_prot->kf2k3bl_install_protection(maincpu,m_banked_cart, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_hybrid_kf2k3bl_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2003_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); + +} + +const device_type NEOGEO_BOOTLEG_HYBRID_KF2K3PL_CART = &device_creator<neogeo_bootleg_hybrid_kf2k3pl_cart>; + +neogeo_bootleg_hybrid_kf2k3pl_cart::neogeo_bootleg_hybrid_kf2k3pl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_KF2K3PL_CART, "NEOGEO BOOT kf2k3pl Cart", tag, owner, clock, "boot_kf2k3pl_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_kf2k3pl_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_bootleg_prot->kf2k3pl_install_protection(maincpu,m_banked_cart, cpuregion, cpuregion_size); +} + +void neogeo_bootleg_hybrid_kf2k3pl_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2003_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5); + m_bootleg_prot->kf2k3pl_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,1); +} + + +const device_type NEOGEO_BOOTLEG_HYBRID_KF2K3UPL_CART = &device_creator<neogeo_bootleg_hybrid_kf2k3upl_cart>; + +neogeo_bootleg_hybrid_kf2k3upl_cart::neogeo_bootleg_hybrid_kf2k3upl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_bootleg_hybrid_hybrid_cart(mconfig, NEOGEO_BOOTLEG_HYBRID_KF2K3UPL_CART, "NEOGEO BOOT kf2k3upl Cart", tag, owner, clock, "boot_kf2k3upl_cart", __FILE__) {} + +void neogeo_bootleg_hybrid_kf2k3upl_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_bootleg_prot->kf2k3bl_install_protection(maincpu,m_banked_cart, cpuregion, cpuregion_size); + +} + +void neogeo_bootleg_hybrid_kf2k3upl_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2003_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5); + m_bootleg_prot->kf2k3upl_px_decrypt(cpuregion, cpuregion_size); + m_bootleg_prot->neogeo_bootleg_sx_decrypt(fix_region, fix_region_size,2); +} diff --git a/docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.h b/docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.h new file mode 100644 index 00000000000..09416da8545 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.h @@ -0,0 +1,192 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_BOOTLEG_HYBRID_HYBRID_CART_H +#define __NEOGEO_BOOTLEG_HYBRID_HYBRID_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "bootleg_prot.h" +#include "pcm2_prot.h" +#include "cmc_prot.h" +#include "kof2002_prot.h" +#include "pvc_prot.h" + +// ======================> neogeo_bootleg_hybrid_hybrid_cart + +class neogeo_bootleg_hybrid_hybrid_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_bootleg_hybrid_hybrid_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_bootleg_hybrid_hybrid_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override {} + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {} + virtual int get_fixed_bank_type(void) override { return 0; } + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<ngbootleg_prot_device> m_bootleg_prot; + required_device<cmc_prot_device> m_cmc_prot; + required_device<pcm2_prot_device> m_pcm2_prot; + required_device<kof2002_prot_device> m_kof2002_prot; + required_device<pvc_prot_device> m_pvc_prot; +}; + + + +// device type definition +extern const device_type NEOGEO_BOOTLEG_HYBRID_HYBRID_CART; + + + +/************************************************* + MSLUG3B6 +**************************************************/ + +class neogeo_bootleg_hybrid_mslug3b6_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_mslug3b6_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_MSLUG3B6_CART; + + +/************************************************* + KOF2002B +**************************************************/ + +class neogeo_bootleg_hybrid_kof2002b_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_kof2002b_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_KOF2002B_CART; + +class neogeo_bootleg_hybrid_kf2k2mp_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_kf2k2mp_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_KF2K2MP_CART; + +class neogeo_bootleg_hybrid_kf2k2mp2_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_kf2k2mp2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_KF2K2MP2_CART; + + +/************************************************* + MATRIMBL +**************************************************/ + +class neogeo_bootleg_hybrid_matrimbl_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_matrimbl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 2; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_MATRIMBL_CART; + +/************************************************* + MS5PLUS +**************************************************/ + +class neogeo_bootleg_hybrid_ms5plus_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_ms5plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_MS5PLUS_CART; + +/************************************************* + SVCBOOT +**************************************************/ + +class neogeo_bootleg_hybrid_svcboot_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_svcboot_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_SVCBOOT_CART; + +class neogeo_bootleg_hybrid_svcsplus_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_svcsplus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_SVCSPLUS_CART; + + + +/************************************************* + KF2K3BL +**************************************************/ + +class neogeo_bootleg_hybrid_kf2k3bl_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_kf2k3bl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_KF2K3BL_CART; + +class neogeo_bootleg_hybrid_kf2k3pl_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_kf2k3pl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_KF2K3PL_CART; + + +class neogeo_bootleg_hybrid_kf2k3upl_cart : public neogeo_bootleg_hybrid_hybrid_cart +{ +public: + neogeo_bootleg_hybrid_kf2k3upl_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_BOOTLEG_HYBRID_KF2K3UPL_CART; + + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/bootleg_prot.cpp b/docs/release/src/hbmame/bus/neogeo/bootleg_prot.cpp new file mode 100644 index 00000000000..38e4e91bb7f --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/bootleg_prot.cpp @@ -0,0 +1,1072 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#include "emu.h" +#include "bootleg_prot.h" + + + +extern const device_type NGBOOTLEG_PROT = &device_creator<ngbootleg_prot_device>; + + +ngbootleg_prot_device::ngbootleg_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, NGBOOTLEG_PROT, "NeoGeo Protection (Bootleg)", tag, owner, clock, "ngbootleg_prot", __FILE__), + kof2k3_overlay(0), + m_mainrom(nullptr), + m_fixedrom(nullptr), + m_bankdev(nullptr) +{ +} + + +void ngbootleg_prot_device::device_start() +{ + memset(m_cartridge_ram, 0x00, 0x2000); + + save_item(NAME(m_cartridge_ram)); +} + +void ngbootleg_prot_device::device_reset() +{ +} + + + +/*************************************************************************** + + Neo-Geo hardware encryption and protection used on bootleg cartridges + + Many of the NeoGeo bootlegs use their own form of encryption and + protection, presumably to make them harder for other bootleggers to + copy. This encryption often involves non-trivial scrambling of the + program roms and the games are protected using an Altera chip which + provides some kind of rom overlay, patching parts of the code. + The graphics roms are usually scrambled in a different way to the + official SNK cartridges too. + +***************************************************************************/ + +#include "emu.h" +#include "includes/neogeo.h" + + +/* General Bootleg Functions - used by more than 1 game */ + + +void ngbootleg_prot_device::neogeo_bootleg_cx_decrypt(UINT8*sprrom, UINT32 sprrom_size) +{ + int i; + int cx_size = sprrom_size; + UINT8 *rom = sprrom; + dynamic_buffer buf( cx_size ); + + memcpy( &buf[0], rom, cx_size ); + + for( i = 0; i < cx_size / 0x40; i++ ){ + memcpy( &rom[ i * 0x40 ], &buf[ (i ^ 1) * 0x40 ], 0x40 ); + } +} + + +void ngbootleg_prot_device::neogeo_bootleg_sx_decrypt(UINT8* fixed, UINT32 fixed_size, int value ) +{ + int sx_size = fixed_size; + UINT8 *rom = fixed; + int i; + + if (value == 1) + { + dynamic_buffer buf( sx_size ); + memcpy( &buf[0], rom, sx_size ); + + for( i = 0; i < sx_size; i += 0x10 ) + { + memcpy( &rom[ i ], &buf[ i + 8 ], 8 ); + memcpy( &rom[ i + 8 ], &buf[ i ], 8 ); + } + } + else if (value == 2) + { + for( i = 0; i < sx_size; i++ ) + rom[ i ] = BITSWAP8( rom[ i ], 7, 6, 0, 4, 3, 2, 1, 5 ); + } +} + + + +/* The King of Fighters '97 Oroshi Plus 2003 (bootleg) */ + +void ngbootleg_prot_device::kof97oro_px_decode(UINT8* cpurom, UINT32 cpurom_size) +{ + int i; + std::vector<UINT16> tmp( 0x500000 ); + UINT16 *src = (UINT16*)cpurom; + + for (i = 0; i < 0x500000/2; i++) { + tmp[i] = src[i ^ 0x7ffef]; + } + + memcpy (src, &tmp[0], 0x500000); +} + + +/* The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg) */ + + +/* this uses RAM based tiles for the text layer, however the implementation + is incomplete, at the moment the S data is copied from the program rom on + start-up instead */ + +void ngbootleg_prot_device::kof10thBankswitch(address_space &space, UINT16 nBank) +{ + UINT32 bank = 0x100000 + ((nBank & 7) << 20); + if (bank >= 0x700000) + bank = 0x100000; + m_bankdev->neogeo_set_main_cpu_bank_address(bank); +} + +READ16_MEMBER( ngbootleg_prot_device::kof10th_RAMB_r ) +{ + return m_cartridge_ram[offset]; +} + +READ16_MEMBER(ngbootleg_prot_device::kof10th_RAM2_r) +{ +// printf("kof10th_RAM2_r\n"); + return m_cartridge_ram2[offset]; +} + +WRITE16_MEMBER( ngbootleg_prot_device::kof10th_custom_w ) +{ + if (!m_cartridge_ram[0xFFE]) { // Write to RAM bank A + //UINT16 *prom = (UINT16*)m_mainrom; + COMBINE_DATA(&m_cartridge_ram2[(0x00000/2) + (offset & 0xFFFF)]); + } else { // Write S data on-the-fly + m_fixedrom[offset] = BITSWAP8(data,7,6,0,4,3,2,1,5); + } +} + +WRITE16_MEMBER( ngbootleg_prot_device::kof10th_bankswitch_w ) +{ + if (offset >= 0x5F000) { + if (offset == 0x5FFF8) { // Standard bankswitch + kof10thBankswitch(space, data); + } else if (offset == 0x5FFFC && m_cartridge_ram[0xFFC] != data) { // Special bankswitch + UINT8 *src = m_mainrom; + memcpy (src + 0x10000, src + ((data & 1) ? 0x810000 : 0x710000), 0xcffff); + } + COMBINE_DATA(&m_cartridge_ram[offset & 0xFFF]); + } +} + +void ngbootleg_prot_device::install_kof10th_protection (cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size, UINT8* fixedrom, UINT32 fixedrom_size) +{ + m_mainrom = cpurom; + m_fixedrom = fixedrom; + m_bankdev = bankdev; + + maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof10th_RAM2_r),this)); + + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof10th_RAMB_r),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x200000, 0x23ffff, write16_delegate(FUNC(ngbootleg_prot_device::kof10th_custom_w),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x240000, 0x2fffff, write16_delegate(FUNC(ngbootleg_prot_device::kof10th_bankswitch_w),this)); + memcpy(m_cartridge_ram2, cpurom + 0xe0000, 0x20000); + + // HACK: only save this at device_start (not allowed later) + if (machine().phase() <= MACHINE_PHASE_INIT) + save_pointer(NAME(m_fixedrom), 0x40000); +} + +void ngbootleg_prot_device::decrypt_kof10th(UINT8* cpurom, UINT32 cpurom_size) +{ + int i, j; + dynamic_buffer dst(0x900000); + UINT8 *src = cpurom; + + memcpy(&dst[0x000000], src + 0x700000, 0x100000); // Correct (Verified in Uni-bios) + memcpy(&dst[0x100000], src + 0x000000, 0x800000); + + for (i = 0; i < 0x900000; i++) { + j = BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,2,9,8,7,1,5,4,3,10,6,0); + src[j] = dst[i]; + } + + // Altera protection chip patches these over P ROM + ((UINT16*)src)[0x0124/2] = 0x000d; // Enables XOR for RAM moves, forces SoftDIPs, and USA region + ((UINT16*)src)[0x0126/2] = 0xf7a8; + + ((UINT16*)src)[0x8bf4/2] = 0x4ef9; // Run code to change "S" data + ((UINT16*)src)[0x8bf6/2] = 0x000d; + ((UINT16*)src)[0x8bf8/2] = 0xf980; + +} + + +/* The King of Fighters 10th Anniversary Extra Plus (The King of Fighters 2002 bootleg) */ + + +void ngbootleg_prot_device::kf10thep_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + UINT16 *rom = (UINT16*)cpurom; + std::vector<UINT16> buf(0x100000/2); + + memcpy(&buf[0x000000/2], &rom[0x060000/2], 0x20000); + memcpy(&buf[0x020000/2], &rom[0x100000/2], 0x20000); + memcpy(&buf[0x040000/2], &rom[0x0e0000/2], 0x20000); + memcpy(&buf[0x060000/2], &rom[0x180000/2], 0x20000); + memcpy(&buf[0x080000/2], &rom[0x020000/2], 0x20000); + memcpy(&buf[0x0a0000/2], &rom[0x140000/2], 0x20000); + memcpy(&buf[0x0c0000/2], &rom[0x0c0000/2], 0x20000); + memcpy(&buf[0x0e0000/2], &rom[0x1a0000/2], 0x20000); + memcpy(&buf[0x0002e0/2], &rom[0x0402e0/2], 0x6a); // copy banked code to a new memory region + memcpy(&buf[0x0f92bc/2], &rom[0x0492bc/2], 0xb9e); // copy banked code to a new memory region + memcpy(rom, &buf[0], 0x100000); + + for (int i = 0xf92bc/2; i < 0xf9e58/2; i++) + { + if (rom[i+0] == 0x4eb9 && rom[i+1] == 0x0000) rom[i+1] = 0x000F; // correct JSR in moved code + if (rom[i+0] == 0x4ef9 && rom[i+1] == 0x0000) rom[i+1] = 0x000F; // correct JMP in moved code + } + rom[0x00342/2] = 0x000f; + + memmove(&rom[0x100000/2], &rom[0x200000/2], 0x600000); +} + + +/* The King of Fighters 10th Anniversary 2005 Unique (The King of Fighters 2002 bootleg) */ + + +void ngbootleg_prot_device::kf2k5uni_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + int i, j, ofst; + UINT8 *src = cpurom; + UINT8 dst[0x80]; + + for (i = 0; i < 0x800000; i+=0x80) + { + for (j = 0; j < 0x80; j+=2) + { + ofst = BITSWAP8(j, 0, 3, 4, 5, 6, 1, 2, 7); + memcpy(&dst[j], src + i + ofst, 2); + } + memcpy(src + i, &dst[0], 0x80); + } + + memcpy(src, src + 0x600000, 0x100000); // Seems to be the same as kof10th +} + +void ngbootleg_prot_device::kf2k5uni_sx_decrypt(UINT8* fixedrom, UINT32 fixedrom_size) +{ + int i; + UINT8 *srom = fixedrom; + + for (i = 0; i < 0x20000; i++) + srom[i] = BITSWAP8(srom[i], 4, 5, 6, 7, 0, 1, 2, 3); +} + +void ngbootleg_prot_device::kf2k5uni_mx_decrypt(UINT8* audiorom, UINT32 audiorom_size) +{ + int i; + UINT8 *mrom = audiorom; + + for (i = 0; i < 0x30000; i++) + mrom[i] = BITSWAP8(mrom[i], 4, 5, 6, 7, 0, 1, 2, 3); +} + +void ngbootleg_prot_device::decrypt_kf2k5uni(UINT8* cpurom, UINT32 cpurom_size, UINT8* audiorom, UINT32 audiorom_size, UINT8* fixedrom, UINT32 fixedrom_size) +{ + kf2k5uni_px_decrypt(cpurom, cpurom_size); + kf2k5uni_sx_decrypt(fixedrom, fixedrom_size); + kf2k5uni_mx_decrypt(audiorom, audiorom_size); +} + + +/* The King of Fighters 2002 (bootleg) */ + + +void ngbootleg_prot_device::kof2002b_gfx_decrypt(UINT8 *src, int size) +{ + int i, j; + static const UINT8 t[ 8 ][ 6 ] = + { + { 0, 8, 7, 6, 2, 1 }, + { 1, 0, 8, 7, 6, 2 }, + { 2, 1, 0, 8, 7, 6 }, + { 6, 2, 1, 0, 8, 7 }, + { 7, 6, 2, 1, 0, 8 }, + { 0, 1, 2, 6, 7, 8 }, + { 2, 1, 0, 6, 7, 8 }, + { 8, 0, 7, 6, 2, 1 }, + }; + + dynamic_buffer dst( 0x10000 ); + + for ( i = 0; i < size; i+=0x10000 ) + { + memcpy( &dst[0], src+i, 0x10000 ); + + for ( j = 0; j < 0x200; j++ ) + { + int n = (j & 0x38) >> 3; + int ofst = BITSWAP16(j, 15, 14, 13, 12, 11, 10, 9, t[n][0], t[n][1], t[n][2], 5, 4, 3, t[n][3], t[n][4], t[n][5]); + memcpy( src+i+ofst*128, &dst[j*128], 128 ); + } + } +} + + +/* The King of Fighters 2002 Magic Plus (bootleg) */ + + +void ngbootleg_prot_device::kf2k2mp_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + int i,j; + + UINT8 *src = cpurom; + UINT8 dst[0x80]; + + memmove(src, src + 0x300000, 0x500000); + + for (i = 0; i < 0x800000; i+=0x80) + { + for (j = 0; j < 0x80 / 2; j++) + { + int ofst = BITSWAP8( j, 6, 7, 2, 3, 4, 5, 0, 1 ); + memcpy(dst + j * 2, src + i + ofst * 2, 2); + } + memcpy(src + i, dst, 0x80); + } +} + + +/* The King of Fighters 2002 Magic Plus II (bootleg) */ + + +void ngbootleg_prot_device::kf2k2mp2_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + UINT8 *src = cpurom; + dynamic_buffer dst(0x600000); + + memcpy (&dst[0x000000], &src[0x1C0000], 0x040000); + memcpy (&dst[0x040000], &src[0x140000], 0x080000); + memcpy (&dst[0x0C0000], &src[0x100000], 0x040000); + memcpy (&dst[0x100000], &src[0x200000], 0x400000); + memcpy (&src[0x000000], &dst[0x000000], 0x600000); +} + + +/* Crouching Tiger Hidden Dragon 2003 (bootleg of King of Fighters 2001) */ + + +/* descrambling information from razoola */ +void ngbootleg_prot_device::cthd2003_neogeo_gfx_address_fix_do(UINT8* sprrom, UINT32 sprrom_size, int start, int end, int bit3shift, int bit2shift, int bit1shift, int bit0shift) +{ + int i,j; + int tilesize=128; + + dynamic_buffer rom(16*tilesize); // 16 tiles buffer + UINT8* realrom = sprrom + start*tilesize; + + for (i = 0; i < (end-start)/16; i++) { + for (j = 0; j < 16; j++) { + int offset = (((j&1)>>0)<<bit0shift) + +(((j&2)>>1)<<bit1shift) + +(((j&4)>>2)<<bit2shift) + +(((j&8)>>3)<<bit3shift); + + memcpy(&rom[j*tilesize], realrom+offset*tilesize, tilesize); + } + memcpy(realrom,&rom[0],tilesize*16); + realrom+=16*tilesize; + } +} + +void ngbootleg_prot_device::cthd2003_neogeo_gfx_address_fix(UINT8* sprrom, UINT32 sprrom_size, int start, int end) +{ + cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*0, end+512*0, 0,3,2,1); + cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*1, end+512*1, 1,0,3,2); + cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*2, end+512*2, 2,1,0,3); + // skip 3 & 4 + cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*5, end+512*5, 0,1,2,3); + cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*6, end+512*6, 0,1,2,3); + cthd2003_neogeo_gfx_address_fix_do(sprrom, sprrom_size, start+512*7, end+512*7, 0,2,3,1); +} + +void ngbootleg_prot_device::cthd2003_c(UINT8* sprrom, UINT32 sprrom_size, int pow) +{ + int i; + + for (i=0; i<=192; i+=8) + cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512); + + for (i=200; i<=392; i+=8) + cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512); + + for (i=400; i<=592; i+=8) + cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512); + + for (i=600; i<=792; i+=8) + cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512); + + for (i=800; i<=992; i+=8) + cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512); + + for (i=1000; i<=1016; i+=8) + cthd2003_neogeo_gfx_address_fix(sprrom, sprrom_size, i*512,i*512+512); +} + +void ngbootleg_prot_device::decrypt_cthd2003(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size, UINT8* fixedrom, UINT32 fixedrom_size) +{ + UINT8 *romdata = fixedrom; + dynamic_buffer tmp(8*128*128); + + memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128); + memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128); + memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128); + memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128); + memcpy(romdata, &tmp[0], 8*128*128); + + romdata = audiorom+0x10000; + memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128); + memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128); + memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128); + memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128); + memcpy(romdata, &tmp[0], 8*128*128); + + memcpy(romdata-0x10000,romdata,0x10000); + + cthd2003_c(sprrom, sprrom_size, 0); +} + +WRITE16_MEMBER( ngbootleg_prot_device::cthd2003_bankswitch_w ) +{ + int bankaddress; + static const int cthd2003_banks[8] = + { + 1,0,1,0,1,0,3,2, + }; + if (offset == 0) + { + bankaddress = 0x100000 + cthd2003_banks[data&7]*0x100000; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); + } +} + +void ngbootleg_prot_device::patch_cthd2003(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size) +{ + /* patches thanks to razoola */ + int i; + UINT16 *mem16 = (UINT16 *)cpurom; + + /* special ROM banking handler */ + maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(FUNC(ngbootleg_prot_device::cthd2003_bankswitch_w),this)); + m_bankdev = bankdev; + + // theres still a problem on the character select screen but it seems to be related to cpu core timing issues, + // overclocking the 68k prevents it. + + // fix garbage on s1 layer over everything + mem16[0xf415a/2] = 0x4ef9; + mem16[0xf415c/2] = 0x000f; + mem16[0xf415e/2] = 0x4cf2; + // Fix corruption in attract mode before title screen + for (i=0x1ae290/2;i < 0x1ae8d0/2; i=i+1) + { + mem16[i] = 0x0000; + } + + // Fix for title page + for (i=0x1f8ef0/2;i < 0x1fa1f0/2; i=i+2) + { + mem16[i] -= 0x7000; + mem16[i+1] -= 0x0010; + } + + // Fix for green dots on title page + for (i=0xac500/2;i < 0xac520/2; i=i+1) + { + mem16[i] = 0xFFFF; + } + // Fix for blanks as screen change level end clear + mem16[0x991d0/2] = 0xdd03; + mem16[0x99306/2] = 0xdd03; + mem16[0x99354/2] = 0xdd03; + mem16[0x9943e/2] = 0xdd03; +} + + +/* Crouching Tiger Hidden Dragon 2003 Super Plus (bootleg of King of Fighters 2001) */ + + +void ngbootleg_prot_device::ct2k3sp_sx_decrypt( UINT8* fixedrom, UINT32 fixedrom_size ) +{ + int rom_size = fixedrom_size; + UINT8 *rom = fixedrom; + dynamic_buffer buf( rom_size ); + int i; + int ofst; + + memcpy( &buf[0], rom, rom_size ); + + for( i = 0; i < rom_size; i++ ){ + ofst = BITSWAP24( (i & 0x1ffff), 23, 22, 21, 20, 19, 18, 17, 3, + 0, 1, 4, 2, 13, 14, 16, 15, + 5, 6, 11, 10, 9, 8, 7, 12 ); + + ofst += (i >> 17) << 17; + + rom[ i ] = buf[ ofst ]; + } + + memcpy( &buf[0], rom, rom_size ); + + memcpy( &rom[ 0x08000 ], &buf[ 0x10000 ], 0x8000 ); + memcpy( &rom[ 0x10000 ], &buf[ 0x08000 ], 0x8000 ); + memcpy( &rom[ 0x28000 ], &buf[ 0x30000 ], 0x8000 ); + memcpy( &rom[ 0x30000 ], &buf[ 0x28000 ], 0x8000 ); +} + +void ngbootleg_prot_device::decrypt_ct2k3sp(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size, UINT8* fixedrom, UINT32 fixedrom_size) +{ + UINT8 *romdata = audiorom+0x10000; + dynamic_buffer tmp(8*128*128); + memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128); + memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128); + memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128); + memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128); + memcpy(romdata, &tmp[0], 8*128*128); + + memcpy(romdata-0x10000,romdata,0x10000); + ct2k3sp_sx_decrypt(fixedrom, fixedrom_size); + cthd2003_c(sprrom,sprrom_size,0); +} + + +/* Crouching Tiger Hidden Dragon 2003 Super Plus alternate (bootleg of King of Fighters 2001) */ + + +void ngbootleg_prot_device::decrypt_ct2k3sa(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size ) +{ + UINT8 *romdata = audiorom+0x10000; + dynamic_buffer tmp(8*128*128); + memcpy(&tmp[8*0*128], romdata+8*0*128, 8*32*128); + memcpy(&tmp[8*32*128], romdata+8*64*128, 8*32*128); + memcpy(&tmp[8*64*128], romdata+8*32*128, 8*32*128); + memcpy(&tmp[8*96*128], romdata+8*96*128, 8*32*128); + memcpy(romdata, &tmp[0], 8*128*128); + + memcpy(romdata-0x10000,romdata,0x10000); + cthd2003_c(sprrom,sprrom_size, 0); +} + +void ngbootleg_prot_device::patch_ct2k3sa(UINT8* cpurom, UINT32 cpurom_size) +{ + /* patches thanks to razoola - same as for cthd2003*/ + int i; + UINT16 *mem16 = (UINT16 *)cpurom; + + // theres still a problem on the character select screen but it seems to be related to cpu core timing issues, + // overclocking the 68k prevents it. + + // fix garbage on s1 layer over everything + mem16[0xf415a/2] = 0x4ef9; + mem16[0xf415c/2] = 0x000f; + mem16[0xf415e/2] = 0x4cf2; + + // Fix corruption in attract mode before title screen + for (i=0x1ae290/2;i < 0x1ae8d0/2; i=i+1) + { + mem16[i] = 0x0000; + } + + // Fix for title page + for (i=0x1f8ef0/2;i < 0x1fa1f0/2; i=i+2) + { + mem16[i] -= 0x7000; + mem16[i+1] -= 0x0010; + } + + // Fix for green dots on title page + for (i=0xac500/2;i < 0xac520/2; i=i+1) + { + mem16[i] = 0xFFFF; + } + // Fix for blanks as screen change level end clear + mem16[0x991d0/2] = 0xdd03; + mem16[0x99306/2] = 0xdd03; + mem16[0x99354/2] = 0xdd03; + mem16[0x9943e/2] = 0xdd03; +} + + +/* King of Fighters Special Edition 2004 (bootleg of King of Fighters 2002) */ + + +void ngbootleg_prot_device::decrypt_kof2k4se_68k(UINT8* cpurom, UINT32 cpurom_size) +{ + UINT8 *src = cpurom+0x100000; + dynamic_buffer dst(0x400000); + int i; + static const int sec[] = {0x300000,0x200000,0x100000,0x000000}; + memcpy(&dst[0],src,0x400000); + + for(i = 0; i < 4; ++i) + { + memcpy(src+i*0x100000,&dst[sec[i]],0x100000); + } +} + + +/* Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg) */ + + +void ngbootleg_prot_device::lans2004_vx_decrypt(UINT8* ymsndrom, UINT32 ymsndrom_size) +{ + int i; + UINT8 *rom = ymsndrom; + for (i = 0; i < 0xA00000; i++) + rom[i] = BITSWAP8(rom[i], 0, 1, 5, 4, 3, 2, 6, 7); +} + +void ngbootleg_prot_device::lans2004_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size) +{ + /* Descrambling P ROMs - Thanks to Razoola for the info */ + int i; + UINT8 *src = cpurom; + UINT16 *rom = (UINT16*)cpurom; + + { + static const int sec[] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD }; + dynamic_buffer dst(0x600000); + + for (i = 0; i < 8; i++) + memcpy (&dst[i * 0x20000], src + sec[i] * 0x20000, 0x20000); + + memcpy (&dst[0x0BBB00], src + 0x045B00, 0x001710); + memcpy (&dst[0x02FFF0], src + 0x1A92BE, 0x000010); + memcpy (&dst[0x100000], src + 0x200000, 0x400000); + memcpy (src, &dst[0], 0x600000); + } + + for (i = 0xBBB00/2; i < 0xBE000/2; i++) { + if ((((rom[i]&0xFFBF)==0x4EB9) || ((rom[i]&0xFFBF)==0x43B9)) && (rom[i+1]==0x0000)) { + rom[i + 1] = 0x000B; + rom[i + 2] += 0x6000; + } + } + + /* Patched by protection chip (Altera) ? */ + rom[0x2D15C/2] = 0x000B; + rom[0x2D15E/2] = 0xBB00; + rom[0x2D1E4/2] = 0x6002; + rom[0x2EA7E/2] = 0x6002; + rom[0xBBCD0/2] = 0x6002; + rom[0xBBDF2/2] = 0x6002; + rom[0xBBE42/2] = 0x6002; +} + + +/* Metal Slug 5 Plus (bootleg) */ + + +READ16_MEMBER( ngbootleg_prot_device::mslug5_prot_r ) +{ + logerror("PC %06x: access protected\n",space.device().safe_pc()); + return 0xa0; +} + +WRITE16_MEMBER( ngbootleg_prot_device::ms5plus_bankswitch_w ) +{ + int bankaddress; + logerror("offset: %06x PC %06x: set banking %04x\n",offset,space.device().safe_pc(),data); + if ((offset == 0)&&(data == 0xa0)) + { + bankaddress=0xa0; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); + logerror("offset: %06x PC %06x: set banking %04x\n\n",offset,space.device().safe_pc(),bankaddress); + } + else if(offset == 2) + { + data=data>>4; + //data=data&7; + bankaddress=data*0x100000; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); + logerror("offset: %06x PC %06x: set banking %04x\n\n",offset,space.device().safe_pc(),bankaddress); + } +} + +void ngbootleg_prot_device::install_ms5plus_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + // special ROM banking handler / additional protection + maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2ffff0, 0x2fffff,read16_delegate(FUNC(ngbootleg_prot_device::mslug5_prot_r),this), write16_delegate(FUNC(ngbootleg_prot_device::ms5plus_bankswitch_w),this)); + m_bankdev = bankdev; + +} + + +/* SNK vs. CAPCOM SVC CHAOS (bootleg) */ + + +void ngbootleg_prot_device::svcboot_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + static const UINT8 sec[] = { + 0x06, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00 + }; + int i; + int size = cpurom_size; + UINT8 *src = cpurom; + dynamic_buffer dst( size ); + int ofst; + for( i = 0; i < size / 0x100000; i++ ){ + memcpy( &dst[ i * 0x100000 ], &src[ sec[ i ] * 0x100000 ], 0x100000 ); + } + for( i = 0; i < size / 2; i++ ){ + ofst = BITSWAP8( (i & 0x0000ff), 7, 6, 1, 0, 3, 2, 5, 4 ); + ofst += (i & 0xffff00); + memcpy( &src[ i * 2 ], &dst[ ofst * 2 ], 0x02 ); + } +} + +void ngbootleg_prot_device::svcboot_cx_decrypt(UINT8*sprrom, UINT32 sprrom_size) +{ + static const UINT8 idx_tbl[ 0x10 ] = { + 0, 1, 0, 1, 2, 3, 2, 3, 3, 4, 3, 4, 4, 5, 4, 5, + }; + static const UINT8 bitswap4_tbl[ 6 ][ 4 ] = { + { 3, 0, 1, 2 }, + { 2, 3, 0, 1 }, + { 1, 2, 3, 0 }, + { 0, 1, 2, 3 }, + { 3, 2, 1, 0 }, + { 3, 0, 2, 1 }, + }; + int i; + int size = sprrom_size; + UINT8 *src = sprrom; + dynamic_buffer dst( size ); + int ofst; + memcpy( &dst[0], src, size ); + for( i = 0; i < size / 0x80; i++ ){ + int idx = idx_tbl[ (i & 0xf00) >> 8 ]; + int bit0 = bitswap4_tbl[ idx ][ 0 ]; + int bit1 = bitswap4_tbl[ idx ][ 1 ]; + int bit2 = bitswap4_tbl[ idx ][ 2 ]; + int bit3 = bitswap4_tbl[ idx ][ 3 ]; + ofst = BITSWAP8( (i & 0x0000ff), 7, 6, 5, 4, bit3, bit2, bit1, bit0 ); + ofst += (i & 0xfffff00); + memcpy( &src[ i * 0x80 ], &dst[ ofst * 0x80 ], 0x80 ); + } +} + + +/* SNK vs. CAPCOM SVC CHAOS Plus (bootleg set 1) */ + + +void ngbootleg_prot_device::svcplus_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + static const int sec[] = { + 0x00, 0x03, 0x02, 0x05, 0x04, 0x01 + }; + int size = cpurom_size; + UINT8 *src = cpurom; + dynamic_buffer dst( size ); + int i; + int ofst; + memcpy( &dst[0], src, size ); + for( i = 0; i < size / 2; i++ ){ + ofst = BITSWAP24( (i & 0xfffff), 0x17, 0x16, 0x15, 0x14, 0x13, 0x00, 0x01, 0x02, + 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, + 0x07, 0x06, 0x05, 0x04, 0x03, 0x10, 0x11, 0x12 ); + ofst ^= 0x0f0007; + ofst += (i & 0xff00000); + memcpy( &src[ i * 0x02 ], &dst[ ofst * 0x02 ], 0x02 ); + } + memcpy( &dst[0], src, size ); + for( i = 0; i < 6; i++ ){ + memcpy( &src[ i * 0x100000 ], &dst[ sec[ i ] * 0x100000 ], 0x100000 ); + } +} + +void ngbootleg_prot_device::svcplus_px_hack(UINT8* cpurom, UINT32 cpurom_size) +{ + /* patched by the protection chip? */ + UINT16 *mem16 = (UINT16 *)cpurom; + mem16[0x0f8016/2] = 0x33c1; +} + + +/* SNK vs. CAPCOM SVC CHAOS Plus (bootleg set 2) */ + + +void ngbootleg_prot_device::svcplusa_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + int i; + static const int sec[] = { + 0x01, 0x02, 0x03, 0x04, 0x05, 0x00 + }; + int size = cpurom_size; + UINT8 *src = cpurom; + dynamic_buffer dst( size ); + memcpy( &dst[0], src, size ); + for( i = 0; i < 6; i++ ){ + memcpy( &src[ i * 0x100000 ], &dst[ sec[ i ] * 0x100000 ], 0x100000 ); + } +} + + +/* SNK vs. CAPCOM SVC CHAOS Super Plus (bootleg) */ + + +void ngbootleg_prot_device::svcsplus_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + static const int sec[] = { + 0x06, 0x07, 0x01, 0x02, 0x03, 0x04, 0x05, 0x00 + }; + int size = cpurom_size; + UINT8 *src = cpurom; + dynamic_buffer dst( size ); + int i; + int ofst; + memcpy( &dst[0], src, size ); + for( i = 0; i < size / 2; i++ ){ + ofst = BITSWAP16( (i & 0x007fff), 0x0f, 0x00, 0x08, 0x09, 0x0b, 0x0a, 0x0c, 0x0d, + 0x04, 0x03, 0x01, 0x07, 0x06, 0x02, 0x05, 0x0e ); + + ofst += (i & 0x078000); + ofst += sec[ (i & 0xf80000) >> 19 ] << 19; + memcpy( &src[ i * 2 ], &dst[ ofst * 2 ], 0x02 ); + } +} + +void ngbootleg_prot_device::svcsplus_px_hack(UINT8* cpurom, UINT32 cpurom_size) +{ + /* patched by the protection chip? */ + UINT16 *mem16 = (UINT16 *)cpurom; + mem16[0x9e90/2] = 0x000f; + mem16[0x9e92/2] = 0xc9c0; + mem16[0xa10c/2] = 0x4eb9; + mem16[0xa10e/2] = 0x000e; + mem16[0xa110/2] = 0x9750; +} + + +/* The King of Fighters 2003 (bootleg set 1) */ + + +READ16_MEMBER( ngbootleg_prot_device::kof2003_r) +{ + return m_cartridge_ram[offset]; +} + +READ16_MEMBER(ngbootleg_prot_device::kof2003_overlay_r) // hack? +{ + return kof2k3_overlay; +} + +WRITE16_MEMBER( ngbootleg_prot_device::kof2003_w ) +{ + data = COMBINE_DATA(&m_cartridge_ram[offset]); + if (offset == 0x1ff0/2 || offset == 0x1ff2/2) { + UINT8* cr = (UINT8 *)m_cartridge_ram; + UINT32 address = (cr[BYTE_XOR_LE(0x1ff3)]<<16)|(cr[BYTE_XOR_LE(0x1ff2)]<<8)|cr[BYTE_XOR_LE(0x1ff1)]; + UINT8 prt = cr[BYTE_XOR_LE(0x1ff2)]; + + cr[BYTE_XOR_LE(0x1ff0)] = 0xa0; + cr[BYTE_XOR_LE(0x1ff1)] &= 0xfe; + cr[BYTE_XOR_LE(0x1ff3)] &= 0x7f; + m_bankdev->neogeo_set_main_cpu_bank_address(address+0x100000); + + kof2k3_overlay = (prt & 0x00ff) | (kof2k3_overlay & 0xff00); + } +} + +WRITE16_MEMBER( ngbootleg_prot_device::kof2003p_w ) +{ + data = COMBINE_DATA(&m_cartridge_ram[offset]); + if (offset == 0x1ff0/2 || offset == 0x1ff2/2) { + UINT8* cr = (UINT8 *)m_cartridge_ram; + UINT32 address = (cr[BYTE_XOR_LE(0x1ff3)]<<16)|(cr[BYTE_XOR_LE(0x1ff2)]<<8)|cr[BYTE_XOR_LE(0x1ff0)]; + UINT8 prt = cr[BYTE_XOR_LE(0x1ff2)]; + + cr[BYTE_XOR_LE(0x1ff0)] &= 0xfe; + cr[BYTE_XOR_LE(0x1ff3)] &= 0x7f; + m_bankdev->neogeo_set_main_cpu_bank_address(address+0x100000); + + kof2k3_overlay = (prt & 0x00ff) | (kof2k3_overlay & 0xff00); + } +} + +void ngbootleg_prot_device::kf2k3bl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + int i; + static const UINT8 sec[] = { + 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 + }; + + int rom_size = 0x800000; + UINT8 *rom = cpurom; + dynamic_buffer buf( rom_size ); + memcpy( &buf[0], rom, rom_size ); + + for( i = 0; i < rom_size / 0x100000; i++ ){ + memcpy( &rom[ i * 0x100000 ], &buf[ sec[ i ] * 0x100000 ], 0x100000 ); + } +} + +void ngbootleg_prot_device::kf2k3bl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size) +{ + m_mainrom = cpurom; + + maincpu->space(AS_PROGRAM).install_read_handler(0x58196, 0x58197, read16_delegate(FUNC(ngbootleg_prot_device::kof2003_overlay_r),this) ); + + maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof2003_r),this), write16_delegate(FUNC(ngbootleg_prot_device::kof2003_w),this) ); + m_bankdev = bankdev; + +} + + +/* The King of Fighters 2004 Plus / Hero (The King of Fighters 2003 bootleg) */ + + +void ngbootleg_prot_device::kf2k3pl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + std::vector<UINT16> tmp(0x100000/2); + UINT16*rom16 = (UINT16*)cpurom; + int j; + int i; + + for (i = 0;i < 0x700000/2;i+=0x100000/2) + { + memcpy(&tmp[0],&rom16[i],0x100000); + for (j = 0;j < 0x100000/2;j++) + rom16[i+j] = tmp[BITSWAP24(j,23,22,21,20,19,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18)]; + } + + /* patched by Altera protection chip on PCB */ + rom16[0xf38ac/2] = 0x4e75; + + kof2k3_overlay = rom16[0x58196 / 2]; +} + +void ngbootleg_prot_device::kf2k3pl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size) +{ + m_mainrom = cpurom; + maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof2003_r),this), write16_delegate(FUNC(ngbootleg_prot_device::kof2003p_w),this) ); + m_bankdev = bankdev; +} + + +/* The King of Fighters 2004 Ultra Plus (The King of Fighters 2003 bootleg) */ + + +void ngbootleg_prot_device::kf2k3upl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + { + UINT8 *src = cpurom; + memmove(src+0x100000, src, 0x600000); + memmove(src, src+0x700000, 0x100000); + } + + { + int ofst; + int i; + UINT8 *rom = cpurom + 0xfe000; + UINT8 *buf = cpurom + 0xd0610; + + for( i = 0; i < 0x2000 / 2; i++ ){ + ofst = (i & 0xff00) + BITSWAP8( (i & 0x00ff), 7, 6, 0, 4, 3, 2, 1, 5 ); + memcpy( &rom[ i * 2 ], &buf[ ofst * 2 ], 2 ); + } + } + + UINT16*rom16 = (UINT16*)cpurom; + kof2k3_overlay = rom16[0x58196 / 2]; + + +} + + +/* Samurai Shodown V / Samurai Spirits Zero (bootleg) */ + + +void ngbootleg_prot_device::samsho5b_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + int px_size = cpurom_size; + UINT8 *rom = cpurom; + dynamic_buffer buf( px_size ); + int ofst; + int i; + + memcpy( &buf[0], rom, px_size ); + + for( i = 0; i < px_size / 2; i++ ){ + ofst = BITSWAP8( (i & 0x000ff), 7, 6, 5, 4, 3, 0, 1, 2 ); + ofst += (i & 0xfffff00); + ofst ^= 0x060005; + + memcpy( &rom[ i * 2 ], &buf[ ofst * 2 ], 0x02 ); + } + + memcpy( &buf[0], rom, px_size ); + + memcpy( &rom[ 0x000000 ], &buf[ 0x700000 ], 0x100000 ); + memcpy( &rom[ 0x100000 ], &buf[ 0x000000 ], 0x700000 ); +} + + +void ngbootleg_prot_device::samsho5b_vx_decrypt(UINT8* ymsndrom, UINT32 ymsndrom_size) +{ + int vx_size = ymsndrom_size; + UINT8 *rom = ymsndrom; + int i; + + for( i = 0; i < vx_size; i++ ) + rom[ i ] = BITSWAP8( rom[ i ], 0, 1, 5, 4, 3, 2, 6, 7 ); +} + + +/* Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg) */ + + +#define MATRIMBLZ80( i ) ( i^(BITSWAP8(i&0x3,4,3,1,2,0,7,6,5)<<8) ) + +void ngbootleg_prot_device::matrimbl_decrypt(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size) +{ + /* decrypt Z80 */ + UINT8 *rom = audiorom+0x10000; + dynamic_buffer buf( 0x20000 ); + int i, j; + memcpy( &buf[0], rom, 0x20000 ); + for( i=0x00000; i<0x20000; i++ ) + { + if ( i&0x10000 ) + { + if ( i&0x800 ) + { + j=MATRIMBLZ80( i ); + j=j^0x10000; + } + else + { + j=MATRIMBLZ80(( i^0x01 )); + } + } + else + { + if ( i&0x800 ) + { + j=MATRIMBLZ80(( i^0x01 )); + j=j^0x10000; + } + else + { + j=MATRIMBLZ80( i ); + } + } + rom[ j ]=buf[ i ]; + } + memcpy( rom-0x10000, rom, 0x10000 ); + + /* decrypt gfx */ + cthd2003_c(sprrom,sprrom_size, 0 ); +} diff --git a/docs/release/src/hbmame/bus/neogeo/bootleg_prot.h b/docs/release/src/hbmame/bus/neogeo/bootleg_prot.h new file mode 100644 index 00000000000..8aa1c9bdd7e --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/bootleg_prot.h @@ -0,0 +1,92 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#pragma once + +#include "banked_cart.h" + +#ifndef __NGBOOTLEG_PROT__ +#define __NGBOOTLEG_PROT__ + +extern const device_type NGBOOTLEG_PROT; + +#define MCFG_NGBOOTLEG_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, NGBOOTLEG_PROT, 0) + + +class ngbootleg_prot_device : public device_t +{ +public: + // construction/destruction + ngbootleg_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + void neogeo_bootleg_cx_decrypt(UINT8*sprrom, UINT32 sprrom_size); + void neogeo_bootleg_sx_decrypt(UINT8* fixed, UINT32 fixed_size, int value); + void kof97oro_px_decode(UINT8* cpurom, UINT32 cpurom_size); + void kof10thBankswitch(address_space &space, UINT16 nBank); + DECLARE_READ16_MEMBER(kof10th_RAM2_r); + DECLARE_READ16_MEMBER(kof10th_RAMB_r); + DECLARE_WRITE16_MEMBER(kof10th_custom_w); + DECLARE_WRITE16_MEMBER(kof10th_bankswitch_w); + void install_kof10th_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size, UINT8* fixedrom, UINT32 fixedrom_size); + void decrypt_kof10th(UINT8* cpurom, UINT32 cpurom_size); + void kf10thep_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void kf2k5uni_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void kf2k5uni_sx_decrypt(UINT8* fixedrom, UINT32 fixedrom_size); + void kf2k5uni_mx_decrypt(UINT8* audiorom, UINT32 audiorom_size); + void decrypt_kf2k5uni(UINT8* cpurom, UINT32 cpurom_size, UINT8* audiorom, UINT32 audiorom_size, UINT8* fixedrom, UINT32 fixedrom_size); + void kof2002b_gfx_decrypt(UINT8 *src, int size); + void kf2k2mp_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void kf2k2mp2_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void cthd2003_neogeo_gfx_address_fix_do(UINT8* sprrom, UINT32 sprrom_size, int start, int end, int bit3shift, int bit2shift, int bit1shift, int bit0shift); + void cthd2003_neogeo_gfx_address_fix(UINT8* sprrom, UINT32 sprrom_size, int start, int end); + void cthd2003_c(UINT8* sprrom, UINT32 sprrom_size, int pow); + void decrypt_cthd2003(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size, UINT8* fixedrom, UINT32 fixedrom_size); + DECLARE_WRITE16_MEMBER(cthd2003_bankswitch_w); + void patch_cthd2003(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size); + void ct2k3sp_sx_decrypt(UINT8* fixedrom, UINT32 fixedrom_size); + void decrypt_ct2k3sp(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size, UINT8* fixedrom, UINT32 fixedrom_size); + void decrypt_ct2k3sa(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size); + void patch_ct2k3sa(UINT8* cpurom, UINT32 cpurom_size); + void decrypt_kof2k4se_68k(UINT8* cpurom, UINT32 cpurom_size); + void lans2004_vx_decrypt(UINT8* ymsndrom, UINT32 ymsndrom_size); + void lans2004_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size); + DECLARE_READ16_MEMBER(mslug5_prot_r); + DECLARE_WRITE16_MEMBER(ms5plus_bankswitch_w); + void install_ms5plus_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + void svcboot_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void svcboot_cx_decrypt(UINT8*sprrom, UINT32 sprrom_size); + void svcplus_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void svcplus_px_hack(UINT8* cpurom, UINT32 cpurom_size); + void svcplusa_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void svcsplus_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void svcsplus_px_hack(UINT8* cpurom, UINT32 cpurom_size); + DECLARE_READ16_MEMBER(kof2003_r); + DECLARE_WRITE16_MEMBER(kof2003_w); + DECLARE_WRITE16_MEMBER(kof2003p_w); + DECLARE_READ16_MEMBER(kof2003_overlay_r); + void kf2k3bl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void kf2k3bl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size); + void kf2k3pl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void kf2k3pl_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev, UINT8* cpurom, UINT32 cpurom_size); + UINT16 kof2k3_overlay; + + void kf2k3upl_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void samsho5b_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + void samsho5b_vx_decrypt(UINT8* ymsndrom, UINT32 ymsndrom_size); + void matrimbl_decrypt(UINT8* sprrom, UINT32 sprrom_size, UINT8* audiorom, UINT32 audiorom_size); + + UINT16 m_cartridge_ram[0x1000]; // bootlegs + + // for kof10th + UINT8* m_mainrom; + UINT8* m_fixedrom; + neogeo_banked_cart_device* m_bankdev; + UINT16 m_cartridge_ram2[0x10000]; + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/cmc_cart.cpp b/docs/release/src/hbmame/bus/neogeo/cmc_cart.cpp new file mode 100644 index 00000000000..c528366b717 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/cmc_cart.cpp @@ -0,0 +1,223 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "cmc_cart.h" + + +//------------------------------------------------- +// neogeo_cmc_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_CMC_CART = &device_creator<neogeo_cmc_cart>; + + +neogeo_cmc_cart::neogeo_cmc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot") + +{ +} + +neogeo_cmc_cart::neogeo_cmc_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_CMC_CART, "NEOGEO SMA Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_cmc_cart::device_start() +{ +} + +void neogeo_cmc_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_cmc_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( cmc_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_CMC_PROT_ADD("cmc_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_cmc_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( cmc_cart ); +} + + + +/* Individual cartridge types (mirror DRIVER_INIT functionality) */ + +/************************************************* + Zupapa +**************************************************/ + +const device_type NEOGEO_CMC_ZUPAPA_CART = &device_creator<neogeo_cmc_zupapa_cart>; + +neogeo_cmc_zupapa_cart::neogeo_cmc_zupapa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_ZUPAPA_CART, "NEOGEO CMC zupapa Cart", tag, owner, clock, "cmc_zupapa_cart", __FILE__) {} + +void neogeo_cmc_zupapa_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, ZUPAPA_GFX_KEY); +} + + +/************************************************* + Zupapa +**************************************************/ + +const device_type NEOGEO_CMC_MSLUG3H_CART = &device_creator<neogeo_cmc_mslug3h_cart>; + +neogeo_cmc_mslug3h_cart::neogeo_cmc_mslug3h_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_MSLUG3H_CART, "NEOGEO CMC mslug3h Cart", tag, owner, clock, "cmc_mslug3h_cart", __FILE__) {} + +void neogeo_cmc_mslug3h_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MSLUG3_GFX_KEY); +} + + +/************************************************* + Ganryu +**************************************************/ + +const device_type NEOGEO_CMC_GANRYU_CART = &device_creator<neogeo_cmc_ganryu_cart>; + +neogeo_cmc_ganryu_cart::neogeo_cmc_ganryu_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_GANRYU_CART, "NEOGEO CMC ganryu Cart", tag, owner, clock, "cmc_ganryu_cart", __FILE__) {} + +void neogeo_cmc_ganryu_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, GANRYU_GFX_KEY); +} + + +/************************************************* + S1945P +**************************************************/ + +const device_type NEOGEO_CMC_S1945P_CART = &device_creator<neogeo_cmc_s1945p_cart>; + +neogeo_cmc_s1945p_cart::neogeo_cmc_s1945p_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_S1945P_CART, "NEOGEO CMC s1945p Cart", tag, owner, clock, "cmc_s1945p_cart", __FILE__) {} + +void neogeo_cmc_s1945p_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, S1945P_GFX_KEY); +} + +/************************************************* + PREISLE2 +**************************************************/ + +const device_type NEOGEO_CMC_PREISLE2_CART = &device_creator<neogeo_cmc_preisle2_cart>; + +neogeo_cmc_preisle2_cart::neogeo_cmc_preisle2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_PREISLE2_CART, "NEOGEO CMC preisle2 Cart", tag, owner, clock, "cmc_preisle2_cart", __FILE__) {} + +void neogeo_cmc_preisle2_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, PREISLE2_GFX_KEY); +} + +/************************************************* + BANGBEAD +**************************************************/ + +const device_type NEOGEO_CMC_BANGBEAD_CART = &device_creator<neogeo_cmc_bangbead_cart>; + +neogeo_cmc_bangbead_cart::neogeo_cmc_bangbead_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_BANGBEAD_CART, "NEOGEO CMC bangbead Cart", tag, owner, clock, "cmc_bangbead_cart", __FILE__) {} + +void neogeo_cmc_bangbead_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, BANGBEAD_GFX_KEY); +} + +/************************************************* + NITD +**************************************************/ + +const device_type NEOGEO_CMC_NITD_CART = &device_creator<neogeo_cmc_nitd_cart>; + +neogeo_cmc_nitd_cart::neogeo_cmc_nitd_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_NITD_CART, "NEOGEO CMC nitd Cart", tag, owner, clock, "cmc_nitd_cart", __FILE__) {} + +void neogeo_cmc_nitd_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, NITD_GFX_KEY); +} + + +/************************************************* + SENGOKU3 +**************************************************/ + +const device_type NEOGEO_CMC_SENGOKU3_CART = &device_creator<neogeo_cmc_sengoku3_cart>; + +neogeo_cmc_sengoku3_cart::neogeo_cmc_sengoku3_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_SENGOKU3_CART, "NEOGEO CMC sengoku3 Cart", tag, owner, clock, "cmc_sengoku3_cart", __FILE__) {} + +void neogeo_cmc_sengoku3_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, SENGOKU3_GFX_KEY); +} + +/************************************************* + KOF99K +**************************************************/ + +const device_type NEOGEO_CMC_KOF99K_CART = &device_creator<neogeo_cmc_kof99k_cart>; + +neogeo_cmc_kof99k_cart::neogeo_cmc_kof99k_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_KOF99K_CART, "NEOGEO CMC kof99k Cart", tag, owner, clock, "cmc_kof99k_cart", __FILE__) {} + +void neogeo_cmc_kof99k_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF99_GFX_KEY); +} + + +/************************************************* + KOF2001 +**************************************************/ + +const device_type NEOGEO_CMC_KOF2001_CART = &device_creator<neogeo_cmc_kof2001_cart>; + +neogeo_cmc_kof2001_cart::neogeo_cmc_kof2001_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_KOF2001_CART, "NEOGEO CMC kof2001 Cart", tag, owner, clock, "cmc_kof2001_cart", __FILE__) {} + +void neogeo_cmc_kof2001_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2001_GFX_KEY); +} + +/************************************************* + KOF2000N +**************************************************/ + +const device_type NEOGEO_CMC_KOF2000N_CART = &device_creator<neogeo_cmc_kof2000n_cart>; + +neogeo_cmc_kof2000n_cart::neogeo_cmc_kof2000n_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_cmc_cart(mconfig, NEOGEO_CMC_KOF2000N_CART, "NEOGEO CMC kof2000n Cart", tag, owner, clock, "cmc_kof2000n_cart", __FILE__) {} + +void neogeo_cmc_kof2000n_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2000_GFX_KEY); +} diff --git a/docs/release/src/hbmame/bus/neogeo/cmc_cart.h b/docs/release/src/hbmame/bus/neogeo/cmc_cart.h new file mode 100644 index 00000000000..6dcb544813a --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/cmc_cart.h @@ -0,0 +1,191 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_CMC_CART_H +#define __NEOGEO_CMC_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "sma_prot.h" +#include "cmc_prot.h" + +// ======================> neogeo_cmc_cart + +class neogeo_cmc_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_cmc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_cmc_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override { m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); } + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {} + virtual int get_fixed_bank_type(void) override { return 0; } + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<cmc_prot_device> m_cmc_prot; +}; + + + +// device type definition +extern const device_type NEOGEO_CMC_CART; + + +/************************************************* + ZUPAPA +**************************************************/ + +class neogeo_cmc_zupapa_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_zupapa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_ZUPAPA_CART; + +/************************************************* + MSLUG3H +**************************************************/ + +class neogeo_cmc_mslug3h_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_mslug3h_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_MSLUG3H_CART; + + +/************************************************* + GANRYU +**************************************************/ + +class neogeo_cmc_ganryu_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_ganryu_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_GANRYU_CART; + +/************************************************* + S1945P +**************************************************/ + +class neogeo_cmc_s1945p_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_s1945p_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_S1945P_CART; + + +/************************************************* + PREISLE2 +**************************************************/ + +class neogeo_cmc_preisle2_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_preisle2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_PREISLE2_CART; + +/************************************************* + BANGBEAD +**************************************************/ + +class neogeo_cmc_bangbead_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_bangbead_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_BANGBEAD_CART; + + +/************************************************* + NITD +**************************************************/ + +class neogeo_cmc_nitd_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_nitd_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_NITD_CART; + +/************************************************* + SENGOKU3 +**************************************************/ + +class neogeo_cmc_sengoku3_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_sengoku3_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_SENGOKU3_CART; + +/************************************************* + KOF99K +**************************************************/ + +class neogeo_cmc_kof99k_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_kof99k_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_KOF99K_CART; + +/************************************************* + KOF2001 +**************************************************/ + +class neogeo_cmc_kof2001_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_kof2001_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_CMC_KOF2001_CART; + +/************************************************* + KOF2000N +**************************************************/ + +class neogeo_cmc_kof2000n_cart : public neogeo_cmc_cart +{ +public: + neogeo_cmc_kof2000n_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 2; } +}; +extern const device_type NEOGEO_CMC_KOF2000N_CART; + + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/cmc_prot.cpp b/docs/release/src/hbmame/bus/neogeo/cmc_prot.cpp new file mode 100644 index 00000000000..c4dc573af8a --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/cmc_prot.cpp @@ -0,0 +1,798 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#include "emu.h" +#include "cmc_prot.h" + + + +extern const device_type CMC_PROT = &device_creator<cmc_prot_device>; + + +cmc_prot_device::cmc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, CMC_PROT, "NeoGeo Protection (CMC)", tag, owner, clock, "cmc_prot", __FILE__), + type0_t03(nullptr), + type0_t12(nullptr), + type1_t03(nullptr), + type1_t12(nullptr), + address_8_15_xor1(nullptr), + address_8_15_xor2(nullptr), + address_16_23_xor1(nullptr), + address_16_23_xor2(nullptr), + address_0_7_xor(nullptr) +{ +} + + +void cmc_prot_device::device_start() +{ +} + +void cmc_prot_device::device_reset() +{ +} + + + + + + + +/*************************************************************************** + +NeoGeo 'C' ROM encryption + +Starting with KOF99, all NeoGeo games have encrypted graphics. Additionally +to that, the data for the front text layer, which was previously stored in +a separate ROM, is stored at the end of the tile data. + +The encryption is one of the nastiest implementation of a XOR scheme ever +seen, involving 9 seemingly uncorrelated 256-byte tables. All known games use +the same tables except KOF2000 and MS4 which use a different set. + +The 32 data bits of every longword are decrypted in a single step (one byte at +a time), but the values to use for the xor are determined in a convoluted way. +It's actually so convoluted that it's too difficult to describe - please refer +to the source below. +Suffice to say that bytes are handled in couples (0&3 and 1&2), and the two xor +values are taken from three tables, the indexes inside the tables depending on +bits 0-7 and 8-15 of the address, in one case further xored through the table +used in step 5) below. Additionally, the bytes in a couple can be swapped, +depending either on bit 8 of the address, or on bit 16 xored with the table +used in step 4) below. + +The 24 address bits are encrypted in five steps. Each step xors 8 bits with a +value taken from a different table; the index inside the table depends on 8 +other bits. +0) xor bits 0-7 with a fixed value that changes from game to game +1) xor bits 8-15 depending on bits 16-23 +2) xor bits 8-15 depending on bits 0-7 +3) xor bits 16-23 depending on bits 0-7 +4) xor bits 16-23 depending on bits 8-15 +5) xor bits 0-7 depending on bits 8-15 + +Each step acts on the current value, so e.g. step 4) uses bits 8-15 as modified +by step 2). + +[Note: the table used in step 1) is currently incomplete due to lack of data to +analyze] + + +There are two major weaknesses in this encryption algorithm, that exposed it to +a known plaintext attack. + +The first weakness is that the data xor depends on the address inside the +encrypted ROM instead that on the decrypted address; together with the high +concentration of 0x00 and 0xFF in the decrypted data (more than 60% of the +total), this exposed easily recognizable patterns in the encrypted data, which +could be exploited with some simple statistical checks. The deviousness of the +xor scheme was the major difficulty. + +The second weakness is that the address scrambling works on 32-bit words. Since +there are a large number of 32-bit values that appear only once in the whole +encrypted ROM space, this means that once the xor layer was broken, a large +table of encrypted-decrypted address correspondencies could be built and +analyzed, quickly leading to the algorithm. + +***************************************************************************/ + +static const UINT8 kof99_type0_t03[256] = +{ + 0xfb, 0x86, 0x9d, 0xf1, 0xbf, 0x80, 0xd5, 0x43, 0xab, 0xb3, 0x9f, 0x6a, 0x33, 0xd9, 0xdb, 0xb6, + 0x66, 0x08, 0x69, 0x88, 0xcc, 0xb7, 0xde, 0x49, 0x97, 0x64, 0x1f, 0xa6, 0xc0, 0x2f, 0x52, 0x42, + 0x44, 0x5a, 0xf2, 0x28, 0x98, 0x87, 0x96, 0x8a, 0x83, 0x0b, 0x03, 0x61, 0x71, 0x99, 0x6b, 0xb5, + 0x1a, 0x8e, 0xfe, 0x04, 0xe1, 0xf7, 0x7d, 0xdd, 0xed, 0xca, 0x37, 0xfc, 0xef, 0x39, 0x72, 0xda, + 0xb8, 0xbe, 0xee, 0x7f, 0xe5, 0x31, 0x78, 0xf3, 0x91, 0x9a, 0xd2, 0x11, 0x19, 0xb9, 0x09, 0x4c, + 0xfd, 0x6d, 0x2a, 0x4d, 0x65, 0xa1, 0x89, 0xc7, 0x75, 0x50, 0x21, 0xfa, 0x16, 0x00, 0xe9, 0x12, + 0x74, 0x2b, 0x1e, 0x4f, 0x14, 0x01, 0x70, 0x3a, 0x4e, 0x3f, 0xf5, 0xf4, 0x1d, 0x3d, 0x15, 0x27, + 0xa7, 0xff, 0x45, 0xe0, 0x6e, 0xf9, 0x54, 0xc8, 0x48, 0xad, 0xa5, 0x0a, 0xf6, 0x2d, 0x2c, 0xe2, + 0x68, 0x67, 0xd6, 0x85, 0xb4, 0xc3, 0x34, 0xbc, 0x62, 0xd3, 0x5f, 0x84, 0x06, 0x5b, 0x0d, 0x95, + 0xea, 0x5e, 0x9e, 0xd4, 0xeb, 0x90, 0x7a, 0x05, 0x81, 0x57, 0xe8, 0x60, 0x2e, 0x20, 0x25, 0x7c, + 0x46, 0x0c, 0x93, 0xcb, 0xbd, 0x17, 0x7e, 0xec, 0x79, 0xb2, 0xc2, 0x22, 0x41, 0xb1, 0x10, 0xac, + 0xa8, 0xbb, 0x9b, 0x82, 0x4b, 0x9c, 0x8b, 0x07, 0x47, 0x35, 0x24, 0x56, 0x8d, 0xaf, 0xe6, 0x26, + 0x40, 0x38, 0xc4, 0x5d, 0x1b, 0xc5, 0xd1, 0x0f, 0x6c, 0x7b, 0xb0, 0xe3, 0xa3, 0x23, 0x6f, 0x58, + 0xc1, 0xba, 0xcf, 0xd7, 0xa2, 0xe7, 0xd0, 0x63, 0x5c, 0xf8, 0x73, 0xa0, 0x13, 0xdc, 0x29, 0xcd, + 0xc9, 0x76, 0xae, 0x8f, 0xe4, 0x59, 0x30, 0xaa, 0x94, 0x1c, 0x3c, 0x0e, 0x55, 0x92, 0x77, 0x32, + 0xc6, 0xce, 0x18, 0x36, 0xdf, 0xa9, 0x8c, 0xd8, 0xa4, 0xf0, 0x3b, 0x51, 0x4a, 0x02, 0x3e, 0x53, +}; + + +static const UINT8 kof99_type0_t12[256] = +{ + 0x1f, 0xac, 0x4d, 0xcd, 0xca, 0x70, 0x02, 0x6b, 0x18, 0x40, 0x62, 0xb2, 0x3f, 0x9b, 0x5b, 0xef, + 0x69, 0x68, 0x71, 0x3b, 0xcb, 0xd4, 0x30, 0xbc, 0x47, 0x72, 0x74, 0x5e, 0x84, 0x4c, 0x1b, 0xdb, + 0x6a, 0x35, 0x1d, 0xf5, 0xa1, 0xb3, 0x87, 0x5d, 0x57, 0x28, 0x2f, 0xc4, 0xfd, 0x24, 0x26, 0x36, + 0xad, 0xbe, 0x61, 0x63, 0x73, 0xaa, 0x82, 0xee, 0x29, 0xd0, 0xdf, 0x8c, 0x15, 0xb5, 0x96, 0xf3, + 0xdd, 0x7e, 0x3a, 0x37, 0x58, 0x7f, 0x0c, 0xfc, 0x0b, 0x07, 0xe8, 0xf7, 0xf4, 0x14, 0xb8, 0x81, + 0xb6, 0xd7, 0x1e, 0xc8, 0x85, 0xe6, 0x9d, 0x33, 0x60, 0xc5, 0x95, 0xd5, 0x55, 0x00, 0xa3, 0xb7, + 0x7d, 0x50, 0x0d, 0xd2, 0xc1, 0x12, 0xe5, 0xed, 0xd8, 0xa4, 0x9c, 0x8f, 0x2a, 0x4f, 0xa8, 0x01, + 0x52, 0x83, 0x65, 0xea, 0x9a, 0x6c, 0x44, 0x4a, 0xe2, 0xa5, 0x2b, 0x46, 0xe1, 0x34, 0x25, 0xf8, + 0xc3, 0xda, 0xc7, 0x6e, 0x48, 0x38, 0x7c, 0x78, 0x06, 0x53, 0x64, 0x16, 0x98, 0x3c, 0x91, 0x42, + 0x39, 0xcc, 0xb0, 0xf1, 0xeb, 0x13, 0xbb, 0x05, 0x32, 0x86, 0x0e, 0xa2, 0x0a, 0x9e, 0xfa, 0x66, + 0x54, 0x8e, 0xd3, 0xe7, 0x19, 0x20, 0x77, 0xec, 0xff, 0xbd, 0x6d, 0x43, 0x23, 0x03, 0xab, 0x75, + 0x3d, 0xcf, 0xd1, 0xde, 0x92, 0x31, 0xa7, 0x45, 0x4b, 0xc2, 0x97, 0xf9, 0x7a, 0x88, 0xd9, 0x1c, + 0xe9, 0xe4, 0x10, 0xc9, 0x22, 0x2d, 0x90, 0x76, 0x17, 0x79, 0x04, 0x51, 0x1a, 0x5a, 0x5f, 0x2c, + 0x21, 0x6f, 0x3e, 0xe0, 0xf0, 0xbf, 0xd6, 0x94, 0x0f, 0x80, 0x11, 0xa0, 0x5c, 0xa9, 0x49, 0x2e, + 0xce, 0xaf, 0xa6, 0x9f, 0x7b, 0x99, 0xb9, 0xb4, 0xe3, 0xfb, 0xf6, 0x27, 0xf2, 0x93, 0xfe, 0x08, + 0x67, 0xae, 0x09, 0x89, 0xdc, 0x4e, 0xc6, 0xc0, 0x8a, 0xb1, 0x59, 0x8b, 0x41, 0x56, 0x8d, 0xba, +}; + + +static const UINT8 kof99_type1_t03[256] = +{ + 0xa9, 0x17, 0xaf, 0x0d, 0x34, 0x6e, 0x53, 0xb6, 0x7f, 0x58, 0xe9, 0x14, 0x5f, 0x55, 0xdb, 0xd4, + 0x42, 0x80, 0x99, 0x59, 0xa8, 0x3a, 0x57, 0x5d, 0xd5, 0x6f, 0x4c, 0x68, 0x35, 0x46, 0xa6, 0xe7, + 0x7b, 0x71, 0xe0, 0x93, 0xa2, 0x1f, 0x64, 0x21, 0xe3, 0xb1, 0x98, 0x26, 0xab, 0xad, 0xee, 0xe5, + 0xbb, 0xd9, 0x1e, 0x2e, 0x95, 0x36, 0xef, 0x23, 0x79, 0x45, 0x04, 0xed, 0x13, 0x1d, 0xf4, 0x85, + 0x96, 0xec, 0xc2, 0x32, 0xaa, 0x7c, 0x15, 0xd8, 0xda, 0x92, 0x90, 0x9d, 0xb7, 0x56, 0x6a, 0x66, + 0x41, 0xfc, 0x00, 0xf6, 0x50, 0x24, 0xcf, 0xfb, 0x11, 0xfe, 0x82, 0x48, 0x9b, 0x27, 0x1b, 0x67, + 0x4e, 0x84, 0x69, 0x97, 0x6d, 0x8c, 0xd2, 0xba, 0x74, 0xf9, 0x8f, 0xa5, 0x54, 0x5c, 0xcd, 0x73, + 0x07, 0xd1, 0x01, 0x09, 0xf1, 0x19, 0x3b, 0x5e, 0x87, 0x30, 0x76, 0xcc, 0xc0, 0x5a, 0xa7, 0x49, + 0x22, 0xfa, 0x16, 0x02, 0xdf, 0xa4, 0xff, 0xb3, 0x75, 0x33, 0xbd, 0x88, 0x2f, 0xcb, 0x2a, 0x44, + 0xb8, 0xbf, 0x1c, 0x0f, 0x81, 0x10, 0x43, 0xb4, 0xc8, 0x7e, 0x9a, 0x25, 0xea, 0x83, 0x4b, 0x38, + 0x7a, 0xd7, 0x3d, 0x1a, 0x4f, 0x62, 0x51, 0xc9, 0x47, 0x0e, 0xce, 0x3f, 0xc7, 0x4d, 0x2c, 0xa1, + 0x86, 0xb9, 0xc5, 0xca, 0xdd, 0x6b, 0x70, 0x6c, 0x91, 0x9c, 0xbe, 0x0a, 0x9f, 0xf5, 0x94, 0xbc, + 0x18, 0x2b, 0x60, 0x20, 0x29, 0xf7, 0xf2, 0x28, 0xc4, 0xa0, 0x0b, 0x65, 0xde, 0x8d, 0x78, 0x12, + 0x3e, 0xd0, 0x77, 0x08, 0x8b, 0xae, 0x05, 0x31, 0x3c, 0xd6, 0xa3, 0x89, 0x06, 0xdc, 0x52, 0x72, + 0xb0, 0xb5, 0x37, 0xd3, 0xc3, 0x8a, 0xc6, 0xf0, 0xc1, 0x61, 0xfd, 0x4a, 0x5b, 0x7d, 0x9e, 0xf3, + 0x63, 0x40, 0x2d, 0xe8, 0xb2, 0xe6, 0x39, 0x03, 0xeb, 0x8e, 0xe1, 0x0c, 0xe4, 0xe2, 0xf8, 0xac, +}; + + +static const UINT8 kof99_type1_t12[256] = +{ + 0xea, 0xe6, 0x5e, 0xa7, 0x8e, 0xac, 0x34, 0x03, 0x30, 0x97, 0x52, 0x53, 0x76, 0xf2, 0x62, 0x0b, + 0x0a, 0xfc, 0x94, 0xb8, 0x67, 0x36, 0x11, 0xbc, 0xae, 0xca, 0xfa, 0x15, 0x04, 0x2b, 0x17, 0xc4, + 0x3e, 0x5b, 0x59, 0x01, 0x57, 0xe2, 0xba, 0xb7, 0xd1, 0x3f, 0xf0, 0x6a, 0x9c, 0x2a, 0xcb, 0xa9, + 0xe3, 0x2c, 0xc0, 0x0f, 0x46, 0x91, 0x8a, 0xd0, 0x98, 0xc5, 0xa6, 0x1b, 0x96, 0x29, 0x12, 0x09, + 0x63, 0xed, 0xe0, 0xa2, 0x86, 0x77, 0xbe, 0xe5, 0x65, 0xdb, 0xbd, 0x50, 0xb3, 0x9d, 0x1a, 0x4e, + 0x79, 0x0c, 0x00, 0x43, 0xdf, 0x3d, 0x54, 0x33, 0x8f, 0x89, 0xa8, 0x7b, 0xf9, 0xd5, 0x27, 0x82, + 0xbb, 0xc2, 0x8c, 0x47, 0x88, 0x6b, 0xb4, 0xc3, 0xf8, 0xaa, 0x06, 0x1e, 0x83, 0x7d, 0x05, 0x78, + 0x85, 0xf6, 0x6e, 0x2e, 0xec, 0x5a, 0x31, 0x45, 0x38, 0x14, 0x16, 0x8b, 0x02, 0xe4, 0x4f, 0xb0, + 0xbf, 0xab, 0xa4, 0x9e, 0x48, 0x60, 0x19, 0x35, 0x08, 0xde, 0xdd, 0x66, 0x90, 0x51, 0xcc, 0xa3, + 0xaf, 0x70, 0x9b, 0x75, 0x95, 0x49, 0x6c, 0x64, 0x72, 0x7e, 0x44, 0xa0, 0x73, 0x25, 0x68, 0x55, + 0x1f, 0x40, 0x7a, 0x74, 0x0e, 0x8d, 0xdc, 0x1c, 0x71, 0xc8, 0xcf, 0xd7, 0xe8, 0xce, 0xeb, 0x32, + 0x3a, 0xee, 0x07, 0x61, 0x4d, 0xfe, 0x5c, 0x7c, 0x56, 0x2f, 0x2d, 0x5f, 0x6f, 0x9f, 0x81, 0x22, + 0x58, 0x4b, 0xad, 0xda, 0xb9, 0x10, 0x18, 0x23, 0xe1, 0xf3, 0x6d, 0xe7, 0xe9, 0x28, 0xd6, 0xd8, + 0xf4, 0x4c, 0x39, 0x21, 0xb2, 0x84, 0xc1, 0x24, 0x26, 0xf1, 0x93, 0x37, 0xc6, 0x4a, 0xcd, 0x20, + 0xc9, 0xd9, 0xc7, 0xb1, 0xff, 0x99, 0xd4, 0x5d, 0xb5, 0xa1, 0x87, 0x0d, 0x69, 0x92, 0x13, 0x80, + 0xd2, 0xd3, 0xfd, 0x1d, 0xf5, 0x3b, 0xa5, 0x7f, 0xef, 0x9a, 0xb6, 0x42, 0xfb, 0x3c, 0xf7, 0x41, +}; + + +/* underlined values are wrong (not enough evidence, FF fill in kof99 and garou) */ +/* they correspond to tiles 7d000-7efff */ +static const UINT8 kof99_address_8_15_xor1[256] = +{ + 0x00, 0xb1, 0x1e, 0xc5, 0x3d, 0x40, 0x45, 0x5e, 0xf2, 0xf8, 0x04, 0x63, 0x36, 0x87, 0x88, 0xbf, + 0xab, 0xcc, 0x78, 0x08, 0xdd, 0x20, 0xd4, 0x35, 0x09, 0x8e, 0x44, 0xae, 0x33, 0xa9, 0x9e, 0xcd, + 0xb3, 0xe5, 0xad, 0x41, 0xda, 0xbe, 0xf4, 0x16, 0x57, 0x2e, 0x53, 0x67, 0xaf, 0xdb, 0x8a, 0xd8, + 0x34, 0x17, 0x3c, 0x01, 0x55, 0x73, 0xcf, 0xe3, 0xe8, 0xc7, 0x0d, 0xe9, 0xa3, 0x13, 0x0c, 0xf6, + 0x90, 0x4e, 0xfb, 0x97, 0x6d, 0x5f, 0xa8, 0x71, 0x11, 0xfc, 0xd1, 0x95, 0x81, 0xba, 0x8c, 0x1b, + 0x39, 0xfe, 0xa2, 0x15, 0xa6, 0x52, 0x4d, 0x5b, 0x59, 0xa5, 0xe0, 0x96, 0xd9, 0x8f, 0x7b, 0xed, + 0x29, 0xd3, 0x1f, 0x0e, 0xec, 0x23, 0x0f, 0xb8, 0x6c, 0x6f, 0x7d, 0x18, 0x46, 0xd6, 0xe4, 0xb5, + 0x9a, 0x79, 0x02, 0xf5, 0x03, 0xc0, 0x60, 0x66, 0x5c, 0x2f, 0x76, 0x85, 0x9d, 0x54, 0x1a, 0x6a, + 0x28, 0xce, 0x7f, 0x7c, 0x91, 0x99, 0x4c, 0x83, 0x3e, 0xb4, 0x1d, 0x05, 0xc1, 0xc3, 0xd7, 0x47, + 0xde, 0xbc, 0x62, 0x6e, 0x86, 0x14, 0x80, 0x77, 0xeb, 0xf3, 0x07, 0x31, 0x56, 0xd2, 0xc2, 0xc6, + 0x6b, 0xdc, 0xfd, 0x22, 0x92, 0xf0, 0x06, 0x51, 0x2d, 0x38, 0xe6, 0xa0, 0x25, 0xdf, 0xd5, 0x2c, + 0x1c, 0x94, 0x12, 0x9c, 0xb0, 0x9b, 0xc4, 0x0b, 0xc8, 0xd0, 0xf7, 0x30, 0xcb, 0x27, 0xfa, 0x7a, + 0x10, 0x61, 0xaa, 0xa4, 0x70, 0xb7, 0x2a, 0x5a, 0xc9, 0xf1, 0x0a, 0x49, 0x65, 0xee, 0x69, 0x4b, + 0x3a, 0x8d, 0x32, 0x5d, 0x68, 0xb9, 0x9f, 0x75, 0x19, 0x3f, 0xac, 0x37, 0x4f, 0xe7, 0x93, 0x89, + 0x7e, 0x4a, 0x3b, 0xea, 0x74, 0x72, 0x43, 0xbd, 0x24, 0xef, 0xb6, 0xff, 0x64, 0x58, 0x84, 0x8b, + 0xa7, 0xbb, 0xb2, 0xe1, 0x26, 0x2b, 0x50, 0xca, 0x21, 0xf9, 0x98, 0xa1, 0xe2, 0x42, 0x82, 0x48, +// ^^^^ ^^^^ ^^^^ ^^^^ +}; + + +static const UINT8 kof99_address_8_15_xor2[256] = +{ + 0x9b, 0x9d, 0xc1, 0x3d, 0xa9, 0xb8, 0xf4, 0x6f, 0xf6, 0x25, 0xc7, 0x47, 0xd5, 0x97, 0xdf, 0x6b, + 0xeb, 0x90, 0xa4, 0xb2, 0x5d, 0xf5, 0x66, 0xb0, 0xb9, 0x8b, 0x93, 0x64, 0xec, 0x7b, 0x65, 0x8c, + 0xf1, 0x43, 0x42, 0x6e, 0x45, 0x9f, 0xb3, 0x35, 0x06, 0x71, 0x96, 0xdb, 0xa0, 0xfb, 0x0b, 0x3a, + 0x1f, 0xf8, 0x8e, 0x69, 0xcd, 0x26, 0xab, 0x86, 0xa2, 0x0c, 0xbd, 0x63, 0xa5, 0x7a, 0xe7, 0x6a, + 0x5f, 0x18, 0x9e, 0xbf, 0xad, 0x55, 0xb1, 0x1c, 0x5c, 0x03, 0x30, 0xc6, 0x37, 0x20, 0xe3, 0xc9, + 0x52, 0xe8, 0xee, 0x4f, 0x01, 0x70, 0xc4, 0x77, 0x29, 0x2a, 0xba, 0x53, 0x12, 0x04, 0x7d, 0xaf, + 0x33, 0x8f, 0xa8, 0x4d, 0xaa, 0x5b, 0xb4, 0x0f, 0x92, 0xbb, 0xed, 0xe1, 0x2f, 0x50, 0x6c, 0xd2, + 0x2c, 0x95, 0xd9, 0xf9, 0x98, 0xc3, 0x76, 0x4c, 0xf2, 0xe4, 0xe5, 0x2b, 0xef, 0x9c, 0x49, 0xb6, + 0x31, 0x3b, 0xbc, 0xa1, 0xca, 0xde, 0x62, 0x74, 0xea, 0x81, 0x00, 0xdd, 0xa6, 0x46, 0x88, 0x3f, + 0x39, 0xd6, 0x23, 0x54, 0x24, 0x4a, 0xd8, 0xdc, 0xd7, 0xd1, 0xcc, 0xbe, 0x57, 0x7c, 0xda, 0x44, + 0x61, 0xce, 0xd3, 0xd4, 0xe9, 0x28, 0x80, 0xe0, 0x56, 0x8a, 0x09, 0x05, 0x9a, 0x89, 0x1b, 0xf7, + 0xf3, 0x99, 0x6d, 0x5e, 0x48, 0x91, 0xc0, 0xd0, 0xc5, 0x79, 0x78, 0x41, 0x59, 0x21, 0x2e, 0xff, + 0xc2, 0x4b, 0x38, 0x83, 0x32, 0xe6, 0xe2, 0x7f, 0x1e, 0x17, 0x58, 0x1d, 0x1a, 0xfa, 0x85, 0x82, + 0x94, 0xc8, 0x72, 0x7e, 0xb7, 0xac, 0x0e, 0xfc, 0xfd, 0x16, 0x27, 0x75, 0x8d, 0xcb, 0x08, 0xfe, + 0x0a, 0x02, 0x0d, 0x36, 0x11, 0x22, 0x84, 0x40, 0x34, 0x3e, 0x2d, 0x68, 0x5a, 0xa7, 0x67, 0xae, + 0x87, 0x07, 0x10, 0x60, 0x14, 0x73, 0x3c, 0x51, 0x19, 0xa3, 0xb5, 0xcf, 0x13, 0xf0, 0x15, 0x4e, +}; + + +static const UINT8 kof99_address_16_23_xor1[256] = +{ + 0x00, 0x5f, 0x03, 0x52, 0xce, 0xe3, 0x7d, 0x8f, 0x6b, 0xf8, 0x20, 0xde, 0x7b, 0x7e, 0x39, 0xbe, + 0xf5, 0x94, 0x18, 0x78, 0x80, 0xc9, 0x7f, 0x7a, 0x3e, 0x63, 0xf2, 0xe0, 0x4e, 0xf7, 0x87, 0x27, + 0x69, 0x6c, 0xa4, 0x1d, 0x85, 0x5b, 0xe6, 0x44, 0x25, 0x0c, 0x98, 0xc7, 0x01, 0x02, 0xa3, 0x26, + 0x09, 0x38, 0xdb, 0xc3, 0x1e, 0xcf, 0x23, 0x45, 0x68, 0x76, 0xd6, 0x22, 0x5d, 0x5a, 0xae, 0x16, + 0x9f, 0xa2, 0xb5, 0xcd, 0x81, 0xea, 0x5e, 0xb8, 0xb9, 0x9d, 0x9c, 0x1a, 0x0f, 0xff, 0xe1, 0xe7, + 0x74, 0xaa, 0xd4, 0xaf, 0xfc, 0xc6, 0x33, 0x29, 0x5c, 0xab, 0x95, 0xf0, 0x19, 0x47, 0x59, 0x67, + 0xf3, 0x96, 0x60, 0x1f, 0x62, 0x92, 0xbd, 0x89, 0xee, 0x28, 0x13, 0x06, 0xfe, 0xfa, 0x32, 0x6d, + 0x57, 0x3c, 0x54, 0x50, 0x2c, 0x58, 0x49, 0xfb, 0x17, 0xcc, 0xef, 0xb2, 0xb4, 0xf9, 0x07, 0x70, + 0xc5, 0xa9, 0xdf, 0xd5, 0x3b, 0x86, 0x2b, 0x0d, 0x6e, 0x4d, 0x0a, 0x90, 0x43, 0x31, 0xc1, 0xf6, + 0x88, 0x0b, 0xda, 0x53, 0x14, 0xdc, 0x75, 0x8e, 0xb0, 0xeb, 0x99, 0x46, 0xa1, 0x15, 0x71, 0xc8, + 0xe9, 0x3f, 0x4a, 0xd9, 0x73, 0xe5, 0x7c, 0x30, 0x77, 0xd3, 0xb3, 0x4b, 0x37, 0x72, 0xc2, 0x04, + 0x97, 0x08, 0x36, 0xb1, 0x3a, 0x61, 0xec, 0xe2, 0x1c, 0x9a, 0x8b, 0xd1, 0x1b, 0x2e, 0x9e, 0x8a, + 0xd8, 0x41, 0xe4, 0xc4, 0x40, 0x2f, 0xad, 0xc0, 0xb6, 0x84, 0x51, 0x66, 0xbb, 0x12, 0xe8, 0xdd, + 0xcb, 0xbc, 0x6f, 0xd0, 0x11, 0x83, 0x56, 0x4c, 0xca, 0xbf, 0x05, 0x10, 0xd7, 0xba, 0xfd, 0xed, + 0x8c, 0x0e, 0x4f, 0x3d, 0x35, 0x91, 0xb7, 0xac, 0x34, 0x64, 0x2a, 0xf1, 0x79, 0x6a, 0x9b, 0x2d, + 0x65, 0xf4, 0x42, 0xa0, 0x8d, 0xa7, 0x48, 0x55, 0x21, 0x93, 0x24, 0xd2, 0xa6, 0xa5, 0xa8, 0x82, +}; + + +static const UINT8 kof99_address_16_23_xor2[256] = +{ + 0x29, 0x97, 0x1a, 0x2c, 0x0b, 0x94, 0x3e, 0x75, 0x01, 0x0d, 0x1b, 0xe1, 0x4d, 0x38, 0x39, 0x8f, + 0xe7, 0xd0, 0x60, 0x90, 0xb2, 0x0f, 0xbb, 0x70, 0x1f, 0xe6, 0x5b, 0x87, 0xb4, 0x43, 0xfd, 0xf5, + 0xf6, 0xf9, 0xad, 0xc0, 0x98, 0x17, 0x9f, 0x91, 0x15, 0x51, 0x55, 0x64, 0x6c, 0x18, 0x61, 0x0e, + 0xd9, 0x93, 0xab, 0xd6, 0x24, 0x2f, 0x6a, 0x3a, 0x22, 0xb1, 0x4f, 0xaa, 0x23, 0x48, 0xed, 0xb9, + 0x88, 0x8b, 0xa3, 0x6b, 0x26, 0x4c, 0xe8, 0x2d, 0x1c, 0x99, 0xbd, 0x5c, 0x58, 0x08, 0x50, 0xf2, + 0x2a, 0x62, 0xc1, 0x72, 0x66, 0x04, 0x10, 0x37, 0x6e, 0xfc, 0x44, 0xa9, 0xdf, 0xd4, 0x20, 0xdd, + 0xee, 0x41, 0xdb, 0x73, 0xde, 0x54, 0xec, 0xc9, 0xf3, 0x4b, 0x2e, 0xae, 0x5a, 0x4a, 0x5e, 0x47, + 0x07, 0x2b, 0x76, 0xa4, 0xe3, 0x28, 0xfe, 0xb0, 0xf0, 0x02, 0x06, 0xd1, 0xaf, 0x42, 0xc2, 0xa5, + 0xe0, 0x67, 0xbf, 0x16, 0x8e, 0x35, 0xce, 0x8a, 0xe5, 0x3d, 0x7b, 0x96, 0xd7, 0x79, 0x52, 0x1e, + 0xa1, 0xfb, 0x9b, 0xbe, 0x21, 0x9c, 0xe9, 0x56, 0x14, 0x7f, 0xa0, 0xe4, 0xc3, 0xc4, 0x46, 0xea, + 0xf7, 0xd2, 0x1d, 0x31, 0x0a, 0x5f, 0xeb, 0xa2, 0x68, 0x8d, 0xb5, 0xc5, 0x74, 0x0c, 0xdc, 0x82, + 0x80, 0x09, 0x19, 0x95, 0x71, 0x9a, 0x11, 0x57, 0x77, 0x4e, 0xc6, 0xff, 0x12, 0x03, 0xa7, 0xc7, + 0xf4, 0xc8, 0xb6, 0x7a, 0x59, 0x36, 0x3c, 0x53, 0xe2, 0x69, 0x8c, 0x25, 0x05, 0x45, 0x63, 0xf8, + 0x34, 0x89, 0x33, 0x3f, 0x85, 0x27, 0xbc, 0x65, 0xfa, 0xa8, 0x6d, 0x84, 0x5d, 0xba, 0x40, 0x32, + 0x30, 0xef, 0x83, 0x13, 0xa6, 0x78, 0xcc, 0x81, 0x9e, 0xda, 0xca, 0xd3, 0x7e, 0x9d, 0x6f, 0xcd, + 0xb7, 0xb3, 0xd8, 0xcf, 0x3b, 0x00, 0x92, 0xb8, 0x86, 0xac, 0x49, 0x7c, 0xf1, 0xd5, 0xcb, 0x7d, +}; + + +static const UINT8 kof99_address_0_7_xor[256] = +{ + 0x74, 0xad, 0x5d, 0x1d, 0x9e, 0xc3, 0xfa, 0x4e, 0xf7, 0xdb, 0xca, 0xa2, 0x64, 0x36, 0x56, 0x0c, + 0x4f, 0xcf, 0x43, 0x66, 0x1e, 0x91, 0xe3, 0xa5, 0x58, 0xc2, 0xc1, 0xd4, 0xb9, 0xdd, 0x76, 0x16, + 0xce, 0x61, 0x75, 0x01, 0x2b, 0x22, 0x38, 0x55, 0x50, 0xef, 0x6c, 0x99, 0x05, 0xe9, 0xe8, 0xe0, + 0x2d, 0xa4, 0x4b, 0x4a, 0x42, 0xae, 0xba, 0x8c, 0x6f, 0x93, 0x14, 0xbd, 0x71, 0x21, 0xb0, 0x02, + 0x15, 0xc4, 0xe6, 0x60, 0xd7, 0x44, 0xfd, 0x85, 0x7e, 0x78, 0x8f, 0x00, 0x81, 0xf1, 0xa7, 0x3b, + 0xa0, 0x10, 0xf4, 0x9f, 0x39, 0x88, 0x35, 0x62, 0xcb, 0x19, 0x31, 0x11, 0x51, 0xfb, 0x2a, 0x20, + 0x45, 0xd3, 0x7d, 0x92, 0x1b, 0xf2, 0x09, 0x0d, 0x97, 0xa9, 0xb5, 0x3c, 0xee, 0x5c, 0xaf, 0x7b, + 0xd2, 0x3a, 0x49, 0x8e, 0xb6, 0xcd, 0xd9, 0xde, 0x8a, 0x29, 0x6e, 0xd8, 0x0b, 0xe1, 0x69, 0x87, + 0x1a, 0x96, 0x18, 0xcc, 0xdf, 0xe7, 0xc5, 0xc7, 0xf8, 0x52, 0xc9, 0xf0, 0xb7, 0xe5, 0x33, 0xda, + 0x67, 0x9d, 0xa3, 0x03, 0x0e, 0x72, 0x26, 0x79, 0xe2, 0xb8, 0xfc, 0xaa, 0xfe, 0xb4, 0x86, 0xc8, + 0xd1, 0xbc, 0x12, 0x08, 0x77, 0xeb, 0x40, 0x8d, 0x04, 0x25, 0x4d, 0x5a, 0x6a, 0x7a, 0x2e, 0x41, + 0x65, 0x1c, 0x13, 0x94, 0xb2, 0x63, 0x28, 0x59, 0x5e, 0x9a, 0x30, 0x07, 0xc6, 0xbf, 0x17, 0xf5, + 0x0f, 0x89, 0xf3, 0x1f, 0xea, 0x6d, 0xb3, 0xc0, 0x70, 0x47, 0xf9, 0x53, 0xf6, 0xd6, 0x54, 0xed, + 0x6b, 0x4c, 0xe4, 0x8b, 0x83, 0x24, 0x90, 0xb1, 0x7c, 0xbb, 0x73, 0xab, 0xd5, 0x2f, 0x5f, 0xec, + 0x9c, 0x2c, 0xa8, 0x34, 0x46, 0x37, 0x27, 0xa1, 0x0a, 0x06, 0x80, 0x68, 0x82, 0x32, 0x84, 0xff, + 0x48, 0xac, 0x7f, 0x3f, 0x95, 0xdc, 0x98, 0x9b, 0xbe, 0x23, 0x57, 0x3e, 0x5b, 0xd0, 0x3d, 0xa6, +}; + + +static const UINT8 kof2000_type0_t03[256] = +{ + 0x10, 0x61, 0xf1, 0x78, 0x85, 0x52, 0x68, 0xe3, 0x12, 0x0d, 0xfa, 0xf0, 0xc9, 0x36, 0x5e, 0x3d, + 0xf9, 0xa6, 0x01, 0x2e, 0xc7, 0x84, 0xea, 0x2b, 0x6d, 0x14, 0x38, 0x4f, 0x55, 0x1c, 0x9d, 0xa7, + 0x7a, 0xc6, 0xf8, 0x9a, 0xe6, 0x42, 0xb5, 0xed, 0x7d, 0x3a, 0xb1, 0x05, 0x43, 0x4a, 0x22, 0xfd, + 0xac, 0xa4, 0x31, 0xc3, 0x32, 0x76, 0x95, 0x9e, 0x7e, 0x88, 0x8e, 0xa2, 0x97, 0x18, 0xbe, 0x2a, + 0xf5, 0xd6, 0xca, 0xcc, 0x72, 0x3b, 0x87, 0x6c, 0xde, 0x75, 0xd7, 0x21, 0xcb, 0x0b, 0xdd, 0xe7, + 0xe1, 0x65, 0xaa, 0xb9, 0x44, 0xfb, 0x66, 0x15, 0x1a, 0x3c, 0x98, 0xcf, 0x8a, 0xdf, 0x37, 0xa5, + 0x2f, 0x67, 0xd2, 0x83, 0xb6, 0x6b, 0xfc, 0xe0, 0xb4, 0x7c, 0x08, 0xdc, 0x93, 0x30, 0xab, 0xe4, + 0x19, 0xc2, 0x8b, 0xeb, 0xa0, 0x0a, 0xc8, 0x03, 0xc0, 0x4b, 0x64, 0x71, 0x86, 0x9c, 0x9b, 0x16, + 0x79, 0xff, 0x70, 0x09, 0x8c, 0xd0, 0xf6, 0x53, 0x07, 0x73, 0xd4, 0x89, 0xb3, 0x00, 0xe9, 0xfe, + 0xec, 0x8f, 0xbc, 0xb2, 0x1e, 0x5d, 0x11, 0x35, 0xa9, 0x06, 0x59, 0x9f, 0xc1, 0xd3, 0x7b, 0xf2, + 0xc5, 0x77, 0x4e, 0x39, 0x20, 0xd5, 0x6a, 0x82, 0xda, 0x45, 0xf3, 0x33, 0x81, 0x23, 0xba, 0xe2, + 0x1d, 0x5f, 0x5c, 0x51, 0x49, 0xae, 0x8d, 0xc4, 0xa8, 0xf7, 0x1f, 0x0f, 0x34, 0x28, 0xa1, 0xd9, + 0x27, 0xd8, 0x4c, 0x2c, 0xbf, 0x91, 0x3e, 0x69, 0x57, 0x41, 0x25, 0x0c, 0x5a, 0x90, 0x92, 0xb0, + 0x63, 0x6f, 0x40, 0xaf, 0x74, 0xb8, 0x2d, 0x80, 0xbb, 0x46, 0x94, 0xe5, 0x29, 0xee, 0xb7, 0x1b, + 0x96, 0xad, 0x13, 0x0e, 0x58, 0x99, 0x60, 0x4d, 0x17, 0x26, 0xce, 0xe8, 0xdb, 0xef, 0x24, 0xa3, + 0x6e, 0x7f, 0x54, 0x3f, 0x02, 0xd1, 0x5b, 0x50, 0x56, 0x48, 0xf4, 0xbd, 0x62, 0x47, 0x04, 0xcd, +}; + + +static const UINT8 kof2000_type0_t12[256] = +{ + 0xf4, 0x28, 0xb4, 0x8f, 0xfa, 0xeb, 0x8e, 0x54, 0x2b, 0x49, 0xd1, 0x76, 0x71, 0x47, 0x8b, 0x57, + 0x92, 0x85, 0x7c, 0xb8, 0x5c, 0x22, 0xf9, 0x26, 0xbc, 0x5b, 0x6d, 0x67, 0xae, 0x5f, 0x6f, 0xf5, + 0x9f, 0x48, 0x66, 0x40, 0x0d, 0x11, 0x4e, 0xb2, 0x6b, 0x35, 0x15, 0x0f, 0x18, 0x25, 0x1d, 0xba, + 0xd3, 0x69, 0x79, 0xec, 0xa8, 0x8c, 0xc9, 0x7f, 0x4b, 0xdb, 0x51, 0xaf, 0xca, 0xe2, 0xb3, 0x81, + 0x12, 0x5e, 0x7e, 0x38, 0xc8, 0x95, 0x01, 0xff, 0xfd, 0xfb, 0xf2, 0x74, 0x62, 0x14, 0xa5, 0x98, + 0xa6, 0xda, 0x80, 0x53, 0xe8, 0x56, 0xac, 0x1b, 0x52, 0xd0, 0xf1, 0x45, 0x42, 0xb6, 0x1a, 0x4a, + 0x3a, 0x99, 0xfc, 0xd2, 0x9c, 0xcf, 0x31, 0x2d, 0xdd, 0x86, 0x2f, 0x29, 0xe1, 0x03, 0x19, 0xa2, + 0x41, 0x33, 0x83, 0x90, 0xc1, 0xbf, 0x0b, 0x08, 0x3d, 0xd8, 0x8d, 0x6c, 0x39, 0xa0, 0xe3, 0x55, + 0x02, 0x50, 0x46, 0xe6, 0xc3, 0x82, 0x36, 0x13, 0x75, 0xab, 0x27, 0xd7, 0x1f, 0x0a, 0xd4, 0x89, + 0x59, 0x4f, 0xc0, 0x5d, 0xc6, 0xf7, 0x88, 0xbd, 0x3c, 0x00, 0xef, 0xcd, 0x05, 0x1c, 0xaa, 0x9b, + 0xed, 0x7a, 0x61, 0x17, 0x93, 0xfe, 0x23, 0xb9, 0xf3, 0x68, 0x78, 0xf6, 0x5a, 0x7b, 0xe0, 0xe4, + 0xa3, 0xee, 0x16, 0x72, 0xc7, 0x3b, 0x8a, 0x37, 0x2a, 0x70, 0xa9, 0x2c, 0x21, 0xf8, 0x24, 0x09, + 0xce, 0x20, 0x9e, 0x06, 0x87, 0xc5, 0x04, 0x64, 0x43, 0x7d, 0x4d, 0x10, 0xd6, 0xa4, 0x94, 0x4c, + 0x60, 0xde, 0xdf, 0x58, 0xb1, 0x44, 0x3f, 0xb0, 0xd9, 0xe5, 0xcb, 0xbb, 0xbe, 0xea, 0x07, 0x34, + 0x73, 0x6a, 0x77, 0xf0, 0x9d, 0x0c, 0x2e, 0x0e, 0x91, 0x9a, 0xcc, 0xc2, 0xb7, 0x63, 0x97, 0xd5, + 0xdc, 0xc4, 0x32, 0xe7, 0x84, 0x3e, 0x30, 0xa1, 0x1e, 0xb5, 0x6e, 0x65, 0xe9, 0xad, 0xa7, 0x96, +}; + + +static const UINT8 kof2000_type1_t03[256] = +{ + 0x9a, 0x2f, 0xcc, 0x4e, 0x40, 0x69, 0xac, 0xca, 0xa5, 0x7b, 0x0a, 0x61, 0x91, 0x0d, 0x55, 0x74, + 0xcd, 0x8b, 0x0b, 0x80, 0x09, 0x5e, 0x38, 0xc7, 0xda, 0xbf, 0xf5, 0x37, 0x23, 0x31, 0x33, 0xe9, + 0xae, 0x87, 0xe5, 0xfa, 0x6e, 0x5c, 0xad, 0xf4, 0x76, 0x62, 0x9f, 0x2e, 0x01, 0xe2, 0xf6, 0x47, + 0x8c, 0x7c, 0xaa, 0x98, 0xb5, 0x92, 0x51, 0xec, 0x5f, 0x07, 0x5d, 0x6f, 0x16, 0xa1, 0x1d, 0xa9, + 0x48, 0x45, 0xf0, 0x6a, 0x9c, 0x1e, 0x11, 0xa0, 0x06, 0x46, 0xd5, 0xf1, 0x73, 0xed, 0x94, 0xf7, + 0xc3, 0x57, 0x1b, 0xe0, 0x97, 0xb1, 0xa4, 0xa7, 0x24, 0xe7, 0x2b, 0x05, 0x5b, 0x34, 0x0c, 0xb8, + 0x0f, 0x9b, 0xc8, 0x4d, 0x5a, 0xa6, 0x86, 0x3e, 0x14, 0x29, 0x84, 0x58, 0x90, 0xdb, 0x2d, 0x54, + 0x9d, 0x82, 0xd4, 0x7d, 0xc6, 0x67, 0x41, 0x89, 0xc1, 0x13, 0xb0, 0x9e, 0x81, 0x6d, 0xa8, 0x59, + 0xbd, 0x39, 0x8e, 0xe6, 0x25, 0x8f, 0xd9, 0xa2, 0xe4, 0x53, 0xc5, 0x72, 0x7e, 0x36, 0x4a, 0x4f, + 0x52, 0xc2, 0x22, 0x2a, 0xce, 0x3c, 0x21, 0x2c, 0x00, 0xd7, 0x75, 0x8a, 0x27, 0xee, 0x43, 0xfe, + 0xcb, 0x6b, 0xb9, 0xa3, 0x78, 0xb7, 0x85, 0x02, 0x20, 0xd0, 0x83, 0xc4, 0x12, 0xf9, 0xfd, 0xd8, + 0x79, 0x64, 0x3a, 0x49, 0x03, 0xb4, 0xc0, 0xf2, 0xdf, 0x15, 0x93, 0x08, 0x35, 0xff, 0x70, 0xdd, + 0x28, 0x6c, 0x0e, 0x04, 0xde, 0x7a, 0x65, 0xd2, 0xab, 0x42, 0x95, 0xe1, 0x3f, 0x3b, 0x7f, 0x66, + 0xd1, 0x8d, 0xe3, 0xbb, 0x1c, 0xfc, 0x77, 0x1a, 0x88, 0x18, 0x19, 0x68, 0x1f, 0x56, 0xd6, 0xe8, + 0xb6, 0xbc, 0xd3, 0xea, 0x3d, 0x26, 0xb3, 0xc9, 0x44, 0xdc, 0xf3, 0x32, 0x30, 0xef, 0x96, 0x4c, + 0xaf, 0x17, 0xf8, 0xfb, 0x60, 0x50, 0xeb, 0x4b, 0x99, 0x63, 0xba, 0xb2, 0x71, 0xcf, 0x10, 0xbe, +}; + + +static const UINT8 kof2000_type1_t12[256] = +{ + 0xda, 0xa7, 0xd6, 0x6e, 0x2f, 0x5e, 0xf0, 0x3f, 0xa4, 0xce, 0xd3, 0xfd, 0x46, 0x2a, 0xac, 0xc9, + 0xbe, 0xeb, 0x9f, 0xd5, 0x3c, 0x61, 0x96, 0x11, 0xd0, 0x38, 0xca, 0x06, 0xed, 0x1b, 0x65, 0xe7, + 0x23, 0xdd, 0xd9, 0x05, 0xbf, 0x5b, 0x5d, 0xa5, 0x95, 0x00, 0xec, 0xf1, 0x01, 0xa9, 0xa6, 0xfc, + 0xbb, 0x54, 0xe3, 0x2e, 0x92, 0x58, 0x0a, 0x7b, 0xb6, 0xcc, 0xb1, 0x5f, 0x14, 0x35, 0x72, 0xff, + 0xe6, 0x52, 0xd7, 0x8c, 0xf3, 0x43, 0xaf, 0x9c, 0xc0, 0x4f, 0x0c, 0x42, 0x8e, 0xef, 0x80, 0xcd, + 0x1d, 0x7e, 0x88, 0x3b, 0x98, 0xa1, 0xad, 0xe4, 0x9d, 0x8d, 0x2b, 0x56, 0xb5, 0x50, 0xdf, 0x66, + 0x6d, 0xd4, 0x60, 0x09, 0xe1, 0xee, 0x4a, 0x47, 0xf9, 0xfe, 0x73, 0x07, 0x89, 0xa8, 0x39, 0xea, + 0x82, 0x9e, 0xcf, 0x26, 0xb2, 0x4e, 0xc3, 0x59, 0xf2, 0x3d, 0x9a, 0xb0, 0x69, 0xf7, 0xbc, 0x34, + 0xe5, 0x36, 0x22, 0xfb, 0x57, 0x71, 0x99, 0x6c, 0x83, 0x30, 0x55, 0xc2, 0xbd, 0xf4, 0x77, 0xe9, + 0x76, 0x97, 0xa0, 0xe0, 0xb9, 0x86, 0x6b, 0xa3, 0x84, 0x67, 0x1a, 0x70, 0x02, 0x5a, 0x41, 0x5c, + 0x25, 0x81, 0xaa, 0x28, 0x78, 0x4b, 0xc6, 0x64, 0x53, 0x16, 0x4d, 0x8b, 0x20, 0x93, 0xae, 0x0f, + 0x94, 0x2c, 0x3a, 0xc7, 0x62, 0xe8, 0xc4, 0xdb, 0x04, 0xc5, 0xfa, 0x29, 0x48, 0xd1, 0x08, 0x24, + 0x0d, 0xe2, 0xd8, 0x10, 0xb4, 0x91, 0x8a, 0x13, 0x0e, 0xdc, 0xd2, 0x79, 0xb8, 0xf8, 0xba, 0x2d, + 0xcb, 0xf5, 0x7d, 0x37, 0x51, 0x40, 0x31, 0xa2, 0x0b, 0x18, 0x63, 0x7f, 0xb3, 0xab, 0x9b, 0x87, + 0xf6, 0x90, 0xde, 0xc8, 0x27, 0x45, 0x7c, 0x1c, 0x85, 0x68, 0x33, 0x19, 0x03, 0x75, 0x15, 0x7a, + 0x1f, 0x49, 0x8f, 0x4c, 0xc1, 0x44, 0x17, 0x12, 0x6f, 0x32, 0xb7, 0x3e, 0x74, 0x1e, 0x21, 0x6a, +}; + + +static const UINT8 kof2000_address_8_15_xor1[256] = +{ + 0xfc, 0x9b, 0x1c, 0x35, 0x72, 0x53, 0xd6, 0x7d, 0x84, 0xa4, 0xc5, 0x93, 0x7b, 0xe7, 0x47, 0xd5, + 0x24, 0xa2, 0xfa, 0x19, 0x0c, 0xb1, 0x8c, 0xb9, 0x9d, 0xd8, 0x59, 0x4f, 0x3c, 0xb2, 0x78, 0x4a, + 0x2a, 0x96, 0x9a, 0xf1, 0x1f, 0x22, 0xa8, 0x5b, 0x67, 0xa3, 0x0f, 0x00, 0xfb, 0xdf, 0xeb, 0x0a, + 0x57, 0xb8, 0x25, 0xd7, 0xf0, 0x6b, 0x0b, 0x31, 0x95, 0x23, 0x2d, 0x5c, 0x27, 0xc7, 0xf4, 0x55, + 0x1a, 0xf7, 0x74, 0xbe, 0xd3, 0xac, 0x3d, 0xc1, 0x7f, 0xbd, 0x28, 0x01, 0x10, 0xe5, 0x09, 0x37, + 0x1e, 0x58, 0xaf, 0x17, 0xf2, 0x16, 0x30, 0x92, 0x36, 0x68, 0xe6, 0xd4, 0xea, 0xb7, 0x75, 0x54, + 0x77, 0x41, 0xb4, 0x8d, 0xe0, 0xf3, 0x51, 0x03, 0xa9, 0xe8, 0x66, 0xab, 0x29, 0xa5, 0xed, 0xcb, + 0xd1, 0xaa, 0xf5, 0xdb, 0x4c, 0x42, 0x97, 0x8a, 0xae, 0xc9, 0x6e, 0x04, 0x33, 0x85, 0xdd, 0x2b, + 0x6f, 0xef, 0x12, 0x21, 0x7a, 0xa1, 0x5a, 0x91, 0xc8, 0xcc, 0xc0, 0xa7, 0x60, 0x3e, 0x56, 0x2f, + 0xe4, 0x71, 0x99, 0xc2, 0xa0, 0x45, 0x80, 0x65, 0xbb, 0x87, 0x69, 0x81, 0x73, 0xca, 0xf6, 0x46, + 0x43, 0xda, 0x26, 0x7e, 0x8f, 0xe1, 0x8b, 0xfd, 0x50, 0x79, 0xba, 0xc6, 0x63, 0x4b, 0xb3, 0x8e, + 0x34, 0xe2, 0x48, 0x14, 0xcd, 0xe3, 0xc4, 0x05, 0x13, 0x40, 0x06, 0x6c, 0x88, 0xb0, 0xe9, 0x1b, + 0x4d, 0xf8, 0x76, 0x02, 0x44, 0x94, 0xcf, 0x32, 0xfe, 0xce, 0x3b, 0x5d, 0x2c, 0x89, 0x5f, 0xdc, + 0xd2, 0x9c, 0x6a, 0xec, 0x18, 0x6d, 0x0e, 0x86, 0xff, 0x5e, 0x9e, 0xee, 0x11, 0xd0, 0x49, 0x52, + 0x4e, 0x61, 0x90, 0x0d, 0xc3, 0x39, 0x15, 0x83, 0xb5, 0x62, 0x3f, 0x70, 0x7c, 0xad, 0x20, 0xbf, + 0x2e, 0x08, 0x1d, 0xf9, 0xb6, 0xa6, 0x64, 0x07, 0x82, 0x38, 0x98, 0x3a, 0x9f, 0xde, 0xbc, 0xd9, +}; + + +static const UINT8 kof2000_address_8_15_xor2[256] = +{ + 0x00, 0xbe, 0x06, 0x5a, 0xfa, 0x42, 0x15, 0xf2, 0x3f, 0x0a, 0x84, 0x93, 0x4e, 0x78, 0x3b, 0x89, + 0x32, 0x98, 0xa2, 0x87, 0x73, 0xdd, 0x26, 0xe5, 0x05, 0x71, 0x08, 0x6e, 0x9b, 0xe0, 0xdf, 0x9e, + 0xfc, 0x83, 0x81, 0xef, 0xb2, 0xc0, 0xc3, 0xbf, 0xa7, 0x6d, 0x1b, 0x95, 0xed, 0xb9, 0x3e, 0x13, + 0xb0, 0x47, 0x9c, 0x7a, 0x24, 0x41, 0x68, 0xd0, 0x36, 0x0b, 0xb5, 0xc2, 0x67, 0xf7, 0x54, 0x92, + 0x1e, 0x44, 0x86, 0x2b, 0x94, 0xcc, 0xba, 0x23, 0x0d, 0xca, 0x6b, 0x4c, 0x2a, 0x9a, 0x2d, 0x8b, + 0xe3, 0x52, 0x29, 0xf0, 0x21, 0xbd, 0xbb, 0x1f, 0xa3, 0xab, 0xf8, 0x46, 0xb7, 0x45, 0x82, 0x5e, + 0xdb, 0x07, 0x5d, 0xe9, 0x9d, 0x1a, 0x48, 0xce, 0x91, 0x12, 0xd4, 0xee, 0xa9, 0x39, 0xf1, 0x18, + 0x2c, 0x22, 0x8a, 0x7e, 0x34, 0x4a, 0x8c, 0xc1, 0x14, 0xf3, 0x20, 0x35, 0xd9, 0x96, 0x33, 0x77, + 0x9f, 0x76, 0x7c, 0x90, 0xc6, 0xd5, 0xa1, 0x5b, 0xac, 0x75, 0xc7, 0x0c, 0xb3, 0x17, 0xd6, 0x99, + 0x56, 0xa6, 0x3d, 0x1d, 0xb1, 0x2e, 0xd8, 0xbc, 0x2f, 0xde, 0x60, 0x55, 0x6c, 0x40, 0xcd, 0x43, + 0xff, 0xad, 0x38, 0x79, 0x51, 0xc8, 0x0e, 0x5f, 0xc4, 0x66, 0xcb, 0xa8, 0x7d, 0xa4, 0x3a, 0xea, + 0x27, 0x7b, 0x70, 0x8e, 0x5c, 0x19, 0x0f, 0x80, 0x6f, 0x8f, 0x10, 0xf9, 0x49, 0x85, 0x69, 0x7f, + 0xeb, 0x1c, 0x01, 0x65, 0x37, 0xa5, 0x28, 0xe4, 0x6a, 0x03, 0x04, 0xd1, 0x31, 0x11, 0x30, 0xfb, + 0x88, 0x97, 0xd3, 0xf6, 0xc5, 0x4d, 0xf5, 0x3c, 0xe8, 0x61, 0xdc, 0xd2, 0xb4, 0xb8, 0xa0, 0xae, + 0x16, 0x25, 0x02, 0x09, 0xfe, 0xcf, 0x53, 0x63, 0xaf, 0x59, 0xf4, 0xe1, 0xec, 0xd7, 0xe7, 0x50, + 0xe2, 0xc9, 0xaa, 0x4b, 0x8d, 0x4f, 0xe6, 0x64, 0xda, 0x74, 0xb6, 0x72, 0x57, 0x62, 0xfd, 0x58, +}; + + +static const UINT8 kof2000_address_16_23_xor1[256] = +{ + 0x45, 0x9f, 0x6e, 0x2f, 0x28, 0xbc, 0x5e, 0x6d, 0xda, 0xb5, 0x0d, 0xb8, 0xc0, 0x8e, 0xa2, 0x32, + 0xee, 0xcd, 0x8d, 0x48, 0x8c, 0x27, 0x14, 0xeb, 0x65, 0xd7, 0xf2, 0x93, 0x99, 0x90, 0x91, 0xfc, + 0x5f, 0xcb, 0xfa, 0x75, 0x3f, 0x26, 0xde, 0x72, 0x33, 0x39, 0xc7, 0x1f, 0x88, 0x79, 0x73, 0xab, + 0x4e, 0x36, 0x5d, 0x44, 0xd2, 0x41, 0xa0, 0x7e, 0xa7, 0x8b, 0xa6, 0xbf, 0x03, 0xd8, 0x86, 0xdc, + 0x2c, 0xaa, 0x70, 0x3d, 0x46, 0x07, 0x80, 0x58, 0x0b, 0x2b, 0xe2, 0xf0, 0xb1, 0xfe, 0x42, 0xf3, + 0xe9, 0xa3, 0x85, 0x78, 0xc3, 0xd0, 0x5a, 0xdb, 0x1a, 0xfb, 0x9d, 0x8a, 0xa5, 0x12, 0x0e, 0x54, + 0x8f, 0xc5, 0x6c, 0xae, 0x25, 0x5b, 0x4b, 0x17, 0x02, 0x9c, 0x4a, 0x24, 0x40, 0xe5, 0x9e, 0x22, + 0xc6, 0x49, 0x62, 0xb6, 0x6b, 0xbb, 0xa8, 0xcc, 0xe8, 0x81, 0x50, 0x47, 0xc8, 0xbe, 0x5c, 0xa4, + 0xd6, 0x94, 0x4f, 0x7b, 0x9a, 0xcf, 0xe4, 0x59, 0x7a, 0xa1, 0xea, 0x31, 0x37, 0x13, 0x2d, 0xaf, + 0x21, 0x69, 0x19, 0x1d, 0x6f, 0x16, 0x98, 0x1e, 0x08, 0xe3, 0xb2, 0x4d, 0x9b, 0x7f, 0xa9, 0x77, + 0xed, 0xbd, 0xd4, 0xd9, 0x34, 0xd3, 0xca, 0x09, 0x18, 0x60, 0xc9, 0x6a, 0x01, 0xf4, 0xf6, 0x64, + 0xb4, 0x3a, 0x15, 0xac, 0x89, 0x52, 0x68, 0x71, 0xe7, 0x82, 0xc1, 0x0c, 0x92, 0xf7, 0x30, 0xe6, + 0x1c, 0x3e, 0x0f, 0x0a, 0x67, 0x35, 0xba, 0x61, 0xdd, 0x29, 0xc2, 0xf8, 0x97, 0x95, 0xb7, 0x3b, + 0xe0, 0xce, 0xf9, 0xd5, 0x06, 0x76, 0xb3, 0x05, 0x4c, 0x04, 0x84, 0x3c, 0x87, 0x23, 0x63, 0x7c, + 0x53, 0x56, 0xe1, 0x7d, 0x96, 0x1b, 0xd1, 0xec, 0x2a, 0x66, 0xf1, 0x11, 0x10, 0xff, 0x43, 0x2e, + 0xdf, 0x83, 0x74, 0xf5, 0x38, 0x20, 0xfd, 0xad, 0xc4, 0xb9, 0x55, 0x51, 0xb0, 0xef, 0x00, 0x57, +}; + + +static const UINT8 kof2000_address_16_23_xor2[256] = +{ + 0x00, 0xb8, 0xf0, 0x34, 0xca, 0x21, 0x3c, 0xf9, 0x01, 0x8e, 0x75, 0x70, 0xec, 0x13, 0x27, 0x96, + 0xf4, 0x5b, 0x88, 0x1f, 0xeb, 0x4a, 0x7d, 0x9d, 0xbe, 0x02, 0x14, 0xaf, 0xa2, 0x06, 0xc6, 0xdb, + 0x35, 0x6b, 0x74, 0x45, 0x7b, 0x29, 0xd2, 0xfe, 0xb6, 0x15, 0xd0, 0x8a, 0xa9, 0x2d, 0x19, 0xf6, + 0x5e, 0x5a, 0x90, 0xe9, 0x11, 0x33, 0xc2, 0x47, 0x37, 0x4c, 0x4f, 0x59, 0xc3, 0x04, 0x57, 0x1d, + 0xf2, 0x63, 0x6d, 0x6e, 0x31, 0x95, 0xcb, 0x3e, 0x67, 0xb2, 0xe3, 0x98, 0xed, 0x8d, 0xe6, 0xfb, + 0xf8, 0xba, 0x5d, 0xd4, 0x2a, 0xf5, 0x3b, 0x82, 0x05, 0x16, 0x44, 0xef, 0x4d, 0xe7, 0x93, 0xda, + 0x9f, 0xbb, 0x61, 0xc9, 0x53, 0xbd, 0x76, 0x78, 0x52, 0x36, 0x0c, 0x66, 0xc1, 0x10, 0xdd, 0x7a, + 0x84, 0x69, 0xcd, 0xfd, 0x58, 0x0d, 0x6c, 0x89, 0x68, 0xad, 0x3a, 0xb0, 0x4b, 0x46, 0xc5, 0x03, + 0xb4, 0xf7, 0x30, 0x8c, 0x4e, 0x60, 0x73, 0xa1, 0x8b, 0xb1, 0x62, 0xcc, 0xd1, 0x08, 0xfc, 0x77, + 0x7e, 0xcf, 0x56, 0x51, 0x07, 0xa6, 0x80, 0x92, 0xdc, 0x0b, 0xa4, 0xc7, 0xe8, 0xe1, 0xb5, 0x71, + 0xea, 0xb3, 0x2f, 0x94, 0x18, 0xe2, 0x3d, 0x49, 0x65, 0xaa, 0xf1, 0x91, 0xc8, 0x99, 0x55, 0x79, + 0x86, 0xa7, 0x26, 0xa0, 0xac, 0x5f, 0xce, 0x6a, 0x5c, 0xf3, 0x87, 0x8f, 0x12, 0x1c, 0xd8, 0xe4, + 0x9b, 0x64, 0x2e, 0x1e, 0xd7, 0xc0, 0x17, 0xbc, 0xa3, 0xa8, 0x9a, 0x0e, 0x25, 0x40, 0x41, 0x50, + 0xb9, 0xbf, 0x28, 0xdf, 0x32, 0x54, 0x9e, 0x48, 0xd5, 0x2b, 0x42, 0xfa, 0x9c, 0x7f, 0xd3, 0x85, + 0x43, 0xde, 0x81, 0x0f, 0x24, 0xc4, 0x38, 0xae, 0x83, 0x1b, 0x6f, 0x7c, 0xe5, 0xff, 0x1a, 0xd9, + 0x3f, 0xb7, 0x22, 0x97, 0x09, 0xe0, 0xa5, 0x20, 0x23, 0x2c, 0x72, 0xd6, 0x39, 0xab, 0x0a, 0xee, +}; + + +static const UINT8 kof2000_address_0_7_xor[256] = +{ + 0x26, 0x48, 0x06, 0x9b, 0x21, 0xa9, 0x1b, 0x76, 0xc9, 0xf8, 0xb4, 0x67, 0xe4, 0xff, 0x99, 0xf7, + 0x15, 0x9e, 0x62, 0x00, 0x72, 0x4d, 0xa0, 0x4f, 0x02, 0xf1, 0xea, 0xef, 0x0b, 0xf3, 0xeb, 0xa6, + 0x93, 0x78, 0x6f, 0x7c, 0xda, 0xd4, 0x7b, 0x05, 0xe9, 0xc6, 0xd6, 0xdb, 0x50, 0xce, 0xd2, 0x01, + 0xb5, 0xe8, 0xe0, 0x2a, 0x08, 0x1a, 0xb8, 0xe3, 0xf9, 0xb1, 0xf4, 0x8b, 0x39, 0x2d, 0x85, 0x9c, + 0x55, 0x73, 0x63, 0x40, 0x38, 0x96, 0xdc, 0xa3, 0xa2, 0xa1, 0x25, 0x66, 0x6d, 0x56, 0x8e, 0x10, + 0x0f, 0x31, 0x1c, 0xf5, 0x28, 0x77, 0x0a, 0xd1, 0x75, 0x34, 0xa4, 0xfe, 0x7d, 0x07, 0x51, 0x79, + 0x41, 0x90, 0x22, 0x35, 0x12, 0xbb, 0xc4, 0xca, 0xb2, 0x1f, 0xcb, 0xc8, 0xac, 0xdd, 0xd0, 0x0d, + 0xfc, 0xc5, 0x9d, 0x14, 0xbc, 0x83, 0xd9, 0x58, 0xc2, 0x30, 0x9a, 0x6a, 0xc0, 0x0c, 0xad, 0xf6, + 0x5d, 0x74, 0x7f, 0x2f, 0xbd, 0x1d, 0x47, 0xd5, 0xe6, 0x89, 0xcf, 0xb7, 0xd3, 0x59, 0x36, 0x98, + 0xf0, 0xfb, 0x3c, 0xf2, 0x3f, 0xa7, 0x18, 0x82, 0x42, 0x5c, 0xab, 0xba, 0xde, 0x52, 0x09, 0x91, + 0xaa, 0x61, 0xec, 0xd7, 0x95, 0x23, 0xcd, 0x80, 0xa5, 0x68, 0x60, 0x27, 0x71, 0xe1, 0x2c, 0x2e, + 0x8d, 0x2b, 0x57, 0x65, 0xbf, 0xc1, 0x19, 0xc7, 0x49, 0x64, 0x88, 0x4a, 0xcc, 0x20, 0x4e, 0xd8, + 0x3b, 0x4c, 0x13, 0x5f, 0x9f, 0xbe, 0x5e, 0x6e, 0xfd, 0xe2, 0xfa, 0x54, 0x37, 0x0e, 0x16, 0x7a, + 0x6c, 0x33, 0xb3, 0x70, 0x84, 0x7e, 0xc3, 0x04, 0xb0, 0xae, 0xb9, 0x81, 0x03, 0x29, 0xdf, 0x46, + 0xe5, 0x69, 0xe7, 0x24, 0x92, 0x5a, 0x4b, 0x5b, 0x94, 0x11, 0x3a, 0x3d, 0x87, 0xed, 0x97, 0xb6, + 0x32, 0x3e, 0x45, 0xaf, 0x1e, 0x43, 0x44, 0x8c, 0x53, 0x86, 0x6b, 0xee, 0xa8, 0x8a, 0x8f, 0x17, +}; + + + +void cmc_prot_device::decrypt(UINT8 *r0, UINT8 *r1, + UINT8 c0, UINT8 c1, + const UINT8 *table0hi, + const UINT8 *table0lo, + const UINT8 *table1, + int base, + int invert) +{ + UINT8 tmp,xor0,xor1; + + tmp = table1[(base & 0xff) ^ address_0_7_xor[(base >> 8) & 0xff]]; + xor0 = (table0hi[(base >> 8) & 0xff] & 0xfe) | (tmp & 0x01); + xor1 = (tmp & 0xfe) | (table0lo[(base >> 8) & 0xff] & 0x01); + + if (invert) + { + *r0 = c1 ^ xor0; + *r1 = c0 ^ xor1; + } + else + { + *r0 = c0 ^ xor0; + *r1 = c1 ^ xor1; + } +} + + +void cmc_prot_device::neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, int extra_xor) +{ + int rpos; + + + dynamic_buffer buf(rom_size); + + // Data xor + for (rpos = 0;rpos < rom_size/4;rpos++) + { + decrypt(&buf[4*rpos+0], &buf[4*rpos+3], rom[4*rpos+0], rom[4*rpos+3], type0_t03, type0_t12, type1_t03, rpos, (rpos>>8) & 1); + decrypt(&buf[4*rpos+1], &buf[4*rpos+2], rom[4*rpos+1], rom[4*rpos+2], type0_t12, type0_t03, type1_t12, rpos, ((rpos>>16) ^ address_16_23_xor2[(rpos>>8) & 0xff]) & 1); + } + + // Address xor + for (rpos = 0;rpos < rom_size/4;rpos++) + { + int baser; + + baser = rpos; + + baser ^= extra_xor; + + baser ^= address_8_15_xor1[(baser >> 16) & 0xff] << 8; + baser ^= address_8_15_xor2[baser & 0xff] << 8; + baser ^= address_16_23_xor1[baser & 0xff] << 16; + baser ^= address_16_23_xor2[(baser >> 8) & 0xff] << 16; + baser ^= address_0_7_xor[(baser >> 8) & 0xff]; + + + if (rom_size == 0x3000000) /* special handling for preisle2 */ + { + if (rpos < 0x2000000/4) + baser &= (0x2000000/4)-1; + else + baser = 0x2000000/4 + (baser & ((0x1000000/4)-1)); + } + else if (rom_size == 0x6000000) /* special handling for kf2k3pcb */ + { + if (rpos < 0x4000000/4) + baser &= (0x4000000/4)-1; + else + baser = 0x4000000/4 + (baser & ((0x1000000/4)-1)); + } + else /* Clamp to the real rom size */ + baser &= (rom_size/4)-1; + + rom[4*rpos+0] = buf[4*baser+0]; + rom[4*rpos+1] = buf[4*baser+1]; + rom[4*rpos+2] = buf[4*baser+2]; + rom[4*rpos+3] = buf[4*baser+3]; + } +} + + +/* the S data comes from the end of the C data */ +void cmc_prot_device::neogeo_sfix_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size) +{ + int i; + int tx_size = fixed_size; + UINT8 *src = rom+rom_size-tx_size; + UINT8 *dst = fixed; + + for (i = 0;i < tx_size;i++) + dst[i] = src[(i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4)]; +} + + +/* CMC42 protection chip */ +void cmc_prot_device::kof99_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor) +{ + type0_t03 = kof99_type0_t03; + type0_t12 = kof99_type0_t12; + type1_t03 = kof99_type1_t03; + type1_t12 = kof99_type1_t12; + address_8_15_xor1 = kof99_address_8_15_xor1; + address_8_15_xor2 = kof99_address_8_15_xor2; + address_16_23_xor1 = kof99_address_16_23_xor1; + address_16_23_xor2 = kof99_address_16_23_xor2; + address_0_7_xor = kof99_address_0_7_xor; + neogeo_gfx_decrypt(rom, rom_size, extra_xor); + neogeo_sfix_decrypt(rom, rom_size, fixed, fixed_size); +} + + +/* CMC50 protection chip */ +void cmc_prot_device::kof2000_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor) +{ + type0_t03 = kof2000_type0_t03; + type0_t12 = kof2000_type0_t12; + type1_t03 = kof2000_type1_t03; + type1_t12 = kof2000_type1_t12; + address_8_15_xor1 = kof2000_address_8_15_xor1; + address_8_15_xor2 = kof2000_address_8_15_xor2; + address_16_23_xor1 = kof2000_address_16_23_xor1; + address_16_23_xor2 = kof2000_address_16_23_xor2; + address_0_7_xor = kof2000_address_0_7_xor; + neogeo_gfx_decrypt(rom, rom_size, extra_xor); + neogeo_sfix_decrypt(rom, rom_size, fixed, fixed_size); +} + + +/* CMC42 protection chip */ +void cmc_prot_device::cmc42_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor) +{ + type0_t03 = kof99_type0_t03; + type0_t12 = kof99_type0_t12; + type1_t03 = kof99_type1_t03; + type1_t12 = kof99_type1_t12; + address_8_15_xor1 = kof99_address_8_15_xor1; + address_8_15_xor2 = kof99_address_8_15_xor2; + address_16_23_xor1 = kof99_address_16_23_xor1; + address_16_23_xor2 = kof99_address_16_23_xor2; + address_0_7_xor = kof99_address_0_7_xor; + neogeo_gfx_decrypt(rom, rom_size, extra_xor); +} + + +/* CMC50 protection chip */ +void cmc_prot_device::cmc50_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor) +{ + type0_t03 = kof2000_type0_t03; + type0_t12 = kof2000_type0_t12; + type1_t03 = kof2000_type1_t03; + type1_t12 = kof2000_type1_t12; + address_8_15_xor1 = kof2000_address_8_15_xor1; + address_8_15_xor2 = kof2000_address_8_15_xor2; + address_16_23_xor1 = kof2000_address_16_23_xor1; + address_16_23_xor2 = kof2000_address_16_23_xor2; + address_0_7_xor = kof2000_address_0_7_xor; + neogeo_gfx_decrypt(rom, rom_size, extra_xor); +} + + + +/*************************************************************************** + +NeoGeo 'M' ROM encryption + CMC50 protection chip + +***************************************************************************/ + + +static const UINT8 m1_address_8_15_xor[256] = +{ + 0x0a, 0x72, 0xb7, 0xaf, 0x67, 0xde, 0x1d, 0xb1, 0x78, 0xc4, 0x4f, 0xb5, 0x4b, 0x18, 0x76, 0xdd, + 0x11, 0xe2, 0x36, 0xa1, 0x82, 0x03, 0x98, 0xa0, 0x10, 0x5f, 0x3f, 0xd6, 0x1f, 0x90, 0x6a, 0x0b, + 0x70, 0xe0, 0x64, 0xcb, 0x9f, 0x38, 0x8b, 0x53, 0x04, 0xca, 0xf8, 0xd0, 0x07, 0x68, 0x56, 0x32, + 0xae, 0x1c, 0x2e, 0x48, 0x63, 0x92, 0x9a, 0x9c, 0x44, 0x85, 0x41, 0x40, 0x09, 0xc0, 0xc8, 0xbf, + 0xea, 0xbb, 0xf7, 0x2d, 0x99, 0x21, 0xf6, 0xba, 0x15, 0xce, 0xab, 0xb0, 0x2a, 0x60, 0xbc, 0xf1, + 0xf0, 0x9e, 0xd5, 0x97, 0xd8, 0x4e, 0x14, 0x9d, 0x42, 0x4d, 0x2c, 0x5c, 0x2b, 0xa6, 0xe1, 0xa7, + 0xef, 0x25, 0x33, 0x7a, 0xeb, 0xe7, 0x1b, 0x6d, 0x4c, 0x52, 0x26, 0x62, 0xb6, 0x35, 0xbe, 0x80, + 0x01, 0xbd, 0xfd, 0x37, 0xf9, 0x47, 0x55, 0x71, 0xb4, 0xf2, 0xff, 0x27, 0xfa, 0x23, 0xc9, 0x83, + 0x17, 0x39, 0x13, 0x0d, 0xc7, 0x86, 0x16, 0xec, 0x49, 0x6f, 0xfe, 0x34, 0x05, 0x8f, 0x00, 0xe6, + 0xa4, 0xda, 0x7b, 0xc1, 0xf3, 0xf4, 0xd9, 0x75, 0x28, 0x66, 0x87, 0xa8, 0x45, 0x6c, 0x20, 0xe9, + 0x77, 0x93, 0x7e, 0x3c, 0x1e, 0x74, 0xf5, 0x8c, 0x3e, 0x94, 0xd4, 0xc2, 0x5a, 0x06, 0x0e, 0xe8, + 0x3d, 0xa9, 0xb2, 0xe3, 0xe4, 0x22, 0xcf, 0x24, 0x8e, 0x6b, 0x8a, 0x8d, 0x84, 0x4a, 0xd2, 0x91, + 0x88, 0x79, 0x57, 0xa5, 0x0f, 0xcd, 0xb9, 0xac, 0x3b, 0xaa, 0xb3, 0xd1, 0xee, 0x31, 0x81, 0x7c, + 0xd7, 0x89, 0xd3, 0x96, 0x43, 0xc5, 0xc6, 0xc3, 0x69, 0x7f, 0x46, 0xdf, 0x30, 0x5b, 0x6e, 0xe5, + 0x08, 0x95, 0x9b, 0xfb, 0xb8, 0x58, 0x0c, 0x61, 0x50, 0x5d, 0x3a, 0xa2, 0x29, 0x12, 0xfc, 0x51, + 0x7d, 0x1a, 0x02, 0x65, 0x54, 0x5e, 0x19, 0xcc, 0xdc, 0xdb, 0x73, 0xed, 0xad, 0x59, 0x2f, 0xa3, +}; + +static const UINT8 m1_address_0_7_xor[256] = +{ + 0xf4, 0xbc, 0x02, 0xf7, 0x2c, 0x3d, 0xe8, 0xd9, 0x50, 0x62, 0xec, 0xbd, 0x53, 0x73, 0x79, 0x61, + 0x00, 0x34, 0xcf, 0xa2, 0x63, 0x28, 0x90, 0xaf, 0x44, 0x3b, 0xc5, 0x8d, 0x3a, 0x46, 0x07, 0x70, + 0x66, 0xbe, 0xd8, 0x8b, 0xe9, 0xa0, 0x4b, 0x98, 0xdc, 0xdf, 0xe2, 0x16, 0x74, 0xf1, 0x37, 0xf5, + 0xb7, 0x21, 0x81, 0x01, 0x1c, 0x1b, 0x94, 0x36, 0x09, 0xa1, 0x4a, 0x91, 0x30, 0x92, 0x9b, 0x9a, + 0x29, 0xb1, 0x38, 0x4d, 0x55, 0xf2, 0x56, 0x18, 0x24, 0x47, 0x9d, 0x3f, 0x80, 0x1f, 0x22, 0xa4, + 0x11, 0x54, 0x84, 0x0d, 0x25, 0x48, 0xee, 0xc6, 0x59, 0x15, 0x03, 0x7a, 0xfd, 0x6c, 0xc3, 0x33, + 0x5b, 0xc4, 0x7b, 0x5a, 0x05, 0x7f, 0xa6, 0x40, 0xa9, 0x5d, 0x41, 0x8a, 0x96, 0x52, 0xd3, 0xf0, + 0xab, 0x72, 0x10, 0x88, 0x6f, 0x95, 0x7c, 0xa8, 0xcd, 0x9c, 0x5f, 0x32, 0xae, 0x85, 0x39, 0xac, + 0xe5, 0xd7, 0xfb, 0xd4, 0x08, 0x23, 0x19, 0x65, 0x6b, 0xa7, 0x93, 0xbb, 0x2b, 0xbf, 0xb8, 0x35, + 0xd0, 0x06, 0x26, 0x68, 0x3e, 0xdd, 0xb9, 0x69, 0x2a, 0xb2, 0xde, 0x87, 0x45, 0x58, 0xff, 0x3c, + 0x9e, 0x7d, 0xda, 0xed, 0x49, 0x8c, 0x14, 0x8e, 0x75, 0x2f, 0xe0, 0x6e, 0x78, 0x6d, 0x20, 0xd2, + 0xfa, 0x2d, 0x51, 0xcc, 0xc7, 0xe7, 0x1d, 0x27, 0x97, 0xfc, 0x31, 0xdb, 0xf8, 0x42, 0xe3, 0x99, + 0x5e, 0x83, 0x0e, 0xb4, 0x2e, 0xf6, 0xc0, 0x0c, 0x4c, 0x57, 0xb6, 0x64, 0x0a, 0x17, 0xa3, 0xc1, + 0x77, 0x12, 0xfe, 0xe6, 0x8f, 0x13, 0x71, 0xe4, 0xf9, 0xad, 0x9f, 0xce, 0xd5, 0x89, 0x7e, 0x0f, + 0xc2, 0x86, 0xf3, 0x67, 0xba, 0x60, 0x43, 0xc9, 0x04, 0xb3, 0xb0, 0x1e, 0xb5, 0xc8, 0xeb, 0xa5, + 0x76, 0xea, 0x5c, 0x82, 0x1a, 0x4f, 0xaa, 0xca, 0xe1, 0x0b, 0x4e, 0xcb, 0x6a, 0xef, 0xd1, 0xd6, +}; + + +/* The CMC50 hardware does a checksum of the first 64kb of the M1 rom, + ,and uses this checksum as the basis of the key with which to decrypt + the rom */ + +UINT16 cmc_prot_device::generate_cs16(UINT8 *rom, int size) +{ + UINT16 cs16; + int i; + cs16 = 0x0000; + for (i=0;i<size;i++ ) + { + cs16 += rom[i]; + } + return cs16&0xFFFF; +} + + +int cmc_prot_device::m1_address_scramble(int address, UINT16 key) +{ + int block; + int aux; + + const int p1[8][16] = { + {15,14,10,7,1,2,3,8,0,12,11,13,6,9,5,4}, + {7,1,8,11,15,9,2,3,5,13,4,14,10,0,6,12}, + {8,6,14,3,10,7,15,1,4,0,2,5,13,11,12,9}, + {2,8,15,9,3,4,11,7,13,6,0,10,1,12,14,5}, + {1,13,6,15,14,3,8,10,9,4,7,12,5,2,0,11}, + {11,15,3,4,7,0,9,2,6,14,12,1,8,5,10,13}, + {10,5,13,8,6,15,1,14,11,9,3,0,12,7,4,2}, + {9,3,7,0,2,12,4,11,14,10,5,8,15,13,1,6}, + }; + + block = (address>>16)&7; + aux = address&0xffff; + + aux ^= BITSWAP16(key,12,0,2,4,8,15,7,13,10,1,3,6,11,9,14,5); + aux = BITSWAP16(aux, + p1[block][15],p1[block][14],p1[block][13],p1[block][12], + p1[block][11],p1[block][10],p1[block][9],p1[block][8], + p1[block][7],p1[block][6],p1[block][5],p1[block][4], + p1[block][3],p1[block][2],p1[block][1],p1[block][0]); + aux ^= m1_address_0_7_xor[(aux>>8)&0xff]; + aux ^= m1_address_8_15_xor[aux&0xff]<<8; + aux = BITSWAP16(aux, 7,15,14,6,5,13,12,4,11,3,10,2,9,1,8,0); + + return (block<<16)|aux; +} + + +void cmc_prot_device::neogeo_cmc50_m1_decrypt(UINT8* romcrypt, UINT32 romcrypt_size, UINT8* romaudio, UINT32 romaudio_size) +{ + UINT8* rom = romcrypt; + size_t rom_size = 0x80000; + UINT8* rom2 = romaudio; + + dynamic_buffer buffer(rom_size); + + UINT32 i; + + UINT16 key=generate_cs16(rom,0x10000); + + //printf("key %04x\n",key); + + for (i=0; i<rom_size; i++) + { + buffer[i] = rom[m1_address_scramble(i,key)]; + } + + memcpy(rom,&buffer[0],rom_size); + + memcpy(rom2,rom,0x10000); + memcpy(rom2+0x10000,rom,0x80000); + + #if 0 + { + FILE *fp; + const char *gamename = machine().system().name; + char filename[256]; + sprintf(filename, "%s_m1.dump", gamename); + + fp=fopen(filename, "w+b"); + if (fp) + { + fwrite(rom, rom_size, 1, fp); + fclose(fp); + } + } + #endif + + + #if 0 + { + FILE *fp; + const char *gamename = machine().system().name; + char filename[256]; + sprintf(filename, "%s_m1extra.dump", gamename); + + fp=fopen(filename, "w+b"); + if (fp) + { + fwrite(&rom[0xf800], 0x800, 1, fp); + fclose(fp); + } + } + #endif +} diff --git a/docs/release/src/hbmame/bus/neogeo/cmc_prot.h b/docs/release/src/hbmame/bus/neogeo/cmc_prot.h new file mode 100644 index 00000000000..cbf53a865dd --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/cmc_prot.h @@ -0,0 +1,83 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __CMC_PROT__ +#define __CMC_PROT__ + +extern const device_type CMC_PROT; + +#define MCFG_CMC_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, CMC_PROT, 0) + +// cmc42 +#define KOF99_GFX_KEY (0x00) +#define GAROU_GFX_KEY (0x06) +#define MSLUG3_GFX_KEY (0xad) +#define ZUPAPA_GFX_KEY (0xbd) +#define GANRYU_GFX_KEY (0x07) +#define S1945P_GFX_KEY (0x05) +#define PREISLE2_GFX_KEY (0x9f) +#define BANGBEAD_GFX_KEY (0xf8) +#define NITD_GFX_KEY (0xff) +#define SENGOKU3_GFX_KEY (0xfe) + +// cmc50 +#define KOF2000_GFX_KEY (0x00) +#define KOF2001_GFX_KEY (0x1e) +#define MSLUG4_GFX_KEY (0x31) +#define ROTD_GFX_KEY (0x3f) +#define PNYAA_GFX_KEY (0x2e) +#define KOF2002_GFX_KEY (0xec) +#define MATRIM_GFX_KEY (0x6a) +#define SAMSHO5_GFX_KEY (0x0f) +#define SAMSHO5SP_GFX_KEY (0x0d) +#define MSLUG5_GFX_KEY (0x19) +#define SVC_GFX_KEY (0x57) +#define KOF2003_GFX_KEY (0x9d) +#define JOCKEYGP_GFX_KEY (0xac) + + +class cmc_prot_device : public device_t +{ +public: + // construction/destruction + cmc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + void decrypt(UINT8 *r0, UINT8 *r1, + UINT8 c0, UINT8 c1, + const UINT8 *table0hi, + const UINT8 *table0lo, + const UINT8 *table1, + int base, + int invert); + + void neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, int extra_xor); + void neogeo_sfix_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size); + void kof99_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor); + void kof2000_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor); + void cmc42_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor); + void cmc50_neogeo_gfx_decrypt(UINT8* rom, UINT32 rom_size, UINT8* fixed, UINT32 fixed_size, int extra_xor); + + UINT16 generate_cs16(UINT8 *rom, int size); + int m1_address_scramble(int address, UINT16 key); + void neogeo_cmc50_m1_decrypt(UINT8* romcrypt, UINT32 romcrypt_size, UINT8* romaudio, UINT32 romaudio_size); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + + const UINT8 *type0_t03; + const UINT8 *type0_t12; + const UINT8 *type1_t03; + const UINT8 *type1_t12; + const UINT8 *address_8_15_xor1; + const UINT8 *address_8_15_xor2; + const UINT8 *address_16_23_xor1; + const UINT8 *address_16_23_xor2; + const UINT8 *address_0_7_xor; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/fatfury2_cart.cpp b/docs/release/src/hbmame/bus/neogeo/fatfury2_cart.cpp new file mode 100644 index 00000000000..047ca79a2eb --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/fatfury2_cart.cpp @@ -0,0 +1,75 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "fatfury2_cart.h" + + +//------------------------------------------------- +// neogeo_fatfury2_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_FATFURY2_CART = &device_creator<neogeo_fatfury2_cart>; + + +neogeo_fatfury2_cart::neogeo_fatfury2_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart"), + m_fatfury2_prot(*this, "fatfury2_prot") +{ +} + +neogeo_fatfury2_cart::neogeo_fatfury2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_FATFURY2_CART, "NEOGEO Fatal Fury 2 Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart"), + m_fatfury2_prot(*this, "fatfury2_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_fatfury2_cart::device_start() +{ +} + +void neogeo_fatfury2_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_fatfury2_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( fatfury2_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_FATFURY2_PROT_ADD("fatfury2_prot") + +MACHINE_CONFIG_END + +machine_config_constructor neogeo_fatfury2_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( fatfury2_cart ); +} + +void neogeo_fatfury2_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_fatfury2_prot->fatfury2_install_protection(maincpu, m_banked_cart); +} diff --git a/docs/release/src/hbmame/bus/neogeo/fatfury2_cart.h b/docs/release/src/hbmame/bus/neogeo/fatfury2_cart.h new file mode 100644 index 00000000000..4d4f91a72a1 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/fatfury2_cart.h @@ -0,0 +1,41 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_FATFURY2_CART_H +#define __NEOGEO_FATFURY2_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "fatfury2_prot.h" + +// ======================> neogeo_fatfury2_cart + +class neogeo_fatfury2_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_fatfury2_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_fatfury2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<fatfury2_prot_device> m_fatfury2_prot; + +}; + + + +// device type definition +extern const device_type NEOGEO_FATFURY2_CART; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/fatfury2_prot.cpp b/docs/release/src/hbmame/bus/neogeo/fatfury2_prot.cpp new file mode 100644 index 00000000000..b2560ad4f62 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/fatfury2_prot.cpp @@ -0,0 +1,112 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#include "emu.h" +#include "fatfury2_prot.h" + + + +extern const device_type FATFURY2_PROT = &device_creator<fatfury2_prot_device>; + + +fatfury2_prot_device::fatfury2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, FATFURY2_PROT, "NeoGeo Protection (Fatal Fury 2)", tag, owner, clock, "fatfury2_prot", __FILE__), + m_bankdev(nullptr), + m_fatfury2_prot_data(0) +{ +} + + +void fatfury2_prot_device::device_start() +{ + save_item(NAME(m_fatfury2_prot_data)); +} + +void fatfury2_prot_device::device_reset() +{ +} + + + +/************************ Fatal Fury 2 *************************/ + +READ16_MEMBER( fatfury2_prot_device::fatfury2_protection_16_r ) +{ + UINT16 res = m_fatfury2_prot_data >> 24; + + switch (offset) + { + case 0x55550/2: + case 0xffff0/2: + case 0x00000/2: + case 0xff000/2: + case 0x36000/2: + case 0x36008/2: + return res; + + case 0x36004/2: + case 0x3600c/2: + return ((res & 0xf0) >> 4) | ((res & 0x0f) << 4); + + default: + logerror("unknown protection read at pc %06x, offset %08x\n", space.device().safe_pc(), offset << 1); + return 0; + } +} + + +WRITE16_MEMBER( fatfury2_prot_device::fatfury2_protection_16_w ) +{ + switch (offset) + { + case 0x11112/2: /* data == 0x1111; expects 0xff000000 back */ + m_fatfury2_prot_data = 0xff000000; + break; + + case 0x33332/2: /* data == 0x3333; expects 0x0000ffff back */ + m_fatfury2_prot_data = 0x0000ffff; + break; + + case 0x44442/2: /* data == 0x4444; expects 0x00ff0000 back */ + m_fatfury2_prot_data = 0x00ff0000; + break; + + case 0x55552/2: /* data == 0x5555; read back from 55550, ffff0, 00000, ff000 */ + m_fatfury2_prot_data = 0xff00ff00; + break; + + case 0x56782/2: /* data == 0x1234; read back from 36000 *or* 36004 */ + m_fatfury2_prot_data = 0xf05a3601; + break; + + case 0x42812/2: /* data == 0x1824; read back from 36008 *or* 3600c */ + m_fatfury2_prot_data = 0x81422418; + break; + + case 0x55550/2: + case 0xffff0/2: + case 0xff000/2: + case 0x36000/2: + case 0x36004/2: + case 0x36008/2: + case 0x3600c/2: + m_fatfury2_prot_data <<= 8; + break; + + default: + logerror("unknown protection write at pc %06x, offset %08x, data %02x\n", space.device().safe_pc(), offset, data); + break; + } +} + + +void fatfury2_prot_device::fatfury2_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + /* the protection involves reading and writing addresses in the */ + /* 0x2xxxxx range. There are several checks all around the code. */ + maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200000, 0x2fffff, read16_delegate(FUNC(fatfury2_prot_device::fatfury2_protection_16_r),this), write16_delegate(FUNC(fatfury2_prot_device::fatfury2_protection_16_w),this)); + m_bankdev = bankdev; + + m_fatfury2_prot_data = 0; + +} diff --git a/docs/release/src/hbmame/bus/neogeo/fatfury2_prot.h b/docs/release/src/hbmame/bus/neogeo/fatfury2_prot.h new file mode 100644 index 00000000000..17a31586ed4 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/fatfury2_prot.h @@ -0,0 +1,36 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#pragma once + +#ifndef __FATFURY2_PROT__ +#define __FATFURY2_PROT__ + +#include "banked_cart.h" + +extern const device_type FATFURY2_PROT; + +#define MCFG_FATFURY2_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, FATFURY2_PROT, 0) + + +class fatfury2_prot_device : public device_t +{ +public: + // construction/destruction + fatfury2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + DECLARE_READ16_MEMBER( fatfury2_protection_16_r ); + DECLARE_WRITE16_MEMBER( fatfury2_protection_16_w ); + void fatfury2_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + + + neogeo_banked_cart_device* m_bankdev; + UINT32 m_fatfury2_prot_data; + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/kof2002_cart.cpp b/docs/release/src/hbmame/bus/neogeo/kof2002_cart.cpp new file mode 100644 index 00000000000..9726bd34b4b --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof2002_cart.cpp @@ -0,0 +1,157 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "kof2002_cart.h" + + +//------------------------------------------------- +// neogeo_kof2002_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_KOF2002_CART = &device_creator<neogeo_kof2002_cart>; + + +neogeo_kof2002_cart::neogeo_kof2002_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot"), + m_kof2002_prot(*this, "kof2002_prot") +{ +} + +neogeo_kof2002_cart::neogeo_kof2002_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_KOF2002_CART, "NEOGEO KOF2002 Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot"), + m_kof2002_prot(*this, "kof2002_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_kof2002_cart::device_start() +{ +} + +void neogeo_kof2002_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_kof2002_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( kof2002_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_CMC_PROT_ADD("cmc_prot") + MCFG_PCM2_PROT_ADD("pcm2_prot") + MCFG_KOF2002_PROT_ADD("kof2002_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_kof2002_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( kof2002_cart ); +} + + + +/* Individual cartridge types (mirror DRIVER_INIT functionality) */ + +/************************************************* + KOF2002 +**************************************************/ + +const device_type NEOGEO_KOF2002_KOF2002_CART = &device_creator<neogeo_kof2002_kof2002_cart>; + +neogeo_kof2002_kof2002_cart::neogeo_kof2002_kof2002_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_kof2002_cart(mconfig, NEOGEO_KOF2002_KOF2002_CART, "NEOGEO Kof2002-type kof2002 Cart", tag, owner, clock, "k2k_k2k_cart", __FILE__) {} + +void neogeo_kof2002_kof2002_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2002_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0); + +} + +const device_type NEOGEO_KOF2002_KF2K2PLS_CART = &device_creator<neogeo_kof2002_kf2k2pls_cart>; + +neogeo_kof2002_kf2k2pls_cart::neogeo_kof2002_kf2k2pls_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_kof2002_cart(mconfig, NEOGEO_KOF2002_KF2K2PLS_CART, "NEOGEO Kof2002-type kof2002plus Cart", tag, owner, clock, "k2k_k2kpls_cart", __FILE__) {} + +void neogeo_kof2002_kf2k2pls_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof2002_prot->kof2002_decrypt_68k(cpuregion, cpuregion_size); + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2002_GFX_KEY); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 0); +} + + +/************************************************* + MATRIM +**************************************************/ + +const device_type NEOGEO_KOF2002_MATRIM_CART = &device_creator<neogeo_kof2002_matrim_cart>; + +neogeo_kof2002_matrim_cart::neogeo_kof2002_matrim_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_kof2002_cart(mconfig, NEOGEO_KOF2002_MATRIM_CART, "NEOGEO Kof2002-type matrim Cart", tag, owner, clock, "k2k_matrim_cart", __FILE__) {} + +void neogeo_kof2002_matrim_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof2002_prot->matrim_decrypt_68k(cpuregion, cpuregion_size); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MATRIM_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 1); + +} + +/************************************************* + SAMSHO5 +**************************************************/ + +const device_type NEOGEO_KOF2002_SAMSHO5_CART = &device_creator<neogeo_kof2002_samsho5_cart>; + +neogeo_kof2002_samsho5_cart::neogeo_kof2002_samsho5_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_kof2002_cart(mconfig, NEOGEO_KOF2002_SAMSHO5_CART, "NEOGEO Kof2002-type Samsho5 Cart", tag, owner, clock, "k2k_ss5_cart", __FILE__) {} + +void neogeo_kof2002_samsho5_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof2002_prot->samsho5_decrypt_68k(cpuregion, cpuregion_size); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, SAMSHO5_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 4); +} + +/************************************************* + SAMSHO5SP +**************************************************/ + +const device_type NEOGEO_KOF2002_SAMSHO5SP_CART = &device_creator<neogeo_kof2002_samsho5sp_cart>; + +neogeo_kof2002_samsho5sp_cart::neogeo_kof2002_samsho5sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_kof2002_cart(mconfig, NEOGEO_KOF2002_SAMSHO5SP_CART, "NEOGEO Kof2002-type Samsho5sp Cart", tag, owner, clock, "k2k_ss5s_cart", __FILE__) {} + +void neogeo_kof2002_samsho5sp_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof2002_prot->samsh5sp_decrypt_68k(cpuregion, cpuregion_size); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, SAMSHO5SP_GFX_KEY); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 6); +} diff --git a/docs/release/src/hbmame/bus/neogeo/kof2002_cart.h b/docs/release/src/hbmame/bus/neogeo/kof2002_cart.h new file mode 100644 index 00000000000..f8c87314588 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof2002_cart.h @@ -0,0 +1,111 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_KOF2002_CART_H +#define __NEOGEO_KOF2002_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "pcm2_prot.h" +#include "cmc_prot.h" +#include "kof2002_prot.h" + +// ======================> neogeo_kof2002_cart + +class neogeo_kof2002_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_kof2002_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_kof2002_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override { m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); } + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {} + virtual int get_fixed_bank_type(void) override { return 0; } + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<cmc_prot_device> m_cmc_prot; + required_device<pcm2_prot_device> m_pcm2_prot; + required_device<kof2002_prot_device> m_kof2002_prot; + +}; + + + +// device type definition +extern const device_type NEOGEO_KOF2002_CART; + + +/************************************************* + KOF2002 +**************************************************/ + +class neogeo_kof2002_kof2002_cart : public neogeo_kof2002_cart +{ +public: + neogeo_kof2002_kof2002_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_KOF2002_KOF2002_CART; + +class neogeo_kof2002_kf2k2pls_cart : public neogeo_kof2002_cart +{ +public: + neogeo_kof2002_kf2k2pls_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_KOF2002_KF2K2PLS_CART; + + + +/************************************************* + MATRIM +**************************************************/ + +class neogeo_kof2002_matrim_cart : public neogeo_kof2002_cart +{ +public: + neogeo_kof2002_matrim_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 2; } +}; +extern const device_type NEOGEO_KOF2002_MATRIM_CART; + +/************************************************* + SAMSHO5 +**************************************************/ + +class neogeo_kof2002_samsho5_cart : public neogeo_kof2002_cart +{ +public: + neogeo_kof2002_samsho5_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_KOF2002_SAMSHO5_CART; + +/************************************************* + SAMSHO5SP +**************************************************/ + +class neogeo_kof2002_samsho5sp_cart : public neogeo_kof2002_cart +{ +public: + neogeo_kof2002_samsho5sp_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_KOF2002_SAMSHO5SP_CART; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/kof2002_prot.cpp b/docs/release/src/hbmame/bus/neogeo/kof2002_prot.cpp new file mode 100644 index 00000000000..f234602a0c2 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof2002_prot.cpp @@ -0,0 +1,83 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#include "emu.h" +#include "kof2002_prot.h" + + + +extern const device_type KOF2002_PROT = &device_creator<kof2002_prot_device>; + + +kof2002_prot_device::kof2002_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, KOF2002_PROT, "NeoGeo Protection (KOF2002)", tag, owner, clock, "kof2002_prot", __FILE__) +{ +} + + +void kof2002_prot_device::device_start() +{ +} + +void kof2002_prot_device::device_reset() +{ +} + + +/* kof2002, matrim, samsho5, samsh5sp have some simple block swapping */ +void kof2002_prot_device::kof2002_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size) +{ + int i; + static const int sec[]={0x100000,0x280000,0x300000,0x180000,0x000000,0x380000,0x200000,0x080000}; + UINT8 *src = cpurom+0x100000; + dynamic_buffer dst(0x400000); + memcpy( &dst[0], src, 0x400000 ); + for( i=0; i<8; ++i ) + { + memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 ); + } +} + + +void kof2002_prot_device::matrim_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size) +{ + int i; + static const int sec[]={0x100000,0x280000,0x300000,0x180000,0x000000,0x380000,0x200000,0x080000}; + UINT8 *src = cpurom+0x100000; + dynamic_buffer dst(0x400000); + memcpy( &dst[0], src, 0x400000); + for( i=0; i<8; ++i ) + { + memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 ); + } +} + + +void kof2002_prot_device::samsho5_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size) +{ + int i; + static const int sec[]={0x000000,0x080000,0x700000,0x680000,0x500000,0x180000,0x200000,0x480000,0x300000,0x780000,0x600000,0x280000,0x100000,0x580000,0x400000,0x380000}; + UINT8 *src = cpurom; + dynamic_buffer dst(0x800000); + + memcpy( &dst[0], src, 0x800000 ); + for( i=0; i<16; ++i ) + { + memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 ); + } +} + + +void kof2002_prot_device::samsh5sp_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size) +{ + int i; + static const int sec[]={0x000000,0x080000,0x500000,0x480000,0x600000,0x580000,0x700000,0x280000,0x100000,0x680000,0x400000,0x780000,0x200000,0x380000,0x300000,0x180000}; + UINT8 *src = cpurom; + dynamic_buffer dst(0x800000); + + memcpy( &dst[0], src, 0x800000 ); + for( i=0; i<16; ++i ) + { + memcpy( src+i*0x80000, &dst[sec[i]], 0x80000 ); + } +} diff --git a/docs/release/src/hbmame/bus/neogeo/kof2002_prot.h b/docs/release/src/hbmame/bus/neogeo/kof2002_prot.h new file mode 100644 index 00000000000..8ed4873b1be --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof2002_prot.h @@ -0,0 +1,32 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __KOF2002_PROT__ +#define __KOF2002_PROT__ + +extern const device_type KOF2002_PROT; + +#define MCFG_KOF2002_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, KOF2002_PROT, 0) + + +class kof2002_prot_device : public device_t +{ +public: + // construction/destruction + kof2002_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + void kof2002_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size); + void matrim_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size); + void samsho5_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size); + void samsh5sp_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size); + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/kof98_cart.cpp b/docs/release/src/hbmame/bus/neogeo/kof98_cart.cpp new file mode 100644 index 00000000000..6314522e4ff --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof98_cart.cpp @@ -0,0 +1,80 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "kof98_cart.h" + + +//------------------------------------------------- +// neogeo_kof98_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_KOF98_CART = &device_creator<neogeo_kof98_cart>; + + +neogeo_kof98_cart::neogeo_kof98_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart"), + m_kof98_prot(*this, "kof98_prot") +{ +} + +neogeo_kof98_cart::neogeo_kof98_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_KOF98_CART, "NEOGEO KOF98 Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart"), + m_kof98_prot(*this, "kof98_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_kof98_cart::device_start() +{ +} + +void neogeo_kof98_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_kof98_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( kof98_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_KOF98_PROT_ADD("kof98_prot") + +MACHINE_CONFIG_END + +machine_config_constructor neogeo_kof98_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( kof98_cart ); +} + +void neogeo_kof98_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_kof98_prot->kof98_decrypt_68k(cpuregion, cpuregion_size); +} + +void neogeo_kof98_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_kof98_prot->install_kof98_protection(maincpu); +} diff --git a/docs/release/src/hbmame/bus/neogeo/kof98_cart.h b/docs/release/src/hbmame/bus/neogeo/kof98_cart.h new file mode 100644 index 00000000000..6bf3a715cde --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof98_cart.h @@ -0,0 +1,41 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_KOF98_CART_H +#define __NEOGEO_KOF98_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "kof98_prot.h" + +// ======================> neogeo_kof98_cart + +class neogeo_kof98_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_kof98_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_kof98_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<kof98_prot_device> m_kof98_prot; + +}; + + + +// device type definition +extern const device_type NEOGEO_KOF98_CART; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/kof98_prot.cpp b/docs/release/src/hbmame/bus/neogeo/kof98_prot.cpp new file mode 100644 index 00000000000..6fdfa5001f3 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof98_prot.cpp @@ -0,0 +1,142 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#include "emu.h" +#include "kof98_prot.h" + + + +extern const device_type KOF98_PROT = &device_creator<kof98_prot_device>; + + +kof98_prot_device::kof98_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, KOF98_PROT, "NeoGeo Protection (KOF98)", tag, owner, clock, "kof98_prot", __FILE__), + kof98_prot_state(0) +{ +} + + +void kof98_prot_device::device_start() +{ +} + +void kof98_prot_device::device_reset() +{ + kof98_prot_state = 0; +} + + +/* Kof98 uses an early encryption, quite different from the others */ +void kof98_prot_device::kof98_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size) +{ + UINT8 *src = cpurom; + dynamic_buffer dst(0x200000); + int i, j, k; + static const UINT32 sec[]={0x000000,0x100000,0x000004,0x100004,0x10000a,0x00000a,0x10000e,0x00000e}; + static const UINT32 pos[]={0x000,0x004,0x00a,0x00e}; + + memcpy( &dst[0], src, 0x200000); + for( i=0x800; i<0x100000; i+=0x200 ) + { + for( j=0; j<0x100; j+=0x10 ) + { + for( k=0; k<16; k+=2) + { + memcpy( &src[i+j+k], &dst[ i+j+sec[k/2]+0x100 ], 2 ); + memcpy( &src[i+j+k+0x100], &dst[ i+j+sec[k/2] ], 2 ); + } + if( i >= 0x080000 && i < 0x0c0000) + { + for( k=0; k<4; k++ ) + { + memcpy( &src[i+j+pos[k]], &dst[i+j+pos[k]], 2 ); + memcpy( &src[i+j+pos[k]+0x100], &dst[i+j+pos[k]+0x100], 2 ); + } + } + else if( i >= 0x0c0000 ) + { + for( k=0; k<4; k++ ) + { + memcpy( &src[i+j+pos[k]], &dst[i+j+pos[k]+0x100], 2 ); + memcpy( &src[i+j+pos[k]+0x100], &dst[i+j+pos[k]], 2 ); + } + } + } + memcpy( &src[i+0x000000], &dst[i+0x000000], 2 ); + memcpy( &src[i+0x000002], &dst[i+0x100000], 2 ); + memcpy( &src[i+0x000100], &dst[i+0x000100], 2 ); + memcpy( &src[i+0x000102], &dst[i+0x100100], 2 ); + } + memmove( &src[0x100000], &src[0x200000], 0x400000 ); + + UINT16* mem16 = (UINT16*)cpurom; + m_default_rom[0] = mem16[0x100 / 2]; + m_default_rom[1] = mem16[0x102 / 2]; + + +} + + +/************************ King of Fighters 98******************* + The encrypted set has a rom overlay feature, checked at + various points in the game. + Boards used: NEO-MVS PROGSF1 (1998.6.17) / NEO-MVS PROGSF1E (1998.6.18) + The boards have an ALTERA chip (EPM7128SQC100-15) which is tied to 242-P1 +***************************************************************/ + +READ16_MEMBER(kof98_prot_device::kof98_prot_r) +{ + if (kof98_prot_state == 1) + { + if (!offset) + return 0x00c2; + else + return 0x00fd; + } + if (kof98_prot_state == 2) + { + if (!offset) + return 0x4e45; + else + return 0x4f2d; + } + + if (!offset) + return m_default_rom[0]; + else + return m_default_rom[1]; + + // never executed + //return 0xffff; +} + +WRITE16_MEMBER( kof98_prot_device::kof98_prot_w ) +{ + /* info from razoola */ + switch (data) + { + case 0x0090: + logerror ("%06x kof98 - protection 0x0090x\n", space.device().safe_pc()); + kof98_prot_state = 1; + break; + + case 0x00f0: + logerror ("%06x kof98 - protection 0x00f0x\n", space.device().safe_pc()); + kof98_prot_state = 2; + break; + + default: // 00aa is written, but not needed? + logerror ("%06x kof98 - unknown protection write %04x\n", space.device().safe_pc(), data); + break; + } +} + + +void kof98_prot_device::install_kof98_protection(cpu_device* maincpu) +{ + /* when 0x20aaaa contains 0x0090 (word) then 0x100 (normally the neogeo header) should return 0x00c200fd worked out using real hw */ + maincpu->space(AS_PROGRAM).install_read_handler(0x00100, 0x00103, read16_delegate(FUNC(kof98_prot_device::kof98_prot_r),this)); + + maincpu->space(AS_PROGRAM).install_write_handler(0x20aaaa, 0x20aaab, write16_delegate(FUNC(kof98_prot_device::kof98_prot_w),this)); +} diff --git a/docs/release/src/hbmame/bus/neogeo/kof98_prot.h b/docs/release/src/hbmame/bus/neogeo/kof98_prot.h new file mode 100644 index 00000000000..f824a8a1206 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kof98_prot.h @@ -0,0 +1,34 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __KOF98_PROT__ +#define __KOF98_PROT__ + +extern const device_type KOF98_PROT; + +#define MCFG_KOF98_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, KOF98_PROT, 0) + + +class kof98_prot_device : public device_t +{ +public: + // construction/destruction + kof98_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + void kof98_decrypt_68k(UINT8* cpurom, UINT32 cpurom_size); + void install_kof98_protection(cpu_device* maincpu); + DECLARE_WRITE16_MEMBER(kof98_prot_w); + DECLARE_READ16_MEMBER(kof98_prot_r); + int kof98_prot_state; + UINT16 m_default_rom[2]; + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/kog_prot.cpp b/docs/release/src/hbmame/bus/neogeo/kog_prot.cpp new file mode 100644 index 00000000000..d3caaff3e15 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kog_prot.cpp @@ -0,0 +1,118 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#include "emu.h" +#include "kog_prot.h" + + + +extern const device_type KOG_PROT = &device_creator<kog_prot_device>; + + +kog_prot_device::kog_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, KOG_PROT, "NeoGeo Protection (King of Gladiator)", tag, owner, clock, "kog_prot", __FILE__), + m_jumper(*this, "JUMPER") +{ +} + + +void kog_prot_device::device_start() +{ +} + +void kog_prot_device::device_reset() +{ +} + +READ16_MEMBER(kog_prot_device::read_jumper) +{ + return ioport("JUMPER")->read(); +} + +void kog_prot_device::kog_install_protection(cpu_device* maincpu) +{ + /* overlay cartridge ROM */ + maincpu->space(AS_PROGRAM).install_read_handler(0x0ffffe, 0x0fffff, read16_delegate(FUNC(kog_prot_device::read_jumper), this)); +} + + +/* The King of Gladiator (The King of Fighters '97 bootleg) */ + + +/* The protection patching here may be incomplete + Thanks to Razoola for the info */ + +void kog_prot_device::kog_px_decrypt(UINT8* cpurom, UINT32 cpurom_size) +{ + /* the protection chip does some *very* strange things to the rom */ + UINT8 *src = cpurom; + dynamic_buffer dst( 0x600000 ); + UINT16 *rom = (UINT16 *)cpurom; + int i; + static const int sec[] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD }; + + for (i = 0; i < 8; i++){ + memcpy (&dst[i * 0x20000], src + sec[i] * 0x20000, 0x20000); + } + + memcpy (&dst[0x0007A6], src + 0x0407A6, 0x000006); + memcpy (&dst[0x0007C6], src + 0x0407C6, 0x000006); + memcpy (&dst[0x0007E6], src + 0x0407E6, 0x000006); + memcpy (&dst[0x090000], src + 0x040000, 0x004000); + memcpy (&dst[0x100000], src + 0x200000, 0x400000); + memcpy (src, &dst[0], 0x600000); + + for (i = 0x90000/2; i < 0x94000/2; i++){ + if (((rom[i]&0xFFBF) == 0x4EB9 || rom[i] == 0x43F9) && !rom[i + 1]) + rom[i + 1] = 0x0009; + + if (rom[i] == 0x4EB8) + rom[i] = 0x6100; + } + + rom[0x007A8/2] = 0x0009; + rom[0x007C8/2] = 0x0009; + rom[0x007E8/2] = 0x0009; + rom[0x93408/2] = 0xF168; + rom[0x9340C/2] = 0xFB7A; + rom[0x924AC/2] = 0x0009; + rom[0x9251C/2] = 0x0009; + rom[0x93966/2] = 0xFFDA; + rom[0x93974/2] = 0xFFCC; + rom[0x93982/2] = 0xFFBE; + rom[0x93990/2] = 0xFFB0; + rom[0x9399E/2] = 0xFFA2; + rom[0x939AC/2] = 0xFF94; + rom[0x939BA/2] = 0xFF86; + rom[0x939C8/2] = 0xFF78; + rom[0x939D4/2] = 0xFA5C; + rom[0x939E0/2] = 0xFA50; + rom[0x939EC/2] = 0xFA44; + rom[0x939F8/2] = 0xFA38; + rom[0x93A04/2] = 0xFA2C; + rom[0x93A10/2] = 0xFA20; + rom[0x93A1C/2] = 0xFA14; + rom[0x93A28/2] = 0xFA08; + rom[0x93A34/2] = 0xF9FC; + rom[0x93A40/2] = 0xF9F0; + rom[0x93A4C/2] = 0xFD14; + rom[0x93A58/2] = 0xFD08; + rom[0x93A66/2] = 0xF9CA; + rom[0x93A72/2] = 0xF9BE; + +} + + +static INPUT_PORTS_START( kog ) + /* a jumper on the pcb overlays a ROM address, very strange but that's how it works. */ + PORT_START("JUMPER") + PORT_DIPNAME( 0x0001, 0x0001, "Title Language" ) PORT_DIPLOCATION("CART-JUMPER:1") + PORT_DIPSETTING( 0x0001, DEF_STR( English ) ) + PORT_DIPSETTING( 0x0000, "Non-English" ) + PORT_BIT( 0x00fe, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +ioport_constructor kog_prot_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( kog ); +} diff --git a/docs/release/src/hbmame/bus/neogeo/kog_prot.h b/docs/release/src/hbmame/bus/neogeo/kog_prot.h new file mode 100644 index 00000000000..5e19053c3d4 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/kog_prot.h @@ -0,0 +1,34 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __KOG_PROT__ +#define __KOG_PROT__ + +extern const device_type KOG_PROT; + +#define MCFG_KOG_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, KOG_PROT, 0) + + +class kog_prot_device : public device_t +{ +public: + // construction/destruction + kog_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + void kog_install_protection(cpu_device* maincpu); + void kog_px_decrypt(UINT8* cpurom, UINT32 cpurom_size); + READ16_MEMBER(read_jumper); + + required_ioport m_jumper; + +protected: + virtual void device_start() override; + virtual void device_reset() override; + virtual ioport_constructor device_input_ports() const override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/mslugx_cart.cpp b/docs/release/src/hbmame/bus/neogeo/mslugx_cart.cpp new file mode 100644 index 00000000000..d6bd6388864 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/mslugx_cart.cpp @@ -0,0 +1,75 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "mslugx_cart.h" + + +//------------------------------------------------- +// neogeo_mslugx_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_MSLUGX_CART = &device_creator<neogeo_mslugx_cart>; + + +neogeo_mslugx_cart::neogeo_mslugx_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart"), + m_mslugx_prot(*this, "mslugx_prot") +{ +} + +neogeo_mslugx_cart::neogeo_mslugx_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_MSLUGX_CART, "NEOGEO Metal Slug X Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart"), + m_mslugx_prot(*this, "mslugx_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_mslugx_cart::device_start() +{ +} + +void neogeo_mslugx_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_mslugx_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( mslugx_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_MSLUGX_PROT_ADD("mslugx_prot") + +MACHINE_CONFIG_END + +machine_config_constructor neogeo_mslugx_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( mslugx_cart ); +} + +void neogeo_mslugx_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_mslugx_prot->mslugx_install_protection(maincpu); +} diff --git a/docs/release/src/hbmame/bus/neogeo/mslugx_cart.h b/docs/release/src/hbmame/bus/neogeo/mslugx_cart.h new file mode 100644 index 00000000000..2e58655f3e2 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/mslugx_cart.h @@ -0,0 +1,41 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_MSLUGX_CART_H +#define __NEOGEO_MSLUGX_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "mslugx_prot.h" + +// ======================> neogeo_mslugx_cart + +class neogeo_mslugx_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_mslugx_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_mslugx_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<mslugx_prot_device> m_mslugx_prot; + +}; + + + +// device type definition +extern const device_type NEOGEO_MSLUGX_CART; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/mslugx_prot.cpp b/docs/release/src/hbmame/bus/neogeo/mslugx_prot.cpp new file mode 100644 index 00000000000..783ef2db839 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/mslugx_prot.cpp @@ -0,0 +1,97 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#include "emu.h" +#include "mslugx_prot.h" + + + +extern const device_type MSLUGX_PROT = &device_creator<mslugx_prot_device>; + + +mslugx_prot_device::mslugx_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, MSLUGX_PROT, "NeoGeo Protection (Metal Slug X)", tag, owner, clock, "mslugx_prot", __FILE__), + m_mslugx_counter(0), + m_mslugx_command(0) +{ +} + + +void mslugx_prot_device::device_start() +{ + save_item(NAME(m_mslugx_command)); + save_item(NAME(m_mslugx_counter)); +} + +void mslugx_prot_device::device_reset() +{ +} + + + + +/************************ Metal Slug X ************************* + Board used: NEO-MVS PROGEOP (1999.2.2) + The board has an ALTERA chip (EPM7128SQC100-15) which is tied to 250-P1 + Also found is a QFP144 chip labeled with 0103 - function unknown +***************************************************************/ + +WRITE16_MEMBER( mslugx_prot_device::mslugx_protection_16_w ) +{ + switch (offset) + { + case 0x0/2: // start new read? + m_mslugx_command = 0; + break; + + case 0x2/2: // command? These are pulsed with data and then 0 + case 0x4/2: + m_mslugx_command |= data; + break; + + case 0x6/2: // finished? + break; + + case 0xa/2: // init? + m_mslugx_counter = 0; + m_mslugx_command = 0; + break; + + default: + logerror("unknown protection write at pc %06x, offset %08x, data %02x\n", space.device().safe_pc(), offset << 1, data); + break; + } +} + + +READ16_MEMBER( mslugx_prot_device::mslugx_protection_16_r ) +{ + UINT16 res = 0; + + switch (m_mslugx_command) + { + case 0x0001: { // $3bdc(?) and $3c30 (Register D7) + res = (space.read_byte(0xdedd2 + ((m_mslugx_counter >> 3) & 0xfff)) >> (~m_mslugx_counter & 0x07)) & 1; + m_mslugx_counter++; + } + break; + + case 0x0fff: { // All other accesses (Register D2) + INT32 select = space.read_word(0x10f00a) - 1; // How should this be calculated? + res = (space.read_byte(0xdedd2 + ((select >> 3) & 0x0fff)) >> (~select & 0x07)) & 1; + } + break; + + default: + logerror("unknown protection read at pc %06x, offset %08x\n", space.device().safe_pc(), offset << 1); + break; + } + + return res; +} + + +void mslugx_prot_device::mslugx_install_protection(cpu_device* maincpu) +{ + maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fffe0, 0x2fffef, read16_delegate(FUNC(mslugx_prot_device::mslugx_protection_16_r),this), write16_delegate(FUNC(mslugx_prot_device::mslugx_protection_16_w),this)); + +} diff --git a/docs/release/src/hbmame/bus/neogeo/mslugx_prot.h b/docs/release/src/hbmame/bus/neogeo/mslugx_prot.h new file mode 100644 index 00000000000..fb1f2261957 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/mslugx_prot.h @@ -0,0 +1,35 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __MSLUGX_PROT__ +#define __MSLUGX_PROT__ + +extern const device_type MSLUGX_PROT; + +#define MCFG_MSLUGX_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, MSLUGX_PROT, 0) + + +class mslugx_prot_device : public device_t +{ +public: + // construction/destruction + mslugx_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + + DECLARE_WRITE16_MEMBER( mslugx_protection_16_w ); + DECLARE_READ16_MEMBER( mslugx_protection_16_r ); + void mslugx_install_protection(cpu_device* maincpu); + + UINT16 m_mslugx_counter; + UINT16 m_mslugx_command; + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_carts.cpp b/docs/release/src/hbmame/bus/neogeo/neogeo_carts.cpp new file mode 100644 index 00000000000..8f9d62037b4 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_carts.cpp @@ -0,0 +1,97 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + /********************************************************************** + +**********************************************************************/ + +#include "neogeo_carts.h" + +SLOT_INTERFACE_START(neogeo_cart) + /* Standard cart with banking */ + SLOT_INTERFACE_INTERNAL("rom", NEOGEO_ROM) + + /* Custom MslugX protection*/ + SLOT_INTERFACE_INTERNAL("rom_mslugx", NEOGEO_MSLUGX_CART) + /* Custom Fatal Fury 2 protection */ + SLOT_INTERFACE_INTERNAL("rom_fatfur2", NEOGEO_FATFURY2_CART) + /* Custom KOF98 protection */ + SLOT_INTERFACE_INTERNAL("rom_kof98", NEOGEO_KOF98_CART) + + /* These use SMA for prg + CMC42 for gfx */ + SLOT_INTERFACE_INTERNAL("rom_sma", NEOGEO_SMA_CART) + SLOT_INTERFACE_INTERNAL("rom_sma_kof99", NEOGEO_SMA_KOF99_CART) + SLOT_INTERFACE_INTERNAL("rom_sma_garou", NEOGEO_SMA_GAROU_CART) + SLOT_INTERFACE_INTERNAL("rom_sma_garouh", NEOGEO_SMA_GAROUH_CART) + SLOT_INTERFACE_INTERNAL("rom_sma_mslug3", NEOGEO_SMA_MSLUG3_CART) + /* These use SMA for prg + CMC50 for gfx (& audiocpu) */ + SLOT_INTERFACE_INTERNAL("rom_sma_kof2000", NEOGEO_SMA_KOF2000_CART) + /* only CMC42 for gfx */ + SLOT_INTERFACE_INTERNAL("rom_cmc_zupapa", NEOGEO_CMC_ZUPAPA_CART) + SLOT_INTERFACE_INTERNAL("rom_cmc_mslug3h", NEOGEO_CMC_MSLUG3H_CART) + SLOT_INTERFACE_INTERNAL("rom_cmc_ganryu", NEOGEO_CMC_GANRYU_CART) + SLOT_INTERFACE_INTERNAL("rom_cmc_s1945p", NEOGEO_CMC_S1945P_CART) + SLOT_INTERFACE_INTERNAL("r_cmc_preisle2", NEOGEO_CMC_PREISLE2_CART) + SLOT_INTERFACE_INTERNAL("r_cmc_bangbead", NEOGEO_CMC_BANGBEAD_CART) + SLOT_INTERFACE_INTERNAL("rom_cmc_nitd", NEOGEO_CMC_NITD_CART) + SLOT_INTERFACE_INTERNAL("r_cmc_sengoku3", NEOGEO_CMC_SENGOKU3_CART) + SLOT_INTERFACE_INTERNAL("r_cmc_kof99k", NEOGEO_CMC_KOF99K_CART) + /* only CMC50 for gfx (& audiocpu) */ + SLOT_INTERFACE_INTERNAL("r_cmc_kof2001", NEOGEO_CMC_KOF2001_CART) + SLOT_INTERFACE_INTERNAL("r_cmc_kof2000n", NEOGEO_CMC_KOF2000N_CART) + /* CMC50 for gfx (& audiocpu) + NEOPCM2 for YM scramble */ + SLOT_INTERFACE_INTERNAL("r_pc2_mslug4", NEOGEO_PCM2_MSLUG4_CART) + SLOT_INTERFACE_INTERNAL("r_pc2_rotd", NEOGEO_PCM2_ROTD_CART) + SLOT_INTERFACE_INTERNAL("r_pc2_pnyaa", NEOGEO_PCM2_PNYAA_CART) + SLOT_INTERFACE_INTERNAL("r_ms4plus", NEOGEO_PCM2_MS4PLUS_CART) // regular encryption but external S1 rom + + /* CMC50 for gfx (& audiocpu) + NEOPCM2 for YM scramble + additonal prg scramble */ + SLOT_INTERFACE_INTERNAL("r_k2_kof2002", NEOGEO_KOF2002_KOF2002_CART) + SLOT_INTERFACE_INTERNAL("r_k2_matrim", NEOGEO_KOF2002_MATRIM_CART) + SLOT_INTERFACE_INTERNAL("r_k2_samsh5", NEOGEO_KOF2002_SAMSHO5_CART) + SLOT_INTERFACE_INTERNAL("r_k2_sams5s", NEOGEO_KOF2002_SAMSHO5SP_CART) + SLOT_INTERFACE_INTERNAL("r_kf2k2pls", NEOGEO_KOF2002_KF2K2PLS_CART) // regular encryption but external S1 rom + + /* CMC50 for gfx (& audiocpu) + NEOPCM2 for YM scramble + PVC protection/encryption */ + SLOT_INTERFACE_INTERNAL("r_pv_mslug5", NEOGEO_PVC_MSLUG5_CART) + SLOT_INTERFACE_INTERNAL("r_pv_svc", NEOGEO_PVC_SVC_CART) + SLOT_INTERFACE_INTERNAL("r_pv_kf2k3", NEOGEO_PVC_KOF2003_CART) + SLOT_INTERFACE_INTERNAL("r_pv_kf2k3h", NEOGEO_PVC_KOF2003H_CART) + + /* 100% bootleg logic */ + SLOT_INTERFACE_INTERNAL("r_garoubl", NEOGEO_BOOTLEG_GAROUBL_CART) + SLOT_INTERFACE_INTERNAL("r_cthd2003", NEOGEO_BOOTLEG_CTHD2003_CART) + SLOT_INTERFACE_INTERNAL("r_cthd2003sp", NEOGEO_BOOTLEG_CT2K3SP_CART) + SLOT_INTERFACE_INTERNAL("r_cthd2003sa", NEOGEO_BOOTLEG_CT2K3SA_CART) + SLOT_INTERFACE_INTERNAL("r_kf10thep", NEOGEO_BOOTLEG_KF10THEP_CART) + SLOT_INTERFACE_INTERNAL("r_kf2k5uni", NEOGEO_BOOTLEG_KF2K5UNI_CART) + SLOT_INTERFACE_INTERNAL("r_kf2k4se", NEOGEO_BOOTLEG_KF2K4SE_CART) + SLOT_INTERFACE_INTERNAL("r_svcplus", NEOGEO_BOOTLEG_SVCPLUS_CART) + SLOT_INTERFACE_INTERNAL("r_svcplusa", NEOGEO_BOOTLEG_SVCPLUSA_CART) + SLOT_INTERFACE_INTERNAL("r_samsho5b", NEOGEO_BOOTLEG_SAMSHO5B_CART) + SLOT_INTERFACE_INTERNAL("r_kof97oro", NEOGEO_BOOTLEG_KOF97ORO_CART) // missing from softlist? + SLOT_INTERFACE_INTERNAL("r_lans2004", NEOGEO_BOOTLEG_LANS2004_CART) + SLOT_INTERFACE_INTERNAL("r_kof10th", NEOGEO_BOOTLEG_KOF10TH_CART) + SLOT_INTERFACE_INTERNAL("r_kog", NEOGEO_BOOTLEG_KOG_CART) + + /* mixed original and bootleg logic */ + SLOT_INTERFACE_INTERNAL("r_mslug3b6", NEOGEO_BOOTLEG_HYBRID_MSLUG3B6_CART) + SLOT_INTERFACE_INTERNAL("r_kof2002b", NEOGEO_BOOTLEG_HYBRID_KOF2002B_CART) + SLOT_INTERFACE_INTERNAL("r_kf2k2mp", NEOGEO_BOOTLEG_HYBRID_KF2K2MP_CART) + SLOT_INTERFACE_INTERNAL("r_kf2k2mp2", NEOGEO_BOOTLEG_HYBRID_KF2K2MP2_CART) + + SLOT_INTERFACE_INTERNAL("r_matrimbl", NEOGEO_BOOTLEG_HYBRID_MATRIMBL_CART) + SLOT_INTERFACE_INTERNAL("r_ms5plus", NEOGEO_BOOTLEG_HYBRID_MS5PLUS_CART) + SLOT_INTERFACE_INTERNAL("r_svcboot", NEOGEO_BOOTLEG_HYBRID_SVCBOOT_CART) + SLOT_INTERFACE_INTERNAL("r_svcsplus", NEOGEO_BOOTLEG_HYBRID_SVCSPLUS_CART) + + SLOT_INTERFACE_INTERNAL("r_kf2k3bl", NEOGEO_BOOTLEG_HYBRID_KF2K3BL_CART) + SLOT_INTERFACE_INTERNAL("r_kf2k3pl", NEOGEO_BOOTLEG_HYBRID_KF2K3PL_CART) + SLOT_INTERFACE_INTERNAL("r_kf2k3upl", NEOGEO_BOOTLEG_HYBRID_KF2K3UPL_CART) + + + + + + + +SLOT_INTERFACE_END diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_carts.h b/docs/release/src/hbmame/bus/neogeo/neogeo_carts.h new file mode 100644 index 00000000000..f6925b96e98 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_carts.h @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/********************************************************************** + +**********************************************************************/ + +#pragma once + +#ifndef __NEOGEO_CARTS_H__ +#define __NEOGEO_CARTS_H__ + +#include "emu.h" + +#include "rom.h" +#include "banked_cart.h" +#include "mslugx_cart.h" +#include "sma_cart.h" +#include "cmc_cart.h" +#include "pcm2_cart.h" +#include "kof2002_cart.h" +#include "pvc_cart.h" +#include "fatfury2_cart.h" +#include "kof98_cart.h" +#include "bootleg_cart.h" +#include "bootleg_hybrid_cart.h" + +// supported devices +SLOT_INTERFACE_EXTERN(neogeo_cart); + +#endif // __NEOGEO_CARTS_H__ diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_helper.cpp b/docs/release/src/hbmame/bus/neogeo/neogeo_helper.cpp new file mode 100644 index 00000000000..fdbd9ba7203 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_helper.cpp @@ -0,0 +1,66 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#include "emu.h" +#include "neogeo_helper.h" + +static UINT32 get_region_mask(UINT8* rgn, UINT32 rgn_size) +{ + UINT32 mask; + UINT32 len; + UINT32 bit; + + mask = 0xffffffff; + + len = rgn_size; + + for (bit = 0x80000000; bit != 0; bit >>= 1) + { + if ((len * 2 - 1) & bit) + break; + + mask >>= 1; + } + + return mask; +} + +UINT32 neogeohelper_optimize_sprite_data(std::vector<UINT8> &spritegfx, UINT8* region_sprites, UINT32 region_sprites_size) +{ + /* convert the sprite graphics data into a format that + allows faster blitting */ + UINT8 *src; + UINT8 *dest; + + UINT32 mask = get_region_mask(region_sprites, region_sprites_size); + + spritegfx.resize(mask + 1); + UINT32 spritegfx_address_mask = mask; + + src = region_sprites; + dest = &spritegfx[0]; + + for (unsigned i = 0; i < region_sprites_size; i += 0x80, src += 0x80) + { + for (unsigned y = 0; y < 0x10; y++) + { + for (unsigned x = 0; x < 8; x++) + { + *(dest++) = (((src[0x43 | (y << 2)] >> x) & 0x01) << 3) | + (((src[0x41 | (y << 2)] >> x) & 0x01) << 2) | + (((src[0x42 | (y << 2)] >> x) & 0x01) << 1) | + (((src[0x40 | (y << 2)] >> x) & 0x01) << 0); + } + + for (unsigned x = 0; x < 8; x++) + { + *(dest++) = (((src[0x03 | (y << 2)] >> x) & 0x01) << 3) | + (((src[0x01 | (y << 2)] >> x) & 0x01) << 2) | + (((src[0x02 | (y << 2)] >> x) & 0x01) << 1) | + (((src[0x00 | (y << 2)] >> x) & 0x01) << 0); + } + } + } + + return spritegfx_address_mask; +} diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_helper.h b/docs/release/src/hbmame/bus/neogeo/neogeo_helper.h new file mode 100644 index 00000000000..3d125f7fd62 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_helper.h @@ -0,0 +1,4 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +extern UINT32 neogeohelper_optimize_sprite_data(std::vector<UINT8> &spritegfx, UINT8* region_sprites, UINT32 region_sprites_size); diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_intf.cpp b/docs/release/src/hbmame/bus/neogeo/neogeo_intf.cpp new file mode 100644 index 00000000000..30877b11be8 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_intf.cpp @@ -0,0 +1,34 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#include "emu.h" +#include "neogeo_intf.h" + +//------------------------------------------------- +// device_neogeo_cart_interface - constructor +//------------------------------------------------- + +device_neogeo_cart_interface::device_neogeo_cart_interface(const machine_config &mconfig, device_t &device) + : device_slot_card_interface(mconfig, device), + m_sprite_gfx_address_mask(0) +/* +m_rom(nullptr), +m_fixed(nullptr), +m_sprites(nullptr), +m_sprites_optimized(nullptr), +m_audio(nullptr), +m_ym(nullptr), +m_ymdelta(nullptr), +m_audiocrypt(nullptr) +*/ +{ +} + + +//------------------------------------------------- +// ~device_neogeo_cart_interface - destructor +//------------------------------------------------- + +device_neogeo_cart_interface::~device_neogeo_cart_interface() +{ +} diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_intf.h b/docs/release/src/hbmame/bus/neogeo/neogeo_intf.h new file mode 100644 index 00000000000..54ef30ce722 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_intf.h @@ -0,0 +1,78 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#ifndef __NEOGEO_INTF_H +#define __NEOGEO_INTF_H + +// ======================> device_neogeo_cart_interface + +#define DECRYPT_ALL_PARAMS \ + UINT8* cpuregion, UINT32 cpuregion_size,UINT8* spr_region, UINT32 spr_region_size,UINT8* fix_region, UINT32 fix_region_size,UINT8* ym_region, UINT32 ym_region_size,UINT8* ymdelta_region, UINT32 ymdelta_region_size,UINT8* audiocpu_region, UINT32 audio_region_size, UINT8* audiocrypt_region, UINT32 audiocrypt_region_size + +#define ACTIVATE_CART_PARAMS \ + running_machine& machine, cpu_device* maincpu, UINT8* cpuregion, UINT32 cpuregion_size, UINT8* fixedregion, UINT32 fixedregion_size + +class device_neogeo_cart_interface : public device_slot_card_interface +{ +public: + // construction/destruction + device_neogeo_cart_interface(const machine_config &mconfig, device_t &device); + virtual ~device_neogeo_cart_interface(); + + // reading from ROM + virtual DECLARE_READ16_MEMBER(read_rom) { return 0xffff; } + virtual void activate_cart(ACTIVATE_CART_PARAMS) { }; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) { }; + virtual int get_fixed_bank_type(void) { return 0; } + + void rom_alloc(UINT32 size) { m_rom.resize(size/sizeof(UINT16)); } + UINT16* get_rom_base() { return &m_rom[0]; } + UINT32 get_rom_size() { return m_rom.size()*sizeof(UINT16); } + + void fixed_alloc(UINT32 size) { m_fixed.resize(size); } + UINT8* get_fixed_base() { return &m_fixed[0]; } + UINT32 get_fixed_size() { return m_fixed.size(); } + + void audio_alloc(UINT32 size) { m_audio.resize(size); } + UINT8* get_audio_base() { return &m_audio[0]; } + UINT32 get_audio_size() { return m_audio.size(); } + + void audiocrypt_alloc(UINT32 size) { m_audiocrypt.resize(size); } + UINT8* get_audiocrypt_base() { if (m_audiocrypt.size() == 0) return nullptr; else return &m_audiocrypt[0]; } + UINT32 get_audiocrypt_size() { return m_audiocrypt.size(); } + + void sprites_alloc(UINT32 size) { m_sprites.resize(size); } + UINT8* get_sprites_base() { return &m_sprites[0]; } + UINT32 get_sprites_size() { return m_sprites.size(); } + UINT8* get_sprites_optimized() { return &m_sprites_optimized[0]; } + UINT32 get_sprites_addrmask() { return m_sprite_gfx_address_mask; } + std::vector<UINT8>& get_sprites_optimized_arr() { return m_sprites_optimized; } + + void ym_alloc(UINT32 size) { m_ym.resize(size); } + UINT8* get_ym_base() { return &m_ym[0]; } + UINT32 get_ym_size() { return m_ym.size(); } + + void ymdelta_alloc(UINT32 size) { m_ymdelta.resize(size); } + UINT8* get_ymdelta_base() { return &m_ymdelta[0]; } + UINT32 get_ymdelta_size() { return m_ymdelta.size(); } + + std::vector<UINT16> m_rom; + std::vector<UINT8> m_fixed; + std::vector<UINT8> m_sprites; + std::vector<UINT8> m_sprites_optimized; + std::vector<UINT8> m_audio; + std::vector<UINT8> m_ym; + std::vector<UINT8> m_ymdelta; + + UINT32 m_sprite_gfx_address_mask; + + + +protected: + // internal state + std::vector<UINT8> m_audiocrypt; + + +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp new file mode 100644 index 00000000000..fac43eda050 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp @@ -0,0 +1,222 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "neogeo_slot.h" + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +const device_type NEOGEO_CART_SLOT = &device_creator<neogeo_cart_slot_device>; + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_cart_slot_device - constructor +//------------------------------------------------- +neogeo_cart_slot_device::neogeo_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) : + device_t(mconfig, NEOGEO_CART_SLOT, "NeoGeo Cartridge Slot", tag, owner, clock, "neogeo_cart_slot", __FILE__), + device_image_interface(mconfig, *this), + device_slot_interface(mconfig, *this), + m_cart(nullptr) +{ +} + + +//------------------------------------------------- +// neogeo_cart_slot_device - destructor +//------------------------------------------------- + +neogeo_cart_slot_device::~neogeo_cart_slot_device() +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_cart_slot_device::device_start() +{ + m_cart = dynamic_cast<device_neogeo_cart_interface *>(get_card_device()); +} + +//------------------------------------------------- +// device_config_complete - perform any +// operations now that the configuration is +// complete +//------------------------------------------------- + +void neogeo_cart_slot_device::device_config_complete() +{ + // set brief and instance name + update_names(); +} + + + +/*------------------------------------------------- + call load + -------------------------------------------------*/ + + +bool neogeo_cart_slot_device::call_load() +{ + if (m_cart) + { + UINT16 *ROM; + UINT8* ROM8; + UINT32 len; + + if (software_entry() != nullptr) + { + // create memory regions + len = get_software_region_length("maincpu"); + m_cart->rom_alloc(len); ROM = m_cart->get_rom_base(); + memcpy(ROM, get_software_region("maincpu"), len); + + len = get_software_region_length("fixed"); + m_cart->fixed_alloc(len); ROM8 = m_cart->get_fixed_base(); + memcpy(ROM8, get_software_region("fixed"), len); + + if (get_software_region("audiocpu") != nullptr) + { + len = get_software_region_length("audiocpu"); + m_cart->audio_alloc(len + 0x10000); ROM8 = m_cart->get_audio_base(); + memcpy(ROM8, get_software_region("audiocpu"), len); + memcpy(ROM8 + 0x10000, get_software_region("audiocpu"), len); // avoid reloading in XML, should just improve banking instead tho? + } + + len = get_software_region_length("ymsnd"); + m_cart->ym_alloc(len); ROM8 = m_cart->get_ym_base(); + memcpy(ROM8, get_software_region("ymsnd"), len); + + if (get_software_region("ymsnd.deltat") != nullptr) + { + len = get_software_region_length("ymsnd.deltat"); + m_cart->ymdelta_alloc(len); ROM8 = m_cart->get_ymdelta_base(); + memcpy(ROM8, get_software_region("ymsnd.deltat"), len); + } + else + { + // ensure there is no delta-t region + } + + + len = get_software_region_length("sprites"); + m_cart->sprites_alloc(len); ROM8 = m_cart->get_sprites_base(); + memcpy(ROM8, get_software_region("sprites"), len); + + if (get_software_region("audiocrypt") != nullptr) // encrypted Z80 code + { + len = get_software_region_length("audiocrypt"); + m_cart->audiocrypt_alloc(len); ROM8 = m_cart->get_audiocrypt_base(); + memcpy(ROM8, get_software_region("audiocrypt"), len); + // allocate the audiocpu region to decrypt data into + m_cart->audio_alloc(len + 0x10000); + } + + m_cart->decrypt_all( + (UINT8*)m_cart->get_rom_base(), m_cart->get_rom_size(), + m_cart->get_sprites_base(), m_cart->get_sprites_size(), + m_cart->get_fixed_base(), m_cart->get_fixed_size(), + m_cart->get_ym_base(), m_cart->get_ym_size(), + m_cart->get_ymdelta_base(), m_cart->get_ymdelta_size(), + m_cart->get_audio_base(), m_cart->get_audio_size(), + m_cart->get_audiocrypt_base(), m_cart->get_audiocrypt_size()); + + + // create optimized sprite cache + m_cart->m_sprite_gfx_address_mask = neogeohelper_optimize_sprite_data(m_cart->get_sprites_optimized_arr(), m_cart->get_sprites_base(), m_cart->get_sprites_size()); + + + return IMAGE_INIT_PASS; + } + } + + return IMAGE_INIT_PASS; +} + +void neogeo_cart_slot_device::setup_memory_banks(running_machine &machine) +{ + UINT16* base16 = get_rom_base(); + UINT32 size = get_rom_size(); + machine.memory().region_free(":maincpu"); + machine.memory().region_alloc(":maincpu",size,2, ENDIANNESS_BIG); + memcpy(memregion(":maincpu")->base(),(UINT8*)base16,size); + + UINT8* base = get_audio_base(); + size = get_audio_size(); + machine.memory().region_free(":audiocpu"); + machine.memory().region_alloc(":audiocpu",size,1, ENDIANNESS_LITTLE); + memcpy(memregion(":audiocpu")->base(),base,size); + + + base = get_ym_base(); + size = get_ym_size(); + + machine.memory().region_free(":ymsnd"); + machine.memory().region_alloc(":ymsnd",size,1, ENDIANNESS_LITTLE); + memcpy(memregion(":ymsnd")->base(),base,size); + + + base = get_ymdelta_base(); + size = get_ymdelta_size(); + machine.memory().region_free(":ymsnd.deltat"); + + if(base) + { + machine.memory().region_alloc(":ymsnd.deltat",size,1, ENDIANNESS_LITTLE); + memcpy(memregion(":ymsnd.deltat")->base(),base,size); + } + + +} + +/*------------------------------------------------- + call_unload + -------------------------------------------------*/ + +void neogeo_cart_slot_device::call_unload() +{ +} + +/*------------------------------------------------- + call softlist load + -------------------------------------------------*/ + +bool neogeo_cart_slot_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) +{ + machine().rom_load().load_software_part_region(*this, swlist, swname, start_entry ); + return TRUE; +} + + +/*------------------------------------------------- + get default card software + -------------------------------------------------*/ + +std::string neogeo_cart_slot_device::get_default_card_software() +{ + return software_get_default_slot("rom"); +} + +/*------------------------------------------------- + read + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_cart_slot_device::read_rom) +{ + if (m_cart) + return m_cart->read_rom(space, offset, mem_mask); + else + return 0xffff; +} diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_slot.h b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.h new file mode 100644 index 00000000000..1b037103165 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.h @@ -0,0 +1,87 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_SLOT_H +#define __NEOGEO_SLOT_H + +#include "neogeo_intf.h" +#include "neogeo_helper.h" + +/*************************************************************************** + TYPE DEFINITIONS + ***************************************************************************/ + +// ======================> neogeo_cart_slot_device + +class neogeo_cart_slot_device : public device_t, + public device_image_interface, + public device_slot_interface +{ +public: + // construction/destruction + neogeo_cart_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + virtual ~neogeo_cart_slot_device(); + + // device-level overrides + virtual void device_start() override; + virtual void device_config_complete() override; + + // image-level overrides + virtual bool call_load() override; + virtual void call_unload() override; + virtual bool call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry) override; + + virtual iodevice_t image_type() const override { return IO_CARTSLOT; } + virtual bool is_readable() const override { return 1; } + virtual bool is_writeable() const override { return 0; } + virtual bool is_creatable() const override { return 0; } + virtual bool must_be_loaded() const override { return 0; } + virtual bool is_reset_on_load() const override { return 1; } + virtual const option_guide *create_option_guide() const override { return nullptr; } + virtual const char *image_interface() const override { return "neo_cart"; } + virtual const char *file_extensions() const override { return "bin"; } + + // slot interface overrides + virtual std::string get_default_card_software() override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom); + + UINT16* get_rom_base() { if (m_cart) { return m_cart->get_rom_base(); } else { return nullptr; } } + UINT32 get_rom_size() { if (m_cart) { return m_cart->get_rom_size(); } else { return 0; } } + UINT8* get_fixed_base() { if (m_cart) { return m_cart->get_fixed_base(); } else { return nullptr; } } + UINT32 get_fixed_size() { if (m_cart) { return m_cart->get_fixed_size(); } else { return 0; } } + UINT8* get_sprites_base() { if (m_cart) { return m_cart->get_sprites_base(); } else { return nullptr; } } + UINT32 get_sprites_size() { if (m_cart) { return m_cart->get_sprites_size(); } else { return 0; } } + UINT8* get_sprites_optimized() { if (m_cart) { return m_cart->get_sprites_optimized(); } else { return nullptr; } } + UINT32 get_sprites_addrmask() { if (m_cart) { return m_cart->get_sprites_addrmask(); } else { return 0; } } + UINT8* get_audio_base() { if (m_cart) { return m_cart->get_audio_base(); } else { return nullptr; } } + UINT32 get_audio_size() { if (m_cart) { return m_cart->get_audio_size(); } else { return 0; } } + UINT8* get_ym_base() { if (m_cart) { return m_cart->get_ym_base(); } else { return nullptr; } } + UINT32 get_ym_size() { if (m_cart) { return m_cart->get_ym_size(); } else { return 0; } } + UINT8* get_ymdelta_base() { if (m_cart) { return m_cart->get_ymdelta_base(); } else { return nullptr; } } + UINT32 get_ymdelta_size() { if (m_cart) { return m_cart->get_ymdelta_size(); } else { return 0; } } + int get_fixed_bank_type(void) { if (m_cart) { return m_cart->get_fixed_bank_type(); } else { return 0; } } + + void activate_cart(ACTIVATE_CART_PARAMS) { if (m_cart) m_cart->activate_cart(machine, maincpu, cpuregion, cpuregion_size, fixedregion, fixedregion_size); } + void setup_memory_banks(running_machine &machine); + + +private: + device_neogeo_cart_interface* m_cart; +}; + + +// device type definition +extern const device_type NEOGEO_CART_SLOT; + + +/*************************************************************************** + DEVICE CONFIGURATION MACROS + ***************************************************************************/ + +#define MCFG_NEOGEO_CARTRIDGE_ADD(_tag,_slot_intf,_def_slot) \ + MCFG_DEVICE_ADD(_tag, NEOGEO_CART_SLOT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/pcm2_cart.cpp b/docs/release/src/hbmame/bus/neogeo/pcm2_cart.cpp new file mode 100644 index 00000000000..04eede0ebe9 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pcm2_cart.cpp @@ -0,0 +1,135 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "pcm2_cart.h" + + +//------------------------------------------------- +// neogeo_pcm2_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_PCM2_CART = &device_creator<neogeo_pcm2_cart>; + + +neogeo_pcm2_cart::neogeo_pcm2_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot") +{ +} + +neogeo_pcm2_cart::neogeo_pcm2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_PCM2_CART, "NEOGEO PCM2 Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_pcm2_cart::device_start() +{ +} + +void neogeo_pcm2_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_pcm2_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( pcm2_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_CMC_PROT_ADD("cmc_prot") + MCFG_PCM2_PROT_ADD("pcm2_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_pcm2_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( pcm2_cart ); +} + + + +/* Individual cartridge types (mirror DRIVER_INIT functionality) */ + +/************************************************* + MSLUG4 +**************************************************/ + +const device_type NEOGEO_PCM2_MSLUG4_CART = &device_creator<neogeo_pcm2_mslug4_cart>; + +neogeo_pcm2_mslug4_cart::neogeo_pcm2_mslug4_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_MSLUG4_CART, "NEOGEO PCM2 mslug4 Cart", tag, owner, clock, "p2_mslug4_cart", __FILE__) {} + +void neogeo_pcm2_mslug4_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MSLUG4_GFX_KEY); + m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 8); + +} + + +const device_type NEOGEO_PCM2_MS4PLUS_CART = &device_creator<neogeo_pcm2_ms4plus_cart>; + +neogeo_pcm2_ms4plus_cart::neogeo_pcm2_ms4plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_MS4PLUS_CART, "NEOGEO PCM2 ms4plus Cart", tag, owner, clock, "p2_ms4plus_cart", __FILE__) {} + +void neogeo_pcm2_ms4plus_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->cmc50_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MSLUG4_GFX_KEY); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region,audio_region_size); + m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 8); +} + + +/************************************************* + ROTD +**************************************************/ + +const device_type NEOGEO_PCM2_ROTD_CART = &device_creator<neogeo_pcm2_rotd_cart>; + +neogeo_pcm2_rotd_cart::neogeo_pcm2_rotd_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_ROTD_CART, "NEOGEO PCM2 rotd Cart", tag, owner, clock, "p2_rotd_cart", __FILE__) {} + +void neogeo_pcm2_rotd_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, ROTD_GFX_KEY); + m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 16); + +} + +/************************************************* + PNYAA +**************************************************/ + +const device_type NEOGEO_PCM2_PNYAA_CART = &device_creator<neogeo_pcm2_pnyaa_cart>; + +neogeo_pcm2_pnyaa_cart::neogeo_pcm2_pnyaa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pcm2_cart(mconfig, NEOGEO_PCM2_PNYAA_CART, "NEOGEO PCM2 pnyaa Cart", tag, owner, clock, "p2_pnyaa_cart", __FILE__) {} + +void neogeo_pcm2_pnyaa_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, PNYAA_GFX_KEY); + m_pcm2_prot->neo_pcm2_snk_1999(ym_region, ym_region_size, 4); +} diff --git a/docs/release/src/hbmame/bus/neogeo/pcm2_cart.h b/docs/release/src/hbmame/bus/neogeo/pcm2_cart.h new file mode 100644 index 00000000000..74f8e24d929 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pcm2_cart.h @@ -0,0 +1,98 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_PCM2_CART_H +#define __NEOGEO_PCM2_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "pcm2_prot.h" +#include "cmc_prot.h" + +// ======================> neogeo_pcm2_cart + +class neogeo_pcm2_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_pcm2_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_pcm2_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override { m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); } + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {} + virtual int get_fixed_bank_type(void) override { return 0; } + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<cmc_prot_device> m_cmc_prot; + required_device<pcm2_prot_device> m_pcm2_prot; +}; + + + +// device type definition +extern const device_type NEOGEO_PCM2_CART; + + +/************************************************* + MSLUG4 +**************************************************/ + +class neogeo_pcm2_mslug4_cart : public neogeo_pcm2_cart +{ +public: + neogeo_pcm2_mslug4_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_PCM2_MSLUG4_CART; + +class neogeo_pcm2_ms4plus_cart : public neogeo_pcm2_cart +{ +public: + neogeo_pcm2_ms4plus_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 0; } +}; +extern const device_type NEOGEO_PCM2_MS4PLUS_CART; + + + +/************************************************* + ROTD +**************************************************/ + +class neogeo_pcm2_rotd_cart : public neogeo_pcm2_cart +{ +public: + neogeo_pcm2_rotd_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_PCM2_ROTD_CART; + + +/************************************************* + PNYAA +**************************************************/ + +class neogeo_pcm2_pnyaa_cart : public neogeo_pcm2_cart +{ +public: + neogeo_pcm2_pnyaa_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_PCM2_PNYAA_CART; + + + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/pcm2_prot.cpp b/docs/release/src/hbmame/bus/neogeo/pcm2_prot.cpp new file mode 100644 index 00000000000..64159ff4185 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pcm2_prot.cpp @@ -0,0 +1,88 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#include "emu.h" +#include "pcm2_prot.h" + + + +extern const device_type PCM2_PROT = &device_creator<pcm2_prot_device>; + + +pcm2_prot_device::pcm2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, PCM2_PROT, "NeoGeo Protection (NEOPCM2)", tag, owner, clock, "pcm2_prot", __FILE__) +{ +} + + +void pcm2_prot_device::device_start() +{ +} + +void pcm2_prot_device::device_reset() +{ +} + +/*************************************************************************** + +NeoGeo 'V' (PCM) ROM encryption + NEOPCM2 chip + +***************************************************************************/ + +/* Neo-Pcm2 Drivers for Encrypted V Roms */ +void pcm2_prot_device::neo_pcm2_snk_1999(UINT8* ymrom, UINT32 ymsize, int value) +{ /* thanks to Elsemi for the NEO-PCM2 info */ + UINT16 *rom = (UINT16 *)ymrom; + int size = ymsize; + int i, j; + + if( rom != nullptr ) + { /* swap address lines on the whole ROMs */ + std::vector<UINT16> buffer(value / 2); + + for( i = 0; i < size / 2; i += ( value / 2 ) ) + { + memcpy( &buffer[0], &rom[ i ], value ); + for( j = 0; j < (value / 2); j++ ) + { + rom[ i + j ] = buffer[ j ^ (value/4) ]; + } + } + } +} + + +/* the later PCM2 games have additional scrambling */ +void pcm2_prot_device::neo_pcm2_swap(UINT8* ymrom, UINT32 ymsize, int value) +{ + static const UINT32 addrs[7][2]={ + {0x000000,0xa5000}, + {0xffce20,0x01000}, + {0xfe2cf6,0x4e001}, + {0xffac28,0xc2000}, + {0xfeb2c0,0x0a000}, + {0xff14ea,0xa7001}, + {0xffb440,0x02000}}; + static const UINT8 xordata[7][8]={ + {0xf9,0xe0,0x5d,0xf3,0xea,0x92,0xbe,0xef}, + {0xc4,0x83,0xa8,0x5f,0x21,0x27,0x64,0xaf}, + {0xc3,0xfd,0x81,0xac,0x6d,0xe7,0xbf,0x9e}, + {0xc3,0xfd,0x81,0xac,0x6d,0xe7,0xbf,0x9e}, + {0xcb,0x29,0x7d,0x43,0xd2,0x3a,0xc2,0xb4}, + {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62}, + {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62}}; + + dynamic_buffer buf(0x1000000); + int i, j, d; + UINT8* src = ymrom; + memcpy(&buf[0],src,0x1000000); + for (i=0;i<0x1000000;i++) + { + j=BITSWAP24(i,23,22,21,20,19,18,17,0,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,16); + j=j^addrs[value][1]; + d=((i+addrs[value][0])&0xffffff); + src[j]=buf[d]^xordata[value][j&0x7]; + } +} diff --git a/docs/release/src/hbmame/bus/neogeo/pcm2_prot.h b/docs/release/src/hbmame/bus/neogeo/pcm2_prot.h new file mode 100644 index 00000000000..72f59dac1b3 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pcm2_prot.h @@ -0,0 +1,30 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __PCM2_PROT__ +#define __PCM2_PROT__ + +extern const device_type PCM2_PROT; + +#define MCFG_PCM2_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, PCM2_PROT, 0) + + +class pcm2_prot_device : public device_t +{ +public: + // construction/destruction + pcm2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + void neo_pcm2_snk_1999(UINT8* ymrom, UINT32 ymsize, int value); + void neo_pcm2_swap(UINT8* ymrom, UINT32 ymsize, int value); + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/pvc_cart.cpp b/docs/release/src/hbmame/bus/neogeo/pvc_cart.cpp new file mode 100644 index 00000000000..ee587724b7f --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pvc_cart.cpp @@ -0,0 +1,139 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "pvc_cart.h" + + +//------------------------------------------------- +// neogeo_pvc_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_PVC_CART = &device_creator<neogeo_pvc_cart>; + + +neogeo_pvc_cart::neogeo_pvc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot"), + m_pvc_prot(*this, "pvc_prot") +{ +} + +neogeo_pvc_cart::neogeo_pvc_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_PVC_CART, "NEOGEO PCM2 Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot"), + m_pvc_prot(*this, "pvc_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_pvc_cart::device_start() +{ +} + +void neogeo_pvc_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_pvc_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( pvc_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_CMC_PROT_ADD("cmc_prot") + MCFG_PCM2_PROT_ADD("pcm2_prot") + MCFG_PVC_PROT_ADD("pvc_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_pvc_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( pvc_cart ); +} + + + +/* Individual cartridge types (mirror DRIVER_INIT functionality) */ + +/************************************************* + MSLUG5 +**************************************************/ + +const device_type NEOGEO_PVC_MSLUG5_CART = &device_creator<neogeo_pvc_mslug5_cart>; + +neogeo_pvc_mslug5_cart::neogeo_pvc_mslug5_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pvc_cart(mconfig, NEOGEO_PVC_MSLUG5_CART, "NEOGEO PCM2 mslug5 Cart", tag, owner, clock, "p2_mslug5_cart", __FILE__) {} + +void neogeo_pvc_mslug5_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_pvc_prot->mslug5_decrypt_68k(cpuregion, cpuregion_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 2); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MSLUG5_GFX_KEY); +} + +/************************************************* + SVC +**************************************************/ + +const device_type NEOGEO_PVC_SVC_CART = &device_creator<neogeo_pvc_svc_cart>; + +neogeo_pvc_svc_cart::neogeo_pvc_svc_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pvc_cart(mconfig, NEOGEO_PVC_SVC_CART, "NEOGEO PCM2 svc Cart", tag, owner, clock, "p2_svc_cart", __FILE__) {} + +void neogeo_pvc_svc_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_pvc_prot->svc_px_decrypt(cpuregion, cpuregion_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 3); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, SVC_GFX_KEY); +} + + +/************************************************* + KOF2003 +**************************************************/ + +const device_type NEOGEO_PVC_KOF2003_CART = &device_creator<neogeo_pvc_kof2003_cart>; + +neogeo_pvc_kof2003_cart::neogeo_pvc_kof2003_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pvc_cart(mconfig, NEOGEO_PVC_KOF2003_CART, "NEOGEO PCM2 kof2003 Cart", tag, owner, clock, "p2_kof2003_cart", __FILE__) {} + +void neogeo_pvc_kof2003_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_pvc_prot->kof2003_decrypt_68k(cpuregion, cpuregion_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2003_GFX_KEY); +} + +const device_type NEOGEO_PVC_KOF2003H_CART = &device_creator<neogeo_pvc_kof2003h_cart>; + +neogeo_pvc_kof2003h_cart::neogeo_pvc_kof2003h_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_pvc_cart(mconfig, NEOGEO_PVC_KOF2003H_CART, "NEOGEO PCM2 kof2003h Cart", tag, owner, clock, "p2_kof2003h_cart", __FILE__) {} + +void neogeo_pvc_kof2003h_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_pvc_prot->kof2003h_decrypt_68k(cpuregion, cpuregion_size); + m_pcm2_prot->neo_pcm2_swap(ym_region, ym_region_size, 5); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2003_GFX_KEY); +} diff --git a/docs/release/src/hbmame/bus/neogeo/pvc_cart.h b/docs/release/src/hbmame/bus/neogeo/pvc_cart.h new file mode 100644 index 00000000000..7d5e3aa22d5 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pvc_cart.h @@ -0,0 +1,108 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_PVC_CART_H +#define __NEOGEO_PVC_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "pcm2_prot.h" +#include "cmc_prot.h" +#include "pvc_prot.h" + +// ======================> neogeo_pvc_cart + +class neogeo_pvc_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_pvc_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_pvc_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override + { + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_pvc_prot->install_pvc_protection(maincpu,m_banked_cart); + } + + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {} + virtual int get_fixed_bank_type(void) override { return 0; } + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<cmc_prot_device> m_cmc_prot; + required_device<pcm2_prot_device> m_pcm2_prot; + required_device<pvc_prot_device> m_pvc_prot; + +}; + + + +// device type definition +extern const device_type NEOGEO_PVC_CART; + + +/************************************************* + MSLUG5 +**************************************************/ + +class neogeo_pvc_mslug5_cart : public neogeo_pvc_cart +{ +public: + neogeo_pvc_mslug5_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_PVC_MSLUG5_CART; + +/************************************************* + SVC +**************************************************/ + +class neogeo_pvc_svc_cart : public neogeo_pvc_cart +{ +public: + neogeo_pvc_svc_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 2; } +}; +extern const device_type NEOGEO_PVC_SVC_CART; + + +/************************************************* + KOF2003 +**************************************************/ + +class neogeo_pvc_kof2003_cart : public neogeo_pvc_cart +{ +public: + neogeo_pvc_kof2003_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 2; } +}; +extern const device_type NEOGEO_PVC_KOF2003_CART; + + +/************************************************* + KOF2003H +**************************************************/ + +class neogeo_pvc_kof2003h_cart : public neogeo_pvc_cart +{ +public: + neogeo_pvc_kof2003h_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 2; } +}; +extern const device_type NEOGEO_PVC_KOF2003H_CART; + + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/pvc_prot.cpp b/docs/release/src/hbmame/bus/neogeo/pvc_prot.cpp new file mode 100644 index 00000000000..bef53153a5f --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pvc_prot.cpp @@ -0,0 +1,317 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#include "emu.h" +#include "pvc_prot.h" + + + +extern const device_type PVC_PROT = &device_creator<pvc_prot_device>; + + +pvc_prot_device::pvc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, PVC_PROT, "NeoGeo Protection (PVC)", tag, owner, clock, "pvc_prot", __FILE__), + m_bankdev(nullptr) +{ +} + + +void pvc_prot_device::device_start() +{ + save_item(NAME(m_cartridge_ram)); +} + +void pvc_prot_device::device_reset() +{ +} + + + + +/************************ PVC Protection *********************** + mslug5, svcchaos, kof2003 +***************************************************************/ + +void pvc_prot_device::pvc_write_unpack_color() +{ + UINT16 pen = m_cartridge_ram[0xff0]; + + UINT8 b = ((pen & 0x000f) << 1) | ((pen & 0x1000) >> 12); + UINT8 g = ((pen & 0x00f0) >> 3) | ((pen & 0x2000) >> 13); + UINT8 r = ((pen & 0x0f00) >> 7) | ((pen & 0x4000) >> 14); + UINT8 s = (pen & 0x8000) >> 15; + + m_cartridge_ram[0xff1] = (g << 8) | b; + m_cartridge_ram[0xff2] = (s << 8) | r; +} + + +void pvc_prot_device::pvc_write_pack_color() +{ + UINT16 gb = m_cartridge_ram[0xff4]; + UINT16 sr = m_cartridge_ram[0xff5]; + + m_cartridge_ram[0xff6] = ((gb & 0x001e) >> 1) | + ((gb & 0x1e00) >> 5) | + ((sr & 0x001e) << 7) | + ((gb & 0x0001) << 12) | + ((gb & 0x0100) << 5) | + ((sr & 0x0001) << 14) | + ((sr & 0x0100) << 7); +} + + +void pvc_prot_device::pvc_write_bankswitch( address_space &space ) +{ + UINT32 bankaddress; + + bankaddress = ((m_cartridge_ram[0xff8] >> 8)|(m_cartridge_ram[0xff9] << 8)); + m_cartridge_ram[0xff8] = (m_cartridge_ram[0xff8] & 0xfe00) | 0x00a0; + m_cartridge_ram[0xff9] &= 0x7fff; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress + 0x100000); +} + + +READ16_MEMBER( pvc_prot_device::pvc_prot_r ) +{ + return m_cartridge_ram[offset]; +} + + +WRITE16_MEMBER( pvc_prot_device::pvc_prot_w ) +{ + COMBINE_DATA(&m_cartridge_ram[offset] ); + if (offset == 0xff0) + pvc_write_unpack_color(); + else if(offset >= 0xff4 && offset <= 0xff5) + pvc_write_pack_color(); + else if(offset >= 0xff8) + pvc_write_bankswitch(space); +} + + +void pvc_prot_device::install_pvc_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + m_bankdev = bankdev; + maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(pvc_prot_device::pvc_prot_r),this), write16_delegate(FUNC(pvc_prot_device::pvc_prot_w),this)); +} + + + + +/* kf2k3pcb, kof2003, kof2003h, mslug5 and svc have updated P rom scramble */ +void pvc_prot_device::mslug5_decrypt_68k(UINT8* rom, UINT32 size) +{ + static const UINT8 xor1[ 0x20 ] = { 0xc2, 0x4b, 0x74, 0xfd, 0x0b, 0x34, 0xeb, 0xd7, 0x10, 0x6d, 0xf9, 0xce, 0x5d, 0xd5, 0x61, 0x29, 0xf5, 0xbe, 0x0d, 0x82, 0x72, 0x45, 0x0f, 0x24, 0xb3, 0x34, 0x1b, 0x99, 0xea, 0x09, 0xf3, 0x03 }; + static const UINT8 xor2[ 0x20 ] = { 0x36, 0x09, 0xb0, 0x64, 0x95, 0x0f, 0x90, 0x42, 0x6e, 0x0f, 0x30, 0xf6, 0xe5, 0x08, 0x30, 0x64, 0x08, 0x04, 0x00, 0x2f, 0x72, 0x09, 0xa0, 0x13, 0xc9, 0x0b, 0xa0, 0x3e, 0xc2, 0x00, 0x40, 0x2b }; + int i; + int ofst; + int rom_size = 0x800000; + dynamic_buffer buf( rom_size ); + + for( i = 0; i < 0x100000; i++ ) + { + rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ]; + } + for( i = 0x100000; i < 0x800000; i++ ) + { + rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ]; + } + + for( i = 0x100000; i < 0x0800000; i += 4 ) + { + UINT16 rom16; + rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8; + rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 ); + rom[BYTE_XOR_LE(i+1)] = rom16&0xff; + rom[BYTE_XOR_LE(i+2)] = rom16>>8; + } + memcpy( &buf[0], rom, rom_size ); + for( i = 0; i < 0x0100000 / 0x10000; i++ ) + { + ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 ); + memcpy( &rom[ i * 0x10000 ], &buf[ ofst * 0x10000 ], 0x10000 ); + } + for( i = 0x100000; i < 0x800000; i += 0x100 ) + { + ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00700) + (BITSWAP8( ((i & 0x0ff000) >> 12), 5, 4, 7, 6, 1, 0, 3, 2 ) << 12); + memcpy( &rom[ i ], &buf[ ofst ], 0x100 ); + } + memcpy( &buf[0], rom, rom_size ); + memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 ); + memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 ); +} + + +void pvc_prot_device::svc_px_decrypt(UINT8* rom, UINT32 size) +{ + static const UINT8 xor1[ 0x20 ] = { 0x3b, 0x6a, 0xf7, 0xb7, 0xe8, 0xa9, 0x20, 0x99, 0x9f, 0x39, 0x34, 0x0c, 0xc3, 0x9a, 0xa5, 0xc8, 0xb8, 0x18, 0xce, 0x56, 0x94, 0x44, 0xe3, 0x7a, 0xf7, 0xdd, 0x42, 0xf0, 0x18, 0x60, 0x92, 0x9f }; + static const UINT8 xor2[ 0x20 ] = { 0x69, 0x0b, 0x60, 0xd6, 0x4f, 0x01, 0x40, 0x1a, 0x9f, 0x0b, 0xf0, 0x75, 0x58, 0x0e, 0x60, 0xb4, 0x14, 0x04, 0x20, 0xe4, 0xb9, 0x0d, 0x10, 0x89, 0xeb, 0x07, 0x30, 0x90, 0x50, 0x0e, 0x20, 0x26 }; + int i; + int ofst; + int rom_size = 0x800000; + dynamic_buffer buf( rom_size ); + + for( i = 0; i < 0x100000; i++ ) + { + rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ]; + } + for( i = 0x100000; i < 0x800000; i++ ) + { + rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ]; + } + + for( i = 0x100000; i < 0x0800000; i += 4 ) + { + UINT16 rom16; + rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8; + rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 ); + rom[BYTE_XOR_LE(i+1)] = rom16&0xff; + rom[BYTE_XOR_LE(i+2)] = rom16>>8; + } + memcpy( &buf[0], rom, rom_size ); + for( i = 0; i < 0x0100000 / 0x10000; i++ ) + { + ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 2, 3, 0, 1 ); + memcpy( &rom[ i * 0x10000 ], &buf[ ofst * 0x10000 ], 0x10000 ); + } + for( i = 0x100000; i < 0x800000; i += 0x100 ) + { + ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00a00) + (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12); + memcpy( &rom[ i ], &buf[ ofst ], 0x100 ); + } + memcpy( &buf[0], rom, rom_size ); + memcpy( &rom[ 0x100000 ], &buf[ 0x700000 ], 0x100000 ); + memcpy( &rom[ 0x200000 ], &buf[ 0x100000 ], 0x600000 ); +} + + +void pvc_prot_device::kf2k3pcb_decrypt_68k(UINT8* rom, UINT32 size) +{ + static const UINT8 xor2[ 0x20 ] = { 0xb4, 0x0f, 0x40, 0x6c, 0x38, 0x07, 0xd0, 0x3f, 0x53, 0x08, 0x80, 0xaa, 0xbe, 0x07, 0xc0, 0xfa, 0xd0, 0x08, 0x10, 0xd2, 0xf1, 0x03, 0x70, 0x7e, 0x87, 0x0b, 0x40, 0xf6, 0x2a, 0x0a, 0xe0, 0xf9 }; + int i; + int ofst; + int rom_size = 0x900000; + dynamic_buffer buf( rom_size ); + + for (i = 0; i < 0x100000; i++) + { + rom[ 0x800000 + i ] ^= rom[ 0x100002 | i ]; + } + for( i = 0x100000; i < 0x800000; i++ ) + { + rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ]; + } + for( i = 0x100000; i < 0x800000; i += 4 ) + { + UINT16 rom16; + rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8; + rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 4, 5, 6, 7, 8, 9, 10, 11, 3, 2, 1, 0 ); + rom[BYTE_XOR_LE(i+1)] = rom16&0xff; + rom[BYTE_XOR_LE(i+2)] = rom16>>8; + } + for( i = 0; i < 0x0100000 / 0x10000; i++ ) + { + ofst = (i & 0xf0) + BITSWAP8( (i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2 ); + memcpy( &buf[ i * 0x10000 ], &rom[ ofst * 0x10000 ], 0x10000 ); + } + for( i = 0x100000; i < 0x900000; i += 0x100 ) + { + ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00300) + (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12); + memcpy( &buf[ i ], &rom[ ofst ], 0x100 ); + } + memcpy (&rom[0x000000], &buf[0x000000], 0x100000); + memcpy (&rom[0x100000], &buf[0x800000], 0x100000); + memcpy (&rom[0x200000], &buf[0x100000], 0x700000); +} + + +void pvc_prot_device::kof2003_decrypt_68k(UINT8* rom, UINT32 size) +{ + static const UINT8 xor1[0x20] = { 0x3b, 0x6a, 0xf7, 0xb7, 0xe8, 0xa9, 0x20, 0x99, 0x9f, 0x39, 0x34, 0x0c, 0xc3, 0x9a, 0xa5, 0xc8, 0xb8, 0x18, 0xce, 0x56, 0x94, 0x44, 0xe3, 0x7a, 0xf7, 0xdd, 0x42, 0xf0, 0x18, 0x60, 0x92, 0x9f }; + static const UINT8 xor2[0x20] = { 0x2f, 0x02, 0x60, 0xbb, 0x77, 0x01, 0x30, 0x08, 0xd8, 0x01, 0xa0, 0xdf, 0x37, 0x0a, 0xf0, 0x65, 0x28, 0x03, 0xd0, 0x23, 0xd3, 0x03, 0x70, 0x42, 0xbb, 0x06, 0xf0, 0x28, 0xba, 0x0f, 0xf0, 0x7a }; + int i; + int ofst; + int rom_size = 0x900000; + dynamic_buffer buf( rom_size ); + + for (i = 0; i < 0x100000; i++) + { + rom[ 0x800000 + i ] ^= rom[ 0x100002 | i ]; + } + for( i = 0; i < 0x100000; i++) + { + rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ]; + } + for( i = 0x100000; i < 0x800000; i++) + { + rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ]; + } + for( i = 0x100000; i < 0x800000; i += 4) + { + UINT16 rom16; + rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8; + rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 5, 4, 7, 6, 9, 8, 11, 10, 3, 2, 1, 0 ); + rom[BYTE_XOR_LE(i+1)] = rom16&0xff; + rom[BYTE_XOR_LE(i+2)] = rom16>>8; + } + for( i = 0; i < 0x0100000 / 0x10000; i++ ) + { + ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 0, 1, 2, 3); + memcpy( &buf[ i * 0x10000 ], &rom[ ofst * 0x10000 ], 0x10000 ); + } + for( i = 0x100000; i < 0x900000; i += 0x100) + { + ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00800) + (BITSWAP8( ((i & 0x0ff000) >> 12), 4, 5, 6, 7, 1, 0, 3, 2 ) << 12); + memcpy( &buf[ i ], &rom[ ofst ], 0x100 ); + } + memcpy (&rom[0x000000], &buf[0x000000], 0x100000); + memcpy (&rom[0x100000], &buf[0x800000], 0x100000); + memcpy (&rom[0x200000], &buf[0x100000], 0x700000); +} + + +void pvc_prot_device::kof2003h_decrypt_68k(UINT8* rom, UINT32 size) +{ + static const UINT8 xor1[0x20] = { 0xc2, 0x4b, 0x74, 0xfd, 0x0b, 0x34, 0xeb, 0xd7, 0x10, 0x6d, 0xf9, 0xce, 0x5d, 0xd5, 0x61, 0x29, 0xf5, 0xbe, 0x0d, 0x82, 0x72, 0x45, 0x0f, 0x24, 0xb3, 0x34, 0x1b, 0x99, 0xea, 0x09, 0xf3, 0x03 }; + static const UINT8 xor2[0x20] = { 0x2b, 0x09, 0xd0, 0x7f, 0x51, 0x0b, 0x10, 0x4c, 0x5b, 0x07, 0x70, 0x9d, 0x3e, 0x0b, 0xb0, 0xb6, 0x54, 0x09, 0xe0, 0xcc, 0x3d, 0x0d, 0x80, 0x99, 0x87, 0x03, 0x90, 0x82, 0xfe, 0x04, 0x20, 0x18 }; + int i; + int ofst; + int rom_size = 0x900000; + dynamic_buffer buf( rom_size ); + + for (i = 0; i < 0x100000; i++) + { + rom[ 0x800000 + i ] ^= rom[ 0x100002 | i ]; + } + for( i = 0; i < 0x100000; i++) + { + rom[ i ] ^= xor1[ (BYTE_XOR_LE(i) % 0x20) ]; + } + for( i = 0x100000; i < 0x800000; i++) + { + rom[ i ] ^= xor2[ (BYTE_XOR_LE(i) % 0x20) ]; + } + for( i = 0x100000; i < 0x800000; i += 4) + { + UINT16 rom16; + rom16 = rom[BYTE_XOR_LE(i+1)] | rom[BYTE_XOR_LE(i+2)]<<8; + rom16 = BITSWAP16( rom16, 15, 14, 13, 12, 10, 11, 8, 9, 6, 7, 4, 5, 3, 2, 1, 0 ); + rom[BYTE_XOR_LE(i+1)] = rom16&0xff; + rom[BYTE_XOR_LE(i+2)] = rom16>>8; + } + for( i = 0; i < 0x0100000 / 0x10000; i++ ) + { + ofst = (i & 0xf0) + BITSWAP8((i & 0x0f), 7, 6, 5, 4, 1, 0, 3, 2); + memcpy( &buf[ i * 0x10000 ], &rom[ ofst * 0x10000 ], 0x10000 ); + } + for( i = 0x100000; i < 0x900000; i += 0x100) + { + ofst = (i & 0xf000ff) + ((i & 0x000f00) ^ 0x00400) + (BITSWAP8( ((i & 0x0ff000) >> 12), 6, 7, 4, 5, 0, 1, 2, 3 ) << 12); + memcpy( &buf[ i ], &rom[ ofst ], 0x100 ); + } + memcpy (&rom[0x000000], &buf[0x000000], 0x100000); + memcpy (&rom[0x100000], &buf[0x800000], 0x100000); + memcpy (&rom[0x200000], &buf[0x100000], 0x700000); +} diff --git a/docs/release/src/hbmame/bus/neogeo/pvc_prot.h b/docs/release/src/hbmame/bus/neogeo/pvc_prot.h new file mode 100644 index 00000000000..db853285a28 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/pvc_prot.h @@ -0,0 +1,44 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + +#pragma once + +#include "banked_cart.h" + +#ifndef __PVC_PROT__ +#define __PVC_PROT__ + +extern const device_type PVC_PROT; + +#define MCFG_PVC_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, PVC_PROT, 0) + + +class pvc_prot_device : public device_t +{ +public: + // construction/destruction + pvc_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + void pvc_write_unpack_color(); + void pvc_write_pack_color(); + void pvc_write_bankswitch(address_space &space); + DECLARE_READ16_MEMBER(pvc_prot_r); + DECLARE_WRITE16_MEMBER(pvc_prot_w); + void install_pvc_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + neogeo_banked_cart_device* m_bankdev; + + UINT16 m_cartridge_ram[0x1000]; + + void mslug5_decrypt_68k(UINT8* rom, UINT32 size); + void svc_px_decrypt(UINT8* rom, UINT32 size); + void kf2k3pcb_decrypt_68k(UINT8* rom, UINT32 size); + void kof2003_decrypt_68k(UINT8* rom, UINT32 size); + void kof2003h_decrypt_68k(UINT8* rom, UINT32 size); + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/rom.cpp b/docs/release/src/hbmame/bus/neogeo/rom.cpp new file mode 100644 index 00000000000..085e68edec2 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/rom.cpp @@ -0,0 +1,70 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "rom.h" + + +//------------------------------------------------- +// neogeo_rom_device - constructor +//------------------------------------------------- + +const device_type NEOGEO_ROM = &device_creator<neogeo_rom_device>; + + +neogeo_rom_device::neogeo_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart") +{ +} + +neogeo_rom_device::neogeo_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_ROM, "NEOGEO ROM Carts", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface( mconfig, *this ), + m_banked_cart(*this, "banked_cart") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_rom_device::device_start() +{ +} + +void neogeo_rom_device::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_rom_device::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( banked_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_rom_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( banked_cart ); +} + +void neogeo_rom_device::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); +} diff --git a/docs/release/src/hbmame/bus/neogeo/rom.h b/docs/release/src/hbmame/bus/neogeo/rom.h new file mode 100644 index 00000000000..7a1135a3e7c --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/rom.h @@ -0,0 +1,38 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_ROM_H +#define __NEOGEO_ROM_H + +#include "neogeo_slot.h" +#include "banked_cart.h" + +// ======================> neogeo_rom_device + +class neogeo_rom_device : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_rom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_rom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + + required_device<neogeo_banked_cart_device> m_banked_cart; +}; + + + +// device type definition +extern const device_type NEOGEO_ROM; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/sbp_prot.cpp b/docs/release/src/hbmame/bus/neogeo/sbp_prot.cpp new file mode 100644 index 00000000000..b913eba75d9 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/sbp_prot.cpp @@ -0,0 +1,87 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#include "emu.h" +#include "sbp_prot.h" + + + +extern const device_type SBP_PROT = &device_creator<sbp_prot_device>; + + +sbp_prot_device::sbp_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, SBP_PROT, "NeoGeo Protection (Super Bubble Pop)", tag, owner, clock, "sbp_prot", __FILE__), + m_mainrom(nullptr) +{ +} + + +void sbp_prot_device::device_start() +{ +} + +void sbp_prot_device::device_reset() +{ +} + + + +READ16_MEMBER( sbp_prot_device::sbp_lowerrom_r ) +{ + UINT16* rom = (UINT16*)m_mainrom; + UINT16 origdata = rom[(offset+(0x200/2))]; + UINT16 data = BITSWAP16(origdata, 11,10,9,8,15,14,13,12,3,2,1,0,7,6,5,4); + int realoffset = 0x200+(offset*2); + logerror("sbp_lowerrom_r offset %08x data %04x\n", realoffset, data ); + + // there is actually data in the rom here already, maybe we should just return it 'as is' + if (realoffset==0xd5e) return origdata; + + return data; +} + +WRITE16_MEMBER( sbp_prot_device::sbp_lowerrom_w ) +{ + int realoffset = 0x200+(offset*2); + + // the actual data written is just pulled from the end of the rom, and unused space + // maybe this is just some kind of watchdog for the protection device and it doesn't + // matter? + if (realoffset == 0x1080) + { + if (data==0x4e75) + { + return; + } + else if (data==0xffff) + { + return; + } + } + + printf("sbp_lowerrom_w offset %08x data %04x\n", realoffset, data ); +} + + +void sbp_prot_device::sbp_install_protection(cpu_device* maincpu, UINT8* cpurom, UINT32 cpurom_size) +{ + m_mainrom = cpurom; + + // there seems to be a protection device living around here.. + // if you nibble swap the data in the rom the game will boot + // there are also writes to 0x1080.. + // + // other stuff going on as well tho, the main overlay is still missing, and p1 inputs don't work + maincpu->space(AS_PROGRAM).install_read_handler(0x00200, 0x001fff, read16_delegate(FUNC(sbp_prot_device::sbp_lowerrom_r), this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x00200, 0x001fff, write16_delegate(FUNC(sbp_prot_device::sbp_lowerrom_w), this)); + + /* the game code clears the text overlay used ingame immediately after writing it.. why? protection? sloppy code that the hw ignores? imperfect emulation? */ + { + UINT16* rom = (UINT16*)cpurom; + + rom[0x2a6f8 / 2] = 0x4e71; + rom[0x2a6fa / 2] = 0x4e71; + rom[0x2a6fc / 2] = 0x4e71; + } +} diff --git a/docs/release/src/hbmame/bus/neogeo/sbp_prot.h b/docs/release/src/hbmame/bus/neogeo/sbp_prot.h new file mode 100644 index 00000000000..702bb9c42e0 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/sbp_prot.h @@ -0,0 +1,34 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#ifndef __SBP_PROT__ +#define __SBP_PROT__ + +extern const device_type SBP_PROT; + +#define MCFG_SBP_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, SBP_PROT, 0) + + +class sbp_prot_device : public device_t +{ +public: + // construction/destruction + sbp_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + + UINT8* m_mainrom; + + void sbp_install_protection(cpu_device* maincpu, UINT8* cpurom, UINT32 cpurom_size); + DECLARE_WRITE16_MEMBER(sbp_lowerrom_w); + DECLARE_READ16_MEMBER(sbp_lowerrom_r); + +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/sma_cart.cpp b/docs/release/src/hbmame/bus/neogeo/sma_cart.cpp new file mode 100644 index 00000000000..61e07b962f3 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/sma_cart.cpp @@ -0,0 +1,177 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +/*********************************************************************************************************** + + NEOGEO ROM cart emulation + + ***********************************************************************************************************/ + + +#include "emu.h" +#include "sma_cart.h" + + +//------------------------------------------------- +// neogeo_sma_cart - constructor +//------------------------------------------------- + +const device_type NEOGEO_SMA_CART = &device_creator<neogeo_sma_cart>; + + +neogeo_sma_cart::neogeo_sma_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source) + : device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_sma_prot(*this, "sma_prot"), + m_cmc_prot(*this, "cmc_prot") + +{ +} + +neogeo_sma_cart::neogeo_sma_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock) + : device_t(mconfig, NEOGEO_SMA_CART, "NEOGEO SMA Cart", tag, owner, clock, "neogeo_rom", __FILE__), + device_neogeo_cart_interface(mconfig, *this), + m_banked_cart(*this, "banked_cart"), + m_sma_prot(*this, "sma_prot"), + m_cmc_prot(*this, "cmc_prot") +{ +} + + +//------------------------------------------------- +// mapper specific start/reset +//------------------------------------------------- + +void neogeo_sma_cart::device_start() +{ +} + +void neogeo_sma_cart::device_reset() +{ +} + + +/*------------------------------------------------- + mapper specific handlers + -------------------------------------------------*/ + +READ16_MEMBER(neogeo_sma_cart::read_rom) +{ + return m_rom[offset]; +} + +static MACHINE_CONFIG_FRAGMENT( sma_cart ) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + MCFG_SMA_PROT_ADD("sma_prot") + MCFG_CMC_PROT_ADD("cmc_prot") +MACHINE_CONFIG_END + +machine_config_constructor neogeo_sma_cart::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( sma_cart ); +} + + + +/* Individual cartridge types (mirror DRIVER_INIT functionality) */ + +/************************************************* + KOF 99 +**************************************************/ + +const device_type NEOGEO_SMA_KOF99_CART = &device_creator<neogeo_sma_kof99_cart>; + +neogeo_sma_kof99_cart::neogeo_sma_kof99_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_sma_cart(mconfig, NEOGEO_SMA_KOF99_CART, "NEOGEO SMA Kof99 Cart", tag, owner, clock, "sma_kof99_cart", __FILE__) {} + +void neogeo_sma_kof99_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_sma_prot->kof99_decrypt_68k(cpuregion); + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF99_GFX_KEY); +} + +void neogeo_sma_kof99_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_sma_prot->kof99_install_protection(maincpu, m_banked_cart); +} + + + + +/************************************************* + Garou +**************************************************/ + +const device_type NEOGEO_SMA_GAROU_CART = &device_creator<neogeo_sma_garou_cart>; + +neogeo_sma_garou_cart::neogeo_sma_garou_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_sma_cart(mconfig, NEOGEO_SMA_GAROU_CART, "NEOGEO SMA Garou Cart", tag, owner, clock, "sma_garou_cart", __FILE__) {} + +void neogeo_sma_garou_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_sma_prot->garou_decrypt_68k(cpuregion); + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, GAROU_GFX_KEY); +} + +void neogeo_sma_garou_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_sma_prot->garou_install_protection(maincpu, m_banked_cart); +} + +const device_type NEOGEO_SMA_GAROUH_CART = &device_creator<neogeo_sma_garouh_cart>; + +neogeo_sma_garouh_cart::neogeo_sma_garouh_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_sma_cart(mconfig, NEOGEO_SMA_GAROU_CART, "NEOGEO SMA Garou (alt) Cart", tag, owner, clock, "sma_garouh_cart", __FILE__) {} + +void neogeo_sma_garouh_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_sma_prot->garouh_decrypt_68k(cpuregion); + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, GAROU_GFX_KEY); +} + +void neogeo_sma_garouh_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_sma_prot->garouh_install_protection(maincpu, m_banked_cart); +} + + +/************************************************* + Metal Slug 3 +**************************************************/ + +const device_type NEOGEO_SMA_MSLUG3_CART = &device_creator<neogeo_sma_mslug3_cart>; + +neogeo_sma_mslug3_cart::neogeo_sma_mslug3_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_sma_cart(mconfig, NEOGEO_SMA_MSLUG3_CART, "NEOGEO SMA Mslug3 Cart", tag, owner, clock, "sma_mslug3_cart", __FILE__) {} + +void neogeo_sma_mslug3_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_sma_prot->mslug3_decrypt_68k(cpuregion); + m_cmc_prot->kof99_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, MSLUG3_GFX_KEY); +} + +void neogeo_sma_mslug3_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_sma_prot->mslug3_install_protection(maincpu, m_banked_cart); +} + +/************************************************* + KOF2000 +**************************************************/ + +const device_type NEOGEO_SMA_KOF2000_CART = &device_creator<neogeo_sma_kof2000_cart>; + +neogeo_sma_kof2000_cart::neogeo_sma_kof2000_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : neogeo_sma_cart(mconfig, NEOGEO_SMA_KOF2000_CART, "NEOGEO SMA KOF2000 Cart", tag, owner, clock, "sma_kof2000_cart", __FILE__) {} + +void neogeo_sma_kof2000_cart::decrypt_all(DECRYPT_ALL_PARAMS) +{ + m_sma_prot->kof2000_decrypt_68k(cpuregion); + m_cmc_prot->neogeo_cmc50_m1_decrypt(audiocrypt_region, audiocrypt_region_size, audiocpu_region, audio_region_size); + m_cmc_prot->kof2000_neogeo_gfx_decrypt(spr_region, spr_region_size, fix_region, fix_region_size, KOF2000_GFX_KEY); +} + +void neogeo_sma_kof2000_cart::activate_cart(ACTIVATE_CART_PARAMS) +{ + m_banked_cart->install_banks(machine, maincpu, cpuregion, cpuregion_size); + m_sma_prot->kof2000_install_protection(maincpu, m_banked_cart); +} diff --git a/docs/release/src/hbmame/bus/neogeo/sma_cart.h b/docs/release/src/hbmame/bus/neogeo/sma_cart.h new file mode 100644 index 00000000000..04df0b1217a --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/sma_cart.h @@ -0,0 +1,112 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#ifndef __NEOGEO_SMA_CART_H +#define __NEOGEO_SMA_CART_H + +#include "neogeo_slot.h" +#include "banked_cart.h" +#include "sma_prot.h" +#include "cmc_prot.h" + +// ======================> neogeo_sma_cart + +class neogeo_sma_cart : public device_t, + public device_neogeo_cart_interface +{ +public: + // construction/destruction + neogeo_sma_cart(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT16 clock, const char *shortname, const char *source); + neogeo_sma_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT16 clock); + + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + virtual machine_config_constructor device_mconfig_additions() const override; + + // reading and writing + virtual DECLARE_READ16_MEMBER(read_rom) override; + + virtual void activate_cart(ACTIVATE_CART_PARAMS) override {} + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override {} + virtual int get_fixed_bank_type(void) override { return 0; } + + required_device<neogeo_banked_cart_device> m_banked_cart; + required_device<sma_prot_device> m_sma_prot; + required_device<cmc_prot_device> m_cmc_prot; +}; + + + +// device type definition +extern const device_type NEOGEO_SMA_CART; + + +/************************************************* + KOF 99 +**************************************************/ + +class neogeo_sma_kof99_cart : public neogeo_sma_cart +{ +public: + neogeo_sma_kof99_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_SMA_KOF99_CART; + +/************************************************* + Garou +**************************************************/ + +class neogeo_sma_garou_cart : public neogeo_sma_cart +{ +public: + neogeo_sma_garou_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_SMA_GAROU_CART; + +class neogeo_sma_garouh_cart : public neogeo_sma_cart +{ +public: + neogeo_sma_garouh_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_SMA_GAROUH_CART; + +/************************************************* + Metal Slug 3 +**************************************************/ + +class neogeo_sma_mslug3_cart : public neogeo_sma_cart +{ +public: + neogeo_sma_mslug3_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 1; } +}; +extern const device_type NEOGEO_SMA_MSLUG3_CART; + + +/************************************************* + KOF2000 +**************************************************/ + +class neogeo_sma_kof2000_cart : public neogeo_sma_cart +{ +public: + neogeo_sma_kof2000_cart(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void activate_cart(ACTIVATE_CART_PARAMS) override; + virtual void decrypt_all(DECRYPT_ALL_PARAMS) override; + virtual int get_fixed_bank_type(void) override { return 2; } +}; +extern const device_type NEOGEO_SMA_KOF2000_CART; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo/sma_prot.cpp b/docs/release/src/hbmame/bus/neogeo/sma_prot.cpp new file mode 100644 index 00000000000..1c91212c416 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/sma_prot.cpp @@ -0,0 +1,464 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood +#include "emu.h" +#include "sma_prot.h" + + + +extern const device_type SMA_PROT = &device_creator<sma_prot_device>; + + +sma_prot_device::sma_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, SMA_PROT, "NeoGeo SMA Cartridge", tag, owner, clock, "sma_prot", __FILE__), + m_bankdev(nullptr), + m_sma_rng(0) +{ +} + + +void sma_prot_device::device_start() +{ + save_item(NAME(m_sma_rng)); +} + +void sma_prot_device::device_reset() +{ + reset_sma_rng(); +} + + + + + +/************************ SMA Protection************************ + thanks to Razoola +***************************************************************/ + +WRITE16_MEMBER( sma_prot_device::kof99_bankswitch_w ) +{ + int bankaddress; + static const int bankoffset[64] = + { + 0x000000, 0x100000, 0x200000, 0x300000, + 0x3cc000, 0x4cc000, 0x3f2000, 0x4f2000, + 0x407800, 0x507800, 0x40d000, 0x50d000, + 0x417800, 0x517800, 0x420800, 0x520800, + 0x424800, 0x524800, 0x429000, 0x529000, + 0x42e800, 0x52e800, 0x431800, 0x531800, + 0x54d000, 0x551000, 0x567000, 0x592800, + 0x588800, 0x581800, 0x599800, 0x594800, + 0x598000, /* rest not used? */ + }; + + /* unscramble bank number */ + data = + (((data>>14)&1)<<0)+ + (((data>> 6)&1)<<1)+ + (((data>> 8)&1)<<2)+ + (((data>>10)&1)<<3)+ + (((data>>12)&1)<<4)+ + (((data>> 5)&1)<<5); + + bankaddress = 0x100000 + bankoffset[data]; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); +} + + +WRITE16_MEMBER( sma_prot_device::garou_bankswitch_w ) +{ + /* thanks to Razoola and Mr K for the info */ + int bankaddress; + static const int bankoffset[64] = + { + 0x000000, 0x100000, 0x200000, 0x300000, // 00 + 0x280000, 0x380000, 0x2d0000, 0x3d0000, // 04 + 0x2f0000, 0x3f0000, 0x400000, 0x500000, // 08 + 0x420000, 0x520000, 0x440000, 0x540000, // 12 + 0x498000, 0x598000, 0x4a0000, 0x5a0000, // 16 + 0x4a8000, 0x5a8000, 0x4b0000, 0x5b0000, // 20 + 0x4b8000, 0x5b8000, 0x4c0000, 0x5c0000, // 24 + 0x4c8000, 0x5c8000, 0x4d0000, 0x5d0000, // 28 + 0x458000, 0x558000, 0x460000, 0x560000, // 32 + 0x468000, 0x568000, 0x470000, 0x570000, // 36 + 0x478000, 0x578000, 0x480000, 0x580000, // 40 + 0x488000, 0x588000, 0x490000, 0x590000, // 44 + 0x5d0000, 0x5d8000, 0x5e0000, 0x5e8000, // 48 + 0x5f0000, 0x5f8000, 0x600000, /* rest not used? */ + }; + + /* unscramble bank number */ + data = + (((data>> 5)&1)<<0)+ + (((data>> 9)&1)<<1)+ + (((data>> 7)&1)<<2)+ + (((data>> 6)&1)<<3)+ + (((data>>14)&1)<<4)+ + (((data>>12)&1)<<5); + + bankaddress = 0x100000 + bankoffset[data]; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); +} + + +WRITE16_MEMBER( sma_prot_device::garouh_bankswitch_w ) +{ + /* thanks to Razoola and Mr K for the info */ + int bankaddress; + static const int bankoffset[64] = + { + 0x000000, 0x100000, 0x200000, 0x300000, // 00 + 0x280000, 0x380000, 0x2d0000, 0x3d0000, // 04 + 0x2c8000, 0x3c8000, 0x400000, 0x500000, // 08 + 0x420000, 0x520000, 0x440000, 0x540000, // 12 + 0x598000, 0x698000, 0x5a0000, 0x6a0000, // 16 + 0x5a8000, 0x6a8000, 0x5b0000, 0x6b0000, // 20 + 0x5b8000, 0x6b8000, 0x5c0000, 0x6c0000, // 24 + 0x5c8000, 0x6c8000, 0x5d0000, 0x6d0000, // 28 + 0x458000, 0x558000, 0x460000, 0x560000, // 32 + 0x468000, 0x568000, 0x470000, 0x570000, // 36 + 0x478000, 0x578000, 0x480000, 0x580000, // 40 + 0x488000, 0x588000, 0x490000, 0x590000, // 44 + 0x5d8000, 0x6d8000, 0x5e0000, 0x6e0000, // 48 + 0x5e8000, 0x6e8000, 0x6e8000, 0x000000, // 52 + 0x000000, 0x000000, 0x000000, 0x000000, // 56 + 0x000000, 0x000000, 0x000000, 0x000000, // 60 + }; + + /* unscramble bank number */ + data = + (((data>> 4)&1)<<0)+ + (((data>> 8)&1)<<1)+ + (((data>>14)&1)<<2)+ + (((data>> 2)&1)<<3)+ + (((data>>11)&1)<<4)+ + (((data>>13)&1)<<5); + + bankaddress = 0x100000 + bankoffset[data]; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); +} + + +WRITE16_MEMBER( sma_prot_device::mslug3_bankswitch_w ) +{ + /* thanks to Razoola and Mr K for the info */ + int bankaddress; + static const int bankoffset[64] = + { + 0x000000, 0x020000, 0x040000, 0x060000, // 00 + 0x070000, 0x090000, 0x0b0000, 0x0d0000, // 04 + 0x0e0000, 0x0f0000, 0x120000, 0x130000, // 08 + 0x140000, 0x150000, 0x180000, 0x190000, // 12 + 0x1a0000, 0x1b0000, 0x1e0000, 0x1f0000, // 16 + 0x200000, 0x210000, 0x240000, 0x250000, // 20 + 0x260000, 0x270000, 0x2a0000, 0x2b0000, // 24 + 0x2c0000, 0x2d0000, 0x300000, 0x310000, // 28 + 0x320000, 0x330000, 0x360000, 0x370000, // 32 + 0x380000, 0x390000, 0x3c0000, 0x3d0000, // 36 + 0x400000, 0x410000, 0x440000, 0x450000, // 40 + 0x460000, 0x470000, 0x4a0000, 0x4b0000, // 44 + 0x4c0000, /* rest not used? */ + }; + + /* unscramble bank number */ + data = + (((data>>14)&1)<<0)+ + (((data>>12)&1)<<1)+ + (((data>>15)&1)<<2)+ + (((data>> 6)&1)<<3)+ + (((data>> 3)&1)<<4)+ + (((data>> 9)&1)<<5); + + bankaddress = 0x100000 + bankoffset[data]; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); +} + + +WRITE16_MEMBER( sma_prot_device::kof2000_bankswitch_w ) +{ + /* thanks to Razoola and Mr K for the info */ + int bankaddress; + static const int bankoffset[64] = + { + 0x000000, 0x100000, 0x200000, 0x300000, // 00 + 0x3f7800, 0x4f7800, 0x3ff800, 0x4ff800, // 04 + 0x407800, 0x507800, 0x40f800, 0x50f800, // 08 + 0x416800, 0x516800, 0x41d800, 0x51d800, // 12 + 0x424000, 0x524000, 0x523800, 0x623800, // 16 + 0x526000, 0x626000, 0x528000, 0x628000, // 20 + 0x52a000, 0x62a000, 0x52b800, 0x62b800, // 24 + 0x52d000, 0x62d000, 0x52e800, 0x62e800, // 28 + 0x618000, 0x619000, 0x61a000, 0x61a800, // 32 + }; + + /* unscramble bank number */ + data = + (((data>>15)&1)<<0)+ + (((data>>14)&1)<<1)+ + (((data>> 7)&1)<<2)+ + (((data>> 3)&1)<<3)+ + (((data>>10)&1)<<4)+ + (((data>> 5)&1)<<5); + + bankaddress = 0x100000 + bankoffset[data]; + m_bankdev->neogeo_set_main_cpu_bank_address(bankaddress); +} + + +READ16_MEMBER( sma_prot_device::prot_9a37_r ) +{ + return 0x9a37; +} + + +/* information about the sma random number generator provided by razoola */ +/* this RNG is correct for KOF99, other games might be different */ + +READ16_MEMBER( sma_prot_device::sma_random_r ) +{ + UINT16 old = m_sma_rng; + + UINT16 newbit = ((m_sma_rng >> 2) ^ + (m_sma_rng >> 3) ^ + (m_sma_rng >> 5) ^ + (m_sma_rng >> 6) ^ + (m_sma_rng >> 7) ^ + (m_sma_rng >>11) ^ + (m_sma_rng >>12) ^ + (m_sma_rng >>15)) & 1; + + m_sma_rng = (m_sma_rng << 1) | newbit; + + return old; +} + + +void sma_prot_device::reset_sma_rng() +{ + m_sma_rng = 0x2345; +} + + +void sma_prot_device::sma_install_random_read_handler(cpu_device* maincpu, int addr1, int addr2 ) +{ + maincpu->space(AS_PROGRAM).install_read_handler(addr1, addr1 + 1, read16_delegate(FUNC(sma_prot_device::sma_random_r),this)); + maincpu->space(AS_PROGRAM).install_read_handler(addr2, addr2 + 1, read16_delegate(FUNC(sma_prot_device::sma_random_r),this)); +} + + +void sma_prot_device::kof99_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(FUNC(sma_prot_device::kof99_bankswitch_w),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + m_bankdev = bankdev; + + sma_install_random_read_handler(maincpu, 0x2ffff8, 0x2ffffa); +} + + +void sma_prot_device::garou_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(sma_prot_device::garou_bankswitch_w),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + m_bankdev = bankdev; + + sma_install_random_read_handler(maincpu, 0x2fffcc, 0x2ffff0); +} + + +void sma_prot_device::garouh_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(sma_prot_device::garouh_bankswitch_w),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + m_bankdev = bankdev; + + sma_install_random_read_handler(maincpu, 0x2fffcc, 0x2ffff0); +} + + +void sma_prot_device::mslug3_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffe4, 0x2fffe5, write16_delegate(FUNC(sma_prot_device::mslug3_bankswitch_w),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + m_bankdev = bankdev; + +// sma_install_random_read_handler(maincpu, 0x2ffff8, 0x2ffffa); +} + + +void sma_prot_device::kof2000_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) +{ + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffec, 0x2fffed, write16_delegate(FUNC(sma_prot_device::kof2000_bankswitch_w),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + m_bankdev = bankdev; + + sma_install_random_read_handler(maincpu, 0x2fffd8, 0x2fffda); +} + + + +/* kof99, garou, garouh, mslug3 and kof2000 have and SMA chip which contains program code and decrypts the 68k roms */ +void sma_prot_device::kof99_decrypt_68k(UINT8* base) +{ + UINT16 *rom; + int i,j; + + rom = (UINT16 *)(base + 0x100000); + /* swap data lines on the whole ROMs */ + for (i = 0;i < 0x800000/2;i++) + { + rom[i] = BITSWAP16(rom[i],13,7,3,0,9,4,5,6,1,12,8,14,10,11,2,15); + } + + /* swap address lines for the banked part */ + for (i = 0;i < 0x600000/2;i+=0x800/2) + { + UINT16 buffer[0x800/2]; + memcpy(buffer,&rom[i],0x800); + for (j = 0;j < 0x800/2;j++) + { + rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,6,2,4,9,8,3,1,7,0,5)]; + } + } + + /* swap address lines & relocate fixed part */ + rom = (UINT16 *)base; + for (i = 0;i < 0x0c0000/2;i++) + { + rom[i] = rom[0x700000/2 + BITSWAP24(i,23,22,21,20,19,18,11,6,14,17,16,5,8,10,12,0,4,3,2,7,9,15,13,1)]; + } +} + + +void sma_prot_device::garou_decrypt_68k(UINT8* base) +{ + UINT16 *rom; + int i,j; + + /* thanks to Razoola and Mr K for the info */ + rom = (UINT16 *)(base + 0x100000); + /* swap data lines on the whole ROMs */ + for (i = 0;i < 0x800000/2;i++) + { + rom[i] = BITSWAP16(rom[i],13,12,14,10,8,2,3,1,5,9,11,4,15,0,6,7); + } + + /* swap address lines & relocate fixed part */ + rom = (UINT16 *)base; + for (i = 0;i < 0x0c0000/2;i++) + { + rom[i] = rom[0x710000/2 + BITSWAP24(i,23,22,21,20,19,18,4,5,16,14,7,9,6,13,17,15,3,1,2,12,11,8,10,0)]; + } + + /* swap address lines for the banked part */ + rom = (UINT16 *)(base + 0x100000); + for (i = 0;i < 0x800000/2;i+=0x8000/2) + { + UINT16 buffer[0x8000/2]; + memcpy(buffer,&rom[i],0x8000); + for (j = 0;j < 0x8000/2;j++) + { + rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,9,4,8,3,13,6,2,7,0,12,1,11,10,5)]; + } + } +} + + +void sma_prot_device::garouh_decrypt_68k(UINT8* base) +{ + UINT16 *rom; + int i,j; + + /* thanks to Razoola and Mr K for the info */ + rom = (UINT16 *)(base + 0x100000); + /* swap data lines on the whole ROMs */ + for (i = 0;i < 0x800000/2;i++) + { + rom[i] = BITSWAP16(rom[i],14,5,1,11,7,4,10,15,3,12,8,13,0,2,9,6); + } + + /* swap address lines & relocate fixed part */ + rom = (UINT16 *)base; + for (i = 0;i < 0x0c0000/2;i++) + { + rom[i] = rom[0x7f8000/2 + BITSWAP24(i,23,22,21,20,19,18,5,16,11,2,6,7,17,3,12,8,14,4,0,9,1,10,15,13)]; + } + + /* swap address lines for the banked part */ + rom = (UINT16 *)(base + 0x100000); + for (i = 0;i < 0x800000/2;i+=0x8000/2) + { + UINT16 buffer[0x8000/2]; + memcpy(buffer,&rom[i],0x8000); + for (j = 0;j < 0x8000/2;j++) + { + rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,12,8,1,7,11,3,13,10,6,9,5,4,0,2)]; + } + } +} + + +void sma_prot_device::mslug3_decrypt_68k(UINT8* base) +{ + UINT16 *rom; + int i,j; + + /* thanks to Razoola and Mr K for the info */ + rom = (UINT16 *)(base + 0x100000); + /* swap data lines on the whole ROMs */ + for (i = 0;i < 0x800000/2;i++) + { + rom[i] = BITSWAP16(rom[i],4,11,14,3,1,13,0,7,2,8,12,15,10,9,5,6); + } + + /* swap address lines & relocate fixed part */ + rom = (UINT16 *)base; + for (i = 0;i < 0x0c0000/2;i++) + { + rom[i] = rom[0x5d0000/2 + BITSWAP24(i,23,22,21,20,19,18,15,2,1,13,3,0,9,6,16,4,11,5,7,12,17,14,10,8)]; + } + + /* swap address lines for the banked part */ + rom = (UINT16 *)(base + 0x100000); + for (i = 0;i < 0x800000/2;i+=0x10000/2) + { + UINT16 buffer[0x10000/2]; + memcpy(buffer,&rom[i],0x10000); + for (j = 0;j < 0x10000/2;j++) + { + rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,2,11,0,14,6,4,13,8,9,3,10,7,5,12,1)]; + } + } +} + + +void sma_prot_device::kof2000_decrypt_68k(UINT8* base) +{ + UINT16 *rom; + int i,j; + + /* thanks to Razoola and Mr K for the info */ + rom = (UINT16 *)(base + 0x100000); + /* swap data lines on the whole ROMs */ + for (i = 0;i < 0x800000/2;i++) + { + rom[i] = BITSWAP16(rom[i],12,8,11,3,15,14,7,0,10,13,6,5,9,2,1,4); + } + + /* swap address lines for the banked part */ + for (i = 0;i < 0x63a000/2;i+=0x800/2) + { + UINT16 buffer[0x800/2]; + memcpy(buffer,&rom[i],0x800); + for (j = 0;j < 0x800/2;j++) + { + rom[i+j] = buffer[BITSWAP24(j,23,22,21,20,19,18,17,16,15,14,13,12,11,10,4,1,3,8,6,2,7,0,9,5)]; + } + } + + /* swap address lines & relocate fixed part */ + rom = (UINT16 *)base; + for (i = 0;i < 0x0c0000/2;i++) + { + rom[i] = rom[0x73a000/2 + BITSWAP24(i,23,22,21,20,19,18,8,4,15,13,3,14,16,2,6,17,7,12,10,0,5,11,1,9)]; + } +} diff --git a/docs/release/src/hbmame/bus/neogeo/sma_prot.h b/docs/release/src/hbmame/bus/neogeo/sma_prot.h new file mode 100644 index 00000000000..37f7e82fbc1 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo/sma_prot.h @@ -0,0 +1,52 @@ +// license:BSD-3-Clause +// copyright-holders:S. Smith,David Haywood + + +#pragma once + +#include "banked_cart.h" + +#ifndef __SMA_PROT__ +#define __SMA_PROT__ + +extern const device_type SMA_PROT; + +#define MCFG_SMA_PROT_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, SMA_PROT, 0) + + +class sma_prot_device : public device_t +{ +public: + // construction/destruction + sma_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + + DECLARE_WRITE16_MEMBER( kof99_bankswitch_w ); + DECLARE_WRITE16_MEMBER( garou_bankswitch_w ); + DECLARE_WRITE16_MEMBER( garouh_bankswitch_w ); + DECLARE_WRITE16_MEMBER( mslug3_bankswitch_w ); + DECLARE_WRITE16_MEMBER( kof2000_bankswitch_w ); + DECLARE_READ16_MEMBER( prot_9a37_r ); + DECLARE_READ16_MEMBER( sma_random_r ); + void reset_sma_rng(); + void sma_install_random_read_handler(cpu_device* maincpu, int addr1, int addr2 ); + void kof99_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + void garou_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + void garouh_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + void mslug3_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + void kof2000_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev); + neogeo_banked_cart_device* m_bankdev; + void kof99_decrypt_68k(UINT8* base); + void garou_decrypt_68k(UINT8* base); + void garouh_decrypt_68k(UINT8* base); + void mslug3_decrypt_68k(UINT8* base); + void kof2000_decrypt_68k(UINT8* base); + + UINT16 m_sma_rng; +protected: + virtual void device_start() override; + virtual void device_reset() override; +}; + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp new file mode 100644 index 00000000000..d79410c060b --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp @@ -0,0 +1,221 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Controller Port emulation + + This actually covers two separate piece of hardware of Neo Geo system: + - The 15-pin controller ports that are used for controllers in the + AES home system and for mahjong controllers in the MVS arcade PCB + - The controller part of the main edge connector that is used for + joystick inputs in the MVS arcade PCB + + Technically, the latter is not a configurable slot, because it's not + a component that arcade operators could simply change with a different + controller, but this implementation allows for simpler code. + +**********************************************************************/ + +#include "ctrl.h" +// slot devices +#include "joystick.h" +#include "mahjong.h" +#include "dial.h" +#include "irrmaze.h" +#include "kizuna4p.h" + + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +const device_type NEOGEO_CONTROL_PORT = &device_creator<neogeo_control_port_device>; +const device_type NEOGEO_CTRL_EDGE_CONNECTOR = &device_creator<neogeo_ctrl_edge_port_device>; + + +//************************************************************************** +// CARD INTERFACE +//************************************************************************** + +//------------------------------------------------- +// device_neogeo_control_port_interface - constructor +//------------------------------------------------- + +device_neogeo_control_port_interface::device_neogeo_control_port_interface(const machine_config &mconfig, device_t &device) + : device_slot_card_interface(mconfig,device) +{ + m_port = dynamic_cast<neogeo_control_port_device *>(device.owner()); +} + + +//------------------------------------------------- +// ~device_neogeo_control_port_interface - destructor +//------------------------------------------------- + +device_neogeo_control_port_interface::~device_neogeo_control_port_interface() +{ +} + +//------------------------------------------------- +// device_neogeo_ctrl_edge_interface - constructor +//------------------------------------------------- + +device_neogeo_ctrl_edge_interface::device_neogeo_ctrl_edge_interface(const machine_config &mconfig, device_t &device) + : device_slot_card_interface(mconfig,device) +{ + m_port = dynamic_cast<neogeo_ctrl_edge_port_device *>(device.owner()); +} + + +//------------------------------------------------- +// ~device_neogeo_ctrl_edge_interface - destructor +//------------------------------------------------- + +device_neogeo_ctrl_edge_interface::~device_neogeo_ctrl_edge_interface() +{ +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_control_port_device - constructor +//------------------------------------------------- + +neogeo_control_port_device::neogeo_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_CONTROL_PORT, "SNK Neo Geo control port", tag, owner, clock, "neogeo_control_port", __FILE__), + device_slot_interface(mconfig, *this), m_device(nullptr) +{ +} + + +//------------------------------------------------- +// ~neogeo_control_port_device - destructor +//------------------------------------------------- + +neogeo_control_port_device::~neogeo_control_port_device() +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_control_port_device::device_start() +{ + m_device = dynamic_cast<device_neogeo_control_port_interface *>(get_card_device()); +} + + +UINT8 neogeo_control_port_device::read_ctrl() +{ + UINT8 data = 0xff; + if (m_device) + data &= m_device->read_ctrl(); + return data; +} + +UINT8 neogeo_control_port_device::read_start_sel() +{ + UINT8 data = 0xff; + if (m_device) + data &= m_device->read_start_sel(); + return data; +} + + +void neogeo_control_port_device::write_ctrlsel(UINT8 data) +{ + if (m_device) + m_device->write_ctrlsel(data); +} + + +//------------------------------------------------- +// neogeo_ctrl_edge_port_device - constructor +//------------------------------------------------- + +neogeo_ctrl_edge_port_device::neogeo_ctrl_edge_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_CTRL_EDGE_CONNECTOR, "SNK Neo Geo Edge Connector (Controller)", tag, owner, clock, "neogeo_ctrl_edge", __FILE__), + device_slot_interface(mconfig, *this), m_device(nullptr) +{ +} + + +//------------------------------------------------- +// ~neogeo_ctrl_edge_port_device - destructor +//------------------------------------------------- + +neogeo_ctrl_edge_port_device::~neogeo_ctrl_edge_port_device() +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_ctrl_edge_port_device::device_start() +{ + m_device = dynamic_cast<device_neogeo_ctrl_edge_interface *>(get_card_device()); +} + + +READ8_MEMBER(neogeo_ctrl_edge_port_device::in0_r) +{ + UINT8 data = 0xff; + if (m_device) + data &= m_device->in0_r(space, offset, mem_mask); + return data; +} + +READ8_MEMBER(neogeo_ctrl_edge_port_device::in1_r) +{ + UINT8 data = 0xff; + if (m_device) + data &= m_device->in1_r(space, offset, mem_mask); + return data; +} + +UINT8 neogeo_ctrl_edge_port_device::read_start_sel() +{ + UINT8 data = 0xff; + if (m_device) + data &= m_device->read_start_sel(); + return data; +} + +void neogeo_ctrl_edge_port_device::write_ctrlsel(UINT8 data) +{ + if (m_device) + m_device->write_ctrlsel(data); +} + + + +//------------------------------------------------- +// SLOT_INTERFACE( neogeo_control_port_devices ) +//------------------------------------------------- + +SLOT_INTERFACE_START( neogeo_controls ) + SLOT_INTERFACE("joy", NEOGEO_JOY) + SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL) +SLOT_INTERFACE_END + +SLOT_INTERFACE_START( neogeo_arc_edge ) + SLOT_INTERFACE("joy", NEOGEO_JOY_AC) +SLOT_INTERFACE_END + +SLOT_INTERFACE_START( neogeo_arc_edge_fixed ) + SLOT_INTERFACE("joy", NEOGEO_JOY_AC) + SLOT_INTERFACE("dial", NEOGEO_DIAL) + SLOT_INTERFACE("irrmaze", NEOGEO_IRRMAZE) + SLOT_INTERFACE("kiz4p", NEOGEO_KIZ4P) +SLOT_INTERFACE_END + +SLOT_INTERFACE_START( neogeo_arc_pin15 ) + SLOT_INTERFACE("mahjong", NEOGEO_MJCTRL) +SLOT_INTERFACE_END diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h new file mode 100644 index 00000000000..1d61e6753d1 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h @@ -0,0 +1,130 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo controller port emulation + +**********************************************************************/ + + +#pragma once + +#ifndef __NEOGEO_CONTROL_PORT__ +#define __NEOGEO_CONTROL_PORT__ + +#include "emu.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class neogeo_control_port_device; +class neogeo_ctrl_edge_port_device; + +// ======================> device_neogeo_control_port_interface + +class device_neogeo_control_port_interface : public device_slot_card_interface +{ +public: + // construction/destruction + device_neogeo_control_port_interface(const machine_config &mconfig, device_t &device); + virtual ~device_neogeo_control_port_interface(); + + virtual UINT8 read_ctrl() { return 0xff; }; + virtual UINT8 read_start_sel() { return 0xff; }; + virtual void write_ctrlsel(UINT8 data) { }; + +protected: + neogeo_control_port_device *m_port; +}; + +// ======================> neogeo_control_port_device + +class neogeo_control_port_device : public device_t, + public device_slot_interface +{ +public: + // construction/destruction + neogeo_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ~neogeo_control_port_device(); + + UINT8 read_ctrl(); + UINT8 read_start_sel(); + void write_ctrlsel(UINT8 data); + DECLARE_READ8_MEMBER( ctrl_r ) { return read_ctrl(); } + +protected: + // device-level overrides + virtual void device_start() override; + + device_neogeo_control_port_interface *m_device; +}; + + +// ======================> device_neogeo_ctrl_edge_interface + +class device_neogeo_ctrl_edge_interface : public device_slot_card_interface +{ +public: + // construction/destruction + device_neogeo_ctrl_edge_interface(const machine_config &mconfig, device_t &device); + virtual ~device_neogeo_ctrl_edge_interface(); + + virtual UINT8 read_start_sel() { return 0xff; } + virtual DECLARE_READ8_MEMBER( in0_r ) { return 0xff; } + virtual DECLARE_READ8_MEMBER( in1_r ) { return 0xff; } + virtual void write_ctrlsel(UINT8 data) { } + +protected: + neogeo_ctrl_edge_port_device *m_port; +}; + +// ======================> neogeo_ctrl_edge_port_device + +class neogeo_ctrl_edge_port_device : public device_t, + public device_slot_interface +{ +public: + // construction/destruction + neogeo_ctrl_edge_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual ~neogeo_ctrl_edge_port_device(); + + UINT8 read_start_sel(); + DECLARE_READ8_MEMBER( in0_r ); + DECLARE_READ8_MEMBER( in1_r ); + void write_ctrlsel(UINT8 data); + +protected: + // device-level overrides + virtual void device_start() override; + + device_neogeo_ctrl_edge_interface *m_device; +}; + + +// device type definition +extern const device_type NEOGEO_CONTROL_PORT; +extern const device_type NEOGEO_CTRL_EDGE_CONNECTOR; + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_NEOGEO_CONTROL_PORT_ADD(_tag, _slot_intf, _def_slot, _fixed) \ + MCFG_DEVICE_ADD(_tag, NEOGEO_CONTROL_PORT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) + +#define MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD(_tag, _slot_intf, _def_slot, _fixed) \ + MCFG_DEVICE_ADD(_tag, NEOGEO_CTRL_EDGE_CONNECTOR, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _fixed) + + + +SLOT_INTERFACE_EXTERN( neogeo_controls ); +SLOT_INTERFACE_EXTERN( neogeo_arc_edge ); +SLOT_INTERFACE_EXTERN( neogeo_arc_edge_fixed ); +SLOT_INTERFACE_EXTERN( neogeo_arc_pin15 ); + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp new file mode 100644 index 00000000000..d73a7b6c8de --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp @@ -0,0 +1,131 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Dial Controller emulation + +**********************************************************************/ + +#include "dial.h" + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type NEOGEO_DIAL = &device_creator<neogeo_dial_device>; + + +static INPUT_PORTS_START( neogeo_dial ) + PORT_START("JOY1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) + PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) /* note it needs it from 0x80 when using paddle */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + + PORT_START("JOY2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) + PORT_BIT( 0x90, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) /* note it needs it from 0x80 when using paddle */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + + PORT_START("DIAL1") + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(1) + + PORT_START("DIAL2") + PORT_BIT( 0xff, 0x00, IPT_DIAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_PLAYER(2) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor neogeo_dial_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( neogeo_dial ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_dial_device - constructor +//------------------------------------------------- + +neogeo_dial_device::neogeo_dial_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_DIAL, "SNK Neo Geo Dial Controller", tag, owner, clock, "neogeo_dial", __FILE__), + device_neogeo_ctrl_edge_interface(mconfig, *this), + m_joy1(*this, "JOY1"), + m_joy2(*this, "JOY2"), + m_dial1(*this, "DIAL1"), + m_dial2(*this, "DIAL2") +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_dial_device::device_start() +{ + save_item(NAME(m_ctrl_sel)); +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void neogeo_dial_device::device_reset() +{ + m_ctrl_sel = 0; +} + + +//------------------------------------------------- +// in0_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_dial_device::in0_r) +{ + UINT8 res = 0; + if (m_ctrl_sel & 0x01) + res = m_joy1->read(); + else + res = m_dial1->read(); + + return res; +} + +//------------------------------------------------- +// in1_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_dial_device::in1_r) +{ + UINT8 res = 0; + if (m_ctrl_sel & 0x01) + res = m_joy2->read(); + else + res = m_dial2->read(); + + return res; +} + +//------------------------------------------------- +// write_ctrlsel +//------------------------------------------------- + +void neogeo_dial_device::write_ctrlsel(UINT8 data) +{ + m_ctrl_sel = data; +} diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h new file mode 100644 index 00000000000..5727c540637 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h @@ -0,0 +1,58 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Dial controller emulation + +**********************************************************************/ + +#pragma once + +#ifndef __NEOGEO_DIAL__ +#define __NEOGEO_DIAL__ + + +#include "emu.h" +#include "ctrl.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> neogeo_dial_device + +class neogeo_dial_device : public device_t, + public device_neogeo_ctrl_edge_interface +{ +public: + // construction/destruction + neogeo_dial_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // device_neogeo_control_port_interface overrides + virtual DECLARE_READ8_MEMBER( in0_r ) override; + virtual DECLARE_READ8_MEMBER( in1_r ) override; + virtual void write_ctrlsel(UINT8 data) override; + +private: + required_ioport m_joy1; + required_ioport m_joy2; + required_ioport m_dial1; + required_ioport m_dial2; + UINT8 m_ctrl_sel; +}; + + + +// device type definition +extern const device_type NEOGEO_DIAL; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp new file mode 100644 index 00000000000..e22941e5d09 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp @@ -0,0 +1,113 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Irritation Maze Analog Controller emulation + +**********************************************************************/ + +#include "irrmaze.h" + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type NEOGEO_IRRMAZE = &device_creator<neogeo_irrmaze_device>; + + +static INPUT_PORTS_START( neogeo_irrmaze ) + PORT_START("BUTTONS") + PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + + PORT_START("TRACK_X") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(10) PORT_KEYDELTA(20) PORT_REVERSE + + PORT_START("TRACK_Y") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(10) PORT_KEYDELTA(20) PORT_REVERSE +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor neogeo_irrmaze_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( neogeo_irrmaze ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_irrmaze_device - constructor +//------------------------------------------------- + +neogeo_irrmaze_device::neogeo_irrmaze_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_IRRMAZE, "SNK Neo Geo Irritating Maze Analog Controller", tag, owner, clock, "neogeo_irrmaze", __FILE__), + device_neogeo_ctrl_edge_interface(mconfig, *this), + m_tx(*this, "TRACK_X"), + m_ty(*this, "TRACK_Y"), + m_buttons(*this, "BUTTONS") +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_irrmaze_device::device_start() +{ + save_item(NAME(m_ctrl_sel)); +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void neogeo_irrmaze_device::device_reset() +{ + m_ctrl_sel = 0; +} + + +//------------------------------------------------- +// in0_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_irrmaze_device::in0_r) +{ + UINT8 res = 0; + if (m_ctrl_sel & 0x01) + res = m_ty->read(); + else + res = m_tx->read(); + + return res; +} + +//------------------------------------------------- +// in1_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_irrmaze_device::in1_r) +{ + return m_buttons->read(); +} + +//------------------------------------------------- +// write_ctrlsel +//------------------------------------------------- + +void neogeo_irrmaze_device::write_ctrlsel(UINT8 data) +{ + m_ctrl_sel = data; +} diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h new file mode 100644 index 00000000000..0eeecfb8a11 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h @@ -0,0 +1,57 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Dial controller emulation + +**********************************************************************/ + +#pragma once + +#ifndef __NEOGEO_IRRMAZE__ +#define __NEOGEO_IRRMAZE__ + + +#include "emu.h" +#include "ctrl.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> neogeo_dial_device + +class neogeo_irrmaze_device : public device_t, + public device_neogeo_ctrl_edge_interface +{ +public: + // construction/destruction + neogeo_irrmaze_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // device_neogeo_control_port_interface overrides + virtual DECLARE_READ8_MEMBER( in0_r ) override; + virtual DECLARE_READ8_MEMBER( in1_r ) override; + virtual void write_ctrlsel(UINT8 data) override; + +private: + required_ioport m_tx; + required_ioport m_ty; + required_ioport m_buttons; + UINT8 m_ctrl_sel; +}; + + + +// device type definition +extern const device_type NEOGEO_IRRMAZE; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp new file mode 100644 index 00000000000..f30b4fa2102 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp @@ -0,0 +1,205 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Joystick emulation + +**********************************************************************/ + +#include "joystick.h" + + + +/********************************************************************** + + Implementation through the 15-pin controller port (used by AES) + + **********************************************************************/ + + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type NEOGEO_JOY = &device_creator<neogeo_joystick_device>; + + +static INPUT_PORTS_START( neogeo_joy ) + PORT_START("JOY") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) + + PORT_START("START_SELECT") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SELECT ) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor neogeo_joystick_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( neogeo_joy ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_joystick_device - constructor +//------------------------------------------------- + +neogeo_joystick_device::neogeo_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_JOY, "SNK Neo Geo Joystick", tag, owner, clock, "neogeo_joy", __FILE__), + device_neogeo_control_port_interface(mconfig, *this), + m_joy(*this, "JOY"), + m_ss(*this, "START_SELECT") +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_joystick_device::device_start() +{ +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void neogeo_joystick_device::device_reset() +{ +} + + +//------------------------------------------------- +// read_ctrl +//------------------------------------------------- + +UINT8 neogeo_joystick_device::read_ctrl() +{ + return m_joy->read(); +} + +//------------------------------------------------- +// read_start_sel +//------------------------------------------------- + +UINT8 neogeo_joystick_device::read_start_sel() +{ + return m_ss->read(); +} + + + +/********************************************************************** + + Implementation through the edge connector (used by MVS) and + connecting two controllers + + **********************************************************************/ + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type NEOGEO_JOY_AC = &device_creator<neogeo_joy_ac_device>; + + +static INPUT_PORTS_START( neogeo_joy_ac ) + PORT_START("JOY1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + + PORT_START("JOY2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor neogeo_joy_ac_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( neogeo_joy_ac ); +} + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_joy_ac_device / neogeo_joystick_device - constructor +//------------------------------------------------- + +neogeo_joy_ac_device::neogeo_joy_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_JOY_AC, "SNK Neo Geo Arcade Joystick", tag, owner, clock, "neogeo_joyac", __FILE__), + device_neogeo_ctrl_edge_interface(mconfig, *this), + m_joy1(*this, "JOY1"), + m_joy2(*this, "JOY2") +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_joy_ac_device::device_start() +{ +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void neogeo_joy_ac_device::device_reset() +{ +} + + +//------------------------------------------------- +// in0_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_joy_ac_device::in0_r) +{ + return m_joy1->read(); +} + +//------------------------------------------------- +// in1_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_joy_ac_device::in1_r) +{ + return m_joy2->read(); +} diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h new file mode 100644 index 00000000000..86cccd6fef8 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h @@ -0,0 +1,81 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Joystick emulation + +**********************************************************************/ + +#pragma once + +#ifndef __NEOGEO_JOYSTICK__ +#define __NEOGEO_JOYSTICK__ + + +#include "emu.h" +#include "ctrl.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> neogeo_joystick_device + +class neogeo_joystick_device : public device_t, + public device_neogeo_control_port_interface +{ +public: + // construction/destruction + neogeo_joystick_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // device_neogeo_control_port_interface overrides + virtual UINT8 read_ctrl() override; + virtual UINT8 read_start_sel() override; + +private: + required_ioport m_joy; + required_ioport m_ss; +}; + + +// ======================> neogeo_joy_ac_device + +class neogeo_joy_ac_device : public device_t, + public device_neogeo_ctrl_edge_interface +{ +public: + // construction/destruction + neogeo_joy_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // device_neogeo_ctrl_edge_interface overrides + virtual DECLARE_READ8_MEMBER( in0_r ) override; + virtual DECLARE_READ8_MEMBER( in1_r ) override; + +private: + required_ioport m_joy1; + required_ioport m_joy2; +}; + + +// device type definition +extern const device_type NEOGEO_JOY; +extern const device_type NEOGEO_JOY_AC; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp new file mode 100644 index 00000000000..b6b93089fe4 --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp @@ -0,0 +1,171 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Kizuna 4Players Controller emulation + +**********************************************************************/ + +#include "kizuna4p.h" + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type NEOGEO_KIZ4P = &device_creator<neogeo_kizuna4p_device>; + + +static INPUT_PORTS_START( neogeo_kiz4p ) + PORT_START("JOY1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) + + PORT_START("JOY2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) + + PORT_START("JOY3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(3) + + PORT_START("JOY4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(4) + + PORT_START("START13") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START3 ) + + PORT_START("START24") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START4 ) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor neogeo_kizuna4p_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( neogeo_kiz4p ); +} + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_kizuna4p_device - constructor +//------------------------------------------------- + +neogeo_kizuna4p_device::neogeo_kizuna4p_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_KIZ4P, "SNK Neo Geo Kizuna 4P Controller", tag, owner, clock, "neogeo_kiz4p", __FILE__), + device_neogeo_ctrl_edge_interface(mconfig, *this), + m_joy1(*this, "JOY1"), + m_joy2(*this, "JOY2"), + m_joy3(*this, "JOY3"), + m_joy4(*this, "JOY4"), + m_ss1(*this, "START13"), + m_ss2(*this, "START24") +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_kizuna4p_device::device_start() +{ + save_item(NAME(m_ctrl_sel)); +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void neogeo_kizuna4p_device::device_reset() +{ + m_ctrl_sel = 0; +} + + +//------------------------------------------------- +// in0_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_kizuna4p_device::in0_r) +{ + UINT8 res = 0; + if (m_ctrl_sel & 0x01) + res = m_joy3->read(); + else + res = m_joy1->read(); + + if (m_ctrl_sel & 0x04) res &= ((m_ctrl_sel & 0x01) ? ~0x20 : ~0x10); + + return res; +} + +//------------------------------------------------- +// in1_r +//------------------------------------------------- + +READ8_MEMBER(neogeo_kizuna4p_device::in1_r) +{ + UINT8 res = 0; + if (m_ctrl_sel & 0x01) + res = m_joy4->read(); + else + res = m_joy2->read(); + + if (m_ctrl_sel & 0x04) res &= ((m_ctrl_sel & 0x01) ? ~0x20 : ~0x10); + + return res; +} + +//------------------------------------------------- +// read_start_sel +//------------------------------------------------- + +UINT8 neogeo_kizuna4p_device::read_start_sel() +{ + return (BIT(m_ss1->read(), m_ctrl_sel & 0x01)) | (BIT(m_ss2->read(), m_ctrl_sel & 0x01) << 2); +} + + +//------------------------------------------------- +// write_ctrlsel +//------------------------------------------------- + +void neogeo_kizuna4p_device::write_ctrlsel(UINT8 data) +{ + m_ctrl_sel = data; +} diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h new file mode 100644 index 00000000000..7a3907f98db --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h @@ -0,0 +1,61 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Kizuna 4Players controller emulation + +**********************************************************************/ + +#pragma once + +#ifndef __NEOGEO_KIZ4P__ +#define __NEOGEO_KIZ4P__ + + +#include "emu.h" +#include "ctrl.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> neogeo_kizuna4p_device + +class neogeo_kizuna4p_device : public device_t, + public device_neogeo_ctrl_edge_interface +{ +public: + // construction/destruction + neogeo_kizuna4p_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // device_neogeo_control_port_interface overrides + virtual DECLARE_READ8_MEMBER( in0_r ) override; + virtual DECLARE_READ8_MEMBER( in1_r ) override; + virtual UINT8 read_start_sel() override; + virtual void write_ctrlsel(UINT8 data) override; + +private: + required_ioport m_joy1; + required_ioport m_joy2; + required_ioport m_joy3; + required_ioport m_joy4; + required_ioport m_ss1; + required_ioport m_ss2; + UINT8 m_ctrl_sel; +}; + + + +// device type definition +extern const device_type NEOGEO_KIZ4P; + + +#endif diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp new file mode 100644 index 00000000000..5a58daf6bee --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp @@ -0,0 +1,173 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Mahjong controller emulation + +**********************************************************************/ + +#include "mahjong.h" + +//************************************************************************** +// DEVICE DEFINITIONS +//************************************************************************** + +const device_type NEOGEO_MJCTRL_AC = &device_creator<neogeo_mjctrl_ac_device>; +const device_type NEOGEO_MJCTRL = &device_creator<neogeo_mjctrl_device>; + + +static INPUT_PORTS_START( neogeo_mj_ac ) + PORT_START("MJ.0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_B ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_C ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_D ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_F ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_G ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("MJ.1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_H ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_I ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_L ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_M ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_MAHJONG_N ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) + + // is this actually connected? + PORT_START("MJ.2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) + + PORT_START("MJ.3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + + +static INPUT_PORTS_START( neogeo_mj ) + PORT_INCLUDE( neogeo_mj_ac ) + + PORT_START("START_SELECT") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT ) +INPUT_PORTS_END + + +//------------------------------------------------- +// input_ports - device-specific input ports +//------------------------------------------------- + +ioport_constructor neogeo_mjctrl_ac_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( neogeo_mj_ac ); +} + +ioport_constructor neogeo_mjctrl_device::device_input_ports() const +{ + return INPUT_PORTS_NAME( neogeo_mj ); +} + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +//------------------------------------------------- +// neogeo_joystick_device - constructor +//------------------------------------------------- + +neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source): + device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_neogeo_control_port_interface(mconfig, *this), + m_mjpanel(*this, "MJ") +{ +} + +neogeo_mjctrl_ac_device::neogeo_mjctrl_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, NEOGEO_MJCTRL_AC, "SNK Neo Geo Arcade Mahjong panel", tag, owner, clock, "neogeo_mjac", __FILE__), + device_neogeo_control_port_interface(mconfig, *this), + m_mjpanel(*this, "MJ") +{ +} + +neogeo_mjctrl_device::neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + neogeo_mjctrl_ac_device(mconfig, NEOGEO_MJCTRL, "SNK Neo Geo Mahjong controller", tag, owner, clock, "neogeo_mjctrl", __FILE__), + m_ss(*this, "START_SELECT") +{ +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void neogeo_mjctrl_ac_device::device_start() +{ + save_item(NAME(m_ctrl_sel)); +} + + +//------------------------------------------------- +// device_reset - device-specific reset +//------------------------------------------------- + +void neogeo_mjctrl_ac_device::device_reset() +{ + m_ctrl_sel = 0; +} + + +//------------------------------------------------- +// read_ctrl +//------------------------------------------------- + +UINT8 neogeo_mjctrl_ac_device::read_ctrl() +{ + UINT8 res = 0; + switch (m_ctrl_sel) + { + default: + case 0x00: res = 0xff; break; + case 0x09: res = m_mjpanel[0]->read(); break; + case 0x12: res = m_mjpanel[1]->read(); break; + case 0x1b: res = m_mjpanel[2]->read(); break; + case 0x24: res = m_mjpanel[3]->read(); break; + } + + return res; +} + +//------------------------------------------------- +// write_ctrlsel +//------------------------------------------------- + +void neogeo_mjctrl_ac_device::write_ctrlsel(UINT8 data) +{ + m_ctrl_sel = data; +} + +//------------------------------------------------- +// read_start_sel +//------------------------------------------------- + +UINT8 neogeo_mjctrl_device::read_start_sel() +{ + return m_ss->read(); +} diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h new file mode 100644 index 00000000000..52812a9917e --- /dev/null +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h @@ -0,0 +1,75 @@ +// license:BSD-3-Clause +// copyright-holders:Fabio Priuli +/********************************************************************** + + SNK Neo Geo Mahjong controller emulation + +**********************************************************************/ + +#pragma once + +#ifndef __NEOGEO_MJCTRL__ +#define __NEOGEO_MJCTRL__ + + +#include "emu.h" +#include "ctrl.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> neogeo_mjctrl_ac_device + +class neogeo_mjctrl_ac_device : public device_t, + public device_neogeo_control_port_interface +{ +public: + // construction/destruction + neogeo_mjctrl_ac_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + neogeo_mjctrl_ac_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + +protected: + // device-level overrides + virtual void device_start() override; + virtual void device_reset() override; + + // device_neogeo_control_port_interface overrides + virtual UINT8 read_ctrl() override; + virtual void write_ctrlsel(UINT8 data) override; + +private: + required_ioport_array<4> m_mjpanel; + UINT8 m_ctrl_sel; +}; + +// ======================> neogeo_mjctrl_device + +class neogeo_mjctrl_device : public neogeo_mjctrl_ac_device +{ +public: + // construction/destruction + neogeo_mjctrl_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual ioport_constructor device_input_ports() const override; + +protected: + + // device_neogeo_control_port_interface overrides + virtual UINT8 read_start_sel() override; + +private: + required_ioport m_ss; +}; + + +// device type definition +extern const device_type NEOGEO_MJCTRL; +extern const device_type NEOGEO_MJCTRL_AC; + + +#endif diff --git a/docs/release/src/hbmame/drivers/cps1mis.cpp b/docs/release/src/hbmame/drivers/cps1mis.cpp index 91d00fd70d9..9805dcf6e21 100644 --- a/docs/release/src/hbmame/drivers/cps1mis.cpp +++ b/docs/release/src/hbmame/drivers/cps1mis.cpp @@ -23,8 +23,6 @@ Issues: - wofjcn chinese language rom isn't working. Whatever is tried breaks stuff. -- wofjhb, wofjhc - not working - 2nd p rom is missing. *******************************************************************************************************************/ @@ -717,30 +715,117 @@ MACHINE_CONFIG_END ***********************************************************************/ +ROM_START( 3wondrud ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "3wondrud.30", 0x00000, 0x20000, CRC(b0953ff4) SHA1(79d0b68948a9b5be8eacd33810ddcf4fa08dbe71) ) + ROM_LOAD16_BYTE( "3wondrud.35", 0x00001, 0x20000, CRC(7695e8c6) SHA1(f78e7cb1098d77ce84d58a0d4509a77f5c483a77) ) + ROM_LOAD16_BYTE( "3wondrud.31", 0x40000, 0x20000, CRC(8cf00a3c) SHA1(dceb5bccf7c96802e7c228ea52f82fbb49388e0d) ) + ROM_LOAD16_BYTE( "3wondrud.36", 0x40001, 0x20000, CRC(b649ad19) SHA1(f91dad60a583a46f80e71bb23bfd051b3ed3fbe5) ) + ROM_LOAD16_BYTE( "rt_28a.9f", 0x80000, 0x20000, CRC(054137c8) SHA1(e4c406e0a32198323a5931093fbaa6836510b8ad) ) + ROM_LOAD16_BYTE( "rt_33a.9h", 0x80001, 0x20000, CRC(7264cb1b) SHA1(b367acb9f6579569321ecaa98a14e29dd775b9db) ) + ROM_LOAD16_BYTE( "rtu_29a.10f", 0xc0000, 0x20000, CRC(37ba3e20) SHA1(a128b1a17639b06a4fd8acffe0357f1dbd1d4fe9) ) + ROM_LOAD16_BYTE( "rtu_34a.10h", 0xc0001, 0x20000, CRC(f99f46c0) SHA1(cda24a6baa3f861e7078fb2fa91328cc1cddc866) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "rt-5m.7a", 0x000000, 0x80000, CRC(86aef804) SHA1(723927ef3bf992d12395c52db051ece7bf57d5e5) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rt-7m.9a", 0x000002, 0x80000, CRC(4f057110) SHA1(b7d35c883a74cf4bfb242d9f15a0e40ed1ec111f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rt-1m.3a", 0x000004, 0x80000, CRC(902489d0) SHA1(748ba416a8b9343059a3e7d8b93f02162feb1d0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rt-3m.5a", 0x000006, 0x80000, CRC(e35ce720) SHA1(6c1a87a1f819bdc20408b5a7823cf35a79d34110) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rt-6m.8a", 0x200000, 0x80000, CRC(13cb0e7c) SHA1(e429d594d9a7ff4cc6306e2796a9d6ad0fa25569) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rt-8m.10a", 0x200002, 0x80000, CRC(1f055014) SHA1(d64f5be9bb2ef761ca9b2e797dbc3554cf996a79) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rt-2m.4a", 0x200004, 0x80000, CRC(e9a034f4) SHA1(deb4cb5886705380b57d4fe9b9bf3c032e1d6227) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rt-4m.6a", 0x200006, 0x80000, CRC(df0eea8b) SHA1(5afa05654cccb0504bd44569d42fd68f08fd172f) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "rt_9.12b", 0x00000, 0x08000, CRC(abfca165) SHA1(428069d3bdc45775854cd0e8abe447f134fe5492) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "rt_18.11c", 0x00000, 0x20000, CRC(26b211ab) SHA1(0ea03fdd9edff41eacfc52aa9e0421c10968356b) ) + ROM_LOAD( "rt_19.12c", 0x20000, 0x20000, CRC(dbe64ad0) SHA1(09f2ad522fe75d7bcca094b8c6696c3733b539d5) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "rt24b.1a", 0x0000, 0x0117, CRC(54b85159) SHA1(c6f4fb5d747a215f4f50e4f2258e35d3f9bdbb2e) ) + ROM_LOAD_OPTIONAL( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) + + ROM_REGION( 0x0200, "cboardplds", 0 ) + ROM_LOAD_OPTIONAL( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) +ROM_END + + +ROM_START( captcocc ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP("captcocc.23", 0x000000, 0x80000, CRC(1e5c9f79) SHA1(09f7356b5badae26f24a2afac2cbe0d8e0c9481a) ) + ROM_LOAD16_WORD_SWAP("captcocc.22", 0x080000, 0x80000, CRC(6ea50796) SHA1(62d0cd0203c2bb75bd0b69e3b25a492c37658da4) ) + ROM_LOAD16_BYTE( "cc_24f.9e", 0x100000, 0x20000, CRC(3a794f25) SHA1(7f3722a4ef0c1d7acb73e6bac9dd6ae7b35e6374) ) + ROM_LOAD16_BYTE( "cc_28f.9f", 0x100001, 0x20000, CRC(fc3c2906) SHA1(621c3b79b6fdea1665bb316eb539e5916e890656) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) ) + ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) + ROM_LOAD_OPTIONAL( "ccprg1.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) + + ROM_REGION( 0x0200, "cboardplds", 0 ) + ROM_LOAD_OPTIONAL( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) + ROM_LOAD_OPTIONAL( "c632b.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) +ROM_END + ROM_START( captcomc ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "cc23", 0x000000, 0x80000, CRC(a5e73e49) SHA1(7bb75fa0e1122a85a421c50607c0ad57a387783e) ) - ROM_LOAD16_WORD_SWAP( "cc22", 0x080000, 0x80000, CRC(919777c5) SHA1(2bd9b1527e8486ae89ddcdb0694c63c5859080b6) ) // == cc_22f.7f - ROM_LOAD16_BYTE( "cc24", 0x100000, 0x20000, CRC(f3d6f147) SHA1(937822148c0f6f295d468024ce7887ee0353e669) ) // == cc_24f.9e - ROM_LOAD16_BYTE( "cc28", 0x100001, 0x20000, CRC(f1c9bf8a) SHA1(545f494106ccce6ccbbe6fa042cf0ee6df03e8dc) ) // == cc_28f.9f + ROM_LOAD16_WORD_SWAP( "cc22", 0x080000, 0x80000, CRC(919777c5) SHA1(2bd9b1527e8486ae89ddcdb0694c63c5859080b6) ) + ROM_LOAD16_BYTE( "cc24", 0x100000, 0x20000, CRC(f3d6f147) SHA1(937822148c0f6f295d468024ce7887ee0353e669) ) + ROM_LOAD16_BYTE( "cc28", 0x100001, 0x20000, CRC(f1c9bf8a) SHA1(545f494106ccce6ccbbe6fa042cf0ee6df03e8dc) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "cc_01.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-5m.3a - ROMX_LOAD( "cc_02.4a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-7m.5a - ROMX_LOAD( "cc_03.5a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-1m.4a - ROMX_LOAD( "cc_04.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-3m.6a - ROMX_LOAD( "gfx_05.rom", 0x200000, 0x80000, CRC(e4282bc0) SHA1(fe6012a8afcaec5747194bedfa73284bb28300a4) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-6m.7a - ROMX_LOAD( "gfx_07.rom", 0x200002, 0x80000, CRC(8b0ef34c) SHA1(13a696856432b2f345cd2b2059e95179c78bd70a) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-2m.8a - ROMX_LOAD( "gfx_06.rom", 0x200004, 0x80000, CRC(2d7bee50) SHA1(a25bcfa99c4dda52469f7dc8fec24287c97deb84) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-8m.9a - ROMX_LOAD( "gfx_08.rom", 0x200006, 0x80000, CRC(0106bf6a) SHA1(8e23418c58c4ffb8dd4dac93b92b23c406d60a62) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cc-4m.10a - - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ - ROM_LOAD( "ccj_09.12a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) // == cc_09.11a + ROMX_LOAD( "cc_01.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc_02.4a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc_03.5a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc_04.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "gfx_05.rom", 0x200000, 0x80000, CRC(e4282bc0) SHA1(fe6012a8afcaec5747194bedfa73284bb28300a4) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "gfx_07.rom", 0x200002, 0x80000, CRC(8b0ef34c) SHA1(13a696856432b2f345cd2b2059e95179c78bd70a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "gfx_06.rom", 0x200004, 0x80000, CRC(2d7bee50) SHA1(a25bcfa99c4dda52469f7dc8fec24287c97deb84) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "gfx_08.rom", 0x200006, 0x80000, CRC(0106bf6a) SHA1(8e23418c58c4ffb8dd4dac93b92b23c406d60a62) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "ccj_09.12a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ - ROM_LOAD( "ccj_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) // == cc_18.11c - ROM_LOAD( "ccj_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) // == cc_19.12c + ROM_LOAD( "ccj_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "ccj_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) ROM_REGION( 0x0200, "aboardplds", 0 ) ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) @@ -752,11 +837,11 @@ ROM_START( captcomc ) ROM_REGION( 0x0200, "bboardplds", 0 ) ROM_LOAD_OPTIONAL( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) ) ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) - ROM_LOAD_OPTIONAL( "ccprg.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) /* seen the same pcb with CCPRG1.11D */ + ROM_LOAD_OPTIONAL( "ccprg.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) ROM_REGION( 0x0200, "cboardplds", 0 ) ROM_LOAD_OPTIONAL( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) - ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) /* seen the same pcb with C632B.IC1 */ + ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) ROM_END ROM_START( captcomh ) @@ -794,13 +879,98 @@ ROM_START( captcomh ) ROM_REGION( 0x0200, "bboardplds", 0 ) ROM_LOAD_OPTIONAL( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) ) ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) - ROM_LOAD_OPTIONAL( "ccprg.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) /* seen the same pcb with CCPRG1.11D */ + ROM_LOAD_OPTIONAL( "ccprg.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) + + ROM_REGION( 0x0200, "cboardplds", 0 ) + ROM_LOAD_OPTIONAL( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) + ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) +ROM_END + +ROM_START( captcoud ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP("captcoud.23", 0x000000, 0x80000, CRC(1d338c25) SHA1(4aba7e5a78bf20d887b3493e0d2a83098f877f9f) ) + ROM_LOAD16_WORD_SWAP("captcoud.22", 0x080000, 0x80000, CRC(c5310f13) SHA1(97a3751630f10cf67515200ce435c34fda1d9a52) ) + ROM_LOAD16_BYTE( "ccu_24b.9e", 0x100000, 0x20000, CRC(84ff99b2) SHA1(5b02c91f3d0f8fb46db9596136b683f5a22dc15f) ) + ROM_LOAD16_BYTE( "ccu_28b.9f", 0x100001, 0x20000, CRC(fbcec223) SHA1(daf484baece5b3a11f3dcabb758b8bdd736a1fb6) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) ) + ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) + ROM_LOAD_OPTIONAL( "ccprg1.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) + + ROM_REGION( 0x0200, "cboardplds", 0 ) + ROM_LOAD_OPTIONAL( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) + ROM_LOAD_OPTIONAL( "c632b.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) +ROM_END + +ROM_START( captcovs ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP("captcovs.23", 0x000000, 0x80000, CRC(c1ad4e2a) SHA1(0b7843fec92261b2e727147aa6df60f4b5fc8fc7) ) + ROM_LOAD16_WORD_SWAP("captcovs.22", 0x080000, 0x80000, CRC(8e19a05a) SHA1(b60dd9b1693630e9e3fe73c1b3f8a026945fb23d) ) + ROM_LOAD16_BYTE( "cc_24f.9e", 0x100000, 0x20000, CRC(3a794f25) SHA1(7f3722a4ef0c1d7acb73e6bac9dd6ae7b35e6374) ) + ROM_LOAD16_BYTE( "cc_28f.9f", 0x100001, 0x20000, CRC(fc3c2906) SHA1(621c3b79b6fdea1665bb316eb539e5916e890656) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "cc63b.1a", 0x0000, 0x0117, CRC(cae8f0f9) SHA1(eadbd45e184195b2d170cd71a68e5caed64b69f7) ) + ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) + ROM_LOAD_OPTIONAL( "ccprg1.11d", 0x0000, 0x0117, CRC(e1c225c4) SHA1(97146451ca9aa3cecd443cc6881151ed8df47fbf) ) ROM_REGION( 0x0200, "cboardplds", 0 ) ROM_LOAD_OPTIONAL( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) - ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) /* seen the same pcb with C632B.IC1 */ + ROM_LOAD_OPTIONAL( "c632b.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) ROM_END + ROM_START( cps1demo ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "cd30-36.bin", 0x00000, 0x20000, CRC(5eb617d6) SHA1(9d4656d2b29244eb2a01058f5b80752d94065a6e) ) @@ -813,7 +983,7 @@ ROM_START( cps1demo ) ROMX_LOAD( "cd01-01m.bin", 0x000004, 0x80000, CRC(3ad8e790) SHA1(a371edc81a48903d13ed8938dca450dab986b413) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "cd03-03m.bin", 0x000006, 0x80000, CRC(fb5186f3) SHA1(b20031c01b6be2a4987553c0ab19105714bf9299) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "ff09-09.bin", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -834,7 +1004,7 @@ ROM_START( cps1frog ) ROMX_LOAD( "frog01-01m.bin", 0x000004, 0x80000, CRC(f84d02bb) SHA1(b89322ab65a3b3e8202c27af62de2b182a4ed2e9) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "frog03-03m.bin", 0x000006, 0x80000, CRC(d784a5b0) SHA1(8891bb8fc39f51db200c51e2a65961c351d655c2) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "frog09-09.bin", 0x00000, 0x08000, CRC(3ac7fb5c) SHA1(01057078b67dc82d80403533a3dca3deb95f166c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -863,7 +1033,7 @@ ROM_START( cps1test ) ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -896,24 +1066,24 @@ ROM_START( cps1testa ) ROM_REGION( 0x800000, "gfx", 0 ) ROMX_LOAD( "rcm_01.3a", 0x000000, 0x80000, CRC(6ecdf13f) SHA1(2a8fe06bf5011e3f990f90d9224f91d8631ec0cc) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "rcm_02.4a", 0x000002, 0x80000, CRC(944d4f0f) SHA1(665dc9a537e9c9b565f6136f939ff5c2861f875f) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_03.5a - ROMX_LOAD( "rcm_03.5a", 0x000004, 0x80000, CRC(36f3073c) SHA1(457d68e63599d06a136e152a9ad60adac1c91edd) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_02.4a + ROMX_LOAD( "rcm_02.4a", 0x000002, 0x80000, CRC(944d4f0f) SHA1(665dc9a537e9c9b565f6136f939ff5c2861f875f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rcm_03.5a", 0x000004, 0x80000, CRC(36f3073c) SHA1(457d68e63599d06a136e152a9ad60adac1c91edd) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "rcm_04.6a", 0x000006, 0x80000, CRC(54e622ff) SHA1(36f6297e3d410f041be5e582919478b0d52520ca) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "rcm_05.7a", 0x200000, 0x80000, CRC(5dd131fd) SHA1(1a7fc8cf38901245d40901996e946e7ad9c0e0c5) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "rcm_06.8a", 0x200002, 0x80000, CRC(f0faf813) SHA1(adff01c2ecc4c8ce6f8a50cbd07d8f8bb9f48168) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_07.9a - ROMX_LOAD( "rcm_07.9a", 0x200004, 0x80000, CRC(826de013) SHA1(47f36b1d92a487c43c8dadc8293b8e6f40649286) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_06.8a + ROMX_LOAD( "rcm_06.8a", 0x200002, 0x80000, CRC(f0faf813) SHA1(adff01c2ecc4c8ce6f8a50cbd07d8f8bb9f48168) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rcm_07.9a", 0x200004, 0x80000, CRC(826de013) SHA1(47f36b1d92a487c43c8dadc8293b8e6f40649286) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "rcm_08.10a", 0x200006, 0x80000, CRC(fbff64cf) SHA1(f0cb531ef195dc1dcd224a208906a62fb5d199a1) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "rcm_10.3c", 0x400000, 0x80000, CRC(4dc8ada9) SHA1(776c2b3ef24c2b8f390c05a9c6728b14ceec696e) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "rcm_11.4c", 0x400002, 0x80000, CRC(f2b9ee06) SHA1(db315b00d1caed1a8c0f6e0ae726e8fa05b011fa) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_12.5c - ROMX_LOAD( "rcm_12.5c", 0x400004, 0x80000, CRC(fed5f203) SHA1(23db14490519b5e2d0bb92ffe6e14540d1999e4b) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_11.4c + ROMX_LOAD( "rcm_11.4c", 0x400002, 0x80000, CRC(f2b9ee06) SHA1(db315b00d1caed1a8c0f6e0ae726e8fa05b011fa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rcm_12.5c", 0x400004, 0x80000, CRC(fed5f203) SHA1(23db14490519b5e2d0bb92ffe6e14540d1999e4b) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "rcm_13.6c", 0x400006, 0x80000, CRC(5069d4a9) SHA1(b832b98be94371af52bd4bb911e18ec57430a7db) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "rcm_14.7c", 0x600000, 0x80000, CRC(303be3bd) SHA1(1e5c3fd71966ea9f457840c40582795b501c323e) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "rcm_15.8c", 0x600002, 0x80000, CRC(4f2d372f) SHA1(db6a94d1f92c1b96e404b38ebcb1eedbec3ae6cc) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_16.9c - ROMX_LOAD( "rcm_16.9c", 0x600004, 0x80000, CRC(93d97fde) SHA1(e4be5216f98ad08a9118d629d398be2bd54e2e2a) , ROM_GROUPWORD | ROM_SKIP(6) ) // Dumped as rcm_15.8c + ROMX_LOAD( "rcm_15.8c", 0x600002, 0x80000, CRC(4f2d372f) SHA1(db6a94d1f92c1b96e404b38ebcb1eedbec3ae6cc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "rcm_16.9c", 0x600004, 0x80000, CRC(93d97fde) SHA1(e4be5216f98ad08a9118d629d398be2bd54e2e2a) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "rcm_17.10c", 0x600006, 0x80000, CRC(92371042) SHA1(c55833cbaddcc986edd23c009a3e3c7ff09c2708) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ - ROM_LOAD( "rcm_09.11a", 0x00000, 0x08000, CRC(22ac8f5f) SHA1(d1441d880f98034645cb4fcecd7bb746bde638af) ) /* different size from megamana, rockmanj but same label, pcb verified */ + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "rcm_09.11a", 0x00000, 0x08000, CRC(22ac8f5f) SHA1(d1441d880f98034645cb4fcecd7bb746bde638af) ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ @@ -937,47 +1107,48 @@ ROM_START( cps1testa ) ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) ROM_END + ROM_START( daimakb ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) ROM_LOAD16_BYTE( "dmjb2.bin", 0x00000, 0x80000, CRC(7d5f9f84) SHA1(b334b3af610892ef4efe4764017659b8541a10c6) ) ROM_LOAD16_BYTE( "dmjb1.bin", 0x00001, 0x80000, CRC(9b945cc4) SHA1(dfdfabfd8ef06cee6be27350f79c5db4c6ace611) ) ROM_REGION( 0x300000, "gfx", 0 ) - ROMX_LOAD( "dm_02.4b", 0x000000, 0x20000, CRC(8b98dc48) SHA1(e827881e2ba5cccd907d1692a1945c1b75d46f12) , ROM_SKIP(7) ) // == dm-05.3a - ROMX_LOAD( "dm_01.4a", 0x000001, 0x20000, CRC(80896c33) SHA1(20ffc427c596828005e34cdd8e4efa0d332262e9) , ROM_SKIP(7) ) // == dm-05.3a - ROMX_LOAD( "dm_10.9b", 0x000002, 0x20000, CRC(c2e7d9ef) SHA1(52aae6cf373f8c7150833047be28b74dd5eb5af6) , ROM_SKIP(7) ) // == dm-07.3f - ROMX_LOAD( "dm_09.9a", 0x000003, 0x20000, CRC(c9c4afa5) SHA1(34571e3e49c86b87fa34eefbc5f9fe258aba5f1a) , ROM_SKIP(7) ) // == dm-07.3f - ROMX_LOAD( "dm_18.5e", 0x000004, 0x20000, CRC(1aa0db99) SHA1(69ac302b2f6f0b96f78cb57b0b4cdae464086262) , ROM_SKIP(7) ) // == dm-06.3c - ROMX_LOAD( "dm_17.5c", 0x000005, 0x20000, CRC(dc6ed8ad) SHA1(1ffc4a48a7ff9b542ab6f63a60bea3c1a7a6e63b) , ROM_SKIP(7) ) // == dm-06.3c - ROMX_LOAD( "dm_30.8h", 0x000006, 0x20000, CRC(d9d3f8bd) SHA1(6c6853a384f8d60ca46a0607fd47c76a83700fba) , ROM_SKIP(7) ) // == dm-08.3g - ROMX_LOAD( "dm_29.8f", 0x000007, 0x20000, CRC(49a48796) SHA1(76c18c684dba4aa91ee6caae0f38fe3e1cc50832) , ROM_SKIP(7) ) // == dm-08.3g - ROMX_LOAD( "dm_04.5b", 0x100000, 0x20000, CRC(a4f4f8f0) SHA1(edca0f61b40a18afe279f7007c233064130cfb4f) , ROM_SKIP(7) ) // == dm-05.3a - ROMX_LOAD( "dm_03.5a", 0x100001, 0x20000, CRC(b1033e62) SHA1(547fc281dd9e7a74ac86c3692508c7bde9b6167b) , ROM_SKIP(7) ) // == dm-05.3a - ROMX_LOAD( "dm_12.10b", 0x100002, 0x20000, CRC(10fdd76a) SHA1(aee774d6323292799dff7a30ef9559c92fe5507a) , ROM_SKIP(7) ) // == dm-07.3f - ROMX_LOAD( "dm_11.10a", 0x100003, 0x20000, CRC(9040cb04) SHA1(b32e9056fc20a5162868eade10f3ef5efc167a28) , ROM_SKIP(7) ) // == dm-07.3f - ROMX_LOAD( "dm_20.7e", 0x100004, 0x20000, CRC(281d0b3e) SHA1(70e1813de184ad0ec164145b7b843b5e387494e3) , ROM_SKIP(7) ) // == dm-06.3c - ROMX_LOAD( "dm_19.7c", 0x100005, 0x20000, CRC(2623b52f) SHA1(fc4200924452bfbff687934782398ed345dc0aa0) , ROM_SKIP(7) ) // == dm-06.3c - ROMX_LOAD( "dm_32.9h", 0x100006, 0x20000, CRC(99692344) SHA1(67dc70618568b7c0adcb00a612aaf5501f6c8c0f) , ROM_SKIP(7) ) // == dm-08.3g - ROMX_LOAD( "dm_31.9f", 0x100007, 0x20000, CRC(54acb729) SHA1(d1fca43db36253fd19db4337c49272a6cadff597) , ROM_SKIP(7) ) // == dm-08.3g - ROMX_LOAD( "dm_06.7b", 0x200000, 0x10000, CRC(ae24bb19) SHA1(aa91c6ffe657b878e10e4e930457b530f7bb529b) , ROM_SKIP(7) ) // == dm_09.4a - ROMX_LOAD( "dm_05.7a", 0x200001, 0x10000, CRC(d34e271a) SHA1(55211fc2861dce32951f41624c9c99c09bf3b184) , ROM_SKIP(7) ) // == dm_18.7a - ROMX_LOAD( "dm_14.11b", 0x200002, 0x10000, CRC(3f70dd37) SHA1(9ecb4dec9d131e9fca15ded7d71986a9fcb62c19) , ROM_SKIP(7) ) // == dm_13.4e - ROMX_LOAD( "dm_13.11a", 0x200003, 0x10000, CRC(7e69e2e6) SHA1(4e0b4d2474beaa5c869c8f1a91893c79ac6e7f39) , ROM_SKIP(7) ) // == dm_22.7e - ROMX_LOAD( "dm_22.8e", 0x200004, 0x10000, CRC(37c9b6c6) SHA1(b2bb82537e335339846dbf9588cfacfdbdd75ee6) , ROM_SKIP(7) ) // == dm_11.4c - ROMX_LOAD( "dm_21.8c", 0x200005, 0x10000, CRC(2f1345b4) SHA1(14c450abcf9defa29c6f48e5ffd0b9d1e4a66a1d) , ROM_SKIP(7) ) // == dm_20.7c - ROMX_LOAD( "dm_26.10e", 0x200006, 0x10000, CRC(3c2a212a) SHA1(f8fa0e0e2d09ea37c54d1c2493752b4e97e3f534) , ROM_SKIP(7) ) // == dm_15.4g - ROMX_LOAD( "dm_25.10c", 0x200007, 0x10000, CRC(889aac05) SHA1(9301dcecee699e7f7672bb498122e1f4831ce536) , ROM_SKIP(7) ) // == dm_24.7g - ROMX_LOAD( "dm_08.8b", 0x280000, 0x10000, CRC(bcc0f28c) SHA1(02f587aa4ae71631f27b0e3aaf1829cdded1bdc2) , ROM_SKIP(7) ) // == dm_10.4b - ROMX_LOAD( "dm_07.8a", 0x280001, 0x10000, CRC(2a40166a) SHA1(dc4e75d7ed87ae5386d721a09113bba364740465) , ROM_SKIP(7) ) // == dm_19.7b - ROMX_LOAD( "dm_16.12b", 0x280002, 0x10000, CRC(20f85c03) SHA1(86385139a9b42270aade758bfe338525936f5671) , ROM_SKIP(7) ) // == dm_14.4f - ROMX_LOAD( "dm_15.12a", 0x280003, 0x10000, CRC(8426144b) SHA1(2dbf9625413b302fcdad5bef8733a9dfbfaead52) , ROM_SKIP(7) ) // == dm_23.7f - ROMX_LOAD( "dm_24.9e", 0x280004, 0x10000, CRC(da088d61) SHA1(67229eff2827a42af97a60ceb252e132e7f307bc) , ROM_SKIP(7) ) // == dm_12.4d - ROMX_LOAD( "dm_23.9c", 0x280005, 0x10000, CRC(17e11df0) SHA1(42fb15e9300b07fc5f4bc21744484869859b130c) , ROM_SKIP(7) ) // == dm_21.7d - ROMX_LOAD( "dm_28.11e", 0x280006, 0x10000, CRC(f187ba1c) SHA1(6d9441d04ecef2a9d9c7a2cc7781acd7904c2061) , ROM_SKIP(7) ) // == dm_16.4h - ROMX_LOAD( "dm_27.11c", 0x280007, 0x10000, CRC(29f79c78) SHA1(26000a58454a06c3016f99ebc3a79c52911a7070) , ROM_SKIP(7) ) // == dm_25.7h + ROMX_LOAD( "dm_02.4b", 0x000000, 0x20000, CRC(8b98dc48) SHA1(e827881e2ba5cccd907d1692a1945c1b75d46f12) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_01.4a", 0x000001, 0x20000, CRC(80896c33) SHA1(20ffc427c596828005e34cdd8e4efa0d332262e9) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_10.9b", 0x000002, 0x20000, CRC(c2e7d9ef) SHA1(52aae6cf373f8c7150833047be28b74dd5eb5af6) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_09.9a", 0x000003, 0x20000, CRC(c9c4afa5) SHA1(34571e3e49c86b87fa34eefbc5f9fe258aba5f1a) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_18.5e", 0x000004, 0x20000, CRC(1aa0db99) SHA1(69ac302b2f6f0b96f78cb57b0b4cdae464086262) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_17.5c", 0x000005, 0x20000, CRC(dc6ed8ad) SHA1(1ffc4a48a7ff9b542ab6f63a60bea3c1a7a6e63b) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_30.8h", 0x000006, 0x20000, CRC(d9d3f8bd) SHA1(6c6853a384f8d60ca46a0607fd47c76a83700fba) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_29.8f", 0x000007, 0x20000, CRC(49a48796) SHA1(76c18c684dba4aa91ee6caae0f38fe3e1cc50832) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_04.5b", 0x100000, 0x20000, CRC(a4f4f8f0) SHA1(edca0f61b40a18afe279f7007c233064130cfb4f) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_03.5a", 0x100001, 0x20000, CRC(b1033e62) SHA1(547fc281dd9e7a74ac86c3692508c7bde9b6167b) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_12.10b", 0x100002, 0x20000, CRC(10fdd76a) SHA1(aee774d6323292799dff7a30ef9559c92fe5507a) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_11.10a", 0x100003, 0x20000, CRC(9040cb04) SHA1(b32e9056fc20a5162868eade10f3ef5efc167a28) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_20.7e", 0x100004, 0x20000, CRC(281d0b3e) SHA1(70e1813de184ad0ec164145b7b843b5e387494e3) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_19.7c", 0x100005, 0x20000, CRC(2623b52f) SHA1(fc4200924452bfbff687934782398ed345dc0aa0) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_32.9h", 0x100006, 0x20000, CRC(99692344) SHA1(67dc70618568b7c0adcb00a612aaf5501f6c8c0f) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_31.9f", 0x100007, 0x20000, CRC(54acb729) SHA1(d1fca43db36253fd19db4337c49272a6cadff597) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_06.7b", 0x200000, 0x10000, CRC(ae24bb19) SHA1(aa91c6ffe657b878e10e4e930457b530f7bb529b) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_05.7a", 0x200001, 0x10000, CRC(d34e271a) SHA1(55211fc2861dce32951f41624c9c99c09bf3b184) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_14.11b", 0x200002, 0x10000, CRC(3f70dd37) SHA1(9ecb4dec9d131e9fca15ded7d71986a9fcb62c19) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_13.11a", 0x200003, 0x10000, CRC(7e69e2e6) SHA1(4e0b4d2474beaa5c869c8f1a91893c79ac6e7f39) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_22.8e", 0x200004, 0x10000, CRC(37c9b6c6) SHA1(b2bb82537e335339846dbf9588cfacfdbdd75ee6) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_21.8c", 0x200005, 0x10000, CRC(2f1345b4) SHA1(14c450abcf9defa29c6f48e5ffd0b9d1e4a66a1d) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_26.10e", 0x200006, 0x10000, CRC(3c2a212a) SHA1(f8fa0e0e2d09ea37c54d1c2493752b4e97e3f534) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_25.10c", 0x200007, 0x10000, CRC(889aac05) SHA1(9301dcecee699e7f7672bb498122e1f4831ce536) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_08.8b", 0x280000, 0x10000, CRC(bcc0f28c) SHA1(02f587aa4ae71631f27b0e3aaf1829cdded1bdc2) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_07.8a", 0x280001, 0x10000, CRC(2a40166a) SHA1(dc4e75d7ed87ae5386d721a09113bba364740465) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_16.12b", 0x280002, 0x10000, CRC(20f85c03) SHA1(86385139a9b42270aade758bfe338525936f5671) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_15.12a", 0x280003, 0x10000, CRC(8426144b) SHA1(2dbf9625413b302fcdad5bef8733a9dfbfaead52) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_24.9e", 0x280004, 0x10000, CRC(da088d61) SHA1(67229eff2827a42af97a60ceb252e132e7f307bc) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_23.9c", 0x280005, 0x10000, CRC(17e11df0) SHA1(42fb15e9300b07fc5f4bc21744484869859b130c) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_28.11e", 0x280006, 0x10000, CRC(f187ba1c) SHA1(6d9441d04ecef2a9d9c7a2cc7781acd7904c2061) , ROM_SKIP(7) ) + ROMX_LOAD( "dm_27.11c", 0x280007, 0x10000, CRC(29f79c78) SHA1(26000a58454a06c3016f99ebc3a79c52911a7070) , ROM_SKIP(7) ) ROM_REGION( 0x18000, "audiocpu", 0 ) - ROM_LOAD( "dm_37.13c", 0x00000, 0x08000, CRC(3692f6e5) SHA1(61b8438d60a39b4cf5062dff0a53228e8a4e4b5f) ) // == dm_26.10a + ROM_LOAD( "dm_37.13c", 0x00000, 0x08000, CRC(3692f6e5) SHA1(61b8438d60a39b4cf5062dff0a53228e8a4e4b5f) ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", ROMREGION_ERASEFF ) // to keep validation quiet @@ -994,6 +1165,106 @@ ROM_START( daimakb ) ROM_LOAD_OPTIONAL( "lwio.12c", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) ROM_END + +ROM_START( dino08h2 ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dino08h2.23", 0x000000, 0x80000, CRC(39ebeee2) SHA1(b48c3174e4ca26517958b3e58a3a693ce4e9ee88) ) + ROM_LOAD16_WORD_SWAP( "dino08h2.22", 0x080000, 0x80000, CRC(09307e79) SHA1(cff0af94c6118a852351a7b624db65963c91f577) ) + ROM_LOAD16_WORD_SWAP( "dino08h2.21", 0x100000, 0x80000, CRC(c2a0f051) SHA1(57e4a569824fb2a9d726ba610d13e451ab0b36cb) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( dino08h3 ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dino08h3.23", 0x000000, 0x80000, CRC(642a2380) SHA1(79d9f427740d7f86b81f560e71636097d10cccf1) ) + ROM_LOAD16_WORD_SWAP( "dino08h3.22", 0x080000, 0x80000, CRC(7a3c6b73) SHA1(e7f75c286ced541d4d6e399a54fa39fc1a85773f) ) + ROM_LOAD16_WORD_SWAP( "dino08h3.21", 0x100000, 0x80000, CRC(3383646e) SHA1(f3d220e79cb8f86ba799580541e790d9a1d2cdf5) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( dino08hp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dino08hp.23", 0x000000, 0x80000, CRC(394826e3) SHA1(7b295e263ab7f38a57a118de0f4308debfe14591) ) + ROM_LOAD16_WORD_SWAP( "dino08hp.22", 0x080000, 0x80000, CRC(a4894b10) SHA1(6c6d4319af544383007190cfe8835189089e4ac3) ) + ROM_LOAD16_WORD_SWAP( "dino08h2.21", 0x100000, 0x80000, CRC(c2a0f051) SHA1(57e4a569824fb2a9d726ba610d13e451ab0b36cb) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + ROM_START( dinob ) // program same as dinopic in mame, but this one has working sound ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(13dfeb08) SHA1(cd2f9dd64f4fabe93901247e36dff3763169716d) ) @@ -1031,6 +1302,171 @@ ROM_START( dinob ) // program same as dinopic in mame, but this one has working ROM_LOAD( "cd_q4.rom", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) ROM_END +ROM_START( dinobt ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinobt.23", 0x000000, 0x80000, CRC(3b1ed744) SHA1(7f9e062f97ef497c8993f574a3a51ae9e4e3e4f6) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( dinobtpp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinobtpp.23", 0x000000, 0x80000, CRC(41f954c9) SHA1(494ca6b9a5df7c9f491e54e45da41b2dcb4936a9) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( dinocgba ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinocgba.23", 0x000000, 0x80000, CRC(7545d8b0) SHA1(b2400f558753e2c5d26a20ed94aff63d96424d1b) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "dinoeh.21", 0x100000, 0x80000, CRC(b89a0548) SHA1(13b79e18c3cced34b28a34a591e2bd3bd18739be) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( dinocgbb ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinocgbb.23", 0x000000, 0x80000, CRC(2afc047c) SHA1(2d8831ae1faed2c8393db95835e157326a00f3f1) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "dinoeh.21", 0x100000, 0x80000, CRC(b89a0548) SHA1(13b79e18c3cced34b28a34a591e2bd3bd18739be) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( dinocgbc ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinocgbc.23", 0x000000, 0x80000, CRC(d7be3ebd) SHA1(0af400aa73b93908efe7e81f187ad0809b36593b) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "dinoeh.21", 0x100000, 0x80000, CRC(b89a0548) SHA1(13b79e18c3cced34b28a34a591e2bd3bd18739be) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + ROM_START( dinoeh ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "dinoeh.23", 0x000000, 0x80000, CRC(a6b88364) SHA1(71d2d66df77ba3cc856c2ecd317f4be122ed1feb) ) @@ -1167,6 +1603,67 @@ ROM_START( dinohb ) ROM_LOAD( "cd_q4.rom", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) ROM_END +ROM_START( dinohp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinohp.23", 0x000000, 0x80000, CRC(c96a1d20) SHA1(76d2ce4727ad6f546148cc3c7338a6243cecce2d) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( dinohx ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinohx.23", 0x000000, 0x80000, CRC(a013a81f) SHA1(81c84ad76adfe1345d5e41bcddb47f2428de5006) ) + ROM_LOAD16_WORD_SWAP( "cda_22h.rom", 0x080000, 0x80000, CRC(f72cd219) SHA1(a3f580bd328b54d2546ae7e94262c1a706d27172) ) + ROM_LOAD16_WORD_SWAP( "cda_21h.rom", 0x100000, 0x80000, CRC(bc275b76) SHA1(1f7f7533b4ccb511dc479f531d9d6740d3ca6712) ) + ROM_LOAD16_WORD_SWAP( "cda_20h.rom", 0x180000, 0x80000, CRC(8987c975) SHA1(3fd856805d627f855f72acc7aacc2e8ecf0f12bd) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd_gfx01.rom", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_gfx03.rom", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_gfx02.rom", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_gfx04.rom", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_gfx05.rom", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_gfx07.rom", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_gfx06.rom", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_gfx08.rom", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.rom", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd_q1.rom", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd_q2.rom", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd_q3.rom", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd_q4.rom", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) +ROM_END + ROM_START( dinojp ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "cdjp-23a.8f", 0x000000, 0x80000, CRC(9cd746de) SHA1(d8b9c824e4b8adb66a273debce63128a16bb147a) ) @@ -1174,14 +1671,14 @@ ROM_START( dinojp ) ROM_LOAD16_WORD_SWAP( "cdep_21a.rom", 0x100000, 0x80000, CRC(95bd8020) SHA1(249746eb20483ec87b6ad5a74e8b790afdb389de) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "cd_01.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-1m.3a - ROMX_LOAD( "cd_02.4a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-3m.5a - ROMX_LOAD( "cd_03.5a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-2m.4a - ROMX_LOAD( "cd_04.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-4m.6a - ROMX_LOAD( "cd_05.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-5m.7a - ROMX_LOAD( "cd_06.8a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-7m.9a - ROMX_LOAD( "cd_07.9a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-6m.8a - ROMX_LOAD( "cd_08.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) // == cd-8m.10a + ROMX_LOAD( "cd_01.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_02.4a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_03.5a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_04.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_05.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_06.8a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_07.9a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd_08.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) @@ -1210,10 +1707,43 @@ ROM_START( dinojp ) ROM_REGION( 0x0200, "dboardplds", 0 ) ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) // pal verification required + ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END +ROM_START( dinorp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinorp.23", 0x000000, 0x80000, CRC(373282a0) SHA1(b02bf02c9ef21cfa2606f3c6e38542fcb0be45ab) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "dinorp.21", 0x100000, 0x80000, CRC(d0d89d2c) SHA1(36f510ca6a2713518c3dba8fb49a314fd0de4d75) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + ROM_START( dinoslice ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "cdeslice.rom", 0x000000, 0x200000, CRC(9da95eab) SHA1(370bf3bbd76de5ae638c6fdab67c7cea98744e7b) ) @@ -1259,6 +1789,39 @@ ROM_START( dinoslice ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END +ROM_START( dinouphp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "dinouphp.23", 0x000000, 0x80000, CRC(1bf35c82) SHA1(82496d6c8fa853b0c28932f0f36e37219c0adfc8) ) + ROM_LOAD16_WORD_SWAP( "cde_22a.rom", 0x080000, 0x80000, CRC(9278aa12) SHA1(58cbbd53a98abe640ccb233f8dbd8ca6d63475e7) ) + ROM_LOAD16_WORD_SWAP( "cde_21a.6f", 0x100000, 0x80000, CRC(66d23de2) SHA1(19b8a365f630411d524d055459020f4c8cf930f1) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cd-1m.3a", 0x000000, 0x80000, CRC(8da4f917) SHA1(4f7b2304b7d9b545d6707d7ec921d3e28200699d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-3m.5a", 0x000002, 0x80000, CRC(6c40f603) SHA1(cdbd11dfcec08e87355d7e21e9fd39f7eacab016) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-2m.4a", 0x000004, 0x80000, CRC(09c8fc2d) SHA1(d0c0a1258ec5dd484ab6ec1c5663425431f929ee) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-4m.6a", 0x000006, 0x80000, CRC(637ff38f) SHA1(859926b33b9955b3ed67471c61faa442d42b9696) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-5m.7a", 0x200000, 0x80000, CRC(470befee) SHA1(a42e38319e9b7424381352512f11bd8edf0bbb96) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-7m.9a", 0x200002, 0x80000, CRC(22bfb7a3) SHA1(c44959bd3d42b9fc8ecb482dfaf63fbd469d2c3e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-6m.8a", 0x200004, 0x80000, CRC(e7599ac4) SHA1(0e788a38547a8701115d01190ddeaca64388db4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cd-8m.10a", 0x200006, 0x80000, CRC(211b4b15) SHA1(374f6b185faa0f14f5c45b9b1d60d0772d93fb17) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "cd_q.5k", 0x00000, 0x08000, CRC(605fdb0b) SHA1(9da90ddc6513aaaf2260f0c69719c6b0e585ba8c) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "cd-q1.1k", 0x000000, 0x80000, CRC(60927775) SHA1(f8599bc84c38573ebbe8685822c58b6a38b50462) ) + ROM_LOAD( "cd-q2.2k", 0x080000, 0x80000, CRC(770f4c47) SHA1(fec8ef00a6669d4d5e37787ecc7b58ee46709326) ) + ROM_LOAD( "cd-q3.3k", 0x100000, 0x80000, CRC(2f273ffc) SHA1(f0de462f6c4d251911258e0ebd886152c14d1586) ) + ROM_LOAD( "cd-q4.4k", 0x180000, 0x80000, CRC(2c67821d) SHA1(6e2528d0b22508300a6a142a796dd3bf53a66946) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + ROM_START( dinoz ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "dinoz_23a.8f", 0x000000, 0x80000, CRC(0129f422) SHA1(968e6d25a1aa2116f9e9a6b4b76c83bd63f4f477) ) @@ -1305,26 +1868,62 @@ ROM_START( dinoz ) ROM_REGION( 0x0200, "dboardplds", 0 ) ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) // pal verification required + ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END + +ROM_START( ffightb ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "ffu_36b.11f", 0x00000, 0x20000, CRC(a9fa0174) SHA1(a6f669370f1f822b2988c297a8e26bcb6300692d) ) + ROM_LOAD16_BYTE( "ffu_42b.11h", 0x00001, 0x20000, CRC(d47cb6b7) SHA1(26c94b0d91a4343b58a7cc542417d8d36e9f2e34) ) + ROM_LOAD16_BYTE( "ffu_37b.12f", 0x40000, 0x20000, CRC(3fc9f9e3) SHA1(0982c40d5967e5068ec592db022eb16172f95005) ) + ROM_LOAD16_BYTE( "ffu_43b.12h", 0x40001, 0x20000, CRC(5ef051fa) SHA1(f72d45f9d03f78de8d081658098decbadc9e7828) ) + ROM_LOAD16_WORD_SWAP( "ff_22.7f", 0x80000, 0x80000, CRC(b2d5a3aa) SHA1(b60f7480d3d3ceebad4c21025394bacc154d7042) ) + + ROM_REGION( 0x200000, "gfx", 0 ) + ROMX_LOAD( "ff_1.3a", 0x000000, 0x80000, CRC(969d18e2) SHA1(7a30b7434e34ec98838a9ab8d953b2ef467d562e), ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ff_2.4a", 0x000002, 0x80000, CRC(02b59f99) SHA1(c1cb2bbf95c2006baad58b0a5a7278f1a8999901), ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ff_3.5a", 0x000004, 0x80000, CRC(01d507ae) SHA1(d7813daa5bd74bebdbbea578acb20ad3c8816997), ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ff_4.6a", 0x000006, 0x80000, CRC(f7c4ceb0) SHA1(3e9cf6379f06c5a736b4a0aadb7fbda914b91190), ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + 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_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) ) + ROM_LOAD_OPTIONAL( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) +ROM_END + + ROM_START( knight21 ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "kr_2321.8f",0x00000, 0x80000, CRC(aacaebcd) SHA1(3c243d59b86b2a51c219c296c12090058851c77d) ) ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket - ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket - ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket - ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket - ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket - ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket - ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket - ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket - - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1355,16 +1954,16 @@ ROM_START( knightsa ) ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket - ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket - ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket - ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket - ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket - ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket - ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket - ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket - - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1404,7 +2003,7 @@ ROM_START( knightsb2 ) ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "kr_09.rom", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1428,7 +2027,7 @@ ROM_START( knightsh ) ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "kr_09.rom", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1453,7 +2052,7 @@ ROM_START( knightsha ) ROMX_LOAD( "kr_gfx6.rom", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "kr_gfx8.rom", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "kr_09.rom", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1477,7 +2076,7 @@ ROM_START( knightsjb ) ROMX_LOAD( "7.096", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "8.096", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "9.512", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1501,7 +2100,47 @@ ROM_START( knightsro ) ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "kr_18.11c", 0x00000, 0x20000, CRC(da69d15f) SHA1(9616207e693bae85705f786cef60b9f6951b5067) ) + ROM_LOAD( "kr_19.12c", 0x20000, 0x20000, CRC(bfc654e9) SHA1(01b3d92e4dedf55ea3933d387c7ddb9ba2549773) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "kr63b.1a", 0x0000, 0x0117, CRC(fd5b6522) SHA1(5e6ebb2d736415402920a30d331d4b6dab557e5e) ) + ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) + ROM_LOAD_OPTIONAL( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) + + ROM_REGION( 0x0200, "cboardplds", 0 ) + ROM_LOAD_OPTIONAL( "ioc1.ic7", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) + ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) +ROM_END + +ROM_START( knightud ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "knightud.23", 0x00000, 0x80000, CRC(5fe98e7f) SHA1(3e01b9e06663ade831750de3ecd0d3925889a5da) ) + ROM_LOAD16_WORD_SWAP( "kr_22.7f", 0x80000, 0x80000, CRC(d0b671a9) SHA1(9865472c5fc3f617345e23b5de5a9ba177945b5a) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "kr-5m.3a", 0x000000, 0x80000, CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-7m.5a", 0x000002, 0x80000, CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-1m.4a", 0x000004, 0x80000, CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-3m.6a", 0x000006, 0x80000, CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-6m.7a", 0x200000, 0x80000, CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-8m.9a", 0x200002, 0x80000, CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-2m.8a", 0x200004, 0x80000, CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kr-4m.10a", 0x200006, 0x80000, CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "kr_09.11a", 0x00000, 0x08000, CRC(5e44d9ee) SHA1(47a7503321be8d52b5c44af838e3bb82ee15a415) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1526,7 +2165,44 @@ ROM_START( knightsro ) ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) ROM_END -// Hack of kodr1. The following are typical of that revision: + +ROM_START( kodd ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "kodd.30", 0x00000, 0x20000, CRC(8eb281a4) SHA1(6e6e316321c500796bba6b888db8e0445b63bea3) ) + ROM_LOAD16_BYTE( "kodd.37", 0x00001, 0x20000, CRC(9c16c2b9) SHA1(1c04419f1223b7a9a0ae2de8f11010b478d58c63) ) + ROM_LOAD16_BYTE( "kodd.31", 0x40000, 0x20000, CRC(b4aeee54) SHA1(ed0b965b2f16a6aeb117e7b12ab10d7d0b87dcdf) ) + ROM_LOAD16_BYTE( "kodd.38", 0x40001, 0x20000, CRC(534554bc) SHA1(c0b73e8a44b4a5b6679f39a146f01fd0f2c270c8) ) + ROM_LOAD16_BYTE( "kd_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) ) + ROM_LOAD16_BYTE( "kd_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) ) + ROM_LOAD16_BYTE( "kde_29.10e", 0xc0000, 0x20000, CRC(6a0ba878) SHA1(82e4037d73889a76b0cdc7a4f8e77e585d38e56e) ) + ROM_LOAD16_BYTE( "kde_36.10f", 0xc0001, 0x20000, CRC(b509b39d) SHA1(6023855e54b170e55abf0f607600031e19e5e722) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "kd-5m.4a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-7m.6a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-1m.3a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-3m.5a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-2m.3c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(f5514510) SHA1(07e9c836adf9ef2f7e7729e99015f71e3b5f16e0) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(69ecb2c8) SHA1(fadf266b6b20bd6329a3e638918c5a3106413476) ) + ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(02d851c1) SHA1(c959a6fc3e7d893557f319debae91f28471f4be2) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) +ROM_END + // - Actor preview flickers instead of wriggling // - No music in attract mode ROM_START( kodh ) @@ -1545,7 +2221,7 @@ ROM_START( kodh ) ROMX_LOAD( "7.096", 0x200004, 0x80000, CRC(c7ab4704) SHA1(180852c4d59359c2094feb8ad1f05d70eafe6c55) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "kod12.rom", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "kd09.bin", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1554,6 +2230,83 @@ ROM_START( kodh ) ROM_LOAD( "kd19.bin", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) ) ROM_END +// - Actor preview flickers instead of wriggling +// - No music in attract mode +ROM_START( kodsp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "kde_30.11e", 0x00000, 0x20000, CRC(c7414fd4) SHA1(37d27fbe7c617a26b53bfdfcd532cf573d42f33b) ) + ROM_LOAD16_BYTE( "kde_37.11f", 0x00001, 0x20000, CRC(a5bf40d2) SHA1(cd34dbeabd0974709411579e669f01d0d799c2a1) ) + ROM_LOAD16_BYTE( "kde_31.12e", 0x40000, 0x20000, CRC(1fffc7bd) SHA1(822c9ad996ca51a99a2bb1fe08fa19e18413030d) ) + ROM_LOAD16_BYTE( "kde_38.12f", 0x40001, 0x20000, CRC(89e57a82) SHA1(aad35f86a8b1b7e3a0b5f3e6efd0e844b3d3d82f) ) + ROM_LOAD16_BYTE( "kde_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) ) + ROM_LOAD16_BYTE( "kde_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) ) + ROM_LOAD16_BYTE( "kde_29.10e", 0xc0000, 0x20000, CRC(6a0ba878) SHA1(82e4037d73889a76b0cdc7a4f8e77e585d38e56e) ) + ROM_LOAD16_BYTE( "kde_36.10f", 0xc0001, 0x20000, CRC(b509b39d) SHA1(6023855e54b170e55abf0f607600031e19e5e722) ) + + ROM_REGION( 0x400000, "gfx", 0 ) // this set has new gfx roms + ROMX_LOAD( "kodsp.5", 0x000000, 0x80000, CRC(0aaa04b7) SHA1(14ab5944461cb7989659c31ea3be333c513284b6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kodsp.7", 0x000002, 0x80000, CRC(28d6b2ff) SHA1(a0934eb3a15b5d21b816ffcdb4208322f0a480b6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kodsp.1", 0x000004, 0x80000, CRC(8707e5ac) SHA1(36fd449595b8cd22a3e9a61b4941b0fde821b67a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kodsp.3", 0x000006, 0x80000, CRC(c115f6c6) SHA1(36b0d93b38a3f9c517ebf35bc3c7437794afe6f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kodsp.6", 0x200000, 0x80000, CRC(e8009e30) SHA1(2a1038f627edc5f7b89a5ac2000ba50ac015e29d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kodsp.8", 0x200002, 0x80000, CRC(c76b4156) SHA1(95606000fdd79c2c80082e368a5710087332c8c8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kodsp.2", 0x200004, 0x80000, CRC(34b917e8) SHA1(7e1fb92539199f51f21b24c685fabb04c6a247a7) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kodsp.4", 0x200006, 0x80000, CRC(8faba58f) SHA1(9a77f7e69ccc796e09b0fe266b2af0c31fcd85ba) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(f5514510) SHA1(07e9c836adf9ef2f7e7729e99015f71e3b5f16e0) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(69ecb2c8) SHA1(fadf266b6b20bd6329a3e638918c5a3106413476) ) + ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(02d851c1) SHA1(c959a6fc3e7d893557f319debae91f28471f4be2) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) +ROM_END + +ROM_START( kodud ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "kodud.30", 0x00000, 0x20000, CRC(c5ada5eb) SHA1(c989c747abfc6f80871d0ee763d5573b321fb48e) ) + ROM_LOAD16_BYTE( "kodud.37", 0x00001, 0x20000, CRC(b8169b17) SHA1(55176bb92fc422d4ce03a011190a7cc6caa082ff) ) + ROM_LOAD16_BYTE( "kodud.31", 0x40000, 0x20000, CRC(72dd68a5) SHA1(db077c2c4716da59880e49af1d066b3c596143e1) ) + ROM_LOAD16_BYTE( "kodud.38", 0x40001, 0x20000, CRC(0021a110) SHA1(0e15786d6e36a62f338dce8508cdd17a69511ed2) ) + ROM_LOAD16_BYTE( "kd_28.9e", 0x80000, 0x20000, CRC(9367bcd9) SHA1(8243b4b9bb9756f3fa726717e19a166cb2f5b50a) ) + ROM_LOAD16_BYTE( "kd_35.9f", 0x80001, 0x20000, CRC(4ca6a48a) SHA1(9d440ecd8d2d0e293fecf64ca3915252b94e7aef) ) + ROM_LOAD16_BYTE( "kd_29.10e", 0xc0000, 0x20000, CRC(0360fa72) SHA1(274769c8717a874397cf37369e3ef80a682d9ef2) ) + ROM_LOAD16_BYTE( "kd_36a.10f", 0xc0001, 0x20000, CRC(95a3cef8) SHA1(9b75c1ed0eafacc230197ffd9b81e0c8f4f2c464) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "kd-5m.4a", 0x000000, 0x80000, CRC(e45b8701) SHA1(604e39e455e81695ee4f899f102d0bcd789cedd0) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-7m.6a", 0x000002, 0x80000, CRC(a7750322) SHA1(3c583496a53cd64edf377db35f7f40f02b59b7e7) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-1m.3a", 0x000004, 0x80000, CRC(5f74bf78) SHA1(b7c43eea9bf77a0fb571dcd53f8be719e6655fd9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-3m.5a", 0x000006, 0x80000, CRC(5e5303bf) SHA1(d9f90b898ffdf4398b2bbeb48247f06f728e7c00) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-6m.4c", 0x200000, 0x80000, CRC(113358f3) SHA1(9d98eafa74a046f65bf3847fe1d88ea1b0c82b0c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-8m.6c", 0x200002, 0x80000, CRC(38853c44) SHA1(a6e552fb0138a76a7878b90d202904e2b44ae7ec) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-2m.3c", 0x200004, 0x80000, CRC(9ef36604) SHA1(b42ca0a910b65e1e7bb6e7d734e853ce67e821bf) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "kd-4m.5c", 0x200006, 0x80000, CRC(402b9b4f) SHA1(4c11976976eadf1ad293b31b0a4d047d05032b06) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "kd_9.12a", 0x00000, 0x08000, CRC(bac6ec26) SHA1(6cbb6d55660150ae3f5270e023328275ee1bbf50) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "kd_18.11c", 0x00000, 0x20000, CRC(4c63181d) SHA1(270f27534a95cb0be3ff3f9ca71c502320d8090b) ) + ROM_LOAD( "kd_19.12c", 0x20000, 0x20000, CRC(92941b80) SHA1(5fa7c2793e6febee54a83042d118ddd4f2b7d127) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) +ROM_END + + ROM_START( pnicku ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "pnij36.bin", 0x00000, 0x20000, CRC(2d4ffb2b) SHA1(6e49cf89a36834fd1de8b4b860fe66f3d7d67a84) ) @@ -1577,7 +2330,7 @@ ROM_START( pnicku ) ROMX_LOAD( "pnij39.bin", 0x100006, 0x20000, CRC(70fbe579) SHA1(b5b7ed5588ecd884b20dd50bfc5385a9af03c5d8) , ROM_SKIP(7) ) ROMX_LOAD( "pnij33.bin", 0x100007, 0x20000, CRC(3ed2c680) SHA1(0afe84d8d89f8d45afc79f6172337e622e29a8a2) , ROM_SKIP(7) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "pnij17.bin", 0x00000, 0x08000, CRC(e86f787a) SHA1(de04cbe89c655faf04afe169bfd9913049ccc4a8) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1601,6 +2354,7 @@ ROM_START( pnicku ) ROM_LOAD_OPTIONAL( "c632.ic1", 0x0000, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) ROM_END + ROM_START( punisherb ) // punipic in mame ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(8c2593ac) SHA1(4261bc72b96c3a5690df35c5d8b71524765693d9) ) @@ -1656,7 +2410,7 @@ ROM_START( punisherb ) // punipic in mame ROM_REGION( 0x0200, "dboardplds", 0 ) ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) // pal verification required + ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END @@ -1691,6 +2445,39 @@ ROM_START( punisherf ) ROM_LOAD( "ps_q4.rom", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) ) ROM_END +ROM_START( punisherje1 ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "psj23ex.bin", 0x000000, 0x80000, CRC(fa084bab) SHA1(af323e6399ab5d3091a57188d3cedc1d0600dd3d) ) + ROM_LOAD16_WORD_SWAP( "psj22ex.bin", 0x080000, 0x80000, CRC(69433b02) SHA1(cc7127170fad47562aaded71a3c1e216084667f8) ) + ROM_LOAD16_WORD_SWAP( "psje1.21", 0x100000, 0x80000, CRC(86aa8774) SHA1(501db3229c49ecd60eab72391f575f7df47e8782) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) ) + ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) ) + ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) ) + ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + ROM_START( punisherjh ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "psj23h.bin", 0x000000, 0x80000, CRC(41cb77e9) SHA1(7e2a21bd217c976b448a51ba8bdbab820a30851a) ) @@ -1734,25 +2521,58 @@ ROM_START( punisherjh ) ROM_REGION( 0x0200, "dboardplds", 0 ) ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) // pal verification required + ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END -ROM_START( punisherjha ) +ROM_START( punisherjh1 ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "psjh1.23", 0x000000, 0x80000, CRC(75ed76a4) SHA1(8ba66fd6a1912aae4c382ac8900f522474884771) ) + ROM_LOAD16_WORD_SWAP( "psjh1.22", 0x080000, 0x80000, CRC(b17f61f0) SHA1(a5550bb359941bea96cefb818ccbb175a0b20687) ) + ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) ) + ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) ) + ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) ) + ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( punisherjha ) // punishje2: The Punisher (SM Experience Edition hack by Zhyxxxx set 2 13/06/09) : multijet ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "psj23ex.bin", 0x000000, 0x80000, CRC(fa084bab) SHA1(af323e6399ab5d3091a57188d3cedc1d0600dd3d) ) ROM_LOAD16_WORD_SWAP( "psj22ex.bin", 0x080000, 0x80000, CRC(69433b02) SHA1(cc7127170fad47562aaded71a3c1e216084667f8) ) ROM_LOAD16_WORD_SWAP( "ps_21ex.rom", 0x100000, 0x80000, CRC(e4e15e4a) SHA1(405d57983ed33276e6fde155d4c78c2973466483) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-1m.3a - ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-3m.5a - ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-2m.4a - ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-4m.6a - ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-5m.7a - ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-7m.9a - ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-6m.8a - ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) ) // == ps-8m.10a + ROMX_LOAD( "ps_01.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_02.4a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_03.5a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_04.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_05.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_06.8a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_07.9a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps_08.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) ) @@ -1781,10 +2601,83 @@ ROM_START( punisherjha ) ROM_REGION( 0x0200, "dboardplds", 0 ) ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) // pal verification required + ROM_LOAD_OPTIONAL( "d9k2.9k", 0x0000, 0x0117, CRC(cd85a156) SHA1(a88f8939c5d93e65d7bcc0eb3ee5b6f4f1114e3a) ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END +ROM_START( punisherud1 ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE ( "psud1_26.11e", 0x000000, 0x20000, CRC(f820e620) SHA1(7c2e55b4dc7aaf27badceafd7bde483f33676351) ) + ROM_LOAD16_BYTE ( "psud1_30.11f", 0x000001, 0x20000, CRC(90afc70a) SHA1(73d5325a482becf46ef75456134242db7f1a31f8) ) + ROM_LOAD16_BYTE ( "psu_27.12e", 0x040000, 0x20000, CRC(61c960a1) SHA1(f8fe651283cc1f138d013cab65b833505de6df9f) ) + ROM_LOAD16_BYTE ( "psud1_31.12f", 0x040001, 0x20000, CRC(e1239351) SHA1(7437a5e93ed72b8a52292aeb71c678e1462c8578) ) + ROM_LOAD16_BYTE ( "psud1_24.9e", 0x080000, 0x20000, CRC(22ef4de9) SHA1(358acdce233182280e5eb77da178ec0f08beca7f) ) + ROM_LOAD16_BYTE ( "psud1_28.9f", 0x080001, 0x20000, CRC(e45f5b6d) SHA1(daf25f24f8955387086acd337b19dfea5507adb8) ) + ROM_LOAD16_BYTE ( "psu_25.10e", 0x0c0000, 0x20000, CRC(c51acc94) SHA1(34ffd6392914e3e67d7d0804215bd1193846b554) ) + ROM_LOAD16_BYTE ( "psu_29.10f", 0x0c0001, 0x20000, CRC(52dce1ca) SHA1(45277abe34feacdcaedaec56f513b7437d4260e9) ) + ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "ps-1m.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-3m.5a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-2m.4a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-4m.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-5m.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-7m.9a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-6m.8a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-8m.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) ) + ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) ) + ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) ) + ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + +ROM_START( punisherud2 ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "psud2.23", 0x000000, 0x80000, CRC(019efb28) SHA1(1790db51ce7cd1281932359de6e4e1e046db0369) ) + ROM_LOAD16_WORD_SWAP( "psud2.22", 0x080000, 0x80000, CRC(c0110a4e) SHA1(43f6086634c332a58d95b0b51995ba1ab8ed1367) ) + ROM_LOAD16_WORD_SWAP( "ps_21.6f", 0x100000, 0x80000, CRC(8affa5a9) SHA1(268760b83b1723ff50a019ec51ef7af2e49935bf) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "ps-1m.3a", 0x000000, 0x80000, CRC(77b7ccab) SHA1(e08e5d55a79e4c0c8ca819d6d7d2a14f753c6ec3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-3m.5a", 0x000002, 0x80000, CRC(0122720b) SHA1(5f0d3097e097f64106048156fbb0d343fe78fffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-2m.4a", 0x000004, 0x80000, CRC(64fa58d4) SHA1(d4a774285ed15273195b6b26d2965ce370e54e73) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-4m.6a", 0x000006, 0x80000, CRC(60da42c8) SHA1(95eec4a58d9628a2d9764951dd8dc11e4860a899) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-5m.7a", 0x200000, 0x80000, CRC(c54ea839) SHA1(0733f37329edd9d0cace1319a7544b40aa7ecb0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-7m.9a", 0x200002, 0x80000, CRC(04c5acbd) SHA1(fddc94b0f36d4d22d7c357856ae15b7514c342d3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-6m.8a", 0x200004, 0x80000, CRC(a544f4cc) SHA1(9552df8934ba25f19a22f2e07783712d8c8ef03c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ps-8m.10a", 0x200006, 0x80000, CRC(8f02f436) SHA1(a2f0ebb7e9593469c7b843f8962a66f3d77f79e5) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "ps_q.5k", 0x00000, 0x08000, CRC(49ff4446) SHA1(87af12f87a940a6c5428b4574ad44a4b54867bc3) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "ps-q1.1k", 0x000000, 0x80000, CRC(31fd8726) SHA1(1d73a76682e9fb908db0c55b9a18163f7539fea1) ) + ROM_LOAD( "ps-q2.2k", 0x080000, 0x80000, CRC(980a9eef) SHA1(36571381f349bc726508a7e618ba1c635ec9d271) ) + ROM_LOAD( "ps-q3.3k", 0x100000, 0x80000, CRC(0dd44491) SHA1(903cea1d7f3120545ea3229d30fbd687d11ad68f) ) + ROM_LOAD( "ps-q4.4k", 0x180000, 0x80000, CRC(bed42f03) SHA1(21302f7e75f9c795392a3b34e16a959fc5f6e4e9) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + + ROM_START( sf2c ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "sf2j_30", 0x00000, 0x20000, CRC(70813e5e) SHA1(39219a98d368dcb67cbd0a756f3e1fab7b9352f4) ) @@ -1793,30 +2686,30 @@ ROM_START( sf2c ) ROM_LOAD16_BYTE( "sf2j38.bin", 0x40001, 0x20000, CRC(38614d70) SHA1(39c58096f3a8e01fb439639b742b83102bbaa7f6) ) ROM_LOAD16_BYTE( "sf2j_28", 0x80000, 0x20000, CRC(2d4a1b8a) SHA1(9dce74c32fa9c63f38d33a03327b22e74d2118c1) ) ROM_LOAD16_BYTE( "sf2j_35", 0x80001, 0x20000, CRC(5f622bdb) SHA1(4fe5797acc2645a1bd27d247457b6f24bfd60f96) ) - ROM_LOAD16_BYTE( "sf2j_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) // == sf2_29b.10e - ROM_LOAD16_BYTE( "sf2j_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) // == sf2_36b.10f + ROM_LOAD16_BYTE( "sf2j_29a.10e", 0xc0000, 0x20000, CRC(bb4af315) SHA1(75f0827f4f7e9f292add46467f8d4fe19b2514c9) ) + ROM_LOAD16_BYTE( "sf2j_36a.10f", 0xc0001, 0x20000, CRC(c02a13eb) SHA1(b807cc495bff3f95d03b061fc629c95f965cb6d8) ) ROM_REGION( 0x600000, "gfx", 0 ) - ROMX_LOAD( "sf2_06", 0x000000, 0x80000, CRC(d3aab35d) SHA1(bc90464bc38b326b46f0da97008116ee639e2598) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-5m.4a - ROMX_LOAD( "sf2_08", 0x000002, 0x80000, CRC(f6a68d56) SHA1(4ef2668a245fb207c599f0e72e979f8c0191df25) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-7m.6a - ROMX_LOAD( "sf2_05", 0x000004, 0x80000, CRC(1ddcda55) SHA1(494338ac59e4253177b731bd6ad116a63f7ded8c) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-1m.3a - ROMX_LOAD( "sf2_07", 0x000006, 0x80000, CRC(d3274004) SHA1(a278e0740806cf8098058d1c33eb0964cc130ded) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-3m.5a - ROMX_LOAD( "sf2_15", 0x200000, 0x80000, CRC(f8710c69) SHA1(a298117a7869b0891220c229d0dceba7ac6bf594) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-6m.4c - ROMX_LOAD( "sf2_17", 0x200002, 0x80000, CRC(dd376567) SHA1(a817c999098b0274ed2c052b96c562bed407b7b1) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-8m.6c - ROMX_LOAD( "sf2_14", 0x200004, 0x80000, CRC(c754e2c4) SHA1(7936eaa669c84742c1511768bb9039c26b2fb3c3) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-2m.3c - ROMX_LOAD( "sf2_16", 0x200006, 0x80000, CRC(0d4799bd) SHA1(5e63e889cabc4436c2a49997c9d0a47529d264ad) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-4m.5c - ROMX_LOAD( "sf2_25", 0x400000, 0x80000, CRC(a6671144) SHA1(f4017ad15784078c00ef76220f4e5bdba61a6495) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-13m.4d - ROMX_LOAD( "sf2_27", 0x400002, 0x80000, CRC(008b2bdd) SHA1(a048a70fe3c752b79e14eadf2369f068fc831439) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-15m.6d - ROMX_LOAD( "sf2_24", 0x400004, 0x80000, CRC(0f8a9ec4) SHA1(cde0013df78333ebfbaacb9a9e212fbc0b2e04d3) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-9m.3d - ROMX_LOAD( "sf2_26", 0x400006, 0x80000, CRC(0fb4241e) SHA1(f749daa6ecf018542ecf0f3711491eb85fac91b3) , ROM_GROUPWORD | ROM_SKIP(6) ) // == sf2-11m.5d - - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ - ROM_LOAD( "sf2_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) // could be sf2j_09.12a + ROMX_LOAD( "sf2_06", 0x000000, 0x80000, CRC(d3aab35d) SHA1(bc90464bc38b326b46f0da97008116ee639e2598) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_08", 0x000002, 0x80000, CRC(f6a68d56) SHA1(4ef2668a245fb207c599f0e72e979f8c0191df25) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_05", 0x000004, 0x80000, CRC(1ddcda55) SHA1(494338ac59e4253177b731bd6ad116a63f7ded8c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_07", 0x000006, 0x80000, CRC(d3274004) SHA1(a278e0740806cf8098058d1c33eb0964cc130ded) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_15", 0x200000, 0x80000, CRC(f8710c69) SHA1(a298117a7869b0891220c229d0dceba7ac6bf594) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_17", 0x200002, 0x80000, CRC(dd376567) SHA1(a817c999098b0274ed2c052b96c562bed407b7b1) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_14", 0x200004, 0x80000, CRC(c754e2c4) SHA1(7936eaa669c84742c1511768bb9039c26b2fb3c3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_16", 0x200006, 0x80000, CRC(0d4799bd) SHA1(5e63e889cabc4436c2a49997c9d0a47529d264ad) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_25", 0x400000, 0x80000, CRC(a6671144) SHA1(f4017ad15784078c00ef76220f4e5bdba61a6495) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_27", 0x400002, 0x80000, CRC(008b2bdd) SHA1(a048a70fe3c752b79e14eadf2369f068fc831439) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_24", 0x400004, 0x80000, CRC(0f8a9ec4) SHA1(cde0013df78333ebfbaacb9a9e212fbc0b2e04d3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "sf2_26", 0x400006, 0x80000, CRC(0fb4241e) SHA1(f749daa6ecf018542ecf0f3711491eb85fac91b3) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "sf2_09.12a", 0x00000, 0x08000, CRC(a4823a1b) SHA1(7b6bf59dfd578bfbbdb64c27988796783442d659) ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ - ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) // could be sf2j_18.11c - ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) // could be sf2j_19.12c + ROM_LOAD( "sf2_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) + ROM_LOAD( "sf2_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_REGION( 0x0200, "aboardplds", 0 ) ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) @@ -1841,19 +2734,19 @@ ROM_START( sf2cebr ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92br_10.bin", 0x400000, 0x80000, CRC(b3e1dd5f) SHA1(714BF1519CED85567D3D35FDF4AA9E4268CC9F0F) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92br_11.bin", 0x400002, 0x80000, CRC(f13af812) SHA1(E3711CBAA3169D0F48DF420953F1AFD0AB76EE08) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92br_12.bin", 0x400004, 0x80000, CRC(10ce42af) SHA1(530B2A6E2D13B2694BD611B31B056B7458FD1571) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92br_11.bin", 0x400002, 0x80000, CRC(f13af812) SHA1(E3711CBAA3169D0F48DF420953F1AFD0AB76EE08) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92br_12.bin", 0x400004, 0x80000, CRC(10ce42af) SHA1(530B2A6E2D13B2694BD611B31B056B7458FD1571) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92br_13.bin", 0x400006, 0x80000, CRC(32cf5af3) SHA1(43972C07F5CCF01B0CE0727541590C3C6B97C300) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1889,7 +2782,7 @@ ROM_START( sf2ced ) // Drakon 7.1 ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1934,7 +2827,7 @@ ROM_START( sf2ceda ) // Drakon unknown version ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -1967,19 +2860,19 @@ ROM_START( sf2ceh ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2016,7 +2909,7 @@ ROM_START( sf2koryuh ) ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2034,19 +2927,19 @@ ROM_START( sf2h9 ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2064,19 +2957,19 @@ ROM_START( sf2h10 ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2094,19 +2987,19 @@ ROM_START( sf2h11 ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2124,19 +3017,19 @@ ROM_START( sf2h12 ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2154,19 +3047,19 @@ ROM_START( sf2h13 ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s2t_10.bin", 0x400000, 0x80000, CRC(3c042686) SHA1(307e1ca8ad0b11f3265b7e5467ba4c90f90ec97f) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s2t_11.bin", 0x400002, 0x80000, CRC(8b7e7183) SHA1(c8eaedfbddbf0b83311d2dbb9e19a1efef0dffa9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2t.12 */ - ROMX_LOAD( "s2t_12.bin", 0x400004, 0x80000, CRC(293c888c) SHA1(5992ea9aa90fdd8b9dacca9d2a1fdaf25ac2cb65) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2t.11 */ + ROMX_LOAD( "s2t_11.bin", 0x400002, 0x80000, CRC(8b7e7183) SHA1(c8eaedfbddbf0b83311d2dbb9e19a1efef0dffa9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s2t_12.bin", 0x400004, 0x80000, CRC(293c888c) SHA1(5992ea9aa90fdd8b9dacca9d2a1fdaf25ac2cb65) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s2t_13.bin", 0x400006, 0x80000, CRC(842b35a4) SHA1(35864a140a0c8d76501e69b2e01bc4ad76f27909) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2195,7 +3088,7 @@ ROM_START( sf2pun ) ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2240,7 +3133,7 @@ ROM_START( sf2sl73a ) ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2291,7 +3184,7 @@ ROM_START( sf2th ) ROMX_LOAD( "stf2th-9.bin", 0x400004, 0x20000, CRC(f8725add) SHA1(fa3fcf6637ee4dd7667bd89766074b3c6ba4f166) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "stf2th-11.bin",0x400006, 0x20000, CRC(c2a5373e) SHA1(602b32e5ecc7007efe9ad30751040ee52b81f59a) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2326,7 +3219,7 @@ ROM_START( sf2tha ) ROMX_LOAD( "r03.bin", 0x400004, 0x20000, CRC(f8725add) SHA1(fa3fcf6637ee4dd7667bd89766074b3c6ba4f166) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "r05.bin", 0x400006, 0x20000, CRC(c2a5373e) SHA1(602b32e5ecc7007efe9ad30751040ee52b81f59a) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2344,19 +3237,19 @@ ROM_START( sf2tlona ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2374,19 +3267,19 @@ ROM_START( sf2tlonb ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2416,7 +3309,7 @@ ROM_START( sf2tlonc ) ROMX_LOAD( "s92-11m.4c", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92-13m.6c", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2434,19 +3327,19 @@ ROM_START( sf2turyu ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2466,19 +3359,19 @@ ROM_START( sf2yyc3d5 ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2498,19 +3391,19 @@ ROM_START( sf2yyc3g ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2530,19 +3423,19 @@ ROM_START( sf2yyc6 ) ROM_REGION( 0x600000, "gfx", 0 ) ROMX_LOAD( "s92_01.bin", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.03 */ - ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.02 */ + ROMX_LOAD( "s92_02.bin", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_03.bin", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_04.bin", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_05.bin", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.07 */ - ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.06 */ + ROMX_LOAD( "s92_06.bin", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_07.bin", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_08.bin", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_10.bin", 0x400000, 0x80000, CRC(960687d5) SHA1(2868c31121b1c7564e9767b9a19cdbf655c7ed1d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.11 */ - ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) /* sf2.12 */ + ROMX_LOAD( "s92_11.bin", 0x400002, 0x80000, CRC(978ecd18) SHA1(648a59706b93c84b4206a968ecbdc3e834c476f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92_12.bin", 0x400004, 0x80000, CRC(d6ec9a0a) SHA1(ed6143f8737013b6ef1684e37c05e037e7a80dae) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "s92_13.bin", 0x400006, 0x80000, CRC(ed2c67f6) SHA1(0083c0ffaf6fe7659ff0cf822be4346cd6e61329) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_REGION( 0x18000, "audiocpu", 0 ) ROM_LOAD( "s92_09.bin", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) ROM_CONTINUE( 0x10000, 0x08000 ) @@ -2551,98 +3444,17 @@ ROM_START( sf2yyc6 ) ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_END -ROM_START( stridergf ) - ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ - ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(da997474) SHA1(3e4ac98f9a6967d61899281b31c7de779723397b) ) - ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(5463aaa3) SHA1(e2d07ec2d818e9a2e2d7a77ff0309ae4011c0083) ) - ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(d20786db) SHA1(c9c75488e6bb37cfd0d56073faf87ff5713bc9a0) ) - ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(21aa2863) SHA1(446dc9280630318deb423531210a4eedfb4adfa6) ) - ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) ) // in "32" socket - - ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "st-2.8a", 0x000000, 0x80000, CRC(f92cc010) SHA1(7cec7f7cdc7efce28fd49ae0220a41d2fa811fd0) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket - ROMX_LOAD( "st-11.10a", 0x000002, 0x80000, CRC(9abd7b1e) SHA1(cb00c37ad5b53daee8a1d7bb949adc3559561d13) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket - ROMX_LOAD( "st-5.4a", 0x000004, 0x80000, CRC(0dcc68b1) SHA1(9c3179082944a6ca105046a02cea38170e91696f) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket - ROMX_LOAD( "st-9.6a", 0x000006, 0x80000, CRC(77f5debd) SHA1(796a1b6cda78cb5612c494dff52c3ac12c1d6531) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket - ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket - ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket - ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket - ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket - - ROM_REGION( 0x8000, "stars", 0 ) - ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) - - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ - ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) ) - ROM_CONTINUE( 0x10000, 0x08000 ) - - ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ - ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) ) - ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) ) - - ROM_REGION( 0x0200, "aboardplds", 0 ) - ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) - ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) - ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) - ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) - ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) - - ROM_REGION( 0x0200, "bboardplds", 0 ) - ROM_LOAD_OPTIONAL( "st24m1.1a", 0x0000, 0x0117, CRC(a80d357e) SHA1(4cb79c99c62c8300e694f4cd26f41dab7818f17f) ) - ROM_LOAD_OPTIONAL( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) -ROM_END - -ROM_START( stridergh ) - ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ - ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(da997474) SHA1(3e4ac98f9a6967d61899281b31c7de779723397b) ) - ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(5463aaa3) SHA1(e2d07ec2d818e9a2e2d7a77ff0309ae4011c0083) ) - ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(d20786db) SHA1(c9c75488e6bb37cfd0d56073faf87ff5713bc9a0) ) - ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(21aa2863) SHA1(446dc9280630318deb423531210a4eedfb4adfa6) ) - ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) ) // in "32" socket - - ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "st-2.8a", 0x000000, 0x80000, CRC(ea572e97) SHA1(60fed8d1375334a815e18365a626eece9d07b1cd) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "6" socket - ROMX_LOAD( "st-11.10a", 0x000002, 0x80000, CRC(d0bb852f) SHA1(0079418eafd751cd7a47053ef30a2042626fea8f) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "8" socket - ROMX_LOAD( "st-5.4a", 0x000004, 0x80000, CRC(8c408787) SHA1(291c9bd8d73e3ed9913164a034098ba94da4c03a) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "2" socket - ROMX_LOAD( "st-9.6a", 0x000006, 0x80000, CRC(07ba4914) SHA1(007d978a0d100c6dc9d1942e5b641b3a4e8ad678) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "4" socket - ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "5" socket - ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "7" socket - ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "1" socket - ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) ) // in "3" socket - - ROM_REGION( 0x8000, "stars", 0 ) - ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) - - ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ - ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) ) - ROM_CONTINUE( 0x10000, 0x08000 ) - - ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ - ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) ) - ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) ) - - ROM_REGION( 0x0200, "aboardplds", 0 ) - ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) - ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) - ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) - ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) - ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) - - ROM_REGION( 0x0200, "bboardplds", 0 ) - ROM_LOAD_OPTIONAL( "st24m1.1a", 0x0000, 0x0117, CRC(a80d357e) SHA1(4cb79c99c62c8300e694f4cd26f41dab7818f17f) ) - ROM_LOAD_OPTIONAL( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) -ROM_END ROM_START( sk2h1 ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "sgyx.800", 0x000000, 0x100000, CRC(3703a650) SHA1(6cb8d6f99df5e2e5cf04aee8737bb585f9328ffd) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 1' + ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) ) ROM_CONTINUE( 0x000004, 0x80000 ) ROM_CONTINUE( 0x200000, 0x80000 ) ROM_CONTINUE( 0x200004, 0x80000 ) - ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 2' + ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) ) ROM_CONTINUE( 0x000006, 0x80000 ) ROM_CONTINUE( 0x200002, 0x80000 ) ROM_CONTINUE( 0x200006, 0x80000 ) @@ -2686,11 +3498,11 @@ ROM_START( sk2h2 ) ROM_LOAD16_BYTE( "fg-a.040", 0x000001, 0x80000, CRC(f176ee8f) SHA1(fba357c31774aeecef88f70df4294514585df3a0) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 1' + ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) ) ROM_CONTINUE( 0x000004, 0x80000 ) ROM_CONTINUE( 0x200000, 0x80000 ) ROM_CONTINUE( 0x200004, 0x80000 ) - ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 2' + ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) ) ROM_CONTINUE( 0x000006, 0x80000 ) ROM_CONTINUE( 0x200002, 0x80000 ) ROM_CONTINUE( 0x200006, 0x80000 ) @@ -2741,11 +3553,11 @@ ROM_START( sk2h3 ) // same as MAME sgyxz - here until it gets fixed ROM_CONTINUE( 0xc0001, 0x20000 ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 1' + ROMX_LOAD("sgyxz_gfx1.bin", 0x000000, 0x80000, CRC(a60be9f6) SHA1(2298a4b6a2c83b76dc106a1efa19606b298d378a), ROM_GROUPWORD | ROM_SKIP(6) ) ROM_CONTINUE( 0x000004, 0x80000 ) ROM_CONTINUE( 0x200000, 0x80000 ) ROM_CONTINUE( 0x200004, 0x80000 ) - ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) ) // 'picture 2' + ROMX_LOAD("sgyxz_gfx2.bin", 0x000002, 0x80000, CRC(6ad9d048) SHA1(d47212d28d0a1ce349e4c59e5d0d99c541b3458e), ROM_GROUPWORD | ROM_SKIP(6) ) ROM_CONTINUE( 0x000006, 0x80000 ) ROM_CONTINUE( 0x200002, 0x80000 ) ROM_CONTINUE( 0x200006, 0x80000 ) @@ -2882,6 +3694,58 @@ ROM_START( sk2h14 ) ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) ) ROM_END +ROM_START( sk2h15 ) // wofaehp + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "sk2h15.8f", 0x000000, 0x80000, CRC(261766b2) SHA1(25cf51d0fb90e4a4e39492162f67de0defbc4285) ) + ROM_LOAD16_WORD_SWAP( "tk2a_22c.7f", 0x080000, 0x80000, CRC(900ad4cd) SHA1(988007447f93f3467029b9c29fd9670a7ecadaa3) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) ) + + 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 + +ROM_START( sk2h16 ) // wofahp2 + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "sk2h16.8f", 0x000000, 0x80000, CRC(7aed1751) SHA1(e5e10cae12a90c10831ad62669f8c2293a2ab263) ) + ROM_LOAD16_WORD_SWAP( "sk2h16.7f", 0x080000, 0x80000, CRC(89483936) SHA1(8f5d19e9c9660908d2bc256418e63b2c89f64fc4) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) ) + + 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 + ROM_START( sk2h21 ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "3js_23.rom", 0x000000, 0x80000, CRC(1ebb76da) SHA1(a3d9643a03e964477abd5164202566fe4a11b902) ) @@ -3166,6 +4030,139 @@ ROM_START( sk2h35 ) ROM_LOAD( "tk2_q4.rom", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) ) ROM_END + +ROM_START( slammastud ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "mbu_23ed.8f", 0x000000, 0x80000, CRC(7697273f) SHA1(d42ce6414b42db14305f0497fb760e8a3e868b9d) ) + ROM_LOAD16_BYTE( "mbu_24b.9e", 0x080000, 0x20000, CRC(95d5e729) SHA1(df3be896e55c92eb50887a4317178a3d11048433) ) + ROM_LOAD16_BYTE( "mbu_28b.9f", 0x080001, 0x20000, CRC(b1c7cbcb) SHA1(cf5ad72be4a055db876e7347b1826325b9bf81d9) ) + ROM_LOAD16_BYTE( "mbu_25b.10e", 0x0c0000, 0x20000, CRC(a50d3fd4) SHA1(dc3d108c3bc27f45b8b2e11919ba2a86e05b41d1) ) + ROM_LOAD16_BYTE( "mbu_29b.10f", 0x0c0001, 0x20000, CRC(08e32e56) SHA1(70ad78b079f777ec02089f0df20ce2baad7adce5) ) + ROM_LOAD16_WORD_SWAP( "mbu_21a.6f", 0x100000, 0x80000, CRC(d5007b05) SHA1(c55e55908aeda40ca2318c76ccbc05d333676875) ) + ROM_LOAD16_WORD_SWAP( "mbu_20a.5f", 0x180000, 0x80000, CRC(fc848af5) SHA1(cd3f6e50779b89ee57a9d08bfa1d58dea286457c) ) + + ROM_REGION( 0x600000, "gfx", 0 ) + ROMX_LOAD( "mb-1m.3a", 0x000000, 0x80000, CRC(41468e06) SHA1(fb365798f2889a20eebaea2393c9c2c8827003c4) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-3m.5a", 0x000002, 0x80000, CRC(f453aa9e) SHA1(24a103dc6f0dc96f8d0f6164ad732909c9cd2d6a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-2m.4a", 0x000004, 0x80000, CRC(2ffbfea8) SHA1(13e30133664a009686e1114c92b558bdbb91ea32) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-4m.6a", 0x000006, 0x80000, CRC(1eb9841d) SHA1(685da3e011a96b36be9f639a241b2f8f27da4629) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-5m.7a", 0x200000, 0x80000, CRC(506b9dc9) SHA1(933bf2fb9bcc1a408f961f0e7052da80144bddad) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-7m.9a", 0x200002, 0x80000, CRC(aff8c2fb) SHA1(ce37a6d5b1eb58c2d74f23f84ec824c214c93217) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-6m.8a", 0x200004, 0x80000, CRC(b76c70e9) SHA1(c21e255815ec9a985919dbd760ed266c28bd47cd) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-8m.10a", 0x200006, 0x80000, CRC(e60c9556) SHA1(b91c14092aa8dbb0922d96998123ef1970a658f6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-10m.3c", 0x400000, 0x80000, CRC(97976ff5) SHA1(ec9d3460816ab971a02fbce42960283091777e47) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-12m.5c", 0x400002, 0x80000, CRC(b350a840) SHA1(2b8b996cd08051e7e8e134bff5448775d78058a0) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-11m.4c", 0x400004, 0x80000, CRC(8fb94743) SHA1(294f6182c8a41b640d1f57cb5e3a2abce3b06482) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "mb-13m.6c", 0x400006, 0x80000, CRC(da810d5f) SHA1(392bbd405244b8c99024c9228cfec6a7ef0accdb) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ + ROM_LOAD( "mb_qa.5k", 0x00000, 0x08000, CRC(e21a03c4) SHA1(98c03fd2c9b6bf8a4fc25a4edca87fff7c3c3819) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x8000, "user1", 0 ) + ROM_COPY( "audiocpu", 0x00000, 0x00000, 0x8000 ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "mb-q1.1k", 0x000000, 0x80000, CRC(0630c3ce) SHA1(520fc74c5c3638f611fa2f1b5efb08b91747e29b) ) + ROM_LOAD( "mb-q2.2k", 0x080000, 0x80000, CRC(354f9c21) SHA1(1dc6b39791fd0f760697f409a6b62361a7bf62e9) ) + ROM_LOAD( "mb-q3.3k", 0x100000, 0x80000, CRC(7838487c) SHA1(056b7da05cfca46873edacd674ca25c70855c6db) ) + ROM_LOAD( "mb-q4.4k", 0x180000, 0x80000, CRC(ab66e087) SHA1(066ea69a0157e8647eea3c44d0a1843898860678) ) + ROM_LOAD( "mb-q5.1m", 0x200000, 0x80000, CRC(c789fef2) SHA1(10d1e3d92288fccd4e064a3716a788a165efc3c9) ) + ROM_LOAD( "mb-q6.2m", 0x280000, 0x80000, CRC(ecb81b61) SHA1(e339f21ae47de4782f3b338befcdac659c3503f6) ) + ROM_LOAD( "mb-q7.3m", 0x300000, 0x80000, CRC(041e49ba) SHA1(3220b033a5c0cfbbe75c0c113cf2db39fb093a7e) ) + ROM_LOAD( "mb-q8.4m", 0x380000, 0x80000, CRC(59fe702a) SHA1(807178dfc6d864e49fd7aabb5c4895835cf0e85b) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) +ROM_END + + +ROM_START( stridergf ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(da997474) SHA1(3e4ac98f9a6967d61899281b31c7de779723397b) ) + ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(5463aaa3) SHA1(e2d07ec2d818e9a2e2d7a77ff0309ae4011c0083) ) + ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(d20786db) SHA1(c9c75488e6bb37cfd0d56073faf87ff5713bc9a0) ) + ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(21aa2863) SHA1(446dc9280630318deb423531210a4eedfb4adfa6) ) + ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "st-2.8a", 0x000000, 0x80000, CRC(f92cc010) SHA1(7cec7f7cdc7efce28fd49ae0220a41d2fa811fd0) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-11.10a", 0x000002, 0x80000, CRC(9abd7b1e) SHA1(cb00c37ad5b53daee8a1d7bb949adc3559561d13) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-5.4a", 0x000004, 0x80000, CRC(0dcc68b1) SHA1(9c3179082944a6ca105046a02cea38170e91696f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-9.6a", 0x000006, 0x80000, CRC(77f5debd) SHA1(796a1b6cda78cb5612c494dff52c3ac12c1d6531) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x8000, "stars", 0 ) + ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) ) + ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "st24m1.1a", 0x0000, 0x0117, CRC(a80d357e) SHA1(4cb79c99c62c8300e694f4cd26f41dab7818f17f) ) + ROM_LOAD_OPTIONAL( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) +ROM_END + +ROM_START( stridergh ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_BYTE( "30.11f", 0x00000, 0x20000, CRC(da997474) SHA1(3e4ac98f9a6967d61899281b31c7de779723397b) ) + ROM_LOAD16_BYTE( "35.11h", 0x00001, 0x20000, CRC(5463aaa3) SHA1(e2d07ec2d818e9a2e2d7a77ff0309ae4011c0083) ) + ROM_LOAD16_BYTE( "31.12f", 0x40000, 0x20000, CRC(d20786db) SHA1(c9c75488e6bb37cfd0d56073faf87ff5713bc9a0) ) + ROM_LOAD16_BYTE( "36.12h", 0x40001, 0x20000, CRC(21aa2863) SHA1(446dc9280630318deb423531210a4eedfb4adfa6) ) + ROM_LOAD16_WORD_SWAP( "st-14.8h", 0x80000, 0x80000, CRC(9b3cfc08) SHA1(a7d7f270a097437affa845d80bed82a1fa874878) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "st-2.8a", 0x000000, 0x80000, CRC(ea572e97) SHA1(60fed8d1375334a815e18365a626eece9d07b1cd) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-11.10a", 0x000002, 0x80000, CRC(d0bb852f) SHA1(0079418eafd751cd7a47053ef30a2042626fea8f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-5.4a", 0x000004, 0x80000, CRC(8c408787) SHA1(291c9bd8d73e3ed9913164a034098ba94da4c03a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-9.6a", 0x000006, 0x80000, CRC(07ba4914) SHA1(007d978a0d100c6dc9d1942e5b641b3a4e8ad678) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-1.7a", 0x200000, 0x80000, CRC(005f000b) SHA1(e6f65af7cc3295be9efaaded352e7ae6320b4133) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-10.9a", 0x200002, 0x80000, CRC(b9441519) SHA1(bb0926dc484dae4f64c5e5a6bce20afdc7aeba55) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-4.3a", 0x200004, 0x80000, CRC(b7d04e8b) SHA1(5c5a079baa694927c33d0e0c23e5ff09d6c9d985) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "st-8.5a", 0x200006, 0x80000, CRC(6b4713b4) SHA1(759b8b1fc7a5c4b00d74a27c2dd11667db44b09e) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x8000, "stars", 0 ) + ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "09.12b", 0x00000, 0x08000, CRC(2ed403bc) SHA1(4ce863ea40d789db5a7cfce91d2c7c720deb9be5) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) /* Samples */ + ROM_LOAD( "18.11c", 0x00000, 0x20000, CRC(4386bc80) SHA1(fb2b261995aeacfa13e7ee40b1a973dfb178f015) ) + ROM_LOAD( "19.12c", 0x20000, 0x20000, CRC(444536d7) SHA1(a14f5de2f6b5b29ae5161dca1f8c08c566301a91) ) + + ROM_REGION( 0x0200, "aboardplds", 0 ) + ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) + ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) + ROM_LOAD_OPTIONAL( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) ) + ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) + ROM_LOAD_OPTIONAL( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) ) + + ROM_REGION( 0x0200, "bboardplds", 0 ) + ROM_LOAD_OPTIONAL( "st24m1.1a", 0x0000, 0x0117, CRC(a80d357e) SHA1(4cb79c99c62c8300e694f4cd26f41dab7818f17f) ) + ROM_LOAD_OPTIONAL( "lwio.11e", 0x0000, 0x0117, CRC(ad52b90c) SHA1(f0fd6aeea515ee449320fe15684e6b3ab7f97bf4) ) +ROM_END + + ROM_START( wofb ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "3-f2ab.040", 0x000000, 0x80000, CRC(61fd0a01) SHA1(a7b5bdddd7b31645e33314c1d3649e1506cecfea) ) @@ -3212,8 +4209,8 @@ ROM_START( wofch_v3 ) ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2(ch)_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2(ch)_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) @@ -3238,8 +4235,8 @@ ROM_START( wofchdx ) ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2(ch)_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2(ch)_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) @@ -3264,10 +4261,10 @@ ROM_START( wofchdx1 ) ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2(ch)_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_05.7a - ROMX_LOAD( "tk2(ch)_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_06.8a - ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* 1 byte different from wofj, pcb verified */ - ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_08.10a + ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) ) @@ -3290,10 +4287,36 @@ ROM_START( wofchdx2 ) ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2(ch)_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_05.7a - ROMX_LOAD( "tk2(ch)_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_06.8a - ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) /* 1 byte different from wofj, pcb verified */ - ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2_08.10a + ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) + + 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 + +ROM_START( wofchspp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "wofchspp.8f", 0x000000, 0x80000, CRC(61cf24c1) SHA1(e075432449923e69310040a268f81b74c31f5bcc) ) + ROM_LOAD16_WORD_SWAP( "wofchspp.7f", 0x080000, 0x80000, CRC(a3cd1c51) SHA1(459c90bea4045a8ad79a36529d169951ac802fc3) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_07.9a", 0x200004, 0x80000, CRC(cc9006c9) SHA1(cfcbec3a67052268a7739538aa28a6391fe5400e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2(ch)_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) ) @@ -3386,18 +4409,18 @@ ROM_END ROM_START( wofjh ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ - ROM_LOAD16_WORD_SWAP( "tk2j23h.bin", 0x000000, 0x80000, CRC(84d38575) SHA1(537f12180adfcea7bceb24b0fa9af9165dbbe2e4) ) - ROM_LOAD16_WORD_SWAP( "tk2j22c.bin", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) ) + ROM_LOAD16_WORD_SWAP( "xtk2j23h.bin", 0x000000, 0x80000, CRC(84d38575) SHA1(537f12180adfcea7bceb24b0fa9af9165dbbe2e4) ) + ROM_LOAD16_WORD_SWAP( "xtk2j22c.bin", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "tk2_gfx1.rom", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2_gfx3.rom", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2_gfx2.rom", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2_gfx4.rom", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk205.bin", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk206.bin", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk207.bin", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk208.bin", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_gfx1.rom", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_gfx3.rom", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_gfx2.rom", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_gfx4.rom", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ ROM_LOAD( "tk2_qa.rom", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) ) @@ -3433,24 +4456,17 @@ ROM_END ROM_START( wofjhb ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "tk2j.23c", 0x00000, 0x80000, CRC(432a74ff) SHA1(5675970143134c0cc3ae4964a8817fafee7876fa) ) - // this rom is incorrect - ROM_LOAD16_WORD_SWAP( "tk2e_22c.7f", 0x80000, 0x80000, CRC(608c17e3) SHA1(52c2d05279623d93b27856e6b76830796a089eae) ) - ROM_FILL(0x7284, 1, 0x4E) // patch out protection - ROM_FILL(0x7285, 1, 0x71) - ROM_FILL(0x72a5, 1, 0x02) - ROM_FILL(0x72c4, 1, 0x60) - //ROM_FILL(0x74CA, 1, 0x4E) // patch out protection - //ROM_FILL(0x74CB, 1, 0x71) + ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) ) ROM_REGION( 0x400000, "gfx", 0 ) ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) ) @@ -3461,49 +4477,22 @@ ROM_START( wofjhb ) 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_REGION( 0x0200, "aboardplds", 0 ) - ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) - ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) - ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) - ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) - - ROM_REGION( 0x0200, "bboardplds", 0 ) - ROM_LOAD_OPTIONAL( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) ) - ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) - ROM_LOAD_OPTIONAL( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) - - ROM_REGION( 0x0200, "cboardplds", 0 ) - ROM_LOAD_OPTIONAL( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) - - ROM_REGION( 0x0200, "dboardplds", 0 ) - ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) - ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) // pal verification required - ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END ROM_START( wofjhc ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "tk2j2.23c", 0x00000, 0x80000, CRC(671b0c62) SHA1(7bba05e5e513edd878a30ef998b3beb4fd053cc6) ) - // this rom is incorrect - ROM_LOAD16_WORD_SWAP( "tk2e_22c.7f", 0x80000, 0x80000, CRC(608c17e3) SHA1(52c2d05279623d93b27856e6b76830796a089eae) ) - ROM_FILL(0x7284, 1, 0x4E) // patch out protection - ROM_FILL(0x7285, 1, 0x71) - ROM_FILL(0x72a5, 1, 0x02) - ROM_FILL(0x72c4, 1, 0x60) - //ROM_FILL(0x74CA, 1, 0x4E) // patch out protection - //ROM_FILL(0x74CB, 1, 0x71) + ROM_LOAD16_WORD_SWAP( "tk2j_22c.7f", 0x080000, 0x80000, CRC(b74b09ac) SHA1(3a44d6db5f51e1b5d2b43ef0ad1191da21e48427) ) ROM_REGION( 0x400000, "gfx", 0 ) ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-5m.7a", 0x200000, 0x80000, CRC(291f0f0b) SHA1(094baf0f960f25fc2525b3b1cc378a49d9a0955d) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-7m.9a", 0x200002, 0x80000, CRC(3edeb949) SHA1(c155698dd9ee9eb24bbc97a21118ef2e897ea82f) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-6m.8a", 0x200004, 0x80000, CRC(1abd14d6) SHA1(dffff3126f102b4ec028a81405fc5b9bd7bb65b3) , ROM_GROUPWORD | ROM_SKIP(6) ) - ROMX_LOAD( "tk2-8m.10a", 0x200006, 0x80000, CRC(b27948e3) SHA1(870d5d23f56798831c641e877ea94217058b2ddc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_05.7a", 0x200000, 0x80000, CRC(e4a44d53) SHA1(b747679f4d63e5e62d9fd81b3120fba0401fadfb) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_06.8a", 0x200002, 0x80000, CRC(58066ba8) SHA1(c93af968e21094d020e4b2002e0c6fc0d746af0b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_07.9a", 0x200004, 0x80000, CRC(d706568e) SHA1(7886414dc86c42e35d24b85c4bfa41a9f0c167ac) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_08.10a", 0x200006, 0x80000, CRC(d4a19a02) SHA1(ff396b1d33d9b4842140f2c6d085fe05748e3244) , ROM_GROUPWORD | ROM_SKIP(6) ) ROM_REGION( 0x28000, "audiocpu", 0 ) /* QSound Z80 code */ ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) ) @@ -3514,26 +4503,6 @@ ROM_START( wofjhc ) 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_REGION( 0x0200, "aboardplds", 0 ) - ROM_LOAD_OPTIONAL( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) ) - ROM_LOAD_OPTIONAL( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) ) - ROM_LOAD_OPTIONAL( "prg2", 0x0000, 0x0117, CRC(4386879a) SHA1(c36896d169d8c78393609acbbe4397931292a033) ) - ROM_LOAD_OPTIONAL( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) ) - - ROM_REGION( 0x0200, "bboardplds", 0 ) - ROM_LOAD_OPTIONAL( "tk263b.1a", 0x0000, 0x0117, CRC(c4b0349b) SHA1(b4873dd5ad8735048deb3475222dde3c0b67eaaf) ) - ROM_LOAD_OPTIONAL( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) - ROM_LOAD_OPTIONAL( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) ) - - ROM_REGION( 0x0200, "cboardplds", 0 ) - ROM_LOAD_OPTIONAL( "ioc1.ic1", 0x0000, 0x0117, CRC(0d182081) SHA1(475b3d417785da4bc512cce2b274bb00d4cc6792) ) - - ROM_REGION( 0x0200, "dboardplds", 0 ) - ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) - ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) // pal verification required - ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END ROM_START( wofjm ) @@ -3569,10 +4538,10 @@ ROM_START( wofjzero ) ROM_LOAD16_WORD_SWAP( "wofjzero.6f", 0x100000, 0x80000, CRC(7a5f60c0) SHA1(b4d864e39811d1407ce2ba9580bd1e230edf37ff) ) ROM_REGION( 0x400000, "gfx", 0 ) - ROMX_LOAD( "tk2_01.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-1m.3a - ROMX_LOAD( "tk2_02.4a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-3m.5a - ROMX_LOAD( "tk2_03.5a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-2m.4a - ROMX_LOAD( "tk2_04.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) // == tk2-4m.6a + ROMX_LOAD( "tk2_01.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_02.4a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_03.5a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2_04.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "wofjzero.7a", 0x200000, 0x80000, CRC(10d0e577) SHA1(fbf4f13a2fe64031dda5a27fdf6accfef12c1ce2) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "wofjzero.8a", 0x200002, 0x80000, CRC(e23dd70e) SHA1(58faf44c00667331c9f7980e803788e4deb1bc25) , ROM_GROUPWORD | ROM_SKIP(6) ) ROMX_LOAD( "wofjzero.9a", 0x200004, 0x80000, CRC(e1d7664e) SHA1(d8d6acf51f8beda71d1b8f5318cd02485bebf8b5) , ROM_GROUPWORD | ROM_SKIP(6) ) @@ -3605,7 +4574,7 @@ ROM_START( wofjzero ) ROM_REGION( 0x0200, "dboardplds", 0 ) ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) // pal verification required + ROM_LOAD_OPTIONAL( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END @@ -3651,7 +4620,7 @@ ROM_START( wofr1h ) ROM_REGION( 0x0200, "dboardplds", 0 ) ROM_LOAD_OPTIONAL( "d7l1.7l", 0x0000, 0x0117, CRC(27b7410d) SHA1(06d0cba0226850f100ff1f539bd7d5db0f90c730) ) ROM_LOAD_OPTIONAL( "d8l1.8l", 0x0000, 0x0117, CRC(539fc7da) SHA1(cad5c91629c6247e49ccbbcbfe6b08229eafae07) ) - ROM_LOAD_OPTIONAL( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) // pal verification required + ROM_LOAD_OPTIONAL( "d9k1.9k", 0x0000, 0x0117, NO_DUMP ) ROM_LOAD_OPTIONAL( "d10f1.10f", 0x0000, 0x0117, CRC(6619c494) SHA1(3aef656c07182a2186f810f30e0d854dd5bd8d18) ) ROM_END @@ -3696,41 +4665,67 @@ ROM_START( wofsf2 ) ROM_END + /*************************************************************************** - Driver Macros for HBMAME + Driver Macros for HBMAME ***************************************************************************/ +GAME( 1991, 3wondrud, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "hack", "Three Wonders (US 910520 Phoenix Edition)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, captcocc, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Pipi899", "Captain Commando (OTHER COUNTRY 911014)(Characters Change hack by Pipi899 2009-01-20)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1991, captcomc, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Chinese 911202)", MACHINE_SUPPORTS_SAVE ) // "OTHER COUNTRY" GAME( 1991, captcomh, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Shinwa Hack, World 911014)" , MACHINE_SUPPORTS_SAVE ) +GAME( 1991, captcoud, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (US 910928 Phoenix Edition)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, captcovs, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Pipi899", "Captain Commando (1vs4 hack by Pipi899, cheat by sssskkkk 2009-04-25)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 2000, cps1demo, 0, cps1frog, cps1frog, cps_state, cps1, ROT0, "Charles Doty", "Demo - CPS1", MACHINE_SUPPORTS_SAVE ) // no sound GAME( 2006, cps1frog, 0, cps1frog, cps1frog, cps_state, cps1, ROT0, "Rastersoft", "Frog Feast (CPS1)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, cps1test, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Cal2", "CPS1 Diagnostic (for sf2ce)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, cps1testa, megaman, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Cal2", "CPS1 Diagnostic (for megaman)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, daimakb, ghouls, daimakb, daimakai, cps_state, cps1, ROT0, "bootleg", "Dai Makai-Mura (Japan, bootleg)" , MACHINE_SUPPORTS_SAVE ) -GAME( 1993, dinob, dino, qsound, dino, cps_state, dinohb, ROT0, "bootleg", "Cadillacs and Dinosaurs (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, daimakb, ghouls, daimakb, daimakai, cps_state, cps1, ROT0, "hack", "Dai Makai-Mura (Japan, bootleg)" , MACHINE_SUPPORTS_SAVE ) +GAME( 2008, dino08h2, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Enhanced Revision 2008 set 3 v2.0f by Pipi899 2008-10-17)", MACHINE_SUPPORTS_SAVE ) +GAME( 2008, dino08h3, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Enhanced Revision 2008 set 1 v1.1 by Pipi899 2008-10-11)", MACHINE_SUPPORTS_SAVE ) +GAME( 2008, dino08hp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Enhanced Revision 2008 set 2 v1.1f by Pipi899 2008-10-17)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, dinob, dino, qsound, dino, cps_state, dinohb, ROT0, "hack", "Cadillacs and Dinosaurs (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, dinobt, dino, qsound, dino, cps_state, dino, ROT0, "hack", "Cadillacs and Dinosaurs (BT hack version)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, dinobtpp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (BT Power hack by Pipi899 2009-01-15)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, dinocgba, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Cngba hack Version set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, dinocgbb, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Cngba hack Version set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, dinocgbc, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Cngba hack Version set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, dinoeh, dino, qsound, dinohz, cps_state, dinoeh, ROT0, "hack", "Cadillacs and Dinosaurs (unknown hack)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, dinoex, dino, qsound, dinohz, cps_state, dinoeh, ROT0, "hack", "Cadillacs and Dinosaurs (unknown hack2)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, dinoh, dino, qsound, dinohz, cps_state, dinoh, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 1)" , MACHINE_SUPPORTS_SAVE ) GAME( 1997, dinoha, dino, qsound, dinohz, cps_state, dinoh, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, dinohb, dino, qsound, dinohz, cps_state, dinohb, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 2010, dinojp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs Kyouryuu-Shinseiki Plus (20100210)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, dinohp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Hack by Pipi899 set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, dinohx, dino, qsound, dinohz, cps_state, dinoh, ROT0, "Winuxx", "Cadillacs and Dinosaurs (Revised hack by Winuxx)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 2010, dinojp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs Kyouryuu-Shinseiki Plus (2010-02-10)", MACHINE_SUPPORTS_SAVE ) +GAME( 2008, dinorp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Hack by Pipi899 set 2 2008-08-05)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, dinoslice, dino, qsound, dino, cps_state, dino, ROT0, "hack", "Cadillacs and Dinosaurs (hack set 4)", MACHINE_SUPPORTS_SAVE ) // "ETC" +GAME( 2009, dinouphp, dino, qsound, dino, cps_state, dino, ROT0, "Pipi899", "Cadillacs and Dinosaurs (Up Version hack by Pipi899 2009-01-15)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, dinoz, dino, qsound, dinohz, cps_state, dinoz, ROT0, "hack", "Cadillacs and Dinosaurs Z (Boss Hack)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, knight21, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "bootleg", "Knights of the Round (Japan, debug bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1989, ffightb, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "hack", "Final Fight (Boss Hack dumped by Bonky0013, modified by MPT)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, knight21, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (Japan, debug bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, knightsa, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (AngryUpdate By EEZEZY(LB70))", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1991, knightsb2, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "bootleg", "Knights of the Round (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, knightsb2, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, knightsh, knights, cps1_10MHz, knightsh, cps_state, cps1, ROT0, "hack", "Knights of the Round (hack)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1991, knightsha, knights, cps1_10MHz, knightsh, cps_state, cps1, ROT0, "hack", "Knights of the Round (Hack set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1991, knightsjb, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "bootleg", "Knights of the Round (Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, knightsjb, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 2015, knightsro, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Sebastian Mihai", "Knights of the Round (Romanian)", MACHINE_SUPPORTS_SAVE ) +GAME( 1991, knightud, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "hack", "Knights of the Round (US 911127 Phoenix Edition)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, kodd, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "hack", "The King of Dragons (World 910711 Phoenix Edition)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 2002, kodh, kod, cps1_10MHz, kodh, cps_state, cps1, ROT0, "Wangy2", "The King of Dragons (ETC 910711 hack)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, kodsp, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Bonusjz", "The King of Dragons (Remix Special hack by Bonusjz)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, kodud, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "hack", "The King of Dragons (US 910910 Phoenix Edition (16b/40p))", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1994, pnicku, 0, cps1_10MHz, pnicku, cps_state, cps1, ROT0, "Compile (Capcom licence)", "Pnickies (USA 940608)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, punisherjh, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Shinwa Hack, Japan 930422)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, punisherjha, punisher, qsound, punisher, cps_state, punisher, ROT0, "Zhyxxxx", "The Punisher (930422 Japan, SM Experience Edition)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, punisherb, punisher, qsound, punisher, cps_state, punisherb,ROT0, "bootleg", "The Punisher (Bootleg)", MACHINE_SUPPORTS_SAVE) +GAME( 1993, punisherb, punisher, qsound, punisher, cps_state, punisherb,ROT0, "hack", "The Punisher (Bootleg)", MACHINE_SUPPORTS_SAVE) GAME( 2007, punisherf, punisher, qsound, punisher, cps_state, punisherb,ROT0, "Zhyxxxx", "The Punisher (Flash version) 2007-09-24", MACHINE_SUPPORTS_SAVE) +GAME( 2009, punisherje1, punisher, qsound, punisher, cps_state, punisher, ROT0, "Zhyxxxx", "The Punisher (SM Experience Edition hack by Zhyxxxx set 1 2009-06-12)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, punisherjh, punisher, qsound, punisher, cps_state, punisher, ROT0, "hack", "The Punisher (Shinwa Hack, Japan 930422)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, punisherjh1, punisher, qsound, punisher, cps_state, punisher, ROT0, "Zhyxxxx", "The Punisher (SQ Unlimited Version hack by Zhyxxxx 2009-06-08)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, punisherjha, punisher, qsound, punisher, cps_state, punisher, ROT0, "Zhyxxxx", "The Punisher (930422 Japan, SM Experience Edition)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, punisherud1, punisher, qsound, punisher, cps_state, punisher, ROT0, "hack", "The Punisher (US 930422 Phoenix Edition (8b/32p))", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, punisherud2, punisher, qsound, punisher, cps_state, punisher, ROT0, "hack", "The Punisher (US 930422 Phoenix Edition (16b/40p))", MACHINE_SUPPORTS_SAVE ) GAME( 1991, sf2c, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "hack", "Street Fighter II: The World Warrior (Chinese 911210)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, sf2cebr, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Neogeo BR team", "Street Fighter II' - Champion Edition (Brasil 920313)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, sf2ced, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Drakon", "Street Fighter II': Champion Edition (Sheng Long Hack v7.1)", MACHINE_SUPPORTS_SAVE ) // "ETC" @@ -3738,23 +4733,21 @@ GAME( 2012, sf2ceda, sf2ce, cps1_12MHz, sf2, cps_state, cps1, RO GAME( 1999, sf2ceh, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II' - Champion Edition (Hispanic 990804)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, sf2koryuh, sf2ce, cps1_12MHz, sf2hack, cps_state, cps1, ROT0, "TT", "Street Fighter II': Champion Edition (Hack by TT)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version GAME( 1992, sf2h9, sf2ce, cps1_12MHz, sf2, cps_state, sf2h9, ROT0, "Mega Co", "Street Fighter II - Champion Edition (H9, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2h10, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II' - Champion Edition (H10, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2h11, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II' - Champion Edition (H11, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2h12, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II' - Champion Edition (H12, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2h13, sf2ce, cps1_12MHz, sf2j, cps_state, sf2h13, ROT0, "bootleg", "Street Fighter II' Turbo - Hyper Fighting (H13, bootleg)", MACHINE_SUPPORTS_SAVE ) // bad tile for Blanka on player select screen +GAME( 1992, sf2h10, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II' - Champion Edition (H10, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2h11, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II' - Champion Edition (H11, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2h12, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II' - Champion Edition (H12, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2h13, sf2ce, cps1_12MHz, sf2j, cps_state, sf2h13, ROT0, "hack", "Street Fighter II' Turbo - Hyper Fighting (H13, bootleg)", MACHINE_SUPPORTS_SAVE ) // bad tile for Blanka on player select screen GAME( 2012, sf2pun, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Drakon", "Street Fighter II': Champion Edition (Punishment Edition v1 Final)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, sf2sl73a, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Drakon", "Street Fighter II': Champion Edition (Sheng Long v7.3a)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2th, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Turbo set 1, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2tha, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Turbo set 2, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2th, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II': Champion Edition (Turbo set 1, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2tha, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II': Champion Edition (Turbo set 2, bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, sf2tlona, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Tu Long", "Street Fighter II' - Champion Edition (Slay the Dragon set 1)", MACHINE_SUPPORTS_SAVE ) // These 2 are Chinese bootlegs GAME( 1992, sf2tlonb, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Tu Long", "Street Fighter II' - Champion Edition (Slay the Dragon set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, sf2tlonc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "Tu Long", "Street Fighter II' - Champion Edition (Slay the Dragon set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, sf2turyu, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II - Champion Edition (Tu Long prototype)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2yyc3d5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II' - Champion Edition (YYC, 3D5, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2yyc3g, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II' - Champion Edition (YYC, 3G, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, sf2yyc6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II' - Champion Edition (YYC, 6, bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 2014, stridergf, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Willkaotix", "Strider (Gfx fix)", MACHINE_SUPPORTS_SAVE ) -GAME( 2014, stridergh, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Willkaotix", "Strider (gfx fix, uncensored)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2yyc3d5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II' - Champion Edition (YYC, 3D5, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2yyc3g, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II' - Champion Edition (YYC, 3G, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, sf2yyc6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "hack", "Street Fighter II' - Champion Edition (YYC, 6, bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, sk2h1, wof, sk2h3, sk2h1, cps_state, sk2h1, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1999, sk2h1q, wof, sk2h1q, sk2h1, cps_state, sk2h1q, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H1Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1999, sk2h2, wof, sk2h3, sk2h1, cps_state, sk2h1, ROT0, "All-In Co Ltd", "Sangokushi II (Asia 921005) (set H2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) @@ -3764,8 +4757,10 @@ GAME( 1992, sk2h11, wof, qsound, wof, cps_state, wof, RO GAME( 1992, sk2h12, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Sangokushi II (Asia 921005) (set H12)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, sk2h13, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Sangokushi II (Asia 921005) (set H13)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, sk2h14, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Sangokushi II (Asia 921005) (set H14)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, sk2h21, wof, qsound, sk2h21, cps_state, sk2h21, ROT0, "bootleg", "Sangokushi II (Asia 921005) (set H21)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, sk2h22, wof, sk2h3, sk2h21, cps_state, sk2h22, ROT0, "bootleg", "San Jian Sheng (Chinese bootleg of Sangokushi II, set H22)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2009, sk2h15, wof, qsound, wof, cps_state, wof, ROT0, "Pipi899", "Sangokushi II (Hack by Pipi899 2009-01-02)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, sk2h16, wof, qsound, wof, cps_state, wof, ROT0, "Pipi899", "Sangokushi II (Easy Moves hack by Pipi899 2009-01-12)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, sk2h21, wof, qsound, sk2h21, cps_state, sk2h21, ROT0, "hack", "Sangokushi II (Asia 921005) (set H21)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, sk2h22, wof, sk2h3, sk2h21, cps_state, sk2h22, ROT0, "hack", "San Jian Sheng (Chinese bootleg of Sangokushi II, set H22)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1997, sk2h31, wof, sk2h31, sk2h31, cps_state, sk2h22, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H31)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1997, sk2h31q, wof, sk2h31q, sk2h31, cps_state, sk2h31, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H31Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1997, sk2h32, wof, sk2h31, sk2h31, cps_state, sk2h22, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H32)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) @@ -3775,20 +4770,24 @@ GAME( 1995, sk2h33q, wof, sk2h31q, sk2h31, cps_state, sk2h31, RO GAME( 1995, sk2h34, wof, sk2h31, sk2h31, cps_state, sk2h22, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H34)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1995, sk2h34q, wof, sk2h31q, sk2h31, cps_state, sk2h31, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H34Q)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1995, sk2h35, wof, sk2h35, wof, cps_state, sk2h35, ROT0, "Gen Gan San Go", "Sangokushi II (Asia 921005) (set H35)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, wofb, wof, qsound, wof, cps_state, wofb, ROT0, "bootleg", "Warriors of Fate (ETC 921002) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, wofch_v3, wofch, qsound, wofch, cps_state, wof, ROT0, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031) (Set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, slammastud, slammast, qsound, slammast, cps_state, slammast, ROT0, "hack", "Saturday Night Slam Masters (USA 930713 Phoenix Edition)", MACHINE_SUPPORTS_SAVE ) +GAME( 2014, stridergf, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Willkaotix", "Strider (Gfx fix)", MACHINE_SUPPORTS_SAVE ) +GAME( 2014, stridergh, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Willkaotix", "Strider (gfx fix, uncensored)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, wofb, wof, qsound, wof, cps_state, wofb, ROT0, "hack", "Warriors of Fate (ETC 921002) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, wofch_v3, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031) (Set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 2010, wofchdx, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Sangokushi 3 Gaiden Kakou-on's Revenge DX (red)", MACHINE_SUPPORTS_SAVE ) GAME( 2010, wofchdx1, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Sangokushi 3 Gaiden Kakou-on's Revenge DX (green set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 2010, wofchdx2, wofch, qsound, wofch, cps_state, wof, ROT0, "hack", "Sangokushi 3 Gaiden Kakou-on's Revenge DX (green set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, wofjcn, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Tenchi wo Kurau II (Japan 921031) (Chinese)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2010, wofchspp, wofch, qsound, wofch, cps_state, wof, ROT0, "Pipi899", "CPS Changer - Tenchi Wo Kurau II (Super Jian Huang hack by Pipi899 2010-01-29)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, wofjcn, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Chinese)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1992, woffr, wof, qsound, wof, cps_state, wof, ROT0, "Arkatrad", "Warriors of Fate (France 030728)", MACHINE_SUPPORTS_SAVE ) GAME( 1992, wofjh, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, wofjhb, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1992, wofjhc, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 3)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1992, wofjhb, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, wofjhc, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Japan 921031) (Hack set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, wofjm, wof, qsound, wof, cps_state, wof, ROT0, "AXDX", "Tenchi wo Kurau 2 (Japan 921031)", MACHINE_SUPPORTS_SAVE ) -GAME( 2012, wofjzero, wof, qsound, wof, cps_state, wof, ROT0, "Hack by Zero", "Tenchi wo Kurau II (Power edition)(Japan 921031)", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, wofr1h, wof, qsound, wof, cps_state, wof, ROT0, "Hack", "Warriors of Fate (ETC 921002) hack", MACHINE_SUPPORTS_SAVE ) -GAME( 1992, wofsf2, wof, wofsf2, wof, cps_state, cps1, ROT0, "Capcom", "Warriors of Fate (conversion for SF2 HW) (ETC 921031)", MACHINE_SUPPORTS_SAVE ) +GAME( 2012, wofjzero, wof, qsound, wof, cps_state, wof, ROT0, "Zero", "Tenchi wo Kurau II (Power edition)(Japan 921031)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, wofr1h, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Warriors of Fate (ETC 921002) hack", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, wofsf2, wof, wofsf2, wof, cps_state, cps1, ROT0, "hack", "Warriors of Fate (conversion for SF2 HW) (ETC 921031)", MACHINE_SUPPORTS_SAVE ) /*************************************************************************************************************************/ diff --git a/docs/release/src/hbmame/drivers/cps2.cpp b/docs/release/src/hbmame/drivers/cps2.cpp index 18dd8812e75..20fe79cc639 100644 --- a/docs/release/src/hbmame/drivers/cps2.cpp +++ b/docs/release/src/hbmame/drivers/cps2.cpp @@ -56,6 +56,40 @@ ROM_START( 1944fp ) _1944_USA_KEY ROM_END + +ROM_START( ddsomavs ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "ddsomavs.03g", 0x000000, 0x80000, CRC(e28c61f2) SHA1(a15ba7e4d1c6e2e2c047e12edefc6b1564464496) ) + ROM_LOAD16_WORD_SWAP( "ddsomavs.04g", 0x080000, 0x80000, CRC(145efa6f) SHA1(2da422bf43c4b4abd20ddcf7b0dd4a37f23d756a) ) + ROM_LOAD16_WORD_SWAP( "dd2.05g", 0x100000, 0x80000, CRC(5eb1991c) SHA1(429a60b5396ff4192904867fbe0524268f0edbcb) ) + ROM_LOAD16_WORD_SWAP( "dd2.06g", 0x180000, 0x80000, CRC(c26b5e55) SHA1(9590206f30459941880ff4b56c7f276cc78e3a22) ) + ROM_LOAD16_WORD_SWAP( "dd2.07", 0x200000, 0x80000, CRC(909a0b8b) SHA1(58bda17c36063a79df8b5031755c7909a9bda221) ) + ROM_LOAD16_WORD_SWAP( "dd2.08", 0x280000, 0x80000, CRC(e53c4d01) SHA1(bad872e4e793a39f68bc0e580772e982714b5876) ) + ROM_LOAD16_WORD_SWAP( "dd2.09", 0x300000, 0x80000, CRC(5f86279f) SHA1(c2a454e5f821b1cdd49f2cf0602e9bfb7ba63340) ) + ROM_LOAD16_WORD_SWAP( "dd2.10", 0x380000, 0x80000, CRC(ad954c26) SHA1(468c01735dbdb1114b37060546a660678290a97f) ) + + ROM_REGION( 0x1800000, "gfx", 0 ) + ROMX_LOAD( "dd2.13m", 0x0000000, 0x400000, CRC(a46b4e6e) SHA1(fb90f42868c581c481b4ceff9f692753fb186b30) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.15m", 0x0000002, 0x400000, CRC(d5fc50fc) SHA1(bc692f17b18bb47a724cd5152377cd5ccd6e184a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.17m", 0x0000004, 0x400000, CRC(837c0867) SHA1(3d6db290a8f76299a23543f0ccf6a7905e1088ac) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.19m", 0x0000006, 0x400000, CRC(bb0ec21c) SHA1(e43ccc1cf63ccd2b504cc9fd701af849a7321914) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.14m", 0x1000000, 0x200000, CRC(6d824ce2) SHA1(0ccfe6c8a944937718e28a1a373b5822c7b7001b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.16m", 0x1000002, 0x200000, CRC(79682ae5) SHA1(ee84f4791c29ce9e2bae06ba3ec47ff4d2cd7054) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.18m", 0x1000004, 0x200000, CRC(acddd149) SHA1(7f50de9b2d1cc733594c642be1804190519caffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.20m", 0x1000006, 0x200000, CRC(117fb0c0) SHA1(15c01fa1a71b6469b0e1bde0ce5835c5ff9d938c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "dd2.01", 0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + ROM_LOAD( "dd2.02", 0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD16_WORD_SWAP( "dd2.11m", 0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) ) + ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) ) + + DDSOM_ASIA_KEY +ROM_END + ROM_START( ddsomchs ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "dd2j.03g", 0x000000, 0x80000, CRC(e6c8c985) SHA1(0736a84d7d9d37d51826eac6826a7728260bc625) ) @@ -83,6 +117,73 @@ ROM_START( ddsomchs ) DDSOM_JAPAN_KEY ROM_END +ROM_START( ddsomhp ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "ddsomhp.03e", 0x000000, 0x80000, CRC(5a9574e5) SHA1(c810b9bf495d4cd44305e27992848aab207da922) ) + ROM_LOAD16_WORD_SWAP( "dd2e.04e", 0x080000, 0x80000, CRC(5b7052b6) SHA1(8a5f069f450da939d0f02518751cd9815d621d81) ) + ROM_LOAD16_WORD_SWAP( "ddsomhp.05e", 0x100000, 0x80000, CRC(554e9b24) SHA1(6b78662c0e377f5595cef9d2b49d6af0ece19fd1) ) + ROM_LOAD16_WORD_SWAP( "dd2e.06e", 0x180000, 0x80000, CRC(e0807e1e) SHA1(4b978f5f647fff84d456eb14c9fd202d9a276997) ) + ROM_LOAD16_WORD_SWAP( "dd2e.07", 0x200000, 0x80000, CRC(bb777a02) SHA1(4b2c65a9129fc2262b35be1c10d06f60f5108981) ) + ROM_LOAD16_WORD_SWAP( "dd2e.08", 0x280000, 0x80000, CRC(30970890) SHA1(fd366a9323230f6997006ab4cc216f9a97865ebe) ) + ROM_LOAD16_WORD_SWAP( "dd2e.09", 0x300000, 0x80000, CRC(99e2194d) SHA1(cbcecdf5beeac3eac6c2c3fa395710e1b8347531) ) + ROM_LOAD16_WORD_SWAP( "dd2e.10", 0x380000, 0x80000, CRC(e198805e) SHA1(37ae9d88d98c59337b657cfa6feb56e4f9cae95f) ) + + ROM_REGION( 0x1800000, "gfx", 0 ) + ROMX_LOAD( "dd2.13m", 0x0000000, 0x400000, CRC(a46b4e6e) SHA1(fb90f42868c581c481b4ceff9f692753fb186b30) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.15m", 0x0000002, 0x400000, CRC(d5fc50fc) SHA1(bc692f17b18bb47a724cd5152377cd5ccd6e184a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.17m", 0x0000004, 0x400000, CRC(837c0867) SHA1(3d6db290a8f76299a23543f0ccf6a7905e1088ac) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.19m", 0x0000006, 0x400000, CRC(bb0ec21c) SHA1(e43ccc1cf63ccd2b504cc9fd701af849a7321914) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.14m", 0x1000000, 0x200000, CRC(6d824ce2) SHA1(0ccfe6c8a944937718e28a1a373b5822c7b7001b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.16m", 0x1000002, 0x200000, CRC(79682ae5) SHA1(ee84f4791c29ce9e2bae06ba3ec47ff4d2cd7054) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.18m", 0x1000004, 0x200000, CRC(acddd149) SHA1(7f50de9b2d1cc733594c642be1804190519caffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.20m", 0x1000006, 0x200000, CRC(117fb0c0) SHA1(15c01fa1a71b6469b0e1bde0ce5835c5ff9d938c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "dd2.01", 0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + ROM_LOAD( "dd2.02", 0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD16_WORD_SWAP( "dd2.11m", 0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) ) + ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) ) + + DDSOM_WORLD_KEY +ROM_END + +ROM_START( ddsomjfs ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "ddsomjfs.03g", 0x000000, 0x80000, CRC(cc650f5b) SHA1(b39dd217b8a4cf82f994e1657909ff001fc4721b) ) + ROM_LOAD16_WORD_SWAP( "dd2j.04g", 0x080000, 0x80000, CRC(8386c0bd) SHA1(59bfc71914ec2bb7d1b9f327b25d2399181d4bb2) ) + ROM_LOAD16_WORD_SWAP( "dd2.05g", 0x100000, 0x80000, CRC(5eb1991c) SHA1(429a60b5396ff4192904867fbe0524268f0edbcb) ) + ROM_LOAD16_WORD_SWAP( "dd2.06g", 0x180000, 0x80000, CRC(c26b5e55) SHA1(9590206f30459941880ff4b56c7f276cc78e3a22) ) + ROM_LOAD16_WORD_SWAP( "ddsomjfs.07", 0x200000, 0x80000, CRC(9c520a00) SHA1(7f801f86ebc725bbbeae9eb832b843b282428ec1) ) + ROM_LOAD16_WORD_SWAP( "dd2.08", 0x280000, 0x80000, CRC(e53c4d01) SHA1(bad872e4e793a39f68bc0e580772e982714b5876) ) + ROM_LOAD16_WORD_SWAP( "dd2.09", 0x300000, 0x80000, CRC(5f86279f) SHA1(c2a454e5f821b1cdd49f2cf0602e9bfb7ba63340) ) + ROM_LOAD16_WORD_SWAP( "dd2.10", 0x380000, 0x80000, CRC(ad954c26) SHA1(468c01735dbdb1114b37060546a660678290a97f) ) + + ROM_REGION( 0x1800000, "gfx", 0 ) + ROMX_LOAD( "dd2.13m", 0x0000000, 0x400000, CRC(a46b4e6e) SHA1(fb90f42868c581c481b4ceff9f692753fb186b30) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.15m", 0x0000002, 0x400000, CRC(d5fc50fc) SHA1(bc692f17b18bb47a724cd5152377cd5ccd6e184a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.17m", 0x0000004, 0x400000, CRC(837c0867) SHA1(3d6db290a8f76299a23543f0ccf6a7905e1088ac) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.19m", 0x0000006, 0x400000, CRC(bb0ec21c) SHA1(e43ccc1cf63ccd2b504cc9fd701af849a7321914) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.14m", 0x1000000, 0x200000, CRC(6d824ce2) SHA1(0ccfe6c8a944937718e28a1a373b5822c7b7001b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.16m", 0x1000002, 0x200000, CRC(79682ae5) SHA1(ee84f4791c29ce9e2bae06ba3ec47ff4d2cd7054) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.18m", 0x1000004, 0x200000, CRC(acddd149) SHA1(7f50de9b2d1cc733594c642be1804190519caffa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "dd2.20m", 0x1000006, 0x200000, CRC(117fb0c0) SHA1(15c01fa1a71b6469b0e1bde0ce5835c5ff9d938c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "dd2.01", 0x00000, 0x08000, CRC(99d657e5) SHA1(1528dd6b07a0e79951a35c0457c8a9c9770e9c78) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + ROM_LOAD( "dd2.02", 0x28000, 0x20000, CRC(117a3824) SHA1(14f3a12170b601c5466c93af9d2f24e0b386b4e4) ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD16_WORD_SWAP( "dd2.11m", 0x000000, 0x200000, CRC(98d0c325) SHA1(7406e8d943d77c468eb418c4113261f4ab973bbf) ) + ROM_LOAD16_WORD_SWAP( "dd2.12m", 0x200000, 0x200000, CRC(5ea2e7fa) SHA1(0e6a9fd007f637adcb2226c902394f07de45e803) ) + + DDSOM_JAPAN_KEY +ROM_END + + ROM_START( halfway ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "halfway.03", 0x000000, 0x080000, CRC(55ce8d4a) SHA1(3b7342afbfa1244cb5cbf5be7391d3e1f8231822) ) @@ -105,6 +206,7 @@ ROM_START( halfway ) CPS2_DEAD_KEY ROM_END + ROM_START( mpangjd ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "mpnj_d.03a", 0x000000, 0x80000, CRC(dac63128) SHA1(e5ee8f6d698a28dbf54520473520e40efadf30e3) ) @@ -131,6 +233,7 @@ ROM_START( mpangjd ) CPS2_DEAD_KEY ROM_END + ROM_START( sfa2h ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "sz2eh.03", 0x000000, 0x80000, CRC(f24e7b3a) SHA1(0cf5169fcf46dcea5a100bf75a5dcd791c51b671) ) @@ -188,6 +291,7 @@ ROM_START( sfaud ) CPS2_DEAD_KEY ROM_END + ROM_START( sfz2abr ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "szabr.03", 0x000000, 0x80000, CRC(0e8e719b) SHA1(ef013adf386925c68f3d38159adfe447c8f259de) ) @@ -219,6 +323,7 @@ ROM_START( sfz2abr ) SFZ2AL_ASIA_KEY ROM_END + ROM_START( spf2tb ) ROM_REGION(CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "pzfu_boss.03a", 0x000000, 0x80000, CRC(ca1f3e42) SHA1(784214517f3ac3f5f727a18f50992d4fa3417726) ) @@ -243,6 +348,7 @@ ROM_START( spf2tb ) SPF2T_USA_KEY ROM_END + ROM_START( ssf2r1d ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "ssfud.03a", 0x000000, 0x80000, CRC(fad5daf8) SHA1(5bed5d5af8dffc54d3b3371274a3905f46384f79) ) @@ -314,6 +420,7 @@ ROM_START( ssf2td ) CPS2_DEAD_KEY ROM_END + ROM_START( suicide ) ROM_REGION(CODE_SIZE, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "suicide.03", 0x000000, 0x80000, CRC(4d5eea90) SHA1(c6f6361650d64401354111bf111bd924126b7035) ) @@ -361,9 +468,46 @@ ROM_START( suicide2 ) ROM_END +ROM_START( vampjb ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "vampjb.03a", 0x000000, 0x80000, CRC(55c1be82) SHA1(948e1e322945adc775da8b22165697b5c7999b1b) ) + ROM_LOAD16_WORD_SWAP( "vampjb.04b", 0x080000, 0x80000, CRC(9c12017e) SHA1(0800802748ce61b01a18c06b61fcb8fd7bb34f62) ) + ROM_LOAD16_WORD_SWAP( "vamj.05a", 0x100000, 0x80000, CRC(6c497e92) SHA1(7c1ccdfd77fb50afe024c8402376daaeab641a24) ) + ROM_LOAD16_WORD_SWAP( "vamj.06a", 0x180000, 0x80000, CRC(f1bbecb6) SHA1(6adba89393e05f16f70b57085cabd6b4c20f53e8) ) + ROM_LOAD16_WORD_SWAP( "vamj.07a", 0x200000, 0x80000, CRC(1067ad84) SHA1(5e4cc75cfdfd512b6230c656e7304262b5143aee) ) + ROM_LOAD16_WORD_SWAP( "vamj.08a", 0x280000, 0x80000, CRC(4b89f41f) SHA1(bd78f33a6d448655eecf7448921d282b302fa4cb) ) + ROM_LOAD16_WORD_SWAP( "vamj.09a", 0x300000, 0x80000, CRC(fc0a4aac) SHA1(a2c79eb4dc838c238e182a4da3567ac8db3488d8) ) + ROM_LOAD16_WORD_SWAP( "vamj.10a", 0x380000, 0x80000, CRC(9270c26b) SHA1(c2a7e199a74c9f27704cf935483ebddc6da256a1) ) + + ROM_REGION( 0x1400000, "gfx", 0 ) + ROMX_LOAD( "vam.13m", 0x0000000, 0x400000, CRC(c51baf99) SHA1(2fb6642908e542e404391eb17392f8270e87bf48) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "vam.15m", 0x0000002, 0x400000, CRC(3ce83c77) SHA1(93369b23c6d7d834297434691bb047ee3dd9539c) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "vam.17m", 0x0000004, 0x400000, CRC(4f2408e0) SHA1(cd49c6b3c7e6470c6058f98ccc5210b052bb13e2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "vam.19m", 0x0000006, 0x400000, CRC(9ff60250) SHA1(d69ba4dc6bd37d003245f0cf3211d6e2623005b8) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "vam.14m", 0x1000000, 0x100000, CRC(bd87243c) SHA1(87b33aeb72514e1228ffc27ec6dd534f14882760) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "vam.16m", 0x1000002, 0x100000, CRC(afec855f) SHA1(cd117833b8d475489b90ff44b57e2c5cb1af3af5) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "vam.18m", 0x1000004, 0x100000, CRC(3a033625) SHA1(294238f30cba5cf4f8f1de951d54c2077bd95de9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "vam.20m", 0x1000006, 0x100000, CRC(2bff6a89) SHA1(8f4e131e5ce0af48fb89f98026d9f0356c7c301f) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "vam.01", 0x00000, 0x08000, CRC(64b685d5) SHA1(6c180e7420db754eca5cad17a40f5a64f5c3bd15) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + ROM_LOAD( "vam.02", 0x28000, 0x20000, CRC(cf7c97c7) SHA1(109a4b56ecd59be9c3f5869de99d40619bdaef21) ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD16_WORD_SWAP( "vam.11m", 0x000000, 0x200000, CRC(4a39deb2) SHA1(7e63e615869958db66a4e52a0272afee5a10e446) ) + ROM_LOAD16_WORD_SWAP( "vam.12m", 0x200000, 0x200000, CRC(1a3e5c03) SHA1(c5a556e125d6c3d68da745b4d56cd7a851f2a23d) ) + + DSTLK_JAPAN_KEY +ROM_END + + GAME( 2000, 1944da, 1944, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "Razoola", "1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg alt)", MACHINE_SUPPORTS_SAVE ) GAME( 2000, 1944fp, 1944, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Qxs8", "1944: The Loop Master (USA 000620) Fire Power Ver", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, ddsomavs, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Pipi899", "Dungeons & Dragons: Shadow over Mystara (1vs4 hack by Pipi899 2009-06-29)", MACHINE_SUPPORTS_SAVE ) GAME( 2014, ddsomchs, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "hack", "Dungeons & Dragons: Shadow over Mystara (chinese)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, ddsomhp, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Pipi899", "Dungeons & Dragons: Shadow over Mystara (HP Revision hack by Pipi899, cheat by sssskkkk 2009-06-15)", MACHINE_SUPPORTS_SAVE ) +GAME( 2009, ddsomjfs, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "e107", "Dungeons & Dragons: Shadow over Mystara (Final Strike hack by e107 2009-07-17)", MACHINE_SUPPORTS_SAVE ) GAME( 2016, halfway, progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "hack", "Halfway to Hell - Progear Red Label (2016-01-17)", MACHINE_SUPPORTS_SAVE ) GAME( 2000, mpangjd, mpang, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "Razoola", "Mighty! Pang (Japan 001011 Phoenix Edition)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, sfa2h, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Pipi899", "Street Fighter Alpha 2 (Euro 960229) Boss Hack", MACHINE_SUPPORTS_SAVE ) @@ -374,3 +518,4 @@ GAME( 1994, ssf2td, ssf2t, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "Ea GAME( 1996, spf2tb, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "hack", "Super Puzzle Fighter II Turbo Boss Hack (USA 960620)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, suicide, 0, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "Razoola", "Suicide Test", MACHINE_SUPPORTS_SAVE ) GAME( 2015, suicide2, suicide, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "Razoola", "Suicide Test v2", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, vampjb, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Yumeji", "Vampire: The Night Warriors (Boss hack by Yumeji)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/dkong.cpp b/docs/release/src/hbmame/drivers/dkong.cpp index 1a507fcc715..54d7a266680 100644 --- a/docs/release/src/hbmame/drivers/dkong.cpp +++ b/docs/release/src/hbmame/drivers/dkong.cpp @@ -2,7 +2,7 @@ // copyright-holders:Robbbert #include "../mame/drivers/dkong.cpp" -INPUT_PORTS_START( dkongex ) +static INPUT_PORTS_START( dkongex ) PORT_INCLUDE( dkong ) PORT_MODIFY("DSW0") PORT_DIPNAME( 0x70, 0x00, DEF_STR( Coinage ) ) @@ -16,6 +16,33 @@ INPUT_PORTS_START( dkongex ) PORT_DIPSETTING( 0x60, DEF_STR( 1C_4C ) ) INPUT_PORTS_END +static INPUT_PORTS_START( dkrdemo ) + PORT_INCLUDE( dkong ) + PORT_MODIFY("DSW0") + PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:!1,!2" ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x01, "5" ) + PORT_DIPSETTING( 0x02, "7" ) + PORT_DIPSETTING( 0x03, "9" ) + PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:!3,!4" ) + PORT_DIPSETTING( 0x00, "10000" ) + PORT_DIPSETTING( 0x04, "15000" ) // and each additional 150k + PORT_DIPSETTING( 0x08, "25000" ) // and each additional 250k + PORT_DIPSETTING( 0x0c, "35000" ) // and each additional 350k + PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:!5,!6" ) + PORT_DIPSETTING( 0x30, "Free Play" ) + PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION( "SW1:!8" ) + PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) PORT_DIPLOCATION( "SW1:!8" ) + PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) +INPUT_PORTS_END + + /* same as mame 'dkongf' except rom cx_5at_g.bin is different */ ROM_START( dkongex ) @@ -77,6 +104,34 @@ ROM_START( dkongp ) ROM_LOAD( "v-5e.bpr", 0x0200, 0x0100, CRC(b869b8f5) SHA1(c2bdccbf2654b64ea55cd589fd21323a9178a660) ) ROM_END +ROM_START( dkrdemo ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "dkrdemo.5et", 0x0000, 0x1000, CRC(f9fdff29) SHA1(c2eb8f0ede8384369e17d8616f4ce063ae12b6c2) ) + ROM_LOAD( "dkrdemo.5ct", 0x1000, 0x1000, CRC(f48cb898) SHA1(470b8bee7f55e1d828abc0b1ec4b423392c83a78) ) + ROM_LOAD( "dkrdemo.5bt", 0x2000, 0x1000, CRC(660d43ec) SHA1(8bba334cec022ea851c4a82f6ecbc91c0708daea) ) + ROM_LOAD( "dkrdemo.5at", 0x3000, 0x1000, CRC(e59d406c) SHA1(7698e319ae191bb8bf7deeea5c4f18da04d73f73) ) + + ROM_REGION( 0x1800, "soundcpu", 0 ) + ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) ) + ROM_RELOAD( 0x0800, 0x0800 ) + ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) ) + ROM_LOAD( "v_3pt.bin", 0x0800, 0x0800, CRC(15e9c5e9) SHA1(976eb1e18c74018193a35aa86cff482ebfc5cc4e) ) + + ROM_REGION( 0x2000, "gfx2", 0 ) + ROM_LOAD( "l_4m_b.bin", 0x0000, 0x0800, CRC(59f8054d) SHA1(793dba9bf5a5fe76328acdfb90815c243d2a65f1) ) + ROM_LOAD( "l_4n_b.bin", 0x0800, 0x0800, CRC(672e4714) SHA1(92e5d379f4838ac1fa44d448ce7d142dae42102f) ) + ROM_LOAD( "l_4r_b.bin", 0x1000, 0x0800, CRC(feaa59ee) SHA1(ecf95db5a20098804fc8bd59232c66e2e0ed3db4) ) + ROM_LOAD( "l_4s_b.bin", 0x1800, 0x0800, CRC(20f2ef7e) SHA1(3bc482a38bf579033f50082748ee95205b0f673d) ) + + ROM_REGION( 0x0300, "proms", 0 ) + ROM_LOAD( "c-2k.bpr", 0x0000, 0x0100, CRC(e273ede5) SHA1(b50ec9e1837c00c20fb2a4369ec7dd0358321127) ) + ROM_LOAD( "c-2j.bpr", 0x0100, 0x0100, CRC(d6412358) SHA1(f9c872da2fe8e800574ae3bf483fb3ccacc92eb3) ) + ROM_LOAD( "v-5e.bpr", 0x0200, 0x0100, CRC(b869b8f5) SHA1(c2bdccbf2654b64ea55cd589fd21323a9178a660) ) +ROM_END + ROM_START( kong2600 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "c_5et_g.bin", 0x0000, 0x1000, CRC(ba70b88b) SHA1(d76ebecfea1af098d843ee7e578e480cd658ac1a) ) @@ -219,10 +274,11 @@ ROM_END -GAME( 1999, kong2600, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Vic Twenty George", "Donkey Kong (2600 graphics)", MACHINE_SUPPORTS_SAVE ) -GAME( 2004, nadkong, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Hack", "Naked Donkey Kong", MACHINE_SUPPORTS_SAVE ) GAME( 2013, dkong2m, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Hack", "Donkey Kong (2 marios)", MACHINE_SUPPORTS_SAVE ) GAME( 2005, dkongex, dkong, dkong2b, dkongex, driver_device, 0, ROT90, "Jeff Kulczycki", "Donkey Kong Foundry", MACHINE_SUPPORTS_SAVE ) GAME( 2007, dkongp, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Don Hodges", "Donkey Kong (patched)", MACHINE_SUPPORTS_SAVE ) GAME( 2001, dkongpac, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Tim Appleton", "Donkey Kong (Pacman graphics)", MACHINE_SUPPORTS_SAVE ) GAME( 2015, dkrainbow, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Sock Master", "Rainbow Donkey Kong", MACHINE_SUPPORTS_SAVE ) +GAME( 2015, dkrdemo, dkong, dkong2b, dkrdemo, driver_device, 0, ROT90, "Sock Master", "Donkey Kong Remix demo 1.8", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, kong2600, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Vic Twenty George", "Donkey Kong (2600 graphics)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, nadkong, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Hack", "Naked Donkey Kong", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/fcrash.cpp b/docs/release/src/hbmame/drivers/fcrash.cpp index 4ce322fac85..5757ee74ea8 100644 --- a/docs/release/src/hbmame/drivers/fcrash.cpp +++ b/docs/release/src/hbmame/drivers/fcrash.cpp @@ -496,7 +496,7 @@ void cps_state::fcrash_render_sprites( screen_device &screen, bitmap_ind16 &bitm UINT16 tileno,flipx,flipy,colour,xpos,ypos; /* if we have separate sprite ram, use it */ - if (m_bootleg_sprite_ram) sprite_ram = m_bootleg_sprite_ram; + if (m_bootleg_sprite_ram) sprite_ram = m_bootleg_sprite_ram.get(); /* get end of sprite list marker */ for (pos = 0x1ffc - base; pos >= 0x0000; pos -= 4) @@ -1981,8 +1981,9 @@ DRIVER_INIT_MEMBER(cps_state, kodb) /* the original game alternates between 2 sprite ram areas to achieve flashing sprites - the bootleg doesn't do the write to the register to achieve this mapping both sprite ram areas to the same bootleg sprite ram - similar to how sf2mdt works */ - m_bootleg_sprite_ram = (UINT16*)m_maincpu->space(AS_PROGRAM).install_ram(0x900000, 0x903fff); - m_maincpu->space(AS_PROGRAM).install_ram(0x904000, 0x907fff, m_bootleg_sprite_ram); /* both of these need to be mapped */ + m_bootleg_sprite_ram = std::make_unique<UINT16[]>(0x2000); + m_maincpu->space(AS_PROGRAM).install_ram(0x900000, 0x903fff, m_bootleg_sprite_ram.get()); + m_maincpu->space(AS_PROGRAM).install_ram(0x904000, 0x907fff, m_bootleg_sprite_ram.get()); /* both of these need to be mapped */ DRIVER_INIT_CALL(cps1); } @@ -2303,7 +2304,8 @@ ROM_END DRIVER_INIT_MEMBER(cps_state, dinopic) { - m_bootleg_sprite_ram = (UINT16*)m_maincpu->space(AS_PROGRAM).install_ram(0x990000, 0x993fff); + m_bootleg_sprite_ram = std::make_unique<UINT16[]>(0x2000); + m_maincpu->space(AS_PROGRAM).install_ram(0x990000, 0x993fff, m_bootleg_sprite_ram.get()); DRIVER_INIT_CALL(cps1); } @@ -2881,8 +2883,9 @@ DRIVER_INIT_MEMBER(cps_state, sf2mdtb) } /* bootleg sprite ram */ - m_bootleg_sprite_ram = (UINT16*)m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff); - m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram); /* both of these need to be mapped */ + m_bootleg_sprite_ram = std::make_unique<UINT16[]>(0x2000); + m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get()); + m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get()); /* both of these need to be mapped */ DRIVER_INIT_CALL(cps1); } @@ -2891,10 +2894,12 @@ DRIVER_INIT_MEMBER(cps_state, sf2mdtb) DRIVER_INIT_MEMBER(cps_state, sf2mdta) { /* bootleg sprite ram */ - m_bootleg_sprite_ram = (UINT16*)m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff); - m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram); /* both of these need to be mapped - see the "Magic Delta Turbo" text on the title screen */ + m_bootleg_sprite_ram = std::make_unique<UINT16[]>(0x2000); + m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get()); + m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get()); /* both of these need to be mapped - see the "Magic Delta Turbo" text on the title screen */ - m_bootleg_work_ram = (UINT16*)m_maincpu->space(AS_PROGRAM).install_ram(0xfc0000, 0xfcffff); /* this has moved */ + m_bootleg_work_ram = std::make_unique<UINT16[]>(0x8000); + m_maincpu->space(AS_PROGRAM).install_ram(0xfc0000, 0xfcffff, m_bootleg_work_ram.get()); /* this has moved */ DRIVER_INIT_CALL(cps1); } @@ -2902,8 +2907,9 @@ DRIVER_INIT_MEMBER(cps_state, sf2mdta) DRIVER_INIT_MEMBER(cps_state, sf2b) { /* bootleg sprite ram */ - m_bootleg_sprite_ram = (UINT16*)m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff); - m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram); + m_bootleg_sprite_ram = std::make_unique<UINT16[]>(0x2000); + m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get()); + m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get()); DRIVER_INIT_CALL(cps1); } diff --git a/docs/release/src/hbmame/drivers/galaga.cpp b/docs/release/src/hbmame/drivers/galaga.cpp index 05d67e3f4fd..2b5c165537d 100644 --- a/docs/release/src/hbmame/drivers/galaga.cpp +++ b/docs/release/src/hbmame/drivers/galaga.cpp @@ -28,7 +28,7 @@ static ADDRESS_MAP_START( galagost_map, AS_PROGRAM, 8, galaga_state ) AM_RANGE(0x6800, 0x6807) AM_READ(bosco_dsw_r) AM_RANGE(0x6800, 0x681f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x6820, 0x6827) AM_WRITE(bosco_latch_w) /* misc latches */ - AM_RANGE(0x6830, 0x6830) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x6830, 0x6830) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x7000, 0x70ff) AM_DEVREAD("06xx", namco_06xx_device, data_r) AM_WRITE(galaga_sample_w) AM_RANGE(0x7100, 0x7100) AM_DEVREADWRITE("06xx", namco_06xx_device, ctrl_r, ctrl_w) AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(galaga_videoram_w) AM_SHARE("videoram") diff --git a/docs/release/src/hbmame/drivers/galaxian.cpp b/docs/release/src/hbmame/drivers/galaxian.cpp index d20780c2939..4298f79275f 100644 --- a/docs/release/src/hbmame/drivers/galaxian.cpp +++ b/docs/release/src/hbmame/drivers/galaxian.cpp @@ -17,7 +17,7 @@ static ADDRESS_MAP_START( fourplay_map, AS_PROGRAM, 8, galaxian_state ) AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") - AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r) + AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_RANGE(0x6000, 0x6001) AM_WRITE(start_lamp_w) AM_RANGE(0x6002, 0x6002) AM_WRITENOP // AM_WRITE(coin_lock_w) AM_RANGE(0x6003, 0x6003) AM_WRITE(coin_count_0_w) @@ -195,7 +195,7 @@ DRIVER_INIT_MEMBER( galaxian_state, trukker ) ************************************************************/ static MACHINE_CONFIG_DERIVED( tst_frog, frogger ) - MCFG_WATCHDOG_VBLANK_INIT(0) + //MCFG_WATCHDOG_VBLANK_INIT(0) MACHINE_CONFIG_END @@ -214,7 +214,7 @@ static ADDRESS_MAP_START( videight_map, AS_PROGRAM, 8, galaxian_state ) AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1") AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") - AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r) + AM_RANGE(0x7800, 0x7fff) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) AM_RANGE(0x6000, 0x6002) AM_WRITE(videight_gfxbank_w) AM_RANGE(0x6003, 0x6003) AM_WRITE(coin_count_0_w) AM_RANGE(0x6004, 0x6007) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w) diff --git a/docs/release/src/hbmame/drivers/ir.cpp b/docs/release/src/hbmame/drivers/ir.cpp index b6ff7fed26b..e1e91fc988b 100644 --- a/docs/release/src/hbmame/drivers/ir.cpp +++ b/docs/release/src/hbmame/drivers/ir.cpp @@ -148,7 +148,7 @@ static ADDRESS_MAP_START( invrvnge_io_map, AS_IO, 8, ir_state ) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(invrvnge_03_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(invrvnge_05_w) - AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) + //AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END //static ADDRESS_MAP_START( invrvnge_sound_map, AS_PROGRAM, 8, ir_state ) diff --git a/docs/release/src/hbmame/drivers/mspacman.cpp b/docs/release/src/hbmame/drivers/mspacman.cpp index 93253e27f7c..748de90b2c7 100644 --- a/docs/release/src/hbmame/drivers/mspacman.cpp +++ b/docs/release/src/hbmame/drivers/mspacman.cpp @@ -175,7 +175,7 @@ static ADDRESS_MAP_START( mspachi_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x5080) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") @@ -203,7 +203,7 @@ static ADDRESS_MAP_START( mspacii_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_MIRROR(0x8000) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_MIRROR(0x8000) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x5080) AM_MIRROR(0x8000) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x8000) AM_READ_PORT("IN1") AM_RANGE(0x504d, 0x506f) AM_READ(mspacii_prot_r) @@ -230,7 +230,7 @@ static ADDRESS_MAP_START( mspacman_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5060, 0x506f) AM_MIRROR(0xaf00) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x507f) AM_MIRROR(0xaf00) AM_WRITENOP AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0xaf3f) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xaf3f) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_MIRROR(0xaf3f) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_MIRROR(0xaf3f) AM_READ_PORT("DSW1") @@ -271,7 +271,7 @@ static ADDRESS_MAP_START( widel_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x5080) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") @@ -332,7 +332,8 @@ MACHINE_CONFIG_END /* These drivers need the watchdog to be removed in order to work */ static MACHINE_CONFIG_DERIVED( pachack, pacman ) - MCFG_WATCHDOG_VBLANK_INIT(0) + MCFG_WATCHDOG_MODIFY("watchdog") + MCFG_WATCHDOG_VBLANK_INIT("screen", 0) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mspachi, pachack ) diff --git a/docs/release/src/hbmame/drivers/multipac.cpp b/docs/release/src/hbmame/drivers/multipac.cpp index c0b20d95601..921d8804e12 100644 --- a/docs/release/src/hbmame/drivers/multipac.cpp +++ b/docs/release/src/hbmame/drivers/multipac.cpp @@ -170,7 +170,7 @@ static ADDRESS_MAP_START( hackypac_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x507f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5080, 0x50bf) AM_WRITENOP - AM_RANGE(0x50c0, 0x50ff) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") @@ -205,7 +205,7 @@ static ADDRESS_MAP_START( madpac_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5008, 0x500f) AM_WRITENOP /* most pacman-type games write here */ AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x507f) AM_WRITEONLY AM_SHARE("spriteram2") - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x8000) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_MIRROR(0x8000) AM_READ_PORT("DSW1") @@ -239,7 +239,7 @@ static ADDRESS_MAP_START( mspaceur_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x507f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") @@ -266,7 +266,7 @@ static ADDRESS_MAP_START( mschamp_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x507f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") @@ -294,7 +294,7 @@ static ADDRESS_MAP_START( multipac_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x507f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") @@ -324,7 +324,7 @@ static ADDRESS_MAP_START( pm4n1_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x507f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c1) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c1) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5001) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5041) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5081) AM_READ_PORT("DSW1") @@ -348,7 +348,7 @@ static ADDRESS_MAP_START( pm4n1c_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x507f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c1) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c1) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5001) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5041) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5081) AM_READ_PORT("DSW1") @@ -373,7 +373,7 @@ static ADDRESS_MAP_START( pm4n1d_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x507f) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c1) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c1) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5001) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5041) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5081) AM_READ_PORT("DSW1") diff --git a/docs/release/src/hbmame/drivers/neogeo.cpp b/docs/release/src/hbmame/drivers/neogeo.cpp new file mode 100644 index 00000000000..8d36e3e70d6 --- /dev/null +++ b/docs/release/src/hbmame/drivers/neogeo.cpp @@ -0,0 +1,1469 @@ +// license:BSD-3-Clause +// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari +// thanks-to:Fuzz +/*************************************************************************** + + Neo-Geo hardware + + Credits: + * This driver was made possible by the research done by + Charles MacDonald. For a detailed description of the Neo-Geo + hardware, please visit his page at: + http://cgfm2.emuviews.com/txt/mvstech.txt + * Presented to you by the Shin Emu Keikaku team. + * The following people have all spent probably far + too much time on this: + AVDB + Bryan McPhail + Fuzz + Ernesto Corvi + Andrew Prime + Zsolt Vasvari + + + Known driver issues/to-do's: + ============================ + + * Fatal Fury 3 crashes during the ending - this doesn't occur if + the language is set to Japanese, maybe the English endings + are incomplete / buggy? + * Graphical Glitches caused by incorrect timing? + - Some raster effects are imperfect (off by a couple of lines) + * Multi-cart support not implemented - the MVS can take up to + 6 cartridges depending on the board being used + * 68000 waitstates on ROM region access, determined by jumpers on cart + (garou train stage 3 background bug is probably related to this) + + + Confirmed non-bugs: + + * Bad zooming in the Kof2003 bootlegs - this is what happens + if you try and use the normal bios with a pcb set, it + looks like the bootleggers didn't care. + * Glitches at the edges of the screen - the real hardware + can display 320x224 but most of the games seem designed + to work with a width of 304, some less. + * Distorted jumping sound in Nightmare in the Dark + * Ninja Combat sometimes glitches + + +***************************************************************************** + + The Neo-Geo Multi Video System (MVS), is an arcade system board, being + the first product in the Neo-Geo family, designed by Alpha Denshi(ADK) + and released in 1990 by SNK. It was known to the coin-op industry, and + offered arcade operators the ability to put up to 6 different arcade + titles into a single cabinet, a key economic consideration for operators + with limited floorspace (games for the Neo-Geo are cartridge based and are + easily exchangeable). It comes in many different cabinets but basically + consists of an add on board that can be linked to a standard Jamma system. + The system was discontinued in 2004. + Source (modified): http://en.wikipedia.org/wiki/Neo_Geo + + + MVS motherboards were produced in 1 / 2 / 4 and 6 Slot versions. + + Known motherboards: + =================== + + 1 Slot: + NEO-MVH MV1 + NEO-MVH MV1-1 + NEO-MVH MV1A + . NEO-MVH MV1A CHX ?? + NEO-MVH MV1B (1996.1.19) + . NEO-MVH MV1B CHX (1996.1.19) ?? + NEO-MVH MV1B1 (1998.6.17) + NEO-MVH MV1C (1999.4.30) + NEO-MVH MV1F + NEO-MVH MV1FS + NEO-MVH MV1FT + NEO-MVH MV1FZ + NEO-MVH MV1FZS + + 2 Slot: + NEO-MVH MV2 + NEO-MVH MV2F + NEO-MVH MV2F-01 + + 4 Slot: + NEO-MVH MV4 + NEO-MVH MV4F + NEO-MVH MV4FS + NEO-MVH MV4FT + NEO-MVH MV4FT2 + + 6 Slot: + NEO-MVH MV6 + NEO-MVH MV6F + + + Neo-Geo Motherboard (info - courtesy of Guru): + + NEO-MVH MV1 + |---------------------------------------------------------------------| + | 4558 | + | HC04 HC32 | + | SP-S2.SP1 NEO-E0 000-L0.L0 LS244 AS04 | + | YM2610 | + | 4558 | + | 4558 5814 HC259 SFIX.SFIX | + | NEO-I0 | + | HA13001 YM3016 5814 | + --| | + | 4558 | + --| SM1.SM1 LS32 | + | | + | LSPC-A0 PRO-C0 LS244 | + | | + |J 68000 | + |A | + |M | + |M NEO-ZMC2 | + |A | + | LS273 NEO-G0 58256 58256 Z80A | + | 58256 58256 58256 58256 6116 | + | LS273 5864 | + --| LS05 5864 PRO-B0 | + | | + --| LS06 HC32 D4990A NEO-F0 24.000MHz | + | DSW1 BATT3.6V 32.768kHz NEO-D0 | + | 2003 2003 | + |---------------------------------------------------------------------| + + +***************************************************************************** + + Neo-Geo game PCB infos: + ======================= + + The Neo-Geo games for AES (home) and MVS (arcade) systems are cartridge based. + + Each cartridge consists of two PCBs: CHA and PROG. + .CHA PCB contains gfx data ('C' - rom), text layer data ('S' - rom) and sound driver ('M' - rom). + .PROG PCB contains sample data ('V' - rom) and program code ('P' - rom). + + On most PCBs various custom/protection chips can also be found: + (Custom chip detail information (modified) from: http://wiki.neogeodev.org) + + CHA: + . NEO-273 (C and S-ROM address latch) + . NEO-CMC 90G06CF7042 (NEO-273 logic / NEO-ZMC logic / C-ROM decryption / C and S-ROM multiplexer / S-ROM bankswitching) + . NEO-CMC 90G06CF7050 (NEO-273 logic / NEO-ZMC logic / C-ROM decryption / M-ROM decryption / C and S-ROM multiplexer / S-ROM bankswitching) + . NEO-ZMC (Z80 memory controller) + . NEO-ZMC2 (Z80 memory controller / Tile serializer) + . PRO-CT0 (C-ROM serializer and multiplexer?; used on early AES-CHA boards) + . SNK-9201 (C-ROM serializer and multiplexer?; used on early AES-CHA boards) + + PROG: + . 0103 (QFP144) (Only found on Metal Slug X NEO-MVS PROGEOP board; function unknown) + . ALTERA (EPM7128SQC100-15) (P-ROM protection chip used for KOF98 NEO-MVS PROGSF1 board and Metal Slug X NEO-MVS PROGEOP board) + . NEO-COMA (Microcontroller; used for MULTI PLAY MODE, boards and sets see below) + . NEO-PCM2 (SNK 1999) (PCM functionality / V-ROM decryption / P-ROM decoding and bankswitching) + . NEO-PCM2 (PLAYMORE 2002) (PCM functionality / V-ROM decryption / P-ROM decoding and bankswitching) + . NEO-PVC (P-ROM decryption and bankswitching) / RAM + . NEO-SMA (P-ROM decryption and bankswitching / RNG / Storage of 256kb game data) + . PCM (ADPCM bus latches / V-ROM multiplexer) + . PRO-CT0 (On PROG board used for P-ROM protection -> Fatal Fury 2) + . SNK-9201 (On PROG board used for P-ROM protection -> Fatal Fury 2) + + + + Known PCBs: + ============ + + MVS CHA: + -- SNK -- + . NEO-MVS CHA-32 + . NEO-MVS CHA-8M + . NEO-MVS CHA42G + . NEO-MVS CHA42G-1 + . NEO-MVS CHA 42G-2 + . NEO-MVS CHA 42G-3 + . NEO-MVS CHA42G-3B + . NEO-MVS CHA256 + . NEO-MVS CHA256B + . NEO-MVS CHA512Y + . NEO-MVS CHAFIO (1999.6.14) - used with NEO-CMC 90G06C7042 or NEO-CMC 90G06C7050 + . MVS CHAFIO REV1.0 (KOF-2001) + . NEO-MVS CHAFIO (SNK 2002) - MADE IN KOREA + -- SNKPLAYMORE -- + . NEO-MVS CHAFIO (2003.7.24) - used only with NEO-CMC 90G06C7050 + + -- SNK development boards -- + . NEO-MVS CHAMC2 + + MVS PROG: + -- SNK -- + . NEO-MVS PROG-NAM + . NEO-MVS PROG-HERO + . NEO-MVS PROG-EP + . NEO-MVS PROG-8MB + . NEO-MVS PROGEP8M + . NEO-MVS PROG8M42 + . NEO-MVS PROG16 + . NEO-MVS PROG42G + . NEO-MVS PROG42G-COM + . NEO-MVS PROG42G-1 + . NEO-MVS PROG-G2 + . NEO-MVS PROG 4096 + . NEO-MVS PROG 4096 B + . NEO-MVS PROGGSC + . NEO-MVS PROGSM + . NEO-MVS PROGSS3 + . NEO-MVS PROGTOP + . NEO-MVS PROGSF1 (1998.6.17) + . NEO-MVS PROGSF1E (1998.6.18) + . NEO-MVS PROGEOP (1999.2.2) + . NEO-MVS PROGLBA (1999.4.12) - LBA-SUB (2000.2.24) + . NEO-MVS PROGBK1 (1994) + . NEO-MVS PROGBK1 (2001) + . NEO-MVS PROGBK2 (2000.3.21) - used with NEO-PCM2 (1999 SNK) or NEO-PCM2 (2002 PLAYMORE) + . MVS PROGBK2 REV1.0 (KOF-2001) + . NEO-MVS PROGBK2 (SNK 2002) - MADE IN KOREA + -- SNKPLAYMORE -- + . NEO-MVS PROGBK2R (2003.8.26) - NEO-HYCS (2003.9.29) + . NEO-MVS PROGBK3R (2003.9.2) - NEO-HYCS (2003.9.29) + . NEO-MVS PROGBK3S (2003.10.1) + . NEO-MVS PROGBK2S (2003.10.18) + + -- SNK development boards -- + . NEO-MVS PROGMC2 + + + AES CHA: + -- SNK -- + . NEO-AEG CHA-32 + . NEO-AEG CHA-8M + . NEO-AEG CHA42G + . NEO-AEG CHA42G-1 + . NEO-AEG CHA42G-2B + . NEO-AEG CHA42G-3 + . NEO-AEG CHA42G-4 + . NEO-AEG CHA256 + . NEO-AEG CHA256 B + . NEO-AEG CHA256[B] + . NEO-AEG CHA256BY + . NEO-AEG CHA256RY + . NEO-AEG CHA512Y + . NEO-AEG CHAFIO (1999.8.10) - used with NEO-CMC 90G06C7042 or NEO-CMC 90G06C7050 + -- SNKPLAYMORE -- + . NEO-AEG CHAFIO (2003.7.24) - used only with NEO-CMC 90G06C7050 + + AES PROG: + -- SNK -- + . NEO-AEG PROG-NAM + . NEO-AEG PROG-HERO + . NEO-AEG PROG-4A + . NEO-AEG PROG-4B + . NEO-AEG PROG 8M42 + . NEO-AEG PROG B + . NEO-AEG PROG16 + . NEO-AEG PROG42G + . NEO-AEG PROG42G-COM + . NEO-AEG PROG42G-1 + . NEO-AEG PROG-G2 + . NEO-AEG PROG4096 B + . NEO-AEG PROGGS + . NEO-AEG PROGTOP2 + . NEO-AEG PROGTOP2Y + . NEO-AEG PROGEOP (1999.4.2) + . NEO-AEG PROGLBA (1999.7.6) + . NEO-AEG PROGRK + . NEO-AEG PROGRKB + . NEO-AEG PROGBK1Y + . NEO-AEG PROGBK1F + -- PLAYMORE -- + . NEO-AEG PROGBK2 (2002.4.1) - used with NEO-PCM2 (1999 SNK) or NEO-PCM2 (2002 PLAYMORE) + -- SNKPLAYMORE -- + . NEO-AEG PROGBK3R (2003.8.29) - NEO-HYCS (2003.9.29) + . NEO-AEG PROGBK3S (2003.10.6) + . NEO-AEG PROGBK2S (2003.10.16) + + + + Cartridge colours: + ================== + + MVS cartridges were produced in different colours. + + Known cartridge colours: + . Black + . Blue + . Green + . Grey + . Red + . Transparent + . Transparent Blue + . Transparent Green + . White + . Yellow + + The above listed only covers SNK / PLAYMORE / SNKPLAYMORE PCBs. There also exists a + wide range of 'bootleg' PCBs. + + + Unofficial pcb's from NG:DEV.TEAM: + + MVS CHA: + GIGA CHAR Board 1.0 Rev. A + GIGA CHAR Board 1.5 Rev. 0 + GIGA CHAR Board 1.5 Rev. C + + MVS PROG: + GIGA PROG Board 1.0 Rev. B + GIGA PROG Board 1.5 Rev. A + GIGA PROG Board 1.5 Rev. C + + + Unofficial pcb's from NEOBITZ: + + MVS CHA: + CHARBITZ1 2013.12.01 + + MVS PROG: + PROGBITZ1 2013.12.01 + + + Neo-Geo game PCB infos by Johnboy + + + + MVS cart pinout: + ================ + + Kindly submitted by Apollo69 (apollo69@columbus.rr.com) + ================================================================= + CTRG1 CTRG2 + ================================================================= + GND = 01A | 01B = GND GND = 01A | 01B = GND + GND = 02A | 02B = GND GND = 02A | 02B = GND + P0 = 03A | 03B = P1 GND = 03A | 03B = GND + P2 = 04A | 04B = P3 GND = 04A | 04B = GND + P4 = 05A | 05B = P5 D0 = 05A | 05B = A1 + P6 = 06A | 06B = P7 D1 = 06A | 06B = A2 + P8 = 07A | 07B = P9 D2 = 07A | 07B = A3 + P10 = 08A | 08B = P11 D3 = 08A | 08B = A4 + P12 = 09A | 09B = P13 D4 = 09A | 09B = A5 + P14 = 10A | 10B = P15 D5 = 10A | 10B = A6 + P16 = 11A | 11B = P17 D6 = 11A | 11B = A7 + P18 = 12A | 12B = P19 D7 = 12A | 12B = A8 + P20 = 13A | 13B = P21 D8 = 13A | 13B = A9 + P22 = 14A | 14B = P23 D9 = 14A | 14B = A10 + PCK1B = 15A | 15B = 24M D10 = 15A | 15B = A11 + PCK2B = 16A | 16B = 12M D11 = 16A | 16B = A12 + 2H1 = 17A | 17B = 8M D12 = 17A | 17B = A13 + CA4 = 18A | 18B = RESET D13 = 18A | 18B = A14 + CR0 = 19A | 19B = CR1 D14 = 19A | 19B = A15 + CR2 = 20A | 20B = CR3 D15 = 20A | 20B = A16 + CR4 = 21A | 21B = CR5 R/W = 21A | 21B = A17 + CR6 = 22A | 22B = CR7 AS = 22A | 22B = A18 + CR8 = 23A | 23B = CR9 ROMOEU = 23A | 23B = A19 + CR10 = 24A | 24B = CR11 ROMOEL = 24A | 24B = 68KCLKB + CR12 = 25A | 25B = CR13 PORTOEU = 25A | 25B = ROMWAIT + CR14 = 26A | 26B = CR15 PORTOEL = 26A | 26B = PWAIT0 + CR16 = 27A | 27B = CR17 PORTWEU = 27A | 27B = PWAIT1 + CR18 = 28A | 28B = CR19 PORTWEL = 28A | 28B = PDTACT + VCC = 29A | 29B = VCC VCC = 29A | 29B = VCC + VCC = 30A | 30B = VCC VCC = 30A | 30B = VCC + VCC = 31A | 31B = VCC VCC = 31A | 31B = VCC + VCC = 32A | 32B = VCC VCC = 32A | 32B = VCC + CR20 = 33A | 33B = CR21 PORTADRS = 33A | 33B = 4MB + CR22 = 34A | 34B = CR23 NC = 34A | 34B = ROMOE + CR24 = 35A | 35B = CR25 NC = 35A | 35B = RESET + CR26 = 36A | 36B = CR27 NC = 36A | 36B = NC + CR28 = 37A | 37B = CR29 NC = 37A | 37B = NC + CR30 = 38A | 38B = CR31 NC = 38A | 38B = NC + NC = 39A | 39B = FIX00 NC = 39A | 39B = NC + NC = 40A | 40B = FIX01 NC = 40A | 40B = NC + NC = 41A | 41B = FIX02 NC = 41A | 41B = SDPAD0 + SYSTEMB = 42A | 42B = FIX03 SYSTEMB = 42A | 42B = SDPAD1 + SDA0 = 43A | 43B = FIX04 SDPA8 = 43A | 43B = SDPAD2 + SDA1 = 44A | 44B = FIX05 SDPA9 = 44A | 44B = SDPAD3 + SDA2 = 45A | 45B = FIX06 SDPA10 = 45A | 45B = SDPAD4 + SDA3 = 46A | 46B = FIX07 SDPA11 = 46A | 46B = SDPAD5 + SDA4 = 47A | 47B = SDRD0 SDPMPX = 47A | 47B = SDPAD6 + SDA5 = 48A | 48B = SDRD1 SDPOE = 48A | 48B = SDPAD7 + SDA6 = 49A | 49B = SDROM SDRA8 = 49A | 49B = SDRA00 + SDA7 = 50A | 50B = SDMRD SDRA9 = 50A | 50B = SDRA01 + SDA8 = 51A | 51B = SDDO SDRA20 = 51A | 51B = SDRA02 + SDA9 = 52A | 52B = SDD1 SDRA21 = 52A | 52B = SDRA03 + SDA10 = 53A | 53B = SDD2 SDRA22 = 53A | 53B = SDRA04 + SDA11 = 54A | 54B = SDD3 SDRA23 = 54A | 54B = SDRA05 + SDA12 = 55A | 55B = SDD4 SDRMPX = 55A | 55B = SDRA06 + SDA13 = 56A | 56B = SDD5 SDROE = 56A | 56B = SDRA07 + SDA14 = 57A | 57B = SDD6 GND = 57A | 57B = GND + SDA15 = 58A | 58B = SDD7 GND = 58A | 58B = GND + GND = 59A | 59B = GND GND = 59A | 59B = GND + GND = 60A | 60B = GND GND = 60A | 60B = GND + + CTRG1 (CHA) = Contains gfx data ('C' - rom), text layer data ('S' - rom) and sound driver ('M' - rom) + CTRG2 (PROG) = Contains sample data ('V' - rom) and program code ('P' - rom) + + NOTE: On CTRG2-B, The "A" lines start at "A1". If you trace this on an + actual cart, you will see that this is actually "A0" (A0 - A18). + + These are from a very hard to read copy of the schematics, so + I hope that I got the pin names correct. + + Apollo69 10/19/99 + + +***************************************************************************** + + Watchdog: + ========= + + The watchdog timer will reset the system after ~0.13 seconds. + By cgfm's research, exactly 3,244,030 cycles (based on 24MHz clock). + + Newer games force a reset using the following code (this from kof99): + 009CDA 203C 0003 0D40 MOVE.L #0x30D40,D0 + 009CE0 5380 SUBQ.L #1,D0 + 009CE2 64FC BCC.S *-0x2 [0x9CE0] + Note however that there is a valid code path after this loop. + + The watchdog is used as a form of protection on a number of games, + previously this was implemented as a specific hack which locked a single + address of SRAM. + + What actually happens is if the game doesn't find valid data in the + backup ram it will initialize it, then sit in a loop. The watchdog + should then reset the system while it is in this loop. If the watchdog + fails to reset the system the code will continue and set a value in + backup ram to indiate that the protection check has failed. + + + Mahjong Panel notes (2009-03 FP): + ================================= + + * In Service Mode menu with mahjong panel active, controls are as + follows: + + A = select / up (for options) + B = down (for options) + C = go to previous menu + E = up (for menu entries) + F = down (for menu entries) + G = left (for options) + H = right (for options) + + * These only work with Japanese BIOS, but I think it's not a bug: I + doubt other BIOS were programmed to be compatible with mahjong panels + +****************************************************************************/ + +#include "emu.h" +#include "cpu/m68000/m68000.h" +#include "includes/neogeo.h" +#include "machine/nvram.h" +#include "machine/watchdog.h" +#include "cpu/z80/z80.h" +#include "sound/2610intf.h" +#include "softlist.h" +#include "neogeo.lh" + + +#define LOG_VIDEO_SYSTEM (0) +#define LOG_MAIN_CPU_BANKING (0) +#define LOG_AUDIO_CPU_BANKING (0) + + +/************************************* + * + * Main CPU interrupt generation + * + *************************************/ + + + +// The display counter is automatically reloaded with the load register contents on scanline 224, +// 1146 mclks from the rising edge of /HSYNC. +#define NEOGEO_VBLANK_RELOAD_HTIM (attotime::from_ticks(1146, NEOGEO_MASTER_CLOCK)) + +#define IRQ2CTRL_ENABLE (0x10) +#define IRQ2CTRL_LOAD_RELATIVE (0x20) +#define IRQ2CTRL_AUTOLOAD_VBLANK (0x40) +#define IRQ2CTRL_AUTOLOAD_REPEAT (0x80) + + +void neogeo_state::adjust_display_position_interrupt_timer() +{ + attotime period = attotime::from_ticks((UINT64)m_display_counter + 1, NEOGEO_PIXEL_CLOCK); + if (LOG_VIDEO_SYSTEM) logerror("adjust_display_position_interrupt_timer current y: %02x current x: %02x target y: %x target x: %x\n", m_screen->vpos(), m_screen->hpos(), (m_display_counter + 1) / NEOGEO_HTOTAL, (m_display_counter + 1) % NEOGEO_HTOTAL); + + m_display_position_interrupt_timer->adjust(period); +} + + +void neogeo_state::neogeo_set_display_position_interrupt_control( UINT16 data ) +{ + m_display_position_interrupt_control = data; +} + + +void neogeo_state::neogeo_set_display_counter_msb( UINT16 data ) +{ + m_display_counter = (m_display_counter & 0x0000ffff) | ((UINT32)data << 16); + + if (LOG_VIDEO_SYSTEM) logerror("PC %06x: set_display_counter %08x\n", m_maincpu->pc(), m_display_counter); +} + + +void neogeo_state::neogeo_set_display_counter_lsb( UINT16 data ) +{ + m_display_counter = (m_display_counter & 0xffff0000) | data; + + if (LOG_VIDEO_SYSTEM) logerror("PC %06x: set_display_counter %08x\n", m_maincpu->pc(), m_display_counter); + + if (m_display_position_interrupt_control & IRQ2CTRL_LOAD_RELATIVE) + { + if (LOG_VIDEO_SYSTEM) logerror("AUTOLOAD_RELATIVE "); + adjust_display_position_interrupt_timer(); + } +} + + +void neogeo_state::update_interrupts() +{ + m_maincpu->set_input_line(3, m_irq3_pending ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(m_raster_level, m_display_position_interrupt_pending ? ASSERT_LINE : CLEAR_LINE); + m_maincpu->set_input_line(m_vblank_level, m_vblank_interrupt_pending ? ASSERT_LINE : CLEAR_LINE); +} + + +void neogeo_state::neogeo_acknowledge_interrupt( UINT16 data ) +{ + if (data & 0x01) + m_irq3_pending = 0; + if (data & 0x02) + m_display_position_interrupt_pending = 0; + if (data & 0x04) + m_vblank_interrupt_pending = 0; + + update_interrupts(); +} + + +TIMER_CALLBACK_MEMBER(neogeo_state::display_position_interrupt_callback) +{ + if (LOG_VIDEO_SYSTEM) logerror("--- Scanline @ %d,%d\n", m_screen->vpos(), m_screen->hpos()); + + if (m_display_position_interrupt_control & IRQ2CTRL_ENABLE) + { + if (LOG_VIDEO_SYSTEM) logerror("*** Scanline interrupt (IRQ2) *** y: %02x x: %02x\n", m_screen->vpos(), m_screen->hpos()); + m_display_position_interrupt_pending = 1; + + update_interrupts(); + } + + if (m_display_position_interrupt_control & IRQ2CTRL_AUTOLOAD_REPEAT) + { + if (LOG_VIDEO_SYSTEM) logerror("AUTOLOAD_REPEAT "); + adjust_display_position_interrupt_timer(); + } +} + + +TIMER_CALLBACK_MEMBER(neogeo_state::display_position_vblank_callback) +{ + if (m_display_position_interrupt_control & IRQ2CTRL_AUTOLOAD_VBLANK) + { + if (LOG_VIDEO_SYSTEM) logerror("AUTOLOAD_VBLANK "); + adjust_display_position_interrupt_timer(); + } + + /* set timer for next screen */ + m_display_position_vblank_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_RELOAD_HTIM); +} + + +TIMER_CALLBACK_MEMBER(neogeo_state::vblank_interrupt_callback) +{ + if (LOG_VIDEO_SYSTEM) logerror("+++ VBLANK @ %d,%d\n", m_screen->vpos(), m_screen->hpos()); + + m_vblank_interrupt_pending = 1; + update_interrupts(); + + /* set timer for next screen */ + m_vblank_interrupt_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_IRQ_HTIM); +} + + +void neogeo_state::create_interrupt_timers() +{ + m_display_position_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neogeo_state::display_position_interrupt_callback),this)); + m_display_position_vblank_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neogeo_state::display_position_vblank_callback),this)); + m_vblank_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neogeo_state::vblank_interrupt_callback),this)); +} + + +void neogeo_state::start_interrupt_timers() +{ + m_vblank_interrupt_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_IRQ_HTIM); + m_display_position_vblank_timer->adjust(m_screen->time_until_pos(NEOGEO_VBSTART) + NEOGEO_VBLANK_RELOAD_HTIM); +} + + + +/************************************* + * + * Audio CPU interrupt generation + * + *************************************/ + +void neogeo_state::audio_cpu_check_nmi() +{ + m_audiocpu->set_input_line(INPUT_LINE_NMI, (m_audio_cpu_nmi_enabled && m_audio_cpu_nmi_pending) ? ASSERT_LINE : CLEAR_LINE); +} + +WRITE8_MEMBER(neogeo_state::audio_cpu_enable_nmi_w) +{ + // out ($08) enables the nmi, out ($18) disables it + m_audio_cpu_nmi_enabled = !(offset & 0x10); + audio_cpu_check_nmi(); +} + + + +/************************************* + * + * Input ports / Controllers + * + *************************************/ + +READ16_MEMBER(neogeo_state::in0_r) +{ + return ((m_edge->in0_r(space, offset) & m_ctrl1->ctrl_r(space, offset)) << 8) | m_dsw->read(); +} + +READ16_MEMBER(neogeo_state::in1_r) +{ + return ((m_edge->in1_r(space, offset) & m_ctrl2->ctrl_r(space, offset)) << 8) | 0xff; +} + +CUSTOM_INPUT_MEMBER(neogeo_state::kizuna4p_start_r) +{ + return (m_edge->read_start_sel() & 0x05) | ~0x05; +} + +WRITE8_MEMBER(neogeo_state::io_control_w) +{ + switch (offset) + { + case 0x00: + if (m_ctrl1) m_ctrl1->write_ctrlsel(data); + if (m_ctrl2) m_ctrl2->write_ctrlsel(data); + if (m_edge) m_edge->write_ctrlsel(data); + break; + + case 0x10: + if (m_type == NEOGEO_MVS) + if (m_cartslots[0]) set_slot_number(data); + break; + + case 0x18: + if (m_type == NEOGEO_MVS) + set_output_latch(data); + break; + + case 0x20: + if (m_type == NEOGEO_MVS) + set_output_data(data); + break; + + case 0x28: + if (m_type == NEOGEO_MVS) + { + m_upd4990a->data_in_w(data >> 0 & 1); + m_upd4990a->clk_w(data >> 1 & 1); + m_upd4990a->stb_w(data >> 2 & 1); + } + break; + +// case 0x30: break; // coin counters +// case 0x31: break; // coin counters +// case 0x32: break; // coin lockout +// case 0x33: break; // coin lockout + + default: + logerror("PC: %x Unmapped I/O control write. Offset: %x Data: %x\n", space.device().safe_pc(), offset, data); + break; + } +} + + +/************************************* + * + * Unmapped memory access + * + *************************************/ + +READ16_MEMBER(neogeo_state::neogeo_unmapped_r) +{ + UINT16 ret; + + /* unmapped memory returns the last word on the data bus, which is almost always the opcode + of the next instruction due to prefetch */ + + /* prevent recursion */ + if (m_recurse) + ret = 0xffff; + else + { + m_recurse = true; + ret = space.read_word(space.device().safe_pc()); + m_recurse = false; + } + return ret; +} + + + +/************************************* + * + * NVRAM (Save RAM) + * + *************************************/ + +void neogeo_state::set_save_ram_unlock( UINT8 data ) +{ + m_save_ram_unlocked = data; +} + + +WRITE16_MEMBER(neogeo_state::save_ram_w) +{ + if (m_save_ram_unlocked) + COMBINE_DATA(&m_save_ram[offset]); +} + + + +/************************************* + * + * Memory card + * + *************************************/ + +CUSTOM_INPUT_MEMBER(neogeo_state::get_memcard_status) +{ + // D0 and D1 are memcard 1 and 2 presence indicators, D2 indicates memcard + // write protect status (we are always write enabled) + return (m_memcard->present() == -1) ? 0x07 : 0x00; +} + + +READ16_MEMBER(neogeo_state::memcard_r) +{ + m_maincpu->eat_cycles(2); // insert waitstate + + UINT16 ret; + + if (m_memcard->present() != -1) + ret = m_memcard->read(space, offset) | 0xff00; + else + ret = 0xffff; + + return ret; +} + + +WRITE16_MEMBER(neogeo_state::memcard_w) +{ + m_maincpu->eat_cycles(2); // insert waitstate + + if (ACCESSING_BITS_0_7) + { + if (m_memcard->present() != -1) + m_memcard->write(space, offset, data); + } +} + +/************************************* + * + * Inter-CPU communications + * + *************************************/ + +WRITE8_MEMBER(neogeo_state::audio_command_w) +{ + soundlatch_write(data); + + m_audio_cpu_nmi_pending = true; + audio_cpu_check_nmi(); + + /* boost the interleave to let the audio CPU read the command */ + machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(50)); +} + + +READ8_MEMBER(neogeo_state::audio_command_r) +{ + UINT8 ret = soundlatch_read(); + + m_audio_cpu_nmi_pending = false; + audio_cpu_check_nmi(); + + return ret; +} + + +CUSTOM_INPUT_MEMBER(neogeo_state::get_audio_result) +{ + UINT8 ret = soundlatch_read(1); // soundlatch2_byte_r + + return ret; +} + + + + +void neogeo_state::neogeo_main_cpu_banking_init() +{ + /* create vector banks */ +// m_bank_vectors->configure_entry(1, m_region_maincpu->base()); +// m_bank_vectors->configure_entry(0, memregion("mainbios")->base()); +// m_bank_vectors->set_entry(0); + m_use_cart_vectors = 0; + + if (m_type != NEOGEO_CD) + { + if (!m_cartslots[0]) m_banked_cart->init_banks(); + } +} + + +/************************************* + * + * Audio CPU banking + * + *************************************/ + +READ8_MEMBER(neogeo_state::audio_cpu_bank_select_r) +{ + m_bank_audio_cart[offset & 3]->set_entry(offset >> 8); + + return 0; +} + + +void neogeo_state::neogeo_audio_cpu_banking_init(int set_entry) +{ + if (m_type == NEOGEO_CD) return; + + int region; + int bank; + UINT8 *rgn; + UINT32 address_mask; + + rgn = memregion("audiocpu")->base(); + + /* audio bios/cartridge selection */ + m_bank_audio_main->configure_entry(1, memregion("audiocpu")->base()); + if (memregion("audiobios")) + m_bank_audio_main->configure_entry(0, memregion("audiobios")->base()); + else /* on hardware with no SM1 ROM, the cart ROM is always enabled */ + m_bank_audio_main->configure_entry(0, memregion("audiocpu")->base()); + + m_bank_audio_main->set_entry(m_use_cart_audio); + + /* audio banking */ + m_bank_audio_cart[0] = membank("audio_f000"); + m_bank_audio_cart[1] = membank("audio_e000"); + m_bank_audio_cart[2] = membank("audio_c000"); + m_bank_audio_cart[3] = membank("audio_8000"); + + address_mask = (memregion("audiocpu")->bytes() - 0x10000 - 1) & 0x3ffff; + + + for (region = 0; region < 4; region++) + { + for (bank = 0xff; bank >= 0; bank--) + { + UINT32 bank_address = 0x10000 + ((bank << (11 + region)) & address_mask); + m_bank_audio_cart[region]->configure_entry(bank, &rgn[bank_address]); + } + } + + // set initial audio banks - THIS IS A HACK + // Z80 banking is handled by the NEO-ZMC chip in the cartridge + // (in later cartridges, by multifunction banking/protection chips that implement the same bank scheme) + // On the real chip, initial banks are all 0. + // However, early cartridges with less than 64KB of Z80 code and data don't have ROM banking at all. + // These initial bank settings are required so non-banked games will work until we identify them + // and use a different Z80 address map for them. + m_bank_audio_cart[0]->set_entry(0x1e); + m_bank_audio_cart[1]->set_entry(0x0e); + m_bank_audio_cart[2]->set_entry(0x06); + m_bank_audio_cart[3]->set_entry(0x02); +} + + + +/************************************* + * + * System control register + * + *************************************/ + +WRITE8_MEMBER(neogeo_state::system_control_w) +{ + UINT8 bit = (offset >> 3) & 0x01; + + switch (offset & 0x07) + { + default: + case 0x00: + neogeo_set_screen_shadow(bit); + break; + + case 0x01: + if (m_type == NEOGEO_CD) + printf("NeoCD: write to regular vector change address? %d\n", bit); // what IS going on with "neocdz doubledr" and why do games write here if it's hooked up to nothing? + else + //m_bank_vectors->set_entry(bit); + m_use_cart_vectors = bit; + break; + + case 0x05: + if (m_type == NEOGEO_MVS) + { + m_use_cart_audio = bit; + m_sprgen->neogeo_set_fixed_layer_source(bit); + m_bank_audio_main->set_entry(m_use_cart_audio); + } + break; + + case 0x06: + if (m_type == NEOGEO_MVS) + set_save_ram_unlock(bit); + break; + + case 0x07: + neogeo_set_palette_bank(bit); + break; + + case 0x02: // memory card 1: write enable/disable + case 0x03: // memory card 2: write disable/enable + case 0x04: // memory card: register select enable/set to normal (what does it mean?) + logerror("PC: %x Unmapped system control write. Offset: %x Data: %x\n", space.device().safe_pc(), offset & 0x07, bit); + break; + } + + if (LOG_VIDEO_SYSTEM && ((offset & 0x07) != 0x06)) logerror("PC: %x System control write. Offset: %x Data: %x\n", space.device().safe_pc(), offset & 0x07, bit); +} + + + +/************************************* + * + * LEDs + * + *************************************/ + +void neogeo_state::set_outputs( ) +{ + static const UINT8 led_map[0x10] = + { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58,0x4c,0x62,0x69,0x78,0x00 }; + + /* EL */ + output().set_digit_value(0, led_map[m_el_value]); + + /* LED1 */ + output().set_digit_value(1, led_map[m_led1_value >> 4]); + output().set_digit_value(2, led_map[m_led1_value & 0x0f]); + + /* LED2 */ + output().set_digit_value(3, led_map[m_led2_value >> 4]); + output().set_digit_value(4, led_map[m_led2_value & 0x0f]); +} + + +void neogeo_state::set_output_latch( UINT8 data ) +{ + /* looks like the LEDs are set on the + falling edge */ + UINT8 falling_bits = m_output_latch & ~data; + + if (falling_bits & 0x08) + m_el_value = 16 - (m_output_data & 0x0f); + + if (falling_bits & 0x10) + m_led1_value = ~m_output_data; + + if (falling_bits & 0x20) + m_led2_value = ~m_output_data; + + if (falling_bits & 0xc7) + logerror("%s Unmaped LED write. Data: %x\n", machine().describe_context(), falling_bits); + + m_output_latch = data; + + set_outputs(); +} + + +void neogeo_state::set_output_data( UINT8 data ) +{ + m_output_data = data; +} + + + +/************************************* + * + * Machine initialization + * + *************************************/ + +DRIVER_INIT_MEMBER(neogeo_state,neogeo) +{ + if (!m_cartslots[0]) m_banked_cart->install_banks(machine(), m_maincpu, m_region_maincpu->base(), m_region_maincpu->bytes()); + + m_sprgen->m_fixed_layer_bank_type = 0; + + // install controllers + m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, read16_delegate(FUNC(neogeo_state::in0_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x340000, 0x340001, 0, 0x01fffe, read16_delegate(FUNC(neogeo_state::in1_r), this)); +} + + +void neogeo_state::neogeo_postload() +{ + m_bank_audio_main->set_entry(m_use_cart_audio); + + if (m_type == NEOGEO_MVS) set_outputs(); +} + + +void neogeo_state::machine_start() +{ + m_type = NEOGEO_MVS; + + + /* set the initial main CPU bank */ + neogeo_main_cpu_banking_init(); + + /* set the initial audio CPU ROM banks */ + neogeo_audio_cpu_banking_init(1); + + create_interrupt_timers(); + + /* irq levels for MVS / AES */ + m_vblank_level = 1; + m_raster_level = 2; + + /* start with an IRQ3 - but NOT on a reset */ + m_irq3_pending = 1; + + // enable rtc and serial mode + m_upd4990a->cs_w(1); + m_upd4990a->oe_w(1); + m_upd4990a->c0_w(1); + m_upd4990a->c1_w(1); + m_upd4990a->c2_w(1); + + /* register state save */ + save_item(NAME(m_display_position_interrupt_control)); + save_item(NAME(m_display_counter)); + save_item(NAME(m_vblank_interrupt_pending)); + save_item(NAME(m_display_position_interrupt_pending)); + save_item(NAME(m_irq3_pending)); + save_item(NAME(m_audio_cpu_nmi_enabled)); + save_item(NAME(m_audio_cpu_nmi_pending)); + save_item(NAME(m_save_ram_unlocked)); + save_item(NAME(m_output_data)); + save_item(NAME(m_output_latch)); + save_item(NAME(m_el_value)); + save_item(NAME(m_led1_value)); + save_item(NAME(m_led2_value)); + + save_item(NAME(m_use_cart_vectors)); + save_item(NAME(m_use_cart_audio)); + + machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_state::neogeo_postload), this)); + + + m_cartslots[0] = m_cartslot1; + m_cartslots[1] = m_cartslot2; + m_cartslots[2] = m_cartslot3; + m_cartslots[3] = m_cartslot4; + m_cartslots[4] = m_cartslot5; + m_cartslots[5] = m_cartslot6; + + + m_sprgen->set_screen(m_screen); + m_sprgen->set_sprite_region(m_region_sprites->base(), m_region_sprites->bytes()); + m_sprgen->set_fixed_regions(m_region_fixed->base(), m_region_fixed->bytes(), m_region_fixedbios); + +} + + + +/************************************* + * + * Machine reset + * + *************************************/ + +void neogeo_state::set_slot_number(int slot) +{ + if (slot != m_currentslot) + { + m_currentslot = slot; + + address_space &space = m_maincpu->space(AS_PROGRAM); + + // unmap old handlers, some carts will have installed overlays on them, we need them to be cleared + space.unmap_readwrite(0x000080, 0x0fffff); + space.unmap_readwrite(0x200000, 0x2fffff); + + + if (m_cartslots[m_currentslot]->get_sprites_size() == 0) + return; + + // give the sprite chip pointers to the graphics for this slot from the slot device + m_sprgen->set_sprite_region(m_cartslots[m_currentslot]->get_sprites_base(), m_cartslots[m_currentslot]->get_sprites_size()); + m_sprgen->set_fixed_regions(m_cartslots[m_currentslot]->get_fixed_base(), m_cartslots[m_currentslot]->get_fixed_size(), m_region_fixedbios); + m_sprgen->set_optimized_sprite_data(m_cartslots[m_currentslot]->get_sprites_optimized(), m_cartslots[m_currentslot]->get_sprites_addrmask()); + m_sprgen->m_fixed_layer_bank_type = m_cartslots[m_currentslot]->get_fixed_bank_type(); + /* + Resetting a sound device causes the core to update() it and generate samples if it's not up to date. + Thus we preemptively reset it here while the old pointers are still valid so it's up to date and + doesn't generate samples below when we reset it for the new pointers. + */ + device_t* ym = machine().device("ymsnd"); + ym->reset(); + + m_cartslots[m_currentslot]->setup_memory_banks(machine()); // setup basic pointers + + ym->reset(); // reset it again to get the new pointers + + // these could have changed, ensure the pointers are valid + m_region_maincpu.findit(); + m_region_sprites.findit(); + m_region_fixed.findit(); + + space.install_rom(0x000080, 0x0fffff, m_region_maincpu->base()+0x80); // reinstall the base program rom handler + + m_cartslots[m_currentslot]->activate_cart(machine(), m_maincpu, m_region_maincpu->base(), m_region_maincpu->bytes(), m_cartslots[m_currentslot]->get_fixed_base(), m_cartslots[m_currentslot]->get_fixed_size()); + //memcpy((UINT8*)m_cartslots[m_currentslot]->get_rom_base(),m_region_maincpu->base(), m_region_maincpu->bytes()); // hack- copy back any mods activate made (eh cthd2003)c + + neogeo_audio_cpu_banking_init(0); // should probably be responsibility of the cart + m_audiocpu->reset(); // or some games like svc have no sounnd if in higher slots? + + } +} + +void neogeo_state::machine_reset() +{ + offs_t offs; + address_space &space = m_maincpu->space(AS_PROGRAM); + + /* reset system control registers */ + for (offs = 0; offs < 8; offs++) + system_control_w(space, offs, 0); + + // disable audiocpu nmi + m_audio_cpu_nmi_enabled = false; + m_audio_cpu_nmi_pending = false; + audio_cpu_check_nmi(); + + m_maincpu->reset(); + + start_interrupt_timers(); + + /* trigger the IRQ3 that was set by MACHINE_START */ + update_interrupts(); + + m_recurse = false; + + if (m_cartslots[0]) // if thie system has cart slots then do some extra initialization + { + set_slot_number(0); + } + +} + +READ16_MEMBER(neogeo_state::banked_vectors_r) +{ + if (!m_use_cart_vectors) + { + UINT16* bios = (UINT16*)memregion("mainbios")->base(); + return bios[offset]; + } + else + { + UINT16* game = (UINT16*)m_region_maincpu->base(); + return game[offset]; + } + +} + +READ16_MEMBER(neogeo_state::neogeo_slot_rom_low_r) +{ + return m_cartslots[m_currentslot]->read_rom(space, offset+(0x80/2), mem_mask); +} + +READ16_MEMBER(neogeo_state::neogeo_slot_rom_low_bectors_r) +{ + if (!m_use_cart_vectors) + { + UINT16* bios = (UINT16*)memregion("mainbios")->base(); + return bios[offset]; + } + else + { + return m_cartslots[m_currentslot]->read_rom(space, offset, mem_mask); + } + +} + + +/************************************* + * + * Main CPU memory handlers + * + *************************************/ + +ADDRESS_MAP_START( neogeo_main_map, AS_PROGRAM, 16, neogeo_state ) + + AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x0f0000) AM_RAM + /* some games have protection devices in the 0x200000 region, it appears to map to cart space, not surprising, the ROM is read here too */ + AM_RANGE(0x300080, 0x300081) AM_MIRROR(0x01ff7e) AM_READ_PORT("TEST") + AM_RANGE(0x300000, 0x300001) AM_MIRROR(0x01fffe) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x00ff) + AM_RANGE(0x320000, 0x320001) AM_MIRROR(0x01fffe) AM_READ_PORT("AUDIO/COIN") AM_WRITE8(audio_command_w, 0xff00) + AM_RANGE(0x360000, 0x37ffff) AM_READ(neogeo_unmapped_r) + AM_RANGE(0x380000, 0x380001) AM_MIRROR(0x01fffe) AM_READ_PORT("SYSTEM") + AM_RANGE(0x380000, 0x38007f) AM_MIRROR(0x01ff80) AM_WRITE8(io_control_w, 0x00ff) + AM_RANGE(0x3a0000, 0x3a001f) AM_MIRROR(0x01ffe0) AM_READ(neogeo_unmapped_r) AM_WRITE8(system_control_w, 0x00ff) + AM_RANGE(0x3c0000, 0x3c0007) AM_MIRROR(0x01fff8) AM_READ(neogeo_video_register_r) + AM_RANGE(0x3c0000, 0x3c000f) AM_MIRROR(0x01fff0) AM_WRITE(neogeo_video_register_w) + AM_RANGE(0x3e0000, 0x3fffff) AM_READ(neogeo_unmapped_r) + AM_RANGE(0x400000, 0x401fff) AM_MIRROR(0x3fe000) AM_READWRITE(neogeo_paletteram_r, neogeo_paletteram_w) + AM_RANGE(0x800000, 0x800fff) AM_READWRITE(memcard_r, memcard_w) + AM_RANGE(0xc00000, 0xc1ffff) AM_MIRROR(0x0e0000) AM_ROM AM_REGION("mainbios", 0) + AM_RANGE(0xd00000, 0xd0ffff) AM_MIRROR(0x0f0000) AM_RAM_WRITE(save_ram_w) AM_SHARE("saveram") + AM_RANGE(0xe00000, 0xffffff) AM_READ(neogeo_unmapped_r) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( main_map_slot, AS_PROGRAM, 16, neogeo_state ) + AM_RANGE(0x000000, 0x00007f) AM_READ(neogeo_slot_rom_low_bectors_r) + AM_RANGE(0x000080, 0x0fffff) AM_READ(neogeo_slot_rom_low_r) + AM_RANGE(0x200000, 0x2fffff) AM_ROMBANK("cartridge") +// AM_RANGE(0x2ffff0, 0x2fffff) AM_WRITE(main_cpu_bank_select_w) + AM_IMPORT_FROM( neogeo_main_map ) +ADDRESS_MAP_END + +/************************************* + * + * Audio CPU memory handlers + * + *************************************/ + +static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, neogeo_state ) + AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("audio_main") + AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("audio_8000") + AM_RANGE(0xc000, 0xdfff) AM_ROMBANK("audio_c000") + AM_RANGE(0xe000, 0xefff) AM_ROMBANK("audio_e000") + AM_RANGE(0xf000, 0xf7ff) AM_ROMBANK("audio_f000") + AM_RANGE(0xf800, 0xffff) AM_RAM +ADDRESS_MAP_END + + + +/************************************* + * + * Audio CPU port handlers + * + *************************************/ + +static ADDRESS_MAP_START( audio_io_map, AS_IO, 8, neogeo_state ) + AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE(audio_command_r, soundlatch_clear_byte_w) + AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) + AM_RANGE(0x08, 0x08) AM_MIRROR(0xff10) AM_MASK(0x0010) AM_WRITE(audio_cpu_enable_nmi_w) + AM_RANGE(0x08, 0x0b) AM_MIRROR(0xfff0) AM_MASK(0xff03) AM_READ(audio_cpu_bank_select_r) + AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_WRITE(soundlatch2_byte_w) +ADDRESS_MAP_END + + + +/************************************* + * + * Standard Neo-Geo DIPs and + * input port definition + * + *************************************/ + +INPUT_PORTS_START( neogeo ) + PORT_START("DSW") + PORT_DIPNAME( 0x01, 0x01, "Setting Mode" ) PORT_DIPLOCATION("SW:1") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW:2") + PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x00, "VS Mode" ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Controller ) ) PORT_DIPLOCATION("SW:3") + PORT_DIPSETTING( 0x04, DEF_STR( Joystick ) ) + PORT_DIPSETTING( 0x00, "Mahjong Panel" ) + PORT_DIPNAME( 0x18, 0x18, "COMM Setting (Cabinet No.)" ) PORT_DIPLOCATION("SW:4,5") + PORT_DIPSETTING( 0x18, "1" ) + PORT_DIPSETTING( 0x10, "2" ) + PORT_DIPSETTING( 0x08, "3" ) + PORT_DIPSETTING( 0x00, "4" ) + PORT_DIPNAME( 0x20, 0x20, "COMM Setting (Link Enable)" ) PORT_DIPLOCATION("SW:6") + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW:7") + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, "Freeze" ) PORT_DIPLOCATION("SW:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + + PORT_START("SYSTEM") + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Next Game") PORT_CODE(KEYCODE_3) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Previous Game") PORT_CODE(KEYCODE_4) + PORT_BIT( 0x7000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state, get_memcard_status, nullptr) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* Hardware type (AES=0, MVS=1). Some games check this and show a piracy warning screen if the hardware and BIOS don't match */ + + PORT_START("AUDIO/COIN") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN3 ) /* What is this? "us-e" BIOS uses it as a coin input; Universe BIOS uses it to detect MVS or AES hardware */ + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_COIN4 ) /* What is this? "us-e" BIOS uses it as a coin input; Universe BIOS uses it to detect MVS or AES hardware */ + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SPECIAL ) /* what is this? When ACTIVE_HIGH + IN4 bit 6 ACTIVE_LOW MVS-4 slot is detected */ + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd4990a", upd1990a_device, tp_r) + PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("upd4990a", upd1990a_device, data_out_r) + PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(DEVICE_SELF, neogeo_state,get_audio_result, nullptr) + + PORT_START("TEST") + PORT_BIT( 0x003f, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* what is this? If ACTIVE_LOW, MVS-6 slot detected, when ACTIVE_HIGH MVS-1 slot (AES) detected */ + PORT_SERVICE_NO_TOGGLE( 0x0080, IP_ACTIVE_LOW ) + PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + +static INPUT_PORTS_START( neogeo_6slot ) + PORT_INCLUDE( neogeo ) + + PORT_MODIFY("TEST") + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SPECIAL ) +INPUT_PORTS_END + + + + +DRIVER_INIT_MEMBER(neogeo_state,mvs) +{ + DRIVER_INIT_CALL(neogeo); +} + + + + +/************************************* + * + * Machine driver + * + *************************************/ + +MACHINE_CONFIG_START( neogeo_base, neogeo_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", M68000, NEOGEO_MAIN_CPU_CLOCK) + MCFG_CPU_PROGRAM_MAP(neogeo_main_map) + + MCFG_CPU_ADD("audiocpu", Z80, NEOGEO_AUDIO_CPU_CLOCK) + MCFG_CPU_PROGRAM_MAP(audio_map) + MCFG_CPU_IO_MAP(audio_io_map) + + /* video hardware */ + MCFG_DEFAULT_LAYOUT(layout_neogeo) + + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_RAW_PARAMS(NEOGEO_PIXEL_CLOCK, NEOGEO_HTOTAL, NEOGEO_HBEND, NEOGEO_HBSTART, NEOGEO_VTOTAL, NEOGEO_VBEND, NEOGEO_VBSTART) + MCFG_SCREEN_UPDATE_DRIVER(neogeo_state, screen_update_neogeo) + + /* 4096 colors * two banks * normal and shadow */ + MCFG_PALETTE_ADD_INIT_BLACK("palette", 4096*2*2) + + MCFG_DEVICE_ADD("spritegen", NEOGEO_SPRITE_OPTIMZIED, 0) + + /* audio hardware */ + MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") + + MCFG_SOUND_ADD("ymsnd", YM2610, NEOGEO_YM2610_CLOCK) + MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) + MCFG_SOUND_ROUTE(0, "lspeaker", 0.28) + MCFG_SOUND_ROUTE(0, "rspeaker", 0.28) + MCFG_SOUND_ROUTE(1, "lspeaker", 0.98) + MCFG_SOUND_ROUTE(2, "rspeaker", 0.98) + MCFG_NEOGEO_BANKED_CART_ADD("banked_cart") + +MACHINE_CONFIG_END + + +MACHINE_CONFIG_DERIVED( neogeo_arcade, neogeo_base ) + MCFG_WATCHDOG_ADD("watchdog") + MCFG_WATCHDOG_TIME_INIT(attotime::from_ticks(3244030, NEOGEO_MASTER_CLOCK)) + MCFG_UPD4990A_ADD("upd4990a", XTAL_32_768kHz, NOOP, NOOP) + MCFG_NVRAM_ADD_0FILL("saveram") + MCFG_NEOGEO_MEMCARD_ADD("memcard") +MACHINE_CONFIG_END + + +static MACHINE_CONFIG_DERIVED( mvs, neogeo_arcade ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(main_map_slot) + + MCFG_NEOGEO_CONTROL_EDGE_CONNECTOR_ADD("edge", neogeo_arc_edge, "joy", false) + + MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl1", neogeo_arc_pin15, "", false) + MCFG_NEOGEO_CONTROL_PORT_ADD("ctrl2", neogeo_arc_pin15, "", false) + + MCFG_NEOGEO_CARTRIDGE_ADD("cartslot1", neogeo_cart, nullptr) + MCFG_NEOGEO_CARTRIDGE_ADD("cartslot2", neogeo_cart, nullptr) + MCFG_NEOGEO_CARTRIDGE_ADD("cartslot3", neogeo_cart, nullptr) + MCFG_NEOGEO_CARTRIDGE_ADD("cartslot4", neogeo_cart, nullptr) + MCFG_NEOGEO_CARTRIDGE_ADD("cartslot5", neogeo_cart, nullptr) + MCFG_NEOGEO_CARTRIDGE_ADD("cartslot6", neogeo_cart, nullptr) + + MCFG_SOFTWARE_LIST_ADD("cart_list","neogeo") +MACHINE_CONFIG_END + + + +/* dummy entry for the dummy bios driver */ +ROM_START( neogeo ) + NEOGEO_BIOS + + ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASEFF ) + + ROM_REGION( 0x20000, "audiobios", 0 ) + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) + + ROM_REGION( 0x50000, "audiocpu", 0 ) + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) + + ROM_Y_ZOOM + + ROM_REGION( 0x20000, "fixed", ROMREGION_ERASEFF ) + + ROM_REGION( 0x20000, "fixedbios", 0 ) + ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) + + ROM_REGION( 0x10000, "ymsnd", ROMREGION_ERASEFF ) + + ROM_REGION( 0x100000, "sprites", ROMREGION_ERASEFF ) +ROM_END + + +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT */ +CONS( 1990, neogeo, 0, 0, mvs, neogeo_6slot, neogeo_state, mvs, "SNK", "Neo-Geo", MACHINE_IS_BIOS_ROOT | MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/neogeo0.cpp b/docs/release/src/hbmame/drivers/neogeo0.cpp index 20ebb95406b..3e5dd15605b 100644 --- a/docs/release/src/hbmame/drivers/neogeo0.cpp +++ b/docs/release/src/hbmame/drivers/neogeo0.cpp @@ -1,10 +1,11 @@ // license:BSD-3-Clause // copyright-holders:Robbbert -//#include "../mame/drivers/neogeo.cpp" /******************************************************************************/ +#include "machine/watchdog.h" + // set up a hbmame-specific derived class, instead of hacking into src/mame/includes/neogeo.h class neogeo_hbmame : public neogeo_noslot_state { @@ -105,11 +106,11 @@ DRIVER_INIT_MEMBER( neogeo_hbmame, cmc50sfix ) static MACHINE_CONFIG_DERIVED( no_watchdog, neogeo_noslot ) + MCFG_WATCHDOG_MODIFY("watchdog") MCFG_WATCHDOG_TIME_INIT(attotime::from_seconds(0.0)) MACHINE_CONFIG_END -#undef NO_DELTAT_REGION /* The Encrypted Boards do not have a s1 rom, data for it comes from the Cx ROMs */ #define NEO_SFIX_MT_128K \ diff --git a/docs/release/src/mame/drivers/neogeo_noslot.cpp b/docs/release/src/hbmame/drivers/neogeo_noslot.cpp index 5257711656a..27d3a229fa0 100644 --- a/docs/release/src/mame/drivers/neogeo_noslot.cpp +++ b/docs/release/src/hbmame/drivers/neogeo_noslot.cpp @@ -599,8 +599,6 @@ ROM_START( alpham2 ) /* MVS AND AES VERSION */ ROM_LOAD( "007-v1.v1", 0x000000, 0x100000, CRC(cd5db931) SHA1(b59f9f2df29f49470312a6cd20f5669b6aaf51ff) ) /* TC538200 */ ROM_LOAD( "007-v2.v2", 0x100000, 0x100000, CRC(63e9b574) SHA1(1ade4cd0b15c84dd4a0fb7f7abf0885eef3a3f71) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "007-c1.c1", 0x000000, 0x100000, CRC(8fba8ff3) SHA1(1a682292e99eb91b0edb9771c44bc5e762867e98) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "007-c2.c2", 0x000001, 0x100000, CRC(4dad2945) SHA1(ac85a146276537fed124bda892bb93ff549f1d93) ) /* Plane 2,3 */ /* TC538200 */ @@ -795,8 +793,6 @@ ROM_START( mutnat ) /* MVS AND AES VERSION */ ROM_LOAD( "014-v1.v1", 0x000000, 0x100000, CRC(25419296) SHA1(c9fc04987c4e0875d276e1a0fb671740b6f548ad) ) /* CXK388000 */ ROM_LOAD( "014-v2.v2", 0x100000, 0x100000, CRC(0de53d5e) SHA1(467f6040da3dfb1974785e95e14c3f608a93720a) ) /* CXK388000 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "014-c1.c1", 0x000000, 0x100000, CRC(5e4381bf) SHA1(d429a5e09dafd2fb99495658b3652eecbf58f91b) ) /* Plane 0,1 */ /* CXK388000 */ ROM_LOAD16_BYTE( "014-c2.c2", 0x000001, 0x100000, CRC(69ba4e18) SHA1(b3369190c47771a790c7adffa958ff55d90e758b) ) /* Plane 2,3 */ /* CXK388000 */ @@ -832,8 +828,6 @@ ROM_START( kotm ) /* MVS VERSION */ ROM_LOAD( "016-v1.v1", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) ) /* TC538200 */ ROM_LOAD( "016-v2.v2", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "016-c1.c1", 0x000000, 0x100000, CRC(71471c25) SHA1(bc8e3fee56b33ef2bac5b4b852339d2fbcd09b7c) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "016-c2.c2", 0x000001, 0x100000, CRC(320db048) SHA1(d6b43834de6f5442e23ca8fb26b3a36e96790d8d) ) /* Plane 2,3 */ /* TC538200 */ @@ -854,8 +848,6 @@ ROM_START( kotmh ) /* AES VERSION */ ROM_LOAD( "016-v1.v1", 0x000000, 0x100000, CRC(86c0a502) SHA1(7fe2db0c64aefdd14d6c36f7fcd6442591e9a014) ) /* TC538200 */ ROM_LOAD( "016-v2.v2", 0x100000, 0x100000, CRC(5bc23ec5) SHA1(f4ff5d20587469daa026d5c812739335ce53cfdf) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "016-c1.c1", 0x000000, 0x100000, CRC(71471c25) SHA1(bc8e3fee56b33ef2bac5b4b852339d2fbcd09b7c) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "016-c2.c2", 0x000001, 0x100000, CRC(320db048) SHA1(d6b43834de6f5442e23ca8fb26b3a36e96790d8d) ) /* Plane 2,3 */ /* TC538200 */ @@ -885,8 +877,6 @@ ROM_START( sengoku ) /* MVS AND AES VERSION */ ROM_LOAD( "017-v1.v1", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) ) /* TC538200 */ ROM_LOAD( "017-v2.v2", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "017-c1.c1", 0x000000, 0x100000, CRC(b4eb82a1) SHA1(79879e2ea78c07d04c88dc9a1ad59604b7a078be) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "017-c2.c2", 0x000001, 0x100000, CRC(d55c550d) SHA1(6110f693aa23710939c04153cf5af26493e4a03f) ) /* Plane 2,3 */ /* TC538200 */ @@ -907,8 +897,6 @@ ROM_START( sengokuh ) /* AES VERSION (US) */ ROM_LOAD( "017-v1.v1", 0x000000, 0x100000, CRC(23663295) SHA1(9374a5d9f3de8e6a97c11f07d8b4485ac9d55edb) ) /* TC538200 */ ROM_LOAD( "017-v2.v2", 0x100000, 0x100000, CRC(f61e6765) SHA1(1c9b287996947319eb3d288c3d82932cf01039db) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "017-c1.c1", 0x000000, 0x100000, CRC(b4eb82a1) SHA1(79879e2ea78c07d04c88dc9a1ad59604b7a078be) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "017-c2.c2", 0x000001, 0x100000, CRC(d55c550d) SHA1(6110f693aa23710939c04153cf5af26493e4a03f) ) /* Plane 2,3 */ /* TC538200 */ @@ -940,8 +928,6 @@ ROM_START( burningf ) /* MVS AND AES VERSION */ ROM_LOAD( "018-v1.v1", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) ) /* HN62408 */ ROM_LOAD( "018-v2.v2", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) ) /* HN62408 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "018-c1.c1", 0x000000, 0x100000, CRC(25a25e9b) SHA1(3cf02d0662e190678d0530d7b7d3f425209adf83) ) /* Plane 0,1 */ /* HN62408 */ ROM_LOAD16_BYTE( "018-c2.c2", 0x000001, 0x100000, CRC(d4378876) SHA1(45659aa1755d96b992c977042186e47fff68bba9) ) /* Plane 2,3 */ /* HN62408 */ @@ -961,8 +947,6 @@ ROM_START( burningfh ) /* AES VERSION (US) */ ROM_LOAD( "018-v1.v1", 0x000000, 0x100000, CRC(508c9ffc) SHA1(cd3a97a233a4585f8507116aba85884623cccdc4) ) /* HN62408 */ ROM_LOAD( "018-v2.v2", 0x100000, 0x100000, CRC(854ef277) SHA1(4b3083b9c80620064cb44e812a787a700e32a6f3) ) /* HN62408 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "018-c1.c1", 0x000000, 0x100000, CRC(25a25e9b) SHA1(3cf02d0662e190678d0530d7b7d3f425209adf83) ) /* Plane 0,1 */ /* HN62408 */ ROM_LOAD16_BYTE( "018-c2.c2", 0x000001, 0x100000, CRC(d4378876) SHA1(45659aa1755d96b992c977042186e47fff68bba9) ) /* Plane 2,3 */ /* HN62408 */ @@ -1130,8 +1114,6 @@ ROM_START( bjourney ) /* MVS AND AES VERSION */ ROM_LOAD( "022-v11.v11", 0x000000, 0x100000, CRC(2cb4ad91) SHA1(169ec7303c4275155a66a88cc08270c24132bb36) ) /* TC538200 */ ROM_LOAD( "022-v22.v22", 0x100000, 0x100000, CRC(65a54d13) SHA1(a591fbcedca8f679dacbebcd554e3aa3fd163e92) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "022-c1.c1", 0x000000, 0x100000, CRC(4d47a48c) SHA1(6e282285be72583d828e7765b1c1695ecdc44777) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "022-c2.c2", 0x000001, 0x100000, CRC(e8c1491a) SHA1(c468d2556b3de095aaa05edd1bc16d71303e9478) ) /* Plane 2,3 */ /* TC538200 */ @@ -1160,8 +1142,6 @@ ROM_START( quizdais ) /* MVS AND AES VERSION */ ROM_REGION( 0x100000, "ymsnd", 0 ) ROM_LOAD( "023-v1.v1", 0x000000, 0x100000, CRC(a53e5bd3) SHA1(cf115c6478ce155d889e6a5acb962339e08e024b) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x200000, "sprites", 0 ) ROM_LOAD16_BYTE( "023-c1.c1", 0x000000, 0x100000, CRC(2999535a) SHA1(0deabf771039987b559edc2444eea741bd7ba861) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "023-c2.c2", 0x000001, 0x100000, CRC(876a99e6) SHA1(8d1dcfc0927d7523f8be8203573192406ec654b4) ) /* Plane 2,3 */ /* TC538200 */ @@ -1178,8 +1158,6 @@ ROM_START( quizdaisk ) /* KOREAN VERSION */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "123-v1.v1", 0x000000, 0x200000, CRC(986f4af9) SHA1(9e15d2142ec5e5d076582dc1cecfd724b0924f54) ) - NO_DELTAT_REGION - ROM_REGION( 0x200000, "sprites", 0 ) ROM_LOAD16_BYTE( "123-c1.c1", 0x000000, 0x100000, CRC(e579a606) SHA1(b9430ec157902f0707e5d52e69bd5d93792e7118) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "123-c2.c2", 0x000001, 0x100000, CRC(e182c837) SHA1(a8f7648bf21ebd3efe3a49606b53220815a60d0f) ) /* Plane 2,3 */ @@ -1207,8 +1185,6 @@ ROM_START( lresort ) ROM_LOAD( "024-v1.v1", 0x000000, 0x100000, CRC(efdfa063) SHA1(e4609ecbcc1c820758f229da5145f51285b50555) ) /* TC538200 */ ROM_LOAD( "024-v2.v2", 0x100000, 0x100000, CRC(3c7997c0) SHA1(8cb7e8e69892b19d318978370dbc510d51b06a69) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "024-c1.c1", 0x000000, 0x100000, CRC(3617c2dc) SHA1(8de2643a618272f8aa1c705363edb007f4a5f5b7) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "024-c2.c2", 0x000001, 0x100000, CRC(3f0a7fd8) SHA1(d0c9c7a9dde9ce175fb243d33ec11fa719d0158c) ) /* Plane 2,3 */ /* TC538200 */ @@ -1231,8 +1207,6 @@ ROM_START( lresortp ) /* prototype - all roms were hand labeled with CRCs */ /* ROM_LOAD( "024_v13_a31e.v13", 0x100000, 0x080000, CRC(2e39462b) SHA1(b0a9b1a3377bf0369f3020192505c46ca52927d6) ) // 024_v13_a31e.bin 024-v2.v2 [1/2] IDENTICAL ROM_LOAD( "024_v24_2f0f.v24", 0x180000, 0x080000, CRC(7944754f) SHA1(d42a46c5127c6c62041ebffb0007af8a24abd360) ) // 024_v24_2f0f.bin 024-v2.v2 [2/2] IDENTICAL - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) // note, ROM_LOAD32_BYTE ROM_LOAD32_BYTE( "024_c1_b764.c1", 0x000000, 0x80000, CRC(677749ec) SHA1(6f94675e037956a380652ab1056e6f1dec605bec) ) /* Plane 0 */ ROM_LOAD32_BYTE( "024_c2_1951.c2", 0x000002, 0x80000, CRC(104d7b59) SHA1(404e8776ee8df4ca282eb7b747759af8628ddca1) ) /* Plane 2 */ @@ -1265,8 +1239,6 @@ ROM_START( eightman ) /* MVS AND AES VERSION */ ROM_LOAD( "025-v1.v1", 0x000000, 0x100000, CRC(4558558a) SHA1(a4b277703ed67225c652be0d618daeca65a27b88) ) /* TC538200 */ ROM_LOAD( "025-v2.v2", 0x100000, 0x100000, CRC(c5e052e9) SHA1(fa1119c90ce4c706a6aa0c17d7bc06aa3068d9b2) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "025-c1.c1", 0x000000, 0x100000, CRC(555e16a4) SHA1(1c96f3d2fd0991680fbf627a6cdd26ad2cd60319) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "025-c2.c2", 0x000001, 0x100000, CRC(e1ee51c3) SHA1(da8d074bb4e923ed7b8a154fd31b42f2d65b8e96) ) /* Plane 2,3 */ /* TC538200 */ @@ -1333,8 +1305,6 @@ ROM_START( legendos ) ROM_REGION( 0x100000, "ymsnd", 0 ) ROM_LOAD( "029-v1.v1", 0x000000, 0x100000, CRC(85065452) SHA1(7154b7c59b16c32753ac6b5790fb50b51ce30a20) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "029-c1.c1", 0x000000, 0x100000, CRC(2f5ab875) SHA1(3e060973bba41a6c22ff7054104bdc5eee1fa13a) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "029-c2.c2", 0x000001, 0x100000, CRC(318b2711) SHA1(7014110cee98280317e1189f306ca40652b61f6f) ) /* Plane 2,3 */ /* TC538200 */ @@ -1364,8 +1334,6 @@ ROM_START( 2020bb ) ROM_LOAD( "030-v1.v1", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) ) /* TC538200 */ ROM_LOAD( "030-v2.v2", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "030-c1.c1", 0x000000, 0x100000, CRC(4f5e19bd) SHA1(ef7975c4b33a7aea4a25a385f604799f054d3200) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "030-c2.c2", 0x000001, 0x100000, CRC(d6314bf0) SHA1(0920cc580d7997fcb0170dd619af2f305d635577) ) /* Plane 2,3 */ /* TC538200 */ @@ -1386,8 +1354,6 @@ ROM_START( 2020bba ) /* MVS AND AES VERSION */ ROM_LOAD( "030-v1.v1", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) ) /* TC538200 */ ROM_LOAD( "030-v2.v2", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "030-c1.c1", 0x000000, 0x100000, CRC(4f5e19bd) SHA1(ef7975c4b33a7aea4a25a385f604799f054d3200) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "030-c2.c2", 0x000001, 0x100000, CRC(d6314bf0) SHA1(0920cc580d7997fcb0170dd619af2f305d635577) ) /* Plane 2,3 */ /* TC538200 */ @@ -1408,8 +1374,6 @@ ROM_START( 2020bbh ) ROM_LOAD( "030-v1.v1", 0x000000, 0x100000, CRC(d4ca364e) SHA1(b0573744b0ea2ef1e2167a225f0d254883f5af04) ) /* TC538200 */ ROM_LOAD( "030-v2.v2", 0x100000, 0x100000, CRC(54994455) SHA1(76eb62b86e8ed51a77f44313d5cc8091b3f58d57) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "030-c1.c1", 0x000000, 0x100000, CRC(4f5e19bd) SHA1(ef7975c4b33a7aea4a25a385f604799f054d3200) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "030-c2.c2", 0x000001, 0x100000, CRC(d6314bf0) SHA1(0920cc580d7997fcb0170dd619af2f305d635577) ) /* Plane 2,3 */ /* TC538200 */ @@ -1437,8 +1401,6 @@ ROM_START( socbrawl ) /* MVS VERSION */ ROM_LOAD( "031-v1.v1", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) ) /* TC538200 */ ROM_LOAD( "031-v2.v2", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "031-c1.c1", 0x000000, 0x100000, CRC(bd0a4eb8) SHA1(b67988cb3e550d083e81c9bd436da55b242785ed) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "031-c2.c2", 0x000001, 0x100000, CRC(efde5382) SHA1(e42789c8d87ee3d4549d0a903e990c03338cbbd8) ) /* Plane 2,3 */ /* TC538200 */ @@ -1458,8 +1420,6 @@ ROM_START( socbrawlh ) /* AES VERSION */ ROM_LOAD( "031-v1.v1", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) ) /* TC538200 */ ROM_LOAD( "031-v2.v2", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "031-c1.c1", 0x000000, 0x100000, CRC(bd0a4eb8) SHA1(b67988cb3e550d083e81c9bd436da55b242785ed) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "031-c2.c2", 0x000001, 0x100000, CRC(efde5382) SHA1(e42789c8d87ee3d4549d0a903e990c03338cbbd8) ) /* Plane 2,3 */ /* TC538200 */ @@ -1488,8 +1448,6 @@ ROM_START( roboarmy ) ROM_LOAD( "032-v1.v1", 0x000000, 0x100000, CRC(63791533) SHA1(4479e9308cdc906b9e03b985303f4ebedd00512f) ) /* TC538200 */ ROM_LOAD( "032-v2.v2", 0x100000, 0x100000, CRC(eb95de70) SHA1(b34885201116d2b3bbdee15ec7b5961cf5c069e1) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "032-c1.c1", 0x000000, 0x100000, CRC(97984c6c) SHA1(deea59c0892f05dc7db98cb57b3eb83688dc57f0) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "032-c2.c2", 0x000001, 0x100000, CRC(65773122) SHA1(2c0162a8e971e5e57933e4ae16040bf824ffdefe) ) /* Plane 2,3 */ /* TC538200 */ @@ -1518,8 +1476,6 @@ ROM_START( fatfury1 ) /* MVS AND AES VERSION */ ROM_LOAD( "033-v1.v1", 0x000000, 0x100000, CRC(212fd20d) SHA1(120c040db8c01a6f140eea03725448bfa9ca98c2) ) /* TC538200 */ ROM_LOAD( "033-v2.v2", 0x100000, 0x100000, CRC(fa2ae47f) SHA1(80d0ba4cd30aab59b6f0db8fa341387bd7388afc) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "033-c1.c1", 0x000000, 0x100000, CRC(74317e54) SHA1(67b9c2814a12603b959612456f59de55f9bf6f57) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "033-c2.c2", 0x000001, 0x100000, CRC(5bb952f3) SHA1(ea964bbcc0408b6ae07cbb5043d003281b1aca15) ) /* Plane 2,3 */ /* TC538200 */ @@ -1547,8 +1503,6 @@ ROM_START( fbfrenzy ) /* MVS AND AES VERSION */ ROM_LOAD( "034-v1.v1", 0x000000, 0x100000, CRC(50c9d0dd) SHA1(2b3f2875b00e5f307d274128bd73c1521a7d901b) ) /* TC538200 */ ROM_LOAD( "034-v2.v2", 0x100000, 0x100000, CRC(5aa15686) SHA1(efe47954827a98d539ba719347c5f8aa60e6338b) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "034-c1.c1", 0x000000, 0x100000, CRC(91c56e78) SHA1(2944d49ebfc71239d345209ca7f25993c2cc5a77) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "034-c2.c2", 0x000001, 0x100000, CRC(9743ea2f) SHA1(cf4fccdf10d521d555e92bc24123142393c2b3bb) ) /* Plane 2,3 */ /* TC538200 */ @@ -1584,8 +1538,6 @@ ROM_START( bakatono ) /* MVS AND AES VERSION */ ROM_LOAD( "036-v1.v1", 0x000000, 0x100000, CRC(1c335dce) SHA1(493c273fa71bf81861a20af4c4eaae159e169f39) ) /* CXK388000 */ ROM_LOAD( "036-v2.v2", 0x100000, 0x100000, CRC(bbf79342) SHA1(45a4f40e415cdf35c3073851506648c8f7d53958) ) /* CXK388000 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "036-c1.c1", 0x000000, 0x100000, CRC(fe7f1010) SHA1(5b6f5053821f4da8dc3768371e2cd51bb29da963) ) /* Plane 0,1 */ /* CXK388000 */ ROM_LOAD16_BYTE( "036-c2.c2", 0x000001, 0x100000, CRC(bbf003f5) SHA1(054b2a3327e038836eece652055bb84c115cf8ed) ) /* Plane 2,3 */ /* CXK388000 */ @@ -1612,8 +1564,6 @@ ROM_START( crsword ) /* MVS AND AES VERSION */ ROM_REGION( 0x100000, "ymsnd", 0 ) ROM_LOAD( "037-v1.v1", 0x000000, 0x100000, CRC(61fedf65) SHA1(98f31d1e23bf7c1f7844e67f14707a704134042e) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "037-c1.c1", 0x000000, 0x100000, CRC(09df6892) SHA1(df2579dcf9c9dc88d461212cb74de106be2983c1) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "037-c2.c2", 0x000001, 0x100000, CRC(ac122a78) SHA1(7bfa4d29b7d7d9443f64d81caeafa74fe05c606e) ) /* Plane 2,3 */ /* TC538200 */ @@ -1645,8 +1595,6 @@ ROM_START( trally ) /* MVS AND AES VERSION */ ROM_LOAD( "038-v1.v1", 0x000000, 0x100000, CRC(5ccd9fd5) SHA1(c3c8c758a320c39e4ceb0b6d9f188ed6d122eec4) ) /* TC538200 */ ROM_LOAD( "038-v2.v2", 0x100000, 0x080000, CRC(ddd8d1e6) SHA1(65c819fa2392f264f5a1a0a4967c96775732500b) ) /* TC534200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "038-c1.c1", 0x000000, 0x100000, CRC(c58323d4) SHA1(a6bd277471a4b612d165f8b804f3cb662f499b70) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "038-c2.c2", 0x000001, 0x100000, CRC(bba9c29e) SHA1(b70bbfdfa8c4f9ea76406530e86b16e42498d284) ) /* Plane 2,3 */ /* TC538200 */ @@ -1675,8 +1623,6 @@ ROM_START( kotm2 ) /* MVS AND AES VERSION */ ROM_LOAD( "039-v2.v2", 0x000000, 0x200000, CRC(86d34b25) SHA1(89bdb614b0c63d678962da52e2f596750d20828c) ) /* TC5316200 */ ROM_LOAD( "039-v4.v4", 0x200000, 0x100000, CRC(8fa62a0b) SHA1(58ac2fdd73c542eb8178cfc4adfa0e5940183283) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "039-c1.c1", 0x000000, 0x100000, CRC(6d1c4aa9) SHA1(4fbc9d7cb37522ec298eefbe38c75a2d050fbb4a) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -1704,8 +1650,6 @@ ROM_START( kotm2p ) /* fairly late prototype release, only the code differs from ROM_LOAD( "proto_039-v5.v5", 0x200000, 0x080000, CRC(13be045b) SHA1(0e3713ae6b164ebae434c0f18c466365b26b9a77) ) ROM_LOAD( "proto_039-v6.v6", 0x280000, 0x080000, CRC(d1dd3fd6) SHA1(052b92168a76cf3a97c8cacebcc3ebab228726df) ) - NO_DELTAT_REGION - // same data as main set, but prototype board layout ROM_REGION( 0x600000, "sprites", 0 ) // note, ROM_LOAD32_BYTE ROM_LOAD32_BYTE( "proto_039-c1.c1", 0x000000, 0x100000, CRC(7192a787) SHA1(7bef6ce79c618103485480aee3c6f856968eb51f) ) /* Plane 0 */ @@ -1740,8 +1684,6 @@ ROM_START( sengoku2 ) ROM_LOAD( "040-v2.v2", 0x200000, 0x100000, CRC(c5cece01) SHA1(923a3377dac1919e8c3d9ab316902250caa4785f) ) /* TC538200 */ // AES has different label, data is the same: 040-v2.v4 - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "040-c1.c1", 0x000000, 0x100000, CRC(faa8ea99) SHA1(714575e57ea1990612f960ec42b38d2e157ad400) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -1772,8 +1714,6 @@ ROM_START( bstars2 ) ROM_LOAD( "041-v2.v2", 0x100000, 0x100000, CRC(1c954a9d) SHA1(159bc6efdd531615461f6e16f83f6d4c4e67c237) ) /* TC538200 */ ROM_LOAD( "041-v3.v3", 0x200000, 0x080000, CRC(afaa0180) SHA1(c4a047e21f093830498a163598ed7bd48a8cf9d1) ) /* TC534200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "041-c1.c1", 0x000000, 0x100000, CRC(b39a12e1) SHA1(bafe383bd7c5a6aac4cb92dabbc56e3672fe174d) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "041-c2.c2", 0x000001, 0x100000, CRC(766cfc2f) SHA1(79e1063925d54a57df943019a88bea56c9152df3) ) /* Plane 2,3 */ /* TC538200 */ @@ -1801,8 +1741,6 @@ ROM_START( quizdai2 ) /* MVS AND AES VERSION */ ROM_LOAD( "042-v1.v1", 0x000000, 0x100000, CRC(af7f8247) SHA1(99a47014017c20e4e22010c60612b6b7f6efc9e5) ) /* TC538200 */ ROM_LOAD( "042-v2.v2", 0x100000, 0x100000, CRC(c6474b59) SHA1(a6c5054032b698116247b2f09a8b94a1b588c4f1) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x300000, "sprites", 0 ) ROM_LOAD16_BYTE( "042-c1.c1", 0x000000, 0x100000, CRC(cb5809a1) SHA1(b53d06685246dd51b82b5c1d54d639d10e2ec26d) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "042-c2.c2", 0x000001, 0x100000, CRC(1436dfeb) SHA1(27d136fb1be793bd345a741f5e55a977275fff86) ) /* Plane 2,3 */ /* TC538200 */ @@ -1832,8 +1770,6 @@ ROM_START( 3countb ) /* MVS AND AES VERSION */ ROM_LOAD( "043-v1.v1", 0x000000, 0x200000, CRC(63688ce8) SHA1(5c6ac29a0cc0655a87cfe3ada8706838b86b86e4) ) /* TC5316200 */ ROM_LOAD( "043-v2.v2", 0x200000, 0x200000, CRC(c69a827b) SHA1(f5197ea87bb6573fa6aef3a1713c3679c58c1e74) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x0800000, "sprites", 0 ) ROM_LOAD16_BYTE( "043-c1.c1", 0x000000, 0x100000, CRC(bad2d67f) SHA1(04928e50ca75b7fbc52b64e816ec5701901f5893) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -1867,8 +1803,6 @@ ROM_START( aof ) /* MVS AND AES VERSION */ ROM_LOAD( "044-v2.v2", 0x000000, 0x200000, CRC(3ec632ea) SHA1(e3f413f580b57f70d2dae16dbdacb797884d3fce) ) /* TC5316200 */ ROM_LOAD( "044-v4.v4", 0x200000, 0x200000, CRC(4b0f8e23) SHA1(105da0cc5ba19869c7147fba8b177500758c232b) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "044-c1.c1", 0x000000, 0x100000, CRC(ddab98a7) SHA1(f20eb81ec431268798c142c482146c1545af1c24) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -1902,8 +1836,6 @@ ROM_START( samsho ) /* MVS VERSION */ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) ) /* TC5316200 */ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xa00000, "sprites", 0 ) ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) ) /* Plane 2,3 */ /* TC5316200 */ @@ -1926,8 +1858,6 @@ ROM_START( samshoh ) /* AES VERSION */ ROM_LOAD( "045-v1.v1", 0x000000, 0x200000, CRC(37f78a9b) SHA1(6279b497d12fa90b49ab5ac3aae20fb302ec8b81) ) /* TC5316200 */ ROM_LOAD( "045-v2.v2", 0x200000, 0x200000, CRC(568b20cf) SHA1(61af858685472a1fad608e230cccc2b108509ddb) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x900000, "sprites", 0 ) ROM_LOAD16_BYTE( "045-c1.c1", 0x000000, 0x200000, CRC(2e5873a4) SHA1(65c74c1e2d34390666bbb630df7d1f4c9570c3db) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "045-c2.c2", 0x000001, 0x200000, CRC(04febb10) SHA1(16a8cbf0fd9468e81bf9eab6dbe7a8e3623a843e) ) /* Plane 2,3 */ /* TC5316200 */ @@ -1961,8 +1891,6 @@ ROM_START( tophuntr ) /* MVS VERSION */ ROM_LOAD( "046-v3.v3", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) ) /* mask rom TC538200 */ ROM_LOAD( "046-v4.v4", 0x300000, 0x100000, CRC(4f54c187) SHA1(63a76949301b83bdd44aa1a4462f642ab9ca3c0b) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "046-c1.c1", 0x000000, 0x100000, CRC(fa720a4a) SHA1(364913b9fa40d46e4e39ae3cdae914cfd0de137d) ) /* Plane 0,1 */ /* mask rom TC538200 */ ROM_LOAD16_BYTE( "046-c2.c2", 0x000001, 0x100000, CRC(c900c205) SHA1(50274e79aa26f334eb806288688b30720bade883) ) /* Plane 2,3 */ /* mask rom TC538200 */ @@ -1989,8 +1917,6 @@ ROM_START( tophuntrh ) /* AES VERSION */ ROM_LOAD( "046-v3.v3", 0x200000, 0x100000, CRC(58113fb1) SHA1(40972982a63c7adecef840f9882f4165da723ab6) ) /* mask rom TC538200 */ ROM_LOAD( "046-v4.v4", 0x300000, 0x100000, CRC(4f54c187) SHA1(63a76949301b83bdd44aa1a4462f642ab9ca3c0b) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "046-c1.c1", 0x000000, 0x100000, CRC(fa720a4a) SHA1(364913b9fa40d46e4e39ae3cdae914cfd0de137d) ) /* Plane 0,1 */ /* mask rom TC538200 */ ROM_LOAD16_BYTE( "046-c2.c2", 0x000001, 0x100000, CRC(c900c205) SHA1(50274e79aa26f334eb806288688b30720bade883) ) /* Plane 2,3 */ /* mask rom TC538200 */ @@ -2024,8 +1950,6 @@ ROM_START( fatfury2 ) /* MVS AND AES VERSION */ ROM_LOAD( "047-v1.v1", 0x000000, 0x200000, CRC(d9d00784) SHA1(f6a91eada8c23aa4518c4b82eeebca69f79d845c) ) /* TC5316200 */ ROM_LOAD( "047-v2.v2", 0x200000, 0x200000, CRC(2c9a4b33) SHA1(d4a1c0951c02c8919b3ec32ed96933634ff9e54c) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "047-c1.c1", 0x000000, 0x100000, CRC(f72a939e) SHA1(67fc398ec28061adca0d3be82bbe7297015800da) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -2056,8 +1980,6 @@ ROM_START( janshin ) /* MVS ONLY RELEASE */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "048-v1.v1", 0x000000, 0x200000, CRC(f1947d2b) SHA1(955ff91ab24eb2a7ec51ff46c9f9f2ec060456b2) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "048-c1.c1", 0x000000, 0x200000, CRC(3fa890e9) SHA1(e73d2802bacfbc2b2b16fbbedddde17488e4bbde) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "048-c2.c1", 0x000001, 0x200000, CRC(59c48ad8) SHA1(2630817e735a6d197377558f4324c1442803fe15) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -2083,8 +2005,6 @@ ROM_START( androdun ) /* MVS AND AES VERSION */ ROM_REGION( 0x100000, "ymsnd", 0 ) ROM_LOAD( "049-v1.v1", 0x000000, 0x100000, CRC(ce43cb89) SHA1(47f82e077abb6efc6b1b0490412ae147d5d2acef) ) /* CXK388000 */ - NO_DELTAT_REGION - ROM_REGION( 0x200000, "sprites", 0 ) ROM_LOAD16_BYTE( "049-c1.c1", 0x000000, 0x100000, CRC(7ace6db3) SHA1(c41cc9de8c0788dcc49ca494fd3bb3124062d9dd) ) /* Plane 0,1 */ /* CXK388000 */ ROM_LOAD16_BYTE( "049-c2.c2", 0x000001, 0x100000, CRC(b17024f7) SHA1(fcf7efae48fcdccaf5255c145de414fb246128f0) ) /* Plane 2,3 */ /* CXK388000 */ @@ -2110,8 +2030,6 @@ ROM_START( ncommand ) ROM_LOAD( "050-v1.v1", 0x000000, 0x100000, CRC(23c3ab42) SHA1(b6c59bb180f1aa34c95f3ec923f3aafb689d57b0) ) /* CXK388000 */ ROM_LOAD( "050-v2.v2", 0x100000, 0x080000, CRC(80b8a984) SHA1(950cf0e78ceffa4037663f1086fbbc88588f49f2) ) /* CXK384000 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "050-c1.c1", 0x000000, 0x100000, CRC(87421a0a) SHA1(1d8faaf03778f7c5b062554d7333bbd3f0ca12ad) ) /* Plane 0,1 */ /* CXK388000 */ ROM_LOAD16_BYTE( "050-c2.c2", 0x000001, 0x100000, CRC(c4cf5548) SHA1(ef9eca5aeff9dda2209a050c2af00ed8979ae2bc) ) /* Plane 2,3 */ /* CXK388000 */ @@ -2140,8 +2058,6 @@ ROM_START( viewpoin ) ROM_LOAD( "051-v2.v1", 0x000000, 0x200000, CRC(019978b6) SHA1(7896a551115fc6ed38b5944e0c8dcb2b2c1c077d) ) /* CXK381600 */ ROM_LOAD( "051-v4.v2", 0x200000, 0x200000, CRC(5758f38c) SHA1(da10f4b7d22d9139bbf068bd940be82168a74ca1) ) /* CXK381600 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "051-c1.c1", 0x000000, 0x100000, CRC(d624c132) SHA1(49c7e9f020cba45d7083b45252bcc03397f8c286) ) /* Plane 0,1 */ /* CXK381600 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -2168,8 +2084,6 @@ ROM_START( ssideki ) ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "052-c1.c1", 0x000000, 0x100000, CRC(53e1c002) SHA1(2125b1be379ea7933893ffb1cd65d6c4bf8b03bd) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -2200,8 +2114,6 @@ ROM_START( wh1 ) /* MVS VERSION */ ROM_LOAD( "053-v2.v2", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) ) /* TC5316200 */ ROM_LOAD( "053-v4.v4", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "053-c1.c1", 0x000000, 0x100000, CRC(85eb5bce) SHA1(3d03d29296ca6e6b5106aac4aaeec9d4b4ed1313) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -2224,8 +2136,6 @@ ROM_START( wh1h ) /* AES VERSION */ ROM_LOAD( "053-v2.v2", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) ) /* TC5316200 */ ROM_LOAD( "053-v4.v4", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "053-c1.c1", 0x000000, 0x100000, CRC(85eb5bce) SHA1(3d03d29296ca6e6b5106aac4aaeec9d4b4ed1313) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -2249,8 +2159,6 @@ ROM_START( wh1ha ) ROM_LOAD( "053-v2.v2", 0x000000, 0x200000, CRC(a68df485) SHA1(007fa715423fba72c899cd3db3f4bec13281cf7a) ) /* TC5316200 */ ROM_LOAD( "053-v4.v4", 0x200000, 0x100000, CRC(7bea8f66) SHA1(428e8721bd87f7faa756adb1e12672219be46c1d) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "053-c1.c1", 0x000000, 0x100000, CRC(85eb5bce) SHA1(3d03d29296ca6e6b5106aac4aaeec9d4b4ed1313) ) /* Plane 0,1 */ /* TC5316200 */ ROM_CONTINUE( 0x400000, 0x100000 ) @@ -2288,8 +2196,6 @@ ROM_START( kof94 ) /* MVS AND AES VERSION */ ROM_LOAD( "055-v2.v2", 0x200000, 0x200000, CRC(25022b27) SHA1(2b040a831c3c92ac6e4719de38009a0d55b64f6b) ) /* mask rom TC5316200 */ ROM_LOAD( "055-v3.v3", 0x400000, 0x200000, CRC(83cf32c0) SHA1(34a31a37eb10945b5169e96321bcea06eec33a00) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "055-c1.c1", 0x000000, 0x200000, CRC(b96ef460) SHA1(e52f5303c17b50ce165c008be2837336369c110b) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "055-c2.c2", 0x000001, 0x200000, CRC(15e096a7) SHA1(237c2a3d059de00bfca66e0016ed325d7a32bfec) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -2322,8 +2228,6 @@ ROM_START( aof2 ) /* MVS VERSION */ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) ) /* TC5316200 */ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Different layout with 4xC (32mbit) also exists; chip labels are 056-C13, 056-C24, 056-C57 and 056-C68 */ ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) ) /* Plane 0,1 */ /* TC5316200 */ @@ -2352,8 +2256,6 @@ ROM_START( aof2a ) /* AES VERSION */ ROM_LOAD( "056-v2.v2", 0x200000, 0x200000, CRC(b710e2f2) SHA1(df4da585203eea7554d3ce718eb107e9cb6a0254) ) /* TC5316200 */ ROM_LOAD( "056-v3.v3", 0x400000, 0x100000, CRC(d168c301) SHA1(969273d1d11943e81560959359a2c4e69522af0e) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "056-c1.c1", 0x000000, 0x200000, CRC(17b9cbd2) SHA1(1eee81e02763d384bd1c10a6012473ca931e4093) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "056-c2.c2", 0x000001, 0x200000, CRC(5fd76b67) SHA1(11925a41a53b53c6df4a5ebd28f98300950f743b) ) /* Plane 2,3 */ /* TC5316200 */ @@ -2386,8 +2288,6 @@ ROM_START( wh2 ) /* MVS AND AES VERSION */ ROM_LOAD( "057-v1.v1", 0x000000, 0x200000, CRC(8877e301) SHA1(1bab988d74ea8fd12db201c257ec844622cf5f4e) ) /* TC5316200 */ ROM_LOAD( "057-v2.v2", 0x200000, 0x200000, CRC(c1317ff4) SHA1(4c28b2b5998abaeaa5143f2f3a9ba52c6041f4f3) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "057-c1.c1", 0x000000, 0x200000, CRC(21c6bb91) SHA1(a2c17d0c91dd59528d8fa7fe110af8b20b25ff99) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "057-c2.c2", 0x000001, 0x200000, CRC(a3999925) SHA1(0ee861a77850d378d03c1bf00b9692abd860c759) ) /* Plane 2,3 */ /* TC5316200 */ @@ -2420,8 +2320,6 @@ ROM_START( fatfursp ) /* MVS AND AES VERSION */ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) ) /* mask rom TC5316200 */ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -2448,8 +2346,6 @@ ROM_START( fatfurspa ) /* MVS AND AES VERSION */ ROM_LOAD( "058-v2.v2", 0x200000, 0x200000, CRC(ee080b10) SHA1(29814fc21bbe30d37745c8918fab00c83a309be4) ) /* mask rom TC5316200 */ ROM_LOAD( "058-v3.v3", 0x400000, 0x100000, CRC(f9eb3d4a) SHA1(d1747f9460b965f6daf4f881ed4ecd04c5253434) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "058-c1.c1", 0x000000, 0x200000, CRC(044ab13c) SHA1(569d283638a132bc163faac2a9055497017ee0d2) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "058-c2.c2", 0x000001, 0x200000, CRC(11e6bf96) SHA1(c093a4f93f13e07b276e28b30c2a14dda9135d8f) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -2481,8 +2377,6 @@ ROM_START( savagere ) ROM_LOAD( "059-v2.v2", 0x200000, 0x200000, CRC(eb6f1cdb) SHA1(7a311388315ea543babf872f62219fdc4d39d013) ) /* TC5316200 */ ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "059-c1.c1", 0x000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "059-c2.c2", 0x000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) ) /* Plane 2,3 */ /* TC5316200 */ @@ -2512,8 +2406,6 @@ ROM_START( fightfev ) /* MVS ONLY RELEASE */ ROM_LOAD( "060-v1.v1", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) ) /* VIC931600 */ ROM_LOAD( "060-v2.v2", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) ) /* VIC930800 */ - NO_DELTAT_REGION - ROM_REGION( 0x0800000, "sprites", 0 ) ROM_LOAD16_BYTE( "060-c1.c1", 0x0000000, 0x200000, CRC(8908fff9) SHA1(f8c16ab0248b60f3a62e0d4d65c456e2f8e4da49) ) /* Plane 0,1 */ /* VIC931600 */ ROM_LOAD16_BYTE( "060-c2.c2", 0x0000001, 0x200000, CRC(c6649492) SHA1(5d39b077387ed6897ac075ede4a2aa94bb64545e) ) /* Plane 2,3 */ /* VIC931600 */ @@ -2536,8 +2428,6 @@ ROM_START( fightfeva ) /* MVS ONLY RELEASE */ ROM_LOAD( "060-v1.v1", 0x000000, 0x200000, CRC(f417c215) SHA1(0f53b8dd056f43b5d880628e8b74c2b27881ffac) ) /* VIC931600 */ ROM_LOAD( "060-v2.v2", 0x200000, 0x100000, CRC(efcff7cf) SHA1(e8372303724284a750b706dc6bf7641e4c52bb95) ) /* VIC930800 */ - NO_DELTAT_REGION - ROM_REGION( 0x0800000, "sprites", 0 ) ROM_LOAD16_BYTE( "060-c1.c1", 0x0000000, 0x200000, CRC(8908fff9) SHA1(f8c16ab0248b60f3a62e0d4d65c456e2f8e4da49) ) /* Plane 0,1 */ /* VIC931600 */ ROM_LOAD16_BYTE( "060-c2.c2", 0x0000001, 0x200000, CRC(c6649492) SHA1(5d39b077387ed6897ac075ede4a2aa94bb64545e) ) /* Plane 2,3 */ /* VIC931600 */ @@ -2568,8 +2458,6 @@ ROM_START( ssideki2 ) /* MVS AND AES VERSION */ ROM_LOAD( "061-v1.v1", 0x000000, 0x200000, CRC(f081c8d3) SHA1(fc9da0ddc1ddd1f9ae1443a726815c25e9dc38ae) ) /* mask rom TC5316200 */ ROM_LOAD( "061-v2.v2", 0x200000, 0x200000, CRC(7cd63302) SHA1(c39984c0ae0a8e76f1fc036344bbb83635c18937) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) /* Different layout with 8xC (8 mbit) also exists; naming sheme 061-Cx */ ROM_LOAD16_BYTE( "061-c1-16.c1", 0x000000, 0x200000, CRC(a626474f) SHA1(d695f0dcb9480088b3a7c1488bd541b4c159528a) ) /* Plane 0,1 */ /* mask rom TC5316200 */ @@ -2597,8 +2485,6 @@ ROM_START( spinmast ) ROM_REGION( 0x100000, "ymsnd", 0 ) ROM_LOAD( "062-v1.v1", 0x000000, 0x100000, CRC(cc281aef) SHA1(68be154b3e25f837afb4a477600dbe0ee69bec44) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "062-c1.c1", 0x000000, 0x100000, CRC(a9375aa2) SHA1(69218d8f1361e9ea709da11e3f15fe46b1db7181) ) /* Plane 0,1 */ /* mask rom TC538200 */ ROM_LOAD16_BYTE( "062-c2.c2", 0x000001, 0x100000, CRC(0e73b758) SHA1(a247f736fbca0b609818dca4844ebb8442753bc1) ) /* Plane 2,3 */ /* mask rom TC538200 */ @@ -2634,8 +2520,6 @@ ROM_START( samsho2 ) /* MVS AND AES VERSION */ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) ) /* TC5316200 */ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) ) /* Plane 2,3 */ /* TC5316200 */ @@ -2666,8 +2550,6 @@ ROM_START( samsho2k ) /* KOREAN VERSION */ ROM_LOAD( "063-v3.v3", 0x400000, 0x200000, CRC(d07fa5ca) SHA1(1da7f081f8b8fc86a91feacf900f573218d82676) ) /* TC5316200 */ ROM_LOAD( "063-v4.v4", 0x600000, 0x100000, CRC(24aab4bb) SHA1(10ee4c5b3579865b93dcc1e4079963276aa700a6) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "063-c1.c1", 0x000000, 0x200000, CRC(86cd307c) SHA1(0d04336f7c436d74638d8c1cd8651faf436a6bec) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "063-c2.c2", 0x000001, 0x200000, CRC(cdfcc4ca) SHA1(179dc81432424d68cefedd20cc1c4b2a95deb891) ) /* Plane 2,3 */ /* TC5316200 */ @@ -2701,8 +2583,6 @@ ROM_START( wh2j ) /* MVS AND AES VERSION */ ROM_LOAD( "064-v1.v1", 0x000000, 0x200000, CRC(aa277109) SHA1(35c22b15bb0a4d0ab118cb22a2d450d03995a17c) ) /* TC5316200 */ ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Different layout with 4xC (32 mbit) also exists; chip labels are 064-C13, 064-C24, 064-C57 and 064-c68. */ ROM_LOAD16_BYTE( "064-c1.c1", 0x000000, 0x200000, CRC(2ec87cea) SHA1(e713ec7839a7665edee6ee3f82a6e530b3b4bd7c) ) /* Plane 0,1 */ /* TC5316200 */ @@ -2737,8 +2617,6 @@ ROM_START( wjammers ) ROM_LOAD( "065-v3.v3", 0x200000, 0x100000, CRC(39f73061) SHA1(ec57cd58e7f8569cff925d11e2320d588ce4fe49) ) /* mask rom TC538200 */ ROM_LOAD( "065-v4.v4", 0x300000, 0x100000, CRC(5dee7963) SHA1(f8e6de73d65dd80b29c711f00835a574a770cb4e) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "065-c1.c1", 0x000000, 0x100000, CRC(c7650204) SHA1(42918d700d59864f8ab15caf968a062a563c9b09) ) /* Plane 0,1 */ /* mask rom TC538200 */ ROM_LOAD16_BYTE( "065-c2.c2", 0x000001, 0x100000, CRC(d9f3e71d) SHA1(fad1f64061eac1bf85bf6d75d2eae974a8c94069) ) /* Plane 2,3 */ /* mask rom TC538200 */ @@ -2764,8 +2642,6 @@ ROM_START( karnovr ) ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "066-v1.v1", 0x000000, 0x200000, CRC(0b7ea37a) SHA1(34e7d4f6db053674a7e8c8b2e3e398777d5b02e6) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "066-c1.c1", 0x000000, 0x200000, CRC(09dfe061) SHA1(ca4c0f0ce80967b4be2f18b72435c468bbfbac4c) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "066-c2.c2", 0x000001, 0x200000, CRC(e0f6682a) SHA1(addb4fbc30da2b8ffc86819d92a874eb232f67dd) ) /* Plane 2,3 */ /* TC5316200 */ @@ -2793,8 +2669,6 @@ ROM_START( gururin ) /* MVS ONLY RELEASE */ ROM_REGION( 0x80000, "ymsnd", 0 ) ROM_LOAD( "067-v1.v1", 0x000000, 0x80000, CRC(cf23afd0) SHA1(10f87014ee10613f92b04f482f449721a6379db7) ) /* UM8302 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "067-c1.c1", 0x000000, 0x200000, CRC(35866126) SHA1(e4b24670ccc7901af5f66b11b15fae4e67f843ab) ) /* Plane 0,1 */ /* UMT301B */ ROM_LOAD16_BYTE( "067-c2.c2", 0x000001, 0x200000, CRC(9db64084) SHA1(68a43c12f63f5e98d68ad0902a6551c5d30f8543) ) /* Plane 2,3 */ /* UMT302B */ @@ -2819,8 +2693,6 @@ ROM_START( pspikes2 ) /* MVS ONLY RELEASE */ ROM_LOAD( "068-v2.v2", 0x100000, 0x100000, CRC(970851ab) SHA1(6c9b04e9cc6b92133f1154e5bdd9d38d8ef050a7) ) /* mask rom TC538200 */ ROM_LOAD( "068-v3.v3", 0x200000, 0x100000, CRC(81ff05aa) SHA1(d74302f38c59055bfc83b39dff798a585314fecd) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "068-c1.c1", 0x000000, 0x100000, CRC(7f250f76) SHA1(5109a41adcb7859e24dc43d88842d4cc18cd3305) ) /* Plane 0,1 */ /* mask rom TC538200 */ ROM_LOAD16_BYTE( "068-c2.c2", 0x000001, 0x100000, CRC(20912873) SHA1(2df8766b531e47ffc30457e41c63b83557b4f468) ) /* Plane 2,3 */ /* mask rom TC538200 */ @@ -2852,8 +2724,6 @@ ROM_START( fatfury3 ) /* MVS AND AES VERSION */ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) ) /* TC5332204 */ ROM_LOAD( "069-v3.v3", 0x800000, 0x200000, CRC(581c5304) SHA1(e9550ec547b4f605afed996b22d711f49b48fa92) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1400000, "sprites", 0 ) ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) ) /* Plane 2,3 */ /* TC5332205 */ @@ -2887,8 +2757,6 @@ ROM_START( zupapa ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE * ROM_REGION( 0x0200000, "ymsnd", 0 ) ROM_LOAD( "070-v1.v1", 0x000000, 0x200000, CRC(d3a7e1ff) SHA1(4a4a227e10f4af58168f6c26011ea1d414253f92) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "070-c1.c1", 0x0000000, 0x800000, CRC(f8ad02d8) SHA1(9be54532332a8e963ec35ff1e518947bb11ebade) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -2919,8 +2787,6 @@ ROM_START( b2b ) ROM_REGION( 0x100000, "ymsnd", 0 ) ROM_LOAD( "071.v1", 0x000000, 0x100000, CRC(50feffb0) SHA1(00127dae0130889995bfa7560bc4b0662f74fba5) ) - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "071.c1", 0x000000, 0x200000, CRC(23d84a7a) SHA1(9034658ad40e2c45558abc3db312aa2764102fc4) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "071.c2", 0x000001, 0x200000, CRC(ce7b6248) SHA1(ad1cd5adae5c151e183ff88b68afe10f7009f48e) ) /* Plane 2,3 */ @@ -2951,8 +2817,6 @@ ROM_START( panicbom ) /* MVS ONLY RELEASE */ ROM_LOAD( "073-v1.v1", 0x000000, 0x200000, CRC(7fc86d2f) SHA1(aa4234d22157060e0ba97a09c4e85c5276b74099) ) /* mask rom TC5316200 */ ROM_LOAD( "073-v2.v2", 0x200000, 0x100000, CRC(082adfc7) SHA1(19c168e9a6cadcbed79033c320bcf3a45f846daf) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x200000, "sprites", 0 ) ROM_LOAD16_BYTE( "073-c1.c1", 0x000000, 0x100000, CRC(8582e1b5) SHA1(e17d8f57b8ebee14b8e705374b34abe928937258) ) /* Plane 0,1 */ /* mask rom TC538200 */ ROM_LOAD16_BYTE( "073-c2.c2", 0x000001, 0x100000, CRC(e15a093b) SHA1(548a418c81af79cd7ab6ad165b8d6daee30abb49) ) /* Plane 2,3 */ /* mask rom TC538200 */ @@ -2979,8 +2843,6 @@ ROM_START( aodk ) /* MVS AND AES VERSION */ ROM_LOAD( "074-v1.v1", 0x000000, 0x200000, CRC(7675b8fa) SHA1(29f4facf89d551237b31bf779693cbbbc94e1ede) ) /* TC5316200 */ ROM_LOAD( "074-v2.v2", 0x200000, 0x200000, CRC(a9da86e9) SHA1(ff65af61e42b79a75060a352b24077d1fa28c83f) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "074-c1.c1", 0x000000, 0x200000, CRC(a0b39344) SHA1(adfff7b8836347abf030611563e6068a91164d0a) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "074-c2.c2", 0x000001, 0x200000, CRC(203f6074) SHA1(737f2d707d504df1da1ca5c5cf61cf489a33eb56) ) /* Plane 2,3 */ /* TC5316200 */ @@ -3013,8 +2875,6 @@ ROM_START( sonicwi2 ) ROM_LOAD( "075-v1.v1", 0x000000, 0x200000, CRC(7577e949) SHA1(3ba9f11094dd0cf519f33a16016cfae0d2c6629c) ) /* mask rom TC5316200 */ ROM_LOAD( "075-v2.v2", 0x200000, 0x100000, CRC(021760cd) SHA1(8a24e38f1d4982c4dcd82718995571ac94cbb390) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "075-c1.c1", 0x000000, 0x200000, CRC(3278e73e) SHA1(d9e6c8a3a5213690a1b8747d27806d8ac5aac405) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "075-c2.c2", 0x000001, 0x200000, CRC(fe6355d6) SHA1(ca72fff7a908b6d9325761079ff2a0e28f34cf89) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -3041,8 +2901,6 @@ ROM_START( zedblade ) /* MVS ONLY RELEASE */ ROM_LOAD( "076-v2.v2", 0x200000, 0x200000, CRC(b61686c3) SHA1(5a3405e833ce36abb7421190438b5cccc8537919) ) /* mask rom TC5316200 */ ROM_LOAD( "076-v3.v3", 0x400000, 0x100000, CRC(b90658fa) SHA1(b9a4b34565ce3688495c47e35c9b888ef686ae9f) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "076-c1.c1", 0x000000, 0x200000, CRC(4d9cb038) SHA1(c0b52b32e1fa719b99ae242d61d5dbea1437331c) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "076-c2.c2", 0x000001, 0x200000, CRC(09233884) SHA1(1895cd0d126a022bce1cc4c7a569032d89f35e3f) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -3077,8 +2935,6 @@ ROM_START( galaxyfg ) ROM_LOAD( "078-v2.v2", 0x200000, 0x200000, CRC(6a8e78c2) SHA1(f60b1f8a3a945f279a582745e82f37278ce5d83b) ) /* mask rom TC5316200 */ ROM_LOAD( "078-v3.v3", 0x400000, 0x100000, CRC(70bca656) SHA1(218b7079c90898e7faa382b386e77f81f415e7ac) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0xe00000, "sprites", 0 ) ROM_LOAD16_BYTE( "078-c1.c1", 0x000000, 0x200000, CRC(c890c7c0) SHA1(b96c18a41c34070a4f24ca77cb7516fae8b0fd0c) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "078-c2.c2", 0x000001, 0x200000, CRC(b6d25419) SHA1(e089df9c9a9645f706e501108d634f4d222622a2) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -3111,8 +2967,6 @@ ROM_START( strhoop ) /* MVS AND AES VERSION */ ROM_LOAD( "079-v2.v2", 0x200000, 0x100000, CRC(720774eb) SHA1(e4926f01322d0a15e700fb150b368152f2091146) ) /* TC538200 */ /* AES 079-v2 is only 4 mbit (TC534200), data is the same */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "079-c1.c1", 0x000000, 0x200000, CRC(0581c72a) SHA1(453f7a8474195a1120da5fa24337d79674563d9e) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "079-c2.c2", 0x000001, 0x200000, CRC(5b9b8fb6) SHA1(362aa0de0d2cf9aa03758363ffb1e15e046a3930) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -3143,8 +2997,6 @@ ROM_START( quizkof ) /* MVS AND AES VERSION */ ROM_LOAD( "080-v2.v2", 0x200000, 0x200000, CRC(4abde3ff) SHA1(0188bfcafa9a1aac302705736a2bcb26b9d684c2) ) /* mask rom TC5316200 */ ROM_LOAD( "080-v3.v3", 0x400000, 0x200000, CRC(f02844e2) SHA1(8c65ebe146f4ddb6c904f8125cb32767f74c24d5) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "080-c1.c1", 0x000000, 0x200000, CRC(ea1d764a) SHA1(78cc1735624c37f90607baa92e110a3c5cc54c6f) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "080-c2.c2", 0x000001, 0x200000, CRC(d331d4a4) SHA1(94228d13fb1e30973eb54058e697f17456ee16ea) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -3167,8 +3019,6 @@ ROM_START( quizkofk ) /* KOREAN VERSION */ ROM_LOAD( "vic-080-v2.v2", 0x200000, 0x200000, CRC(719fee5b) SHA1(c94f8ca066c9693cd7c9fd311db1ad9b2665fc69) ) ROM_LOAD( "vic-080-v3.v3", 0x400000, 0x200000, CRC(64b7efde) SHA1(11727f9a3c4da17fa7b00559c7081b66e7211c49) ) - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "vic-080-c1.c1", 0x000000, 0x200000, CRC(94d90170) SHA1(4ab63dadc6ee0d32b8784c327681376f5fef0df9) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "vic-080-c2.c2", 0x000001, 0x200000, CRC(297f25a1) SHA1(0dd845726c640d70804b5fd5854921771e8dbf19) ) /* Plane 2,3 */ @@ -3201,8 +3051,6 @@ ROM_START( ssideki3 ) ROM_LOAD( "081-v2.v2", 0x200000, 0x200000, CRC(acf29d96) SHA1(5426985c33aea2efc8ff774b59d34d8b03bd9a85) ) /* TC5316200 */ ROM_LOAD( "081-v3.v3", 0x400000, 0x200000, CRC(e524e415) SHA1(8733e1b63471381b16c2b7c64b909745d99c8925) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "081-c1.c1", 0x000000, 0x200000, CRC(1fb68ebe) SHA1(abd9dbe7b7cbe0b6cd1d87e53c6bdc6edeccf83c) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "081-c2.c2", 0x000001, 0x200000, CRC(b28d928f) SHA1(9f05148e3e1e94339752658c066f47f133db8fbf) ) /* Plane 2,3 */ /* TC5316200 */ @@ -3236,8 +3084,6 @@ ROM_START( doubledr ) ROM_LOAD( "082-v1.v1", 0x000000, 0x200000, CRC(cc1128e4) SHA1(bfcfff24bc7fbde0b02b1bc0dffebd5270a0eb04) ) /* TC5316200 */ ROM_LOAD( "082-v2.v2", 0x200000, 0x200000, CRC(c3ff5554) SHA1(c685887ad64998e5572607a916b023f8b9efac49) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xe00000, "sprites", 0 ) ROM_LOAD16_BYTE( "082-c1.c1", 0x000000, 0x200000, CRC(b478c725) SHA1(3a777c5906220f246a6dc06cb084e6ad650d67bb) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "082-c2.c2", 0x000001, 0x200000, CRC(2857da32) SHA1(9f13245965d23db86d46d7e73dfb6cc63e6f25a1) ) /* Plane 2,3 */ /* TC5316200 */ @@ -3272,8 +3118,6 @@ ROM_START( pbobblen ) /* MVS ONLY RELEASE */ ROM_LOAD( "d96-01.v3", 0x200000, 0x100000, CRC(0840cbc4) SHA1(1adbd7aef44fa80832f63dfb8efdf69fd7256a57) ) /* mask rom TC538200 */ ROM_LOAD( "d96-05.v4", 0x300000, 0x080000, CRC(0a548948) SHA1(e1e4afd17811cb60401c14fbcf0465035165f4fb) ) /* mask rom TC534200 */ - NO_DELTAT_REGION - ROM_REGION( 0x500000, "sprites", 0 ) ROM_LOAD16_BYTE( "068-c1.c1", 0x000000, 0x100000, CRC(7f250f76) SHA1(5109a41adcb7859e24dc43d88842d4cc18cd3305) ) /* unused */ /* mask rom TC538200 */ ROM_LOAD16_BYTE( "068-c2.c2", 0x000001, 0x100000, CRC(20912873) SHA1(2df8766b531e47ffc30457e41c63b83557b4f468) ) /* unused */ /* mask rom TC538200 */ @@ -3307,8 +3151,6 @@ ROM_START( kof95 ) /* MVS VERSION */ /* 600000-7fffff empty */ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1a00000, "sprites", 0 ) ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) ) /* Plane 0,1 */ /* TC5332202 */ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) ) /* Plane 2,3 */ /* TC5332202 */ @@ -3340,8 +3182,6 @@ ROM_START( kof95a ) /* MVS VERSION */ /* 600000-7fffff empty */ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1a00000, "sprites", 0 ) ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) ) /* Plane 0,1 */ /* TC5332202 */ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) ) /* Plane 2,3 */ /* TC5332202 */ @@ -3369,8 +3209,6 @@ ROM_START( kof95h ) /* MVS AND AES VERSION */ /* 600000-7fffff empty */ ROM_LOAD( "084-v3.v3", 0x800000, 0x100000, CRC(d683a338) SHA1(eb9866b4b286edc09963cb96c43ce0a8fb09adbb) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1a00000, "sprites", 0 ) ROM_LOAD16_BYTE( "084-c1.c1", 0x0000000, 0x400000, CRC(fe087e32) SHA1(e8e89faa616027e4fb9b8a865c1a67f409c93bdf) ) /* Plane 0,1 */ /* TC5332202 */ ROM_LOAD16_BYTE( "084-c2.c2", 0x0000001, 0x400000, CRC(07864e09) SHA1(0817fcfd75d0735fd8ff27561eaec371e4ff5829) ) /* Plane 2,3 */ /* TC5332202 */ @@ -3406,8 +3244,6 @@ ROM_START( tws96 ) /* MVS ONLY RELEASE */ ROM_LOAD( "086-v1.v1", 0x000000, 0x200000, CRC(97bf1986) SHA1(b80d3a37e18d0a52f1e0092dc300989c9647efd1) ) /* mask rom TC5316200 */ ROM_LOAD( "086-v2.v2", 0x200000, 0x200000, CRC(b7eb05df) SHA1(ff2b55c7021c248cfdcfc9cd3658f2896bcbca38) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xa00000, "sprites", 0 ) ROM_LOAD16_BYTE( "086-c1.c1", 0x000000, 0x400000, CRC(2611bc2a) SHA1(bb5a96acd4a90fcb41c49cc8e9f760c4a06d6b84) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "086-c2.c2", 0x000001, 0x400000, CRC(6b0d6827) SHA1(3cb2bbab381a26ec69f97c3d6116ce47254286b4) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -3442,8 +3278,6 @@ ROM_START( samsho3 ) /* MVS VERSION */ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) ) /* TC5332201 */ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1a00000, "sprites", 0 ) ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) ) /* Plane 0,1 */ /* TC5332202 */ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) ) /* Plane 2,3 */ /* TC5332202 */ @@ -3468,8 +3302,6 @@ ROM_START( samsho3h ) /* AES VERSION */ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) ) /* TC5332201 */ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1a00000, "sprites", 0 ) ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) ) /* Plane 0,1 */ /* TC5332202 */ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) ) /* Plane 2,3 */ /* TC5332202 */ @@ -3494,8 +3326,6 @@ ROM_START( fswords ) /* KOREAN VERSION */ ROM_LOAD( "087-v1.v1", 0x000000, 0x400000, CRC(84bdd9a0) SHA1(adceceb00569eca13fcc2e0f0d9f0d9b06a06851) ) /* TC5332201 */ ROM_LOAD( "087-v2.v2", 0x400000, 0x200000, CRC(ac0f261a) SHA1(5411bdff24cba7fdbc3397d45a70fb468d7a44b3) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1a00000, "sprites", 0 ) ROM_LOAD16_BYTE( "087-c1.c1", 0x0000000, 0x400000, CRC(07a233bc) SHA1(654cb56cfd6eeebe6745c0b8b730317fb8ccd3d9) ) /* Plane 0,1 */ /* TC5332202 */ ROM_LOAD16_BYTE( "087-c2.c2", 0x0000001, 0x400000, CRC(7a413592) SHA1(b8c7a2d0d7a8b14d6cab94d7a5f347e73c6ab7a4) ) /* Plane 2,3 */ /* TC5332202 */ @@ -3527,8 +3357,6 @@ ROM_START( stakwin ) ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "088-v1.v1", 0x000000, 0x200000, CRC(b7785023) SHA1(d11df1e623434669cd3f97f0feda747b24dac05d) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "088-c1.c1", 0x000000, 0x200000, CRC(6e733421) SHA1(b67c5d2654a62cc4e44bd54d28e62c7da5eea424) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "088-c2.c2", 0x000001, 0x200000, CRC(4d865347) SHA1(ad448cf96f3dce44c83412ed6878c495eb4a8a1e) ) /* Plane 2,3 */ /* TC5316200 */ @@ -3557,8 +3385,6 @@ ROM_START( pulstar ) ROM_LOAD( "089-v1.v1", 0x000000, 0x400000, CRC(6f726ecb) SHA1(e8e2a46af690ce6c7ee64a58ab5010d22df9548c) ) /* mask rom TC5332204 */ ROM_LOAD( "089-v2.v2", 0x400000, 0x400000, CRC(9d2db551) SHA1(83f7e5db7fb1502ceadcd334df90b11b1bba78e5) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "089-c1.c1", 0x0000000, 0x400000, CRC(f4e97332) SHA1(54693827a99836e7d61c45d495dd78bf3fcf1544) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "089-c2.c2", 0x0000001, 0x400000, CRC(836d14da) SHA1(99cc4f9b764503eff7849ff2977d90bb47c5564a) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -3594,8 +3420,6 @@ ROM_START( whp ) ROM_LOAD( "064-v2.v2", 0x200000, 0x200000, CRC(b6527edd) SHA1(2bcf5bfa6e117cf4a3728a5e5f5771313c93f22a) ) /* mask rom TC5316200 */ ROM_LOAD( "090-v3.v3", 0x400000, 0x200000, CRC(1908a7ce) SHA1(78f31bcfea33eb94752bbf5226c481baec1af5ac) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "090-c1.c1", 0x0000000, 0x400000, CRC(cd30ed9b) SHA1(839c20f7ff31251acc875ae402b5d267e55510c7) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "090-c2.c2", 0x0000001, 0x400000, CRC(10eed5ee) SHA1(12131b1c8c017ea77a98c044b392a5db6aad0143) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -3637,8 +3461,6 @@ ROM_START( kabukikl ) ROM_LOAD( "092-v3.v3", 0x400000, 0x200000, CRC(eccc98d3) SHA1(b0dfbdb1ea045cb961323ac6906ab342256c3dc7) ) /* mask rom TC5316200 */ ROM_LOAD( "092-v4.v4", 0x600000, 0x100000, CRC(a7c9c949) SHA1(574bc55b45e81ce357b14f5992426115de25cd35) ) /* mask rom TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "092-c1.c1", 0x000000, 0x400000, CRC(2a9fab01) SHA1(aa9f037df33ae0575b328734c76c0918ae1917e9) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "092-c2.c2", 0x000001, 0x400000, CRC(6d2bac02) SHA1(dfe96b62883333872be432e8af1ae617c9e62698) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -3664,8 +3486,6 @@ ROM_START( neobombe ) /* MVS ONLY RELEASE */ ROM_LOAD( "093-v1.v1", 0x000000, 0x400000, CRC(02abd4b0) SHA1(6bf33ebc9b01cd4a029f6a555694a9835e30ca1b) ) /* TC5332204 */ ROM_LOAD( "093-v2.v2", 0x400000, 0x200000, CRC(a92b8b3d) SHA1(b672c97b85d2f52eba3cb26025008ebc7a18312a) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x900000, "sprites", 0 ) ROM_LOAD16_BYTE( "093-c1.c1", 0x000000, 0x400000, CRC(d1f328f8) SHA1(ddf71280c2ce85225f15fe9e973f330609281878) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "093-c2.c2", 0x000001, 0x400000, CRC(82c49540) SHA1(5f37c1bc0d63c98a13967b44da3d2c85e6dbbe50) ) /* Plane 2,3 */ /* TC5332205 */ @@ -3694,8 +3514,6 @@ ROM_START( gowcaizr ) ROM_LOAD( "094-v2.v2", 0x200000, 0x200000, CRC(8edb776c) SHA1(a9eac5e24f83ccdcf303d63261747b1bad876a24) ) /* TC5316200 */ ROM_LOAD( "094-v3.v3", 0x400000, 0x100000, CRC(c63b9285) SHA1(6bbbacfe899e204e74657d6c3f3d05ce75e432f1) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "094-c1.c1", 0x000000, 0x200000, CRC(042f6af5) SHA1(1c50df6a1a53ffb3079ea0a19c746f5c9536a3ed) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "094-c2.c2", 0x000001, 0x200000, CRC(0fbcd046) SHA1(9a6dc920a877f27424477c3478907b23afbaa5ea) ) /* Plane 2,3 */ /* TC5316200 */ @@ -3727,8 +3545,6 @@ ROM_START( dragonsh ) ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 ) ROM_LOAD( "sram.v1", 0x000000, 0x200000, NO_DUMP ) // was a dead AXS2000PC 2MB sram card, battery dead, data lost. - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "no3.bin", 0x000000, 0x1000000, CRC(81821826) SHA1(b7c1a53e32633383675206a16c68f6f2ff984865) ) ROM_LOAD16_BYTE( "no4.bin", 0x000001, 0x1000000, CRC(3601d568) SHA1(800323e52f5d33b402f84d31850b42c688082d67) ) @@ -3756,8 +3572,6 @@ ROM_START( rbff1 ) /* MVS AND AES VERSION */ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) ) /* TC5332204 */ ROM_LOAD( "095-v3.v3", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) ) /* TC5332201 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) ) /* Plane 2,3 */ /* TC5332205 */ @@ -3788,8 +3602,6 @@ ROM_START( rbff1a ) /* MVS VERSION */ ROM_LOAD( "069-v2.v2", 0x400000, 0x400000, CRC(a698a487) SHA1(11b8bc53bc26a51f4a408e900e3769958625c4ed) ) /* TC5332204 */ ROM_LOAD( "095-v3.v3", 0x800000, 0x400000, CRC(189d1c6c) SHA1(f0b8cd1ee40ea3feeb2800f0723b451ec8240203) ) /* TC5332201 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "069-c1.c1", 0x0000000, 0x400000, CRC(e302f93c) SHA1(d8610b14900b2b8fe691b67ca9b1abb335dbff74) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "069-c2.c2", 0x0000001, 0x400000, CRC(1053a455) SHA1(69501bfac68739e63d798045b812badd251d57b8) ) /* Plane 2,3 */ /* TC5332205 */ @@ -3822,8 +3634,6 @@ ROM_START( aof3 ) ROM_LOAD( "096-v2.v2", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) ) /* TC5316200 */ ROM_LOAD( "096-v3.v3", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "096-c1.c1", 0x0000000, 0x400000, CRC(f17b8d89) SHA1(7180df23f7c7a964b0835fda76970b12f0aa9ea8) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "096-c2.c2", 0x0000001, 0x400000, CRC(3840c508) SHA1(55adc7cd26fec3e4dbd779df6701bc6eaba41b84) ) /* Plane 2,3 */ /* TC5332205 */ @@ -3849,8 +3659,6 @@ ROM_START( aof3k ) /* KOREAN VERSION */ ROM_LOAD( "096-v2.v2", 0x200000, 0x200000, CRC(a290eee7) SHA1(e66a98cd9740188bf999992b417f8feef941cede) ) /* TC5316200 */ ROM_LOAD( "096-v3.v3", 0x400000, 0x200000, CRC(199d12ea) SHA1(a883bf34e685487705a8dafdd0b8db15eb360e80) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "096-c1.c1", 0x0000000, 0x400000, CRC(f17b8d89) SHA1(7180df23f7c7a964b0835fda76970b12f0aa9ea8) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "096-c2.c2", 0x0000001, 0x400000, CRC(3840c508) SHA1(55adc7cd26fec3e4dbd779df6701bc6eaba41b84) ) /* Plane 2,3 */ /* TC5332205 */ @@ -3883,8 +3691,6 @@ ROM_START( sonicwi3 ) ROM_LOAD( "097-v1.v1", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) ) /* TC5332201 */ ROM_LOAD( "097-v2.v2", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "097-c1.c1", 0x000000, 0x400000, CRC(33d0d589) SHA1(fe4aa95555e478ceb2d28fd27d83ee06cd09520c) ) /* Plane 0,1 */ /* TC5332202 */ ROM_LOAD16_BYTE( "097-c2.c2", 0x000001, 0x400000, CRC(186f8b43) SHA1(f5cced93e21dc841b00ebeaa30786cb0e047bd9a) ) /* Plane 2,3 */ /* TC5332202 */ @@ -3943,8 +3749,6 @@ ROM_START( turfmast ) ROM_LOAD( "200-v3.v3", 0x400000, 0x200000, CRC(7abca053) SHA1(e229bc0ea82a371d6ee8fd9fe442b0fd141d0a71) ) /* mask rom TC5316200 */ ROM_LOAD( "200-v4.v4", 0x600000, 0x200000, CRC(6c7b4902) SHA1(d55e0f542d928a9a851133ff26763c8236cbbd4d) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "200-c1.c1", 0x000000, 0x400000, CRC(8e7bf41a) SHA1(148eb747f2f4d8e921eb0411c88a636022ceab80) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "200-c2.c2", 0x000001, 0x400000, CRC(5a65a8ce) SHA1(d6c7afe035411f3eacdf6868d36f91572dd593e0) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -3972,8 +3776,6 @@ ROM_START( mslug ) ROM_LOAD( "201-v1.v1", 0x000000, 0x400000, CRC(23d22ed1) SHA1(cd076928468ad6bcc5f19f88cb843ecb5e660681) ) /* TC5332204 */ ROM_LOAD( "201-v2.v2", 0x400000, 0x400000, CRC(472cf9db) SHA1(5f79ea9286d22ed208128f9c31ca75552ce08b57) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "201-c1.c1", 0x000000, 0x400000, CRC(72813676) SHA1(7b045d1a48980cb1a140699011cb1a3d4acdc4d1) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "201-c2.c2", 0x000001, 0x400000, CRC(96f62574) SHA1(cb7254b885989223bba597b8ff0972dfa5957816) ) /* Plane 2,3 */ /* TC5332205 */ @@ -3999,8 +3801,6 @@ ROM_START( puzzledp ) /* MVS ONLY RELEASE */ ROM_REGION( 0x080000, "ymsnd", 0 ) ROM_LOAD( "202-v1.v1", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) ) /* TC534200 */ - NO_DELTAT_REGION - ROM_REGION( 0x200000, "sprites", 0 ) ROM_LOAD16_BYTE( "202-c1.c1", 0x000000, 0x100000, CRC(cc0095ef) SHA1(3d86f455e6db10a2449b775dc386f1826ba3b62e) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "202-c2.c2", 0x000001, 0x100000, CRC(42371307) SHA1(df794f989e2883634bf7ffeea48d6bc3854529af) ) /* Plane 2,3 */ /* TC538200 */ @@ -4024,8 +3824,6 @@ ROM_START( mosyougi ) ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "203-v1.v1", 0x000000, 0x200000, CRC(baa2b9a5) SHA1(914782b6c81d9a76ce02251575592b0648434ba3) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "203-c1.c1", 0x000000, 0x200000, CRC(bba9e8c0) SHA1(db89b7275a59ae6104a8308025c7e142a67b947b) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "203-c2.c2", 0x000001, 0x200000, CRC(2574be03) SHA1(198cfd697c623022919ae4118928a7fe30cd6c46) ) /* Plane 2,3 */ /* TC5316200 */ @@ -4060,8 +3858,6 @@ ROM_START( marukodq ) ROM_LOAD( "206-v1.v1", 0x000000, 0x200000, CRC(5385eca8) SHA1(1ca171ce74a5885ae8841d0924de21dc0af2214e) ) /* mask rom TC5316200 */ ROM_LOAD( "206-v2.v2", 0x200000, 0x200000, CRC(f8c55404) SHA1(cecc41e9e08a7ff05b6f62e713fc86a816bf55a2) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xa00000, "sprites", 0 ) ROM_LOAD16_BYTE( "206-c1.c1", 0x000000, 0x400000, CRC(846e4e8e) SHA1(ba9b96340aca7fadaff0e6d484391ddb5c5e7bd4) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "206-c2.c2", 0x000001, 0x400000, CRC(1cba876d) SHA1(3254ceb5a2f76c172930d9889d5d81e093e87628) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -4087,8 +3883,6 @@ ROM_START( neomrdo ) /* MVS ONLY RELEASE */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "207-v1.v1", 0x000000, 0x200000, CRC(4143c052) SHA1(561b19bc8811b80f2f42ffc0b5df27132696470a) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "207-c1.c1", 0x000000, 0x200000, CRC(c7541b9d) SHA1(25ca1a2b14cc2648d8dbe432cbd1396017af822c) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "207-c2.c2", 0x000001, 0x200000, CRC(f57166d2) SHA1(bf3aa47d17156485c2177fb63cba093f050abb98) ) /* Plane 2,3 */ /* TC5316200 */ @@ -4112,8 +3906,6 @@ ROM_START( sdodgeb ) /* MVS ONLY RELEASE */ ROM_REGION( 0x400000, "ymsnd", 0 ) ROM_LOAD( "208-v1.v1", 0x000000, 0x400000, CRC(e7899a24) SHA1(3e75b449898fee73fbacf58d70e3a460b9e0c573) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x0c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "208-c1.c1", 0x0000000, 0x400000, CRC(93d8619b) SHA1(6588cb67e38722d5843fb29943d92e3905101aff) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "208-c2.c2", 0x0000001, 0x400000, CRC(1c737bb6) SHA1(8e341989981a713e61dfed8bde9a6459583ef46d) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4139,8 +3931,6 @@ ROM_START( goalx3 ) /* MVS ONLY RELEASE */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "209-v1.v1", 0x000000, 0x200000, CRC(ef214212) SHA1(3e05ccaa2d06decb18b379b96f900c0e6b39ce70) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xa00000, "sprites", 0 ) ROM_LOAD16_BYTE( "209-c1.c1", 0x000000, 0x400000, CRC(b49d980e) SHA1(722d10074f16fa7f14c71270f43fdab427b85e2b) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "209-c2.c2", 0x000001, 0x400000, CRC(5649b015) SHA1(9c9674f3841e6becd3b8e63bae9b9df45ac9f11e) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -4177,8 +3967,6 @@ ROM_START( overtop ) ROM_REGION( 0x400000, "ymsnd", 0 ) ROM_LOAD( "212-v1.v1", 0x000000, 0x400000, CRC(013d4ef9) SHA1(438a697c44525bdf78b54432c4f7217ab5667047) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1400000, "sprites", 0 ) ROM_LOAD16_BYTE( "212-c1.c1", 0x0000000, 0x400000, CRC(50f43087) SHA1(e5a8c914ef8e77c7a29bffdeb18f1877b5c2fc7d) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "212-c2.c2", 0x0000001, 0x400000, CRC(a5b39807) SHA1(e98e82cf99576cb48cc5e8dc655b7e9a428c2843) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -4207,8 +3995,6 @@ ROM_START( neodrift ) /* MVS ONLY RELEASE */ ROM_LOAD( "213-v1.v1", 0x000000, 0x200000, CRC(a421c076) SHA1(129f05c1a28a6493442f47a79c2d3577a1a43ef5) ) /* mask rom TC5316200 */ ROM_LOAD( "213-v2.v2", 0x200000, 0x200000, CRC(233c7dd9) SHA1(be7f980aa83831b6605aaaf4ec904180bb96c935) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "213-c1.c1", 0x000000, 0x400000, CRC(3edc8bd3) SHA1(71dcba9afd3b08ebfa13294644dcb365c2740780) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "213-c2.c2", 0x000001, 0x400000, CRC(46ae5f16) SHA1(a01310632734e776e889af6a531063cb1661c33a) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -4238,8 +4024,6 @@ ROM_START( kof96 ) /* MVS VERSION */ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) ) /* TC5332204 */ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4265,8 +4049,6 @@ ROM_START( kof96h ) /* AES VERSION */ ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) ) /* TC5332204 */ ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4299,8 +4081,6 @@ ROM_START( ssideki4 ) ROM_LOAD( "215-v1.v1", 0x000000, 0x400000, CRC(877d1409) SHA1(77c58ebffe677ea6369c964ec7975b11df512fa1) ) /* TC5332204 */ ROM_LOAD( "215-v2.v2", 0x400000, 0x200000, CRC(1bfa218b) SHA1(344836a578bde3c0ab59b58c8734f868e7403c26) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1400000, "sprites", 0 ) ROM_LOAD16_BYTE( "215-c1.c1", 0x0000000, 0x400000, CRC(8ff444f5) SHA1(e2dc52d09512cb378df96ddf45435f9bcbbe9947) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "215-c2.c2", 0x0000001, 0x400000, CRC(5b155037) SHA1(68900c0fdcd35c9f38e0effdf27e1dbd3c53daf8) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4334,8 +4114,6 @@ ROM_START( kizuna ) ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) ) /* TC5316200 */ ROM_LOAD( "216-v4.v4", 0x600000, 0x200000, CRC(31b99bd6) SHA1(5871751f8e9e6b98337472c22b5e1c7ede0a9311) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "059-c1.c1", 0x0000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "059-c2.c2", 0x0000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) ) /* Plane 2,3 */ /* TC5316200 */ @@ -4374,8 +4152,6 @@ ROM_START( kizuna4p ) /* same cartridge as kizuna - 4-player mode is enabled by ROM_LOAD( "059-v3.v3", 0x400000, 0x200000, CRC(7038c2f9) SHA1(c1d6f86b24feba03fe009b58199d2eeabe572f4e) ) /* TC5316200 */ ROM_LOAD( "216-v4.v4", 0x600000, 0x200000, CRC(31b99bd6) SHA1(5871751f8e9e6b98337472c22b5e1c7ede0a9311) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1c00000, "sprites", 0 ) ROM_LOAD16_BYTE( "059-c1.c1", 0x0000000, 0x200000, CRC(763ba611) SHA1(d3262e0332c894ee149c5963f882cc5e5562ee57) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "059-c2.c2", 0x0000001, 0x200000, CRC(e05e8ca6) SHA1(986a9b16ff92bc101ab567d2d01348e093abea9a) ) /* Plane 2,3 */ /* TC5316200 */ @@ -4411,8 +4187,6 @@ ROM_START( ninjamas ) ROM_LOAD( "217-v1.v1", 0x000000, 0x400000, CRC(1c34e013) SHA1(5368e413d2188c4fd063b6bb7d5f498ff83ea812) ) /* TC5332204 */ ROM_LOAD( "217-v2.v2", 0x400000, 0x200000, CRC(22f1c681) SHA1(09da03b2e63d180e55173ff25e8735c4162f027b) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "217-c1.c1", 0x0000000, 0x400000, CRC(5fe97bc4) SHA1(d76c955d83baa2b9fd24222a9b2852947b7b92f0) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "217-c2.c2", 0x0000001, 0x400000, CRC(886e0d66) SHA1(d407e1525e4ebe996e14f6e5c0396a10f736a50d) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4444,8 +4218,6 @@ ROM_START( ragnagrd ) ROM_LOAD( "218-v1.v1", 0x000000, 0x400000, CRC(61eee7f4) SHA1(5b11b1a0b1b74dfbc2998cbda9f8f7a5e9059957) ) /* mask rom TC5332204 */ ROM_LOAD( "218-v2.v2", 0x400000, 0x400000, CRC(6104e20b) SHA1(18e8aae3e51e141977d523a10e737ff68fe81910) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "218-c1.c1", 0x0000000, 0x400000, CRC(c31500a4) SHA1(cc82100038988872721028044ed2e9764bcc2fb0) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "218-c2.c2", 0x0000001, 0x400000, CRC(98aba1f9) SHA1(121276c569967e501d8e1b83747f1bdebff612ea) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -4475,8 +4247,6 @@ ROM_START( pgoal ) /* MVS ONLY RELEASE */ ROM_REGION( 0x400000, "ymsnd", 0 ) ROM_LOAD( "219-v1.v1", 0x000000, 0x400000, CRC(d0ae33d9) SHA1(cb21a91184d9d84ff25ca86c00dcadfc210272a8) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "219-c1.c1", 0x0000000, 0x400000, CRC(67fec4dc) SHA1(b99767972a2a4fce2b704df8d08e6b092665a696) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "219-c2.c2", 0x0000001, 0x400000, CRC(86ed01f2) SHA1(9d7d1493946e8fbbd572503d2362b0156c023b76) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4501,8 +4271,6 @@ ROM_START( ironclad ) /* Prototype - crcs should match the ones of the unrelease ROM_REGION( 0x400000, "ymsnd", 0 ) ROM_LOAD( "proto_220-v1.v1", 0x000000, 0x400000, CRC(8f30a215) SHA1(0ee866a468c4c3608d55df2b5cb9243c8016d77c) ) - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "proto_220-c1.c1", 0x000000, 0x400000, CRC(9aa2b7dc) SHA1(6b3dff292c86f949890b1f8201bc5278f38c2668) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "proto_220-c2.c2", 0x000001, 0x400000, CRC(8a2ad708) SHA1(9568ac4cc0552e7fd3e50d3cd8d9f0f4fe7df1d4) ) /* Plane 2,3 */ @@ -4522,8 +4290,6 @@ ROM_START( ironclado ) /* Prototype - bootleg/hack based on later release. */ ROM_REGION( 0x400000, "ymsnd", 0 ) ROM_LOAD( "proto_220-v1.v1", 0x000000, 0x400000, CRC(8f30a215) SHA1(0ee866a468c4c3608d55df2b5cb9243c8016d77c) ) - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "proto_220-c1.c1", 0x000000, 0x400000, CRC(9aa2b7dc) SHA1(6b3dff292c86f949890b1f8201bc5278f38c2668) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "proto_220-c2.c2", 0x000001, 0x400000, CRC(8a2ad708) SHA1(9568ac4cc0552e7fd3e50d3cd8d9f0f4fe7df1d4) ) /* Plane 2,3 */ @@ -4551,8 +4317,6 @@ ROM_START( magdrop2 ) ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "221-v1.v1", 0x000000, 0x200000, CRC(7e5e53e4) SHA1(72b063b2d4acaaf72a20d14ad5bfc90cb64d3fed) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "221-c1.c1", 0x000000, 0x400000, CRC(1f862a14) SHA1(1253e8b65d863d552d00dbdbfc5c168f5fc7edd1) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "221-c2.c2", 0x000001, 0x400000, CRC(14b90536) SHA1(e0d41f6b84d8261729f154b44ddd95c9b9c0714a) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4581,8 +4345,6 @@ ROM_START( samsho4 ) /* MVS AND AES VERSION */ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) ) /* TC5332204 */ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4608,8 +4370,6 @@ ROM_START( samsho4k ) /* KOREAN VERSION */ ROM_LOAD( "222-v2.v2", 0x400000, 0x400000, CRC(6c33bb5d) SHA1(fd5d4e08a962dd0d22c52c91bad5ec7f23cfb901) ) /* TC5332204 */ ROM_LOAD( "222-v3.v3", 0x800000, 0x200000, CRC(831ea8c0) SHA1(f2987b7d09bdc4311e972ce8a9ab7ca9802db4db) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "222-c1.c1", 0x0000000, 0x400000, CRC(68f2ed95) SHA1(c0a02df012cd25bcfe341770ea861a80294148cb) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "222-c2.c2", 0x0000001, 0x400000, CRC(a6e9aff0) SHA1(15addca49951ed53fa3c000c8d7cd327d012a620) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4643,8 +4403,6 @@ ROM_START( rbffspec ) ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) ) /* TC5332204 */ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4671,8 +4429,6 @@ ROM_START( rbffspeck ) /* KOREAN VERSION */ ROM_LOAD( "223-v2.v2", 0x400000, 0x400000, CRC(7a275acd) SHA1(8afe87ce822614262b72a90b371fc79155ac0d0c) ) /* TC5332204 */ ROM_LOAD( "223-v3.v3", 0x800000, 0x400000, CRC(5a797fd2) SHA1(94958e334f86d4d71059af8138f255b8d97a3b01) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "223-c1.c1", 0x0000000, 0x400000, CRC(ebab05e2) SHA1(0d60a8b631e3a3dcfbfdd7779dee081c9548ec39) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "223-c2.c2", 0x0000001, 0x400000, CRC(641868c3) SHA1(aa1aeb661842276b3326bfa4f1456f75bfecd52e) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4705,8 +4461,6 @@ ROM_START( twinspri ) ROM_LOAD( "224-v1.v1", 0x000000, 0x400000, CRC(ff57f088) SHA1(1641989b8aac899dbd68aa2332bcdf9b90b33564) ) /* mask rom TC5332204 */ ROM_LOAD( "224-v2.v2", 0x400000, 0x200000, CRC(7ad26599) SHA1(822030037b7664795bf3d64e1452d0aecc22497e) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0xa00000, "sprites", 0 ) ROM_LOAD16_BYTE( "224-c1.c1", 0x000000, 0x400000, CRC(f7da64ab) SHA1(587a10ed9235c9046a3523fe80feba07764fac9b) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "224-c2.c2", 0x000001, 0x400000, CRC(4c09bbfb) SHA1(e781aafba3bdefb7ed152826f4c3eb441735331c) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -4735,8 +4489,6 @@ ROM_START( wakuwak7 ) ROM_LOAD( "225-v1.v1", 0x000000, 0x400000, CRC(6195c6b4) SHA1(66c06b5904aedb256e3997bbec60f8ab50c6ff0c) ) /* TC5332204 */ ROM_LOAD( "225-v2.v2", 0x400000, 0x400000, CRC(6159c5fe) SHA1(9015e93416497f1ef877c717afed40f7ecfa42e4) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1800000, "sprites", 0 ) ROM_LOAD16_BYTE( "225-c1.c1", 0x0000000, 0x400000, CRC(ee4fea54) SHA1(314b513a52b2cc88cbf2409d1934c357269a8bb2) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "225-c2.c2", 0x0000001, 0x400000, CRC(0c549e2d) SHA1(d8c4626231c92e43d9bf183202553ee2b5c532e6) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4772,8 +4524,6 @@ ROM_START( stakwin2 ) ROM_LOAD( "227-v1.v1", 0x000000, 0x400000, CRC(b8f24181) SHA1(0a3af88d20ff65b82c58325d32c20b99fc07f7f3) ) /* mask rom TC5332204 */ ROM_LOAD( "227-v2.v2", 0x400000, 0x400000, CRC(ee39e260) SHA1(4ed6802564ce262ebe92c7276424056b70998758) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0xc00000, "sprites", 0 ) ROM_LOAD16_BYTE( "227-c1.c1", 0x0000000, 0x400000, CRC(7d6c2af4) SHA1(e54f0ab15c95d7a6f965b5d8ab28b5445100650b) ) /* Plane 0,1 */ /* mask rom TC5332205 */ ROM_LOAD16_BYTE( "227-c2.c2", 0x0000001, 0x400000, CRC(7e402d39) SHA1(9d3a44f98ddd0b606c8b3efa0c6b9d5a46c0bfeb) ) /* Plane 2,3 */ /* mask rom TC5332205 */ @@ -4797,8 +4547,6 @@ ROM_START( ghostlop ) /* Prototype */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "proto_228-v1.v1", 0x000000, 0x200000, CRC(c603fce6) SHA1(5a866471d35895b2ae13cbd5d1cb41bf2e72e1b8) ) - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "proto_228-c1.c1", 0x000000, 0x400000, CRC(bfc99efe) SHA1(5cd2545310142080b8286e787cf5b859f627b3db) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "proto_228-c2.c2", 0x000001, 0x400000, CRC(69788082) SHA1(c3ecb42ddcbd9e16d0018a0c3adb56a911d813ca) ) /* Plane 2,3 */ @@ -4834,8 +4582,6 @@ ROM_START( breakers ) ROM_LOAD( "230-v1.v1", 0x000000, 0x400000, CRC(7f9ed279) SHA1(acd0558960ec29bfc3e3ee99d00e503bebff8513) ) /* TC5332204 */ ROM_LOAD( "230-v2.v2", 0x400000, 0x400000, CRC(1d43e420) SHA1(26d09b8b18b4b802dbda4d6f06626c24d0b7c512) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "230-c1.c1", 0x000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "230-c2.c2", 0x000001, 0x400000, CRC(fdee05cd) SHA1(efc4ffd790953ac7c25d5f045c64a9b49d24b096) ) /* Plane 2,3 */ /* TC5332205 */ @@ -4860,8 +4606,6 @@ ROM_START( miexchng ) /* MVS ONLY RELEASE */ ROM_REGION( 0x400000, "ymsnd", 0 ) ROM_LOAD( "231-v1.v1", 0x000000, 0x400000, CRC(113fb898) SHA1(9168ba90c4aa969f69eb11ba3f4d76592d81e05a) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x600000, "sprites", 0 ) ROM_LOAD16_BYTE( "231-c1.c1", 0x000000, 0x200000, CRC(6c403ba3) SHA1(3830446fbd07d5a6564f9ac68a4bec5ff5b7d5c9) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "231-c2.c2", 0x000001, 0x200000, CRC(554bcd9b) SHA1(e658161618bd41a66f1040be409efdea28020cf6) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -4891,8 +4635,6 @@ ROM_START( kof97 ) /* MVS VERSION */ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) /* TC5332204 */ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) /* Plane 2,3 */ /* TC5364205 */ @@ -4916,8 +4658,6 @@ ROM_START( kof97h ) /* AES VERSION */ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) /* TC5332204 */ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) /* Plane 2,3 */ /* TC5364205 */ @@ -4941,8 +4681,6 @@ ROM_START( kof97k ) /* KOREAN VERSION */ ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) /* TC5332204 */ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) /* Plane 2,3 */ /* TC5364205 */ @@ -4972,8 +4710,6 @@ ROM_START( magdrop3 ) ROM_LOAD( "233-v1.v1", 0x000000, 0x400000, CRC(58839298) SHA1(18cae7bba997c52780761cbf119c4e4b34397a61) ) /* TC5332204 */ ROM_LOAD( "233-v2.v2", 0x400000, 0x080000, CRC(d5e30df4) SHA1(bbbc0ff5b975471bd682f85976ac4a93f6d44f2e) ) /* TC534200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "233-c1.c1", 0x000000, 0x400000, CRC(65e3f4c4) SHA1(a6deb75d802225327f8f1c2733a7f2b47e722e59) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "233-c2.c2", 0x000001, 0x400000, CRC(35dea6c9) SHA1(ea133bf947f950236f49d0ae0d1a9af3bc1a9a50) ) /* Plane 2,3 */ /* TC5332205 */ @@ -5006,8 +4742,6 @@ ROM_START( lastblad ) /* MVS VERSION */ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) ) /* TC5332204 */ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20a1f4833e5e29ba0073c1712d7a17ab7a2a035c) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5032,8 +4766,6 @@ ROM_START( lastbladh ) /* AES VERSION */ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) ) /* TC5332204 */ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20a1f4833e5e29ba0073c1712d7a17ab7a2a035c) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5058,8 +4790,6 @@ ROM_START( lastsold ) /* KOREAN VERSION */ ROM_LOAD( "234-v3.v3", 0x800000, 0x400000, CRC(a506e1e2) SHA1(b3e04ba1a5cb50b77c6fbe9fe353b9b64b6f3f74) ) /* TC5332204 */ ROM_LOAD( "234-v4.v4", 0xc00000, 0x400000, CRC(0e34157f) SHA1(20a1f4833e5e29ba0073c1712d7a17ab7a2a035c) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) ROM_LOAD16_BYTE( "234-c1.c1", 0x0000000, 0x800000, CRC(9f7e2bd3) SHA1(2828aca0c0f5802110f10453c1cf640f69736554) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "234-c2.c2", 0x0000001, 0x800000, CRC(80623d3c) SHA1(ad460615115ec8fb25206f012da59ecfc8059b64) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5086,8 +4816,6 @@ ROM_START( puzzldpr ) /* MVS ONLY RELEASE */ ROM_REGION( 0x080000, "ymsnd", 0 ) ROM_LOAD( "202-v1.v1", 0x000000, 0x080000, CRC(debeb8fb) SHA1(49a3d3578c087f1a0050168571ef8d1b08c5dc05) ) /* TC534200 */ - NO_DELTAT_REGION - ROM_REGION( 0x200000, "sprites", 0 ) ROM_LOAD16_BYTE( "202-c1.c1", 0x000000, 0x100000, CRC(cc0095ef) SHA1(3d86f455e6db10a2449b775dc386f1826ba3b62e) ) /* Plane 0,1 */ /* TC538200 */ ROM_LOAD16_BYTE( "202-c2.c2", 0x000001, 0x100000, CRC(42371307) SHA1(df794f989e2883634bf7ffeea48d6bc3854529af) ) /* Plane 2,3 */ /* TC538200 */ @@ -5142,8 +4870,6 @@ ROM_START( popbounc ) /* MVS ONLY RELEASE */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "237-v1.v1", 0x000000, 0x200000, CRC(edcb1beb) SHA1(62f086b9968b366b59276ee4ae3c32c4d76fc6ce) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "237-c1.c1", 0x000000, 0x200000, CRC(eda42d66) SHA1(2735538fcb9dc0c16e043a8728c8b642650189f4) ) /* Plane 0,1 */ /* TC5316200 */ ROM_LOAD16_BYTE( "237-c2.c2", 0x000001, 0x200000, CRC(5e633c65) SHA1(9a82107caf027317c173c1c1ef676f0fdeea79b2) ) /* Plane 2,3 */ /* TC5316200 */ @@ -5168,8 +4894,6 @@ ROM_START( shocktro ) /* MVS ONLY RELEASE */ ROM_LOAD( "238-v1.v1", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) ) /* TC5332204 */ ROM_LOAD( "238-v2.v2", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "238-c1.c1", 0x0000000, 0x400000, CRC(90c6a181) SHA1(a381bc8449718814ff12b3a4f7fc4d1bb7ea1631) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "238-c2.c2", 0x0000001, 0x400000, CRC(888720f0) SHA1(cd4d65df8d3ef0dbcca2b7f3f803f45c457f5beb) ) /* Plane 2,3 */ /* TC5332205 */ @@ -5194,8 +4918,6 @@ ROM_START( shocktroa ) /* MVS ONLY RELEASE */ ROM_LOAD( "238-v1.v1", 0x000000, 0x400000, CRC(260c0bef) SHA1(9c4f80ce4bb205afed11bb8b8926d20748eb5512) ) /* TC5332204 */ ROM_LOAD( "238-v2.v2", 0x400000, 0x200000, CRC(4ad7d59e) SHA1(bfdf2684f7f38af4e75ad0068ff9463dc2601598) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "238-c1.c1", 0x0000000, 0x400000, CRC(90c6a181) SHA1(a381bc8449718814ff12b3a4f7fc4d1bb7ea1631) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "238-c2.c2", 0x0000001, 0x400000, CRC(888720f0) SHA1(cd4d65df8d3ef0dbcca2b7f3f803f45c457f5beb) ) /* Plane 2,3 */ /* TC5332205 */ @@ -5228,8 +4950,6 @@ ROM_START( blazstar ) ROM_LOAD( "239-v1.v1", 0x000000, 0x400000, CRC(1b8d5bf7) SHA1(67fc1f7e36e92a89cd1d415eb31a2892f57b0d04) ) /* TC5332204 */ ROM_LOAD( "239-v2.v2", 0x400000, 0x400000, CRC(74cf0a70) SHA1(b00451a2a30de2517ae3eca35eb1fe985b950eb8) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "239-c1.c1", 0x0000000, 0x400000, CRC(84f6d584) SHA1(ff36db8504611b0d8d942d1e24823ff71e4aeb37) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "239-c2.c2", 0x0000001, 0x400000, CRC(05a0cb22) SHA1(4abe03e7f3a86f277131d413a3151c7b9c3646c8) ) /* Plane 2,3 */ /* TC5332205 */ @@ -5264,8 +4984,6 @@ ROM_START( rbff2 ) /* MVS VERSION */ ROM_LOAD( "240-v3.v3", 0x800000, 0x400000, CRC(8fe1367a) SHA1(093d7a4ac2b54ad7ffb2dc316fe29415f7a99535) ) /* TC5332204 */ ROM_LOAD( "240-v4.v4", 0xc00000, 0x200000, CRC(996704d8) SHA1(0bf7a1d0660199dedf3c25be757eeab75cc6147e) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5290,8 +5008,6 @@ ROM_START( rbff2h ) /* AES VERSION */ ROM_LOAD( "240-v3.v3", 0x800000, 0x400000, CRC(8fe1367a) SHA1(093d7a4ac2b54ad7ffb2dc316fe29415f7a99535) ) /* TC5332204 */ ROM_LOAD( "240-v4.v4", 0xc00000, 0x200000, CRC(996704d8) SHA1(0bf7a1d0660199dedf3c25be757eeab75cc6147e) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5316,8 +5032,6 @@ ROM_START( rbff2k ) /* KOREAN VERSION */ ROM_LOAD( "240-v3.v3", 0x800000, 0x400000, CRC(8fe1367a) SHA1(093d7a4ac2b54ad7ffb2dc316fe29415f7a99535) ) /* TC5332204 */ ROM_LOAD( "240-v4.v4", 0xc00000, 0x200000, CRC(996704d8) SHA1(0bf7a1d0660199dedf3c25be757eeab75cc6147e) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) ROM_LOAD16_BYTE( "240-c1.c1", 0x0000000, 0x800000, CRC(effac504) SHA1(e36a96e7369b02c7e839b5abf3c6799453ba1927) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "240-c2.c2", 0x0000001, 0x800000, CRC(ed182d44) SHA1(a9fc0a3a786bf067c129ec7220df65953dff804f) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5349,8 +5063,6 @@ ROM_START( mslug2 ) /* MVS AND AES VERSION */ ROM_LOAD( "241-v1.v1", 0x000000, 0x400000, CRC(99ec20e8) SHA1(80597707f1fe115eed1941bb0701fc00790ad504) ) /* TC5332204 */ ROM_LOAD( "241-v2.v2", 0x400000, 0x400000, CRC(ecb16799) SHA1(b4b4ddc680836ed55942c66d7dfe756314e02211) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) /* Different layout with 8xC (16 mbit) also exists; naming sheme 241-Cx */ ROM_LOAD16_BYTE( "241-c1.c1", 0x0000000, 0x800000, CRC(394b5e0d) SHA1(4549926f5054ee6aa7689cf920be0327e3908a50) ) /* Plane 0,1 */ /* TC5364205 */ @@ -5385,8 +5097,6 @@ ROM_START( kof98 ) /* encrypted code + protection */ /* MVS VERSION */ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) /* TC5332204 */ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5415,8 +5125,6 @@ ROM_START( kof98a ) /* encrypted code + protection */ /* MVS VERSION */ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) /* TC5332204 */ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5444,8 +5152,6 @@ ROM_START( kof98k ) /* encrypted code + protection, only z80 rom is different to ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) /* TC5332204 */ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5473,8 +5179,6 @@ ROM_START( kof98ka ) /* encrypted code + protection, only z80 rom is different t ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) /* TC5332204 */ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5501,8 +5205,6 @@ ROM_START( kof98h ) /* MVS AND AES VERSION */ ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) /* TC5332204 */ ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5537,8 +5239,6 @@ ROM_START( lastbld2 ) /* MVS AND AES VERSION */ /* later revision */ ROM_LOAD( "243-v3.v3", 0x800000, 0x400000, CRC(4ac750b2) SHA1(585a154acc67bd84ea5b944686b78ed082b768d9) ) /* TC5332204 */ ROM_LOAD( "243-v4.v4", 0xc00000, 0x400000, CRC(f5c64ba6) SHA1(2eac455def8c27090862cc042f65a3a8aad88283) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) ROM_LOAD16_BYTE( "243-c1.c1", 0x0000000, 0x800000, CRC(5839444d) SHA1(0616921c4cce20422563578bd0e806d359508599) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "243-c2.c2", 0x0000001, 0x800000, CRC(dd087428) SHA1(ca27fdb60425664956a18c021ea465f452fb1527) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5568,8 +5268,6 @@ ROM_START( neocup98 ) ROM_LOAD( "244-v1.v1", 0x000000, 0x400000, CRC(79def46d) SHA1(63414235de2e177654508f1c840040424f8993e6) ) /* TC5332204 */ ROM_LOAD( "244-v2.v2", 0x400000, 0x200000, CRC(b231902f) SHA1(9209772e947a2c7ac31b49dd613bf2eab0cb3358) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "244-c1.c1", 0x000000, 0x800000, CRC(c7a62b23) SHA1(4534ecc9ade69c543188c66229dcad89dbc48668) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "244-c2.c2", 0x000001, 0x800000, CRC(33aa0f35) SHA1(3443c7765c6aa177003d42bbfcac9f31d1e12575) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5594,8 +5292,6 @@ ROM_START( breakrev ) /* MVS ONLY RELEASE */ ROM_LOAD( "245-v1.v1", 0x000000, 0x400000, CRC(e255446c) SHA1(b3933340d49d4ba581f3bf1af7ad69d786205790) ) /* mask rom TC5332204 */ ROM_LOAD( "245-v2.v2", 0x400000, 0x400000, CRC(9068198a) SHA1(71819b0475a5e173a2f9a6e4ff19a94655141c3c) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1800000, "sprites", 0 ) /* The chip labels and sizes are correct */ ROM_LOAD16_BYTE( "245-c1.c1", 0x0000000, 0x400000, CRC(68d4ae76) SHA1(2e820067f6963669f104bebf19e865fe4127b4dd) ) /* Plane 0,1 */ /* mask rom TC5332205 */ @@ -5627,8 +5323,6 @@ ROM_START( shocktr2 ) ROM_LOAD( "246-v2.v2", 0x400000, 0x400000, CRC(ada41e83) SHA1(78e37ffaaa5679c8775a3a71f6df7a0d15082bdc) ) /* TC5332204 */ ROM_LOAD( "246-v3.v3", 0x800000, 0x200000, CRC(a05ba5db) SHA1(09d739cad323d918f4196f91b654627fcafd8f4d) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) ROM_LOAD16_BYTE( "246-c1.c1", 0x0000000, 0x800000, CRC(47ac9ec5) SHA1(2d9eea11ba87baa23b18a1a3f607dc137846e807) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "246-c2.c2", 0x0000001, 0x800000, CRC(7bcab64f) SHA1(08d0edddd14b53d606e9a7a46aa4fb4e7398e0d0) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5655,8 +5349,6 @@ ROM_START( flipshot ) /* MVS ONLY RELEASE */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "247-v1.v1", 0x000000, 0x200000, CRC(42ec743d) SHA1(f45b5167ebcbd59300f4e5b05448cd421654102a) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "247-c1.c1", 0x000000, 0x200000, CRC(c9eedcb2) SHA1(7627f2810322c146511525eb70b573a6a5ede926) ) /* Plane 0,1 */ /* mask rom TC5316200 */ ROM_LOAD16_BYTE( "247-c2.c2", 0x000001, 0x200000, CRC(7d6d6e87) SHA1(6475b58b9f91c20d1f465f3e892de0c68e12a92b) ) /* Plane 2,3 */ /* mask rom TC5316200 */ @@ -5680,8 +5372,6 @@ ROM_START( pbobbl2n ) /* MVS ONLY RELEASE */ ROM_LOAD( "248-v1.v1", 0x000000, 0x400000, CRC(57fde1fa) SHA1(af39bc141fc35b78dcacfd42b3abb29d7e5c2c89) ) /* TC5332204 */ ROM_LOAD( "248-v2.v2", 0x400000, 0x400000, CRC(4b966ef3) SHA1(083c0e9fd7b8e506087648cdd8ec4206103984cd) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0xa00000, "sprites", 0 ) ROM_LOAD16_BYTE( "248-c1.c1", 0x000000, 0x400000, CRC(d9115327) SHA1(a49aa836a902326cfe785428e1699fefcf8566d4) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "248-c2.c2", 0x000001, 0x400000, CRC(77f9fdac) SHA1(4642d71d32b6a05dc8bfa0f95c936a77c7cef05e) ) /* Plane 2,3 */ /* TC5332205 */ @@ -5709,8 +5399,6 @@ ROM_START( ctomaday ) /* MVS ONLY RELEASE */ ROM_LOAD( "249-v1.v1", 0x000000, 0x400000, CRC(de7c8f27) SHA1(3681a68a702ab5da8f509b8301d6cada75959332) ) /* TC5332204 */ ROM_LOAD( "249-v2.v2", 0x400000, 0x100000, CRC(c8e40119) SHA1(738f525c381ed68c0b8a89318a3e4d0089473c45) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "249-c1.c1", 0x000000, 0x400000, CRC(041fb8ee) SHA1(dacc84d713d76818d89a26358374afaa22fa82a2) ) /* Plane 0,1 */ /* TC5332205 */ ROM_LOAD16_BYTE( "249-c2.c2", 0x000001, 0x400000, CRC(74f3cdf4) SHA1(55ddabaf77f4d575f4deb24fe63e4bdc2c6f31e1) ) /* Plane 2,3 */ /* TC5332205 */ @@ -5738,8 +5426,6 @@ ROM_START( mslugx ) /* MVS AND AES VERSION */ ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) /* TC5332204 */ ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) /* Plane 2,3 */ /* TC5364205 */ @@ -5782,8 +5468,6 @@ ROM_START( kof99 ) /* Original Version - Encrypted Code & GFX */ /* MVS VERSION ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) /* TC5332204 */ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) ) /* Plane 0,1 */ /* TC5364205 */ @@ -5818,8 +5502,6 @@ ROM_START( kof99h ) /* Original Version - Encrypted Code & GFX */ /* AES VERSION ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) /* TC5332204 */ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) ) /* Plane 0,1 */ /* TC5364205 */ @@ -5857,8 +5539,6 @@ ROM_START( kof99e ) /* Original Version - Encrypted Code & GFX */ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) /* TC5332204 */ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) ) /* Plane 0,1 */ /* TC5364205 */ @@ -5892,8 +5572,6 @@ ROM_START( kof99k ) /* Original Version - Encrypted GFX */ /* KOREAN VERSION */ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) /* TC5332204 */ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "251-c1.c1", 0x0000000, 0x800000, CRC(0f9e93fe) SHA1(c7d77f0833c6f526f632e4f2dce59e302f6b9a15) ) /* Plane 0,1 */ /* TC5364205 */ @@ -5923,8 +5601,6 @@ ROM_START( kof99p ) /* Prototype Version - Possibly Hacked */ ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) /* TC5332204 */ ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* these are probably decrypted versions of the roms found in the final */ ROM_LOAD16_BYTE( "proto_251-c1.c1", 0x0000000, 0x800000, CRC(e5d8ffa4) SHA1(65f15f9f02424a7a9dd35916166594f283e8d424) ) /* Plane 0,1 */ @@ -5961,8 +5637,6 @@ ROM_START( ganryu ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE * ROM_REGION( 0x0400000, "ymsnd", 0 ) ROM_LOAD( "252-v1.v1", 0x000000, 0x400000, CRC(e5946733) SHA1(d5904a50465af03d6ff33399a98f3259721ca0b2) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "252-c1.c1", 0x0000000, 0x800000, CRC(50ee7882) SHA1(ace0f95407c246d0456341cf2ad8a7668b81df8a) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6001,8 +5675,6 @@ ROM_START( garou ) /* Original Version - Encrypted GFX */ /* MVS VERSION - later ROM_LOAD( "253-v3.v3", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) ) /* TC5332204 */ ROM_LOAD( "253-v4.v4", 0xc00000, 0x400000, CRC(a54be8a9) SHA1(d7123e79b43e8adfaa5ecadbfcbeb6be890ec311) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "253-c1.c1", 0x0000000, 0x800000, CRC(0603e046) SHA1(5ef4557ce90ba65d36129de97be1fdc049c4a3d0) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6038,8 +5710,6 @@ ROM_START( garouh ) /* Original Version - Encrypted GFX */ /* MVS AND AES VERSIO ROM_LOAD( "253-v3.v3", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) ) /* TC5332204 */ ROM_LOAD( "253-v4.v4", 0xc00000, 0x400000, CRC(a54be8a9) SHA1(d7123e79b43e8adfaa5ecadbfcbeb6be890ec311) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "253-c1.c1", 0x0000000, 0x800000, CRC(0603e046) SHA1(5ef4557ce90ba65d36129de97be1fdc049c4a3d0) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6067,8 +5737,6 @@ ROM_START( garoup ) /* Prototype Version, seems genuine */ ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) ) ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) ) /* Plane 2,3 */ @@ -6107,8 +5775,6 @@ ROM_START( s1945p ) /* Original Version, Encrypted GFX Roms */ /* MVS ONLY RELEA ROM_LOAD( "254-v3.v3", 0x800000, 0x400000, CRC(0b0d2d33) SHA1(f8e76af42a997f36a40f66b39de00f68afe6a89c) ) /* TC5332204 */ ROM_LOAD( "254-v4.v4", 0xc00000, 0x400000, CRC(6d13dc91) SHA1(8433513c0b5aea61939068a25ab90efbe3e44116) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "254-c1.c1", 0x0000000, 0x800000, CRC(ae6fc8ef) SHA1(544ccdaee8a4a45cdce9483e30852811d2d5f3cc) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "254-c2.c2", 0x0000001, 0x800000, CRC(436fa176) SHA1(d70141a91a360a1b1070753086f976608fec38af) ) /* Plane 2,3 */ /* TC5364205 */ @@ -6145,8 +5811,6 @@ ROM_START( preisle2 ) /* Original Version, Encrypted GFX */ /* MVS ONLY RELEASE ROM_LOAD( "255-v1.v1", 0x000000, 0x400000, CRC(5a14543d) SHA1(7146ac748f846c7e2d5b0bdcf953892e39b648fe) ) /* TC5332204 */ ROM_LOAD( "255-v2.v2", 0x400000, 0x200000, CRC(6610d91a) SHA1(b2c6786920dc1712e88c3cc26d2c6c3ac2615bf4) ) /* TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "255-c1.c1", 0x0000000, 0x800000, CRC(ea06000b) SHA1(1539b12e461fa48301190eb8171bbffff9d984b7) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6191,8 +5855,6 @@ ROM_START( mslug3 ) /* Original Version - Encrypted Code & GFX */ /* revision 20 ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) ) /* TC5332204 */ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6228,8 +5890,6 @@ ROM_START( mslug3h ) /* Original Version - Encrypted GFX */ /* revision 2000.3.1 ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) ) /* TC5332204 */ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6276,8 +5936,6 @@ ROM_START( kof2000 ) /* Original Version, Encrypted Code + Sound + GFX Roms */ / ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) ) /* TC5332204 */ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) ) /* Plane 2,3 */ /* TC5364205 */ @@ -6311,8 +5969,6 @@ ROM_START( kof2000n ) /* Original Version, Encrypted Sound + GFX Roms */ ROM_LOAD( "257-v3.v3", 0x800000, 0x400000, CRC(4605036a) SHA1(51b228a0600d38a6ec37aec4822879ec3b0ee106) ) /* TC5332204 */ ROM_LOAD( "257-v4.v4", 0xc00000, 0x400000, CRC(764bbd6b) SHA1(df23c09ca6cf7d0ae5e11ff16e30c159725106b3) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "257-c1.c1", 0x0000000, 0x800000, CRC(cef1cdfa) SHA1(6135080f3a6b4712b76cc217edcc58e72b55c2b9) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "257-c2.c2", 0x0000001, 0x800000, CRC(f7bf0003) SHA1(9f7b19a2100cf7d12867e742f440dd5277b4f895) ) /* Plane 2,3 */ /* TC5364205 */ @@ -6354,8 +6010,6 @@ ROM_START( bangbead ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE ROM_LOAD( "259-v1.v1", 0x000000, 0x400000, CRC(088eb8ab) SHA1(608306e35501dd7d382d9f96b28e7550aa896a03) ) /* TC533204 */ ROM_LOAD( "259-v2.v2", 0x400000, 0x100000, CRC(97528fe9) SHA1(8f5eddbb3a9a225492479d1a44801f3916c8e791) ) /* TC538200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "259-c1.c1", 0x0000000, 0x800000, CRC(1f537f74) SHA1(b8ef691e92191c20a5ed4f20a75cca3c7383bca6) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6385,8 +6039,6 @@ ROM_START( nitd ) /* Original Version - Encrypted GFX */ /* MVS ONLY RELEASE */ ROM_REGION( 0x0400000, "ymsnd", 0 ) ROM_LOAD( "260-v1.v1", 0x000000, 0x400000, CRC(24b0480c) SHA1(d769e621be52a5cd2e2568891b5f95a48268e1e0) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "260-c1.c1", 0x0000000, 0x800000, CRC(147b0c7f) SHA1(a647c3a2f6d146ff47521c1d39f58830601f5781) ) /* Plane 0,1 */ /* TC5364205 */ @@ -6423,8 +6075,6 @@ ROM_START( sengoku3 ) /* Original Version - Encrypted GFX */ ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) ) /* mask rom TC5332204 */ ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x2000000, "sprites", 0 ) ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) ) /* Plane 0,1 */ /* mask rom TC5364205 */ ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) ) /* Plane 2,3 */ /* mask rom TC5364205 */ @@ -6464,8 +6114,6 @@ ROM_START( kof2001 ) /* MVS VERSION */ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) /* mask rom TC5332204 */ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6500,8 +6148,6 @@ ROM_START( kof2001h ) /* AES VERSION */ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) /* mask rom TC5332204 */ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "262-c1-08-e0.c1", 0x0000000, 0x800000, CRC(99cc785a) SHA1(374f0674871d0196fa274aa6c5956d7b3848d5da) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6546,8 +6192,6 @@ ROM_START( mslug4 ) /* Original Version - Encrypted GFX */ /* MVS VERSION */ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) ) /* mask rom TC5364205 */ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6579,8 +6223,6 @@ ROM_START( mslug4h ) /* Original Version - Encrypted GFX */ /* AES VERSION */ ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) ) /* mask rom TC5364205 */ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6620,8 +6262,6 @@ ROM_START( rotd ) /* Encrypted Set */ /* MVS VERSION */ ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) ) /* mask rom TC5364205 */ ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "264-c1.c1", 0x0000000, 0x800000, CRC(4f148fee) SHA1(0821463765fad8fbd0dfbbabb7807337d0333719) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6663,8 +6303,6 @@ ROM_START( kof2002 ) /* Encrypted Set */ /* MVS AND AES VERSION */ ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) /* mask rom TC5364205 */ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6706,8 +6344,6 @@ ROM_START( matrim ) /* Encrypted Set */ /* MVS AND AES VERSION */ ROM_LOAD( "266-v1.v1", 0x000000, 0x800000, CRC(a4f83690) SHA1(200d683d8c30ebc6d0ed331aa5bbba39b4e07160) ) /* mask rom TC5364205 */ ROM_LOAD( "266-v2.v2", 0x800000, 0x800000, CRC(d0f69eda) SHA1(9d7e98976ad433ed8a35d7afffa38130444ba7db) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "266-c1.c1", 0x0000000, 0x800000, CRC(505f4e30) SHA1(f22b6f76fc0cad963555dc89d072967c8dc8b79a) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6746,8 +6382,6 @@ ROM_START( pnyaa ) /* Encrypted Set */ /* MVS ONLY RELEASE */ /* Encrypted */ ROM_LOAD( "267-v1.v1", 0x000000, 0x400000, CRC(e2e8e917) SHA1(7f412d55aebff3d38a225a88c632916295ab0584) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "267-c1.c1", 0x0000000, 0x800000, CRC(5eebee65) SHA1(7eb3eefdeb24e19831d0f51d4ea07a0292c25ab6) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6783,8 +6417,6 @@ ROM_START( mslug5 ) /* Encrypted Set */ /* MVS VERSION */ ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) ) /* mask rom TC5364205 */ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6819,8 +6451,6 @@ ROM_START( mslug5h ) /* Encrypted Set */ /* AES release of the game but is also ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) ) /* mask rom TC5364205 */ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6903,8 +6533,6 @@ ROM_START( samsho5 ) /* Encrypted Set */ /* MVS VERSION */ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) ) /* mask rom TC5364205 */ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6938,8 +6566,6 @@ ROM_START( samsho5h ) /* Encrypted Set, Alternate Set */ /* AES VERSION */ ROM_LOAD( "270-v1.v1", 0x000000, 0x800000, CRC(62e434eb) SHA1(1985f5e88f8e866f9683b6cea901aa28c04b80bf) ) /* mask rom TC5364205 */ ROM_LOAD( "270-v2.v2", 0x800000, 0x800000, CRC(180f3c9a) SHA1(6d7dc2605ead6e78704efa127e7e0dfe621e2c54) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "270-c1.c1", 0x0000000, 0x800000, CRC(14ffffac) SHA1(2ccebfdd0c7907679ae95bf6eca85b8d322441e2) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -6982,8 +6608,6 @@ ROM_START( kof2003 ) /* Encrypted Code + Sound + GFX Roms */ /* MVS VERSION */ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) /* mask rom TC5364205 */ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -7019,8 +6643,6 @@ ROM_START( kof2003h ) /* Encrypted Code + Sound + GFX Roms */ /* AES VERSION */ ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) /* mask rom TC5364205 */ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "271-c1k.c1", 0x0000000, 0x800000, CRC(efb9dd24) SHA1(1c6fe10fdbfc3306c3b7321c731f28ffdbfb15b8) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -7063,8 +6685,6 @@ ROM_START( samsh5sp ) /* Encrypted Set */ /* MVS VERSION */ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) ) ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "272-c1.c1", 0x0000000, 0x800000, CRC(4f97661a) SHA1(87f1721bae5ef16bc23c06b05e64686c396413df) ) /* Plane 0,1 */ @@ -7111,8 +6731,6 @@ ROM_START( samsh5sph ) /* Encrypted Set */ /* AES VERSION, 2nd bugfix release */ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) ) ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "272-c1.c1", 0x0000000, 0x800000, CRC(4f97661a) SHA1(87f1721bae5ef16bc23c06b05e64686c396413df) ) /* Plane 0,1 */ @@ -7147,8 +6765,6 @@ ROM_START( samsh5spho ) /* Encrypted Set */ /* AES VERSION, 1st release */ ROM_LOAD( "272-v1.v1", 0x000000, 0x800000, CRC(76a94127) SHA1(c3affd7ff1eb02345cfb755962ec173a8ec34acd) ) ROM_LOAD( "272-v2.v2", 0x800000, 0x800000, CRC(4ba507f1) SHA1(728d139da3fe8a391fd8be4d24bb7fdd4bf9548a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "272-c1.c1", 0x0000000, 0x800000, CRC(4f97661a) SHA1(87f1721bae5ef16bc23c06b05e64686c396413df) ) /* Plane 0,1 */ @@ -7195,8 +6811,6 @@ ROM_START( jockeygp ) /* MVS ONLY RELEASE */ ROM_REGION( 0x0200000, "ymsnd", 0 ) ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -7223,8 +6837,6 @@ ROM_START( jockeygpa ) /* MVS ONLY RELEASE */ ROM_REGION( 0x0200000, "ymsnd", 0 ) ROM_LOAD( "008-v1.v1", 0x000000, 0x200000, CRC(443eadba) SHA1(3def3c22f0e276bc4c2fc7ff70ce473c08b0d2df) ) /* mask rom TC5316200 */ - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "008-c1.c1", 0x0000000, 0x800000, CRC(a9acbf18) SHA1(d55122c70cbe78c2679598dc07863e1d1d1a31df) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -7249,8 +6861,6 @@ ROM_START( vliner ) /* MVS ONLY RELEASE */ ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 ) - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "c-1.c1", 0x000000, 0x80000, CRC(5118f7c0) SHA1(b6fb6e9cbb660580d98e00780ebf248c0995145a) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "c-2.c2", 0x000001, 0x80000, CRC(efe9b33e) SHA1(910c651aadce9bf59e51c338ceef62287756d2e8) ) /* Plane 2,3 */ @@ -7268,8 +6878,6 @@ ROM_START( vlinero ) /* MVS ONLY RELEASE */ ROM_REGION( 0x200000, "ymsnd", ROMREGION_ERASE00 ) - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "c-1.c1", 0x000000, 0x80000, CRC(5118f7c0) SHA1(b6fb6e9cbb660580d98e00780ebf248c0995145a) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "c-2.c2", 0x000001, 0x80000, CRC(efe9b33e) SHA1(910c651aadce9bf59e51c338ceef62287756d2e8) ) /* Plane 2,3 */ @@ -7309,8 +6917,6 @@ ROM_START( sbp ) /* Unlicensed, no official game ID # */ /* MVS ONLY VERSION */ ROM_LOAD( "001-003-12a.u12", 0x000000, 0x400000, CRC(c96723b9) SHA1(52eec88550781d45f84efbf9b905d7e7912e96fa) ) /* M27C322 */ ROM_LOAD( "001-003-13a.u13", 0x400000, 0x400000, CRC(08c339a5) SHA1(badc9510ae243ef2a7877977eb36efa81b1489fe) ) /* M27C322 */ - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "001-003-03b.u3", 0x000000, 0x200000, CRC(44791317) SHA1(9e773eb9aae5ee767213bd17348ff8a312e9cb16) ) /* Plane 0,1 */ /* M27C160 */ ROM_LOAD16_BYTE( "001-003-04b.u4", 0x000001, 0x200000, CRC(a3a1c0df) SHA1(3b1e5be673f7cbb04199a805b0e0de93dad8cb8c) ) /* Plane 2,3 */ /* M27C160 */ @@ -7356,8 +6962,6 @@ ROM_START( ms5pcb ) /* Encrypted Set, JAMMA PCB */ /* Encrypted */ ROM_LOAD( "268-v1.v1", 0x000000, 0x1000000, CRC(8458afe5) SHA1(62b4c6e7db763e9ff2697bbcdb43dc5a56b48c68) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD32_WORD( "268-c1.c1", 0x0000000, 0x1000000, BAD_DUMP CRC(802042e8) SHA1(ff028b65f60f0b51b255a380cc47ec19fdc0c0cf) ) /* Plane 0,1 */ @@ -7474,8 +7078,6 @@ ROM_START( kf2k3pcb ) /* Encrypted Set, JAMMA PCB */ /* Encrypted */ ROM_LOAD( "271-v1.v1", 0x000000, 0x1000000, CRC(1d96154b) SHA1(1d4e262b0d30cee79a4edc83bb9706023c736668) ) - NO_DELTAT_REGION - ROM_REGION( 0x6000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD32_WORD( "271-c1.c1", 0x0000000, 0x1000000, CRC(f5ebb327) SHA1(e4f799a54b09adcca13b1b0cf95971a1f4291b61) ) /* Plane 0,1 */ @@ -7523,8 +7125,6 @@ ROM_START( zintrckb ) ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "zin-v1.bin", 0x000000, 0x200000, CRC(c09f74f1) SHA1(d0b56a780a6eba85ff092240b1f1cc6718f17c21) ) - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "zin-c1.bin", 0x000000, 0x200000, CRC(76aee189) SHA1(ad6929804c5b9a59aa609e6baebc6aa37e858a47) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "zin-c2.bin", 0x000001, 0x200000, CRC(844ed4b3) SHA1(fb7cd057bdc6cbe8b78097dd124118bae7402256) ) /* Plane 2,3 */ @@ -7546,8 +7146,6 @@ ROM_START( kof97pls ) ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) /* TC5332204 */ ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) /* Plane 0,1 */ /* TC5364205 */ ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) /* Plane 2,3 */ /* TC5364205 */ @@ -7574,8 +7172,6 @@ ROM_START( kof97oro ) ROM_LOAD( "orochi-v2.bin", 0x400000, 0x0400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) ROM_LOAD( "orochi-v3.bin", 0x800000, 0x0400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) - NO_DELTAT_REGION - ROM_REGION( 0x2800000, "sprites", 0 ) // The C1 and C2 here are reconstructed but very likely to be correct. ROM_LOAD16_BYTE( "orochi-c1.bin", 0x0000000, 0x1000000, BAD_DUMP CRC(f13e841c) SHA1(e24b3fb5f7e1c1f4752cad382c264f5f93e737a0) ) /* Plane 0,1 */ @@ -7626,8 +7222,6 @@ ROM_START( lans2004 ) ROM_LOAD( "lnsq-v2.bin", 0x400000, 0x400000, CRC(3d953975) SHA1(6a4ab02ab3d4416a65343cf16815007cb273f19b) ) ROM_LOAD( "lnsq-v3.bin", 0x800000, 0x200000, CRC(437d1d8e) SHA1(95e015c21707b53ed7223eaa19f6cdcfb4d94f0c) ) - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) ROM_LOAD16_BYTE( "lnsq-c1.bin", 0x0000000, 0x800000, CRC(b83de59f) SHA1(8cc060f9a57ab7d4238543b0bce5f5cd1d271d4f) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "lnsq-c2.bin", 0x0000001, 0x800000, CRC(e08969fd) SHA1(c192639d023cdad64a8f53dbcda02aa8cfb4168e) ) /* Plane 2,3 */ @@ -7654,8 +7248,6 @@ ROM_START( garoubl ) /* bootleg of garoup */ ROM_LOAD( "garou-v3.bin", 0x800000, 0x400000, CRC(10a0f814) SHA1(e86def80d6fb2a38ebc9f3338d22f28c15ce85da) ) ROM_LOAD( "garou-v4.bin", 0xc00000, 0x400000, CRC(8918fdd3) SHA1(60ea2104a0f993341124728d8fde0e8e937c55ef) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "garou-c1.bin", 0x0000000, 0x1000000, CRC(e2ac83fa) SHA1(186f88a85d80efbb0371bd42cca152b6b59817fb) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "garou-c2.bin", 0x0000001, 0x1000000, CRC(7c344b24) SHA1(f8af62a917e0ce2bf8ae4f17736fdd84d55d0788) ) /* Plane 2,3 */ @@ -7680,8 +7272,6 @@ ROM_START( mslug3b6 ) /* This "Metal Slug 6" is a hack/bootleg of Metal Slug 3, ROM_LOAD( "256-v3.v3", 0x800000, 0x400000, CRC(0eaec17c) SHA1(c3ed613cc6993edd6fc0d62a90bcd85de8e21915) ) /* TC5332204 */ ROM_LOAD( "256-v4.v4", 0xc00000, 0x400000, CRC(9b4b22d4) SHA1(9764fbf8453e52f80aa97a46fb9cf5937ef15a31) ) /* TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "256-c1.c1", 0x0000000, 0x800000, CRC(5a79c34e) SHA1(b8aa51fa50935cae62ab3d125b723ab888691e60) ) /* Plane 0,1 */ /* TC5364205 */ @@ -7709,8 +7299,6 @@ ROM_START( nitdbl ) ROM_LOAD( "nitd-v1.bin", 0x000000, 0x200000, CRC(79008868) SHA1(90bd6aaefd37341297ab1f4ae7246e52facd87d0) ) ROM_LOAD( "nitd-v2.bin", 0x200000, 0x200000, CRC(728558f9) SHA1(309aa7c933c199b2e540a601b363e7af8744fe00) ) - NO_DELTAT_REGION - ROM_REGION( 0x800000, "sprites", 0 ) ROM_LOAD16_BYTE( "nitd-c1.bin", 0x000000, 0x200000, CRC(b4353190) SHA1(90d5352e243a05f5c2be4fa7475667bb56e78016) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "nitd-c2.bin", 0x000001, 0x200000, CRC(6e27511f) SHA1(1fc5cf7786ad0f0bc7b1623acabe605ad04af3c1) ) /* Plane 2,3 */ @@ -7736,8 +7324,6 @@ ROM_START( cthd2003 ) /* Protected hack/bootleg of kof2001 Phenixsoft */ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) /* mask rom TC5332204 */ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) ) /* Plane 0,1 */ @@ -7771,8 +7357,6 @@ ROM_START( ct2k3sp ) /* Protected hack/bootleg of kof2001 Phenixsoft */ ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) /* mask rom TC5332204 */ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) ) /* Plane 0,1 */ @@ -7807,8 +7391,6 @@ ROM_START( ct2k3sa ) /* Protected hack/bootleg of kof2001 Phenixsoft, alternate ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) /* mask rom TC5332204 */ ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) ) /* mask rom TC5332204 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) ) /* Plane 0,1 */ @@ -7838,8 +7420,6 @@ ROM_START( ms4plus ) ROM_LOAD( "263-v1.v1", 0x000000, 0x800000, CRC(01e9b9cd) SHA1(0b045c2999449f7dab5ae8a42e957d5b6650431e) ) /* mask rom TC5364205 */ ROM_LOAD( "263-v2.v2", 0x800000, 0x800000, CRC(4ab2bf81) SHA1(77ccfa48f7e3daddef5fe5229a0093eb2f803742) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x3000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "263-c1.c1", 0x0000000, 0x800000, CRC(84865f8a) SHA1(34467ada896eb7c7ca58658bf2a932936d8b632c) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -7867,8 +7447,6 @@ ROM_START( kof2002b ) ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) /* mask rom TC5364205 */ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "2k2-c1.bin", 0x0000000, 0x800000, CRC(f25d3d66) SHA1(eb1da3e171c126d91e851ce141840709a2f62f8a) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "2k2-c2.bin", 0x0000001, 0x800000, CRC(e3e66f1d) SHA1(af93e9e134816353d6187a53959c6e418b83ad8d) ) /* Plane 2,3 */ @@ -7895,8 +7473,6 @@ ROM_START( kf2k2pls ) ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) /* mask rom TC5364205 */ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -7924,8 +7500,6 @@ ROM_START( kf2k2pla ) ROM_LOAD( "265-v1.v1", 0x000000, 0x800000, CRC(15e8f3f5) SHA1(7c9e6426b9fa6db0158baa17a6485ffce057d889) ) /* mask rom TC5364205 */ ROM_LOAD( "265-v2.v2", 0x800000, 0x800000, CRC(da41d6f9) SHA1(a43021f1e58947dcbe3c8ca5283b20b649f0409d) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "265-c1.c1", 0x0000000, 0x800000, CRC(2b65a656) SHA1(9c46d8cf5b1ef322db442ac6a9b9406ab49206c5) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -8009,8 +7583,6 @@ ROM_START( kof10th ) ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) ) ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) ) /* Plane 2,3 */ @@ -8045,8 +7617,6 @@ ROM_START( kf10thep ) /* this is a hack of kof2002 much like the various korean ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) ) ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) ) /* Plane 2,3 */ @@ -8112,8 +7682,6 @@ ROM_START( kof2k4se ) ROM_LOAD( "k2k4s-v2.bin", 0x000000, 0x800000, CRC(e4ddfb3f) SHA1(eb8220ab01c16cf9244b7f3f9912bec0db561b85) ) ROM_LOAD( "k2k4s-v1.bin", 0x800000, 0x800000, CRC(b887d287) SHA1(f593a5722df6f6fac023d189a739a117e976bb2f) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "k2k4s-c4.bin", 0x0000000, 0x800000, CRC(7a050288) SHA1(55a20c5b01e11a859f096af3f8e09986025d288f) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "k2k4s-c8.bin", 0x0000001, 0x800000, CRC(e924afcf) SHA1(651e974f7339d2cdcfa58c5398013197a0525b77) ) /* Plane 2,3 */ @@ -8147,8 +7715,6 @@ ROM_START( matrimbl ) ROM_LOAD( "mart-v3.bin", 0x800000, 0x400000, CRC(e8362fcc) SHA1(42d558fd80cabe22a1c09a1fa75741afbcf46b7c) ) ROM_LOAD16_WORD_SWAP( "mart-v4.bin", 0xc00000, 0x400000, CRC(c8c79b19) SHA1(9c7a5e694d68f37a27209e1400b60b6241a04cc7) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "mart-c1.bin", 0x0000000, 0x800000, CRC(a5595656) SHA1(d86281607f22e4f2001047eaeeda99cd673c508c) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "mart-c2.bin", 0x0000001, 0x800000, CRC(c5f7c300) SHA1(9ff5ffb750bd2e925667d84389192f92183e8677) ) /* Plane 2,3 */ @@ -8183,8 +7749,6 @@ ROM_START( ms5plus ) ROM_LOAD( "268-v1c.v1", 0x000000, 0x800000, CRC(ae31d60c) SHA1(c42285cf4e52fea74247860813e826df5aa7600a) ) /* mask rom TC5364205 */ ROM_LOAD( "268-v2c.v2", 0x800000, 0x800000, CRC(c40613ed) SHA1(af889570304e2867d7dfea1e94e388c06249fb67) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "268-c1c.c1", 0x0000000, 0x800000, CRC(ab7c389a) SHA1(025a188de589500bf7637fa8e7a37ab24bf4312e) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -8212,8 +7776,6 @@ ROM_START( pbobblenb ) ROM_LOAD( "u8", 0x200000, 0x100000, CRC(0840cbc4) SHA1 (1adbd7aef44fa80832f63dfb8efdf69fd7256a57) ) ROM_LOAD( "u9", 0x300000, 0x080000, CRC(0a548948) SHA1 (e1e4afd17811cb60401c14fbcf0465035165f4fb) ) - NO_DELTAT_REGION - ROM_REGION( 0x100000, "sprites", 0 ) ROM_LOAD16_BYTE( "uc5", 0x000000, 0x80000, CRC(e89ad494) SHA1 (69c9ea415773af94ac44c48af05d55ada222b138) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "uc6", 0x000001, 0x80000, CRC(4b42d7eb) SHA1 (042ae50a528cea21cf07771d3915c57aa16fd5af) ) /* Plane 2,3 */ @@ -8249,8 +7811,6 @@ ROM_START( svcboot ) ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) ) /* Plane 2,3 */ @@ -8286,8 +7846,6 @@ ROM_START( svcplus ) ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) ) /* Plane 2,3 */ @@ -8328,8 +7886,6 @@ ROM_START( svcplusa ) ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) ) /* Plane 2,3 */ @@ -8364,8 +7920,6 @@ ROM_START( svcsplus ) ROM_LOAD16_WORD_SWAP( "svc-v4.bin", 0x800000, 0x400000, CRC(33fc0b37) SHA1(d61017d829f44c7df8795ba10c55c727d9972662) ) ROM_LOAD16_WORD_SWAP( "svc-v3.bin", 0xc00000, 0x400000, CRC(aa9849a0) SHA1(9539b3356a070a066a89f27c287f316e7367ce2a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) ) /* Plane 2,3 */ @@ -8394,8 +7948,6 @@ ROM_START( samsho5b ) ROM_LOAD( "ssv-v3.bin", 0x800000, 0x400000, CRC(6f1c2703) SHA1(8015df3d788cb7926ebbcda64a96964fe102ba27) ) ROM_LOAD( "ssv-v4.bin", 0xc00000, 0x400000, CRC(5020c055) SHA1(bd1e68d1b0a47b0e2b365159e210048f8b22823a) ) - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "ssv-c1.bin", 0x0000000, 0x1000000, CRC(9c564a01) SHA1(99dc8900fd8f56ae04fff72b34ddcaa8abe4c1be) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "ssv-c2.bin", 0x0000001, 0x1000000, CRC(4b73b8da) SHA1(a8b626de74cf57bbd8c222e8e24c953c9e8680f4) ) /* Plane 2,3 */ @@ -8421,8 +7973,6 @@ ROM_START( kf2k3bl ) ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) /* mask rom TC5364205 */ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -8450,8 +8000,6 @@ ROM_START( kf2k3bla ) ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) /* mask rom TC5364205 */ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -8479,8 +8027,6 @@ ROM_START( kf2k3pl ) ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) /* mask rom TC5364205 */ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -8506,8 +8052,6 @@ ROM_START( kf2k3upl ) ROM_LOAD( "271-v1c.v1", 0x000000, 0x800000, CRC(ffa3f8c7) SHA1(7cf4a933973ca23b7f87c81151d8659e6ec4bd20) ) /* mask rom TC5364205 */ ROM_LOAD( "271-v2c.v2", 0x800000, 0x800000, CRC(5382c7d1) SHA1(1bf999705eda80ba1e7b0d6bdd010d9bfb18bd76) ) /* mask rom TC5364205 */ - NO_DELTAT_REGION - ROM_REGION( 0x4000000, "sprites", 0 ) /* Encrypted */ ROM_LOAD16_BYTE( "271-c1c.c1", 0x0000000, 0x800000, CRC(b1dc25d0) SHA1(50adc3c60d5b4b3abd10a49db2267306c6dbd772) ) /* Plane 0,1 */ /* mask rom TC5364205 */ @@ -8534,8 +8078,6 @@ ROM_START( diggerma ) /* Unlicensed Prototype, no official game ID # */ ROM_REGION( 0x200000, "ymsnd", 0 ) ROM_LOAD( "dig-v1.bin", 0x000000, 0x080000, CRC(ee15bda4) SHA1(fe2206728e6efd02d6302869a98b196eb19a17df) ) - NO_DELTAT_REGION - ROM_REGION( 0x400000, "sprites", 0 ) ROM_LOAD16_BYTE( "dig-c1.bin", 0x000000, 0x080000, CRC(3db0a4ed) SHA1(6214faa883d97ea05809b6af7e0c85a236a18a28) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "dig-c2.bin", 0x000001, 0x080000, CRC(3e632161) SHA1(83711c4286fb1d9f3f91414ac6e5fed36618033e) ) /* Plane 2,3 */ @@ -8555,8 +8097,6 @@ ROM_START( lasthope ) ROM_LOAD( "NGDT-300-V2.bin", 0x200000, 0x200000, CRC(9fd0d559) SHA1(09e70d5e1c6e172a33f48feb3e442515c34a8f3d) ) ROM_LOAD( "NGDT-300-V3.bin", 0x400000, 0x200000, CRC(6d5107e2) SHA1(4ba74836e3d0421a28af47d3d8341ac16af1d7d7) ) - NO_DELTAT_REGION - ROM_REGION( 0x1000000, "sprites", 0 ) ROM_LOAD16_BYTE( "NGDT-300-C1.bin", 0x000000, 0x400000, CRC(53ef41b5) SHA1(a8f1fe546403b609e12f0df211c05d7ac479d98d) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "NGDT-300-C2.bin", 0x000001, 0x400000, CRC(f9b15ab3) SHA1(d8ff2f43686bfc8c2f7ead3ef445e51c15dfbf16) ) /* Plane 2,3 */ diff --git a/docs/release/src/hbmame/drivers/neogeohb.cpp b/docs/release/src/hbmame/drivers/neogeohb.cpp index 34d6ae3497d..f0906423a67 100644 --- a/docs/release/src/hbmame/drivers/neogeohb.cpp +++ b/docs/release/src/hbmame/drivers/neogeohb.cpp @@ -108,7 +108,10 @@ NUM YEAR COMPANY TITLE 333*2002 Sun Amusement Poker Kingdom / Bingo Island 334*2002 ADK Dance RhythMIX 335*2002 ADK World Heroes 3 -336 Technos (unknown set based on Voltage Gowcaizer) (later info says it could be Dragon's Heaven by Face) +336 Face Dragon's Heaven +337*2000 Vektorlogic Neo Sparks (cancelled?) +338 2004 Vektorlogic Super Bubble Pop +339* Vektorlogic TommyK (cancelled?) 350* Neo Dev Cart 351* MVS Test Cart 360 2003 PhenixSoft Crouching Tiger Hidden Dragon (hack of kof2001) (original number 5003) @@ -157,29 +160,29 @@ NUM YEAR COMPANY TITLE 428 2009 Raregame Robocop intro 429 2009 Raregame Spiderman intro 430 2009 Raregame Teenage Mutant Ninja Turtles intro -431*2000 Vektorlogic Neo Sparks (cancelled?) -432 2004 Vektorlogic Super Bubble Pop -433* Vektorlogic TommyK (cancelled?) +431 2009 Raregame Duck Tales Intro +432 +433 434*2010 CeL Hello World 435 2010 CeL Neorom Jukebox 436*2010 CeL Neo Pang 437 2013 Le Cortex Crouching Pony Hidden Dragon demo -438 2009 Raregame Duck Tales Intro +438 439 2013 Cristiano Bei Primo demo 440 2013 Cristiano Bei Neo Geo Galaga demo 441 2013 Cristiano Bei Neo Geo Sound Test 442 443 -444 -445 -446 -447 +444 2012 M.Priewe Santaball +445*2014 M.Priewe Doom in the Deep (in development) +446 2014 M.Priewe Monitor Test Tool +447*2016 M.Priewe Hypernoid (in development) 448 449 450*2012 RKGAMES Neo-sprite demo (CD only) 451*2000 Martinez Fabrice VIP2 demo (CD only) [nebula] 452*2011 Furrtek VUmeter (CD only) [nebula] -453*2012 M.Priewe Santaball (CD only) +453 454*2013 Cristiano Bei NGPhoenix (CD only) 455*2004 Blastar Neo Puzzle League (CD only) [nebula] 456*2013 Jeff Ferrier Neo Geo Manic Panic @@ -195,7 +198,7 @@ NUM YEAR COMPANY TITLE 466* 4-player input test 467 2011 Furrtek Sprite Experimenter 468*n/r Neobitz Submarine Shooter (in development) -469 2014 Neobitz Monitor Test +469 470 2015 freem ADPCM-B Playback Demo 471*n/r tcdev Donkey Kong (in development or cancelled) 472 2015 freem ADPCM-A Playback Demo @@ -285,6 +288,23 @@ DRIVER_INIT_MEMBER( neogeo_hbmame, fr2ch ) // 054 : Crossed Swords 2 +ROM_START( crswd2bl ) + ROM_REGION( 0x200000, "maincpu", ROMREGION_BE|ROMREGION_16BIT ) + ROM_LOAD16_WORD_SWAP( "054-p1.p1", 0x100000, 0x100000, CRC(64836147) SHA1(083cb1626885893e736fc9998036c952cd4d503b) ) + ROM_CONTINUE( 0x000000, 0x100000 ) + + NEO_SFIX_128K( "054-s1.s1", CRC(22e02ddd) SHA1(ebd834affc763cc5854abf1c6c42f43f3f3755fd) ) + + NEO_BIOS_AUDIO_128K( "054-m1.m1", CRC(63e28343) SHA1(f46dbc2f1d6033b11047cca31a9a7d715dc69cb2) ) + + ROM_REGION( 0x200000, "ymsnd", 0 ) + ROM_LOAD( "054-v1.v1", 0x000000, 0x200000, CRC(22d4b93b) SHA1(0515f2ee5d9a8ce424c80721e06f746ac6a543a8) ) + + ROM_REGION( 0x800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "054-c1.c1", 0x000000, 0x400000, CRC(8221b712) SHA1(7e68871f1bfc402ef27c8fa088c680cbd133f71a) ) + ROM_LOAD16_BYTE( "054-c2.c2", 0x000001, 0x400000, CRC(d6c6183d) SHA1(cc546ff063fae2c01c109fabcd5b2d29ec3299db) ) +ROM_END + // Roms missing; not working at all ROM_START( csw2 ) ROM_REGION( 0x100000, "maincpu", 0 ) @@ -298,11 +318,9 @@ ROM_START( csw2 ) ROM_LOAD( "054.v1", 0x000000, 0x80000, CRC(a12842f2) SHA1(6f6377ff54465c4c13e34f8cb4f333f4f15aed5c) ) ROM_LOAD( "054.v2", 0x000001, 0x80000, CRC(3b7feef0) SHA1(748db17fbd3bf8fc427ff57e0952f21dd2782e6b) ) - ROM_REGION( 0x400000, "sprites", 0 ) // c-roms not found yet, using crsword roms for now - ROM_LOAD16_BYTE( "037-c1.c1", 0x000000, 0x100000, CRC(09df6892) SHA1(df2579dcf9c9dc88d461212cb74de106be2983c1) ) - ROM_LOAD16_BYTE( "037-c2.c2", 0x000001, 0x100000, CRC(ac122a78) SHA1(7bfa4d29b7d7d9443f64d81caeafa74fe05c606e) ) - ROM_LOAD16_BYTE( "037-c3.c3", 0x200000, 0x100000, CRC(9d7ed1ca) SHA1(2bbd25dc3a3f825d0af79a418f06a23a1bf03cc0) ) - ROM_LOAD16_BYTE( "037-c4.c4", 0x200001, 0x100000, CRC(4a24395d) SHA1(943f911f40985db901eaef4c28dfcda299fca73e) ) + ROM_REGION( 0x400000, "sprites", 0 ) // c-roms not found yet, using crswd2bl roms for now + ROM_LOAD16_BYTE( "054-c1.c1", 0x000000, 0x400000, CRC(8221b712) SHA1(7e68871f1bfc402ef27c8fa088c680cbd133f71a) ) + ROM_LOAD16_BYTE( "054-c2.c2", 0x000001, 0x400000, CRC(d6c6183d) SHA1(cc546ff063fae2c01c109fabcd5b2d29ec3299db) ) ROM_END @@ -1164,6 +1182,38 @@ ROM_START( tmnti ) /* you must use unibios to select Japan Console */ ROM_END +// 431 : Duck Tales intro from Raregame +ROM_START( dti ) /* you must use unibios to select Japan Console */ + ROM_REGION( 0x800000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "431.p1", 0x000000, 0x800000, CRC(f975711c) SHA1(0bce8bf92536dd18920cdc1ab66a9c42b0a96df3) ) + + NEO_SFIX_64K( "427.s1", CRC(63b8b25e) SHA1(1dacfaebfa68d1b2518324c2bc000f310ed8fc3f) ) + + ROM_REGION16_BE( 0x20000, "mainbios", 0 ) + ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) + + ROM_REGION( 0x20000, "audiobios", 0 ) + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) ) + + ROM_REGION( 0x20000, "audiocpu", 0 ) + ROM_LOAD( "431.m1", 0x0000, 0x2000, CRC(7761d993) SHA1(b269e9878ca28faa1d36c7fa3dd8e9939714a5f4) ) + ROM_RELOAD( 0x10000, 0x2000 ) + + ROM_REGION( 0x090200, "ymsnd", 0 ) + ROM_LOAD( "431.v1", 0x000000, 0x090200, CRC(b40c3a5a) SHA1(fda5e4bf3af75aa70df32b21f132c41670212c52) ) + + ROM_REGION( 0x2000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "431.c1", 0x0000000, 0x400000, CRC(02adabba) SHA1(7b1eafebed09dbfc1b8d9612f0ed477e25ab152d) ) + ROM_LOAD16_BYTE( "431.c2", 0x0000001, 0x400000, CRC(00bd87ac) SHA1(cb3c02c799109fa7083110825dacf19c89372c55) ) + ROM_LOAD16_BYTE( "431.c3", 0x0800000, 0x400000, CRC(263307c8) SHA1(5dabc76b18c02c6955abfbc5010b8fbac7d15753) ) + ROM_LOAD16_BYTE( "431.c4", 0x0800001, 0x400000, CRC(b8330c1e) SHA1(e3ab645eb1101e561bc581e6b2cf696a0ca1e673) ) + ROM_LOAD16_BYTE( "431.c5", 0x1000000, 0x400000, CRC(ce99fcb8) SHA1(f6222f1b0dc31e5ae5e6c7e3223aa7129b38b772) ) + ROM_LOAD16_BYTE( "431.c6", 0x1000001, 0x400000, CRC(a6d30781) SHA1(a29e6b39169f9354a64cf64b302b9e91e0671c82) ) + ROM_LOAD16_BYTE( "431.c7", 0x1800000, 0x400000, CRC(eda15323) SHA1(ef7291870fd30e7b04cb63e59ff45a3c0acab714) ) + ROM_LOAD16_BYTE( "431.c8", 0x1800001, 0x400000, CRC(400fd4cd) SHA1(20cc401de5d429deb7d076535a0b42fc62c48c52) ) +ROM_END + + // 435 : Neo Rom Jukebox by CeL ROM_START( neoromjb ) ROM_REGION( 0x100000, "maincpu", 0 ) @@ -1205,38 +1255,6 @@ ROM_START( cphd ) ROM_END -// 438 : Duck Tales intro from Raregame -ROM_START( dti ) /* you must use unibios to select Japan Console */ - ROM_REGION( 0x800000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "438.p1", 0x000000, 0x800000, CRC(f975711c) SHA1(0bce8bf92536dd18920cdc1ab66a9c42b0a96df3) ) - - NEO_SFIX_64K( "427.s1", CRC(63b8b25e) SHA1(1dacfaebfa68d1b2518324c2bc000f310ed8fc3f) ) - - ROM_REGION16_BE( 0x20000, "mainbios", 0 ) - ROM_LOAD16_WORD_SWAP( "uni-bios_2_3o.rom", 0x00000, 0x20000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) - - ROM_REGION( 0x20000, "audiobios", 0 ) - ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(97cf998b) SHA1(977387a7c76ef9b21d0b01fa69830e949a9a9626) ) - - ROM_REGION( 0x20000, "audiocpu", 0 ) - ROM_LOAD( "438.m1", 0x0000, 0x2000, CRC(7761d993) SHA1(b269e9878ca28faa1d36c7fa3dd8e9939714a5f4) ) - ROM_RELOAD( 0x10000, 0x2000 ) - - ROM_REGION( 0x090200, "ymsnd", 0 ) - ROM_LOAD( "438.v1", 0x000000, 0x090200, CRC(b40c3a5a) SHA1(fda5e4bf3af75aa70df32b21f132c41670212c52) ) - - ROM_REGION( 0x2000000, "sprites", 0 ) - ROM_LOAD16_BYTE( "438.c1", 0x0000000, 0x400000, CRC(02adabba) SHA1(7b1eafebed09dbfc1b8d9612f0ed477e25ab152d) ) - ROM_LOAD16_BYTE( "438.c2", 0x0000001, 0x400000, CRC(00bd87ac) SHA1(cb3c02c799109fa7083110825dacf19c89372c55) ) - ROM_LOAD16_BYTE( "438.c3", 0x0800000, 0x400000, CRC(263307c8) SHA1(5dabc76b18c02c6955abfbc5010b8fbac7d15753) ) - ROM_LOAD16_BYTE( "438.c4", 0x0800001, 0x400000, CRC(b8330c1e) SHA1(e3ab645eb1101e561bc581e6b2cf696a0ca1e673) ) - ROM_LOAD16_BYTE( "438.c5", 0x1000000, 0x400000, CRC(ce99fcb8) SHA1(f6222f1b0dc31e5ae5e6c7e3223aa7129b38b772) ) - ROM_LOAD16_BYTE( "438.c6", 0x1000001, 0x400000, CRC(a6d30781) SHA1(a29e6b39169f9354a64cf64b302b9e91e0671c82) ) - ROM_LOAD16_BYTE( "438.c7", 0x1800000, 0x400000, CRC(eda15323) SHA1(ef7291870fd30e7b04cb63e59ff45a3c0acab714) ) - ROM_LOAD16_BYTE( "438.c8", 0x1800001, 0x400000, CRC(400fd4cd) SHA1(20cc401de5d429deb7d076535a0b42fc62c48c52) ) -ROM_END - - // 439 : Primo demo by BEY // No sound. ROM_START( iocero ) @@ -1344,6 +1362,45 @@ ROM_START( neotest ) ROM_END +// 444 : Santaball by M.Priewe. +// Press 1 to play a game of Pong. +// If the game misbehaves, read the FAQ. +ROM_START( santabll ) + ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "444.p1", 0x000000, 0x100000, CRC(2af7a77c) SHA1(ff79d4695e8060f5a7b981524303336a0ad99c0c) ) + + NEO_SFIX_128K( "444.s1", CRC(ac031928) SHA1(7516593efc70e6effed8f5423e9736d6555b3baf) ) + + NEO_BIOS_AUDIO_64K( "444.m1", CRC(37a8d679) SHA1(957de2aa1775502a51b4e2d5cb6268cee00f6c2a) ) + + ROM_REGION( 0x200000, "ymsnd", 0 ) + ROM_LOAD( "444.v1", 0x000000, 0x100000, CRC(d0150804) SHA1(b3d4cdb6d0f426de3801eb04d56f867bec8fe611) ) + + ROM_REGION( 0x200000, "sprites", 0 ) + ROM_LOAD16_BYTE( "444.c1", 0x000000, 0x100000, CRC(1e271a9b) SHA1(5cae43aa094d5ee34983bc70aeab06652a6b0e7f) ) + ROM_LOAD16_BYTE( "444.c2", 0x000001, 0x100000, CRC(1c7fd396) SHA1(aa2e2fff1ad1804631f3058b9666b970a368a847) ) +ROM_END + + +// 446 : Monitor Test by M.Priewe. +// No sound. +ROM_START( ngmontst ) + ROM_REGION( 0x100000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "446.p1", 0x000000, 0x100000, CRC(17a4ad61) SHA1(38c0f2022947043f30a27ccda06cc709fe980fed) ) + + NEO_SFIX_128K( "sfix.sfix", CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) + + NEO_BIOS_AUDIO_128K( "052-m1.m1", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) ) + + ROM_REGION( 0x200000, "ymsnd", 0 ) + ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) ) + + ROM_REGION( 0x200000, "sprites", 0 ) + ROM_LOAD16_BYTE( "446.c1", 0x000000, 0x100000, CRC(715df715) SHA1(74534eb9bb48a04f25d0044b1f2b57e59f49b06f) ) + ROM_LOAD16_BYTE( "446.c2", 0x000001, 0x100000, CRC(d8ee3c9b) SHA1(c731eaffae34b4394e290e68ca8c3700e1c6dc2b) ) +ROM_END + + // 457 : MVS Test 01 by Furrtek. ROM_START( test01 ) ROM_REGION( 0x100000, "maincpu", 0 ) @@ -1414,25 +1471,6 @@ ROM_START( spriteex ) ROM_END -// 469 : Monitor Test by Neobitz. -// No sound. -ROM_START( ngmontst ) - ROM_REGION( 0x100000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "469.p1", 0x000000, 0x100000, CRC(17a4ad61) SHA1(38c0f2022947043f30a27ccda06cc709fe980fed) ) - - NEO_SFIX_128K( "sfix.sfix", CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) - - NEO_BIOS_AUDIO_128K( "052-m1.m1", CRC(49f17d2d) SHA1(70971fcf71ae3a6b2e26e7ade8063941fb178ae5) ) - - ROM_REGION( 0x200000, "ymsnd", 0 ) - ROM_LOAD( "052-v1.v1", 0x000000, 0x200000, CRC(22c097a5) SHA1(328c4e6db0a026f54a633cff1443a3f964a8daea) ) - - ROM_REGION( 0x200000, "sprites", 0 ) - ROM_LOAD16_BYTE( "469.c1", 0x000000, 0x100000, CRC(715df715) SHA1(74534eb9bb48a04f25d0044b1f2b57e59f49b06f) ) - ROM_LOAD16_BYTE( "469.c2", 0x000001, 0x100000, CRC(d8ee3c9b) SHA1(c731eaffae34b4394e290e68ca8c3700e1c6dc2b) ) -ROM_END - - // 470 : ADPCM-B Playback Demo by freem. // Note that these 2 old roms are buggy and should be discarded: (use only the 'v3' set) // CRC(6d719183) SHA1(e1e064bb785823a1f20f4a931bd7961515de2a98) ) @@ -1599,12 +1637,13 @@ ROM_END -GAME( 1995, csw2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ADK", "Crossed Swords 2", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, crswd2bl, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Razoola", "Crossed Swords 2 (CD conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, csw2, crswd2bl, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Crossed Swords 2", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1995, fr2, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Video Systems Co.", "Idol Mahjong Final Romance 2", MACHINE_SUPPORTS_SAVE ) GAME( 1995, fr2cd, fr2, neogeo_noslot, neogeo, neogeo_hbmame,fr2ch, ROT0, "Video Systems Co.", "Idol Mahjong Final Romance 2 (CD Bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1995, fr2ch, fr2, neogeo_noslot, neogeo, neogeo_hbmame,fr2ch, ROT0, "Video Systems Co.", "Idol Mahjong Final Romance 2 (CD to MVS conversion)", MACHINE_SUPPORTS_SAVE ) GAME( 2009, zintrckbh, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yumeji", "ZinTricK (ExChar hack by Yumeji)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, zintrkcd, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Razoola", "ZinTricK (CD Bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, zintrkcd, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Razoola", "ZinTricK (CD conversion)", MACHINE_SUPPORTS_SAVE ) GAME( 2010, zintrkm, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Elrayseur", "ZinTricK (Music test)", MACHINE_SUPPORTS_SAVE ) GAME( 2014, zintrkcd1, zintrckb, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Razoola", "ZinTricK (CD test)", MACHINE_SUPPORTS_SAVE ) GAME( 2011, totc, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Face / NCI", "Treasure of the Caribbean", MACHINE_SUPPORTS_SAVE ) @@ -1613,8 +1652,8 @@ GAME( 2002, beast, neogeo, neogeo_noslot, neogeo, neogeo_state, neog GAME( 2006, cnbe, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "Codename: Blut Engel", MACHINE_SUPPORTS_SAVE ) GAME( 2009, cndi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Chip n Dale Intro", MACHINE_SUPPORTS_SAVE ) GAME( 2013, cphd, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Le Cortex", "Crouching Pony Hidden Dragon Demo", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, columnsn, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Columns (Neo-Geo)", MACHINE_SUPPORTS_SAVE ) -GAME( 1990, columnsncd, columnsn, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Columns (Neo-Geo CD)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, columnsn, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Columns", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, columnsncd, columnsn, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Columns (CD conversion)", MACHINE_SUPPORTS_SAVE ) GAME( 2009, dti, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Duck Tales Intro", MACHINE_SUPPORTS_SAVE ) GAME( 2009, dwi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "DarkWing Duck Intro", MACHINE_SUPPORTS_SAVE ) GAME( 2016, ennemi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kannagi", "Neogeo Sprite Demo", MACHINE_SUPPORTS_SAVE ) @@ -1647,7 +1686,7 @@ GAME( 2013, neotest, neogal1, neogeo_noslot, neogeo, neogeo_state, neog GAME( 2012, neothund, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Sebastian Mihai", "Neo Thunder", MACHINE_SUPPORTS_SAVE ) GAME( 2006, ngem2k, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Blastar", "NGEM2K", MACHINE_SUPPORTS_SAVE ) GAME( 2012, ngftdemo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "NGF", "NGF Transparency Demo", MACHINE_SUPPORTS_SAVE ) -GAME( 2014, ngmontst, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "NeoGeo Monitor Test", MACHINE_SUPPORTS_SAVE ) +GAME( 2014, ngmontst, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "M.Priewe", "NeoGeo Monitor Test", MACHINE_SUPPORTS_SAVE ) GAME( 2008, ngtetris, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Crim", "NeoGeo 2-Player Tetris", MACHINE_SUPPORTS_SAVE ) GAME( 2011, nyan, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Furrtek", "Nyan Cat demo", MACHINE_SUPPORTS_SAVE ) GAME( 2015, pcmademo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Freem", "ADPCM-A Playback Demo", MACHINE_SUPPORTS_SAVE ) @@ -1656,6 +1695,7 @@ GAME( 2003, poknight, neogeo, neogeo_noslot, neogeo, neogeo_state, neog GAME( 2003, poknightcd, poknight, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Poker Night (CD)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, poknightfr, poknight, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jeff Kurtz", "Poker Night (French)", MACHINE_SUPPORTS_SAVE ) GAME( 2009, rci, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Robocop Intro", MACHINE_SUPPORTS_SAVE ) +GAME( 2012, santabll, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "M.Priewe", "Santaball", MACHINE_SUPPORTS_SAVE ) GAME( 2009, smi, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "[Raregame]", "Spiderman Intro", MACHINE_SUPPORTS_SAVE ) GAME( 2015, snddemo, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Freem", "Sound-Loop Demo", MACHINE_SUPPORTS_SAVE ) GAME( 2011, spriteex, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Furrtek", "Sprite Experimenter", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/nggaroup.cpp b/docs/release/src/hbmame/drivers/nggaroup.cpp index db50ae5a5d4..06b8f9e1953 100644 --- a/docs/release/src/hbmame/drivers/nggaroup.cpp +++ b/docs/release/src/hbmame/drivers/nggaroup.cpp @@ -15,6 +15,35 @@ DRIVER_INIT_MEMBER( neogeo_hbmame, garoud ) +ROM_START( garoub ) // hack of garou + ROM_REGION( 0x900000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "kf.neo-sma", 0x0c0000, 0x040000, CRC(98bc93dc) SHA1(01fe3d18b50f770e131e8d8eeff4c630ba8c9551) ) + ROM_LOAD16_WORD_SWAP( "253-ep1.p1", 0x100000, 0x200000, CRC(ea3171a4) SHA1(bbda40f652baa0dc5fc6a006c001a1bdb0df43f6) ) + ROM_LOAD16_WORD_SWAP( "253-ep2.p2", 0x300000, 0x200000, CRC(382f704b) SHA1(0ace9c84a8b8a0524fd9a503e7d872de1bf1bd52) ) + ROM_LOAD16_WORD_SWAP( "253-ep3.p3", 0x500000, 0x200000, CRC(e395bfdd) SHA1(6b50f5ac15bf66b7e4e9bff57594fd3d7530c831) ) + ROM_LOAD16_WORD_SWAP( "253b.p4", 0x700000, 0x200000, CRC(c1fb6ff4) SHA1(5a907c2c0e8d1fe40f3eecd3b79d97ac8e393940) ) + + NEO_SFIX_MT_512K + + NEO_BIOS_AUDIO_256K( "253-m1.m1", CRC(36a806be) SHA1(90fb44dc0c3fb57946a0f35716056abb84a0f191) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "253-v1.v1", 0x000000, 0x400000, CRC(263e388c) SHA1(11f05feee170370c4bfc5053af79246a6e3de5dc) ) + ROM_LOAD( "253-v2.v2", 0x400000, 0x400000, CRC(2c6bc7be) SHA1(c9c61054ce1a47bf1bf77a31117726b499df24a4) ) + ROM_LOAD( "253-v3.v3", 0x800000, 0x400000, CRC(0425b27d) SHA1(986863c98fc3445487242dcf2ea75b075e7f33ee) ) + ROM_LOAD( "253-v4.v4", 0xc00000, 0x400000, CRC(a54be8a9) SHA1(d7123e79b43e8adfaa5ecadbfcbeb6be890ec311) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "253-c1.c1", 0x0000000, 0x800000, CRC(0603e046) SHA1(5ef4557ce90ba65d36129de97be1fdc049c4a3d0) ) + ROM_LOAD16_BYTE( "253-c2.c2", 0x0000001, 0x800000, CRC(0917d2a4) SHA1(d4ed3a13ae22f880fb399671c1752f1a0283f316) ) + ROM_LOAD16_BYTE( "253-c3.c3", 0x1000000, 0x800000, CRC(6737c92d) SHA1(678f0c9cc1267bd131546981b9989bfb7289d8ba) ) + ROM_LOAD16_BYTE( "253-c4.c4", 0x1000001, 0x800000, CRC(5ba92ec6) SHA1(aae36b050a3a0321026a96eba06dd184c0e2acca) ) + ROM_LOAD16_BYTE( "253-c5.c5", 0x2000000, 0x800000, CRC(3eab5557) SHA1(47c433015aa81a0b0a1d3ee51382c4948b80c023) ) + ROM_LOAD16_BYTE( "253-c6.c6", 0x2000001, 0x800000, CRC(308d098b) SHA1(b052f1fa9fbc69606004c250e2505360eaa24949) ) + ROM_LOAD16_BYTE( "253-c7.c7", 0x3000000, 0x800000, CRC(c0e995ae) SHA1(8675ca787d28246174c313167f82557f021366fc) ) + ROM_LOAD16_BYTE( "253-c8.c8", 0x3000001, 0x800000, CRC(21a11303) SHA1(fd61221ad257c185ef5c1f9694bd6b840b591af3) ) +ROM_END + ROM_START( garoud ) ROM_REGION( 0x900000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "kf.neo-sma", 0x0c0000, 0x040000, CRC(98bc93dc) SHA1(01fe3d18b50f770e131e8d8eeff4c630ba8c9551) ) @@ -254,12 +283,13 @@ ROM_END -GAME( 1999, garoud, garou, neogeo_noslot, neogeo, neogeo_hbmame, garoud, ROT0, "SNK","Garou - Mark of the Wolves (decrypted C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, garoupamu, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "MU", "Garou - Mark of the Wolves (proto) (Approach to Arcade by MU v5.0a)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, garoupeh, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Garou - Mark of the Wolves (proto) (Add Char)", MACHINE_SUPPORTS_SAVE ) // Kain and Grant -GAME( 1999, garoupehc, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Garou - Mark of the Wolves (proto) (Add Char - Pow hack)", MACHINE_SUPPORTS_SAVE ) // Kain and Grant -GAME( 1999, garoupf, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Fixed winning message, sprites and some bugs)", MACHINE_SUPPORTS_SAVE ) // From MAME32+ IPS -GAME( 1999, garoupfu, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Unk Hack/Fix)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, garoupfp, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Rom Fix - FixPlus)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, garoupy, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Garou - Mark of the Wolves (proto) (P1 Add Char)", MACHINE_SUPPORTS_SAVE ) // Kain and Grant -GAME( 1999, garoupy1, garou, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Garou: Mark of the Wolves (Prototype) [Boss Hack by Ydmis]", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoub, garou, neogeo_noslot, neogeo, neogeo_noslot_state, garou, ROT0, "Ydmis", "Garou - Mark of the Wolves (Boss hack by Ydmis)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoud, garou, neogeo_noslot, neogeo, neogeo_hbmame, garoud, ROT0, "hack","Garou - Mark of the Wolves (decrypted C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupamu, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "MU", "Garou - Mark of the Wolves (proto) (Approach to Arcade by MU v5.0a)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupeh, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Garou - Mark of the Wolves (proto) (Add Char)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupehc, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami and Ydmis", "Garou - Mark of the Wolves (proto) (Add Char - Pow hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupf, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Fixed winning message, sprites and some bugs)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupfu, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Unk Hack/Fix)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupfp, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Unk", "Garou - Mark of the Wolves (proto) (Rom Fix - FixPlus)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupy, neogeo, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Garou - Mark of the Wolves (proto) (P1 Add Char)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, garoupy1, garou, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Garou: Mark of the Wolves (Prototype) [Boss Hack by Ydmis]", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/pacman.cpp b/docs/release/src/hbmame/drivers/pacman.cpp index 114bb8d588b..8f170ebd0a3 100644 --- a/docs/release/src/hbmame/drivers/pacman.cpp +++ b/docs/release/src/hbmame/drivers/pacman.cpp @@ -176,7 +176,7 @@ static ADDRESS_MAP_START( pacman_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x5080) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_READ_PORT("DSW1") @@ -200,7 +200,7 @@ static ADDRESS_MAP_START( woodpek_map, AS_PROGRAM, 8, pacman_state ) AM_RANGE(0x5040, 0x505f) AM_MIRROR(0x8000) AM_DEVWRITE("namco", namco_device, pacman_sound_w) AM_RANGE(0x5060, 0x506f) AM_MIRROR(0x8000) AM_WRITEONLY AM_SHARE("spriteram2") AM_RANGE(0x5070, 0x5080) AM_MIRROR(0x8000) AM_WRITENOP - AM_RANGE(0x50c0, 0x50c0) AM_MIRROR(0x8000) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x50c0, 0x50c0) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w) AM_RANGE(0x5000, 0x5000) AM_MIRROR(0x8000) AM_READ_PORT("IN0") AM_RANGE(0x5040, 0x5040) AM_MIRROR(0x8000) AM_READ_PORT("IN1") AM_RANGE(0x5080, 0x5080) AM_MIRROR(0x8000) AM_READ_PORT("DSW1") @@ -436,7 +436,8 @@ static MACHINE_CONFIG_START( pacman, pacman_state ) MCFG_CPU_PROGRAM_MAP(pacman_map) MCFG_CPU_IO_MAP(writeport) MCFG_CPU_VBLANK_INT_DRIVER("screen", pacman_state, vblank_irq) - MCFG_WATCHDOG_VBLANK_INIT(16) + MCFG_WATCHDOG_ADD("watchdog") + MCFG_WATCHDOG_VBLANK_INIT("screen", 16) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/docs/release/src/hbmame/drivers/pengo.cpp b/docs/release/src/hbmame/drivers/pengo.cpp index 13f4a1c4d97..29b1193b267 100644 --- a/docs/release/src/hbmame/drivers/pengo.cpp +++ b/docs/release/src/hbmame/drivers/pengo.cpp @@ -2,6 +2,30 @@ // copyright-holders:Robbbert #include "../mame/drivers/pengo.cpp" + + +// DSW1 needs to be here, coins/credits combinations to be found out +static INPUT_PORTS_START( pacpen ) + PORT_INCLUDE( pengo ) + PORT_MODIFY("DSW0") + PORT_DIPNAME( 0x03, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:1,2") + PORT_DIPSETTING( 0x00, "10000" ) + PORT_DIPSETTING( 0x01, "15000" ) + PORT_DIPSETTING( 0x02, "20000" ) + PORT_DIPSETTING( 0x03, DEF_STR( None ) ) + PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3") + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,5") + PORT_DIPSETTING( 0x18, "5" ) + PORT_DIPSETTING( 0x10, "3" ) + PORT_DIPSETTING( 0x08, "2" ) + PORT_DIPSETTING( 0x00, "1" ) + PORT_BIT(0xe0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_DIPLOCATION("SW1:6,7,8") +INPUT_PORTS_END + + + /* The colours for alpacap7 and alpacap8 are completely wrong, but we are using the roms specified by the original programmer. See http://umlautllama.com/projects/alpaca */ ROM_START( alpacap7 ) @@ -10,17 +34,17 @@ ROM_START( alpacap7 ) ROM_REGION( 0x4000, "gfx1", 0 ) ROM_LOAD( "alp7_ic92", 0x0000, 0x1000, CRC(693B1A96) SHA1(DED8AC0A4186458FDA6A241C027718742BA87973) ) - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ + ROM_CONTINUE( 0x2000, 0x1000 ) ROM_LOAD( "alp_ic105", 0x1000, 0x1000, CRC(BDA193F4) SHA1(A61B5E86809FEFF025C73DE78FC751EAD646125B) ) - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 1) */ + ROM_CONTINUE( 0x3000, 0x1000 ) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) + ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) + ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) ROM_END ROM_START( alpacap8 ) @@ -29,17 +53,39 @@ ROM_START( alpacap8 ) ROM_REGION( 0x4000, "gfx1", 0 ) ROM_LOAD( "alp8_ic92", 0x0000, 0x1000, CRC(4A45717F) SHA1(159A74C31FC5D4E5405BCD8D8843A1B381EA01A4) ) - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ + ROM_CONTINUE( 0x2000, 0x1000 ) ROM_LOAD( "alp_ic105", 0x1000, 0x1000, CRC(BDA193F4) SHA1(A61B5E86809FEFF025C73DE78FC751EAD646125B) ) - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 1) */ + ROM_CONTINUE( 0x3000, 0x1000 ) + + ROM_REGION( 0x0420, "proms", 0 ) + ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) + ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) + + ROM_REGION( 0x0200, "namco", 0 ) + ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) + ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) +ROM_END + +ROM_START( pacpen ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "pacpen.u8", 0x0000, 0x1000, CRC(59959af1) SHA1(c528a7895338806977f2d9c76da91f67b0f78aed) ) + ROM_LOAD( "pacpen.u7", 0x1000, 0x1000, CRC(3ed59df1) SHA1(561725f5970954cccf938330fd9f48ad0cb1829b) ) + ROM_LOAD( "pacpen.u15", 0x2000, 0x1000, CRC(d0c8dcc8) SHA1(3a6829d12d7ef6f09d5e1afa5e0e4ef9d0605aa1) ) + ROM_LOAD( "pacpen.u14", 0x3000, 0x1000, CRC(39066ad9) SHA1(9789a111b94a3c5aabf910c72c146f71df59f316) ) + + ROM_REGION( 0x4000, "gfx1", 0 ) + ROM_LOAD( "pacpen.u92", 0x0000, 0x1000, CRC(2f0b5176) SHA1(a6a51d4545329999a5f42ae790bfb3a894429fee) ) + ROM_CONTINUE( 0x2000, 0x1000 ) + ROM_LOAD( "pacpen.105", 0x1000, 0x1000, CRC(6ba0078e) SHA1(a6e14aa373ef22fe732c335fb1ad6c48fec92530) ) + ROM_CONTINUE( 0x3000, 0x1000 ) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) + ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) + ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) ROM_END ROM_START( pengopop ) @@ -54,18 +100,18 @@ ROM_START( pengopop ) ROM_LOAD( "pengopc.u31", 0x7000, 0x1000, CRC(1ede8569) SHA1(0d10a0896847a06185a91eb83c0ccb88c4307b33) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "ep1640.92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "ep1695.105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "ep1640.92", 0x0000, 0x1000, CRC(d7eec6cd) SHA1(e542bcc28f292be9a0a29d949de726e0b55e654a) ) + ROM_CONTINUE( 0x2000, 0x1000 ) + ROM_LOAD( "ep1695.105", 0x1000, 0x1000, CRC(5bfd26e9) SHA1(bdec535e486b43a8f5550334beff423eeace10b2) ) + ROM_CONTINUE( 0x3000, 0x1000 ) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) + ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) + ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) ROM_END ROM_START( vecpengo ) @@ -80,22 +126,23 @@ ROM_START( vecpengo ) ROM_LOAD( "ep5119c.31", 0x7000, 0x1000, CRC(933950fe) SHA1(fec7236b3dee2ea6e39c68440a6d2d9e3f72675a) ) ROM_REGION( 0x4000, "gfx1", 0 ) - ROM_LOAD( "vecp_ic92", 0x0000, 0x1000, CRC(57c5e53c) SHA1(4d1d4cdc352cb2fd14ebbd6678211093be73fb69) ) /* tiles (bank 1) */ - ROM_CONTINUE( 0x2000, 0x1000 ) /* sprites (bank 1) */ - ROM_LOAD( "vecp_ic105", 0x1000, 0x1000, CRC(b93588b0) SHA1(bbb779e538bdf7ebfcb0e12e11b57cabd5ddd29d) ) /* tiles (bank 2) */ - ROM_CONTINUE( 0x3000, 0x1000 ) /* sprites (bank 2) */ + ROM_LOAD( "vecp_ic92", 0x0000, 0x1000, CRC(57c5e53c) SHA1(4d1d4cdc352cb2fd14ebbd6678211093be73fb69) ) + ROM_CONTINUE( 0x2000, 0x1000 ) + ROM_LOAD( "vecp_ic105", 0x1000, 0x1000, CRC(b93588b0) SHA1(bbb779e538bdf7ebfcb0e12e11b57cabd5ddd29d) ) + ROM_CONTINUE( 0x3000, 0x1000 ) ROM_REGION( 0x0420, "proms", 0 ) - ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) /* color palette */ - ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) /* color lookup */ + ROM_LOAD( "pr1633.78", 0x0000, 0x0020, CRC(3a5844ec) SHA1(680eab0e1204c9b74adc11588461651b474021bb) ) + ROM_LOAD( "pr1634.88", 0x0020, 0x0400, CRC(766b139b) SHA1(3fcd66610fcaee814953a115bf5e04788923181f) ) ROM_REGION( 0x0200, "namco", 0 ) - ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) /* waveform */ - ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */ + ROM_LOAD( "pr1635.51", 0x0000, 0x0100, CRC(c29dea27) SHA1(563c9770028fe39188e62630711589d6ed242a66) ) + ROM_LOAD( "pr1636.70", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) ROM_END -GAME( 2003, alpacap7, alpaca8, pengou, pengo, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.7 (Pengo Hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) -GAME( 2003, alpacap8, alpaca8, pengou, pengo, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.8 (Pengo Hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) -GAME( 1997, pengopop, pengo, pengou, pengo, driver_device, 0, ROT90, "Sega", "Pengo (Popcorn Music)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, vecpengo, pengo, pengoe, pengo, driver_device, 0, ROT90, "T-Bone", "Pengo (Vector sim)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, alpacap7, alpaca8, pengou, pengo, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.7 (Pengo Hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) +GAME( 2003, alpacap8, alpaca8, pengou, pengo, driver_device, 0, ROT90, "Scott Lawrence", "Alpaca v0.8 (Pengo Hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_COLORS ) +GAME( 2016, pacpen, pengo, pengou, pacpen, driver_device, 0, ROT90, "Andrew Hannay", "Pacman on Pengo Hardware", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, pengopop, pengo, pengou, pengo, driver_device, 0, ROT90, "Sega", "Pengo (Popcorn Music)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, vecpengo, pengo, pengoe, pengo, driver_device, 0, ROT90, "T-Bone", "Pengo (Vector sim)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/schaser.cpp b/docs/release/src/hbmame/drivers/schaser.cpp index 421e625f8f5..44e04eaf463 100644 --- a/docs/release/src/hbmame/drivers/schaser.cpp +++ b/docs/release/src/hbmame/drivers/schaser.cpp @@ -494,7 +494,7 @@ static ADDRESS_MAP_START( schasercv_io_map, AS_IO, 8, sc_state ) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(schaser_03_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(schaser_05_w) - AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) + //AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END diff --git a/docs/release/src/hbmame/drivers/spacmiss.cpp b/docs/release/src/hbmame/drivers/spacmiss.cpp index eb5a38fbb20..a95055737fe 100644 --- a/docs/release/src/hbmame/drivers/spacmiss.cpp +++ b/docs/release/src/hbmame/drivers/spacmiss.cpp @@ -382,7 +382,7 @@ static ADDRESS_MAP_START( spacmiss_io_map, AS_IO, 8, sm_state ) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_device, shift_result_r) AM_WRITE(spacmiss_03_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_device, shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(spacmiss_05_w) - AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) + //AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) AM_RANGE(0x07, 0x07) AM_WRITE(spacmiss_07_w) ADDRESS_MAP_END diff --git a/docs/release/src/hbmame/hbmame.lst b/docs/release/src/hbmame/hbmame.lst index e8389360e93..6dacc7b06ad 100644 --- a/docs/release/src/hbmame/hbmame.lst +++ b/docs/release/src/hbmame/hbmame.lst @@ -124,39 +124,58 @@ comdelux /* Twisty Hack */ comdlux1 /* Twisty Hack */ /* cps1 */ +3wonders // parent captcomm // parent cawing // parent dino // parent ffight // parent ghouls // parent -kod // parent +kod // parent knights // parent megaman // parent punisher // parent -sf2 // parent +sf2 // parent sf2ce // parent +slammast // parent strider // parent varth // parent -wof // parent +wof // parent /* cps1mis */ +3wondrud +//captcocc // not working captcomc // chinese captcomh +captcoud +//captcovs // not working cawingb cps1demo /* Charles Doty */ cps1frog /* Charles Doty */ cps1test /* Cal2 */ cps1testa /* Cal2 */ daimakb /* Found in Mame Plus */ +dino08h2 +dino08h3 +dino08hp dinob /* 1993 Cadillacs and Dinosaurs (bootleg) */ +dinobt +dinobtpp +dinocgba +dinocgbb +dinocgbc dinoeh dinoex dinoh /* 1993 Cadillacs and Dinosaurs (Hack) */ dinoha /* 1993 Cadillacs and Dinosaurs (Hack) */ dinohb /* 1993 Cadillacs and Dinosaurs (Hack) */ +dinohp +//dinohx // crashes in the "underground", demo sound only works on first run. dinojp // 2010 Pipi899, RockWall, Zhyxxxx +dinorp dinoslice +dinouphp dinoz /* Boss Hack */ +ffightb knight21 // debug //knightsa // - rom missing knightsb2 @@ -164,12 +183,20 @@ knightsh /* 1991 Knights of the Round (Hack) */ knightsha /* 1991 Knights of the Round (Hack) */ knightsjb knightsro // Sebastian Mihai - Romanian translation 2015 +knightud +//kodd // not working kodh +kodsp +//kodud // not working pnicku /* 06/08/1994 (c) 1994 + Compile license (Japan) not listed on Capcom's site */ punisherb /* Found in neht build */ punisherf /* Flash version 24/7/2009 by Zhyxxxx */ -punisherjh /* Found in neht build */ +punisherje1 +punisherjh +punisherjh1 punisherjha +punisherud1 +punisherud2 sf2c // sf2, chinese sf2cebr /* hack, Brasil 920313 */ sf2ced /* hack, Hispanic 990804 */ @@ -192,8 +219,6 @@ sf2turyu /* hack, Tu Long prototype */ sf2yyc3d5 sf2yyc3g sf2yyc6 -stridergf // fix unwanted black specks -stridergh // as above, and uncensored sk2h1 /* 1999 Legend of Three Kingdoms' Heroes / Sanguo Yingxiong Zhuan */ sk2h2 /* 1999 Legend of Three Kingdoms' Heroes / Sanguo Yingxiong Zhuan */ sk2h3 // mame sgyxz for testing @@ -214,17 +239,23 @@ sk2h31q sk2h32q sk2h33q sk2h34q +slammastud +stridergf // fix unwanted black specks +stridergh // as above, and uncensored +sk2h15 // wofaehp +sk2h16 // wofahp2 wofb wofch wofch_v3 wofchdx wofchdx1 wofchdx2 +wofchspp wofjcn // chinese language woffr /* Neo-Arc French Trans */ wofjh -//wofjhb // was dynwarjh in error - unknown rom missing - not working -//wofjhc // was dynwarj2 in error - unknown rom missing - not working +wofjhb // was dynwarjh in another life +wofjhc // was dynwarj2 in another life wofjm wofjzero wofr1h @@ -234,15 +265,19 @@ wofsf2 1944 //parent 1944da 1944fp -ddsom -ddsomchs /* 2014 Dungeons and Dragons (chinese) (unable to decipher author's name) */ -halfway +ddsom //parent +ddsomavs +ddsomchs +ddsomhp +ddsomjfs +dstlk //parent +halfway // progear hack mpang //parent mpangjd -progear //parent +progear //parent suicide /* Razoola */ suicide2 /* Razoola */ -sfa //parent +sfa //parent sfa2 //parent sfa2h sfaud @@ -253,6 +288,7 @@ ssf2t //parent ssf2td spf2t //parent spf2tb // boss hack +vampjb /* cps3 */ redearth // parent @@ -275,6 +311,7 @@ kong2600 /* Vic Twenty George hack of Donkey Kong */ nadkong dkong2m dkrainbow +dkrdemo /* docastle */ dorunrun /* (c) 1984 */ @@ -1467,17 +1504,22 @@ neogeo 3countb // 043 alpham2 // 007 androdun // 049 +aodk // 074 aof // 044 aof2 // 056 aof3 // 096 +b2b // 071 bakatono // 036 bangbead // 259 bjourney // 022 +blazstar // 239 breakers // 230 breakrev // 245 bstars // 002 +bstars2 // 041 burningf // 018 crsword // 037 +crswd2bl // 054 ctomaday // 249 cyberlip // 010 doubledr // 082 @@ -1492,9 +1534,14 @@ flipshot // 247 galaxyfg // 078 ganryu // 252 garou // 253 +ghostlop // 228 +goalx3 // 209 gowcaizr // 094 gpilots // 020 +gururin // 067 ironclad // 220 +irrmaze // 236 +janshin // 048 jockeygp // 331 joyjoy // 021 kabukikl // 092 @@ -1512,16 +1559,22 @@ kof2002 // 265 kof2003 // 271 kf2k3pcb kotm // 016 +kotm2 // 039 lastblad // 234 lastbld2 // 243 lasthope // 802 lbowling // 019 +legendos // 029 lresort // 024 +magdrop2 // 221 magdrop3 // 233 maglord // 005 +mahretsu // 004 +marukodq // 206 matrim // 266 miexchng // 231 minasan // 027 +mosyougi // 203 ms5pcb mslug // 201 mslug2 // 241 @@ -1533,13 +1586,28 @@ mutnat // 014 nam1975 // 001 ncombat // 009 ncommand // 050 +neobombe // 093 neocup98 // 244 +neodrift // 213 +neomrdo // 207 ninjamas // 217 nitd // 260 +overtop // 212 +panicbom // 073 +pbobbl2n // 248 pbobblen // 083 +pgoal // 219 pnyaa // 267 +popbounc // 237 preisle2 // 255 -//pspikes2 // 068 +pspikes2 // 068 +pulstar // 089 +puzzledp // 202 +puzzldpr // 235 +quizdais // 023 +quizdai2 // 042 +quizkof // 080 +ragnagrd // 218 rbff1 // 095 rbff2 // 240 rbffspec // 223 @@ -1554,6 +1622,8 @@ samsho4 // 222 samsho5 // 270 samsh5sp // 272 savagere // 059 +sbp // 338 +sdodgeb // 208 sengoku // 017 sengoku2 // 040 sengoku3 // 261 @@ -1563,7 +1633,12 @@ socbrawl // 031 sonicwi2 // 075 sonicwi3 // 097 spinmast // 062 -ssideki // 052 +ssideki // 052 +ssideki2 // 061 +ssideki3 // 081 +ssideki4 // 215 +stakwin // 088 +stakwin2 // 227 strhoop // 079 superspy // 011 svc // 269 @@ -1571,8 +1646,11 @@ svcpcb tophuntr // 046 tpgolf // 003 trally // 038 +turfmast // 200 twinspri // 224 +tws96 // 086 viewpoin // 051 +vliner // 332 wakuwak7 // 225 wh1 // 053 wh2 // 057 @@ -1635,6 +1713,7 @@ poknight /* 2003 (c) 200? JMK */ poknightcd poknightfr rci /* Robocop intro */ +santabll smi /* Spiderman intro */ snddemo // Sound-Loop Demo by Freem spriteex // furrtek Sprite Experimenter @@ -1777,6 +1856,7 @@ doubledres doubledrhp /* nggaroup */ +garoub garoud garoupamu garoupeh @@ -2170,6 +2250,7 @@ pcktgalk /* Korean Translation */ /* pengo */ pengo /* 834-0386 (c) 1982 Sega */ +pacpen pengopop vecpengo /* T-Bone hack of Pengo */ //alpacap7 /* "Jerronimo", "Alpaca v0.7 (Pengo Hardware) useless */ diff --git a/docs/release/src/hbmame/includes/cps1.h b/docs/release/src/hbmame/includes/cps1.h index 7119b07b0e1..2615e09c7c7 100644 --- a/docs/release/src/hbmame/includes/cps1.h +++ b/docs/release/src/hbmame/includes/cps1.h @@ -219,8 +219,8 @@ public: int m_sprite_base; int m_sprite_list_end_marker; int m_sprite_x_offset; - UINT16 *m_bootleg_sprite_ram; - UINT16 *m_bootleg_work_ram; + std::unique_ptr<UINT16[]> m_bootleg_sprite_ram; + std::unique_ptr<UINT16[]> m_bootleg_work_ram; /* devices */ required_device<m68000_base_device> m_maincpu; diff --git a/docs/release/src/hbmame/includes/galaga.h b/docs/release/src/hbmame/includes/galaga.h index a28373c8405..07d749d0cd5 100644 --- a/docs/release/src/hbmame/includes/galaga.h +++ b/docs/release/src/hbmame/includes/galaga.h @@ -96,149 +96,5 @@ public: static struct star m_star_seed_tab[]; }; -class xevious_state : public galaga_state -{ -public: - xevious_state(const machine_config &mconfig, device_type type, const char *tag) - : galaga_state(mconfig, type, tag), - m_xevious_sr1(*this, "xevious_sr1"), - m_xevious_sr2(*this, "xevious_sr2"), - m_xevious_sr3(*this, "xevious_sr3"), - m_xevious_fg_colorram(*this, "fg_colorram"), - m_xevious_bg_colorram(*this, "bg_colorram"), - m_xevious_fg_videoram(*this, "fg_videoram"), - m_xevious_bg_videoram(*this, "bg_videoram"), - m_samples(*this, "samples"), - m_subcpu3(*this, "sub3") { } - - required_shared_ptr<UINT8> m_xevious_sr1; - required_shared_ptr<UINT8> m_xevious_sr2; - required_shared_ptr<UINT8> m_xevious_sr3; - required_shared_ptr<UINT8> m_xevious_fg_colorram; - required_shared_ptr<UINT8> m_xevious_bg_colorram; - required_shared_ptr<UINT8> m_xevious_fg_videoram; - required_shared_ptr<UINT8> m_xevious_bg_videoram; - optional_device<samples_device> m_samples; - - INT32 m_xevious_bs[2]; - DECLARE_DRIVER_INIT(xevious); - DECLARE_DRIVER_INIT(xevios); - DECLARE_DRIVER_INIT(battles); - TILE_GET_INFO_MEMBER(get_fg_tile_info); - TILE_GET_INFO_MEMBER(get_bg_tile_info); - DECLARE_VIDEO_START(xevious); - DECLARE_PALETTE_INIT(xevious); - DECLARE_MACHINE_RESET(xevios); - DECLARE_PALETTE_INIT(battles); - DECLARE_MACHINE_RESET(battles); - UINT32 screen_update_xevious(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(battles_interrupt_4); - TIMER_DEVICE_CALLBACK_MEMBER(battles_nmi_generate); - void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); - DECLARE_WRITE8_MEMBER( xevious_fg_videoram_w ); - DECLARE_WRITE8_MEMBER( xevious_fg_colorram_w ); - DECLARE_WRITE8_MEMBER( xevious_bg_videoram_w ); - DECLARE_WRITE8_MEMBER( xevious_bg_colorram_w ); - DECLARE_WRITE8_MEMBER( xevious_vh_latch_w ); - DECLARE_WRITE8_MEMBER( xevious_bs_w ); - DECLARE_READ8_MEMBER( xevious_bb_r ); - - // Custom I/O - void battles_customio_init(); - - DECLARE_READ8_MEMBER( battles_customio0_r ); - DECLARE_READ8_MEMBER( battles_customio_data0_r ); - DECLARE_READ8_MEMBER( battles_customio3_r ); - DECLARE_READ8_MEMBER( battles_customio_data3_r ); - DECLARE_READ8_MEMBER( battles_input_port_r ); - - DECLARE_WRITE8_MEMBER( battles_customio0_w ); - DECLARE_WRITE8_MEMBER( battles_customio_data0_w ); - DECLARE_WRITE8_MEMBER( battles_customio3_w ); - DECLARE_WRITE8_MEMBER( battles_customio_data3_w ); - DECLARE_WRITE8_MEMBER( battles_CPU4_coin_w ); - DECLARE_WRITE8_MEMBER( battles_noise_sound_w ); - - UINT8 m_customio[16]; - char m_battles_customio_command; - char m_battles_customio_prev_command; - char m_battles_customio_command_count; - char m_battles_customio_data; - char m_battles_sound_played; - - optional_device<cpu_device> m_subcpu3; -}; - - -class bosco_state : public galaga_state -{ -public: - bosco_state(const machine_config &mconfig, device_type type, const char *tag) - : galaga_state(mconfig, type, tag), - m_bosco_radarattr(*this, "bosco_radarattr"), - m_bosco_starcontrol(*this, "starcontrol"), - m_bosco_starblink(*this, "bosco_starblink") { } - - required_shared_ptr<UINT8> m_bosco_radarattr; - - required_shared_ptr<UINT8> m_bosco_starcontrol; - required_shared_ptr<UINT8> m_bosco_starblink; - - UINT8 *m_bosco_radarx; - UINT8 *m_bosco_radary; - - UINT8 *m_spriteram; - UINT8 *m_spriteram2; - UINT32 m_spriteram_size; - DECLARE_WRITE8_MEMBER(bosco_flip_screen_w); - TILEMAP_MAPPER_MEMBER(fg_tilemap_scan); - TILE_GET_INFO_MEMBER(bg_get_tile_info); - TILE_GET_INFO_MEMBER(fg_get_tile_info); - DECLARE_VIDEO_START(bosco); - DECLARE_PALETTE_INIT(bosco); - UINT32 screen_update_bosco(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_bosco(screen_device &screen, bool state); - - inline void get_tile_info_bosco(tile_data &tileinfo,int tile_index,int ram_offs); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int flip); - void draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect, int flip); - void draw_stars(bitmap_ind16 &bitmap, const rectangle &cliprect, int flip); - DECLARE_WRITE8_MEMBER( bosco_videoram_w ); - DECLARE_WRITE8_MEMBER( bosco_scrollx_w ); - DECLARE_WRITE8_MEMBER( bosco_scrolly_w ); - DECLARE_WRITE8_MEMBER( bosco_starclr_w ); -}; - -class digdug_state : public galaga_state -{ -public: - digdug_state(const machine_config &mconfig, device_type type, const char *tag) - : galaga_state(mconfig, type, tag), - m_digdug_objram(*this, "digdug_objram"), - m_digdug_posram(*this, "digdug_posram"), - m_digdug_flpram(*this, "digdug_flpram") { } - - required_shared_ptr<UINT8> m_digdug_objram; - required_shared_ptr<UINT8> m_digdug_posram; - required_shared_ptr<UINT8> m_digdug_flpram; - - UINT8 m_bg_select; - UINT8 m_tx_color_mode; - UINT8 m_bg_disable; - UINT8 m_bg_color_bank; - DECLARE_CUSTOM_INPUT_MEMBER(shifted_port_r); - TILEMAP_MAPPER_MEMBER(tilemap_scan); - TILE_GET_INFO_MEMBER(bg_get_tile_info); - TILE_GET_INFO_MEMBER(tx_get_tile_info); - DECLARE_VIDEO_START(digdug); - DECLARE_PALETTE_INIT(digdug); - UINT32 screen_update_digdug(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_WRITE8_MEMBER( digdug_videoram_w ); - DECLARE_WRITE8_MEMBER( digdug_PORT_w ); -}; - -/*----------- defined in audio/galaga.c -----------*/ - -DISCRETE_SOUND_EXTERN( bosco ); DISCRETE_SOUND_EXTERN( galaga ); +DISCRETE_SOUND_EXTERN( bosco ); diff --git a/docs/release/src/hbmame/includes/neogeo.h b/docs/release/src/hbmame/includes/neogeo.h new file mode 100644 index 00000000000..a8b33e045f2 --- /dev/null +++ b/docs/release/src/hbmame/includes/neogeo.h @@ -0,0 +1,527 @@ +// license:BSD-3-Clause +// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari +// thanks-to:Fuzz +/************************************************************************* + + Neo-Geo hardware + +*************************************************************************/ + +#include "machine/upd1990a.h" +#include "machine/ng_memcard.h" +#include "video/neogeo_spr.h" +#include "bus/neogeo/neogeo_slot.h" +#include "bus/neogeo/neogeo_carts.h" +#include "bus/neogeo/cmc_prot.h" +#include "bus/neogeo/pcm2_prot.h" +#include "bus/neogeo/pvc_prot.h" +#include "bus/neogeo/bootleg_prot.h" +#include "bus/neogeo/kof2002_prot.h" +#include "bus/neogeo/fatfury2_prot.h" +#include "bus/neogeo/kof98_prot.h" +#include "bus/neogeo/sbp_prot.h" +#include "bus/neogeo/kog_prot.h" + +#include "bus/neogeo_ctrl/ctrl.h" + +// On scanline 224, /VBLANK goes low 56 mclks (14 pixels) from the rising edge of /HSYNC. +// Two mclks after /VBLANK goes low, the hardware sets a pending IRQ1 flip-flop. +#define NEOGEO_VBLANK_IRQ_HTIM (attotime::from_ticks(56+2, NEOGEO_MASTER_CLOCK)) + + +class neogeo_state : public driver_device +{ +public: + neogeo_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_banked_cart(*this, "banked_cart"), + m_maincpu(*this, "maincpu"), + m_audiocpu(*this, "audiocpu"), + m_region_maincpu(*this, "maincpu"), + m_region_sprites(*this, "sprites"), + m_region_fixed(*this, "fixed"), + m_region_fixedbios(*this, "fixedbios"), + //m_bank_vectors(*this, "vectors"), + //m_bank_cartridge(*this, "cartridge"), + m_bank_audio_main(*this, "audio_main"), + m_upd4990a(*this, "upd4990a"), + m_save_ram(*this, "saveram"), + m_screen(*this, "screen"), + m_palette(*this, "palette"), + m_memcard(*this, "memcard"), + m_dsw(*this, "DSW"), + m_trackx(*this, "TRACK_X"), + m_tracky(*this, "TRACK_Y"), + m_edge(*this, "edge"), + m_ctrl1(*this, "ctrl1"), + m_ctrl2(*this, "ctrl2"), + m_sprgen(*this, "spritegen"), + m_use_cart_vectors(0), + m_use_cart_audio(0), + m_cartslot1(*this, "cartslot1"), + m_cartslot2(*this, "cartslot2"), + m_cartslot3(*this, "cartslot3"), + m_cartslot4(*this, "cartslot4"), + m_cartslot5(*this, "cartslot5"), + m_cartslot6(*this, "cartslot6"), + m_currentslot(-1) + { } + + DECLARE_WRITE8_MEMBER(io_control_w); + DECLARE_READ16_MEMBER(memcard_r); + DECLARE_WRITE16_MEMBER(memcard_w); + DECLARE_WRITE8_MEMBER(audio_command_w); + DECLARE_READ8_MEMBER(audio_command_r); + DECLARE_READ8_MEMBER(audio_cpu_bank_select_r); + DECLARE_WRITE8_MEMBER(audio_cpu_enable_nmi_w); + DECLARE_WRITE8_MEMBER(system_control_w); + DECLARE_READ16_MEMBER(neogeo_unmapped_r); + DECLARE_READ16_MEMBER(neogeo_paletteram_r); + DECLARE_WRITE16_MEMBER(neogeo_paletteram_w); + DECLARE_READ16_MEMBER(neogeo_video_register_r); + DECLARE_WRITE16_MEMBER(neogeo_video_register_w); + READ16_MEMBER(banked_vectors_r); + DECLARE_READ16_MEMBER(in0_r); + DECLARE_READ16_MEMBER(in1_r); + + void set_slot_number(int slot); + + DECLARE_CUSTOM_INPUT_MEMBER(get_memcard_status); + DECLARE_CUSTOM_INPUT_MEMBER(get_audio_result); + + TIMER_CALLBACK_MEMBER(display_position_interrupt_callback); + TIMER_CALLBACK_MEMBER(display_position_vblank_callback); + TIMER_CALLBACK_MEMBER(vblank_interrupt_callback); + + // MVS-specific + DECLARE_WRITE16_MEMBER(save_ram_w); + DECLARE_CUSTOM_INPUT_MEMBER(kizuna4p_start_r); + DECLARE_INPUT_CHANGED_MEMBER(select_bios); + + UINT32 screen_update_neogeo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + DECLARE_DRIVER_INIT(neogeo); + DECLARE_DRIVER_INIT(mvs); + + optional_device<neogeo_banked_cart_device> m_banked_cart; + +protected: + void neogeo_postload(); + void update_interrupts(); + void create_interrupt_timers(); + void start_interrupt_timers(); + void neogeo_acknowledge_interrupt(UINT16 data); + + void neogeo_main_cpu_banking_init(); + void neogeo_audio_cpu_banking_init(int set_entry); + void adjust_display_position_interrupt_timer(); + void neogeo_set_display_position_interrupt_control(UINT16 data); + void neogeo_set_display_counter_msb(UINT16 data); + void neogeo_set_display_counter_lsb(UINT16 data); + void set_video_control( UINT16 data ); + + void create_rgb_lookups(); + void set_pens(); + void neogeo_set_screen_shadow( int data ); + void neogeo_set_palette_bank( int data ); + + void audio_cpu_check_nmi(); + void set_save_ram_unlock( UINT8 data ); + void set_outputs( ); + void set_output_latch( UINT8 data ); + void set_output_data( UINT8 data ); + + + // device overrides + virtual void machine_start() override; + virtual void machine_reset() override; + + // devices + required_device<cpu_device> m_maincpu; + required_device<cpu_device> m_audiocpu; + + // memory + required_memory_region m_region_maincpu; + required_memory_region m_region_sprites; + required_memory_region m_region_fixed; + optional_memory_region m_region_fixedbios; + //required_memory_bank m_bank_vectors; + //optional_memory_bank m_bank_cartridge; // optional because of neocd + optional_memory_bank m_bank_audio_main; // optional because of neocd + memory_bank *m_bank_audio_cart[4]; + + // MVS-specific devices + optional_device<upd4990a_device> m_upd4990a; + optional_shared_ptr<UINT16> m_save_ram; + + required_device<screen_device> m_screen; + optional_device<palette_device> m_palette; + optional_device<ng_memcard_device> m_memcard; + + // configuration + enum {NEOGEO_MVS, NEOGEO_AES, NEOGEO_CD} m_type; + + // internal state + bool m_recurse; + bool m_audio_cpu_nmi_enabled; + bool m_audio_cpu_nmi_pending; + + // MVS-specific state + UINT8 m_save_ram_unlocked; + UINT8 m_output_data; + UINT8 m_output_latch; + UINT8 m_el_value; + UINT8 m_led1_value; + UINT8 m_led2_value; + + optional_ioport m_dsw; + optional_ioport m_trackx; + optional_ioport m_tracky; + optional_device<neogeo_ctrl_edge_port_device> m_edge; + optional_device<neogeo_control_port_device> m_ctrl1; + optional_device<neogeo_control_port_device> m_ctrl2; + + // video hardware, including maincpu interrupts + // TODO: make into a device + virtual void video_start() override; + virtual void video_reset() override; + + emu_timer *m_display_position_interrupt_timer; + emu_timer *m_display_position_vblank_timer; + emu_timer *m_vblank_interrupt_timer; + UINT32 m_display_counter; + UINT8 m_vblank_interrupt_pending; + UINT8 m_display_position_interrupt_pending; + UINT8 m_irq3_pending; + UINT8 m_display_position_interrupt_control; + UINT8 m_vblank_level; + UINT8 m_raster_level; + + required_device<neosprite_optimized_device> m_sprgen; + UINT16 get_video_control( ); + + // color/palette related + std::vector<UINT16> m_paletteram; + UINT8 m_palette_lookup[32][4]; + const pen_t *m_bg_pen; + int m_screen_shadow; + int m_palette_bank; + + + int m_use_cart_vectors; + int m_use_cart_audio; + + // cart slots + optional_device<neogeo_cart_slot_device> m_cartslot1; + optional_device<neogeo_cart_slot_device> m_cartslot2; + optional_device<neogeo_cart_slot_device> m_cartslot3; + optional_device<neogeo_cart_slot_device> m_cartslot4; + optional_device<neogeo_cart_slot_device> m_cartslot5; + optional_device<neogeo_cart_slot_device> m_cartslot6; + neogeo_cart_slot_device* m_cartslots[6]; + int m_currentslot; + + +public: + DECLARE_READ16_MEMBER(neogeo_slot_rom_low_r); + DECLARE_READ16_MEMBER(neogeo_slot_rom_low_bectors_r); + +}; + + +class neogeo_noslot_state : public neogeo_state +{ + public: + neogeo_noslot_state(const machine_config &mconfig, device_type type, const char *tag) + : neogeo_state(mconfig, type, tag), + /* legacy cartridge specifics */ + m_mslugx_prot(*this, "mslugx_prot"), + m_sma_prot(*this, "sma_prot"), + m_cmc_prot(*this, "cmc_prot"), + m_pcm2_prot(*this, "pcm2_prot"), + m_pvc_prot(*this, "pvc_prot"), + m_bootleg_prot(*this, "bootleg_prot"), + m_kof2002_prot(*this, "kof2002_prot"), + m_fatfury2_prot(*this, "fatfury2_prot"), + m_kof98_prot(*this, "kof98_prot"), + m_sbp_prot(*this, "sbp_prot") {} + + + DECLARE_DRIVER_INIT(fatfury2); + DECLARE_DRIVER_INIT(zupapa); + DECLARE_DRIVER_INIT(kof98); + DECLARE_DRIVER_INIT(mslugx); + DECLARE_DRIVER_INIT(kof99); + DECLARE_DRIVER_INIT(kof99k); + DECLARE_DRIVER_INIT(garou); + DECLARE_DRIVER_INIT(garouh); + DECLARE_DRIVER_INIT(garoubl); + DECLARE_DRIVER_INIT(mslug3); + DECLARE_DRIVER_INIT(mslug3h); + DECLARE_DRIVER_INIT(mslug3b6); + DECLARE_DRIVER_INIT(kof2000); + DECLARE_DRIVER_INIT(kof2000n); + DECLARE_DRIVER_INIT(kof2001); + DECLARE_DRIVER_INIT(cthd2003); + DECLARE_DRIVER_INIT(ct2k3sp); + DECLARE_DRIVER_INIT(ct2k3sa); + DECLARE_DRIVER_INIT(mslug4); + DECLARE_DRIVER_INIT(ms4plus); + DECLARE_DRIVER_INIT(ganryu); + DECLARE_DRIVER_INIT(s1945p); + DECLARE_DRIVER_INIT(preisle2); + DECLARE_DRIVER_INIT(bangbead); + DECLARE_DRIVER_INIT(nitd); + DECLARE_DRIVER_INIT(sengoku3); + DECLARE_DRIVER_INIT(rotd); + DECLARE_DRIVER_INIT(kof2002); + DECLARE_DRIVER_INIT(kof2002b); + DECLARE_DRIVER_INIT(kf2k2pls); + DECLARE_DRIVER_INIT(kf2k2mp); + DECLARE_DRIVER_INIT(kf2k2mp2); + DECLARE_DRIVER_INIT(kof10th); + DECLARE_DRIVER_INIT(kf10thep); + DECLARE_DRIVER_INIT(kf2k5uni); + DECLARE_DRIVER_INIT(kof2k4se); + DECLARE_DRIVER_INIT(matrim); + DECLARE_DRIVER_INIT(matrimbl); + DECLARE_DRIVER_INIT(pnyaa); + DECLARE_DRIVER_INIT(mslug5); + DECLARE_DRIVER_INIT(ms5pcb); + DECLARE_DRIVER_INIT(ms5plus); + DECLARE_DRIVER_INIT(svcpcb); + DECLARE_DRIVER_INIT(svc); + DECLARE_DRIVER_INIT(svcboot); + DECLARE_DRIVER_INIT(svcplus); + DECLARE_DRIVER_INIT(svcplusa); + DECLARE_DRIVER_INIT(svcsplus); + DECLARE_DRIVER_INIT(samsho5); + DECLARE_DRIVER_INIT(samsho5b); + DECLARE_DRIVER_INIT(kf2k3pcb); + DECLARE_DRIVER_INIT(kof2003); + DECLARE_DRIVER_INIT(kof2003h); + DECLARE_DRIVER_INIT(kf2k3bl); + DECLARE_DRIVER_INIT(kf2k3pl); + DECLARE_DRIVER_INIT(kf2k3upl); + DECLARE_DRIVER_INIT(samsh5sp); + DECLARE_DRIVER_INIT(jockeygp); + DECLARE_DRIVER_INIT(vliner); + DECLARE_DRIVER_INIT(kof97oro); + DECLARE_DRIVER_INIT(lans2004); + DECLARE_DRIVER_INIT(sbp); + DECLARE_DRIVER_INIT(irrmaze); + + void install_banked_bios(); + // non-carts + void svcpcb_gfx_decrypt(); + void svcpcb_s1data_decrypt(); + void kf2k3pcb_gfx_decrypt(); + void kf2k3pcb_decrypt_s1data(); + void kf2k3pcb_sp1_decrypt(); + + + // legacy + optional_device<mslugx_prot_device> m_mslugx_prot; + optional_device<sma_prot_device> m_sma_prot; + optional_device<cmc_prot_device> m_cmc_prot; + optional_device<pcm2_prot_device> m_pcm2_prot; + optional_device<pvc_prot_device> m_pvc_prot; + optional_device<ngbootleg_prot_device> m_bootleg_prot; + optional_device<kof2002_prot_device> m_kof2002_prot; + optional_device<fatfury2_prot_device> m_fatfury2_prot; + optional_device<kof98_prot_device> m_kof98_prot; + optional_device<sbp_prot_device> m_sbp_prot; +}; + +class neogeo_noslot_kog_state : public neogeo_state +{ +public: + neogeo_noslot_kog_state(const machine_config &mconfig, device_type type, const char *tag) + : neogeo_state(mconfig, type, tag), + /* legacy cartridge specifics */ + m_bootleg_prot(*this, "bootleg_prot"), + m_kog_prot(*this, "kog_prot") {} + + + DECLARE_DRIVER_INIT(kog); + + // legacy + optional_device<ngbootleg_prot_device> m_bootleg_prot; + optional_device<kog_prot_device> m_kog_prot; +}; + +/*----------- defined in drivers/neogeo.c -----------*/ + +MACHINE_CONFIG_EXTERN( neogeo_base ); +MACHINE_CONFIG_EXTERN( neogeo_arcade ); +INPUT_PORTS_EXTERN(neogeo); +ADDRESS_MAP_EXTERN(neogeo_main_map,16); + +/************************************* + * + * Neo-Geo bios + * + ************************************* + + These are the known Bios Roms, Set options.bios to the one you want. + + The Universe bios roms are supported because they're now used on enough PCBs + to be considered 'in active arcade use' rather than just homebrew hacks. + Some may be missing, there have been multiple CRCs reported for the same + revision in some cases (the Universe bios has an option for entering / displaying + a serial number; these should be noted as such if they're added). + Universe bios prior to version 1.3 was incompatible with AES. + + The 'japan-hotel' BIOS is a dump of an MVS which could be found in some japanese + hotels. it is a custom MVS mobo which uses MVS carts but it hasn't jamma + connector and it's similar to a console with a coin mechanism, so it's a sort + of little coin op console installed in hotels. + + The sp-45.sp1 bios is the latest 'ASIA' revision. Japan-j3.bin is the latest 'JAPAN' + revision. Both of them are also used in the sp-4x.sp1 bios of the Jamma PCB boards. + + The current Neo-Geo MVS system set (SFIX/SM1/000-LO) used is from a NEO-MVH MV1FS board. + Other boards (MV1xx / MV2x / MV4x /MV6x) other system sets? + + Zoom ROM (LO) 128K TC531000CP 1x 128Kx8 Zoom look-up table ROM + Fix ROM (SFIX) 128K 27C1000 1x 128Kx8 Text layer graphics ROM + Sound ROM (SM1) 128K 27C1000/23C1000 1x 128Kx8 Z80 program ROM + +*/ + +#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ + ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_OPTIONAL | ROM_BIOS(bios+1)) /* Note '+1' */ + +#define NEOGEO_UNIBIOS(x) \ + ROM_SYSTEM_BIOS( x+ 0, "unibios32", "Universe Bios (Hack, Ver. 3.2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 0, "uni-bios_3_2.rom", 0x00000, 0x020000, CRC(a4e8b9b3) SHA1(c92f18c3f1edda543d264ecd0ea915240e7c8258) ) /* Universe Bios v3.2 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 1, "unibios31", "Universe Bios (Hack, Ver. 3.1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 1, "uni-bios_3_1.rom", 0x00000, 0x020000, CRC(0c58093f) SHA1(29329a3448c2505e1ff45ffa75e61e9693165153) ) /* Universe Bios v3.1 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 2, "unibios30", "Universe Bios (Hack, Ver. 3.0)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 2, "uni-bios_3_0.rom", 0x00000, 0x020000, CRC(a97c89a9) SHA1(97a5eff3b119062f10e31ad6f04fe4b90d366e7f) ) /* Universe Bios v3.0 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 3, "unibios23", "Universe Bios (Hack, Ver. 2.3)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 3, "uni-bios_2_3.rom", 0x00000, 0x020000, CRC(27664eb5) SHA1(5b02900a3ccf3df168bdcfc98458136fd2b92ac0) ) /* Universe Bios v2.3 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 4, "unibios23o", "Universe Bios (Hack, Ver. 2.3, older?)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 4, "uni-bios_2_3o.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) alt version, withdrawn? */ \ + ROM_SYSTEM_BIOS( x+ 5, "unibios22", "Universe Bios (Hack, Ver. 2.2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 5, "uni-bios_2_2.rom", 0x00000, 0x020000, CRC(2d50996a) SHA1(5241a4fb0c63b1a23fd1da8efa9c9a9bd3b4279c) ) /* Universe Bios v2.2 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 6, "unibios21", "Universe Bios (Hack, Ver. 2.1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 6, "uni-bios_2_1.rom", 0x00000, 0x020000, CRC(8dabf76b) SHA1(c23732c4491d966cf0373c65c83c7a4e88f0082c) ) /* Universe Bios v2.1 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 7, "unibios20", "Universe Bios (Hack, Ver. 2.0)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 7, "uni-bios_2_0.rom", 0x00000, 0x020000, CRC(0c12c2ad) SHA1(37bcd4d30f3892078b46841d895a6eff16dc921e) ) /* Universe Bios v2.0 (hack) */ \ + ROM_SYSTEM_BIOS( x+ 8, "unibios13", "Universe Bios (Hack, Ver. 1.3)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 8, "uni-bios_1_3.rom", 0x00000, 0x020000, CRC(b24b44a0) SHA1(eca8851d30557b97c309a0d9f4a9d20e5b14af4e) ) /* Universe Bios v1.3 (hack) */ +#define NEOGEO_UNIBIOS_1_2_AND_OLDER(x) \ + ROM_SYSTEM_BIOS( x+ 9, "unibios12", "Universe Bios (Hack, Ver. 1.2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+ 9, "uni-bios_1_2.rom", 0x00000, 0x020000, CRC(4fa698e9) SHA1(682e13ec1c42beaa2d04473967840c88fd52c75a) ) /* Universe Bios v1.2 (hack) */ \ + ROM_SYSTEM_BIOS( x+10, "unibios12o", "Universe Bios (Hack, Ver. 1.2, older)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+10, "uni-bios_1_2o.rom", 0x00000, 0x020000, CRC(e19d3ce9) SHA1(af88ef837f44a3af2d7144bb46a37c8512b67770) ) /* Universe Bios v1.2 (hack) alt version */ \ + ROM_SYSTEM_BIOS( x+11, "unibios11", "Universe Bios (Hack, Ver. 1.1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+11, "uni-bios_1_1.rom", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ \ + ROM_SYSTEM_BIOS( x+12, "unibios10", "Universe Bios (Hack, Ver. 1.0)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( x+12, "uni-bios_1_0.rom", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */ + +#define NEOGEO_BIOS \ + ROM_REGION16_BE( 0x80000, "mainbios", 0 ) \ + ROM_SYSTEM_BIOS( 0, "euro", "Europe MVS (Ver. 2)" ) \ + ROMX_LOAD("euro_s1", 0, 0x20000, CRC(9036d879) SHA1(4f5ed7105b7128794654ce82b51723e16e389543), ROM_GROUPWORD | ROM_REVERSE | ROM_OPTIONAL | ROM_BIOS(1)) \ + ROM_SYSTEM_BIOS( 1, "euro-s1", "Europe MVS (Ver. 1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 1, "sp-s.sp1", 0x00000, 0x020000, CRC(c7f2fa45) SHA1(09576ff20b4d6b365e78e6a5698ea450262697cd) ) /* Europe, 4 Slot */ \ + ROM_SYSTEM_BIOS( 2, "us", "US MVS (Ver. 2?)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 2, "sp-u2.sp1", 0x00000, 0x020000, CRC(e72943de) SHA1(5c6bba07d2ec8ac95776aa3511109f5e1e2e92eb) ) /* US, 2 Slot */ \ + ROM_SYSTEM_BIOS( 3, "us-e", "US MVS (Ver. 1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 3, "sp-e.sp1", 0x00000, 0x020000, CRC(2723a5b5) SHA1(5dbff7531cf04886cde3ef022fb5ca687573dcb8) ) /* US, 6 Slot (V5?) */ \ + ROM_SYSTEM_BIOS( 4, "us-v2", "US MVS (4 slot, Ver 2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 4, "v2.bin", 0x00000, 0x020000, CRC(62f021f4) SHA1(62d372269e1b3161c64ae21123655a0a22ffd1bb) ) /* US, 4 slot */ \ + ROM_SYSTEM_BIOS( 5, "asia", "Asia MVS (Ver. 3)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 5, "asia-s3.rom", 0x00000, 0x020000, CRC(91b64be3) SHA1(720a3e20d26818632aedf2c2fd16c54f213543e1) ) /* Asia */ \ + ROM_SYSTEM_BIOS( 6, "japan", "Japan MVS (Ver. 3)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 6, "vs-bios.rom", 0x00000, 0x020000, CRC(f0e8f27d) SHA1(ecf01eda815909f1facec62abf3594eaa8d11075) ) /* Japan, Ver 6 VS Bios */ \ + ROM_SYSTEM_BIOS( 7, "japan-s2", "Japan MVS (Ver. 2)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 7, "sp-j2.sp1", 0x00000, 0x020000, CRC(acede59c) SHA1(b6f97acd282fd7e94d9426078a90f059b5e9dd91) ) /* Japan, Older */ \ + ROM_SYSTEM_BIOS( 8, "japan-s1", "Japan MVS (Ver. 1)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 8, "sp1.jipan.1024", 0x00000, 0x020000, CRC(9fb0abe4) SHA1(18a987ce2229df79a8cf6a84f968f0e42ce4e59d) ) /* Japan, Older */ \ + ROM_SYSTEM_BIOS( 9, "mv1c", "NEO-MVH MV1C" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 9, "sp-45.sp1", 0x00000, 0x080000, CRC(03cc9f6a) SHA1(cdf1f49e3ff2bac528c21ed28449cf35b7957dc1) ) /* Latest Asia bios */ \ + ROM_SYSTEM_BIOS( 10, "japan-j3", "Japan MVS (J3)" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 10, "japan-j3.bin", 0x00000, 0x020000, CRC(dff6d41f) SHA1(e92910e20092577a4523a6b39d578a71d4de7085) ) /* Latest Japan bios; correct chip label unknown */ \ + ROM_SYSTEM_BIOS( 11, "japan-hotel", "Custom Japanese Hotel" ) \ + ROM_LOAD16_WORD_SWAP_BIOS( 11, "sp-1v1_3db8c.bin", 0x00000, 0x020000, CRC(162f0ebe) SHA1(fe1c6dd3dfcf97d960065b1bb46c1e11cb7bf271) ) /* 'rare MVS found in japanese hotels' shows v1.3 in test mode */ \ + \ + NEOGEO_UNIBIOS(12) \ + NEOGEO_UNIBIOS_1_2_AND_OLDER(12) + + +#define NEO_BIOS_AUDIO_64K(name, hash) \ + NEOGEO_BIOS \ + ROM_REGION( 0x20000, "audiobios", 0 ) \ + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ + ROM_REGION( 0x20000, "audiocpu", 0 ) \ + ROM_LOAD( name, 0x00000, 0x10000, hash ) \ + ROM_RELOAD( 0x10000, 0x10000 ) + +#define NEO_BIOS_AUDIO_128K(name, hash) \ + NEOGEO_BIOS \ + ROM_REGION( 0x20000, "audiobios", 0 ) \ + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ + ROM_REGION( 0x30000, "audiocpu", 0 ) \ + ROM_LOAD( name, 0x00000, 0x20000, hash ) \ + ROM_RELOAD( 0x10000, 0x20000 ) + +#define NEO_BIOS_AUDIO_256K(name, hash) \ + NEOGEO_BIOS \ + ROM_REGION( 0x20000, "audiobios", 0 ) \ + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ + ROM_REGION( 0x50000, "audiocpu", 0 ) \ + ROM_LOAD( name, 0x00000, 0x40000, hash ) \ + ROM_RELOAD( 0x10000, 0x40000 ) + +#define NEO_BIOS_AUDIO_512K(name, hash) \ + NEOGEO_BIOS \ + ROM_REGION( 0x20000, "audiobios", 0 ) \ + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ + ROM_REGION( 0x90000, "audiocpu", 0 ) \ + ROM_LOAD( name, 0x00000, 0x80000, hash ) \ + ROM_RELOAD( 0x10000, 0x80000 ) + + +#define NEO_BIOS_AUDIO_ENCRYPTED_128K(name, hash) \ + NEOGEO_BIOS \ + ROM_REGION( 0x20000, "audiobios", 0 ) \ + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ + ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF ) \ + ROM_REGION( 0x80000, "audiocrypt", 0 ) \ + ROM_LOAD( name, 0x00000, 0x20000, hash ) +#define NEO_BIOS_AUDIO_ENCRYPTED_256K(name, hash) \ + NEOGEO_BIOS \ + ROM_REGION( 0x20000, "audiobios", 0 ) \ + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ + ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF ) \ + ROM_REGION( 0x80000, "audiocrypt", 0 ) \ + ROM_LOAD( name, 0x00000, 0x40000, hash ) +#define NEO_BIOS_AUDIO_ENCRYPTED_512K(name, hash) \ + NEOGEO_BIOS \ + ROM_REGION( 0x20000, "audiobios", 0 ) \ + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) \ + ROM_REGION( 0x90000, "audiocpu", ROMREGION_ERASEFF ) \ + ROM_REGION( 0x80000, "audiocrypt", 0 ) \ + ROM_LOAD( name, 0x00000, 0x80000, hash ) + + +#define NEO_SFIX_64K(name, hash) \ + ROM_REGION( 0x20000, "fixed", 0 ) \ + ROM_LOAD( name, 0x000000, 0x10000, hash ) \ + ROM_REGION( 0x20000, "fixedbios", 0 ) \ + ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) \ + ROM_Y_ZOOM + +#define NEO_SFIX_128K(name, hash) \ + ROM_REGION( 0x20000, "fixed", 0 ) \ + ROM_LOAD( name, 0x000000, 0x20000, hash ) \ + ROM_REGION( 0x20000, "fixedbios", 0 ) \ + ROM_LOAD( "sfix.sfix", 0x000000, 0x20000, CRC(c2ea0cfd) SHA1(fd4a618cdcdbf849374f0a50dd8efe9dbab706c3) ) \ + ROM_Y_ZOOM + +#define ROM_Y_ZOOM \ + ROM_REGION( 0x20000, "zoomy", 0 ) \ + ROM_LOAD( "000-lo.lo", 0x00000, 0x20000, CRC(5a86cff2) SHA1(5992277debadeb64d1c1c64b0a92d9293eaf7e4a) ) diff --git a/docs/release/src/hbmame/includes/pacman.h b/docs/release/src/hbmame/includes/pacman.h index 689e012ee37..ae4de9bd4bc 100644 --- a/docs/release/src/hbmame/includes/pacman.h +++ b/docs/release/src/hbmame/includes/pacman.h @@ -1,6 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Robbbert #include "sound/namco.h" +#include "machine/watchdog.h" /************************************************************************* diff --git a/docs/release/src/hbmame/machine/neocrypt.cpp b/docs/release/src/hbmame/machine/neocrypt.cpp new file mode 100644 index 00000000000..13828aa8c45 --- /dev/null +++ b/docs/release/src/hbmame/machine/neocrypt.cpp @@ -0,0 +1,215 @@ +// license:BSD-3-Clause +// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari +// thanks-to:Fuzz + +/*************************************************************************** + + Neo-Geo hardware encryption devices + + NeoGeo 'C' (Graphics) Rom encryption + CMC42 and CMC50 protection chips + Also contains 'S' (Text Layer) data on these games + M1 (Z80) rom is also encrypted for CMC50 + + The M1 roms contain some additional data at 0xf800. Some of this + is said to be related to the C rom encryption. + If CMC50 is used, data located at 0xff00 - 0xffff is required for + m1 encryption checksum?. + + Later games use additional basic scrambling on top of the standard + CMC scramble. + + NeoGeo 'P' Rom Encryption + Used on various games + + kof98 + - unique early encryption + kof99, garou, garouh, mslug3, kof2000 + - complex SMA chip which appears to contain part of the game rom + internally and decrypts the 68k code on the board. Also has a + random number generator and custom bankswitching + (see machine/neoprot.c) + kof2002, matrim, samsho5, samsh5p + - some basic block / bank swapping + svc, kof2003, mslug5 + - different scrambling with additional xor + + NeoGeo 'V' Rom encryption + NEO-PCM2 chip used on various games + type1 used on pnyaa, rotd, mslug4 + type2 used on kof2002, matrim, mslug5, svc, + samsho5, samsh5s, kof2003 + +***************************************************************************/ + +#include "emu.h" +#include "includes/neogeo.h" + + + + +/* ms5pcb and svcpcb have an additional scramble on top of the standard CMC scrambling */ +void neogeo_noslot_state::svcpcb_gfx_decrypt() +{ + static const UINT8 xorval[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 }; + int i; + int ofst; + int rom_size = memregion( "sprites" )->bytes(); + UINT8 *rom = memregion( "sprites" )->base(); + dynamic_buffer buf( rom_size ); + + for( i = 0; i < rom_size; i++ ) + { + rom[ i ] ^= xorval[ (i % 4) ]; + } + for( i = 0; i < rom_size; i += 4 ) + { + UINT32 rom32 = rom[i] | rom[i+1]<<8 | rom[i+2]<<16 | rom[i+3]<<24; + rom32 = BITSWAP32( rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12, 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16 ); + buf[i] = rom32 & 0xff; + buf[i+1] = (rom32>>8) & 0xff; + buf[i+2] = (rom32>>16) & 0xff; + buf[i+3] = (rom32>>24) & 0xff; + } + for( i = 0; i < rom_size / 4; i++ ) + { + ofst = BITSWAP24( (i & 0x1fffff), 0x17, 0x16, 0x15, 0x04, 0x0b, 0x0e, 0x08, 0x0c, 0x10, 0x00, 0x0a, 0x13, 0x03, 0x06, 0x02, 0x07, 0x0d, 0x01, 0x11, 0x09, 0x14, 0x0f, 0x12, 0x05 ); + ofst ^= 0x0c8923; + ofst += (i & 0xffe00000); + memcpy( &rom[ i * 4 ], &buf[ ofst * 4 ], 0x04 ); + } +} + + +/* and a further swap on the s1 data */ +void neogeo_noslot_state::svcpcb_s1data_decrypt() +{ + int i; + UINT8 *s1 = memregion( "fixed" )->base(); + size_t s1_size = memregion( "fixed" )->bytes(); + + for( i = 0; i < s1_size; i++ ) // Decrypt S + { + s1[ i ] = BITSWAP8( s1[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 ); + } +} + + +/* kf2k3pcb has an additional scramble on top of the standard CMC scrambling */ +/* Thanks to Razoola & Halrin for the info */ +void neogeo_noslot_state::kf2k3pcb_gfx_decrypt() +{ + static const UINT8 xorval[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 }; + int i; + int ofst; + int rom_size = memregion( "sprites" )->bytes(); + UINT8 *rom = memregion( "sprites" )->base(); + dynamic_buffer buf( rom_size ); + + for ( i = 0; i < rom_size; i++ ) + { + rom[ i ] ^= xorval[ (i % 4) ]; + } + for ( i = 0; i < rom_size; i +=4 ) + { + UINT32 rom32 = rom[i] | rom[i+1]<<8 | rom[i+2]<<16 | rom[i+3]<<24; + rom32 = BITSWAP32( rom32, 0x09, 0x0d, 0x13, 0x00, 0x17, 0x0f, 0x03, 0x05, 0x04, 0x0c, 0x11, 0x1e, 0x12, 0x15, 0x0b, 0x06, 0x1b, 0x0a, 0x1a, 0x1c, 0x14, 0x02, 0x0e, 0x1d, 0x18, 0x08, 0x01, 0x10, 0x19, 0x1f, 0x07, 0x16 ); + buf[i] = rom32 & 0xff; + buf[i+1] = (rom32>>8) & 0xff; + buf[i+2] = (rom32>>16) & 0xff; + buf[i+3] = (rom32>>24) & 0xff; + } + for ( i = 0; i < rom_size; i+=4 ) + { + ofst = BITSWAP24( (i & 0x7fffff), 0x17, 0x15, 0x0a, 0x14, 0x13, 0x16, 0x12, 0x11, 0x10, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 ); + ofst ^= 0x000000; + ofst += (i & 0xff800000); + memcpy( &rom[ ofst ], &buf[ i ], 0x04 ); + } +} + + +/* and a further swap on the s1 data */ +void neogeo_noslot_state::kf2k3pcb_decrypt_s1data() +{ + UINT8 *src; + UINT8 *dst; + int i; + int tx_size = memregion( "fixed" )->bytes(); + int srom_size = memregion( "sprites" )->bytes(); + + src = memregion( "sprites" )->base() + srom_size - 0x1000000 - 0x80000; // Decrypt S + dst = memregion( "fixed" )->base(); + + for( i = 0; i < tx_size / 2; i++ ) + { + dst[ i ] = src[ (i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) ]; + } + + src = memregion( "sprites" )->base() + srom_size - 0x80000; + dst = memregion( "fixed" )->base() + 0x80000; + + for( i = 0; i < tx_size / 2; i++ ) + { + dst[ i ] = src[ (i & ~0x1f) + ((i & 7) << 2) + ((~i & 8) >> 2) + ((i & 0x10) >> 4) ]; + } + + dst = memregion( "fixed" )->base(); + + for( i = 0; i < tx_size; i++ ) + { + dst[ i ] = BITSWAP8( dst[ i ] ^ 0xd2, 4, 0, 7, 2, 5, 1, 6, 3 ); + } +} + + + + + +/*************************************************************************** + +NeoGeo 'SP1' (BIOS) ROM encryption + +***************************************************************************/ + + +/* only found on kf2k3pcb */ +void neogeo_noslot_state::kf2k3pcb_sp1_decrypt() +{ + static const UINT8 address[0x40] = { + 0x04,0x0a,0x04,0x0a,0x04,0x0a,0x04,0x0a, + 0x0a,0x04,0x0a,0x04,0x0a,0x04,0x0a,0x04, + 0x09,0x07,0x09,0x07,0x09,0x07,0x09,0x07, + 0x09,0x09,0x04,0x04,0x09,0x09,0x04,0x04, + 0x0b,0x0d,0x0b,0x0d,0x03,0x05,0x03,0x05, + 0x0e,0x0e,0x03,0x03,0x0e,0x0e,0x03,0x03, + 0x03,0x05,0x0b,0x0d,0x03,0x05,0x0b,0x0d, + 0x04,0x00,0x04,0x00,0x0e,0x0a,0x0e,0x0a + }; + + UINT16 *rom = (UINT16 *)memregion("mainbios")->base(); + std::vector<UINT16> buf(0x80000/2); + int i, addr; + + for (i = 0; i < 0x80000/2; i++) + { + // address xor + addr = i ^ 0x0020; + if ( i & 0x00020) addr ^= 0x0010; + if (~i & 0x00010) addr ^= 0x0040; + if (~i & 0x00004) addr ^= 0x0080; + if ( i & 0x00200) addr ^= 0x0100; + if (~i & 0x02000) addr ^= 0x0400; + if (~i & 0x10000) addr ^= 0x1000; + if ( i & 0x02000) addr ^= 0x8000; + addr ^= address[((i >> 1) & 0x38) | (i & 7)]; + buf[i] = rom[addr]; + + // data xor + if (buf[i] & 0x0004) buf[i] ^= 0x0001; + if (buf[i] & 0x0010) buf[i] ^= 0x0002; + if (buf[i] & 0x0020) buf[i] ^= 0x0008; + } + + memcpy(rom, &buf[0], 0x80000); +} diff --git a/docs/release/src/hbmame/machine/ng_memcard.cpp b/docs/release/src/hbmame/machine/ng_memcard.cpp new file mode 100644 index 00000000000..f4c816c6f1c --- /dev/null +++ b/docs/release/src/hbmame/machine/ng_memcard.cpp @@ -0,0 +1,95 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/********************************************************************* + + ng_memcard.c + + NEOGEO Memory card functions. + +*********************************************************************/ + +#include "emu.h" +#include "emuopts.h" +#include "ng_memcard.h" + +// device type definition +const device_type NG_MEMCARD = &device_creator<ng_memcard_device>; + +//------------------------------------------------- +// ng_memcard_device - constructor +//------------------------------------------------- + +ng_memcard_device::ng_memcard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, NG_MEMCARD, "NeoGeo Memory Card", tag, owner, clock, "ng_memcard", __FILE__), + device_image_interface(mconfig, *this) +{ +} + + +//------------------------------------------------- +// device_config_complete - perform any +// operations now that the configuration is +// complete +//------------------------------------------------- + +void ng_memcard_device::device_config_complete() +{ + // set brief and instance name + update_names(); +} + + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void ng_memcard_device::device_start() +{ + save_item(NAME(m_memcard_data)); +} + +/*------------------------------------------------- + memcard_insert - insert an existing memory card + with the given index +-------------------------------------------------*/ + +bool ng_memcard_device::call_load() +{ + if(length() != 0x800) + return IMAGE_INIT_FAIL; + + fseek(0, SEEK_SET); + size_t ret = fread(m_memcard_data, 0x800); + if(ret != 0x800) + return IMAGE_INIT_FAIL; + + return IMAGE_INIT_PASS; +} + +void ng_memcard_device::call_unload() +{ + fseek(0, SEEK_SET); + fwrite(m_memcard_data, 0x800); +} + +bool ng_memcard_device::call_create(int format_type, option_resolution *format_options) +{ + memset(m_memcard_data, 0, 0x800); + + size_t ret = fwrite(m_memcard_data, 0x800); + if(ret != 0x800) + return IMAGE_INIT_FAIL; + + return IMAGE_INIT_PASS; +} + + +READ8_MEMBER(ng_memcard_device::read) +{ + return m_memcard_data[offset]; +} + +WRITE8_MEMBER(ng_memcard_device::write) +{ + m_memcard_data[offset] = data; +} diff --git a/docs/release/src/hbmame/machine/ng_memcard.h b/docs/release/src/hbmame/machine/ng_memcard.h new file mode 100644 index 00000000000..4752c1d1a67 --- /dev/null +++ b/docs/release/src/hbmame/machine/ng_memcard.h @@ -0,0 +1,68 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/********************************************************************* + + ng_memcard.h + + NEOGEO Memory card functions. + +*********************************************************************/ + +#pragma once + +#ifndef __NG_MEMCARD_H__ +#define __NG_MEMCARD_H__ + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_NEOGEO_MEMCARD_ADD(_tag) \ + MCFG_DEVICE_ADD(_tag, NG_MEMCARD, 0) + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +// ======================> ng_memcard_device + +class ng_memcard_device : public device_t, + public device_image_interface +{ +public: + // construction/destruction + ng_memcard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual iodevice_t image_type() const override { return IO_MEMCARD; } + + virtual bool is_readable() const override { return true; } + virtual bool is_writeable() const override { return true; } + virtual bool is_creatable() const override { return true; } + virtual bool must_be_loaded() const override { return false; } + virtual bool is_reset_on_load() const override { return false; } + virtual const char *file_extensions() const override { return "neo"; } + virtual const option_guide *create_option_guide() const override { return nullptr; } + + virtual bool call_load() override; + virtual void call_unload() override; + virtual bool call_create(int format_type, option_resolution *format_options) override; + + // device-level overrides + virtual void device_start() override; + virtual void device_config_complete() override; + + DECLARE_READ8_MEMBER(read); + DECLARE_WRITE8_MEMBER(write); + + /* returns the index of the current memory card, or -1 if none */ + int present() { return is_loaded() ? 0 : -1; } +private: + UINT8 m_memcard_data[0x800]; +}; + + +// device type definition +extern const device_type NG_MEMCARD; + + +#endif /* __NG_MEMCARD_H__ */ diff --git a/docs/release/src/hbmame/video/cps1.cpp b/docs/release/src/hbmame/video/cps1.cpp index 280aee37f79..c2be38c168c 100644 --- a/docs/release/src/hbmame/video/cps1.cpp +++ b/docs/release/src/hbmame/video/cps1.cpp @@ -1641,96 +1641,125 @@ static const struct CPS1config cps1_config_table[]= {"kenseim", CPS_B_21_DEF, mapper_KNM10B }, // wrong, need to convert equations from PAL // HBMAME - {"captcomc", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works - {"captcomh", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works - {"captcommb2", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works - //{"cawingb", CPS_B_16, mapper_CA24B, 0, 0, 0, 0x8F },// no sprites here, ok in fcrash.c - {"cps1demo", CPS_B_04, mapper_demo, 0, 0, 0, 0x80 }, //works - {"cps1frog", CPS_B_04, mapper_frog, 0, 0, 0, 0x80 }, //works - {"cps1test", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works - {"cps1testa", CPS_B_21_DEF, mapper_RCM63B }, //works - {"daimakb", HACK_H_5, mapper_DM22A }, //works - {"dinob", CPS_B_21_QS2, mapper_CD63B, 0, 0, 0, 0x0F }, //works - {"dinoeh", CPS_B_21_QS2, mapper_CD63B }, //works - {"dinoex", CPS_B_21_DEF, mapper_CD63B }, //works - {"dinoh", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works - {"dinoha", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works - {"dinohb", CPS_B_21_QS2, mapper_CD63B, 0, 0, 0, 0x0F }, //works - {"dinojp", CPS_B_21_QS2, mapper_CD63B }, //works - {"dinoslice", CPS_B_21_QS2, mapper_CD63B }, //works - {"dinoz", CPS_B_21_QS2, mapper_CD63B }, //works - {"knight21", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, //works - //{"knightsa", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // a rom is unobtainable - {"knightsb2", HACK_H_6, mapper_KR63B, 0x36, 0, 0x34, 0x44 }, //works - {"knightsh", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works (intro screen is crap) - {"knightsha", HACK_H_7, mapper_KR63B, 0x36, 0, 0x34 }, //works - {"knightsjb", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works - {"knightsro", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, //works - {"kodh", CPS_B_21_DEF, mapper_KD29B, 0x36, 0, 0x34 }, //works - {"pnicku", CPS_B_21_DEF, mapper_PKB10B }, //works - {"punisherb", CPS_B_21_QS3, mapper_PS63B, 0, 0, 0, 0x0E }, //works - {"punisherf", CPS_B_21_QS3, mapper_PS63B }, //works - {"punisherjh", CPS_B_21_QS3, mapper_PS63B }, //works - {"punisherjha", CPS_B_21_QS3, mapper_PS63B }, //works - {"sf2c", CPS_B_13, mapper_STF29, 0x36 }, //works - {"sf2cebr", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works - {"sf2ced", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works - {"sf2ceda", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works - {"sf2ceh", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works - {"sf2koryuh", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2h9", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2h10", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2h11", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2h12", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2h13", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2pun", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works - {"sf2sl73a", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works - {"sf2th", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2tha", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2tlona", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2tlonb", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2tlonc", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2turyu", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2yyc3d5", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2yyc3g", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"sf2yyc6", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works - {"stridergf", CPS_B_01, mapper_ST24M1 }, //works - {"stridergh", CPS_B_01, mapper_ST24M1 }, //works - {"sk2h1", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities - {"sk2h1q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities - {"sk2h2", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities - {"sk2h2q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities - {"sk2h3", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities - {"sk2h11", CPS_B_21_DEF, mapper_TK263B }, //works - {"sk2h12", CPS_B_21_DEF, mapper_TK263B }, //works - {"sk2h13", CPS_B_21_DEF, mapper_TK263B }, //works - {"sk2h14", CPS_B_21_DEF, mapper_TK263B }, //works - {"sk2h21", CPS_B_21_DEF, mapper_TK263B, 0x36 }, //works - {"sk2h22", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h31", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h31q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h32", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h32q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h33", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h33q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h34", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h34q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities - {"sk2h35", CPS_B_21_DEF, mapper_TK263B, 0x36 }, //works - {"varthb", CPS_B_04, mapper_VA63B, 0, 0, 0, 0x0F }, //works - {"wofb", CPS_B_21_DEF, mapper_TK263B }, //works - {"wofch_v3", CPS_B_21_DEF, mapper_sfzch }, //works - {"wofchdx", CPS_B_21_DEF, mapper_sfzch }, //works - {"wofchdx1", CPS_B_21_DEF, mapper_TK263B }, //works - {"wofchdx2", CPS_B_21_DEF, mapper_TK263B }, //works - {"wofjcn", CPS_B_21_QS1, mapper_TK263B }, // problem with chinese language roms - {"woffr", CPS_B_21_DEF, mapper_sfzch }, //works - {"wofjh", CPS_B_21_QS1, mapper_TK263B }, //works - //{"wofjhb", CPS_B_21_QS1, mapper_TK263B }, // unknown rom is missing - //{"wofjhc", CPS_B_21_QS1, mapper_TK263B }, // unknown rom is missing - {"wofjm", CPS_B_21_QS1, mapper_TK263B }, //works - {"wofjzero", CPS_B_21_QS1, mapper_TK263B }, //works - {"wofr1h", CPS_B_21_DEF, mapper_TK263B }, //works - {"wofsf2", CPS_B_21_QS1, mapper_TK263B, 0x36 }, //works + {"3wondrud", CPS_B_21_DEF, mapper_RT24B }, //works + {"captcocc", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, // nw + {"captcoud", CPS_B_21_DEF, mapper_CC63B, 0x36, 0x38, 0x34 }, //works + {"captcovs", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, // nw + {"captcomc", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works + {"captcomh", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works + {"captcommb2", CPS_B_21_BT3, mapper_CC63B, 0x36, 0x38, 0x34 }, //works + //{"cawingb", CPS_B_16, mapper_CA24B, 0, 0, 0, 0x8F }, // no sprites here, ok in fcrash.cpp + {"cps1demo", CPS_B_04, mapper_demo, 0, 0, 0, 0x80 }, //works + {"cps1frog", CPS_B_04, mapper_frog, 0, 0, 0, 0x80 }, //works + {"cps1test", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works + {"cps1testa", CPS_B_21_DEF, mapper_RCM63B }, //works + {"daimakb", HACK_H_5, mapper_DM22A }, //works + {"dino08h2", CPS_B_21_QS2, mapper_CD63B }, //works + {"dino08h3", CPS_B_21_QS2, mapper_CD63B }, //works + {"dino08hp", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinob", CPS_B_21_QS2, mapper_CD63B, 0, 0, 0, 0x0F }, //works + {"dinobt", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinobtpp", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinocgba", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinocgbb", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinocgbc", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinoeh", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinoex", CPS_B_21_DEF, mapper_CD63B }, //works + {"dinoh", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works + {"dinoha", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works + {"dinohb", CPS_B_21_QS2, mapper_CD63B, 0, 0, 0, 0x0F }, //works + {"dinohp", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinohx", CPS_B_21_DEF, mapper_CD63B, 0x36 }, //works + {"dinojp", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinorp", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinoslice", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinouphp", CPS_B_21_QS2, mapper_CD63B }, //works + {"dinoz", CPS_B_21_QS2, mapper_CD63B }, //works + {"ffightb", CPS_B_01, mapper_S224B }, //works + {"knight21", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, //works + //{"knightsa", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, // a rom is unobtainable + {"knightsb2", HACK_H_6, mapper_KR63B, 0x36, 0, 0x34, 0x44 }, //works + {"knightsh", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works (intro screen is crap) + {"knightsha", HACK_H_7, mapper_KR63B, 0x36, 0, 0x34 }, //works + {"knightsjb", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works + {"knightsro", CPS_B_21_BT4, mapper_KR63B, 0x36, 0, 0x34 }, //works + {"knightud", CPS_B_21_DEF, mapper_KR63B, 0x36, 0, 0x34 }, //works + {"kodd", CPS_B_21_DEF, mapper_KD29B, 0x36, 0, 0x34 }, // nw + {"kodh", CPS_B_21_DEF, mapper_KD29B, 0x36, 0, 0x34 }, //works + {"kodsp", CPS_B_21_BT2, mapper_KD29B, 0x36, 0, 0x34 }, //works + {"kodud", CPS_B_21_DEF, mapper_KD29B, 0x36, 0, 0x34 }, // nw + {"pnicku", CPS_B_21_DEF, mapper_PKB10B }, //works + {"punisherb", CPS_B_21_QS3, mapper_PS63B, 0, 0, 0, 0x0E }, //works + {"punisherf", CPS_B_21_QS3, mapper_PS63B }, //works + {"punisherje1", CPS_B_21_QS3, mapper_PS63B }, //works + {"punisherjh", CPS_B_21_QS3, mapper_PS63B }, //works + {"punisherjh1", CPS_B_21_QS3, mapper_PS63B }, //works + {"punisherjha", CPS_B_21_QS3, mapper_PS63B }, //works + {"punisherud1", CPS_B_21_DEF, mapper_PS63B }, //works + {"punisherud2", CPS_B_21_DEF, mapper_PS63B }, //works + {"sf2c", CPS_B_13, mapper_STF29, 0x36 }, //works + {"sf2cebr", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works + {"sf2ced", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works + {"sf2ceda", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works + {"sf2ceh", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works + {"sf2koryuh", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2h9", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2h10", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2h11", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2h12", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2h13", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2pun", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works + {"sf2sl73a", CPS_B_21_DEF, mapper_S9263B, 0x36 }, //works + {"sf2th", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2tha", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2tlona", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2tlonb", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2tlonc", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2turyu", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2yyc3d5", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2yyc3g", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sf2yyc6", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 0x41 }, //works + {"sk2h1", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities + {"sk2h1q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities + {"sk2h2", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities + {"sk2h2q", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities + {"sk2h3", HACK_H_2, mapper_TK263B, 0, 0, 0, 0x8F }, //works, priorities + {"sk2h11", CPS_B_21_DEF, mapper_TK263B }, //works + {"sk2h12", CPS_B_21_DEF, mapper_TK263B }, //works + {"sk2h13", CPS_B_21_DEF, mapper_TK263B }, //works + {"sk2h14", CPS_B_21_DEF, mapper_TK263B }, //works + {"sk2h15", CPS_B_21_DEF, mapper_TK263B }, //works + {"sk2h16", CPS_B_21_DEF, mapper_TK263B }, //works + {"sk2h21", CPS_B_21_DEF, mapper_TK263B, 0x36 }, //works + {"sk2h22", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h31", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h31q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h32", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h32q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h33", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h33q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h34", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h34q", HACK_H_2, mapper_TK263B, 0x36, 0, 0, 0x8F }, //works, priorities + {"sk2h35", CPS_B_21_DEF, mapper_TK263B, 0x36 }, //works + {"slammastud", CPS_B_21_DEF, mapper_MB63B }, //works + {"stridergf", CPS_B_01, mapper_ST24M1 }, //works + {"stridergh", CPS_B_01, mapper_ST24M1 }, //works + {"varthb", CPS_B_04, mapper_VA63B, 0, 0, 0, 0x0F }, //works + {"wofb", CPS_B_21_DEF, mapper_TK263B }, //works + {"wofch_v3", CPS_B_21_DEF, mapper_sfzch }, //works + {"wofchdx", CPS_B_21_DEF, mapper_sfzch }, //works + {"wofchdx1", CPS_B_21_DEF, mapper_TK263B }, //works + {"wofchdx2", CPS_B_21_DEF, mapper_TK263B }, //works + {"wofchspp", CPS_B_21_DEF, mapper_TK263B }, //works + {"wofjcn", CPS_B_21_QS1, mapper_TK263B }, // problem with chinese language roms + {"woffr", CPS_B_21_DEF, mapper_sfzch }, //works + {"wofjh", CPS_B_21_QS1, mapper_TK263B }, //works + {"wofjhb", CPS_B_21_QS1, mapper_TK263B }, //works + {"wofjhc", CPS_B_21_QS1, mapper_TK263B }, //works + {"wofjm", CPS_B_21_QS1, mapper_TK263B }, //works + {"wofjzero", CPS_B_21_QS1, mapper_TK263B }, //works + {"wofr1h", CPS_B_21_DEF, mapper_TK263B }, //works + {"wofsf2", CPS_B_21_QS1, mapper_TK263B, 0x36 }, //works // HBMAME end {nullptr} /* End of table */ diff --git a/docs/release/src/hbmame/video/neogeo.cpp b/docs/release/src/hbmame/video/neogeo.cpp new file mode 100644 index 00000000000..1384166a3b3 --- /dev/null +++ b/docs/release/src/hbmame/video/neogeo.cpp @@ -0,0 +1,279 @@ +// license:BSD-3-Clause +// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari +// thanks-to:Fuzz +/*************************************************************************** + + Neo-Geo hardware + +****************************************************************************/ + +#include "emu.h" +#include "includes/neogeo.h" +#include "video/resnet.h" + +#define NUM_PENS (0x1000) + + + + +/************************************* + * + * Palette handling + * + *************************************/ + +void neogeo_state::create_rgb_lookups() +{ + static const int resistances[] = {3900, 2200, 1000, 470, 220}; + + /* compute four sets of weights - with or without the pulldowns - + ensuring that we use the same scaler for all */ + double weights_normal[5]; + double scaler = compute_resistor_weights(0, 255, -1, + 5, resistances, weights_normal, 0, 0, + 0, nullptr, nullptr, 0, 0, + 0, nullptr, nullptr, 0, 0); + + double weights_dark[5]; + compute_resistor_weights(0, 255, scaler, + 5, resistances, weights_dark, 8200, 0, + 0, nullptr, nullptr, 0, 0, + 0, nullptr, nullptr, 0, 0); + + double weights_shadow[5]; + compute_resistor_weights(0, 255, scaler, + 5, resistances, weights_shadow, 150, 0, + 0, nullptr, nullptr, 0, 0, + 0, nullptr, nullptr, 0, 0); + + double weights_dark_shadow[5]; + compute_resistor_weights(0, 255, scaler, + 5, resistances, weights_dark_shadow, 1.0 / ((1.0 / 8200) + (1.0 / 150)), 0, + 0, nullptr, nullptr, 0, 0, + 0, nullptr, nullptr, 0, 0); + + for (int i = 0; i < 32; i++) + { + int i4 = (i >> 4) & 1; + int i3 = (i >> 3) & 1; + int i2 = (i >> 2) & 1; + int i1 = (i >> 1) & 1; + int i0 = (i >> 0) & 1; + m_palette_lookup[i][0] = combine_5_weights(weights_normal, i0, i1, i2, i3, i4); + m_palette_lookup[i][1] = combine_5_weights(weights_dark, i0, i1, i2, i3, i4); + m_palette_lookup[i][2] = combine_5_weights(weights_shadow, i0, i1, i2, i3, i4); + m_palette_lookup[i][3] = combine_5_weights(weights_dark_shadow, i0, i1, i2, i3, i4); + } +} + +void neogeo_state::set_pens() +{ + const pen_t *pen_base = m_palette->pens() + m_palette_bank + (m_screen_shadow ? 0x2000 : 0); + m_sprgen->set_pens(pen_base); + m_bg_pen = pen_base + 0xfff; +} + + +void neogeo_state::neogeo_set_screen_shadow( int data ) +{ + m_screen_shadow = data; + set_pens(); +} + + +void neogeo_state::neogeo_set_palette_bank( int data ) +{ + m_palette_bank = data ? 0x1000 : 0; + set_pens(); +} + + +READ16_MEMBER(neogeo_state::neogeo_paletteram_r) +{ + return m_paletteram[m_palette_bank + offset]; +} + + +WRITE16_MEMBER(neogeo_state::neogeo_paletteram_w) +{ + offset += m_palette_bank; + data = COMBINE_DATA(&m_paletteram[offset]); + + int dark = data >> 15; + int r = ((data >> 14) & 0x1) | ((data >> 7) & 0x1e); + int g = ((data >> 13) & 0x1) | ((data >> 3) & 0x1e); + int b = ((data >> 12) & 0x1) | ((data << 1) & 0x1e); + + m_palette->set_pen_color(offset, + m_palette_lookup[r][dark], + m_palette_lookup[g][dark], + m_palette_lookup[b][dark]); // normal + + m_palette->set_pen_color(offset + 0x2000, + m_palette_lookup[r][dark+2], + m_palette_lookup[g][dark+2], + m_palette_lookup[b][dark+2]); // shadow +} + + + +/************************************* + * + * Video system start + * + *************************************/ + +void neogeo_state::video_start() +{ + create_rgb_lookups(); + + m_paletteram.resize(0x1000 * 2); + memset(&m_paletteram[0], 0, 0x1000 * 2 * sizeof(m_paletteram[0])); + + m_screen_shadow = 0; + m_palette_bank = 0; + + save_item(NAME(m_paletteram)); + save_item(NAME(m_screen_shadow)); + save_item(NAME(m_palette_bank)); + machine().save().register_postload(save_prepost_delegate(FUNC(neogeo_state::set_pens), this)); + + set_pens(); +} + + + +/************************************* + * + * Video system reset + * + *************************************/ + +void neogeo_state::video_reset() +{ +} + + + +/************************************* + * + * Video update + * + *************************************/ + +UINT32 neogeo_state::screen_update_neogeo(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + // fill with background color first + bitmap.fill(*m_bg_pen, cliprect); + + m_sprgen->draw_sprites(bitmap, cliprect.min_y); + + m_sprgen->draw_fixed_layer(bitmap, cliprect.min_y); + + return 0; +} + + + +/************************************* + * + * Video control + * + *************************************/ + +UINT16 neogeo_state::get_video_control( ) +{ + UINT16 ret; + UINT16 v_counter; + + /* + The format of this very important location is: AAAA AAAA A??? BCCC + + A is the raster line counter. mosyougi relies solely on this to do the + raster effects on the title screen; sdodgeb loops waiting for the top + bit to be 1; zedblade heavily depends on it to work correctly (it + checks the top bit in the IRQ2 handler). + B is definitely a PAL/NTSC flag. (LSPC2 only) Evidence: + 1) trally changes the position of the speed indicator depending on + it (0 = lower 1 = higher). + 2) samsho3 sets a variable to 60 when the bit is 0 and 50 when it's 1. + This is obviously the video refresh rate in Hz. + 3) samsho3 sets another variable to 256 or 307. This could be the total + screen height (including vblank), or close to that. + Some games (e.g. lstbld2, samsho3) do this (or similar): + bclr #$0, $3c000e.l + when the bit is set, so 3c000e (whose function is unknown) has to be + related + C animation counter lower 3 bits + */ + + /* the vertical counter chain goes from 0xf8 - 0x1ff */ + v_counter = m_screen->vpos() + 0x100; + + if (v_counter >= 0x200) + v_counter = v_counter - NEOGEO_VTOTAL; + + ret = (v_counter << 7) | (m_sprgen->neogeo_get_auto_animation_counter() & 0x0007); + + if (VERBOSE) logerror("%s: video_control read (%04x)\n", machine().describe_context(), ret); + + return ret; +} + + +void neogeo_state::set_video_control( UINT16 data ) +{ + if (VERBOSE) logerror("%s: video control write %04x\n", machine().describe_context(), data); + + m_sprgen->set_auto_animation_speed(data >> 8); + m_sprgen->set_auto_animation_disabled(data & 0x0008); + + neogeo_set_display_position_interrupt_control(data & 0x00f0); +} + + +READ16_MEMBER(neogeo_state::neogeo_video_register_r) +{ + UINT16 ret; + + /* accessing the LSB only is not mapped */ + if (mem_mask == 0x00ff) + ret = neogeo_unmapped_r(space, 0, 0xffff) & 0x00ff; + else + { + switch (offset) + { + default: + case 0x00: + case 0x01: ret = m_sprgen->get_videoram_data(); break; + case 0x02: ret = m_sprgen->get_videoram_modulo(); break; + case 0x03: ret = get_video_control(); break; + } + } + + return ret; +} + + +WRITE16_MEMBER(neogeo_state::neogeo_video_register_w) +{ + /* accessing the LSB only is not mapped */ + if (mem_mask != 0x00ff) + { + /* accessing the MSB only stores same data in MSB and LSB */ + if (mem_mask == 0xff00) + data = (data & 0xff00) | (data >> 8); + + switch (offset) + { + case 0x00: m_sprgen->set_videoram_offset(data); break; + case 0x01: m_sprgen->set_videoram_data(data); break; + case 0x02: m_sprgen->set_videoram_modulo(data); break; + case 0x03: set_video_control(data); break; + case 0x04: neogeo_set_display_counter_msb(data); break; + case 0x05: neogeo_set_display_counter_lsb(data); break; + case 0x06: neogeo_acknowledge_interrupt(data); break; + case 0x07: break; // d0: pause timer for 32 lines when in PAL mode (LSPC2 only) + } + } +} diff --git a/docs/release/src/hbmame/video/neogeo_spr.cpp b/docs/release/src/hbmame/video/neogeo_spr.cpp new file mode 100644 index 00000000000..7de4d12ac06 --- /dev/null +++ b/docs/release/src/hbmame/video/neogeo_spr.cpp @@ -0,0 +1,811 @@ +// license:BSD-3-Clause +// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari +// thanks-to:Fuzz +/* NeoGeo sprites (and fixed text layer) */ + +#include "emu.h" +#include "neogeo_spr.h" +#include "bus/neogeo/neogeo_helper.h" + +// pure virtual functions +//const device_type NEOGEO_SPRITE_BASE = &device_creator<neosprite_base_device>; + +/* +neosprite_base_device::neosprite_base_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : device_t(mconfig, NEOGEO_SPRITE_BASE, "NeoGeo Sprites", tag, owner, clock, "neospritebase", __FILE__), + m_bppshift(4) +{ + +} +*/ + +neosprite_base_device::neosprite_base_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock, device_type type) + : device_t(mconfig, type, "Neogeo Sprites", tag, owner, clock, "neosprite", __FILE__), + m_bppshift(4) +{ +} + +void neosprite_base_device::device_start() +{ + m_videoram = std::make_unique<UINT16[]>(0x8000 + 0x800); + m_videoram_drawsource = m_videoram.get(); + + /* clear allocated memory */ + memset(m_videoram.get(), 0x00, (0x8000 + 0x800) * sizeof(UINT16)); + + create_sprite_line_timer(); + create_auto_animation_timer(); + + + + /* initialize values that are not modified on a reset */ + m_vram_offset = 0; + m_vram_read_buffer = 0; + m_vram_modulo = 0; + m_auto_animation_speed = 0; + m_auto_animation_disabled = 0; + m_auto_animation_counter = 0; + m_auto_animation_frame_counter = 0; + + /* register for state saving */ + save_pointer(NAME(m_videoram.get()), 0x8000 + 0x800); + save_item(NAME(m_vram_offset)); + save_item(NAME(m_vram_read_buffer)); + save_item(NAME(m_vram_modulo)); + save_item(NAME(m_fixed_layer_source)); + + save_item(NAME(m_auto_animation_speed)); + save_item(NAME(m_auto_animation_disabled)); + save_item(NAME(m_auto_animation_counter)); + save_item(NAME(m_auto_animation_frame_counter)); + + + m_region_zoomy = memregion(":zoomy")->base(); +} + +void neosprite_base_device::device_reset() +{ + //m_sprite_gfx_address_mask = 0; + optimize_sprite_data(); + + start_sprite_line_timer(); + start_auto_animation_timer(); +} + + + +/************************************* + * + * Video RAM access + * + *************************************/ + +void neosprite_base_device::set_videoram_offset( UINT16 data ) +{ + m_vram_offset = (data & 0x8000 ? data & 0x87ff : data); + + /* the read happens right away */ + m_vram_read_buffer = m_videoram[m_vram_offset]; +} + + +UINT16 neosprite_base_device::get_videoram_data( ) +{ + return m_vram_read_buffer; +} + + +void neosprite_base_device::set_videoram_data( UINT16 data) +{ + m_videoram[m_vram_offset] = data; + + /* auto increment/decrement the current offset - A15 is NOT affected */ + set_videoram_offset((m_vram_offset & 0x8000) | ((m_vram_offset + m_vram_modulo) & 0x7fff)); +} + + +void neosprite_base_device::set_videoram_modulo( UINT16 data) +{ + m_vram_modulo = data; +} + + +UINT16 neosprite_base_device::get_videoram_modulo( ) +{ + return m_vram_modulo; +} + + + +/************************************* + * + * Auto animation + * + *************************************/ + +void neosprite_base_device::set_auto_animation_speed( UINT8 data) +{ + m_auto_animation_speed = data; +} + + +void neosprite_base_device::set_auto_animation_disabled( UINT8 data) +{ + m_auto_animation_disabled = data; +} + + +UINT8 neosprite_base_device::neogeo_get_auto_animation_counter( ) +{ + return m_auto_animation_counter; +} + + +TIMER_CALLBACK_MEMBER(neosprite_base_device::auto_animation_timer_callback) +{ + if (m_auto_animation_frame_counter == 0) + { + m_auto_animation_frame_counter = m_auto_animation_speed; + m_auto_animation_counter += 1; + } + else + m_auto_animation_frame_counter = m_auto_animation_frame_counter - 1; + + m_auto_animation_timer->adjust(m_screen->time_until_pos(NEOGEO_VSSTART)); +} + + +void neosprite_base_device::create_auto_animation_timer( ) +{ + m_auto_animation_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neosprite_base_device::auto_animation_timer_callback),this)); +} + + +void neosprite_base_device::start_auto_animation_timer( ) +{ + m_auto_animation_timer->adjust(m_screen->time_until_pos(NEOGEO_VSSTART)); +} + + + +/************************************* + * + * Fixed layer + * + *************************************/ + +void neosprite_base_device::neogeo_set_fixed_layer_source( UINT8 data ) +{ + m_fixed_layer_source = data; +} + + +void neosprite_base_device::draw_fixed_layer( bitmap_rgb32 &bitmap, int scanline ) +{ + int x; + + UINT8* gfx_base = m_fixed_layer_source ? m_region_fixed : m_region_fixedbios->base(); + UINT32 addr_mask = ( m_fixed_layer_source ? m_region_fixed_size : m_region_fixedbios->bytes() ) - 1; + UINT16 *video_data = &m_videoram_drawsource[0x7000 | (scanline >> 3)]; + UINT32 *pixel_addr = &bitmap.pix32(scanline, NEOGEO_HBEND); + + int garouoffsets[32]; + int banked = m_fixed_layer_source && (addr_mask > 0x1ffff); + + /* thanks to Mr K for the garou & kof2000 banking info */ + /* Build line banking table for Garou & MS3 before starting render */ + if (banked && m_fixed_layer_bank_type == 1) + { + int garoubank = 0; + int k = 0; + int y = 0; + while (y < 32) + { + if (m_videoram_drawsource[0x7500 + k] == 0x0200 && (m_videoram_drawsource[0x7580 + k] & 0xff00) == 0xff00) + { + garoubank = m_videoram_drawsource[0x7580 + k] & 3; + garouoffsets[y++] = garoubank; + } + garouoffsets[y++] = garoubank; + k += 2; + } + } + + for (x = 0; x < 40; x++) + { + UINT16 code_and_palette = *video_data; + UINT16 code = code_and_palette & 0x0fff; + + if (banked) + { + int y = scanline >> 3; + switch (m_fixed_layer_bank_type) + { + case 1: + /* Garou, MSlug 3 */ + code += 0x1000 * (garouoffsets[(y - 2) & 31] ^ 3); + break; + case 2: + code += 0x1000 * (((m_videoram_drawsource[0x7500 + ((y - 1) & 31) + 32 * (x / 6)] >> (5 - (x % 6)) * 2) & 3) ^ 3); + break; + } + } + + { + int i; + int gfx_offset = ((code << 5) | (scanline & 0x07)) & addr_mask; + + const pen_t *char_pens; + + char_pens = &m_pens[code_and_palette >> 12 << m_bppshift]; + + + static const UINT32 pix_offsets[] = { 0x10, 0x18, 0x00, 0x08 }; + + for (i = 0; i < 4; i++) + { + draw_fixed_layer_2pixels(pixel_addr, gfx_offset + pix_offsets[i], gfx_base, char_pens); + } + } + + video_data = video_data + 0x20; + } +} + + +inline void neosprite_base_device::draw_fixed_layer_2pixels(UINT32*&pixel_addr, int offset, UINT8* gfx_base, const pen_t* char_pens) +{ + UINT8 data = gfx_base[offset]; + + if (data & 0x0f) + *pixel_addr = char_pens[data & 0x0f]; + pixel_addr++; + + if (data & 0xf0) + *pixel_addr = char_pens[(data & 0xf0) >> 4]; + pixel_addr++; + +} + +/************************************* + * + * Sprite hardware + * + *************************************/ + +#define MAX_SPRITES_PER_SCREEN (381) +// HBMAME +//#define MAX_SPRITES_PER_LINE (96) +// beast requires 236 sprites, also fixes neopong and lhcdb +#define MAX_SPRITES_PER_LINE (236) + + +/* horizontal zoom table - verified on real hardware */ +static const int zoom_x_tables[][16] = +{ + { 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 }, + { 0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0 }, + { 0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0 }, + { 0,0,1,0,1,0,0,0,1,0,0,0,1,0,0,0 }, + { 0,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0 }, + { 0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0 }, + { 0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 }, + { 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 }, + { 1,0,1,0,1,0,1,0,1,1,1,0,1,0,1,0 }, + { 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,0 }, + { 1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1 }, + { 1,0,1,1,1,0,1,1,1,1,1,0,1,0,1,1 }, + { 1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1 }, + { 1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1 }, + { 1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1 }, + { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 } +}; + + + +inline bool neosprite_base_device::sprite_on_scanline(int scanline, int y, int rows) +{ + return (rows == 0) || (rows >= 0x20) || ((scanline - y) & 0x1ff) < (rows * 0x10); +} + + + + +void neosprite_base_device::draw_sprites( bitmap_rgb32 &bitmap, int scanline ) +{ + int sprite_index; + int max_sprite_index; + + int y = 0; + int x = 0; + int rows = 0; + int zoom_y = 0; + int zoom_x = 0; + UINT16 *sprite_list; + + /* select the active list */ + if (scanline & 0x01) + sprite_list = &m_videoram_drawsource[0x8680]; + else + sprite_list = &m_videoram_drawsource[0x8600]; + + /* optimization -- find last non-zero entry and only draw that many +1 + sprite. This is not 100% correct as the hardware will keep drawing + the #0 sprite over and over, but we need the speed */ + for (max_sprite_index = (MAX_SPRITES_PER_LINE - 1); max_sprite_index >= 0; max_sprite_index--) + { + if (sprite_list[max_sprite_index] != 0) + break; + } + + /* add the +1 now, just in case the 0 at the end is real sprite */ + if (max_sprite_index != (MAX_SPRITES_PER_LINE - 1)) + max_sprite_index = max_sprite_index + 1; + + for (sprite_index = 0; sprite_index <= max_sprite_index; sprite_index++) + { + UINT16 sprite_number = sprite_list[sprite_index] & 0x01ff; + UINT16 y_control = m_videoram_drawsource[0x8200 | sprite_number]; + UINT16 zoom_control = m_videoram_drawsource[0x8000 | sprite_number]; + + /* if chained, go to next X coordinate and get new X zoom */ + if (y_control & 0x40) + { + x = (x + zoom_x + 1) & 0x01ff; + zoom_x = (zoom_control >> 8) & 0x0f; + } + /* new block */ + else + { + y = 0x200 - (y_control >> 7); + x = m_videoram_drawsource[0x8400 | sprite_number] >> 7; + + zoom_y = (zoom_control & 0xff); + + zoom_x = (zoom_control >> 8) & 0x0f; + rows = y_control & 0x3f; + } + + /* skip if falls completely outside the screen */ + if ((x >= 0x140) && (x <= 0x1f0)) + continue; + + /* double check the Y coordinate, in case somebody modified the sprite coordinate + since we buffered it */ + if (sprite_on_scanline(scanline, y, rows)) + { + int sprite_y; + int tile; + UINT8 sprite_y_and_tile; + offs_t attr_and_code_offs; + UINT16 attr; + UINT32 code; + const int *zoom_x_table; + const pen_t *line_pens; + int x_inc; + + int sprite_line = (scanline - y) & 0x1ff; + int zoom_line = sprite_line & 0xff; + int invert = sprite_line & 0x100; + + if (invert) + zoom_line ^= 0xff; + + if (rows > 0x20) + { + zoom_line = zoom_line % ((zoom_y + 1) << 1); + + if (zoom_line > zoom_y) + { + zoom_line = ((zoom_y + 1) << 1) - 1 - zoom_line; + invert = !invert; + } + } + + sprite_y_and_tile = m_region_zoomy[(zoom_y << 8) | zoom_line]; + + sprite_y = sprite_y_and_tile & 0x0f; + tile = sprite_y_and_tile >> 4; + + if (invert) + { + sprite_y ^= 0x0f; + tile ^= 0x1f; + } + + attr_and_code_offs = (sprite_number << 6) | (tile << 1); + attr = m_videoram_drawsource[attr_and_code_offs + 1]; + code = ((attr << 12) & 0x70000) | m_videoram_drawsource[attr_and_code_offs]; + + /* substitute auto animation bits */ + if (!m_auto_animation_disabled) + { + if (attr & 0x0008) + code = (code & ~0x07) | (m_auto_animation_counter & 0x07); + else if (attr & 0x0004) + code = (code & ~0x03) | (m_auto_animation_counter & 0x03); + } + + /* vertical flip? */ + if (attr & 0x0002) + sprite_y ^= 0x0f; + + zoom_x_table = zoom_x_tables[zoom_x]; + + /* compute offset in gfx ROM and mask it to the number of bits available */ + int gfx_base = ((code << 8) | (sprite_y << 4)) & m_sprite_gfx_address_mask; + + + line_pens = &m_pens[attr >> 8 << m_bppshift]; + + + /* horizontal flip? */ + if (attr & 0x0001) + { + gfx_base = gfx_base + 0x0f; + x_inc = -1; + } + else + x_inc = 1; + + /* draw the line - no wrap-around */ + if (x <= 0x01f0) + { + int i; + + UINT32 *pixel_addr = &bitmap.pix32(scanline, x + NEOGEO_HBEND); + + for (i = 0; i < 0x10; i++) + { + if (*zoom_x_table) + { + draw_pixel(gfx_base, pixel_addr, line_pens); + + pixel_addr++; + } + + zoom_x_table++; + gfx_base += x_inc; + } + } + /* wrap-around */ + else + { + int i; + + int x_save = x; + UINT32 *pixel_addr = &bitmap.pix32(scanline, NEOGEO_HBEND); + + for (i = 0; i < 0x10; i++) + { + if (*zoom_x_table) + { + if (x >= 0x200) + { + draw_pixel(gfx_base, pixel_addr, line_pens); + + pixel_addr++; + } + + x++; + } + + zoom_x_table++; + gfx_base += x_inc; + } + + x = x_save; + } + } + } +} + + +void neosprite_base_device::parse_sprites( int scanline ) +{ + UINT16 sprite_number; + int y = 0; + int rows = 0; + UINT16 *sprite_list; + + int active_sprite_count = 0; + + /* select the active list */ + if (scanline & 0x01) + sprite_list = &m_videoram_drawsource[0x8680]; + else + sprite_list = &m_videoram_drawsource[0x8600]; + + /* scan all sprites */ + for (sprite_number = 0; sprite_number < MAX_SPRITES_PER_SCREEN; sprite_number++) + { + UINT16 y_control = m_videoram_drawsource[0x8200 | sprite_number]; + + /* if not chained, get Y position and height, otherwise use previous values */ + if (~y_control & 0x40) + { + y = 0x200 - (y_control >> 7); + rows = y_control & 0x3f; + } + + /* skip sprites with 0 rows */ + if (rows == 0) + continue; + + if (!sprite_on_scanline(scanline, y, rows)) + continue; + + /* sprite is on this scanline, add it to active list */ + *sprite_list = sprite_number; + + sprite_list++; + + /* increment sprite count, and if we reached the max, bail out */ + active_sprite_count++; + + if (active_sprite_count == MAX_SPRITES_PER_LINE) + break; + } + + /* fill the rest of the sprite list with 0, including one extra entry */ + memset(sprite_list, 0, sizeof(sprite_list[0]) * (MAX_SPRITES_PER_LINE - active_sprite_count + 1)); +} + + +TIMER_CALLBACK_MEMBER(neosprite_base_device::sprite_line_timer_callback) +{ + int scanline = param; + + /* we are at the beginning of a scanline - + we need to draw the previous scanline and parse the sprites on the current one */ + if (scanline != 0) + m_screen->update_partial(scanline - 1); + + parse_sprites(scanline); + + /* let's come back at the beginning of the next line */ + scanline = (scanline + 1) % NEOGEO_VTOTAL; + + m_sprite_line_timer->adjust(m_screen->time_until_pos(scanline), scanline); +} + + +void neosprite_base_device::create_sprite_line_timer( ) +{ + m_sprite_line_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neosprite_base_device::sprite_line_timer_callback),this)); +} + + +void neosprite_base_device::start_sprite_line_timer( ) +{ + m_sprite_line_timer->adjust(m_screen->time_until_pos(0)); +} + + +UINT32 neosprite_base_device::get_region_mask(UINT8* rgn, UINT32 rgn_size) +{ + /* convert the sprite graphics data into a format that + allows faster blitting */ + UINT32 mask; + UINT32 len; + UINT32 bit; + + /* get mask based on the length rounded up to the nearest + power of 2 */ + mask = 0xffffffff; + + len = rgn_size; + + for (bit = 0x80000000; bit != 0; bit >>= 1) + { + if ((len * 2 - 1) & bit) + break; + + mask >>= 1; + } + + return mask; +} + +void neosprite_base_device::optimize_sprite_data() +{ + // this does nothing in this implementation, it's used by neosprite_optimized_device + // m_sprite_gfx_address_mask gets set when the GFX region is assigned + return; +} + +void neosprite_base_device::set_optimized_sprite_data(UINT8* sprdata, UINT32 mask) +{ + return; +} + + +// these are for passing in pointers from the main system +void neosprite_base_device::set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) +{ + m_region_sprites = region_sprites; + m_region_sprites_size = region_sprites_size; +} + +void neosprite_base_device::set_fixed_regions(UINT8* fix_cart, UINT32 fix_cart_size, memory_region* fix_bios) +{ + m_region_fixed = fix_cart; + m_region_fixed_size = fix_cart_size; + m_region_fixedbios = fix_bios; +} + +void neosprite_base_device::set_screen(screen_device* screen) +{ + m_screen = screen; +} + +void neosprite_base_device::set_pens(const pen_t* pens) +{ + m_pens = pens; +} + + + +/*********************************************************************************************************************************/ +/* Regular NeoGeo sprite handling - drawing directly from ROM (or RAM on NeoCD) */ +/* */ +/* note, we don't currently use this implementation, reference only */ +/* if we do it will be important to ensure that all sprite regions are ^2 sizes - the optimized routine automatically allocates */ +/* ^2 sized regions when pre-decoding, but obviously we don't here, so if we want to be safe we'll have to adjust the actual */ +/* regions (alternatively I could add an additional size check in the draw routine, but that would be slower) */ +/*********************************************************************************************************************************/ + +const device_type NEOGEO_SPRITE_REGULAR = &device_creator<neosprite_regular_device>; + +neosprite_regular_device::neosprite_regular_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : neosprite_base_device(mconfig, tag, owner, clock, NEOGEO_SPRITE_REGULAR) +{ +} + + + +void neosprite_regular_device::set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) +{ + m_region_sprites = region_sprites; + m_region_sprites_size = region_sprites_size; + + UINT32 mask = get_region_mask(m_region_sprites, m_region_sprites_size); + UINT32 proper_size = (mask + 1) >>1; + + printf("lengths %08x %08x m_region_sprites", region_sprites_size, proper_size); + + if (m_region_sprites_size != proper_size) + { + fatalerror("please use power of 2 region sizes with neosprite_base_device to ensure masking works correctly"); + } + + m_sprite_gfx_address_mask = mask; +} + +inline void neosprite_regular_device::draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) +{ + const UINT8* src = m_region_sprites + (((romaddr &~0xff)>>1) | (((romaddr&0x8)^0x8)<<3) | ((romaddr & 0xf0) >> 2)); + const int x = romaddr & 0x7; + + const UINT8 gfx = (((src[0x3] >> x) & 0x01) << 3) | + (((src[0x1] >> x) & 0x01) << 2) | + (((src[0x2] >> x) & 0x01) << 1) | + (((src[0x0] >> x) & 0x01) << 0); + + if (gfx) + *dst = line_pens[gfx]; +} + + + +/*********************************************************************************************************************************/ +/* Regular NeoGeo sprite handling with pre-decode optimization */ +/* */ +/* this is closer to the old MAME implementation where the 4bpp graphics have been expanded to an easier to draw 8bpp format */ +/* for additional speed */ +/*********************************************************************************************************************************/ + +const device_type NEOGEO_SPRITE_OPTIMZIED = &device_creator<neosprite_optimized_device>; + +neosprite_optimized_device::neosprite_optimized_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : neosprite_base_device(mconfig, tag, owner, clock, NEOGEO_SPRITE_OPTIMZIED), + m_spritegfx8(nullptr) +{ +} + + +void neosprite_optimized_device::optimize_sprite_data() +{ + m_sprite_gfx_address_mask = neogeohelper_optimize_sprite_data(m_sprite_gfx, m_region_sprites, m_region_sprites_size); + m_spritegfx8 = &m_sprite_gfx[0]; +} + +void neosprite_optimized_device::set_optimized_sprite_data(UINT8* sprdata, UINT32 mask) +{ + m_spritegfx8 = sprdata; + m_sprite_gfx_address_mask = mask; +} + +inline void neosprite_optimized_device::draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) +{ + const UINT8 gfx = m_spritegfx8[romaddr]; + + if (gfx) + *dst = line_pens[gfx]; +} + + +/*********************************************************************************************************************************/ +/* MIDAS specific sprite handling */ +/* */ +/* this is used by the midas.c hardware which is a reengineered NeoGeo, it has 8bbp tiles instead of 4bpp tiles */ +/* and uploads the zoom table. The additional videoram buffering is a guess because 'hammer' is very glitchy without it */ +/*********************************************************************************************************************************/ + +const device_type NEOGEO_SPRITE_MIDAS = &device_creator<neosprite_midas_device>; + + +neosprite_midas_device::neosprite_midas_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) + : neosprite_base_device(mconfig, tag, owner, clock, NEOGEO_SPRITE_MIDAS) +{ + m_bppshift = 8; +} + + +inline void neosprite_midas_device::draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) +{ + const UINT8* src = m_region_sprites + (((romaddr &~0xff)) | (((romaddr&0x8)^0x8)<<4) | ((romaddr & 0xf0) >> 1)); + const int x = romaddr & 0x7; + + const UINT8 gfx = (((src[0x7] >> x) & 0x01) << 7) | + (((src[0x6] >> x) & 0x01) << 6) | + (((src[0x5] >> x) & 0x01) << 5) | + (((src[0x4] >> x) & 0x01) << 4) | + (((src[0x3] >> x) & 0x01) << 3) | + (((src[0x2] >> x) & 0x01) << 2) | + (((src[0x1] >> x) & 0x01) << 1) | + (((src[0x0] >> x) & 0x01) << 0); + + if (gfx) + *dst = line_pens[gfx]; +} + + +void neosprite_midas_device::device_start() +{ + neosprite_base_device::device_start(); + + m_videoram_buffer = std::make_unique<UINT16[]>(0x8000 + 0x800); + m_videoram_drawsource = m_videoram_buffer.get(); + + memset(m_videoram_buffer.get(), 0x00, (0x8000 + 0x800) * sizeof(UINT16)); + +} + +void neosprite_midas_device::buffer_vram() +{ + memcpy(m_videoram_buffer.get(), m_videoram.get(), (0x8000 + 0x800) * sizeof(UINT16)); +} + +inline void neosprite_midas_device::draw_fixed_layer_2pixels(UINT32*&pixel_addr, int offset, UINT8* gfx_base, const pen_t* char_pens) +{ + UINT8 data; + + data = ((gfx_base[(offset * 2)+0] & 0x0f)<<0) | ((gfx_base[(offset * 2)+1] & 0x0f)<<4); + if (data) + *pixel_addr = char_pens[data]; + pixel_addr++; + + data = ((gfx_base[(offset * 2)+0] & 0xf0)>>4) | ((gfx_base[(offset * 2)+1] & 0xf0)<<0); + if (data) + *pixel_addr = char_pens[data]; + pixel_addr++; +} + +void neosprite_midas_device::set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) +{ + m_region_sprites = region_sprites; + m_region_sprites_size = region_sprites_size; + UINT32 mask = get_region_mask(m_region_sprites, m_region_sprites_size); + m_sprite_gfx_address_mask = mask; +} diff --git a/docs/release/src/hbmame/video/neogeo_spr.h b/docs/release/src/hbmame/video/neogeo_spr.h new file mode 100644 index 00000000000..6c2f525544f --- /dev/null +++ b/docs/release/src/hbmame/video/neogeo_spr.h @@ -0,0 +1,146 @@ +// license:BSD-3-Clause +// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari +// thanks-to:Fuzz +#define VERBOSE (0) + +// todo, move these back, currently the sprite code needs some of the values tho +#define NEOGEO_MASTER_CLOCK (24000000) +#define NEOGEO_MAIN_CPU_CLOCK (NEOGEO_MASTER_CLOCK / 2) +#define NEOGEO_AUDIO_CPU_CLOCK (NEOGEO_MASTER_CLOCK / 6) +#define NEOGEO_YM2610_CLOCK (NEOGEO_MASTER_CLOCK / 3) +#define NEOGEO_PIXEL_CLOCK (NEOGEO_MASTER_CLOCK / 4) +#define NEOGEO_HTOTAL (0x180) +#define NEOGEO_HBEND (0x01e) /* this should really be 29.5 */ +#define NEOGEO_HBSTART (0x15e) /* this should really be 349.5 */ +#define NEOGEO_VTOTAL (0x108) +#define NEOGEO_VBEND (0x010) +#define NEOGEO_VBSTART (0x0f0) +#define NEOGEO_VSSTART (0x100) + +// todo, sort out what needs to be public and make the rest private/protected +class neosprite_base_device : public device_t +{ +public: + neosprite_base_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock, device_type type); +// neosprite_base_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual void optimize_sprite_data(); + virtual void set_optimized_sprite_data(UINT8* sprdata, UINT32 mask); + + virtual void draw_fixed_layer_2pixels(UINT32*&pixel_addr, int offset, UINT8* gfx_base, const pen_t* char_pens); + void draw_fixed_layer( bitmap_rgb32 &bitmap, int scanline ); + void set_videoram_offset( UINT16 data ); + UINT16 get_videoram_data( ); + void set_videoram_data( UINT16 data); + void set_videoram_modulo( UINT16 data); + UINT16 get_videoram_modulo( ); + void set_auto_animation_speed( UINT8 data); + void set_auto_animation_disabled( UINT8 data); + UINT8 neogeo_get_auto_animation_counter( ); + void create_auto_animation_timer( ); + void start_auto_animation_timer( ); + void neogeo_set_fixed_layer_source( UINT8 data ); + inline bool sprite_on_scanline(int scanline, int y, int rows); + virtual void draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) = 0; + void draw_sprites( bitmap_rgb32 &bitmap, int scanline ); + void parse_sprites( int scanline ); + void create_sprite_line_timer( ); + void start_sprite_line_timer( ); + virtual void set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size); + void set_fixed_regions(UINT8* fix_cart, UINT32 fix_cart_size, memory_region* fix_bios); + void set_screen(screen_device* screen); + void set_pens(const pen_t* pens); + + std::unique_ptr<UINT16[]> m_videoram; + UINT16 *m_videoram_drawsource; + + UINT16 m_vram_offset; + UINT16 m_vram_read_buffer; + UINT16 m_vram_modulo; + + const UINT8 *m_region_zoomy; + + UINT32 m_sprite_gfx_address_mask; + + UINT8 m_auto_animation_speed; + UINT8 m_auto_animation_disabled; + UINT8 m_auto_animation_counter; + UINT8 m_auto_animation_frame_counter; + + UINT8 m_fixed_layer_source; + UINT8 m_fixed_layer_bank_type; + + emu_timer *m_auto_animation_timer; + emu_timer *m_sprite_line_timer; + + TIMER_CALLBACK_MEMBER(auto_animation_timer_callback); + TIMER_CALLBACK_MEMBER(sprite_line_timer_callback); + + + int m_bppshift; // 4 for 4bpp gfx (NeoGeo) 8 for 8bpp gfx (Midas) + +protected: + virtual void device_start() override; + virtual void device_reset() override; + UINT32 get_region_mask(UINT8* rgn, UINT32 rgn_size); + UINT8* m_region_sprites; UINT32 m_region_sprites_size; + UINT8* m_region_fixed; UINT32 m_region_fixed_size; + memory_region* m_region_fixedbios; + screen_device* m_screen; + const pen_t *m_pens; + +private: + +}; + +//extern const device_type NEOGEO_SPRITE_BASE; + + +class neosprite_regular_device : public neosprite_base_device +{ +public: + neosprite_regular_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) override; + virtual void set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) override; + +}; + +extern const device_type NEOGEO_SPRITE_REGULAR; + + +class neosprite_optimized_device : public neosprite_base_device +{ +public: + neosprite_optimized_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual void optimize_sprite_data() override; + virtual void set_optimized_sprite_data(UINT8* sprdata, UINT32 mask) override; + virtual void draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) override; + std::vector<UINT8> m_sprite_gfx; + UINT8* m_spritegfx8; + +}; + +extern const device_type NEOGEO_SPRITE_OPTIMZIED; + + + + + +class neosprite_midas_device : public neosprite_base_device +{ +public: + neosprite_midas_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + virtual void draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) override; + + std::unique_ptr<UINT16[]> m_videoram_buffer; + void buffer_vram(); + virtual void draw_fixed_layer_2pixels(UINT32*&pixel_addr, int offset, UINT8* gfx_base, const pen_t* char_pens) override; + virtual void set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) override; + + protected: + virtual void device_start() override; + +}; + +extern const device_type NEOGEO_SPRITE_MIDAS; diff --git a/docs/release/src/mame/video/neogeo_spr.cpp b/docs/release/src/mame/video/neogeo_spr.cpp index 7de4d12ac06..40bfcc289f8 100644 --- a/docs/release/src/mame/video/neogeo_spr.cpp +++ b/docs/release/src/mame/video/neogeo_spr.cpp @@ -5,7 +5,6 @@ #include "emu.h" #include "neogeo_spr.h" -#include "bus/neogeo/neogeo_helper.h" // pure virtual functions //const device_type NEOGEO_SPRITE_BASE = &device_creator<neosprite_base_device>; @@ -36,8 +35,6 @@ void neosprite_base_device::device_start() create_sprite_line_timer(); create_auto_animation_timer(); - - /* initialize values that are not modified on a reset */ m_vram_offset = 0; m_vram_read_buffer = 0; @@ -80,7 +77,7 @@ void neosprite_base_device::device_reset() * *************************************/ -void neosprite_base_device::set_videoram_offset( UINT16 data ) +void neosprite_base_device::set_videoram_offset(UINT16 data) { m_vram_offset = (data & 0x8000 ? data & 0x87ff : data); @@ -89,13 +86,13 @@ void neosprite_base_device::set_videoram_offset( UINT16 data ) } -UINT16 neosprite_base_device::get_videoram_data( ) +UINT16 neosprite_base_device::get_videoram_data() { return m_vram_read_buffer; } -void neosprite_base_device::set_videoram_data( UINT16 data) +void neosprite_base_device::set_videoram_data(UINT16 data) { m_videoram[m_vram_offset] = data; @@ -104,13 +101,13 @@ void neosprite_base_device::set_videoram_data( UINT16 data) } -void neosprite_base_device::set_videoram_modulo( UINT16 data) +void neosprite_base_device::set_videoram_modulo(UINT16 data) { m_vram_modulo = data; } -UINT16 neosprite_base_device::get_videoram_modulo( ) +UINT16 neosprite_base_device::get_videoram_modulo() { return m_vram_modulo; } @@ -123,19 +120,19 @@ UINT16 neosprite_base_device::get_videoram_modulo( ) * *************************************/ -void neosprite_base_device::set_auto_animation_speed( UINT8 data) +void neosprite_base_device::set_auto_animation_speed(UINT8 data) { m_auto_animation_speed = data; } -void neosprite_base_device::set_auto_animation_disabled( UINT8 data) +void neosprite_base_device::set_auto_animation_disabled(UINT8 data) { m_auto_animation_disabled = data; } -UINT8 neosprite_base_device::neogeo_get_auto_animation_counter( ) +UINT8 neosprite_base_device::neogeo_get_auto_animation_counter() { return m_auto_animation_counter; } @@ -155,13 +152,13 @@ TIMER_CALLBACK_MEMBER(neosprite_base_device::auto_animation_timer_callback) } -void neosprite_base_device::create_auto_animation_timer( ) +void neosprite_base_device::create_auto_animation_timer() { m_auto_animation_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neosprite_base_device::auto_animation_timer_callback),this)); } -void neosprite_base_device::start_auto_animation_timer( ) +void neosprite_base_device::start_auto_animation_timer() { m_auto_animation_timer->adjust(m_screen->time_until_pos(NEOGEO_VSSTART)); } @@ -174,13 +171,13 @@ void neosprite_base_device::start_auto_animation_timer( ) * *************************************/ -void neosprite_base_device::neogeo_set_fixed_layer_source( UINT8 data ) +void neosprite_base_device::neogeo_set_fixed_layer_source(UINT8 data) { m_fixed_layer_source = data; } -void neosprite_base_device::draw_fixed_layer( bitmap_rgb32 &bitmap, int scanline ) +void neosprite_base_device::draw_fixed_layer(bitmap_rgb32 &bitmap, int scanline) { int x; @@ -311,7 +308,7 @@ inline bool neosprite_base_device::sprite_on_scanline(int scanline, int y, int r -void neosprite_base_device::draw_sprites( bitmap_rgb32 &bitmap, int scanline ) +void neosprite_base_device::draw_sprites(bitmap_rgb32 &bitmap, int scanline) { int sprite_index; int max_sprite_index; @@ -501,7 +498,7 @@ void neosprite_base_device::draw_sprites( bitmap_rgb32 &bitmap, int scanline ) } -void neosprite_base_device::parse_sprites( int scanline ) +void neosprite_base_device::parse_sprites(int scanline) { UINT16 sprite_number; int y = 0; @@ -570,13 +567,13 @@ TIMER_CALLBACK_MEMBER(neosprite_base_device::sprite_line_timer_callback) } -void neosprite_base_device::create_sprite_line_timer( ) +void neosprite_base_device::create_sprite_line_timer() { m_sprite_line_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(neosprite_base_device::sprite_line_timer_callback),this)); } -void neosprite_base_device::start_sprite_line_timer( ) +void neosprite_base_device::start_sprite_line_timer() { m_sprite_line_timer->adjust(m_screen->time_until_pos(0)); } @@ -619,7 +616,6 @@ void neosprite_base_device::set_optimized_sprite_data(UINT8* sprdata, UINT32 mas return; } - // these are for passing in pointers from the main system void neosprite_base_device::set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) { @@ -662,8 +658,6 @@ neosprite_regular_device::neosprite_regular_device(const machine_config &mconfig { } - - void neosprite_regular_device::set_sprite_region(UINT8* region_sprites, UINT32 region_sprites_size) { m_region_sprites = region_sprites; @@ -713,17 +707,56 @@ neosprite_optimized_device::neosprite_optimized_device(const machine_config &mco { } +UINT32 neosprite_optimized_device::optimize_helper(std::vector<UINT8> &spritegfx, UINT8* region_sprites, UINT32 region_sprites_size) +{ + // convert the sprite graphics data into a format that allows faster blitting + UINT8 *src; + UINT8 *dest; + + UINT32 mask = get_region_mask(region_sprites, region_sprites_size); + + spritegfx.resize(mask + 1); + UINT32 spritegfx_address_mask = mask; + + src = region_sprites; + dest = &spritegfx[0]; + + for (unsigned i = 0; i < region_sprites_size; i += 0x80, src += 0x80) + { + for (unsigned y = 0; y < 0x10; y++) + { + for (unsigned x = 0; x < 8; x++) + { + *(dest++) = (((src[0x43 | (y << 2)] >> x) & 0x01) << 3) | + (((src[0x41 | (y << 2)] >> x) & 0x01) << 2) | + (((src[0x42 | (y << 2)] >> x) & 0x01) << 1) | + (((src[0x40 | (y << 2)] >> x) & 0x01) << 0); + } + + for (unsigned x = 0; x < 8; x++) + { + *(dest++) = (((src[0x03 | (y << 2)] >> x) & 0x01) << 3) | + (((src[0x01 | (y << 2)] >> x) & 0x01) << 2) | + (((src[0x02 | (y << 2)] >> x) & 0x01) << 1) | + (((src[0x00 | (y << 2)] >> x) & 0x01) << 0); + } + } + } + + return spritegfx_address_mask; +} + void neosprite_optimized_device::optimize_sprite_data() { - m_sprite_gfx_address_mask = neogeohelper_optimize_sprite_data(m_sprite_gfx, m_region_sprites, m_region_sprites_size); + m_sprite_gfx_address_mask = optimize_helper(m_sprite_gfx, m_region_sprites, m_region_sprites_size); m_spritegfx8 = &m_sprite_gfx[0]; } void neosprite_optimized_device::set_optimized_sprite_data(UINT8* sprdata, UINT32 mask) { - m_spritegfx8 = sprdata; m_sprite_gfx_address_mask = mask; + m_spritegfx8 = &sprdata[0]; } inline void neosprite_optimized_device::draw_pixel(int romaddr, UINT32* dst, const pen_t *line_pens) diff --git a/docs/release/src/osd/winui/directinput.cpp b/docs/release/src/osd/winui/directinput.cpp index c88d46aac1b..fca5ff8cac7 100644 --- a/docs/release/src/osd/winui/directinput.cpp +++ b/docs/release/src/osd/winui/directinput.cpp @@ -1,4 +1,5 @@ // For licensing and usage information, read docs/winui_license.txt +// MASTER //**************************************************************************** /*************************************************************************** @@ -81,11 +82,11 @@ BOOL DirectInputInitialize() if (dic == NULL) return FALSE; - hr = dic(GetModuleHandle(NULL), DIRECTINPUT_VERSION, &di, NULL); + hr = dic(GetModuleHandle(NULL), 0x0700, &di, NULL); // setup DIRECT INPUT 7 for the GUI if (FAILED(hr)) { - hr = dic(GetModuleHandle(NULL), 0x0300, &di, NULL); + hr = dic(GetModuleHandle(NULL), 0x0500, &di, NULL); // if failed, try with version 5 if (FAILED(hr)) { diff --git a/docs/release/src/osd/winui/mui_opts.cpp b/docs/release/src/osd/winui/mui_opts.cpp index 1d189cce99b..f6e7bee24ce 100644 --- a/docs/release/src/osd/winui/mui_opts.cpp +++ b/docs/release/src/osd/winui/mui_opts.cpp @@ -1073,17 +1073,32 @@ BOOL GetSortReverse(void) return settings.bool_value( MUIOPTION_SORT_REVERSED); } -const char* GetLanguage(void) +const char* GetLanguage(void) // this is unused I guess { return settings.value( MUIOPTION_LANGUAGE); } -void SetLanguage(const char* lang) +void SetLanguage(const char* lang) // same as above, time to remove it? { std::string error_string; settings.set_value(MUIOPTION_LANGUAGE, lang, OPTION_PRIORITY_CMDLINE,error_string); } +const char* GetLanguageUI(void) +{ + return global.value(OPTION_LANGUAGE); +} + +bool GetEnablePlugins(void) +{ + return global.bool_value(OPTION_PLUGINS); +} + +const char* GetPlugins(void) +{ + return global.value(OPTION_PLUGIN); +} + const char* GetRomDirs(void) { return global.media_path(); diff --git a/docs/release/src/osd/winui/mui_opts.h b/docs/release/src/osd/winui/mui_opts.h index 3301303a2da..7cccc31375a 100644 --- a/docs/release/src/osd/winui/mui_opts.h +++ b/docs/release/src/osd/winui/mui_opts.h @@ -230,6 +230,12 @@ BOOL GetSortReverse(void); const char* GetLanguage(void); void SetLanguage(const char* lang); +const char* GetLanguageUI(void); + +bool GetEnablePlugins(void); + +const char* GetPlugins(void); + const char* GetRomDirs(void); void SetRomDirs(const char* paths); diff --git a/docs/release/src/osd/winui/newui.cpp b/docs/release/src/osd/winui/newui.cpp index 413c00156e0..5430c8dedf7 100644 --- a/docs/release/src/osd/winui/newui.cpp +++ b/docs/release/src/osd/winui/newui.cpp @@ -1551,7 +1551,7 @@ static void seqselect_start_read_from_main_thread(void *param) int pause_count = 0; while(Machine->paused() && !winwindow_ui_is_paused(*Machine)) { - winwindow_ui_pause_from_main_thread(*Machine, FALSE); + winwindow_ui_pause(*Machine, FALSE); pause_count++; } @@ -1573,7 +1573,7 @@ static void seqselect_start_read_from_main_thread(void *param) // repause the OSD code while(pause_count--) - winwindow_ui_pause_from_main_thread(*Machine, TRUE); + winwindow_ui_pause(*Machine, TRUE); } @@ -1631,12 +1631,12 @@ static INT_PTR CALLBACK seqselect_wndproc(HWND editwnd, UINT msg, WPARAM wparam, case SEQWM_SETFOCUS: // if we receive the focus, we should start a polling loop - winwindow_ui_exec_on_main_thread(seqselect_start_read_from_main_thread, (void *) editwnd); + seqselect_start_read_from_main_thread( (void *) editwnd); break; case SEQWM_KILLFOCUS: // when we abort the focus, end any current polling loop - winwindow_ui_exec_on_main_thread(seqselect_stop_read_from_main_thread, (void *) editwnd); + seqselect_stop_read_from_main_thread( (void *) editwnd); break; case WM_LBUTTONDOWN: @@ -1874,7 +1874,7 @@ static int win_dialog_add_standard_buttons(dialog_box *dialog) static void before_display_dialog(running_machine &machine) { Machine = &machine; - winwindow_ui_pause_from_window_thread(machine, TRUE); + winwindow_ui_pause(machine, TRUE); } @@ -1885,7 +1885,7 @@ static void before_display_dialog(running_machine &machine) static void after_display_dialog(running_machine &machine) { - winwindow_ui_pause_from_window_thread(machine, FALSE); + winwindow_ui_pause(machine, FALSE); //Machine = NULL; } @@ -2852,7 +2852,7 @@ static int add_filter_entry(char *dest, size_t dest_len, const char *description // build_generic_filter //============================================================ -static void build_generic_filter(device_image_interface *dev, int is_save, char *filter, size_t filter_len) +static void build_generic_filter(device_image_interface *dev, bool is_save, char *filter, size_t filter_len) { char *s; @@ -2860,10 +2860,11 @@ static void build_generic_filter(device_image_interface *dev, int is_save, char /* copy the string */ file_extension = dev->file_extensions(); - const char* s2 = ",zip"; // Add ZIP extension as a default. + const char* s2 = ",zip,7z"; // Add ZIP extension as a default. char *result = (LPSTR) alloca(strlen(file_extension)+strlen(s2)+1); strcpy(result, file_extension); - strcat(result, s2); + if (!is_save) + strcat(result, s2); // start writing the filter s = filter; @@ -2877,7 +2878,7 @@ static void build_generic_filter(device_image_interface *dev, int is_save, char // compressed if (!is_save) - s += sprintf(s, "Compressed Images (*.zip)|*.zip|"); //(*.zip;*.7z)|*.zip;*.7z|"); + s += sprintf(s, "Compressed Images (*.zip;*.7z)|*.zip;*.7z|"); *(s++) = '\0'; } @@ -2888,7 +2889,7 @@ static void build_generic_filter(device_image_interface *dev, int is_save, char // change_device //============================================================ -static void change_device(HWND wnd, device_image_interface *image, int is_save) +static void change_device(HWND wnd, device_image_interface *image, bool is_save) { dialog_box *dialog = NULL; char filter[2048]; @@ -3608,7 +3609,7 @@ static int invoke_command(HWND wnd, UINT command) // pause while invoking certain commands if (pause_for_command(command)) - winwindow_ui_pause_from_window_thread(window->machine(), TRUE); + winwindow_ui_pause(window->machine(), TRUE); switch(command) { @@ -3796,7 +3797,7 @@ static int invoke_command(HWND wnd, UINT command) // resume emulation if (pause_for_command(command)) - winwindow_ui_pause_from_window_thread(window->machine(), FALSE); + winwindow_ui_pause(window->machine(), FALSE); return handled; } diff --git a/docs/release/src/osd/winui/newui.h b/docs/release/src/osd/winui/newui.h index 09b31b67c3c..5ad8c9fa638 100644 --- a/docs/release/src/osd/winui/newui.h +++ b/docs/release/src/osd/winui/newui.h @@ -15,6 +15,7 @@ #include <commdlg.h> #include <tchar.h> #include "emu.h" +#include "mame.h" #include "emuopts.h" #include "ui/ui.h" #include "newuires.h" diff --git a/docs/release/src/osd/winui/screenshot.cpp b/docs/release/src/osd/winui/screenshot.cpp index f250a7f38d0..868c3b0a91d 100644 --- a/docs/release/src/osd/winui/screenshot.cpp +++ b/docs/release/src/osd/winui/screenshot.cpp @@ -1,4 +1,5 @@ // For licensing and usage information, read docs/winui_license.txt +// MASTER //**************************************************************************** /*************************************************************************** @@ -385,6 +386,26 @@ static osd_file::error OpenZipDIBFile(const char *dir_name, const char *zip_name } zip.reset(); } + else + { + fname = std::string(dir_name) + PATH_SEPARATOR + std::string(zip_name) + ".7z"; + ziperr = util::archive_file::open_zip(fname, zip); + + if (ziperr == util::archive_file::error::NONE) + { + int res = zip->search(filename, false); + if (res >= 0) + { + *buffer = malloc(zip->current_uncompressed_length()); + ziperr = zip->decompress(*buffer, zip->current_uncompressed_length()); + if (ziperr == util::archive_file::error::NONE) + { + filerr = util::core_file::open_ram(*buffer, zip->current_uncompressed_length(), OPEN_FLAG_READ, file); + } + } + zip.reset(); + } + } return filerr; } diff --git a/docs/release/src/osd/winui/winui.cpp b/docs/release/src/osd/winui/winui.cpp index 64cafc7b6f6..aed782a8061 100644 --- a/docs/release/src/osd/winui/winui.cpp +++ b/docs/release/src/osd/winui/winui.cpp @@ -40,6 +40,7 @@ #include "emu.h" #include "mame.h" #include "mameopts.h" +#include "language.h" #include "unzip.h" #include "winutf8.h" #include "strconv.h" @@ -886,17 +887,23 @@ static DWORD RunMAME(int nGameIndex, const play_options *playopts) time_t start, end; double elapsedtime; int i; - mame_options mame_opts; + //mame_options mame_opts; seems useless.... windows_options global_opts; std::string error_string; // set up MAME options -// mame_opts = mame_options_init(mame_win_options); + // mame_opts = mame_options_init(mame_win_options); // Tell mame were to get the INIs SetDirectories(global_opts); + // set some startup options + global_opts.set_value(OPTION_LANGUAGE, GetLanguageUI(), OPTION_PRIORITY_CMDLINE, error_string); + global_opts.set_value(OPTION_PLUGINS, GetEnablePlugins(), OPTION_PRIORITY_CMDLINE, error_string); + global_opts.set_value(OPTION_PLUGIN, GetPlugins(), OPTION_PRIORITY_CMDLINE, error_string); + // add image specific device options - mame_opts.set_system_name(global_opts, driver_list::driver(nGameIndex).name); + //mame_opts.set_system_name(global_opts, driver_list::driver(nGameIndex).name); + global_opts.set_value(OPTION_SYSTEMNAME, driver_list::driver(nGameIndex).name, OPTION_PRIORITY_CMDLINE, error_string); // set any specified play options if (playopts_apply == 0x57) @@ -932,6 +939,8 @@ static DWORD RunMAME(int nGameIndex, const play_options *playopts) osd_output::push(&winerror); osd.register_options(); mame_machine_manager *manager = mame_machine_manager::instance(global_opts, osd); + load_translation(global_opts); + manager->start_luaengine(); manager->execute(); osd_output::pop(&winerror); global_free(manager); @@ -1199,6 +1208,31 @@ HICON LoadIconFromFile(const char *iconname) } zip.reset(); } + else + { + sprintf(tmpStr, "%s/icons.7z", GetIconsDir()); + sprintf(tmpIcoName, "%s.ico", iconname); + + ziperr = util::archive_file::open_zip(tmpStr, zip); + if (ziperr == util::archive_file::error::NONE) + { + res = zip->search(tmpIcoName, false); + if (res >= 0) + { + bufferPtr = (PBYTE)malloc(zip->current_uncompressed_length()); + if (bufferPtr) + { + ziperr = zip->decompress(bufferPtr, zip->current_uncompressed_length()); + if (ziperr == util::archive_file::error::NONE) + { + hIcon = FormatICOInMemoryToHICON(bufferPtr, zip->current_uncompressed_length()); + } + free(bufferPtr); + } + } + zip.reset(); + } + } } } return hIcon; @@ -5119,7 +5153,7 @@ BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype) switch (filetype) { case FILETYPE_INPUT_FILES : - ofn.lpstrFilter = TEXT("input files (*.inp,*.zip)\0*.inp;*.zip\0All files (*.*)\0*.*\0"); + ofn.lpstrFilter = TEXT("input files (*.inp,*.zip,*.7z)\0*.inp;*.zip;*.7z\0All files (*.*)\0*.*\0"); ofn.lpstrDefExt = TEXT("inp"); dirname = GetInpDir(); break; diff --git a/docs/release/src/version.cpp b/docs/release/src/version.cpp index 6279f1fb8f9..44df5620301 100644 --- a/docs/release/src/version.cpp +++ b/docs/release/src/version.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ -#define BARE_BUILD_VERSION "0.173" +#define BARE_BUILD_VERSION "0.174" extern const char bare_build_version[]; extern const char build_version[]; |