public CPUState GetState() { CPUState state = new CPUState() { memory = new byte[memorySize], registers = new byte[16], graphicsMemory = new bool[64 * (hiResMode ? 64 : 32)], stack = new ushort[16], keypadState = new bool[16], opcode = opcode, programCounter = programCounter, indexRegister = indexRegister, stackPointer = stackPointer, delayTimer = delayTimer, soundTimer = soundTimer, superChipMode = superChipMode, hiResMode = hiResMode, drawFlag = drawFlag }; memory.CopyTo(state.memory, 0); registers.CopyTo(state.registers, 0); graphicsMemory.CopyTo(state.graphicsMemory, 0); stack.CopyTo(state.stack, 0); keypadState.CopyTo(state.keypadState, 0); return(state); }
public bool Deserialize(string path) { if (File.Exists(path)) { FileStream stream = File.OpenRead(path); BinaryFormatter bf = new BinaryFormatter(); state = (CPUState)bf.Deserialize(stream); stream.Close(); return(true); } else { return(false); } }
public void ApplyState(CPUState state) { state.memory.CopyTo(memory, 0); state.registers.CopyTo(registers, 0); state.graphicsMemory.CopyTo(graphicsMemory, 0); state.stack.CopyTo(stack, 0); state.keypadState.CopyTo(keypadState, 0); opcode = state.opcode; programCounter = state.programCounter; indexRegister = state.indexRegister; stackPointer = state.stackPointer; delayTimer = state.delayTimer; soundTimer = state.soundTimer; superChipMode = state.superChipMode; hiResMode = state.hiResMode; drawFlag = state.drawFlag; }
public static void Savestate(int slot, CPUState state) { savestates[slot].state = state; savestates[slot].Serialize(GetSavestatePath(slot)); }