Ver la versión completa : ¿Cómo programar un emulador?
Hola,
Pues tal y como indico en el topic me gustaría aprender cómo se hace un emulador. No tengo intención de hacer ningún bombazo ni nada similar, sería con fines meramente didácticos y según cómo sea la experiencia ya veremos si me da por hacer algo más serio...
A ver si me podeis pasar algunos enlaces a artículos, tutoriales o cosas sobre el tema para irme empapando.
Supongo que lo que mejor me vendría sería pillar el código fuente de algún emulador sencillote, que este en C, y empezar a toquitear. Recomendaciones y enlaces a sources son bienvenidas.
Muchas gracias ^_^
no tengo mucha idea de hacer emuladores, pero te puedo guiar un poco.
Lo primero es decidir que máquina deseas emular;
luego toca averiguar que hardware tiene y como funciona internamente;
una vez tienes el esquema y los datos, tienes que programar el emulador "chip por chip"; es decir, crearte un programa que emule las funciones de los chips; vamos, que si un chip tiene 6 patillas pues tu te haces una funcion que tenga 6 parámetros de entrada/salida, y que actúe igual que el chip. Una vez eres capaz de emular los chips uno a uno debes hacer que se relacionen de la misma manera que si estuviesen conectados en la placa original.
Una vez hecho todo esto debes cargar la rom en memoria y leer sus datos para que el programa que has hecho los interprete y de un flujo de salída correcto y bien interpretado. Después de esto, debes coger los datos procesados darles la forma adecuada... debes convertir esos ceros y unos procesados que tanto te ha costado conseguir en imágenes y/o sonidos y eso tambien lo necesitas programar, pero esta parte depende de la plataforma que vayas a utilizar.
Espero haberte sido de ayuda en lugar de haberte liado más (que me parece que es lo que he hecho).
Edit: Y ante todo, Bienvenido a ésta, nuestra comunidad...
GpMame (para GP32): http://www.talfi.net/gp32_franxis/
LitleJohn (NES), OpenSnex9X (para GP32): http://yoyofr.fr.st/
VisualBoyAdvance (i386 y multiplataforma): http://sourceforge.net/project/showfiles.php?group_id=63889
Supongo que con esto ya tendrás por donde empezar :)
Wenas!
En muchos sitios te recomendaran que empieces con un emulador sencillo de 8 bits, como x ejemplo de GB, ke lleva un Z80 ligeramente modificado. La GB es probablemente la consola mas documentada (no oficialmente, claro) a nivel de hardware debido a su sencillez, y podras encontrar documentacion sobre el juego de instrucciones, interrupciones, accesos a memoria, lectura/escritura en cartuchos, etc.
En este (http://fms.komkon.org/EMUL8/HOWTO.html) genial articulo tienes los principios basicos a tener en cuenta y las principales tecnicas a usar en la emulacion: interprete, recompilacion dinamica/estatica, etc.
No se en ke lenguaje tienen pensado en hacer tus pinitos, xo yo tengo uno de GB empezado en C# (con Mono bajo Linux). Mas info en http://denibol.homelinux.org/proyectos/csgbe/ . Si kieres algo de codigo ponte en contacto conmigo, ke sta en GPL. Puede ke en C sea mas rapido, xo con orientacion a objetos yo creo ke keda mucho mas intuitivo y se entiende mejor.
Salu2
Licantropo
02/08/2005, 12:39
Buenas, el otro dia por casualidad encontre el informe de un proyecto de fin de carrera, que trata de como funcionan los emuladores y vienen tres emuladores de juegos de recre. No me lo he leido, pero tiene buena pinta. Me lo baje de www.marcianitos.org en la seccion de tutoriales, el link es este: http://telefonica.net/web/spaceinvaders/emulacion.zip. Espero que te sirva, ta luego.
No sé si será el mismo que ha colgado Licántropo, pero aquí tienes un emulador didáctico (SIDE, Space Invaders Didactic Emulator)
http://www.ascotti.org/programming/side/side.htm
Muchas gracias!
Me he bajado el código del little john para la GP32 y algunas cosas que he encontrado en SourceForge (entre ellas una libreria sencilla que emula el Z80).
Tenía casi seguro que lo más sencillo sería empezar mirando el código de algún emulador de GB (pero no de GBA como el VisualBoy Advance), así que despues de mirarme lo del tutorial del space invaders seguramente me meteré a hacer mi propio port del emulador de GB a GP32.
Ya iré avisando de los progresos y de las dudas que vaya teniendo en el proceso.
De todos modos estaría genial que alguien con experiencia en estos de los emuladores (y aqui hay unos cuantos fieras del tema) comentara cómo empezaron y explicaran al resto como empezar a hacer nuestros pinitos en el asunto, seguro que hay mucha gente interesada.
Mil zenkius!
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.