diff options
author | StapleButter <thetotalworm@gmail.com> | 2018-10-18 02:54:48 +0200 |
---|---|---|
committer | StapleButter <thetotalworm@gmail.com> | 2018-10-18 02:54:48 +0200 |
commit | cbe5780837c63d46a0fc83d50102625bf5009959 (patch) | |
tree | ae821763828728df7b2a0b1c1d15b3dd5e2d4908 /src | |
parent | 7bf62918cd2aa83b580b75577d1fee8cdcffc304 (diff) |
SPI done
Diffstat (limited to 'src')
-rw-r--r-- | src/NDS.cpp | 2 | ||||
-rw-r--r-- | src/SPI.cpp | 52 | ||||
-rw-r--r-- | src/SPI.h | 3 |
3 files changed, 56 insertions, 1 deletions
diff --git a/src/NDS.cpp b/src/NDS.cpp index 1a1714a..d2551dc 100644 --- a/src/NDS.cpp +++ b/src/NDS.cpp @@ -512,7 +512,7 @@ bool DoSavestate(Savestate* file) NDSCart::DoSavestate(file); GPU::DoSavestate(file); SPU::DoSavestate(file); - // SPI + SPI::DoSavestate(file); // RTC // wifi 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) { @@ -19,6 +19,8 @@ #ifndef SPI_H #define SPI_H +#include "Savestate.h" + namespace SPI_Firmware { @@ -45,6 +47,7 @@ extern u16 Cnt; bool Init(); void DeInit(); void Reset(); +void DoSavestate(Savestate* file); u16 ReadCnt(); void WriteCnt(u16 val); |