Globedia.com

×

Error de autenticación

Ha habido un problema a la hora de conectarse a la red social. Por favor intentalo de nuevo

Si el problema persiste, nos lo puedes decir AQUÍ

×
×
Recibir alertas

¿Quieres recibir una notificación por email cada vez que Elblogdemanu escriba una noticia?

Chipper: Diseñando el emulador

10/01/2011 23:36 0 Comentarios Lectura: ( palabras)

Chipper

Hace unos tres años, decidí emprender una serie de proyectos de desarrollo, aunque realmente sólo me tomé en serio uno de ellos: un emulador de Chip-8. El programa estaba prácticamente terminado, y sólo me quedaba por implementar el sonido, pero por pereza lo fui dejando… hasta ahora. El problema es que cuando quise retomarlo, me di cuenta que había perdido el código fuente, así que decidí aprovechar la ocasión para reescribirlo en otro lenguaje.

En El artículo que escribí al respecto hace un par de años, desestimaba los lenguajes interpretados por falta de rendimiento, pero después de los avances que ha habido en temas de navegadores web, y tras haber rediseñado el tema del blog en HTML5, decidí probar suerte con JavaScript…

El resultado me ha sorprendido gratamente, ya que en unos días he podido implementar de nuevo todo el proyecto, y con un navegador decente que soporte HTML5 -especialmente en Google Chrome- corriendo en un ordenador reciente, el emulador llega los 60 frames por segundo sin problema :D

El código fuente del proyecto lo podéis encontrar en github, y la gracia del asunto está en un fichero JavaScript de 20KB.

Si echáis un vistazo, veréis que hay un objeto definido para gestionar la memoria (Memory), otro para la pantalla (Screen), otro pequeño para el sonido (Sound), otro para los eventos del teclado (Keyboard), otro para emular las instrucciones (CPU), y finalmente otro que tiene la lógica del emulador (Chipper). Creo que el código es relativamente sencillo de seguir, y aunque hay algunas optimizaciones en algunos puntos críticos -sobre todo a la hora de hacer multiplicaciones-, no es demasiado ofuscado.

En cualquier caso, lo importante está el núcleo principal: el método Chipper.frame. Tras inicializar el emulador y cargar un fichero en memoria, se intenta ejecutar un frame de emulación cada 16ms. Aquí se actualizan los registros que dependen del tiempo, se gestiona el teclado, se ejecutan unas cuantas instrucciones, y se actualiza la pantalla. Este bucle es la piedra angular de un emulador -y de un juego-, y es la clave para entender el programa.

Os animo a que trasteéis con el código, y estaré encantado de resolver vuestras dudas y de recibir vuestras mejoras ;)


Sobre esta noticia

Autor:
Elblogdemanu (70 noticias)
Fuente:
elblogdemanu.com
Visitas:
2767
Tipo:
Reportaje
Licencia:
Distribución gratuita
¿Problemas con esta noticia?
×
Denunciar esta noticia por

Denunciar

Comentarios

Aún no hay comentarios en esta noticia.