Creando un emulador: Space Invaders en Intel 8080

Find AI Tools
No difficulty
No complicated process
Find ai tools

Creando un emulador: Space Invaders en Intel 8080

Tabla de contenido:

  1. Introducción
  2. Mis experiencias con los juegos de Nintendo
  3. Mi curiosidad sobre cómo funcionan los emuladores
  4. La importancia de preservar la historia de los juegos
  5. Comenzando con la creación de un emulador
  6. El sistema Nintendo Entertainment System (NES)
  7. Un vistazo a Space Invaders
  8. El procesador Intel 8080: Una revolución en la industria de la computación
  9. La memoria en un emulador
  10. Los registros de la CPU y las instrucciones del Intel 8080
  11. Interrupciones y entrada/salida en el emulador
  12. Conclusiones y siguientes pasos

🎮 Emuladores: Ensambladores de sueños

En mi juventud, pasé muchas horas jugando videojuegos en las consolas originales de Nintendo y Super Nintendo. Estas experiencias despertaron mi curiosidad natural y mi deseo de exploración, permitiéndome descubrir mundos enteros creados a partir de simples píxeles y sprites. Estos mundos ofrecían aventuras y contaban historias que se escribían línea por línea en la superficie de un tubo de vidrio. Con el tiempo, comencé a preguntarme cómo funcionaban los propios componentes electrónicos y cómo convertían un botón presionado en el movimiento de un personaje o en un hechizo que lanzaba fuego a lo lejos.

Un día, mientras observaba a mi hermano jugar "Little Nemo" en su computadora personal, me quedé perplejo al ver un Cursor de mano sangrienta y un menú azul vivo, ya que había estado acostumbrado a ver el rectangular negruzco que se conectaba al antiguo Nintendo. Esta fue mi primera introducción a los emuladores.

Recientemente, he decidido explorar más a fondo estas curiosidades y descubrir cómo crear mi propio emulador. Quería entender cómo funcionaban, recrear lo que parecía ser un sistema tan único y darme cuenta de cuánto desconocía sobre el funcionamiento interno del hardware. Al tener un mejor entendimiento de los juegos con los que solía jugar de niño, también podría comprender de manera más sólida cómo funcionan las CPU, las computadoras y el funcionamiento más profundo del ensamblador y el código de máquina.

Además de mi fascinación por el funcionamiento interno de los juegos, también me ha interesado preservar la historia de estos. Muchos títulos oscuros nunca se han vuelto a lanzar en sistemas modernos y parece que están condenados a desvanecerse poco a poco en sus prisiones de cartucho a medida que su medio eléctrico se deteriora. La emulación les otorga nueva vida a algunos de estos juegos, preservando los originales y permitiendo a los fanáticos modificar y reinventar algunos títulos que de otro modo se perderían en el tiempo.

Sin embargo, este es un tema polémico que rápidamente se entrelaza con la discusión sobre la piratería de software, en mi opinión, de manera injusta. Pero fue Algo que me vino a la mente mientras trabajaba en este proyecto. Siendo así, el sistema Nintendo Entertainment System o NES parece ser un buen punto de partida para crear un emulador. Después de todo, es un sistema clásico y debería ser simple, ¿verdad?

Resulta que eso no es del todo cierto. Al revisar las referencias del NES, me encontré con una gran cantidad de descripciones únicas de hardware, mapeadores de memoria específicos para cada juego y cronometrajes muy precisos. Pero en lugar de profundizar en esa complejidad técnica, hablemos sobre Space Invaders.

Space Invaders fue lanzado originalmente en las máquinas arcade en 1978. Aunque no es tan nostálgico para mí como algunas de las consolas caseras posteriores, Space Invaders tiene una historia bastante rica tanto en el hardware utilizado como en su impacto en la industria de los videojuegos y la electrónica en general. Su creador, Tomohiro Nishikado, se inspiró en otros juegos y medios como Breakout, Star Wars y La guerra de los mundos. Fue atraído por el tema del espacio al intentar diseñar enemigos, y finalmente se decidió por los aliens, ya que la idea de disparar a enemigos humanos resultaba inmoral para la editorial del juego, Taito.

El hardware del juego se basaba en el Intel 8080, que era el segundo microprocesador de 8 bits creado por Intel. Este procesador comenzó su desarrollo hace 50 años, en 1972, y fue lanzado en 1974 como sucesor del primer microprocesador comercialmente disponible de 8 bits, el Intel 8008. A su vez, el 8008 era el sucesor del primer microprocesador comercialmente producido, el Intel 4004 de 4 bits. Estos dos microprocesadores sentaron las bases para el 8080, que rápidamente revolucionó la industria de la computación y redefinió la forma en que se construían las computadoras, impulsando la industria hacia máquinas construidas en módulos en lugar de ser construidas desde cero en estructuras verticalmente integradas.

El Space Invaders de Nishikado es un ejemplo perfecto de este cambio, ya que él diseñó por sí mismo no solo el juego, sino también una microcomputadora personalizada utilizando el 8080 para ejecutarlo. Él afirmó que, en comparación con el desarrollo del hardware, lo demás era fácil. El legado del 8080 aún vive en las PC de escritorio modernas, cuyos procesadores llevan algo de su ADN dentro del conjunto de instrucciones x86 comúnmente utilizado. El "86" en la nomenclatura x86 se refiere al 8086, que era una extensión directa de 16 bits del 8080 de 8 bits.

Ahora que tenemos en mente el hardware objetivo, ¿por dónde empezamos? Por lo general, cuando trabajas con circuitos, lo primero que debes hacer es buscar una hoja de datos. Afortunadamente, la hoja de datos del Intel 8080 todavía está disponible en línea, completa con una copia fotográfica de un formulario de registro por correo para tu nuevo microprocesador.

Esta aproximadamente 250 páginas es una lista completa de todos los detalles necesarios para recrear el chip y el software, y deberemos consultarla para implementar cada comportamiento necesario. Otros recursos que utilicé fueron emulator101.com y la sección de Space Invaders en computerarchology.com. El primero marca explícitamente el camino de cómo crear este emulador, mientras que el segundo nos proporciona muchos detalles sobre cómo se ejecuta el código de Space Invaders y cómo funciona el hardware personalizado.

Lo último que necesitaremos será la ROM del juego para ejecutar. Probablemente hay algunos problemas legales con la adquisición de archivos ROM para este juego, ya que es propiedad intelectual de Taito, que descubrí es una subsidiaria de Square Enix mientras escribía este párrafo. No estoy realmente seguro de qué esperaba, quizás algún tipo de crossover entre Pac-Man y Final Fantasy o algo así. De todos modos, mi copia del juego tiene los archivos invaders.h, invaders.g, invaders.f, que se cargan en la memoria de la computadora en ese orden como un precursor del hardware que tendremos que hablar más adelante.

Antes de continuar, es importante comprender el sistema numérico binario y hexadecimal, ya que son los lenguajes que usamos para entender y comunicarnos con el sistema informático. En nuestra vida cotidiana, usamos un sistema decimal o de base 10, donde un dígito cambia cuando llegamos a 10. Esto también se aplica a otros sistemas, como el sistema de tiempo, que se basa en ajustes sexuales o base 60 y define 60 segundos en un minuto y 60 minutos en una hora.

En el caso del sistema binario, agregamos una nueva columna cuando llegamos a 2. Por ejemplo, el número 6 es cuatro más dos. En binario, se representa como 110 (4 + 2). También se puede escribir como 0x6 en notación hexadecimal, donde el prefijo "0x" indica que es un número hexadecimal.

El sistema hexadecimal es de base 16, lo que significa que el cambio ocurre en el número 16. Sin embargo, no usaríamos los números del 10 al 15 para representar las columnas, ya que eso no sería muy claro. En su lugar, usamos las letras de la "a" a la "f" para representar los números del 10 al 15.

La forma en que construimos los sistemas numéricos binario y hexadecimal nos permite una manera elegante de mapear el hardware a algo abstracto como un valor numérico. En los sistemas binarios y hexadecimales, un bit o dígito binario puede representar un 0 o un 1, respectivamente. Esto nos permite medir fácilmente si un cable está transmitiendo 0 voltios o 5 voltios y redondear al valor extremo más cercano en lugar de dividir y tratar de decidir si está cerca de algún valor intermedio.

Los cables de entrada/salida o los circuitos de memoria pueden estar encendidos o apagados (alto o bajo, 0 o 5 voltios, etc.), lo que nos otorga una manera bastante elegante de asignar hardware a algo abstracto como un valor numérico. Una salida de un circuito es un 1 o un 0, siempre y cuando esté dentro de un umbral determinado.

El sistema binario es esencial para trabajar con lógica digital, ya que todo se reduce a apagado o encendido, 0 o 1. El sistema hexadecimal, por otro lado, es más conveniente cuando trabajamos con lógica digital, ya que cada dígito hex se mapea directamente a 4 bits, lo que hace que sea mucho más fácil convertir entre binario y hexadecimal.

Con todo este conocimiento en mente, ahora estamos listos para hablar sobre el hardware del emulador.

Continuaría escribiendo el resto del artículo, pero se ha alcanzado el límite de caracteres. Por favor, hágamelo saber si necesita que continúe o si desea hacer algún cambio o adición al contenido existente.

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.