Tutorial Programación Emulador Chip-8 - Parte 1 al 6

Revela aquí tus conocimientos o plasma tus dudas acerca de temas relacionados con los lenguajes de programación. Tan útiles a la hora de hacer nuestras propias herramientas.

Moderador: Faloppa

Re: Tutorial Programación Emulador Chip-8 - Parte 1 al 5

Notapor darkn » Dom Feb 12, 2012 4:38 am

Amigos, acabo de subir el Capítulo 5 del tutorial, espero les guste.

Eso es todo, por aca son casi las 2 AM, ¡nos vemos!
Avatar de Usuario
darkn
Usuario
Usuario
 
Mensajes: 17
Registrado: Lun Mar 14, 2011 2:28 am

Re: Tutorial Programación Emulador Chip-8 - Parte 1 al 6

Notapor darkn » Dom Mar 18, 2012 3:14 am

Ahora acabo de subir el Capítulo 6 del tutorial, estoy a toda máquina! ;D

¡Saludos!
Avatar de Usuario
darkn
Usuario
Usuario
 
Mensajes: 17
Registrado: Lun Mar 14, 2011 2:28 am

Re: Tutorial Programación Emulador Chip-8 - Parte 1 al 7

Notapor darkn » Mar Jun 19, 2012 3:38 am

¡Hola a todos! les aviso que acabo de subir el Capítulo 7 del tutorial ::)

¡Nos vemos!
Avatar de Usuario
darkn
Usuario
Usuario
 
Mensajes: 17
Registrado: Lun Mar 14, 2011 2:28 am

Re: Tutorial Programación Emulador Chip-8 - Parte 1 al 6

Notapor PacoChan » Vie Jun 22, 2012 6:36 pm

Muy buenas. Estos días me ha dado por mirar de terminar mi emulador y tratando de conseguir el 100% de compatibilidad, me he encontrado con un detalle que me ha llevado unas buenas horas en descubrir. Es otro error de documentación y está mal explicado en prácticamente todos los manuales que andan por internet. Es acerca de las instrucciones 8xy6 y 8xye. En todos sitios se dice que se ha de hacer Vx >>= 1 / Vx <<= 1. ¿Y qué pasa con el Vy? Pues en un sitio he encontrado que efectivamente, ese Vy se ha de usar, y la operación es Vx = Vy >> 1 / Vx = Vy << 1.

Notice that these instructions shift register VY and store the result in register VX. It is a common misconception when programming in CHIP-8 to assume that the VX register is shifted by this instruction, and VY remains unmodified. To have a register perform a shift upon itself, a register VX can be passed as both arguments: 8XX6 or 8XXE. For example, to shift register V6 right by one bit, the instruction 8666 can be used.


Enlace: http://mattmik.com/chip8.html

Este detallito hace que el Animal Race no funcione del todo bien (sí, es demasiado complejo el juego por lo visto xD). Resulta que cuando eliges un animal, el cursor no se sitúa sobre el animal que toca. Haciendo lo que dice en la web ésta, ya funciona perfectamente.

Ahora me queda comprobar si haciendo esto no se estropea ningún otro juego.

Por cierto, un pequeño error que he visto en tu código y del que me di cuenta también en el mío:

Código: Seleccionar todo
const int TAMANO_MEM = 0xFFF; //Es erróneo
const int TAMANO_MEM        = 0x1000;  //La memoria son 4096 (0x1000) bytes, y va de 0x0 a 0xfff



Dentro de nada sacaré mi emulador si consigo el 100% de emulación en todos los juegos. Parece mentira que un aparato tan simple de tantos problemas a la hora de emular. Que si cambios de signo, overflows, etc. Hasta el detalle más pequeño y mal documentado se carga un juego. No me quiero ni imaginar sistemas más complejos xd.


EDIT: Pues tocando eso, el Blinky se fastidia por completo :(
Avatar de Usuario
PacoChan
Administrador
Administrador
 
Mensajes: 71
Registrado: Sab Ene 05, 2008 2:06 pm
Ubicación: Palma de Mallorca

Re: Tutorial Programación Emulador Chip-8 - Parte 1 al 6

Notapor PacoChan » Jue Jul 05, 2012 8:11 pm

Pues al final he publicado y liberado el código fuente de mi emulador. Seguro que está fatal programado, pero mira, funciona xD. Es multi-hilo y emula prácticamente todo. Y lo que no emula bien creo que es porque el juego está mal hecho xD. También conseguí que por GDI fuera más o menos rápido. En versiones anteriores, era agrandar un poco la ventana y empezar a ralentizarse. Ahora sigue yendo sobrado incluso a 1920x1080, aunque tengo un PC bastante potente. Vendría bien saber cómo os funciona a los demás.

Con el emulador vienen prácticamente todos (o todos) los juegos conocidos de Chip-8 y Super Chip, más uno que hice yo llamado LOL-HUNT. Podéis descargar el emulador compilado y el código fuente aquí: http://code.google.com/p/pacochip-8/

Imágenes:

Imagen
Imagen
Imagen
Avatar de Usuario
PacoChan
Administrador
Administrador
 
Mensajes: 71
Registrado: Sab Ene 05, 2008 2:06 pm
Ubicación: Palma de Mallorca

Re: Tutorial Programación Emulador Chip-8 - Parte 1 al 6

Notapor darkn » Vie Jun 28, 2013 1:50 pm

Nada que decir, solo felicitarte por tu gran avance y correciones al código. Te quedó muy bueno el emulador. Lo siento si no respondí antes ya que estaba con algunos problemillas.
Avatar de Usuario
darkn
Usuario
Usuario
 
Mensajes: 17
Registrado: Lun Mar 14, 2011 2:28 am

Re: Tutorial Programación Emulador Chip-8 - Parte 1 al 6

Notapor hexplus » Dom Jul 07, 2013 6:14 am

PacoChan escribió:Pues al final he publicado y liberado el código fuente de mi emulador. Seguro que está fatal programado, pero mira, funciona xD. Es multi-hilo y emula prácticamente todo. Y lo que no emula bien creo que es porque el juego está mal hecho xD. También conseguí que por GDI fuera más o menos rápido. En versiones anteriores, era agrandar un poco la ventana y empezar a ralentizarse. Ahora sigue yendo sobrado incluso a 1920x1080, aunque tengo un PC bastante potente. Vendría bien saber cómo os funciona a los demás.

Con el emulador vienen prácticamente todos (o todos) los juegos conocidos de Chip-8 y Super Chip, más uno que hice yo llamado LOL-HUNT. Podéis descargar el emulador compilado y el código fuente aquí: http://code.google.com/p/pacochip-8/

Imágenes:

Imagen
Imagen
Imagen


Este Pacochan es una máquina de código fuente. :)
Avatar de Usuario
hexplus
Administrador
Administrador
 
Mensajes: 531
Registrado: Jue Ene 18, 2007 2:00 am
Ubicación: Costa Rica

Anterior

Volver a Programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado