Ya sé que hasta no tener aprobado todo lo obligatorio y troncal (me faltan dos asignaturas de segundo) no se puede presentar el anteproyecto, pero mi tutor me pidió un texto explicando qué era exactamente lo que quería hacer para situarse en contexto, así que esto es lo que le llevaré mañana.

Os lo pongo por aquí para ver si antes de dos horas que lo imprima veis que me falta algo o algún cambio que creáis necesario.

El profesor da asignaturas de compiladores, intérpretes, máquinas virtuales, etc., así que supongo que entenderá los términos de los que hablo (aunque algunos los he puesto más en lenguaje de su campo).

Cita:
Este proyecto consiste en la realización de un emulador de la videoconsola SEGA Master System programado en el lenguaje C++ utilizando una metodología orientada a objetos.

Si bien la versión que se presentará funcionará bajo el sistema operativo GNU/Linux y arquitectura x86, la realización de este emulador se hará con el propósito de ser fácilmente portable a otros sistemas operativos y/o arquitecturas.

Un emulador consiste en la implementación mediante software de una máquina completa, creando una máquina virtual que reproduce de la manera más fiel posible el comportamiento de cada uno de los componentes de la máquina física real.

En el caso particular de este proyecto, la máquina a emular es la videoconsola Master System de la compañía japonesa SEGA. El emulador a construir deberá reproducir el comportamiento de cada uno de los componentes de dicha videoconsola (microprocesador Zilog Z80, controlador gráfico, controlador de sonido, etc.) con el objetivo de ser capaz de ejecutar correctamente los programas (juegos) que originalmente se escribieron para la misma.

Estos programas, originalmente almacenados en una memoria ROM situada en el interior de los cartuchos en los que se distribuían, serán interpretados por el componente correspondiente al procesador Z80 (están escritos en su lenguaje máquina) el cual interactuará con el resto de componentes que forman el emulador para obtener unos resultados idénticos a los de la máquina real.

Así mismo, se incorporarán en la medida de lo posible otras características adicionales no presentes en la máquina original pero que pudieran mejorar la experiencia como filtros gráficos, reescalados de imagen, etc.

El emulador contará además con una interfaz gráfica de usuario, de modo que sea posible su configuración, carga de programas y ejecución de forma sencilla usando solamente el ratón.

Por otro lado, para depuración de los módulos incluidos se crearán las herramientas que se estimen necesarias (interfaz interactivo para el Z80, desensamblador, etc.) que también serán incluidas junto con el resto de documentación.