diff options
53 files changed, 3012 insertions, 1505 deletions
diff --git a/docs/release/hbmame175s.rar b/docs/release/hbmame176s.rar Binary files differindex 718d4d9d842..b21e523ea09 100644 --- a/docs/release/hbmame175s.rar +++ b/docs/release/hbmame176s.rar diff --git a/docs/release/scripts/genie.lua b/docs/release/scripts/genie.lua index 903d77ce3ed..d07ff394ce2 100644 --- a/docs/release/scripts/genie.lua +++ b/docs/release/scripts/genie.lua @@ -982,6 +982,12 @@ end end end +if (_OPTIONS["PLATFORM"]=="alpha") then + defines { + "PTR64=1", + } +end + if (_OPTIONS["PLATFORM"]=="arm") then buildoptions { "-Wno-cast-align", @@ -997,6 +1003,12 @@ if (_OPTIONS["PLATFORM"]=="arm64") then } end +if (_OPTIONS["PLATFORM"]=="mips64") then + defines { + "PTR64=1", + } +end + local subdir if (_OPTIONS["target"] == _OPTIONS["subtarget"]) then subdir = _OPTIONS["osd"] .. "/" .. _OPTIONS["target"] diff --git a/docs/release/scripts/src/3rdparty.lua b/docs/release/scripts/src/3rdparty.lua index d8e6c9e2fff..e3c29933220 100644 --- a/docs/release/scripts/src/3rdparty.lua +++ b/docs/release/scripts/src/3rdparty.lua @@ -722,6 +722,7 @@ end "-Wno-uninitialized", "-Wno-unused-function", "-Wno-unused-but-set-variable", + "-Wno-format-extra-args", -- temp for mingw 6.1 till update bgfx code } configuration { "rpi" } buildoptions { @@ -1209,6 +1210,8 @@ if _OPTIONS["targetos"]=="android" then targetdir(MAME_DIR .. "android-project/app/src/main/libs/x86_64") end end + + strip() else kind "StaticLib" end diff --git a/docs/release/scripts/src/bus.lua b/docs/release/scripts/src/bus.lua index 5fdd355a955..fa5f6dabd15 100644 --- a/docs/release/scripts/src/bus.lua +++ b/docs/release/scripts/src/bus.lua @@ -204,6 +204,58 @@ end --------------------------------------------------- -- +--@src/devices/bus/bbc/analogue/analogue.h,BUSES["BBC_ANALOGUE"] = true +--------------------------------------------------- + +if (BUSES["BBC_ANALOGUE"]~=null) then + files { + MAME_DIR .. "src/devices/bus/bbc/analogue/analogue.cpp", + MAME_DIR .. "src/devices/bus/bbc/analogue/analogue.h", + } +end + + +--------------------------------------------------- +-- +--@src/devices/bus/bbc/1mhzbus/1mhzbus.h,BUSES["BBC_1MHZBUS"] = true +--------------------------------------------------- + +if (BUSES["BBC_1MHZBUS"]~=null) then + files { + MAME_DIR .. "src/devices/bus/bbc/1mhzbus/1mhzbus.cpp", + MAME_DIR .. "src/devices/bus/bbc/1mhzbus/1mhzbus.h", + } +end + + +--------------------------------------------------- +-- +--@src/devices/bus/bbc/tube/tube.h,BUSES["BBC_TUBE"] = true +--------------------------------------------------- + +if (BUSES["BBC_TUBE"]~=null) then + files { + MAME_DIR .. "src/devices/bus/bbc/tube/tube.cpp", + MAME_DIR .. "src/devices/bus/bbc/tube/tube.h", + } +end + + +--------------------------------------------------- +-- +--@src/devices/bus/bbc/userport/userport.h,BUSES["BBC_USERPORT"] = true +--------------------------------------------------- + +if (BUSES["BBC_USERPORT"]~=null) then + files { + MAME_DIR .. "src/devices/bus/bbc/userport/userport.cpp", + MAME_DIR .. "src/devices/bus/bbc/userport/userport.h", + } +end + + +--------------------------------------------------- +-- --@src/devices/bus/bw2/exp.h,BUSES["BW2"] = true --------------------------------------------------- @@ -583,6 +635,8 @@ if (BUSES["ELECTRON"]~=null) then files { MAME_DIR .. "src/devices/bus/electron/exp.cpp", MAME_DIR .. "src/devices/bus/electron/exp.h", + MAME_DIR .. "src/devices/bus/electron/m2105.cpp", + MAME_DIR .. "src/devices/bus/electron/m2105.h", } end @@ -831,6 +885,8 @@ if (BUSES["ISA"]~=null) then MAME_DIR .. "src/devices/bus/isa/p1_hdc.h", MAME_DIR .. "src/devices/bus/isa/p1_rom.cpp", MAME_DIR .. "src/devices/bus/isa/p1_rom.h", + MAME_DIR .. "src/devices/bus/isa/p1_sound.cpp", + MAME_DIR .. "src/devices/bus/isa/p1_sound.h", MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.cpp", MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.h", MAME_DIR .. "src/devices/bus/isa/mc1502_rom.cpp", @@ -1606,6 +1662,8 @@ if (BUSES["RS232"]~=null) then MAME_DIR .. "src/devices/bus/rs232/pty.h", MAME_DIR .. "src/devices/bus/rs232/ser_mouse.cpp", MAME_DIR .. "src/devices/bus/rs232/ser_mouse.h", + MAME_DIR .. "src/devices/bus/rs232/sun_kbd.cpp", + MAME_DIR .. "src/devices/bus/rs232/sun_kbd.h", MAME_DIR .. "src/devices/bus/rs232/terminal.cpp", MAME_DIR .. "src/devices/bus/rs232/terminal.h", MAME_DIR .. "src/devices/bus/rs232/xvd701.cpp", @@ -2519,6 +2577,20 @@ end --------------------------------------------------- -- +--@src/devices/bus/sunkbd/sunkbd.h,BUSES["SUNKBD"] = true +--------------------------------------------------- + +if (BUSES["SUNKBD"]~=null) then + files { + MAME_DIR .. "src/devices/bus/sunkbd/hlekbd.cpp", + MAME_DIR .. "src/devices/bus/sunkbd/hlekbd.h", + MAME_DIR .. "src/devices/bus/sunkbd/sunkbd.cpp", + MAME_DIR .. "src/devices/bus/sunkbd/sunkbd.h", + } +end + +--------------------------------------------------- +-- --@src/devices/bus/ql/exp.h,BUSES["QL"] = true --------------------------------------------------- diff --git a/docs/release/scripts/src/cpu.lua b/docs/release/scripts/src/cpu.lua index ef9263c6485..a9dfe0ecd70 100644 --- a/docs/release/scripts/src/cpu.lua +++ b/docs/release/scripts/src/cpu.lua @@ -13,7 +13,7 @@ -- Dynamic recompiler objects -------------------------------------------------- -if (CPUS["SH2"]~=null or CPUS["MIPS"]~=null or CPUS["POWERPC"]~=null or CPUS["RSP"]~=null or CPUS["ARM7"]~=null) then +if (CPUS["SH2"]~=null or CPUS["MIPS"]~=null or CPUS["POWERPC"]~=null or CPUS["RSP"]~=null or CPUS["ARM7"]~=null or CPUS["ADSP21062"]~=null) then files { MAME_DIR .. "src/devices/cpu/drcbec.cpp", MAME_DIR .. "src/devices/cpu/drcbec.h", diff --git a/docs/release/scripts/src/emu.lua b/docs/release/scripts/src/emu.lua index a446a6ccaae..1f96f3b4e22 100644 --- a/docs/release/scripts/src/emu.lua +++ b/docs/release/scripts/src/emu.lua @@ -118,8 +118,6 @@ files { MAME_DIR .. "src/emu/emupal.h", MAME_DIR .. "src/emu/fileio.cpp", MAME_DIR .. "src/emu/fileio.h", - MAME_DIR .. "src/emu/hash.cpp", - MAME_DIR .. "src/emu/hash.h", MAME_DIR .. "src/emu/image.cpp", MAME_DIR .. "src/emu/image.h", MAME_DIR .. "src/emu/input.cpp", diff --git a/docs/release/scripts/src/lib.lua b/docs/release/scripts/src/lib.lua index 8c3536b144d..f554d56ab7c 100644 --- a/docs/release/scripts/src/lib.lua +++ b/docs/release/scripts/src/lib.lua @@ -56,6 +56,8 @@ project "utils" MAME_DIR .. "src/lib/util/flac.h", MAME_DIR .. "src/lib/util/harddisk.cpp", MAME_DIR .. "src/lib/util/harddisk.h", + MAME_DIR .. "src/lib/util/hash.cpp", + MAME_DIR .. "src/lib/util/hash.h", MAME_DIR .. "src/lib/util/hashing.cpp", MAME_DIR .. "src/lib/util/hashing.h", MAME_DIR .. "src/lib/util/huffman.cpp", diff --git a/docs/release/scripts/src/machine.lua b/docs/release/scripts/src/machine.lua index aab2cb0b8e3..2afe2638ae6 100644 --- a/docs/release/scripts/src/machine.lua +++ b/docs/release/scripts/src/machine.lua @@ -796,6 +796,18 @@ end --------------------------------------------------- -- +--@src/devices/machine/fga002.h,MACHINES["FGA002"] = true +--------------------------------------------------- + +if (MACHINES["FGA002"]~=null) then + files { + MAME_DIR .. "src/devices/machine/fga002.cpp", + MAME_DIR .. "src/devices/machine/fga002.h", + } +end + +--------------------------------------------------- +-- --@src/devices/machine/hd63450.h,MACHINES["HD63450"] = true --------------------------------------------------- @@ -2902,3 +2914,14 @@ if (MACHINES["SCNXX562"]~=null) then MAME_DIR .. "src/devices/machine/scnxx562.h", } end + +--------------------------------------------------- +-- +--@src/devices/machine/input_merger.h,MACHINES["INPUT_MERGER"] = true +--------------------------------------------------- +if (MACHINES["INPUT_MERGER"]~=null) then + files { + MAME_DIR .. "src/devices/machine/input_merger.cpp", + MAME_DIR .. "src/devices/machine/input_merger.h", + } +end diff --git a/docs/release/scripts/src/mame/frontend.lua b/docs/release/scripts/src/mame/frontend.lua index e35bed2da07..d1660dc0f22 100644 --- a/docs/release/scripts/src/mame/frontend.lua +++ b/docs/release/scripts/src/mame/frontend.lua @@ -98,6 +98,8 @@ files { MAME_DIR .. "src/frontend/mame/ui/filemngr.h", MAME_DIR .. "src/frontend/mame/ui/filesel.cpp", MAME_DIR .. "src/frontend/mame/ui/filesel.h", + MAME_DIR .. "src/frontend/mame/ui/filecreate.cpp", + MAME_DIR .. "src/frontend/mame/ui/filecreate.h", MAME_DIR .. "src/frontend/mame/ui/floppycntrl.cpp", MAME_DIR .. "src/frontend/mame/ui/floppycntrl.h", MAME_DIR .. "src/frontend/mame/ui/imgcntrl.cpp", @@ -108,6 +110,8 @@ files { MAME_DIR .. "src/frontend/mame/ui/info_pty.h", MAME_DIR .. "src/frontend/mame/ui/inputmap.cpp", MAME_DIR .. "src/frontend/mame/ui/inputmap.h", + MAME_DIR .. "src/frontend/mame/ui/selmenu.cpp", + MAME_DIR .. "src/frontend/mame/ui/selmenu.h", MAME_DIR .. "src/frontend/mame/ui/sliders.cpp", MAME_DIR .. "src/frontend/mame/ui/sliders.h", MAME_DIR .. "src/frontend/mame/ui/slotopt.cpp", @@ -130,7 +134,7 @@ files { MAME_DIR .. "src/frontend/mame/ui/datfile.h", MAME_DIR .. "src/frontend/mame/ui/datmenu.cpp", MAME_DIR .. "src/frontend/mame/ui/datmenu.h", - MAME_DIR .. "src/frontend/mame/ui/defimg.h", + MAME_DIR .. "src/frontend/mame/ui/defimg.ipp", MAME_DIR .. "src/frontend/mame/ui/dirmenu.cpp", MAME_DIR .. "src/frontend/mame/ui/dirmenu.h", MAME_DIR .. "src/frontend/mame/ui/icorender.h", @@ -152,8 +156,10 @@ files { MAME_DIR .. "src/frontend/mame/ui/selsoft.h", MAME_DIR .. "src/frontend/mame/ui/sndmenu.cpp", MAME_DIR .. "src/frontend/mame/ui/sndmenu.h", - MAME_DIR .. "src/frontend/mame/ui/starimg.h", - MAME_DIR .. "src/frontend/mame/ui/toolbar.h", + MAME_DIR .. "src/frontend/mame/ui/starimg.ipp", + MAME_DIR .. "src/frontend/mame/ui/toolbar.ipp", MAME_DIR .. "src/frontend/mame/ui/utils.cpp", MAME_DIR .. "src/frontend/mame/ui/utils.h", + MAME_DIR .. "src/frontend/mame/ui/widgets.cpp", + MAME_DIR .. "src/frontend/mame/ui/widgets.h", } diff --git a/docs/release/scripts/src/osd/modules.lua b/docs/release/scripts/src/osd/modules.lua index b8e5bb61b83..25a7aca2c0e 100644 --- a/docs/release/scripts/src/osd/modules.lua +++ b/docs/release/scripts/src/osd/modules.lua @@ -35,6 +35,14 @@ function addoptionsfromstring(str) end end +function pkgconfigcmd() + local pkgconfig = os.getenv("PKG_CONFIG") + if pkgconfig == nil then + return "pkg-config" + end + return pkgconfig +end + function osdmodulesbuild() removeflags { @@ -121,11 +129,9 @@ function osdmodulesbuild() MAME_DIR .. "3rdparty/compat/mingw", } - if _OPTIONS["MODERN_WIN_API"]~="1" then - includedirs { - MAME_DIR .. "3rdparty/compat/winsdk-override", - } - end + includedirs { + MAME_DIR .. "3rdparty/compat/winsdk-override", + } end if _OPTIONS["NO_OPENGL"]=="1" then @@ -245,11 +251,12 @@ function qtdebuggerbuild() local version = str_to_version(_OPTIONS["gcc_version"]) if _OPTIONS["gcc"]~=nil and (string.find(_OPTIONS["gcc"], "clang") or string.find(_OPTIONS["gcc"], "asmjs")) then configuration { "gmake or ninja" } - if (version >= 30600) then - buildoptions { - "-Wno-inconsistent-missing-override", - } - end + if (version >= 30600) then + buildoptions { + "-Wno-inconsistent-missing-override", + } + end + configuration { } end files { @@ -345,7 +352,7 @@ function qtdebuggerbuild() } else buildoptions { - backtick("pkg-config --cflags Qt5Widgets"), + backtick(pkgconfigcmd() .. " --cflags Qt5Widgets"), } end end @@ -380,7 +387,7 @@ function osdmodulestargetconf() if _OPTIONS["NO_USE_MIDI"]~="1" then if _OPTIONS["targetos"]=="linux" then - local str = backtick("pkg-config --libs alsa") + local str = backtick(pkgconfigcmd() .. " --libs alsa") addlibfromstring(str) addoptionsfromstring(str) elseif _OPTIONS["targetos"]=="macosx" then @@ -421,7 +428,7 @@ function osdmodulestargetconf() "Qt5Widgets", } else - local str = backtick("pkg-config --libs Qt5Widgets") + local str = backtick(pkgconfigcmd() .. " --libs Qt5Widgets") addlibfromstring(str) addoptionsfromstring(str) end diff --git a/docs/release/scripts/src/osd/sdl.lua b/docs/release/scripts/src/osd/sdl.lua index 4094e48c6be..44b957d8dde 100644 --- a/docs/release/scripts/src/osd/sdl.lua +++ b/docs/release/scripts/src/osd/sdl.lua @@ -42,7 +42,7 @@ function maintargetosdoptions(_target,_subtarget) links { "SDL2_ttf", } - local str = backtick("pkg-config --libs fontconfig") + local str = backtick(pkgconfigcmd() .. " --libs fontconfig") addlibfromstring(str) addoptionsfromstring(str) end @@ -132,7 +132,7 @@ function sdlconfigcmd() if _OPTIONS["targetos"]=="asmjs" then return "sdl2-config" elseif not _OPTIONS["SDL_INSTALL_ROOT"] then - return _OPTIONS['TOOLCHAIN'] .. "pkg-config sdl2" + return pkgconfigcmd() .. " sdl2" else return path.join(_OPTIONS["SDL_INSTALL_ROOT"],"bin","sdl2") .. "-config" end @@ -340,7 +340,7 @@ project ("qtdbg_" .. _OPTIONS["osd"]) MAME_DIR .. "src/osd/modules/render", MAME_DIR .. "3rdparty", } - configuration { "linux-*" } + configuration { "linux-* or freebsd" } buildoptions { "-fPIC", } diff --git a/docs/release/scripts/src/osd/sdl_cfg.lua b/docs/release/scripts/src/osd/sdl_cfg.lua index 0fd15e5ca27..b73c9253819 100644 --- a/docs/release/scripts/src/osd/sdl_cfg.lua +++ b/docs/release/scripts/src/osd/sdl_cfg.lua @@ -1,6 +1,8 @@ -- license:BSD-3-Clause -- copyright-holders:MAMEdev Team +dofile('modules.lua') + forcedincludes { MAME_DIR .. "src/osd/sdl/sdlprefix.h" } @@ -52,7 +54,7 @@ end if _OPTIONS["NO_USE_MIDI"]~="1" and _OPTIONS["targetos"]=="linux" then buildoptions { - backtick("pkg-config --cflags alsa"), + backtick(pkgconfigcmd() .. " --cflags alsa"), } end @@ -94,7 +96,7 @@ if BASE_TARGETOS=="unix" then } if _OPTIONS["targetos"]~="asmjs" then buildoptions { - backtick("pkg-config --cflags fontconfig"), + backtick(pkgconfigcmd() .. " --cflags fontconfig"), } end end @@ -121,7 +123,7 @@ elseif _OPTIONS["targetos"]=="linux" then } else buildoptions { - backtick("pkg-config --cflags Qt5Widgets"), + backtick(pkgconfigcmd() .. " --cflags Qt5Widgets"), } end elseif _OPTIONS["targetos"]=="macosx" then diff --git a/docs/release/scripts/src/sound.lua b/docs/release/scripts/src/sound.lua index 2c54bf7f0f6..bf1e87ebc7e 100644 --- a/docs/release/scripts/src/sound.lua +++ b/docs/release/scripts/src/sound.lua @@ -1130,9 +1130,9 @@ end --------------------------------------------------- -- Yamaha FM synthesizers ---@src/devices/sound/2151intf.h,SOUNDS["YM2151"] = true +--@src/devices/sound/ym2151.h,SOUNDS["YM2151"] = true --@src/devices/sound/2203intf.h,SOUNDS["YM2203"] = true ---@src/devices/sound/2413intf.h,SOUNDS["YM2413"] = true +--@src/devices/sound/ym2413.h,SOUNDS["YM2413"] = true --@src/devices/sound/2608intf.h,SOUNDS["YM2608"] = true --@src/devices/sound/2610intf.h,SOUNDS["YM2610"] = true --@src/devices/sound/2612intf.h,SOUNDS["YM2612"] = true @@ -1147,8 +1147,6 @@ end if (SOUNDS["YM2151"]~=null) then files { - MAME_DIR .. "src/devices/sound/2151intf.cpp", - MAME_DIR .. "src/devices/sound/2151intf.h", MAME_DIR .. "src/devices/sound/ym2151.cpp", MAME_DIR .. "src/devices/sound/ym2151.h", } @@ -1156,8 +1154,6 @@ end if (SOUNDS["YM2413"]~=null) then files { - MAME_DIR .. "src/devices/sound/2413intf.cpp", - MAME_DIR .. "src/devices/sound/2413intf.h", MAME_DIR .. "src/devices/sound/ym2413.cpp", MAME_DIR .. "src/devices/sound/ym2413.h", } diff --git a/docs/release/scripts/target/mame/arcade.lua b/docs/release/scripts/target/mame/arcade.lua index df58452777d..27a224055b2 100644 --- a/docs/release/scripts/target/mame/arcade.lua +++ b/docs/release/scripts/target/mame/arcade.lua @@ -572,6 +572,7 @@ MACHINES["PCI9050"] = true MACHINES["GENPC"] = true MACHINES["GEN_LATCH"] = true MACHINES["WATCHDOG"] = true +MACHINES["INPUT_MERGER"] = true -------------------------------------------------- -- specify available bus cores @@ -647,6 +648,7 @@ BUSES["SMS_CTRL"] = true BUSES["SMS_EXP"] = true --BUSES["SNES"] = true --BUSES["SPC1000"] = true +BUSES["SUNKBD"] = true --BUSES["TI99PEB"] = true --BUSES["TVC"] = true --BUSES["VBOY"] = true @@ -3227,6 +3229,7 @@ files { MAME_DIR .. "src/mame/machine/gdrom.cpp", MAME_DIR .. "src/mame/machine/gdrom.h", MAME_DIR .. "src/mame/machine/xbox.cpp", + MAME_DIR .. "src/mame/machine/xbox_usb.cpp", } createMAMEProjects(_target, _subtarget, "seibu") @@ -3258,6 +3261,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/seicupbl.cpp", MAME_DIR .. "src/mame/drivers/metlfrzr.cpp", MAME_DIR .. "src/mame/drivers/mustache.cpp", MAME_DIR .. "src/mame/includes/mustache.h", @@ -3277,8 +3281,6 @@ files { MAME_DIR .. "src/mame/drivers/r2dx_v33.cpp", MAME_DIR .. "src/mame/drivers/seibuspi.cpp", MAME_DIR .. "src/mame/includes/seibuspi.h", - MAME_DIR .. "src/mame/machine/seibuspi.cpp", - MAME_DIR .. "src/mame/machine/seibuspi.h", MAME_DIR .. "src/mame/video/seibuspi.cpp", MAME_DIR .. "src/mame/drivers/sengokmj.cpp", MAME_DIR .. "src/mame/drivers/stfight.cpp", @@ -3293,8 +3295,8 @@ files { MAME_DIR .. "src/mame/video/wiz.cpp", 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/machine/seibuspi.cpp", + MAME_DIR .. "src/mame/machine/seibuspi.h", MAME_DIR .. "src/mame/audio/seibu.cpp", MAME_DIR .. "src/mame/audio/seibu.h", MAME_DIR .. "src/mame/video/seibu_crtc.cpp", diff --git a/docs/release/scripts/target/mame/mess.lua b/docs/release/scripts/target/mame/mess.lua index 1063bd71a93..2695224e692 100644 --- a/docs/release/scripts/target/mame/mess.lua +++ b/docs/release/scripts/target/mame/mess.lua @@ -585,6 +585,8 @@ MACHINES["APPLE_DRIVE"] = true MACHINES["APPLE_FDC"] = true MACHINES["SONY_DRIVE"] = true MACHINES["SCNXX562"] = true +MACHINES["FGA002"] = true +MACHINES["INPUT_MERGER"] = true -------------------------------------------------- -- specify available bus cores @@ -602,6 +604,10 @@ BUSES["APF"] = true BUSES["APRICOT_EXPANSION"] = true BUSES["ARCADIA"] = true BUSES["ASTROCADE"] = true +BUSES["BBC_ANALOGUE"] = true +BUSES["BBC_1MHZBUS"] = true +BUSES["BBC_TUBE"] = true +BUSES["BBC_USERPORT"] = true BUSES["BML3"] = true BUSES["BW2"] = true BUSES["C64"] = true @@ -672,6 +678,7 @@ BUSES["SMS_EXP"] = true BUSES["SNES"] = true BUSES["SNES_CTRL"] = true BUSES["SPC1000"] = true +BUSES["SUNKBD"] = true BUSES["SVI_EXPANDER"] = true BUSES["SVI_SLOT"] = true BUSES["TI99PEB"] = true @@ -883,6 +890,7 @@ function linkProjects_mame_mess(_target, _subtarget) "trs", "ultimachine", "ultratec", + "unicard", "unisonic", "unisys", "usp", @@ -1070,6 +1078,7 @@ 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/machine/xbox_usb.cpp", MAME_DIR .. "src/mame/includes/saturn.h", MAME_DIR .. "src/mame/drivers/saturn.cpp", MAME_DIR .. "src/mame/machine/saturn.cpp", @@ -1105,7 +1114,6 @@ files { MAME_DIR .. "src/mame/includes/bbc.h", MAME_DIR .. "src/mame/machine/bbc.cpp", MAME_DIR .. "src/mame/video/bbc.cpp", - MAME_DIR .. "src/mame/drivers/bbcbc.cpp", MAME_DIR .. "src/mame/drivers/electron.cpp", MAME_DIR .. "src/mame/includes/electron.h", MAME_DIR .. "src/mame/machine/electron.cpp", @@ -1446,6 +1454,9 @@ files { MAME_DIR .. "src/mame/video/pk8020.cpp", MAME_DIR .. "src/mame/drivers/pyl601.cpp", MAME_DIR .. "src/mame/drivers/sm1800.cpp", + MAME_DIR .. "src/mame/drivers/sm7238.cpp", + MAME_DIR .. "src/mame/machine/km035.cpp", + MAME_DIR .. "src/mame/machine/km035.h", MAME_DIR .. "src/mame/drivers/uknc.cpp", MAME_DIR .. "src/mame/drivers/unior.cpp", MAME_DIR .. "src/mame/drivers/ut88.cpp", @@ -2018,6 +2029,7 @@ createMESSProjects(_target, _subtarget, "microsoft") files { MAME_DIR .. "src/mame/drivers/xbox.cpp", MAME_DIR .. "src/mame/includes/xbox.h", + MAME_DIR .. "src/mame/includes/xbox_usb.h", } createMESSProjects(_target, _subtarget, "mit") @@ -2716,6 +2728,7 @@ files { MAME_DIR .. "src/mame/drivers/ts803.cpp", MAME_DIR .. "src/mame/drivers/ts816.cpp", MAME_DIR .. "src/mame/drivers/tv950.cpp", + MAME_DIR .. "src/mame/drivers/tv990.cpp", } createMESSProjects(_target, _subtarget, "tem") @@ -2885,6 +2898,11 @@ files { MAME_DIR .. "src/mame/drivers/minicom.cpp", } +createMESSProjects(_target, _subtarget, "unicard") +files { + MAME_DIR .. "src/mame/drivers/bbcbc.cpp", +} + createMESSProjects(_target, _subtarget, "unisonic") files { MAME_DIR .. "src/mame/drivers/unichamp.cpp", @@ -3083,6 +3101,7 @@ files { MAME_DIR .. "src/mame/drivers/dim68k.cpp", MAME_DIR .. "src/mame/drivers/dm7000.cpp", MAME_DIR .. "src/mame/includes/dm7000.h", + MAME_DIR .. "src/mame/drivers/dmax8000.cpp", MAME_DIR .. "src/mame/drivers/dmv.cpp", MAME_DIR .. "src/mame/machine/dmv_keyb.cpp", MAME_DIR .. "src/mame/machine/dmv_keyb.h", @@ -3097,6 +3116,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/fcisio.cpp", MAME_DIR .. "src/mame/drivers/fcscsi.cpp", MAME_DIR .. "src/mame/drivers/fk1.cpp", MAME_DIR .. "src/mame/drivers/ft68m.cpp", diff --git a/docs/release/scripts/toolchain.lua b/docs/release/scripts/toolchain.lua index 6046b4d97d8..ff2f10ebbc2 100644 --- a/docs/release/scripts/toolchain.lua +++ b/docs/release/scripts/toolchain.lua @@ -246,7 +246,7 @@ function toolchain(_buildDir, _subDir) if not os.getenv("MINGW32") then print("Set MINGW32 envrionment variable.") end - if not toolchainPrefix then + if toolchainPrefix == nil or toolchainPrefix == "" then toolchainPrefix = "$(MINGW32)/bin/i686-w64-mingw32-" end premake.gcc.cc = toolchainPrefix .. "gcc" @@ -266,7 +266,7 @@ function toolchain(_buildDir, _subDir) if not os.getenv("MINGW64") then print("Set MINGW64 envrionment variable.") end - if not toolchainPrefix then + if toolchainPrefix == nil or toolchainPrefix == "" then toolchainPrefix = "$(MINGW64)/bin/x86_64-w64-mingw32-" end premake.gcc.cc = toolchainPrefix .. "gcc" @@ -772,9 +772,14 @@ function toolchain(_buildDir, _subDir) configuration { "openbsd", "x64", "Debug" } targetdir (_buildDir .. "openbsd" .. "/bin/x64/Debug") + configuration { "android-*", "Release" } + targetdir (_buildDir .. "android/bin/" .. _OPTIONS["PLATFORM"] .. "/Release") + + configuration { "android-*", "Debug" } + targetdir (_buildDir .. "android/bin/" .. _OPTIONS["PLATFORM"] .. "/Debug") + configuration { "android-*" } - targetdir (_buildDir .. "android-" .. _OPTIONS["PLATFORM"] .. "/bin") - objdir (_buildDir .. "android-" .. _OPTIONS["PLATFORM"] .. "/obj") + objdir (_buildDir .. "android/obj/" .. _OPTIONS["PLATFORM"]) includedirs { MAME_DIR .. "3rdparty/bgfx/3rdparty/khronos", "$(ANDROID_NDK_ROOT)/sources/cxx-stl/llvm-libc++/libcxx/include", @@ -1063,12 +1068,12 @@ function strip() configuration { "mingw*", "x64", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", - "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] and toolchainPrefix or "$(MINGW64)/bin/") .. "strip -s \"$(TARGET)\"", + "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] or "$(MINGW64)/bin/") .. "strip -s \"$(TARGET)\"", } configuration { "mingw*", "x32", "Release" } postbuildcommands { "$(SILENT) echo Stripping symbols.", - "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] and toolchainPrefix or "$(MINGW32)/bin/") .. "strip -s \"$(TARGET)\"", + "$(SILENT) " .. (_OPTIONS['TOOLCHAIN'] or "$(MINGW32)/bin/") .. "strip -s \"$(TARGET)\"", } configuration { "pnacl" } diff --git a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp index b11b0d987af..cc6a047b769 100644 --- a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp +++ b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp @@ -704,41 +704,6 @@ static void m68k_cause_bus_error(m68000_base_device *m68k) m68ki_jump_vector(m68k, EXCEPTION_BUS_ERROR); } -WRITE_LINE_MEMBER( m68000_base_device::write_irq1 ) -{ - set_input_line( M68K_IRQ_1, state ); -} - -WRITE_LINE_MEMBER( m68000_base_device::write_irq2 ) -{ - set_input_line( M68K_IRQ_2, state ); -} - -WRITE_LINE_MEMBER( m68000_base_device::write_irq3 ) -{ - set_input_line( M68K_IRQ_3, state ); -} - -WRITE_LINE_MEMBER( m68000_base_device::write_irq4 ) -{ - set_input_line( M68K_IRQ_4, state ); -} - -WRITE_LINE_MEMBER( m68000_base_device::write_irq5 ) -{ - set_input_line( M68K_IRQ_5, state ); -} - -WRITE_LINE_MEMBER( m68000_base_device::write_irq6 ) -{ - set_input_line( M68K_IRQ_6, state ); -} - -WRITE_LINE_MEMBER( m68000_base_device::write_irq7 ) -{ - set_input_line( M68K_IRQ_7, state ); -} - bool m68000_base_device::memory_translate(address_spacenum space, int intention, offs_t &address) { /* only applies to the program address space and only does something if the MMU's enabled */ diff --git a/docs/release/src/emu/validity.cpp b/docs/release/src/emu/validity.cpp index 05607afe0a2..09d990ffb82 100644 --- a/docs/release/src/emu/validity.cpp +++ b/docs/release/src/emu/validity.cpp @@ -10,7 +10,10 @@ #include "emu.h" #include "validity.h" + #include "emuopts.h" +#include "video/rgbutil.h" + #include <ctype.h> @@ -50,6 +53,20 @@ inline int validity_checker::get_defstr_index(const char *string, bool suppress_ //------------------------------------------------- +// random_u64 +// random_s64 +// random_u32 +// random_s32 +//------------------------------------------------- +#undef rand +inline INT32 validity_checker::random_i32() { return INT32(random_u32()); } +inline UINT32 validity_checker::random_u32() { return rand() ^ (rand() << 15); } +inline INT64 validity_checker::random_i64() { return INT64(random_u64()); } +inline UINT64 validity_checker::random_u64() { return UINT64(random_u32()) ^ (UINT64(random_u32()) << 30); } + + + +//------------------------------------------------- // validate_tag - ensure that the given tag // meets the general requirements //------------------------------------------------- @@ -182,6 +199,7 @@ bool validity_checker::check_all_matching(const char *string) validate_begin(); validate_core(); validate_inlines(); + validate_rgb(); // if we had warnings or errors, output if (m_errors > 0 || m_warnings > 0 || !m_verbose_text.empty()) @@ -362,13 +380,12 @@ void validity_checker::validate_core() void validity_checker::validate_inlines() { -#undef rand - volatile UINT64 testu64a = rand() ^ (rand() << 15) ^ ((UINT64)rand() << 30) ^ ((UINT64)rand() << 45); - volatile INT64 testi64a = rand() ^ (rand() << 15) ^ ((INT64)rand() << 30) ^ ((INT64)rand() << 45); - volatile UINT32 testu32a = rand() ^ (rand() << 15); - volatile UINT32 testu32b = rand() ^ (rand() << 15); - volatile INT32 testi32a = rand() ^ (rand() << 15); - volatile INT32 testi32b = rand() ^ (rand() << 15); + volatile UINT64 testu64a = random_u64(); + volatile INT64 testi64a = random_i64(); + volatile UINT32 testu32a = random_u32(); + volatile UINT32 testu32b = random_u32(); + volatile INT32 testi32a = random_i32(); + volatile INT32 testi32b = random_i32(); INT32 resulti32, expectedi32; UINT32 resultu32, expectedu32; INT64 resulti64, expectedi64; @@ -482,6 +499,834 @@ void validity_checker::validate_inlines() //------------------------------------------------- +// validate_rgb - validate optimised RGB utility +// class +//------------------------------------------------- + +void validity_checker::validate_rgb() +{ + /* + This performs cursory tests of most of the vector-optimised RGB + utilities, concentrating on the low-level maths. It uses random + values most of the time for a quick go/no-go indication rather + than trying to exercise edge cases. It doesn't matter too much + if the compiler optimises out some of the operations since it's + really intended to check for logic bugs in the vector code. If + the compiler can work out that the code produces the expected + result, that's good enough. + + The tests for bitwise logical operations are ordered to minimise + the chance of all-zero or all-one patterns producing a + misleading good result. + + The following functions are not tested yet: + rgbaint_t() + clamp_and_clear(const UINT32) + sign_extend(const UINT32, const UINT32) + min(const INT32) + max(const INT32) + blend(const rgbaint_t&, UINT8) + scale_and_clamp(const rgbaint_t&) + scale_imm_and_clamp(const INT32) + scale2_add_and_clamp(const rgbaint_t&, const rgbaint_t&, const rgbaint_t&) + scale_add_and_clamp(const rgbaint_t&, const rgbaint_t&); + scale_imm_add_and_clamp(const INT32, const rgbaint_t&); + static bilinear_filter(UINT32, UINT32, UINT32, UINT32, UINT8, UINT8) + bilinear_filter_rgbaint(UINT32, UINT32, UINT32, UINT32, UINT8, UINT8) + */ + + auto random_i32_nolimit = [this] + { + INT32 result; + do { result = random_i32(); } while ((result == std::numeric_limits<INT32>::min()) || (result == std::numeric_limits<INT32>::max())); + return result; + }; + + volatile INT32 expected_a, expected_r, expected_g, expected_b; + volatile INT32 actual_a, actual_r, actual_g, actual_b; + volatile INT32 imm; + rgbaint_t rgb, other; + rgb_t packed; + auto check_expected = [&] (const char *desc) + { + const volatile INT32 a = rgb.get_a32(); + const volatile INT32 r = rgb.get_r32(); + const volatile INT32 g = rgb.get_g32(); + const volatile INT32 b = rgb.get_b32(); + if (a != expected_a) osd_printf_error("Error testing %s get_a32() = %d (expected %d)\n", desc, a, expected_a); + if (r != expected_r) osd_printf_error("Error testing %s get_r32() = %d (expected %d)\n", desc, r, expected_r); + if (g != expected_g) osd_printf_error("Error testing %s get_g32() = %d (expected %d)\n", desc, g, expected_g); + if (b != expected_b) osd_printf_error("Error testing %s get_b32() = %d (expected %d)\n", desc, b, expected_b); + }; + + // check set/get + expected_a = random_i32(); + expected_r = random_i32(); + expected_g = random_i32(); + expected_b = random_i32(); + rgb.set(expected_a, expected_r, expected_g, expected_b); + check_expected("rgbaint_t::set(a, r, g, b)"); + + // check construct/set + expected_a = random_i32(); + expected_r = random_i32(); + expected_g = random_i32(); + expected_b = random_i32(); + rgb.set(rgbaint_t(expected_a, expected_r, expected_g, expected_b)); + check_expected("rgbaint_t::set(rgbaint_t)"); + + // check construct/assign + expected_a = random_i32(); + expected_r = random_i32(); + expected_g = random_i32(); + expected_b = random_i32(); + rgb = rgbaint_t(expected_a, expected_r, expected_g, expected_b); + check_expected("rgbaint_t assignment"); + + // check piecewise set + rgb.set_a(expected_a = random_i32()); + check_expected("rgbaint_t::set_a"); + rgb.set_r(expected_r = random_i32()); + check_expected("rgbaint_t::set_r"); + rgb.set_g(expected_g = random_i32()); + check_expected("rgbaint_t::set_g"); + rgb.set_b(expected_b = random_i32()); + check_expected("rgbaint_t::set_b"); + + // test merge_alpha + expected_a = rand(); + rgb.merge_alpha(rgbaint_t(expected_a, rand(), rand(), rand())); + check_expected("rgbaint_t::merge_alpha"); + + // test RGB addition (method) + expected_a += actual_a = random_i32(); + expected_r += actual_r = random_i32(); + expected_g += actual_g = random_i32(); + expected_b += actual_b = random_i32(); + rgb.add(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::add"); + + // test RGB addition (operator) + expected_a += actual_a = random_i32(); + expected_r += actual_r = random_i32(); + expected_g += actual_g = random_i32(); + expected_b += actual_b = random_i32(); + rgb += rgbaint_t(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::operator+="); + + // test offset addition (method) + imm = random_i32(); + expected_a += imm; + expected_r += imm; + expected_g += imm; + expected_b += imm; + rgb.add_imm(imm); + check_expected("rgbaint_t::add_imm"); + + // test offset addition (operator) + imm = random_i32(); + expected_a += imm; + expected_r += imm; + expected_g += imm; + expected_b += imm; + rgb += imm; + check_expected("rgbaint_t::operator+="); + + // test immediate RGB addition + expected_a += actual_a = random_i32(); + expected_r += actual_r = random_i32(); + expected_g += actual_g = random_i32(); + expected_b += actual_b = random_i32(); + rgb.add_imm_rgba(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::add_imm_rgba"); + + // test RGB subtraction (method) + expected_a -= actual_a = random_i32(); + expected_r -= actual_r = random_i32(); + expected_g -= actual_g = random_i32(); + expected_b -= actual_b = random_i32(); + rgb.sub(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::sub"); + + // test RGB subtraction (operator) + expected_a -= actual_a = random_i32(); + expected_r -= actual_r = random_i32(); + expected_g -= actual_g = random_i32(); + expected_b -= actual_b = random_i32(); + rgb -= rgbaint_t(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::operator-="); + + // test offset subtraction + imm = random_i32(); + expected_a -= imm; + expected_r -= imm; + expected_g -= imm; + expected_b -= imm; + rgb.sub_imm(imm); + check_expected("rgbaint_t::sub_imm"); + + // test immediate RGB subtraction + expected_a -= actual_a = random_i32(); + expected_r -= actual_r = random_i32(); + expected_g -= actual_g = random_i32(); + expected_b -= actual_b = random_i32(); + rgb.sub_imm_rgba(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::sub_imm_rgba"); + + // test reversed RGB subtraction + expected_a = (actual_a = random_i32()) - expected_a; + expected_r = (actual_r = random_i32()) - expected_r; + expected_g = (actual_g = random_i32()) - expected_g; + expected_b = (actual_b = random_i32()) - expected_b; + rgb.subr(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::subr"); + + // test reversed offset subtraction + imm = random_i32(); + expected_a = imm - expected_a; + expected_r = imm - expected_r; + expected_g = imm - expected_g; + expected_b = imm - expected_b; + rgb.subr_imm(imm); + check_expected("rgbaint_t::subr_imm"); + + // test reversed immediate RGB subtraction + expected_a = (actual_a = random_i32()) - expected_a; + expected_r = (actual_r = random_i32()) - expected_r; + expected_g = (actual_g = random_i32()) - expected_g; + expected_b = (actual_b = random_i32()) - expected_b; + rgb.subr_imm_rgba(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::subr_imm_rgba"); + + // test RGB multiplication (method) + expected_a *= actual_a = random_i32(); + expected_r *= actual_r = random_i32(); + expected_g *= actual_g = random_i32(); + expected_b *= actual_b = random_i32(); + rgb.mul(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::mul"); + + // test RGB multiplication (operator) + expected_a *= actual_a = random_i32(); + expected_r *= actual_r = random_i32(); + expected_g *= actual_g = random_i32(); + expected_b *= actual_b = random_i32(); + rgb *= rgbaint_t(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::operator*="); + + // test factor multiplication (method) + imm = random_i32(); + expected_a *= imm; + expected_r *= imm; + expected_g *= imm; + expected_b *= imm; + rgb.mul_imm(imm); + check_expected("rgbaint_t::mul_imm"); + + // test factor multiplication (operator) + imm = random_i32(); + expected_a *= imm; + expected_r *= imm; + expected_g *= imm; + expected_b *= imm; + rgb *= imm; + check_expected("rgbaint_t::operator*="); + + // test immediate RGB multiplication + expected_a *= actual_a = random_i32(); + expected_r *= actual_r = random_i32(); + expected_g *= actual_g = random_i32(); + expected_b *= actual_b = random_i32(); + rgb.mul_imm_rgba(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::mul_imm_rgba"); + + // test RGB and not + expected_a &= ~(actual_a = random_i32()); + expected_r &= ~(actual_r = random_i32()); + expected_g &= ~(actual_g = random_i32()); + expected_b &= ~(actual_b = random_i32()); + rgb.andnot_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::andnot_reg"); + + // test RGB or + expected_a |= actual_a = random_i32(); + expected_r |= actual_r = random_i32(); + expected_g |= actual_g = random_i32(); + expected_b |= actual_b = random_i32(); + rgb.or_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::or_reg"); + + // test RGB and + expected_a &= actual_a = random_i32(); + expected_r &= actual_r = random_i32(); + expected_g &= actual_g = random_i32(); + expected_b &= actual_b = random_i32(); + rgb.and_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::and_reg"); + + // test RGB xor + expected_a ^= actual_a = random_i32(); + expected_r ^= actual_r = random_i32(); + expected_g ^= actual_g = random_i32(); + expected_b ^= actual_b = random_i32(); + rgb.xor_reg(rgbaint_t(actual_a, actual_r, actual_g, actual_b)); + check_expected("rgbaint_t::xor_reg"); + + // test uniform or + imm = random_i32(); + expected_a |= imm; + expected_r |= imm; + expected_g |= imm; + expected_b |= imm; + rgb.or_imm(imm); + check_expected("rgbaint_t::or_imm"); + + // test uniform and + imm = random_i32(); + expected_a &= imm; + expected_r &= imm; + expected_g &= imm; + expected_b &= imm; + rgb.and_imm(imm); + check_expected("rgbaint_t::and_imm"); + + // test uniform xor + imm = random_i32(); + expected_a ^= imm; + expected_r ^= imm; + expected_g ^= imm; + expected_b ^= imm; + rgb.xor_imm(imm); + check_expected("rgbaint_t::xor_imm"); + + // test immediate RGB or + expected_a |= actual_a = random_i32(); + expected_r |= actual_r = random_i32(); + expected_g |= actual_g = random_i32(); + expected_b |= actual_b = random_i32(); + rgb.or_imm_rgba(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::or_imm_rgba"); + + // test immediate RGB and + expected_a &= actual_a = random_i32(); + expected_r &= actual_r = random_i32(); + expected_g &= actual_g = random_i32(); + expected_b &= actual_b = random_i32(); + rgb.and_imm_rgba(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::and_imm_rgba"); + + // test immediate RGB xor + expected_a ^= actual_a = random_i32(); + expected_r ^= actual_r = random_i32(); + expected_g ^= actual_g = random_i32(); + expected_b ^= actual_b = random_i32(); + rgb.xor_imm_rgba(actual_a, actual_r, actual_g, actual_b); + check_expected("rgbaint_t::xor_imm_rgba"); + + // test 8-bit get + expected_a = INT32(UINT32(expected_a) & 0x00ff); + expected_r = INT32(UINT32(expected_r) & 0x00ff); + expected_g = INT32(UINT32(expected_g) & 0x00ff); + expected_b = INT32(UINT32(expected_b) & 0x00ff); + actual_a = INT32(UINT32(rgb.get_a())); + actual_r = INT32(UINT32(rgb.get_r())); + actual_g = INT32(UINT32(rgb.get_g())); + actual_b = INT32(UINT32(rgb.get_b())); + if (actual_a != expected_a) osd_printf_error("Error testing rgbaint_t::get_a() = %d (expected %d)\n", actual_a, expected_a); + if (actual_r != expected_r) osd_printf_error("Error testing rgbaint_t::get_r() = %d (expected %d)\n", actual_r, expected_r); + if (actual_g != expected_g) osd_printf_error("Error testing rgbaint_t::get_g() = %d (expected %d)\n", actual_g, expected_g); + if (actual_b != expected_b) osd_printf_error("Error testing rgbaint_t::get_b() = %d (expected %d)\n", actual_b, expected_b); + + // test set from packed RGBA + imm = random_i32(); + expected_a = INT32((UINT32(imm) >> 24) & 0x00ff); + expected_r = INT32((UINT32(imm) >> 16) & 0x00ff); + expected_g = INT32((UINT32(imm) >> 8) & 0x00ff); + expected_b = INT32((UINT32(imm) >> 0) & 0x00ff); + rgb.set(UINT32(imm)); + check_expected("rgbaint_t::set(UINT32)"); + + // while we have a value loaded that we know doesn't exceed 8-bit range, check the non-clamping convert-to-rgba + packed = rgb.to_rgba(); + if (UINT32(imm) != UINT32(packed)) + osd_printf_error("Error testing rgbaint_t::to_rgba() = %08x (expected %08x)\n", UINT32(packed), UINT32(imm)); + + // test construct from packed RGBA and assign + imm = random_i32(); + expected_a = INT32((UINT32(imm) >> 24) & 0x00ff); + expected_r = INT32((UINT32(imm) >> 16) & 0x00ff); + expected_g = INT32((UINT32(imm) >> 8) & 0x00ff); + expected_b = INT32((UINT32(imm) >> 0) & 0x00ff); + rgb = rgbaint_t(UINT32(imm)); + check_expected("rgbaint_t(UINT32)"); + + // while we have a value loaded that we know doesn't exceed 8-bit range, check the non-clamping convert-to-rgba + packed = rgb.to_rgba(); + if (UINT32(imm) != UINT32(packed)) + osd_printf_error("Error testing rgbaint_t::to_rgba() = %08x (expected %08x)\n", UINT32(packed), UINT32(imm)); + + // test set with rgb_t + packed = random_u32(); + expected_a = INT32(UINT32(packed.a())); + expected_r = INT32(UINT32(packed.r())); + expected_g = INT32(UINT32(packed.g())); + expected_b = INT32(UINT32(packed.b())); + rgb.set(packed); + check_expected("rgbaint_t::set(rgba_t)"); + + // test construct with rgb_t + packed = random_u32(); + expected_a = INT32(UINT32(packed.a())); + expected_r = INT32(UINT32(packed.r())); + expected_g = INT32(UINT32(packed.g())); + expected_b = INT32(UINT32(packed.b())); + rgb = rgbaint_t(packed); + check_expected("rgbaint_t::set(rgba_t)"); + + // test clamping convert-to-rgba with hand-crafted values to catch edge cases + rgb.set(std::numeric_limits<INT32>::min(), -1, 0, 1); + packed = rgb.to_rgba_clamp(); + if (UINT32(0x00000001) != UINT32(packed)) + osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0x00000001)\n", UINT32(packed)); + rgb.set(254, 255, 256, std::numeric_limits<INT32>::max()); + packed = rgb.to_rgba_clamp(); + if (UINT32(0xfeffffff) != UINT32(packed)) + osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0xfeffffff)\n", UINT32(packed)); + rgb.set(std::numeric_limits<INT32>::max(), std::numeric_limits<INT32>::min(), 256, -1); + packed = rgb.to_rgba_clamp(); + if (UINT32(0xff00ff00) != UINT32(packed)) + osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0xff00ff00)\n", UINT32(packed)); + rgb.set(0, 255, 1, 254); + packed = rgb.to_rgba_clamp(); + if (UINT32(0x00ff01fe) != UINT32(packed)) + osd_printf_error("Error testing rgbaint_t::to_rgba_clamp() = %08x (expected 0x00ff01fe)\n", UINT32(packed)); + + // test in-place clamping with hand-crafted values to catch edge cases + expected_a = 0; + expected_r = 0; + expected_g = 0; + expected_b = 1; + rgb.set(std::numeric_limits<INT32>::min(), -1, 0, 1); + rgb.clamp_to_uint8(); + check_expected("rgbaint_t::clamp_to_uint8"); + expected_a = 254; + expected_r = 255; + expected_g = 255; + expected_b = 255; + rgb.set(254, 255, 256, std::numeric_limits<INT32>::max()); + rgb.clamp_to_uint8(); + check_expected("rgbaint_t::clamp_to_uint8"); + expected_a = 255; + expected_r = 0; + expected_g = 255; + expected_b = 0; + rgb.set(std::numeric_limits<INT32>::max(), std::numeric_limits<INT32>::min(), 256, -1); + rgb.clamp_to_uint8(); + check_expected("rgbaint_t::clamp_to_uint8"); + expected_a = 0; + expected_r = 255; + expected_g = 1; + expected_b = 254; + rgb.set(0, 255, 1, 254); + rgb.clamp_to_uint8(); + check_expected("rgbaint_t::clamp_to_uint8"); + + // test shift left + expected_a = (actual_a = random_i32()) << 19; + expected_r = (actual_r = random_i32()) << 3; + expected_g = (actual_g = random_i32()) << 21; + expected_b = (actual_b = random_i32()) << 6; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.shl(rgbaint_t(19, 3, 21, 6)); + check_expected("rgbaint_t::shl"); + + // test shift left immediate + expected_a = (actual_a = random_i32()) << 7; + expected_r = (actual_r = random_i32()) << 7; + expected_g = (actual_g = random_i32()) << 7; + expected_b = (actual_b = random_i32()) << 7; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.shl_imm(7); + check_expected("rgbaint_t::shl_imm"); + + // test logical shift right + expected_a = INT32(UINT32(actual_a = random_i32()) >> 8); + expected_r = INT32(UINT32(actual_r = random_i32()) >> 18); + expected_g = INT32(UINT32(actual_g = random_i32()) >> 26); + expected_b = INT32(UINT32(actual_b = random_i32()) >> 4); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.shr(rgbaint_t(8, 18, 26, 4)); + check_expected("rgbaint_t::shr"); + + // test logical shift right with opposite signs + expected_a = INT32(UINT32(actual_a = -actual_a) >> 21); + expected_r = INT32(UINT32(actual_r = -actual_r) >> 13); + expected_g = INT32(UINT32(actual_g = -actual_g) >> 11); + expected_b = INT32(UINT32(actual_b = -actual_b) >> 17); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.shr(rgbaint_t(21, 13, 11, 17)); + check_expected("rgbaint_t::shr"); + + // test logical shift right immediate + expected_a = INT32(UINT32(actual_a = random_i32()) >> 5); + expected_r = INT32(UINT32(actual_r = random_i32()) >> 5); + expected_g = INT32(UINT32(actual_g = random_i32()) >> 5); + expected_b = INT32(UINT32(actual_b = random_i32()) >> 5); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.shr_imm(5); + check_expected("rgbaint_t::shr_imm"); + + // test logical shift right immediate with opposite signs + expected_a = INT32(UINT32(actual_a = -actual_a) >> 15); + expected_r = INT32(UINT32(actual_r = -actual_r) >> 15); + expected_g = INT32(UINT32(actual_g = -actual_g) >> 15); + expected_b = INT32(UINT32(actual_b = -actual_b) >> 15); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.shr_imm(15); + check_expected("rgbaint_t::shr_imm"); + + // test arithmetic shift right + expected_a = (actual_a = random_i32()) >> 16; + expected_r = (actual_r = random_i32()) >> 20; + expected_g = (actual_g = random_i32()) >> 14; + expected_b = (actual_b = random_i32()) >> 2; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.sra(rgbaint_t(16, 20, 14, 2)); + check_expected("rgbaint_t::sra"); + + // test arithmetic shift right with opposite signs + expected_a = (actual_a = -actual_a) >> 1; + expected_r = (actual_r = -actual_r) >> 29; + expected_g = (actual_g = -actual_g) >> 10; + expected_b = (actual_b = -actual_b) >> 22; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.sra(rgbaint_t(1, 29, 10, 22)); + check_expected("rgbaint_t::sra"); + + // test arithmetic shift right immediate (method) + expected_a = (actual_a = random_i32()) >> 12; + expected_r = (actual_r = random_i32()) >> 12; + expected_g = (actual_g = random_i32()) >> 12; + expected_b = (actual_b = random_i32()) >> 12; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.sra_imm(12); + check_expected("rgbaint_t::sra_imm"); + + // test arithmetic shift right immediate with opposite signs (method) + expected_a = (actual_a = -actual_a) >> 9; + expected_r = (actual_r = -actual_r) >> 9; + expected_g = (actual_g = -actual_g) >> 9; + expected_b = (actual_b = -actual_b) >> 9; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.sra_imm(9); + check_expected("rgbaint_t::sra_imm"); + + // test arithmetic shift right immediate (operator) + expected_a = (actual_a = random_i32()) >> 7; + expected_r = (actual_r = random_i32()) >> 7; + expected_g = (actual_g = random_i32()) >> 7; + expected_b = (actual_b = random_i32()) >> 7; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb >>= 7; + check_expected("rgbaint_t::operator>>="); + + // test arithmetic shift right immediate with opposite signs (operator) + expected_a = (actual_a = -actual_a) >> 11; + expected_r = (actual_r = -actual_r) >> 11; + expected_g = (actual_g = -actual_g) >> 11; + expected_b = (actual_b = -actual_b) >> 11; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb >>= 11; + check_expected("rgbaint_t::operator>>="); + + // test RGB equality comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = ~INT32(0); + expected_r = 0; + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq(rgbaint_t(actual_a, actual_r - 1, actual_g + 1, std::numeric_limits<INT32>::min())); + check_expected("rgbaint_t::cmpeq"); + expected_a = 0; + expected_r = ~INT32(0); + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq(rgbaint_t(std::numeric_limits<INT32>::max(), actual_r, actual_g - 1, actual_b + 1)); + check_expected("rgbaint_t::cmpeq"); + + // test immediate equality comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = ~INT32(0); + expected_r = (actual_r == actual_a) ? ~INT32(0) : 0; + expected_g = (actual_g == actual_a) ? ~INT32(0) : 0; + expected_b = (actual_b == actual_a) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm(actual_a); + check_expected("rgbaint_t::cmpeq_imm"); + expected_a = (actual_a == actual_r) ? ~INT32(0) : 0; + expected_r = ~INT32(0); + expected_g = (actual_g == actual_r) ? ~INT32(0) : 0; + expected_b = (actual_b == actual_r) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm(actual_r); + check_expected("rgbaint_t::cmpeq_imm"); + expected_a = (actual_a == actual_g) ? ~INT32(0) : 0; + expected_r = (actual_r == actual_g) ? ~INT32(0) : 0; + expected_g = ~INT32(0); + expected_b = (actual_b == actual_g) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm(actual_g); + check_expected("rgbaint_t::cmpeq_imm"); + expected_a = (actual_a == actual_b) ? ~INT32(0) : 0; + expected_r = (actual_r == actual_b) ? ~INT32(0) : 0; + expected_g = (actual_g == actual_b) ? ~INT32(0) : 0; + expected_b = ~INT32(0); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm(actual_b); + check_expected("rgbaint_t::cmpeq_imm"); + expected_a = 0; + expected_r = 0; + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm(std::numeric_limits<INT32>::min()); + check_expected("rgbaint_t::cmpeq_imm"); + expected_a = !actual_a ? ~INT32(0) : 0; + expected_r = !actual_r ? ~INT32(0) : 0; + expected_g = !actual_g ? ~INT32(0) : 0; + expected_b = !actual_b ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm(0); + check_expected("rgbaint_t::cmpeq_imm"); + expected_a = 0; + expected_r = 0; + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm(std::numeric_limits<INT32>::max()); + check_expected("rgbaint_t::cmpeq_imm"); + + // test immediate RGB equality comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = 0; + expected_r = 0; + expected_g = ~INT32(0); + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm_rgba(std::numeric_limits<INT32>::min(), std::numeric_limits<INT32>::max(), actual_g, actual_b - 1); + check_expected("rgbaint_t::cmpeq_imm_rgba"); + expected_a = 0; + expected_r = 0; + expected_g = 0; + expected_b = ~INT32(0); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpeq_imm_rgba(actual_a + 1, std::numeric_limits<INT32>::min(), std::numeric_limits<INT32>::max(), actual_b); + check_expected("rgbaint_t::cmpeq_imm_rgba"); + + // test RGB greater than comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = 0; + expected_r = ~INT32(0); + expected_g = 0; + expected_b = ~INT32(0); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt(rgbaint_t(actual_a, actual_r - 1, actual_g + 1, std::numeric_limits<INT32>::min())); + check_expected("rgbaint_t::cmpgt"); + expected_a = 0; + expected_r = 0; + expected_g = ~INT32(0); + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt(rgbaint_t(std::numeric_limits<INT32>::max(), actual_r, actual_g - 1, actual_b + 1)); + check_expected("rgbaint_t::cmpgt"); + + // test immediate greater than comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = 0; + expected_r = (actual_r > actual_a) ? ~INT32(0) : 0; + expected_g = (actual_g > actual_a) ? ~INT32(0) : 0; + expected_b = (actual_b > actual_a) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm(actual_a); + check_expected("rgbaint_t::cmpgt_imm"); + expected_a = (actual_a > actual_r) ? ~INT32(0) : 0; + expected_r = 0; + expected_g = (actual_g > actual_r) ? ~INT32(0) : 0; + expected_b = (actual_b > actual_r) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm(actual_r); + check_expected("rgbaint_t::cmpgt_imm"); + expected_a = (actual_a > actual_g) ? ~INT32(0) : 0; + expected_r = (actual_r > actual_g) ? ~INT32(0) : 0; + expected_g =0; + expected_b = (actual_b > actual_g) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm(actual_g); + check_expected("rgbaint_t::cmpgt_imm"); + expected_a = (actual_a > actual_b) ? ~INT32(0) : 0; + expected_r = (actual_r > actual_b) ? ~INT32(0) : 0; + expected_g = (actual_g > actual_b) ? ~INT32(0) : 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm(actual_b); + check_expected("rgbaint_t::cmpgt_imm"); + expected_a = ~INT32(0); + expected_r = ~INT32(0); + expected_g = ~INT32(0); + expected_b = ~INT32(0); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm(std::numeric_limits<INT32>::min()); + check_expected("rgbaint_t::cmpgt_imm"); + expected_a = (actual_a > 0) ? ~INT32(0) : 0; + expected_r = (actual_r > 0) ? ~INT32(0) : 0; + expected_g = (actual_g > 0) ? ~INT32(0) : 0; + expected_b = (actual_b > 0) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm(0); + check_expected("rgbaint_t::cmpgt_imm"); + expected_a = 0; + expected_r = 0; + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm(std::numeric_limits<INT32>::max()); + check_expected("rgbaint_t::cmpgt_imm"); + + // test immediate RGB greater than comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = ~INT32(0); + expected_r = 0; + expected_g = 0; + expected_b = ~INT32(0); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm_rgba(std::numeric_limits<INT32>::min(), std::numeric_limits<INT32>::max(), actual_g, actual_b - 1); + check_expected("rgbaint_t::cmpgt_imm_rgba"); + expected_a = 0; + expected_r = ~INT32(0); + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmpgt_imm_rgba(actual_a + 1, std::numeric_limits<INT32>::min(), std::numeric_limits<INT32>::max(), actual_b); + check_expected("rgbaint_t::cmpgt_imm_rgba"); + + // test RGB less than comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = 0; + expected_r = 0; + expected_g = ~INT32(0); + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt(rgbaint_t(actual_a, actual_r - 1, actual_g + 1, std::numeric_limits<INT32>::min())); + check_expected("rgbaint_t::cmplt"); + expected_a = ~INT32(0); + expected_r = 0; + expected_g = 0; + expected_b = ~INT32(0); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt(rgbaint_t(std::numeric_limits<INT32>::max(), actual_r, actual_g - 1, actual_b + 1)); + check_expected("rgbaint_t::cmplt"); + + // test immediate less than comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = 0; + expected_r = (actual_r < actual_a) ? ~INT32(0) : 0; + expected_g = (actual_g < actual_a) ? ~INT32(0) : 0; + expected_b = (actual_b < actual_a) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm(actual_a); + check_expected("rgbaint_t::cmplt_imm"); + expected_a = (actual_a < actual_r) ? ~INT32(0) : 0; + expected_r = 0; + expected_g = (actual_g < actual_r) ? ~INT32(0) : 0; + expected_b = (actual_b < actual_r) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm(actual_r); + check_expected("rgbaint_t::cmplt_imm"); + expected_a = (actual_a < actual_g) ? ~INT32(0) : 0; + expected_r = (actual_r < actual_g) ? ~INT32(0) : 0; + expected_g =0; + expected_b = (actual_b < actual_g) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm(actual_g); + check_expected("rgbaint_t::cmplt_imm"); + expected_a = (actual_a < actual_b) ? ~INT32(0) : 0; + expected_r = (actual_r < actual_b) ? ~INT32(0) : 0; + expected_g = (actual_g < actual_b) ? ~INT32(0) : 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm(actual_b); + check_expected("rgbaint_t::cmplt_imm"); + expected_a = 0; + expected_r = 0; + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm(std::numeric_limits<INT32>::min()); + check_expected("rgbaint_t::cmplt_imm"); + expected_a = (actual_a < 0) ? ~INT32(0) : 0; + expected_r = (actual_r < 0) ? ~INT32(0) : 0; + expected_g = (actual_g < 0) ? ~INT32(0) : 0; + expected_b = (actual_b < 0) ? ~INT32(0) : 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm(0); + check_expected("rgbaint_t::cmplt_imm"); + expected_a = ~INT32(0); + expected_r = ~INT32(0); + expected_g = ~INT32(0); + expected_b = ~INT32(0); + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm(std::numeric_limits<INT32>::max()); + check_expected("rgbaint_t::cmplt_imm"); + + // test immediate RGB less than comparison + actual_a = random_i32_nolimit(); + actual_r = random_i32_nolimit(); + actual_g = random_i32_nolimit(); + actual_b = random_i32_nolimit(); + expected_a = 0; + expected_r = ~INT32(0); + expected_g = 0; + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm_rgba(std::numeric_limits<INT32>::min(), std::numeric_limits<INT32>::max(), actual_g, actual_b - 1); + check_expected("rgbaint_t::cmplt_imm_rgba"); + expected_a = ~INT32(0); + expected_r = 0; + expected_g = ~INT32(0); + expected_b = 0; + rgb.set(actual_a, actual_r, actual_g, actual_b); + rgb.cmplt_imm_rgba(actual_a + 1, std::numeric_limits<INT32>::min(), std::numeric_limits<INT32>::max(), actual_b); + check_expected("rgbaint_t::cmplt_imm_rgba"); +} + + +//------------------------------------------------- // validate_driver - validate basic driver // information //------------------------------------------------- @@ -632,7 +1477,7 @@ void validity_checker::validate_roms() total_files++; // make sure the hash is valid - hash_collection hashes; + util::hash_collection hashes; if (!hashes.from_internal_string(ROM_GETHASHDATA(romp))) osd_printf_error("ROM '%s' has an invalid hash string '%s'\n", last_name, ROM_GETHASHDATA(romp)); } @@ -1024,42 +1869,45 @@ void validity_checker::output_callback(osd_output_channel channel, const char *m std::string output; switch (channel) { - case OSD_OUTPUT_CHANNEL_ERROR: - // count the error - m_errors++; + case OSD_OUTPUT_CHANNEL_ERROR: + // count the error + m_errors++; - // output the source(driver) device 'tag' - build_output_prefix(output); + // output the source(driver) device 'tag' + build_output_prefix(output); - // generate the string - strcatvprintf(output, msg, args); - m_error_text.append(output); - break; - case OSD_OUTPUT_CHANNEL_WARNING: - // count the error - m_warnings++; + // generate the string + strcatvprintf(output, msg, args); + m_error_text.append(output); + break; - // output the source(driver) device 'tag' - build_output_prefix(output); + case OSD_OUTPUT_CHANNEL_WARNING: + // count the error + m_warnings++; - // generate the string and output to the original target - strcatvprintf(output, msg, args); - m_warning_text.append(output); - break; - case OSD_OUTPUT_CHANNEL_VERBOSE: - // if we're not verbose, skip it - if (!m_print_verbose) break; + // output the source(driver) device 'tag' + build_output_prefix(output); - // output the source(driver) device 'tag' - build_output_prefix(output); + // generate the string and output to the original target + strcatvprintf(output, msg, args); + m_warning_text.append(output); + break; - // generate the string and output to the original target - strcatvprintf(output, msg, args); - m_verbose_text.append(output); - break; - default: - chain_output(channel, msg, args); - break; + case OSD_OUTPUT_CHANNEL_VERBOSE: + // if we're not verbose, skip it + if (!m_print_verbose) break; + + // output the source(driver) device 'tag' + build_output_prefix(output); + + // generate the string and output to the original target + strcatvprintf(output, msg, args); + m_verbose_text.append(output); + break; + + default: + chain_output(channel, msg, args); + break; } } @@ -1075,7 +1923,7 @@ void validity_checker::output_via_delegate(osd_output_channel channel, const cha // call through to the delegate with the proper parameters va_start(argptr, format); - this->chain_output(channel, format, argptr); + chain_output(channel, format, argptr); va_end(argptr); } diff --git a/docs/release/src/frontend/mame/audit.cpp b/docs/release/src/frontend/mame/audit.cpp index e0db3da3cb3..ed811e7ec39 100644 --- a/docs/release/src/frontend/mame/audit.cpp +++ b/docs/release/src/frontend/mame/audit.cpp @@ -25,9 +25,9 @@ //------------------------------------------------- media_auditor::media_auditor(const driver_enumerator &enumerator) - : m_enumerator(enumerator), - m_validation(AUDIT_VALIDATE_FULL), - m_searchpath(nullptr) + : m_enumerator(enumerator) + , m_validation(AUDIT_VALIDATE_FULL) + , m_searchpath(nullptr) { } @@ -40,7 +40,7 @@ media_auditor::media_auditor(const driver_enumerator &enumerator) media_auditor::summary media_auditor::audit_media(const char *validation) { // start fresh - m_record_list.reset(); + m_record_list.clear(); // store validation for later m_validation = validation; @@ -49,10 +49,10 @@ media_auditor::summary media_auditor::audit_media(const char *validation) // all searches const char *driverpath = m_enumerator.config().root_device().searchpath(); - int found = 0; - int required = 0; - int shared_found = 0; - int shared_required = 0; + std::size_t found = 0; + std::size_t required = 0; + std::size_t shared_found = 0; + std::size_t shared_required = 0; // iterate over devices and regions for (device_t &device : device_iterator(m_enumerator.config().root_device())) @@ -61,44 +61,41 @@ const char *driverpath = m_enumerator.config().root_device().searchpath(); m_searchpath = device.searchpath(); // now iterate over regions and ROMs within - for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) + for (const rom_entry *region = rom_first_region(device); region; region = rom_next_region(region)) { // temporary hack: add the driver path & region name -std::string combinedpath = std::string(device.searchpath()).append(";").append(driverpath); +std::string combinedpath = util::string_format("%s;%s", device.searchpath(), driverpath); if (device.shortname()) combinedpath.append(";").append(device.shortname()); m_searchpath = combinedpath.c_str(); for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) { - const char *name = ROM_GETNAME(rom); - hash_collection hashes(ROM_GETHASHDATA(rom)); - device_t *shared_device = find_shared_device(device, name, hashes, ROM_GETLENGTH(rom)); + char const *const name(ROM_GETNAME(rom)); + util::hash_collection const hashes(ROM_GETHASHDATA(rom)); + device_t *const shared_device(find_shared_device(device, name, hashes, ROM_GETLENGTH(rom))); // count the number of files with hashes - if (!hashes.flag(hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom)) + if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom)) { required++; - if (shared_device != nullptr) + if (shared_device) shared_required++; } - // audit a file audit_record *record = nullptr; if (ROMREGION_ISROMDATA(region)) - record = audit_one_rom(rom); - - // audit a disk + record = &audit_one_rom(rom); else if (ROMREGION_ISDISKDATA(region)) - record = audit_one_disk(rom); + record = &audit_one_disk(rom, nullptr); - if (record != nullptr) + if (record) { // count the number of files that are found. - if (record->status() == audit_record::STATUS_GOOD || (record->status() == audit_record::STATUS_FOUND_INVALID && find_shared_device(device, name, record->actual_hashes(), record->actual_length()) == nullptr)) + if ((record->status() == audit_status::GOOD) || ((record->status() == audit_status::FOUND_INVALID) && !find_shared_device(device, name, record->actual_hashes(), record->actual_length()))) { found++; - if (shared_device != nullptr) + if (shared_device) shared_found++; } @@ -109,9 +106,9 @@ m_searchpath = combinedpath.c_str(); } // if we only find files that are in the parent & either the set has no unique files or the parent is not found, then assume we don't have the set at all - if (found == shared_found && required > 0 && (required != shared_required || shared_found == 0)) + if ((found == shared_found) && (required > 0) && ((required != shared_required) || (shared_found == 0))) { - m_record_list.reset(); + m_record_list.clear(); return NOTFOUND; } @@ -127,48 +124,20 @@ m_searchpath = combinedpath.c_str(); media_auditor::summary media_auditor::audit_device(device_t &device, const char *validation) { // start fresh - m_record_list.reset(); + m_record_list.clear(); // store validation for later m_validation = validation; m_searchpath = device.shortname(); - int found = 0; - int required = 0; - - // now iterate over regions and ROMs within - for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) - { - for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) - { - hash_collection hashes(ROM_GETHASHDATA(rom)); - - // count the number of files with hashes - if (!hashes.flag(hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom)) - { - required++; - } - - // audit a file - audit_record *record = nullptr; - if (ROMREGION_ISROMDATA(region)) - record = audit_one_rom(rom); - - // audit a disk - else if (ROMREGION_ISDISKDATA(region)) - record = audit_one_disk(rom); + std::size_t found = 0; + std::size_t required = 0; - // count the number of files that are found. - if (record != nullptr && (record->status() == audit_record::STATUS_GOOD || record->status() == audit_record::STATUS_FOUND_INVALID)) - { - found++; - } - } - } + audit_regions(rom_first_region(device), nullptr, found, required); - if (found == 0 && required > 0) + if ((found == 0) && (required > 0)) { - m_record_list.reset(); + m_record_list.clear(); return NOTFOUND; } @@ -180,74 +149,33 @@ media_auditor::summary media_auditor::audit_device(device_t &device, const char //------------------------------------------------- // audit_software //------------------------------------------------- -media_auditor::summary media_auditor::audit_software(const char *list_name, software_info *swinfo, const char *validation) +media_auditor::summary media_auditor::audit_software(const char *list_name, const software_info *swinfo, const char *validation) { // start fresh - m_record_list.reset(); + m_record_list.clear(); // store validation for later m_validation = validation; - std::string combinedpath(swinfo->shortname()); - combinedpath.append(";"); - combinedpath.append(list_name); - combinedpath.append(PATH_SEPARATOR); - combinedpath.append(swinfo->shortname()); - std::string locationtag(list_name); - locationtag.append("%"); - locationtag.append(swinfo->shortname()); - locationtag.append("%"); - if (swinfo->parentname() != nullptr) + std::string combinedpath(util::string_format("%s;%s%s%s", swinfo->shortname(), list_name, PATH_SEPARATOR, swinfo->shortname())); + std::string locationtag(util::string_format("%s%%%s%%", list_name, swinfo->shortname())); + if (!swinfo->parentname().empty()) { locationtag.append(swinfo->parentname()); - combinedpath.append(";").append(swinfo->parentname()).append(";").append(list_name).append(PATH_SEPARATOR).append(swinfo->parentname()); + combinedpath.append(util::string_format(";%s;%s%s%s", swinfo->parentname(), list_name, PATH_SEPARATOR, swinfo->parentname())); } m_searchpath = combinedpath.c_str(); - int found = 0; - int required = 0; + std::size_t found = 0; + std::size_t required = 0; // now iterate over software parts - for (software_part &part : swinfo->parts()) - { - // now iterate over regions - for ( const rom_entry *region = part.romdata(); region; region = rom_next_region( region ) ) - { - // now iterate over rom definitions - for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) - { - hash_collection hashes(ROM_GETHASHDATA(rom)); - - // count the number of files with hashes - if (!hashes.flag(hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom)) - { - required++; - } + for (const software_part &part : swinfo->parts()) + audit_regions(part.romdata(), locationtag.c_str(), found, required); - // audit a file - audit_record *record = nullptr; - if (ROMREGION_ISROMDATA(region)) - { - record = audit_one_rom(rom); - } - // audit a disk - else if (ROMREGION_ISDISKDATA(region)) - { - record = audit_one_disk(rom, locationtag.c_str()); - } - - // count the number of files that are found. - if (record != nullptr && (record->status() == audit_record::STATUS_GOOD || record->status() == audit_record::STATUS_FOUND_INVALID)) - { - found++; - } - } - } - } - - if (found == 0 && required > 0) + if ((found == 0) && (required > 0)) { - m_record_list.reset(); + m_record_list.clear(); return NOTFOUND; } @@ -264,10 +192,10 @@ media_auditor::summary media_auditor::audit_software(const char *list_name, soft media_auditor::summary media_auditor::audit_samples() { // start fresh - m_record_list.reset(); + m_record_list.clear(); - int required = 0; - int found = 0; + std::size_t required = 0; + std::size_t found = 0; // iterate over sample entries for (samples_device &device : samples_device_iterator(m_enumerator.config().root_device())) @@ -281,12 +209,12 @@ media_auditor::summary media_auditor::audit_samples() searchpath.append(";").append(iter.altbasename()); // iterate over samples in this entry - for (const char *samplename = iter.first(); samplename != nullptr; samplename = iter.next()) + for (const char *samplename = iter.first(); samplename; samplename = iter.next()) { required++; // create a new record - audit_record &record = m_record_list.append(*global_alloc(audit_record(samplename, audit_record::MEDIA_SAMPLE))); + audit_record &record = *m_record_list.emplace(m_record_list.end(), samplename, media_type::SAMPLE); // look for the files emu_file file(m_enumerator.options().sample_path(), OPEN_FLAG_READ | OPEN_FLAG_NO_PRELOAD); @@ -301,18 +229,20 @@ media_auditor::summary media_auditor::audit_samples() if (filerr == osd_file::error::NONE) { - record.set_status(audit_record::STATUS_GOOD, audit_record::SUBSTATUS_GOOD); + record.set_status(audit_status::GOOD, audit_substatus::GOOD); found++; } else - record.set_status(audit_record::STATUS_NOT_FOUND, audit_record::SUBSTATUS_NOT_FOUND); + { + record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND); + } } } } - if (found == 0 && required > 0) + if ((found == 0) && (required > 0)) { - m_record_list.reset(); + m_record_list.clear(); return NOTFOUND; } @@ -326,190 +256,131 @@ media_auditor::summary media_auditor::audit_samples() // string format //------------------------------------------------- -media_auditor::summary media_auditor::summarize(const char *name, std::string *output) +media_auditor::summary media_auditor::summarize(const char *name, std::ostream *output) const { - if (m_record_list.count() == 0) - { + if (m_record_list.empty()) return NONE_NEEDED; - } // loop over records summary overall_status = CORRECT; - for (audit_record &record : m_record_list) + for (audit_record const &record : m_record_list) { - summary best_new_status = INCORRECT; - // skip anything that's fine - if (record.substatus() == audit_record::SUBSTATUS_GOOD) + if (record.substatus() == audit_substatus::GOOD) continue; // output the game name, file name, and length (if applicable) - if (output != nullptr) + if (output) { - output->append(string_format("%-12s: %s", name, record.name())); + util::stream_format(*output, "%-12s: %s", name, record.name()); if (record.expected_length() > 0) - output->append(string_format(" (%d bytes)", record.expected_length())); - output->append(" - "); + util::stream_format(*output, " (%d bytes)", record.expected_length()); + *output << " - "; } // use the substatus for finer details + summary best_new_status = INCORRECT; switch (record.substatus()) { - case audit_record::SUBSTATUS_GOOD_NEEDS_REDUMP: - if (output != nullptr) output->append("NEEDS REDUMP\n"); - best_new_status = BEST_AVAILABLE; - break; + case audit_substatus::GOOD_NEEDS_REDUMP: + if (output) *output << "NEEDS REDUMP\n"; + best_new_status = BEST_AVAILABLE; + break; - case audit_record::SUBSTATUS_FOUND_NODUMP: - if (output != nullptr) output->append("NO GOOD DUMP KNOWN\n"); - best_new_status = BEST_AVAILABLE; - break; + case audit_substatus::FOUND_NODUMP: + if (output) *output << "NO GOOD DUMP KNOWN\n"; + best_new_status = BEST_AVAILABLE; + break; - case audit_record::SUBSTATUS_FOUND_BAD_CHECKSUM: - if (output != nullptr) - { - output->append("INCORRECT CHECKSUM:\n"); - output->append(string_format("EXPECTED: %s\n", record.expected_hashes().macro_string().c_str())); - output->append(string_format(" FOUND: %s\n", record.actual_hashes().macro_string().c_str())); - } - break; + case audit_substatus::FOUND_BAD_CHECKSUM: + if (output) + { + util::stream_format(*output, "INCORRECT CHECKSUM:\n"); + util::stream_format(*output, "EXPECTED: %s\n", record.expected_hashes().macro_string()); + util::stream_format(*output, " FOUND: %s\n", record.actual_hashes().macro_string()); + } + break; - case audit_record::SUBSTATUS_FOUND_WRONG_LENGTH: - if (output != nullptr) output->append(string_format("INCORRECT LENGTH: %d bytes\n", record.actual_length())); - break; + case audit_substatus::FOUND_WRONG_LENGTH: + if (output) util::stream_format(*output, "INCORRECT LENGTH: %d bytes\n", record.actual_length()); + break; - case audit_record::SUBSTATUS_NOT_FOUND: - if (output != nullptr) - { - device_t *shared_device = record.shared_device(); - if (shared_device == nullptr) - output->append("NOT FOUND\n"); - else - output->append(string_format("NOT FOUND (%s)\n", shared_device->shortname())); - } - break; + case audit_substatus::NOT_FOUND: + if (output) + { + device_t *const shared_device = record.shared_device(); + if (shared_device) + util::stream_format(*output, "NOT FOUND (%s)\n", shared_device->shortname()); + else + util::stream_format(*output, "NOT FOUND\n"); + } + break; - case audit_record::SUBSTATUS_NOT_FOUND_NODUMP: - if (output != nullptr) output->append("NOT FOUND - NO GOOD DUMP KNOWN\n"); - best_new_status = BEST_AVAILABLE; - break; + case audit_substatus::NOT_FOUND_NODUMP: + if (output) *output << "NOT FOUND - NO GOOD DUMP KNOWN\n"; + best_new_status = BEST_AVAILABLE; + break; - case audit_record::SUBSTATUS_NOT_FOUND_OPTIONAL: - if (output != nullptr) output->append("NOT FOUND BUT OPTIONAL\n"); - best_new_status = BEST_AVAILABLE; - break; + case audit_substatus::NOT_FOUND_OPTIONAL: + if (output) *output << "NOT FOUND BUT OPTIONAL\n"; + best_new_status = BEST_AVAILABLE; + break; - default: - assert(false); + default: + assert(false); } // downgrade the overall status if necessary - overall_status = MAX(overall_status, best_new_status); + overall_status = (std::max)(overall_status, best_new_status); } return overall_status; } -// WINUI - only report problems that the user can fix -media_auditor::summary media_auditor::winui_summarize(const char *name, std::string *output) -{ - if (m_record_list.count() == 0) - { - return NONE_NEEDED; - } - // loop over records - summary overall_status = CORRECT; - for (audit_record *record = m_record_list.first(); record; record = record->next()) - { - summary best_new_status = INCORRECT; - - // skip anything that's fine - if ( (record->substatus() == audit_record::SUBSTATUS_GOOD) - || (record->substatus() == audit_record::SUBSTATUS_GOOD_NEEDS_REDUMP) - || (record->substatus() == audit_record::SUBSTATUS_NOT_FOUND_NODUMP) - || (record->substatus() == audit_record::SUBSTATUS_FOUND_NODUMP) - ) - continue; +//------------------------------------------------- +// audit_regions - validate/count for regions +//------------------------------------------------- - // output the game name, file name, and length (if applicable) - if (output) +void media_auditor::audit_regions(const rom_entry *region, const char *locationtag, std::size_t &found, std::size_t &required) +{ + // now iterate over regions + for ( ; region; region = rom_next_region(region)) + { + // now iterate over rom definitions + for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) { - output->append(string_format("%-12s: %s", name, record->name())); - if (record->expected_length() > 0) - output->append(string_format(" (%d bytes)", record->expected_length())); - output->append(" - "); - } + util::hash_collection const hashes(ROM_GETHASHDATA(rom)); - // use the substatus for finer details - switch (record->substatus()) - { - case audit_record::SUBSTATUS_GOOD_NEEDS_REDUMP: - if (output) output->append("NEEDS REDUMP\n"); - best_new_status = BEST_AVAILABLE; - break; - - //case audit_record::SUBSTATUS_FOUND_NODUMP: - // if (output) output->append("NO GOOD DUMP KNOWN\n"); - // best_new_status = BEST_AVAILABLE; - // break; - - case audit_record::SUBSTATUS_FOUND_BAD_CHECKSUM: - if (output) - { - output->append("INCORRECT CHECKSUM:\n"); - output->append(string_format("EXPECTED: %s\n", record->expected_hashes().macro_string().c_str())); - output->append(string_format(" FOUND: %s\n", record->actual_hashes().macro_string().c_str())); - } - break; - - case audit_record::SUBSTATUS_FOUND_WRONG_LENGTH: - if (output) output->append(string_format("INCORRECT LENGTH: %d bytes\n", record->actual_length())); - break; - - case audit_record::SUBSTATUS_NOT_FOUND: - if (output) - { - device_t *shared_device = record->shared_device(); - if (shared_device) - output->append(string_format("NOT FOUND (%s)\n", shared_device->shortname())); - else - output->append("NOT FOUND\n"); - } - best_new_status = NOTFOUND; - break; - - //case audit_record::SUBSTATUS_NOT_FOUND_NODUMP: - // if (output) output->append("NOT FOUND - NO GOOD DUMP KNOWN\n"); - // best_new_status = BEST_AVAILABLE; - // break; + // count the number of files with hashes + if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP) && !ROM_ISOPTIONAL(rom)) + required++; - case audit_record::SUBSTATUS_NOT_FOUND_OPTIONAL: - if (output) output->append("NOT FOUND BUT OPTIONAL\n"); - best_new_status = BEST_AVAILABLE; - break; + audit_record const *record = nullptr; + if (ROMREGION_ISROMDATA(region)) + record = &audit_one_rom(rom); + else if (ROMREGION_ISDISKDATA(region)) + record = &audit_one_disk(rom, locationtag); - default: - break; + // count the number of files that are found. + if (record && ((record->status() == audit_status::GOOD) || (record->status() == audit_status::FOUND_INVALID))) + found++; } - - // downgrade the overall status if necessary - overall_status = MAX(overall_status, best_new_status); } - return overall_status; } + //------------------------------------------------- // audit_one_rom - validate a single ROM entry //------------------------------------------------- -audit_record *media_auditor::audit_one_rom(const rom_entry *rom) +media_auditor::audit_record &media_auditor::audit_one_rom(const rom_entry *rom) { // allocate and append a new record - audit_record &record = m_record_list.append(*global_alloc(audit_record(*rom, audit_record::MEDIA_ROM))); + audit_record &record = *m_record_list.emplace(m_record_list.end(), *rom, media_type::ROM); // see if we have a CRC and extract it if so UINT32 crc = 0; - bool has_crc = record.expected_hashes().crc(crc); + bool const has_crc = record.expected_hashes().crc(crc); // find the file and checksum it, getting the file length along the way emu_file file(m_enumerator.options().media_path(), OPEN_FLAG_READ | OPEN_FLAG_NO_PRELOAD); @@ -535,7 +406,7 @@ audit_record *media_auditor::audit_one_rom(const rom_entry *rom) // compute the final status compute_status(record, rom, record.actual_length() != 0); - return &record; + return record; } @@ -543,10 +414,10 @@ audit_record *media_auditor::audit_one_rom(const rom_entry *rom) // audit_one_disk - validate a single disk entry //------------------------------------------------- -audit_record *media_auditor::audit_one_disk(const rom_entry *rom, const char *locationtag) +media_auditor::audit_record &media_auditor::audit_one_disk(const rom_entry *rom, const char *locationtag) { // allocate and append a new record - audit_record &record = m_record_list.append(*global_alloc(audit_record(*rom, audit_record::MEDIA_DISK))); + audit_record &record = *m_record_list.emplace(m_record_list.end(), *rom, media_type::DISK); // open the disk chd_file source; @@ -555,10 +426,10 @@ audit_record *media_auditor::audit_one_disk(const rom_entry *rom, const char *lo // if we succeeded, get the hashes if (err == CHDERR_NONE) { - hash_collection hashes; + util::hash_collection hashes; // if there's a SHA1 hash, add them to the output hash - if (source.sha1() != sha1_t::null) + if (source.sha1() != util::sha1_t::null) hashes.add_sha1(source.sha1()); // update the actual values @@ -567,7 +438,7 @@ audit_record *media_auditor::audit_one_disk(const rom_entry *rom, const char *lo // compute the final status compute_status(record, rom, err == CHDERR_NONE); - return &record; + return record; } @@ -581,41 +452,25 @@ void media_auditor::compute_status(audit_record &record, const rom_entry *rom, b // if not found, provide more details if (!found) { - // no good dump - if (record.expected_hashes().flag(hash_collection::FLAG_NO_DUMP)) - record.set_status(audit_record::STATUS_NOT_FOUND, audit_record::SUBSTATUS_NOT_FOUND_NODUMP); - - // optional ROM + if (record.expected_hashes().flag(util::hash_collection::FLAG_NO_DUMP)) + record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND_NODUMP); else if (ROM_ISOPTIONAL(rom)) - record.set_status(audit_record::STATUS_NOT_FOUND, audit_record::SUBSTATUS_NOT_FOUND_OPTIONAL); - - // just plain old not found + record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND_OPTIONAL); else - record.set_status(audit_record::STATUS_NOT_FOUND, audit_record::SUBSTATUS_NOT_FOUND); + record.set_status(audit_status::NOT_FOUND, audit_substatus::NOT_FOUND); } - - // if found, provide more details else { - // length mismatch if (record.expected_length() != record.actual_length()) - record.set_status(audit_record::STATUS_FOUND_INVALID, audit_record::SUBSTATUS_FOUND_WRONG_LENGTH); - - // found but needs a dump - else if (record.expected_hashes().flag(hash_collection::FLAG_NO_DUMP)) - record.set_status(audit_record::STATUS_GOOD, audit_record::SUBSTATUS_FOUND_NODUMP); - - // incorrect hash + record.set_status(audit_status::FOUND_INVALID, audit_substatus::FOUND_WRONG_LENGTH); + else if (record.expected_hashes().flag(util::hash_collection::FLAG_NO_DUMP)) + record.set_status(audit_status::GOOD, audit_substatus::FOUND_NODUMP); else if (record.expected_hashes() != record.actual_hashes()) - record.set_status(audit_record::STATUS_FOUND_INVALID, audit_record::SUBSTATUS_FOUND_BAD_CHECKSUM); - - // correct hash but needs a redump - else if (record.expected_hashes().flag(hash_collection::FLAG_BAD_DUMP)) - record.set_status(audit_record::STATUS_GOOD, audit_record::SUBSTATUS_GOOD_NEEDS_REDUMP); - - // just plain old good + record.set_status(audit_status::FOUND_INVALID, audit_substatus::FOUND_BAD_CHECKSUM); + else if (record.expected_hashes().flag(util::hash_collection::FLAG_BAD_DUMP)) + record.set_status(audit_status::GOOD, audit_substatus::GOOD_NEEDS_REDUMP); else - record.set_status(audit_record::STATUS_GOOD, audit_record::SUBSTATUS_GOOD); + record.set_status(audit_status::GOOD, audit_substatus::GOOD); } } @@ -625,37 +480,47 @@ void media_auditor::compute_status(audit_record &record, const rom_entry *rom, b // shares a media entry with the same hashes //------------------------------------------------- -device_t *media_auditor::find_shared_device(device_t &device, const char *name, const hash_collection &romhashes, UINT64 romlength) +device_t *media_auditor::find_shared_device(device_t &device, const char *name, const util::hash_collection &romhashes, UINT64 romlength) { - bool dumped = !romhashes.flag(hash_collection::FLAG_NO_DUMP); + bool const dumped = !romhashes.flag(util::hash_collection::FLAG_NO_DUMP); // special case for non-root devices device_t *highest_device = nullptr; - if (device.owner() != nullptr) + if (device.owner()) { - for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region)) - for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom)) + for (const rom_entry *region = rom_first_region(device); region; region = rom_next_region(region)) + { + for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) + { if (ROM_GETLENGTH(rom) == romlength) { - hash_collection hashes(ROM_GETHASHDATA(rom)); + util::hash_collection hashes(ROM_GETHASHDATA(rom)); if ((dumped && hashes == romhashes) || (!dumped && ROM_GETNAME(rom) == name)) highest_device = &device; } + } + } } else { // iterate up the parent chain - for (int drvindex = m_enumerator.find(m_enumerator.driver().parent); drvindex != -1; drvindex = m_enumerator.find(m_enumerator.driver(drvindex).parent)) + for (auto drvindex = m_enumerator.find(m_enumerator.driver().parent); drvindex >= 0; drvindex = m_enumerator.find(m_enumerator.driver(drvindex).parent)) { for (device_t &scandevice : device_iterator(m_enumerator.config(drvindex).root_device())) + { for (const rom_entry *region = rom_first_region(scandevice); region; region = rom_next_region(region)) + { for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) + { if (ROM_GETLENGTH(rom) == romlength) { - hash_collection hashes(ROM_GETHASHDATA(rom)); + util::hash_collection hashes(ROM_GETHASHDATA(rom)); if ((dumped && hashes == romhashes) || (!dumped && ROM_GETNAME(rom) == name)) highest_device = &scandevice; } + } + } + } } } @@ -667,27 +532,107 @@ device_t *media_auditor::find_shared_device(device_t &device, const char *name, // audit_record - constructor //------------------------------------------------- -audit_record::audit_record(const rom_entry &media, media_type type) - : m_next(nullptr), - m_type(type), - m_status(STATUS_ERROR), - m_substatus(SUBSTATUS_ERROR), - m_name(ROM_GETNAME(&media)), - m_explength(rom_file_size(&media)), - m_length(0), - m_shared_device(nullptr) +media_auditor::audit_record::audit_record(const rom_entry &media, media_type type) + : m_type(type) + , m_status(audit_status::UNVERIFIED) + , m_substatus(audit_substatus::UNVERIFIED) + , m_name(ROM_GETNAME(&media)) + , m_explength(rom_file_size(&media)) + , m_length(0) + , m_exphashes() + , m_hashes() + , m_shared_device(nullptr) { m_exphashes.from_internal_string(ROM_GETHASHDATA(&media)); } -audit_record::audit_record(const char *name, media_type type) - : m_next(nullptr), - m_type(type), - m_status(STATUS_ERROR), - m_substatus(SUBSTATUS_ERROR), - m_name(name), - m_explength(0), - m_length(0), - m_shared_device(nullptr) +media_auditor::audit_record::audit_record(const char *name, media_type type) + : m_type(type) + , m_status(audit_status::UNVERIFIED) + , m_substatus(audit_substatus::UNVERIFIED) + , m_name(name) + , m_explength(0) + , m_length(0) + , m_exphashes() + , m_hashes() + , m_shared_device(nullptr) +{ +} + + + +// MESSUI - only report problems that the user can fix +media_auditor::summary media_auditor::winui_summarize(const char *name, std::string *output) { + if (m_record_list.empty()) + return NONE_NEEDED; + + // loop over records + summary overall_status = CORRECT; + for (audit_record const &record : m_record_list) + { + summary best_new_status = INCORRECT; + + // skip anything that's fine + if ( (record.substatus() == audit_substatus::GOOD) + || (record.substatus() == audit_substatus::GOOD_NEEDS_REDUMP) + || (record.substatus() == audit_substatus::NOT_FOUND_NODUMP) + || (record.substatus() == audit_substatus::FOUND_NODUMP) + ) + continue; + + // output the game name, file name, and length (if applicable) + //if (output) + { + output->append(string_format("%-12s: %s", name, record.name())); + if (record.expected_length() > 0) + output->append(string_format(" (%d bytes)", record.expected_length())); + output->append(" - "); + } + + // use the substatus for finer details + switch (record.substatus()) + { + case audit_substatus::FOUND_NODUMP: + if (output) output->append("NO GOOD DUMP KNOWN\n"); + best_new_status = BEST_AVAILABLE; + break; + + case audit_substatus::FOUND_BAD_CHECKSUM: + if (output) + { + output->append("INCORRECT CHECKSUM:\n"); + output->append(string_format("EXPECTED: %s\n", record.expected_hashes().macro_string().c_str())); + output->append(string_format(" FOUND: %s\n", record.actual_hashes().macro_string().c_str())); + } + break; + + case audit_substatus::FOUND_WRONG_LENGTH: + if (output) output->append(string_format("INCORRECT LENGTH: %d bytes\n", record.actual_length())); + break; + + case audit_substatus::NOT_FOUND: + if (output) + { + device_t *shared_device = record.shared_device(); + if (shared_device == NULL) + output->append("NOT FOUND\n"); + else + output->append(string_format("NOT FOUND (%s)\n", shared_device->shortname())); + } + break; + + case audit_substatus::NOT_FOUND_OPTIONAL: + if (output) output->append("NOT FOUND BUT OPTIONAL\n"); + best_new_status = BEST_AVAILABLE; + break; + + default: + break; + } + + // downgrade the overall status if necessary + overall_status = MAX(overall_status, best_new_status); + } + return overall_status; } diff --git a/docs/release/src/frontend/mame/audit.h b/docs/release/src/frontend/mame/audit.h index d936951155f..f2a73ae56ac 100644 --- a/docs/release/src/frontend/mame/audit.h +++ b/docs/release/src/frontend/mame/audit.h @@ -10,11 +10,15 @@ #pragma once -#ifndef __AUDIT_H__ -#define __AUDIT_H__ +#ifndef MAME_FRONTEND_AUDIT_H +#define MAME_FRONTEND_AUDIT_H #include "hash.h" +#include <iosfwd> +#include <list> +#include <utility> + //************************************************************************** @@ -35,100 +39,44 @@ // forward declarations class driver_enumerator; -// ======================> audit_record -// holds the result of auditing a single item -class audit_record -{ - friend class simple_list<audit_record>; +// ======================> media_auditor + +// class which manages auditing of items +class media_auditor +{ public: - // media types - enum media_type + enum class media_type { - MEDIA_ROM = 0, - MEDIA_DISK, - MEDIA_SAMPLE + ROM = 0, + DISK, + SAMPLE }; // status values - enum audit_status + enum class audit_status { - STATUS_GOOD = 0, - STATUS_FOUND_INVALID, - STATUS_NOT_FOUND, - STATUS_ERROR + GOOD = 0, + FOUND_INVALID, + NOT_FOUND, + UNVERIFIED = 100 }; // substatus values - enum audit_substatus + enum class audit_substatus { - SUBSTATUS_GOOD = 0, - SUBSTATUS_GOOD_NEEDS_REDUMP, - SUBSTATUS_FOUND_NODUMP, - SUBSTATUS_FOUND_BAD_CHECKSUM, - SUBSTATUS_FOUND_WRONG_LENGTH, - SUBSTATUS_NOT_FOUND, - SUBSTATUS_NOT_FOUND_NODUMP, - SUBSTATUS_NOT_FOUND_OPTIONAL, - SUBSTATUS_ERROR = 100 + GOOD = 0, + GOOD_NEEDS_REDUMP, + FOUND_NODUMP, + FOUND_BAD_CHECKSUM, + FOUND_WRONG_LENGTH, + NOT_FOUND, + NOT_FOUND_NODUMP, + NOT_FOUND_OPTIONAL, + UNVERIFIED = 100 }; - // construction/destruction - audit_record(const rom_entry &media, media_type type); - audit_record(const char *name, media_type type); - - // getters - audit_record *next() const { return m_next; } - media_type type() const { return m_type; } - audit_status status() const { return m_status; } - audit_substatus substatus() const { return m_substatus; } - const char *name() const { return m_name; } - UINT64 expected_length() const { return m_explength; } - UINT64 actual_length() const { return m_length; } - const hash_collection &expected_hashes() const { return m_exphashes; } - const hash_collection &actual_hashes() const { return m_hashes; } - device_t *shared_device() const { return m_shared_device; } - - // setters - void set_status(audit_status status, audit_substatus substatus) - { - m_status = status; - m_substatus = substatus; - } - - void set_actual(const hash_collection &hashes, UINT64 length = 0) - { - m_hashes = hashes; - m_length = length; - } - - void set_shared_device(device_t *shared_device) - { - m_shared_device = shared_device; - } - -private: - // internal state - audit_record * m_next; - media_type m_type; /* type of item that was audited */ - audit_status m_status; /* status of audit on this item */ - audit_substatus m_substatus; /* finer-detail status */ - const char * m_name; /* name of item */ - UINT64 m_explength; /* expected length of item */ - UINT64 m_length; /* actual length of item */ - hash_collection m_exphashes; /* expected hash data */ - hash_collection m_hashes; /* actual hash information */ - device_t * m_shared_device; /* device that shares the rom */ -}; - - -// ======================> media_auditor - -// class which manages auditing of items -class media_auditor -{ -public: // summary values enum summary { @@ -139,33 +87,96 @@ public: NOTFOUND }; + // holds the result of auditing a single item + class audit_record + { + public: + // media types + // construction/destruction + audit_record(const rom_entry &media, media_type type); + audit_record(const char *name, media_type type); + audit_record(const audit_record &) = default; + audit_record(audit_record &&) = default; + audit_record &operator=(const audit_record &) = default; + audit_record &operator=(audit_record &&) = default; + + // getters + media_type type() const { return m_type; } + audit_status status() const { return m_status; } + audit_substatus substatus() const { return m_substatus; } + const char *name() const { return m_name; } + UINT64 expected_length() const { return m_explength; } + UINT64 actual_length() const { return m_length; } + const util::hash_collection &expected_hashes() const { return m_exphashes; } + const util::hash_collection &actual_hashes() const { return m_hashes; } + device_t *shared_device() const { return m_shared_device; } + + // setters + void set_status(audit_status status, audit_substatus substatus) + { + m_status = status; + m_substatus = substatus; + } + + void set_actual(const util::hash_collection &hashes, UINT64 length = 0) + { + m_hashes = hashes; + m_length = length; + } + + void set_actual(util::hash_collection &&hashes, UINT64 length = 0) + { + m_hashes = std::move(hashes); + m_length = length; + } + + void set_shared_device(device_t *shared_device) + { + m_shared_device = shared_device; + } + + private: + // internal state + media_type m_type; // type of item that was audited + audit_status m_status; // status of audit on this item + audit_substatus m_substatus; // finer-detail status + const char * m_name; // name of item + UINT64 m_explength; // expected length of item + UINT64 m_length; // actual length of item + util::hash_collection m_exphashes; // expected hash data + util::hash_collection m_hashes; // actual hash information + device_t * m_shared_device; // device that shares the rom + }; + using record_list = std::list<audit_record>; + // construction/destruction media_auditor(const driver_enumerator &enumerator); // getters - const simple_list<audit_record> &records() const { return m_record_list; } + const record_list &records() const { return m_record_list; } // audit operations summary audit_media(const char *validation = AUDIT_VALIDATE_FULL); summary audit_device(device_t &device, const char *validation = AUDIT_VALIDATE_FULL); - summary audit_software(const char *list_name, software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL); + summary audit_software(const char *list_name, const software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL); summary audit_samples(); - summary summarize(const char *name,std::string *output = nullptr); + summary summarize(const char *name, std::ostream *output = nullptr) const; summary winui_summarize(const char *name, std::string *output = nullptr); //WINUI - only report problems that the user can fix private: // internal helpers - audit_record *audit_one_rom(const rom_entry *rom); - audit_record *audit_one_disk(const rom_entry *rom, const char *locationtag = nullptr); + void audit_regions(const rom_entry *region, const char *locationtag, std::size_t &found, std::size_t &required); + audit_record &audit_one_rom(const rom_entry *rom); + audit_record &audit_one_disk(const rom_entry *rom, const char *locationtag); void compute_status(audit_record &record, const rom_entry *rom, bool found); - device_t *find_shared_device(device_t &device, const char *name, const hash_collection &romhashes, UINT64 romlength); + device_t *find_shared_device(device_t &device, const char *name, const util::hash_collection &romhashes, UINT64 romlength); // internal state - simple_list<audit_record> m_record_list; + record_list m_record_list; const driver_enumerator & m_enumerator; const char * m_validation; const char * m_searchpath; }; -#endif /* __AUDIT_H__ */ +#endif // MAME_FRONTEND_AUDIT_H diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp index fac43eda050..1310c26f524 100644 --- a/docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.cpp @@ -189,16 +189,6 @@ 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 diff --git a/docs/release/src/hbmame/bus/neogeo/neogeo_slot.h b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.h index 1b037103165..427da810ff8 100644 --- a/docs/release/src/hbmame/bus/neogeo/neogeo_slot.h +++ b/docs/release/src/hbmame/bus/neogeo/neogeo_slot.h @@ -28,7 +28,7 @@ public: // 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 const software_list_loader &get_software_list_loader() const override { return rom_software_list_loader::instance(); } virtual iodevice_t image_type() const override { return IO_CARTSLOT; } virtual bool is_readable() const override { return 1; } diff --git a/docs/release/src/hbmame/drivers/cps1.cpp b/docs/release/src/hbmame/drivers/cps1.cpp index f1399ff957e..25992f9efd7 100644 --- a/docs/release/src/hbmame/drivers/cps1.cpp +++ b/docs/release/src/hbmame/drivers/cps1.cpp @@ -242,7 +242,7 @@ Stephh's log (2006.09.20) : #include "cpu/pic16c5x/pic16c5x.h" #include "cpu/m68000/m68000.h" #include "machine/eepromser.h" -#include "sound/2151intf.h" +#include "sound/ym2151.h" #include "sound/okim6295.h" #include "sound/qsound.h" #include "machine/kabuki.h" diff --git a/docs/release/src/hbmame/drivers/fcrash.cpp b/docs/release/src/hbmame/drivers/fcrash.cpp index a5fd9df5a92..e7786df8513 100644 --- a/docs/release/src/hbmame/drivers/fcrash.cpp +++ b/docs/release/src/hbmame/drivers/fcrash.cpp @@ -93,7 +93,7 @@ slampic: no sound. A priority problem between sprites and crowd. #include "includes/cps1.h" #include "sound/2203intf.h" #include "sound/msm5205.h" -#include "sound/2151intf.h" +#include "sound/ym2151.h" #include "sound/okim6295.h" #include "machine/eepromser.h" diff --git a/docs/release/src/hbmame/drivers/kof2002.cpp b/docs/release/src/hbmame/drivers/kof2002.cpp index 7b87cc02b8d..eb95c7b5030 100644 --- a/docs/release/src/hbmame/drivers/kof2002.cpp +++ b/docs/release/src/hbmame/drivers/kof2002.cpp @@ -312,6 +312,58 @@ ROM_START( kof2k2bjo ) /* [OLD] The King of Fighters 2002 - (kof2k2bjho) - Remix ROM_LOAD16_BYTE( "265-c8.c8", 0x3000001, 0x800000, CRC(ab0bb549) SHA1(d23afb60b7f831f7d4a98ad3c4a00ee19877a1ce) ) ROM_END +ROM_START( kof2k2bl3 ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "265bl3.p1", 0x000000, 0x100000, CRC(94a95838) SHA1(a872a92b828d976eabd332e8d22b451dd709eca6) ) + ROM_LOAD16_WORD_SWAP( "265bl3.p2", 0x100000, 0x400000, CRC(2bada9e2) SHA1(48cdeb9d828d2be6e212f460ce5b1105802fd8e2) ) + + NEO_SFIX_128K( "265bl3.s1", CRC(9acd7f92) SHA1(827534f914b9cf91e907e8532c28abdcd8da71d7) ) + + NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) ) + ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) ) + ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) ) + ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "265bl4.c1", 0x0000000, 0x800000, CRC(325399a6) SHA1(50a565941ac805759872176ebb1506a736c05917) ) + ROM_LOAD16_BYTE( "265bl4.c2", 0x0000001, 0x800000, CRC(76374796) SHA1(d4adf26ed356d271838c40aea2a84f604da2f8cb) ) + ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) ) + ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) ) + ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) ) + ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) ) + ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) ) + ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) ) +ROM_END + +ROM_START( kof2k2bl4 ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "265bl4.p1", 0x000000, 0x100000, CRC(938af736) SHA1(27b0301ed208c155b56a2775ad6d1b683ead667e) ) + ROM_LOAD16_WORD_SWAP( "265bl4.p2", 0x100000, 0x400000, CRC(9ff989fb) SHA1(d17528aa2aacdbd731ec30edb17fcdb1ebe34e62) ) + + NEO_SFIX_128K( "265bl4.s1", CRC(2aacaf8e) SHA1(3b09ef3215180de70327313c573c870d33a54714) ) + + NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) ) + ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) ) + ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) ) + ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "265bl4.c1", 0x0000000, 0x800000, CRC(325399a6) SHA1(50a565941ac805759872176ebb1506a736c05917) ) + ROM_LOAD16_BYTE( "265bl4.c2", 0x0000001, 0x800000, CRC(76374796) SHA1(d4adf26ed356d271838c40aea2a84f604da2f8cb) ) + ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) ) + ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) ) + ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) ) + ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) ) + ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) ) + ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) ) +ROM_END + ROM_START( kof2k2bld ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "265bld.p1", 0x000000, 0x100000, CRC(0a6b5e22) SHA1(0db2c458e79a0380ccfa3e1772e42223f0edaaa9) ) @@ -2133,6 +2185,33 @@ ROM_START( kof2k2olp ) ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) ) ROM_END +ROM_START( kof2k2omg ) // kof02omg + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "265omg.p1", 0x000000, 0x100000, CRC(62174834) SHA1(7bdfa0260bba90b0325b90849fb8f9acef34c3f4) ) + ROM_IGNORE( 0x2bd4c1 ) + ROM_LOAD16_WORD_SWAP( "265omg.p2", 0x100000, 0x400000, CRC(6fadc5c3) SHA1(8336d339013d3357b11b8e0c1816b560a755f935) ) + + NEO_SFIX_128K( "265omg.s1", CRC(6145daf4) SHA1(81bf405e8862854f3ae003ca840c0de05326a54f) ) + + NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) ) + ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) ) + ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) ) + ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "265xxx.c1", 0x0000000, 0x800000, CRC(745B343E) SHA1(ae8293b18cfb4c20e2915149872d9fa561a218bf) ) + ROM_LOAD16_BYTE( "265xxx.c2", 0x0000001, 0x800000, CRC(2AAB7F98) SHA1(083c6e9162ab3bb49b365f91246cb39019dabe43) ) + ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(E5074EEA) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) ) + ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(F6EB1FF2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) ) + ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) ) + ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) ) + ROM_LOAD16_BYTE( "265ori.c7", 0x3000000, 0x800000, CRC(0E9F6ADB) SHA1(0e4cdbd3df2ef7b0c78c3275ee22684c67bf2d23) ) + ROM_LOAD16_BYTE( "265ori.c8", 0x3000001, 0x800000, CRC(9961799E) SHA1(cf5d43bbd90269155ac41fe9a31328654784351f) ) +ROM_END + ROM_START( kof2k2omg8 ) // KOF-ON Team omega 0.8 ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "265omg8.p1", 0x000000, 0x100000, CRC(53086581) SHA1(a548625cfe62bc6f164276fda8e589a0e734af25) ) @@ -3165,6 +3244,32 @@ ROM_START( kof2k2sm ) // bad gfx on train scene ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) ) ROM_END +ROM_START( kof2k2smf ) // kf2k2smf + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "265smf.p1", 0x000000, 0x100000, CRC(d8010414) SHA1(4a6e509e25b819188181375238f5b086ee28ff6e) ) + ROM_LOAD16_WORD_SWAP( "265smf.p2", 0x100000, 0x400000, CRC(1647a83a) SHA1(2415636880cfb5a65255d9248a3034d247eff8d4) ) + + NEO_SFIX_128K( "265smf.s1", CRC(c7282dbc) SHA1(7fd82850a35a6ea0c2877aaf39cc46d7dcbd939b) ) + + NEO_BIOS_AUDIO_128K( "265ori.m1", CRC(AB9D360E) SHA1(a0c8a5aae387c4f0b72790211695da7df924c351) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "265nu.v1", 0x000000, 0x400000, CRC(13d98607) SHA1(0f1a374247992d301bc26c0bab200631a13a9f4a) ) + ROM_LOAD( "265nu.v2", 0x400000, 0x400000, CRC(9cf74677) SHA1(073e7cb00127690fdec05c19f00347ec449f15ac) ) + ROM_LOAD( "265nu.v3", 0x800000, 0x400000, CRC(8e9448b5) SHA1(c22420649c7c68a172290548cab846345c861cb0) ) + ROM_LOAD( "265nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "265d.c1", 0x0000000, 0x800000, CRC(7efa6ef7) SHA1(71345A4202E7CC9239538FB978638141416C8893) ) + ROM_LOAD16_BYTE( "265d.c2", 0x0000001, 0x800000, CRC(aa82948b) SHA1(B2A40797F68BDEB80BC54DCCC5495BE68934BF0E) ) + ROM_LOAD16_BYTE( "265d.c3", 0x1000000, 0x800000, CRC(959fad0b) SHA1(63AB83DDC5F688DC8165A7FF8D262DF3FCD942A2) ) + ROM_LOAD16_BYTE( "265d.c4", 0x1000001, 0x800000, CRC(efe6a468) SHA1(2A414285E48AA948B5B0D4A9333BAB083B5FB853) ) + ROM_LOAD16_BYTE( "265d.c5", 0x2000000, 0x800000, CRC(74bba7c6) SHA1(E01ADC7A4633BC0951B9B4F09ABC07D728E9A2D9) ) + ROM_LOAD16_BYTE( "265d.c6", 0x2000001, 0x800000, CRC(e20d2216) SHA1(5D28EEA7B581E780B78F391A8179F1678EE0D9A5) ) + ROM_LOAD16_BYTE( "265smg.c7", 0x3000000, 0x800000, CRC(febfa475) SHA1(ed69f7536d39522b85bfaa512e75b85d08b439e9) ) + ROM_LOAD16_BYTE( "265smg.c8", 0x3000001, 0x800000, CRC(8f9b7991) SHA1(9c6e6af48c18e81ecba68563f8fb9caa85899672) ) +ROM_END + ROM_START( kof2k2smg ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "265smg.p1", 0x000000, 0x100000, CRC(8c07ce4e) SHA1(754d588fb41cbaf9466c677e9daccac4e2025925) ) @@ -3473,6 +3578,8 @@ GAME( 2002, kof2k2bd, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, ko GAME( 2002, kof2k2bh, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Alphax2", "Kof2002 (Add Char set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, kof2k2bjh, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ben Jeremy", "Kof2002 (Diff Moves 031025)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, kof2k2bjo, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Ben Jeremy", "Kof2002 (Diff Moves 031013)", MACHINE_SUPPORTS_SAVE ) +GAME( 2011, kof2k2bl3, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neo Nebuwaks/Ismamj", "Kof2002 BLOOD S.PLUS (BL3)", MACHINE_SUPPORTS_SAVE ) +GAME( 2011, kof2k2bl4, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Neo Nebuwaks/Ismamj", "Kof2002 BLOOD S.PLUS (BL4)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2bld, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 BLOOD PLUS", MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2blood2,kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 BLOOD PLUS 2", MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2br, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2k2h, ROT0, "hack", "Kof2002 (Portuguese set 2)", MACHINE_SUPPORTS_SAVE ) @@ -3547,6 +3654,7 @@ GAME( 2002, kof2k2mpu, kof2002, neogeo_noslot, neogeo, neogeo_state, ne GAME( 2002, kof2k2ngp, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Portuguese negative colour)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, kof2k2nu, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack by BXX", "Kof2002 (Super Black Nude Mix)" , MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2olp, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Orochi Leona 97 color style)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, kof2k2omg, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (hack omg)", MACHINE_SUPPORTS_SAVE ) GAME( 2010, kof2k2omg8, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Omega v0.8)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, kof2k2omg9, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Omega v0.9)", MACHINE_SUPPORTS_SAVE ) GAME( 2011, kof2k2omg9b, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team", "Kof2002 (Omega v0.9 beta)", MACHINE_SUPPORTS_SAVE ) @@ -3589,6 +3697,7 @@ GAME( 2002, kof2k2sb, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, ko GAME( 2002, kof2k2se2, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Creamymami", "Kof2002 (Add Char - Ultra kill start max - Ultra pow hack set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2seh, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof2002m, ROT0, "Creamymami", "Kof2002 (Add Char - Ultra kill start max - Ultra pow hack set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, kof2k2sm, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Maitry Maker", "Kof2002 (Super Mix)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, kof2k2smf, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF-ON Team/Abbas", "Kof2002 (SMF)" , MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2smg, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker/Abbas", "Kof2002 (SMG by Abbas)" , MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2smg2, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arn", "Kof2002 (Recompilation of SMG by Arn)" , MACHINE_SUPPORTS_SAVE ) GAME( 2002, kof2k2soi, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "ACM1PT", "Kof2002 Super Orochi Iori (by ADM1PT)", MACHINE_SUPPORTS_SAVE ) @@ -3603,4 +3712,4 @@ GAME( 2002, kof2k2wuk, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, ko GAME( 2002, kof2k2xxx, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Peggy / Kim", "Kof2002 (Perfect revised edition)", MACHINE_SUPPORTS_SAVE ) ///GAME( 2002, kof2002d, kof2002, neogeo_noslot, neogeo, neogeo_state, kof2002d, ROT0, "hack", "Kof2002 (NGM-2650)(NGH-2650) (decrypted C)", MACHINE_SUPPORTS_SAVE ) ///GAME( 2002, kf2k2plb, kof2002, neogeo_noslot, neogeo, neogeo_state, kf2k2pls, ROT0, "bootleg", "Kof2002 Plus (set 3, bootleg / hack)", MACHINE_SUPPORTS_SAVE ) -///GAME( 2002, kf2k2plc, kof2002, neogeo_noslot, neogeo, neogeo_state, kf2k2plc, ROT0, "bootleg", "Kof2002 Super (set 4, bootleg / hack)", MACHINE_SUPPORTS_SAVE ) +///GAME( 2002, kf2k2plc, kof2002, neogeo_noslot, neogeo, neogeo_state, kf2k2plc, ROT0, "bootleg", "Kof2002 Super (set 4, bootleg / hack)", MACHINE_SUPPORTS_SAVE )
\ No newline at end of file diff --git a/docs/release/src/hbmame/drivers/kof96.cpp b/docs/release/src/hbmame/drivers/kof96.cpp index bf76252e248..17b21e38faa 100644 --- a/docs/release/src/hbmame/drivers/kof96.cpp +++ b/docs/release/src/hbmame/drivers/kof96.cpp @@ -858,6 +858,31 @@ ROM_START( kof96oir ) // Orochi Iori Remix by IsmaMj ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) ) ROM_END +ROM_START( kof96pch ) // All confirmed + ROM_REGION( 0x300000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "214pch.p1", 0x000000, 0x100000, CRC(71db3c3e) SHA1(39770e938067b7f4d434d7af93fbe77f0a3d9a3d) ) + ROM_LOAD16_WORD_SWAP( "214-p2.sp2", 0x100000, 0x200000, CRC(002ccb73) SHA1(3ae8df682c75027ca82db25491021eeba00a267e) ) + + NEO_SFIX_128K( "214-s1.s1", CRC(1254cbdb) SHA1(fce5cf42588298711a3633e9c9c1d4dcb723ac76) ) + + NEO_BIOS_AUDIO_128K( "214-m1.m1", CRC(dabc427c) SHA1(b76722ed142ee7addceb4757424870dbd003e8b3) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "214-v1.v1", 0x000000, 0x400000, CRC(63f7b045) SHA1(1353715f1a8476dca6f8031d9e7a401eacab8159) ) + ROM_LOAD( "214-v2.v2", 0x400000, 0x400000, CRC(25929059) SHA1(6a721c4cb8f8dc772774023877d4a9f50d5a9e31) ) + ROM_LOAD( "214-v3.v3", 0x800000, 0x200000, CRC(92a2257d) SHA1(5064aec78fa0d104e5dd5869b95382aa170214ee) ) + + ROM_REGION( 0x2000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "214-c1.c1", 0x0000000, 0x400000, CRC(7ecf4aa2) SHA1(f773c4c1f05d58dd37e7bb2ac1d1e0ec43998a71) ) + ROM_LOAD16_BYTE( "214-c2.c2", 0x0000001, 0x400000, CRC(05b54f37) SHA1(cc31653fe4cb05201fba234e080cb9c7a7592b1b) ) + ROM_LOAD16_BYTE( "214-c3.c3", 0x0800000, 0x400000, CRC(64989a65) SHA1(e6f3749d43be0afa9dad7b085cb782ba694252ca) ) + ROM_LOAD16_BYTE( "214-c4.c4", 0x0800001, 0x400000, CRC(afbea515) SHA1(ae875052728de33174827705646bd14cf3937b5c) ) + ROM_LOAD16_BYTE( "214-c5.c5", 0x1000000, 0x400000, CRC(2a3bbd26) SHA1(7c1a7e50a10a1b082e0d0d515c34135ee9f995ac) ) + ROM_LOAD16_BYTE( "214-c6.c6", 0x1000001, 0x400000, CRC(44d30dc7) SHA1(c8ae001e37224b55d9e4a4d99f6578b4f6eb055f) ) + ROM_LOAD16_BYTE( "214-c7.c7", 0x1800000, 0x400000, CRC(3687331b) SHA1(2be95caab76d7af51674f93884330ba73a6053e4) ) + ROM_LOAD16_BYTE( "214-c8.c8", 0x1800001, 0x400000, CRC(fa1461ad) SHA1(6c71a7f08e4044214223a6bf80984582ab5e0328) ) +ROM_END + ROM_START( kof96pjc ) /* The King of Fighters '96 - Colour fix by TcwLee - (Character colour change) */ ROM_REGION( 0x300000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "214-p1.p1", 0x000000, 0x100000, CRC(52755d74) SHA1(4232d627f1d2e6ea9fc8cf01571d77d4d5b8a1bb) ) @@ -1346,7 +1371,7 @@ GAME( 1998, kof96c, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 2011, kof96cbi, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Change Blood For Other Hack (02-03-11))", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96ckvs, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KVS", "Kof'96 (Chinese ver)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96chj, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL and Jason/K3", "Kof'96 (Diff Moves - Ultra kill style changed set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 200?, kof96cn, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Chinese Edition ver 1.0, hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, kof96cn, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Guangzhou Game Team", "Kof'96 (CN)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96cr, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL", "Kof'96 (Diff Moves and Style)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96de, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Dragon Edition set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96eh, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'96 (Add Char - Pow hack ABC set 1)", MACHINE_SUPPORTS_SAVE ) @@ -1367,9 +1392,10 @@ GAME( 2007, kof96lx, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 1996, kof96ncd, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Eddids FCHT", "Kof'96 (Boss, Like NEOGEOCD Version)", MACHINE_SUPPORTS_SAVE ) GAME( 2011, kof96oib, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Special Orochi Iori/Boss Hack v3.0)", MACHINE_SUPPORTS_SAVE ) GAME( 2011, kof96oib2, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Special Orochi Iori/Boss Hack v3.0 alt)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, kof96oih, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Orochi Iori (unknown hack))", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, kof96oih, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'96 (Orochi Iori (OIH))", MACHINE_SUPPORTS_SAVE ) GAME( 2010, kof96oir, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "IsmaMj", "Kof'96 (Orochi Iori Remix)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96pjc, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "TcwLee", "Kof'96 (Char color changed)", MACHINE_SUPPORTS_SAVE ) +GAME( 2011, kof96pch, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "C-17", "Kof'96 (C-17 hack)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96pm, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF1996", "Kof'96 Practice Mode (Hack by KOF1996)", MACHINE_SUPPORTS_SAVE ) GAME( 2004, kof96rcw, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker/Fight China", "Kof'96 (Diff Moves - Ultra kill style changed set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, kof96rf, kof96, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK2003", "Kof'96 Remix Final (2007 Revised Version)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/kof97.cpp b/docs/release/src/hbmame/drivers/kof97.cpp index 4fbf47a3a6d..8720f9cafc3 100644 --- a/docs/release/src/hbmame/drivers/kof97.cpp +++ b/docs/release/src/hbmame/drivers/kof97.cpp @@ -90,6 +90,29 @@ ROM_START( kof97ae1 ) ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) ROM_END +ROM_START( kof97aot ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232aot.p1", 0x000000, 0x100000, CRC(edd3bd8f) SHA1(7c422db860c9b8c8caf933bfabbc43b891fc0a5e) ) + ROM_LOAD16_WORD_SWAP( "232zm.p2", 0x100000, 0x400000, CRC(ca11478d) SHA1(484533266ba677fa2930e977226c4b72a59de8e2) ) + + NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) + ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + ROM_START( kof97bh ) /* The King of Fighters '97 - Hack by Dodowang - (Can choose Orochi + add. Iori, Yashiro, Shermie, Chris and Leona - Orochi has icon in menue - extra stage select) */ ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232bh.p1", 0x000000, 0x100000, CRC(b49a3fcf) SHA1(2dcb95e184b86a455ef23b70aca00bbcd28f23c5) ) @@ -344,6 +367,55 @@ ROM_START( kof97cr ) /* The King of Fighters '97 - Remix by CHL Hack by Leather ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) ROM_END +ROM_START( kof97cy ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232cy.p1", 0x000000, 0x4550c4, CRC(070d8bd6) SHA1(2565bd372bb2a1aa88b55b770e48e7bfc82823d8) ) + ROM_LOAD16_WORD_SWAP( "232cy.p2", 0x100000, 0x400000, CRC(97fd8943) SHA1(2127846451507769d49747f42c97be5b1a82ad93) ) + + //NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) ) + NEO_SFIX_MT_128K + ROM_LOAD( "232cy.s1", 0x000000, 0x20000, CRC(aaef5283) SHA1(e2b3fcedebf22cc40e671a651678b5a68868f701) ) + ROM_IGNORE( 0x434f55 ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232cy.c1", 0x0000000, 0x800000, CRC(503850f7) SHA1(004cc243a424bbe3b81c32ba513999c2fdd2b430) ) + ROM_LOAD16_BYTE( "232cy.c2", 0x0000001, 0x800000, CRC(ce3b418b) SHA1(8f605f0ea992b954bd540435156ce0cafaa5abed) ) + ROM_LOAD16_BYTE( "232cy.c3", 0x1000000, 0x800000, CRC(52e5f3a7) SHA1(bae549239b0422dfb26b24c6d4a1e501dbb00cf0) ) + ROM_LOAD16_BYTE( "232cy.c4", 0x1000001, 0x800000, CRC(b97c21e3) SHA1(8d79460de1ac0cf147292b9018661a729140e3f9) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + +ROM_START( kof97dse ) // All confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232dse.p1", 0x000000, 0x100000, CRC(8f00511f) SHA1(7c04420f8d35034ac3995bc0764d444c843184f1) ) + ROM_LOAD16_WORD_SWAP( "232dse.p2", 0x100000, 0x400000, CRC(0fa5639a) SHA1(ead4d2c4d6d13160170d121b9244eaf427637aaa) ) + + NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) + ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + ROM_START( kof97eh ) /* The King of Fighters '97 - Super Enhance Hack by Creamymami, Leather and Ydmis - (Can choose Orochi + 5 add. characters - ultra kill start is max in Advanced Mode - ultra power hack ABC - extra stage select) */ ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232eh.p1", 0x000000, 0x100000, CRC(3d4eb515) SHA1(7d1ca643fb3872495fa681bc28a975d92822b7f0) ) @@ -413,10 +485,33 @@ ROM_START( kof97eho ) /* The King of Fighters '97 - Enhance by Ydmis - (Can choo ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) ROM_END +ROM_START( kof97ei ) // all confirmed (diff colours of kof97co) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232ei.p1", 0x000000, 0x100000, CRC(5d8e9114) SHA1(5d9262c17758d64524f1af8266d16f336df283f9) ) + ROM_LOAD16_WORD_SWAP( "232ei.p2", 0x100000, 0x400000, CRC(39259db2) SHA1(741a9ab344f182c06806b1ee4d2e2b8f5521bf6e) ) + + NEO_SFIX_128K( "232ae.s1", CRC(d4957067) SHA1(b756c97b050296db9b00e0bc6cdd79e4d2e2273e) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232ae.c1", 0x0000000, 0x800000, CRC(ea16b711) SHA1(e54d1a0b559f1ef326ee86bc89e9f1b399f08b32) ) + ROM_LOAD16_BYTE( "232ae.c2", 0x0000001, 0x800000, CRC(b7bef674) SHA1(378a67dfa7dba03900dd7c70a3473c12f9879af1) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + ROM_START( kof97evo ) // Evolution ROM_REGION( 0x500000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "232evo.p1", 0x000000, 0x100000, CRC(8ee0d743) SHA1(7bfd8428efb0a738decccf0f2120dac1c4bc3a6a) ) - ROM_LOAD16_WORD_SWAP( "232evo.sp2", 0x100000, 0x400000, CRC(5cbb2499) SHA1(58e21c1ff7afbfcca0a733e2b3e9f54b2317ed42) ) + ROM_LOAD16_WORD_SWAP( "232evo.p1", 0x000000, 0x100000, CRC(8ee0d743) SHA1(7bfd8428efb0a738decccf0f2120dac1c4bc3a6a) ) + ROM_LOAD16_WORD_SWAP( "232evo.p2", 0x100000, 0x400000, CRC(5cbb2499) SHA1(58e21c1ff7afbfcca0a733e2b3e9f54b2317ed42) ) NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) ) @@ -459,6 +554,30 @@ ROM_START( kof97evoa ) // Old evolution ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) ROM_END +ROM_START( kof97frb ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232frb.p1", 0x000000, 0x100000, CRC(3c5e84fc) SHA1(b71391369293a81cb22a849e1682e141e9d8c0b3) ) + //ROM_LOAD16_WORD_SWAP( "232frb.pg1", 0x000000, 0x100000, CRC(5c2400b7) SHA1(49e23f80c012c62146a1bb8f254a7597823de430) ) // alternate rom in the set + ROM_LOAD16_WORD_SWAP( "232frb.p2", 0x100000, 0x400000, CRC(f7e09607) SHA1(f64d394226876e1d189549ba0fd7fb3c4fd9df82) ) + + NEO_SFIX_128K( "232frb.s1", CRC(3c9af3f7) SHA1(7320fa38fc6db4f3ab6077d2541bb16fa5fb31ef) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232frb.c1", 0x0000000, 0x800000, CRC(6f837a71) SHA1(dfc6dcb9e3def1c78fb43550a332657fae68650f) ) + ROM_LOAD16_BYTE( "232frb.c2", 0x0000001, 0x800000, CRC(c1a51c17) SHA1(38b8862267daf7975a235dc72cf787256ca108fb) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + ROM_START( kof97hk ) // Evolution Hakeshu ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232evoa.p1", 0x000000, 0x100000, CRC(d439c4ed) SHA1(67117ffce3c95615d75eb298c50224685df5f0b7) ) @@ -551,6 +670,29 @@ ROM_START( kof97ice ) /* The King of Fighters '97 - Colour fix by Cz-Kyo97 - (Co ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) ROM_END +ROM_START( kof97irgc ) // All confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232irgc.p1", 0x000000, 0x100000, CRC(fbc9341f) SHA1(fb9605f94a438aa79ad03fb9fd6f5fca7a6d1edb) ) + ROM_LOAD16_WORD_SWAP( "232irgc.p2", 0x100000, 0x400000, CRC(6c9092ba) SHA1(d17d4349c799dcba22b383d36f0cfc8e2bac7adf) ) + + NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) + ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232rev.c5", 0x2000000, 0x400000, CRC(9c543bc6) SHA1(cb227c71aca5e632a08fbd7f5af53581b5b28f93) ) + ROM_LOAD16_BYTE( "232rev.c6", 0x2000001, 0x400000, CRC(e3feb991) SHA1(978b106bccd31c8229c9abcc6e682a7b5fc98154) ) +ROM_END + ROM_START( kof97kai ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232kai.p1", 0x000000, 0x100000, CRC(e96524fe) SHA1(e9a523233228ed57bdbc2b8eb620054cadb381f2) ) @@ -1103,6 +1245,32 @@ ROM_START( kof97rev ) // KOF97 revival ROM_LOAD16_BYTE( "232rev.c6", 0x2000001, 0x400000, CRC(e3feb991) SHA1(978b106bccd31c8229c9abcc6e682a7b5fc98154) ) ROM_END +ROM_START( kof97ribe ) // All confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232ribe.p1", 0x000000, 0x4551c6, CRC(21863b47) SHA1(e3e2b1f6818cd37d5482be9108269b4bbfd7d459) ) + ROM_LOAD16_WORD_SWAP( "232ribe.p2", 0x100000, 0x400000, CRC(5ad1ecc6) SHA1(83ffffa98013ca8fcec9157846e272b0e1184968) ) + ROM_IGNORE( 0x054f64 ) + + NEO_SFIX_MT_128K + ROM_LOAD( "232ribe.v1", 0x000000, 0x20000, CRC(dcefb4c5) SHA1(9d3aebf0af27bc8e148621e3da7b73994e0725a1) ) + ROM_IGNORE( 0x434f50 ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) + ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + ROM_START( kof97rk ) // Hack by Risko ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232rk.p1", 0x000000, 0x100000, CRC(940409b7) SHA1(94d1e0ec3460f5a2087f5fc1e1455df123f18c28) ) @@ -1126,6 +1294,75 @@ ROM_START( kof97rk ) // Hack by Risko ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) ROM_END +ROM_START( kof97rst ) // All confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232rst.p1", 0x000000, 0x100000, CRC(c20d3712) SHA1(f55f781f0affab4d78fa5484ec9ed4254f359c0e) ) + ROM_LOAD16_WORD_SWAP( "232rst.p2", 0x100000, 0x400000, CRC(ca32e3d2) SHA1(a1c540f9a6e305c3d73b04117a630abe6ba6f0fc) ) + + NEO_SFIX_128K( "232rst.s1", CRC(caab5d72) SHA1(1c4f6c6dc30c5d8e2aac3a651913ca9a4742dab3) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232rst.c1", 0x0000000, 0x800000, CRC(ede4fff1) SHA1(7ddc48cd06a71fbc8bac9d9bc36bd0a8395a008e) ) + ROM_LOAD16_BYTE( "232rst.c2", 0x0000001, 0x800000, CRC(d6957979) SHA1(13d0c0cb480ca4c3f3b96408af54c01c400f989f) ) + ROM_LOAD16_BYTE( "232yk.c3", 0x1000000, 0x800000, CRC(b092e64f) SHA1(7d809432d068db8f9056f5210570191416f1a53b) ) + ROM_LOAD16_BYTE( "232yk.c4", 0x1000001, 0x800000, CRC(d25e8a04) SHA1(52227828e3fdd27399b4cd514551abf856293f47) ) + ROM_LOAD16_BYTE( "232rst.c5", 0x2000000, 0x400000, CRC(6eba5e06) SHA1(939ba1b47e69a3d578f17256dd97d2f4f9238ad4) ) + ROM_LOAD16_BYTE( "232rst.c6", 0x2000001, 0x400000, CRC(168e4ac5) SHA1(437db7a1388cdd1ff80b703a64655a73443b438f) ) +ROM_END + +ROM_START( kof97rst2 ) // All confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232rst2.p1", 0x000000, 0x100000, CRC(7d6ad86d) SHA1(9b2e9430b11a7c29e547a5a2af5ba9f914925f95) ) + ROM_LOAD16_WORD_SWAP( "232rst.p2", 0x100000, 0x400000, CRC(ca32e3d2) SHA1(a1c540f9a6e305c3d73b04117a630abe6ba6f0fc) ) + + NEO_SFIX_128K( "232rst.s1", CRC(caab5d72) SHA1(1c4f6c6dc30c5d8e2aac3a651913ca9a4742dab3) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232rst.c1", 0x0000000, 0x800000, CRC(ede4fff1) SHA1(7ddc48cd06a71fbc8bac9d9bc36bd0a8395a008e) ) + ROM_LOAD16_BYTE( "232rst.c2", 0x0000001, 0x800000, CRC(d6957979) SHA1(13d0c0cb480ca4c3f3b96408af54c01c400f989f) ) + ROM_LOAD16_BYTE( "232yk.c3", 0x1000000, 0x800000, CRC(b092e64f) SHA1(7d809432d068db8f9056f5210570191416f1a53b) ) + ROM_LOAD16_BYTE( "232yk.c4", 0x1000001, 0x800000, CRC(d25e8a04) SHA1(52227828e3fdd27399b4cd514551abf856293f47) ) + ROM_LOAD16_BYTE( "232rst.c5", 0x2000000, 0x400000, CRC(6eba5e06) SHA1(939ba1b47e69a3d578f17256dd97d2f4f9238ad4) ) + ROM_LOAD16_BYTE( "232rst.c6", 0x2000001, 0x400000, CRC(168e4ac5) SHA1(437db7a1388cdd1ff80b703a64655a73443b438f) ) +ROM_END + +ROM_START( kof97rst3 ) // All confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232rst3.p1", 0x000000, 0x100000, CRC(b7e4b5bd) SHA1(1fe4d492492dd4716f1b31319ad68b757c7fab3a) ) + ROM_LOAD16_WORD_SWAP( "232rst3.p2", 0x100000, 0x400000, CRC(620a63ed) SHA1(20fa7c8d694a7f15715840240192c8d6e34e68b4) ) + + NEO_SFIX_128K( "232rst.s1", CRC(caab5d72) SHA1(1c4f6c6dc30c5d8e2aac3a651913ca9a4742dab3) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232rst.c1", 0x0000000, 0x800000, CRC(ede4fff1) SHA1(7ddc48cd06a71fbc8bac9d9bc36bd0a8395a008e) ) + ROM_LOAD16_BYTE( "232rst.c2", 0x0000001, 0x800000, CRC(d6957979) SHA1(13d0c0cb480ca4c3f3b96408af54c01c400f989f) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + ROM_START( kof97rv ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232rv.p1", 0x000000, 0x100000, CRC(eff2926f) SHA1(d9a64806ace1d2b08d8a5b2092bbfeb93c3230fd) ) @@ -1287,6 +1524,30 @@ ROM_START( kof97svs ) ROM_LOAD16_BYTE( "232svs.c6", 0x2000001, 0x800000, CRC(6f047b36) SHA1(9df4cb34f3b28a97c0b903394b3e2cdb79906582) ) ROM_END +ROM_START( kof97svsb2 ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232svsb2.p1", 0x000000, 0x454fd8, CRC(c9a489de) SHA1(b93dd3aa9e91456c7d92b81dc96d60c1c94797d3) ) + ROM_LOAD16_WORD_SWAP( "232svsb2.p2", 0x100000, 0x400000, CRC(9f2c57dd) SHA1(3cf16a8b0d79f95279ca7ba19678c50499b470e4) ) + ROM_IGNORE( 0x054f64 ) + + NEO_SFIX_128K( "232xt.s1", CRC(d6fe166f) SHA1(55e70395466ab68e7a170be3aa6f5978e704701b) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232yk.c1", 0x0000000, 0x800000, CRC(d504bf4a) SHA1(a58f6c07080c666ae1bb3e2dbab4790feab5ccc7) ) + ROM_LOAD16_BYTE( "232yk.c2", 0x0000001, 0x800000, CRC(942ea708) SHA1(20389bdb253611745c5515206b1eb620a1574711) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232svsb2.c5", 0x2000000, 0x800000, CRC(2cb9f438) SHA1(a358f81e937504b6bc087bf0e40a17ac07a968b2) ) + ROM_LOAD16_BYTE( "232svsb2.c6", 0x2000001, 0x800000, CRC(95029580) SHA1(51cc1186269da68c89af2e2f491477e0e2eb244f) ) +ROM_END + ROM_START( kof97sw ) /* The King of Fighters '97 - (kof97sw) - Hack by Wesker - (Shingo: 26a\c the 623a\c special effect is the red flame) */ ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232sw.p1", 0x000000, 0x100000, CRC(b4378ad4) SHA1(18210a5259f1499123277532dabb00b0c7bee50e) ) @@ -1310,6 +1571,30 @@ ROM_START( kof97sw ) /* The King of Fighters '97 - (kof97sw) - Hack by Wesker - ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) ROM_END +ROM_START( kof97tse ) // All confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232tse.p1", 0x000000, 0x454f50, CRC(30408a6a) SHA1(71fee1b90a6e19baa98b6bb3c9a34034fbfe132c) ) + ROM_LOAD16_WORD_SWAP( "232tse.p2", 0x100000, 0x400000, CRC(b157888a) SHA1(fa791e9abb7f6f8ac1497888f720bf62ad907949) ) + ROM_IGNORE( 0x54f64 ) + + NEO_SFIX_128K( "232-s1.s1", CRC(8514ecf5) SHA1(18d8e7feb51ea88816f1c786932a53655b0de6a0) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232-c1.c1", 0x0000000, 0x800000, CRC(5f8bf0a1) SHA1(e8b63bbc814de171fd18c5864a7fc639970c1ecf) ) + ROM_LOAD16_BYTE( "232-c2.c2", 0x0000001, 0x800000, CRC(e4d45c81) SHA1(fdb2b9326362e27b1c7a5beb977e0bc537488186) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "232-c5.c5", 0x2000000, 0x400000, CRC(34fc4e51) SHA1(b39c65f27873f71a6f5a5d1d04e5435f874472ee) ) + ROM_LOAD16_BYTE( "232-c6.c6", 0x2000001, 0x400000, CRC(4ff4d47b) SHA1(4d5689ede24a5fe4330bd85d4d3f4eb2795308bb) ) +ROM_END + ROM_START( kof97wh ) /* The King of Fighters '97 - (kof97wh) - Hack by Wesker - (Style change for Kyo to 95' Kyo) */ ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232wh.p1", 0x000000, 0x100000, CRC(a2534a20) SHA1(5717e30eeac96de6e23e0e5d4e9b1792362c8ae3) ) @@ -1701,6 +1986,58 @@ ROM_START( kof97yk2 ) ROM_LOAD16_BYTE( "232yk2.c6", 0x2000001, 0x800000, CRC(0b06fba8) SHA1(528b66d6d53682316dd1f33d1cf8b689b3642364) ) ROM_END +ROM_START( kof97yk83 ) // all confirmed + ROM_REGION( 0x700000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232kp83.p1", 0x000000, 0x100000, CRC(b983abb8) SHA1(e3d3f222b883b82c686b52b7042401ac8a922992) ) + ROM_LOAD16_WORD_SWAP( "232kp1.p2", 0x100000, 0x600000, CRC(fddde211) SHA1(6e8280ad7a9dda204f30e40d9575e31d3e436ef2) ) + + NEO_SFIX_128K( "232yk1.s1", CRC(c7dbe270) SHA1(0b81b31da6c18dd02e8d0442100685d5ff61bece) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232yk1.c1", 0x0000000, 0x800000, CRC(f748da71) SHA1(5012e8537e7d16d365d9c088a70323b3b71cd6f5) ) + ROM_LOAD16_BYTE( "232yk1.c2", 0x0000001, 0x800000, CRC(6b77e767) SHA1(7f625fa348754a248d9b58bd2f085c47142faf91) ) + ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) ) + ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) ) + ROM_LOAD16_BYTE( "232yk1.c5", 0x2000000, 0x800000, CRC(00a77a26) SHA1(a86054fd3870be49ad6055a2fab663cb5ef27de2) ) + ROM_LOAD16_BYTE( "232yk1.c6", 0x2000001, 0x800000, CRC(0b504e35) SHA1(597cabd5077670827ad3e809d6cd52c9c7f3013a) ) +ROM_END + +ROM_START( kof97yk85 ) + ROM_REGION( 0x700000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "232yk85.p1", 0x000000, 0x100000, CRC(821b0dc4) SHA1(402488249d4e2984fb5c42f0bb4c00b179ea4d12) ) + ROM_IGNORE( 0x354f67 ) + ROM_LOAD16_WORD_SWAP( "232yk85.p2", 0x100000, 0x600000, CRC(170e7302) SHA1(3952ca4fbf8aa71e372372881efc4f4aafa9562c) ) + + NEO_SFIX_128K( "232yk85.s1", CRC(d8826314) SHA1(5d3ffdf709ee8f84e451464866d0ddcaf98bdb89) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + //ROM_LOAD( "265-nu.v4", 0xc00000, 0x400000, CRC(067271b5) SHA1(36e07da78aaf634824c98023053bef802be4e218) ) in romset but m1 is not changed so i doubt it is used + + ROM_REGION( 0x5000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "232yk85.c1", 0x0000000, 0x800000, CRC(e47371bb) SHA1(e0e107f4edfbac0a7638b240405745bf31dbadf9) ) + ROM_LOAD16_BYTE( "232yk85.c2", 0x0000001, 0x800000, CRC(e09108b0) SHA1(b19e0101ed500dec65156a6c19334125a4012521) ) + ROM_LOAD16_BYTE( "232yk1.c3", 0x1000000, 0x800000, CRC(ffb025af) SHA1(64913b51b496a13a92317008d2a15543e6c89ba9) ) + ROM_LOAD16_BYTE( "232yk1.c4", 0x1000001, 0x800000, CRC(7182157c) SHA1(306a968ae325d0b7d647e7fdb36a3a07bacda923) ) + ROM_LOAD16_BYTE( "232yk85.c5", 0x2000000, 0x800000, CRC(c61653cc) SHA1(05674fb5b0007f200b090e93863335fdf474fa64) ) + ROM_LOAD16_BYTE( "232yk85.c6", 0x2000001, 0x800000, CRC(a01a762f) SHA1(68df7a1753745b9468c4f464779c2c5033f16458) ) + ROM_LOAD16_BYTE( "232yk85.c7", 0x3000000, 0x800000, CRC(52ac1bcf) SHA1(51f026db5bac479b82297260b55575f8a60306c7) ) + ROM_LOAD16_BYTE( "232yk85.c8", 0x3000001, 0x800000, CRC(76de561d) SHA1(8f27e746372daf77ff41c4ee431fa36ae22c7b8d) ) + ROM_LOAD16_BYTE( "232yk85.c9", 0x4000000, 0x800000, CRC(46eb506a) SHA1(1b64fb31dfdc95b901b2e3d359bdee38f764358f) ) + ROM_LOAD16_BYTE( "232yk85.c10", 0x4000001, 0x800000, CRC(33595746) SHA1(1532ce71b27beace35f359568d506eaf75ad578d) ) +ROM_END + ROM_START( kof97yl ) /* The King of Fighters '97 - Hack by Leather and Ydmis - (Can choose Orochi + 5 add. characters - extra stage select) */ ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "232yl.p1", 0x000000, 0x100000, CRC(b74278b8) SHA1(5fe72fa346c54229b3b80121720af624a7eca95c) ) @@ -1821,6 +2158,7 @@ ROM_END GAME( 1997, kof97aa, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Simaguang", "Kof'97 (Plus Athena)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97ae, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex, EGHT", "Kof'97 10TH ANNIVERSARY (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97ae1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex, EGHT", "Kof'97 10TH ANNIVERSARY (set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97aot, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 RISK01983 (AOT)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97bh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dodowang", "Kof'97 (Add Char - Orochi icon - Extra stage select)", MACHINE_SUPPORTS_SAVE ) GAME( 2006, kof97bng, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2006 set 1", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97bs, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "0-DAY", "Kof'97 (Boss Hack)", MACHINE_SUPPORTS_SAVE ) @@ -1830,24 +2168,29 @@ GAME( 1997, kof97chl, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 1997, kof97chl2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "CHL", "Kof'97 (Diff Moves rev.2 - 030409)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97chris,kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Chris Like 2k2)", MACHINE_SUPPORTS_SAVE ) GAME( 2007, kof97cn, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'97 (10th Anniversary Chinese Edition)", MACHINE_SUPPORTS_SAVE ) -GAME( 2010, kof97co, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2010/02/07", MACHINE_SUPPORTS_SAVE ) +GAME( 2010, kof97co, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2010-02-07", MACHINE_SUPPORTS_SAVE ) GAME( 2006, kof97co6, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'97 COMBO 2006", MACHINE_SUPPORTS_SAVE ) +GAME( 2015, kof97cy, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Emu_Max", "Kof'97 (CY)", MACHINE_SUPPORTS_SAVE ) +GAME( 2012, kof97dse, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Maerd", "Kof'97 MAERD 2012-06-28 (DSE)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97eh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Creamymami, Leather and Ydmis", "Kof'97 (Add Char - Ultra kill start max in Adv Mode - Ultra pow hack ABC - Extra stage select)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97eh2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Leather and Ydmis", "Kof'97 (Add Char - Ultra kill start max in Adv Mode - Pow hack ABC - Extra stage select)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97eho, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - Ultra kill start max in Adv Mode - Pow hack ABC)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97ei, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 COMBO 2010-02-07 (EI)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97evo, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'97 EVOLUTION", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97evoa, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 EVOLUTION (Old)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97frb, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (FRB)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97hk, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 EVOLUTION (Hakeshu)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97hl, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Fall Ban Edition)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97hxd, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Hxdhome", "Kof'97 (Add Char)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97ice, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Cz-Kyo97", "Kof'97 Ice", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97irgc, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (IRGC)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97kai, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Kai", "Kof'97 PLUS", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97kp, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KofPerfect", "Kof'97 (Add Orochi set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 2000, kof97kp1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (KP 2000)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97lb, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "LB70", "Kof'97 (Quanhuang Shaman 3.0)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97lc, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Liuzheng0131", "Kof'97 (Color changed)", MACHINE_SUPPORTS_SAVE ) GAME( 2007, kof97lr, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Lover Red)", MACHINE_SUPPORTS_SAVE ) -GAME( 2012, kof97m, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Maerd", "Kof'97 KOF97 MAERD 20120628", MACHINE_SUPPORTS_SAVE ) +GAME( 2012, kof97m, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Maerd", "Kof'97 KOF97 MAERD 2012-06-28", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97mit, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "MIT", "Kof'97 (Char style enhanced 050324)", MACHINE_SUPPORTS_SAVE ) GAME( 2010, kof97mj, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 SHION EDITION HACK", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97nd, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Baidu", "Kof'97 (Baidu)", MACHINE_SUPPORTS_SAVE ) @@ -1865,32 +2208,40 @@ GAME( 2006, kof97plus, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 1997, kof97pm, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "KOF1996", "Kof'97 Practice Mode", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97ps, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Playstation Hack)", MACHINE_SUPPORTS_SAVE ) GAME( 2016, kof97rev, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "BisMill Hassan", "Kof'97 (The Revival 2016)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, kof97ribe, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RIBE)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97rk, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Risko", "Kof'97 (Hack by Risko)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, kof97rst, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RST)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, kof97rst2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RST2)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, kof97rst3, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 PLUS (RISK012003)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97rv, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (revised edition)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97saw, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 (Kill red flame special effect)", MACHINE_SUPPORTS_SAVE ) -GAME( 2011, kof97sed, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (hack 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 2011, kof97sed, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (SED)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97sex, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Katana", "Kof'97 (Extra/Sexy Edition)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97shi, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'97 (Evolution Shin Edition)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97sm, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Smoke Version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, kof97svs, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (unknown hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97svs, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (SVS)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97svsb2,kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (SVSB2)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97sw, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 (26a-c and 623a-c red flame special effect)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97tse, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (TSE)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97wh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 (Style Kyo to 95' Kyo)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97wpls, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Wesker", "Kof'97 Plus", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97xbt, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 BT X Version", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97xi, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jacky", "Kof'97 XI Flash Version", MACHINE_SUPPORTS_SAVE ) GAME( 2007, kof97xp, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Xuhui", "Kof'97 (Xuhui plus)", MACHINE_SUPPORTS_SAVE ) -GAME( 2007, kof97xt, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 Final Battle (hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 2007, kof97xt, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 Final Battle", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97xt1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Chris Love", "Kof'97 (Unfinished version by Cross Love)", MACHINE_SUPPORTS_SAVE ) -GAME( 200?, kof97xxx, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Nude mix)", MACHINE_SUPPORTS_SAVE ) // no nudes here?? +GAME( 1997, kof97xxx, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 (Nude mix)", MACHINE_SUPPORTS_SAVE ) // no nudes here?? GAME( 1997, kof97y, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - no Orochi)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97ya, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Orochi set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97yb, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Orochi set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97ye, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - no Orochi - Pow hack ABC in Extra Mode set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97yg, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - Pow hack ABC in Extra Mode)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97yh, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ydmis", "Kof'97 (Add Char - no Orochi - Pow hack ABC in Extra Mode set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 2007, kof97yk, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, kof97yk1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, kof97yk2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 2007, kof97yk, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97yk1, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97yk2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97yk83, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK83)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, kof97yk85, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yukimura", "Kof'97 (Yukimura Hack YK85)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97yl, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Leather and Ydmis", "Kof'97 (Add Char - Extra stage select set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97yl2, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Leather and Ydmis", "Kof'97 (Add Char - Extra stage select set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1997, kof97yo, kof97, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'97 Seven Yoga Community Imitation 98", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/kof98.cpp b/docs/release/src/hbmame/drivers/kof98.cpp index bd43459e4a1..6fb0b2060b1 100644 --- a/docs/release/src/hbmame/drivers/kof98.cpp +++ b/docs/release/src/hbmame/drivers/kof98.cpp @@ -561,6 +561,32 @@ ROM_START( kof98c20110114 ) ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) ) ROM_END +ROM_START( kof98c20110314 ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "242ckc14.p1", 0x000000, 0x100000, CRC(e997a3e9) SHA1(c53d09931a1f2f97623cbfd390b703412dfde535) ) + ROM_LOAD16_WORD_SWAP( "242ckc14.p2", 0x100000, 0x400000, CRC(3f2266bf) SHA1(f4fbdde4c2b9cd9f12b3f6942926993ca56fed3b) ) + + NEO_SFIX_128K( "242co.s1", CRC(6017cf97) SHA1(6cb5267f3c4ea99f56154e2f5b6d961f1f7f58f6) ) + + NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) ) + ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) ) + ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) + ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) ) + ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) ) + ROM_LOAD16_BYTE( "242cli15.c3", 0x1000000, 0x800000, CRC(35800c82) SHA1(8dc25967a2c9d21d4f6f34a40507f8d9e7f14d9f) ) + ROM_LOAD16_BYTE( "242cli15.c4", 0x1000001, 0x800000, CRC(499e6d69) SHA1(728bb3a505e22df096a05dd978fff7702928eb83) ) + ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) ) + ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) ) + ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) ) + ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) ) +ROM_END + ROM_START( kof98c20120116 ) // no idea what other roms go with this, using ones from kof98co ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "242cla16.p1", 0x000000, 0x100000, CRC(99255778) SHA1(d6eb448f06cebabff3aea71cade6c7b742bad337) ) @@ -1887,6 +1913,32 @@ ROM_START( kof98c20151223 ) // only p1,p2 are confirmed ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) ) ROM_END +ROM_START( kof98c20160320 ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "242cpc20.p1", 0x000000, 0x100000, CRC(3a6baeb5) SHA1(100cfaf7f8478ef0f480c1453d268aef6758952a) ) + ROM_LOAD16_WORD_SWAP( "242cpc20.p2", 0x100000, 0x400000, CRC(d6c78a73) SHA1(6ec63abaf39c1c7ddf4830a9a0e71618b539ea05) ) + + NEO_SFIX_128K( "242cnf06.s1", CRC(7333d8b0) SHA1(43d441133d572f65e9e19839ae2557ad86e393a1) ) + + NEO_BIOS_AUDIO_256K( "242coc30.m1", CRC(db046fc4) SHA1(4b793a125bade067ef0fdcd1775d135c646c6b94) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) ) + ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) ) + ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) + ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "242cli15.c1", 0x0000000, 0x800000, CRC(066db0a6) SHA1(ea200b79bf60d2d9a025da873173cc4704d254b0) ) + ROM_LOAD16_BYTE( "242cli15.c2", 0x0000001, 0x800000, CRC(99d0b0fa) SHA1(b56813917de0c19858c13e51888b6af2030bc324) ) + ROM_LOAD16_BYTE( "242cni24.c3", 0x1000000, 0x800000, CRC(ea84bdae) SHA1(27108247ed7406060f0b149a9dfa64869a6bbcf2) ) + ROM_LOAD16_BYTE( "242cni24.c4", 0x1000001, 0x800000, CRC(2c17ac8e) SHA1(fc704f5cf358df81a88d20932be3edffe202dea9) ) + ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) ) + ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) ) + ROM_LOAD16_BYTE( "242-c7.c7", 0x3000000, 0x800000, CRC(f6d7a38a) SHA1(dd295d974dd4a7e5cb26a3ef3febcd03f28d522b) ) + ROM_LOAD16_BYTE( "242-c8.c8", 0x3000001, 0x800000, CRC(c823e045) SHA1(886fbf64bcb58bc4eabb1fc9262f6ac9901a0f28) ) +ROM_END + ROM_START( kof98cd ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "242cd.p1", 0x000000, 0x100000, CRC(1a748f96) SHA1(bddb07fa6dc59ae547aed32218a6601b8b80816e) ) @@ -2277,6 +2329,32 @@ ROM_START( kof98evo2 ) ROM_LOAD16_BYTE( "242sp.c8", 0x3000001, 0x800000, CRC(9744d47f) SHA1(8a7057a99f6cbc9707f10feb64192716cf6df151) ) ROM_END +ROM_START( kof98evr ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "242evr.p1", 0x000000, 0x100000, CRC(2cd3d8e9) SHA1(81014dd7e4ac6bd4d2f155dcee3930e1eb5174a1) ) + ROM_LOAD16_WORD_SWAP( "242evr.p2", 0x100000, 0x400000, CRC(c1e80581) SHA1(466d41a3390bf655e2dba5a42c566ec5bcd626a6) ) + + NEO_SFIX_128K( "242evr.s1", CRC(88355acf) SHA1(bbcb0d7c5f6ad73d049a94f03d5ee1af23b99754) ) + + NEO_BIOS_AUDIO_256K( "242-m1.m1", CRC(4ef7016b) SHA1(4182235e963bd70d398a79abeb54ab4d62887c48) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) ) + ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) ) + ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) + ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "242cn.c1", 0x0000000, 0x800000, CRC(40aceac9) SHA1(c9b7aee462e47bb70dc3644aa20b0698e7841ac1) ) + ROM_LOAD16_BYTE( "242cn.c2", 0x0000001, 0x800000, CRC(3aa0b16b) SHA1(fbc063e85a6fa33ae189fe0e74ad53c6b29e3dd9) ) + ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) ) + ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) ) + ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) ) + ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) ) + ROM_LOAD16_BYTE( "242evr.c7", 0x3000000, 0x800000, CRC(737249a8) SHA1(4ced30143182bd09596697600b2c4801cd66d274) ) + ROM_LOAD16_BYTE( "242evr.c8", 0x3000001, 0x800000, CRC(3489c788) SHA1(b47ba5d64e7aad2d3f263f9fd659c1ae83b06284) ) +ROM_END + ROM_START( kof98f ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "242f.p1", 0x000000, 0x100000, CRC(c17a0ace) SHA1(b5496062954bdc3ab45a9b4e7787ab3426ff7404) ) @@ -2697,6 +2775,34 @@ ROM_START( kof98m ) ROM_LOAD16_BYTE( "242m.c10", 0x4000001, 0x800000, CRC(930f41f8) SHA1(6e0349f9fe622890bc0111c8a554f67909cd810f) ) ROM_END +ROM_START( kof98mev ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "242mev.p1", 0x000000, 0x100000, CRC(d1a6a8be) SHA1(0197f00b5ac2452e8b8b5597c4edf98509ae14be) ) + ROM_LOAD16_WORD_SWAP( "242mev.p2", 0x100000, 0x400000, CRC(73d3505d) SHA1(74f581aa2fdc968b403fc19c2b719aa12177ba42) ) + + NEO_SFIX_128K( "242mev.s1", CRC(9acd571d) SHA1(a3520208766e65ae8e0c7cd0977794098974ff18) ) + + NEO_BIOS_AUDIO_256K( "242-mg1.m1", CRC(4e7a6b1b) SHA1(b54d08f88713ed0271aa06f9f7c9c572ef555b1a) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "242-v1.v1", 0x000000, 0x400000, CRC(b9ea8051) SHA1(49606f64eb249263b3341b4f50cc1763c390b2af) ) + ROM_LOAD( "242-v2.v2", 0x400000, 0x400000, CRC(cc11106e) SHA1(d3108bc05c9bf041d4236b2fa0c66b013aa8db1b) ) + ROM_LOAD( "242-v3.v3", 0x800000, 0x400000, CRC(044ea4e1) SHA1(062a2f2e52098d73bc31c9ad66f5db8080395ce8) ) + ROM_LOAD( "242-v4.v4", 0xc00000, 0x400000, CRC(7985ea30) SHA1(54ed5f0324de6164ea81943ebccb3e8d298368ec) ) + + ROM_REGION( 0x5000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "242-c1.c1", 0x0000000, 0x800000, CRC(e564ecd6) SHA1(78f22787a204f26bae9b2b1c945ddbc27143352f) ) + ROM_LOAD16_BYTE( "242-c2.c2", 0x0000001, 0x800000, CRC(bd959b60) SHA1(2c97c59e77c9a3fe7d664e741d37944f3d56c10b) ) + ROM_LOAD16_BYTE( "242-c3.c3", 0x1000000, 0x800000, CRC(22127b4f) SHA1(bd0d00f889d9da7c6ac48f287d9ed8c605ae22cf) ) + ROM_LOAD16_BYTE( "242-c4.c4", 0x1000001, 0x800000, CRC(0b4fa044) SHA1(fa13c3764fae6b035a626601bc43629f1ebaaffd) ) + ROM_LOAD16_BYTE( "242-c5.c5", 0x2000000, 0x800000, CRC(9d10bed3) SHA1(4d44addc7c808649bfb03ec45fb9529da413adff) ) + ROM_LOAD16_BYTE( "242-c6.c6", 0x2000001, 0x800000, CRC(da07b6a2) SHA1(9c3f0da7cde1ffa8feca89efc88f07096e502acf) ) + ROM_LOAD16_BYTE( "242mix.c7", 0x3000000, 0x800000, CRC(374eb904) SHA1(060ccdca943b6493890c9e42eacf943cf4acc100) ) + ROM_LOAD16_BYTE( "242mix.c8", 0x3000001, 0x800000, CRC(eddd2789) SHA1(e1fe8238ed51ee328d8c7eebb58fa6230b9e48c5) ) + ROM_LOAD16_BYTE( "242mev.c9", 0x4000000, 0x800000, CRC(1823dfa3) SHA1(f9f16465ec7564a812fb093d12adcba5f4660d85) ) + ROM_LOAD16_BYTE( "242mev.c10", 0x4000001, 0x800000, CRC(6a04ab8c) SHA1(4c000e595cab2749bbee26b45527f5a7b573dfbc) ) +ROM_END + ROM_START( kof98mix ) // 2011-10-01 version ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "242mix.p1", 0x000000, 0x100000, CRC(4a0525b1) SHA1(14c0356fd63ba55040b1f744f3b4450bfbf32a93) ) @@ -3341,9 +3447,10 @@ GAME( 2008, kof98c20080524, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 2008, kof98c20080616, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2008-06-16)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself GAME( 2008, kof98c20080712, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2008-07-12)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself GAME( 2009, kof98c20090620, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2009-06-20)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself -GAME( 2010, kof98c20090923, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2009-09-23)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself +GAME( 2009, kof98c20090923, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2009-09-23)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sometimes reboots itself GAME( 2010, kof98c20100214, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2010-02-14)", MACHINE_SUPPORTS_SAVE ) GAME( 2011, kof98c20110114, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2011-01-14)", MACHINE_SUPPORTS_SAVE ) +GAME( 2011, kof98c20110314, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2011-03-14)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, kof98c20120116, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2012-01-16)", MACHINE_SUPPORTS_SAVE ) GAME( 2012, kof98c20120915, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2012-09-15)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, kof98c20130213, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2013-02-13)", MACHINE_SUPPORTS_SAVE ) @@ -3394,7 +3501,8 @@ GAME( 2015, kof98c20150827, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 2015, kof98c20151103, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-11-03)", MACHINE_SUPPORTS_SAVE ) GAME( 2015, kof98c20151108, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-11-08)", MACHINE_SUPPORTS_SAVE ) GAME( 2015, kof98c20151110, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-11-10)", MACHINE_SUPPORTS_SAVE ) -GAME( 2016, kof98c20151223, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-12-23)", MACHINE_SUPPORTS_SAVE ) +GAME( 2015, kof98c20151223, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2015-12-23)", MACHINE_SUPPORTS_SAVE ) +GAME( 2016, kof98c20160320, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Ivex", "Kof'98 Combo (2016-03-20)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98cd, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (CD conversion)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98cd1, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "Kof'98 (NGCD Ver 1.04f [EGHT])", MACHINE_SUPPORTS_SAVE ) GAME( 2003, kof98ch, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Chase", "Kof'98 (Diff Moves 030503)", MACHINE_SUPPORTS_SAVE ) @@ -3411,6 +3519,7 @@ GAME( 1998, kof98ehr, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 1998, kof98evl, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Ultra Evolution Lite)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98evo, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Evolution)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98evo2, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Evolution Orochi Baozou Hack Set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, kof98evr, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (EVR)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98f, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 ('fake')", MACHINE_SUPPORTS_SAVE ) GAME( 2004, kof98fr, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Kof'98 (French 2004)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, kof98fro, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Kof'98 (French 2003)", MACHINE_SUPPORTS_SAVE ) @@ -3427,6 +3536,7 @@ GAME( 2010, kof98klc, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, GAME( 1998, kof98lb, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "LB70", "Kof'98 (hack by lb70)", MACHINE_SUPPORTS_SAVE ) GAME( 2009, kof98lv, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (Love Edition (27-12-09))", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98m, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 MIX", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, kof98mev, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 (MEV)", MACHINE_SUPPORTS_SAVE ) GAME( 2011, kof98mix, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 Mix (2011-10-01)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98nc, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "FCHT", "Kof'98 (Neo-Geo CD 1.2 by Eddids from FCHT)", MACHINE_SUPPORTS_SAVE ) GAME( 1998, kof98new, kof98, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'98 New Version", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/kof99.cpp b/docs/release/src/hbmame/drivers/kof99.cpp index f355a454907..b545241a45e 100644 --- a/docs/release/src/hbmame/drivers/kof99.cpp +++ b/docs/release/src/hbmame/drivers/kof99.cpp @@ -1066,6 +1066,32 @@ ROM_START( kof99ndh ) ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) ) ROM_END +ROM_START( kof99ndis ) // all complete + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "251ndis.p1", 0x000000, 0x4550f6, CRC(0ca863be) SHA1(4da27476f81fd1d10ff2ba8fc7d12b662804cc5d) ) + ROM_LOAD16_WORD_SWAP( "251ndis.p2", 0x100000, 0x400000, CRC(c012ff9f) SHA1(ef53386e34464eaaed1fcba3d4d1dcfb269f995c) ) + + NEO_SFIX_128K( "251ndis.s1", CRC(16edaa55) SHA1(d8601a14c703e56c0635e2f7540492b164447d6b) ) + + NEO_BIOS_AUDIO_128K( "251-m1.m1", CRC(5e74539c) SHA1(6f49a9343cbd026b2c6720ff3fa2e5b1f85e80da) ) + + ROM_REGION( 0x0e00000, "ymsnd", 0 ) + ROM_LOAD( "251-v1.v1", 0x000000, 0x400000, CRC(ef2eecc8) SHA1(8ed13b9db92dba3124bc5ba66e3e275885ece24a) ) + ROM_LOAD( "251-v2.v2", 0x400000, 0x400000, CRC(73e211ca) SHA1(0e60fa64cab6255d9721e2b4bc22e3de64c874c5) ) + ROM_LOAD( "251-v3.v3", 0x800000, 0x400000, CRC(821901da) SHA1(c6d4975bfaa19a62ed59126cadf2578c0a5c257f) ) + ROM_LOAD( "251-v4.v4", 0xc00000, 0x200000, CRC(b49e6178) SHA1(dde6f76e958841e8c99b693e13ced9aa9ef316dc) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "251d.c1", 0x0000000, 0x800000, CRC(b3d88546) SHA1(c277525f3db5b4cb07e9842605c7c40e6c203ad9) ) + ROM_LOAD16_BYTE( "251d.c2", 0x0000001, 0x800000, CRC(915c8634) SHA1(685ecb4271edf61f6a28a2235de11dd219b999d6) ) + ROM_LOAD16_BYTE( "251d.c3", 0x1000000, 0x800000, CRC(b047c9d5) SHA1(b840eab2208e6c0a1db0cdb28df46ba07da2ddca) ) + ROM_LOAD16_BYTE( "251d.c4", 0x1000001, 0x800000, CRC(6bc8e4b1) SHA1(674cb8145aeada1683a70beb02ed4ea028f5bdf8) ) + ROM_LOAD16_BYTE( "251d.c5", 0x2000000, 0x800000, CRC(9746268c) SHA1(59d839f01f4827377a752679922bc7281099430d) ) + ROM_LOAD16_BYTE( "251d.c6", 0x2000001, 0x800000, CRC(238b3e71) SHA1(f929c942972f768e68a5a009a3d174d203029160) ) + ROM_LOAD16_BYTE( "251d.c7", 0x3000000, 0x800000, CRC(2f68fdeb) SHA1(37167c84a39141c179f94800f207dac3aabc5478) ) + ROM_LOAD16_BYTE( "251d.c8", 0x3000001, 0x800000, CRC(4c2fad1e) SHA1(26779e79296eb1988a8c4d60d2e1baf041f2c0cf) ) +ROM_END + ROM_START( kof99ob ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "251ob.p1", 0x000000, 0x100000, CRC(b6147b23) SHA1(921dad6a2f1011ad67a82a6f9874b30658f233b0) ) @@ -2564,8 +2590,9 @@ GAME( 1999, kof99jh, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, ko GAME( 1999, kof99jho, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "Jason/K3", "Kof'99 (3 Add Char - Simple moves rev - Athena style changed 030924)", MACHINE_SUPPORTS_SAVE ) GAME( 2007, kof99lb, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "lb70", "Kof'99 (Hack by lb70)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, kof99m, kof99, neogeo_noslot, neogeo, neogeo_noslot_state, kof99k, ROT0, "MasakiAnton", "Kof'99 (2 Add Char)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, kof99nd, kof99, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "SNK", "Kof'99 (non encrypted P,decrypted C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, kof99nd, kof99, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix,ROT0, "SNK", "Kof'99 (non encrypted P,decrypted C)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, kof99ndh, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 (Boss Hack)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, kof99ndis, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 REMIX PRO (ndis)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, kof99ob, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 Orochi's Blood-Another part of Leona & Iori", MACHINE_SUPPORTS_SAVE ) GAME( 1999, kof99ob2, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Yashional", "Kof'99 Orochi's Blood (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, kof99pb, kof99, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof'99 Perfect Boss", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/mslug.cpp b/docs/release/src/hbmame/drivers/mslug.cpp index 2dcb35979c8..a586b78fd90 100644 --- a/docs/release/src/hbmame/drivers/mslug.cpp +++ b/docs/release/src/hbmame/drivers/mslug.cpp @@ -459,6 +459,29 @@ ROM_START( mslugx ) /* MVS AND AES VERSION */ ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) ROM_END #endif +ROM_START( mslugxce ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "250ce.p1", 0x000000, 0x100000, CRC(e75a6d64) SHA1(529130f7ebb43231e6bf1b1703266b6c09356f9c) ) + ROM_LOAD16_WORD_SWAP( "250ce.p2", 0x100000, 0x400000, CRC(5d1c52cd) SHA1(b2b131fa845b0098cbf0750fee20b402e276483b) ) + + NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) ) + + NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) + ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) + ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) + ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) + ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) ) + ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) ) + ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) ) + ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) +ROM_END + ROM_START( mslugxeb ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "250eb.p1", 0x000000, 0x100000, CRC(c41c7ddb) SHA1(1662a1fd1c35511b3091e979b55e940a9f887143) ) @@ -552,6 +575,30 @@ ROM_START( mslugxex ) ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) ROM_END +ROM_START( mslugxfe ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "250fe.p1", 0x000000, 0x100000, CRC(5a8b3db8) SHA1(7324aad0cc33f6b11b0350ca9d80246a412994d4) ) + ROM_IGNORE( 0x354f47 ) + ROM_LOAD16_WORD_SWAP( "250-p2.ep1", 0x100000, 0x400000, CRC(1fda2e12) SHA1(18aaa7a3ba8da99f78c430e9be69ccde04bc04d9) ) + + NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) ) + + NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) + ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) + ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) + ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) + ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) ) + ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) ) + ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) ) + ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) +ROM_END + ROM_START( mslugxfr ) /* Metal Slug X - Translation Hack by NEO-ARC - (French translation) */ ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "250fr.p1", 0x000000, 0x100000, CRC(58a64443) SHA1(ab07993de04eb65f89bab5d4b6e473d7ecbc8ff1) ) @@ -644,6 +691,53 @@ ROM_START( mslugxit ) ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) ROM_END +ROM_START( mslugxjdkj ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "250jdkj.p1", 0x000000, 0x100000, CRC(4c1b90b1) SHA1(6127e60a6ef0daf82506c46e8344e1a4064b5186) ) + ROM_IGNORE( 0x354f47 ) + ROM_LOAD16_WORD_SWAP( "250svb.p2", 0x100000, 0x400000, CRC(6a114e1a) SHA1(3da62274252d36226dcccda0e05593f7f18c7193) ) + + NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) ) + + NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) + ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) + ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) + ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) + ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) ) + ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) ) + ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) ) + ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) +ROM_END + +ROM_START( mslugxmfb ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "250mfb.p1", 0x000000, 0x100000, CRC(bd3611dc) SHA1(9c27f8a10f0a0da051b15cf42e6aed8f60abd309) ) + ROM_LOAD16_WORD_SWAP( "250mfb.p2", 0x100000, 0x400000, CRC(7b47677c) SHA1(af42d01b6fb3c288b1750b9960c11020bc12b7b4) ) + + NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) ) + + NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) + ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) + ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) + ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) + ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) ) + ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) ) + ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) ) + ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) +ROM_END + ROM_START( mslugxp ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "250p.p1", 0x000000, 0x100000, CRC(e65937fc) SHA1(128af1815a23962de02384d61ff52869ae14cea1) ) @@ -690,6 +784,52 @@ ROM_START( mslugxr ) ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) ROM_END +ROM_START( mslugxres ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "250res.p1", 0x000000, 0x100000, CRC(d69fb994) SHA1(2cbffae29b92ef4b8f90e01488f89654a42a8596) ) + ROM_LOAD16_WORD_SWAP( "250ce.p2", 0x100000, 0x400000, CRC(5d1c52cd) SHA1(b2b131fa845b0098cbf0750fee20b402e276483b) ) + + NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) ) + + NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) + ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) + ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) + ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) + ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) ) + ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) ) + ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) ) + ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) +ROM_END + +ROM_START( mslugxsef ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "250sef.p1", 0x000000, 0x100000, CRC(aae5130c) SHA1(08b5fde0b809d0e68e89e6ef07fc83d7aedc8593) ) + ROM_LOAD16_WORD_SWAP( "250mfb.p2", 0x100000, 0x400000, CRC(7b47677c) SHA1(af42d01b6fb3c288b1750b9960c11020bc12b7b4) ) + + NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) ) + + NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) + ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) + ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) + ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) + ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) ) + ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) ) + ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) ) + ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) +ROM_END + ROM_START( mslugxst ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "250st.p1", 0x000000, 0x100000, CRC(db88d115) SHA1(627d01c4d4bd6c4cfeac5f14859fe9a7026370b0) ) @@ -713,6 +853,29 @@ ROM_START( mslugxst ) ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) ROM_END +ROM_START( mslugxsvb ) + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "250svb.p1", 0x000000, 0x100000, CRC(4619b7de) SHA1(b1b1875f15528a12408ad477a9b1759ba74ec0d2) ) + ROM_LOAD16_WORD_SWAP( "250svb.p2", 0x100000, 0x400000, CRC(6a114e1a) SHA1(3da62274252d36226dcccda0e05593f7f18c7193) ) + + NEO_SFIX_128K( "250-s1.s1", CRC(fb6f441d) SHA1(2cc392ecde5d5afb28ddbaa1030552b48571dcfb) ) + + NEO_BIOS_AUDIO_128K( "250-m1.m1", CRC(fd42a842) SHA1(55769bad4860f64ef53a333e0da9e073db483d6a) ) + + ROM_REGION( 0xa00000, "ymsnd", 0 ) + ROM_LOAD( "250-v1.v1", 0x000000, 0x400000, CRC(c79ede73) SHA1(ebfcc67204ff9677cf7972fd5b6b7faabf07280c) ) + ROM_LOAD( "250-v2.v2", 0x400000, 0x400000, CRC(ea9aabe1) SHA1(526c42ca9a388f7435569400e2f132e2724c71ff) ) + ROM_LOAD( "250-v3.v3", 0x800000, 0x200000, CRC(2ca65102) SHA1(45979d1edb1fc774a415d9386f98d7cb252a2043) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "250-c1.c1", 0x0000000, 0x800000, CRC(09a52c6f) SHA1(c3e8a8ccdac0f8bddc4c3413277626532405fae2) ) + ROM_LOAD16_BYTE( "250-c2.c2", 0x0000001, 0x800000, CRC(31679821) SHA1(554f600a3aa09c16c13c625299b087a79d0d15c5) ) + ROM_LOAD16_BYTE( "250-c3.c3", 0x1000000, 0x800000, CRC(fd602019) SHA1(c56646c62387bc1439d46610258c755beb8d7dd8) ) + ROM_LOAD16_BYTE( "250-c4.c4", 0x1000001, 0x800000, CRC(31354513) SHA1(31be8ea2498001f68ce4b06b8b90acbf2dcab6af) ) + ROM_LOAD16_BYTE( "250-c5.c5", 0x2000000, 0x800000, CRC(a4b56124) SHA1(d41069856df990a1a99d39fb263c8303389d5475) ) + ROM_LOAD16_BYTE( "250-c6.c6", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) +ROM_END + #if 0 @@ -1928,6 +2091,30 @@ ROM_START( mslug4kh ) /* Metal Slug 4 - Enhance by Creamymami and Fighters Kim - ROM_LOAD16_BYTE( "263-c6.c6", 0x2000001, 0x800000, CRC(5c8ba116) SHA1(6034db09c8706d4ddbcefc053efbc47a0953eb92) ) ROM_END +ROM_START( mslug4lw ) + ROM_REGION( 0x900000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "263lw.p1", 0x000000, 0x100000, CRC(783438fa) SHA1(7c15f902a319fb7c769c21bb1a860216a9691354) ) + ROM_LOAD16_WORD_SWAP( "263lw.p2", 0x100000, 0x800000, CRC(5c897ae8) SHA1(d92739fc76b156447ffb3c18a93481d7f036d228) ) + + NEO_SFIX_128K( "263-s1.s1", CRC(a9446774) SHA1(c5a309fd8ee6d6750a15c82e710218a3755e38b2) ) + + NEO_BIOS_AUDIO_128K( "263nd.m1", CRC(ef5db532) SHA1(4aeba9e206b8f309610eb7e1891644f39aa61830) ) + + ROM_REGION( 0x1400000, "ymsnd", 0 ) + ROM_LOAD( "263lw.v1", 0x000000, 0x400000, CRC(8cb5a9ef) SHA1(272ad312f8694acf9190ebf48d1c8a5fec73c130) ) + ROM_LOAD( "263lw.v2", 0x400000, 0x400000, CRC(94217b1e) SHA1(c468a192e2ec0952a20cfd9e391cf6c12346efb3) ) + ROM_LOAD( "263lw.v3", 0x800000, 0x400000, CRC(7616fcec) SHA1(83006094379d0373b967603dcaa1cec69c2f746f) ) + ROM_LOAD( "263lw.v4", 0xC00000, 0x800000, CRC(6ac7ed2f) SHA1(4beb76d149e9e3d8b2c760a468d47fca260b2842) ) + + ROM_REGION( 0x3000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "263nd.c1", 0x0000000, 0x800000, CRC(361ddda6) SHA1(95f329019660f1ec7f15f6ea1e0c2bfc84b02ca8) ) + ROM_LOAD16_BYTE( "263nd.c2", 0x0000001, 0x800000, CRC(15d192c4) SHA1(0b9afb62a1d4d764d616408b09e17a05fc4a87e7) ) + ROM_LOAD16_BYTE( "263lw.c3", 0x1000000, 0x800000, CRC(e296612c) SHA1(57eb1861b738247aaf0643641268f676b71ed025) ) + ROM_LOAD16_BYTE( "263lw.c4", 0x1000001, 0x800000, CRC(c22e3ad0) SHA1(11ce301d4e5b4b1b76e2b82d18c4a9b8b56eeb20) ) + ROM_LOAD16_BYTE( "263lw.c5", 0x2000000, 0x400000, CRC(288cd91f) SHA1(a195be13d4ef19705cd3f08be1ec8cdacb29f159) ) + ROM_LOAD16_BYTE( "263lw.c6", 0x2000001, 0x400000, CRC(b015aeee) SHA1(24e12e72b82eea9e52a4cefc774efb3bd7db822f) ) +ROM_END + ROM_START( mslug4nd ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "263nd.p1", 0x000000, 0x100000, CRC(4D7E6624) SHA1(125d5203e89cce23a851fa74cc8cbe003ef978f3) ) @@ -2243,6 +2430,32 @@ ROM_START( mslug5fr1 ) ROM_LOAD16_BYTE( "268hd.c8", 0x3000001, 0x800000, CRC(fafc3eb9) SHA1(F4F73194CC7FD151BE3CA2561F993B5BE7628369) ) ROM_END +ROM_START( mslug5fu ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "268fu.p1", 0x000000, 0x100000, CRC(d1b04ae1) SHA1(b1ab15336bf6bec9dc8cfdbf2a07c6017e3e7ae4) ) + ROM_LOAD16_WORD_SWAP( "268fu.p2", 0x100000, 0x400000, CRC(6357efbf) SHA1(d1b19bb18e2836d352e8a8d6700d4a0b83227fdb) ) + + NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) + + NEO_BIOS_AUDIO_512K( "268l9a.m1", CRC(464c72ad) SHA1(9e8a01c2bad897e2bbf32563a30f0474f8fcd2b5) ) + + ROM_REGION( 0x1037510, "ymsnd", 0 ) + ROM_LOAD( "268l9b.v1", 0x000000, 0x400000, CRC(fcc8ba01) SHA1(c187c318c65f6aefae05e6cef9f17492edf2e4db) ) + ROM_LOAD( "268l9b.v2", 0x400000, 0x400000, CRC(386f32bd) SHA1(d49fc812c442563b9e82da43bf5c6b9deea0f687) ) + ROM_LOAD( "268l9b.v3", 0x800000, 0x400000, CRC(dc737e12) SHA1(f940ea767404f6a15dea526eda56ad66517ba79e) ) + ROM_LOAD( "268l9b.v4", 0xc00000, 0x437510, CRC(2b310542) SHA1(5f0050d36cd1f722d78d9ae98db537eacc4d8548) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "268hd.c1", 0x0000000, 0x800000, CRC(e8239365) SHA1(E0A75902A783110049730B66AD3CBCCDD804BF62) ) + ROM_LOAD16_BYTE( "268hd.c2", 0x0000001, 0x800000, CRC(89b21d4c) SHA1(862AC31CE9570529B33E6F58ADA0AC867A442679) ) + ROM_LOAD16_BYTE( "268hd.c3", 0x1000000, 0x800000, CRC(3cda13a0) SHA1(5D029C92688384EAFD65AD711A2954D0B86A3163) ) + ROM_LOAD16_BYTE( "268hd.c4", 0x1000001, 0x800000, CRC(9c00160d) SHA1(C612102F9CD288BBA4C245B5855D795E4362B217) ) + ROM_LOAD16_BYTE( "268fu.c5", 0x2000000, 0x800000, CRC(3bc09dbf) SHA1(a47954a3295dc21e7db7dedc03ab789f8005eed5) ) + ROM_LOAD16_BYTE( "268fu.c6", 0x2000001, 0x800000, CRC(0db5ce14) SHA1(aa2c4bb143e3bba18523df645c5be249eb9fc147) ) + ROM_LOAD16_BYTE( "268fu.c7", 0x3000000, 0x800000, CRC(aa4f3214) SHA1(dc3a8fac2cc81e60abafc209eb4bcccdaafde380) ) + ROM_LOAD16_BYTE( "268fu.c8", 0x3000001, 0x800000, CRC(c86d0d81) SHA1(1a00aa65481410c0b64fe971e547638c05c5a0ce) ) +ROM_END + ROM_START( mslug5hd ) ROM_REGION( 0x800000, "maincpu", 0 ) ROM_LOAD32_WORD_SWAP( "268-p1c.p1", 0x000000, 0x400000, CRC(3636690a) SHA1(e0da714b4bdc6efffe1250ded02ebddb3ab6d7b3) ) @@ -2442,17 +2655,24 @@ GAME( 2003, mslug2fro, mslug2, neogeo_noslot, neogeo, neogeo_state, neo GAME( 1998, mslug2sh, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 2 (hybrid Bullets version, Shinwa hack)", MACHINE_SUPPORTS_SAVE ) GAME( 2015, mslug2t, mslug2, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "System11", "Metal Slug 2 Turbo", MACHINE_SUPPORTS_SAVE ) // Metal Slug X +GAME( 1999, mslugxce, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (CE)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, mslugxeb, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "PlayerX China", "Metal Slug X (EB)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, mslugxeh, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "KrysoFun/KVS", "Metal Slug X (Style remix)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, mslugxeh1, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Super Revised Version by KrysoFun)", MACHINE_SUPPORTS_SAVE ) GAME( 1999, mslugxex, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Excel version by PlayerX)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxfe, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (FE)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslugxfr, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Arkatrad", "Metal Slug X (French)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, mslugxfro, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Arkatrad", "Metal Slug X (French) (Old)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, mslugxhp, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Enemy Heavy Plate 2013-06-18)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslugxit, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Clomax & Ombra", "Metal Slug X (Italian - Beta)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, mslugxp, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X Plus (Hack by Player-X)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxjdkj,mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (JDKJ)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxmfb, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (MFB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxp, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "Player-X", "Metal Slug X Plus (Hack by Player-X)", MACHINE_SUPPORTS_SAVE ) GAME( 2013, mslugxr, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Reset Version 2013-05-28)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, mslugxst, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (Enhanced Version by STARK) [EGCG]", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxres, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (RES)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxsef, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (SEF)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxst, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "EGCG / Stark", "Metal Slug X (Enhanced Version by STARK) [EGCG]", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, mslugxsvb, mslugx, neogeo_noslot, neogeo, neogeo_noslot_state, mslugx, ROT0, "hack", "Metal Slug X (SVB)", MACHINE_SUPPORTS_SAVE ) // Metal Slug 3 GAME( 2000, mslug3d, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3d, ROT0, "SNK", "Metal Slug 3 (decrypted C)", MACHINE_SUPPORTS_SAVE ) GAME( 2000, mslug3e02, mslug3, neogeo_noslot, neogeo, neogeo_hbmame, mslug3n, ROT0, "Ydmis", "Metal Slug 3 (Style remix set 02)", MACHINE_SUPPORTS_SAVE ) @@ -2501,22 +2721,24 @@ GAME( 2005, mslug4fr, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, msl GAME( 2007, mslug4i, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4it, ROT0, "Evoboy", "Metal Slug 4 (Italian)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, mslug4i1, mslug4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 4 (Italian)2", MACHINE_SUPPORTS_SAVE ) GAME( 2002, mslug4kh, mslug4, neogeo_noslot, neogeo, neogeo_hbmame, mslug4m, ROT0, "Creamymami and Fighters Kim", "Metal Slug 4 (Style remix 030731)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, mslug4lw, mslug4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 4 (LW)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 2002, mslug4nd, mslug4, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Mega Enterprise / Playmore Corporation", "Metal Slug 4 (fully decrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 2002, mslug4sp, mslug4, neogeo_noslot, neogeo, neogeo_noslot_state, mslug4, ROT0, "hack", "Metal Slug 4 (unknown sp)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, mslug4sp, mslug4, neogeo_noslot, neogeo, neogeo_noslot_state, mslug4, ROT0, "hack", "Metal Slug 4 (SP)", MACHINE_SUPPORTS_SAVE ) // Metal Slug 5 GAME( 2003, mslug5b, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5b, ROT0, "bootleg", "Metal Slug 5 (bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslug5d, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5d, ROT0, "hack", "Metal Slug 5 (decrypted C)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslug5d1, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5d1, ROT0, "hack", "Metal Slug 5 (NGM-2680) (fully decrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, mslug5f, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (unknown f)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, mslug5f, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (F)", MACHINE_SUPPORTS_SAVE ) GAME( 2006, mslug5fr, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Arkatrad", "Metal Slug 5 (French)", MACHINE_SUPPORTS_SAVE ) GAME( 2006, mslug5fr1, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5fr1,ROT0, "NEO-ARC", "Metal Slug 5 (French Edition)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, mslug5fu, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 5 (FU)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslug5hd, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5hd, ROT0, "hack", "Metal Slug 5 (NGH-2680) (Decrypted C)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslug5l9a, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 Level 9 Hack (Ver A)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslug5l9b, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 Level 9 Hack (Ver B)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, mslug5lvf, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (unknown lvf)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, mslug5lvnc,mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (unknown lvnc)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, mslug5lvf, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (LVF)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, mslug5lvnc,mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (LVNC)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, mslug5nd, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, mslug5nd, ROT0, "hack", "Metal Slug 5 (decrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, mslug5w, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (unknown w)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, mslug5w, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, s1945p, ROT0, "C.B", "Metal Slug 5 (W)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, ms5boot, mslug5, neogeo_noslot, neogeo, neogeo_hbmame, ms5boot, ROT0, "bootleg", "Metal Slug 5 (Bootleg Set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, ms5pcbd, ms5pcb, neogeo_noslot, dualbios, neogeo_hbmame, ms5pcbd, ROT0, "hack", "Metal Slug 5 (JAMMA PCB) decrypted", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, ms5sp, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, ms5plus, ROT0, "hack", "Metal Slug 5 PLUS (unknown sp)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, ms5sp, mslug5, neogeo_noslot, neogeo, neogeo_noslot_state, ms5plus, ROT0, "hack", "Metal Slug 5 PLUS (SP)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/nggaroup.cpp b/docs/release/src/hbmame/drivers/nggaroup.cpp index 06b8f9e1953..d0fc2ba1117 100644 --- a/docs/release/src/hbmame/drivers/nggaroup.cpp +++ b/docs/release/src/hbmame/drivers/nggaroup.cpp @@ -229,6 +229,32 @@ ROM_START( garoupfu ) /* Garou: Mark of the Wolves PROTOTYPE - Fix by UNKNOWN - ROM_LOAD16_BYTE( "proto_253-c8.c8", 0x3000001, 0x800000, CRC(f778fe99) SHA1(c963f6ba90a36d02991728b44ffcf174ca18268a) ) ROM_END +ROM_START( garoupx11 ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "253px11.p1", 0x000000, 0x100000, CRC(7a5e411e) SHA1(e56c518e1496948d882721d393e6e95b74cf95f4) ) + ROM_LOAD16_WORD_SWAP( "253px11.p2", 0x100000, 0x400000, CRC(1eeecc14) SHA1(f42cfcaf10a2c8454bf90e53fa51c1c5c23b26de) ) + + NEO_SFIX_128K( "proto_253-s1.s1", CRC(779989de) SHA1(8bd550857b60f8a907f6d39a4225ceffdd330307) ) + + NEO_BIOS_AUDIO_256K( "proto_253-m1.m1", CRC(bbe464f7) SHA1(f5f8f3e48f5d453f45107085d6f4023bcd24c053) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "proto_253-v1.v1", 0x000000, 0x400000, CRC(274f3923) SHA1(4c7a8ad1cd0e3afc1f78de3c2929120ed434f104) ) + ROM_LOAD( "proto_253-v2.v2", 0x400000, 0x400000, CRC(8f86dabe) SHA1(b3d2d9f5c1d97a6e7aee2c674fb6627f41bbb240) ) + ROM_LOAD( "proto_253-v3.v3", 0x800000, 0x400000, CRC(05fd06cd) SHA1(6cd699719614bb87547632ea3d61d92d81fdf563) ) + ROM_LOAD( "proto_253-v4.v4", 0xc00000, 0x400000, CRC(14984063) SHA1(170d5638327ec0eb3590b80dc11590897367250c) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "proto_253-c1.c1", 0x0000000, 0x800000, CRC(5bb5d137) SHA1(d648febd8e6a0bdd9bdbb6ce1f1f8b08567ec05a) ) + ROM_LOAD16_BYTE( "proto_253-c2.c2", 0x0000001, 0x800000, CRC(5c8d2960) SHA1(f7503502be0332adf408ee0ea5ee5161c8939fd8) ) + ROM_LOAD16_BYTE( "proto_253-c3.c3", 0x1000000, 0x800000, CRC(234d16fc) SHA1(7b9221f7ecc438150c8a10be72390329854ed21b) ) + ROM_LOAD16_BYTE( "proto_253-c4.c4", 0x1000001, 0x800000, CRC(b9b5b993) SHA1(6059793eaf6e58c172235fe64aa9d25a40c38ed6) ) + ROM_LOAD16_BYTE( "proto_253-c5.c5", 0x2000000, 0x800000, CRC(722615d2) SHA1(798832c535869f0e247c3db0d8253779b103e213) ) + ROM_LOAD16_BYTE( "proto_253-c6.c6", 0x2000001, 0x800000, CRC(0a6fab38) SHA1(eaee6f2f18af91f7959d84d4b991b3fc182d07c4) ) + ROM_LOAD16_BYTE( "proto_253-c7.c7", 0x3000000, 0x800000, CRC(d68e806f) SHA1(92bfd9839115bd590972ae4ecc45ad35dce22387) ) + ROM_LOAD16_BYTE( "253px11.c8", 0x3000001, 0x800000, CRC(7f004da7) SHA1(724d2b6439822ca30dad6d1ab59739b59e52c3a1) ) +ROM_END + ROM_START( garoupy ) /* Garou: Mark of the Wolves PROTOTYPE - Hack by Ydmis - (In MVS mode P1 can choose Kain and Grant) */ ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "253py.p1", 0x000000, 0x100000, CRC(5b010d7a) SHA1(5DC416E634456B2403ADF0668D18FC5FF60FAFDC) ) @@ -291,5 +317,6 @@ GAME( 1999, garoupehc, garoupy, neogeo_noslot, neogeo, neogeo_state, neo 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( 2011, garoupx11, garoupy, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Garou - Mark of the Wolves XTREME PLUS", 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/ngkofmisc.cpp b/docs/release/src/hbmame/drivers/ngkofmisc.cpp index 6a8dbe35b74..4a9de9d4585 100644 --- a/docs/release/src/hbmame/drivers/ngkofmisc.cpp +++ b/docs/release/src/hbmame/drivers/ngkofmisc.cpp @@ -253,6 +253,33 @@ ROM_START( ct2k3k3o ) /* [OLD] Crouching Tiger Hidden Dragon 2003 - Remix by Jas ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) ) ROM_END +ROM_START( ct2k3spi ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "360spi.p1", 0x000000, 0x454f4e, CRC(f3010a50) SHA1(b95f322c0682999f2c378fdf2db14fc804f71153) ) + ROM_LOAD16_WORD_SWAP( "5003-p2.bin", 0x100000, 0x400000, CRC(adc1c22b) SHA1(271e0629989257a0d21d280c05df53df259414b1) ) + + //NEO_SFIX_256K( "360spi.s1", CRC(6c355ab4) SHA1(71ac2bcd3dbda8402baecc56dabc2297b148a900) ) // not working + NEO_SFIX_128K( "5003-s1.bin", CRC(5ba29aab) SHA1(e7ea67268a10243693bff722e6fd2276ca540acf) ) + + NEO_BIOS_AUDIO_128K( "5003-m1.bin", CRC(1a8c274b) SHA1(5f6f9c533f4a296a18c741ce59a69cf6f5c836b9) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "262-v1-08-e0.v1", 0x000000, 0x400000, CRC(83d49ecf) SHA1(2f2c116e45397652e77fcf5d951fa5f71b639572) ) + ROM_LOAD( "262-v2-08-e0.v2", 0x400000, 0x400000, CRC(003f1843) SHA1(bdd58837ad542548bd4053c262f558af88e3b989) ) + ROM_LOAD( "262-v3-08-e0.v3", 0x800000, 0x400000, CRC(2ae38dbe) SHA1(4e82b7dd3b899d61907620517a5a27bdaba0725d) ) + ROM_LOAD( "262-v4-08-e0.v4", 0xc00000, 0x400000, CRC(26ec4dd9) SHA1(8bd68d95a2d913be41a51f51e48dbe3bff5924fb) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "5003-c1.bin", 0x0000000, 0x800000, CRC(68f54b67) SHA1(e2869709b11ea2846799fe431211c83e928e103e) ) + ROM_LOAD16_BYTE( "5003-c2.bin", 0x0000001, 0x800000, CRC(2f8849d5) SHA1(7ef74981aa056f5acab4ddabffd3e98b4cb970be) ) + ROM_LOAD16_BYTE( "5003-c3.bin", 0x1000000, 0x800000, CRC(ac4aff71) SHA1(c983f642e68deaa40fee3e208f2dd55f3bacbdc1) ) + ROM_LOAD16_BYTE( "5003-c4.bin", 0x1000001, 0x800000, CRC(afef5d66) SHA1(39fe785563fbea54bba88de60dcc62e2458bd74a) ) + ROM_LOAD16_BYTE( "5003-c5.bin", 0x2000000, 0x800000, CRC(c7c1ae50) SHA1(f54f5be7513a5ce2f01ab107a2b26f6a9ee1f2a9) ) + ROM_LOAD16_BYTE( "5003-c6.bin", 0x2000001, 0x800000, CRC(613197f9) SHA1(6d1fefa1be81b79e251e55a1352544c0298e4674) ) + ROM_LOAD16_BYTE( "5003-c7.bin", 0x3000000, 0x800000, CRC(64ddfe0f) SHA1(361f3f4618009bf6419961266eb9ab5002bef53c) ) + ROM_LOAD16_BYTE( "5003-c8.bin", 0x3000001, 0x800000, CRC(917a1439) SHA1(6f28d1d7c6edee1283f25e632c69204dbebe40af) ) +ROM_END + ROM_START( ct2k3xx ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "5003-p1.bin", 0x000000, 0x100000, CRC(bb7602c1) SHA1(abf329a40f34c88f7325b255e3bc090db1edaca4) ) @@ -351,8 +378,8 @@ ROM_START( kof2k4ru ) ROM_REGION( 0x4000000, "sprites", 0 ) ROM_LOAD16_BYTE( "365ru.c1", 0x0000000, 0x800000, CRC(c55d7733) SHA1(3837f178788c78dcf7b0a4fbab3d62bfe0b41f9a) ) ROM_LOAD16_BYTE( "365ru.c2", 0x0000001, 0x800000, CRC(d89b45c9) SHA1(31d7ad16534839821f68db07b28dd564fe5c13c3) ) - ROM_LOAD16_BYTE( "365ru.c3", 0x1000000, 0x800000, CRC(e5074eea) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) ) - ROM_LOAD16_BYTE( "365ru.c4", 0x1000001, 0x800000, CRC(f6eb1ff2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) ) + ROM_LOAD16_BYTE( "265ori.c3", 0x1000000, 0x800000, CRC(e5074eea) SHA1(387ef21d58b416126b95843bac1a0b6cc346818f) ) + ROM_LOAD16_BYTE( "265ori.c4", 0x1000001, 0x800000, CRC(f6eb1ff2) SHA1(77cb493b9e75d42c204a9a6c052a813c2730e44f) ) ROM_LOAD16_BYTE( "365ru.c5", 0x2000000, 0x800000, CRC(11126545) SHA1(4ae58848c8a6701c9cfcd60e6674e8fb7491c0c0) ) ROM_LOAD16_BYTE( "365ru.c6", 0x2000001, 0x800000, CRC(d225bb9b) SHA1(ee627dab6aeebfb1af9dbdc315a927245243817c) ) ROM_LOAD16_BYTE( "365ru.c7", 0x3000000, 0x800000, CRC(750a7a2b) SHA1(3ef7688eedc3fcb9cef55306055b838f60a96285) ) @@ -495,7 +522,75 @@ ROM_START( kof2k8uni ) // hack of kof10th ROM_END -ROM_START( kof10thu ) +ROM_START( kof10thd16 ) // after loading, p1 needs unscrambling: 2&3<->4&5 etc + ROM_REGION( 0x800000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "363d16.p1", 0x000000, 0x00000, CRC(ea4274f6) SHA1(b9ea7f92f531916bed6363c8214ed5ae117d5148) ) + + NEO_SFIX_MT_128K + ROM_LOAD( "363d16.s1", 0x000000, 0x020000, CRC(6fae9f8f) SHA1(0194a0f8946c2d8e89e4b784586f77b874c03302) ) + ROM_IGNORE( 0x435044 ) + + NEO_BIOS_AUDIO_128K( "kf10-m1.bin", CRC(f6fab859) SHA1(0184aa1394b9f9946d610278b53b846020dd88dc) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) ) + ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) ) + ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) ) + ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) ) + ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) ) + ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) ) + ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) ) + ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) ) + ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) ) + ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) ) + ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) ) + ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) ) + ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) ) + ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) ) + ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) ) + ROM_LOAD16_BYTE( "kf10-c7b.bin", 0x3800000, 0x400000, CRC(3fdb3542) SHA1(7d2050752a2064cd6729f483a0da93808e2c6033) ) + ROM_LOAD16_BYTE( "kf10-c8b.bin", 0x3800001, 0x400000, CRC(661b7a52) SHA1(0ae2ad2389134892f156337332b77adade3ddad1) ) +ROM_END + +ROM_START( kof10thep15 ) + ROM_REGION( 0x800000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "363ep15.p1", 0x000000, 0x200000, CRC(8981b627) SHA1(b25754a6339f6533af791cd7dea95988b5f9072a) ) + ROM_IGNORE(0x254f9f) + ROM_LOAD16_WORD_SWAP( "363ep15.p2", 0x200000, 0x400000, CRC(8eca396b) SHA1(58918c9dff5dc6e8975e16943ef8aefcd4caf34d) ) + ROM_IGNORE(0x054f59) + ROM_LOAD16_WORD_SWAP( "5008-p3.bin", 0x600000, 0x200000, CRC(e629e13c) SHA1(6ebe080ce01c51064cb2f4d89315ba98a45ae727) ) + + NEO_SFIX_128K( "5008-s1.bin", CRC(92410064) SHA1(1fb800b46341858207d3b6961a760289fbec7faa) ) + + NEO_BIOS_AUDIO_128K( "5008-m1.bin", CRC(5a47d9ad) SHA1(0197737934653acc6c97221660d789e9914f3578) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "kf10-v1.bin", 0x000000, 0x800000, CRC(0fc9a58d) SHA1(9d79ef00e2c2abd9f29af5521c2fbe5798bf336f) ) + ROM_LOAD( "kf10-v2.bin", 0x800000, 0x800000, CRC(b8c475a4) SHA1(10caf9c69927a223445d2c4b147864c02ce520a8) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "kf10-c1a.bin", 0x0000000, 0x400000, CRC(3bbc0364) SHA1(e8aa7ff82f151ce1db56f259377b64cceef85af0) ) + ROM_LOAD16_BYTE( "kf10-c2a.bin", 0x0000001, 0x400000, CRC(91230075) SHA1(d9098e05a7ba6008661147b6bf8bc2f494b8b72b) ) + ROM_LOAD16_BYTE( "kf10-c1b.bin", 0x0800000, 0x400000, CRC(b5abfc28) SHA1(eabf60992bb3485c95330065294071ec155bfe7c) ) + ROM_LOAD16_BYTE( "kf10-c2b.bin", 0x0800001, 0x400000, CRC(6cc4c6e1) SHA1(be824a944e745ee18efdc45c81fd496a4d624b9c) ) + ROM_LOAD16_BYTE( "kf10-c3a.bin", 0x1000000, 0x400000, CRC(5b3d4a16) SHA1(93ac1cd7739100f8c32732644f81f2a19837b131) ) + ROM_LOAD16_BYTE( "kf10-c4a.bin", 0x1000001, 0x400000, CRC(c6f3419b) SHA1(340c17a73aeb7bf8a6209f8459e6f00000075b50) ) + ROM_LOAD16_BYTE( "kf10-c3b.bin", 0x1800000, 0x400000, CRC(9d2bba19) SHA1(5ebbd0af3f83a60e33c8ccb743e3d5f5a96f1273) ) + ROM_LOAD16_BYTE( "kf10-c4b.bin", 0x1800001, 0x400000, CRC(5a4050cb) SHA1(8fd2291f349efa1ed5cd37ad4e273b60fe831a77) ) + ROM_LOAD16_BYTE( "kf10-c5a.bin", 0x2000000, 0x400000, CRC(a289d1e1) SHA1(50c7d7ebde6e118a01036cc3e40827fcd9f0d3fd) ) + ROM_LOAD16_BYTE( "kf10-c6a.bin", 0x2000001, 0x400000, CRC(e6494b5d) SHA1(18e064b9867ae0b0794065f8dbefd486620419db) ) + ROM_LOAD16_BYTE( "kf10-c5b.bin", 0x2800000, 0x400000, CRC(404fff02) SHA1(56d1b32c87ea4885e49264e8b21846e465a20e1f) ) + ROM_LOAD16_BYTE( "kf10-c6b.bin", 0x2800001, 0x400000, CRC(f2ccfc9e) SHA1(69db7fac7023785ab94ea711a72dbc2826cfe1a3) ) + ROM_LOAD16_BYTE( "kf10-c7a.bin", 0x3000000, 0x400000, CRC(be79c5a8) SHA1(ded3c5eb3571647f50533eb682c2675372ace3fb) ) + ROM_LOAD16_BYTE( "kf10-c8a.bin", 0x3000001, 0x400000, CRC(a5952ca4) SHA1(76dbb3cb45ce5a4beffa1ed29491204fc6617e42) ) + ROM_LOAD16_BYTE( "5008-c7b.bin", 0x3800000, 0x400000, CRC(33604ef0) SHA1(57deec23c81d5d673ce5992cef1f2567f1a2148e) ) + ROM_LOAD16_BYTE( "5008-c8b.bin", 0x3800001, 0x400000, CRC(51f6a8f8) SHA1(9ef1cdbdd125a2b430346c22b59f36902312905f) ) +ROM_END + +ROM_START( kof10thu ) ROM_REGION( 0x800000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "363u.p1", 0x600000, 0x100000, CRC(dd135fb6) SHA1(4e85814a44ee9fee9760048dd6d6fd2b66521bb1) ) ROM_CONTINUE( 0x100000, 0x500000 ) @@ -622,6 +717,29 @@ ROM_START( kogf ) ROM_LOAD16_BYTE( "5232-c4.bin", 0x2000001, 0x400000, CRC(d2bd967b) SHA1(c494e0a98e127d37ca360a28accc167fa50fb626) ) ROM_END +ROM_START( kogmxpls ) // all confirmed + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "361mxpls.p1", 0x000000, 0x100000, CRC(cb135241) SHA1(7a84ee0965a2dcd9f7a884e7fe862ce98b2a7921) ) + ROM_LOAD16_WORD_SWAP( "361mxpls.p2", 0x100000, 0x400000, CRC(fef47a50) SHA1(cbe7361c06a14a2cdec6276745d3c93ba8fff211) ) + + NEO_SFIX_128K( "361mxpls.s1", CRC(4a46bdd3) SHA1(f0cd23f1b7f916c5cec36a8c379071e142849d61) ) + + NEO_BIOS_AUDIO_128K( "232-m1.m1", CRC(45348747) SHA1(ed77cbae2b208d1177a9f5f6e8cd57070e90b65b) ) + + ROM_REGION( 0xc00000, "ymsnd", 0 ) + ROM_LOAD( "232-v1.v1", 0x000000, 0x400000, CRC(22a2b5b5) SHA1(ebdbc977332e6d93e266755000b43857e0082965) ) + ROM_LOAD( "232-v2.v2", 0x400000, 0x400000, CRC(2304e744) SHA1(98d283e2bcc9291a53f52afd35ef76dfb0828432) ) + ROM_LOAD( "232-v3.v3", 0x800000, 0x400000, CRC(759eb954) SHA1(54e77c4e9e6b89458e59824e478ddc33a9c72655) ) + + ROM_REGION( 0x2800000, "sprites", 0 ) + ROM_LOAD16_BYTE( "361d.c1", 0x0000000, 0x800000, CRC(8E964A75) SHA1(e7611d7908ca056f4b3c0ae2c4da8f6809db4556) ) + ROM_LOAD16_BYTE( "361d.c2", 0x0000001, 0x800000, CRC(D102DE17) SHA1(e98f33a4d16ebda6cf369b92480d4306c780cf8b) ) + ROM_LOAD16_BYTE( "232-c3.c3", 0x1000000, 0x800000, CRC(581d6618) SHA1(14d3124a08ded59f86932c6b28e1a4e48c564ccd) ) + ROM_LOAD16_BYTE( "232-c4.c4", 0x1000001, 0x800000, CRC(49bb1e68) SHA1(f769c1bd1b019521111ff3f0d22c63cb1f2640ef) ) + ROM_LOAD16_BYTE( "361mxpls.c5", 0x2000000, 0x400000, CRC(aec1c48b) SHA1(d6f4a8033f9b5c1942b2061f92b1bf7a13adaaae) ) + ROM_LOAD16_BYTE( "361mxpls.c6", 0x2000001, 0x400000, CRC(eed0c40a) SHA1(efa91e7a9f4a30f4a86d0c4dd1d76754331de99f) ) +ROM_END + ROM_START( kogplus ) ROM_REGION( 0x600000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "361plus.p1", 0x000000, 0x200000, CRC(0338f453) SHA1(01ea5ca6cc632d732a539542dc163bbafb071b88) ) @@ -676,6 +794,7 @@ GAME( 2003, ct2k3eh, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state GAME( 2003, ct2k3ifz, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (Ice FZ Remix)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, ct2k3k3, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "Jason/K3", "Crouching Tiger Hidden Dragon 2003 Remix v1.2 (Diff Move - 030823)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, ct2k3k3o, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "Jason/K3", "Crouching Tiger Hidden Dragon 2003 Remix (Diff Move - 030818)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, ct2k3spi, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (hack spi)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, ct2k3xx, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (Blood Edition)", MACHINE_SUPPORTS_SAVE ) GAME( 2003, ct2k3ys, cthd2k3b, neogeo_noslot, neogeo, neogeo_noslot_state, cthd2003, ROT0, "hack", "Crouching Tiger Hidden Dragon 2003 (Red Fire Remix)", MACHINE_SUPPORTS_SAVE ) GAME( 2004, kof2k4mp, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2k4se, ROT0, "hack", "Kof Special Edition 2004 Magic PLUS", MACHINE_SUPPORTS_SAVE ) @@ -685,12 +804,15 @@ GAME( 2004, kof2k4se2, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state GAME( 2004, kof2k4seb, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Dragon Co.", "Kof Special Edition 2004 (portuguese)", MACHINE_SUPPORTS_SAVE ) GAME( 2004, kof2k4spl, kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kof2k4se, ROT0, "hack", "Kof Special Edition 2004 Plus", MACHINE_SUPPORTS_SAVE ) GAME( 2008, kof2k8uni, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof 10th Anniversary 2008 Unique", MACHINE_SUPPORTS_SAVE ) -GAME( 2005, kof10thu, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof10thu, ROT0, "hack", "Kof 10th Anniversary UNIQUE (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2015, kof10thep15,kof2002, neogeo_noslot, neogeo, neogeo_noslot_state, kf10thep, ROT0, "hack", "Kof 10th Anniversary Extra Plus (hack 15)", MACHINE_SUPPORTS_SAVE ) +GAME( 2005, kof10thd16, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof10thu, ROT0, "hack", "Kof 10th Anniversary UNIQUE (hack d16)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 2005, kof10thu, kof2002, neogeo_noslot, neogeo, neogeo_hbmame, kof10thu, ROT0, "hack", "Kof 10th Anniversary UNIQUE (hack u)", MACHINE_SUPPORTS_SAVE ) GAME( 2005, kof10thub, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof 10th Anniversary UNIQUE (portuguese edition)", MACHINE_SUPPORTS_SAVE ) -GAME( 2005, kof10thud, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof 10th Anniversary UNIQUE (decrypted, bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2005, kof10thud, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof 10th Anniversary UNIQUE (decrypted)", MACHINE_SUPPORTS_SAVE ) GAME( 2005, kogd, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "hack", "King of Gladiator (fully decrypted)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, kogf, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "Zxbdragon / Ryu", "King of Gladiator (Fixed Edition by Zxbdragon & Ryu)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, kogplus, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "hack", "King of Gladiator PLUS", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, kogplusf, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "Zxbdragon / Ryu", "King of Gladiator PLUS (Fixed Edition by Zxbdragon & Ryu)", MACHINE_SUPPORTS_SAVE ) +GAME( 2005, kogf, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "Zxbdragon / Ryu", "King of Gladiator (Fixed Edition by Zxbdragon & Ryu)", MACHINE_SUPPORTS_SAVE ) +GAME( 2005, kogmxpls, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "hack", "King of Gladiator MIX PLUS-EX", MACHINE_SUPPORTS_SAVE ) +GAME( 2005, kogplus, kof97, neogeo_kog, neogeo, neogeo_noslot_kog_state, kog, ROT0, "hack", "King of Gladiator PLUS", MACHINE_SUPPORTS_SAVE ) +GAME( 2005, kogplusf, kof97, hbmame_kog, neogeo, neogeo_hbmame, kogd, ROT0, "Zxbdragon / Ryu", "King of Gladiator PLUS (Fixed Edition by Zxbdragon & Ryu)", MACHINE_SUPPORTS_SAVE ) ///GAME( 2004, kf2k4pls, kof2002, neogeo_noslot, neogeo, neogeo_state, kf2k4pls, ROT0, "hack", "Kof2004 Special Edition Plus", MACHINE_SUPPORTS_SAVE ) ///GAME( 2004, kof10thd, kof2002, neogeo_noslot, neogeo, neogeo_state, kof10thd, ROT0, "hack", "Kof 10th Anniversary (Fully Decrypted)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/ngrotd.cpp b/docs/release/src/hbmame/drivers/ngrotd.cpp index 84248af9a25..6a4b07d9f12 100644 --- a/docs/release/src/hbmame/drivers/ngrotd.cpp +++ b/docs/release/src/hbmame/drivers/ngrotd.cpp @@ -239,6 +239,29 @@ ROM_START( rotdd ) ROM_LOAD16_BYTE( "264d.c8", 0x3000001, 0x800000, CRC(82b1ba22) SHA1(B4AD715807F2C15FC06945F0BCB475C3698CF089) ) ROM_END +ROM_START( rotddh ) + ROM_REGION( 0x800000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "264dh.p1", 0x000000, 0x800000, CRC(7c095666) SHA1(2b9412105cd60fa6d7eea9d13a552fd976f56eb6) ) + + NEO_SFIX_MT_128K + + NEO_BIOS_AUDIO_128K( "264nd.m1", CRC(c5d36af9) SHA1(320739d0cfa6cc84455ae1f7b1f9cdab3c018933) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "264-v1.v1", 0x000000, 0x800000, CRC(fa005812) SHA1(73723126dab5a640ac11955ed6da1bf7a91394f5) ) + ROM_LOAD( "264-v2.v2", 0x800000, 0x800000, CRC(c3dc8bf0) SHA1(a105e37262d9500a30fb8a5dac05aa4fab2562a3) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "264d.c1", 0x0000000, 0x800000, CRC(ec9d18c0) SHA1(83EBEDAE9655B6C64421CD131930B27D252853EC) ) + ROM_LOAD16_BYTE( "264d.c2", 0x0000001, 0x800000, CRC(b1069066) SHA1(0B4E2249EFC782B572B589F72AADBD8007E8778C) ) + ROM_LOAD16_BYTE( "264d.c3", 0x1000000, 0x800000, CRC(7e636d49) SHA1(1BA15DDBCE8369D7232CC1DA3F833F6CB68FBC10) ) + ROM_LOAD16_BYTE( "264d.c4", 0x1000001, 0x800000, CRC(76892fda) SHA1(27416585973A6EC7B5721DE1116C8700B38E3A4C) ) + ROM_LOAD16_BYTE( "264d.c5", 0x2000000, 0x800000, CRC(469061bc) SHA1(34E60E5F93743BE88BFC9E8B7656FE9FAF77F8F5) ) + ROM_LOAD16_BYTE( "264d.c6", 0x2000001, 0x800000, CRC(2200220a) SHA1(8379B4C89854B3CC9B4F33F4F51AB5387ACD14CA) ) + ROM_LOAD16_BYTE( "264dh.c7", 0x3000000, 0x800000, CRC(2b5c1044) SHA1(1dc3b2bd5fed3e5b39d87c4728e8b0d8225ee7dc) ) + ROM_LOAD16_BYTE( "264dh.c8", 0x3000001, 0x800000, CRC(f697f287) SHA1(2b257f2ebef69f19aaca54f37472f1c3dfc6bee6) ) +ROM_END + ROM_START( rotdeh ) /* Rage of the Dragons - Hack by Ydmis - (Can choose Abubo and Johann) */ ROM_REGION( 0x800000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "264eh.p1", 0x000000, 0x800000, CRC(b8db28bc) SHA1(9fd6cd7a13bde0854243dca4b0d7d9601cde4996) ) @@ -521,23 +544,24 @@ ROM_END -GAME( 2002, rotdb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 4)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann +GAME( 2002, rotdb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 4)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, rotdbr, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "hack", "Rage of the Dragons (Portuguese)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, rotdbr1, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "hack", "Rage of the Dragons (Portuguese) (Alt Set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, rotdbr2, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "hack", "Rage of the Dragons (Portuguese) (Alt Set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, rotdcre, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami and Unk","Rage of the Dragons (Console mode enabled - Always pow max - No change wait)", MACHINE_SUPPORTS_SAVE ) -GAME( 2002, rotdcreb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami, Unk and Ydmis","Rage of the Dragons (Add Char - Console mode enabled - Always pow max - No change wait set 2)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann +GAME( 2002, rotdcreb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami, Unk and Ydmis","Rage of the Dragons (Add Char - Console mode enabled - Always pow max - No change wait set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, rotdd, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdd, ROT0, "Evoga / Playmore","Rage of the Dragons (decrypted C)", MACHINE_SUPPORTS_SAVE ) -GAME( 2002, rotdeh, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Ydmis", "Rage of the Dragons (Add Char)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann -GAME( 2002, rotdehc, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami, FWNL and Ydmis","Rage of the Dragons (Add Char - Console mode enabled - Always pow max - No change wait set 1)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann -GAME( 2002, rotdfw, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 2)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann -GAME( 2002, rotdfy, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 3)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann -GAME( 2002, rotdh2b, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Unk and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 5)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann -GAME( 2002, rotdhab, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "HappyAsr", "Rage of the Dragons (Add Char - Console mode enabled - Char menu changed - Char choose twice)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann +GAME( 2002, rotddh, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdd, ROT0, "hack", "Rage of the Dragons (hack dh)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, rotdeh, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Ydmis", "Rage of the Dragons (Add Char)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, rotdehc, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami, FWNL and Ydmis","Rage of the Dragons (Add Char - Console mode enabled - Always pow max - No change wait set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, rotdfw, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, rotdfy, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, rotdh2b, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Unk and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 5)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, rotdhab, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "HappyAsr", "Rage of the Dragons (Add Char - Console mode enabled - Char menu changed - Char choose twice)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, rotdhar, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "HappyAsr", "Rage of the Dragons (Console mode enabled set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 2002, rotdhfw, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL", "Rage of the Dragons (Console mode enabled set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 2002, rotdhfwb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 1)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann -GAME( 2002, rotdyc, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled - Pow hack)", MACHINE_SUPPORTS_SAVE ) // Abubo and Johann +GAME( 2002, rotdhfwb, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "FWNL and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 2002, rotdyc, rotd, neogeo_noslot, neogeo, neogeo_hbmame, rotdb, ROT0, "Creamymami and Ydmis", "Rage of the Dragons (Add Char - Console mode enabled - Pow hack)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/ngsengoku.cpp b/docs/release/src/hbmame/drivers/ngsengoku.cpp index 2aa01c24008..3cd9a10169a 100644 --- a/docs/release/src/hbmame/drivers/ngsengoku.cpp +++ b/docs/release/src/hbmame/drivers/ngsengoku.cpp @@ -97,6 +97,30 @@ ROM_START( sengoku3d ) ROM_LOAD16_BYTE( "261d.c4", 0x1000001, 0x800000, CRC(18926df6) SHA1(a4859c9166ef7abec1f3e6af3292051a63a81f93) ) ROM_END +ROM_START( sengoku3eb ) // sgk3eb + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "261eb.p1", 0x100000, 0x100000, CRC(a77a0dc7) SHA1(a78885d1d121583c7733a868f6140babc4ba5544) ) + ROM_IGNORE(0x100000) + ROM_CONTINUE(0x000000, 0x100000) + ROM_IGNORE(0x154f48) + + NEO_SFIX_MT_128K + + NEO_BIOS_AUDIO_512K( "261-m1.m1", CRC(7d501c39) SHA1(8e6bcc428f5ac7532d9c9be7e07ad0821461a080) ) + + ROM_REGION( 0x0e00000, "ymsnd", 0 ) + ROM_LOAD( "261-v1.v1", 0x000000, 0x400000, CRC(64c30081) SHA1(f9ebd20cf59b72e864b7274c1bdb6d99ecaf4595) ) + ROM_LOAD( "261-v2.v2", 0x400000, 0x400000, CRC(392a9c47) SHA1(7ab90a54089236ca6c3ef1af8e566a8025d38159) ) + ROM_LOAD( "261-v3.v3", 0x800000, 0x400000, CRC(c1a7ebe3) SHA1(1d7bb481451f5ee0457e954bb5210300182c3c9c) ) + ROM_LOAD( "261-v4.v4", 0xc00000, 0x200000, CRC(9000d085) SHA1(11157b355ab4eb6627e9f322ed875332d3d77349) ) + + ROM_REGION( 0x2000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "261-c1.c1", 0x0000000, 0x800000, CRC(ded84d9c) SHA1(d960523b813d4fae06d716298d4e431a5c77a0c5) ) + ROM_LOAD16_BYTE( "261-c2.c2", 0x0000001, 0x800000, CRC(b8eb4348) SHA1(619d24312549932959481fa58f43f11c048e1ca5) ) + ROM_LOAD16_BYTE( "261-c3.c3", 0x1000000, 0x800000, CRC(84e2034a) SHA1(38ec4ae4b86933a25c9a03799b8cade4b1346401) ) + ROM_LOAD16_BYTE( "261-c4.c4", 0x1000001, 0x800000, CRC(0b45ae53) SHA1(a19fb21408ab633aee8bbf38bf43b5e26766b355) ) +ROM_END + ROM_START( sengoku3ha ) /* Sengoku 3 - Hack by HappyAse - (Can choose Byakki and Okuni - can directly choose USA and Brazil stage) */ ROM_REGION( 0x200000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "261ha.p1", 0x000000, 0x200000, CRC(ff392440) SHA1(01184f9edc786d0b83a3afe83e53b9834d54a98d) ) @@ -252,13 +276,14 @@ ROM_END GAME( 2007, sengokucd, sengoku, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "SNK", "Sengoku (CD conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, sengoku3b, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Ydmis", "Sengoku 3 (Add Char)", MACHINE_SUPPORTS_SAVE ) // Byakki and Okuni -GAME( 2001, sengoku3c, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Unk", "Sengoku 3 (Add Char - Char color changed)", MACHINE_SUPPORTS_SAVE ) // Byakki and Okuni +GAME( 2001, sengoku3b, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Ydmis", "Sengoku 3 (Add Char)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, sengoku3c, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Unk", "Sengoku 3 (Add Char - Char color changed)", MACHINE_SUPPORTS_SAVE ) GAME( 2001, sengoku3d, sengoku3, neogeo_noslot, neogeo, neogeo_hbmame, cmc42sfix, ROT0, "SNK", "Sengoku 3 (decrypted C)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, sengoku3ha, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "HappyAsr","Sengoku 3 (Add Char - Select USA and Brazil)", MACHINE_SUPPORTS_SAVE ) // Byakki and Okuni -GAME( 2001, sengoku3k, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun", "Sengoku 3 (Add Char - Pow hack set 3)", MACHINE_SUPPORTS_SAVE ) // Byakki and Okuni +GAME( 2001, sengoku3eb, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "hack", "Sengoku 3 (hack eb)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, sengoku3ha, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "HappyAsr","Sengoku 3 (Add Char - Select USA and Brazil)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, sengoku3k, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun", "Sengoku 3 (Add Char - Pow hack set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 2001, sengoku3kc, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "Fighters Kim", "Sengoku 3 (Char color changed - 80%)", MACHINE_SUPPORTS_SAVE ) GAME( 2001, sengoku3p, sengoku3, neogeo_noslot, neogeo, neogeo_hbmame, sengo3d, ROT0, "Krysofun", "Sengoku 3/Sengoku legends 2001 EX Super Version", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, sengoku3pl, sengoku3, neogeo_noslot, neogeo, neogeo_hbmame, sengo3d, ROT0, "hack", "Sengoku 3 / Sengoku Densho 2001 Plus (Hack by Player-X)" , MACHINE_SUPPORTS_SAVE ) /* Encrypted GFX */ -GAME( 2001, sengoku3ya, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun and Ydmis","Sengoku 3 (Add Char - Pow hack set 2)", MACHINE_SUPPORTS_SAVE ) // Byakki and Okuni -GAME( 2001, sengoku3yk, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun and Ydmis","Sengoku 3 (Add Char - Pow hack set 1)", MACHINE_SUPPORTS_SAVE ) // Byakki and Okuni +GAME( 2001, sengoku3pl, sengoku3, neogeo_noslot, neogeo, neogeo_hbmame, sengo3d, ROT0, "hack", "Sengoku 3 / Sengoku Densho 2001 Plus (Hack by Player-X)" , MACHINE_SUPPORTS_SAVE ) +GAME( 2001, sengoku3ya, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun and Ydmis","Sengoku 3 (Add Char - Pow hack set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, sengoku3yk, sengoku3, neogeo_noslot, neogeo, neogeo_noslot_state, sengoku3, ROT0, "KrysoFun and Ydmis","Sengoku 3 (Add Char - Pow hack set 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/ngsvc.cpp b/docs/release/src/hbmame/drivers/ngsvc.cpp index 1c79c56c21a..c50fa2670f7 100644 --- a/docs/release/src/hbmame/drivers/ngsvc.cpp +++ b/docs/release/src/hbmame/drivers/ngsvc.cpp @@ -196,6 +196,43 @@ ROM_START( svcpcbd ) // JAMMA ROM_LOAD16_BYTE( "269pcbd.c2", 0x0000001, 0x2000000, CRC(88ad01ec) SHA1(da223bc09aa465ea6c15954c45fefbf3ee79a4d7) ) ROM_END +ROM_START( svcplusa2016 ) + ROM_REGION( 0x600000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "269pa2016.p1", 0x000000, 0x454f9c, CRC(65471e6c) SHA1(32e07ec3d415940b3e1204e9e2ef00da60b4a685) ) + ROM_LOAD16_WORD_SWAP( "269pa2016.p2", 0x200000, 0x400000, CRC(f78b0e9e) SHA1(839091db9ecfc6720fa28790fca7c6c057ff42a7) ) + ROM_IGNORE( 0x054f62 ) + + NEO_SFIX_MT_128K + ROM_LOAD( "svc-s1pl.bin", 0x10000, 0x10000, CRC(ca3c735e) SHA1(aebd15253c90432a2e0a4c40f37110c1e2176ee4) ) + ROM_CONTINUE( 0x00000, 0x10000 ) + + NEOGEO_BIOS + + ROM_REGION( 0x20000, "audiobios", 0 ) + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) + + ROM_REGION( 0x50000, "audiocpu", 0 ) + ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) ) + ROM_CONTINUE( 0x00000, 0x10000 ) + ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) ) + ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) ) + 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) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) ) + ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) ) + ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) ) + ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) ) + ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) ) + ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) ) + ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) ) + ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) ) +ROM_END + ROM_START( svcplusb ) ROM_REGION( 0x600000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "269plusb.p1", 0x000000, 0x600000, CRC(5D738F9A) SHA1(10AD161D6DE285659DCAEBBEA4AA2B384341E14D) ) @@ -321,6 +358,41 @@ ROM_START( svcrm ) ROM_LOAD16_BYTE( "269d.c8", 0x3000001, 0x800000, CRC(de99e613) SHA1(F28C6AF4A31A937E5B441D4B860E3CCCA725F27A) ) ROM_END +ROM_START( svcsplus2016 ) + ROM_REGION( 0x800000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "svc-p1sp.bin", 0x000000, 0x400000, CRC(2601902f) SHA1(202348a13c6480f7de37a3ee983823838822fc98) ) + ROM_LOAD16_WORD_SWAP( "269sp2016.p2", 0x400000, 0x400000, CRC(c30b4d6c) SHA1(5bd2cc39e988e2c8c92e0df3f75b8343cec5b09c) ) + ROM_IGNORE( 0x054f4c ) + + NEO_SFIX_128K( "svc-s1sp.bin", CRC(233d6439) SHA1(369024c7a2405c3144c14ac016c07c3dc0f44187) ) + + NEOGEO_BIOS + + ROM_REGION( 0x20000, "audiobios", 0 ) + ROM_LOAD( "sm1.sm1", 0x00000, 0x20000, CRC(94416d67) SHA1(42f9d7ddd6c0931fd64226a60dc73602b2819dcf) ) + + ROM_REGION( 0x50000, "audiocpu", 0 ) + ROM_LOAD( "svc-m1.bin", 0x20000, 0x10000, CRC(804328c3) SHA1(f931636c563b0789d4812033a77b47bf663db43f) ) + ROM_CONTINUE( 0x00000, 0x10000 ) + ROM_COPY( "audiocpu", 0x000000, 0x10000, 0x10000 ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD16_WORD_SWAP( "svc-v2.bin", 0x000000, 0x400000, CRC(b5097287) SHA1(3ba3a9b5624879616382ed40337a3d9c50a0f314) ) + ROM_LOAD16_WORD_SWAP( "svc-v1.bin", 0x400000, 0x400000, CRC(bd3a391f) SHA1(972bf09b75e99a683ee965bec93b0da8f15d72d9) ) + 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) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "svc-c1.bin", 0x0000000, 0x800000, CRC(a7826b89) SHA1(3bbe348ce54b80b56ef032ea532a18ef3cafeb11) ) + ROM_LOAD16_BYTE( "svc-c2.bin", 0x0000001, 0x800000, CRC(ed3c2089) SHA1(b5d17692f15f5a678c273589fab2e3918711135e) ) + ROM_LOAD16_BYTE( "svc-c3.bin", 0x1000000, 0x800000, CRC(71ed8063) SHA1(ea1df9e2e382a8560a06d447421844cc588f43dd) ) + ROM_LOAD16_BYTE( "svc-c4.bin", 0x1000001, 0x800000, CRC(250bde2d) SHA1(8c72dcfceef6d022ab4b73ab37cf3ac0c3940c17) ) + ROM_LOAD16_BYTE( "svc-c5.bin", 0x2000000, 0x800000, CRC(9817c082) SHA1(1bea9c7220c2b1524896c86841d6d8fd55f5d366) ) + ROM_LOAD16_BYTE( "svc-c6.bin", 0x2000001, 0x800000, CRC(2bc0307f) SHA1(8090fa82c46eb503832359093c8cc3cee3141c90) ) + ROM_LOAD16_BYTE( "svc-c7.bin", 0x3000000, 0x800000, CRC(4358d7b9) SHA1(9270b58c2abc072a046bedda72f1395df26d0714) ) + ROM_LOAD16_BYTE( "svc-c8.bin", 0x3000001, 0x800000, CRC(366deee5) SHA1(d477ad7a5987fd6c7ef2c1680fbb7c884654590e) ) +ROM_END + ROM_START( svcspryu ) ROM_REGION( 0x600000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "269spryu.p1", 0x000000, 0x600000, CRC(4f15b6b3) SHA1(651e5340b5442ff6cd9b6a325ea6ad8abc116cfb) ) @@ -348,15 +420,17 @@ ROM_END -GAME( 2003, svcd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcd, ROT0, "hack", "SvC Chaos (decrypted C set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcd1, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcd1, ROT0, "hack", "SvC Chaos (decrypted C set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svch, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "chbandy", "SvC Chaos (Remix Ver 1.0 by chbandy)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcesv, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svc, ROT0, "hack", "SvC Chaos (unknown esv)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcnd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcplusd, ROT0, "hack", "SvC Chaos (unknown nd)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcpcbd, svcpcb, neogeo_noslot, dualbios, neogeo_hbmame, svcpcd, ROT0, "hack", "SVC Chaos (JAMMA PCB, decrypted C & V)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcplusb, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcplusb, ROT0, "hack", "SvC Chaos PLUS (Bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcplusd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcplusd, ROT0, "hack", "SvC Chaos PLUS (unknown plusd)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcpryu, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Plus (Koryu)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcps2, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "SvC Playstation2 Hack Final 1.02 (EGHT)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcrm, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason", "SVC REMIX ULTRA (Ver 1.2 by Jason)", MACHINE_SUPPORTS_SAVE ) -GAME( 2003, svcspryu, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Plus (Super Koryu)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcd, ROT0, "hack", "SvC Chaos (decrypted C set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcd1, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcd1, ROT0, "hack", "SvC Chaos (decrypted C set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svch, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "chbandy", "SvC Chaos (Remix Ver 1.0 by chbandy)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcesv, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svc, ROT0, "hack", "SvC Chaos (unknown esv)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcnd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcplusd, ROT0, "hack", "SvC Chaos (unknown nd)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcpcbd, svcpcb, neogeo_noslot, dualbios, neogeo_hbmame, svcpcd, ROT0, "hack", "SvC Chaos (JAMMA PCB, decrypted C & V)", MACHINE_SUPPORTS_SAVE ) +GAME( 2016, svcplusa2016, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcplusa, ROT0, "hack", "SvC Chaos PLUS (2016)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcplusb, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcplusb, ROT0, "hack", "SvC Chaos PLUS (Bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcplusd, svc, neogeo_noslot, neogeo, neogeo_hbmame, svcplusd, ROT0, "hack", "SvC Chaos PLUS (unknown plusd)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcpryu, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Plus (Koryu)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcps2, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "EGHT", "SvC Playstation2 Hack Final 1.02 (EGHT)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcrm, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "Jason", "SvC REMIX ULTRA (Ver 1.2 by Jason)", MACHINE_SUPPORTS_SAVE ) +GAME( 2016, svcsplus2016, svc, neogeo_noslot, neogeo, neogeo_noslot_state, svcsplus, ROT0, "hack", "SvC Chaos Super Plus (2016)", MACHINE_SUPPORTS_SAVE ) +GAME( 2003, svcspryu, svc, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "SvC Plus (Super Koryu)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/spacmiss.cpp b/docs/release/src/hbmame/drivers/spacmiss.cpp index a95055737fe..0887fff58a9 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_WRITENOP //(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 ac8dafff6f5..a7dbcaf6060 100644 --- a/docs/release/src/hbmame/hbmame.lst +++ b/docs/release/src/hbmame/hbmame.lst @@ -518,6 +518,7 @@ kof96oib //IsmaMj kof96oib2 //IsmaMj kof96oih kof96oir +kof96pch kof96pjc kof96pm kof96rcw @@ -542,22 +543,28 @@ kof96seh kof97aa kof97ae kof97ae1 +kof97aot kof97bh kof97bng kof97bs kof97cb2 kof97chris kof97cn -kof97co -kof97co6 +kof97co // combo 2010-02-07 +kof97co6 // combo 2006 kof97cr kof97chl kof97chl2 +kof97cy +kof97dse kof97eh kof97eh2 kof97eho +kof97ei // combo 2010-02-07 different colours kof97evo kof97evoa +kof97frb +kof97irgc kof97hk kof97hl kof97hxd @@ -586,7 +593,11 @@ kof97plus kof97pm kof97ps kof97rev +kof97ribe kof97rk +kof97rst +kof97rst2 +kof97rst3 kof97rv kof97saw kof97sed @@ -594,7 +605,9 @@ kof97sex kof97shi kof97sm kof97svs +kof97svsb2 kof97sw +kof97tse kof97wh kof97wpls kof97xbt @@ -612,6 +625,8 @@ kof97yh kof97yk kof97yk1 kof97yk2 +kof97yk83 +kof97yk85 kof97yl kof97yl2 kof97yo @@ -638,6 +653,7 @@ kof98c20090620 // sometimes reboots itself kof98c20090923 kof98c20100214 kof98c20110114 +kof98c20110314 kof98c20120116 kof98c20120915 kof98c20130213 @@ -689,6 +705,7 @@ kof98c20151103 kof98c20151108 kof98c20151110 kof98c20151223 +kof98c20160320 kof98cd kof98cd1 kof98ch @@ -705,6 +722,7 @@ kof98ehr kof98evl kof98evo kof98evo2 +kof98evr kof98f kof98fr kof98fro @@ -721,7 +739,8 @@ kof98klc kof98lb kof98lv kof98m -kof98mix /* KOF98 mix 2011-10-01 */ +kof98mev +kof98mix kof98nc kof98new kof98pjc @@ -789,6 +808,7 @@ kof99lb kof99m kof99nd kof99ndh +kof99ndis kof99ob kof99ob2 kof99pb @@ -979,9 +999,12 @@ kof2002x kof2k2ath kof2k2b // no sound in attract mode kof2k2b1 +kof2k2bd //not working kof2k2bh kof2k2bjh kof2k2bjo +kof2k2bl3 +kof2k2bl4 kof2k2bld kof2k2blood2 kof2k2br @@ -1056,6 +1079,7 @@ kof2k2mpu kof2k2ngp kof2k2nu kof2k2olp +kof2k2omg kof2k2omg8 kof2k2omg9 kof2k2omg9b @@ -1098,6 +1122,7 @@ kof2k2sb kof2k2seh kof2k2se2 kof2k2sm // bad gfx on train scene +kof2k2smf kof2k2smg kof2k2smg2 kof2k2soi @@ -1110,7 +1135,6 @@ kof2k2ul kof2k2ule kof2k2wuk // no sound in attract mode kof2k2xxx -kof2k2bd //not working //kf2k2plc /* kof2003 */ @@ -1285,14 +1309,21 @@ mslug2fr mslug2fro mslug2sh mslug2t // 2015 trap15 - remove slowdowns that plague gameplay +mslugxce mslugxeb mslugxeh mslugxeh1 mslugxex +mslugxfe mslugxfr mslugxfro -mslugxit mslugxhp +mslugxit +mslugxjdkj +mslugxmfb +mslugxres +mslugxsef +mslugxsvb mslugxp mslugxr mslugxst @@ -1342,6 +1373,7 @@ mslug4fr mslug4i mslug4i1 mslug4kh +//mslug4lw // not working - p roms are encrypted mslug4nd mslug4sp mslug5b @@ -1350,6 +1382,7 @@ mslug5d1 mslug5f mslug5fr mslug5fr1 +//mslug5fu // not working - p roms are encrypted mslug5hd mslug5l9a mslug5l9b @@ -1880,6 +1913,7 @@ garoupy garoupf garoupfu garoupfp +garoupx11 garoupy1 /* ngkofmisc */ @@ -1889,6 +1923,7 @@ ct2k3eh ct2k3ifz ct2k3k3 ct2k3k3o +ct2k3spi ct2k3xx ct2k3ys //ct2k3ad @@ -1904,11 +1939,14 @@ kof2k4seb kof2k4spl kof2k8uni //kof10thd +//kof10thd16 // not working, p1 needs unscrambling +kof10thep15 kof10thu kof10thub kof10thud kogd kogf +kogmxpls kogplus kogplusf @@ -1976,6 +2014,7 @@ rotdbr2d rotdcre rotdcreb rotdd +rotddh rotdeh rotdehc rotdfw @@ -2038,6 +2077,7 @@ sengokucd sengoku3b sengoku3c sengoku3d +sengoku3eb sengoku3ha sengoku3k sengoku3kc @@ -2053,11 +2093,13 @@ svcesv svch svcnd svcpcbd +svcplusa2016 svcplusb svcplusd svcpryu svcps2 svcrm +svcsplus2016 svcspryu /* ngwh */ diff --git a/docs/release/src/hbmame/machine/ng_memcard.cpp b/docs/release/src/hbmame/machine/ng_memcard.cpp index f4c816c6f1c..17b2c3178f5 100644 --- a/docs/release/src/hbmame/machine/ng_memcard.cpp +++ b/docs/release/src/hbmame/machine/ng_memcard.cpp @@ -72,7 +72,7 @@ void ng_memcard_device::call_unload() fwrite(m_memcard_data, 0x800); } -bool ng_memcard_device::call_create(int format_type, option_resolution *format_options) +bool ng_memcard_device::call_create(int format_type, util::option_resolution *format_options) { memset(m_memcard_data, 0, 0x800); diff --git a/docs/release/src/hbmame/machine/ng_memcard.h b/docs/release/src/hbmame/machine/ng_memcard.h index 4752c1d1a67..27eb36a7e21 100644 --- a/docs/release/src/hbmame/machine/ng_memcard.h +++ b/docs/release/src/hbmame/machine/ng_memcard.h @@ -26,8 +26,7 @@ // ======================> ng_memcard_device -class ng_memcard_device : public device_t, - public device_image_interface +class ng_memcard_device : public device_t, public device_image_interface { public: // construction/destruction @@ -45,7 +44,7 @@ public: virtual bool call_load() override; virtual void call_unload() override; - virtual bool call_create(int format_type, option_resolution *format_options) override; + virtual bool call_create(int format_type, util::option_resolution *format_options) override; // device-level overrides virtual void device_start() override; diff --git a/docs/release/src/osd/winui/datafile.cpp b/docs/release/src/osd/winui/datafile.cpp index 5d80b2d6540..546ac5a5d30 100644 --- a/docs/release/src/osd/winui/datafile.cpp +++ b/docs/release/src/osd/winui/datafile.cpp @@ -1,5 +1,6 @@ // For licensing and usage information, read docs/winui_license.txt //**************************************************************************** +// MASTER /**************************************************************************** * datafile.c * History database engine @@ -683,7 +684,7 @@ int load_driver_mameinfo(const game_driver *drv, char *buffer, int bufsize, int { for (const rom_entry *rom = rom_first_file(region); rom; rom = rom_next_file(rom)) { - hash_collection hashes(ROM_GETHASHDATA(rom)); + util::hash_collection hashes(ROM_GETHASHDATA(rom)); if (g != -1) { @@ -694,7 +695,7 @@ int load_driver_mameinfo(const game_driver *drv, char *buffer, int bufsize, int for (const rom_entry *pregion = rom_first_region(device); pregion; pregion = rom_next_region(pregion)) for (const rom_entry *prom = rom_first_file(pregion); prom; prom = rom_next_file(prom)) { - hash_collection phashes(ROM_GETHASHDATA(prom)); + util::hash_collection phashes(ROM_GETHASHDATA(prom)); if (hashes == phashes) break; diff --git a/docs/release/src/osd/winui/directories.cpp b/docs/release/src/osd/winui/directories.cpp index d475325ae48..d5eb51e366d 100644 --- a/docs/release/src/osd/winui/directories.cpp +++ b/docs/release/src/osd/winui/directories.cpp @@ -276,7 +276,7 @@ static BOOL Directories_OnInitDialog(HWND hDlg, HWND hwndFocus, LPARAM lParam) for (i = nDirInfoCount - 1; i >= 0; i--) { - t_s = tstring_from_utf8(g_directoryInfo[i].lpName); + t_s = ui_wstring_from_utf8(g_directoryInfo[i].lpName); if( !t_s ) return FALSE; (void)ComboBox_InsertString(GetDlgItem(hDlg, IDC_DIR_COMBO), 0, win_tstring_strdup(t_s)); @@ -299,7 +299,7 @@ static BOOL Directories_OnInitDialog(HWND hDlg, HWND hwndFocus, LPARAM lParam) for (i = 0; i < nDirInfoCount; i++) { s = g_directoryInfo[i].pfnGetTheseDirs(); - t_s = tstring_from_utf8(s); + t_s = ui_wstring_from_utf8(s); if( !t_s ) return FALSE; if (IsMultiDir(i)) @@ -387,7 +387,7 @@ static int RetrieveDirList(int nDir, int nFlagResult, void (*SetTheseDirs)(const if (i < nPaths - 1) _tcscat(buf, TEXT(";")); } - utf8_buf = utf8_from_tstring(buf); + utf8_buf = ui_utf8_from_wstring(buf); SetTheseDirs(utf8_buf); osd_free(utf8_buf); @@ -412,7 +412,7 @@ static void Directories_OnOk(HWND hDlg) else { s = FixSlash(DirInfo_Dir(g_pDirInfo, i)); - utf8_s = utf8_from_tstring(s); + utf8_s = ui_utf8_from_wstring(s); g_directoryInfo[i].pfnSetTheseDirs(utf8_s); osd_free(utf8_s); } diff --git a/docs/release/src/osd/winui/dirwatch.cpp b/docs/release/src/osd/winui/dirwatch.cpp index 79330fe25bb..82be60dd002 100644 --- a/docs/release/src/osd/winui/dirwatch.cpp +++ b/docs/release/src/osd/winui/dirwatch.cpp @@ -174,7 +174,7 @@ static void DirWatcher_Signal(PDIRWATCHER pWatcher, struct DirWatcherEntry *pEnt // send the message (assuming that we have a target) if (pWatcher->hwndTarget) { - t_filename = tstring_from_utf8(pszFileName); + t_filename = ui_wstring_from_utf8(pszFileName); if( !t_filename ) return; SendMessage(pWatcher->hwndTarget, diff --git a/docs/release/src/osd/winui/mui_audit.cpp b/docs/release/src/osd/winui/mui_audit.cpp index 3f58b8526a7..e67e246e039 100644 --- a/docs/release/src/osd/winui/mui_audit.cpp +++ b/docs/release/src/osd/winui/mui_audit.cpp @@ -1,4 +1,5 @@ // For licensing and usage information, read docs/winui_license.txt +// MASTER //**************************************************************************** /*************************************************************************** @@ -165,9 +166,15 @@ int MameUIVerifyRomSet(int game, bool choice) } else if (choice) + { auditor.winui_summarize(driver_list::driver(game).name, &summary_string); // audit all games + } else - auditor.summarize(driver_list::driver(game).name, &summary_string); // audit one game + { + std::ostringstream whatever; + auditor.summarize(driver_list::driver(game).name, &whatever); // audit one game + summary_string = whatever.str(); + } // output the summary of the audit DetailsPrintf("%s", summary_string.c_str()); @@ -189,7 +196,11 @@ int MameUIVerifySampleSet(int game) if (summary == media_auditor::NOTFOUND) strcatprintf(summary_string, "%s: Sampleset NOT FOUND\n", driver_list::driver(game).name); else - auditor.summarize(driver_list::driver(game).name, &summary_string); + { + std::ostringstream whatever; + auditor.summarize(driver_list::driver(game).name, &whatever); + summary_string = whatever.str(); + } // output the summary of the audit DetailsPrintf("%s", summary_string.c_str()); @@ -443,7 +454,7 @@ static void CLIB_DECL DetailsPrintf(const char *fmt, ...) va_end(marker); - t_s = tstring_from_utf8(ConvertToWindowsNewlines(buffer)); + t_s = ui_wstring_from_utf8(ConvertToWindowsNewlines(buffer)); if( !t_s || _tcscmp(TEXT(""), t_s) == 0) return; diff --git a/docs/release/src/osd/winui/mui_opts.cpp b/docs/release/src/osd/winui/mui_opts.cpp index f6e7bee24ce..067b998ee5c 100644 --- a/docs/release/src/osd/winui/mui_opts.cpp +++ b/docs/release/src/osd/winui/mui_opts.cpp @@ -2064,7 +2064,7 @@ static void FontDecodeString(const char* str, LOGFONT *f) ptr = strrchr(str, ','); if (ptr) { - t_ptr = tstring_from_utf8(ptr + 1); + t_ptr = ui_wstring_from_utf8(ptr + 1); if( !t_ptr ) return; _tcscpy(f->lfFaceName, t_ptr); @@ -2075,7 +2075,7 @@ static void FontDecodeString(const char* str, LOGFONT *f) /* Encode the given LOGFONT structure into a comma-delimited string */ static void FontEncodeString(const LOGFONT *f, char *str) { - char* utf8_FaceName = utf8_from_tstring(f->lfFaceName); + char* utf8_FaceName = ui_utf8_from_wstring(f->lfFaceName); if( !utf8_FaceName ) return; diff --git a/docs/release/src/osd/winui/mui_util.cpp b/docs/release/src/osd/winui/mui_util.cpp index 9f140c75afd..b1aa2ce8da5 100644 --- a/docs/release/src/osd/winui/mui_util.cpp +++ b/docs/release/src/osd/winui/mui_util.cpp @@ -209,7 +209,7 @@ void DisplayTextFile(HWND hWnd, const char *cName) LPCTSTR msg = 0; LPTSTR tName; - tName = tstring_from_utf8(cName); + tName = ui_wstring_from_utf8(cName); if( !tName ) return; @@ -650,7 +650,7 @@ void GetSystemErrorMessage(DWORD dwErrorId, TCHAR **tErrorMessage) HICON win_extract_icon_utf8(HINSTANCE inst, const char* exefilename, UINT iconindex) { HICON icon = 0; - TCHAR* t_exefilename = tstring_from_utf8(exefilename); + TCHAR* t_exefilename = ui_wstring_from_utf8(exefilename); if( !t_exefilename ) return icon; @@ -688,12 +688,11 @@ HANDLE win_create_file_utf8(const char* filename, DWORD desiredmode, DWORD share DWORD flagsandattributes, HANDLE templatehandle) { HANDLE result = 0; - TCHAR* t_filename = tstring_from_utf8(filename); + TCHAR* t_filename = ui_wstring_from_utf8(filename); if( !t_filename ) return result; - result = CreateFile(t_filename, desiredmode, sharemode, securityattributes, creationdisposition, - flagsandattributes, templatehandle); + result = CreateFile(t_filename, desiredmode, sharemode, securityattributes, creationdisposition, flagsandattributes, templatehandle); osd_free(t_filename); @@ -719,7 +718,7 @@ DWORD win_get_current_directory_utf8(DWORD bufferlength, char* buffer) result = GetCurrentDirectory(bufferlength, t_buffer); if( bufferlength > 0 ) { - utf8_buffer = utf8_from_tstring(t_buffer); + utf8_buffer = ui_utf8_from_wstring(t_buffer); if( !utf8_buffer ) { osd_free(t_buffer); return result; @@ -744,7 +743,7 @@ DWORD win_get_current_directory_utf8(DWORD bufferlength, char* buffer) HANDLE win_find_first_file_utf8(const char* filename, LPWIN32_FIND_DATA findfiledata) { HANDLE result = 0; - TCHAR* t_filename = tstring_from_utf8(filename); + TCHAR* t_filename = ui_wstring_from_utf8(filename); if( !t_filename ) return result; diff --git a/docs/release/src/osd/winui/mui_util.h b/docs/release/src/osd/winui/mui_util.h index b1267e59fc0..1b82c6f1f05 100644 --- a/docs/release/src/osd/winui/mui_util.h +++ b/docs/release/src/osd/winui/mui_util.h @@ -66,5 +66,36 @@ HANDLE win_create_file_utf8(const char* filename, DWORD desiredmode, DWORD share DWORD win_get_current_directory_utf8(DWORD bufferlength, char* buffer); HANDLE win_find_first_file_utf8(const char* filename, LPWIN32_FIND_DATA findfiledata); + // wstring_from_utf8 + //============================================================ + +WCHAR *ui_wstring_from_utf8(const char *utf8string) +{ + int char_count; + WCHAR *result; + + // convert MAME string (UTF-8) to UTF-16 + char_count = MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, nullptr, 0); + result = (WCHAR *)osd_malloc_array(char_count * sizeof(*result)); + if (result != nullptr) + MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, result, char_count); + + return result; +} + +char *ui_utf8_from_wstring(const WCHAR *wstring) +{ + int char_count; + char *result; + + // convert UTF-16 to MAME string (UTF-8) + char_count = WideCharToMultiByte(CP_UTF8, 0, wstring, -1, nullptr, 0, nullptr, nullptr); + result = (char *)osd_malloc_array(char_count * sizeof(*result)); + if (result != nullptr) + WideCharToMultiByte(CP_UTF8, 0, wstring, -1, result, char_count, nullptr, nullptr); + return result; +} + + #endif /* MUI_UTIL_H */ diff --git a/docs/release/src/osd/winui/newui.cpp b/docs/release/src/osd/winui/newui.cpp index 73dda176311..77695a55603 100644 --- a/docs/release/src/osd/winui/newui.cpp +++ b/docs/release/src/osd/winui/newui.cpp @@ -1,27 +1,27 @@ // For licensing and usage information, read docs/winui_license.txt -//**************************************************************************** +//************************************************************************************************ // MASTER -//============================================================ // // newui.c - This is the NEWUI Windows dropdown menu system // -//============================================================ +// known bugs: +// - Unable to modify keyboard or joystick. Last known to be working in 0.158 . +// Need to use the default UI. +// +// +//************************************************************************************************ -// Needed for better file dialog -//#ifdef _WIN32_WINNT -//#undef _WIN32_WINNT -//#endif // _WIN32_WINNT -//#define _WIN32_WINNT 0x500 +// Set minimum windows version to XP +#ifdef _WIN32_WINNT +#undef _WIN32_WINNT +#endif +#define _WIN32_WINNT 0x501 // standard windows headers -#define WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN // leave out not-needed libraries #include "newui.h" -// stupid hack; not sure why this is needed -//#ifdef const -//#undef const -//#endif // const #include <shellapi.h> @@ -35,17 +35,17 @@ typedef enum _win_file_dialog_type win_file_dialog_type; typedef struct _win_open_file_name win_open_file_name; struct _win_open_file_name { - win_file_dialog_type type; // type of file dialog - HWND owner; // owner of the dialog - HINSTANCE instance; // instance - const char * filter; // pipe char ("|") delimited strings - DWORD filter_index; // index into filter - char filename[MAX_PATH]; // filename buffer - const char * initial_directory; // initial directory for dialog - DWORD flags; // standard flags - LPARAM custom_data; // custom data for dialog hook - LPOFNHOOKPROC hook; // custom dialog hook - LPCTSTR template_name; // custom dialog template + win_file_dialog_type type; // type of file dialog + HWND owner; // owner of the dialog + HINSTANCE instance; // instance + const char * filter; // pipe char ("|") delimited strings + DWORD filter_index; // index into filter + char filename[MAX_PATH]; // filename buffer + const char * initial_directory; // initial directory for dialog + DWORD flags; // standard flags + LPARAM custom_data; // custom data for dialog hook + LPOFNHOOKPROC hook; // custom dialog hook + LPCTSTR template_name; // custom dialog template }; @@ -67,12 +67,8 @@ typedef void (*dialog_notification)(dialog_box *dialog, HWND dlgwnd, NMHDR *noti #define win_dialog_tcsdup win_dialog_strdup #endif -static const TCHAR guide_prop[] = TEXT("opcntrl_guide"); -static const TCHAR spec_prop[] = TEXT("opcntrl_optspec"); -static const TCHAR value_prop[] = TEXT("opcntrl_value"); - -#define SEQWM_SETFOCUS (WM_APP + 0) -#define SEQWM_KILLFOCUS (WM_APP + 1) +#define SEQWM_SETFOCUS (WM_APP + 0) +#define SEQWM_KILLFOCUS (WM_APP + 1) enum { @@ -152,39 +148,39 @@ struct _seqselect_info // PARAMETERS //============================================================ -#define DIM_VERTICAL_SPACING 3 -#define DIM_HORIZONTAL_SPACING 5 -#define DIM_NORMAL_ROW_HEIGHT 10 -#define DIM_COMBO_ROW_HEIGHT 12 -#define DIM_SLIDER_ROW_HEIGHT 18 -#define DIM_BUTTON_ROW_HEIGHT 12 -#define DIM_EDIT_WIDTH 120 -#define DIM_BUTTON_WIDTH 50 -#define DIM_ADJUSTER_SCR_WIDTH 12 -#define DIM_ADJUSTER_HEIGHT 12 -#define DIM_SCROLLBAR_WIDTH 10 -#define DIM_BOX_VERTSKEW -3 +#define DIM_VERTICAL_SPACING 3 +#define DIM_HORIZONTAL_SPACING 5 +#define DIM_NORMAL_ROW_HEIGHT 10 +#define DIM_COMBO_ROW_HEIGHT 12 +#define DIM_SLIDER_ROW_HEIGHT 18 +#define DIM_BUTTON_ROW_HEIGHT 12 +#define DIM_EDIT_WIDTH 120 +#define DIM_BUTTON_WIDTH 50 +#define DIM_ADJUSTER_SCR_WIDTH 12 +#define DIM_ADJUSTER_HEIGHT 12 +#define DIM_SCROLLBAR_WIDTH 10 +#define DIM_BOX_VERTSKEW -3 -#define DLGITEM_BUTTON ((const WCHAR *) dlgitem_button) -#define DLGITEM_EDIT ((const WCHAR *) dlgitem_edit) -#define DLGITEM_STATIC ((const WCHAR *) dlgitem_static) -#define DLGITEM_LISTBOX ((const WCHAR *) dlgitem_listbox) -#define DLGITEM_SCROLLBAR ((const WCHAR *) dlgitem_scrollbar) -#define DLGITEM_COMBOBOX ((const WCHAR *) dlgitem_combobox) +#define DLGITEM_BUTTON ((const WCHAR *) dlgitem_button) +#define DLGITEM_EDIT ((const WCHAR *) dlgitem_edit) +#define DLGITEM_STATIC ((const WCHAR *) dlgitem_static) +#define DLGITEM_LISTBOX ((const WCHAR *) dlgitem_listbox) +#define DLGITEM_SCROLLBAR ((const WCHAR *) dlgitem_scrollbar) +#define DLGITEM_COMBOBOX ((const WCHAR *) dlgitem_combobox) -#define DLGTEXT_OK "OK" -#define DLGTEXT_APPLY "Apply" -#define DLGTEXT_CANCEL "Cancel" +#define DLGTEXT_OK "OK" +#define DLGTEXT_APPLY "Apply" +#define DLGTEXT_CANCEL "Cancel" -#define FONT_SIZE 8 -#define FONT_FACE L"Arial" +#define FONT_SIZE 8 +#define FONT_FACE L"Arial" -#define SCROLL_DELTA_LINE 10 -#define SCROLL_DELTA_PAGE 100 +#define SCROLL_DELTA_LINE 10 +#define SCROLL_DELTA_PAGE 100 -#define LOG_WINMSGS 0 -#define DIALOG_STYLE WS_POPUP | WS_BORDER | WS_SYSMENU | DS_MODALFRAME | WS_CAPTION | DS_SETFONT -#define MAX_DIALOG_HEIGHT 200 +#define LOG_WINMSGS 0 +#define DIALOG_STYLE WS_POPUP | WS_BORDER | WS_SYSMENU | DS_MODALFRAME | WS_CAPTION | DS_SETFONT +#define MAX_DIALOG_HEIGHT 200 @@ -204,6 +200,10 @@ static const WORD dlgitem_static[] = { 0xFFFF, 0x0082 }; static const WORD dlgitem_listbox[] = { 0xFFFF, 0x0083 }; static const WORD dlgitem_scrollbar[] = { 0xFFFF, 0x0084 }; static const WORD dlgitem_combobox[] = { 0xFFFF, 0x0085 }; +static int joystick_menu_setup = 0; +static char state_filename[MAX_PATH]; +static void add_filter_entry(std::string &dest, const char *description, const char *extensions); +static const char* software_dir; //============================================================ @@ -211,8 +211,7 @@ static const WORD dlgitem_combobox[] = { 0xFFFF, 0x0085 }; //============================================================ static void dialog_prime(dialog_box *di); -static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, - short width, short height, const char *str, const WCHAR *class_name, WORD *id); +static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, short width, short height, const char *str, const WCHAR *class_name, WORD *id); @@ -223,7 +222,6 @@ static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, #define ID_FRAMESKIP_0 10000 #define ID_DEVICE_0 11000 #define ID_JOYSTICK_0 12000 -#define ID_INPUT_0 13000 #define ID_VIDEO_VIEW_0 14000 #define MAX_JOYSTICKS (8) @@ -242,38 +240,50 @@ enum }; -//============================================================ -// LOCAL VARIABLES -//============================================================ +//======================================================================== +// LOCAL STRING FUNCTIONS (these require osd_free after being called) +//======================================================================== -static int joystick_menu_setup = 0; -static char state_filename[MAX_PATH]; -static int add_filter_entry(char *dest, size_t dest_len, const char *description, const char *extensions); -static const char* software_dir; - -struct file_dialog_params +static WCHAR *ui_wstring_from_utf8(const char *utf8string) { - device_image_interface *dev; - int *create_format; - option_resolution **create_args; -}; + int char_count; + WCHAR *result; + + // convert MAME string (UTF-8) to UTF-16 + char_count = MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, nullptr, 0); + result = (WCHAR *)osd_malloc_array(char_count * sizeof(*result)); + if (result != nullptr) + MultiByteToWideChar(CP_UTF8, 0, utf8string, -1, result, char_count); + + return result; +} +static char *ui_utf8_from_wstring(const WCHAR *wstring) +{ + int char_count; + char *result; + // convert UTF-16 to MAME string (UTF-8) + char_count = WideCharToMultiByte(CP_UTF8, 0, wstring, -1, nullptr, 0, nullptr, nullptr); + result = (char *)osd_malloc_array(char_count * sizeof(*result)); + if (result != nullptr) + WideCharToMultiByte(CP_UTF8, 0, wstring, -1, result, char_count, nullptr, nullptr); + return result; +} //============================================================ // win_get_file_name_dialog - sanitize all of the ugliness // in invoking GetOpenFileName() and GetSaveFileName() +// called from win_file_dialog, state_dialog //============================================================ static BOOL win_get_file_name_dialog(win_open_file_name *ofn) { BOOL result = FALSE; BOOL dialog_result; - OSVERSIONINFO vers; OPENFILENAME os_ofn; - DWORD os_ofn_size; LPTSTR t_filter = NULL; LPTSTR t_file = NULL; DWORD t_file_size = 0; @@ -282,25 +292,10 @@ static BOOL win_get_file_name_dialog(win_open_file_name *ofn) char *utf8_file; int i; - // determine the version of Windows - memset(&vers, 0, sizeof(vers)); - vers.dwOSVersionInfoSize = sizeof(vers); - GetVersionEx(&vers); - - // based on the version of Windows, determine the correct struct size - if (vers.dwMajorVersion >= 5) - os_ofn_size = sizeof(os_ofn); - else -#ifdef __GNUC__ - os_ofn_size = 76; // MinGW does not define OPENFILENAME_NT4 -#else - os_ofn_size = sizeof(OPENFILENAME_NT4); -#endif - // do we have to translate the filter? if (ofn->filter) { - buffer = tstring_from_utf8(ofn->filter); + buffer = ui_wstring_from_utf8(ofn->filter); if (!buffer) goto done; @@ -316,7 +311,7 @@ static BOOL win_get_file_name_dialog(win_open_file_name *ofn) // do we need to translate the file parameter? if (ofn->filename) { - buffer = tstring_from_utf8(ofn->filename); + buffer = ui_wstring_from_utf8(ofn->filename); if (!buffer) goto done; @@ -329,14 +324,14 @@ static BOOL win_get_file_name_dialog(win_open_file_name *ofn) // do we need to translate the initial directory? if (ofn->initial_directory) { - t_initial_directory = tstring_from_utf8(ofn->initial_directory); + t_initial_directory = ui_wstring_from_utf8(ofn->initial_directory); if (t_initial_directory == NULL) goto done; } // translate our custom structure to a native Win32 structure memset(&os_ofn, 0, sizeof(os_ofn)); - os_ofn.lStructSize = os_ofn_size; + os_ofn.lStructSize = sizeof(OPENFILENAME); os_ofn.hwndOwner = ofn->owner; os_ofn.hInstance = ofn->instance; os_ofn.lpstrFilter = t_filter; @@ -373,7 +368,7 @@ static BOOL win_get_file_name_dialog(win_open_file_name *ofn) // copy file back out into passed structure if (t_file) { - utf8_file = utf8_from_tstring(t_file); + utf8_file = ui_utf8_from_wstring(t_file); if (!utf8_file) goto done; @@ -394,6 +389,7 @@ done: //============================================================ // win_scroll_window +// called from dialog_proc //============================================================ static void win_scroll_window(HWND window, WPARAM wparam, int scroll_bar, int scroll_delta_line) @@ -454,6 +450,7 @@ static void win_scroll_window(HWND window, WPARAM wparam, int scroll_bar, int sc //============================================================ // win_append_menu_utf8 +// create a menu item //============================================================ static BOOL win_append_menu_utf8(HMENU menu, UINT flags, UINT_PTR id, const char *item) @@ -465,7 +462,7 @@ static BOOL win_append_menu_utf8(HMENU menu, UINT flags, UINT_PTR id, const char // only convert string when it's not a bitmap if (!(flags & MF_BITMAP) && item) { - t_str = tstring_from_utf8(item); + t_str = ui_wstring_from_utf8(item); t_item = t_str; } @@ -478,182 +475,10 @@ static BOOL win_append_menu_utf8(HMENU menu, UINT flags, UINT_PTR id, const char } -static int get_option_count(const option_guide *guide, const char *optspec) -{ - struct OptionRange ranges[128]; - int count = 0, i; - - option_resolution_listranges(optspec, guide->parameter, ranges, ARRAY_LENGTH(ranges)); - - for (i = 0; ranges[i].min >= 0; i++) - count += ranges[i].max - ranges[i].min + 1; - - return count; -} - - - -static BOOL prepare_combobox(HWND control, const option_guide *guide, const char *optspec) -{ - struct OptionRange ranges[128]; - int default_value, default_index, current_index, option_count; - int i, j, k; - BOOL has_option; - TCHAR buf1[256]; - TCHAR buf2[256]; - LPTSTR tempstr; - - SendMessage(control, CB_GETLBTEXT, SendMessage(control, CB_GETCURSEL, 0, 0), (LPARAM) buf1); - SendMessage(control, CB_RESETCONTENT, 0, 0); - has_option = guide && optspec; - - if (has_option) - { - if ((guide->option_type != OPTIONTYPE_INT) && (guide->option_type != OPTIONTYPE_ENUM_BEGIN)) - goto unexpected; - - option_resolution_listranges(optspec, guide->parameter, - ranges, ARRAY_LENGTH(ranges)); - option_resolution_getdefault(optspec, guide->parameter, &default_value); - - option_count = 0; - default_index = -1; - current_index = -1; - - for (i = 0; ranges[i].min >= 0; i++) - { - for (j = ranges[i].min; j <= ranges[i].max; j++) - { - if (guide->option_type == OPTIONTYPE_INT) - { - _sntprintf(buf2, ARRAY_LENGTH(buf2), TEXT("%d"), j); - SendMessage(control, CB_ADDSTRING, 0, (LPARAM) buf2); - } - else - if (guide->option_type == OPTIONTYPE_ENUM_BEGIN) - { - for (k = 1; guide[k].option_type == OPTIONTYPE_ENUM_VALUE; k++) - { - if (guide[k].parameter == j) - break; - } - if (guide[k].option_type != OPTIONTYPE_ENUM_VALUE) - goto unexpected; - - tempstr = tstring_from_utf8(guide[k].display_name); - SendMessage(control, CB_ADDSTRING, 0, (LPARAM) tempstr); - osd_free(tempstr); - } - else - goto unexpected; - - SendMessage(control, CB_SETITEMDATA, option_count, j); - - if (j == default_value) - default_index = option_count; - if (!_tcscmp(buf1, buf2)) - current_index = option_count; - option_count++; - } - } - - // if there is only one option, it is effectively disabled - if (option_count <= 1) - has_option = FALSE; - - if (current_index >= 0) - SendMessage(control, CB_SETCURSEL, current_index, 0); - else if (default_index >= 0) - SendMessage(control, CB_SETCURSEL, default_index, 0); - } - else - { - // this item is non applicable - SendMessage(control, CB_ADDSTRING, 0, (LPARAM) TEXT("N/A")); - SendMessage(control, CB_SETCURSEL, 0, 0); - } - EnableWindow(control, has_option); - return TRUE; - -unexpected: - printf("Unexpected result in prepare_combobox\n"); - assert(FALSE); - return FALSE; -} - - - -static BOOL prepare_editbox(HWND control, const option_guide *guide, const char *optspec) -{ - optreserr_t err = OPTIONRESOLUTION_ERROR_SUCCESS; - char buf[32]; - int val, has_option, option_count; - - has_option = guide && optspec; - buf[0] = '\0'; - - if (has_option) - { - switch(guide->option_type) - { - case OPTIONTYPE_STRING: - break; - - case OPTIONTYPE_INT: - err = option_resolution_getdefault(optspec, guide->parameter, &val); - if (err) - goto done; - _snprintf(buf, ARRAY_LENGTH(buf), "%d", val); - break; - - default: - err = OPTIONRESOLTUION_ERROR_INTERNAL; - goto done; - } - } - - if (has_option) - { - option_count = get_option_count(guide, optspec); - if (option_count <= 1) - has_option = FALSE; - } - -done: - if (err == OPTIONRESOLTUION_ERROR_INTERNAL) - printf("Unexpected result in prepare_editbox\n"); - assert(err != OPTIONRESOLTUION_ERROR_INTERNAL); - win_set_window_text_utf8(control, buf); - EnableWindow(control, !err && has_option); - return err == OPTIONRESOLUTION_ERROR_SUCCESS; -} - - - -static BOOL win_prepare_option_control(HWND control, const option_guide *guide, const char *optspec) -{ - BOOL rc = FALSE; - TCHAR class_name[32]; - - SetProp(control, guide_prop, (HANDLE) guide); - SetProp(control, spec_prop, (HANDLE) optspec); - GetClassName(control, class_name, sizeof(class_name) - / sizeof(class_name[0])); - - if (!_tcsicmp(class_name, TEXT("ComboBox"))) - rc = prepare_combobox(control, guide, optspec); - else - if (!_tcsicmp(class_name, TEXT("Edit"))) - rc = prepare_editbox(control, guide, optspec); - - return rc; -} - - - //============================================================ // call_windowproc +// called from adjuster_sb_wndproc, seqselect_wndproc //============================================================ static LRESULT call_windowproc(WNDPROC wndproc, HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) @@ -668,9 +493,10 @@ static LRESULT call_windowproc(WNDPROC wndproc, HWND hwnd, UINT msg, WPARAM wpar -//============================================================ +//========================================================================== // dialog_write -//============================================================ +// called from dialog_write_string, win_dialog_init, dialog_write_item +//========================================================================== static int dialog_write(struct _dialog_box *di, const void *ptr, size_t sz, int align) { @@ -719,6 +545,7 @@ static int dialog_write(struct _dialog_box *di, const void *ptr, size_t sz, int //============================================================ // dialog_write_string +// called from win_dialog_init, dialog_write_item //============================================================ static int dialog_write_string(dialog_box *di, const WCHAR *str) @@ -733,6 +560,7 @@ static int dialog_write_string(dialog_box *di, const WCHAR *str) //============================================================ // win_dialog_exit +// called from win_dialog_init, calc_dlgunits_multiple, change_device, and all customise_input functions //============================================================ static void win_dialog_exit(dialog_box *dialog) @@ -754,15 +582,15 @@ static void win_dialog_exit(dialog_box *dialog) if (dialog->handle) GlobalFree(dialog->handle); - //pool_free_lib(dialog->mempool); free(dialog); } -//============================================================ +//=========================================================================== // win_dialog_init -//============================================================ +// called from calc_dlgunits_multiple, and all customise_input functions +//=========================================================================== dialog_box *win_dialog_init(const char *title, const struct dialog_layout *layout) { @@ -783,7 +611,6 @@ dialog_box *win_dialog_init(const char *title, const struct dialog_layout *layou memset(di, 0, sizeof(*di)); di->layout = layout; - //di->mempool = pool_alloc_lib(NULL); memset(&dlg_template, 0, sizeof(dlg_template)); dlg_template.style = di->style = DIALOG_STYLE; @@ -797,7 +624,7 @@ dialog_box *win_dialog_init(const char *title, const struct dialog_layout *layou if (dialog_write(di, w, sizeof(w), 2)) goto error; - w_title = wstring_from_utf8(title); + w_title = ui_wstring_from_utf8(title); rc = dialog_write_string(di, w_title); osd_free(w_title); if (rc) @@ -824,6 +651,7 @@ error: //============================================================ // compute_dlgunits_multiple +// called from dialog_scrollbar_init //============================================================ static void calc_dlgunits_multiple(void) @@ -844,8 +672,7 @@ static void calc_dlgunits_multiple(void) if (!dialog) goto done; - if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | SS_LEFT, - 0, 0, offset_x, offset_y, wnd_title, DLGITEM_STATIC, &id)) + if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | SS_LEFT, 0, 0, offset_x, offset_y, wnd_title, DLGITEM_STATIC, &id)) goto done; dialog_prime(dialog); @@ -868,6 +695,7 @@ done: //============================================================ // dialog_trigger +// called from dialog_proc, file_dialog_hook //============================================================ static void dialog_trigger(HWND dlgwnd, WORD trigger_flags) @@ -909,6 +737,7 @@ static void dialog_trigger(HWND dlgwnd, WORD trigger_flags) //============================================================ // dialog_proc +// called from win_dialog_runmodal //============================================================ static INT_PTR CALLBACK dialog_proc(HWND dlgwnd, UINT msg, WPARAM wparam, LPARAM lparam) @@ -917,12 +746,6 @@ static INT_PTR CALLBACK dialog_proc(HWND dlgwnd, UINT msg, WPARAM wparam, LPARAM CHAR buf[32]; WORD command; - //if (LOG_WINMSGS) - //{ - // logerror("dialog_proc(): dlgwnd=%p msg=0x%08x wparam=0x%08x lparam=0x%08x\n", - // dlgwnd, (unsigned int) msg, (unsigned int) wparam, (unsigned int) lparam); - //} - switch(msg) { case WM_INITDIALOG: @@ -985,12 +808,12 @@ static INT_PTR CALLBACK dialog_proc(HWND dlgwnd, UINT msg, WPARAM wparam, LPARAM -//============================================================ +//========================================================================================================================================================================================= // dialog_write_item -//============================================================ +// called from calc_dlgunits_multiple, win_dialog_add_active_combobox, win_dialog_add_adjuster, dialog_add_single_seqselect, win_dialog_add_portselect, win_dialog_add_standard_buttons +//========================================================================================================================================================================================= -static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, - short width, short height, const char *str, const WCHAR *class_name, WORD *id) +static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, short width, short height, const char *str, const WCHAR *class_name, WORD *id) { DLGITEMTEMPLATE item_template; UINT class_name_length; @@ -1016,7 +839,7 @@ static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, if (dialog_write(di, class_name, class_name_length, 2)) return 1; - w_str = str ? wstring_from_utf8(str) : NULL; + w_str = str ? ui_wstring_from_utf8(str) : NULL; rc = dialog_write_string(di, w_str); if (w_str) osd_free(w_str); @@ -1036,12 +859,12 @@ static int dialog_write_item(dialog_box *di, DWORD style, short x, short y, -//============================================================ +//========================================================================================================================================================== // dialog_add_trigger -//============================================================ +// called from dialog_add_scrollbar, win_dialog_add_active_combobox, win_dialog_add_combobox_item, win_dialog_add_adjuster, dialog_add_single_seqselect +//========================================================================================================================================================== -static int dialog_add_trigger(struct _dialog_box *di, WORD dialog_item, - WORD trigger_flags, UINT message, trigger_function trigger_proc, +static int dialog_add_trigger(struct _dialog_box *di, WORD dialog_item, WORD trigger_flags, UINT message, trigger_function trigger_proc, WPARAM wparam, LPARAM lparam, void (*storeval)(void *param, int val), void *storeval_param) { if (!di) @@ -1052,8 +875,6 @@ static int dialog_add_trigger(struct _dialog_box *di, WORD dialog_item, assert(trigger_flags); dialog_info_trigger *trigger = new(dialog_info_trigger); - //dialog_info_trigger *trigger; - //trigger = global_alloc(dialog_info_trigger); trigger->next = NULL; trigger->trigger_flags = trigger_flags; @@ -1077,6 +898,7 @@ static int dialog_add_trigger(struct _dialog_box *di, WORD dialog_item, //============================================================ // dialog_scrollbar_init +// called from dialog_add_scrollbar //============================================================ static LRESULT dialog_scrollbar_init(dialog_box *dialog, HWND dlgwnd, UINT message, WPARAM wparam, LPARAM lparam) @@ -1100,6 +922,7 @@ static LRESULT dialog_scrollbar_init(dialog_box *dialog, HWND dlgwnd, UINT messa //============================================================ // dialog_add_scrollbar +// called from dialog_prime //============================================================ static int dialog_add_scrollbar(dialog_box *dialog) @@ -1113,9 +936,10 @@ static int dialog_add_scrollbar(dialog_box *dialog) -//============================================================ +//============================================================================== // dialog_prime -//============================================================ +// called from calc_dlgunits_multiple, win_dialog_runmodal, win_file_dialog +//============================================================================== static void dialog_prime(dialog_box *di) { @@ -1139,6 +963,7 @@ static void dialog_prime(dialog_box *di) //============================================================ // dialog_get_combo_value +// called from win_dialog_add_active_combobox //============================================================ static LRESULT dialog_get_combo_value(dialog_box *dialog, HWND dialog_item, UINT message, WPARAM wparam, LPARAM lparam) @@ -1154,6 +979,7 @@ static LRESULT dialog_get_combo_value(dialog_box *dialog, HWND dialog_item, UINT //============================================================ // dialog_get_adjuster_value +// called from win_dialog_add_adjuster //============================================================ static LRESULT dialog_get_adjuster_value(dialog_box *dialog, HWND dialog_item, UINT message, WPARAM wparam, LPARAM lparam) @@ -1165,9 +991,10 @@ static LRESULT dialog_get_adjuster_value(dialog_box *dialog, HWND dialog_item, U -//============================================================ +//==================================================================================================== // dialog_new_control -//============================================================ +// called from win_dialog_add_active_combobox, win_dialog_add_adjuster, win_dialog_add_portselect +//==================================================================================================== static void dialog_new_control(struct _dialog_box *di, short *x, short *y) { @@ -1177,9 +1004,10 @@ static void dialog_new_control(struct _dialog_box *di, short *x, short *y) -//============================================================ +//==================================================================================================== // dialog_finish_control -//============================================================ +// called from win_dialog_add_active_combobox, win_dialog_add_adjuster, win_dialog_add_portselect +//==================================================================================================== static void dialog_finish_control(struct _dialog_box *di, short x, short y) { @@ -1200,6 +1028,7 @@ static void dialog_finish_control(struct _dialog_box *di, short x, short y) //============================================================ // dialog_combo_changed +// called from win_dialog_add_active_combobox //============================================================ static LRESULT dialog_combo_changed(dialog_box *dialog, HWND dlgitem, UINT message, WPARAM wparam, LPARAM lparam) @@ -1213,6 +1042,7 @@ static LRESULT dialog_combo_changed(dialog_box *dialog, HWND dlgitem, UINT messa //============================================================ // win_dialog_wcsdup +// called from win_dialog_add_adjuster (via define) //============================================================ static WCHAR *win_dialog_wcsdup(dialog_box *dialog, const WCHAR *s) @@ -1227,6 +1057,7 @@ static WCHAR *win_dialog_wcsdup(dialog_box *dialog, const WCHAR *s) //============================================================ // win_dialog_add_active_combobox +// called from win_dialog_add_combobox //============================================================ static int win_dialog_add_active_combobox(dialog_box *dialog, const char *item_label, int default_value, @@ -1276,19 +1107,19 @@ done: //============================================================ // win_dialog_add_combobox +// called from customise_switches, customise_analogcontrols //============================================================ -static int win_dialog_add_combobox(dialog_box *dialog, const char *item_label, int default_value, - void (*storeval)(void *param, int val), void *storeval_param) +static int win_dialog_add_combobox(dialog_box *dialog, const char *item_label, int default_value, void (*storeval)(void *param, int val), void *storeval_param) { - return win_dialog_add_active_combobox(dialog, item_label, default_value, - storeval, storeval_param, NULL, NULL); + return win_dialog_add_active_combobox(dialog, item_label, default_value, storeval, storeval_param, NULL, NULL); } //============================================================ // win_dialog_add_combobox_item +// called from customise_switches, customise_analogcontrols //============================================================ static int win_dialog_add_combobox_item(dialog_box *dialog, const char *item_label, int item_data) @@ -1317,6 +1148,7 @@ static int win_dialog_add_combobox_item(dialog_box *dialog, const char *item_lab //============================================================ // adjuster_sb_wndproc +// called from adjuster_sb_setup //============================================================ struct adjuster_sb_stuff @@ -1374,19 +1206,10 @@ static INT_PTR CALLBACK adjuster_sb_wndproc(HWND sbwnd, UINT msg, WPARAM wparam, } -//============================================================ -// win_dialog_malloc -//============================================================ - -//static void *win_dialog_malloc(dialog_box *dialog, size_t size) -//{ -// return pool_malloc_lib(dialog->mempool, size); -//} - - //============================================================ // adjuster_sb_setup +// called from win_dialog_add_adjuster //============================================================ static LRESULT adjuster_sb_setup(dialog_box *dialog, HWND sbwnd, UINT message, WPARAM wparam, LPARAM lparam) @@ -1412,6 +1235,7 @@ static LRESULT adjuster_sb_setup(dialog_box *dialog, HWND sbwnd, UINT message, W //============================================================ // win_dialog_add_adjuster +// called from customise_analogcontrols //============================================================ static int win_dialog_add_adjuster(dialog_box *dialog, const char *item_label, int default_value, @@ -1424,8 +1248,7 @@ static int win_dialog_add_adjuster(dialog_box *dialog, const char *item_label, i dialog_new_control(dialog, &x, &y); - if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | SS_LEFT, - x, y, dialog->layout->label_width, DIM_ADJUSTER_HEIGHT, item_label, DLGITEM_STATIC, NULL)) + if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | SS_LEFT, x, y, dialog->layout->label_width, DIM_ADJUSTER_HEIGHT, item_label, DLGITEM_STATIC, NULL)) goto error; x += dialog->layout->label_width + DIM_HORIZONTAL_SPACING; @@ -1436,28 +1259,23 @@ static int win_dialog_add_adjuster(dialog_box *dialog, const char *item_label, i goto error; x += dialog->layout->combo_width - DIM_ADJUSTER_SCR_WIDTH; - _sntprintf(buf, ARRAY_LENGTH(buf), - is_percentage ? TEXT("%d%%") : TEXT("%d"), - default_value); + _sntprintf(buf, ARRAY_LENGTH(buf), is_percentage ? TEXT("%d%%") : TEXT("%d"), default_value); s = win_dialog_tcsdup(dialog, buf); osd_free(buf); if (!s) return 1; - if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, WM_SETTEXT, NULL, - 0, (LPARAM) s, NULL, NULL)) + if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, WM_SETTEXT, NULL, 0, (LPARAM) s, NULL, NULL)) goto error; // add the trigger invoked when the apply button is pressed if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_APPLY, 0, dialog_get_adjuster_value, 0, 0, storeval, storeval_param)) goto error; - if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | WS_TABSTOP | SBS_VERT, - x, y, DIM_ADJUSTER_SCR_WIDTH, DIM_ADJUSTER_HEIGHT, NULL, DLGITEM_SCROLLBAR, NULL)) + if (dialog_write_item(dialog, WS_CHILD | WS_VISIBLE | WS_TABSTOP | SBS_VERT, x, y, DIM_ADJUSTER_SCR_WIDTH, DIM_ADJUSTER_HEIGHT, NULL, DLGITEM_SCROLLBAR, NULL)) goto error; x += DIM_ADJUSTER_SCR_WIDTH + DIM_HORIZONTAL_SPACING; - if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, 0, adjuster_sb_setup, - 0, MAKELONG(min_value, max_value), NULL, NULL)) + if (dialog_add_trigger(dialog, dialog->item_count, TRIGGER_INITDIALOG, 0, adjuster_sb_setup, 0, MAKELONG(min_value, max_value), NULL, NULL)) return 1; y += DIM_COMBO_ROW_HEIGHT + DIM_VERTICAL_SPACING * 2; @@ -1485,9 +1303,10 @@ static seqselect_info *get_seqselect_info(HWND editwnd) -//============================================================ +//============================================================================= // seqselect_settext -//============================================================ +// called from seqselect_start_read_from_main_thread, seqselect_setup +//============================================================================= //#pragma GCC diagnostic push #ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wunused-value" @@ -1502,7 +1321,7 @@ static void seqselect_settext(HWND editwnd) // the basics stuff = get_seqselect_info(editwnd); if (stuff == NULL) - return; // this should not happen - need to fix this + return; // this should not happen - need to fix this // retrieve the seq name seqstring = Machine->input().seq_name(*stuff->code); @@ -1529,6 +1348,7 @@ static void seqselect_settext(HWND editwnd) //============================================================ // seqselect_start_read_from_main_thread +// called from seqselect_wndproc //============================================================ static void seqselect_start_read_from_main_thread(void *param) @@ -1580,6 +1400,7 @@ static void seqselect_start_read_from_main_thread(void *param) //============================================================ // seqselect_stop_read_from_main_thread +// called from seqselect_wndproc //============================================================ static void seqselect_stop_read_from_main_thread(void *param) @@ -1600,6 +1421,7 @@ static void seqselect_stop_read_from_main_thread(void *param) //============================================================ // seqselect_wndproc +// called from seqselect_setup //============================================================ static INT_PTR CALLBACK seqselect_wndproc(HWND editwnd, UINT msg, WPARAM wparam, LPARAM lparam) @@ -1657,6 +1479,7 @@ static INT_PTR CALLBACK seqselect_wndproc(HWND editwnd, UINT msg, WPARAM wparam, //============================================================ // seqselect_setup +// called from dialog_add_single_seqselect //============================================================ static LRESULT seqselect_setup(dialog_box *dialog, HWND editwnd, UINT message, WPARAM wparam, LPARAM lparam) @@ -1675,6 +1498,7 @@ static LRESULT seqselect_setup(dialog_box *dialog, HWND editwnd, UINT message, W //============================================================ // seqselect_apply +// called from dialog_add_single_seqselect //============================================================ static LRESULT seqselect_apply(dialog_box *dialog, HWND editwnd, UINT message, WPARAM wparam, LPARAM lparam) @@ -1690,14 +1514,13 @@ static LRESULT seqselect_apply(dialog_box *dialog, HWND editwnd, UINT message, W //============================================================ // dialog_add_single_seqselect +// called from win_dialog_add_portselect //============================================================ -static int dialog_add_single_seqselect(struct _dialog_box *di, short x, short y, - short cx, short cy, ioport_field *field, int is_analog, int seqtype) +static int dialog_add_single_seqselect(struct _dialog_box *di, short x, short y, short cx, short cy, ioport_field *field, int is_analog, int seqtype) { // write the dialog item - if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_ENDELLIPSIS | ES_CENTER | SS_SUNKEN, - x, y, cx, cy, NULL, DLGITEM_EDIT, NULL)) + if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_ENDELLIPSIS | ES_CENTER | SS_SUNKEN, x, y, cx, cy, NULL, DLGITEM_EDIT, NULL)) return 1; // allocate a seqselect_info @@ -1728,6 +1551,7 @@ static int dialog_add_single_seqselect(struct _dialog_box *di, short x, short y, //============================================================ // win_dialog_add_seqselect +// called from customise_input, customise_miscinput //============================================================ static int win_dialog_add_portselect(dialog_box *dialog, ioport_field *field) @@ -1780,8 +1604,7 @@ static int win_dialog_add_portselect(dialog_box *dialog, ioport_field *field) // create our local name for this entry; also convert from // MAME strings to wide strings len = strlen(port_name); - s = (char *) alloca((len + (port_suffix[seq] ? strlen(port_suffix[seq]) - : 0) + 1) * sizeof(*s)); + s = (char *) alloca((len + (port_suffix[seq] ? strlen(port_suffix[seq]) : 0) + 1) * sizeof(*s)); strcpy(s, port_name); if (port_suffix[seq]) @@ -1796,8 +1619,7 @@ static int win_dialog_add_portselect(dialog_box *dialog, ioport_field *field) return 1; x += dialog->layout->label_width + DIM_HORIZONTAL_SPACING; - if (dialog_add_single_seqselect(di, x, y, DIM_EDIT_WIDTH, DIM_NORMAL_ROW_HEIGHT, - field, is_analog[seq], seq_types[seq])) + if (dialog_add_single_seqselect(di, x, y, DIM_EDIT_WIDTH, DIM_NORMAL_ROW_HEIGHT, field, is_analog[seq], seq_types[seq])) return 1; y += DIM_VERTICAL_SPACING + DIM_NORMAL_ROW_HEIGHT; x += DIM_EDIT_WIDTH + DIM_HORIZONTAL_SPACING; @@ -1810,24 +1632,6 @@ static int win_dialog_add_portselect(dialog_box *dialog, ioport_field *field) //============================================================ -// win_dialog_add_notification -//============================================================ - -static int win_dialog_add_notification(dialog_box *dialog, UINT notification, dialog_notification callback, void *param) -{ - // hack - if (!dialog->notify_callback) - printf("Unexpected result in win_dialog_add_notification\n"); - assert(!dialog->notify_callback); - dialog->notify_code = notification; - dialog->notify_callback = callback; - dialog->notify_param = param; - return 0; -} - - - -//============================================================ // win_dialog_add_standard_buttons //============================================================ @@ -1848,16 +1652,14 @@ static int win_dialog_add_standard_buttons(dialog_box *dialog) y = di->size_y + DIM_VERTICAL_SPACING; // display cancel button - if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_LEFT, - x, y, DIM_BUTTON_WIDTH, DIM_BUTTON_ROW_HEIGHT, DLGTEXT_CANCEL, DLGITEM_BUTTON, NULL)) + if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_LEFT, x, y, DIM_BUTTON_WIDTH, DIM_BUTTON_ROW_HEIGHT, DLGTEXT_CANCEL, DLGITEM_BUTTON, NULL)) return 1; // work out where OK button goes x -= DIM_HORIZONTAL_SPACING + DIM_BUTTON_WIDTH; // display OK button - if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_LEFT, - x, y, DIM_BUTTON_WIDTH, DIM_BUTTON_ROW_HEIGHT, DLGTEXT_OK, DLGITEM_BUTTON, NULL)) + if (dialog_write_item(di, WS_CHILD | WS_VISIBLE | SS_LEFT, x, y, DIM_BUTTON_WIDTH, DIM_BUTTON_ROW_HEIGHT, DLGTEXT_OK, DLGITEM_BUTTON, NULL)) return 1; di->size_y += DIM_BUTTON_ROW_HEIGHT + DIM_VERTICAL_SPACING * 2; @@ -1886,13 +1688,13 @@ static void before_display_dialog(running_machine &machine) static void after_display_dialog(running_machine &machine) { winwindow_ui_pause(machine, FALSE); - //Machine = NULL; } //============================================================ // win_dialog_runmodal +// called from the various customise_inputs functions //============================================================ static void win_dialog_runmodal(running_machine &machine, HWND wnd, dialog_box *dialog) @@ -1913,68 +1715,11 @@ static void win_dialog_runmodal(running_machine &machine, HWND wnd, dialog_box * //============================================================ -// file_dialog_hook -//============================================================ - -static UINT_PTR CALLBACK file_dialog_hook(HWND dlgwnd, UINT message, WPARAM wparam, LPARAM lparam) -{ - OPENFILENAME *ofn; - dialog_box *dialog; - UINT_PTR rc = 0; - LPNMHDR notify; - LONG_PTR l; - - switch(message) - { - case WM_INITDIALOG: - ofn = (OPENFILENAME *) lparam; - dialog = (dialog_box *) ofn->lCustData; - - SetWindowLongPtr(dlgwnd, GWLP_USERDATA, (LONG_PTR) dialog); - dialog_trigger(dlgwnd, TRIGGER_INITDIALOG); - rc = 1; - - // hack - if (dialog->notify_callback && (dialog->notify_code == CDN_TYPECHANGE)) - dialog->notify_callback(dialog, dlgwnd, NULL, dialog->notify_param); - break; - - case WM_NOTIFY: - notify = (LPNMHDR) lparam; - switch(notify->code) - { - case CDN_FILEOK: - dialog_trigger(dlgwnd, TRIGGER_APPLY); - break; - } - - // hack - l = GetWindowLongPtr(dlgwnd, GWLP_USERDATA); - dialog = (dialog_box *) l; - if (dialog->notify_callback && (notify->code == dialog->notify_code)) - dialog->notify_callback(dialog, dlgwnd, notify, dialog->notify_param); - break; - - case WM_COMMAND: - switch(HIWORD(wparam)) - { - case CBN_SELCHANGE: - dialog_trigger(dlgwnd, TRIGGER_CHANGED); - break; - } - break; - } - return rc; -} - - - -//============================================================ // win_file_dialog +// called from change_device //============================================================ -static BOOL win_file_dialog(running_machine &machine, - HWND parent, win_file_dialog_type dlgtype, dialog_box *custom_dialog, const char *filter, +static BOOL win_file_dialog(running_machine &machine, HWND parent, win_file_dialog_type dlgtype, const char *filter, const char *initial_dir, char *filename, size_t filename_len) { win_open_file_name ofn; @@ -1991,17 +1736,6 @@ static BOOL win_file_dialog(running_machine &machine, if (dlgtype == WIN_FILE_DIALOG_OPEN) ofn.flags |= OFN_FILEMUSTEXIST; - if (custom_dialog) - { - custom_dialog->style = WS_CHILD | WS_CLIPSIBLINGS | DS_3DLOOK | DS_CONTROL | DS_SETFONT; - dialog_prime(custom_dialog); - - ofn.flags |= OFN_ENABLETEMPLATEHANDLE | OFN_ENABLEHOOK; - ofn.instance = (HINSTANCE)custom_dialog->handle; - ofn.custom_data = (LPARAM) custom_dialog; - ofn.hook = file_dialog_hook; - } - snprintf(ofn.filename, ARRAY_LENGTH(ofn.filename), "%s", filename); before_display_dialog(machine); @@ -2014,45 +1748,6 @@ static BOOL win_file_dialog(running_machine &machine, - -//============================================================ -// input_item_from_serial_number -//============================================================ -#if 0 -static int input_item_from_serial_number(running_machine &machine, int serial_number, - ioport_port **port, ioport_field **field, ioport_setting **setting) -{ - ioport_port *this_port = NULL; - ioport_field *this_field = NULL; - ioport_setting *this_setting = NULL; - - int i = 0; - for (this_port = machine.ioport().ports().first(); (i != serial_number) && (this_port); this_port = this_port->next()) - { - i++; - for (this_field = this_port->fields().first(); (i != serial_number) && (this_field); this_field = this_field->next()) - { - i++; - for (this_setting = this_field->settings().first(); (i != serial_number) && (this_setting); this_setting = this_setting->next()) - i++; - } - } - - if (this_field) - this_port = &this_field->port(); - - if (port) - *port = this_port; - if (field) - *field = this_field; - if (setting) - *setting = this_setting; - - return (i == serial_number); -} -#endif - - //============================================================ // customise_input //============================================================ @@ -2060,14 +1755,7 @@ static int input_item_from_serial_number(running_machine &machine, int serial_nu static void customise_input(running_machine &machine, HWND wnd, const char *title, int player, int inputclass) { dialog_box *dlg; - int this_inputclass = 0; - int this_player = 0, portslot_count = 0, i = 0; - const int max_portslots = 256; - - struct - { - ioport_field *field; - } portslots[max_portslots]; + int this_inputclass, this_player; /* create the dialog */ dlg = win_dialog_init(title, NULL); @@ -2089,35 +1777,12 @@ static void customise_input(running_machine &machine, HWND wnd, const char *titl && (this_player == player) && (this_inputclass == inputclass)) { - /* store this InputPort/RECT combo in our list. we do not - * necessarily want to add it yet because we the INI might - * want to reorder the tab order */ - if (portslot_count < max_portslots) - { - portslots[portslot_count].field = &field; - portslot_count++; - } + if (win_dialog_add_portselect(dlg, &field)) + goto done; } } } - /* finally add the portselects to the dialog */ - if (portslot_count > max_portslots) - portslot_count = max_portslots; - - /* No keyboard? Just exit */ - if (!portslot_count) - goto done; - - for (i = 0; i < portslot_count; i++) - { - if (portslots[i].field) - { - if (win_dialog_add_portselect(dlg, portslots[i].field)) - goto done; - } - } - /* ...and now add OK/Cancel */ if (win_dialog_add_standard_buttons(dlg)) goto done; @@ -2154,13 +1819,11 @@ static void customise_keyboard(running_machine &machine, HWND wnd) -//============================================================ +//=============================================================================================== // check_for_miscinput -// (to decide if "Miscellaneous Inputs" menu item should -// show or not). -// We do this here because the core check has been broken -// for years (always returns false). -//============================================================ +// (to decide if "Miscellaneous Inputs" menu item should show or not). +// We do this here because the core check has been broken for years (always returns false). +//=============================================================================================== static bool check_for_miscinput(running_machine &machine) { @@ -2196,16 +1859,9 @@ static bool check_for_miscinput(running_machine &machine) static void customise_miscinput(running_machine &machine, HWND wnd) { dialog_box *dlg; - int this_inputclass = 0; - int portslot_count = 0, i = 0; - const int max_portslots = 256; + int this_inputclass; const char *title = "Miscellaneous Inputs"; - struct - { - ioport_field *field; - } portslots[max_portslots]; - /* create the dialog */ dlg = win_dialog_init(title, NULL); if (!dlg) @@ -2225,31 +1881,12 @@ static void customise_miscinput(running_machine &machine, HWND wnd) && (this_inputclass != INPUT_CLASS_CONTROLLER) && (this_inputclass != INPUT_CLASS_KEYBOARD)) { - /* store this InputPort/RECT combo in our list. we do not - * necessarily want to add it yet because we the INI might - * want to reorder the tab order */ - if (portslot_count < max_portslots) - { - portslots[portslot_count].field = &field; - portslot_count++; - } + if (win_dialog_add_portselect(dlg, &field)) + goto done; } } } - /* finally add the portselects to the dialog */ - if (portslot_count > max_portslots) - portslot_count = max_portslots; - - for (i = 0; i < portslot_count; i++) - { - if (portslots[i].field) - { - if (win_dialog_add_portselect(dlg, portslots[i].field)) - goto done; - } - } - /* ...and now add OK/Cancel */ if (win_dialog_add_standard_buttons(dlg)) goto done; @@ -2266,6 +1903,7 @@ done: //============================================================ // storeval_inputport +// called from customise_switches //============================================================ static void storeval_inputport(void *param, int val) @@ -2379,10 +2017,18 @@ static void store_analogitem(void *param, int val, int selected_item) switch(selected_item) { - case ANALOG_ITEM_KEYSPEED: settings.delta = val; break; - case ANALOG_ITEM_CENTERSPEED: settings.centerdelta = val; break; - case ANALOG_ITEM_REVERSE: settings.reverse = val; break; - case ANALOG_ITEM_SENSITIVITY: settings.sensitivity = val; break; + case ANALOG_ITEM_KEYSPEED: + settings.delta = val; + break; + case ANALOG_ITEM_CENTERSPEED: + settings.centerdelta = val; + break; + case ANALOG_ITEM_REVERSE: + settings.reverse = val; + break; + case ANALOG_ITEM_SENSITIVITY: + settings.sensitivity = val; + break; } field->set_user_settings(settings); } @@ -2447,18 +2093,15 @@ static void customise_analogcontrols(running_machine &machine, HWND wnd) name = field.name(); afield = &field; - _snprintf(buf, ARRAY_LENGTH(buf), - "%s %s", name, "Digital Speed"); + _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Digital Speed"); if (win_dialog_add_adjuster(dlg, buf, settings.delta, 1, 255, FALSE, store_delta, (void *) afield)) goto done; - _snprintf(buf, ARRAY_LENGTH(buf), - "%s %s", name, "Autocenter Speed"); - if (win_dialog_add_adjuster(dlg, buf, settings.centerdelta, 1, 255, FALSE, store_centerdelta, (void *) afield)) + _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Autocenter Speed"); + if (win_dialog_add_adjuster(dlg, buf, settings.centerdelta, 0, 255, FALSE, store_centerdelta, (void *) afield)) goto done; - _snprintf(buf, ARRAY_LENGTH(buf), - "%s %s", name, "Reverse"); + _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Reverse"); if (win_dialog_add_combobox(dlg, buf, settings.reverse ? 1 : 0, store_reverse, (void *) afield)) goto done; if (win_dialog_add_combobox_item(dlg, "Off", 0)) @@ -2466,8 +2109,7 @@ static void customise_analogcontrols(running_machine &machine, HWND wnd) if (win_dialog_add_combobox_item(dlg, "On", 1)) goto done; - _snprintf(buf, ARRAY_LENGTH(buf), - "%s %s", name, "Sensitivity"); + _snprintf(buf, ARRAY_LENGTH(buf), "%s %s", name, "Sensitivity"); if (win_dialog_add_adjuster(dlg, buf, settings.sensitivity, 1, 255, TRUE, store_sensitivity, (void *) afield)) goto done; } @@ -2487,6 +2129,7 @@ done: //============================================================ // win_dirname +// called from state_dialog //============================================================ static char *win_dirname(const char *filename) @@ -2523,11 +2166,10 @@ static char *win_dirname(const char *filename) //============================================================ // state_dialog +// called when loading or saving a state //============================================================ -static void state_dialog(HWND wnd, win_file_dialog_type dlgtype, - DWORD fileproc_flags, bool is_load, - running_machine &machine) +static void state_dialog(HWND wnd, win_file_dialog_type dlgtype, DWORD fileproc_flags, bool is_load, running_machine &machine) { win_open_file_name ofn; char *dir = NULL; @@ -2588,226 +2230,31 @@ static void state_save(running_machine &machine) //============================================================ -// format_combo_changed -//============================================================ - -static void format_combo_changed(dialog_box *dialog, HWND dlgwnd, NMHDR *notification, void *changed_param) -{ - HWND wnd; - int format_combo_val = 0; - device_image_interface *dev; - const option_guide *guide; - const char *optspec; - struct file_dialog_params *params; - int has_option = 0; - TCHAR t_buf1[128]; - char *utf8_buf1; - - params = (struct file_dialog_params *) changed_param; - - // locate the format control - format_combo_val = notification ? (((OFNOTIFY *) notification)->lpOFN->nFilterIndex - 1) : 0; - if (format_combo_val < 0) - format_combo_val = 0; - *(params->create_format) = format_combo_val; - - // compute our parameters - dev = params->dev; - guide = dev->device_get_creation_option_guide(); - optspec =dev->device_get_indexed_creatable_format(format_combo_val)->optspec(); - - // set the default extension - CommDlg_OpenSave_SetDefExt(GetParent(dlgwnd), - (const char*)dev->device_get_indexed_creatable_format(format_combo_val)->extensions()); - - // enumerate through all of the child windows - wnd = NULL; - while((wnd = FindWindowEx(dlgwnd, wnd, NULL, NULL))) - { - // get label text, removing trailing NULL - GetWindowText(wnd, t_buf1, ARRAY_LENGTH(t_buf1)); - utf8_buf1 = utf8_from_tstring(t_buf1); - assert(utf8_buf1[strlen(utf8_buf1)-1] == ':'); - utf8_buf1[strlen(utf8_buf1)-1] = '\0'; - - // find guide entry - while(guide->option_type && strcmp(utf8_buf1, guide->display_name)) - guide++; - - wnd = GetNextWindow(wnd, GW_HWNDNEXT); - if (wnd && guide) - { - // we now have the handle to the window, and the guide entry - has_option = option_resolution_contains(optspec, guide->parameter); - - SendMessage(wnd, CB_GETLBTEXT, SendMessage(wnd, CB_GETCURSEL, 0, 0), (LPARAM) t_buf1); - SendMessage(wnd, CB_RESETCONTENT, 0, 0); - - win_prepare_option_control(wnd, - has_option ? guide : NULL, - has_option ? optspec : NULL); - } - osd_free(utf8_buf1); - } -} - - - -//============================================================ -// storeval_option_resolution -//============================================================ - -struct storeval_optres_params -{ - struct file_dialog_params *fdparams; - const option_guide *guide_entry; -}; - -static void storeval_option_resolution(void *storeval_param, int val) -{ - option_resolution *resolution; - struct storeval_optres_params *params; - device_image_interface *dev; - char buf[16]; - - params = (struct storeval_optres_params *) storeval_param; - dev = params->fdparams->dev; - - // create the resolution, if necessary - resolution = *(params->fdparams->create_args); - if (!resolution) - { - const option_guide *optguide = dev->device_get_creation_option_guide(); - const image_device_format *format = dev->device_get_indexed_creatable_format(*(params->fdparams->create_format)); - - resolution = option_resolution_create(optguide, format->optspec()); - if (!resolution) - return; - *(params->fdparams->create_args) = resolution; - } - - snprintf(buf, ARRAY_LENGTH(buf), "%d", val); - option_resolution_add_param(resolution, params->guide_entry->identifier, buf); -} - - - -//============================================================ -// build_option_dialog -//============================================================ - -static dialog_box *build_option_dialog(device_image_interface *dev, char *filter, size_t filter_len, int *create_format, option_resolution **create_args) -{ - dialog_box *dialog; - const option_guide *guide_entry; - int found = 0, pos = 0; - char buf[256]; - struct file_dialog_params *params; - struct storeval_optres_params *storeval_params; - static const struct dialog_layout filedialog_layout = { 44, 220 }; - - // make the filter - pos = 0; - for (auto &format : dev->formatlist()) - pos += add_filter_entry(filter + pos, filter_len - pos, format->description(), format->extensions()); - - // create the dialog - dialog = win_dialog_init(NULL, &filedialog_layout); - if (!dialog) - goto error; - - // allocate the params - params = global_alloc(file_dialog_params); - if (!params) - goto error; - params->dev = dev; - params->create_format = create_format; - params->create_args = create_args; - - // set the notify handler; so that we get notified when the format dialog changed - if (win_dialog_add_notification(dialog, CDN_TYPECHANGE, format_combo_changed, params)) - goto error; - - // loop through the entries - for (guide_entry = dev->device_get_creation_option_guide(); guide_entry->option_type != OPTIONTYPE_END; guide_entry++) - { - // make sure that this entry is present on at least one option specification - found = FALSE; - for (auto &format : dev->formatlist()) - { - if (option_resolution_contains(format->optspec(), guide_entry->parameter)) - { - found = TRUE; - break; - } - } - - if (found) - { - storeval_params = global_alloc(storeval_optres_params); - if (!storeval_params) - goto error; - storeval_params->fdparams = params; - storeval_params->guide_entry = guide_entry; - - // this option is present on at least one of the specs - switch(guide_entry->option_type) - { - case OPTIONTYPE_INT: - snprintf(buf, ARRAY_LENGTH(buf), "%s:", guide_entry->display_name); - if (win_dialog_add_combobox(dialog, buf, 0, storeval_option_resolution, storeval_params)) - goto error; - break; - - default: - break; - } - } - } - - return dialog; - -error: - if (dialog) - win_dialog_exit(dialog); - return NULL; -} - - - -//============================================================ // copy_extension_list //============================================================ -static int copy_extension_list(char *dest, size_t dest_len, const char *extensions) +static void copy_extension_list(std::string &dest, const char *extensions) { - const char *s; - int pos = 0; - // our extension lists are comma delimited; Win32 expects to see lists // delimited by semicolons - s = extensions; - while(*s) + char const *s = extensions; + while (*s) { // append a semicolon if not at the beginning if (s != extensions) - pos += snprintf(&dest[pos], dest_len - pos, ";"); + dest.push_back(';'); // append ".*" - pos += snprintf(&dest[pos], dest_len - pos, "*."); + dest.append("*."); // append the file extension - while(*s && (*s != ',')) - { - pos += snprintf(&dest[pos], dest_len - pos, "%c", *s); - s++; - } + while (*s && (*s != ',')) + dest.push_back(*s++); // if we found a comma, advance while(*s == ',') s++; } - return pos; } @@ -2816,26 +2263,23 @@ static int copy_extension_list(char *dest, size_t dest_len, const char *extensio // add_filter_entry //============================================================ -static int add_filter_entry(char *dest, size_t dest_len, const char *description, const char *extensions) +static void add_filter_entry(std::string &dest, const char *description, const char *extensions) { - int pos = 0; - // add the description - pos += snprintf(&dest[pos], dest_len - pos, "%s (", description); + dest.append(description); + dest.append(" ("); // add the extensions to the description - pos += copy_extension_list(&dest[pos], dest_len - pos, extensions); + copy_extension_list(dest, extensions); // add the trailing rparen and '|' character - pos += snprintf(&dest[pos], dest_len - pos, ")|"); + dest.append(")|"); // now add the extension list itself - pos += copy_extension_list(&dest[pos], dest_len - pos, extensions); + copy_extension_list(dest, extensions); // append a '|' - pos += snprintf(&dest[pos], dest_len - pos, "|"); - - return pos; + dest.append("|"); } @@ -2844,55 +2288,36 @@ 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, bool is_save, char *filter, size_t filter_len) +static void build_generic_filter(device_image_interface *img, bool is_save, std::string &filter) { - char *s; + std::string file_extension = img->file_extensions(); - const char *file_extension; - - /* copy the string */ - file_extension = dev->file_extensions(); - 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); if (!is_save) - strcat(result, s2); - - // start writing the filter - s = filter; + file_extension.append(",zip,7z"); - // common image types - s += add_filter_entry(filter, filter_len, "Common image types", result); - //free(result); + add_filter_entry(filter, "Common image types", file_extension.c_str()); - // all files - s += sprintf(s, "All files (*.*)|*.*|"); + filter.append("All files (*.*)|*.*|"); - // compressed if (!is_save) - s += sprintf(s, "Compressed Images (*.zip;*.7z)|*.zip;*.7z|"); - - *(s++) = '\0'; + filter.append("Compressed Images (*.zip;*.7z)|*.zip;*.7z|"); } //============================================================ // change_device +// open a dialog box to open or create a software file //============================================================ static void change_device(HWND wnd, device_image_interface *image, bool is_save) { - dialog_box *dialog = NULL; - char filter[2048]; + std::string filter; char filename[MAX_PATH]; const char *initial_dir; BOOL result = 0; int create_format = 0; - option_resolution *create_args = NULL; - - // sanity check - assert(image); + util::option_resolution *create_args = NULL; // get the file if (image->exists()) @@ -2925,22 +2350,12 @@ static void change_device(HWND wnd, device_image_interface *image, bool is_save) // NOTE: the working directory can come from the .cfg file. If it's wrong delete the cfg. //printf("%s = %s = %s = %s\n",dst,working,initial_dir,software_dir); - // add custom dialog elements, if appropriate - if (is_save - && (image->device_get_creation_option_guide()) - && (image->formatlist().front())) - { - dialog = build_option_dialog(image, filter, ARRAY_LENGTH(filter), &create_format, &create_args); - if (!dialog) - goto done; - } - else - // build a normal filter - build_generic_filter(image, is_save, filter, ARRAY_LENGTH(filter)); + + // build a normal filter + build_generic_filter(image, is_save, filter); // display the dialog - result = win_file_dialog(image->device().machine(), wnd, is_save ? WIN_FILE_DIALOG_SAVE : WIN_FILE_DIALOG_OPEN, - dialog, filter, initial_dir, filename, ARRAY_LENGTH(filename)); + result = win_file_dialog(image->device().machine(), wnd, is_save ? WIN_FILE_DIALOG_SAVE : WIN_FILE_DIALOG_OPEN, filter.c_str(), initial_dir, filename, ARRAY_LENGTH(filename)); if (result) { // mount the image @@ -2952,12 +2367,6 @@ static void change_device(HWND wnd, device_image_interface *image, bool is_save) // no need to check the returnvalue and show a messagebox anymore. // a UI message will now be generated by the image code } - -done: - if (dialog) - win_dialog_exit(dialog); - if (create_args) - option_resolution_close(create_args); } @@ -3021,7 +2430,7 @@ static HMENU find_sub_menu(HMENU menu, const char *menutext, bool create_sub_men while(*menutext) { - TCHAR *t_menutext = tstring_from_utf8(menutext); + TCHAR *t_menutext = ui_wstring_from_utf8(menutext); int i = -1; do @@ -3199,10 +2608,10 @@ static void prepare_menus(HWND wnd) speed = window->machine().video().throttled() ? window->machine().video().speed_factor() : 0; - has_config = window->machine().ioport().type_class_present(INPUT_CLASS_CONFIG); - has_dipswitch = window->machine().ioport().type_class_present(INPUT_CLASS_DIPSWITCH); - has_keyboard = window->machine().ioport().type_class_present(INPUT_CLASS_KEYBOARD); - has_misc = check_for_miscinput(window->machine()); + has_config = window->machine().ioport().type_class_present(INPUT_CLASS_CONFIG); + has_dipswitch = window->machine().ioport().type_class_present(INPUT_CLASS_DIPSWITCH); + has_keyboard = window->machine().ioport().type_class_present(INPUT_CLASS_KEYBOARD); + has_misc = check_for_miscinput(window->machine()); has_analog = 0; for (auto &port : window->machine().ioport().ports()) @@ -3274,9 +2683,8 @@ static void prepare_menus(HWND wnd) view_index = window->m_target->view(); while((view_name = window->m_target->view_name(i))) { - TCHAR *t_view_name = tstring_from_utf8(view_name); - InsertMenu(video_menu, i, MF_BYPOSITION | (i == view_index ? MF_CHECKED : 0), - ID_VIDEO_VIEW_0 + i, t_view_name); + TCHAR *t_view_name = ui_wstring_from_utf8(view_name); + InsertMenu(video_menu, i, MF_BYPOSITION | (i == view_index ? MF_CHECKED : 0), ID_VIDEO_VIEW_0 + i, t_view_name); osd_free(t_view_name); i++; } @@ -3312,8 +2720,8 @@ static void prepare_menus(HWND wnd) cassette_state state; state = (cassette_state)(img.exists() ? (dynamic_cast<cassette_image_device*>(&img.device())->get_state() & CASSETTE_MASK_UISTATE) : CASSETTE_STOPPED); win_append_menu_utf8(sub_menu, MF_SEPARATOR, 0, NULL); - win_append_menu_utf8(sub_menu, flags_for_exists | ((state == CASSETTE_STOPPED) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_STOPPAUSE, "Pause/Stop"); - win_append_menu_utf8(sub_menu, flags_for_exists | ((state == CASSETTE_PLAY) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_PLAY, "Play"); + win_append_menu_utf8(sub_menu, flags_for_exists | ((state == CASSETTE_STOPPED) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_STOPPAUSE, "Pause/Stop"); + win_append_menu_utf8(sub_menu, flags_for_exists | ((state == CASSETTE_PLAY) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_PLAY, "Play"); win_append_menu_utf8(sub_menu, flags_for_writing | ((state == CASSETTE_RECORD) ? MF_CHECKED : 0), new_item + DEVOPTION_CASSETTE_RECORD, "Record"); win_append_menu_utf8(sub_menu, flags_for_exists, new_item + DEVOPTION_CASSETTE_REWIND, "Rewind"); win_append_menu_utf8(sub_menu, flags_for_exists, new_item + DEVOPTION_CASSETTE_FASTFORWARD, "Fast Forward"); @@ -3395,10 +2803,7 @@ static void win_toggle_menubar(void) { RECT window_rect; GetWindowRect(hwnd, &window_rect); - SetWindowPos(hwnd, HWND_TOP, 0, 0, - window_rect.right - window_rect.left + width_diff, - window_rect.bottom - window_rect.top + height_diff, - SWP_NOMOVE | SWP_NOZORDER); + SetWindowPos(hwnd, HWND_TOP, 0, 0, window_rect.right - window_rect.left + width_diff, window_rect.bottom - window_rect.top + height_diff, SWP_NOMOVE | SWP_NOZORDER); } RedrawWindow(hwnd, NULL, NULL, 0); @@ -3409,6 +2814,7 @@ static void win_toggle_menubar(void) //============================================================ // device_command +// This handles all options under the "Media" dropdown //============================================================ static void device_command(HWND wnd, device_image_interface *img, int devoption) @@ -3489,7 +2895,7 @@ static void help_display(HWND wnd, const char *chapter) if (!is_windowed()) winwindow_toggle_full_screen(); - TCHAR *t_chapter = tstring_from_utf8(chapter); + TCHAR *t_chapter = ui_wstring_from_utf8(chapter); // htmlhelp(wnd, t_chapter, 0 /*HH_DISPLAY_TOPIC*/, 0); // TCHAR *szSite = new TCHAR[100]; // _tcscpy(szSite, TEXT("http://messui.the-chronicles.org/onlinehelp/")); @@ -3585,10 +2991,10 @@ static int pause_for_command(UINT command) // invoke_command //============================================================ -static int invoke_command(HWND wnd, UINT command) +static bool invoke_command(HWND wnd, UINT command) { std::string error_string; - int handled = 1; + bool handled = TRUE; int dev_command = 0; device_image_interface *img; LONG_PTR ptr = GetWindowLongPtr(wnd, GWLP_USERDATA); @@ -3772,13 +3178,9 @@ static int invoke_command(HWND wnd, UINT command) window->m_target->set_view(command - ID_VIDEO_VIEW_0); window->update(); // actually change window size } -// else -// if (input_item_from_serial_number(window->machine(), command - ID_INPUT_0, NULL, &field, &setting)) - // should never happen -// handled = 0; else // bogus command - handled = 0; + handled = FALSE; break; } @@ -3802,7 +3204,7 @@ static void set_menu_text(HMENU menu_bar, int command, const char *text) MENUITEMINFO mii; // convert to TCHAR - t_text = tstring_from_utf8(text); + t_text = ui_wstring_from_utf8(text); // invoke SetMenuItemInfo() memset(&mii, 0, sizeof(mii)); @@ -3854,8 +3256,7 @@ static int win_setup_menus(running_machine &machine, HMODULE module, HMENU menu_ char *src; char *dst; - snprintf(state_filename, ARRAY_LENGTH(state_filename), - "%s State", machine.system().description); + snprintf(state_filename, ARRAY_LENGTH(state_filename), "%s State", machine.system().description); src = state_filename; dst = state_filename; diff --git a/docs/release/src/osd/winui/newui.h b/docs/release/src/osd/winui/newui.h index 5ad8c9fa638..e0cc3f07b9f 100644 --- a/docs/release/src/osd/winui/newui.h +++ b/docs/release/src/osd/winui/newui.h @@ -20,7 +20,6 @@ #include "ui/ui.h" #include "newuires.h" #include "strconv.h" -#include "debug/debugcpu.h" #include "imagedev/cassette.h" #include "windows/window.h" #include "winutf8.h" @@ -28,7 +27,7 @@ // These are called from src/osd/windows/windows.c and -// provide the linkage between newui and the core. +// provide the linkage between newui and the core. LRESULT CALLBACK winwindow_video_window_proc_ui(HWND wnd, UINT message, WPARAM wparam, LPARAM lparam); diff --git a/docs/release/src/osd/winui/properties.cpp b/docs/release/src/osd/winui/properties.cpp index 5b7fa44c37b..03cab233107 100644 --- a/docs/release/src/osd/winui/properties.cpp +++ b/docs/release/src/osd/winui/properties.cpp @@ -535,13 +535,13 @@ void InitPropertyPageToPage(HINSTANCE hInst, HWND hWnd, HICON hIcon, OPTIONS_TYP switch( opt_type ) { case OPTIONS_GAME: - t_description = tstring_from_utf8(ModifyThe(driver_list::driver(g_nGame).description)); + t_description = ui_wstring_from_utf8(ModifyThe(driver_list::driver(g_nGame).description)); break; case OPTIONS_SOURCE: - t_description = tstring_from_utf8(GetDriverFilename(g_nGame)); + t_description = ui_wstring_from_utf8(GetDriverFilename(g_nGame)); break; case OPTIONS_GLOBAL: - t_description = tstring_from_utf8("Default Settings"); + t_description = ui_wstring_from_utf8("Default Settings"); break; default: return; @@ -1753,7 +1753,7 @@ static BOOL ScreenReadControl(datamap *map, HWND dialog, HWND control, windows_o screen_option_index = ComboBox_GetCurSel(control); screen_option_value = (TCHAR*) ComboBox_GetItemData(control, screen_option_index); snprintf(screen_option_name, ARRAY_LENGTH(screen_option_name), "screen%d", selected_screen); - op_val = utf8_from_tstring(screen_option_value); + op_val = ui_utf8_from_wstring(screen_option_value); opts->set_value(screen_option_name, op_val, OPTION_PRIORITY_CMDLINE,error_string); osd_free(op_val); return FALSE; @@ -1772,7 +1772,7 @@ static BOOL ScreenPopulateControl(datamap *map, HWND dialog, HWND control, windo /* Remove all items in the list. */ res = ComboBox_ResetContent(control); res = ComboBox_InsertString(control, 0, TEXT("Auto")); - res = ComboBox_SetItemData(control, 0, (void*)tstring_from_utf8("auto")); + res = ComboBox_SetItemData(control, 0, (void*)ui_wstring_from_utf8("auto")); //Dynamically populate it, by enumerating the Monitors //iMonitors = GetSystemMetrics(SM_CMONITORS); // this gets the count of monitors attached @@ -1789,7 +1789,7 @@ static BOOL ScreenPopulateControl(datamap *map, HWND dialog, HWND control, windo res = ComboBox_SetItemData(control, i+1, (void*)win_tstring_strdup(dd.DeviceName)); snprintf(screen_option, ARRAY_LENGTH(screen_option), "screen%d", GetSelectedScreen(dialog)); - t_option = tstring_from_utf8(opts->value(screen_option)); + t_option = ui_wstring_from_utf8(opts->value(screen_option)); if( !t_option ) return FALSE; if (_tcscmp(t_option, dd.DeviceName) == 0) @@ -1866,7 +1866,7 @@ static BOOL DefaultInputReadControl(datamap *map, HWND dialog, HWND control, win input_option_index = ComboBox_GetCurSel(control); input_option_value = (TCHAR*) ComboBox_GetItemData(control, input_option_index); - op_val = utf8_from_tstring(input_option_value); + op_val = ui_utf8_from_wstring(input_option_value); opts->set_value(OPTION_CTRLR, input_option_index ? op_val : "", OPTION_PRIORITY_CMDLINE,error_string); osd_free(op_val); return FALSE; @@ -1890,7 +1890,7 @@ static BOOL DefaultInputPopulateControl(datamap *map, HWND dialog, HWND control, ctrlr_option = opts->value(OPTION_CTRLR); if( ctrlr_option ) { - t_buf = tstring_from_utf8(ctrlr_option); + t_buf = ui_wstring_from_utf8(ctrlr_option); if( !t_buf ) return FALSE; t_ctrlr_option = t_buf; @@ -1906,7 +1906,7 @@ static BOOL DefaultInputPopulateControl(datamap *map, HWND dialog, HWND control, res = ComboBox_SetItemData(control, index, ""); index++; - t_ctrldir = tstring_from_utf8(GetCtrlrDir()); + t_ctrldir = ui_wstring_from_utf8(GetCtrlrDir()); if( !t_ctrldir ) { if( t_buf ) @@ -2043,7 +2043,7 @@ static BOOL ResolutionPopulateControl(datamap *map, HWND dialog, HWND control_, // determine which screen we're using snprintf(screen_option, ARRAY_LENGTH(screen_option), "screen%d", GetSelectedScreen(dialog)); screen = opts->value(screen_option); - t_screen = tstring_from_utf8(screen); + t_screen = ui_wstring_from_utf8(screen); // retrieve screen information devmode.dmSize = sizeof(devmode); @@ -2654,7 +2654,7 @@ static void InitializeBIOSUI(HWND hwnd) { const char *name = ROM_GETHASHDATA(rom); const char *biosname = ROM_GETNAME(rom); - t_s = tstring_from_utf8(name); + t_s = ui_wstring_from_utf8(name); if( !t_s ) return; res = ComboBox_InsertString(hCtrl, i, win_tstring_strdup(t_s)); @@ -2683,7 +2683,7 @@ static void InitializeBIOSUI(HWND hwnd) { const char *name = ROM_GETHASHDATA(rom); const char *biosname = ROM_GETNAME(rom); - t_s = tstring_from_utf8(name); + t_s = ui_wstring_from_utf8(name); if( !t_s ) return; res = ComboBox_InsertString(hCtrl, i, win_tstring_strdup(t_s)); @@ -2918,7 +2918,7 @@ static BOOL DirListReadControl(datamap *map, HWND dialog, HWND control, windows_ pos += _tcslen(&buffer[pos]); } - const char* paths = utf8_from_tstring(buffer); + const char* paths = ui_utf8_from_wstring(buffer); if ((buffer[1] == 0x3A) || (buffer[0] == 0)) // must be a folder or null { std::string error_string; @@ -2943,7 +2943,7 @@ static BOOL DirListPopulateControl(datamap *map, HWND dialog, HWND control, wind windows_options o; load_options(o, driver_index); const char* paths = o.value(OPTION_COMMENT_DIRECTORY); - TCHAR* t_dir_list = tstring_from_utf8(paths); + TCHAR* t_dir_list = ui_wstring_from_utf8(paths); paths = 0; if (!t_dir_list) return FALSE; @@ -3055,7 +3055,7 @@ static BOOL RamPopulateControl(datamap *map, HWND dialog, HWND control, windows_ char tmpval[20] ; ram = ramdev->default_size(); messram_string(tmpval,ram); - t_ramstring = tstring_from_utf8(tmpval); + t_ramstring = ui_wstring_from_utf8(tmpval); if( !t_ramstring ) return FALSE; @@ -3084,7 +3084,7 @@ static BOOL RamPopulateControl(datamap *map, HWND dialog, HWND control, windows_ this_ram_string = p; - t_ramstring = tstring_from_utf8(this_ram_string); + t_ramstring = ui_wstring_from_utf8(this_ram_string); if( !t_ramstring ) return FALSE; diff --git a/docs/release/src/osd/winui/tabview.cpp b/docs/release/src/osd/winui/tabview.cpp index 9b9b30dc49c..7c2fce7d69a 100644 --- a/docs/release/src/osd/winui/tabview.cpp +++ b/docs/release/src/osd/winui/tabview.cpp @@ -286,7 +286,7 @@ void TabView_Reset(HWND hwndTabView) { if (!pTabViewInfo->pCallbacks->pfnGetShowTab || pTabViewInfo->pCallbacks->pfnGetShowTab(i)) { - t_text = tstring_from_utf8(pTabViewInfo->pCallbacks->pfnGetTabLongName(i)); + t_text = ui_wstring_from_utf8(pTabViewInfo->pCallbacks->pfnGetTabLongName(i)); if( !t_text ) return; tci.pszText = t_text; diff --git a/docs/release/src/osd/winui/treeview.cpp b/docs/release/src/osd/winui/treeview.cpp index eefaf0f4761..c1338b2998f 100644 --- a/docs/release/src/osd/winui/treeview.cpp +++ b/docs/release/src/osd/winui/treeview.cpp @@ -147,11 +147,11 @@ static BOOL win_move_file_utf8(const char* existingfilename, const char* newfile TCHAR* t_newfilename; BOOL result = FALSE; - t_existingfilename = tstring_from_utf8(existingfilename); + t_existingfilename = ui_wstring_from_utf8(existingfilename); if( !t_existingfilename ) return result; - t_newfilename = tstring_from_utf8(newfilename); + t_newfilename = ui_wstring_from_utf8(newfilename); if( !t_newfilename ) { free(t_existingfilename); return result; @@ -1095,10 +1095,10 @@ void CreateDumpingFolders(int parent_index) if (ROMREGION_ISROMDATA(region) || ROMREGION_ISDISKDATA(region) ) { //name = ROM_GETNAME(rom); - hash_collection hashes(ROM_GETHASHDATA(rom)); - if (hashes.flag(hash_collection::FLAG_BAD_DUMP)) + util::hash_collection hashes(ROM_GETHASHDATA(rom)); + if (hashes.flag(util::hash_collection::FLAG_BAD_DUMP)) bBadDump = TRUE; - if (hashes.flag(hash_collection::FLAG_NO_DUMP)) + if (hashes.flag(util::hash_collection::FLAG_NO_DUMP)) bNoDump = TRUE; } } @@ -1560,7 +1560,7 @@ static LPTREEFOLDER NewFolder(const char *lpTitle, UINT nFolderId, int nParent, memset(lpFolder, '\0', sizeof (TREEFOLDER)); lpFolder->m_lpTitle = (LPSTR)malloc(strlen(lpTitle) + 1); strcpy((char *)lpFolder->m_lpTitle,lpTitle); - lpFolder->m_lptTitle = tstring_from_utf8(lpFolder->m_lpTitle); + lpFolder->m_lptTitle = ui_wstring_from_utf8(lpFolder->m_lpTitle); lpFolder->m_lpGameBits = NewBits(driver_list::total()); lpFolder->m_nFolderId = nFolderId; lpFolder->m_nParent = nParent; diff --git a/docs/release/src/osd/winui/winui.cpp b/docs/release/src/osd/winui/winui.cpp index b46ed105e18..2786e6b2234 100644 --- a/docs/release/src/osd/winui/winui.cpp +++ b/docs/release/src/osd/winui/winui.cpp @@ -999,7 +999,7 @@ int MameUIMain(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow) return 999; for (i = 0; i < __argc; i++) { - utf8_argv[i] = utf8_from_tstring(__targv[i]); + utf8_argv[i] = ui_utf8_from_wstring(__targv[i]); if (utf8_argv[i] == NULL) { free(utf8_argv); @@ -1674,7 +1674,7 @@ static BOOL Win32UI_init(HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow) HelpInit(); - t_inpdir = tstring_from_utf8(GetInpDir()); + t_inpdir = ui_wstring_from_utf8(GetInpDir()); if( ! t_inpdir ) return FALSE; @@ -2839,7 +2839,7 @@ static void CopyToolTipText(LPTOOLTIPTEXT lpttt) SendMessage(hStatusBar, SB_GETTEXT, (WPARAM)iButton, (LPARAM)&String ); else { //for first pane we get the Status directly, to get the line breaks - t_gameinfostatus = tstring_from_utf8( GameInfoStatus(Picker_GetSelectedItem(hwndList), FALSE)); + t_gameinfostatus = ui_wstring_from_utf8( GameInfoStatus(Picker_GetSelectedItem(hwndList), FALSE)); if( !t_gameinfostatus ) return; _tcscpy(String, t_gameinfostatus); @@ -3045,7 +3045,7 @@ static void EnableSelection(int nGame) HMENU hMenu = GetMenu(hMain); TCHAR* t_description; - t_description = tstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description))); + t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description))); if( !t_description ) return; @@ -3202,7 +3202,7 @@ static BOOL TreeViewNotify(LPNMHDR nm) if (ptvdi->item.pszText == NULL || _tcslen(ptvdi->item.pszText) == 0) return FALSE; - utf8_szText = utf8_from_tstring(ptvdi->item.pszText); + utf8_szText = ui_utf8_from_wstring(ptvdi->item.pszText); if( !utf8_szText ) return FALSE; @@ -3571,7 +3571,7 @@ static void PollGUIJoystick() si.cb = sizeof(si); exec_command = GetExecCommand(); - t_exec_command = tstring_from_utf8(exec_command); + t_exec_command = ui_wstring_from_utf8(exec_command); if( !t_exec_command ) return; CreateProcess(NULL, t_exec_command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); @@ -4316,7 +4316,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify) if (as[t1] == '\\') as[t1]='\0'; t1 = as.find(':'); if (t1 > 0) - t_bgdir = tstring_from_utf8(as.c_str()); + t_bgdir = ui_wstring_from_utf8(as.c_str()); OPENFILENAME OFN; static TCHAR szFile[MAX_PATH] = TEXT("\0"); @@ -4347,7 +4347,7 @@ static BOOL MameCommand(HWND hwnd,int id, HWND hwndCtl, UINT codeNotify) if (GetOpenFileName(&OFN)) { osd_free(t_bgdir); - utf8_szFile = utf8_from_tstring(szFile); + utf8_szFile = ui_utf8_from_wstring(szFile); if( !utf8_szFile ) return FALSE; @@ -4663,7 +4663,7 @@ static const TCHAR *GamePicker_GetItemString(HWND hwndPicker, int nItem, int nCo if( utf8_s ) { - TCHAR* t_s = tstring_from_utf8(utf8_s); + TCHAR* t_s = ui_wstring_from_utf8(utf8_s); if( !t_s ) return s; @@ -4746,7 +4746,7 @@ static void InitListView() res = ListView_SetTextBkColor(hwndList, CLR_NONE); res = ListView_SetBkColor(hwndList, CLR_NONE); - t_bgdir = tstring_from_utf8(GetBgDir()); + t_bgdir = ui_wstring_from_utf8(GetBgDir()); if( !t_bgdir ) return; @@ -5140,7 +5140,7 @@ BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype) char *utf8_filename; // convert the filename to UTF-8 and copy into buffer - t_filename = tstring_from_utf8(filename); + t_filename = ui_wstring_from_utf8(filename); if (t_filename) { _sntprintf(t_filename_buffer, ARRAY_LENGTH(t_filename_buffer), TEXT("%s"), t_filename); @@ -5222,7 +5222,7 @@ BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype) dirname.resize(i); if (dirname.empty()) dirname = "."; - ofn.lpstrInitialDir = tstring_from_utf8(dirname.c_str()); + ofn.lpstrInitialDir = ui_wstring_from_utf8(dirname.c_str()); ofn.lpstrTitle = NULL; ofn.Flags = OFN_EXPLORER | OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY; @@ -5239,7 +5239,7 @@ BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype) /*GetDirectory(filename,last_directory,sizeof(last_directory));*/ } - utf8_filename = utf8_from_tstring(t_filename_buffer); + utf8_filename = ui_utf8_from_wstring(t_filename_buffer); if (utf8_filename) { snprintf(filename, MAX_PATH, "%s", utf8_filename); @@ -5251,7 +5251,7 @@ BOOL CommonFileDialog(common_file_dialog_proc cfd, char *filename, int filetype) void SetStatusBarText(int part_index, const char *message) { - TCHAR* t_message = tstring_from_utf8(message); + TCHAR* t_message = ui_wstring_from_utf8(message); if( !t_message ) return; SendMessage(hStatusBar, SB_SETTEXT, (WPARAM) part_index, (LPARAM)(LPCTSTR) win_tstring_strdup(t_message)); @@ -5849,7 +5849,7 @@ static void UpdateMenu(HMENU hMenu) if (have_selection) { - t_description = tstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description))); + t_description = ui_wstring_from_utf8(ConvertAmpersandString(ModifyThe(driver_list::driver(nGame).description))); if( !t_description ) return; @@ -5965,7 +5965,7 @@ void InitTreeContextMenu(HMENU hTreeMenu) for (i=0;g_folderData[i].m_lpTitle;i++) { - TCHAR* t_title = tstring_from_utf8(g_folderData[i].m_lpTitle); + TCHAR* t_title = ui_wstring_from_utf8(g_folderData[i].m_lpTitle); if( !t_title ) return; diff --git a/docs/release/src/version.cpp b/docs/release/src/version.cpp index 5f46a84a9bd..5e42933f341 100644 --- a/docs/release/src/version.cpp +++ b/docs/release/src/version.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ -#define BARE_BUILD_VERSION "0.175" +#define BARE_BUILD_VERSION "0.176" extern const char bare_build_version[]; extern const char build_version[]; |