Ver la versión completa : He comenzado a hacer un emulador de GameBoy
deimian86
03/08/2011, 15:55
Es algo que siempre quise hacer y bueno, viendo que no hay mucha documentación en castellano sobre estos temas (salvo el genial PFC de Puck sobre el emulador de Master System, desde aqui le doy un millon de gracias por hacer publico ese documento), pues he hecho un blog para ir documentando todo lo que vaya leyendo, a modo de resumen, para mi mismo y para quien le pueda servir para algo.
No llevo ni una semana en el tema y es la primera vez que hago algo así asi que mis conocimientos son escasos (las asignaturas de arquitectura de computadores de la carrera aprobadas y ya), pero me las voy apañando, he escrito un par de artículos sobre la CPU de la Game Boy y sobre la cabecera de los cartuchos de esa consola, estoy empezando un software que lee las roms y empezando a modelar una clase que emule al Z80 (empezaré haciendo un desensamblador).
En las proximas entradas ire hablando sobre el juego de instrucciones de la CPU.
Os digo esto más que nada porque seguro que aqui hay gente que sabe mucho y quizas me pueda dar ideas, consejos, o corregirme, os agradezco ya simplemente que le echeis un vistazo.
http://blog.deimian86.com/
No se si se considera spam, supongo que no, ni vendo nada ni voy a poner publicidad de nada, es un wordpress que me monte para ir anotando cosillas. espero que os guste :D
Mucho ánimo con ello, lo iré siguiendo, a ver si aprendemos algo xD.
Se agradecerían en el blog rss para leerlo puntualmente.
Se agradecerían en el blog rss para leerlo puntualmente.
http://blog.deimian86.com/?feed=rss2
¡Subscrito!
Pues yo lo añado al google reader, que me parece interesante de leer.
Eso si, no lo vayas a dejar a medias o iremos a tu casa con antorchas.
deimian86
03/08/2011, 22:04
Muchas gracias! Es la primera vez que uso wordpress y ya estuve toqueteando un poco creo que he puesto lo de la sindicacion RSS algo más visible :D
Si lo dejo a medias agradeceria lo de las antorchas porque en parte lo hago con la idea de comprometerme con un proyecto y no dejarlo a medias como me suele pasar.
kennyspirit
03/08/2011, 22:11
Suscrito por pura y suprema admiración a todos los que se aventuran a hacer emuladores.
Me fascina muchísimo.
Te deseo la mejor de las suertes y todo el tesón y constancia necesarios :brindis:
josepzin
03/08/2011, 22:34
He agregado el RSS del blog a RetroInvaders > http://retroinvaders.com/es/blog/277/gameboy
¡Suerte con el proyecto!
Puck2099
03/08/2011, 22:40
Si necesitas ayuda mándame un MP o un email, pues ahora no tengo apenas tiempo para ver el foro y por ahí te podría ayudar mejor :)
Ánimo y adelante con el proyecto!
Una pregunta , es posible que el emulador utilice el cable link para poder comunicarse con una Gameboy?
mortalmorzilla
04/08/2011, 00:13
Solo puedo animarte en el proyecto,porque en temas de programacion desconozco demasiado, a ver si con suerte (que seguro que si), conseguiras hacer un emulador notable.
Que la fuerza te acompañe!
^OMAP-Cranck^
07/08/2011, 11:17
Creo que deberias pasarte por aqui:
http://www.gp32spain.com/foros/blog.php?b=3320
justo al final de la entrada hay algo que te puede interesar.
jduranmaster
07/08/2011, 11:35
me da esto al acceder a la pagina: Error establishing a database connection
< - >
Una pregunta , es posible que el emulador utilice el cable link para poder comunicarse con una Gameboy?
obviamente tendria que ser una cable link a USB o algo parecido. existe un tipo que hizo una aplicación para comunicar la gameboy a traves de un cable link modificado a puerto LPT1 con el PC y asi descargar sus fotos que tenia almacenadas en la GB-Camera.
deimian86
07/08/2011, 14:31
Si, llevo un par de dias teniendo problemas con el wordpress y mi hosting que es un poco malejo, ya estoy solucionandolo, espero que no tengais problemas con el RSS porque la solución al final ha sido reinstalarlo todo, en fin, a partir de ahora copias de seguridad de todo, que bien ***** las pase reparando tablas en la base de datos desde el phpMyAdmin para no perder las entradas y un par de borradores que tenia preparados xDDDD
deimian86
07/08/2011, 15:16
Gracias :D
Bueno, creo que por fin solucione lo del blog, y de paso una entrada nueva.
jduranmaster
07/08/2011, 15:57
Gracias :D
Bueno, creo que por fin solucione lo del blog, y de paso una entrada nueva.
sip ya funciona. si necesitas ayuda, ya sabes...
Siempre es interesante seguir el desarrollo de un emulador y aprender. Mucha suerte con el proyecto.
Estás en mi lector de RSS, famigo :)
SplinterGU
07/08/2011, 20:31
animo!
¿En que lenguaje vas a implementar el emulador?
Java, según la cabecera del blog y en el post de punto de partida.
Ánimo, todo lo que sea documentación sobre la GB es más que bienvenida.
Igual te vale de algo mi tutorial de ASM de GB, alguna particularidad explico por ahi...
http://wiki.ladecadence.net/doku.php?do=show&id=tutorial_de_ensamblador
Mucha suerte, si eso vete actualizando este hilo para recordarnos visitar tu blog!
si mecesitas ayuda quizas puedas probar a mandar algun email al creador de este emulador de gameboy: http://bgb.bircd.org/
Para mi es el mejor emulador de gameboy que he probado. la emulación es a mi parecer perfecta.
Lo malo es que es solo para windows, pero consume muy pocos recursos. creo que puede funcionar en un 386/486 a fullspeed.
Por eso supongo que quzás pueda responderte a alguna duda que tengas.
SplinterGU
09/08/2011, 15:36
esta bien el articulo de la instruccion LD, pero te faltaron los registros I, R, SP, PC, IX e IY y sus registros simples Ix, iX, Iy e iY (por lo general estos ultimos no documentados, pero factibles en los z80)
< - >
echale un ojo a este link http://es.wikipedia.org/wiki/Zilog_Z80 te puede ser util
deimian86
09/08/2011, 16:25
Me alegro que te gustara, los registros IX e IY parece ser que no existen en GameBoy, existen en el Z80 pero no en la versión que usa GameBoy (que tampoco tiene los registros sombra A', H', F'...) SP y PC son registros de 16bits, así que las instrucciones que trabajan con ellos son las de carga de 16bits, las tocare más adelante, aún así me faltan todavía unas cuantas instrucciones LD por comentar, para otra entrada.
Al principio habia leido que el Z80 de GameBoy era similar al de Zilog pero fabricado por Sharp, pero lo cierto es que a pesar de que son muy parecidos el de GameBoy es una versión bastante, pero bastante simplificada.
Los registros I y R supongo que si que existen pero las instrucciones LD no trabajan directamente con ellos son registros para interrupciones y cosas asi, todavia no tengo ni idea de como funcionan las interrupciones en GameBoy.
Estoy siguiendo estas tres fuentes, echales un vistazo que son geniales:
http://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html
http://verhoeven272.nl/cgi-bin/FSgz?fruttenboel%2FGameboy&Fruttenboel+GameBoy&GBtop&pandocs&GBcontent
http://www.zilog.com/docs/z80/um0080.pdf
deimian86
31/08/2011, 21:51
Me podeis ayudar un poco con la ultima entrada?
http://blog.deimian86.com/?p=144
La parte IV del juego de instrucciones, la última de las instrucciones LD HL, (SP+e) es exclusiva de GameBoy, no existe en Z80, como estoy siguiendo el manual de usuario del Z80 para documentarme sobre las instrucciones en esta no la quiero cagar y contar una mentira xD si alguien que sepa bien me puede confirmar que la instrucción funciona asi. Mi duda es sobretodo si la instruccion modifica el valor de SP (que la logica me dice casi al 100% que no, pero no lo he encontrado escrito en ningun lado).
Me podeis ayudar un poco con la ultima entrada?
http://blog.deimian86.com/?p=144
La parte IV del juego de instrucciones, la última de las instrucciones LD HL, (SP+e) es exclusiva de GameBoy, no existe en Z80, como estoy siguiendo el manual de usuario del Z80 para documentarme sobre las instrucciones en esta no la quiero cagar y contar una mentira xD si alguien que sepa bien me puede confirmar que la instrucción funciona asi. Mi duda es sobretodo si la instruccion modifica el valor de SP (que la logica me dice casi al 100% que no, pero no lo he encontrado escrito en ningun lado).
Está genial explicada, y efectivamente SP no se ve modificado por la instrucción. El resto de cosas, flags modificados, etc, está todo correcto :-)
Cuando tengas dudas, echale un vistazo a los Pan Docs...
http://gbdev.gg8.se/wiki/articles/Pan_Docs
En la sección de instrucciones(aritmetico/logicas de 16 bit), ahi la tienes:
ld HL,SP+dd | F8 | 12 | 00hc | HL = SP +/- dd ;dd is 8bit signed number
mnemonico, opcode, ciclos, flags (znhc), y funcionamiento.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.