aboutsummaryrefslogtreecommitdiff
path: root/src/SPI.cpp
diff options
context:
space:
mode:
authorStapleButter <thetotalworm@gmail.com>2018-10-18 02:54:48 +0200
committerStapleButter <thetotalworm@gmail.com>2018-10-18 02:54:48 +0200
commitcbe5780837c63d46a0fc83d50102625bf5009959 (patch)
treeae821763828728df7b2a0b1c1d15b3dd5e2d4908 /src/SPI.cpp
parent7bf62918cd2aa83b580b75577d1fee8cdcffc304 (diff)
SPI done
Diffstat (limited to 'src/SPI.cpp')
-rw-r--r--src/SPI.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/SPI.cpp b/src/SPI.cpp
index 98f5903..3ffb20f 100644
--- a/src/SPI.cpp
+++ b/src/SPI.cpp
@@ -193,6 +193,22 @@ void Reset()
StatusReg = 0x00;
}
+void DoSavestate(Savestate* file)
+{
+ file->Section("SPFW");
+
+ // CHECKME/TODO: trust the firmware to stay the same?????
+ // embedding the whole firmware in the savestate would be derpo tho??
+
+ file->Var32(&Hold);
+ file->Var8(&CurCmd);
+ file->Var32(&DataPos);
+ file->Var8(&Data);
+
+ file->Var8(&StatusReg);
+ file->Var32(&Addr);
+}
+
void SetupDirectBoot()
{
NDS::ARM9Write32(0x027FF864, 0);
@@ -360,6 +376,19 @@ void Reset()
RegMasks[4] = 0x0F;
}
+void DoSavestate(Savestate* file)
+{
+ file->Section("SPPW");
+
+ file->Var32(&Hold);
+ file->Var32(&DataPos);
+ file->Var8(&Index);
+ file->Var8(&Data);
+
+ file->VarArray(Registers, 8);
+ file->VarArray(RegMasks, 8); // is that needed??
+}
+
u8 Read()
{
return Data;
@@ -441,6 +470,17 @@ void Reset()
ConvResult = 0;
}
+void DoSavestate(Savestate* file)
+{
+ file->Section("SPTS");
+
+ file->Var32(&DataPos);
+ file->Var8(&ControlByte);
+ file->Var8(&Data);
+
+ file->Var16(&ConvResult);
+}
+
void SetTouchCoords(u16 x, u16 y)
{
// scr.x = (adc.x-adc.x1) * (scr.x2-scr.x1) / (adc.x2-adc.x1) + (scr.x1-1)
@@ -526,6 +566,18 @@ void Reset()
SPI_TSC::Reset();
}
+void DoSavestate(Savestate* file)
+{
+ file->Section("SPIG");
+
+ file->Var16(&Cnt);
+ file->Var32(&CurDevice);
+
+ SPI_Firmware::DoSavestate(file);
+ SPI_Powerman::DoSavestate(file);
+ SPI_TSC::DoSavestate(file);
+}
+
void WriteCnt(u16 val)
{