aboutsummaryrefslogtreecommitdiff
path: root/src/DSi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/DSi.cpp')
-rw-r--r--src/DSi.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/DSi.cpp b/src/DSi.cpp
index a96322b..259a447 100644
--- a/src/DSi.cpp
+++ b/src/DSi.cpp
@@ -35,6 +35,7 @@
#include "DSi_I2C.h"
#include "DSi_SD.h"
#include "DSi_AES.h"
+#include "DSi_Camera.h"
#include "tiny-AES-c/aes.hpp"
@@ -1406,6 +1407,12 @@ u8 ARM9IORead8(u32 addr)
CASE_READ8_32BIT(0x04004060, MBK[0][8])
}
+ if ((addr & 0xFFFFFF00) == 0x04004200)
+ {
+ if (!(SCFG_EXT[0] & (1<<17))) return 0;
+ return DSi_Camera::Read8(addr);
+ }
+
return NDS::ARM9IORead8(addr);
}
@@ -1428,6 +1435,12 @@ u16 ARM9IORead16(u32 addr)
CASE_READ16_32BIT(0x04004060, MBK[0][8])
}
+ if ((addr & 0xFFFFFF00) == 0x04004200)
+ {
+ if (!(SCFG_EXT[0] & (1<<17))) return 0;
+ return DSi_Camera::Read16(addr);
+ }
+
return NDS::ARM9IORead16(addr);
}
@@ -1480,6 +1493,12 @@ u32 ARM9IORead32(u32 addr)
case 0x04004170: return NDMAs[3]->Cnt;
}
+ if ((addr & 0xFFFFFF00) == 0x04004200)
+ {
+ if (!(SCFG_EXT[0] & (1<<17))) return 0;
+ return DSi_Camera::Read32(addr);
+ }
+
return NDS::ARM9IORead32(addr);
}
@@ -1519,6 +1538,12 @@ void ARM9IOWrite8(u32 addr, u8 val)
case 0x04004053: MapNWRAM_C(7, val); return;
}
+ if ((addr & 0xFFFFFF00) == 0x04004200)
+ {
+ if (!(SCFG_EXT[0] & (1<<17))) return;
+ return DSi_Camera::Write8(addr, val);
+ }
+
return NDS::ARM9IOWrite8(addr, val);
}
@@ -1572,6 +1597,12 @@ void ARM9IOWrite16(u32 addr, u16 val)
return;
}
+ if ((addr & 0xFFFFFF00) == 0x04004200)
+ {
+ if (!(SCFG_EXT[0] & (1<<17))) return;
+ return DSi_Camera::Write16(addr, val);
+ }
+
return NDS::ARM9IOWrite16(addr, val);
}
@@ -1678,6 +1709,12 @@ void ARM9IOWrite32(u32 addr, u32 val)
case 0x04004170: NDMAs[3]->WriteCnt(val); return;
}
+ if ((addr & 0xFFFFFF00) == 0x04004200)
+ {
+ if (!(SCFG_EXT[0] & (1<<17))) return;
+ return DSi_Camera::Write32(addr, val);
+ }
+
return NDS::ARM9IOWrite32(addr, val);
}