aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authortwinaphex2013-01-10 03:06:17 +0100
committertwinaphex2013-01-10 03:06:17 +0100
commite5f4d90401d099d5191f95e9f771ab5a81c87ed8 (patch)
tree8de3efcfd7bf5111ea62a43ecd7db558f2ec8350 /libpcsxcore
parentac7b2a33ddb2392582c50d29c772e9e99cd762c9 (diff)
parentd77e74383a9134e51c31607cfddf4dcd3535a0ae (diff)
downloadpcsx_rearmed-e5f4d90401d099d5191f95e9f771ab5a81c87ed8.tar.gz
pcsx_rearmed-e5f4d90401d099d5191f95e9f771ab5a81c87ed8.tar.bz2
pcsx_rearmed-e5f4d90401d099d5191f95e9f771ab5a81c87ed8.zip
Merge git://github.com/notaz/pcsx_rearmed
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/new_dynarec/emu_if.c2
-rw-r--r--libpcsxcore/new_dynarec/pcsxmem.c14
-rw-r--r--libpcsxcore/new_dynarec/pcsxmem.h1
-rw-r--r--libpcsxcore/psxhw.c4
4 files changed, 15 insertions, 6 deletions
diff --git a/libpcsxcore/new_dynarec/emu_if.c b/libpcsxcore/new_dynarec/emu_if.c
index b8e9883..02e108f 100644
--- a/libpcsxcore/new_dynarec/emu_if.c
+++ b/libpcsxcore/new_dynarec/emu_if.c
@@ -344,6 +344,7 @@ static void ari64_clear(u32 addr, u32 size)
static void ari64_shutdown()
{
new_dynarec_cleanup();
+ new_dyna_pcsx_mem_shutdown();
}
extern void intExecute();
@@ -394,6 +395,7 @@ void invalidate_block(unsigned int block) {}
void new_dyna_pcsx_mem_init(void) {}
void new_dyna_pcsx_mem_reset(void) {}
void new_dyna_pcsx_mem_load_state(void) {}
+void new_dyna_pcsx_mem_shutdown(void) {}
#endif
#ifdef DRC_DBG
diff --git a/libpcsxcore/new_dynarec/pcsxmem.c b/libpcsxcore/new_dynarec/pcsxmem.c
index 90f7765..a42852a 100644
--- a/libpcsxcore/new_dynarec/pcsxmem.c
+++ b/libpcsxcore/new_dynarec/pcsxmem.c
@@ -147,9 +147,9 @@ make_rcnt_funcs(2)
static void io_write_ireg16(u32 value)
{
- if (Config.Sio) psxHu16ref(0x1070) |= 0x80;
+ //if (Config.Sio) psxHu16ref(0x1070) |= 0x80;
if (Config.SpuIrq) psxHu16ref(0x1070) |= 0x200;
- psxHu16ref(0x1070) &= psxHu16(0x1074) & value;
+ psxHu16ref(0x1070) &= value;
}
static void io_write_imask16(u32 value)
@@ -161,9 +161,9 @@ static void io_write_imask16(u32 value)
static void io_write_ireg32(u32 value)
{
- if (Config.Sio) psxHu32ref(0x1070) |= 0x80;
+ //if (Config.Sio) psxHu32ref(0x1070) |= 0x80;
if (Config.SpuIrq) psxHu32ref(0x1070) |= 0x200;
- psxHu32ref(0x1070) &= psxHu32(0x1074) & value;
+ psxHu32ref(0x1070) &= value;
}
static void io_write_imask32(u32 value)
@@ -475,3 +475,9 @@ void new_dyna_pcsx_mem_reset(void)
map_item(&mem_iowtab[IOMEM32(0x1810)], GPU_writeData, 1);
}
+
+void new_dyna_pcsx_mem_shutdown(void)
+{
+ psxUnmap(mem_readtab, 0x200000 * 4, MAP_TAG_LUTS);
+ mem_writetab = mem_readtab = NULL;
+}
diff --git a/libpcsxcore/new_dynarec/pcsxmem.h b/libpcsxcore/new_dynarec/pcsxmem.h
index f962562..99bb5d4 100644
--- a/libpcsxcore/new_dynarec/pcsxmem.h
+++ b/libpcsxcore/new_dynarec/pcsxmem.h
@@ -4,5 +4,6 @@ extern u8 zero_mem[0x1000];
void new_dyna_pcsx_mem_init(void);
void new_dyna_pcsx_mem_reset(void);
void new_dyna_pcsx_mem_load_state(void);
+void new_dyna_pcsx_mem_shutdown(void);
int pcsxmem_is_handler_dynamic(u_int addr);
diff --git a/libpcsxcore/psxhw.c b/libpcsxcore/psxhw.c
index 1f85278..6b9125d 100644
--- a/libpcsxcore/psxhw.c
+++ b/libpcsxcore/psxhw.c
@@ -431,7 +431,7 @@ void psxHwWrite16(u32 add, u16 value) {
#endif
if (Config.Sio) psxHu16ref(0x1070) |= SWAPu16(0x80);
if (Config.SpuIrq) psxHu16ref(0x1070) |= SWAPu16(0x200);
- psxHu16ref(0x1070) &= SWAPu16((psxHu16(0x1074) & value));
+ psxHu16ref(0x1070) &= SWAPu16(value);
return;
case 0x1f801074:
@@ -546,7 +546,7 @@ void psxHwWrite32(u32 add, u32 value) {
#endif
if (Config.Sio) psxHu32ref(0x1070) |= SWAPu32(0x80);
if (Config.SpuIrq) psxHu32ref(0x1070) |= SWAPu32(0x200);
- psxHu32ref(0x1070) &= SWAPu32((psxHu32(0x1074) & value));
+ psxHu32ref(0x1070) &= SWAPu32(value);
return;
case 0x1f801074:
#ifdef PSXHW_LOG