aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-02-05 17:45:17 +0100
committerStapleButter <thetotalworm@gmail.com>2017-02-05 17:45:17 +0100
commite88cf1b43d554e16ca8f5ba67c7737231c935f0e (patch)
tree60189ab56a9f4f83888c4b74e8ecf6e29004249d
parentff3b60bc9338ae9753c0f08d38492484f6ed81c6 (diff)
apparently when you set an out-of-bounds address for EEPROM, it should wrap around
TODO: check if it also happens with Flash also fix shit that could have later turned into memory leaks
-rw-r--r--NDS.cpp2
-rw-r--r--NDSCart.cpp15
-rw-r--r--melonDS.depend6
3 files changed, 11 insertions, 12 deletions
diff --git a/NDS.cpp b/NDS.cpp
index d7a8503..4cde37a 100644
--- a/NDS.cpp
+++ b/NDS.cpp
@@ -289,7 +289,7 @@ void Reset()
// test
//LoadROM();
//LoadFirmware();
- NDSCart::LoadROM("rom/peach.nds");
+ NDSCart::LoadROM("rom/sonic.nds");
Running = true; // hax
}
diff --git a/NDSCart.cpp b/NDSCart.cpp
index 3bfc814..523f575 100644
--- a/NDSCart.cpp
+++ b/NDSCart.cpp
@@ -56,6 +56,7 @@ void Write_Discover(u8 val, bool islast);
void Init()
{
SRAM = NULL;
+ Discover_Buffer = NULL;
}
void Reset()
@@ -66,6 +67,7 @@ void Reset()
void LoadSave(char* path)
{
if (SRAM) delete[] SRAM;
+ if (Discover_Buffer) delete[] Discover_Buffer;
strncpy(SRAMPath, path, 255);
SRAMPath[255] = '\0';
@@ -181,6 +183,8 @@ void SetMemoryType()
}
CurCmd = prev_cmd;
+
+ delete[] Discover_Buffer;
}
void Write_Discover(u8 val, bool islast)
@@ -272,9 +276,7 @@ void Write_EEPROM(u8 val, bool islast)
}
else
{
- if (Addr < SRAMLength)
- SRAM[Addr] = val;
-
+ SRAM[Addr & (SRAMLength-1)] = val;
Addr++;
}
break;
@@ -288,11 +290,7 @@ void Write_EEPROM(u8 val, bool islast)
}
else
{
- if (Addr >= SRAMLength)
- Data = 0;
- else
- Data = SRAM[Addr];
-
+ Data = SRAM[Addr & (SRAMLength-1)];
Addr++;
}
break;
@@ -321,6 +319,7 @@ void Write_Flash(u8 val, bool islast)
}
else
{
+ // CHECKME: does Flash also wraparound when the address is out of bounds?
if (Addr >= SRAMLength)
Data = 0;
else
diff --git a/melonDS.depend b/melonDS.depend
index 1eca451..f7fbfb0 100644
--- a/melonDS.depend
+++ b/melonDS.depend
@@ -10,7 +10,7 @@
1481161027 c:\documents\sources\melonds\types.h
-1486310027 source:c:\documents\sources\melonds\nds.cpp
+1486312246 source:c:\documents\sources\melonds\nds.cpp
<stdio.h>
<string.h>
"NDS.h"
@@ -24,7 +24,7 @@
"RTC.h"
"Wifi.h"
-1486310306 source:c:\documents\sources\melonds\arm.cpp
+1486310992 source:c:\documents\sources\melonds\arm.cpp
<stdio.h>
"NDS.h"
"ARM.h"
@@ -137,7 +137,7 @@
1485980863 c:\documents\sources\melonds\ndscart.h
"types.h"
-1486309588 source:c:\documents\sources\melonds\ndscart.cpp
+1486312231 source:c:\documents\sources\melonds\ndscart.cpp
<stdio.h>
<string.h>
"NDS.h"