Title: Compilando Juegos Para La Gba
Description: la programación para consolas es un caos
teri - March 26, 2006 07:23 PM (GMT)
Hola, ¿alguien me puede ayudar en la programación para GBA? Estoy intentando hacer el archivo ejecutable para la GBA, y tengo varias fuentes que son: la música, las gráficas y el código. Y no sé por donder empezar.... Aparte del archivo ejecutable me gustaría también obtener una ROM.
Por favor, ayudarme. Gracias de antemano.
Mewone - March 26, 2006 07:38 PM (GMT)
Si entendiera algo de esto supongo que te echaría una mano, pero es que no tengo ni idea :ph43r:
Shiyo - March 26, 2006 07:51 PM (GMT)
Yo tampoco entiendo a que se refiere.
¿quiere crear un emulador de gba? que liaso @_@
teri - March 27, 2006 01:33 PM (GMT)
Ante todo, daros las gracias por tratar de ayudarme. En primer lugar: No, no estoy haciendo un emulador de GBA, estoy tratando de hacer un juego para la GBA. Uno en formato binario para el procesador de la GBA (el ejecutable), y otro en formato ROM (también binario) pero para el emulador.
Mi objetivo es compilar tooooodas las fuentes del juego en un archivo binario. Y no sé por donde empezar....
Mewone - March 27, 2006 01:43 PM (GMT)
¿Has buscado información por el google? :huh:
teri - March 27, 2006 04:21 PM (GMT)
Sí y hasta he buscado la documentación en inglés y en español y nada. Pero hasta ahora he visto nada mas que usos de comandos fáciles que supestamente te lo hacen todo como el "make", pero nada. Las herramientas que he conseguido para compilar tienen el "make" ese pero...¡no me funcionan nada! Y veo que mi única alternativa es hacerlo todo a lo bestia.
Puyi me dijo que tenía alguien que sabe mucho del tema pero por ahora no tengo noticias de él. De todas forma estoy agradecido por vuestro interés en ayudarme.
En fin... no sé como se la habrán arreglado el resto de los novatos en esto de la programación para consolas....
Mewone - March 27, 2006 04:26 PM (GMT)
Weno, pues a ver si el amigo de Melkor aparece pronto y resuelve tus dudas ;)
Morfeo - March 27, 2006 05:37 PM (GMT)
Es que lo que tú quieres hacer casi nadie lo a hecho, almenos no tengo yo conocimiento de que alguien lo halla hecho. Por que xcrear un juego para GBA o el emulador desde CERO es algo mucho mas profundo, debes saber como esta programado por completo un juego normal o haber estado con los programadores de Nintendo para hacerlo.
Ademas las imagenes y demas datos no estan en Binario, estan en Hexadecimal.
Otra cosa es que mas bien lo que tu quieres hacer es un HackRom. Por que eso si se a hecho y se puede controlar por que ya estas partiendo de una base funcional. Lo único que se debe hacer es modificar mapas, algunos graficos, historia, eventos, personajes y dialogos. Algo que si es posible hacer en un nivel mas realista y sobre todo cuando se entiende como estan configurados en los ROMs originales.
Para eso si hay herramientas muy buenas que si las sabes usar puedes convertir por completo un juego de pokemon en otra casi irreconosible.
Thr41N - March 27, 2006 09:13 PM (GMT)
Buenas
Para desarrollar juegos para una videoconsola necesitas un SDK (Software Development Kit) que te proporciona el fabricante, en este caso Nintendo. Y ni es gratis ni barato (y tampoco creo que sea suficientemente popular como para que ande por ahí rulando una versión copia privada...)
Make es una herramienta para entornos UNIX que automatiza la compilación de programas, es decir, tu pones "make" y algún parámetro si hace falta, y siguiendo un guión va ejecutando el compilador con las opciones adecuadas para no tener que estar introduciendolo a mano. Vamos, que ahorra tiempo; pero en sí make no compila si no tienes el software adecuado (habitualmente se utiliza con gcc)
Y por cierto, si tienes el código, ¿qué lenguaje has usado? (no por nada, sólo que a mi tambien me interesa el tema :) )
Un saludo
teri - March 28, 2006 01:49 PM (GMT)
No, no quiero hacer un hack. Quiero hacer un juego de la GBA partiendo de cero, completo y funcional. Estoy utilizando el lenguaje C, que es el que mejor me sé y es muy versátil. Aunque también se puede utilizar C++ sin problemas (con esto no digo que C++ sea peor). Lo de decir binario es un término que lo he utilizado con una matiz: Obtener un archivo ejecutable para el procesador ARM, de 32-bits. Y no es necesario saber como está programado un juego completo o haber estado con la gente de Nintendo porque te aseguro que ya he mirado el hardware de la GBA y te digo que se puede hacer muchas cosas, pero llega a cierto punto en que ya, claro está, son imposibles.
Hacer un juego para la GBA es fácil, sólo te tienes que saber como funciona la GBA, saberte las direcciones de memoria, de qué forma vas a dirigir la entrada y salida de los datos, tener un concepto básico de cómo funciona un videojuego y ya está. Sobre las imágenes y "los demás datos" pueden estar en binario o en hexadecimal (aunque hexadecimal es una forma de abreviar el código binario) como los archivos .bmp o los .wav.
Para hacer un juego no hace falta un SDK, aunque los hay gratuitos y libres como el HAM. Aunque puedes obtener unas librerías para programar en la GBA y hacerlo todo a lo bruto en C, C++, incluso en ensamblador (¡¿quién se atrevería a hacerlo en ensamblador?!) y después ensamblarlo todo con un compilador específico para la arquitectura ARM, que es el que utiliza la GBA. Y así tienes el juego, el ejecutable.
También puedes hacerte las librerías propias para la GBA, pero es un trabajo difícil y largo porque tienes que anotar todos los registros de memorias y los flags que se utilizan en el hardware entre otras cosas.
Hay juegos que han hecho gente "partiendo cero" utilizando SDK gratuitos o lo han hecho a lo bruto. Nada de hacks.
http://www.gbadev.org/Tienen además código fuente de juegos propios originales para la GBA.
Mewone - March 28, 2006 02:21 PM (GMT)
Ahh síiii, ahora que lo dices sí que caigo :ph43r:
Shiyo - March 28, 2006 02:57 PM (GMT)
Pues que dificil es eso ._.
Es un liazo @_@
Thr41N - March 28, 2006 04:56 PM (GMT)
Vaya, no sabia que habia gente que haciendo juegos para GBA de manera "casera"
| QUOTE (teri) |
| Hacer un juego para la GBA es fácil, sólo te tienes que saber como funciona la GBA, saberte las direcciones de memoria, de qué forma vas a dirigir la entrada y salida de los datos, tener un concepto básico de cómo funciona un videojuego y ya está. |
Sí, si es facil :P
De todas formas, si conoces el procedimiento, ¿cual es exáctamente el problema por el que no puedes hacer el ejecutable?
Por cierto, si vas a publicar el código fuente de tu juego (cosa áltamente recomendable) me encantaría echarle un vistazo
Y en la web que has dado, no tienen nada en la sección de código fuente (no he mirado en los foros)
teri - March 28, 2006 07:31 PM (GMT)
Bueno, exactamente no es mi juego, estoy probando con los que vienen de ejemplo, me los miro. Aparte de eso también me leo los tutoriales y poco a poco tengo más idea del tema, aunque aún no tengo ni para empezar. Ahora mismo estoy intentando compilar las fuentes. Pero la GBA no es capaz de leer wavs ni bmps ni nada de nada. Tan solo sabe leer archivos .bin compilados específicamente para su procesador. Dichos archivos .bin son como, por decirlo de alguna manera, una recopilación de las gráficas, el código, las fuentes... que después han sido traducidas, compiladas, para el procesador de la GBA, el ARM. Y así es como disfrutamos de los juegos de GBA. En el caso de los emuladores es igualito el procedimiento para obtener el .bin ese pero en este caso obtenemos un archivo ROM legible por el emulador. Mi verdadero problema es en qué convertir las fuentes de imágenes y sonido, si a .raw, a .c o a .bin :unsure: y después en qué orden hay que hacerlo o cómo hacerlo para compilar junto con las fuentes y el código .c.
Oye Thr41N, ¿tú también eres aprendiz de programador?
Sobre las direcciones de memoria, espero que no te creas que se aprendan de memoria cosas como 0x001202h y cosas así. Dichas direcciones vienen ya definidas por las librerías con nombres sencillos y fáciles de aprender, por ejemplo: esta dirección 0x001202h se encarga de almacenar la entrada del...micrófono, por ejemplo, y tienen un nombre fácil de recordar, por una librería, como ENTRADA_MICROFONO. También te puedes crear la tuya propia, pero vamos...es largo y difícil...
¿Cómo que han quitado las fuentes? :shock: Pero... bueno... te aseguro que antes había, pocas, pero había.
En un futuro si que haré un juego para la GBA pero ya estoy ocupado en otro, y aún está en pañales.
Thr41N - March 29, 2006 01:12 PM (GMT)
| QUOTE (teri) |
| Oye Thr41N, ¿tú también eres aprendiz de programador? |
En realidad soy "aprendiz de ingeniero" (estudio ingenieria informática)
Respecto a lo de los nombres de variables, no hace falta una librería para darles nombres. Es decir, no me he mirado documentación para programar en GBA, pero sí he programado en ensamblador (para arquitectura PIC16F84) y sé que puedes asignar nombres a las direcciones de memoria (ejemplo: que T corresponda a 0x80). En las bibliotecas lo que suele venir son definiciones de macros y subrutinas para determinadas acciones, como leer desde los botones y cosas así (estoy hablando de ensamblador en todo momento)
¿Podrias darme un enlace a donde te bajaste el juego que intentas compilar?
Por cierto, si te interesa programar de manera "casera" para videoconsolas, quizá te interese más la
GP2X, que es una "videoconsola" (aunque más bien es un centro multimedia portátil) con SDK abierto y gratuito. No se si la conocias, por si acaso te lo comento como curiosidad
teri - March 30, 2006 12:46 PM (GMT)
En verdad me lo bajé de
ngine que es donde viene el HAM. Es una librería para programar específicamente para GBA. Si te bajas el kit, en mi caso para linux, te vienen una serie de ejemplos incluido el código fuente en c++ y en ensamblador, que es lo que estoy intentado hacer y me lo miro. ¡Ah! Te daré la página para que te mires las especificaciones técnicas, incluye la de NDS:
información sobre la GBA. Incluso incluye una referencia a la programación en ensamblador específico para ARM e incluso su "otro modo" que es THUMB.
Yo cuando saque mi bachiller haré el grado superior de programación :-D.
Y sobre la máquina... ¡¡Guau!! Eso no es una simple videoconsola, ¡es todo un centro multimedia (como decías antes)! ¡Y se puede programar en ella! Pues no, no lo conocía. Veo que también tiene el ARM9 como el de la GBA, pero tiene dos :-D. Increíble... ¿sabe su precio aquí en España? Lo que más me ha gustado es su doble núcleo.... Yo creo que el ARM es uno de los procesadores que más potencia y versátiles que hay, y lo mejor es que les basta unas simples pilas, aunque ignoro si los otros procesadores necesitan poca potencia como el ARM. Tiene 64 MB de SDRAM :-o, pero ¿cuánta memoria utiliza para el vídeo o los gráficos? Otra cosa que tiene es el sistema operativo Linux, yo no tengo ningún problema con este sistema (es más, a mi me parece excelente), pero hay que recordar que el sistema operativo es el que administra la memoria, al contrario que en una consola que le da una relativa libertad al programador para administrarla. ¿Se tendrá opción de administrarla a igual que una consola? Por favor, necesito saberlo.
Bueno, en resumen: me ha encantado. Creo que es la única máquina que no es de Nintendo que me quiero comprar....
Thr41N - March 30, 2006 01:22 PM (GMT)
Gracias por los enlaces. Le echaré un vistazo a la documentación cuando tenga un ratillo libre :)
La arquitectura ARM se lleva mucho en dispositivos portátiles, como móviles y todo éso; y por éso las videoconsolas portátiles tambien lo llevan
Respecto al doble procesador de la GP2X, tampoco te fies mucho, porque con el firmware actual que lleva sólo se aprovecha 1 de los dos procesadores. Pero vamos, se está trabajando en arreglar ésto. Lo malo es de la GP2X no tiene aceleración 3D, pero se está estudiando la posibilidad de que el 2º procesador (que como te he dicho, hasta ahora casi no se usa) se utilice como si fuera un procesador gráfico
Cuesta unos 180 €; aunque lo normal es que la compres junto a algún añadido como una funda y una tarjeta SD; por lo que acaba costando unos 200 € y pico. Ten en cuenta de que con ésta videconsola, gracias a su filosofía abierta, te ahorras el comprar juegos comerciales; ya que hay una gran cantidad de software libre y/o gratuito para ella. Vamos, que a la larga acaba saliendo más barata que otras. Tienes que pedirla por encargo, ya que aquí en España sólo se vende en 2 tiendas. Una está en Barcelona y la otra ahora mismo no me acuerdo (si vives por ahí, pues ya no tienes que encargarla XD); y tambien la puedes comprar por importación
Yo no la tengo, pero un amigo mio sí se la compró (la he visto personalmente) y está bastante chula. Hay varios emuladores portados para ella: de Neo Geo, de Game Boy, el MAME, y creo que se estaba trabajando en uno de PlayStation, por lo que todos los juegos de éstas videoconsolas los tienes disponibles. Luego tambien hay reproductores MP3, de video... Vamos, que hay una gran cantidad de software disponible para usar y trastear con ella ;)