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/SPI.cpp | |
parent | 7bf62918cd2aa83b580b75577d1fee8cdcffc304 (diff) |
SPI done
Diffstat (limited to 'src/SPI.cpp')
-rw-r--r-- | src/SPI.cpp | 52 |
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) { |