public static void Inicia(string nomeArquivo, cpu cpu) { cpu.EnviaDados(out opcode, out memoria, out V, out I, out pc, out graficos, out temporizadorDelay, out temporizadorSom, out pilha, out ponteiroPilha, out teclas, out DesenhaQuadro); if (!Directory.Exists("savestates")) Directory.CreateDirectory("savestates"); }
public static void LoadState(string nomeArquivo, cpu cpu) { string path = @"savestates/" + nomeArquivo + ".sav"; if (File.Exists(path)) { string[] vetor = File.ReadAllLines(path); int[] numeros = {1, 2, 5, 8, 10}; foreach (int numero in numeros) vetor[numero] = vetor[numero].Substring(0, (vetor[numero].Length - 1)); int iterador = 0; memoria = new byte[64 * 64]; V = new byte[16]; graficos = new byte[64 * 32]; pilha = new ushort[16]; teclas = new byte[16]; opcode = ushort.Parse(vetor[iterador++]); string[] spliter = vetor[iterador++].Split(' '); for (int i = 0; i < spliter.Length; i++) memoria[i] = byte.Parse(spliter[i]); spliter = vetor[iterador++].Split(' '); for (int i = 0; i < spliter.Length; i++) V[i] = byte.Parse(spliter[i]); I = ushort.Parse(vetor[iterador++]); pc = ushort.Parse(vetor[iterador++]); spliter = vetor[iterador++].Split(' '); for (int i = 0; i < spliter.Length; i++) graficos[i] = byte.Parse(spliter[i]); temporizadorDelay = byte.Parse(vetor[iterador++]); temporizadorSom = byte.Parse(vetor[iterador++]); spliter = vetor[iterador++].Split(' '); for (int i = 0; i < spliter.Length; i++) pilha[i] = ushort.Parse(spliter[i]); ponteiroPilha = ushort.Parse(vetor[iterador++]); spliter = vetor[iterador++].Split(' '); for (int i = 0; i < spliter.Length; i++) teclas[i] = byte.Parse(spliter[i]); DesenhaQuadro = bool.Parse(vetor[iterador++]); cpu.RecebeDados(opcode, memoria, V, I, pc, graficos, temporizadorDelay, temporizadorSom, pilha, ponteiroPilha, teclas, DesenhaQuadro); } }