diff options
author | 2019-11-27 10:29:17 +1100 | |
---|---|---|
committer | 2019-11-27 10:29:17 +1100 | |
commit | 9a69fc85f3088ea8900b0c7f6488dbf60b199f8e (patch) | |
tree | 427f139707eff088046f74e3915dc301e8091c6d /docs/release/src | |
parent | 3a6be1140d695b71f13d365ee6481bbed6efe687 (diff) |
0.216 Release filestag216
Diffstat (limited to 'docs/release/src')
51 files changed, 1062 insertions, 2452 deletions
diff --git a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp index f36a166e0cc..b821c19f986 100644 --- a/docs/release/src/devices/cpu/m68000/m68kcpu.cpp +++ b/docs/release/src/devices/cpu/m68000/m68kcpu.cpp @@ -1654,11 +1654,6 @@ void m68000_base_device::init32hmmu(address_space &space, address_space &ospace) }; } -void m68000_base_device::set_reset_callback(write_line_delegate callback) -{ - m_reset_instr_callback = callback; -} - // fault_addr = address to indicate fault at // rw = 1 for read, 0 for write // fc = 3-bit function code of access (usually you'd just put what m68k_get_fc() returns here) @@ -1670,21 +1665,6 @@ void m68000_base_device::set_buserror_details(u32 fault_addr, u8 rw, u8 fc) m_mmu_tmp_buserror_address = fault_addr; // Hack for x68030 } -void m68000_base_device::set_cmpild_callback(write32_delegate callback) -{ - m_cmpild_instr_callback = callback; -} - -void m68000_base_device::set_rte_callback(write_line_delegate callback) -{ - m_rte_instr_callback = callback; -} - -void m68000_base_device::set_tas_write_callback(write8_delegate callback) -{ - m_tas_write_callback = callback; -} - u16 m68000_base_device::get_fc() { return m_mmu_tmp_fc; @@ -1804,9 +1784,9 @@ void m68000_base_device::init_cpu_m68000(void) m_cyc_dbcc_f_noexp = -2; m_cyc_dbcc_f_exp = 2; m_cyc_scc_r_true = 2; - m_cyc_movem_w = 2; - m_cyc_movem_l = 3; - m_cyc_shift = 1; + m_cyc_movem_w = 4; + m_cyc_movem_l = 8; + m_cyc_shift = 2; m_cyc_reset = 132; m_has_pmmu = 0; m_has_hmmu = 0; @@ -1833,9 +1813,9 @@ void m68000_base_device::init_cpu_m68008(void) m_cyc_dbcc_f_noexp = -2; m_cyc_dbcc_f_exp = 2; m_cyc_scc_r_true = 2; - m_cyc_movem_w = 2; - m_cyc_movem_l = 3; - m_cyc_shift = 1; + m_cyc_movem_w = 4; + m_cyc_movem_l = 8; + m_cyc_shift = 2; m_cyc_reset = 132; m_has_pmmu = 0; m_has_fpu = 0; @@ -1860,9 +1840,9 @@ void m68000_base_device::init_cpu_m68010(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 6; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 3; - m_cyc_shift = 1; + m_cyc_movem_w = 4; + m_cyc_movem_l = 8; + m_cyc_shift = 2; m_cyc_reset = 130; m_has_pmmu = 0; m_has_fpu = 0; @@ -1886,9 +1866,9 @@ void m68000_base_device::init_cpu_m68020(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; define_state(); @@ -1942,9 +1922,9 @@ void m68000_base_device::init_cpu_m68ec020(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; m_has_pmmu = 0; m_has_fpu = 0; @@ -1970,9 +1950,9 @@ void m68000_base_device::init_cpu_m68030(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; m_has_pmmu = 1; m_has_fpu = 1; @@ -1999,9 +1979,9 @@ void m68000_base_device::init_cpu_m68ec030(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; m_has_pmmu = 0; /* EC030 lacks the PMMU and is effectively a die-shrink 68020 */ m_has_fpu = 1; @@ -2028,9 +2008,9 @@ void m68000_base_device::init_cpu_m68040(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; m_has_pmmu = 1; m_has_fpu = 1; @@ -2056,9 +2036,9 @@ void m68000_base_device::init_cpu_m68ec040(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; m_has_pmmu = 0; m_has_fpu = 0; @@ -2084,9 +2064,9 @@ void m68000_base_device::init_cpu_m68lc040(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; m_has_pmmu = 1; m_has_fpu = 0; @@ -2100,21 +2080,20 @@ void m68000_base_device::init_cpu_scc68070(void) init_cpu_common(); m_cpu_type = CPU_TYPE_SCC070; - // TODO: most of this is subtly different init16(*m_program, *m_oprogram); m_sr_mask = 0xa71f; /* T1 -- S -- -- I2 I1 I0 -- -- -- X N Z V C */ m_state_table = m68ki_instruction_state_table[1]; m_cyc_instruction = m68ki_cycles[1]; m_cyc_exception = m68ki_exception_cycle_table[1]; - m_cyc_bcc_notake_b = -4; + m_cyc_bcc_notake_b = 0; m_cyc_bcc_notake_w = 0; - m_cyc_dbcc_f_noexp = 0; - m_cyc_dbcc_f_exp = 6; + m_cyc_dbcc_f_noexp = 3; + m_cyc_dbcc_f_exp = 3; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 3; - m_cyc_shift = 1; - m_cyc_reset = 130; + m_cyc_movem_w = 7; + m_cyc_movem_l = 11; + m_cyc_shift = 3; + m_cyc_reset = 154; m_has_pmmu = 0; m_has_fpu = 0; @@ -2139,9 +2118,9 @@ void m68000_base_device::init_cpu_fscpu32(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; define_state(); @@ -2166,9 +2145,9 @@ void m68000_base_device::init_cpu_coldfire(void) m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 4; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 2; - m_cyc_movem_l = 2; - m_cyc_shift = 0; + m_cyc_movem_w = 4; + m_cyc_movem_l = 4; + m_cyc_shift = 1; m_cyc_reset = 518; define_state(); @@ -2344,7 +2323,11 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map), m_cpu_space_config("cpu space", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, address_map_constructor(FUNC(m68000_base_device::default_autovectors_map), this)), m_interrupt_mixer(true), - m_cpu_space_id(AS_CPU_SPACE) + m_cpu_space_id(AS_CPU_SPACE), + m_reset_instr_callback(*this), + m_cmpild_instr_callback(*this), + m_rte_instr_callback(*this), + m_tas_write_callback(*this) { clear_all(); } @@ -2357,7 +2340,11 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits), m_cpu_space_config("cpu space", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, address_map_constructor(FUNC(m68000_base_device::default_autovectors_map), this)), m_interrupt_mixer(true), - m_cpu_space_id(AS_CPU_SPACE) + m_cpu_space_id(AS_CPU_SPACE), + m_reset_instr_callback(*this), + m_cmpild_instr_callback(*this), + m_rte_instr_callback(*this), + m_tas_write_callback(*this) { clear_all(); } @@ -2412,9 +2399,9 @@ void m68000_base_device::clear_all() m_cyc_dbcc_f_noexp = 0; m_cyc_dbcc_f_exp = 0; m_cyc_scc_r_true = 0; - m_cyc_movem_w = 0; - m_cyc_movem_l = 0; - m_cyc_shift = 0; + m_cyc_movem_w = 1; + m_cyc_movem_l = 1; + m_cyc_shift = 1; m_cyc_reset = 0; m_initial_cycles = 0; @@ -2482,13 +2469,13 @@ void m68000_base_device::autovectors_map(address_map &map) { // Eventually add the sync to E due to vpa // 8-bit handlers are used here to be compatible with all bus widths - map(0x3, 0x3).lr8("avec1", []() -> u8 { return autovector(1); }); - map(0x5, 0x5).lr8("avec2", []() -> u8 { return autovector(2); }); - map(0x7, 0x7).lr8("avec3", []() -> u8 { return autovector(3); }); - map(0x9, 0x9).lr8("avec4", []() -> u8 { return autovector(4); }); - map(0xb, 0xb).lr8("avec5", []() -> u8 { return autovector(5); }); - map(0xd, 0xd).lr8("avec6", []() -> u8 { return autovector(6); }); - map(0xf, 0xf).lr8("avec7", []() -> u8 { return autovector(7); }); + map(0x3, 0x3).lr8(NAME([] () -> u8 { return autovector(1); })); + map(0x5, 0x5).lr8(NAME([] () -> u8 { return autovector(2); })); + map(0x7, 0x7).lr8(NAME([] () -> u8 { return autovector(3); })); + map(0x9, 0x9).lr8(NAME([] () -> u8 { return autovector(4); })); + map(0xb, 0xb).lr8(NAME([] () -> u8 { return autovector(5); })); + map(0xd, 0xd).lr8(NAME([] () -> u8 { return autovector(6); })); + map(0xf, 0xf).lr8(NAME([] () -> u8 { return autovector(7); })); } void m68000_base_device::default_autovectors_map(address_map &map) @@ -2501,6 +2488,10 @@ void m68000_base_device::default_autovectors_map(address_map &map) void m68000_base_device::device_start() { + m_reset_instr_callback.resolve(); + m_cmpild_instr_callback.resolve(); + m_rte_instr_callback.resolve(); + m_tas_write_callback.resolve(); } void m68000_base_device::device_stop() @@ -2594,6 +2585,7 @@ m68000_device::m68000_device(const machine_config &mconfig, const device_type ty void m68000_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68000(); } @@ -2617,6 +2609,7 @@ m68008_device::m68008_device(const machine_config &mconfig, const char *tag, dev void m68008_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68008(); } @@ -2628,6 +2621,7 @@ m68008fn_device::m68008fn_device(const machine_config &mconfig, const char *tag, void m68008fn_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68008(); } @@ -2640,6 +2634,7 @@ m68010_device::m68010_device(const machine_config &mconfig, const char *tag, dev void m68010_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68010(); } @@ -2652,6 +2647,7 @@ m68020_device::m68020_device(const machine_config &mconfig, const char *tag, dev void m68020_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68020(); } @@ -2663,6 +2659,7 @@ m68020fpu_device::m68020fpu_device(const machine_config &mconfig, const char *ta void m68020fpu_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68020fpu(); } @@ -2674,6 +2671,7 @@ m68020pmmu_device::m68020pmmu_device(const machine_config &mconfig, const char * void m68020pmmu_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68020pmmu(); } @@ -2699,6 +2697,7 @@ m68020hmmu_device::m68020hmmu_device(const machine_config &mconfig, const char * void m68020hmmu_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68020hmmu(); } @@ -2710,6 +2709,7 @@ m68ec020_device::m68ec020_device(const machine_config &mconfig, const char *tag, void m68ec020_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68ec020(); } @@ -2720,6 +2720,7 @@ m68030_device::m68030_device(const machine_config &mconfig, const char *tag, dev void m68030_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68030(); } @@ -2730,6 +2731,7 @@ m68ec030_device::m68ec030_device(const machine_config &mconfig, const char *tag, void m68ec030_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68ec030(); } @@ -2741,6 +2743,7 @@ m68040_device::m68040_device(const machine_config &mconfig, const char *tag, dev void m68040_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68040(); } @@ -2753,6 +2756,7 @@ m68ec040_device::m68ec040_device(const machine_config &mconfig, const char *tag, void m68ec040_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68ec040(); } @@ -2765,6 +2769,7 @@ m68lc040_device::m68lc040_device(const machine_config &mconfig, const char *tag, void m68lc040_device::device_start() { + m68000_base_device::device_start(); init_cpu_m68lc040(); } @@ -2777,6 +2782,7 @@ scc68070_base_device::scc68070_base_device(const machine_config &mconfig, const void scc68070_base_device::device_start() { + m68000_base_device::device_start(); init_cpu_scc68070(); } @@ -2795,6 +2801,7 @@ fscpu32_device::fscpu32_device(const machine_config &mconfig, const char *tag, d void fscpu32_device::device_start() { + m68000_base_device::device_start(); init_cpu_fscpu32(); } @@ -2807,6 +2814,7 @@ mcf5206e_device::mcf5206e_device(const machine_config &mconfig, const char *tag, void mcf5206e_device::device_start() { + m68000_base_device::device_start(); init_cpu_coldfire(); } diff --git a/docs/release/src/emu/emuopts.cpp b/docs/release/src/emu/emuopts.cpp index 67373a294ca..1c664875e8d 100644 --- a/docs/release/src/emu/emuopts.cpp +++ b/docs/release/src/emu/emuopts.cpp @@ -88,6 +88,7 @@ const options_entry emu_options::s_option_entries[] = { OPTION_SLEEP, "1", OPTION_BOOLEAN, "enable sleeping, which gives time back to other applications when idle" }, { OPTION_SPEED "(0.01-100)", "1.0", OPTION_FLOAT, "controls the speed of gameplay, relative to realtime; smaller numbers are slower" }, { OPTION_REFRESHSPEED ";rs", "0", OPTION_BOOLEAN, "automatically adjust emulation speed to keep the emulated refresh rate slower than the host screen" }, + { OPTION_LOWLATENCY ";lolat", "0", OPTION_BOOLEAN, "draws new frame before throttling to reduce input latency" }, // render options { nullptr, nullptr, OPTION_HEADER, "CORE RENDER OPTIONS" }, @@ -236,7 +237,7 @@ namespace { } - virtual const char *value() const override + virtual const char *value() const noexcept override { // This is returning an empty string instead of nullptr to signify that // specifying the value is a meaningful operation. The option types that @@ -286,7 +287,7 @@ namespace { } - virtual const char *value() const override + virtual const char *value() const noexcept override { const char *result = nullptr; if (m_host.specified()) @@ -297,6 +298,7 @@ namespace // happen in practice // // In reality, I want to really return std::optional<std::string> here + // FIXME: the std::string assignment can throw exceptions, and returning std::optional<std::string> also isn't safe in noexcept m_temp = m_host.specified_value(); result = m_temp.c_str(); } @@ -324,7 +326,7 @@ namespace { } - virtual const char *value() const override + virtual const char *value() const noexcept override { return m_host.value().c_str(); } diff --git a/docs/release/src/emu/emuopts.h b/docs/release/src/emu/emuopts.h index 970a90c67da..a1a23e77a2b 100644 --- a/docs/release/src/emu/emuopts.h +++ b/docs/release/src/emu/emuopts.h @@ -75,6 +75,7 @@ #define OPTION_SLEEP "sleep" #define OPTION_SPEED "speed" #define OPTION_REFRESHSPEED "refreshspeed" +#define OPTION_LOWLATENCY "lowlatency" // core render options #define OPTION_KEEPASPECT "keepaspect" @@ -352,6 +353,7 @@ public: bool sleep() const { return m_sleep; } float speed() const { return float_value(OPTION_SPEED); } bool refresh_speed() const { return m_refresh_speed; } + bool low_latency() const { return bool_value(OPTION_LOWLATENCY); } // core render options bool keep_aspect() const { return bool_value(OPTION_KEEPASPECT); } diff --git a/docs/release/src/emu/validity.cpp b/docs/release/src/emu/validity.cpp index 2299d7d8381..d1764757f44 100644 --- a/docs/release/src/emu/validity.cpp +++ b/docs/release/src/emu/validity.cpp @@ -238,7 +238,7 @@ bool validity_checker::check_all_matching(const char *string) // if we failed to match anything, it if (string && !validated_any) - throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching systems found for '%s'", string); + throw emu_fatalerror(EMU_ERR_NO_SUCH_SYSTEM, "No matching systems found for '%s'", string); return !(m_errors > 0 || m_warnings > 0); } @@ -318,7 +318,7 @@ void validity_checker::validate_one(const game_driver &driver) } catch (emu_fatalerror &err) { - osd_printf_error("Fatal error %s", err.string()); + osd_printf_error("Fatal error %s", err.what()); } // if we had warnings or errors, output diff --git a/docs/release/src/emu/video.cpp b/docs/release/src/emu/video.cpp index d8bea693005..fa0efb88a89 100644 --- a/docs/release/src/emu/video.cpp +++ b/docs/release/src/emu/video.cpp @@ -91,6 +91,7 @@ video_manager::video_manager(running_machine &machine) , m_seconds_to_run(machine.options().seconds_to_run()) , m_auto_frameskip(machine.options().auto_frameskip()) , m_speed(original_speed_setting()) + , m_low_latency(machine.options().low_latency()) , m_empty_skip_count(0) , m_frameskip_level(machine.options().frameskip()) , m_frameskip_counter(0) @@ -229,7 +230,7 @@ void video_manager::frame_update(bool from_debugger) // if we're throttling, synchronize before rendering attotime current_time = machine().time(); - if (!from_debugger && !skipped_it && effective_throttle()) + if (!from_debugger && !skipped_it && !m_low_latency && effective_throttle()) update_throttle(current_time); // ask the OSD to update @@ -237,6 +238,13 @@ void video_manager::frame_update(bool from_debugger) machine().osd().update(!from_debugger && skipped_it); g_profiler.stop(); + // we synchronize after rendering instead of before, if low latency mode is enabled + if (!from_debugger && !skipped_it && m_low_latency && effective_throttle()) + update_throttle(current_time); + + // get most recent input now + machine().osd().input_update(); + emulator_info::periodic_check(); // perform tasks for this frame diff --git a/docs/release/src/emu/video.h b/docs/release/src/emu/video.h index aa5390fd579..e58dd38e997 100644 --- a/docs/release/src/emu/video.h +++ b/docs/release/src/emu/video.h @@ -164,6 +164,7 @@ private: u32 m_seconds_to_run; // number of seconds to run before quitting bool m_auto_frameskip; // flag: true if we're automatically frameskipping u32 m_speed; // overall speed (*1000) + bool m_low_latency; // flag: true if we are throttling after blitting // frameskipping u8 m_empty_skip_count; // number of empty frames we have skipped diff --git a/docs/release/src/frontend/mame/info.cpp b/docs/release/src/frontend/mame/info.cpp deleted file mode 100644 index e14fe63cdd8..00000000000 --- a/docs/release/src/frontend/mame/info.cpp +++ /dev/null @@ -1,2027 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Aaron Giles,Paul Priest -/*************************************************************************** - - info.cpp - - Dumps the MAME internal data as an XML file. - -***************************************************************************/ - -#include "emu.h" - -#include "info.h" -#include "mameopts.h" - -#include "machine/ram.h" -#include "sound/samples.h" - -#include "config.h" -#include "drivenum.h" -#include "romload.h" -#include "screen.h" -#include "softlist_dev.h" -#include "speaker.h" - -#include "xmlfile.h" - -#include <ctype.h> -#include <cstring> -#include <unordered_set> -#include <queue> -#include <future> - - -#define XML_ROOT "mame" -#define XML_TOP "machine" - - -//************************************************************************** -// ANONYMOUS NAMESPACE PROTOTYPES -//************************************************************************** - -namespace -{ - class device_type_compare - { - public: - bool operator()(const std::add_pointer_t<device_type> &lhs, const std::add_pointer_t<device_type> &rhs) const; - }; - - typedef std::set<std::add_pointer_t<device_type>, device_type_compare> device_type_set; - - std::string normalize_string(const char *string); - - // internal helper - void output_header(std::ostream &out, bool dtd); - void output_footer(std::ostream &out); - - void output_one(std::ostream &out, driver_enumerator &drivlist, const game_driver &driver, device_type_set *devtypes); - void output_sampleof(std::ostream &out, device_t &device); - void output_bios(std::ostream &out, device_t const &device); - void output_rom(std::ostream &out, driver_enumerator *drivlist, const game_driver *driver, device_t &device); - void output_device_refs(std::ostream &out, device_t &root); - void output_sample(std::ostream &out, device_t &device); - void output_chips(std::ostream &out, device_t &device, const char *root_tag); - void output_display(std::ostream &out, device_t &device, machine_flags::type const *flags, const char *root_tag); - void output_sound(std::ostream &out, device_t &device); - void output_ioport_condition(std::ostream &out, const ioport_condition &condition, unsigned indent); - void output_input(std::ostream &out, const ioport_list &portlist); - void output_switches(std::ostream &out, const ioport_list &portlist, const char *root_tag, int type, const char *outertag, const char *loctag, const char *innertag); - void output_ports(std::ostream &out, const ioport_list &portlist); - void output_adjusters(std::ostream &out, const ioport_list &portlist); - void output_driver(std::ostream &out, game_driver const &driver, device_t::feature_type unemulated, device_t::feature_type imperfect); - void output_features(std::ostream &out, device_type type, device_t::feature_type unemulated, device_t::feature_type imperfect); - void output_images(std::ostream &out, device_t &device, const char *root_tag); - void output_slots(std::ostream &out, machine_config &config, device_t &device, const char *root_tag, device_type_set *devtypes); - void output_software_list(std::ostream &out, device_t &root); - void output_ramoptions(std::ostream &out, device_t &root); - - void output_one_device(std::ostream &out, machine_config &config, device_t &device, const char *devtag); - void output_devices(std::ostream &out, emu_options &lookup_options, device_type_set const *filter); - - const char *get_merge_name(driver_enumerator &drivlist, const game_driver &driver, util::hash_collection const &romhashes); -}; - - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - -// DTD string describing the data -static const char s_dtd_string[] = -"<!DOCTYPE __XML_ROOT__ [\n" -"<!ELEMENT __XML_ROOT__ (__XML_TOP__+)>\n" -"\t<!ATTLIST __XML_ROOT__ build CDATA #IMPLIED>\n" -"\t<!ATTLIST __XML_ROOT__ debug (yes|no) \"no\">\n" -"\t<!ATTLIST __XML_ROOT__ mameconfig CDATA #REQUIRED>\n" -"\t<!ELEMENT __XML_TOP__ (description, year?, manufacturer?, biosset*, rom*, disk*, device_ref*, sample*, chip*, display*, sound?, input?, dipswitch*, configuration*, port*, adjuster*, driver?, feature*, device*, slot*, softwarelist*, ramoption*)>\n" -"\t\t<!ATTLIST __XML_TOP__ name CDATA #REQUIRED>\n" -"\t\t<!ATTLIST __XML_TOP__ sourcefile CDATA #IMPLIED>\n" -"\t\t<!ATTLIST __XML_TOP__ isbios (yes|no) \"no\">\n" -"\t\t<!ATTLIST __XML_TOP__ isdevice (yes|no) \"no\">\n" -"\t\t<!ATTLIST __XML_TOP__ ismechanical (yes|no) \"no\">\n" -"\t\t<!ATTLIST __XML_TOP__ runnable (yes|no) \"yes\">\n" -"\t\t<!ATTLIST __XML_TOP__ cloneof CDATA #IMPLIED>\n" -"\t\t<!ATTLIST __XML_TOP__ romof CDATA #IMPLIED>\n" -"\t\t<!ATTLIST __XML_TOP__ sampleof CDATA #IMPLIED>\n" -"\t\t<!ELEMENT description (#PCDATA)>\n" -"\t\t<!ELEMENT year (#PCDATA)>\n" -"\t\t<!ELEMENT manufacturer (#PCDATA)>\n" -"\t\t<!ELEMENT biosset EMPTY>\n" -"\t\t\t<!ATTLIST biosset name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST biosset description CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST biosset default (yes|no) \"no\">\n" -"\t\t<!ELEMENT rom EMPTY>\n" -"\t\t\t<!ATTLIST rom name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST rom bios CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST rom size CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST rom crc CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST rom sha1 CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST rom merge CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST rom region CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST rom offset CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST rom status (baddump|nodump|good) \"good\">\n" -"\t\t\t<!ATTLIST rom optional (yes|no) \"no\">\n" -"\t\t<!ELEMENT disk EMPTY>\n" -"\t\t\t<!ATTLIST disk name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST disk sha1 CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST disk merge CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST disk region CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST disk index CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST disk writable (yes|no) \"no\">\n" -"\t\t\t<!ATTLIST disk status (baddump|nodump|good) \"good\">\n" -"\t\t\t<!ATTLIST disk optional (yes|no) \"no\">\n" -"\t\t<!ELEMENT device_ref EMPTY>\n" -"\t\t\t<!ATTLIST device_ref name CDATA #REQUIRED>\n" -"\t\t<!ELEMENT sample EMPTY>\n" -"\t\t\t<!ATTLIST sample name CDATA #REQUIRED>\n" -"\t\t<!ELEMENT chip EMPTY>\n" -"\t\t\t<!ATTLIST chip name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST chip tag CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST chip type (cpu|audio) #REQUIRED>\n" -"\t\t\t<!ATTLIST chip clock CDATA #IMPLIED>\n" -"\t\t<!ELEMENT display EMPTY>\n" -"\t\t\t<!ATTLIST display tag CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display type (raster|vector|lcd|svg|unknown) #REQUIRED>\n" -"\t\t\t<!ATTLIST display rotate (0|90|180|270) #IMPLIED>\n" -"\t\t\t<!ATTLIST display flipx (yes|no) \"no\">\n" -"\t\t\t<!ATTLIST display width CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display height CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display refresh CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST display pixclock CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display htotal CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display hbend CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display hbstart CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display vtotal CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display vbend CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST display vbstart CDATA #IMPLIED>\n" -"\t\t<!ELEMENT sound EMPTY>\n" -"\t\t\t<!ATTLIST sound channels CDATA #REQUIRED>\n" -"\t\t<!ELEMENT condition EMPTY>\n" -"\t\t\t<!ATTLIST condition tag CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST condition mask CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST condition relation (eq|ne|gt|le|lt|ge) #REQUIRED>\n" -"\t\t\t<!ATTLIST condition value CDATA #REQUIRED>\n" -"\t\t<!ELEMENT input (control*)>\n" -"\t\t\t<!ATTLIST input service (yes|no) \"no\">\n" -"\t\t\t<!ATTLIST input tilt (yes|no) \"no\">\n" -"\t\t\t<!ATTLIST input players CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST input coins CDATA #IMPLIED>\n" -"\t\t\t<!ELEMENT control EMPTY>\n" -"\t\t\t\t<!ATTLIST control type CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST control player CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control buttons CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control reqbuttons CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control minimum CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control maximum CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control sensitivity CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control keydelta CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control reverse (yes|no) \"no\">\n" -"\t\t\t\t<!ATTLIST control ways CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control ways2 CDATA #IMPLIED>\n" -"\t\t\t\t<!ATTLIST control ways3 CDATA #IMPLIED>\n" -"\t\t<!ELEMENT dipswitch (condition?, diplocation*, dipvalue*)>\n" -"\t\t\t<!ATTLIST dipswitch name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST dipswitch tag CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST dipswitch mask CDATA #REQUIRED>\n" -"\t\t\t<!ELEMENT condition EMPTY>\n" -"\t\t\t<!ATTLIST condition tag CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST condition mask CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST condition relation (eq|ne|gt|le|lt|ge) #REQUIRED>\n" -"\t\t\t<!ATTLIST condition value CDATA #REQUIRED>\n" -"\t\t\t<!ELEMENT diplocation EMPTY>\n" -"\t\t\t\t<!ATTLIST diplocation name CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST diplocation number CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST diplocation inverted (yes|no) \"no\">\n" -"\t\t\t<!ELEMENT dipvalue (condition?)>\n" -"\t\t\t\t<!ATTLIST dipvalue name CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST dipvalue value CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST dipvalue default (yes|no) \"no\">\n" -"\t\t<!ELEMENT configuration (condition?, conflocation*, confsetting*)>\n" -"\t\t\t<!ATTLIST configuration name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST configuration tag CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST configuration mask CDATA #REQUIRED>\n" -"\t\t\t<!ELEMENT conflocation EMPTY>\n" -"\t\t\t\t<!ATTLIST conflocation name CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST conflocation number CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST conflocation inverted (yes|no) \"no\">\n" -"\t\t\t<!ELEMENT confsetting (condition?)>\n" -"\t\t\t\t<!ATTLIST confsetting name CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST confsetting value CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST confsetting default (yes|no) \"no\">\n" -"\t\t<!ELEMENT port (analog*)>\n" -"\t\t\t<!ATTLIST port tag CDATA #REQUIRED>\n" -"\t\t\t<!ELEMENT analog EMPTY>\n" -"\t\t\t\t<!ATTLIST analog mask CDATA #REQUIRED>\n" -"\t\t<!ELEMENT adjuster (condition?)>\n" -"\t\t\t<!ATTLIST adjuster name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST adjuster default CDATA #REQUIRED>\n" -"\t\t<!ELEMENT driver EMPTY>\n" -"\t\t\t<!ATTLIST driver status (good|imperfect|preliminary) #REQUIRED>\n" -"\t\t\t<!ATTLIST driver emulation (good|imperfect|preliminary) #REQUIRED>\n" -"\t\t\t<!ATTLIST driver cocktail (good|imperfect|preliminary) #IMPLIED>\n" -"\t\t\t<!ATTLIST driver savestate (supported|unsupported) #REQUIRED>\n" -"\t\t<!ELEMENT feature EMPTY>\n" -"\t\t\t<!ATTLIST feature type (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) #REQUIRED>\n" -"\t\t\t<!ATTLIST feature status (unemulated|imperfect) #IMPLIED>\n" -"\t\t\t<!ATTLIST feature overall (unemulated|imperfect) #IMPLIED>\n" -"\t\t<!ELEMENT device (instance?, extension*)>\n" -"\t\t\t<!ATTLIST device type CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST device tag CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST device fixed_image CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST device mandatory CDATA #IMPLIED>\n" -"\t\t\t<!ATTLIST device interface CDATA #IMPLIED>\n" -"\t\t\t<!ELEMENT instance EMPTY>\n" -"\t\t\t\t<!ATTLIST instance name CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST instance briefname CDATA #REQUIRED>\n" -"\t\t\t<!ELEMENT extension EMPTY>\n" -"\t\t\t\t<!ATTLIST extension name CDATA #REQUIRED>\n" -"\t\t<!ELEMENT slot (slotoption*)>\n" -"\t\t\t<!ATTLIST slot name CDATA #REQUIRED>\n" -"\t\t\t<!ELEMENT slotoption EMPTY>\n" -"\t\t\t\t<!ATTLIST slotoption name CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST slotoption devname CDATA #REQUIRED>\n" -"\t\t\t\t<!ATTLIST slotoption default (yes|no) \"no\">\n" -"\t\t<!ELEMENT softwarelist EMPTY>\n" -"\t\t\t<!ATTLIST softwarelist name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST softwarelist status (original|compatible) #REQUIRED>\n" -"\t\t\t<!ATTLIST softwarelist filter CDATA #IMPLIED>\n" -"\t\t<!ELEMENT ramoption (#PCDATA)>\n" -"\t\t\t<!ATTLIST ramoption name CDATA #REQUIRED>\n" -"\t\t\t<!ATTLIST ramoption default CDATA #IMPLIED>\n" -"]>"; - - -//************************************************************************** -// INFO XML CREATOR -//************************************************************************** - -//------------------------------------------------- -// info_xml_creator - constructor -//------------------------------------------------- - -info_xml_creator::info_xml_creator(emu_options const &options, bool dtd) - : m_dtd(dtd) -{ -} - - -//------------------------------------------------- -// output - print the XML information for all -// known machines matching a pattern -//------------------------------------------------- - -void info_xml_creator::output(std::ostream &out, const std::vector<std::string> &patterns) -{ - if (patterns.empty()) - { - // no patterns specified - show everything - output(out); - } - else - { - // patterns specified - we have to filter output - std::vector<bool> matched(patterns.size(), false); - size_t exact_matches = 0; - const auto filter = [&patterns, &matched, &exact_matches](const char *shortname, bool &done) -> bool - { - bool result = false; - auto it = matched.begin(); - for (const std::string &pat : patterns) - { - if (!core_strwildcmp(pat.c_str(), shortname)) - { - // this driver matches the pattern - tell the caller - result = true; - - // did we see this particular pattern before? if not, track that we have - if (!*it) - { - *it = true; - if (!core_iswildstr(pat.c_str())) - { - exact_matches++; - - // stop looking if we found everything specified - if (exact_matches == patterns.size()) - done = true; - } - } - } - it++; - } - return result; - }; - output(out, filter); - - // throw an error if there were unmatched patterns - auto iter = std::find(matched.begin(), matched.end(), false); - if (iter != matched.end()) - { - int index = iter - matched.begin(); - throw emu_fatalerror(EMU_ERR_NO_SUCH_GAME, "No matching machines found for '%s'", patterns[index].c_str()); - } - } -} - - -//------------------------------------------------- -// output - print the XML information for all -// known (and filtered) machines -//------------------------------------------------- - -void info_xml_creator::output(std::ostream &out, const std::function<bool(const char *shortname, bool &done)> &filter, bool include_devices) -{ - struct prepared_info - { - std::string m_xml_snippet; - device_type_set m_dev_set; - }; - - // prepare a driver enumerator and the queue - driver_enumerator drivlist(m_lookup_options); - bool drivlist_done = false; - bool filter_done = false; - bool header_outputted = false; - - auto output_header_if_necessary = [this, &header_outputted](std::ostream &out) - { - if (!header_outputted) - { - output_header(out, m_dtd); - header_outputted = true; - } - }; - - // only keep a device set when we're asked to track it - std::unique_ptr<device_type_set> devfilter; - if (include_devices && filter) - devfilter = std::make_unique<device_type_set>(); - - // prepare a queue of futures - std::queue<std::future<prepared_info>> queue; - - // try enumerating drivers and outputting them - while (!queue.empty() || (!drivlist_done && !filter_done)) - { - // try populating the queue - while (queue.size() < 20 && !drivlist_done && !filter_done) - { - if (!drivlist.next()) - { - // at this point we are done enumerating through drivlist and it is no - // longer safe to call next(), so record that we're done - drivlist_done = true; - } - else if (!filter || filter(drivlist.driver().name, filter_done)) - { - const game_driver &driver(drivlist.driver()); - std::future<prepared_info> future_pi = std::async(std::launch::async, [&drivlist, &driver, &devfilter] - { - prepared_info result; - std::ostringstream stream; - - output_one(stream, drivlist, driver, devfilter ? &result.m_dev_set : nullptr); - result.m_xml_snippet = stream.str(); - return result; - }); - queue.push(std::move(future_pi)); - } - } - - // now that we have the queue populated, try grabbing one (assuming that it is not empty) - if (!queue.empty()) - { - // wait for the future to complete and get the info - prepared_info pi = queue.front().get(); - queue.pop(); - - // emit the XML - output_header_if_necessary(out); - out << pi.m_xml_snippet; - - // merge devices into devfilter, if appropriate - if (devfilter) - { - for (const auto &x : pi.m_dev_set) - devfilter->insert(x); - } - } - } - - // iterate through the device types if not everything matches a driver - if (devfilter && !filter_done) - { - for (device_type type : registered_device_types) - { - if (!filter || filter(type.shortname(), filter_done)) - devfilter->insert(&type); - - if (filter_done) - break; - } - } - - // output devices (both devices with roms and slot devices) - if (include_devices && (!devfilter || !devfilter->empty())) - { - output_header_if_necessary(out); - output_devices(out, m_lookup_options, devfilter.get()); - } - - if (header_outputted) - output_footer(out); -} - - -//************************************************************************** -// ANONYMOUS NAMESPACE IMPLEMENTATION -//************************************************************************** - -namespace -{ - -//------------------------------------------------- -// normalize_string -//------------------------------------------------- - -std::string normalize_string(const char *string) -{ - std::ostringstream stream; - - if (string != nullptr) - { - while (*string) - { - switch (*string) - { - case '\"': stream << """; break; - case '&': stream << "&"; break; - case '<': stream << "<"; break; - case '>': stream << ">"; break; - default: - stream << *string; - break; - } - ++string; - } - } - return stream.str(); -} - - -//------------------------------------------------- -// output_header - print the XML DTD and open -// the root element -//------------------------------------------------- - -void output_header(std::ostream &out, bool dtd) -{ - if (dtd) - { - // output the DTD - out << "<?xml version=\"1.0\"?>\n"; - std::string dtd(s_dtd_string); - strreplace(dtd, "__XML_ROOT__", XML_ROOT); - strreplace(dtd, "__XML_TOP__", XML_TOP); - - out << dtd << "\n\n"; - } - - // top-level tag - out << util::string_format("<%s build=\"%s\" debug=\"" -#ifdef MAME_DEBUG - "yes" -#else - "no" -#endif - "\" mameconfig=\"%d\">\n", - XML_ROOT, - normalize_string(emulator_info::get_build_version()), - CONFIG_VERSION); -} - - -//------------------------------------------------- -// output_header - close the root element -//------------------------------------------------- - -void output_footer(std::ostream &out) -{ - // close the top level tag - out << util::string_format("</%s>\n", XML_ROOT); -} - - -//------------------------------------------------- -// output_one - print the XML information -// for one particular machine driver -//------------------------------------------------- - -void output_one(std::ostream &out, driver_enumerator &drivlist, const game_driver &driver, device_type_set *devtypes) -{ - machine_config config(driver, drivlist.options()); - device_iterator iter(config.root_device()); - - // allocate input ports and build overall emulation status - ioport_list portlist; - std::string errors; - device_t::feature_type overall_unemulated(driver.type.unemulated_features()); - device_t::feature_type overall_imperfect(driver.type.imperfect_features()); - for (device_t &device : iter) - { - portlist.append(device, errors); - overall_unemulated |= device.type().unemulated_features(); - overall_imperfect |= device.type().imperfect_features(); - - if (devtypes && device.owner()) - devtypes->insert(&device.type()); - } - - // renumber player numbers for controller ports - int player_offset = 0; - // but treat keyboard count separately from players' number - int kbd_offset = 0; - for (device_t &device : iter) - { - int nplayers = 0; - bool new_kbd = false; - for (auto &port : portlist) - if (&port.second->device() == &device) - for (ioport_field &field : port.second->fields()) - if (field.type() >= IPT_START && field.type() < IPT_ANALOG_LAST) - { - if (field.type() == IPT_KEYBOARD) - { - if (!new_kbd) - new_kbd = true; - field.set_player(field.player() + kbd_offset); - } - else - { - nplayers = std::max(nplayers, field.player() + 1); - field.set_player(field.player() + player_offset); - } - } - player_offset += nplayers; - if (new_kbd) kbd_offset++; - } - - // print the header and the machine name - out << util::string_format("\t<%s name=\"%s\"", XML_TOP, normalize_string(driver.name)); - - // strip away any path information from the source_file and output it - const char *start = strrchr(driver.type.source(), '/'); - if (!start) - start = strrchr(driver.type.source(), '\\'); - start = start ? (start + 1) : driver.type.source(); - out << util::string_format(" sourcefile=\"%s\"", normalize_string(start)); - - // append bios and runnable flags - if (driver.flags & machine_flags::IS_BIOS_ROOT) - out << " isbios=\"yes\""; - if (driver.flags & machine_flags::MECHANICAL) - out << " ismechanical=\"yes\""; - - // display clone information - int clone_of = drivlist.find(driver.parent); - if (clone_of != -1 && !(drivlist.driver(clone_of).flags & machine_flags::IS_BIOS_ROOT)) - out << util::string_format(" cloneof=\"%s\"", normalize_string(drivlist.driver(clone_of).name)); - if (clone_of != -1) - out << util::string_format(" romof=\"%s\"", normalize_string(drivlist.driver(clone_of).name)); - - // display sample information and close the game tag - output_sampleof(out, config.root_device()); - out << ">\n"; - - // output game description - if (driver.type.fullname() != nullptr) - out << util::string_format("\t\t<description>%s</description>\n", normalize_string(driver.type.fullname())); - - // print the year only if is a number or another allowed character (? or +) - if (driver.year != nullptr && strspn(driver.year, "0123456789?+") == strlen(driver.year)) - out << util::string_format("\t\t<year>%s</year>\n", normalize_string(driver.year)); - - // print the manufacturer information - if (driver.manufacturer != nullptr) - out << util::string_format("\t\t<manufacturer>%s</manufacturer>\n", normalize_string(driver.manufacturer)); - - // now print various additional information - output_bios(out, config.root_device()); - output_rom(out, &drivlist, &driver, config.root_device()); - output_device_refs(out, config.root_device()); - output_sample(out, config.root_device()); - output_chips(out, config.root_device(), ""); - output_display(out, config.root_device(), &driver.flags, ""); - output_sound(out, config.root_device()); - output_input(out, portlist); - output_switches(out, portlist, "", IPT_DIPSWITCH, "dipswitch", "diplocation", "dipvalue"); - output_switches(out, portlist, "", IPT_CONFIG, "configuration", "conflocation", "confsetting"); - output_ports(out, portlist); - output_adjusters(out, portlist); - output_driver(out, driver, overall_unemulated, overall_imperfect); - output_features(out, driver.type, overall_unemulated, overall_imperfect); - output_images(out, config.root_device(), ""); - output_slots(out, config, config.root_device(), "", devtypes); - output_software_list(out, config.root_device()); - output_ramoptions(out, config.root_device()); - - // close the topmost tag - out << util::string_format("\t</%s>\n", XML_TOP); -} - - -//------------------------------------------------- -// output_one_device - print the XML info for -// a single device -//------------------------------------------------- - -void output_one_device(std::ostream &out, machine_config &config, device_t &device, const char *devtag) -{ - bool has_speaker = false, has_input = false; - // check if the device adds speakers to the system - sound_interface_iterator snditer(device); - if (snditer.first() != nullptr) - has_speaker = true; - - // generate input list and build overall emulation status - ioport_list portlist; - std::string errors; - device_t::feature_type overall_unemulated(device.type().unemulated_features()); - device_t::feature_type overall_imperfect(device.type().imperfect_features()); - for (device_t &dev : device_iterator(device)) - { - portlist.append(dev, errors); - overall_unemulated |= dev.type().unemulated_features(); - overall_imperfect |= dev.type().imperfect_features(); - } - - // check if the device adds player inputs (other than dsw and configs) to the system - for (auto &port : portlist) - for (ioport_field const &field : port.second->fields()) - if (field.type() >= IPT_START1 && field.type() < IPT_UI_FIRST) - { - has_input = true; - break; - } - - // start to output info - out << util::string_format("\t<%s name=\"%s\"", XML_TOP, normalize_string(device.shortname())); - std::string src(device.source()); - strreplace(src,"../", ""); - out << util::string_format(" sourcefile=\"%s\" isdevice=\"yes\" runnable=\"no\"", normalize_string(src.c_str())); - output_sampleof(out, device); - out << ">\n" << util::string_format("\t\t<description>%s</description>\n", normalize_string(device.name())); - - output_bios(out, device); - output_rom(out, nullptr, nullptr, device); - output_device_refs(out, device); - - if (device.type().type() != typeid(samples_device)) // ignore samples_device itself - output_sample(out, device); - - output_chips(out, device, devtag); - output_display(out, device, nullptr, devtag); - if (has_speaker) - output_sound(out, device); - if (has_input) - output_input(out, portlist); - output_switches(out, portlist, devtag, IPT_DIPSWITCH, "dipswitch", "diplocation", "dipvalue"); - output_switches(out, portlist, devtag, IPT_CONFIG, "configuration", "conflocation", "confsetting"); - output_adjusters(out, portlist); - output_features(out, device.type(), overall_unemulated, overall_imperfect); - output_images(out, device, devtag); - output_slots(out, config, device, devtag, nullptr); - out << util::string_format("\t</%s>\n", XML_TOP); -} - - -//------------------------------------------------- -// output_devices - print the XML info for -// registered device types -//------------------------------------------------- - -void output_devices(std::ostream &out, emu_options &lookup_options, device_type_set const *filter) -{ - // get config for empty machine - machine_config config(GAME_NAME(___empty), lookup_options); - - auto const action = [&config, &out] (device_type type) - { - // add it at the root of the machine config - device_t *dev; - { - machine_config::token const tok(config.begin_configuration(config.root_device())); - dev = config.device_add("_tmp", type, 0); - } - - // notify this device and all its subdevices that they are now configured - for (device_t &device : device_iterator(*dev)) - if (!device.configured()) - device.config_complete(); - - // print details and remove it - output_one_device(out, config, *dev, dev->tag()); - machine_config::token const tok(config.begin_configuration(config.root_device())); - config.device_remove("_tmp"); - }; - - // run through devices - if (filter) - { - for (std::add_pointer_t<device_type> type : *filter) action(*type); - } - else - { - for (device_type type : registered_device_types) action(type); - } -} - - -//------------------------------------------------ -// output_device_refs - when a machine uses a -// subdevice, print a reference -//------------------------------------------------- - -void output_device_refs(std::ostream &out, device_t &root) -{ - for (device_t &device : device_iterator(root)) - if (&device != &root) - out << util::string_format("\t\t<device_ref name=\"%s\"/>\n", normalize_string(device.shortname())); -} - - -//------------------------------------------------ -// output_sampleof - print the 'sampleof' -// attribute, if appropriate -//------------------------------------------------- - -void output_sampleof(std::ostream &out, device_t &device) -{ - // iterate over sample devices - for (samples_device &samples : samples_device_iterator(device)) - { - samples_iterator sampiter(samples); - if (sampiter.altbasename() != nullptr) - { - out << util::string_format(" sampleof=\"%s\"", normalize_string(sampiter.altbasename())); - - // must stop here, as there can only be one attribute of the same name - return; - } - } -} - - -//------------------------------------------------- -// output_bios - print BIOS sets for a device -//------------------------------------------------- - -void output_bios(std::ostream &out, device_t const &device) -{ - // first determine the default BIOS name - char const *defaultname(nullptr); - for (tiny_rom_entry const *rom = device.rom_region(); rom && !ROMENTRY_ISEND(rom); ++rom) - { - if (ROMENTRY_ISDEFAULT_BIOS(rom)) - defaultname = rom->name; - } - - // iterate over ROM entries and look for BIOSes - for (romload::system_bios const &bios : romload::entries(device.rom_region()).get_system_bioses()) - { - // output extracted name and descriptions' - out << "\t\t<biosset"; - out << util::string_format(" name=\"%s\"", normalize_string(bios.get_name())); - out << util::string_format(" description=\"%s\"", normalize_string(bios.get_description())); - if (defaultname && !std::strcmp(defaultname, bios.get_name())) - out << " default=\"yes\""; - out << "/>\n"; - } -} - - -//------------------------------------------------- -// output_rom - print the roms section of -// the XML output -//------------------------------------------------- - -void output_rom(std::ostream &out, driver_enumerator *drivlist, const game_driver *driver, device_t &device) -{ - enum class type { BIOS, NORMAL, DISK }; - std::map<u32, char const *> biosnames; - bool bios_scanned(false); - auto const get_biosname = - [&biosnames, &bios_scanned] (tiny_rom_entry const *rom) -> char const * - { - u32 const biosflags(ROM_GETBIOSFLAGS(rom)); - std::map<u32, char const *>::const_iterator const found(biosnames.find(biosflags)); - if (biosnames.end() != found) - return found->second; - - char const *result(nullptr); - if (!bios_scanned) - { - for (++rom; !ROMENTRY_ISEND(rom); ++rom) - { - if (ROMENTRY_ISSYSTEM_BIOS(rom)) - { - u32 const biosno(ROM_GETBIOSFLAGS(rom)); - biosnames.emplace(biosno, rom->name); - if (biosflags == biosno) - result = rom->name; - } - } - bios_scanned = true; - } - return result; - }; - auto const rom_file_size = // FIXME: need a common way to do this without the cost of allocating rom_entry - [] (tiny_rom_entry const *romp) -> u32 - { - u32 maxlength = 0; - - // loop until we run out of reloads - do - { - // loop until we run out of continues/ignores */ - u32 curlength(ROM_GETLENGTH(romp++)); - while (ROMENTRY_ISCONTINUE(romp) || ROMENTRY_ISIGNORE(romp)) - curlength += ROM_GETLENGTH(romp++); - - // track the maximum length - maxlength = (std::max)(maxlength, curlength); - } - while (ROMENTRY_ISRELOAD(romp)); - - return maxlength; - }; - - // iterate over 3 different ROM "types": BIOS, ROMs, DISKs - bool const do_merge_name = drivlist && dynamic_cast<driver_device *>(&device); - for (type pass : { type::BIOS, type::NORMAL, type::DISK }) - { - tiny_rom_entry const *region(nullptr); - for (tiny_rom_entry const *rom = device.rom_region(); rom && !ROMENTRY_ISEND(rom); ++rom) - { - if (ROMENTRY_ISREGION(rom)) - region = rom; - else if (ROMENTRY_ISSYSTEM_BIOS(rom)) - biosnames.emplace(ROM_GETBIOSFLAGS(rom), rom->name); - - if (!ROMENTRY_ISFILE(rom)) - continue; - - // only list disks on the disk pass - bool const is_disk = ROMREGION_ISDISKDATA(region); - if ((type::DISK == pass) != is_disk) - continue; - - // BIOS ROMs only apply to bioses - // FIXME: disk images associated with a system BIOS will never be listed - u32 const biosno(ROM_GETBIOSFLAGS(rom)); - if ((type::BIOS == pass) != bool(biosno)) - continue; - char const *const bios_name((!is_disk && biosno) ? get_biosname(rom) : nullptr); - - // if we have a valid ROM and we are a clone, see if we can find the parent ROM - util::hash_collection const hashes(rom->hashdata); - char const *const merge_name((do_merge_name && !hashes.flag(util::hash_collection::FLAG_NO_DUMP)) ? get_merge_name(*drivlist, *driver, hashes) : nullptr); - - // opening tag - if (is_disk) - out << "\t\t<disk"; - else - out << "\t\t<rom"; - - // add name, merge, bios, and size tags */ - char const *const name(rom->name); - if (name && name[0]) - out << util::string_format(" name=\"%s\"", normalize_string(name)); - if (merge_name) - out << util::string_format(" merge=\"%s\"", normalize_string(merge_name)); - if (bios_name) - out << util::string_format(" bios=\"%s\"", normalize_string(bios_name)); - if (!is_disk) - out << util::string_format(" size=\"%u\"", rom_file_size(rom)); - - // dump checksum information only if there is a known dump - if (!hashes.flag(util::hash_collection::FLAG_NO_DUMP)) - out << ' ' << hashes.attribute_string(); // iterate over hash function types and print m_output their values - else - out << " status=\"nodump\""; - - // append a region name - out << util::string_format(" region=\"%s\"", region->name); - - if (!is_disk) - { - // for non-disk entries, print offset - out << util::string_format(" offset=\"%x\"", ROM_GETOFFSET(rom)); - } - else - { - // for disk entries, add the disk index - out << util::string_format(" index=\"%x\" writable=\"%s\"", DISK_GETINDEX(rom), DISK_ISREADONLY(rom) ? "no" : "yes"); - } - - // add optional flag - if (ROM_ISOPTIONAL(rom)) - out << " optional=\"yes\""; - - out << "/>\n"; - } - bios_scanned = true; - } -} - - -//------------------------------------------------- -// output_sample - print a list of all -// samples referenced by a game_driver -//------------------------------------------------- - -void output_sample(std::ostream &out, device_t &device) -{ - // iterate over sample devices - for (samples_device &samples : samples_device_iterator(device)) - { - samples_iterator iter(samples); - std::unordered_set<std::string> already_printed; - for (const char *samplename = iter.first(); samplename != nullptr; samplename = iter.next()) - { - // filter out duplicates - if (!already_printed.insert(samplename).second) - continue; - - // output the sample name - out << util::string_format("\t\t<sample name=\"%s\"/>\n", normalize_string(samplename)); - } - } -} - - -/*------------------------------------------------- - output_chips - print a list of CPU and - sound chips used by a game --------------------------------------------------*/ - -void output_chips(std::ostream &out, device_t &device, const char *root_tag) -{ - // iterate over executable devices - for (device_execute_interface &exec : execute_interface_iterator(device)) - { - if (strcmp(exec.device().tag(), device.tag())) - { - std::string newtag(exec.device().tag()), oldtag(":"); - newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); - - out << "\t\t<chip"; - out << " type=\"cpu\""; - out << util::string_format(" tag=\"%s\"", normalize_string(newtag.c_str())); - out << util::string_format(" name=\"%s\"", normalize_string(exec.device().name())); - out << util::string_format(" clock=\"%d\"", exec.device().clock()); - out << "/>\n"; - } - } - - // iterate over sound devices - for (device_sound_interface &sound : sound_interface_iterator(device)) - { - if (strcmp(sound.device().tag(), device.tag()) != 0 && sound.issound()) - { - std::string newtag(sound.device().tag()), oldtag(":"); - newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); - - out << "\t\t<chip"; - out << " type=\"audio\""; - out << util::string_format(" tag=\"%s\"", normalize_string(newtag.c_str())); - out << util::string_format(" name=\"%s\"", normalize_string(sound.device().name())); - if (sound.device().clock() != 0) - out << util::string_format(" clock=\"%d\"", sound.device().clock()); - out << "/>\n"; - } - } -} - - -//------------------------------------------------- -// output_display - print a list of all the -// displays -//------------------------------------------------- - -void output_display(std::ostream &out, device_t &device, machine_flags::type const *flags, const char *root_tag) -{ - // iterate over screens - for (const screen_device &screendev : screen_device_iterator(device)) - { - if (strcmp(screendev.tag(), device.tag())) - { - std::string newtag(screendev.tag()), oldtag(":"); - newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); - - out << util::string_format("\t\t<display tag=\"%s\"", normalize_string(newtag.c_str())); - - switch (screendev.screen_type()) - { - case SCREEN_TYPE_RASTER: out << " type=\"raster\""; break; - case SCREEN_TYPE_VECTOR: out << " type=\"vector\""; break; - case SCREEN_TYPE_LCD: out << " type=\"lcd\""; break; - case SCREEN_TYPE_SVG: out << " type=\"svg\""; break; - default: out << " type=\"unknown\""; break; - } - - // output the orientation as a string - switch (screendev.orientation()) - { - case ORIENTATION_FLIP_X: - out << " rotate=\"0\" flipx=\"yes\""; - break; - case ORIENTATION_FLIP_Y: - out << " rotate=\"180\" flipx=\"yes\""; - break; - case ORIENTATION_FLIP_X|ORIENTATION_FLIP_Y: - out << " rotate=\"180\""; - break; - case ORIENTATION_SWAP_XY: - out << " rotate=\"90\" flipx=\"yes\""; - break; - case ORIENTATION_SWAP_XY|ORIENTATION_FLIP_X: - out << " rotate=\"90\""; - break; - case ORIENTATION_SWAP_XY|ORIENTATION_FLIP_Y: - out << " rotate=\"270\""; - break; - case ORIENTATION_SWAP_XY|ORIENTATION_FLIP_X|ORIENTATION_FLIP_Y: - out << " rotate=\"270\" flipx=\"yes\""; - break; - default: - out << " rotate=\"0\""; - break; - } - - // output width and height only for games that are not vector - if (screendev.screen_type() != SCREEN_TYPE_VECTOR) - { - const rectangle &visarea = screendev.visible_area(); - out << util::string_format(" width=\"%d\"", visarea.width()); - out << util::string_format(" height=\"%d\"", visarea.height()); - } - - // output refresh rate - out << util::string_format(" refresh=\"%f\"", ATTOSECONDS_TO_HZ(screendev.refresh_attoseconds())); - - // output raw video parameters only for games that are not vector - // and had raw parameters specified - if (screendev.screen_type() != SCREEN_TYPE_VECTOR && !screendev.oldstyle_vblank_supplied()) - { - int pixclock = screendev.width() * screendev.height() * ATTOSECONDS_TO_HZ(screendev.refresh_attoseconds()); - - out << util::string_format(" pixclock=\"%d\"", pixclock); - out << util::string_format(" htotal=\"%d\"", screendev.width()); - out << util::string_format(" hbend=\"%d\"", screendev.visible_area().min_x); - out << util::string_format(" hbstart=\"%d\"", screendev.visible_area().max_x+1); - out << util::string_format(" vtotal=\"%d\"", screendev.height()); - out << util::string_format(" vbend=\"%d\"", screendev.visible_area().min_y); - out << util::string_format(" vbstart=\"%d\"", screendev.visible_area().max_y+1); - } - out << " />\n"; - } - } -} - - -//------------------------------------------------- -// output_sound - print a list of all the -// speakers -//------------------------------------------------ - -void output_sound(std::ostream &out, device_t &device) -{ - speaker_device_iterator spkiter(device); - int speakers = spkiter.count(); - - // if we have no sound, zero m_output the speaker count - sound_interface_iterator snditer(device); - if (snditer.first() == nullptr) - speakers = 0; - - out << util::string_format("\t\t<sound channels=\"%d\"/>\n", speakers); -} - - -//------------------------------------------------- -// output_ioport_condition - print condition -// required to use I/O port field/setting -//------------------------------------------------- - -void output_ioport_condition(std::ostream &out, const ioport_condition &condition, unsigned indent) -{ - for (unsigned i = 0; indent > i; ++i) - out << '\t'; - - char const *rel(nullptr); - switch (condition.condition()) - { - case ioport_condition::ALWAYS: throw false; - case ioport_condition::EQUALS: rel = "eq"; break; - case ioport_condition::NOTEQUALS: rel = "ne"; break; - case ioport_condition::GREATERTHAN: rel = "gt"; break; - case ioport_condition::NOTGREATERTHAN: rel = "le"; break; - case ioport_condition::LESSTHAN: rel = "lt"; break; - case ioport_condition::NOTLESSTHAN: rel = "ge"; break; - } - - out << util::string_format("<condition tag=\"%s\" mask=\"%u\" relation=\"%s\" value=\"%u\"/>\n", normalize_string(condition.tag()), condition.mask(), rel, condition.value()); -} - -//------------------------------------------------- -// output_input - print a summary of a game's -// input -//------------------------------------------------- - -void output_input(std::ostream &out, const ioport_list &portlist) -{ - // enumerated list of control types - // NOTE: the order is chosen so that 'spare' button inputs are assigned to the - // most-likely-correct input device when info is output (you can think of it as - // a sort of likelihood order of having buttons) - enum - { - CTRL_DIGITAL_BUTTONS, - CTRL_DIGITAL_JOYSTICK, - CTRL_ANALOG_JOYSTICK, - CTRL_ANALOG_LIGHTGUN, - CTRL_ANALOG_DIAL, - CTRL_ANALOG_POSITIONAL, - CTRL_ANALOG_TRACKBALL, - CTRL_ANALOG_MOUSE, - CTRL_ANALOG_PADDLE, - CTRL_ANALOG_PEDAL, - CTRL_DIGITAL_KEYPAD, - CTRL_DIGITAL_KEYBOARD, - CTRL_DIGITAL_MAHJONG, - CTRL_DIGITAL_HANAFUDA, - CTRL_DIGITAL_GAMBLING, - CTRL_COUNT - }; - - enum - { - CTRL_P1, - CTRL_P2, - CTRL_P3, - CTRL_P4, - CTRL_P5, - CTRL_P6, - CTRL_P7, - CTRL_P8, - CTRL_P9, - CTRL_P10, - CTRL_PCOUNT - }; - - // directions - const uint8_t DIR_UP = 0x01; - const uint8_t DIR_DOWN = 0x02; - const uint8_t DIR_LEFT = 0x04; - const uint8_t DIR_RIGHT = 0x08; - - // initialize the list of control types - struct - { - const char * type; // general type of input - int player; // player which the input belongs to - int nbuttons; // total number of buttons - int reqbuttons; // total number of non-optional buttons - int maxbuttons; // max index of buttons (using IPT_BUTTONn) [probably to be removed soonish] - int ways; // directions for joystick - bool analog; // is analog input? - uint8_t helper[3]; // for dual joysticks [possibly to be removed soonish] - int32_t min; // analog minimum value - int32_t max; // analog maximum value - int32_t sensitivity; // default analog sensitivity - int32_t keydelta; // default analog keydelta - bool reverse; // default analog reverse setting - } control_info[CTRL_COUNT * CTRL_PCOUNT]; - - memset(&control_info, 0, sizeof(control_info)); - - // tracking info as we iterate - int nplayer = 0; - int ncoin = 0; - bool service = false; - bool tilt = false; - - // iterate over the ports - for (auto &port : portlist) - { - int ctrl_type = CTRL_DIGITAL_BUTTONS; - bool ctrl_analog = false; - for (ioport_field &field : port.second->fields()) - { - // track the highest player number - if (nplayer < field.player() + 1) - nplayer = field.player() + 1; - - // switch off of the type - switch (field.type()) - { - // map joysticks - case IPT_JOYSTICK_UP: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_UP; - break; - case IPT_JOYSTICK_DOWN: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_DOWN; - break; - case IPT_JOYSTICK_LEFT: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_LEFT; - break; - case IPT_JOYSTICK_RIGHT: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[0] |= DIR_RIGHT; - break; - - case IPT_JOYSTICKLEFT_UP: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_UP; - break; - case IPT_JOYSTICKLEFT_DOWN: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_DOWN; - break; - case IPT_JOYSTICKLEFT_LEFT: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_LEFT; - break; - case IPT_JOYSTICKLEFT_RIGHT: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[1] |= DIR_RIGHT; - break; - - case IPT_JOYSTICKRIGHT_UP: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_UP; - break; - case IPT_JOYSTICKRIGHT_DOWN: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_DOWN; - break; - case IPT_JOYSTICKRIGHT_LEFT: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_LEFT; - break; - case IPT_JOYSTICKRIGHT_RIGHT: - ctrl_type = CTRL_DIGITAL_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "joy"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].ways = field.way(); - control_info[field.player() * CTRL_COUNT + ctrl_type].helper[2] |= DIR_RIGHT; - break; - - // map analog inputs - case IPT_AD_STICK_X: - case IPT_AD_STICK_Y: - case IPT_AD_STICK_Z: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_JOYSTICK; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "stick"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - case IPT_PADDLE: - case IPT_PADDLE_V: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_PADDLE; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "paddle"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - case IPT_PEDAL: - case IPT_PEDAL2: - case IPT_PEDAL3: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_PEDAL; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "pedal"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - case IPT_LIGHTGUN_X: - case IPT_LIGHTGUN_Y: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_LIGHTGUN; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "lightgun"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - case IPT_POSITIONAL: - case IPT_POSITIONAL_V: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_POSITIONAL; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "positional"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - case IPT_DIAL: - case IPT_DIAL_V: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_DIAL; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "dial"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - case IPT_TRACKBALL_X: - case IPT_TRACKBALL_Y: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_TRACKBALL; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "trackball"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - case IPT_MOUSE_X: - case IPT_MOUSE_Y: - ctrl_analog = true; - ctrl_type = CTRL_ANALOG_MOUSE; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "mouse"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = true; - break; - - // map buttons - case IPT_BUTTON1: - case IPT_BUTTON2: - case IPT_BUTTON3: - case IPT_BUTTON4: - case IPT_BUTTON5: - case IPT_BUTTON6: - case IPT_BUTTON7: - case IPT_BUTTON8: - case IPT_BUTTON9: - case IPT_BUTTON10: - case IPT_BUTTON11: - case IPT_BUTTON12: - case IPT_BUTTON13: - case IPT_BUTTON14: - case IPT_BUTTON15: - case IPT_BUTTON16: - ctrl_analog = false; - if (control_info[field.player() * CTRL_COUNT + ctrl_type].type == nullptr) - { - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "only_buttons"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].analog = false; - } - control_info[field.player() * CTRL_COUNT + ctrl_type].maxbuttons = std::max(control_info[field.player() * CTRL_COUNT + ctrl_type].maxbuttons, field.type() - IPT_BUTTON1 + 1); - control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++; - if (!field.optional()) - control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++; - break; - - // track maximum coin index - case IPT_COIN1: - case IPT_COIN2: - case IPT_COIN3: - case IPT_COIN4: - case IPT_COIN5: - case IPT_COIN6: - case IPT_COIN7: - case IPT_COIN8: - case IPT_COIN9: - case IPT_COIN10: - case IPT_COIN11: - case IPT_COIN12: - ncoin = std::max(ncoin, field.type() - IPT_COIN1 + 1); - break; - - // track presence of keypads and keyboards - case IPT_KEYPAD: - ctrl_type = CTRL_DIGITAL_KEYPAD; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "keypad"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++; - if (!field.optional()) - control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++; - break; - - case IPT_KEYBOARD: - ctrl_type = CTRL_DIGITAL_KEYBOARD; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "keyboard"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++; - if (!field.optional()) - control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++; - break; - - // additional types - case IPT_SERVICE: - service = true; - break; - - case IPT_TILT: - tilt = true; - break; - - default: - if (field.type() > IPT_MAHJONG_FIRST && field.type() < IPT_MAHJONG_LAST) - { - ctrl_type = CTRL_DIGITAL_MAHJONG; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "mahjong"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++; - if (!field.optional()) - control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++; - } - else if (field.type() > IPT_HANAFUDA_FIRST && field.type() < IPT_HANAFUDA_LAST) - { - ctrl_type = CTRL_DIGITAL_HANAFUDA; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "hanafuda"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++; - if (!field.optional()) - control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++; - } - else if (field.type() > IPT_GAMBLING_FIRST && field.type() < IPT_GAMBLING_LAST) - { - ctrl_type = CTRL_DIGITAL_GAMBLING; - control_info[field.player() * CTRL_COUNT + ctrl_type].type = "gambling"; - control_info[field.player() * CTRL_COUNT + ctrl_type].player = field.player() + 1; - control_info[field.player() * CTRL_COUNT + ctrl_type].nbuttons++; - if (!field.optional()) - control_info[field.player() * CTRL_COUNT + ctrl_type].reqbuttons++; - } - break; - } - - if (ctrl_analog) - { - // get the analog stats - if (field.minval() != 0) - control_info[field.player() * CTRL_COUNT + ctrl_type].min = field.minval(); - if (field.maxval() != 0) - control_info[field.player() * CTRL_COUNT + ctrl_type].max = field.maxval(); - if (field.sensitivity() != 0) - control_info[field.player() * CTRL_COUNT + ctrl_type].sensitivity = field.sensitivity(); - if (field.delta() != 0) - control_info[field.player() * CTRL_COUNT + ctrl_type].keydelta = field.delta(); - if (field.analog_reverse() != 0) - control_info[field.player() * CTRL_COUNT + ctrl_type].reverse = true; - } - } - } - - // Clean-up those entries, if any, where buttons were defined in a separate port than the actual controller they belong to. - // This is quite often the case, especially for arcades where controls can be easily mapped to separate input ports on PCB. - // If such situation would only happen for joystick, it would be possible to work it around by initializing differently - // ctrl_type above, but it is quite common among analog inputs as well (for instance, this is the tipical situation - // for lightguns) and therefore we really need this separate loop. - for (int i = 0; i < CTRL_PCOUNT; i++) - { - bool fix_done = false; - for (int j = 1; j < CTRL_COUNT; j++) - if (control_info[i * CTRL_COUNT].type != nullptr && control_info[i * CTRL_COUNT + j].type != nullptr && !fix_done) - { - control_info[i * CTRL_COUNT + j].nbuttons += control_info[i * CTRL_COUNT].nbuttons; - control_info[i * CTRL_COUNT + j].reqbuttons += control_info[i * CTRL_COUNT].reqbuttons; - control_info[i * CTRL_COUNT + j].maxbuttons = std::max(control_info[i * CTRL_COUNT + j].maxbuttons, control_info[i * CTRL_COUNT].maxbuttons); - - memset(&control_info[i * CTRL_COUNT], 0, sizeof(control_info[0])); - fix_done = true; - } - } - - // Output the input info - // First basic info - out << "\t\t<input"; - out << util::string_format(" players=\"%d\"", nplayer); - if (ncoin != 0) - out << util::string_format(" coins=\"%d\"", ncoin); - if (service) - out << util::string_format(" service=\"yes\""); - if (tilt) - out << util::string_format(" tilt=\"yes\""); - out << ">\n"; - - // Then controller specific ones - for (auto & elem : control_info) - if (elem.type != nullptr) - { - //printf("type %s - player %d - buttons %d\n", elem.type, elem.player, elem.nbuttons); - if (elem.analog) - { - out << util::string_format("\t\t\t<control type=\"%s\"", normalize_string(elem.type)); - if (nplayer > 1) - out << util::string_format(" player=\"%d\"", elem.player); - if (elem.nbuttons > 0) - { - out << util::string_format(" buttons=\"%d\"", strcmp(elem.type, "stick") ? elem.nbuttons : elem.maxbuttons); - if (elem.reqbuttons < elem.nbuttons) - out << util::string_format(" reqbuttons=\"%d\"", elem.reqbuttons); - } - if (elem.min != 0 || elem.max != 0) - out << util::string_format(" minimum=\"%d\" maximum=\"%d\"", elem.min, elem.max); - if (elem.sensitivity != 0) - out << util::string_format(" sensitivity=\"%d\"", elem.sensitivity); - if (elem.keydelta != 0) - out << util::string_format(" keydelta=\"%d\"", elem.keydelta); - if (elem.reverse) - out << " reverse=\"yes\""; - - out << "/>\n"; - } - else - { - if (elem.helper[1] == 0 && elem.helper[2] != 0) { elem.helper[1] = elem.helper[2]; elem.helper[2] = 0; } - if (elem.helper[0] == 0 && elem.helper[1] != 0) { elem.helper[0] = elem.helper[1]; elem.helper[1] = 0; } - if (elem.helper[1] == 0 && elem.helper[2] != 0) { elem.helper[1] = elem.helper[2]; elem.helper[2] = 0; } - const char *joys = (elem.helper[2] != 0) ? "triple" : (elem.helper[1] != 0) ? "double" : ""; - out << util::string_format("\t\t\t<control type=\"%s%s\"", joys, normalize_string(elem.type)); - if (nplayer > 1) - out << util::string_format(" player=\"%d\"", elem.player); - if (elem.nbuttons > 0) - { - out << util::string_format(" buttons=\"%d\"", strcmp(elem.type, "joy") ? elem.nbuttons : elem.maxbuttons); - if (elem.reqbuttons < elem.nbuttons) - out << util::string_format(" reqbuttons=\"%d\"", elem.reqbuttons); - } - for (int lp = 0; lp < 3 && elem.helper[lp] != 0; lp++) - { - const char *plural = (lp==2) ? "3" : (lp==1) ? "2" : ""; - const char *ways; - std::string helper; - switch (elem.helper[lp] & (DIR_UP | DIR_DOWN | DIR_LEFT | DIR_RIGHT)) - { - case DIR_UP | DIR_DOWN | DIR_LEFT | DIR_RIGHT: - helper = string_format("%d", (elem.ways == 0) ? 8 : elem.ways); - ways = helper.c_str(); - break; - case DIR_LEFT | DIR_RIGHT: - ways = "2"; - break; - case DIR_UP | DIR_DOWN: - ways = "vertical2"; - break; - case DIR_UP: - case DIR_DOWN: - case DIR_LEFT: - case DIR_RIGHT: - ways = "1"; - break; - case DIR_UP | DIR_DOWN | DIR_LEFT: - case DIR_UP | DIR_DOWN | DIR_RIGHT: - case DIR_UP | DIR_LEFT | DIR_RIGHT: - case DIR_DOWN | DIR_LEFT | DIR_RIGHT: - ways = (elem.ways == 4) ? "3 (half4)" : "5 (half8)"; - break; - default: - ways = "strange2"; - break; - } - out << util::string_format(" ways%s=\"%s\"", plural, ways); - } - out << "/>\n"; - } - } - - out << "\t\t</input>\n"; -} - - -//------------------------------------------------- -// output_switches - print the configurations or -// DIP switch settings -//------------------------------------------------- - -void output_switches(std::ostream &out, const ioport_list &portlist, const char *root_tag, int type, const char *outertag, const char *loctag, const char *innertag) -{ - // iterate looking for DIP switches - for (auto &port : portlist) - for (ioport_field const &field : port.second->fields()) - if (field.type() == type) - { - std::string newtag(port.second->tag()), oldtag(":"); - newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); - - // output the switch name information - std::string const normalized_field_name(normalize_string(field.name())); - std::string const normalized_newtag(normalize_string(newtag.c_str())); - out << util::string_format("\t\t<%s name=\"%s\" tag=\"%s\" mask=\"%u\">\n", outertag, normalized_field_name.c_str(), normalized_newtag.c_str(), field.mask()); - if (!field.condition().none()) - output_ioport_condition(out, field.condition(), 3); - - // loop over locations - for (ioport_diplocation const &diploc : field.diplocations()) - { - out << util::string_format("\t\t\t<%s name=\"%s\" number=\"%u\"", loctag, normalize_string(diploc.name()), diploc.number()); - if (diploc.inverted()) - out << " inverted=\"yes\""; - out << "/>\n"; - } - - // loop over settings - for (ioport_setting const &setting : field.settings()) - { - out << util::string_format("\t\t\t<%s name=\"%s\" value=\"%u\"", innertag, normalize_string(setting.name()), setting.value()); - if (setting.value() == field.defvalue()) - out << " default=\"yes\""; - if (setting.condition().none()) - { - out << "/>\n"; - } - else - { - out << ">\n"; - output_ioport_condition(out, setting.condition(), 4); - out << util::string_format("\t\t\t</%s>\n", innertag); - } - } - - // terminate the switch entry - out << util::string_format("\t\t</%s>\n", outertag); - } -} - -//------------------------------------------------- -// output_ports - print the structure of input -// ports in the driver -//------------------------------------------------- -void output_ports(std::ostream &out, const ioport_list &portlist) -{ - // cycle through ports - for (auto &port : portlist) - { - out << util::string_format("\t\t<port tag=\"%s\">\n", normalize_string(port.second->tag())); - for (ioport_field const &field : port.second->fields()) - { - if (field.is_analog()) - out << util::string_format("\t\t\t<analog mask=\"%u\"/>\n", field.mask()); - } - out << util::string_format("\t\t</port>\n"); - } - -} - -//------------------------------------------------- -// output_adjusters - print the Analog -// Adjusters for a game -//------------------------------------------------- - -void output_adjusters(std::ostream &out, const ioport_list &portlist) -{ - // iterate looking for Adjusters - for (auto &port : portlist) - for (ioport_field const &field : port.second->fields()) - if (field.type() == IPT_ADJUSTER) - { - out << util::string_format("\t\t<adjuster name=\"%s\" default=\"%d\"/>\n", normalize_string(field.name()), field.defvalue()); - } -} - - -//------------------------------------------------- -// output_driver - print driver status -//------------------------------------------------- - -void output_driver(std::ostream &out, game_driver const &driver, device_t::feature_type unemulated, device_t::feature_type imperfect) -{ - out << "\t\t<driver"; - - /* - The status entry is an hint for frontend authors to select working - and not working games without the need to know all the other status - entries. Games marked as status=good are perfectly emulated, games - marked as status=imperfect are emulated with only some minor issues, - games marked as status=preliminary don't work or have major - emulation problems. - */ - - u32 const flags = driver.flags; - bool const machine_preliminary(flags & (machine_flags::NOT_WORKING | machine_flags::MECHANICAL)); - bool const unemulated_preliminary(unemulated & (device_t::feature::PALETTE | device_t::feature::GRAPHICS | device_t::feature::SOUND | device_t::feature::KEYBOARD)); - bool const imperfect_preliminary((unemulated | imperfect) & device_t::feature::PROTECTION); - - if (machine_preliminary || unemulated_preliminary || imperfect_preliminary) - out << " status=\"preliminary\""; - else if (imperfect) - out << " status=\"imperfect\""; - else - out << " status=\"good\""; - - if (flags & machine_flags::NOT_WORKING) - out << " emulation=\"preliminary\""; - else - out << " emulation=\"good\""; - - if (flags & machine_flags::NO_COCKTAIL) - out << " cocktail=\"preliminary\""; - - if (flags & machine_flags::SUPPORTS_SAVE) - out << " savestate=\"supported\""; - else - out << " savestate=\"unsupported\""; - - out << "/>\n"; -} - - -//------------------------------------------------- -// output_features - print emulation features of -// -//------------------------------------------------- - -void output_features(std::ostream &out, device_type type, device_t::feature_type unemulated, device_t::feature_type imperfect) -{ - static constexpr std::pair<device_t::feature_type, char const *> features[] = { - { device_t::feature::PROTECTION, "protection" }, - { device_t::feature::TIMING, "timing" }, - { device_t::feature::GRAPHICS, "graphics" }, - { device_t::feature::PALETTE, "palette" }, - { device_t::feature::SOUND, "sound" }, - { device_t::feature::CAPTURE, "capture" }, - { device_t::feature::CAMERA, "camera" }, - { device_t::feature::MICROPHONE, "microphone" }, - { device_t::feature::CONTROLS, "controls" }, - { device_t::feature::KEYBOARD, "keyboard" }, - { device_t::feature::MOUSE, "mouse" }, - { device_t::feature::MEDIA, "media" }, - { device_t::feature::DISK, "disk" }, - { device_t::feature::PRINTER, "printer" }, - { device_t::feature::TAPE, "tape" }, - { device_t::feature::PUNCH, "punch" }, - { device_t::feature::DRUM, "drum" }, - { device_t::feature::ROM, "rom" }, - { device_t::feature::COMMS, "comms" }, - { device_t::feature::LAN, "lan" }, - { device_t::feature::WAN, "wan" } }; - - device_t::feature_type const flags(type.unemulated_features() | type.imperfect_features() | unemulated | imperfect); - for (auto const &feature : features) - { - if (flags & feature.first) - { - out << util::string_format("\t\t<feature type=\"%s\"", feature.second); - if (type.unemulated_features() & feature.first) - { - out << " status=\"unemulated\""; - } - else - { - if (type.imperfect_features() & feature.first) - out << " status=\"imperfect\""; - if (unemulated & feature.first) - out << " overall=\"unemulated\""; - else if ((~type.imperfect_features() & imperfect) & feature.first) - out << " overall=\"imperfect\""; - } - out << "/>\n"; - } - } -} - - -//------------------------------------------------- -// output_images - prints m_output all info on -// image devices -//------------------------------------------------- - -void output_images(std::ostream &out, device_t &device, const char *root_tag) -{ - for (const device_image_interface &imagedev : image_interface_iterator(device)) - { - if (strcmp(imagedev.device().tag(), device.tag())) - { - bool loadable = imagedev.user_loadable(); - std::string newtag(imagedev.device().tag()), oldtag(":"); - newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); - - // print m_output device type - out << util::string_format("\t\t<device type=\"%s\"", normalize_string(imagedev.image_type_name())); - - // does this device have a tag? - if (imagedev.device().tag()) - out << util::string_format(" tag=\"%s\"", normalize_string(newtag.c_str())); - - // is this device available as media switch? - if (!loadable) - out << " fixed_image=\"1\""; - - // is this device mandatory? - if (imagedev.must_be_loaded()) - out << " mandatory=\"1\""; - - if (imagedev.image_interface() && imagedev.image_interface()[0]) - out << util::string_format(" interface=\"%s\"", normalize_string(imagedev.image_interface())); - - // close the XML tag - out << ">\n"; - - if (loadable) - { - char const *const name = imagedev.instance_name().c_str(); - char const *const shortname = imagedev.brief_instance_name().c_str(); - - out << "\t\t\t<instance"; - out << util::string_format(" name=\"%s\"", normalize_string(name)); - out << util::string_format(" briefname=\"%s\"", normalize_string(shortname)); - out << "/>\n"; - - char const *extensions(imagedev.file_extensions()); - while (extensions) - { - char const *end(extensions); - while (*end && (',' != *end)) - ++end; - out << util::string_format("\t\t\t<extension name=\"%s\"/>\n", normalize_string(std::string(extensions, end).c_str())); - extensions = *end ? (end + 1) : nullptr; - } - } - out << "\t\t</device>\n"; - } - } -} - - -//------------------------------------------------- -// output_slots - prints all info about slots -//------------------------------------------------- - -void output_slots(std::ostream &out, machine_config &config, device_t &device, const char *root_tag, device_type_set *devtypes) -{ - for (device_slot_interface &slot : slot_interface_iterator(device)) - { - // shall we list fixed slots as non-configurable? - bool const listed(!slot.fixed() && strcmp(slot.device().tag(), device.tag())); - - if (devtypes || listed) - { - machine_config::token const tok(config.begin_configuration(slot.device())); - std::string newtag(slot.device().tag()), oldtag(":"); - newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); - - // print m_output device type - if (listed) - out << util::string_format("\t\t<slot name=\"%s\">\n", normalize_string(newtag.c_str())); - - for (auto &option : slot.option_list()) - { - if (devtypes || (listed && option.second->selectable())) - { - device_t *const dev = config.device_add("_dummy", option.second->devtype(), option.second->clock()); - if (!dev->configured()) - dev->config_complete(); - - if (devtypes) - for (device_t &subdevice : device_iterator(*dev)) devtypes->insert(&subdevice.type()); - - if (listed && option.second->selectable()) - { - out << util::string_format("\t\t\t<slotoption name=\"%s\"", normalize_string(option.second->name())); - out << util::string_format(" devname=\"%s\"", normalize_string(dev->shortname())); - if (slot.default_option() != nullptr && strcmp(slot.default_option(), option.second->name())==0) - out << " default=\"yes\""; - out << "/>\n"; - } - - config.device_remove("_dummy"); - } - } - - if (listed) - out << "\t\t</slot>\n"; - } - } -} - - -//------------------------------------------------- -// output_software_list - print the information -// for all known software lists for this system -//------------------------------------------------- - -void output_software_list(std::ostream &out, device_t &root) -{ - for (const software_list_device &swlist : software_list_device_iterator(root)) - { - out << util::string_format("\t\t<softwarelist name=\"%s\" status=\"%s\"", normalize_string(swlist.list_name().c_str()), (swlist.list_type() == SOFTWARE_LIST_ORIGINAL_SYSTEM) ? "original" : "compatible"); - if (swlist.filter()) - out << util::string_format(" filter=\"%s\"", normalize_string(swlist.filter())); - out << "/>\n"; - } -} - - - -//------------------------------------------------- -// output_ramoptions - prints m_output all RAM -// options for this system -//------------------------------------------------- - -void output_ramoptions(std::ostream &out, device_t &root) -{ - for (const ram_device &ram : ram_device_iterator(root, 1)) - { - if (!std::strcmp(ram.tag(), ":" RAM_TAG)) - { - uint32_t const defsize(ram.default_size()); - bool havedefault(false); - for (ram_device::extra_option const &option : ram.extra_options()) - { - if (defsize == option.second) - { - assert(!havedefault); - havedefault = true; - out << util::string_format("\t\t<ramoption name=\"%s\" default=\"yes\">%u</ramoption>\n", normalize_string(option.first.c_str()), option.second); - } - else - { - out << util::string_format("\t\t<ramoption name=\"%s\">%u</ramoption>\n", normalize_string(option.first.c_str()), option.second); - } - } - if (!havedefault) - out << util::string_format("\t\t<ramoption name=\"%s\" default=\"yes\">%u</ramoption>\n", ram.default_size_string(), defsize); - break; - } - } -} - - -//------------------------------------------------- -// get_merge_name - get the rom name from a -// parent set -//------------------------------------------------- - -const char *get_merge_name(driver_enumerator &drivlist, const game_driver &driver, util::hash_collection const &romhashes) -{ - // walk the parent chain - for (int clone_of = drivlist.find(driver.parent); 0 <= clone_of; clone_of = drivlist.find(drivlist.driver(clone_of).parent)) - { - // look in the parent's ROMs - for (romload::region const &pregion : romload::entries(drivlist.driver(clone_of).rom).get_regions()) - { - for (romload::file const &prom : pregion.get_files()) - { - // stop when we find a match - util::hash_collection const phashes(prom.get_hashdata()); - if (!phashes.flag(util::hash_collection::FLAG_NO_DUMP) && (romhashes == phashes)) - return prom.get_name(); - } - } - } - - return nullptr; -} - - -//------------------------------------------------- -// device_type_compare::operator() -//------------------------------------------------- - -bool device_type_compare::operator()(const std::add_pointer_t<device_type> &lhs, const std::add_pointer_t<device_type> &rhs) const -{ - return strcmp(lhs->shortname(), rhs->shortname()) < 0; -} - -} diff --git a/docs/release/src/frontend/mame/language.cpp b/docs/release/src/frontend/mame/language.cpp new file mode 100644 index 00000000000..ee149a63e3b --- /dev/null +++ b/docs/release/src/frontend/mame/language.cpp @@ -0,0 +1,185 @@ +// license:BSD-3-Clause +// copyright-holders:Vas Crabb +/*************************************************************************** + + language.cpp + + Multi-language support. + +***************************************************************************/ + +#include "emu.h" +#include "emuopts.h" + +#include <cstring> +#include <memory> +#include <new> +#include <unordered_map> + + +namespace { + +constexpr uint32_t MO_MAGIC = 0x950412de; +constexpr uint32_t MO_MAGIC_REVERSED = 0xde120495; + +struct cstr_hash +{ + size_t operator()(char const *s) const noexcept + { + // Bernstein string hash + size_t result(5381); + while (*s) + result = ((result << 5) + result) + u8(*s++); + return result; + } +}; + +struct cstr_compare +{ + size_t operator()(char const *x, char const *y) const noexcept + { + return !std::strcmp(x, y); + } +}; + +std::unique_ptr<u32 []> f_translation_data; +std::unordered_map<char const *, char const *, cstr_hash, cstr_compare> f_translation_map; + +} // anonymous namespace + + +char const *lang_translate(char const *word) +{ + auto const found = f_translation_map.find(word); + return (f_translation_map.end() != found) ? found->second : word; +} + + +void load_translation(emu_options &m_options) +{ + f_translation_data.reset(); + f_translation_map.clear(); + + std::string name = m_options.language(); + if (name.empty()) + return; + + strreplace(name, " ", "_"); + strreplace(name, "(", ""); + strreplace(name, ")", ""); + + // MESSUI: See if language file exists. If not, try English, see if that exists. If not, use inbuilt default. + emu_file file(m_options.language_path(), OPEN_FLAG_READ); + if (file.open(name.c_str(), PATH_SEPARATOR "strings.mo") != osd_file::error::NONE) + { + osd_printf_verbose("Error opening translation file %s\n", name); + name = "English"; + if (file.open(name.c_str(), PATH_SEPARATOR "strings.mo") != osd_file::error::NONE) + { + osd_printf_verbose("Error opening translation file %s\n", name); + return; + } + } + + u64 const size = file.size(); + if (20 > size) + { + file.close(); + osd_printf_error("Error reading translation file %s: %u-byte file is too small to contain translation data\n", name, size); + return; + } + + f_translation_data.reset(new (std::nothrow) uint32_t [(size + 3) / 4]); + if (!f_translation_data) + { + file.close(); + osd_printf_error("Failed to allocate %u bytes to load translation data file %s\n", size, name); + return; + } + + auto const read = file.read(f_translation_data.get(), size); + file.close(); + if (read != size) + { + osd_printf_error("Error reading translation file %s: requested %u bytes but got %u bytes\n", name, size, read); + f_translation_data.reset(); + return; + } + + if ((f_translation_data[0] != MO_MAGIC) && (f_translation_data[0] != MO_MAGIC_REVERSED)) + { + osd_printf_error("Error reading translation file %s: unrecognized magic number 0x%08X\n", name, f_translation_data[0]); + f_translation_data.reset(); + return; + } + + auto fetch_word = + [reversed = f_translation_data[0] == MO_MAGIC_REVERSED, words = f_translation_data.get()] (size_t offset) + { + return reversed ? swapendian_int32(words[offset]) : words[offset]; + }; + + // FIXME: check major/minor version number + + if ((fetch_word(3) % 4) || (fetch_word(4) % 4)) + { + osd_printf_error("Error reading translation file %s: table offsets %u and %u are not word-aligned\n", name, fetch_word(3), fetch_word(4)); + f_translation_data.reset(); + return; + } + + u32 const number_of_strings = fetch_word(2); + u32 const original_table_offset = fetch_word(3) >> 2; + u32 const translation_table_offset = fetch_word(4) >> 2; + if ((4 * (original_table_offset + (u64(number_of_strings) * 2))) > size) + { + osd_printf_error("Error reading translation file %s: %u-entry original string table at offset %u extends past end of %u-byte file\n", name, number_of_strings, fetch_word(3), size); + f_translation_data.reset(); + return; + } + if ((4 * (translation_table_offset + (u64(number_of_strings) * 2))) > size) + { + osd_printf_error("Error reading translation file %s: %u-entry translated string table at offset %u extends past end of %u-byte file\n", name, number_of_strings, fetch_word(4), size); + f_translation_data.reset(); + return; + } + osd_printf_verbose("Reading translation file %s: %u strings, original table at word offset %u, translated table at word offset %u\n", name, number_of_strings, original_table_offset, translation_table_offset); + + char const *const data = reinterpret_cast<char const *>(f_translation_data.get()); + for (u32 i = 1; number_of_strings > i; ++i) + { + u32 const original_length = fetch_word(original_table_offset + (2 * i)); + u32 const original_offset = fetch_word(original_table_offset + (2 * i) + 1); + if ((original_length + original_offset) >= size) + { + osd_printf_error("Error reading translation file %s: %u-byte original string %u at offset %u extends past end of %u-byte file\n", name, original_length, i, original_offset, size); + continue; + } + if (data[original_length + original_offset]) + { + osd_printf_error("Error reading translation file %s: %u-byte original string %u at offset %u is not correctly NUL-terminated\n", name, original_length, i, original_offset); + continue; + } + + u32 const translation_length = fetch_word(translation_table_offset + (2 * i)); + u32 const translation_offset = fetch_word(translation_table_offset + (2 * i) + 1); + if ((translation_length + translation_offset) >= size) + { + osd_printf_error("Error reading translation file %s: %u-byte translated string %u at offset %u extends past end of %u-byte file\n", name, translation_length, i, translation_offset, size); + continue; + } + if (data[translation_length + translation_offset]) + { + osd_printf_error("Error reading translation file %s: %u-byte translated string %u at offset %u is not correctly NUL-terminated\n", name, translation_length, i, translation_offset); + continue; + } + + char const *const original = &data[original_offset]; + char const *const translation = &data[translation_offset]; + auto const ins = f_translation_map.emplace(original, translation); + if (!ins.second) + osd_printf_warning("Loading translation file %s: translation %u '%s'='%s' conflicts with previous translation '%s'='%s'\n", name, i, original, translation, ins.first->first, ins.first->second); + } + + osd_printf_verbose("Loaded %u translations from file %s\n", f_translation_map.size(), name); +} diff --git a/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp b/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp index 2228e75c72f..c8802f8f333 100644 --- a/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp +++ b/docs/release/src/hbmame/bus/neogeo/banked_cart.cpp @@ -99,7 +99,7 @@ void neogeo_banked_cart_device::init_banks(void) void neogeo_banked_cart_device::install_banks(running_machine& machine, cpu_device* maincpu, uint8_t* region, uint32_t region_size) { maincpu->space(AS_PROGRAM).install_read_bank(0x200000, 0x2fffff, "cartridge"); - maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(FUNC(neogeo_banked_cart_device::main_cpu_bank_select_w),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(*this, FUNC(neogeo_banked_cart_device::main_cpu_bank_select_w))); m_bank_cartridge = machine.root_device().membank("cartridge"); m_region = region; diff --git a/docs/release/src/hbmame/bus/neogeo/prot.cpp b/docs/release/src/hbmame/bus/neogeo/prot.cpp index 27af99cca04..4dc19f14d26 100644 --- a/docs/release/src/hbmame/bus/neogeo/prot.cpp +++ b/docs/release/src/hbmame/bus/neogeo/prot.cpp @@ -144,11 +144,11 @@ void ngbootleg_prot_device::install_kof10th_protection (cpu_device* maincpu, neo m_fixedrom = fixedrom; m_bankdev = bankdev; - maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof10th_RAM2_r),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0fffff, read16_delegate(*this, FUNC(ngbootleg_prot_device::kof10th_RAM2_r))); - maincpu->space(AS_PROGRAM).install_read_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof10th_RAMB_r),this)); - maincpu->space(AS_PROGRAM).install_write_handler(0x200000, 0x23ffff, write16_delegate(FUNC(ngbootleg_prot_device::kof10th_custom_w),this)); - maincpu->space(AS_PROGRAM).install_write_handler(0x240000, 0x2fffff, write16_delegate(FUNC(ngbootleg_prot_device::kof10th_bankswitch_w),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe000, 0x2fffff, read16_delegate(*this, FUNC(ngbootleg_prot_device::kof10th_RAMB_r))); + maincpu->space(AS_PROGRAM).install_write_handler(0x200000, 0x23ffff, write16_delegate(*this, FUNC(ngbootleg_prot_device::kof10th_custom_w))); + maincpu->space(AS_PROGRAM).install_write_handler(0x240000, 0x2fffff, write16_delegate(*this, FUNC(ngbootleg_prot_device::kof10th_bankswitch_w))); memcpy(m_cartridge_ram2, cpurom + 0xe0000, 0x20000); // HACK: only save this at device_start (not allowed later) @@ -433,7 +433,7 @@ void ngbootleg_prot_device::patch_cthd2003(cpu_device* maincpu, neogeo_banked_ca uint16_t *mem16 = (uint16_t *)cpurom; /* special ROM banking handler */ - maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(FUNC(ngbootleg_prot_device::cthd2003_bankswitch_w),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(*this, FUNC(ngbootleg_prot_device::cthd2003_bankswitch_w))); m_bankdev = bankdev; // theres still a problem on the character select screen but it seems to be related to cpu core timing issues, @@ -660,8 +660,8 @@ void ngbootleg_prot_device::install_ms5plus_protection(cpu_device* maincpu, neog { // special ROM banking handler / additional protection maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2ffff0, 0x2fffff, - read16_delegate(FUNC(ngbootleg_prot_device::mslug5_prot_r),this), - write16_delegate(FUNC(ngbootleg_prot_device::ms5plus_bankswitch_w),this)); + read16_delegate(*this, FUNC(ngbootleg_prot_device::mslug5_prot_r)), + write16_delegate(*this, FUNC(ngbootleg_prot_device::ms5plus_bankswitch_w))); m_bankdev = bankdev; } @@ -855,9 +855,9 @@ void ngbootleg_prot_device::kf2k3bl_install_protection(cpu_device* maincpu, neog { m_mainrom = cpurom; - maincpu->space(AS_PROGRAM).install_read_handler(0x58196, 0x58197, read16_delegate(FUNC(ngbootleg_prot_device::kof2003_overlay_r),this) ); + maincpu->space(AS_PROGRAM).install_read_handler(0x58196, 0x58197, read16_delegate(*this, FUNC(ngbootleg_prot_device::kof2003_overlay_r))); - maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(ngbootleg_prot_device::kof2003_r),this), write16_delegate(FUNC(ngbootleg_prot_device::kof2003_w),this) ); + maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(*this, FUNC(ngbootleg_prot_device::kof2003_r)), write16_delegate(*this, FUNC(ngbootleg_prot_device::kof2003_w))); m_bankdev = bankdev; } @@ -888,8 +888,8 @@ void ngbootleg_prot_device::kf2k3pl_install_protection(cpu_device* maincpu, neog { m_mainrom = cpurom; maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, - read16_delegate(FUNC(ngbootleg_prot_device::kof2003_r),this), - write16_delegate(FUNC(ngbootleg_prot_device::kof2003p_w),this) ); + read16_delegate(*this, FUNC(ngbootleg_prot_device::kof2003_r)), + write16_delegate(*this, FUNC(ngbootleg_prot_device::kof2003p_w))); m_bankdev = bankdev; } @@ -1026,7 +1026,7 @@ READ16_MEMBER(kog_prot_device::read_jumper) void kog_prot_device::kog_install_protection(cpu_device* maincpu) { /* overlay cartridge ROM */ - maincpu->space(AS_PROGRAM).install_read_handler(0x0ffffe, 0x0fffff, read16_delegate(FUNC(kog_prot_device::read_jumper), this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x0ffffe, 0x0fffff, read16_delegate(*this, FUNC(kog_prot_device::read_jumper))); } @@ -1869,8 +1869,8 @@ void fatfury2_prot_device::fatfury2_install_protection(cpu_device* maincpu, neog /* the protection involves reading and writing addresses in the */ /* 0x2xxxxx range. There are several checks all around the code. */ maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200000, 0x2fffff, - read16_delegate(FUNC(fatfury2_prot_device::fatfury2_protection_16_r),this), - write16_delegate(FUNC(fatfury2_prot_device::fatfury2_protection_16_w),this)); + read16_delegate(*this, FUNC(fatfury2_prot_device::fatfury2_protection_16_r)), + write16_delegate(*this, FUNC(fatfury2_prot_device::fatfury2_protection_16_w))); m_bankdev = bankdev; m_fatfury2_prot_data = 0; @@ -2061,8 +2061,8 @@ WRITE16_MEMBER( kof98_prot_device::kof98_prot_w ) void kof98_prot_device::install_kof98_protection(cpu_device* maincpu) { /* when 0x20aaaa contains 0x0090 (word) then 0x100 (normally the neogeo header) should return 0x00c200fd worked out using real hw */ - maincpu->space(AS_PROGRAM).install_read_handler(0x00100, 0x00103, read16_delegate(FUNC(kof98_prot_device::kof98_prot_r),this)); - maincpu->space(AS_PROGRAM).install_write_handler(0x20aaaa, 0x20aaab, write16_delegate(FUNC(kof98_prot_device::kof98_prot_w),this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x00100, 0x00103, read16_delegate(*this, FUNC(kof98_prot_device::kof98_prot_r))); + maincpu->space(AS_PROGRAM).install_write_handler(0x20aaaa, 0x20aaab, write16_delegate(*this, FUNC(kof98_prot_device::kof98_prot_w))); } /***********************************************************************************************************************************/ @@ -2153,8 +2153,8 @@ READ16_MEMBER( mslugx_prot_device::mslugx_protection_16_r ) void mslugx_prot_device::mslugx_install_protection(cpu_device* maincpu) { maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fffe0, 0x2fffef, - read16_delegate(FUNC(mslugx_prot_device::mslugx_protection_16_r),this), - write16_delegate(FUNC(mslugx_prot_device::mslugx_protection_16_w),this)); + read16_delegate(*this, FUNC(mslugx_prot_device::mslugx_protection_16_r)), + write16_delegate(*this, FUNC(mslugx_prot_device::mslugx_protection_16_w))); } /***********************************************************************************************************************************/ @@ -2316,8 +2316,8 @@ void pvc_prot_device::install_pvc_protection(cpu_device* maincpu, neogeo_banked_ { m_bankdev = bankdev; maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, - read16_delegate(FUNC(pvc_prot_device::pvc_prot_r),this), - write16_delegate(FUNC(pvc_prot_device::pvc_prot_w),this)); + read16_delegate(*this, FUNC(pvc_prot_device::pvc_prot_r)), + write16_delegate(*this, FUNC(pvc_prot_device::pvc_prot_w))); } @@ -2596,8 +2596,8 @@ void sbp_prot_device::sbp_install_protection(cpu_device* maincpu, uint8_t* cpuro // there are also writes to 0x1080.. // // other stuff going on as well tho, the main overlay is still missing, and p1 inputs don't work - maincpu->space(AS_PROGRAM).install_read_handler(0x00200, 0x001fff, read16_delegate(FUNC(sbp_prot_device::sbp_lowerrom_r), this)); - maincpu->space(AS_PROGRAM).install_write_handler(0x00200, 0x001fff, write16_delegate(FUNC(sbp_prot_device::sbp_lowerrom_w), this)); + maincpu->space(AS_PROGRAM).install_read_handler(0x00200, 0x001fff, read16_delegate(*this, FUNC(sbp_prot_device::sbp_lowerrom_r))); + maincpu->space(AS_PROGRAM).install_write_handler(0x00200, 0x001fff, write16_delegate(*this, FUNC(sbp_prot_device::sbp_lowerrom_w))); /* the game code clears the text overlay used ingame immediately after writing it.. why? protection? sloppy code that the hw ignores? imperfect emulation? */ { @@ -2798,15 +2798,15 @@ void sma_prot_device::reset_sma_rng() void sma_prot_device::sma_install_random_read_handler(cpu_device* maincpu, int addr1, int addr2 ) { - maincpu->space(AS_PROGRAM).install_read_handler(addr1, addr1 + 1, read16_delegate(FUNC(sma_prot_device::sma_random_r),this)); - maincpu->space(AS_PROGRAM).install_read_handler(addr2, addr2 + 1, read16_delegate(FUNC(sma_prot_device::sma_random_r),this)); + maincpu->space(AS_PROGRAM).install_read_handler(addr1, addr1 + 1, read16_delegate(*this, FUNC(sma_prot_device::sma_random_r))); + maincpu->space(AS_PROGRAM).install_read_handler(addr2, addr2 + 1, read16_delegate(*this, FUNC(sma_prot_device::sma_random_r))); } void sma_prot_device::kof99_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) { - maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(FUNC(sma_prot_device::kof99_bankswitch_w),this)); - maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(*this, FUNC(sma_prot_device::kof99_bankswitch_w))); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*this, FUNC(sma_prot_device::prot_9a37_r))); m_bankdev = bankdev; sma_install_random_read_handler(maincpu, 0x2ffff8, 0x2ffffa); @@ -2815,8 +2815,8 @@ void sma_prot_device::kof99_install_protection(cpu_device* maincpu, neogeo_banke void sma_prot_device::garou_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) { - maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(sma_prot_device::garou_bankswitch_w),this)); - maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(*this, FUNC(sma_prot_device::garou_bankswitch_w))); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*this, FUNC(sma_prot_device::prot_9a37_r))); m_bankdev = bankdev; sma_install_random_read_handler(maincpu, 0x2fffcc, 0x2ffff0); @@ -2825,8 +2825,8 @@ void sma_prot_device::garou_install_protection(cpu_device* maincpu, neogeo_banke void sma_prot_device::garouh_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) { - maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(sma_prot_device::garouh_bankswitch_w),this)); - maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(*this, FUNC(sma_prot_device::garouh_bankswitch_w))); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*this, FUNC(sma_prot_device::prot_9a37_r))); m_bankdev = bankdev; sma_install_random_read_handler(maincpu, 0x2fffcc, 0x2ffff0); @@ -2835,8 +2835,8 @@ void sma_prot_device::garouh_install_protection(cpu_device* maincpu, neogeo_bank void sma_prot_device::mslug3_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) { - maincpu->space(AS_PROGRAM).install_write_handler(0x2fffe4, 0x2fffe5, write16_delegate(FUNC(sma_prot_device::mslug3_bankswitch_w),this)); - maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffe4, 0x2fffe5, write16_delegate(*this, FUNC(sma_prot_device::mslug3_bankswitch_w))); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*this, FUNC(sma_prot_device::prot_9a37_r))); m_bankdev = bankdev; // sma_install_random_read_handler(maincpu, 0x2ffff8, 0x2ffffa); @@ -2845,8 +2845,8 @@ void sma_prot_device::mslug3_install_protection(cpu_device* maincpu, neogeo_bank void sma_prot_device::kof2000_install_protection(cpu_device* maincpu, neogeo_banked_cart_device* bankdev) { - maincpu->space(AS_PROGRAM).install_write_handler(0x2fffec, 0x2fffed, write16_delegate(FUNC(sma_prot_device::kof2000_bankswitch_w),this)); - maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(sma_prot_device::prot_9a37_r),this)); + maincpu->space(AS_PROGRAM).install_write_handler(0x2fffec, 0x2fffed, write16_delegate(*this, FUNC(sma_prot_device::kof2000_bankswitch_w))); + maincpu->space(AS_PROGRAM).install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*this, FUNC(sma_prot_device::prot_9a37_r))); m_bankdev = bankdev; sma_install_random_read_handler(maincpu, 0x2fffd8, 0x2fffda); diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp index 7a026646e3a..6de326f89c1 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.cpp @@ -42,7 +42,7 @@ DEFINE_DEVICE_TYPE(NEOGEO_CTRL_EDGE_CONNECTOR, neogeo_ctrl_edge_port_device, "ne //------------------------------------------------- device_neogeo_control_port_interface::device_neogeo_control_port_interface(const machine_config &mconfig, device_t &device) - : device_slot_card_interface(mconfig,device) + : device_interface(device, "neogeoctrl") { m_port = dynamic_cast<neogeo_control_port_device *>(device.owner()); } @@ -61,7 +61,7 @@ device_neogeo_control_port_interface::~device_neogeo_control_port_interface() //------------------------------------------------- device_neogeo_ctrl_edge_interface::device_neogeo_ctrl_edge_interface(const machine_config &mconfig, device_t &device) - : device_slot_card_interface(mconfig,device) + : device_interface(device, "neogeoedge") { m_port = dynamic_cast<neogeo_ctrl_edge_port_device *>(device.owner()); } @@ -86,7 +86,7 @@ device_neogeo_ctrl_edge_interface::~device_neogeo_ctrl_edge_interface() neogeo_control_port_device::neogeo_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, NEOGEO_CONTROL_PORT, tag, owner, clock), - device_slot_interface(mconfig, *this), m_device(nullptr) + device_single_card_slot_interface<device_neogeo_control_port_interface>(mconfig, *this), m_device(nullptr) { } @@ -106,7 +106,7 @@ neogeo_control_port_device::~neogeo_control_port_device() void neogeo_control_port_device::device_start() { - m_device = dynamic_cast<device_neogeo_control_port_interface *>(get_card_device()); + m_device = get_card_device(); } @@ -140,7 +140,8 @@ void neogeo_control_port_device::write_ctrlsel(uint8_t data) neogeo_ctrl_edge_port_device::neogeo_ctrl_edge_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, NEOGEO_CTRL_EDGE_CONNECTOR, tag, owner, clock), - device_slot_interface(mconfig, *this), m_device(nullptr) + device_single_card_slot_interface<device_neogeo_ctrl_edge_interface>(mconfig, *this), + m_device(nullptr) { } @@ -160,23 +161,23 @@ neogeo_ctrl_edge_port_device::~neogeo_ctrl_edge_port_device() void neogeo_ctrl_edge_port_device::device_start() { - m_device = dynamic_cast<device_neogeo_ctrl_edge_interface *>(get_card_device()); + m_device = get_card_device(); } -READ8_MEMBER(neogeo_ctrl_edge_port_device::in0_r) +u8 neogeo_ctrl_edge_port_device::in0_r() { uint8_t data = 0xff; if (m_device) - data &= m_device->in0_r(space, offset, mem_mask); + data &= m_device->in0_r(); return data; } -READ8_MEMBER(neogeo_ctrl_edge_port_device::in1_r) +u8 neogeo_ctrl_edge_port_device::in1_r() { uint8_t data = 0xff; if (m_device) - data &= m_device->in1_r(space, offset, mem_mask); + data &= m_device->in1_r(); return data; } diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h index 341bfeeb96b..c2da5be1ef4 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/ctrl.h @@ -23,7 +23,7 @@ class neogeo_ctrl_edge_port_device; // ======================> device_neogeo_control_port_interface -class device_neogeo_control_port_interface : public device_slot_card_interface +class device_neogeo_control_port_interface : public device_interface { public: // construction/destruction @@ -40,8 +40,7 @@ protected: // ======================> neogeo_control_port_device -class neogeo_control_port_device : public device_t, - public device_slot_interface +class neogeo_control_port_device : public device_t, public device_single_card_slot_interface<device_neogeo_control_port_interface> { public: // construction/destruction @@ -51,7 +50,6 @@ public: uint8_t read_ctrl(); uint8_t read_start_sel(); void write_ctrlsel(uint8_t data); - DECLARE_READ8_MEMBER( ctrl_r ) { return read_ctrl(); } protected: // device-level overrides @@ -63,7 +61,7 @@ protected: // ======================> device_neogeo_ctrl_edge_interface -class device_neogeo_ctrl_edge_interface : public device_slot_card_interface +class device_neogeo_ctrl_edge_interface : public device_interface { public: // construction/destruction @@ -71,8 +69,8 @@ public: virtual ~device_neogeo_ctrl_edge_interface(); virtual uint8_t read_start_sel() { return 0xff; } - virtual DECLARE_READ8_MEMBER( in0_r ) { return 0xff; } - virtual DECLARE_READ8_MEMBER( in1_r ) { return 0xff; } + virtual u8 in0_r() { return 0xff; } + virtual u8 in1_r() { return 0xff; } virtual void write_ctrlsel(uint8_t data) { } protected: @@ -81,8 +79,7 @@ protected: // ======================> neogeo_ctrl_edge_port_device -class neogeo_ctrl_edge_port_device : public device_t, - public device_slot_interface +class neogeo_ctrl_edge_port_device : public device_t, public device_single_card_slot_interface<device_neogeo_ctrl_edge_interface> { public: // construction/destruction @@ -90,8 +87,8 @@ public: virtual ~neogeo_ctrl_edge_port_device(); uint8_t read_start_sel(); - DECLARE_READ8_MEMBER( in0_r ); - DECLARE_READ8_MEMBER( in1_r ); + u8 in0_r(); + u8 in1_r(); void write_ctrlsel(uint8_t data); protected: diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp index bf3dc8526aa..b2edeab9e66 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.cpp @@ -95,7 +95,7 @@ void neogeo_dial_device::device_reset() // in0_r //------------------------------------------------- -READ8_MEMBER(neogeo_dial_device::in0_r) +u8 neogeo_dial_device::in0_r() { uint8_t res = 0; if (m_ctrl_sel & 0x01) @@ -110,7 +110,7 @@ READ8_MEMBER(neogeo_dial_device::in0_r) // in1_r //------------------------------------------------- -READ8_MEMBER(neogeo_dial_device::in1_r) +u8 neogeo_dial_device::in1_r() { uint8_t res = 0; if (m_ctrl_sel & 0x01) diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h index 06850e1c66d..ffa077648ae 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/dial.h @@ -37,8 +37,8 @@ protected: virtual void device_reset() override; // device_neogeo_control_port_interface overrides - virtual DECLARE_READ8_MEMBER( in0_r ) override; - virtual DECLARE_READ8_MEMBER( in1_r ) override; + virtual u8 in0_r() override; + virtual u8 in1_r() override; virtual void write_ctrlsel(uint8_t data) override; private: diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp index 4515781fe93..3465d9b6ebc 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.cpp @@ -83,7 +83,7 @@ void neogeo_irrmaze_device::device_reset() // in0_r //------------------------------------------------- -READ8_MEMBER(neogeo_irrmaze_device::in0_r) +u8 neogeo_irrmaze_device::in0_r() { uint8_t res = 0; if (m_ctrl_sel & 0x01) @@ -98,7 +98,7 @@ READ8_MEMBER(neogeo_irrmaze_device::in0_r) // in1_r //------------------------------------------------- -READ8_MEMBER(neogeo_irrmaze_device::in1_r) +u8 neogeo_irrmaze_device::in1_r() { return m_buttons->read(); } diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h index dddb84f2785..a365f283fdb 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/irrmaze.h @@ -37,8 +37,8 @@ protected: virtual void device_reset() override; // device_neogeo_control_port_interface overrides - virtual DECLARE_READ8_MEMBER( in0_r ) override; - virtual DECLARE_READ8_MEMBER( in1_r ) override; + virtual u8 in0_r() override; + virtual u8 in1_r() override; virtual void write_ctrlsel(uint8_t data) override; private: diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp index 6fb092f79dd..2c0a2cfb1e9 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.cpp @@ -190,7 +190,7 @@ void neogeo_joy_ac_device::device_reset() // in0_r //------------------------------------------------- -READ8_MEMBER(neogeo_joy_ac_device::in0_r) +u8 neogeo_joy_ac_device::in0_r() { return m_joy1->read(); } @@ -199,7 +199,7 @@ READ8_MEMBER(neogeo_joy_ac_device::in0_r) // in1_r //------------------------------------------------- -READ8_MEMBER(neogeo_joy_ac_device::in1_r) +u8 neogeo_joy_ac_device::in1_r() { return m_joy2->read(); } diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h index 9d5c94d4b22..9e93a8cfe04 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/joystick.h @@ -64,8 +64,8 @@ protected: virtual void device_reset() override; // device_neogeo_ctrl_edge_interface overrides - virtual DECLARE_READ8_MEMBER( in0_r ) override; - virtual DECLARE_READ8_MEMBER( in1_r ) override; + virtual u8 in0_r() override; + virtual u8 in1_r() override; private: required_ioport m_joy1; diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp index 2f81ee28153..cfac135736a 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.cpp @@ -121,7 +121,7 @@ void neogeo_kizuna4p_device::device_reset() // in0_r //------------------------------------------------- -READ8_MEMBER(neogeo_kizuna4p_device::in0_r) +u8 neogeo_kizuna4p_device::in0_r() { uint8_t res = 0; if (m_ctrl_sel & 0x01) @@ -138,7 +138,7 @@ READ8_MEMBER(neogeo_kizuna4p_device::in0_r) // in1_r //------------------------------------------------- -READ8_MEMBER(neogeo_kizuna4p_device::in1_r) +u8 neogeo_kizuna4p_device::in1_r() { uint8_t res = 0; if (m_ctrl_sel & 0x01) diff --git a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h index 3a5fb43f96c..4c78cec68c0 100644 --- a/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h +++ b/docs/release/src/hbmame/bus/neogeo_ctrl/kizuna4p.h @@ -37,8 +37,8 @@ protected: virtual void device_reset() override; // device_neogeo_control_port_interface overrides - virtual DECLARE_READ8_MEMBER( in0_r ) override; - virtual DECLARE_READ8_MEMBER( in1_r ) override; + virtual u8 in0_r() override; + virtual u8 in1_r() override; virtual uint8_t read_start_sel() override; virtual void write_ctrlsel(uint8_t data) override; diff --git a/docs/release/src/hbmame/drivers/cinemat.cpp b/docs/release/src/hbmame/drivers/cinemat.cpp index 3ee3bb60250..6405aa78b8f 100644 --- a/docs/release/src/hbmame/drivers/cinemat.cpp +++ b/docs/release/src/hbmame/drivers/cinemat.cpp @@ -29,7 +29,7 @@ public: void init_bbugtest() { - m_maincpu->space(AS_IO).install_read_handler(0x0c, 0x0f, read8_delegate(FUNC(cinemat_hbmame::boxingb_dial_r),this)); + m_maincpu->space(AS_IO).install_read_handler(0x0c, 0x0f, read8_delegate(*this, FUNC(cinemat_hbmame::boxingb_dial_r))); } }; diff --git a/docs/release/src/hbmame/drivers/cps1.cpp b/docs/release/src/hbmame/drivers/cps1.cpp index a7947f8fcc1..8884dca36f1 100644 --- a/docs/release/src/hbmame/drivers/cps1.cpp +++ b/docs/release/src/hbmame/drivers/cps1.cpp @@ -353,11 +353,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(cps_state::ganbare_interrupt) void cps_state::cpu_space_map(address_map &map) { // Eventually add the sync to E due to vpa - map(0xfffff2, 0xffffff).lr16("autovectors", [this](offs_t offset) -> u16 { + map(0xfffff2, 0xffffff).lr16(NAME([this](offs_t offset) -> u16 { // clear the IPL1 and IPL2 flip-flops m_maincpu->set_input_line(2, CLEAR_LINE); m_maincpu->set_input_line(4, CLEAR_LINE); - return 0x19+offset; }); + return 0x19+offset; })); } @@ -12336,7 +12336,7 @@ READ16_MEMBER(cps_state::sf2rb_prot_r) void cps_state::init_sf2rb() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(FUNC(cps_state::sf2rb_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(*this, FUNC(cps_state::sf2rb_prot_r))); init_cps1();} @@ -12356,7 +12356,7 @@ READ16_MEMBER(cps_state::sf2rb2_prot_r) void cps_state::init_sf2rb2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(FUNC(cps_state::sf2rb2_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(*this, FUNC(cps_state::sf2rb2_prot_r))); init_cps1(); } @@ -12366,7 +12366,7 @@ void cps_state::init_sf2ee() /* This specific revision of SF2 has the CPS-B custom mapped at a different address. */ /* The mapping is handled by the PAL IOB2 on the B-board */ m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x800140, 0x80017f); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(FUNC(cps_state::cps1_cps_b_r),this), write16_delegate(FUNC(cps_state::cps1_cps_b_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(*this, FUNC(cps_state::cps1_cps_b_r)), write16_delegate(*this, FUNC(cps_state::cps1_cps_b_w))); init_cps1(); } @@ -12374,7 +12374,7 @@ void cps_state::init_sf2ee() void cps_state::init_sf2thndr() { /* This particular hack uses a modified B-board PAL which mirrors the CPS-B registers at an alternate address */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(FUNC(cps_state::cps1_cps_b_r),this), write16_delegate(FUNC(cps_state::cps1_cps_b_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(*this, FUNC(cps_state::cps1_cps_b_r)), write16_delegate(*this, FUNC(cps_state::cps1_cps_b_w))); init_cps1(); } @@ -12382,7 +12382,7 @@ void cps_state::init_sf2thndr() void cps_state::init_sf2hack() { /* some SF2 hacks have some inputs wired to the LSB instead of MSB */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(FUNC(cps_state::cps1_hack_dsw_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(*this, FUNC(cps_state::cps1_hack_dsw_r))); init_cps1(); } @@ -12403,7 +12403,7 @@ READ16_MEMBER(cps_state::sf2dongb_prot_r) void cps_state::init_sf2dongb() { // There is a hacked up Altera EP910PC-30 DIP in the 5f socket instead of a 4th eprom - m_maincpu->space(AS_PROGRAM).install_read_handler(0x180000, 0x1fffff, read16_delegate(FUNC(cps_state::sf2dongb_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x180000, 0x1fffff, read16_delegate(*this, FUNC(cps_state::sf2dongb_prot_r))); init_cps1(); } @@ -12425,8 +12425,8 @@ WRITE16_MEMBER(cps_state::sf2ceblp_prot_w) void cps_state::init_sf2ceblp() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x5762b0, 0x5762b1, write16_delegate(FUNC(cps_state::sf2ceblp_prot_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x57A2b0, 0x57A2b1, read16_delegate(FUNC(cps_state::sf2ceblp_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x5762b0, 0x5762b1, write16_delegate(*this, FUNC(cps_state::sf2ceblp_prot_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x57A2b0, 0x57A2b1, read16_delegate(*this, FUNC(cps_state::sf2ceblp_prot_r))); init_cps1(); } @@ -12543,7 +12543,7 @@ void cps_state::init_ganbare() init_cps1(); /* ram is shared between the CPS work ram and the timekeeper ram */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff0000, 0xffffff, read16_delegate(FUNC(cps_state::ganbare_ram_r),this), write16_delegate(FUNC(cps_state::ganbare_ram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff0000, 0xffffff, read16_delegate(*this, FUNC(cps_state::ganbare_ram_r)), write16_delegate(*this, FUNC(cps_state::ganbare_ram_w))); } READ16_MEMBER(cps_state::dinohunt_sound_r) @@ -12557,7 +12557,7 @@ READ16_MEMBER(cps_state::dinohunt_sound_r) void cps_state::init_dinohunt() { // is this shared with the new sound hw? - m_maincpu->space(AS_PROGRAM).install_read_handler(0xf18000, 0xf19fff, read16_delegate(FUNC(cps_state::dinohunt_sound_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xf18000, 0xf19fff, read16_delegate(*this, FUNC(cps_state::dinohunt_sound_r))); m_maincpu->space(AS_PROGRAM).install_read_port(0xfc0000, 0xfc0001, "IN2"); ; // the ym2151 doesn't seem to be used. Is it actually on the PCB? diff --git a/docs/release/src/hbmame/drivers/cps1mis.cpp b/docs/release/src/hbmame/drivers/cps1mis.cpp index 68cc074fe1e..ebba6b423d9 100644 --- a/docs/release/src/hbmame/drivers/cps1mis.cpp +++ b/docs/release/src/hbmame/drivers/cps1mis.cpp @@ -6027,7 +6027,7 @@ HACK( 1992, wofud, wof, qsound, wof, cps_state, wof, RO void cps_state::init_dinoeh() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x800180, 0x800181, write16_delegate(FUNC(cps_state::dinoh_sound_command_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x800180, 0x800181, write16_delegate(*this, FUNC(cps_state::dinoh_sound_command_w))); kabuki_setup(dino_decode); init_cps1(); } @@ -8739,6 +8739,110 @@ ROM_START( captcomms69 ) //captcommr1jy ROM_LOAD( "captcomm.key", 0x00, 0x80, CRC(3bd9c940) SHA1(8964479f402ce7e000f1da8b3f6386e6915269e1) ) ROM_END +ROM_START( captcomms70) //captcommr1zt + ROM_REGION( 0X400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "ccs70.10f", 0x000000, 0x300000, CRC(b189b9bb) SHA1(2e92da11d6ca4eacc8425ecdfc588e0f24fb1962) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD( "captcomm.key", 0x00, 0x80, CRC(3bd9c940) SHA1(8964479f402ce7e000f1da8b3f6386e6915269e1) ) +ROM_END + +ROM_START( captcomms71) //captcommr1p + ROM_REGION( 0X400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "ccs71.10f", 0x000000, 0x302532, CRC(9e90ca66) SHA1(d60b2d658dd8773b2c818d1cf07b48bb88ff9aa2) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD( "captcomm.key", 0x00, 0x80, CRC(3bd9c940) SHA1(8964479f402ce7e000f1da8b3f6386e6915269e1) ) +ROM_END + +ROM_START( captcomms72) //captcommr1pmy + ROM_REGION( 0X400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "ccs72.10f", 0x000000, 0x3024DA, CRC(8860c3f3) SHA1(8d863b4877c195098271a0e45c7e4b5354efb07d) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD( "captcomm.key", 0x00, 0x80, CRC(3bd9c940) SHA1(8964479f402ce7e000f1da8b3f6386e6915269e1) ) +ROM_END + +ROM_START( captcomms73) //captcommr1pwx + ROM_REGION( 0X400000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "ccs73.10f", 0x000000, 0x302532, CRC(0fd9dcd8) SHA1(d8473a4f4e17bf635a706ebee523353fda01e06d) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "cc-5m.3a", 0x000000, 0x80000, CRC(7261d8ba) SHA1(4b66292e42d20d0b79a756f0e445492ddb9c6bbc) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-7m.5a", 0x000002, 0x80000, CRC(6a60f949) SHA1(87391ff92abaf3e451f70d789a938cffbd1fd222) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-1m.4a", 0x000004, 0x80000, CRC(00637302) SHA1(2c554b59cceec2de67a9a4bc6281fe846d3c8cd2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-3m.6a", 0x000006, 0x80000, CRC(cc87cf61) SHA1(7fb1f49494cc1a08aded20754bb0cefb1c323198) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-6m.7a", 0x200000, 0x80000, CRC(28718bed) SHA1(dfdc4dd14dc609783bad94d608a9e9b137dea944) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-8m.9a", 0x200002, 0x80000, CRC(d4acc53a) SHA1(d03282ebbde362e679cc97f772aa9baf163d7606) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-2m.8a", 0x200004, 0x80000, CRC(0c69f151) SHA1(a170b8e568439e4a26d84376d53560e4248e4e2f) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "cc-4m.10a", 0x200006, 0x80000, CRC(1f9ebb97) SHA1(023d00cb7b6a52d1b29e2052abe08ef34cb0c55c) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "cc_09.11a", 0x00000, 0x08000, CRC(698e8b58) SHA1(b7a3d905a7ed2c430426ca2e185e3d7e75e752a1) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "cc_18.11c", 0x00000, 0x20000, CRC(6de2c2db) SHA1(9a1eaba8d104f59a5e61f89679bb5de0c0c64364) ) + ROM_LOAD( "cc_19.12c", 0x20000, 0x20000, CRC(b99091ae) SHA1(b19197c7ad3aeaf5f41c26bf853b0c9b502ecfca) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD( "captcomm.key", 0x00, 0x80, CRC(3bd9c940) SHA1(8964479f402ce7e000f1da8b3f6386e6915269e1) ) +ROM_END + /************************ Cadillacs And Dinosaurs **************************/ @@ -17475,7 +17579,7 @@ ROM_START( sf2ces26 ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "s92s25.11c", 0x00000, 0x20000, CRC(0639295f) SHA1(82da30cd9c446434446502ad1f580102803f1645) ) + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_REGION( 0x80, "control", 0 ) @@ -17507,7 +17611,7 @@ ROM_START( sf2ces27 ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "s92s25.11c", 0x00000, 0x20000, CRC(0639295f) SHA1(82da30cd9c446434446502ad1f580102803f1645) ) + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_REGION( 0x80, "control", 0 ) @@ -17539,7 +17643,135 @@ ROM_START( sf2ces28 ) ROM_CONTINUE( 0x10000, 0x08000 ) ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "s92s25.11c", 0x00000, 0x20000, CRC(0639295f) SHA1(82da30cd9c446434446502ad1f580102803f1645) ) + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) + ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD ( "sf2ce.key", 0x00, 0x80, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) ) +ROM_END + +ROM_START( sf2ces29 ) //sf2ce3q + ROM_REGION( CODE_SIZE, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "s92s29.8f", 0x000000, 0x80000, CRC(1a98a59b) SHA1(dbe968463aea1a173fe74416352df0300ee854dd) ) + ROM_LOAD16_WORD_SWAP( "s92s29.7f", 0x080000, 0x80000, CRC(3a260c4f) SHA1(55455b60a36e75a96ea6f38d1d131489060a10df) ) + ROM_LOAD16_WORD_SWAP( "s92s29.6f", 0x100000, 0x80000, CRC(73bf4606) SHA1(8b2489b88a781ab88387dffaafa39495f0a3c497) ) + + ROM_REGION( 0x600000, "gfx", 0 ) + ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-10ms29.3c", 0x400000, 0x80000, CRC(d823d171) SHA1(6716a0f94cd2801279d135b61190a6bdf93122ae) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-11ms29.4c", 0x400002, 0x80000, CRC(4ca06110) SHA1(b121ed9bd741909c8f16d267b7b20b9ffc8b958b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-12ms29.5c", 0x400004, 0x80000, CRC(7cefb44f) SHA1(a15c0a297b17216ee78213c5694dc8dcb2945a8e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-13ms29.6c", 0x400006, 0x80000, CRC(f9d396d9) SHA1(d877695416b6fff957d378c989547fb52bc1c494) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) + ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD ( "sf2ce.key", 0x00, 0x80, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) ) +ROM_END + +ROM_START( sf2ces30 ) //sf2ce3q (The same name roms sf2ces29) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "s92s30.8f", 0x000000, 0x80000, CRC(e65e524d) SHA1(15f4fe3328e74c41ca9e2c6af9a17fe3f6f081c8) ) + ROM_LOAD16_WORD_SWAP( "s92s30.7f", 0x080000, 0x80000, CRC(c2a3d649) SHA1(bc200e637d4eb102f3e269d757ddae3357ddb191) ) + ROM_LOAD16_WORD_SWAP( "s92s29.6f", 0x100000, 0x80000, CRC(73bf4606) SHA1(8b2489b88a781ab88387dffaafa39495f0a3c497) ) + + ROM_REGION( 0x600000, "gfx", 0 ) + ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-10ms29.3c", 0x400000, 0x80000, CRC(d823d171) SHA1(6716a0f94cd2801279d135b61190a6bdf93122ae) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-11ms29.4c", 0x400002, 0x80000, CRC(4ca06110) SHA1(b121ed9bd741909c8f16d267b7b20b9ffc8b958b) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-12ms29.5c", 0x400004, 0x80000, CRC(7cefb44f) SHA1(a15c0a297b17216ee78213c5694dc8dcb2945a8e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-13ms29.6c", 0x400006, 0x80000, CRC(f9d396d9) SHA1(d877695416b6fff957d378c989547fb52bc1c494) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) + ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD ( "sf2ce.key", 0x00, 0x80, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) ) +ROM_END + +ROM_START( sf2ces31 ) //sf2ce1q + ROM_REGION( CODE_SIZE, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "s92s31.8f", 0x000000, 0x80000, CRC(cca48622) SHA1(8796a9504e7d11b64b848fcd23239d00fb15c0ec) ) + ROM_LOAD16_WORD_SWAP( "s92s31.7f", 0x080000, 0x80000, CRC(b9e810ec) SHA1(335742f3de206c090897ceac88011e09002ec245) ) + ROM_LOAD16_WORD_SWAP( "s92s31.6f", 0x100000, 0x80000, CRC(706fbb6c) SHA1(cbb609444a793af3194b2705da9101668baaa382) ) + + ROM_REGION( 0x600000, "gfx", 0 ) + ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-10ms31.3c", 0x400000, 0x80000, CRC(c5e31ea7) SHA1(818a0a756d82965643462082b8762d401da4b23a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-11ms31.4c", 0x400002, 0x80000, CRC(65cf5801) SHA1(cf5fc40d52b55040da610481fbb71fff34ef845d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-12ms31.5c", 0x400004, 0x80000, CRC(4859584a) SHA1(648d97ab6e822a98bc981e96958899ac0be32cbe) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-13ms31.6c", 0x400006, 0x80000, CRC(718543af) SHA1(9bf7c456a4f0ee1ccb4ac78d0a6718a75bc5ec46) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) + ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD ( "sf2ce.key", 0x00, 0x80, CRC(35b37429) SHA1(b372cce106c0900554735c207fb333ac93554ec2) ) +ROM_END + +ROM_START( sf2ces32 ) //sf2ce1q (The same name roms sf2ces31) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "s92s32.8f", 0x000000, 0x80000, CRC(fd9faded) SHA1(068bcbef6bf8b1a105502718af1e0cb713402960) ) + ROM_LOAD16_WORD_SWAP( "s92s31.7f", 0x080000, 0x80000, CRC(b9e810ec) SHA1(335742f3de206c090897ceac88011e09002ec245) ) + ROM_LOAD16_WORD_SWAP( "s92s31.6f", 0x100000, 0x80000, CRC(706fbb6c) SHA1(cbb609444a793af3194b2705da9101668baaa382) ) + + ROM_REGION( 0x600000, "gfx", 0 ) + ROMX_LOAD( "s92-1m.3a", 0x000000, 0x80000, CRC(03b0d852) SHA1(f370f25c96ad2b94f8c53d6b7139100285a25bef) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-3m.5a", 0x000002, 0x80000, CRC(840289ec) SHA1(2fb42a242f60ba7e74009b5a90eb26e035ba1e82) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-2m.4a", 0x000004, 0x80000, CRC(cdb5f027) SHA1(4c7d944fef200fdfcaf57758b901b5511188ed2e) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-4m.6a", 0x000006, 0x80000, CRC(e2799472) SHA1(27d3796429338d82a8de246a0ea06dd487a87768) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-5m.7a", 0x200000, 0x80000, CRC(ba8a2761) SHA1(4b696d66c51611e43522bed752654314e76d33b6) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-7m.9a", 0x200002, 0x80000, CRC(e584bfb5) SHA1(ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-6m.8a", 0x200004, 0x80000, CRC(21e3f87d) SHA1(4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-8m.10a", 0x200006, 0x80000, CRC(befc47df) SHA1(520390420da3a0271ba90b0a933e65143265e5cf) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-10ms31.3c", 0x400000, 0x80000, CRC(c5e31ea7) SHA1(818a0a756d82965643462082b8762d401da4b23a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-11ms31.4c", 0x400002, 0x80000, CRC(65cf5801) SHA1(cf5fc40d52b55040da610481fbb71fff34ef845d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-12ms31.5c", 0x400004, 0x80000, CRC(4859584a) SHA1(648d97ab6e822a98bc981e96958899ac0be32cbe) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "s92-13ms31.6c", 0x400006, 0x80000, CRC(718543af) SHA1(9bf7c456a4f0ee1ccb4ac78d0a6718a75bc5ec46) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x18000, "audiocpu", 0 ) + ROM_LOAD( "s92_09.11a", 0x00000, 0x08000, CRC(08f6b60e) SHA1(8258fcaca4ac419312531eec67079b97f471179c) ) + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "s92_18.11c", 0x00000, 0x20000, CRC(7f162009) SHA1(346bf42992b4c36c593e21901e22c87ae4a7d86d) ) ROM_LOAD( "s92_19.12c", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_REGION( 0x80, "control", 0 ) @@ -22785,6 +23017,34 @@ ROM_START( tk2h146 ) //wofjdrdz ROM_LOAD ( "wof.key", 0x00, 0x80, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) ) ROM_END +ROM_START( tk2h147 ) //wofjdr + ROM_REGION( CODE_SIZE, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "tk2h147.10f", 0x000000, 0x200000, CRC(ac20b217) SHA1(2fec042d269b5a81af8ae511c12b9ffb5a3f5134) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROMX_LOAD( "tk2-1m.3a", 0x000000, 0x80000, CRC(0d9cb9bf) SHA1(cc7140e9a01a14b252cb1090bcea32b0de461928) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-3m.5a", 0x000002, 0x80000, CRC(45227027) SHA1(b21afc593f0d4d8909dfa621d659cbb40507d1b2) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-2m.4a", 0x000004, 0x80000, CRC(c5ca2460) SHA1(cbe14867f7b94b638ca80db7c8e0c60881183469) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2-4m.6a", 0x000006, 0x80000, CRC(e349551c) SHA1(1d977bdf256accf750ad9930ec4a0a19bbf86964) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2h140.7a", 0x200000, 0x80000, CRC(e3c8c198) SHA1(f31f9f5c41d94ff84d29ed787d9104ee3fc1a7aa) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2h140.8a", 0x200002, 0x80000, CRC(5e3c0642) SHA1(8ee6834b1d497c4e4724b1db48d61df558fd0e93) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2h140.9a", 0x200004, 0x80000, CRC(d65a91d9) SHA1(4e1fa66c25fb4e28e49a458500089094cb54a308) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "tk2h140.10a", 0x200006, 0x80000, CRC(675d490e) SHA1(180deb2aff5c2e35cc0eaaed8e6d5d490beaa5ea) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( 0x28000, "audiocpu", 0 ) + ROM_LOAD( "tk2_qa.5k", 0x00000, 0x08000, CRC(c9183a0d) SHA1(d8b1d41c572f08581f8ab9eb878de77d6ea8615d) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x200000, "qsound", 0 ) + ROM_LOAD( "tk2-q1.1k", 0x000000, 0x80000, CRC(611268cf) SHA1(83ab059f2110fb25fdcff928d56b790fc1f5c975) ) + ROM_LOAD( "tk2-q2.2k", 0x080000, 0x80000, CRC(20f55ca9) SHA1(90134e9a9c4749bb65c728b66ea4dac1fd4d88a4) ) + ROM_LOAD( "tk2-q3.3k", 0x100000, 0x80000, CRC(bfcf6f52) SHA1(2a85ff3fc89b4cbabd20779ec12da2e116333c7c) ) + ROM_LOAD( "tk2-q4.4k", 0x180000, 0x80000, CRC(36642e88) SHA1(8ab25b19e2b67215a5cb1f3aa81b9d26009cfeb8) ) + + ROM_REGION( 0x80, "control", 0 ) + ROM_LOAD ( "wof.key", 0x00, 0x80, CRC(ef8848dd) SHA1(e500a89ddb16abb31c7cb45f8dbea922d01fccc1) ) +ROM_END + /******************** Tenchi wo Kurau II *********************/ @@ -24979,6 +25239,10 @@ HACK( 2019, captcomms66, captcomm, cps1_10MHz, captcomm, cps_state, cps1, HACK( 2019, captcomms67, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (God Of War Edition Update 2019-09-16)" , MACHINE_SUPPORTS_SAVE ) HACK( 2019, captcomms68, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Nightmare Edition Update 2019-09-16)" , MACHINE_SUPPORTS_SAVE ) HACK( 2019, captcomms69, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Elite Edition Update 2019-09-16)" , MACHINE_SUPPORTS_SAVE ) +HACK( 2019, captcomms70, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Journey Version 2019-10-21)" , MACHINE_SUPPORTS_SAVE ) +HACK( 2019, captcomms71, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Double Version 2019-10-21)" , MACHINE_SUPPORTS_SAVE ) +HACK( 2019, captcomms72, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Nightmare Edition Update 2019-10-21)" , MACHINE_SUPPORTS_SAVE ) +HACK( 2019, captcomms73, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "hack", "Captain Commando (Unlimited Bullet Version 2019-10-21)" , MACHINE_SUPPORTS_SAVE ) // Cadillacs And Dinosaurs HACK( 1993, dinos01, dino, qsound, dino, cps_state, dino, ROT0, "Ydmis", "Cadillacs and Dinosaurs (Weapon Items Bazooka)", MACHINE_SUPPORTS_SAVE ) HACK( 1993, dinos02, dino, qsound, dino, cps_state, dino, ROT0, "Ydmis", "Cadillacs and Dinosaurs (Weapon Items Club)", MACHINE_SUPPORTS_SAVE ) @@ -25275,7 +25539,11 @@ HACK( 2019, sf2ces24, sf2ce, cps1_12MHz, sf2, cps_state, cps1, HACK( 2019, sf2ces25, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "MamePlus", "Street Fighter II': Champion Edition (Super Ryu 2018-05-01)", MACHINE_SUPPORTS_SAVE ) HACK( 2019, sf2ces26, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "DDJ", "Street Fighter II': Champion Edition (Quick Go Next Stage 2016-01-23)", MACHINE_SUPPORTS_SAVE ) HACK( 2019, sf2ces27, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "DDJ", "Street Fighter II': Champion Edition (Easy Move 2016-08-04)", MACHINE_SUPPORTS_SAVE ) -HACK( 1992, sf2ces28, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "DDJ", "Street Fighter II': Champion Edition (Rainbow, bootleg, Easy Move 2018-05-06)", MACHINE_SUPPORTS_SAVE ) +HACK( 2018, sf2ces28, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "DDJ", "Street Fighter II': Champion Edition (Rainbow, bootleg, Easy Move 2018-05-06)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, sf2ces29, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (3 Questions Edition 2019-10-21)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, sf2ces30, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (3 Questions Edition Simplify The Move 2019-10-21)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, sf2ces31, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (Question Mark Edition 2019-10-21)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, sf2ces32, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "hack", "Street Fighter II': Champion Edition (Question Mark Edition Simplify The Move 2019-10-21)", MACHINE_SUPPORTS_SAVE ) HACK( 2014, sf2js01, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "hack", "Street Fighter II: The World Warrior (King Of The Four Heavenly Kings)", MACHINE_SUPPORTS_SAVE ) HACK( 2016, sf2js02, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "hack", "Street Fighter II: The World Warrior (12 Person Version 2016-01-01)", MACHINE_SUPPORTS_SAVE ) HACK( 1991, sf2s01, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "nianxu", "Street Fighter II: The World Warrior (Cancellation Of Force)", MACHINE_SUPPORTS_SAVE ) @@ -25452,6 +25720,7 @@ HACK( 2019, tk2h143, wof, qsound, wof, cps_state, wof, HACK( 2019, tk2h144, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Dragon Edition 2019-07-14)", MACHINE_SUPPORTS_SAVE ) HACK( 2019, tk2h145, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Z Lu Bu 2019-08-24)", MACHINE_SUPPORTS_SAVE ) HACK( 2019, tk2h146, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Daren Fighting Edition 2019-09-16)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, tk2h147, wof, qsound, wof, cps_state, wof, ROT0, "hack", "Tenchi wo Kurau II (Daren Edition 2019-10-21)", MACHINE_SUPPORTS_SAVE ) // Tenchi wo Kurau II (wofch) HACK( 1994, tk2p02, wofch, qsound, wofch, cps_state, wof, ROT0, "Katana", "Tenchi wo Kurau II (Boss Rush)", MACHINE_SUPPORTS_SAVE ) HACK( 1994, tk2p03, wofch, qsound, wofch, cps_state, wof, ROT0, "Katana", "Tenchi wo Kurau II (Boss Rush Extreme 2018-06-18)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/cps2.cpp b/docs/release/src/hbmame/drivers/cps2.cpp index 8a0382bb611..a36d0b39748 100644 --- a/docs/release/src/hbmame/drivers/cps2.cpp +++ b/docs/release/src/hbmame/drivers/cps2.cpp @@ -10685,7 +10685,7 @@ void cps2_state::init_pzloop2() save_item(NAME(m_readpaddle)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps2_state::joy_or_paddle_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(*this, FUNC(cps2_state::joy_or_paddle_r))); } void cps2_state::init_singbrd() @@ -10733,7 +10733,7 @@ void cps2_state::init_gigaman2() m_gigaman2_dummyqsound_ram = std::make_unique<uint16_t[]>(0x20000 / 2); save_pointer(NAME(m_gigaman2_dummyqsound_ram.get()), 0x20000 / 2); - space.install_readwrite_handler(0x618000, 0x619fff, read16_delegate(FUNC(cps2_state::gigaman2_dummyqsound_r),this), write16_delegate(FUNC(cps2_state::gigaman2_dummyqsound_w), this)); // no qsound.. + space.install_readwrite_handler(0x618000, 0x619fff, read16_delegate(*this, FUNC(cps2_state::gigaman2_dummyqsound_r)), write16_delegate(*this, FUNC(cps2_state::gigaman2_dummyqsound_w))); // no qsound.. memcpy(m_decrypted_opcodes, memregion("maincpu")->base()+0x200000, 0x200000); @@ -10750,7 +10750,7 @@ void cps2_state::init_ecofghtr() save_item(NAME(m_readpaddle)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps2_state::joy_or_paddle_ecofghtr_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(*this, FUNC(cps2_state::joy_or_paddle_ecofghtr_r))); } diff --git a/docs/release/src/hbmame/drivers/cps2mis.cpp b/docs/release/src/hbmame/drivers/cps2mis.cpp index c59e7e08030..9f29fbc8b2d 100644 --- a/docs/release/src/hbmame/drivers/cps2mis.cpp +++ b/docs/release/src/hbmame/drivers/cps2mis.cpp @@ -2368,6 +2368,42 @@ ROM_START( avspus02 ) ROM_LOAD( "avspu.key", 0x000000, 0x000014, CRC(4e68e346) SHA1(60d5a12c77d07efc01f48968f4a12c59bf6b629e) ) ROM_END + /*************** + Battle Circuit +******************/ + +ROM_START( batcirds01 ) //batcird + ROM_REGION( CODE_SIZE, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "btceds01.03", 0x000000, 0x80000, CRC(03bd6707) SHA1(62eda0d68b9940f5d07a529d05e8c90fe6a8ad02) ) + ROM_LOAD16_WORD_SWAP( "btceds01.04", 0x080000, 0x80000, CRC(c3ff82b6) SHA1(3b23b13e0588479a598dd43093a42cd0c9db1484) ) + ROM_LOAD16_WORD_SWAP( "btced.05", 0x100000, 0x80000, CRC(20bdbb14) SHA1(fe3a202741ca657b2b67e89050788b67d709a36d) ) + ROM_LOAD16_WORD_SWAP( "btced.06", 0x180000, 0x80000, CRC(b4d8f5bc) SHA1(dc5ca580ecfb051ded551663ea4e9f161f820f81) ) + ROM_LOAD16_WORD_SWAP( "btcs01.07", 0x200000, 0x80000, CRC(b194270f) SHA1(e152d48760c92b84c748014ef68050f138f75cf5) ) + ROM_LOAD16_WORD_SWAP( "btc.08", 0x280000, 0x80000, CRC(6aac85ab) SHA1(ad02d4185c2b3664fb96350d8ad317d3939a7554) ) + ROM_LOAD16_WORD_SWAP( "btcs01.09", 0x300000, 0x80000, CRC(31865161) SHA1(2217a4b8ca1ed3fe52e9b9d4ead85ce7df3a6bf9) ) + + ROM_REGION16_BE( CODE_SIZE, "user1", 0 ) + ROM_FILL( 0x000000, 0x100000, 0x00 ) + + ROM_REGION( 0x1000000, "gfx", 0 ) + ROMX_LOAD( "btc.13m", 0x000000, 0x400000, CRC(dc705bad) SHA1(96e37147674bf9cd21c770897da59daac25d921a) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "btc.15m", 0x000002, 0x400000, CRC(e5779a3c) SHA1(bbd7fbe061e751388d2f02434144daf9b1e36640) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "btc.17m", 0x000004, 0x400000, CRC(b33f4112) SHA1(e501fd921c8bcede69946b029e05d422714c1040) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "btc.19m", 0x000006, 0x400000, CRC(a6fcdb7e) SHA1(7a28d5d7aa036d23d97fad17d0cdb8210dc8153a) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) + ROM_LOAD( "btc.01", 0x00000, 0x08000, CRC(1e194310) SHA1(3b29de0aca9dbca59d6b50fb2509e2a913c6b0af) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + ROM_LOAD( "btc.02", 0x28000, 0x20000, CRC(01aeb8e6) SHA1(50a5d1cce0caf7c5143d4904431e8f41e2a57464) ) + + ROM_REGION( 0x400000, "qsound", 0 ) + ROM_LOAD16_WORD_SWAP( "btc.11m", 0x000000, 0x200000, CRC(c27f2229) SHA1(df2459493af40937b6656a16fad43ff51bed2204) ) + ROM_LOAD16_WORD_SWAP( "btc.12m", 0x200000, 0x200000, CRC(418a2e33) SHA1(0642ddff2ab9255f154419da24ba644ed63f34ab) ) + + ROM_REGION( 0x20, "key", 0 ) + ROM_LOAD( "phoenix.key", 0x000000, 0x000014, CRC(2cf772b0) SHA1(eff33c65a4f3862c231f9e4d6fefa7b34398dbf2) ) +ROM_END + /****************** Capcom Sports Club *********************/ @@ -5716,6 +5752,8 @@ HACK( 2000, 1944s01, 1944, cps2, cps2_2p2b, cps2_state, cps2, ROT0, //Alien vs. Predator HACK( 2017, avspus01, avsp, cps2, cps2_3p3b, cps2_state, cps2, ROT0, "hack", "Alien vs. Predator (1 Vs 3 Plus 2017-12-30)", MACHINE_SUPPORTS_SAVE ) HACK( 2018, avspus02, avsp, cps2, cps2_3p3b, cps2_state, cps2, ROT0, "hack", "Alien vs. Predator (Enhanced Edition 2018-02-26)", MACHINE_SUPPORTS_SAVE ) +//Battle Circuit +HACK( 2019, batcirds01, batcir, dead_cps2, cps2_4p2b, cps2_state, cps2, ROT0, "hack", "Battle Circuit (Evolution 2019-10-21)", MACHINE_SUPPORTS_SAVE ) // Capcom Sports Club HACK( 1997, csclubs01, csclub, cps2, cps2_2p3b, cps2_state, cps2, ROT0, "Hooooook[Chinese cabbage loves me]", "Capcom Sports Club (Time Increases)", MACHINE_SUPPORTS_SAVE ) // Cyberbots Fullmetal Madness diff --git a/docs/release/src/hbmame/drivers/fcrash.cpp b/docs/release/src/hbmame/drivers/fcrash.cpp index de1c975daf7..45e9aa34222 100644 --- a/docs/release/src/hbmame/drivers/fcrash.cpp +++ b/docs/release/src/hbmame/drivers/fcrash.cpp @@ -1984,9 +1984,9 @@ ROM_END void cps_state::init_kodb() { m_maincpu->space(AS_PROGRAM).install_read_port(0x800000, 0x800007, "IN1"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x800180, 0x800187, write16_delegate(FUNC(cps_state::cps1_soundlatch_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x980000, 0x98002f, write16_delegate(FUNC(cps_state::kodb_layer_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(*this, FUNC(cps_state::cps1_dsw_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x800180, 0x800187, write16_delegate(*this, FUNC(cps_state::cps1_soundlatch_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x980000, 0x98002f, write16_delegate(*this, FUNC(cps_state::kodb_layer_w))); /* the original game alternates between 2 sprite ram areas to achieve flashing sprites - the bootleg doesn't do the write to the register to achieve this mapping both sprite ram areas to the same bootleg sprite ram - similar to how sf2mdt works */ @@ -2120,8 +2120,8 @@ ROM_END void cps_state::init_cawingbl() { m_maincpu->space(AS_PROGRAM).install_read_port(0x882000, 0x882001, "IN1"); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x882006, 0x882007, write16_delegate(FUNC(cps_state::cawingbl_soundlatch_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x882008, 0x88200f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x882006, 0x882007, write16_delegate(*this, FUNC(cps_state::cawingbl_soundlatch_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x882008, 0x88200f, read16_delegate(*this, FUNC(cps_state::cps1_dsw_r))); init_cps1(); } @@ -2918,7 +2918,7 @@ void cps_state::init_sf2mdt() rom[i + 6] = tmp; } - m_maincpu->space(AS_PROGRAM).install_write_handler(0x708100, 0x7081ff, write16_delegate(FUNC(cps_state::sf2mdt_layer_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x708100, 0x7081ff, write16_delegate(*this, FUNC(cps_state::sf2mdt_layer_w))); init_sf2mdta(); } diff --git a/docs/release/src/hbmame/drivers/kof2002.cpp b/docs/release/src/hbmame/drivers/kof2002.cpp index cc29b060c56..3240c839444 100644 --- a/docs/release/src/hbmame/drivers/kof2002.cpp +++ b/docs/release/src/hbmame/drivers/kof2002.cpp @@ -11716,6 +11716,32 @@ ROM_START( kof2k2s84 ) ROM_LOAD16_BYTE( "265d.c8", 0x3000001, 0x800000, CRC(bef667a3) SHA1(D5E8BC185DCF63343D129C31D2DDAB9F723F1A12) ) ROM_END +ROM_START( kof2k2s85 ) //kof2k2c2p + ROM_REGION( 0x500000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "265k2s85.p1", 0x000000, 0x100000, CRC(470c0468) SHA1(c391e49d06fd2bd54a6167885e7d40b734dc11d3) ) + ROM_LOAD16_WORD_SWAP( "265k2s85.p2", 0x100000, 0x400000, CRC(52bdc663) SHA1(563bef5a07dc31c07e755fd7997a058469fe957f) ) + + NEO_SFIX_128K( "265kc2.s1", CRC(67e7cbe1) SHA1(3582c2073f04e71a6d5a34145727d148a11ab375) ) + + NEO_BIOS_AUDIO_128K( "265d.m1", CRC(1c661a4b) SHA1(4e5aa862a0a182a806d538996ddc68d9f2dffaf7) ) + + 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( "265k2s85.c1", 0x0000000, 0x800000, CRC(232cdaea) SHA1(06995c0b281c1c8369c8cd38b73e3e3b4c280cb2) ) + ROM_LOAD16_BYTE( "265k2s85.c2", 0x0000001, 0x800000, CRC(9426dec3) SHA1(4dcdcf1716012f3ea490400851aa2701f21ddad7) ) + ROM_LOAD16_BYTE( "265k2s85.c3", 0x1000000, 0x800000, CRC(0ee6f629) SHA1(346508bccf721a23ffde973456aa2a9240ecb039) ) + ROM_LOAD16_BYTE( "265k2s85.c4", 0x1000001, 0x800000, CRC(456a8970) SHA1(9714ddc4f7c2c3b499d82fb1d3278a938944fa28) ) + ROM_LOAD16_BYTE( "265k2s85.c5", 0x2000000, 0x800000, CRC(abd055d6) SHA1(47fb99ef5af763d9657ec94a0e67feee3edaf281) ) + ROM_LOAD16_BYTE( "265k2s85.c6", 0x2000001, 0x800000, CRC(bd4bfd7f) SHA1(b5f037627782a03eafdde1523ceb52771cc73c46) ) + ROM_LOAD16_BYTE( "265k2s85.c7", 0x3000000, 0x800000, CRC(b5ba8b2e) SHA1(9c2a7bf19dacf19388e39f56e590a876ad6a48f6) ) + ROM_LOAD16_BYTE( "265k2s85.c8", 0x3000001, 0x800000, CRC(7ede867d) SHA1(4a79b58d4cd587a8b0ac01a679c2de41585c1610) ) +ROM_END + /* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */ // The King of Fighters '2002 HACK( 2005, kof2002s01, kof2002, neogeo_noslot, neogeo, neogeo_state, kof2002, ROT0, "KyoX", "Kof2002 (Translation Portuguese 2005-09-25)" , MACHINE_SUPPORTS_SAVE ) @@ -12028,4 +12054,5 @@ HACK( 2019, kof2k2s81, kof2002, neogeo_noslot, neogeo, neogeo_state, HACK( 2019, kof2k2s82, kof2002, gsc, neogeo, neogeo_state, kof2k2pl17, ROT0, "GSC2007", "Kof2002 Plus (2019-01-06 Hack)" , MACHINE_SUPPORTS_SAVE ) HACK( 2019, kof2k2s83, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (All Mix Version 2018-04-22)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) HACK( 2019, kof2k2s84, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "GSC2007", "Kof2002 (Unknown Hack 2014-12-01)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, kof2k2s85, kof2002, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Kof2002 (Tianguo Protoss 2019-10-21)", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/maketrax.cpp b/docs/release/src/hbmame/drivers/maketrax.cpp index e43947b4338..3914fcb12d8 100644 --- a/docs/release/src/hbmame/drivers/maketrax.cpp +++ b/docs/release/src/hbmame/drivers/maketrax.cpp @@ -243,9 +243,9 @@ MACHINE_RESET_MEMBER(pacman_state,maketrax) void pacman_state::init_maketrax() { /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x5004, 0x5004, write8_delegate(FUNC(pacman_state::maketrax_protection_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50bf, read8_delegate(FUNC(pacman_state::maketrax_special_port2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x50c0, 0x50ff, read8_delegate(FUNC(pacman_state::maketrax_special_port3_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x5004, 0x5004, write8_delegate(*this, FUNC(pacman_state::maketrax_protection_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50bf, read8_delegate(*this, FUNC(pacman_state::maketrax_special_port2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x50c0, 0x50ff, read8_delegate(*this, FUNC(pacman_state::maketrax_special_port3_r))); save_item(NAME(m_maketrax_disable_protection)); save_item(NAME(m_maketrax_offset)); diff --git a/docs/release/src/hbmame/drivers/mhavoc.cpp b/docs/release/src/hbmame/drivers/mhavoc.cpp index d74013afc63..72981b4357d 100644 --- a/docs/release/src/hbmame/drivers/mhavoc.cpp +++ b/docs/release/src/hbmame/drivers/mhavoc.cpp @@ -41,7 +41,7 @@ void mhavoc_state::alphape_map(address_map &map) map(0x16c0, 0x16c0).w("avg", FUNC(avg_mhavoc_device::reset_w)); /* Vector Generator Reset */ map(0x1700, 0x1700).w(FUNC(mhavoc_state::mhavoc_alpha_irq_ack_w)); /* IRQ ack */ //map(0x1740, 0x1740).w(FUNC(mhavoc_state::mhavocpe_rom_banksel_w)); /* Program ROM Page Select */ - map(0x1740, 0x1740).lw8("bnk", [this] (u8 data) { membank("bank2")->set_entry((data & 1) | ((data & 2)<<1) | ((data & 4)>>1)); }); + map(0x1740, 0x1740).lw8(NAME([this] (u8 data) { membank("bank2")->set_entry((data & 1) | ((data & 2)<<1) | ((data & 4)>>1)); })); map(0x1780, 0x1780).w(FUNC(mhavoc_state::mhavoc_ram_banksel_w)); /* Program RAM Page Select */ map(0x17c0, 0x17c0).w(FUNC(mhavoc_state::mhavoc_gamma_w)); /* Gamma Communication Write Port */ map(0x1800, 0x1fff).ram(); /* Shared Beta Ram */ diff --git a/docs/release/src/hbmame/drivers/mslug5.cpp b/docs/release/src/hbmame/drivers/mslug5.cpp index 0c9066ae0ec..d41c0d60662 100644 --- a/docs/release/src/hbmame/drivers/mslug5.cpp +++ b/docs/release/src/hbmame/drivers/mslug5.cpp @@ -1974,6 +1974,56 @@ ROM_START( mslug5dh57 ) ROM_LOAD16_BYTE( "268d.c8", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(B5D0D81D5CC624538B0651C568295E578A1330D1) ) ROM_END +ROM_START( mslug5dh58 ) //mslug5dg2 + ROM_REGION( 0x600000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "268dh58.p1", 0x000000, 0x600000, CRC(1f8a0da6) SHA1(97e62525d360c28bdc0f8f595e05c4368aff305c) ) + + NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) + + NEO_BIOS_AUDIO_128K( "268nd.m1", CRC(6FA01C9A) SHA1(3DAB7593BFCCE318D22EC3DF672EE3B4AB73DCF5) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "268boot.v1", 0x000000, 0x400000, CRC(c3540e0d) SHA1(bf7ca3abe291b28a4cfaef791f0c556cc98ad8d8) ) + ROM_LOAD( "268boot.v2", 0x400000, 0x400000, CRC(077bd2f4) SHA1(1699959d17f8c7113cebdb9da2e1cd18ce48486c) ) + ROM_LOAD( "268boot.v3", 0x800000, 0x400000, CRC(39b14567) SHA1(1658612a93ba30130f9260bc41d3f18f6b90c1e7) ) + ROM_LOAD( "268boot.v4", 0xc00000, 0x400000, CRC(969ff3b2) SHA1(50feceb741a1c08b000b077a33151ab1352eb798) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "268d.c1", 0x0000000, 0x800000, CRC(969c0d62) SHA1(DE3C5CFA980CCA2FAB0416AC0D292948B5D4C9C3) ) + ROM_LOAD16_BYTE( "268d.c2", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198EE5C7C2C7563B49EBD9F7BA95D9B0B303F6C) ) + ROM_LOAD16_BYTE( "268d.c3", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443EA4C1BAB45F1977A390EB7E1A0163915110) ) + ROM_LOAD16_BYTE( "268nd.c4", 0x1000001, 0x800000, CRC(E1B1131B) SHA1(68A36D336582069E79AD481638D92F57C4CD6523) ) + ROM_LOAD16_BYTE( "268d.c5", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4AE15D29BA979601598EDDF8905072FE1D9E0A98) ) + ROM_LOAD16_BYTE( "268d.c6", 0x2000001, 0x800000, CRC(6de89589) SHA1(86A6C036BF51AF516FEA83A30874026EC1586A83) ) + ROM_LOAD16_BYTE( "268d.c7", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30F3280FE527098ECF46541CC645A59B366105EA) ) + ROM_LOAD16_BYTE( "268d.c8", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(B5D0D81D5CC624538B0651C568295E578A1330D1) ) +ROM_END + +ROM_START( mslug5dh59 ) //mslug5dmg + ROM_REGION( 0x600000, "maincpu", 0 ) + ROM_LOAD16_WORD_SWAP( "268dh59.p1", 0x000000, 0x600000, CRC(fa425c4c) SHA1(8cc1cd2b30cd5ad3fa11c2982131757728afed7a) ) + + NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) + + NEO_BIOS_AUDIO_128K( "268nd.m1", CRC(6FA01C9A) SHA1(3DAB7593BFCCE318D22EC3DF672EE3B4AB73DCF5) ) + + ROM_REGION( 0x1000000, "ymsnd", 0 ) + ROM_LOAD( "268boot.v1", 0x000000, 0x400000, CRC(c3540e0d) SHA1(bf7ca3abe291b28a4cfaef791f0c556cc98ad8d8) ) + ROM_LOAD( "268boot.v2", 0x400000, 0x400000, CRC(077bd2f4) SHA1(1699959d17f8c7113cebdb9da2e1cd18ce48486c) ) + ROM_LOAD( "268boot.v3", 0x800000, 0x400000, CRC(39b14567) SHA1(1658612a93ba30130f9260bc41d3f18f6b90c1e7) ) + ROM_LOAD( "268boot.v4", 0xc00000, 0x400000, CRC(969ff3b2) SHA1(50feceb741a1c08b000b077a33151ab1352eb798) ) + + ROM_REGION( 0x4000000, "sprites", 0 ) + ROM_LOAD16_BYTE( "268d.c1", 0x0000000, 0x800000, CRC(969c0d62) SHA1(DE3C5CFA980CCA2FAB0416AC0D292948B5D4C9C3) ) + ROM_LOAD16_BYTE( "268d.c2", 0x0000001, 0x800000, CRC(c69ae867) SHA1(3198EE5C7C2C7563B49EBD9F7BA95D9B0B303F6C) ) + ROM_LOAD16_BYTE( "268d.c3", 0x1000000, 0x800000, CRC(d7beaeaf) SHA1(99443EA4C1BAB45F1977A390EB7E1A0163915110) ) + ROM_LOAD16_BYTE( "268nd.c4", 0x1000001, 0x800000, CRC(E1B1131B) SHA1(68A36D336582069E79AD481638D92F57C4CD6523) ) + ROM_LOAD16_BYTE( "268d.c5", 0x2000000, 0x800000, CRC(2fa1a5ad) SHA1(4AE15D29BA979601598EDDF8905072FE1D9E0A98) ) + ROM_LOAD16_BYTE( "268d.c6", 0x2000001, 0x800000, CRC(6de89589) SHA1(86A6C036BF51AF516FEA83A30874026EC1586A83) ) + ROM_LOAD16_BYTE( "268d.c7", 0x3000000, 0x800000, CRC(97bd0c0a) SHA1(30F3280FE527098ECF46541CC645A59B366105EA) ) + ROM_LOAD16_BYTE( "268d.c8", 0x3000001, 0x800000, CRC(c0d5bc20) SHA1(B5D0D81D5CC624538B0651C568295E578A1330D1) ) +ROM_END + ROM_START( ms5plusrm01 ) ROM_REGION( 0x500000, "maincpu", 0 ) ROM_LOAD16_WORD_SWAP( "ms5plusrm01.p1", 0x000000, 0x100000, CRC(3a3d1750) SHA1(dddd645e88e2e483fa50e1dc55b2e06ab3dacfec) ) @@ -7394,7 +7444,7 @@ ROM_END ROM_START( mslug5res01 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res01.p1", 0x000000, 0x600000, CRC(d28eaff4) SHA1(89939fb70694add0d24525dab1e1fcd492159c65) ) + ROM_LOAD16_WORD_SWAP( "268res01.p1", 0x000000, 0x600000, CRC(0944d145) SHA1(395ed5e8c3dd8e79e0522859a1e00e14174e1db9) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7428,7 +7478,7 @@ ROM_END ROM_START( mslug5res02 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res02.p1", 0x000000, 0x600000, CRC(5ad1e813) SHA1(38a29839f1fac75a1b728f00488b4333ddfb1897) ) + ROM_LOAD16_WORD_SWAP( "268res02.p1", 0x000000, 0x600000, CRC(811b96a2) SHA1(ac236e39a6c998c86221098be4d82eb605f9fcf5) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7462,7 +7512,7 @@ ROM_END ROM_START( mslug5res03 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res03.p1", 0x000000, 0x600000, CRC(22e4d54e) SHA1(dbc84434d217ad210804676c440e71ec3ed2e5d4) ) + ROM_LOAD16_WORD_SWAP( "268res03.p1", 0x000000, 0x600000, CRC(f92eabff) SHA1(7b7f52c53a90a453ebb8ab900fa3f023eabad5a6) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7496,7 +7546,7 @@ ROM_END ROM_START( mslug5res04 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res04.p1", 0x000000, 0x600000, CRC(5a7e545e) SHA1(7cc608eadff820fe2a4b8267d21eedf29aa7ecd3) ) + ROM_LOAD16_WORD_SWAP( "268res04.p1", 0x000000, 0x600000, CRC(81b42aef) SHA1(cf4bd60e837df6c4020e60b4f40734152d1670cd) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7530,7 +7580,7 @@ ROM_END ROM_START( mslug5res05 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res05.p1", 0x000000, 0x600000, CRC(d22113b9) SHA1(2f77bf913c7d53b171bcc446f468800427171870) ) + ROM_LOAD16_WORD_SWAP( "268res05.p1", 0x000000, 0x600000, CRC(09eb6d08) SHA1(78a487d908a1a9933cdc9832d3d18641d0a50327) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7564,7 +7614,7 @@ ROM_END ROM_START( mslug5res06 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res06.p1", 0x000000, 0x600000, CRC(aa142ee4) SHA1(0e754cd4500a747c3eca96a165333964139d4617) ) + ROM_LOAD16_WORD_SWAP( "268res06.p1", 0x000000, 0x600000, CRC(71de5055) SHA1(b3892a304ed092447d0328da5c6b74771c5ee197) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7598,7 +7648,7 @@ ROM_END ROM_START( mslug5res07 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res07.p1", 0x000000, 0x600000, CRC(94feff07) SHA1(b87275e1978523e1cbe9e6695558ef39496f1805) ) + ROM_LOAD16_WORD_SWAP( "268res07.p1", 0x000000, 0x600000, CRC(4f3481b6) SHA1(fcfbfb8f8ca8bce4ba72e1fe75cbdc11af769c88) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7632,7 +7682,7 @@ ROM_END ROM_START( mslug5res08 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res08.p1", 0x000000, 0x600000, CRC(1ca1b8e0) SHA1(8addff49fe06875a0f857efeb16f9229569533d1) ) + ROM_LOAD16_WORD_SWAP( "268res08.p1", 0x000000, 0x600000, CRC(c76bc651) SHA1(03e8a17857c169442c876a9bf49bc8c046acf9c2) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7666,7 +7716,7 @@ ROM_END ROM_START( mslug5res09 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res09.p1", 0x000000, 0x600000, CRC(649485bd) SHA1(ccc3e85a445c2d8821d5f82a5879c4c8e73ea2e8) ) + ROM_LOAD16_WORD_SWAP( "268res09.p1", 0x000000, 0x600000, CRC(bf5efb0c) SHA1(2201347f2d3c39f06504dd3e7b0ee0ef1ec27a52) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7700,7 +7750,7 @@ ROM_END ROM_START( mslug5res10 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res10.p1", 0x000000, 0x600000, CRC(1c0e04ad) SHA1(83865148ca83be66fa84264679403fe7c0c27898) ) + ROM_LOAD16_WORD_SWAP( "268res10.p1", 0x000000, 0x600000, CRC(c7c47a1c) SHA1(a00fe677c770a43d117a6c0813db681e14ec51cd) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7734,7 +7784,7 @@ ROM_END ROM_START( mslug5res11 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res11.p1", 0x000000, 0x600000, CRC(9451434a) SHA1(3c720824f017ff7744afaa16d0e7b2f749ccac22) ) + ROM_LOAD16_WORD_SWAP( "268res11.p1", 0x000000, 0x600000, CRC(4f9b3dfb) SHA1(23a2f3fbfda4b5e474c771f6dc40aea746c266ec) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7768,7 +7818,7 @@ ROM_END ROM_START( mslug5res12 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res12.p1", 0x000000, 0x600000, CRC(ec647e17) SHA1(417226fcb2c47436389d5aa68c137961cbc2d8be) ) + ROM_LOAD16_WORD_SWAP( "268res12.p1", 0x000000, 0x600000, CRC(37ae00a6) SHA1(d85cf61646ae002b8bf67392d5e7d226f6e0af9c) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7802,7 +7852,7 @@ ROM_END ROM_START( mslug5res13 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res13.p1", 0x000000, 0x600000, CRC(daae1b6c) SHA1(5eb4c93d356076a3e83486df9c25adce1356395b) ) + ROM_LOAD16_WORD_SWAP( "268res13.p1", 0x000000, 0x600000, CRC(016465dd) SHA1(d989a9e0e57debef93ffb895fcf550ff9d853d5a) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7836,7 +7886,7 @@ ROM_END ROM_START( mslug5res14 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res14.p1", 0x000000, 0x600000, CRC(52f15c8b) SHA1(25c41d45b0d1f0bcfcf42f38f7146317aa37ea55) ) + ROM_LOAD16_WORD_SWAP( "268res14.p1", 0x000000, 0x600000, CRC(893b223a) SHA1(93ba5a53d3da3a60bd56ccf8acdf72636fdf4795) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7870,7 +7920,7 @@ ROM_END ROM_START( mslug5res15 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res15.p1", 0x000000, 0x600000, CRC(2ac461d6) SHA1(665ddc828954a496b4d049735eb92e1dd911a7fb) ) + ROM_LOAD16_WORD_SWAP( "268res15.p1", 0x000000, 0x600000, CRC(f10e1f67) SHA1(00a3405a7a1e07e95a5c472fe3857113839c9af6) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7904,7 +7954,7 @@ ROM_END ROM_START( mslug5res16 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res16.p1", 0x000000, 0x600000, CRC(c6df9c88) SHA1(cae132a7bf02f61a8b43e8bdb0e8941901a36aa9) ) + ROM_LOAD16_WORD_SWAP( "268res16.p1", 0x000000, 0x600000, CRC(1d15e239) SHA1(43487e9cd78f7a19a2183134c1f5e495867e5862) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7938,7 +7988,7 @@ ROM_END ROM_START( mslug5res17 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res17.p1", 0x000000, 0x600000, CRC(4e80db6f) SHA1(8b7d9cbecba304c1bc0e859c97a19eeab2ee1163) ) + ROM_LOAD16_WORD_SWAP( "268res17.p1", 0x000000, 0x600000, CRC(954aa5de) SHA1(92519a773366a3cc91f14babdb39430d916cd807) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -7972,7 +8022,7 @@ ROM_END ROM_START( mslug5res18 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res18.p1", 0x000000, 0x600000, CRC(36b5e632) SHA1(f9f492759513e5853bf6661791fa888163b3b33e) ) + ROM_LOAD16_WORD_SWAP( "268res18.p1", 0x000000, 0x600000, CRC(ed7f9883) SHA1(9ec6c9df64e418f9282760f44a569f577fe636b2) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -8006,7 +8056,7 @@ ROM_END ROM_START( mslug5res19 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res19.p1", 0x000000, 0x600000, CRC(90eea54b) SHA1(46b1d6876f0f03d7dfe76a367e39ab649dbf886a) ) + ROM_LOAD16_WORD_SWAP( "268res19.p1", 0x000000, 0x600000, CRC(4b24dbfa) SHA1(111cc7cfeaa37d258d2841f05d9bad4e6fe012d9) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -8040,7 +8090,7 @@ ROM_END ROM_START( mslug5res20 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res20.p1", 0x000000, 0x600000, CRC(18b1e2ac) SHA1(cb575e43da10783b6eb419777dd779734f1d3395) ) + ROM_LOAD16_WORD_SWAP( "268res20.p1", 0x000000, 0x600000, CRC(c37b9c1d) SHA1(7dc9cde49e8a6202db7d1af78429b8833e00737d) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -8074,7 +8124,7 @@ ROM_END ROM_START( mslug5res21 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res21.p1", 0x000000, 0x600000, CRC(6084dff1) SHA1(4842b8c27b3cb257dc5415c074f14ec35a94f2cd) ) + ROM_LOAD16_WORD_SWAP( "268res21.p1", 0x000000, 0x600000, CRC(bb4ea140) SHA1(c6bb4641bbc5ac1223159667bd380ab0f3c4df9d) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -8108,7 +8158,7 @@ ROM_END ROM_START( mslug5res22 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res22.p1", 0x000000, 0x600000, CRC(181e5ee1) SHA1(584582dfc0adc39652f70eecd87a0c31c74b0e56) ) + ROM_LOAD16_WORD_SWAP( "268res22.p1", 0x000000, 0x600000, CRC(c3d42050) SHA1(9c84752cc454cfd2f2e0f7f3dba33bcc689a4302) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -8142,7 +8192,7 @@ ROM_END ROM_START( mslug5res23 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res23.p1", 0x000000, 0x600000, CRC(90411906) SHA1(332de6a4993a40f80a1457929cc5dbae788ce063) ) + ROM_LOAD16_WORD_SWAP( "268res23.p1", 0x000000, 0x600000, CRC(4b8b67b7) SHA1(214748840677791f00d5735385831f9da817766e) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -8176,7 +8226,7 @@ ROM_END ROM_START( mslug5res24 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268res24.p1", 0x000000, 0x600000, CRC(e874245b) SHA1(399196621d6e4c264ea7a63a43c536e1e956b013) ) + ROM_LOAD16_WORD_SWAP( "268res24.p1", 0x000000, 0x600000, CRC(33be5aea) SHA1(17a3fed68e53c469d42b5ce5f15c1f073c0aee25) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -9842,7 +9892,7 @@ ROM_END ROM_START( mslug5ervn01 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc01.p1", 0x000000, 0x600000, CRC(1a84181e) SHA1(45332c8ab3e0895c110b239dfab966e01d8357c6) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc01.p1", 0x000000, 0x600000, CRC(ec8c80af) SHA1(1aaf1debbc98cf7347fa542ab58d47bed13dc095) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -9876,7 +9926,7 @@ ROM_END ROM_START( mslug5ervn02 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc02.p1", 0x000000, 0x600000, CRC(92db5ff9) SHA1(56bc8684eb1b6ee30c08e92de4a9bf9cbaeca017) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc02.p1", 0x000000, 0x600000, CRC(64d3c748) SHA1(347052c83c44459a516487cfedb80e633f4e583a) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -9910,7 +9960,7 @@ ROM_END ROM_START( mslug5ervn03 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc03.p1", 0x000000, 0x600000, CRC(eaee62a4) SHA1(225fcaab90c4840e9e4ac57cc57643fa20f03914) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc03.p1", 0x000000, 0x600000, CRC(1ce6fa15) SHA1(310caa845e5622f7afc9207b73d0376737f11b5c) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -9944,7 +9994,7 @@ ROM_END ROM_START( mslug5ervn04 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc04.p1", 0x000000, 0x600000, CRC(9274e3b4) SHA1(735505b47c839425d1b5b15c58b27aec64b29dd7) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc04.p1", 0x000000, 0x600000, CRC(647c7b05) SHA1(8eed19315b0d1c068cb4af68d0b5c6eb02a3bbf2) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -9978,7 +10028,7 @@ ROM_END ROM_START( mslug5ervn05 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc05.p1", 0x000000, 0x600000, CRC(1a2ba453) SHA1(c8c5c526aaf1376879a07666c1ec0b4267676ea1) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc05.p1", 0x000000, 0x600000, CRC(ec233ce2) SHA1(0c5ae2bb8ccae57c2edfe208499939f95e7809b9) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10012,7 +10062,7 @@ ROM_END ROM_START( mslug5ervn06 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc06.p1", 0x000000, 0x600000, CRC(621e990e) SHA1(9580a4b23ab2436ebb7f13cdd46849b7c9f6fe64) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc06.p1", 0x000000, 0x600000, CRC(941601bf) SHA1(6c37fb0268df99ea1287ff69f139f47a49769aa3) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10046,7 +10096,7 @@ ROM_END ROM_START( mslug5ervn07 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc07.p1", 0x000000, 0x600000, CRC(5cf448ed) SHA1(b20267ae92d7b48c84c546aac8f644b2e262f360) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc07.p1", 0x000000, 0x600000, CRC(aafcd05c) SHA1(2f3e1d1655ddbc1055781818b4b9973529fda727) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10080,7 +10130,7 @@ ROM_END ROM_START( mslug5ervn08 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc08.p1", 0x000000, 0x600000, CRC(d4ab0f0a) SHA1(8ce0eb44ccf5733396eed3cb7117cbc97c9db5a4) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc08.p1", 0x000000, 0x600000, CRC(22a397bb) SHA1(d95a90e7e2717be4ffc0bc725a17132f029bcf2e) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10114,7 +10164,7 @@ ROM_END ROM_START( mslug5ervn09 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc09.p1", 0x000000, 0x600000, CRC(ac9e3257) SHA1(5ad3f7270758bdd0131198b394f0bbf90c606cf9) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc09.p1", 0x000000, 0x600000, CRC(5a96aae6) SHA1(8a2acd181e1d15073246fcf838e56316c2dfcd39) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10148,7 +10198,7 @@ ROM_END ROM_START( mslug5ervn10 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc10.p1", 0x000000, 0x600000, CRC(d404b347) SHA1(3345aaa9adaca0ffbc37318e126a51411b01c19a) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc10.p1", 0x000000, 0x600000, CRC(220c2bf6) SHA1(d52116db3ec232ca6b4d48448be85b586d2d854b) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10182,7 +10232,7 @@ ROM_END ROM_START( mslug5ervn11 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc11.p1", 0x000000, 0x600000, CRC(5c5bf4a0) SHA1(9be4fd03d683cac45399c595f54f7ff82de5af84) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc11.p1", 0x000000, 0x600000, CRC(aa536c11) SHA1(7e830e0c2811b3bd37b2ba9ff203394c31b7fbbe) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10216,7 +10266,7 @@ ROM_END ROM_START( mslug5ervn12 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc12.p1", 0x000000, 0x600000, CRC(246ec9fd) SHA1(ddfb75ded2a271bbff37ea6df8a3a9117dd47080) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc12.p1", 0x000000, 0x600000, CRC(d266514c) SHA1(66ea11a91c4f9ee933efe821fded21f8852a095a) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10250,7 +10300,7 @@ ROM_END ROM_START( mslug5ervn13 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc13.p1", 0x000000, 0x600000, CRC(12a4ac86) SHA1(ab48e1953b29c74a9b17e1f7f1901d6a6cac07b9) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc13.p1", 0x000000, 0x600000, CRC(e4ac3437) SHA1(9e53a6fdf36ef9baa8fc09298717ca461f275f67) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10284,7 +10334,7 @@ ROM_END ROM_START( mslug5ervn14 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc14.p1", 0x000000, 0x600000, CRC(9afbeb61) SHA1(e43f069e3a837f10fcd7a87f00ec7eb4d8d1f071) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc14.p1", 0x000000, 0x600000, CRC(6cf373d0) SHA1(6537f1e01bbd6a84e6e8ead75f138bc850aba58c) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10318,7 +10368,7 @@ ROM_END ROM_START( mslug5ervn15 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc15.p1", 0x000000, 0x600000, CRC(e2ced63c) SHA1(0cddbd2ff179849d8fd4dd421364aaa9c3dde17f) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc15.p1", 0x000000, 0x600000, CRC(14c64e8d) SHA1(beb9b972668844c0f4ca9577a575acf7616f3a0d) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10352,7 +10402,7 @@ ROM_END ROM_START( mslug5ervn16 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc16.p1", 0x000000, 0x600000, CRC(0ed52b62) SHA1(5a329f423a8efd1252c82ffe4619a2cf90c3fbb4) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc16.p1", 0x000000, 0x600000, CRC(f8ddb3d3) SHA1(d50bef329d930d9cc2154051c0e89d2091d06c57) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10386,7 +10436,7 @@ ROM_END ROM_START( mslug5ervn17 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc17.p1", 0x000000, 0x600000, CRC(868a6c85) SHA1(f015513f7f999924bc2f1aace7993bdab607da2a) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc17.p1", 0x000000, 0x600000, CRC(7082f434) SHA1(3249dcdccd37fc78aa7ad7aec34cef2737142cd3) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10420,7 +10470,7 @@ ROM_END ROM_START( mslug5ervn18 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc18.p1", 0x000000, 0x600000, CRC(febf51d8) SHA1(a7947c3eba394bec9eedc65f25c003e00af1fd56) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc18.p1", 0x000000, 0x600000, CRC(08b7c969) SHA1(18cf8ae126b6fc0007e90077773650769d38c49c) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10454,7 +10504,7 @@ ROM_END ROM_START( mslug5ervn19 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc19.p1", 0x000000, 0x600000, CRC(58e412a1) SHA1(f9b99d0a9d0b0b7e2d2130ff6621a542dfd51002) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc19.p1", 0x000000, 0x600000, CRC(aeec8a10) SHA1(45b68f43e717747716d9164ebe32b15a90bb3a44) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10488,7 +10538,7 @@ ROM_END ROM_START( mslug5ervn20 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc20.p1", 0x000000, 0x600000, CRC(d0bb5546) SHA1(c0ac831c3563047fe42f9f95fa53478a02391d33) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc20.p1", 0x000000, 0x600000, CRC(26b3cdf7) SHA1(9c322433a2200d5594f2cd3b8d99dfff82378ad8) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10522,7 +10572,7 @@ ROM_END ROM_START( mslug5ervn21 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc21.p1", 0x000000, 0x600000, CRC(a88e681b) SHA1(847974c757bdf9af662128f5900572459295ca4a) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc21.p1", 0x000000, 0x600000, CRC(5e86f0aa) SHA1(1e8de4e4273b1835ea05631c2c5f8483be72bd72) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10556,7 +10606,7 @@ ROM_END ROM_START( mslug5ervn22 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc22.p1", 0x000000, 0x600000, CRC(d014e90b) SHA1(0f8775cd3e90b041ca22bb536a0dbf11b1f0ecb4) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc22.p1", 0x000000, 0x600000, CRC(261c71ba) SHA1(09fd0b963c833bfa8c79491066ae8178673f0296) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10590,7 +10640,7 @@ ROM_END ROM_START( mslug5ervn23 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc23.p1", 0x000000, 0x600000, CRC(584baeec) SHA1(1b94286e2147eee0a6ad70ae8aa62784089bb9f0) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc23.p1", 0x000000, 0x600000, CRC(ae43365d) SHA1(251c2fcc679c1ad02e2bf6e79af8c01d8af68352) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -10624,7 +10674,7 @@ ROM_END ROM_START( mslug5ervn24 ) ROM_REGION( 0x600000, "maincpu", 0 ) - ROM_LOAD16_WORD_SWAP( "268ervnxc24.p1", 0x000000, 0x600000, CRC(207e93b1) SHA1(6e1cfaf055745174357a93b1d21f5278df9f0aea) ) + ROM_LOAD16_WORD_SWAP( "268ervnxc24.p1", 0x000000, 0x600000, CRC(d6760b00) SHA1(4bbc1104f48e771e17a1ea89cd8f2ca23aa62a69) ) NEO_SFIX_128K( "268fu.s1", CRC(64952683) SHA1(88ec728c2fe18a11fdd218bed5d73bb3affe2ec1) ) @@ -14251,6 +14301,8 @@ HACK( 2019, mslug5dh54, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo HACK( 2019, mslug5dh55, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5dh56, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "XiaShuiDaoMeiRenYu", "Metal Slug 5 (Enemies Resetting Version 2019-06-09)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) //You cannot go beyond the fourth level HACK( 2019, mslug5dh57, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 5 (Generation 1V2 2019-05-11)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5dh58, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "YouGuDuoLa", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5dh59, mslug5, neogeo_noslot, neogeo, neogeo_state, neogeo, ROT0, "hack", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)", MACHINE_SUPPORTS_SAVE ) HACK( 2019, ms5plusrm01, mslug5, neogeo_noslot, neogeo, neogeo_state, ms5plus, ROT0, "Team Remix(Gaston90,lb70,DDJ)", "Metal Slug 5 Plus (Revised Version Mix 1.0 [2019-02-25])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, ms5plusrm02, mslug5, neogeo_noslot, neogeo, neogeo_state, ms5plus, ROT0, "Team Remix(Gaston90,lb70,DDJ,remikare)", "Metal Slug 5 Plus (Revised Version Mix 1.0 [Color Modification V1][2019-02-25])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, ms5plusrm03, mslug5, neogeo_noslot, neogeo, neogeo_state, ms5plus, ROT0, "Team Remix(Gaston90,lb70,DDJ,remikare)", "Metal Slug 5 Plus (Revised Version Mix 1.0 [Color Modification V2][2019-02-25])", MACHINE_SUPPORTS_SAVE ) @@ -14413,30 +14465,30 @@ HACK( 2019, mslug5rmnm87, mslug5, neogeo_noslot, neogeo, neogeo_state, mslu HACK( 2019, mslug5rmnm88, mslug5, neogeo_noslot, neogeo, neogeo_state, mslug5hb, ROT0, "Team Remix(Gaston90/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Revised Version Super Grenade Mix 1.2 [2019-02-25])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5rmnm89, mslug5, neogeo_noslot, neogeo, neogeo_state, mslug5hb, ROT0, "Team Remix(Gaston90/Creamymami[EGCG]/DDJ/remikare)", "Metal Slug 5 (Revised Version Super Grenade Mix 1.2 [Color Modification V1] [2019-02-25])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5rmnm90, mslug5, neogeo_noslot, neogeo, neogeo_state, mslug5hb, ROT0, "Team Remix(Gaston90/Creamymami[EGCG]/DDJ/remikare)", "Metal Slug 5 (Revised Version Super Grenade Mix 1.2 [Color Modification V2] [2019-02-25])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res01, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Flame Shot Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res02, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Flame Shot Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res03, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Flame Shot Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res04, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Heavy Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res05, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Heavy Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res06, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Heavy Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res07, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Laser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res08, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Laser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res09, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Laser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res10, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Rocket Launcher Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res11, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Rocket Launcher Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res12, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Rocket Launcher Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res13, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Shotgun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res14, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Shotgun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res15, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Big Shotgun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res16, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Dual Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res17, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Dual Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res18, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Dual Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res19, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Enemy Chaser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res20, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Enemy Chaser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res21, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Enemy Chaser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res22, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Super Grenade Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res23, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Super Grenade Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5res24, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-04-18)(Revised Version Super Grenade Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res01, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Flame Shot Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res02, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Flame Shot Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res03, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Flame Shot Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res04, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Heavy Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res05, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Heavy Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res06, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Heavy Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res07, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Laser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res08, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Laser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res09, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Laser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res10, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Rocket Launcher Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res11, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Rocket Launcher Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res12, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Rocket Launcher Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res13, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Shotgun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res14, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Shotgun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res15, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Big Shotgun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res16, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Dual Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res17, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Dual Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res18, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Dual Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res19, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Enemy Chaser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res20, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Enemy Chaser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res21, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Enemy Chaser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res22, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Super Grenade Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res23, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Super Grenade Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5res24, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/YouGuDuoLa/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Enhanced Version 2019-10-21)(Revised Version Super Grenade Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5ervs01, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemies Resetting Multi-Function Version 2019-01-01)(Revised Version Big Flame Shot Mix 1.0 [2019-04-24])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5ervs02, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemies Resetting Multi-Function Version 2019-01-01)(Revised Version Big Flame Shot Mix 1.1 [2019-04-24])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5ervs03, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemies Resetting Multi-Function Version 2019-01-01)(Revised Version Big Flame Shot Mix 1.2 [2019-04-24])", MACHINE_SUPPORTS_SAVE ) @@ -14485,30 +14537,30 @@ HACK( 2019, mslug5ervr21, mslug5, neogeo_noslot, neogeo, neogeo_state, s1 HACK( 2019, mslug5ervr22, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemies Resetting Summon Slug Edition 2019-01-01)(Revised Version Super Grenade Mix 1.0 [2019-04-24])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5ervr23, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemies Resetting Summon Slug Edition 2019-01-01)(Revised Version Super Grenade Mix 1.1 [2019-04-24])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5ervr24, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemies Resetting Summon Slug Edition 2019-01-01)(Revised Version Super Grenade Mix 1.2 [2019-04-24])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn01, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Flame Shot Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn02, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Flame Shot Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn03, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Flame Shot Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn04, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Heavy Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn05, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Heavy Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn06, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Heavy Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn07, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Laser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn08, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Laser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn09, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Laser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn10, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Rocket Launcher Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn11, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Rocket Launcher Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn12, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Rocket Launcher Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn13, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Shotgun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn14, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Shotgun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn15, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Big Shotgun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn16, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Dual Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn17, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Dual Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn18, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Dual Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn19, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Enemy Chaser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn20, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Enemy Chaser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn21, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Enemy Chaser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn22, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Super Grenade Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn23, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Super Grenade Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) -HACK( 2019, mslug5ervn24, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-05-27)(Revised Version Super Grenade Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn01, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Flame Shot Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn02, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Flame Shot Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn03, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Flame Shot Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn04, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Heavy Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn05, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Heavy Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn06, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Heavy Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn07, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Laser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn08, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Laser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn09, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Laser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn10, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Rocket Launcher Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn11, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Rocket Launcher Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn12, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Rocket Launcher Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn13, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Shotgun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn14, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Shotgun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn15, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Big Shotgun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn16, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Dual Machine Gun Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn17, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Dual Machine Gun Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn18, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Dual Machine Gun Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn19, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Enemy Chaser Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn20, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Enemy Chaser Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn21, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Enemy Chaser Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn22, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Super Grenade Mix 1.0 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn23, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Super Grenade Mix 1.1 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, mslug5ervn24, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/XiaShuiDaoMeiRenYu/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Enemy Soldiers Magic Version 2019-10-21)(Revised Version Super Grenade Mix 1.2 [2019-07-12])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5sses01, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/Unknown/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Summon Slug Edition 2018-09-18)(Revised Version Big Flame Shot Mix 1.0 [2019-04-26])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5sses02, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/Unknown/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Summon Slug Edition 2018-09-18)(Revised Version Big Flame Shot Mix 1.1 [2019-04-26])", MACHINE_SUPPORTS_SAVE ) HACK( 2019, mslug5sses03, mslug5, neogeo_noslot, neogeo, neogeo_state, s1945p, ROT0, "Team Remix(Gaston90/Unknown/Creamymami[EGCG]/DDJ)", "Metal Slug 5 (Summon Slug Edition 2018-09-18)(Revised Version Big Flame Shot Mix 1.2 [2019-04-26])", MACHINE_SUPPORTS_SAVE ) diff --git a/docs/release/src/hbmame/drivers/neogeo.cpp b/docs/release/src/hbmame/drivers/neogeo.cpp index 42eebd1c6ce..56f29fd42c9 100644 --- a/docs/release/src/hbmame/drivers/neogeo.cpp +++ b/docs/release/src/hbmame/drivers/neogeo.cpp @@ -627,12 +627,12 @@ WRITE8_MEMBER(neogeo_state::audio_cpu_enable_nmi_w) READ16_MEMBER(neogeo_state::in0_r) { - return ((m_edge->in0_r(space, offset) & m_ctrl1->ctrl_r(space, offset)) << 8) | m_dsw->read(); + return ((m_edge->in0_r() & m_ctrl1->read_ctrl()) << 8) | m_dsw->read(); } READ16_MEMBER(neogeo_state::in1_r) { - return ((m_edge->in1_r(space, offset) & m_ctrl2->ctrl_r(space, offset)) << 8) | 0xff; + return ((m_edge->in1_r() & m_ctrl2->read_ctrl()) << 8) | 0xff; } CUSTOM_INPUT_MEMBER(neogeo_state::kizuna4p_start_r) @@ -1010,8 +1010,8 @@ void neogeo_state::init_neogeo() m_sprgen->m_fixed_layer_bank_type = 0; // install controllers - m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, 0, read16_delegate(FUNC(neogeo_state::in0_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x340000, 0x340001, 0, 0x01fffe, 0, read16_delegate(FUNC(neogeo_state::in1_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, 0, read16_delegate(*this, FUNC(neogeo_state::in0_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x340000, 0x340001, 0, 0x01fffe, 0, read16_delegate(*this, FUNC(neogeo_state::in1_r))); } @@ -1379,8 +1379,8 @@ void neogeo_state::mvs(machine_config &config) NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", false); - NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, "", false); - NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, "", false); + NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, nullptr, false); + NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, nullptr, false); } void neogeo_state::main_map_noslot(address_map &map) @@ -1399,8 +1399,8 @@ void neogeo_state::neogeo_noslot(machine_config &config) NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", true); //no mahjong controller - NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, "", true); - NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, "", true); + NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, nullptr, true); + NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, nullptr, true); MSLUGX_PROT(config, "mslugx_prot"); SMA_PROT(config, "sma_prot"); @@ -1423,8 +1423,8 @@ void neogeo_state::neogeo_kog(machine_config &config) NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", true); //no mahjong controller - NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, "", true); - NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, "", true); + NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, nullptr, true); + NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, nullptr, true); NGBOOTLEG_PROT(config, "bootleg_prot"); KOG_PROT(config, "kog_prot"); @@ -1437,13 +1437,13 @@ void neogeo_state::neogeo_mj(machine_config &config) neogeo_noslot(config); //no joystick panel - NEOGEO_CTRL_EDGE_CONNECTOR(config.replace(), m_edge, neogeo_arc_edge_fixed, "", true); + NEOGEO_CTRL_EDGE_CONNECTOR(config.replace(), m_edge, neogeo_arc_edge_fixed, nullptr, true); //P1 mahjong controller config.device_remove("ctrl1"); config.device_remove("ctrl2"); NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, "mahjong", false); - NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, "", true); + NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, nullptr, true); } void neogeo_state::neogeo_dial(machine_config &config) diff --git a/docs/release/src/hbmame/drivers/neogeohb.cpp b/docs/release/src/hbmame/drivers/neogeohb.cpp index 3e69fea9824..958d669c9de 100644 --- a/docs/release/src/hbmame/drivers/neogeohb.cpp +++ b/docs/release/src/hbmame/drivers/neogeohb.cpp @@ -239,6 +239,7 @@ NUM YEAR COMPANY TITLE 807*2013 Neobitz Knight's Chance 808*2014 NG:DEV.Team Razion 809*2015 NG:DEV.Team Kraut Buster +810*2018 Bitmap Bureau Xeno Crisis *********************************************************************************************************/ diff --git a/docs/release/src/hbmame/drivers/ngkofmisc.cpp b/docs/release/src/hbmame/drivers/ngkofmisc.cpp index c53c5e79228..e3b88b5ceec 100644 --- a/docs/release/src/hbmame/drivers/ngkofmisc.cpp +++ b/docs/release/src/hbmame/drivers/ngkofmisc.cpp @@ -67,8 +67,8 @@ void neogeo_state::hbmame_kog(machine_config &config) NEOGEO_CTRL_EDGE_CONNECTOR(config, m_edge, neogeo_arc_edge, "joy", true); //no mahjong controller - NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, "", true); - NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, "", true); + NEOGEO_CONTROL_PORT(config, "ctrl1", neogeo_arc_pin15, nullptr, true); + NEOGEO_CONTROL_PORT(config, "ctrl2", neogeo_arc_pin15, nullptr, true); } void neogeo_state::init_kogd() diff --git a/docs/release/src/hbmame/drivers/pgm.cpp b/docs/release/src/hbmame/drivers/pgm.cpp index 90bcaa90582..f1cdc9641e4 100644 --- a/docs/release/src/hbmame/drivers/pgm.cpp +++ b/docs/release/src/hbmame/drivers/pgm.cpp @@ -15456,6 +15456,33 @@ ROM_START( kovpluss348 ) //kovplus2012dw ROM_LOAD( "m0600_ph259.rom", 0x400000, 0x400000, CRC(7a50501b) SHA1(1af6be69f3133ed56d4a132a1910cf562da83dac) ) ROM_END +ROM_START( kovpluss349 ) //kovplus2012mp + ROM_REGION( 0x600000, "maincpu", 0 ) + PGM_68K_BIOS + ROM_LOAD16_WORD_SWAP( "p0600_ph349.119", 0x100000, 0x400000, CRC(2d80798e) SHA1(7b809b1a85abe8388ac3bf0dd0289ce7ce06450f) ) + + ROM_REGION( 0x4000, "prot", 0 ) + ROM_LOAD( "kov_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) + + ROM_REGION( 0xc00000, "tiles", 0 ) + PGM_VIDEO_BIOS + ROM_LOAD( "t0600_ph174.rom", 0x180000, 0x800000, CRC(f7b6f432) SHA1(1c450f5eac830a41248c93b3e3f67abc217e18c3) ) + + ROM_REGION( 0x1c00000, "sprcol", 0 ) + ROM_LOAD( "a0600_ph174.rom", 0x0000000, 0x0800000, CRC(b2a208a1) SHA1(3c4191336aa760e6077eee9983c809dfbe3eb57a) ) + ROM_LOAD( "a0601.rom", 0x0800000, 0x0800000, CRC(ff7a4373) SHA1(7def9fca7513ad5a117da230bebd2e3c78679041) ) + ROM_LOAD( "a0602.rom", 0x1000000, 0x0800000, CRC(e7a32959) SHA1(3d0ed684dc5b269238890836b2ce7ef46aa5265b) ) + ROM_LOAD( "a0603.rom", 0x1800000, 0x0400000, CRC(ec31abda) SHA1(ee526655369bae63b0ef0730e9768b765c9950fc) ) + + ROM_REGION( 0x1000000, "sprmask", 0 ) + ROM_LOAD( "b0600_ph174.rom", 0x0000000, 0x0800000, CRC(e0a70b54) SHA1(ad94e39fb418770af677083406c3db7a0279c865) ) + ROM_LOAD( "b0601.rom", 0x0800000, 0x0400000, CRC(a0bb1c2f) SHA1(0542348c6e27779e0a98de16f04f9c18158f2b28) ) + + ROM_REGION( 0x1000000, "ics", 0 ) + PGM_AUDIO_BIOS + ROM_LOAD( "m0600_ph174.rom", 0x400000, 0x454F47, CRC(132765c9) SHA1(b4f56dfeba59fea248ec4e04255033e2cb3ec8fb) ) +ROM_END + ROM_START( kovplusas01 ) ROM_REGION( 0x600000, "maincpu", 0 ) PGM_68K_BIOS @@ -32168,6 +32195,7 @@ HACK( 2018, kovpluss345, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1 HACK( 2018, kovpluss346, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Gotvg", "Knights of Valour Plus (Ordinary Soldiers 2 2018-12-25)", MACHINE_SUPPORTS_SAVE ) HACK( 2018, kovpluss347, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Gotvg", "Knights of Valour Plus (Dream of Tu Mi 2018-03-05)", MACHINE_SUPPORTS_SAVE ) HACK( 2019, kovpluss348, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Gotvg", "Knights of Valour Plus (2012 Musou Edition 2019-04-15)", MACHINE_SUPPORTS_SAVE ) +HACK( 2019, kovpluss349, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "hack", "Knights of Valour Plus (Nightmare Kings Edition 2019-10-21)", MACHINE_SUPPORTS_SAVE ) HACK( 1999, kovplusas01, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "Creamymami", "Knights of Valour Plus (Enhanced Power)", MACHINE_SUPPORTS_SAVE ) // Knights of Valour Super Heroes HACK( 1999, kovshs01, kovsh, pgm_arm_type1, kovsh, pgm_arm_type1_state, kovsh, ROT0, "hack", "Knights of Valour Super Heroes (FY 2016 4th Edition)", MACHINE_SUPPORTS_SAVE ) // This roms is already verified diff --git a/docs/release/src/hbmame/drivers/segaorun.cpp b/docs/release/src/hbmame/drivers/segaorun.cpp index a26437c379a..ff68b892520 100644 --- a/docs/release/src/hbmame/drivers/segaorun.cpp +++ b/docs/release/src/hbmame/drivers/segaorun.cpp @@ -263,8 +263,8 @@ void outrunm_state::sound_portmap_banked(address_map &map) { map.global_mask(0xff); map(0x00,0x01).mirror(0x3e).rw("ymsnd",FUNC(ym2151_device::read),FUNC(ym2151_device::write)); map(0x40,0x7f).r("mapper",FUNC(sega_315_5195_mapper_device::pread)); - map(0x80,0xbf).lw8("bank0", [this](u8 data) { m_soundbank->set_bank(0); } ); - map(0xc0,0xff).lw8("bank1", [this](u8 data) { m_soundbank->set_bank(1); } ); + map(0x80,0xbf).lw8(NAME([this](u8 data) { m_soundbank->set_bank(0); } )); + map(0xc0,0xff).lw8(NAME([this](u8 data) { m_soundbank->set_bank(1); } )); } void outrunm_state::soundbank_map(address_map &map) { @@ -289,8 +289,8 @@ void outrunm_state::outrunm(machine_config &config) void outrunm_state::init_init() { init_generic(); - m_custom_io_r = read16_delegate(FUNC(outrunm_state::outrun_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(outrunm_state::outrun_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(outrunm_state::outrun_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(outrunm_state::outrun_custom_io_w)); } ROM_START( outrunm ) diff --git a/docs/release/src/hbmame/drivers/tempest.cpp b/docs/release/src/hbmame/drivers/tempest.cpp index 90fa2322444..1c00ba22c62 100644 --- a/docs/release/src/hbmame/drivers/tempest.cpp +++ b/docs/release/src/hbmame/drivers/tempest.cpp @@ -673,7 +673,7 @@ void tempmg_state::tempmg_map(address_map &map) { map(0x60d0, 0x60df).rw("pokey2",FUNC(pokey_device::read),FUNC(pokey_device::write)); map(0x60e0, 0x60e0).w(FUNC(tempmg_state::tempest_led_w)); map(0x9000, 0xdfff).bankr("bank1"); - map(0xe000, 0xe000).lw8("rombank", [this] (u8 data) { rombank_w(data); }); + map(0xe000, 0xe000).lw8(NAME([this] (u8 data) { rombank_w(data); })); map(0xf800, 0xffff).bankr("bank2"); } diff --git a/docs/release/src/hbmame/drivers/timelimit.cpp b/docs/release/src/hbmame/drivers/timelimit.cpp index 595906d60fb..91d21b7fe71 100644 --- a/docs/release/src/hbmame/drivers/timelimit.cpp +++ b/docs/release/src/hbmame/drivers/timelimit.cpp @@ -45,7 +45,7 @@ void timelimt_hbmame::timelimit(machine_config &config) m_audiocpu->set_addrmap(AS_IO, &timelimt_hbmame::sound_io_map); m_audiocpu->set_vblank_int("screen", FUNC(timelimt_hbmame::irq0_line_hold)); /* ? */ - config.m_minimum_quantum = attotime::from_hz(3000); + config.set_maximum_quantum(attotime::from_hz(3000)); ls259_device &mainlatch(LS259(config, "mainlatch")); // IC15 mainlatch.q_out_cb<0>().set(FUNC(timelimt_hbmame::nmi_enable_w)); diff --git a/docs/release/src/hbmame/hbmame.lst b/docs/release/src/hbmame/hbmame.lst index a0ef429867c..90725d3e6ce 100644 --- a/docs/release/src/hbmame/hbmame.lst +++ b/docs/release/src/hbmame/hbmame.lst @@ -534,6 +534,7 @@ tk2h143 tk2h144 tk2h145 tk2h146 +tk2h147 wofb wofch // tk2p1 wofes @@ -610,6 +611,10 @@ captcomms66 captcomms67 captcomms68 captcomms69 +captcomms70 +captcomms71 +captcomms72 +captcomms73 dinos01 dinos02 dinos03 @@ -899,6 +904,10 @@ sf2ces25 sf2ces26 sf2ces27 sf2ces28 +sf2ces29 +sf2ces30 +sf2ces31 +sf2ces32 sf2js01 sf2js02 sf2s01 @@ -1152,6 +1161,7 @@ xmvsfu1d 1944s01 avspus01 avspus02 +batcirds01 csclubs01 cybotsjs01 ddsomjs01 @@ -3502,6 +3512,7 @@ kof2k2s81 kof2k2s82 kof2k2s83 kof2k2s84 +kof2k2s85 @source:kof2003.cpp kof2003d @@ -4818,6 +4829,8 @@ mslug5dh54 mslug5dh55 mslug5dh56 mslug5dh57 +mslug5dh58 +mslug5dh59 ms5plusrm01 ms5plusrm02 ms5plusrm03 @@ -7684,6 +7697,7 @@ kovpluss345 kovpluss346 kovpluss347 kovpluss348 +kovpluss349 kovplusas01 kovshs01 kovshs02 diff --git a/docs/release/src/hbmame/machine/ng_memcard.h b/docs/release/src/hbmame/machine/ng_memcard.h index 72a62043b8c..73043df11ad 100644 --- a/docs/release/src/hbmame/machine/ng_memcard.h +++ b/docs/release/src/hbmame/machine/ng_memcard.h @@ -32,14 +32,14 @@ public: // construction/destruction ng_memcard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - virtual iodevice_t image_type() const override { return IO_MEMCARD; } - - virtual bool is_readable() const override { return true; } - virtual bool is_writeable() const override { return true; } - virtual bool is_creatable() const override { return true; } - virtual bool must_be_loaded() const override { return false; } - virtual bool is_reset_on_load() const override { return false; } - virtual const char *file_extensions() const override { return "neo"; } + virtual iodevice_t image_type() const noexcept override { return IO_MEMCARD; } + + virtual bool is_readable() const noexcept override { return true; } + virtual bool is_writeable() const noexcept override { return true; } + virtual bool is_creatable() const noexcept override { return true; } + virtual bool must_be_loaded() const noexcept override { return false; } + virtual bool is_reset_on_load() const noexcept override { return false; } + virtual const char *file_extensions() const noexcept override { return "neo"; } virtual image_init_result call_load() override; virtual void call_unload() override; diff --git a/docs/release/src/hbmame/video/cps1.cpp b/docs/release/src/hbmame/video/cps1.cpp index b0e409bcbcd..67fa262288a 100644 --- a/docs/release/src/hbmame/video/cps1.cpp +++ b/docs/release/src/hbmame/video/cps1.cpp @@ -1972,9 +1972,9 @@ VIDEO_START_MEMBER(cps_state,cps) m_stars_rom_size = 0x2000; /* first 0x4000 of gfx ROM are used, but 0x0000-0x1fff is == 0x2000-0x3fff */ /* create tilemaps */ - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile0_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap0_scan),this), 8, 8, 64, 64); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile1_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap1_scan),this), 16, 16, 64, 64); - m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile2_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap2_scan),this), 32, 32, 64, 64); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps_state::get_tile0_info)), tilemap_mapper_delegate(*this, FUNC(cps_state::tilemap0_scan)), 8, 8, 64, 64); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps_state::get_tile1_info)), tilemap_mapper_delegate(*this, FUNC(cps_state::tilemap1_scan)), 16, 16, 64, 64); + m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps_state::get_tile2_info)), tilemap_mapper_delegate(*this, FUNC(cps_state::tilemap2_scan)), 32, 32, 64, 64); /* create empty tiles */ memset(m_empty_tile, 0x0f, sizeof(m_empty_tile)); diff --git a/docs/release/src/hbmame/video/cps2.cpp b/docs/release/src/hbmame/video/cps2.cpp index b3797e0b937..baff4f5e9c9 100644 --- a/docs/release/src/hbmame/video/cps2.cpp +++ b/docs/release/src/hbmame/video/cps2.cpp @@ -588,9 +588,9 @@ VIDEO_START_MEMBER(cps2_state,cps) m_stars_rom_size = 0x2000; /* first 0x4000 of gfx ROM are used, but 0x0000-0x1fff is == 0x2000-0x3fff */ /* create tilemaps */ - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps2_state::get_tile0_info),this), tilemap_mapper_delegate(FUNC(cps2_state::tilemap0_scan),this), 8, 8, 64, 64); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps2_state::get_tile1_info),this), tilemap_mapper_delegate(FUNC(cps2_state::tilemap1_scan),this), 16, 16, 64, 64); - m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps2_state::get_tile2_info),this), tilemap_mapper_delegate(FUNC(cps2_state::tilemap2_scan),this), 32, 32, 64, 64); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps2_state::get_tile0_info)), tilemap_mapper_delegate(*this, FUNC(cps2_state::tilemap0_scan)), 8, 8, 64, 64); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps2_state::get_tile1_info)), tilemap_mapper_delegate(*this, FUNC(cps2_state::tilemap1_scan)), 16, 16, 64, 64); + m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps2_state::get_tile2_info)), tilemap_mapper_delegate(*this, FUNC(cps2_state::tilemap2_scan)), 32, 32, 64, 64); /* create empty tiles */ memset(m_empty_tile, 0x0f, sizeof(m_empty_tile)); diff --git a/docs/release/src/hbmame/video/pacman.cpp b/docs/release/src/hbmame/video/pacman.cpp index 90acfa1c11b..b8706cdb33b 100644 --- a/docs/release/src/hbmame/video/pacman.cpp +++ b/docs/release/src/hbmame/video/pacman.cpp @@ -15,7 +15,7 @@ VIDEO_START_MEMBER( pacman_state, pacmanx ) m_inv_spr = 0; m_xoffsethack = 2; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::pacman_get_tile_info),this), tilemap_mapper_delegate(FUNC(pacman_state::pacman_scan_rows),this), 16, 16, 36, 28 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacman_state::pacman_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(pacman_state::pacman_scan_rows)), 16, 16, 36, 28 ); m_bg_tilemap->set_scrolldx(0, 384*2 - 288*2 ); m_bg_tilemap->set_scrolldy(0, 264*2 - 224*2 ); @@ -154,7 +154,7 @@ VIDEO_START_MEMBER( pacman_state, multipac ) m_inv_spr = 0; m_xoffsethack = 1; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::multipac_get_tile_info),this), tilemap_mapper_delegate(FUNC(pacman_state::pacman_scan_rows),this), 8, 8, 36, 28 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacman_state::multipac_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(pacman_state::pacman_scan_rows)), 8, 8, 36, 28 ); m_bg_tilemap->set_scrolldx(0, 384 - 288 ); m_bg_tilemap->set_scrolldy(0, 264 - 224 ); diff --git a/docs/release/src/mame/drivers/konamigx.cpp b/docs/release/src/mame/drivers/konamigx.cpp index 81c186760cc..4c3ea2d8d7f 100644 --- a/docs/release/src/mame/drivers/konamigx.cpp +++ b/docs/release/src/mame/drivers/konamigx.cpp @@ -1620,7 +1620,7 @@ void konamigx_state::konamigx(machine_config &config) m_k053252->int2_ack().set(FUNC(konamigx_state::hblank_irq_ack_w)); m_k053252->set_screen("screen"); - config.m_minimum_quantum = attotime::from_hz(6000); + config.set_maximum_quantum(attotime::from_hz(6000)); MCFG_MACHINE_START_OVERRIDE(konamigx_state,konamigx) MCFG_MACHINE_RESET_OVERRIDE(konamigx_state,konamigx) @@ -1645,7 +1645,7 @@ void konamigx_state::konamigx(machine_config &config) m_palette->enable_hilights(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(konamigx_state::type2_tile_callback), this); + m_k056832->set_tile_callback(FUNC(konamigx_state::type2_tile_callback)); m_k056832->set_config(K056832_BPP_5, 0, 0); m_k056832->set_palette(m_palette); @@ -1656,7 +1656,7 @@ void konamigx_state::konamigx(machine_config &config) m_k054338->set_alpha_invert(1); K055673(config, m_k055673, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::type2_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::type2_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_GX, -26, -23); m_k055673->set_screen(m_screen); m_k055673->set_palette(m_palette); @@ -1708,7 +1708,7 @@ void konamigx_state::sexyparo(machine_config &config) { konamigx(config); - m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback), this); + m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback)); m_k055673->set_config(K055673_LAYOUT_GX, -42, -23); } @@ -1729,7 +1729,7 @@ void konamigx_state::dragoonj(machine_config &config) m_k056832->set_config(K056832_BPP_5, 1, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::dragoonj_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::dragoonj_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_RNG, -53, -23); } @@ -1742,7 +1742,7 @@ void konamigx_state::le2(machine_config &config) m_k056832->set_config(K056832_BPP_8, 1, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::le2_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::le2_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_LE2, -46, -23); } @@ -1761,7 +1761,7 @@ void konamigx_state::salmndr2(machine_config &config) konamigx(config); m_k056832->set_config(K056832_BPP_6, 1, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::salmndr2_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::salmndr2_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_GX6, -48, -23); } @@ -1914,7 +1914,7 @@ void konamigx_state::winspike(machine_config &config) m_k053252->set_offsets(24+15, 16); - m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback), this); + m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback)); m_k056832->set_config(K056832_BPP_8, 0, 2); m_k055673->set_config(K055673_LAYOUT_LE2, -53, -23); @@ -3856,8 +3856,8 @@ void konamigx_state::init_konamigx() switch (gameDefs[i].special) { case 1: // LE2 guns - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44000, 0xd44003, read32_delegate(FUNC(konamigx_state::le2_gun_H_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44004, 0xd44007, read32_delegate(FUNC(konamigx_state::le2_gun_V_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44000, 0xd44003, read32_delegate(*this, FUNC(konamigx_state::le2_gun_H_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44004, 0xd44007, read32_delegate(*this, FUNC(konamigx_state::le2_gun_V_r))); break; case 2: // tkmmpzdm hack { @@ -3892,7 +3892,7 @@ void konamigx_state::init_konamigx() break; case 7: // install type 4 Xilinx protection for non-type 3/4 games - m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc0000, 0xcc0007, write32_delegate(FUNC(konamigx_state::type4_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc0000, 0xcc0007, write32_delegate(*this, FUNC(konamigx_state::type4_prot_w))); break; case 8: // tbyahhoo @@ -3909,7 +3909,7 @@ void konamigx_state::init_konamigx() } if (readback == BPP66) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd00000, 0xd01fff, read32_delegate(FUNC(konamigx_state::k_6bpp_rom_long_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd00000, 0xd01fff, read32_delegate(*this, FUNC(konamigx_state::k_6bpp_rom_long_r))); #undef BPP5 diff --git a/docs/release/src/mame/drivers/model2.cpp b/docs/release/src/mame/drivers/model2.cpp index 1752cacad69..9cecd30cdab 100644 --- a/docs/release/src/mame/drivers/model2.cpp +++ b/docs/release/src/mame/drivers/model2.cpp @@ -2812,7 +2812,7 @@ void model2b_state::model2b(machine_config &config) //m_dsp2->set_boot_mode(adsp21062_device::BOOT_MODE_HOST); //m_dsp2->set_addrmap(AS_DATA, &model2b_state::geo_sharc_map); - config.m_minimum_quantum = attotime::from_hz(18000); + config.set_maximum_quantum(attotime::from_hz(18000)); GENERIC_FIFO_U32(config, m_copro_fifo_in, 0); GENERIC_FIFO_U32(config, m_copro_fifo_out, 0); @@ -3133,7 +3133,7 @@ ROM_START( zeroguna ) /* Zero Gunner (Export), Model 2A */ ROM_LOAD32_WORD("mpr-20294.9", 0x800000, 0x400000, CRC(a0bd1474) SHA1(c0c032adac69bd545e3aab481878b08f3c3edab8) ) ROM_LOAD32_WORD("mpr-20295.10", 0x800002, 0x400000, CRC(c548cced) SHA1(d34f2fc9b4481c75a6824aa4bdd3f1884188d35b) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_REGION( 0x800000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-20298.17", 0x000000, 0x400000, CRC(8ab782fc) SHA1(595f6fc2e9c58ce9763d51798ceead8d470f0a33) ) @@ -3168,7 +3168,7 @@ ROM_START( zerogunaj ) /* Zero Gunner (Japan), Model 2A - Sega game ID# 833-1134 ROM_LOAD32_WORD("mpr-20294.9", 0x800000, 0x400000, CRC(a0bd1474) SHA1(c0c032adac69bd545e3aab481878b08f3c3edab8) ) ROM_LOAD32_WORD("mpr-20295.10", 0x800002, 0x400000, CRC(c548cced) SHA1(d34f2fc9b4481c75a6824aa4bdd3f1884188d35b) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x800000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-20298.17", 0x000000, 0x400000, CRC(8ab782fc) SHA1(595f6fc2e9c58ce9763d51798ceead8d470f0a33) ) @@ -3211,7 +3211,7 @@ ROM_START( zerogun ) /* Zero Gunner (Export), Model 2B */ ROM_LOAD32_WORD("mpr-20301.27", 0x000000, 0x200000, CRC(52010fb2) SHA1(8dce67c6f9e48d749c64b11d4569df413dc40e07) ) ROM_LOAD32_WORD("mpr-20300.25", 0x000002, 0x200000, CRC(6f042792) SHA1(75db68e57ec3fbc7af377342eef81f26fae4e1c4) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-20302.31", 0x000000, 0x080000, CRC(44ff50d2) SHA1(6ffec81042fd5708e8a5df47b63f9809f93bf0f8) ) @@ -3243,7 +3243,7 @@ ROM_START( zerogunj ) /* Zero Gunner (Japan), Model 2B */ ROM_LOAD32_WORD("mpr-20301.27", 0x000000, 0x200000, CRC(52010fb2) SHA1(8dce67c6f9e48d749c64b11d4569df413dc40e07) ) ROM_LOAD32_WORD("mpr-20300.25", 0x000002, 0x200000, CRC(6f042792) SHA1(75db68e57ec3fbc7af377342eef81f26fae4e1c4) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-20302.31", 0x000000, 0x080000, CRC(44ff50d2) SHA1(6ffec81042fd5708e8a5df47b63f9809f93bf0f8) ) @@ -3267,7 +3267,7 @@ ROM_START( gunblade ) /* Gunblade NY Revision A, Model 2B, Sega game ID# 833-125 ROM_LOAD32_WORD("mpr-18976.9", 0x800000, 0x400000, CRC(c95c15eb) SHA1(892063e91b2ed20e0600d4b188da1e9f45a19692) ) ROM_LOAD32_WORD("mpr-18977.10", 0x800002, 0x400000, CRC(db8f5b6f) SHA1(c11d2c9e1e215aa7b2ebb777639c8cd651901f52) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-18986.29", 0x000000, 0x400000, CRC(04820f7b) SHA1(5eb6682399b358d77658d82e612b02b724e3f3e1) ) ROM_LOAD32_WORD("mpr-18987.30", 0x000002, 0x400000, CRC(2419367f) SHA1(0a04a1049d2da486dc9dbb97b383bd24259b78c8) ) @@ -3306,7 +3306,7 @@ ROM_START( vf2 ) /* Virtua Fighter 2 Version 2.1, Model 2A */ ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) ) ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) ) @@ -3352,7 +3352,7 @@ ROM_START( vf2b ) /* Virtua Fighter 2 Revision B, Model 2A */ ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) ) ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) ) @@ -3398,7 +3398,7 @@ ROM_START( vf2a ) /* Virtua Fighter 2 Revision A, Model 2A */ ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) ) ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) ) @@ -3444,7 +3444,7 @@ ROM_START( vf2o ) /* Virtua Fighter 2, Model 2A */ ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) ) ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) ) @@ -3487,7 +3487,7 @@ ROM_START( srallyc ) ROM_LOAD32_WORD( "mpr-17884.6", 0x800000, 0x200000, CRC(4cfc95e1) SHA1(81d927b8c4f9d0c4c5e29d676b30f30f83751fdc) ) ROM_LOAD32_WORD( "mpr-17885.7", 0x800002, 0x200000, CRC(a08d2467) SHA1(9449ac8f8f9ce8d8e536b05a91e46841fed7f2d0) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) ) ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) ) @@ -3533,7 +3533,7 @@ ROM_START( srallycb ) /* Sega Rally Championship Revision B, Model 2A, Sega game ROM_LOAD32_WORD( "mpr-17884.6", 0x800000, 0x200000, CRC(4cfc95e1) SHA1(81d927b8c4f9d0c4c5e29d676b30f30f83751fdc) ) ROM_LOAD32_WORD( "mpr-17885.7", 0x800002, 0x200000, CRC(a08d2467) SHA1(9449ac8f8f9ce8d8e536b05a91e46841fed7f2d0) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) ) ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) ) @@ -3579,7 +3579,7 @@ ROM_START( srallycc ) /* Sega Rally Championship Revision A, Model 2A, Sega game ROM_LOAD32_WORD( "mpr-17884.6", 0x800000, 0x200000, CRC(4cfc95e1) SHA1(81d927b8c4f9d0c4c5e29d676b30f30f83751fdc) ) ROM_LOAD32_WORD( "mpr-17885.7", 0x800002, 0x200000, CRC(a08d2467) SHA1(9449ac8f8f9ce8d8e536b05a91e46841fed7f2d0) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) ) ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) ) @@ -3625,7 +3625,7 @@ ROM_START( srallycdx ) /* Sega Rally Championship DX Revision A, Model 2A - Sing ROM_LOAD32_WORD( "mpr-17764a.6", 0x800000, 0x200000, CRC(dcb91e31) SHA1(2725268e97b9f4c14d56c040af38bc82f5020e3e) ) // IC 6 and 7 likely EPROMs ROM_LOAD32_WORD( "mpr-17765a.7", 0x800002, 0x200000, CRC(b657dc48) SHA1(ae0f1bc6e2479fa51ca36f8be3a1785981c4dfe9) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) ) ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) ) @@ -3672,7 +3672,7 @@ ROM_START( srallycdxa ) // Sega Rally Championship DX, Model 2A? - Single player ROM_LOAD32_WORD( "epr-17764.6", 0x800000, 0x100000, CRC(68254fcf) SHA1(d90d962b5f81d6598fc9d94c44d9cee71767fc26) ) // NEC D27C8000D EPROM ROM_LOAD32_WORD( "epr-17765.7", 0x800002, 0x100000, CRC(81112ea5) SHA1(a0251b4f5f18ae2e2d0576087a687dd7c2e49c34) ) // NEC D27C8000D EPROM - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) ) // not present in this rev memory test, why ? ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) ) // @@ -3767,7 +3767,7 @@ ROM_START( manxtt ) /* Manx TT Superbike Twin Revision D, Model 2A - Can be set ROM_LOAD32_WORD( "mpr-18755.18", 0x800000, 0x200000, CRC(bf094d9e) SHA1(2cd7130b226a28098191a6caf6fd761bb0bfac7b) ) ROM_LOAD32_WORD( "mpr-18758.22", 0x800002, 0x200000, CRC(1b5473d0) SHA1(658e33503f6990f4d9a954c63efad5f53d15f3a4) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "mpr-18761.28", 0x000000, 0x200000, CRC(4e39ec05) SHA1(50696cd320f1a6492e0c193713acbce085d959cd) ) ROM_LOAD32_WORD( "mpr-18762.29", 0x000002, 0x200000, CRC(4ab165d8) SHA1(7ff42a4c7236fec76f94f2d0c5537e503bcc98e5) ) @@ -3827,7 +3827,7 @@ ROM_START( manxttc ) /* Manx TT Superbike Twin Revision C, Model 2A */ ROM_LOAD32_WORD( "mpr-18755.18", 0x800000, 0x200000, CRC(bf094d9e) SHA1(2cd7130b226a28098191a6caf6fd761bb0bfac7b) ) ROM_LOAD32_WORD( "mpr-18758.22", 0x800002, 0x200000, CRC(1b5473d0) SHA1(658e33503f6990f4d9a954c63efad5f53d15f3a4) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "mpr-18761.28", 0x000000, 0x200000, CRC(4e39ec05) SHA1(50696cd320f1a6492e0c193713acbce085d959cd) ) ROM_LOAD32_WORD( "mpr-18762.29", 0x000002, 0x200000, CRC(4ab165d8) SHA1(7ff42a4c7236fec76f94f2d0c5537e503bcc98e5) ) @@ -3884,7 +3884,7 @@ ROM_START( motoraid ) /* Motor Raid, Model 2A, Sega game ID# 833-13232 MOTOR RAI ROM_LOAD32_WORD( "mpr-20025.18", 0x1000000, 0x400000, CRC(d4ecd0be) SHA1(9df0d1db32b818dad28f9eeab3bc19c56d27ec6d) ) ROM_LOAD32_WORD( "mpr-20028.22", 0x1000002, 0x400000, CRC(3147e0e1) SHA1(9aa0e13c8dc5073a603279a538cc7662531dfd19) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "epr-20011.28", 0x000000, 0x100000, CRC(794c026c) SHA1(85abd667491fd019ee18ba256fd580356f4e1fe9) ) ROM_LOAD32_WORD( "epr-20012.29", 0x000002, 0x100000, CRC(f53db4e3) SHA1(4474610eed52248e5e36be438eff5d39f076b134) ) @@ -3935,7 +3935,7 @@ ROM_START( motoraiddx ) /* Motor Raid DX, Model 2A, Sega ROM board ID# 834-13231 ROM_LOAD32_WORD( "mpr-20025.18", 0x1000000, 0x400000, CRC(d4ecd0be) SHA1(9df0d1db32b818dad28f9eeab3bc19c56d27ec6d) ) ROM_LOAD32_WORD( "mpr-20028.22", 0x1000002, 0x400000, CRC(3147e0e1) SHA1(9aa0e13c8dc5073a603279a538cc7662531dfd19) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD( "epr-20011.28", 0x000000, 0x100000, CRC(794c026c) SHA1(85abd667491fd019ee18ba256fd580356f4e1fe9) ) ROM_LOAD32_WORD( "epr-20012.29", 0x000002, 0x100000, CRC(f53db4e3) SHA1(4474610eed52248e5e36be438eff5d39f076b134) ) @@ -3987,7 +3987,7 @@ ROM_START( skytargt ) /* Sky Target, Model 2A, Sega game ID# 833-12178, Sega ROM ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD( "mpr-18420.28", 0x000000, 0x200000, CRC(92b87817) SHA1(b6949b745d0bedeecd6d0240f8911cb345c16d8d) ) ROM_LOAD32_WORD( "mpr-18419.29", 0x000002, 0x200000, CRC(74542d87) SHA1(37230e96dd526fb47fcbde5778e5466d8955a969) ) @@ -4034,7 +4034,7 @@ ROM_START( vcop2 ) /* Virtua Cop 2, Model 2A, Sega Game ID# 833-12266, ROM board ROM_COPY( "main_data", 0xc00000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0xc00000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-18513.16", 0x000000, 0x200000, CRC(777a3633) SHA1(edc2798c4d88975ce67b54fc0db008e7d24db6ef) ) @@ -4102,7 +4102,7 @@ ROM_START( dynamcop ) /* Dynamite Cop (Export), Model 2A, Sega Game ID# 833-1134 ROM_LOAD32_WORD("mpr-20791.4", 0x1800000, 0x400000, CRC(4883d0df) SHA1(b98af63e81f6c1b2766d7e96acbd1821bba000d4) ) ROM_LOAD32_WORD("mpr-20792.5", 0x1800002, 0x400000, CRC(47becfa2) SHA1(a333885872a64b322f3cb464a70352d73654b1b3) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-20799.16", 0x0000000, 0x400000, CRC(424571bf) SHA1(18a4e8d0e968fff3b645b59a0023b0ef38d51924) ) @@ -4153,7 +4153,7 @@ ROM_START( dyndeka2 ) /* Dynamite Deka 2 (Japan), Model 2A */ ROM_LOAD32_WORD("mpr-20791.4", 0x1800000, 0x400000, CRC(4883d0df) SHA1(b98af63e81f6c1b2766d7e96acbd1821bba000d4) ) ROM_LOAD32_WORD("mpr-20792.5", 0x1800002, 0x400000, CRC(47becfa2) SHA1(a333885872a64b322f3cb464a70352d73654b1b3) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-20799.16", 0x0000000, 0x400000, CRC(424571bf) SHA1(18a4e8d0e968fff3b645b59a0023b0ef38d51924) ) @@ -4220,7 +4220,7 @@ ROM_START( dynamcopb ) /* Dynamite Cop (Export), Model 2B */ ROM_LOAD32_WORD("mpr-20810.27", 0x0800000, 0x400000, CRC(838a10a7) SHA1(a658f1864829058b1d419e7c001e47cd0ab06a20) ) ROM_LOAD32_WORD("mpr-20808.26", 0x0800002, 0x400000, CRC(706bd495) SHA1(f857b303afda6301b19d97dfe5c313126261716e) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-20811.30", 0x000000, 0x080000, CRC(a154b83e) SHA1(2640c6b6966f4a888329e583b6b713bd0e779b6b) ) @@ -4268,7 +4268,7 @@ ROM_START( dyndeka2b ) /* Dynamite Deka 2 (Japan), Model 2B */ ROM_LOAD32_WORD("mpr-20810.27", 0x0800000, 0x400000, CRC(838a10a7) SHA1(a658f1864829058b1d419e7c001e47cd0ab06a20) ) ROM_LOAD32_WORD("mpr-20808.26", 0x0800002, 0x400000, CRC(706bd495) SHA1(f857b303afda6301b19d97dfe5c313126261716e) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-20811.30", 0x000000, 0x080000, CRC(a154b83e) SHA1(2640c6b6966f4a888329e583b6b713bd0e779b6b) ) @@ -4300,7 +4300,7 @@ ROM_START( dynamcopc ) /* Dynamite Cop (USA), Model 2C */ ROM_LOAD32_WORD("mpr-20791.4", 0x1800000, 0x400000, CRC(4883d0df) SHA1(b98af63e81f6c1b2766d7e96acbd1821bba000d4) ) /* Located at position 5 on 2C-CRX rom board */ ROM_LOAD32_WORD("mpr-20792.5", 0x1800002, 0x400000, CRC(47becfa2) SHA1(a333885872a64b322f3cb464a70352d73654b1b3) ) /* Located at position 6 on 2C-CRX rom board */ - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // TGPx4 program (COPRO sockets) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // TGPx4 program (COPRO sockets) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-20799.16", 0x0000000, 0x400000, CRC(424571bf) SHA1(18a4e8d0e968fff3b645b59a0023b0ef38d51924) ) /* Located at position 17 on 2C-CRX rom board */ @@ -4359,7 +4359,7 @@ ROM_START( schamp ) /* Sonic Championship, Model 2B - Sega ROM board ID# 834-127 ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-19015.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) ) ROM_LOAD32_WORD("mpr-19016.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) ) @@ -4413,7 +4413,7 @@ ROM_START( sfight ) /* Sonic The Fighters, Model 2B */ ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-19015.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) ) ROM_LOAD32_WORD("mpr-19016.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) ) @@ -4457,7 +4457,7 @@ ROM_START( stcc ) /* Sega Touring Car Championship, Model 2C - Defaults to Japan ROM_COPY("main_data", 0x800000, 0xe00000, 0x100000) ROM_COPY("main_data", 0x800000, 0xf00000, 0x100000) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19255.29", 0x000000, 0x200000, CRC(d78bf030) SHA1(e6b3d8422613d22db50cf6c251f9a21356d96653) ) ROM_LOAD32_WORD("mpr-19256.30", 0x000002, 0x200000, CRC(cb2b2d9e) SHA1(86b2b8bb6074352f72eb81e616093a1ba6f5163f) ) @@ -4522,7 +4522,7 @@ ROM_START( stccb ) /* Sega Touring Car Championship Revision B, Model 2C - Defau ROM_COPY("main_data", 0x800000, 0xe00000, 0x100000) ROM_COPY("main_data", 0x800000, 0xf00000, 0x100000) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19255.29", 0x000000, 0x200000, CRC(d78bf030) SHA1(e6b3d8422613d22db50cf6c251f9a21356d96653) ) ROM_LOAD32_WORD("mpr-19256.30", 0x000002, 0x200000, CRC(cb2b2d9e) SHA1(86b2b8bb6074352f72eb81e616093a1ba6f5163f) ) @@ -4587,7 +4587,7 @@ ROM_START( stcca ) /* Sega Touring Car Championship Revision A, Model 2C - Defau ROM_COPY("main_data", 0x800000, 0xe00000, 0x100000) ROM_COPY("main_data", 0x800000, 0xf00000, 0x100000) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19255.29", 0x000000, 0x200000, CRC(d78bf030) SHA1(e6b3d8422613d22db50cf6c251f9a21356d96653) ) ROM_LOAD32_WORD("mpr-19256.30", 0x000002, 0x200000, CRC(cb2b2d9e) SHA1(86b2b8bb6074352f72eb81e616093a1ba6f5163f) ) @@ -4647,7 +4647,7 @@ ROM_START( skisuprg ) /* Sega Ski Super G, Model 2C, Sega Game ID# 833-12861, RO ROM_LOAD32_WORD( "mpr-19492.9", 0x800000, 0x400000, CRC(4805318f) SHA1(dbd1359817933313c6d74d3a1450682e8ce5857a) ) ROM_LOAD32_WORD( "mpr-19493.10", 0x800002, 0x400000, CRC(39daa909) SHA1(e29e50c7fc39bd4945f993ceaa100358054efc5a) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD( "mpr-19502.29", 0x000000, 0x400000, CRC(2212d8d6) SHA1(3b8a4da2dc00a1eac41b48cbdc322ea1c31b8b29) ) ROM_LOAD32_WORD( "mpr-19503.30", 0x000002, 0x400000, CRC(3c9cfc73) SHA1(2213485a00cef0bcef11b67f00027c4159c5e2f5) ) @@ -4692,7 +4692,7 @@ ROM_START( segawski ) /* Sega Water Ski Revision A, Model 2C, Sega Game ID# 833- ROM_COPY( "main_data", 0x1800000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1800000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19986.29", 0x0000000, 0x400000, CRC(4b8e26f8) SHA1(859e3788c75599295a8b57ed7852f2cbb6a2a738) ) ROM_LOAD32_WORD("mpr-19987.30", 0x0000002, 0x400000, CRC(8d5b9d38) SHA1(35f41c474af3754152aecefe81e912120823e0ff) ) @@ -4745,7 +4745,7 @@ ROM_START( hotd ) /* House of the Dead, Model 2C, Sega Game ID# 610-0396-13054, ROM_COPY( "main_data", 0x1800000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("epr-19707.29", 0x000000, 0x080000, CRC(384fd133) SHA1(6d060378d0f801b04d12e7ee874f2fa0572992d9) ) ROM_LOAD32_WORD("epr-19706.30", 0x000002, 0x080000, CRC(1277531c) SHA1(08d3e733ba9989fcd32290634171c73f26ab6e2b) ) @@ -4794,7 +4794,7 @@ ROM_START( hotdp ) ROM_COPY( "main_data", 0x1800000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("copro0.29", 0x000000, 0x200000, CRC(fc2380f5) SHA1(02a2f8bfc3915787f3aa9645de8a0af4450cea33) ) ROM_LOAD32_WORD("copro1.30", 0x000002, 0x200000, CRC(e6ae8f3c) SHA1(9a2c3d3b305e4707f7691d6242ff1bf47d1ced10) ) @@ -4841,7 +4841,7 @@ ROM_START( lastbrnx ) /* Last Bronx Revision A (Export), Model 2B */ ROM_LOAD32_WORD("mpr-19055.27", 0x000000, 0x200000, CRC(85a57d49) SHA1(99c49fe135dc46fa861337b5bac654ae8478778a) ) ROM_LOAD32_WORD("mpr-19054.25", 0x000002, 0x200000, CRC(05366277) SHA1(f618e2b9b26a1f7eccebfc8f8e17ef8ad9029be8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("mpr-19056.31", 0x000000, 0x080000, CRC(22a22918) SHA1(baa039cd86650b6cd81f295916c4d256e60cb29c) ) @@ -4870,7 +4870,7 @@ ROM_START( lastbrnxu ) /* Last Bronx Revision A (USA), Model 2B - Sega ROM board ROM_LOAD32_WORD("mpr-19055.27", 0x000000, 0x200000, CRC(85a57d49) SHA1(99c49fe135dc46fa861337b5bac654ae8478778a) ) ROM_LOAD32_WORD("mpr-19054.25", 0x000002, 0x200000, CRC(05366277) SHA1(f618e2b9b26a1f7eccebfc8f8e17ef8ad9029be8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("mpr-19056.31", 0x000000, 0x080000, CRC(22a22918) SHA1(baa039cd86650b6cd81f295916c4d256e60cb29c) ) @@ -4899,7 +4899,7 @@ ROM_START( lastbrnxj ) /* Last Bronx Revision A (Japan), Model 2B */ ROM_LOAD32_WORD("mpr-19055.27", 0x000000, 0x200000, CRC(85a57d49) SHA1(99c49fe135dc46fa861337b5bac654ae8478778a) ) ROM_LOAD32_WORD("mpr-19054.25", 0x000002, 0x200000, CRC(05366277) SHA1(f618e2b9b26a1f7eccebfc8f8e17ef8ad9029be8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("mpr-19056.31", 0x000000, 0x080000, CRC(22a22918) SHA1(baa039cd86650b6cd81f295916c4d256e60cb29c) ) @@ -4918,7 +4918,7 @@ ROM_START( pltkidsa ) /* Pilot Kids, Model 2A */ ROM_LOAD32_WORD("mpr-21262.da0", 0x000000, 0x400000, CRC(aa71353e) SHA1(6eb5e8284734f01beec1dbbee049b6b7672e2504) ) ROM_LOAD32_WORD("mpr-21263.da1", 0x000002, 0x400000, CRC(d55d4509) SHA1(641db6ec3e9266f8265a4b541bcd8c2f7d164cc3) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-21264.tp0", 0x0000000, 0x400000, CRC(6b35204d) SHA1(3a07701b140eb3088fad29c8b2d9c1e1e7ef9471) ) @@ -4977,7 +4977,7 @@ ROM_START( pltkids ) /* Pilot Kids Revision A, Model 2B */ ROM_LOAD32_WORD("mpr-21275.tx3", 0x0800000, 0x400000, CRC(c4870b7c) SHA1(feb8a34acb620a36ed5aea92d22622a76d7e1b29) ) ROM_LOAD32_WORD("mpr-21273.tx2", 0x0800002, 0x400000, CRC(722ec8a2) SHA1(1a1dc92488cde6284a96acce80e47a9cceccde76) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-21276.sd0", 0x000000, 0x080000, CRC(8f415bc3) SHA1(4e8e1ccbe025deca42fcf2582f3da46fa34780b7) ) @@ -5020,7 +5020,7 @@ ROM_START( indy500 ) /* Defaults to Twin (Stand Alone) Cab version. 2 credits t ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("epr-18249.29", 0x000000, 0x080000, CRC(a399f023) SHA1(8b453313c16d935701ed7dbf71c1607c40aede63) ) ROM_LOAD32_WORD("epr-18250.30", 0x000002, 0x080000, CRC(7479ad52) SHA1(d453e25709cd5970cd21bdc8b4785bc8eb5a50d7) ) @@ -5072,7 +5072,7 @@ ROM_START( indy500d ) /* Defaults to Deluxe (Stand Alone) Cab version. 3 credits ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("epr-18249.29", 0x000000, 0x080000, CRC(a399f023) SHA1(8b453313c16d935701ed7dbf71c1607c40aede63) ) ROM_LOAD32_WORD("epr-18250.30", 0x000002, 0x080000, CRC(7479ad52) SHA1(d453e25709cd5970cd21bdc8b4785bc8eb5a50d7) ) @@ -5124,7 +5124,7 @@ ROM_START( indy500to ) /* Defaults to Twin (Stand Alone) Cab version. 2 credits ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("epr-18249.29", 0x000000, 0x080000, CRC(a399f023) SHA1(8b453313c16d935701ed7dbf71c1607c40aede63) ) ROM_LOAD32_WORD("epr-18250.30", 0x000002, 0x080000, CRC(7479ad52) SHA1(d453e25709cd5970cd21bdc8b4785bc8eb5a50d7) ) @@ -5176,7 +5176,7 @@ ROM_START( waverunr ) /* Wave Runner Revision A (Japan), Model 2C, Sega Game ID# ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("epr-19280.29", 0x000000, 0x080000, CRC(c6b59fb9) SHA1(909663f440d19a34591d1f9707972c313e34f909) ) ROM_LOAD32_WORD("epr-19281.30", 0x000002, 0x080000, CRC(5a6110e7) SHA1(39ba8a35fdcfdd6c88b44ab392ca0e958da44767) ) @@ -5240,7 +5240,7 @@ ROM_START( rchase2 ) /* Rail Chase 2 Revision A, Model 2B. Sega game ID# 833-118 ROM_LOAD32_WORD("mpr-18043.5", 0xc00000, 0x200000, CRC(ff84dfd6) SHA1(82833bf4cb1f367aea5fec6cffb7023cbbd3c8cb) ) ROM_LOAD32_WORD("mpr-18044.6", 0xc00002, 0x200000, CRC(ab9b406d) SHA1(62e95ceea6f71eedbebae59e188aac03e6129e62) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASEFF ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASEFF ) // Copro extra data (collision/height map/etc) /* empty?? */ ROM_REGION( 0x1000000, "polygons", 0 ) // Models @@ -5343,7 +5343,7 @@ ROM_START( bel ) /* Behind Enemy Lines, Model 2C */ ROM_LOAD32_WORD("mpr-20227.5", 0xc00000, 0x200000, CRC(1277686e) SHA1(fff27006659458300001425261b944e690f1d494) ) ROM_LOAD32_WORD("mpr-20228.6", 0xc00002, 0x200000, CRC(49cb5568) SHA1(ee3273302830f3499c7d4e548b629c51e0369e8a) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-20236.29", 0x000000, 0x200000, CRC(8de9a3c2) SHA1(e7fde1fd509531e1002ff813163067dc0d134536) ) ROM_LOAD32_WORD("mpr-20235.30", 0x000002, 0x200000, CRC(78fa11ef) SHA1(a60deabb662e9c09f5d6342dc1a1c6045744d93f) ) @@ -5384,7 +5384,7 @@ ROM_START( overrev ) /* Over Rev Revision A, Model 2C */ ROM_LOAD32_WORD( "mpr-19994.9", 0x800000, 0x400000, CRC(e691fbd5) SHA1(b99c2f3f2a682966d792917dfcb8ed8e53bc0b7a) ) ROM_LOAD32_WORD( "mpr-19995.10", 0x800002, 0x400000, CRC(82a7828e) SHA1(4336a12a07a67f94091b4a9b491bab02c375dd15) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // TGPx4 program (COPRO sockets) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // TGPx4 program (COPRO sockets) ROM_REGION( 0x800000, "polygons", 0 ) // Models (TGP sockets) ROM_LOAD32_WORD( "mpr-19998.17", 0x000000, 0x200000, CRC(6a834574) SHA1(8be19bf42dbb157d6acde62a2018ef4c0d41aab4) ) @@ -5429,7 +5429,7 @@ ROM_START( overrevb ) /* Over Rev Revision B, Model 2B */ ROM_LOAD32_WORD( "mpr-19994.9", 0x800000, 0x400000, CRC(e691fbd5) SHA1(b99c2f3f2a682966d792917dfcb8ed8e53bc0b7a) ) ROM_LOAD32_WORD( "mpr-19995.10", 0x800002, 0x400000, CRC(82a7828e) SHA1(4336a12a07a67f94091b4a9b491bab02c375dd15) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x800000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-19998.17", 0x000000, 0x200000, CRC(6a834574) SHA1(8be19bf42dbb157d6acde62a2018ef4c0d41aab4) ) @@ -5458,7 +5458,7 @@ ROM_START( overrevba ) /* Over Rev Revision A, Model 2B */ ROM_LOAD32_WORD( "mpr-19994.9", 0x800000, 0x400000, CRC(e691fbd5) SHA1(b99c2f3f2a682966d792917dfcb8ed8e53bc0b7a) ) ROM_LOAD32_WORD( "mpr-19995.10", 0x800002, 0x400000, CRC(82a7828e) SHA1(4336a12a07a67f94091b4a9b491bab02c375dd15) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x800000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-19998.17", 0x000000, 0x200000, CRC(6a834574) SHA1(8be19bf42dbb157d6acde62a2018ef4c0d41aab4) ) @@ -5489,7 +5489,7 @@ ROM_START( rascot2 ) /* Royal Ascot 2, Model 2C, Rom Board : 837-12485 Com Board ROM_LOAD32_WORD("mpr-20169.9", 0x800000, 0x400000, CRC(b5be4d6b) SHA1(cfb4696506efa0e93fab35bbeb87decd83aec040) ) ROM_LOAD32_WORD("mpr-20170.10", 0x800002, 0x400000, CRC(7b05cf33) SHA1(9e392ea0c7a9f4cef76d46ad92a7cf814022c133) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00) // TGPx4 program ROM_REGION( 0x2000000, "polygons", 0 ) // Models ROM_LOAD32_WORD("mpr-20173.17", 0x0000000, 0x400000, CRC(60bd684e) SHA1(893985808adb88fb54f0ca85ca23995d65360360) ) @@ -5525,7 +5525,7 @@ ROM_START( topskatr ) /* Top Skater Revision A (Export), Model 2C, Sega Game ID# ROM_LOAD32_WORD("mpr-19737.9", 0x800000, 0x400000, CRC(281a7dde) SHA1(71d5ba434328a81969bfdc71ac1160c5ff3ae9d3) ) ROM_LOAD32_WORD("mpr-19738.10", 0x800002, 0x400000, CRC(f688327e) SHA1(68c9db242ef7e8f98979e968a09e4b093bc5d470) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19743.29", 0x000000, 0x200000, CRC(d41a41bf) SHA1(a5f6b24e6526d0d2ef9c526c273c018d1e0fed59) ) ROM_LOAD32_WORD("mpr-19744.30", 0x000002, 0x200000, CRC(84f203bf) SHA1(4952b764e6bf6cd735018738c5eff08781ee2315) ) @@ -5565,7 +5565,7 @@ ROM_START( topskatruo ) /* Top Skater (USA), Model 2C, Sega Game ID# 833-13080-0 ROM_LOAD32_WORD("mpr-19737.9", 0x800000, 0x400000, CRC(281a7dde) SHA1(71d5ba434328a81969bfdc71ac1160c5ff3ae9d3) ) ROM_LOAD32_WORD("mpr-19738.10", 0x800002, 0x400000, CRC(f688327e) SHA1(68c9db242ef7e8f98979e968a09e4b093bc5d470) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19743.29", 0x000000, 0x200000, CRC(d41a41bf) SHA1(a5f6b24e6526d0d2ef9c526c273c018d1e0fed59) ) ROM_LOAD32_WORD("mpr-19744.30", 0x000002, 0x200000, CRC(84f203bf) SHA1(4952b764e6bf6cd735018738c5eff08781ee2315) ) @@ -5605,7 +5605,7 @@ ROM_START( topskatru ) /* Top Skater Revision A (USA), Model 2C, Sega Game ID# 8 ROM_LOAD32_WORD("mpr-19737.9", 0x800000, 0x400000, CRC(281a7dde) SHA1(71d5ba434328a81969bfdc71ac1160c5ff3ae9d3) ) ROM_LOAD32_WORD("mpr-19738.10", 0x800002, 0x400000, CRC(f688327e) SHA1(68c9db242ef7e8f98979e968a09e4b093bc5d470) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19743.29", 0x000000, 0x200000, CRC(d41a41bf) SHA1(a5f6b24e6526d0d2ef9c526c273c018d1e0fed59) ) ROM_LOAD32_WORD("mpr-19744.30", 0x000002, 0x200000, CRC(84f203bf) SHA1(4952b764e6bf6cd735018738c5eff08781ee2315) ) @@ -5645,7 +5645,7 @@ ROM_START( topskatrj ) /* Top Skater (Japan), Model 2C, Sega Game ID# 833-13080- ROM_LOAD32_WORD("mpr-19737.9", 0x800000, 0x400000, CRC(281a7dde) SHA1(71d5ba434328a81969bfdc71ac1160c5ff3ae9d3) ) ROM_LOAD32_WORD("mpr-19738.10", 0x800002, 0x400000, CRC(f688327e) SHA1(68c9db242ef7e8f98979e968a09e4b093bc5d470) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // TGPx4 program + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // TGPx4 program ROM_LOAD32_WORD("mpr-19743.29", 0x000000, 0x200000, CRC(d41a41bf) SHA1(a5f6b24e6526d0d2ef9c526c273c018d1e0fed59) ) ROM_LOAD32_WORD("mpr-19744.30", 0x000002, 0x200000, CRC(84f203bf) SHA1(4952b764e6bf6cd735018738c5eff08781ee2315) ) @@ -5690,7 +5690,7 @@ ROM_START( doaa ) /* Dead or Alive Revision A, Model 2A, Sega Game ID# 833-11341 ROM_LOAD32_WORD("mpr-19313.6", 0x1800002, 0x200000, CRC(8c63055e) SHA1(9f375b3f4a8884163ffcf364989499f2cd21e18b) ) ROM_COPY("main_data", 0x1800000, 0x1c00000, 0x400000 ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x2000000, "polygons", ROMREGION_ERASEFF ) // Models ROM_LOAD32_WORD("mpr-19322.17", 0x0000000, 0x400000, CRC(d0e6ecf0) SHA1(1b87f6337b4286fd738856da899462e7baa92601) ) @@ -5745,7 +5745,7 @@ ROM_START( doa ) /* Dead or Alive Revision B, Model 2B, 837-12880 security board ROM_LOAD32_WORD("mpr-19321.27", 0x000000, 0x400000, CRC(9c49e845) SHA1(344839640d9814263fa5ed00c2043cd6f18d5cb2) ) ROM_LOAD32_WORD("mpr-19320.25", 0x000002, 0x400000, CRC(190c017f) SHA1(4c3250b9abe39fc5c8fd0fcdb5fb7ea131434516) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19328.30", 0x000000, 0x080000, CRC(400bdbfb) SHA1(54db969fa54cf3c502d77aa6a6aaeef5d7db9f04) ) @@ -5776,7 +5776,7 @@ ROM_START( sgt24h ) /* Super GT 24h, Model 2B */ ROM_LOAD32_WORD("mpr-19153.27", 0x000000, 0x200000, CRC(136adfd0) SHA1(70ce4e609c8b003ff04518044c18d29089e6a353) ) ROM_LOAD32_WORD("mpr-19152.25", 0x000002, 0x200000, CRC(363769a2) SHA1(51b2f11a01fb72e151025771f8a8496993e605c2) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x20000, "cpu4", 0) // Communication program ROM_LOAD16_WORD_SWAP("epr-18643a.7", 0x000000, 0x20000, CRC(b5e048ec) SHA1(8182e05a2ffebd590a936c1359c81e60caa79c2a) ) @@ -5801,7 +5801,7 @@ ROM_START( von ) /* Virtual On Cyber Troopers Revision B (US), Model 2B, Sega Ga ROM_LOAD32_WORD("mpr-18650.9", 0x800000, 0x400000, CRC(89a855b9) SHA1(5096db1da1f7e175000e89fca2a1dd3fd53030ea) ) ROM_LOAD32_WORD("mpr-18651.10", 0x800002, 0x400000, CRC(f4c23107) SHA1(f65984614111b12dd414db80751efe64fcf5ef16) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-18662.29", 0x000000, 0x200000, CRC(a33d3335) SHA1(991bbe9dcbef8bfa96682e9d142623fc9b7c0879) ) ROM_LOAD32_WORD("mpr-18663.30", 0x000002, 0x200000, CRC(ea74a641) SHA1(a684e13c0afe2ef3f3108ae9b73389121368fc4e) ) @@ -5841,7 +5841,7 @@ ROM_START( vonj ) /* Virtual On Cyber Troopers Revision B (Japan), Model 2B */ ROM_LOAD32_WORD("mpr-18650.9", 0x800000, 0x400000, CRC(89a855b9) SHA1(5096db1da1f7e175000e89fca2a1dd3fd53030ea) ) ROM_LOAD32_WORD("mpr-18651.10", 0x800002, 0x400000, CRC(f4c23107) SHA1(f65984614111b12dd414db80751efe64fcf5ef16) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-18662.29", 0x000000, 0x200000, CRC(a33d3335) SHA1(991bbe9dcbef8bfa96682e9d142623fc9b7c0879) ) ROM_LOAD32_WORD("mpr-18663.30", 0x000002, 0x200000, CRC(ea74a641) SHA1(a684e13c0afe2ef3f3108ae9b73389121368fc4e) ) @@ -5881,7 +5881,7 @@ ROM_START( vonr ) /* Virtual On Cyber Troopers Relay (Japan) */ ROM_LOAD32_WORD("mpr-18650.9", 0x800000, 0x400000, CRC(89a855b9) SHA1(5096db1da1f7e175000e89fca2a1dd3fd53030ea) ) ROM_LOAD32_WORD("mpr-18651.10", 0x800002, 0x400000, CRC(f4c23107) SHA1(f65984614111b12dd414db80751efe64fcf5ef16) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-18662.29", 0x000000, 0x200000, CRC(a33d3335) SHA1(991bbe9dcbef8bfa96682e9d142623fc9b7c0879) ) ROM_LOAD32_WORD("mpr-18663.30", 0x000002, 0x200000, CRC(ea74a641) SHA1(a684e13c0afe2ef3f3108ae9b73389121368fc4e) ) @@ -5933,7 +5933,7 @@ ROM_START( vstriker ) /* Virtua Striker Revision A, Model 2B, ROM board ID# 834- ROM_LOAD32_WORD("mpr-18062.27", 0x000000, 0x200000, CRC(126e7de3) SHA1(0810364934dee8d5035cef623d01dfbacc64bf2b) ) ROM_LOAD32_WORD("mpr-18061.25", 0x000002, 0x200000, CRC(c37f1c67) SHA1(c917046c2d98af17c59ceb0ea4f89d215cc0ead8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-18072.31", 0x000000, 0x020000, CRC(73eabb58) SHA1(4f6d70d6e0d7b469c5f2527efb08f208f4aa017e) ) @@ -5969,7 +5969,7 @@ ROM_START( vstrikero ) /* Virtua Striker, Model 2B, ROM board ID# 834-11904 */ ROM_LOAD32_WORD("mpr-18062.27", 0x000000, 0x200000, CRC(126e7de3) SHA1(0810364934dee8d5035cef623d01dfbacc64bf2b) ) ROM_LOAD32_WORD("mpr-18061.25", 0x000002, 0x200000, CRC(c37f1c67) SHA1(c917046c2d98af17c59ceb0ea4f89d215cc0ead8) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-18072.31", 0x000000, 0x020000, CRC(73eabb58) SHA1(4f6d70d6e0d7b469c5f2527efb08f208f4aa017e) ) @@ -6007,7 +6007,7 @@ ROM_START( dynabb ) /* Dynamite Baseball, Model 2B. Sega game ID# 833-12803 DYNA ROM_LOAD32_WORD("mpr-19183.27", 0x000000, 0x400000, CRC(5e29074b) SHA1(f4dfa396653aeb649ec170c9584ea1a74377929a) ) ROM_LOAD32_WORD("mpr-19182.25", 0x000002, 0x400000, CRC(c899923d) SHA1(15cc86c885329227d3c19e9837363eaf6c38829b) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19184.31", 0x000000, 0x080000, CRC(c013a163) SHA1(c564df8295e3c19082ead0eb22478dc651e0b430) ) @@ -6045,7 +6045,7 @@ ROM_START( dynabb97 ) /* Dynamite Baseball 97 Revision A, Model 2B */ ROM_LOAD32_WORD("mpr-19848.27", 0x000000, 0x400000, CRC(4c0526b7) SHA1(e8db7125be8a052e41a00c69cc08ca0d75b3b96f) ) ROM_LOAD32_WORD("mpr-19847.25", 0x000002, 0x400000, CRC(fe55edbd) SHA1(b0b6135b23349d7d6ae007002d8df83748cab7b1) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19849.31", 0x000000, 0x080000, CRC(b0d5bff0) SHA1(1fb824adaf3ed330a8039be726a87eb85c00abd7) ) @@ -6088,7 +6088,7 @@ ROM_START( fvipers ) /* Fighting Vipers Revision D, Model 2B, Sega Game ID# 833- ROM_COPY( "main_data", 0x1800000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1800000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-18622.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) ) ROM_LOAD32_WORD("mpr-18623.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) ) @@ -6147,7 +6147,7 @@ ROM_START( fvipersb ) /* Fighting Vipers Revision B, Model 2B, Sega Game ID# 833 ROM_COPY( "main_data", 0x1800000, 0x1e00000, 0x100000 ) ROM_COPY( "main_data", 0x1800000, 0x1f00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) ROM_LOAD32_WORD("mpr-18622.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) ) ROM_LOAD32_WORD("mpr-18623.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) ) @@ -6195,7 +6195,7 @@ ROM_START( daytona ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Mode ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6256,7 +6256,7 @@ ROM_START( daytonase ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Mo ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6316,7 +6316,7 @@ ROM_START( daytona93 ) /* Daytona USA, Deluxe cabinet, '93 version, ROM board ID ROM_COPY( "main_data", 0x900000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0x900000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6377,7 +6377,7 @@ ROM_START( daytonas ) /* Daytona USA (With Saturn Adverts) */ ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6440,7 +6440,7 @@ ROM_START( daytonat )/* Daytona USA (Japan, Turbo hack) */ ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6501,7 +6501,7 @@ ROM_START( daytonata )/* Daytona USA (Japan, Turbo hack) */ ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6573,7 +6573,7 @@ ROM_START( daytonam ) /* Daytona USA (Japan, To The MAXX) */ ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 ) ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6641,7 +6641,7 @@ ROM_START( daytonagtx ) ROM_LOAD32_WORD("bank0.bin", 0x000002, 0x080000, CRC(21b603b4) SHA1(3f8f83fbf2ce5055fa85075c95da617fe2a8738a) ) ROM_LOAD32_WORD("bank1.bin", 0x100002, 0x080000, CRC(c1971f23) SHA1(3db88552ff2166f6eb2a9200e8609b52c1266274) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) ) ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) ) @@ -6697,7 +6697,7 @@ ROM_START( vcop ) /* Virtua Cop Revision B, Model 2 */ ROM_LOAD32_WORD( "epr-17168a.6", 0x800000, 0x080000, CRC(59091a37) SHA1(14591c7015aaf126755be584aa94c04e6de222fa) ) ROM_LOAD32_WORD( "epr-17169a.7", 0x800002, 0x080000, CRC(0495808d) SHA1(5b86a9a68c2b52f942aa8d858ee7a491f546a921) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) ROM_REGION( 0x1000000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-17159.16", 0x000000, 0x200000, CRC(e218727d) SHA1(1458d01d49936a0b8d497b62ff9ea940ca753b37) ) @@ -6737,7 +6737,7 @@ ROM_START( vcopa ) /* Virtua Cop Revision A, Model 2 */ ROM_LOAD32_WORD( "epr-17168a.6", 0x800000, 0x080000, CRC(59091a37) SHA1(14591c7015aaf126755be584aa94c04e6de222fa) ) ROM_LOAD32_WORD( "epr-17169a.7", 0x800002, 0x080000, CRC(0495808d) SHA1(5b86a9a68c2b52f942aa8d858ee7a491f546a921) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) ROM_REGION( 0x1000000, "polygons", 0 ) // Models ROM_LOAD32_WORD( "mpr-17159.16", 0x000000, 0x200000, CRC(e218727d) SHA1(1458d01d49936a0b8d497b62ff9ea940ca753b37) ) @@ -6777,7 +6777,7 @@ ROM_START( desert ) /* Desert Tank, Model 2, Sega Game ID# 833-11002, ROM board ROM_LOAD32_WORD("epr-16978.6", 0x800000, 0x080000, CRC(38b3e574) SHA1(a1133df608b0fbb9c53bbeb29138650c87845d2c) ) ROM_LOAD32_WORD("epr-16979.7", 0x800002, 0x080000, CRC(c314eb8b) SHA1(0c851dedd5c42b026195faed7d028924698a8b27) ) - ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) + ROM_REGION32_LE( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket) ROM_LOAD32_WORD("epr-16981.28", 0x000000, 0x080000, CRC(ae847571) SHA1(32d0f9e685667ae9fddacea0b9f4ad6fb3a6fdad) ) ROM_LOAD32_WORD("epr-16980.29", 0x000002, 0x080000, CRC(5239b864) SHA1(e889556e0f1ea80de52afff563b0923f87cef7ab) ) @@ -6823,7 +6823,7 @@ ROM_START( powsled ) /* Power Sled Revision A, Model 2B, ROM board ID# 834-12969 ROM_LOAD32_WORD("fpr-19458.27", 0x000000, 0x400000, CRC(f24acca2) SHA1(7fd7da64e247e62aa6542e1ad1a9ea9527ac9e73) ) ROM_LOAD32_WORD("fpr-19457.25", 0x000002, 0x400000, CRC(79d7e6fa) SHA1(906986145c23fc87ea7205d7722302104665e2bb) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19466.31", 0x000000, 0x020000, CRC(c42892a5) SHA1(8ef761f6da3febcdf29b2d9b1bdf60ee24530f3d) ) @@ -6849,7 +6849,7 @@ ROM_START( powsledr ) /* Power Sled Relay Revision A, Model 2B, ROM board ID# 83 ROM_LOAD32_WORD("fpr-19458.27", 0x000000, 0x400000, CRC(f24acca2) SHA1(7fd7da64e247e62aa6542e1ad1a9ea9527ac9e73) ) ROM_LOAD32_WORD("fpr-19457.25", 0x000002, 0x400000, CRC(79d7e6fa) SHA1(906986145c23fc87ea7205d7722302104665e2bb) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19467.31", 0x000000, 0x020000, CRC(5e8b9763) SHA1(54c3671c74bb16c8b447e9cae9c49b6d05b27a3e) ) @@ -6876,7 +6876,7 @@ ROM_START( powsledm ) // Main unit is not dumped, temporary we use relay dump pl ROM_LOAD32_WORD("fpr-19458.27", 0x000000, 0x400000, CRC(f24acca2) SHA1(7fd7da64e247e62aa6542e1ad1a9ea9527ac9e73) ) ROM_LOAD32_WORD("fpr-19457.25", 0x000002, 0x400000, CRC(79d7e6fa) SHA1(906986145c23fc87ea7205d7722302104665e2bb) ) - ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) + ROM_REGION32_LE( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) ROM_REGION( 0x080000, "audiocpu", 0 ) // Sound program ROM_LOAD16_WORD_SWAP("epr-19467.31", 0x000000, 0x020000, CRC(5e8b9763) SHA1(54c3671c74bb16c8b447e9cae9c49b6d05b27a3e) ) diff --git a/docs/release/src/mame/machine/mhavoc.cpp b/docs/release/src/mame/machine/mhavoc.cpp index d0c03a36dd4..7b0d352cb24 100644 --- a/docs/release/src/mame/machine/mhavoc.cpp +++ b/docs/release/src/mame/machine/mhavoc.cpp @@ -320,6 +320,6 @@ WRITE8_MEMBER(mhavoc_state::mhavocrv_speech_strobe_w) void mhavoc_state::init_mhavocrv() { // For Return to Vax, add support for the normally-unused speech module. - m_gamma->space(AS_PROGRAM).install_write_handler(0x5800, 0x5800, write8_delegate(FUNC(mhavoc_state::mhavocrv_speech_data_w),this)); - m_gamma->space(AS_PROGRAM).install_write_handler(0x5900, 0x5900, write8_delegate(FUNC(mhavoc_state::mhavocrv_speech_strobe_w),this)); + m_gamma->space(AS_PROGRAM).install_write_handler(0x5800, 0x5800, write8_delegate(*this, FUNC(mhavoc_state::mhavocrv_speech_data_w))); + m_gamma->space(AS_PROGRAM).install_write_handler(0x5900, 0x5900, write8_delegate(*this, FUNC(mhavoc_state::mhavocrv_speech_strobe_w))); } diff --git a/docs/release/src/mame/video/decbac06.cpp b/docs/release/src/mame/video/decbac06.cpp index 778ddcfc853..621768962cc 100644 --- a/docs/release/src/mame/video/decbac06.cpp +++ b/docs/release/src/mame/video/decbac06.cpp @@ -220,27 +220,27 @@ void deco_bac06_device::create_tilemaps(int region8x8, int region16x16) m_tile_region_8 = region8x8; m_tile_region_16 = region16x16; - m_pf8x8_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_8x8_scan),this), 8, 8,128, 32); - m_pf8x8_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_8x8_scan),this), 8, 8, 64, 64); - m_pf8x8_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_8x8_scan),this), 8, 8, 32,128); + m_pf8x8_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf8x8_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_8x8_scan)), 8, 8, 128, 32); + m_pf8x8_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf8x8_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_8x8_scan)), 8, 8, 64, 64); + m_pf8x8_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf8x8_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_8x8_scan)), 8, 8, 32, 128); if (m_wide == 2) { - m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 256, 16); - m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 128, 32); - m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 64, 64); + m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_scan)), 16, 16, 256, 16); + m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_scan)), 16, 16, 128, 32); + m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_scan)), 16, 16, 64, 64); } else if (m_wide == 1) { - m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 128, 16); - m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 64, 32); - m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 32, 64); + m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_scan)), 16, 16, 128, 16); + m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_scan)), 16, 16, 64, 32); + m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_scan)), 16, 16, 32, 64); } else { - m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 64, 16); - m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 32, 32); - m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 16, 64); + m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_scan)), 16, 16, 64, 16); + m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_scan)), 16, 16, 32, 32); + m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_scan)), 16, 16, 16, 64); } } diff --git a/docs/release/src/osd/windows/winmain.h b/docs/release/src/osd/windows/winmain.h index fa7f5acf8f7..6b0c9b42e3a 100644 --- a/docs/release/src/osd/windows/winmain.h +++ b/docs/release/src/osd/windows/winmain.h @@ -281,9 +281,10 @@ public: // general overridables virtual void init(running_machine &machine) override; virtual void update(bool skip_redraw) override; + virtual void input_update() override; // input overrideables - virtual void customize_input_type_list(simple_list<input_type_entry> &typelist) override; + virtual void customize_input_type_list(std::vector<input_type_entry> &typelist) override; // video overridables virtual void add_audio_to_recording(const int16_t *buffer, int samples_this_frame) override; diff --git a/docs/release/src/osd/winui/hbmameui.rc b/docs/release/src/osd/winui/hbmameui.rc index 9c5b9b66922..9ca5f39aa05 100644 --- a/docs/release/src/osd/winui/hbmameui.rc +++ b/docs/release/src/osd/winui/hbmameui.rc @@ -736,6 +736,7 @@ BEGIN CONTROL "Sync to monitor refresh",IDC_SYNCREFRESH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,52,93,10,0,HIDC_SYNCREFRESH CONTROL "Wait for vertical sync",IDC_WAITVSYNC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,93,10,0,HIDC_WAITVSYNC CONTROL "Refresh speed",IDC_REFRESHSPEED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,76,93,10,0,HIDC_REFRESHSPEED + CONTROL "Low Latency",IDC_LOWLATENCY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,88,93,10,0 GROUPBOX "Frame skipping",IDC_STATIC,4,104,103,42 CONTROL "Automatic",IDC_AUTOFRAMESKIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,114,77,10,0,HIDC_AUTOFRAMESKIP diff --git a/docs/release/src/osd/winui/properties.cpp b/docs/release/src/osd/winui/properties.cpp index b39139461b7..e2b669db42c 100644 --- a/docs/release/src/osd/winui/properties.cpp +++ b/docs/release/src/osd/winui/properties.cpp @@ -2245,6 +2245,7 @@ static void BuildDataMap(void) datamap_add(properties_datamap, IDC_SPEED, DM_FLOAT, OPTION_SPEED); datamap_add(properties_datamap, IDC_SPEEDDISP, DM_FLOAT, OPTION_SPEED); datamap_add(properties_datamap, IDC_REFRESHSPEED, DM_BOOL, OPTION_REFRESHSPEED); + datamap_add(properties_datamap, IDC_LOWLATENCY, DM_BOOL, OPTION_LOWLATENCY); // core retation options datamap_add(properties_datamap, IDC_ROTATE, DM_INT, NULL); diff --git a/docs/release/src/osd/winui/resource.h b/docs/release/src/osd/winui/resource.h index 8bdf3e5ed84..e484c045947 100644 --- a/docs/release/src/osd/winui/resource.h +++ b/docs/release/src/osd/winui/resource.h @@ -322,6 +322,7 @@ #define IDC_SNAPSIZETEXT 1252 #define IDC_SNAPSIZEX 1253 #define IDC_FILTER_MECHANICAL 1254 +#define IDC_LOWLATENCY 1257 #define IDC_BURNIN 1280 #define IDC_OVERRIDE_REDX 1352 #define IDC_SNAPBILINEAR 1353 diff --git a/docs/release/src/version.cpp b/docs/release/src/version.cpp index 74c639e2e49..ebf4806b5c2 100644 --- a/docs/release/src/version.cpp +++ b/docs/release/src/version.cpp @@ -8,7 +8,7 @@ ***************************************************************************/ -#define BARE_BUILD_VERSION "0.215" +#define BARE_BUILD_VERSION "0.216" extern const char bare_build_version[]; extern const char build_version[]; |