Ver la versión completa : Guia para crear un emulador?
Megacubo
07/03/2012, 02:23
Ya que muchos de nosotros siempre nos preguntamos cosas como "porque no se usa la GPU del caanoo" o "porque no arreglan la salida a tv" o "porque no soporta usb" y cosas similares me preguntaba por donde empezar para aprender a crear/mejorar emuladores? se que no es cosa facil y se que no voy a aprender en dos dias, pero si otro semejante a mi ya lo hizo no veo porque yo no, todos tenemos capacidades similares y si alguien ya entendio como crear emuladores no veo porque cualquier otra persona no podria. Podrian darme alguna buena guia de por donde empezar?
Ya que muchos de nosotros siempre nos preguntamos cosas como "porque no se usa la GPU del caanoo" o "porque no arreglan la salida a tv" o "porque no soporta usb" y cosas similares me preguntaba por donde empezar para aprender a crear/mejorar emuladores? se que no es cosa facil y se que no voy a aprender en dos dias, pero si otro semejante a mi ya lo hizo no veo porque yo no, todos tenemos capacidades similares y si alguien ya entendio como crear emuladores no veo porque cualquier otra persona no podria. Podrian darme alguna buena guia de por donde empezar?
Lo primero que tendrías que saber es programar, si quieres aprender a correr primero tienes que aprender a caminar. Crear un emulador lo veo casi imposible o tardarias años en aprender lo necesario... para portar o modificar algún emu pues tendras que coger el código fuente y ver que hace y que quieres cambiar...
Es algo bastante complicado si empiezas desde 0...
saucjedi
07/03/2012, 08:49
Ya que muchos de nosotros siempre nos preguntamos cosas como "porque no se usa la GPU del caanoo" o "porque no arreglan la salida a tv" o "porque no soporta usb" y cosas similares me preguntaba por donde empezar para aprender a crear/mejorar emuladores? se que no es cosa facil y se que no voy a aprender en dos dias, pero si otro semejante a mi ya lo hizo no veo porque yo no, todos tenemos capacidades similares y si alguien ya entendio como crear emuladores no veo porque cualquier otra persona no podria. Podrian darme alguna buena guia de por donde empezar?
Pero no los mismos estudios y no me refiero a tener tal o cual carrera, me refiero a estudios de verdad, a haberte pasado mucho tiempo estudiando la disciplina en concreto. En este caso como no sepas informática pero de nivel nivel, de la de verdad, crudo lo veo. Eso para empezar.
Y luego tienes que saber al ciclo de reloj lo que hace cada chip que compone la máquina que vas a emular... Vamos, que si haces un emulador de Chip8 ya puedes irte a casa contento. Suele ser gente que prácticamente no ocupa el tiempo libre en otro hobby que no sea la emulación.
No habia un tutorial que empezo a hacer Puck de su PFC?
Aiken
xD no sabes donde te metes jajajaj
Vaya forma de desanimar al chaval :lol:, pero tenéis razón en todo lo que le habéis dicho.
Yo llevo años programando y el tema de los emuladores lo veo tan complicado que ni me lo planteo.
:brindis::brindis:
Pues yo recuerdo, creo que aún lo tengo en el disco duro, un tutorial que hizo alguien, bueno en realidad era un proyecto de fin de carrera y era hacer un emulador desde cero de master system en lenguaje c++. Creo recordar que enseñaba a hacerlo desde cero sabiendo lenguaje c++ con una tutorial manual que hizo y lo colgo en internet.
Yo lo descargue, pero ya no me acuerdo de donde y seguramente aún lo tenga en el disco duro.
De todas formas este puede ser un buen punto de partida, al menos para hacerse una idea.
En cuanto lo enuentre en el disco duro, lo subo si quereís y creeís que puede ser de interes.
Un saludo.
cjv99.
saucjedi
07/03/2012, 12:10
Sí, mucho tutorial, pero estamos en las mismas... eso te servirá para entender cómo hacer uno de Master System. Si no tienes la base de conocimientos necesaria, enfrentarte a otra máquina con una arquitectura totalmente distinta, con chips radicalmente diferentes... y encima asumiendo que es para PC porque si encima lo haces para una consola como la Dingoo, GP2X... tienes que saber lo que estás haciendo. O eso, o tirar de SDL y similares, con lo cual la gente te llorará porque no soportas tal o cual cosa de la consola (realmente no eres tú, sino SDL quien no lo soporta).
Jaleos mil que solo se ven cuando comprendes a fondo el berenjenal. De precisión en la emulación ni hablo ya, que como no se ejecute todo de pvta madre y a full y con SuperFX y SuperShitSpecialChip, te van a poner a caer de un burro y a decir que tu emu es una m1erda.
Así son las cosas y así se las contamos.
< - >
Vaya forma de desanimar al chaval :lol:, pero tenéis razón en todo lo que le habéis dicho.
Yo llevo años programando y el tema de los emuladores lo veo tan complicado que ni me lo planteo.
:brindis::brindis:
Mejor desanimarle con la verdad que darle ánimos y hacerle perder el tiempo. Respecto a lo segundo, a hacer emuladores no se aprende porque sabes programar... saber programar se ASUME y encima se asume que sabes en plan coder full. Que luego la gente alucina cuando me ve hacer punteros a funciones en C... y eso es al ABC a poco que sepas algo de ensamblador.
Tampoco quiero parecer un derrotista pero mucha gente se lleva un disgusto cuando empieza a mirar estas cosas... requiere estudio y disciplina, los tutos aquí valen de poco... quizá para que des los primeros pasos, pero no mucho más.
GameMaster
07/03/2012, 12:15
De paso un tutorial para hacerse rico y otro para ligar
selecter25
07/03/2012, 12:24
Sí, mucho tutorial, pero estamos en las mismas... eso te servirá para entender cómo hacer uno de Master System. Si no tienes la base de conocimientos necesaria, enfrentarte a otra máquina con una arquitectura totalmente distinta, con chips radicalmente diferentes... y encima asumiendo que es para PC porque si encima lo haces para una consola como la Dingoo, GP2X... tienes que saber lo que estás haciendo. O eso, o tirar de SDL y similares, con lo cual la gente te llorará porque no soportas tal o cual cosa de la consola (realmente no eres tú, sino SDL quien no lo soporta).
Jaleos mil que solo se ven cuando comprendes a fondo el berenjenal. De precisión en la emulación ni hablo ya, que como no se ejecute todo de pvta madre y a full y con SuperFX y SuperShitSpecialChip, te van a poner a caer de un burro y a decir que tu emu es una m1erda.
Así son las cosas y así se las contamos.
< - >
Mejor desanimarle con la verdad que darle ánimos y hacerle perder el tiempo. Respecto a lo segundo, a hacer emuladores no se aprende porque sabes programar... saber programar se ASUME y encima se asume que sabes en plan coder full. Que luego la gente alucina cuando me ve hacer punteros a funciones en C... y eso es al ABC a poco que sepas algo de ensamblador.
Tampoco quiero parecer un derrotista pero mucha gente se lleva un disgusto cuando empieza a mirar estas cosas... requiere estudio y disciplina, los tutos aquí valen de poco... quizá para que des los primeros pasos, pero no mucho más.
Totalmente de acuerdo en todo, digamos que querer programar un emulador es a la programación como estudiar para cirujano, no podrás hacerlo sin tener medicina antes. Y para hacer medicina necesitas bachillerato, y para hacer bachillerato... pues así hasta aprender el abecedario.
El campo que maneja la programación es enoooooorme, y se necesitan demasiados conocimientos como para que un neófito saque algo en claro de esto, y los tutoriales "express" son engañabobos, es como si me dejan un avión de aerolíneas y me marcan la función de cada botón, seguramente acabe estrellándolo.
lo mejor es empezar cogiendo un emulador y haciendole pequeños cambios. Ir viendo para que sirve el codigo y esas cosas... No te servirá para aprender a hacer emuladores, pero si para empezar a aprender algo del lenguaje.
Yo no tenía ni idea de programar, y me puse a hacerle cosillas al Ohboy. El emulador en si casi no lo he tocado, pero he modificado el menu y añadido varias opciones, y tambien le puse una funcion para hacer un loadstate sin perder los saves normales (el codigo es igual que el del loadstate, pero sin la parte del codigo en la que lee el bloque de la SRAM)
Total: me ha servido para entretenerme, para hacer mas completo el emulador, y de paso he aprendido un poquillo de programacion, y algo de las funciones de SDL. No he aprendido como funciona el emulador en si, pero oye, menos da una piedra.
Asi que, si tienes tiempo y ganas, yo por lo menos probaría. Te hará falta consultar varias cosas en internet Yo tuve que andar consultando cada 2x3 una pagina que tenía una tabla con la simbología en C (no es lo mismo "=" que "==" por ejemplo, ni "int" o "char") y otra pagina sobre SDL que explicaba las funciones de SDL, los argumentos que usa cada funcion, etc...
Por desgracia no recuerdo ahora cuales eran las paginas.
Ahora bien, para mi lo mas dificil fue instalar los SDK y toolchains para poder compilar en windows, y el tema de los makefiles. Pero para el SDK y los toolchains hay tutoriales.
Neodreamer
07/03/2012, 14:09
@cjv99 el tutorial que tu dices, es el proyecto de carrera de Puck y esta puesto en su web por si no lo encuentras. Lo unico que no encuentro yo es el codigo fuente que esta bajo licencia gpl, segun el en la seccion de proyectos... pero yo no lo veo por ningun lado.
Tambien hay otro usuario que esta haciendo un emu de gameboy en java (para ver si luego lo porta a android) y esta poniendo en su blog paso a paso todo desde la lectura basica de un cartucho de gb gbcolor hasta el propio emu de todas las partes internas, z80, etc. Por ahora esta muy bien aunque me suena todo a chino.
Yo creo que a muchos les parecera dificl porque en mi opinion no solo hay que saber programar bastante bien, sino tambien controlar de electronica.
GameMaster
07/03/2012, 14:17
Sobretodo saber de ensamblador, y procesadores...
A ver, para hacer un emu las cosas van en orden:
0.- Aprende algebra de boole, logica combinacional y secuencial
1.- Aprender a programar como un machote pof (programacion orientada a funciones) y poo (programacion orientada a objetos). Es necesario DOMINIO TOTAL
2.- Aprender a usar SDL, directX, openGL o cualquier opcion similar.
3.- Hazte un juego currado (muy currado) para demostrar que controlas los puntos 1 y 2
4.- Estudia microprocesador/microcontrolador (por ejemplo el 8051): mapas de memoria, interrupciones, timers, mnemonicos, OPCODES, etc... DOMINIO TOTAL
5.- Estudiate otro micro, por ejemplo el Z80
Si has hecho todo esto, deberias tener una base para hacer tu propio emulador.
6.- Haz un interprete/emulador del micro que mas domines.
Date cuenta que, para hacer el emulador de una consola es mas dificil que hacer el de un micro, ya que normalmente se componen de varios microprocesadores que trabajan en paralelo, y que estos microprocesadores normalmente no estan documentados.
7.- Haz el emulador de una consola
8.- Integralo con SDL, para que se vea en pantalla y pueda ser controlado
9.- Sufre las iras de la comunidad porque el emu es regulero
10.- Mejora el emu, vuelve al paso 9
Chispun
deimian86
07/03/2012, 14:24
Es una buena respuesta la de Jurk, a parte yo diria que si lo que quieres es hacerlo para una consolita con Android o Linux lo hicieras en un lenguaje que sepas que se puede portar facilmente pero usando como base el PC ya que de primeras desarrollar para PC es más facil.
Puedes visitar mi blog, empece a hacer en Java un emulador de GameBoy y lo deje tirado apenas despues de un mes de trabajo, pero parece emulando a Puck en unos meses se va a convertir en un proyecto para Android y sera mi PFC, ya tengo director para Junio / Julio asi que lo retomare dentro de un tiempo si o si.
Es una buena respuesta la de Jurk, a parte yo diria que si lo que quieres es hacerlo para una consolita con Android o Linux lo hicieras en un lenguaje que sepas que se puede portar facilmente pero usando como base el PC ya que de primeras desarrollar para PC es más facil.
Puedes visitar mi blog, empece a hacer en Java un emulador de GameBoy y lo deje tirado apenas despues de un mes de trabajo, pero parece emulando a Puck en unos meses se va a convertir en un proyecto para Android y sera mi PFC, ya tengo director para Junio / Julio asi que lo retomare dentro de un tiempo si o si.
En mi humilde opinion,
Consola Linux ---> C++
Consola Android ----> java
@cjv99 el tutorial que tu dices, es el proyecto de carrera de Puck y esta puesto en su web por si no lo encuentras. Lo unico que no encuentro yo es el codigo fuente que esta bajo licencia gpl, segun el en la seccion de proyectos... pero yo no lo veo por ningun lado.
Tambien hay otro usuario que esta haciendo un emu de gameboy en java (para ver si luego lo porta a android) y esta poniendo en su blog paso a paso todo desde la lectura basica de un cartucho de gb gbcolor hasta el propio emu de todas las partes internas, z80, etc. Por ahora esta muy bien aunque me suena todo a chino.
Yo creo que a muchos les parecera dificl porque en mi opinion no solo hay que saber programar bastante bien, sino tambien controlar de electronica.
Efectivamente, creo que puede ser ese, pero no tenía ni idea del autor porque no me acordaba.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Y no puedo estar más de acuerdo con las opiniones de todos, es muy difícil hacer un emulador, el nivel de exigencia es el máximo para poder estar en condiciones de llevarlo a buen puerto.
Si bien es cierto que un tutorial por supuesto no va a ayudarte en nada, puede sevir para ser consciente del trabajo que conlleva y valorar aún más a las personas que lo hacen desinteresadamente.
Yo creo que en ese sentido si que puede ser beneficioso, para valorar el tiempo y esfuerzo que se invierte y su altísima dificultad y muy pocas personas son las que pueden afrontar un proyecto de esta magnitud.
Un saludo.
cjv99.
Y por supuesto que merecen total reconocimiento.
GameMaster
07/03/2012, 15:47
Ya que estamos recordaré mi emulador que empecé con Bennu xDD
http://forum.bennugd.org/index.php?topic=1284.0
No habia un tutorial que empezo a hacer Puck de su PFC?
Aiken
Pues yo recuerdo, creo que aún lo tengo en el disco duro, un tutorial que hizo alguien, bueno en realidad era un proyecto de fin de carrera
Te gane por la mano.
Aiken
saucjedi
07/03/2012, 16:10
Sobretodo saber de ensamblador, y procesadores...
Que no es otra cosa que saber informática. Que mucha gente cree que con usar el Word y el Facebook ya saben informática.
Que no es otra cosa que saber informática. Que mucha gente cree que con usar el Word y el Facebook ya saben informática.
"Curso IBM de programación. Si no sabes programar, no sabes informática."
pablomalaga
07/03/2012, 16:27
Las bases para programar un emulador:
http://www.sromero.org/wiki/spectrum/articulos/htprogemu
Como programar un emulador paso a paso de CHIP-8:(en C# pero se puede traducir a muchos lenguajes de manera sencilla):
http://darkn.romhackhispano.org/tutoriales/emuladorChip8/emulador1.htm
Tutorial para programar un emulador en C++ de master system(puede que sea de alguien del foro?,puck quiza?):
http://www.retrowip.com/2009/03/01/emulador-de-sega-master-system-en-c-espanol/
P.D: Primero tendrás que aprender a programar.
Efectivamente, es de Puck.
saucjedi
07/03/2012, 16:30
"Curso IBM de programación. Si no sabes programar, no sabes informática."
"Informático... ¡pero si no sabes programar!" xD
Te gane por la mano.
Aiken
Si tienes razón no me dí cuenta, es un problema el leer demasiado rápido.
----------------------
Esperemos que veamos algúna screenshot funcionando del emulador de bennugd y cuanto rendimiento se puede obtener.
cjv99.
Ya que estamos recordaré mi emulador que empecé con Bennu xDD
http://forum.bennugd.org/index.php?topic=1284.0
Pues ahí no pone que lo empezaste, si no que lo portaste desde div, que no es lo mismo..
_Seagal_
07/03/2012, 17:09
Ya que estamos recordaré mi emulador que empecé con Bennu xDD
http://forum.bennugd.org/index.php?topic=1284.0
XDDDD que fuerte me parece, JoseK soy yo! (o era!) xDDDD
el emu lo porté a div2 estando en la mili, aprovechando que estaba en oficinas con un pentium 133, madre mia, no hace tiempo ni nada.
Hace un par de años lo conseguí compilar para ... creo que no era para bennu, seria para fenix, pero no conseguí que funcionase del todo, ya buscaré los fuentes.
edit:
He encontrado fuentes y la versión 0.2, funciona en windows 7, pero nó en xp (o yo no lo he conseguido hacer rular). Que ilu.
http://www.mediafire.com/?4htqk1dhr59i610
Que manía con los emuladores, cuando lo que hacen falta son buenos juegos originales ...
GameMaster
07/03/2012, 19:35
Pues ahí no pone que lo empezaste, si no que lo portaste desde div, que no es lo mismo..
Apunta:
Nadie ha creado un emulador desde el cero. Todo emulador tiene algo incluido sacado de algun sitio por más pequeño que sea...
< - >
XDDDD que fuerte me parece, JoseK soy yo! (o era!) xDDDD
el emu lo porté a div2 estando en la mili, aprovechando que estaba en oficinas con un pentium 133, madre mia, no hace tiempo ni nada.
Hace un par de años lo conseguí compilar para ... creo que no era para bennu, seria para fenix, pero no conseguí que funcionase del todo, ya buscaré los fuentes.
edit:
He encontrado fuentes y la versión 0.2, funciona en windows 7, pero nó en xp (o yo no lo he conseguido hacer rular). Que ilu.
http://www.mediafire.com/?4htqk1dhr59i610
Que pequeño es el mundo!!!
Tambien lo portaste de un emu existente en c, concretamente:
Centipede Emulator 0.2
----------------------
by Ivan Mackintosh
Lo estaba pasando a Bennu (que es Fenix con lo cual tu codigo y el mio va ser curioso compararlo xD) y a otro div like, pero lo tengo abandonado hace bastante tiempo :brindis:
Si quieres retomarlo, lo podemos mirar, trabajar a medias en el, y discutir los detalles de los problemas que estaba teniendo...
Apunta:
Nadie ha creado un emulador desde el cero. Todo emulador tiene algo incluido sacado de algun sitio por más pequeño que sea...
< - >
Puck2099 por ejemplo, usuario de este foro. Y muchos más. Aunque muchos programadores mejoren y porten emuladores, alguien ha tenido que crearlos primero, y esa primera creación, sencilla no es. Toda la estructura del emulador, el cómo va a estar organizado, comunicación entre los distintos módulos que lo forman, el intérprete de opcodes, el sistema gráfico, etc....
GameMaster
07/03/2012, 19:54
Te equivocas, creo que tiene su tesis en su pagina donde puedes ver los detalles de su emu, si te refieres a su emu de master system...
Te equivocas, creo que tiene su tesis en su pagina donde puedes ver los detalles de su emu, si te refieres a su emu de master system...
Que me estás contando, si lo ha hecho desde cero él:
http://www.retrowip.com/2009/03/01/gsms-emulador-de-master-system-en-c/
Es que yo no le veo ni el sentido a esta conversación, te quieres llevar el mérito de haber hecho tu el emulador en bennu, cuando incluso ha posteado aquí el autor original que lo escribió en div..
GameMaster
07/03/2012, 20:18
Tio, a ver, en primer lugar me estas faltando al respeto, separa las cosas en primer lugar...
1 - Un emulador no se hace desde cero jamas, porque siempre dependes ni que sea de documentación sobre la maquina a emular, si haces por ejemplo un juego, no dependes de tantas cosas, igual con solo tu experiencia de jugador y programación te sobra para hacerlo....
2 - No metas mi emulador en medio del tema, en primer lugar nadie ha hablado de meritos, te he hablado de algun merito ?
Por otro lado si te les el link del emulador (que es el link que te paso del foro bennu), allí no pone que lo he hecho yo desde cero, vale, así que antes de apuntar el dedo mide las palabras para no ofender a nadie...
Y te lo vuelvo a repetir, el original era el de C, no el de DIV, y encima que incluso el de C era basado en algo...
Tio, a ver, en primer lugar me estas faltando al respeto, separa las cosas en primer lugar...
1 - Un emulador no se hace desde cero jamas, porque siempre dependes ni que sea de documentación sobre la maquina a emular, si haces por ejemplo un juego, no dependes de tantas cosas, igual con solo tu experiencia de jugador y programación te sobra para hacerlo....
2 - No metas mi emulador en medio del tema, en primer lugar nadie ha hablado de meritos, te he hablado de algun merito ?
Por otro lado si te les el link del emulador (que es el link que te paso del foro bennu), allí no pone que lo he hecho yo desde cero, vale, así que antes de apuntar el dedo mide las palabras para no ofender a nadie...
Y te lo vuelvo a repetir, el original era el de C, no el de DIV, y encima que incluso el de C era basado en algo...
Yo no te he insultado, así que no veo la ofensa, sólo he respondido a este comentario tuyo:
Ya que estamos recordaré mi emulador que empecé con Bennu xDD
http://forum.bennugd.org/index.php?topic=1284.0
Y mirar documentación no hace que el emulador esté ya empezado, la documentación es para aprender cómo funciona la máquina que quieres emular, pero la misión de hacerlo realidad, es sólo tuya (del programador se entiende)
Megacubo
07/03/2012, 20:52
lo mejor es empezar cogiendo un emulador y haciendole pequeños cambios. Ir viendo para que sirve el codigo y esas cosas... No te servirá para aprender a hacer emuladores, pero si para empezar a aprender algo del lenguaje.
Yo no tenía ni idea de programar, y me puse a hacerle cosillas al Ohboy. El emulador en si casi no lo he tocado, pero he modificado el menu y añadido varias opciones, y tambien le puse una funcion para hacer un loadstate sin perder los saves normales (el codigo es igual que el del loadstate, pero sin la parte del codigo en la que lee el bloque de la SRAM)
Total: me ha servido para entretenerme, para hacer mas completo el emulador, y de paso he aprendido un poquillo de programacion, y algo de las funciones de SDL. No he aprendido como funciona el emulador en si, pero oye, menos da una piedra.
Asi que, si tienes tiempo y ganas, yo por lo menos probaría. Te hará falta consultar varias cosas en internet Yo tuve que andar consultando cada 2x3 una pagina que tenía una tabla con la simbología en C (no es lo mismo "=" que "==" por ejemplo, ni "int" o "char") y otra pagina sobre SDL que explicaba las funciones de SDL, los argumentos que usa cada funcion, etc...
Por desgracia no recuerdo ahora cuales eran las paginas.
Ahora bien, para mi lo mas dificil fue instalar los SDK y toolchains para poder compilar en windows, y el tema de los makefiles. Pero para el SDK y los toolchains hay tutoriales.
Gracias por tu respuesta eres de los pocos que me ha dicho que es posible, casi todos los demás dicen "es cosa de eruditos".
¿Pero acaso caminar es cosa de eruditos? ¿hablar y escribir es cosa de eruditos? ¿leer es cosa de eruditos? todos aprendimos en algún momento a hacerlo, al igual que esa persona aprendió en algún momento como crear emuladores. Tendré que meterme en el tema a fondo e ir aprendiendo poco a poco como todos ya que "nadie nacemos sabiendo"
Querer hacer un emulador sin saber programar es como si le pides a un cirujano que te enseñe a hacer operaciones del corazón. Puedes encontrar información, pero sólo podrás asiminarla tras años de estudio. Incluso para un programador los emuladores son un tema duro, porque necesitas empollarte la máquina al detalle, bucear entre cientos de páginas de información técnica en inglés (información dirigida a ingenieros) y cada año surgen nuevas técnicas. En resumen, a tu pregunta de si es difícil mejorar tal emulador. Si, es difícil.
< - >
¿Pero acaso caminar es cosa de eruditos? ¿hablar y escribir es cosa de eruditos? ¿leer es cosa de eruditos? todos aprendimos en algún momento a hacerlo, al igual que esa persona aprendió en algún momento como crear emuladores. Tendré que meterme en el tema a fondo e ir aprendiendo poco a poco como todos ya que "nadie nacemos sabiendo"
Yo pienso que cada persona tiene unas capacidades y no todos valemos para hacerlo todo. Si fuera así no habría procesos de selección ni exámenes. Dicho esto, también te digo que nada es imposible. Pero el camino es ese: estudiar programación, estructuras de datos, arquitectura de ordenadores, programación orientada a objetos, sistemas operativos (linux) y programación de sistemas. La gente que quiere hacer esto hace unos estudios, para aprender de los que ya saben, los maestros. Pero cada uno es libre de aprender como quiera, aunque no es fácil.
_Seagal_
07/03/2012, 22:50
Que pequeño es el mundo!!!
Tambien lo portaste de un emu existente en c, concretamente:
Centipede Emulator 0.2
----------------------
by Ivan Mackintosh
Lo estaba pasando a Bennu (que es Fenix con lo cual tu codigo y el mio va ser curioso compararlo xD) y a otro div like, pero lo tengo abandonado hace bastante tiempo
Si quieres retomarlo, lo podemos mirar, trabajar a medias en el, y discutir los detalles de los problemas que estaba teniendo...
SI si, el mio era portado, de hecho me parece haberlo leido antes en el readme que puse con el emulador.
Pero vamos, que a mi me ha encantado ver que estabas intentando continuarlo, y tu tambien dejas claro en el otro foro que lo haces a partir de mi codigo asi que no veo el problema.
la mayor parte del codigo fuente la he perdido, recuerdo que se me fué la pinza y empezé a hacerlo para que se viera en modo 7 y cosas raras, pero esos fuentes no los encuentro.
tengo un portatil en casa de mi suegra donde puse el fenix y lo estuve compilando una tarde de domingo, cuando le heche el guante te paso el codigo fuente.
GameMaster
07/03/2012, 22:57
Jamas he hecho un port o juego en que no haga referencias a los anteriores autores.
De hecho tengo junto al emu el codigo del emu en C de Ivan, o sea, estaba continuando tu trabajo a partir del codigo original tal como lo estabas haciendo tu.
Pues cuando me lo pases revisaré el emu y veré si puedo avanzar con el, de hecho tu emulador fue el primer emu creado bajo DIV/Fenix, y mi adaptación el primer emu bajo Bennu y Gemix.
De hecho tengo aqui una captura sobre este ultimo, como podrás ver, tenia ya checkeo de las roms por si no se cargaban.
http://www.gp32spain.com/foros/attachment.php?attachmentid=25050&stc=1&d=1331157699
Gracias por tu respuesta eres de los pocos que me ha dicho que es posible, casi todos los demás dicen "es cosa de eruditos".
¿Pero acaso caminar es cosa de eruditos? ¿hablar y escribir es cosa de eruditos? ¿leer es cosa de eruditos? todos aprendimos en algún momento a hacerlo, al igual que esa persona aprendió en algún momento como crear emuladores. Tendré que meterme en el tema a fondo e ir aprendiendo poco a poco como todos ya que "nadie nacemos sabiendo"
creo que mi post no ha sido desalentador, te he comentado todo lo que hay que saber (como minimo), y en que orden (mas o menos) para poder hacer un emulador una consola.
Tecnicamente hablando no es un programa extremadamente dificil. Es necesario un buen parser para leer la rom, y un buen interprete/emulador. Es como hacer un navegador que interprete HTML, pero en bucle. Lo dificil es que lo que tu emulador calcula se ajuste a la realidad, es decir, que sea exacto, y ademas, que tenga un muy buen rendimiento (esto es lo verdaderamente jodido)
bitrider
07/03/2012, 23:46
Simplemente, si el chaval no quiere escuchar lo que decís dejadle que sufra en sus propias carnes. A veces es la única forma de aprender.
Como te han dicho necesitarás:
- un motón de conocimientos previos (programación, lógica, estructuras y electrónica).
- una gran voluntad y constancia (te llevará semanas o incluso meses de trabajo hasta tener resultados papables, si empiezas de cero).
- una personalidad fuerte y capaz de soportar que tu trabajo le costará mucho estar a la altura de lo que ya hay y difícilmente estará a la altura de lo que esperan los usuarios (todos te dirán que se puede hacer mejor).
Lo único que cabe es desearte la mejor de las suertes.
Admiro a la gente como ustedes que sabe programar y crear cosas grandiosas, siempre he querido hacer un videojuego, siento que tengo buenas ideas, pero siempre me estanco en el asunto de la programación, creo que cada persona nace apto para algo... en mi caso nací para el diseño artístico, pixeles y los elementos visuales.
BonesCollector
08/03/2012, 03:21
Al final todo se reduce a aprender programación en C/C++ . Aunque sea para poner un hola mundo en la pantalla o cualquier tontería, antes de correr y caminar, hay que gatear. A mi me desanima que solo encuentro tutoriales en ingles, y aunque entiendo el idioma, me desanima.
saucjedi
08/03/2012, 09:07
Apunta:
Nadie ha creado un emulador desde el cero. Todo emulador tiene algo incluido sacado de algun sitio por más pequeño que sea...
Esto es simple y llanamente mentira (o desconocimiento)... Al menos uno de NES, el primero que salió que era closed source se desarrolló desde cero, incluida la emulación del procesador principal, que sí se ha reutilizado mucho después cuando la liberó. Y habrá más ejemplos, sin duda alguna.
De todos modos comparar el hacer un emulador con portarlo... en fin...
< - >
1 - Un emulador no se hace desde cero jamas, porque siempre dependes ni que sea de documentación sobre la maquina a emular, si haces por ejemplo un juego, no dependes de tantas cosas, igual con solo tu experiencia de jugador y programación te sobra para hacerlo....
¿Sabes que hay emuladores de máquinas que nunca han existido? Afirmas las cosas con mucha rotundidad.
Nathrezim
08/03/2012, 09:10
Esto es simple y llanamente mentira (o desconocimiento)... Al menos uno de NES, el primero que salió que era closed source se desarrolló desde cero, incluida la emulación del procesador principal, que sí se ha reutilizado mucho después cuando la liberó. Y habrá más ejemplos, sin duda alguna.
De todos modos comparar el hacer un emulador con portarlo... en fin...
< - >
¿Sabes que hay emuladores de máquinas que nunca han existido? Afirmas las cosas con mucha rotundidad.
A ver, que no le entendeis. Lo que dice es que nadie hace un emulador de cero porque siempre se tira de una documentación. Con lo cual nadie ha programado nunca nada de cero, siempre se ha tirado de documentación previa. Este punto de vista es bastante absurdo pero lógicamente impecable, no se puede rebatir.
saucjedi
08/03/2012, 09:12
Gracias por tu respuesta eres de los pocos que me ha dicho que es posible, casi todos los demás dicen "es cosa de eruditos".
¿Pero acaso caminar es cosa de eruditos? ¿hablar y escribir es cosa de eruditos? ¿leer es cosa de eruditos? todos aprendimos en algún momento a hacerlo, al igual que esa persona aprendió en algún momento como crear emuladores. Tendré que meterme en el tema a fondo e ir aprendiendo poco a poco como todos ya que "nadie nacemos sabiendo"
Desoyes la voz de personas que ya lo han intentado antes que tú y que tienen mucha más formación en ese campo que tú (esto lo asumo a partir de tus palabras). Bien, con un par. Bueno ánimo y ponte con ello, seguro que lo consigues.
¿No será que te estamos aconsejando que te conviertas en erudito para poder hacerlo? En fin...
Ahora, si quieres modificar uno hecho... pero francamente, cambiarle el menú a un emulador no es modificar el emulador. Tiene su mérito, por supuesto, pero no es el emulador en sí que parecía lo que tú querías.
< - >
A ver, que no le entendeis. Lo que dice es que nadie hace un emulador de cero porque siempre se tira de una documentación. Con lo cual nadie ha programado nunca nada de cero, siempre se ha tirado de documentación previa. Este punto de vista es bastante absurdo pero lógicamente impecable, no se puede rebatir.
Es que esa documentación forma parte del proceso de desarrollo... la programación y el desarrollo de software sirve para resolver problemas, sean cálculos, modelos físicos o matemáticos, juegos, emuladores... lo que sea. Una parte ESENCIAL del proceso es la documentación.
Es como decir que nadie hace un programa de facturación desde cero porque las facturas ya existen antes... programar no es solo sentarse a codificar.
GameMaster
08/03/2012, 09:20
Esto es simple y llanamente mentira (o desconocimiento)... Al menos uno de NES, el primero que salió que era closed source se desarrolló desde cero, incluida la emulación del procesador principal, que sí se ha reutilizado mucho después cuando la liberó. Y habrá más ejemplos, sin duda alguna.
De todos modos comparar el hacer un emulador con portarlo... en fin...
< - >
¿Sabes que hay emuladores de máquinas que nunca han existido? Afirmas las cosas con mucha rotundidad.
Si me enfado te diré que ya nada en la actualidad se hace desde el cero, para eso te tendrias que picar todo el código maquina tu mismo....
Otra vez más insisto, dejad de poner cosas en mi boca, me has visto comparar lo que dices ? Enfin...
Tema encerrao :lol2:
saucjedi
08/03/2012, 09:35
Si me enfado te diré que ya nada en la actualidad se hace desde el cero, para eso te tendrias que picar todo el código maquina tu mismo....
Otra vez más insisto, dejad de poner cosas en mi boca, me has visto comparar lo que dices ? Enfin...
Tema encerrao :lol2:
Pero joer, no te cabrees. Yo lo único que te discuto es lo de cero... que ya sabemos que no se hace nada de cero, pero la primera frase que has dicho daba pie a pensar que habías hecho tú el emulador desde el principio (si no quieres decir de cero, pues no lo decimos). Vale que no es lo mismo hacer uno desde el principio que portarlo, pero el mérito de portarlo no te lo puede quitar nadie, que tampoco es una cosa sencilla de hacer. El que piensa que portar algo es compilar y ya está no tiene idea, también hay que saber lo que se está haciendo o aquello ni compila. De hecho, compilar es el principio... luego hay que hacer que funcione.
Y claro que ya nada se hace de cero, a menos que programes para máquinas muy viejas, por eso te decimos que cuando decimos de cero queremos decir que lo has empezado tú, no que partas de la nada absoluta.
GameMaster
08/03/2012, 09:51
No me cabreo, a ver yo he puesto mi link, cuando saco un juego tambien digo lo mismo (y creo que todos hacen igual), o sea, digo que he creado un juego, pero despues si lo miras pues este gráfico es ripado de aqui, la musica de allí, etc.
Yo creo que mas bien, os gusta cojer las palabras por las orejas e interpretarlas en el sentido que más picardia tenga xD
saucjedi
08/03/2012, 09:56
No me cabreo, a ver yo he puesto mi link, cuando saco un juego tambien digo lo mismo (y creo que todos hacen igual), o sea, digo que he creado un juego, pero despues si lo miras pues este gráfico es ripado de aqui, la musica de allí, etc.
Yo creo que mas bien, os gusta cojer las palabras por las orejas e interpretarlas en el sentido que más picardia tenga xD
Si yo no digo que lo hayas hecho a mala intención, pero tu primera frase... podía dar a entender que eras el autor original. De todos modos, yo no te he dicho nada hasta que has dicho lo de 'hacer desde cero' [wei]
¿Cómo se cogen las palabras por las orejas? ¿Las palabras tienen orejas?
Vale, me callo ya...
http://www.thefloatingisland.net/ken/2010/08/10/Yoda-Flame-war-begun.jpg
saucjedi
08/03/2012, 13:32
http://www.thefloatingisland.net/ken/2010/08/10/Yoda-Flame-war-begun.jpg
A este sí que le podemos coger de las orejas...
GameMaster
08/03/2012, 14:01
eso porque no le has visto el apendice xDDD
saucjedi
08/03/2012, 14:14
eso porque no le has visto el apendice xDDD
No, y prefiero seguir así.
GameMaster
08/03/2012, 15:15
Porque ?
saucjedi
08/03/2012, 16:27
Porque ?
La curiosidad mató al gato. No quiero que me mate a mí.
PS: Impresionante el offtopic, señores xD
eso porque no le has visto el apendice xDDD
No, y prefiero seguir así.
Porque ?
La curiosidad mató al gato.
Pareceis crios con el messenger. Iros a un hotel!!!
esperar que voy a por las palomitas...
saucjedi
09/03/2012, 08:36
Como si nunca hubiérais desviado un hilo... y si no lo habéis hecho, eso que os perdéis.
_Seagal_
09/03/2012, 10:19
Sr Gamemaster, te dejo aqui el ultimo codigo fuente que he encontrado del emulador que estaba portando a div en el 2000. Como dije, se me empezó a ir la pinza y empezé a ponerlo en modo 7 (por aquel entonces empezaban a estar de moda los emuladores que de alguna forma modificaban el juego original, habia uno de pacman en 3d, tambien aquel de spectrum que tenia graficos a 256 colores, y yo queria que el mio tambien fuera especial).
Aquí está el ejecutable, a traves de dosbox se puede ver sin complicarse la vida, la verdad que es muy resulton y me alucina las cosas que podia hacer hace 12 años sin tener ni **** idea de programar. Ahora que sé tampoco hago cosas mucho mejores.
http://www.mediafire.com/?5bal2bhpkwbb7wj
Y este es el codigo fuente, el último que he encontrado. Mejor que uses este, por lo menos para el 6502. Te he metido tambien el codigo de bennu (al final era bennu) que empezé a compilar esa tarde de domingo que dije antes del 2009. Compila, si pulsas 1 ves los caracteres, si pulsas 2 empieza la emulación, pero no tira ( esto el de bennu, el de div, si coges el div2 y lo compilas si que funciona, aunque los graficos salen todos amontonados en la parte izquierda de la pantalla, supongo que andaria haciendo pruebas de algo y por eso está un poco roto, pero vamos, que si lo compilas puedes ver que vá bien). a ver si tu lo arreglas. No creo que sea muy complicado.
Te he puesto el codigo de bennu mas que nada porque el bennu no acepta numeros hexadecimales y hice un programa con visual basic para convertirlos a decimales normales y corrientes, así no tienes que andar cambiando textos.
el que se llama 6502.prg es el de div y el c.prg es el de bennu, a pasarlo bien!
http://www.mediafire.com/?14d265wmxm9dx64
Juas, ni yo me atrevo a crear un emulador: nada más leer "hay que convertir los OPCODEs del micro emulado al del micro que lo va a reproducir" y ya me veo escribiendo código hasta el año de la salida del IPaad barato :D
Por eso, el camino más rápido es coger el emulador de los chips que use la máquina (que supongo que los hay) y hacer que se comuniquen, y ponerle una interfaz, pero veo gente con más experiencia que yo temblando cuando oyen la palabra "hilos" o "concurrencia", cosas que se usan día a día en lenguajes DIV-like, pero muuuuuuuuucho más simplificado.
No voy a ser yo el que diga que no se puede, porque suelo ser el primero que lo intenta :D pero aun le debo al lemon-boy cambiarle la configuración para el uso del reloj interno de la WIZ.
GameMaster
09/03/2012, 21:27
Sr Gamemaster, te dejo aqui el ultimo codigo fuente que he encontrado del emulador que estaba portando a div en el 2000. Como dije, se me empezó a ir la pinza y empezé a ponerlo en modo 7 (por aquel entonces empezaban a estar de moda los emuladores que de alguna forma modificaban el juego original, habia uno de pacman en 3d, tambien aquel de spectrum que tenia graficos a 256 colores, y yo queria que el mio tambien fuera especial).
Aquí está el ejecutable, a traves de dosbox se puede ver sin complicarse la vida, la verdad que es muy resulton y me alucina las cosas que podia hacer hace 12 años sin tener ni **** idea de programar. Ahora que sé tampoco hago cosas mucho mejores.
http://www.mediafire.com/?5bal2bhpkwbb7wj
Y este es el codigo fuente, el último que he encontrado. Mejor que uses este, por lo menos para el 6502. Te he metido tambien el codigo de bennu (al final era bennu) que empezé a compilar esa tarde de domingo que dije antes del 2009. Compila, si pulsas 1 ves los caracteres, si pulsas 2 empieza la emulación, pero no tira ( esto el de bennu, el de div, si coges el div2 y lo compilas si que funciona, aunque los graficos salen todos amontonados en la parte izquierda de la pantalla, supongo que andaria haciendo pruebas de algo y por eso está un poco roto, pero vamos, que si lo compilas puedes ver que vá bien). a ver si tu lo arreglas. No creo que sea muy complicado.
Te he puesto el codigo de bennu mas que nada porque el bennu no acepta numeros hexadecimales y hice un programa con visual basic para convertirlos a decimales normales y corrientes, así no tienes que andar cambiando textos.
el que se llama 6502.prg es el de div y el c.prg es el de bennu, a pasarlo bien!
http://www.mediafire.com/?14d265wmxm9dx64
Muchas gracias, te pongo la cabecera de la version que tenia, supuestamente era anterior a la que me envias ahora:
//6502 EMULATOR BY JOSEK!!!!!
//19.11.99 Hoy empiezo, hecha la presentaci¢n, el put y el get memory, unos procesos y la primera instrucci¢n...
//22.11.99 Acabado el emu del 6502! estoy demasiado cansado como para mezclarlo!
//23.11.99 Lo mezclo y... funciona!!!!!! a decir verdad funcionaba todo antes del emu,pero no me habia dad cuenta de un error...
// ya se pueden ver los caracteres!!!!!!!!!!!!!!!!! quitada la presentaci¢n...
//2.12.99 Ya estamos en diciembre, el mes en que se supone volveria a hablar con ella si no fuera por que el ultimo dia no podr‚ estar junto a ella...
// acabo de darme cuenta que el emulador del centi estaba preparado para el, y yo me he basado en uno general...
Cuando tenga tiempo y ganas compararé las versiones de Bennu, será curioso ver el camino que cada uno tomó al pasar de DIV a Bennu.
La version esta de DIV que tenia creo que no llegaba a emular completamente el juego, será interesante probar la nueva en el otro div like para windows.
Al final intentaré poner funcionando tanto la de Bennu como la otra
_Seagal_
10/03/2012, 03:00
Muchas gracias, te pongo la cabecera de la version que tenia, supuestamente era anterior a la que me envias ahora:
SI SI, esa es anterior, el prg de div (6502.prg) que te he puesto es una version de 4 o 5 meses despues, cuando ya era jugable y lo habia vuelto isometrico, lo que en este te he quitao la cabecera porque me daba verguenza xD.
Ya que muchos de nosotros siempre nos preguntamos cosas como "porque no se usa la GPU del caanoo" o "porque no arreglan la salida a tv" o "porque no soporta usb" y cosas similares me preguntaba por donde empezar para aprender a crear/mejorar emuladores? se que no es cosa facil y se que no voy a aprender en dos dias, pero si otro semejante a mi ya lo hizo no veo porque yo no, todos tenemos capacidades similares y si alguien ya entendio como crear emuladores no veo porque cualquier otra persona no podria. Podrian darme alguna buena guia de por donde empezar?
A ver, crear un emulador para Caano es muy sencillo.
Si quieres hacer un emu de PS3, por ejemplo, sólo tienes que tener en cuenta algunas cosillas.
#include ps3_lib.cc
GLOBAL graficos_ps3 sonido_ps3
BEGIN
set_mode ("1080p");
load_fpg ("graficos_ps3.fpg");
load_music ("sonido_ps3.mp3");
[...]
y luego pones un loop o algo así y está tirado
snork3ls
10/03/2012, 16:07
Yo he hecho alguno y lo primero es controlar la cpu, saber programarla en hexadecimal, el direccionamiento a memoria, mapeo de puertos y toda esa mierda.
Luego hay que pillarse la rom del sistema (hay mil libros y docs sobre las roms de todos los sistemas) para ver como controla los recursos.
El resto es ir conectando unas cosas con otras y pensar como lo haria la maquina. Algo realmente entretenido.
Luego intentas intercambiar tu cerebro por el de un mono y ya esta. JAJAJAJA!!!
No, es un poco lio pero si controlas de ensamblador y de diseño de sistemas solo requiere paciencia.
Pero lo del mono tambien es importante asi que ten muchos a mano por si acaso.
Megacubo
11/03/2012, 08:03
A ver, crear un emulador para Caano es muy sencillo.
Si quieres hacer un emu de PS3, por ejemplo, sólo tienes que tener en cuenta algunas cosillas.
#include ps3_lib.cc
GLOBAL graficos_ps3 sonido_ps3
BEGIN
set_mode ("1080p");
load_fpg ("graficos_ps3.fpg");
load_music ("sonido_ps3.mp3");
[...]
y luego pones un loop o algo así y está tirado
Yo he hecho alguno y lo primero es controlar la cpu, saber programarla en hexadecimal, el direccionamiento a memoria, mapeo de puertos y toda esa mierda.
Luego hay que pillarse la rom del sistema (hay mil libros y docs sobre las roms de todos los sistemas) para ver como controla los recursos.
El resto es ir conectando unas cosas con otras y pensar como lo haria la maquina. Algo realmente entretenido.
Luego intentas intercambiar tu cerebro por el de un mono y ya esta. JAJAJAJA!!!
No, es un poco lio pero si controlas de ensamblador y de diseño de sistemas solo requiere paciencia.
Pero lo del mono tambien es importante asi que ten muchos a mano por si acaso.
Claro esta que la mejor idea es llamar idiota a los demás ¿no?
Bueno discúlpenme dioses si los he ofendido, me arrepiento de mis pecados, pero soy imperfecto al igual que ustedes. Claro lo más divertido es molestar al que pregunta, gracias por su apoyo ;) espero reciban la misma respuesta el día que decidan preguntar por algo, de verdad lo deseo.
Luego no vayan a venirme diciendo que era coña porque eso ni ustedes se lo creen, una cosa es la coña y otra es el mal rollo tipo "yo soy el dios supremo y los demás son imbéciles, si preguntan algo eso los hace más imbéciles"
Listillos ¬L¬
no te preocupes, con el tiempo verás que este foro está lleno de trolls. Pero no son tan malos como parece, la mayoria no tienen mala intencion.
http://images.memegenerator.net/instances/280x280/9858418.jpg
Espero que te pueda servir de inspiración http://fms.komkon.org/EMUL8/ y más concretamente http://fms.komkon.org/EMUL8/HOWTO.html
bitrider
11/03/2012, 20:29
De la página que enlaza LTK666, Marat Fayzullin uno de los padres de la emulación:
Good knowledge of the chosen language is an absolute necessity for writing a working emulator, as it is quite complex project, and your code should be optimized to run as fast as possible. Computer emulation is definitely not one of the projects on which you learn a programming language.
Vamos lo que le ha dicho aquí la gente por activa y por pasiva. Si aún así creo que somos trolls, que intentamos desanimarle y que pretendemos que no llegue a alcanzar el conocimiento que le permita hacer lo que se propone (WTF?)... en fin, no hay más ciego que el que no quiere ver.
Espero que en la vida real no seas así, sino te va a ir muy mal.
Puck2099
11/03/2012, 21:46
@cjv99 el tutorial que tu dices, es el proyecto de carrera de Puck y esta puesto en su web por si no lo encuentras. Lo unico que no encuentro yo es el codigo fuente que esta bajo licencia gpl, segun el en la seccion de proyectos... pero yo no lo veo por ningun lado.
Al actualizar el wordpress se ve que he perdido unos cambios que hice en el tema y con él la sección de proyectos.
El fuente del emulador en cuestión está aquí:
http://www.retrowip.com/2009/03/01/gsms-emulador-de-master-system-en-c/
Saludos.
De la página que enlaza LTK666, Marat Fayzullin uno de los padres de la emulación:
Good knowledge of the chosen language is an absolute necessity for writing a working emulator, as it is quite complex project, and your code should be optimized to run as fast as possible. Computer emulation is definitely not one of the projects on which you learn a programming language.
Vamos lo que le ha dicho aquí la gente por activa y por pasiva. Si aún así creo que somos trolls, que intentamos desanimarle y que pretendemos que no llegue a alcanzar el conocimiento que le permita hacer lo que se propone (WTF?)... en fin, no hay más ciego que el que no quiere ver.
Espero que en la vida real no seas así, sino te va a ir muy mal.
Lo de trolls no iba a malas, tampoco es para ponerse asi...
Cuando decía trolls me refería a este post: http://www.gp32spain.com/foros/showpost.php?p=1386772&postcount=63
O a este: http://www.gp32spain.com/foros/showpost.php?p=1386905&postcount=65
Aun así, creo que coger el codigo fuente de algun emulador y cambiarle cosillas, puede ser una buena forma de aprender algo de programacion, e ir familiarizandose un poco con los emuladores. Y asi al menos, los resultados son mas satisfactorios que con un hello world.
Tiempo para desanimarse ya tendrá, pero no le desanimeis antes de empezar...
Megacubo
11/03/2012, 23:46
El problema que yo veo es que muchos aquí subestiman a los demás y se sobrestiman así mismos. Como dicen en mi pueblo "que se ponga el saco a quien le quede" si usted (quien este leyendo esto) se siente identificado... pues cada quien.
Yo por mi parte no me siento ni inferior ni superior a nadie se que soy capaz de aprender como todos los demás y también se que me va a costar trabajo y tendré muchos errores como los demás pero al menos lo intento y pregunto lo que desconozco, por absurdo que parezca. Cuando se sobre algún tema y me preguntan trato de ayudar, no como muchos que se ríen de los demás.
Gracias en especial a ti hi-ban tú si sabes ayudar a los demás sin burlas ni nada por el estilo :brindis:
O a este: http://www.gp32spain.com/foros/showpost.php?p=1386905&postcount=65
¿Qué tiene ese post de troll?
< - >
En verdad yo pienso que el único troll es el que ha abierto el hilo, un troll con clase eso sí, al menos está trolleando de forma inteligente.
megacubo, lo primero de todo es instalar el SDK/toolchain/etc...
Para qué maquina quieres programar?
Supongo que para caanoo. Usas Windows o Linux? (vale cualquiera)
Megacubo
12/03/2012, 02:37
Exacto quiero programar para la caanoo. Uso Windows 7 64-bit y también tengo una instalación de Ubuntu. Para configurar el SDK he usado este tutorial
http://www.gp32spain.com/foros/showthread.php?t=78315
solo que no he tenido mucho tiempo libre para cacharrear y no se si lo configure correctamente.
Con que logre arreglar la salida de tv en drpocketsnes y agregar soporte usb en ese emulador, ya me doy con un canto en los dientes. Muchas gracias por la ayuda
bitrider
12/03/2012, 07:44
Pues nada suerte, creo que empezar la casa por el tejado no es una buena opción.
Si has elegido de primeras el PockeSNES, decirte que no se lleva bien con el EABI. Asegurate de utilizar un toolchain con soporte para el old ABI.
saucjedi
12/03/2012, 08:32
Aun así, creo que coger el codigo fuente de algun emulador y cambiarle cosillas, puede ser una buena forma de aprender algo de programacion, e ir familiarizandose un poco con los emuladores. Y asi al menos, los resultados son mas satisfactorios que con un hello world.
Por supuesto, pero eso NO es lo que él ha dicho al principio. Eso es lo que le hemos aconsejado antes de que empezara a decir chorradas como lo de que la gente se sobreestima y subestima a los demás, cosa que aquí no ha hecho nadie o prácticamente nadie.
Viene a pedir consejo, no le gusta el que le dan y se pone a meterse con los que le aconsejan lo que hay, para acabar modificando un emulador que ya existe (que es precisamente lo que muchos le hemos aconsejado desde el principio... no partir de cero. Si quiere partir de cero ha de pasar por donde le hemos dicho).
Y lo de sobreestimar y subestimar de traca... con dos carreras relacionadas con esto a mis espaldas creo que tengo bastante conocimiento como para aconsejar a alguien que es obvio que parte sin ninguna idea, precisamente porque he andado por caminos que él aún no ha pisado. Si eso es sobreestimar/subestimar... con dos c0jones.
¿¿De verdad no os dais cuenta de que os está trolleando??
saucjedi
12/03/2012, 08:47
¿¿De verdad no os dais cuenta de que os está trolleando??
Hombre, sí y no... si su objetivo es que nos enfademos o algo... en mi caso no lo está consiguiendo.
Megacubo
12/03/2012, 09:05
Creo que se me a malinterpretado, en ningún momento he querido trollear. De hecho como se ve en el primer post de este hilo
Ya que muchos de nosotros siempre nos preguntamos cosas como "porque no se usa la GPU del caanoo" o "porque no arreglan la salida a tv" o "porque no soporta usb" y cosas similares me preguntaba por donde empezar para aprender a crear/mejorar emuladores?
Obviamente tengo que empezar desde cero, si logro aprender a mejorarlos seguro que con el tiempo aprendo a crearlos o al menos esa era mi idea ya me han dicho que no es tan fácil y les creo (pero tampoco lo creo imposible), lo que a mi me a parecido muy molesto/descortés son los post de Kiwiz y snork3ls si a alguien más le a quedado el saco pues no es mi culpa, jamas había apuntado con el dedo ni dicho nombres, si alguien se siente identificado yo no puedo hacer nada. Solo quería un poco de ayuda y orientación algunos me la han dado y otros solo se han burlado o me han criticado, dejo el tema por la paz porque no quiero que me digan troll :loco: al tratar de sacar mis dudas, si he ofendido a alguien pido disculpas, que haya paz
GameMaster
12/03/2012, 09:31
Yo creo que Kiwiz no lo ha hecho intencionalmente, lo digo porque hace tiempo me paso el codigo de un juego suyo y realmente el tio es un maquina! Con 2 o 3 lineas hace un programa completo! El tio hace magia o algo raro que no se explicar... Es el programador mas optimista que he visto...
Yo creo que Kiwiz no lo ha hecho intencionalmente, lo digo porque hace tiempo me paso el codigo de un juego suyo y realmente el tio es un maquina! Con 2 o 3 lineas hace un programa completo! El tio hace magia o algo raro que no se explicar... Es el programador mas optimista que he visto...
Gracias GameMaster :brindis:, tú sí que eres un máquina que ha aportado muchísimo a esta comunidad con tantos juegos y ports.
Sobre mi comentario anterior... no lo hacía a malas, es sólo que me hace gracia que un tío sin tener ni idea de programación se plantee programar/mejorar un emulador. Ya si eso a ver si le apetece programar un nuevo SO que mejore a Android y no se arrastre :quepalmo:.
Para saber si lo tienes configurado bien, prueba a crear un programa SDL con la plantilla y compilarlo. Te creará un esqueleto de programa para probar el compilador. Arreglar según que cosas que acceden al hardware es complicado, ya que tendrás que tratar con registros y direcciones de memoria. Es complejo, pero si tienes mucho tiempo y mucha paciencia aprenderás bastante.
Tambien puedes hacer como yo, es otra opcion diferente:
1- Te bajas el SDK oficial de Caanoo para Windows: http://dl.openhandhelds.org/cgi-bin/caanoo.cgi?0,0,0,0,15,577
Yo lo instalé en C:\SDKs\GPH_SDK (porque tambien tengo el de Dingoo, y asi los tengo ordenados, aunque vale cualquier lugar).
2- Luego instalas el Cygwin: http://cygwin.com/install.html
Sigue estas instrucciones para instalarlo:
First install cygwin by executing setup.exe.
- Click "Next".
- Select "Install from Internet", Click "Next".
- Set the install path to what you want, Select "All Users", Click "Next".
- Set the "Local Package Directory" to a subdirectory in your cygwin install path (e.g. c:\cygwin\downloads), Click "Next".
- Let the installer create the directory if it asks.
- Select the correct proxy settings (probably "Direct Connection") and click "Next".
- Wait for the mirror list to download.
- Select any mirror, if one doesn't work then select another, Click "Next".
- Wait for the package list to download.
- Select "Devel" in the package tree
- Toggle the package "make" (not "automake") to "install"
- Toggle the package "doxygen" to "install" (optional if you want documentation)
- Click "Next".
- Wait for the packages to download and install.
- Click "Finish", cygwin is now installed.
3- Ahora tendrás una carpeta, "c:\cygwin" Entra ahi y crea un nuevo documento de texto.
Escribe lo siguiente:
@echo off
C:
cd bin
SET TOOLS=/cygdrive/c/SDKs/GPH_SDK/tools/cross-eabi/bin
SET SDK_PATH=/cygdrive/c/SDKs/GPH_SDK
SET PATH=%PATH%;%TOOLS%/bin;%SDK_PATH%
bash --login -i
(Si te fijas, ahi está la ruta del toolchain. Como el mio está en "c:\SDKs\GPH_SDK", la ruta es "/cygdrive/c/SDKs/GPH_SDK/...")
y guardalo como "cygwin_caanoo.bat" (yo lo tengo así porque tambien tengo un "cygwin_dingoo" y para diferenciar)
4- Ahora, ejecutando "cygwin_caanoo.bat" se te abrirá una ventana con una linea de comandos.
Desde ahi puedes ir hasta la carpeta donde esté el source code y compilarlo usando el comando "make -B -f makefile.caanoo" (siempre que tengas un makefile.caanoo, claro).
Para programar yo uso el notepad+. No está nada mal, porque te pone colores en el código (siempre que sea un archivo C o C++) No me corrige los fallos como el codeblocks, pero estoy acostumbrado a ello (al compilar luego te dice en que lineas hay errores). Ademas no hace falta configurar nada, al contrario que con el codeblocks, pero eso si, los makefiles los tienes que hacer tu.
Quizas no sea la mejor opcion para empezar, ya que luego tienes que crear/modificar cada makefile (cambiar la ruta del toolchain, ya que cada uno lo tiene instalado segun sus gustos) para poder compilar, y a veces es un lio. Pero es otra opción, y es mas sencilla de instalar/configurar que lo del codeblocks.
GameMaster
12/03/2012, 14:05
No te compliques xD
http://compilr.com/c-compiler
No te compliques xD
http://compilr.com/c-compiler
pero con esto no puedes compilar para caanoo, verdad?
GameMaster
12/03/2012, 14:21
no me he registrado, a lo mejor lo tienen en la lista xD
Acabo de registrarme y no, no lo tienen. Hubiera sido demasiado pedir. XD
Tiene buena pinta, habrá que probarlo
Megacubo
12/03/2012, 19:59
Gracias hi-ban probare con tu metodo
Una cosa te digo de "mi metodo": para que cualquier cosa te compile, necesitarás hacer manualmente un makefile.
Si usas codeblocks y lo tienes bien configurado, como en el tutorial que seguiste, no necesitas hacer tu el makefile, porque te lo hace el.
A mi me costó un poco hacer los makefiles del ohboy, tuve que modificar los que ya venían para que me compilara (en mi equipo no tenía el toolchain/sdk instalado en el mismo sitio que lo tenía el que hizo los makefiles) Y te digo que es un poco lio.
Ahora bien, como habrás leido en el post de bitrider, tendrás problemas al compilar el pocketsnes, porque el toolchain de caanoo es EABI. No se donde hay algun toolchain con soporte para ABI. (en realidad no se cual es la diferencia entre ABI y EABI)
Lo unico que te garantizo con "mi metodo" es que el ohboy te compilará diréctamente, pero tienes que cambiar en el makefile la ruta del SDK_PATH por la ruta en la que tengas instalado el SDK de caanoo. ( C:/SDKs/GPH_SDK si lo instalas en el mismo lugar que yo)
OABI y EABI son dos métodos de generar código ejecutable. OABI (old ABI) lo soporta Wiz y la Caanoo supuestamente soporta ambos. Aunque la mayoría de toolchains de esta última usan EABI.
Pues yo recuerdo, creo que aún lo tengo en el disco duro, un tutorial que hizo alguien, bueno en realidad era un proyecto de fin de carrera y era hacer un emulador desde cero de master system en lenguaje c++. Creo recordar que enseñaba a hacerlo desde cero sabiendo lenguaje c++ con una tutorial manual que hizo y lo colgo en internet.
Yo lo descargue, pero ya no me acuerdo de donde y seguramente aún lo tenga en el disco duro.
De todas formas este puede ser un buen punto de partida, al menos para hacerse una idea.
En cuanto lo enuentre en el disco duro, lo subo si quereís y creeís que puede ser de interes.
Un saludo.
cjv99.
El tutorial era de Puck2099.
Hay un blog de un forero de aquí, que está haciendo un emulador de Gameboy en Java paso a paso y muy bien explicado. Ese es un buen punto de partida, porque es un lenguaje sencillo y una máquina de 8 bits muy conocida. Ahí se puede ver bien un emulador por dentro.
http://blog.deimian86.com/?p=10
Megacubo
14/03/2012, 20:49
Gracias le daré un vistazo
OABI y EABI son dos métodos de generar código ejecutable. OABI (old ABI) lo soporta Wiz y la Caanoo supuestamente soporta ambos. Aunque la mayoría de toolchains de esta última usan EABI.
Pues me parece que la Caanoo no soporta el OABI, y por eso tenemos los actuales problemas de compatibilidad.
De todas formas, hay tutoriales para hacer makefiles. Yo me he leido algunos y, no sería capaz de hacer uno, pero al menos sí de entenderlos (al menos, los que he visto, entre elos, el del código fuente de Bennu).
Pero vamos, que el makefile es para no escribir a mano los comandos GCC por cada fichero a compilar y luego el posterior enlace entre ellos.
bitrider
17/03/2012, 12:07
Drumpi, la Caanoo soporta pefectamente el OABI de hecho tanto el emu de megadrive de Notaz, como el PocketSNES 7.x están compilados para esa ABI. Yo comencé a utilizarlo después de que Notaz me lo dijese ya que tuve un montón de problemas con el EABI y las partes del PocketSNES que están escritas en ensamblador.
Utilizo el mismo toolchain para compilar para Caanoo y para Wiz. No, no es el oficial. Es el de
Open2x.
El único matiz: ha de estar todo compilado como -static ya que no puedes mezclar código OABI y EABI. No puedes enlazar las librerías que tiene el sistema (EABI) con un ejecutable creado para OABI.
A parte de esto tienes pequeñas diferencias de hardware entre Caanoo y Wiz que no se pueden resolver si no haces cambios en el código fuente y recompilas (controles, frecuencia CPU, pantalla).
Ah, oki doki. No siempre las nuevas librerías/códigos/compiladores son compatibles con lo anterior, y como ya se dijo y se demostró que los programas de WIZ no iban en Caanoo, pues lo daba por sentado.
Tiene sentido lo que comentas en la segunda parte, eso explica el por qué no funciona ninguno de los programas de WIZ en Caanoo.
De todas formas ¿Han salido unas toolchains de Open2X para Wiz/Caanoo? Eso voy a tener que mirarlo, porque en pasadas consolas, se conseguía mejor rendimiento y era más sencillo de instalar (incluso se podían usar sin instalación :D).
sergioandvar
08/10/2012, 08:09
Conclusión: A estudiar ingeniería de sistemas/programación
lo siento llegué tarde[wei5]
Este tema no me incumbe en nada, pero parece obvio que quien maneja este tipo de temas con profundidad es mas que un fan de la informática, para ser una especie de gurú. Seguramente quien quiera hacer emuladores es porque quiere dedicarse a ser programador.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.