Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
     }
 }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        public static void Savestate(int slot, CPUState state)
        {
            savestates[slot].state = state;

            savestates[slot].Serialize(GetSavestatePath(slot));
        }