summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2016-05-26 00:26:07 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2016-05-26 00:26:07 +1000
commit7e3fce4ba9ebd4e4dc6b53027e70653c656c643b (patch)
tree2add66db88bac7b2186e6fc89f843727f1b9907a
parent4772a2556d0f35de45d601bd604595279f250236 (diff)
0.174 Release Fileshbmame174
-rw-r--r--docs/release/docs/hbnew.txt5
-rw-r--r--docs/release/docs/hlsl.txt56
-rw-r--r--docs/release/hbmame174s.rar (renamed from docs/release/hbmame173s.rar)bin4798060 -> 4923469 bytes
-rw-r--r--docs/release/scripts/build/makedep.py4
-rw-r--r--docs/release/scripts/genie.lua13
-rw-r--r--docs/release/scripts/resources/emscripten/emscripten_post.js1
-rw-r--r--docs/release/scripts/src/3rdparty.lua10
-rw-r--r--docs/release/scripts/src/bus.lua133
-rw-r--r--docs/release/scripts/src/cpu.lua263
-rw-r--r--docs/release/scripts/src/devices.lua9
-rw-r--r--docs/release/scripts/src/emu.lua4
-rw-r--r--docs/release/scripts/src/machine.lua99
-rw-r--r--docs/release/scripts/src/main.lua104
-rw-r--r--docs/release/scripts/src/mame/frontend.lua11
-rw-r--r--docs/release/scripts/src/netlist.lua25
-rw-r--r--docs/release/scripts/src/osd/modules.lua4
-rw-r--r--docs/release/scripts/src/osd/newui.lua4
-rw-r--r--docs/release/scripts/src/osd/winui.lua6
-rw-r--r--docs/release/scripts/src/sound.lua46
-rw-r--r--docs/release/scripts/src/video.lua30
-rw-r--r--docs/release/scripts/target/hbmame/hbmame.lua86
-rw-r--r--docs/release/scripts/target/mame/arcade.lua131
-rw-r--r--docs/release/scripts/target/mame/mess.lua77
-rw-r--r--docs/release/scripts/target/mame/nl.lua37
-rw-r--r--docs/release/scripts/target/mame/tiny.lua1
-rw-r--r--docs/release/scripts/target/zexall/zexall.lua12
-rw-r--r--docs/release/scripts/toolchain.lua27
-rw-r--r--docs/release/src/devices/cpu/m68000/m68kcpu.cpp2
-rw-r--r--docs/release/src/emu/digfx.h3
-rw-r--r--docs/release/src/emu/validity.cpp14
-rw-r--r--docs/release/src/emu/video.cpp4
-rw-r--r--docs/release/src/hbmame/bus/neogeo/banked_cart.cpp109
-rw-r--r--docs/release/src/hbmame/bus/neogeo/banked_cart.h40
-rw-r--r--docs/release/src/hbmame/bus/neogeo/bootleg_cart.cpp378
-rw-r--r--docs/release/src/hbmame/bus/neogeo/bootleg_cart.h250
-rw-r--r--docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.cpp319
-rw-r--r--docs/release/src/hbmame/bus/neogeo/bootleg_hybrid_cart.h192
-rw-r--r--docs/release/src/hbmame/bus/neogeo/bootleg_prot.cpp1072
-rw-r--r--docs/release/src/hbmame/bus/neogeo/bootleg_prot.h92
-rw-r--r--docs/release/src/hbmame/bus/neogeo/cmc_cart.cpp223
-rw-r--r--docs/release/src/hbmame/bus/neogeo/cmc_cart.h191
-rw-r--r--docs/release/src/hbmame/bus/neogeo/cmc_prot.cpp798
-rw-r--r--docs/release/src/hbmame/bus/neogeo/cmc_prot.h83
-rw-r--r--docs/release/src/hbmame/bus/neogeo/fatfury2_cart.cpp75
-rw-r--r--docs/release/src/hbmame/bus/neogeo/fatfury2_cart.h41
-rw-r--r--docs/release/src/hbmame/bus/neogeo/fatfury2_prot.cpp112
-rw-r--r--docs/release/src/hbmame/bus/neogeo/fatfury2_prot.h36
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof2002_cart.cpp157
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof2002_cart.h111
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof2002_prot.cpp83
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof2002_prot.h32
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof98_cart.cpp80
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof98_cart.h41
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof98_prot.cpp142
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kof98_prot.h34
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kog_prot.cpp118
-rw-r--r--docs/release/src/hbmame/bus/neogeo/kog_prot.h34
-rw-r--r--docs/release/src/hbmame/bus/neogeo/mslugx_cart.cpp75
-rw-r--r--docs/release/src/hbmame/bus/neogeo/mslugx_cart.h41
-rw-r--r--docs/release/src/hbmame/bus/neogeo/mslugx_prot.cpp97
-rw-r--r--docs/release/src/hbmame/bus/neogeo/mslugx_prot.h35
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_carts.cpp97
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_carts.h30
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_helper.cpp66
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_helper.h4
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_intf.cpp34
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_intf.h78
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp222
-rw-r--r--docs/release/src/hbmame/bus/neogeo/neogeo_slot.h87
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pcm2_cart.cpp135
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pcm2_cart.h98
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pcm2_prot.cpp88
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pcm2_prot.h30
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pvc_cart.cpp139
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pvc_cart.h108
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pvc_prot.cpp317
-rw-r--r--docs/release/src/hbmame/bus/neogeo/pvc_prot.h44
-rw-r--r--docs/release/src/hbmame/bus/neogeo/rom.cpp70
-rw-r--r--docs/release/src/hbmame/bus/neogeo/rom.h38
-rw-r--r--docs/release/src/hbmame/bus/neogeo/sbp_prot.cpp87
-rw-r--r--docs/release/src/hbmame/bus/neogeo/sbp_prot.h34
-rw-r--r--docs/release/src/hbmame/bus/neogeo/sma_cart.cpp177
-rw-r--r--docs/release/src/hbmame/bus/neogeo/sma_cart.h112
-rw-r--r--docs/release/src/hbmame/bus/neogeo/sma_prot.cpp464
-rw-r--r--docs/release/src/hbmame/bus/neogeo/sma_prot.h52
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp221
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h130
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp131
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/dial.h58
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp113
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h57
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp205
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h81
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp171
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h61
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.cpp173
-rw-r--r--docs/release/src/hbmame/bus/neogeo_ctrl/mahjong.h75
-rw-r--r--docs/release/src/hbmame/drivers/cps1mis.cpp1891
-rw-r--r--docs/release/src/hbmame/drivers/cps2.cpp145
-rw-r--r--docs/release/src/hbmame/drivers/dkong.cpp62
-rw-r--r--docs/release/src/hbmame/drivers/fcrash.cpp28
-rw-r--r--docs/release/src/hbmame/drivers/galaga.cpp2
-rw-r--r--docs/release/src/hbmame/drivers/galaxian.cpp6
-rw-r--r--docs/release/src/hbmame/drivers/ir.cpp2
-rw-r--r--docs/release/src/hbmame/drivers/mspacman.cpp11
-rw-r--r--docs/release/src/hbmame/drivers/multipac.cpp16
-rw-r--r--docs/release/src/hbmame/drivers/neogeo.cpp1469
-rw-r--r--docs/release/src/hbmame/drivers/neogeo0.cpp5
-rw-r--r--docs/release/src/hbmame/drivers/neogeo_noslot.cpp (renamed from docs/release/src/mame/drivers/neogeo_noslot.cpp)460
-rw-r--r--docs/release/src/hbmame/drivers/neogeohb.cpp184
-rw-r--r--docs/release/src/hbmame/drivers/nggaroup.cpp48
-rw-r--r--docs/release/src/hbmame/drivers/pacman.cpp7
-rw-r--r--docs/release/src/hbmame/drivers/pengo.cpp111
-rw-r--r--docs/release/src/hbmame/drivers/schaser.cpp2
-rw-r--r--docs/release/src/hbmame/drivers/spacmiss.cpp2
-rw-r--r--docs/release/src/hbmame/hbmame.lst111
-rw-r--r--docs/release/src/hbmame/includes/cps1.h4
-rw-r--r--docs/release/src/hbmame/includes/galaga.h146
-rw-r--r--docs/release/src/hbmame/includes/neogeo.h527
-rw-r--r--docs/release/src/hbmame/includes/pacman.h1
-rw-r--r--docs/release/src/hbmame/machine/neocrypt.cpp215
-rw-r--r--docs/release/src/hbmame/machine/ng_memcard.cpp95
-rw-r--r--docs/release/src/hbmame/machine/ng_memcard.h68
-rw-r--r--docs/release/src/hbmame/video/cps1.cpp209
-rw-r--r--docs/release/src/hbmame/video/neogeo.cpp279
-rw-r--r--docs/release/src/hbmame/video/neogeo_spr.cpp811
-rw-r--r--docs/release/src/hbmame/video/neogeo_spr.h146
-rw-r--r--docs/release/src/mame/video/neogeo_spr.cpp81
-rw-r--r--docs/release/src/osd/winui/directinput.cpp5
-rw-r--r--docs/release/src/osd/winui/mui_opts.cpp19
-rw-r--r--docs/release/src/osd/winui/mui_opts.h6
-rw-r--r--docs/release/src/osd/winui/newui.cpp27
-rw-r--r--docs/release/src/osd/winui/newui.h1
-rw-r--r--docs/release/src/osd/winui/screenshot.cpp21
-rw-r--r--docs/release/src/osd/winui/winui.cpp42
-rw-r--r--docs/release/src/version.cpp2
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
index 38ffdf1e852..8636ce6f1bb 100644
--- a/docs/release/hbmame173s.rar
+++ b/docs/release/hbmame174s.rar
Binary files differ
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[];