add some of the savestate shit
This commit is contained in:
parent
1e2982481c
commit
8c2cd2beaf
69
src/DSi.cpp
69
src/DSi.cpp
|
@ -172,7 +172,74 @@ void DoSavestate(Savestate* file)
|
|||
{
|
||||
file->Section("DSIG");
|
||||
|
||||
//
|
||||
file->Var16(&SCFG_BIOS);
|
||||
file->Var16(&SCFG_Clock9);
|
||||
file->Var16(&SCFG_Clock7);
|
||||
file->VarArray(&SCFG_EXT[0], sizeof(u32)*2);
|
||||
file->Var32(&SCFG_MC);
|
||||
file->Var16(&SCFG_RST);
|
||||
|
||||
//file->VarArray(ARM9iBIOS, 0x10000);
|
||||
//file->VarArray(ARM7iBIOS, 0x10000);
|
||||
|
||||
if (file->Saving)
|
||||
{
|
||||
file->VarArray(&MBK[0][0], sizeof(u32)*8);
|
||||
file->VarArray(&MBK[1][5], sizeof(u32)*3);
|
||||
file->Var32(&MBK[0][8]);
|
||||
}
|
||||
else
|
||||
{
|
||||
Set_SCFG_Clock9(SCFG_Clock9);
|
||||
Set_SCFG_MC(SCFG_MC);
|
||||
DSi_DSP::SetRstLine(SCFG_RST & 0x0001);
|
||||
|
||||
MBK[0][8] = 0;
|
||||
MBK[1][8] = 0;
|
||||
|
||||
u32 mbk[12];
|
||||
file->VarArray(&mbk, sizeof(u32)*12);
|
||||
|
||||
MapNWRAM_A(0, mbk[0] & 0xFF);
|
||||
MapNWRAM_A(1, (mbk[0] >> 8) & 0xFF);
|
||||
MapNWRAM_A(2, (mbk[0] >> 16) & 0xFF);
|
||||
MapNWRAM_A(3, mbk[0] >> 24);
|
||||
|
||||
MapNWRAM_B(0, mbk[1] & 0xFF);
|
||||
MapNWRAM_B(1, (mbk[1] >> 8) & 0xFF);
|
||||
MapNWRAM_B(2, (mbk[1] >> 16) & 0xFF);
|
||||
MapNWRAM_B(3, mbk[1] >> 24);
|
||||
MapNWRAM_B(4, mbk[2] & 0xFF);
|
||||
MapNWRAM_B(5, (mbk[2] >> 8) & 0xFF);
|
||||
MapNWRAM_B(6, (mbk[2] >> 16) & 0xFF);
|
||||
MapNWRAM_B(7, mbk[2] >> 24);
|
||||
|
||||
MapNWRAM_C(0, mbk[3] & 0xFF);
|
||||
MapNWRAM_C(1, (mbk[3] >> 8) & 0xFF);
|
||||
MapNWRAM_C(2, (mbk[3] >> 16) & 0xFF);
|
||||
MapNWRAM_C(3, mbk[3] >> 24);
|
||||
MapNWRAM_C(4, mbk[4] & 0xFF);
|
||||
MapNWRAM_C(5, (mbk[4] >> 8) & 0xFF);
|
||||
MapNWRAM_C(6, (mbk[4] >> 16) & 0xFF);
|
||||
MapNWRAM_C(7, mbk[4] >> 24);
|
||||
|
||||
MapNWRAMRange(0, 0, mbk[5]);
|
||||
MapNWRAMRange(0, 1, mbk[6]);
|
||||
MapNWRAMRange(0, 2, mbk[7]);
|
||||
|
||||
MapNWRAMRange(1, 0, mbk[8]);
|
||||
MapNWRAMRange(1, 1, mbk[9]);
|
||||
MapNWRAMRange(1, 2, mbk[10]);
|
||||
|
||||
mbk[11] &= 0x00FFFF0F;
|
||||
MBK[0][8] = mbk[11];
|
||||
MBK[1][8] = mbk[11];
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
NDMAs[i]->DoSavestate(file);
|
||||
|
||||
DSi_AES::DoSavestate(file);
|
||||
}
|
||||
|
||||
void DecryptModcryptArea(u32 offset, u32 size, u8* iv)
|
||||
|
|
|
@ -155,6 +155,43 @@ void Reset()
|
|||
*(u32*)&KeyY[3][8] = 0x202DDD1D;
|
||||
}
|
||||
|
||||
void DoSavestate(Savestate* file)
|
||||
{
|
||||
file->Section("AES.");
|
||||
|
||||
file->Var32(&Cnt);
|
||||
|
||||
file->Var32(&BlkCnt);
|
||||
file->Var32(&RemExtra);
|
||||
file->Var32(&RemBlocks);
|
||||
|
||||
file->Bool32(&OutputFlush);
|
||||
|
||||
file->Var32(&InputDMASize);
|
||||
file->Var32(&OutputDMASize);
|
||||
file->Var32(&AESMode);
|
||||
|
||||
InputFIFO->DoSavestate(file);
|
||||
OutputFIFO->DoSavestate(file);
|
||||
|
||||
file->VarArray(IV, 16);
|
||||
|
||||
file->VarArray(MAC, 16);
|
||||
|
||||
file->VarArray(KeyNormal, 4*16);
|
||||
file->VarArray(KeyX, 4*16);
|
||||
file->VarArray(KeyY, 4*16);
|
||||
|
||||
file->VarArray(CurKey, 16);
|
||||
file->VarArray(CurMAC, 16);
|
||||
|
||||
file->VarArray(OutputMAC, 16);
|
||||
file->Bool32(&OutputMACDue);
|
||||
|
||||
file->VarArray(Ctx->RoundKey, AES_keyExpSize);
|
||||
file->VarArray(Ctx->Iv, AES_BLOCKLEN);
|
||||
}
|
||||
|
||||
|
||||
void ProcessBlock_CCM_Extra()
|
||||
{
|
||||
|
|
|
@ -30,6 +30,8 @@ bool Init();
|
|||
void DeInit();
|
||||
void Reset();
|
||||
|
||||
void DoSavestate(Savestate* file);
|
||||
|
||||
u32 ReadCnt();
|
||||
void WriteCnt(u32 val);
|
||||
void WriteBlkCnt(u32 val);
|
||||
|
|
|
@ -63,7 +63,31 @@ void DSi_NDMA::Reset()
|
|||
|
||||
void DSi_NDMA::DoSavestate(Savestate* file)
|
||||
{
|
||||
// TODO!
|
||||
char magic[5] = "NDMx";
|
||||
magic[3] = '0' + Num + (CPU*4);
|
||||
file->Section(magic);
|
||||
|
||||
file->Var32(&SrcAddr);
|
||||
file->Var32(&DstAddr);
|
||||
file->Var32(&TotalLength);
|
||||
file->Var32(&BlockLength);
|
||||
file->Var32(&SubblockTimer);
|
||||
file->Var32(&FillData);
|
||||
file->Var32(&Cnt);
|
||||
|
||||
file->Var32(&StartMode);
|
||||
file->Var32(&CurSrcAddr);
|
||||
file->Var32(&CurDstAddr);
|
||||
file->Var32(&SubblockLength);
|
||||
file->Var32(&RemCount);
|
||||
file->Var32(&IterCount);
|
||||
file->Var32(&TotalRemCount);
|
||||
file->Var32(&SrcAddrInc);
|
||||
file->Var32(&DstAddrInc);
|
||||
|
||||
file->Var32(&Running);
|
||||
file->Bool32(&InProgress);
|
||||
file->Bool32(&IsGXFIFODMA);
|
||||
}
|
||||
|
||||
void DSi_NDMA::WriteCnt(u32 val)
|
||||
|
|
10
src/NDS.cpp
10
src/NDS.cpp
|
@ -814,6 +814,9 @@ bool DoSavestate(Savestate* file)
|
|||
file->VarArray(SharedWRAM, SharedWRAMSize);
|
||||
file->VarArray(ARM7WRAM, ARM7WRAMSize);
|
||||
|
||||
//file->VarArray(ARM9BIOS, 0x1000);
|
||||
//file->VarArray(ARM7BIOS, 0x4000);
|
||||
|
||||
file->VarArray(ExMemCnt, 2*sizeof(u16));
|
||||
file->VarArray(ROMSeed0, 2*8);
|
||||
file->VarArray(ROMSeed1, 2*8);
|
||||
|
@ -869,11 +872,8 @@ bool DoSavestate(Savestate* file)
|
|||
file->Var64(&LastSysClockCycles);
|
||||
file->Var64(&FrameStartTimestamp);
|
||||
file->Var32(&NumFrames);
|
||||
if (file->IsAtleastVersion(7, 1))
|
||||
{
|
||||
file->Var32(&NumLagFrames);
|
||||
file->Bool32(&LagFrameFlag);
|
||||
}
|
||||
file->Var32(&NumLagFrames);
|
||||
file->Bool32(&LagFrameFlag);
|
||||
|
||||
// TODO: save KeyInput????
|
||||
file->Var16(&KeyCnt);
|
||||
|
|
Loading…
Reference in New Issue