/// <summary>Constructor</summary> /// <param name="nombreCartucho">Ruta al fichero de la ROM</param> public GB(string nombreCartucho) { // Crea el cartucho, memoria y procesador con los parametros por defecto _cartucho = Cartucho.cargarCartucho(nombreCartucho); Debug.WriteLine(_cartucho.info()); Debug.WriteLine(); _memoria = new Memoria(Constantes.MEMSIZE, _cartucho); _cpu = new CPU(_memoria, Constantes.CPU_SPEED); }
/// <summary>Constructor</summary> /// <param name="memoria">Memoria</param> /// <param name="velocidad">Velocidad en MHz</param> public CPU(Memoria memoria, double velocidad) { _memoria = memoria; _registros = new Registros(); _MHZ = velocidad; _graphics = new Graphics(_memoria); _ciclos = new int[3]; _bp = new System.Collections.ArrayList(); reset(); }
/// <summary>Actualiza la direccion de memoria adecuada segun la matriz de teclas solicitada con el estado /// actual de las teclas</summary> /// <param name="memoria">Memoria</param> public static void actualizar(Memoria memoria) { byte joypad = memoria.ram[JOYPAD]; joypad &= 0xF0; // Segun la peticion, se actualiza la memoria con las teclas apropiadas switch(joypad){ case 0x30: joypad = 0x3F; break; case 0x20: if (!_teclas[0]) joypad |= 0x08; // Down if (!_teclas[1]) joypad |= 0x04; // Up if (!_teclas[2]) joypad |= 0x02; // Left if (!_teclas[3]) joypad |= 0x01; // Right break; case 0x10: if (!_teclas[4]) joypad |= 0x08; // Start if (!_teclas[5]) joypad |= 0x04; // Select if (!_teclas[6]) joypad |= 0x02; // B if (!_teclas[7]) joypad |= 0x01; // A break; } // Accede directamente al array de la memoria para evitar bucles infinitos con las funciones de gestion // del acceso a memoria memoria.ram[JOYPAD] = joypad; }
/// <summary>Constructor</summary> /// <param name="registros">Registros de la CPU</param> /// <param name="memoria">Memoria</param> public Instruccion(Registros registros, Memoria memoria) { _registros = registros; _memoria = memoria; }
/// <summary>Constructor</summary> /// <param name="memoria">Memoria</param> public Graphics(Memoria memoria) { _memoria = memoria; }