diff options
author | 2015-06-27 16:55:27 +0200 | |
---|---|---|
committer | 2015-06-27 16:55:41 +0200 | |
commit | a9bd0467673ced1d2e667bd3760c10346d173b51 (patch) | |
tree | fade435f37490c66310a724a4256f65bb4b640f5 /src | |
parent | 221ab4e3a677a412c1cc829a57668b6b37a8df1f (diff) |
nw, add MCFG_FORCE_NO_DRC option, does not work for no apparent reason because our core architecture is crap
Diffstat (limited to 'src')
-rw-r--r-- | src/emu/cpu/mips/mips3.c | 2 | ||||
-rw-r--r-- | src/emu/cpu/mips/mips3drc.c | 4 | ||||
-rw-r--r-- | src/emu/cpu/rsp/rsp.c | 2 | ||||
-rw-r--r-- | src/emu/cpu/rsp/rspdrc.c | 4 | ||||
-rw-r--r-- | src/emu/cpu/sh2/sh2.c | 4 | ||||
-rw-r--r-- | src/emu/cpu/sh2/sh2drc.c | 5 | ||||
-rw-r--r-- | src/emu/mconfig.c | 1 | ||||
-rw-r--r-- | src/emu/mconfig.h | 5 | ||||
-rw-r--r-- | src/mame/drivers/aleck64.c | 1 | ||||
-rw-r--r-- | src/mess/drivers/n64.c | 1 |
10 files changed, 19 insertions, 10 deletions
diff --git a/src/emu/cpu/mips/mips3.c b/src/emu/cpu/mips/mips3.c index 5ceff4b5462..fed4a116752 100644 --- a/src/emu/cpu/mips/mips3.c +++ b/src/emu/cpu/mips/mips3.c @@ -192,7 +192,7 @@ mips3_device::mips3_device(const machine_config &mconfig, device_type type, cons memset(m_fastram, 0, sizeof(m_fastram)); memset(m_hotspot, 0, sizeof(m_hotspot)); - m_isdrc = mconfig.options().drc() ? true : false; + m_isdrc = (mconfig.options().drc() && !mconfig.m_force_no_drc) ? true : false; } diff --git a/src/emu/cpu/mips/mips3drc.c b/src/emu/cpu/mips/mips3drc.c index b454d10f74a..74cdace57ce 100644 --- a/src/emu/cpu/mips/mips3drc.c +++ b/src/emu/cpu/mips/mips3drc.c @@ -150,7 +150,7 @@ inline void mips3_device::save_fast_iregs(drcuml_block *block) void mips3_device::mips3drc_set_options(UINT32 options) { - if (!machine().options().drc()) return; + if (!(mconfig().options().drc() && !mconfig().m_force_no_drc)) return; m_drcoptions = options; } @@ -196,7 +196,7 @@ void mips3_device::add_fastram(offs_t start, offs_t end, UINT8 readonly, void *b void mips3_device::mips3drc_add_hotspot(offs_t pc, UINT32 opcode, UINT32 cycles) { - if (!machine().options().drc()) return; + if (!(mconfig().options().drc() && !mconfig().m_force_no_drc)) return; if (m_hotspot_select < ARRAY_LENGTH(m_hotspot)) { m_hotspot[m_hotspot_select].pc = pc; diff --git a/src/emu/cpu/rsp/rsp.c b/src/emu/cpu/rsp/rsp.c index 1bb36af0612..ed26eb66603 100644 --- a/src/emu/cpu/rsp/rsp.c +++ b/src/emu/cpu/rsp/rsp.c @@ -139,7 +139,7 @@ rsp_device::rsp_device(const machine_config &mconfig, const char *tag, device_t , m_sp_reg_w_func(*this) , m_sp_set_status_func(*this) { - m_isdrc = mconfig.options().drc() ? true : false; + m_isdrc = (mconfig.options().drc() && !mconfig.m_force_no_drc) ? true : false; } offs_t rsp_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options) diff --git a/src/emu/cpu/rsp/rspdrc.c b/src/emu/cpu/rsp/rspdrc.c index c33b0d95c36..ae719af5959 100644 --- a/src/emu/cpu/rsp/rspdrc.c +++ b/src/emu/cpu/rsp/rspdrc.c @@ -183,7 +183,7 @@ static void cfunc_write32(void *param) void rsp_device::rspdrc_set_options(UINT32 options) { - if (!machine().options().drc()) return; + if (!(mconfig().options().drc() && !mconfig().m_force_no_drc)) return; m_drcoptions = options; } @@ -307,7 +307,7 @@ void rsp_device::execute_run_drc() void rsp_device::rspdrc_flush_drc_cache() { - if (!machine().options().drc()) return; + if (!(mconfig().options().drc() && !mconfig().m_force_no_drc)) return; m_cache_dirty = TRUE; } diff --git a/src/emu/cpu/sh2/sh2.c b/src/emu/cpu/sh2/sh2.c index 179cc533dc3..a60b8215a26 100644 --- a/src/emu/cpu/sh2/sh2.c +++ b/src/emu/cpu/sh2/sh2.c @@ -171,7 +171,7 @@ sh2_device::sh2_device(const machine_config &mconfig, const char *tag, device_t , m_out_of_cycles(NULL) , m_debugger_temp(0) { - m_isdrc = mconfig.options().drc() ? true : false; + m_isdrc = (mconfig.options().drc() && !mconfig.m_force_no_drc) ? true : false; } @@ -208,7 +208,7 @@ sh2_device::sh2_device(const machine_config &mconfig, device_type type, const ch , m_nocode(NULL) , m_out_of_cycles(NULL) { - m_isdrc = mconfig.options().drc() ? true : false; + m_isdrc = (mconfig.options().drc() && !mconfig.m_force_no_drc); } sh1_device::sh1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) diff --git a/src/emu/cpu/sh2/sh2drc.c b/src/emu/cpu/sh2/sh2drc.c index 9c636f6cf84..4069f3287c7 100644 --- a/src/emu/cpu/sh2/sh2drc.c +++ b/src/emu/cpu/sh2/sh2drc.c @@ -11,6 +11,7 @@ #include "debugger.h" #include "sh2.h" #include "sh2comn.h" +#include "mconfig.h" extern unsigned DasmSH2(char *buffer, unsigned pc, UINT16 opcode); @@ -2945,7 +2946,7 @@ int sh2_device::generate_group_12(drcuml_block *block, compiler_state *compiler, void sh2_device::sh2drc_set_options(UINT32 options) { - if (!machine().options().drc()) return; + if (!(mconfig().options().drc() && !mconfig().m_force_no_drc)) return; m_drcoptions = options; } @@ -2957,7 +2958,7 @@ void sh2_device::sh2drc_set_options(UINT32 options) void sh2_device::sh2drc_add_pcflush(offs_t address) { - if (!machine().options().drc()) return; + if (!(mconfig().options().drc() && !mconfig().m_force_no_drc)) return; if (m_pcfsel < ARRAY_LENGTH(m_pcflushes)) m_pcflushes[m_pcfsel++] = address; diff --git a/src/emu/mconfig.c b/src/emu/mconfig.c index 55dd19148f3..f313ce4cf99 100644 --- a/src/emu/mconfig.c +++ b/src/emu/mconfig.c @@ -25,6 +25,7 @@ machine_config::machine_config(const game_driver &gamedrv, emu_options &options) : m_minimum_quantum(attotime::zero), m_watchdog_vblank_count(0), m_watchdog_time(attotime::zero), + m_force_no_drc(false), m_default_layout(NULL), m_gamedrv(gamedrv), m_options(options) diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h index a96367ccced..f17ea06e632 100644 --- a/src/emu/mconfig.h +++ b/src/emu/mconfig.h @@ -17,6 +17,7 @@ #ifndef __MCONFIG_H__ #define __MCONFIG_H__ +#include "emuopts.h" //************************************************************************** // CONSTANTS @@ -61,6 +62,7 @@ public: std::string m_perfect_cpu_quantum; // tag of CPU to use for "perfect" scheduling INT32 m_watchdog_vblank_count; // number of VBLANKs until the watchdog kills us attotime m_watchdog_time; // length of time until the watchdog kills us + bool m_force_no_drc; // whether or not to force DRC off // other parameters const char * m_default_layout; // default layout for this machine @@ -133,6 +135,9 @@ ATTR_COLD device_t *MACHINE_CONFIG_NAME(_name)(machine_config &config, device_t #define MCFG_QUANTUM_PERFECT_CPU(_cputag) \ config.m_perfect_cpu_quantum = owner->subtag(_cputag); +// recompilation parameters +#define MCFG_FORCE_NO_DRC() \ + config.m_force_no_drc = true; // watchdog configuration #define MCFG_WATCHDOG_VBLANK_INIT(_count) \ diff --git a/src/mame/drivers/aleck64.c b/src/mame/drivers/aleck64.c index 00df3236cce..9cc7e4c5854 100644 --- a/src/mame/drivers/aleck64.c +++ b/src/mame/drivers/aleck64.c @@ -837,6 +837,7 @@ static MACHINE_CONFIG_START( aleck64, aleck64_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4300BE, 93750000) + MCFG_FORCE_NO_DRC() MCFG_MIPS3_ICACHE_SIZE(16384) MCFG_MIPS3_DCACHE_SIZE(8192) MCFG_MIPS3_SYSTEM_CLOCK(62500000) diff --git a/src/mess/drivers/n64.c b/src/mess/drivers/n64.c index add05b32cf3..6969d242e3f 100644 --- a/src/mess/drivers/n64.c +++ b/src/mess/drivers/n64.c @@ -389,6 +389,7 @@ static MACHINE_CONFIG_START( n64, n64_mess_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", VR4300BE, 93750000) + MCFG_FORCE_NO_DRC() MCFG_CPU_CONFIG(config) MCFG_CPU_PROGRAM_MAP(n64_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", n64_mess_state, n64_reset_poll) |