aboutsummaryrefslogtreecommitdiff
path: root/src/DSi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DSi.cpp')
-rw-r--r--src/DSi.cpp38
1 files changed, 28 insertions, 10 deletions
diff --git a/src/DSi.cpp b/src/DSi.cpp
index cfce0ac..12cd954 100644
--- a/src/DSi.cpp
+++ b/src/DSi.cpp
@@ -2241,8 +2241,11 @@ u8 ARM9IORead8(u32 addr)
return DSi_CamModule::Read8(addr);
}
- if (addr >= 0x04004300 && addr <= 0x04004400)
- return DSi_DSP::Read16(addr);
+ if ((addr & 0xFFFFFF00) == 0x04004300)
+ {
+ if (!(SCFG_EXT[0] & (1<<18))) return 0;
+ return DSi_DSP::Read8(addr);
+ }
return NDS::ARM9IORead8(addr);
}
@@ -2273,8 +2276,11 @@ u16 ARM9IORead16(u32 addr)
return DSi_CamModule::Read16(addr);
}
- if (addr >= 0x04004300 && addr <= 0x04004400)
- return DSi_DSP::Read32(addr);
+ if ((addr & 0xFFFFFF00) == 0x04004300)
+ {
+ if (!(SCFG_EXT[0] & (1<<18))) return 0;
+ return DSi_DSP::Read16(addr);
+ }
return NDS::ARM9IORead16(addr);
}
@@ -2335,6 +2341,12 @@ u32 ARM9IORead32(u32 addr)
return DSi_CamModule::Read32(addr);
}
+ if ((addr & 0xFFFFFF00) == 0x04004300)
+ {
+ if (!(SCFG_EXT[0] & (1<<18))) return 0;
+ return DSi_DSP::Read32(addr);
+ }
+
return NDS::ARM9IORead32(addr);
}
@@ -2399,10 +2411,10 @@ void ARM9IOWrite8(u32 addr, u8 val)
return DSi_CamModule::Write8(addr, val);
}
- if (addr >= 0x04004300 && addr <= 0x04004400)
+ if ((addr & 0xFFFFFF00) == 0x04004300)
{
- DSi_DSP::Write8(addr, val);
- return;
+ if (!(SCFG_EXT[0] & (1<<18))) return;
+ return DSi_DSP::Write8(addr, val);
}
return NDS::ARM9IOWrite8(addr, val);
@@ -2459,10 +2471,10 @@ void ARM9IOWrite16(u32 addr, u16 val)
return DSi_CamModule::Write16(addr, val);
}
- if (addr >= 0x04004300 && addr <= 0x04004400)
+ if ((addr & 0xFFFFFF00) == 0x04004300)
{
- DSi_DSP::Write16(addr, val);
- return;
+ if (!(SCFG_EXT[0] & (1<<18))) return;
+ return DSi_DSP::Write16(addr, val);
}
return NDS::ARM9IOWrite16(addr, val);
@@ -2609,6 +2621,12 @@ void ARM9IOWrite32(u32 addr, u32 val)
return DSi_CamModule::Write32(addr, val);
}
+ if ((addr & 0xFFFFFF00) == 0x04004300)
+ {
+ if (!(SCFG_EXT[0] & (1<<18))) return;
+ return DSi_DSP::Write32(addr, val);
+ }
+
return NDS::ARM9IOWrite32(addr, val);
}