Пример #1
0
        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");
        }
Пример #2
0
        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);
            }
        }