PDA

Ver la versión completa : Documentación Emuladores/GP32



Javier_Belanche
24/04/2005, 19:48
Hola,
¿conocéis algún tutorial, Howtos o docs sobre el desarrollo de emuladores enfocados para la GP32?

Gracias

Malenko
25/04/2005, 00:29
Quieres emular la GP32 o hacer un emulador que funcione en la GP32? :loco:

kmkzk
25/04/2005, 00:48
Recuerdo que vi algun tutorial/documento sobre esto en la pagina de algun developer de gp32, pero no recuerdo ni quien ni donde :(
Puedes mirar la lista de developers en los foros de gp32x, o preguntar alli, a ver si alguien sabe.
suerte :)

Estopo
25/04/2005, 12:13
El caso es que para empezar me bajé el codigo fuente del fgb32, quería recompilarlo poniendo el emulador a 156mhz, pero soy incapaz
Me he bajado todos los tutoriales que he encontrado por la red, he instalado todo tipo de compiladores siguendo las instrucciones y nada ... siempre me dan errores de todo tipo.
Supongo que esto le ha sucedido a muchas personas que saben algo de programación pero que les resulta muy dificil crear el entorno de compilación apropiado para los códigos fuentes liberados.
Yo he pedido ayuda a varias personas y nadie ha conseguido compilarlo

Pues hay va mi pregunta:
¿Podriais los programadores realizar algún tutorial paso a paso de como compilar los emuladores que se liberan?
Por ejemplo el fgb32 lleva muucho tiempo liberado y a muchos nos gustaría que funcionara a 156mhz para que funcionara al 100%, o arreglar el problema que tienen los savestates que se pierden.
Sin embargo nadie ha sido capaz de hacerlo cuando ponerlo a 156mhz es cambiar unas pocas lineas.

Por este motivo os pido que si podeis expliqueis como podemos compilarlos, y si no es mucho pedir, a mí personalmente me gustaría mucho saber como habeis hecho los ports de los emuladores paso a paso
¿Quién sabe?, quizás con esa información muchos programadores se unirian a intentar crear ports de otros sistemas, o a mejorar algunos códigos ya liberados.

¡Gracias por las respuestas!

Javier_Belanche
25/04/2005, 21:47
Creo que me he explicado como el culo. Mi idea, por ejemplo, es querer escribir un emulador de la máquina X y portarla después a GP32 ¿cuál sería la estrategia a seguir? :)

Saludos,
Javier

neostalker
25/04/2005, 21:59
Pos ni idea, pero podrías escribirle un mail a Rlyeh, o a Franxis... quizá ellos puedan guiarte. Cuantos más genios de la programación tengamos en el mundo de la emulación, mejor :)

Estopo
25/04/2005, 23:02
Javier si te enteras de como hacerlo avísame que también estaría interesado en saber desde como funciona un emulador, hasta y sobre todo, como hacer luego el port para la GP32.

Por cierto, te aconsejo que mires el codigo del bacteria, emulador de Z80 de solo unos pocos kbs

Javier_Belanche
25/04/2005, 23:21
Javier si te enteras de como hacerlo avísame que también estaría interesado en saber desde como funciona un emulador, hasta y sobre todo, como hacer luego el port para la GP32.

Por cierto, te aconsejo que mires el codigo del bacteria, emulador de Z80 de solo unos pocos kbs

Veo que es el caminito a seguir, descargar uno ya hecho y portado a la GP32 y ponerme a estudiarlo. Luego buscar la máxima información de la máquina original. Aunque lo cierto es que parece que ya estén portadas la mayoría de máquinas a la GP32... ¿falta alguna?
Por cierto, ¿puedes pasarme el link del emulador Z80 del bacteria? Gracias

Javier

Malenko
26/04/2005, 00:32
Yo estaba preparando un tutorial un poco básico para programar un emulador. Las bases no son complicadas, lo complicado es programar ciertas partes. Básicamente tienes que crear con variables y arrays la estructura de la máquina a emular. Luego se trata de mediante un bucle infinito cojer el fichero con la ROM de la máquina y ejecutarlo, eso quiere decir leer byte a byte e interpretar el código máquina. Si la instrucción dice "mover al registro A el valor X", tu tendras que poner en la variable que simula al registro A el valor X. Lo complicado es cuando tienes que emular los puertos de e/s y cosas similares. Yo lo que empecé a hacer para aprender es bajarme el código de muchos emuladores y empezar a estudiarlos. Así aprenderas a hacer muchas optimizaciones y muchos truquitos.

D_Skywalk
26/04/2005, 09:36
Yo tengo que decir que personalmente lo importante para emular una maquina es que la conozcas bien, yo por ejemplo conocia mi CPC al dedillo, cosa que me ayudo a no morir en el intento de hacer el PituKa xD

Estoy haciendo una recopilacion de links interesantes para el no iniciado en la emulacion, ahora mismo aqui no los tengo todos y tengo pensados ponerlos en la web pero te dejo un par que seguro que te entretienen unos dias ;)

http://www.speccy.org/sromero/spectrum/articulos/htprogemu/
http://www.upv.es/protel/usr/jotego/ (este me lo envio un usuario del foro)

Un Saludo y espero que valgan para que vayas trasteando, por cierto lo mejor de la emulacion es PONERSE, sino te pones no empiezas xD

Estopo
26/04/2005, 11:25
Veo que es el caminito a seguir, descargar uno ya hecho y portado a la GP32 y ponerme a estudiarlo. Luego buscar la máxima información de la máquina original. Aunque lo cierto es que parece que ya estén portadas la mayoría de máquinas a la GP32... ¿falta alguna?
Por cierto, ¿puedes pasarme el link del emulador Z80 del bacteria? Gracias

Javier

Yo estoy intentando eso, primero portar algo a la GP32, aunque antes que hacer eso quería recompilar el fgb32 para que funcione a 156mhz ... pero no puedo :rolleyes:

De momento estoy mirando el bacteria http://www.speccy.org/bacteria/i.htm , no se si conseguiré algo o no, quizás todo quede en el intento, pero bueno, por intentarlo tampoco pasa nada, además si lo intentamos muchos, seguro que a alguno le sale :musico:
Quizás es el camino a que la scene de la GP32 no se quede estancada.
Suerte Javier y Thanks D_Skywalk por implicarte siendo ya un grande de la GPscene :brindis:

D_Skywalk
26/04/2005, 11:40
De momento estoy mirando el bacteria http://www.speccy.org/bacteria/i.htm , no se si conseguiré algo o no, quizás todo quede en el intento, pero bueno, por intentarlo tampoco pasa nada, además si lo intentamos muchos, seguro que a alguno le sale

El problema del Bacteria que aunque chiquitin esta en...



source.zip - Código fuente en ensamblador de la última versión del emulador.


Asi que un port directo, facil y para toda la familia esta algo mas que distante, hay otros proyectos de emuladores, o ports, mejor programados y/o mas simples. De todas formas por ahora huye de todo lo que tenga/huela a ASM...


Suerte Javier y Thanks D_Skywalk por implicarte siendo ya un grande de la GPscene :brindis:

Como he dicho ya varias veces me teneis en el IRC, si teneis dudas y os puedo y se ayudaros solo teneis que silvar ;)

Tuuuu siiiiiiilvame... tuuu siiiiiilvame
y ya voy! xDD
(Era algo asin creo xD)

Un Saludo ^^_

Bonk666
26/04/2005, 11:50
Aupa!

y chicos...se puede saber en qué máquinas estais pensando? :D

Aio!!

Estopo
26/04/2005, 19:42
El problema del Bacteria que aunque chiquitin esta en...



source.zip - Código fuente en ensamblador de la última versión del emulador.


Asi que un port directo, facil y para toda la familia esta algo mas que distante, hay otros proyectos de emuladores, o ports, mejor programados y/o mas simples. De todas formas por ahora huye de todo lo que tenga/huela a ASM...



Como he dicho ya varias veces me teneis en el IRC, si teneis dudas y os puedo y se ayudaros solo teneis que silvar ;)

Tuuuu siiiiiiilvame... tuuu siiiiiilvame
y ya voy! xDD
(Era algo asin creo xD)

Un Saludo ^^_

Ok, de momento dejo el ensamblador, es que me estaba volviendo chino con tantos MOV , PUSH y POPs :loco:
He estado mirando las páginas que has puesto en los pots, la verdad es que parece muy complicado, pero aún así voy a perder un poco de tiempo en el intento.

Mi idea es la de intentar portar un emulador, había pensado en este SMS Plus/SDL (http://membres.lycos.fr/cyxdown/smssdl/?) , no se si será una buena opción o no.
Pero antes de ello quería empezar por algo muucho mas sencillo (creo), algo asi como compilar el source code del SMS32, o del fgb32.
El del SMS32 lo he conseguido compilar con el ADS después de leerme la tira de tutoriales, pero a la hora de ejecutarlo no funciona por alguna razón, sólo reinicia la consola :shock:

¿Por cierto, en que canal del IRC te podemos ver?, gracias de nuevo por responder a los newnewnewnewnewbies :chupete:

:brindis:

D_Skywalk
26/04/2005, 23:32
Ok, de momento dejo el ensamblador, es que me estaba volviendo chino con tantos MOV , PUSH y POPs :loco:

Evidente, es que es un trabajo de chinos ese xD


He estado mirando las páginas que has puesto en los pots, la verdad es que parece muy complicado, pero aún así voy a perder un poco de tiempo en el intento.

Se trata que de ahi cojas la base para enfrentarte a tu primer Port y sepas que estas, mirando y tocando ;)


Mi idea es la de intentar portar un emulador, había pensado en este SMS Plus/SDL (http://membres.lycos.fr/cyxdown/smssdl/?) , no se si será una buena opción o no.

En mi opinion si, tienes muy buena documentacion de SDL y es relativamente facil modificar las llamadas a SDL para que usen funciones nativas de GP :)
Ya una vez tienes lo basico funcionando, lo demas es quizas lo peor que es optimizar, pero por ahora no te agobies con eso, contentate con poder leer la ROM/BIOS del sistema a emular y poco mas en principio ;)


Pero antes de ello quería empezar por algo muucho mas sencillo (creo), algo asi como compilar el source code del SMS32, o del fgb32.
El del SMS32 lo he conseguido compilar con el ADS después de leerme la tira de tutoriales, pero a la hora de ejecutarlo no funciona por alguna razón, sólo reinicia la consola :shock:

Ok, lo que tienes que hacer es ir poco a poco llamando a las funciones y ver en cual exactamente es donde reinicia. El reinicio puede venir de un buffer-overflow (que suele ser lo mas normal) o de que alguna funcion hara una llamada a bajo nivel y la hara mal... esto es una suposicion claro, pero compruebalo :D

Ten en cuenta que vas a necesitar muuucha paciencia para hechar a andar tanto code de GP32, como intentar empezar tu un port... Ya que normalmente los mas avezados solemos crearnos nuestro propio entorno de programacion, en el cual raramente las cosas compilan normalmente en otros.
Es como en una cocina cada uno usa la bateria con la que mas agusto esta ;)

Mi consejo es que empieces primero a trastear un poco la GP, hacer cualquier animacion de un muñequito, usar funciones graficas, de sonido... Una vez tengas estas pruebas, vete a por un Port o emulador que te guste.

Lo primero por lo que debes empezar es a caparlo por todos lados, es decir que tengas una version que aunque en pantalla no se vea nada, sea estable. A partir de ahi ve añadiendo funcionalidades graficas, de sonido, ficheros, etc...


¿Por cierto, en que canal del IRC te podemos ver?, gracias de nuevo por responder a los newnewnewnewnewbies :chupete:

En #gp32dev en el IRC-Hispano, y yo tambien fui newnewnewbie, tenemos a rlyeh de testigo xD

Un Saludo

Javier_Belanche
27/04/2005, 00:26
Hola de nuevo y gracias por la información. Lo cierto es que, antes de ponerse a emular una máquina, sea cual sea, y cómo se ha dicho, se ha de conocer al dedillo, aparte de tener nociones claras de computación y programación con lenguajes de nivel medio/alto como es C. Por otro lado, de emuladores hay tropezientos y los más conocidos ya están portados a la GP32. Aún así, pensaba en un "Yet Another..." y, cómo no, de mi primera máquina, la ZX Spectrum....! que sea dicho, hay código fuente disponible de varios proyectos, entre los cuales el Speccy, en sourceforge y que también son buen material de referencia y de estudio. Luego está la idea de inventarse una consola del pasado que nunca existió y hacer el emulador, pero eso es otra historia...

Saludos,
Javier

Anti
27/04/2005, 23:52
Ya que normalmente los mas avezados solemos crearnos nuestro propio entorno de programacion, en el cual raramente las cosas compilan normalmente en otros.
Es como en una cocina cada uno usa la bateria con la que mas agusto esta

Entonces cuando los programadores liberais el código fuente de un emulador, será extremadamente complicado que otro programador pueda seguir con ese trabajo,¿no?.

El del SMS32 lo he conseguido compilar con el ADS después de leerme la tira de tutoriales, pero a la hora de ejecutarlo no funciona por alguna razón, sólo reinicia la consola

¿Porque no pides el entorno de programación a su autor?, o pidele mejor que lo cuelgue en la red para que otro pueda continuar su trabajo, sino liberar los códigos fuentes de los programas de la GP32 es lo mismo que no hacerlo si luego resulta imposible compilarlos y eso sólo llevará a que los programas se estanquen.
Creo que el SMS32 podria llegar a ser un buen emulador si lo continuara otra persona, a ver si lo consigues.

Y lo mismo con el fgb32, a 156mhz quizas iria bien, y de paso podrias mirar lo de salvar las partidas que toca mucho la moral cuando se pierden.
Lo que pasa es que estamos en lo mismo, tienes el código fuente pero no te sirve de nada ya que compilar algo de otra persona resulta imposible si no cuelgan o especifican como crear un entorno para compilar y continuar con ese trabajo :S

Espero que consiguas algo, y que te ayuden mucho con ese emulador de SMS que no estaria nada mal tener otro donde elegir :saltando:
SUERTE

Aiken
28/04/2005, 01:54
estaría interesado en saber desde como funciona un emulador, hasta y sobre todo, como hacer luego el port para la GP32.



y por que hay que "portarlo luego" para la Gp32? digo yo que puedes programarlo para gp32 directamente no? ;)

Aiken

D_Skywalk
28/04/2005, 08:52
Entonces cuando los programadores liberais el código fuente de un emulador, será extremadamente complicado que otro programador pueda seguir con ese trabajo,¿no?.

No, extremadamente no, lo que no va a ser es llegar y besar el santo xD
En programacion basicamente de eso te puedes ir olvidando, que la generacion XP estais muy mal acostumbraos :p

Ademas yo libere PituKa con TODO lo necesario, necesitariais aparte el MiniSDK y luego pues tiraros un par de dias arreglando warnings y errores que os den por vuestra version del compilador, creo que mi version de gcc era la 3.4.3 :?

Vamos que poderse hacer se puede, pero como todo necesitas tiempo, paciencia y saber los errores que te da para poder solucionarlos ;)

Un Saludo

Anti
29/04/2005, 00:44
No, extremadamente no, lo que no va a ser es llegar y besar el santo xD
En programacion basicamente de eso te puedes ir olvidando, que la generacion XP estais muy mal acostumbraos :p

Ademas yo libere PituKa con TODO lo necesario, necesitariais aparte el MiniSDK y luego pues tiraros un par de dias arreglando warnings y errores que os den por vuestra version del compilador, creo que mi version de gcc era la 3.4.3 :?

Vamos que poderse hacer se puede, pero como todo necesitas tiempo, paciencia y saber los errores que te da para poder solucionarlos ;)

Un Saludo

Lo de generación XP es verdad :rolleyes: , yo llevo estudiando desde hace 3 años programación, java y algo de C++, y me encuentro con el problema que soy totalmente incapaz de entenderme con el entorno de programación de la GP32.
He probado de todo y a compilar casi todos los códigos fuentes que se han liberado de emuladores a los que me gustaría retocar algo (como el fgb32 para que funcione a 166mhz), y el resultado es siempre el mismo.
Ya no es sólo cuestión de ir probando, sino que si compilas con una versión diferente o cualquier otra cosa ya no funciona. Eso sumado a que la gran mayoria supongo que nos han enseñado a programar bajo un IDE de windows, vemos que no podemos hacer nada (o por lo menos ese es mi caso particular).
Aún así no creo que fuera capaz de hacer un port de un emulador, creo que es demasiado complicado :shock:

Estopo suerte con el intento de portar ese emulador, a ver si lo consigues y nos das un buen emulador :musico:

Saludos :brindis:

Javier_Belanche
29/04/2005, 20:18
Lo de generación XP es verdad :rolleyes: , yo llevo estudiando desde hace 3 años programación, java y algo de C++, y me encuentro con el problema que soy totalmente incapaz de entenderme con el entorno de programación de la GP32.
He probado de todo y a compilar casi todos los códigos fuentes que se han liberado de emuladores a los que me gustaría retocar algo (como el fgb32 para que funcione a 166mhz), y el resultado es siempre el mismo.
Ya no es sólo cuestión de ir probando, sino que si compilas con una versión diferente o cualquier otra cosa ya no funciona. Eso sumado a que la gran mayoria supongo que nos han enseñado a programar bajo un IDE de windows, vemos que no podemos hacer nada (o por lo menos ese es mi caso particular).
Aún así no creo que fuera capaz de hacer un port de un emulador, creo que es demasiado complicado :shock:

Estopo suerte con el intento de portar ese emulador, a ver si lo consigues y nos das un buen emulador :musico:

Saludos :brindis:

Por suerte, los que estamos acostumbrados a compilar las fuentes, los entornos de desarrollo están la mar de bien preparados para trabajar sin problemas. Y joer, el gcc 3.4.x!!. Y bueno, volviendo a la pregunta ¿alguien se apunta a un bombardeo para aprender?

Saludos,
Javier

Bahamutt
30/04/2005, 05:19
Yo esque debo de ser muy vago pero en cuanto itento compilar algun codigo fuente y me da algun error lo dejo (tal vez sea por eso que no haya sacado aun nada para la gp32).

Anti
30/04/2005, 19:33
Yo esque debo de ser muy vago pero en cuanto itento compilar algun codigo fuente y me da algun error lo dejo (tal vez sea por eso que no haya sacado aun nada para la gp32).

A mí me pasa lo mismo, solo que lo intento una y otra vez, aunque no consigo nada y poco a poco pierdo las ganas :rolleyes:
A ver si alguien nos hecha una mano con un buen tutorial o algo asi :brindis: , .
Yo me apunto a un bombardeo para aprender si hace falta! :musico:

Estopo
12/05/2005, 23:16
Como puse en el foro, hace un tiempo que me he puesto a intentar portar algo... no espero que funcione a más del 1% :rolleyes: pero me conformaría con que llegara a cargar para empezar.

He intentado portar el SMS-sdl, pero no lo consiguo.
Pero creo que podria ser porque me pide la libreria ALLEGRO que después de mucho buscar creo que no existe para la GP32.
Como soy cabezon :loco: , voy a intentarlo de nuevo, a ver si consiguo hacer cargar en la GP el reminiscence 0.1.1

No se si alguien puede desaconsejarme este intento porque me resulta raro que no se haya portado ya a la GP.

Voy a ir comentando lo que hago para ver si alguien sabe me vaya hechando un cable si quiere :brindis: , seguro que cometo más fallos que aciertos, pero bueno... por intentarlo que no quede. Además si alguien quiere unirse a esta hazaña podriamos intentar portarlo entre todos.
Si alguien se anima aqui puede descargarse el codigo fuente (http://membres.lycos.fr/cyxdown/reminiscence/REminiscence-0.1.1.tar.bz2)

Comienzo a explicar lo que he hecho (seguro que un desastre :loco: )
1. Bajarme el ARM Developer Suite v1.2 , hay una version de prueba gratis.
2. Descargar las librerias SDL para GP32 que pone son necesarias para el reminiscence
3. Descargarme las librerias de la GP32
4. Instalarlo todo ... el ARM y descomprimir las librerias :rolleyes:

5. En las librerias de la GP32, hay una carperta llamada UNIDAD:\GP32\work\project\template\ads
He cambiado las opciones y los paths de las librerias para que coincidan con mi instalación , y he probado a compilar el proyecto.
De momento todo ha ido bien y se ha creado un fxe :saltando:

6. Ok, ahora llega lo complicado... :shock: , descomprimo el reminiscence y añado al proyecto una carpeta llamada REminiscence donde pongo los archivos del reminiscence uno a uno y compruebo que compile.
De momento compila con todos los archivos (pero da error de 'linkaje') excepto cuando se pone el archivo sdlstub.cpp que entonces da todo tipo de errores :shock:
El resultado es el que pongo en la imagen adjunta.

Bueno, ya iré intentando hacer algo más que mañana tengo que currar y es tarde :sobando: , a ver si alguien más se anima y entre todos conseguimos algo :brindis:

:arriba: GP32!

Anti
14/05/2005, 01:11
a ver si saco tiempo y lo intento tambien :saltando:

Javier_Belanche
14/05/2005, 14:45
Hola de nuevo,
he estado mirando documentación sobre la programación de un emulador y decir que:
a. se requiere tener un buen conocimiento de la máquina a emular a un nivel muy bajo.
b. conocimientos de un lenguaje de programación medio/alto, como puede ser C.

No cuento todavía el logro de portar el emulador a la GP32, pero supongo que los cambios se realizan en las librerías gráficas específicas (pensando en las SDK de mirko, por ejemplo) ya que el core del emulador puede ser el mismo...

En fin, seguiré estudiando...

Saludos,
Javier

Malenko
14/05/2005, 17:50
Precisamente los puntos a y b creo recordar que se comentaron al principio de este post como algo IMPRESCINDIBLE para hacer un buen emulador.

En cuanto a lo que se ha de cambiar para portar un emulador a la GP32, son las funciones que usa, para usar las de su SDK (o las de mirko si quieres) y supongo que habrá que optimizar un poco, ya que una GP32 no esta tan sobrada de recursos (velocidad y memoria) como lo esta un PC.