aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/new_dynarec/pcsxmem.c
diff options
context:
space:
mode:
authornotaz2011-03-08 16:09:02 +0200
committernotaz2011-03-08 16:09:02 +0200
commit274c424338d914fdc0076306c769ba4fadeebdaa (patch)
tree3815b9d6e2463b896e9eb246a6ec2b8963c05741 /libpcsxcore/new_dynarec/pcsxmem.c
parentb12c9fb877aa40666d5ad367ecca152cfa2edb64 (diff)
downloadpcsx_rearmed-274c424338d914fdc0076306c769ba4fadeebdaa.tar.gz
pcsx_rearmed-274c424338d914fdc0076306c769ba4fadeebdaa.tar.bz2
pcsx_rearmed-274c424338d914fdc0076306c769ba4fadeebdaa.zip
pcsxmem: fix ro write handler
also refactor things a bit (as usual)
Diffstat (limited to 'libpcsxcore/new_dynarec/pcsxmem.c')
-rw-r--r--libpcsxcore/new_dynarec/pcsxmem.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/libpcsxcore/new_dynarec/pcsxmem.c b/libpcsxcore/new_dynarec/pcsxmem.c
index ae35f2d..8b6714b 100644
--- a/libpcsxcore/new_dynarec/pcsxmem.c
+++ b/libpcsxcore/new_dynarec/pcsxmem.c
@@ -1,5 +1,5 @@
/*
- * (C) Gražvydas "notaz" Ignotas, 2010
+ * (C) Gražvydas "notaz" Ignotas, 2010-2011
*
* This work is licensed under the terms of GNU GPL version 2 or later.
* See the COPYING file in the top-level directory.
@@ -15,7 +15,7 @@
//#define memprintf printf
#define memprintf(...)
-static int ram_is_ro;
+int pcsx_ram_is_ro;
static void read_mem8()
{
@@ -74,6 +74,7 @@ extern void ari_write_ram32();
extern void ari_write_ram_mirror8();
extern void ari_write_ram_mirror16();
extern void ari_write_ram_mirror32();
+extern void ari_write_ram_mirror_ro32();
extern void ari_read_bios8();
extern void ari_read_bios16();
extern void ari_read_bios32();
@@ -91,12 +92,6 @@ void (*writemem[0x10000])();
void (*writememb[0x10000])();
void (*writememh[0x10000])();
-static void write_mem_check_ro32()
-{
- if (!ram_is_ro)
- *(u32 *)(address | 0x80000000) = word;
-}
-
static void write_biu()
{
memprintf("write_biu %08x, %08x @%08x %u\n", address, word, psxRegs.pc, psxRegs.cycle);
@@ -106,10 +101,10 @@ static void write_biu()
switch (word) {
case 0x800: case 0x804:
- ram_is_ro = 1;
+ pcsx_ram_is_ro = 1;
break;
case 0: case 0x1e988:
- ram_is_ro = 0;
+ pcsx_ram_is_ro = 0;
break;
default:
memprintf("write_biu: unexpected val: %08x\n", word);
@@ -342,8 +337,8 @@ void new_dyna_pcsx_mem_init(void)
}
// stupid BIOS RAM check
- writemem[0] = write_mem_check_ro32;
- ram_is_ro = 0;
+ writemem[0] = ari_write_ram_mirror_ro32;
+ pcsx_ram_is_ro = 0;
// RAM direct
for (i = 0x8000; i < 0x8020; i++) {