Experimental save state support

This commit is contained in:
SimoneN64
2023-10-30 08:39:54 +01:00
parent c4f148eec1
commit b1f7659359
17 changed files with 313 additions and 1 deletions

View File

@@ -627,4 +627,30 @@ void PIF::ExecutePIF(Mem& mem, Registers& regs) {
DoPIFHLE(mem, regs, pal, cicType);
}
std::vector<u8> PIF::Serialize() {
std::vector<u8> res{};
res.resize(
6*sizeof(JoybusDevice) +
PIF_BOOTROM_SIZE +
PIF_RAM_SIZE +
mempak.size() +
eeprom.size() +
sizeof(int));
u32 index = 0;
memcpy(res.data() + index, joybusDevices, 6*sizeof(JoybusDevice));
index += 6*sizeof(JoybusDevice);
memcpy(res.data() + index, bootrom, PIF_BOOTROM_SIZE);
index += PIF_BOOTROM_SIZE;
memcpy(res.data() + index, ram, PIF_RAM_SIZE);
index += PIF_RAM_SIZE;
memcpy(res.data() + index, mempak.data(), mempak.size());
index += mempak.size();
memcpy(res.data() + index, eeprom.data(), eeprom.size());
index += eeprom.size();
memcpy(res.data() + index, &channel, sizeof(int));
return res;
}
}

View File

@@ -122,6 +122,7 @@ struct PIF {
void MempakWrite(u8*, u8*);
void EepromRead(const u8*, u8*, const Mem&) const;
void EepromWrite(const u8*, u8*, const Mem&);
std::vector<u8> Serialize();
bool gamepadConnected = false, mempakOpen = false;
SDL_GameController* gamepad{};