aboutsummaryrefslogtreecommitdiff
path: root/src/NDS.cpp
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2018-12-09 01:17:05 +0100
committerStapleButter <thetotalworm@gmail.com>2018-12-09 01:17:05 +0100
commit29bca33bc68610d79914484e7e34ddd4e372d07c (patch)
tree62de14c9a4a164bfa7ed03d8bf1a64b7f24efee3 /src/NDS.cpp
parentc6fb152d807205790a4ab2bff787b67bf7e946dc (diff)
take it somewhere.
still need to speed it up a tad.
Diffstat (limited to 'src/NDS.cpp')
-rw-r--r--src/NDS.cpp26
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)
{