aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2017-03-29 22:12:53 +0200
committerStapleButter <thetotalworm@gmail.com>2017-03-29 22:12:53 +0200
commit4202a8f826305c6a36b02fe08e28a76488430a75 (patch)
treebd38535d8d2119d2e494b377a7f6c9da8e4dfe5d
parent777623b665b0d9e6373d7011592d48db7e52aa44 (diff)
finish Flash support, mostly
-rw-r--r--src/NDSCart.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/NDSCart.cpp b/src/NDSCart.cpp
index a53154c..f291d7b 100644
--- a/src/NDSCart.cpp
+++ b/src/NDSCart.cpp
@@ -361,6 +361,20 @@ void Write_Flash(u8 val, bool islast)
{
switch (CurCmd)
{
+ case 0x02:
+ if (DataPos < 3)
+ {
+ Addr <<= 8;
+ Addr |= val;
+ Data = 0;
+ }
+ else
+ {
+ SRAM[Addr & (SRAMLength-1)] = 0;
+ Addr++;
+ }
+ break;
+
case 0x03:
if (DataPos < 3)
{
@@ -393,6 +407,40 @@ void Write_Flash(u8 val, bool islast)
Data = 0xFF;
break;
+ case 0xD8:
+ if (DataPos < 3)
+ {
+ Addr <<= 8;
+ Addr |= val;
+ Data = 0;
+ }
+ if (DataPos == 2)
+ {
+ for (u32 i = 0; i < 0x10000; i++)
+ {
+ SRAM[Addr & (SRAMLength-1)] = 0;
+ Addr++;
+ }
+ }
+ break;
+
+ case 0xDB:
+ if (DataPos < 3)
+ {
+ Addr <<= 8;
+ Addr |= val;
+ Data = 0;
+ }
+ if (DataPos == 2)
+ {
+ for (u32 i = 0; i < 0x100; i++)
+ {
+ SRAM[Addr & (SRAMLength-1)] = 0;
+ Addr++;
+ }
+ }
+ break;
+
default:
if (DataPos==0)
printf("unknown Flash save command %02X\n", CurCmd);