diff options
author | StapleButter <thetotalworm@gmail.com> | 2018-12-09 01:17:05 +0100 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2018-12-09 01:17:05 +0100 |
commit | 29bca33bc68610d79914484e7e34ddd4e372d07c (patch) | |
tree | 62de14c9a4a164bfa7ed03d8bf1a64b7f24efee3 /src/NDS.cpp | |
parent | c6fb152d807205790a4ab2bff787b67bf7e946dc (diff) |
take it somewhere.
still need to speed it up a tad.
Diffstat (limited to 'src/NDS.cpp')
-rw-r--r-- | src/NDS.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/NDS.cpp b/src/NDS.cpp index daed205..12cd8a5 100644 --- a/src/NDS.cpp +++ b/src/NDS.cpp @@ -56,7 +56,7 @@ namespace NDS // // timings for GBA slot and wifi are set up at runtime -u8 ARM9MemTimings[0x100000][4]; +u8 ARM9MemTimings[0x40000][4]; u8 ARM7MemTimings[0x20000][4]; ARMv5* ARM9; @@ -134,6 +134,8 @@ bool Running; void DivDone(u32 param); void SqrtDone(u32 param); void RunTimer(u32 tid, s32 cycles); +void SetWifiWaitCnt(u16 val); +void SetGBASlotTimings(); bool Init() @@ -185,10 +187,10 @@ void DeInit() void SetARM9RegionTimings(u32 addrstart, u32 addrend, int buswidth, int nonseq, int seq) { - addrstart >>= 12; - addrend >>= 12; + addrstart >>= 14; + addrend >>= 14; - if (addrend == 0xFFFFF) addrend++; + if (addrend == 0x3FFFF) addrend++; int N16, S16, N32, S32; N16 = nonseq; @@ -211,12 +213,14 @@ void SetARM9RegionTimings(u32 addrstart, u32 addrend, int buswidth, int nonseq, ARM9MemTimings[i][2] = N32; ARM9MemTimings[i][3] = S32; } + + ARM9->UpdateRegionTimings(addrstart<<14, addrend<<14); } void SetARM7RegionTimings(u32 addrstart, u32 addrend, int buswidth, int nonseq, int seq) { - addrstart >>= 17; - addrend >>= 17; + addrstart >>= 15; + addrend >>= 15; if (addrend == 0x1FFFF) addrend++; @@ -400,6 +404,9 @@ void Reset() fclose(f); } + ARM9->SetClockShift(1); + ARM7->SetClockShift(0); + InitTimings(); memset(MainRAM, 0, MAIN_RAM_SIZE); @@ -469,9 +476,6 @@ void Reset() SPI::Reset(); RTC::Reset(); Wifi::Reset(); - - ARM9->SetClockShift(1); - ARM7->SetClockShift(0); } void Stop() @@ -1449,7 +1453,7 @@ u16 ARM9Read16(u32 addr) return 0; } -int ARM9Read32(u32 addr, u32* val) +u32 ARM9Read32(u32 addr) { if ((addr & 0xFFFFF000) == 0xFFFF0000) { @@ -1739,7 +1743,7 @@ u16 ARM7Read16(u32 addr) return 0; } -int ARM7Read32(u32 addr, u32* val) +u32 ARM7Read32(u32 addr) { if (addr < 0x00004000) { |