From 3a54b9178b761800cd8cfe0a51b073b893f59e79 Mon Sep 17 00:00:00 2001
From: StapleButter <thetotalworm@gmail.com>
Date: Thu, 18 Oct 2018 03:04:39 +0200
Subject: RTC done. misc shito.

---
 src/NDS.cpp | 16 +++++++++++++---
 src/RTC.cpp | 24 ++++++++++++++++++++++++
 src/RTC.h   |  2 ++
 3 files changed, 39 insertions(+), 3 deletions(-)

(limited to 'src')

diff --git a/src/NDS.cpp b/src/NDS.cpp
index d2551dc..525c925 100644
--- a/src/NDS.cpp
+++ b/src/NDS.cpp
@@ -501,9 +501,14 @@ bool DoSavestate(Savestate* file)
     for (int i = 0; i < 8; i++)
         DMAs[i]->DoSavestate(file);
 
-    // MapSharedWRAM
-    // powcnt shito
+    file->Var8(&WRAMCnt);
 
+    if (!file->Saving)
+    {
+        // 'dept of redundancy dept'
+        // but we do need to update the mappings
+        MapSharedWRAM(WRAMCnt);
+    }
 
     ARM9->DoSavestate(file);
     ARM7->DoSavestate(file);
@@ -513,9 +518,14 @@ bool DoSavestate(Savestate* file)
     GPU::DoSavestate(file);
     SPU::DoSavestate(file);
     SPI::DoSavestate(file);
-    // RTC
+    RTC::DoSavestate(file);
     // wifi
 
+    if (!file->Saving)
+    {
+        GPU::DisplaySwap(PowerControl9>>15);
+    }
+
     return true;
 }
 
diff --git a/src/RTC.cpp b/src/RTC.cpp
index fd60eaf..cd35643 100644
--- a/src/RTC.cpp
+++ b/src/RTC.cpp
@@ -73,6 +73,30 @@ void Reset()
     FreeReg = 0;
 }
 
+void DoSavestate(Savestate* file)
+{
+    file->Section("RTC.");
+
+    file->Var16(&IO);
+
+    file->Var8(&Input);
+    file->Var32(&InputBit);
+    file->Var32(&InputPos);
+
+    file->VarArray(Output, sizeof(Output));
+    file->Var32(&OutputBit);
+    file->Var32(&OutputPos);
+
+    file->Var8(&CurCmd);
+
+    file->Var8(&StatusReg1);
+    file->Var8(&StatusReg2);
+    file->VarArray(Alarm1, sizeof(Alarm1));
+    file->VarArray(Alarm2, sizeof(Alarm2));
+    file->Var8(&ClockAdjust);
+    file->Var8(&FreeReg);
+}
+
 
 u8 BCD(u8 val)
 {
diff --git a/src/RTC.h b/src/RTC.h
index 516eb5d..ebfcda8 100644
--- a/src/RTC.h
+++ b/src/RTC.h
@@ -20,6 +20,7 @@
 #define RTC_H
 
 #include "types.h"
+#include "Savestate.h"
 
 namespace RTC
 {
@@ -27,6 +28,7 @@ namespace RTC
 bool Init();
 void DeInit();
 void Reset();
+void DoSavestate(Savestate* file);
 
 u16 Read();
 void Write(u16 val, bool byte);
-- 
cgit v1.2.3