diff options
Diffstat (limited to 'src/DSi.cpp')
-rw-r--r-- | src/DSi.cpp | 37 |
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); } |