DESARROLLO SOFTWARE - Proyectos de DarkRyoga

1, 2, 3, 4, 5, 6
Estos chinos y sus juegos no licenciados. La verdad es que hay que reconocer que se curran ciertos juegos no licenciados. ¿cuando abirás el blog?
RapeCartridge escribió:Estos chinos y sus juegos no licenciados. La verdad es que hay que reconocer que se curran ciertos juegos no licenciados. ¿cuando abirás el blog?


Actualmente estoy preparando la página del blog. Cuando este terminada ya lo avisaré por aquí.

Saludos.
¿las ROMs de cartuchos multi-juegos funcionan en el emulador?
Aquí os traigo un nuevo video de mi emulador NES4J (emulador del sistema NES/FAMICOM) escrito integramente en lenguaje de programación JAVA. En este video podeis apreciar la emulación de los juegos Burai Fighter, Kirby´s Adventure, Mega Man 2 y Castlevania III.

http://www.youtube.com/watch?v=Vdv3ZGhuNP8

AirMaster escribió:¿las ROMs de cartuchos multi-juegos funcionan en el emulador?


Funcionan unas cuantas si. Date cuenta que los cartuchos multi-juegos implementan sus propios mappers y para que los emuladores puedan rular esas roms multi-juegos deben tener implementado el soporte para esos mappers. En el caso de este emulador le he metido soporte de momento para cartuchos multi-juegos 65-en-1, 4-en-1 y 2-en-1 más conocidos. En un futuro es posible que incremente la compatibilidad con otros mappers para cartuchos multi-juegos.

Saludos.
DarkRyoga escribió:
AirMaster escribió:¿las ROMs de cartuchos multi-juegos funcionan en el emulador?


Funcionan unas cuantas si. Date cuenta que los cartuchos multi-juegos implementan sus propios mappers y para que los emuladores puedan rular esas roms multi-juegos deben tener implementado el soporte para esos mappers. En el caso de este emulador le he metido soporte de momento para cartuchos multi-juegos 65-en-1, 4-en-1 y 2-en-1 más conocidos. En un futuro es posible que incremente la compatibilidad con otros mappers para cartuchos multi-juegos.

Saludos.


Genial, se nota que le has dado mucha caña al emulador. ¿este al igual que el GBC4J tiene soporte para partidas multijugador?
Aquí os traigo un nuevo video de mi emulador NES4J (emulador del sistema NES/FAMICOM) escrito integramente en lenguaje de programación JAVA. En este video podeis apreciar la emulación de los juegos Chouji Sentai JetMan, Blue Shadow, Shadow Warriors y Chip n`Dale: Rescue Rangers

NES4J-v.0.89-M1 - FAMICOM Emulator [JAVA] - Rev.b1 - Programmed By DarkRyoga (a.k.a. jduranmaster)

http://www.youtube.com/watch?v=8XTMDHt9Tu0

AirMaster escribió:Genial, se nota que le has dado mucha caña al emulador. ¿este al igual que el GBC4J tiene soporte para partidas multijugador?


Si, este emulador está pensado para soportar partidas a dos players (o los que soporte el juego, al igual que los emuladores GBC4J y GBA4J) mediante la conexión de "los emuladores clientes" al "emulador remoto" que haga de "servidor". Tengo que pendiente subir algún video mostrando el multiplayer de este emulador y de los emuladores GBC4J y GBA4J. Saludos.
Vuelvo de nuevo a la carga. En este caso os traigo un video de mi emulador GBC4J (emulador escrito en lenguaje de programación JAVA de los sistemas GameBoy y GameBoy Color) en el cual se puede apreciar la emulación de un juego de GameBoy Color. En este caso os traigo un video jugando al Zelda Link´s Awakening para GameBoy Color.

GBC4J-v.0.87: Zelda Link´s Awakening (GameBoy) :

http://www.youtube.com/watch?v=A-eWd-CWtjU
Vuelvo de nuevo a la carga. En este caso os traigo un video de mi emulador GBC4J (emulador escrito en lenguaje de programación JAVA de los sistemas GameBoy y GameBoy Color) en el cual se puede apreciar la emulación de un juego de GameBoy. En este caso os traigo un video jugando al Wario Land 2 para GameBoy.

GBC4J-v.0.87: WARIO LAND 2 (GameBoy) :

https://www.youtube.com/watch?v=jkTwrwqxB6M

kappa64 escribió:Como siempre sublime.


Gracias por echarle un vistazo al "material"...XD
Que bien se mueve ese Wario Land 2. El emulador es brutal.
Aquí os traigo un nuevo video de mi emulador NES4J (emulador del sistema NES/FAMICOM) escrito integramente en lenguaje de programación JAVA. En este video podeis apreciar la emulación de los juegos MegaMan 3, Shadow Warriors 2, CastleVania II, Adventure Island 2

NES4J-v.0.89-M1 - FAMICOM Emulator [JAVA] - Rev.b2 - Programmed By DarkRyoga (a.k.a. jduranmaster)

http://www.youtube.com/watch?v=-bIdIHktvEI
Brutal como siempre. Vaya calidad con la emulación. Este emulador tuyo de NES (y los otros también) están alcanzando cotas muy altas.
Muy currado. Los juegos que enseñas en este último video se emulan a la perfección. Me encantan los adventure island.
RapeCartridge escribió:Muy currado. Los juegos que enseñas en este último video se emulan a la perfección. Me encantan los adventure island.


Los adventure island son muy buenos juegos. Próximamente dejaré por aquí algunos videos nuevos de demostración y algo totalmente nuevo. Meintras tanto dejo por aquí otro video de prueba sobre el emulador NES4J. No deja de ser el primer video que deje en este hilo al respecto pero en calidad HD.

Emulador de NES/FAMICOM en Java - NES4J-v.0.89-M1 - Programmed By DarkRyoga - HD

https://www.youtube.com/watch?v=E0g12Pkoxd4
Gran trabajo como siempre. ¿conseguistes dar soporte al mapper sunsoft 5b en el emu de famicom?
Vi que un fulano se ha hecho un hack de uno de los cartuchos del KONAMI COLLECTION para GBC. ¿ese tipo de hacks funcionan en tú emulador de gameboy color o en el emulador de gameboy advance?
AirMaster escribió:Gran trabajo como siempre. ¿conseguistes dar soporte al mapper sunsoft 5b en el emu de famicom?


Ese es el mapper que usa el Mr.GIMMICK!. Ahora mismo tengo ese mapper implementado pero aún está incompleto.
Tienes que probar la rom del "Sir Ababol" de Mojon Twins. Es un juego homebrew para NES que salió no hace demasiado tiempo.
RapeCartridge escribió:Tienes que probar la rom del "Sir Ababol" de Mojon Twins. Es un juego homebrew para NES que salió no hace demasiado tiempo.


Esa rom la probe en el NES4J y funciona perfectamente al igual que otros juegos homebrew.
DarkRyoga escribió:
AirMaster escribió:Gran trabajo como siempre. ¿conseguistes dar soporte al mapper sunsoft 5b en el emu de famicom?


Ese es el mapper que usa el Mr.GIMMICK!. Ahora mismo tengo ese mapper implementado pero aún está incompleto.


Ok. Recuerdo que en el caso de gameboy llegaron a aparecer algunos cartuchos especiales que llevaban sensores como aquel del kirby. ¿Ese tipo de juegos son emulables en tu emulador de GameBoy/GameBoy Color?
AirMaster escribió:
DarkRyoga escribió:
AirMaster escribió:Gran trabajo como siempre. ¿conseguistes dar soporte al mapper sunsoft 5b en el emu de famicom?


Ese es el mapper que usa el Mr.GIMMICK!. Ahora mismo tengo ese mapper implementado pero aún está incompleto.


Ok. Recuerdo que en el caso de gameboy llegaron a aparecer algunos cartuchos especiales que llevaban sensores como aquel del kirby. ¿Ese tipo de juegos son emulables en tu emulador de GameBoy/GameBoy Color?


En ese tipo de juegos normalmente lo que se hace es aplicar una especie de parche que lo que hace es emular el uso de esos "sensores especiales" que llevaban los cartuchos. Pasa por ejemplo con juegos como Wario Twisted o Boktai de GBA...que son títulos que llevaban sensores basados en mercurio y fotodiodos respectivamente y que para ser emulables la "scene" se curró unos parches para los juegos de tal forma que el emulador podía "simular" el efecto de los sensores.

En el caso del juego de kirby que comentas (creo que es el juego de pinball u otro similar), no he probado, pero con el parche adecuado seguramente funcione.
ACTUALIZACIÓN:

Os traigo dos nuevos videos demostrativos del emulador de GameBoy/GameBoy Color.

En el primer caso se trata del emulador rulando un juego de GameBoy...el BATTLE UNIT ZEOTH.

GBC4J-v-0.87-M1 - GameBoy Color Emulator [JAVA] - Battle Unit Zeoth [CARTRIDGE: ROM+MBC1]

https://www.youtube.com/watch?v=Fy1Hl95-I8g

...en el segundo caso se trata de un juego de GameBOY Color, el RESIDENT EVIL de GBC que fué dumpeado hace relativamente poco (año y medio de así). En este último caso se trata de una ROM de 4 megas con lo que doy por finalizado el soporte para este tipo de juego (WARIO LAND 3, SHANTAE...) que además incluyen opciones de salvado de partidas y que a día de hoy son totalmente funcionales.

GBC4J-v-0.87-M1 - GameBoy Color Emulator [JAVA] - RESIDENT EVIL GameBoy Color [CART I BugFixed]

https://www.youtube.com/watch?v=vZKixAE7usU
Genial aportación, sobre todo el segundo video. Ganas de ver rulando un Wario Land 3 en ese pedazo de emulador que te estás currando.

Una pregunta, ¿has llegado a probar alguna rom de cartuchos multijuegos en tú emulador de gameboy color? ¿funcionan?
por que no subes el code de el emulador en java ,(personalmente no creo que alguien pueda trabajar solo en el codigo de un emulador solo el) mas bien tus videos son fake hasta no compilar no creer xd
ricnarv escribió:por que no subes el code de el emulador en java ,(personalmente no creo que alguien pueda trabajar solo en el codigo de un emulador solo el) mas bien tus videos son fake hasta no compilar no creer xd


Lo que crea un GUSANO que se ha registrado con una cuenta falsa a mi me la pela.

El código JAVA del trabajo que hago estará disponible cuando los proyectos estén acabados. Y efectivamente no crees que nadie pueda sacar estos proyectos adelante porque eres tan INÚTIL que nunca te has propuesto hacer nada por tú cuenta.

DAS PENA.
La cantidad de envidiosos que hay por el mundo es increible. Sigue con tu buen curro Ryoga y pasa de esta clase de basura. Yo disfruté en su día del emulador de VectreX que te curraste para GP2X WIZ y de otro software que has aportado a la escena.
ACTUALIZACIÓN - traigo dos nuevos videos donde pruebo la compatibilidad con los juegos que incluyen parche de color. En este caso son:

GBC4J-v-0.87-M1 - GameBoy Color Emulator - [JAVA] - SUPER MARIO LAND DX (V1.1) (Color Hack) [U]:
http://www.youtube.com/watch?v=dnGybgBLGn4

GBC4J-v-0.87-M1 - GameBoy Color Emulator - [JAVA] - SUPER MARIO LAND 2 DX (V1.1) (Color Hack) [U]:
http://www.youtube.com/watch?v=QpkAcCj6Irc

AirMaster escribió:Genial aportación, sobre todo el segundo video. Ganas de ver rulando un Wario Land 3 en ese pedazo de emulador que te estás currando.

Una pregunta, ¿has llegado a probar alguna rom de cartuchos multijuegos en tú emulador de gameboy color? ¿funcionan?


No he probado ninguna rom de cartuchos multijuegos de gb, pero si bastantes roms de juegos no licenciados chinos. Per ya que lo comentas puede ser una buena prueba.
ACTUALIZACIÓN:

GBC4J-v-0.87-M1 - GameBoy Color Emulator [JAVA] - PROBOTECTOR 2 [CARTRIDGE ROM+MBC1]:

http://www.youtube.com/watch?v=GhW-4lCQbmM

GBC4J-v-0.87-M1 - GameBoy Color Emulator [JAVA] - BURAI FIGHTER [CARTRIDGE ROM+MBC1]:

http://www.youtube.com/watch?v=9y2OcPy0qZs

GBC4J-v-0.87-M1 - GameBoy Color Emulator [JAVA] - KONAMI COLLECTION VOL.1 [CARTRIDGE ROM+MBC5]:

http://www.youtube.com/watch?v=-dKoLg38ni0
Así que al final los cartuchos multi-juegos si que funcionan en el emulador de gameboy. Los recopilatorios de konami son la caña.
Curioso hack del AKUMAJOU DENSETSU. Esta nueva actualización es más que nada para enseñar la compatibilidad del emulador con el mapper VRC6 de konami.

AKUMAJOU DENSETSU: Alucard Edition [ROMHACK] - NES4J-v.0.89-M1: FAMICOM Emulator [JAVA]:

https://www.youtube.com/watch?v=XmgpO1sUVq0

AirMaster escribió:Así que al final los cartuchos multi-juegos si que funcionan en el emulador de gameboy. Los recopilatorios de konami son la caña.


Si, es compatible. Me falta por arreglar un problemilla que tiene el emu con los cartuchos multi-juegos piratas.
Vaya pedazo de hack. El sonido brutal en este juego, la verdad es que no noto ninguna diferencia en el sonido que ofrece el emulador y la máquina real.
RapeCartridge escribió:Vaya pedazo de hack. El sonido brutal en este juego, la verdad es que no noto ninguna diferencia en el sonido que ofrece el emulador y la máquina real.


Para la emulación he usado bastante documentación y sobre todo he revisado mucho código de emuladores ya existentes ya que a día de hoy la mayoria de emuladores son capaces de emular a la perfección el chip de sonido de la NES/FAMICOM así como los canales extra que incluían algunos mappers que algunas third parties metian en los cartuchos de sus juegos.
DarkRyoga escribió:Si, es compatible. Me falta por arreglar un problemilla que tiene el emu con los cartuchos multi-juegos piratas.


Tengo entendido que algunos cartuchos piratas chinos para gameboy usando mappers de la familia MBC modificados. Lo mismo el problema viene de ahí.
Ahora mismo estoy corrigiendo parte del módulo de mappers del emulador GBC4J para que soporte algunos juegos piratas chinos que llevan mappers modificados (principalmente modificaciones de los mappers MBC1 y MBC5). Además me ha dado por probar algunos hacks curiosos que se ha sacado la retro-escena como por ejemplo el siguiente hack del konami cillection Vol 4 realizado por el usuario "TheDrakon":

GBC4J-v-0.87-M1 - GameBoy Color Emulator [JAVA] - KONAMI COLLECTION VOL.4 [ROMHACK]
https://www.youtube.com/watch?v=lW-Zm4sYz5k

AirMaster escribió:
DarkRyoga escribió:Si, es compatible. Me falta por arreglar un problemilla que tiene el emu con los cartuchos multi-juegos piratas.


Tengo entendido que algunos cartuchos piratas chinos para gameboy usando mappers de la familia MBC modificados. Lo mismo el problema viene de ahí.


Si, es lo que comentaba al principio, principalmente se trata de modificaciones en mappers como el MBC1 y el MBC5. Espero poder añadir ese soporte próximamente.

----------------------------------------------------------

Por otro lado abro un turno de pregunta para la gente que visita este hilo ya sea de forma asidua o no, acerca de varias cuestiones.

1- ¿Cómo veríais que usase este mismo hilo para hacer un cursillo de iniciación a la programación para GameBoy Advance? Principalmente quiero enfocarlo a utilizar los kits de desarrollo devkitAdv y devKitPro aunque no descarto hacer algo con el dragonBasic para GBA. Se trataría de ejemplos sencillos pero suficientes para que la peña pudiese hacer sus propios juegos básicos para esta plataforma.

2- Igualmente ¿veis con buenos ojos que use este mismo hilo para comentar los avances en el desarrollo del reproductor de videos para el coprocesador MSU-1 del SD2SNES? (la cosa sigue adelante y nunca ha estado parada ojo).

3- La parte de emulación no se vería parada, de hecho los proyectos que tengo ahora mismo abiertos (GBA4J, GBC4J y NES4J) seguirán para adelante. Al hilo de esto estoy preparando una pequeña sorpresa que será revelada en un par de meses. Se trata de un emulador totalmente nuevo desarrollado en lenguaje JAVA, pero a la hora de distribuirlo tengo la opción de entregarlo como un JAR o bien empaquetado en un .EXE mediante una herramienta de conversión ¿en este último caso como lo preferis? Lo digo porque hay gente que quizás tenga menos conocimientos y no sean de los de usar la linea de comandos java -jar.... y prefieran darle al icono del .EXE y a caminar.

Saludos.
Lo del cursillo de GBA se te agradecería enormemente. Hace años que lo deje y me quedo esa espinita.

Saludos.
A mi me parecería genial lo del tutorial para hacer juegos para la GBA, aunque sea muy básico. El resto de proyectos creo que tienen cabida perfectamente en este hilo.

Respecto al último punto yo soy de lo vagos que prefieren todo en un .exe aunque entiendo que si tiene que ser multiplataforma se distribuya también un jar para el resto de sistemas.
Gran iniciativa lo dle tutorial de programacion para GBA.
Yo veo estupendo que metas todos tus proyectos en el mismo hilo. A ver si se puede organizar para dividirlos en secciones Respecto a los tutoriales de gameboy advance creo que sería una pasada adquirir parte de ese conocimiento para hacer juegos sencillos para esa máquina.
Nas, Ryoga.

DarkRyoga escribió:1-

Imagino que lo suyo sería abrir hilo en el subforo de GBA. Ya si se wikifica para evitar que caiga en el olvido como un hilo de montón, pues mejor. Estas cosas eran lo que más me interesaban en un principio, pero al final entre la pereza y la torpeza a penas he tocado 2 cosas de tuto de MD de Lucho.

DarkRyoga escribió:2-

Digo yo que de momento ir informando por aquí y cuando esté publicado abres hilo en clásicas.

DarkRyoga escribió:3-

Pues no me hagas mucho caso pero me parece que cualquiera que tenga instalado el JAVA en su ordenador puede ejecutar los *.jar simplemente con doble click. Vamos, ahora mismo no sé pero juraría que yo he abierto programillas así y me han funcionado.

Saludos.
JSL escribió:
DarkRyoga escribió:3-

Pues no me hagas mucho caso pero me parece que cualquiera que tenga instalado el JAVA en su ordenador puede ejecutar los *.jar simplemente con doble click. Vamos, ahora mismo no sé pero juraría que yo he abierto programillas así y me han funcionado.


Eso que comentas no funcionaría con todas las distribuciones de JDK+JRE existentes. Sólo con las más modernas.
Castlevania II: Belmont´s Revenge AWESOME Edition es un hack del Castlevania II: Belmont´s Revenge de GB de toda la vida...aunque para ser más exactos, es un hack del KONAMI COLLECTION VOL 4 que ha sido modificado para "auto-arrancar" dicho cartucho multijuegos con la rom coloreada del Castlevania II: Belmont´s Revenge a la cual se le han aplicado algunos añadidos extras para mejorar algo la jugabilidad. El hack fué realizado por el usuario de YT "TheDrakon" y en este video enseño un poco del mismo rulando en el emulador GBC4J.

https://www.youtube.com/watch?v=8YTbTJKJ8ks

Respecto al tema de los tutoriales de programación de GB/GBC/GBA estoy preparando algunas cosas así que en las próximas semanas empezaré a traer algo de material
¡¡¡NUEVA ACTUALIZACIÓN!!!:

Este es el primer video grabado usando el nuevo emulador J_GB (versión avanzada del emulador GBC4J que incorpora la corrección de varios errores y nuevas funcionalidades) que emula los sistemas GameBoy y GameBoy Color. Una de las novedades de este emulador es su capacidad de aplicar esquemas de color a los juegos de GameBoy clásica al igual que se podía hacer con el Super Gameboy, una GameBoy Color o una GameBoy Advance cuando en ellas se introducía un cartucho de GameBoy clásica. Ahora mismo hay implementados 8 esquemas de colores diferentes (entre los que están incluidos el "verdoso" de la GameBoy tocha y otro por defecto en blanco y negro con escala de grises típico de los emuladores más conocidos). El esquema de colores utilizados en esta partida al Terminator 2: Judgement Day es el siguiente:

Background Plane Palette:0xFFFFFF40, 0xFF00C000, 0xFF008000, 0xFF004000
Sprite Plane Palette-1: 0xFFC0C0FF, 0xFF4040FF, 0xFF0000FF, 0xFF000080
Sprite Plane Palette-2: 0xFFFFFF40, 0xFFC0C000, 0xFFFF4040, 0xFF800000


TERMINATOR 2: Judgment Day (Custom Scheme Colors) - GameBoy Longplay - NO DEATH RUN (J_GB EMULATOR)
https://www.youtube.com/watch?v=ROnIw4fVS3s

Como comentaba más arriba he implementado 8 paletas de colores diferentes...otras pruebas que he llegado a realizar serían las dos siguientes:

Esta para el Castlevania II: Belmont´s Revenge...
Imagen

Y esta otra para el Kirby´s Dreamland, que no es más que una modificación del anterior, pero sacando el color rosa para el sprite de Kirby tal y como si se tratará del Kirby´s Adventure de NES

Background Plane Palette: 0xFFC0C0FF, 0xFF4040FF, 0xFF0000FF,0xFF000080.
Sprite Plane Palette-1: 0xFFFFC0C0,0xFFFF4040, 0xFFFF00FF,0xFFFF8080
Sprite Plane Palette-2: 0xFFFFFF40, 0xFFC0C000,0xFFFF4040, 0xFF800000


La segunda paleta dedicada a sprites (en el caso del Kirby) se corresponde con un tono amarillo que en el caso de este juego en concreto sólo se aprecia en los sprites parpadeantes (es decir no hay una separación clara entre sprites primarios y secundarios). En otros juegos que aparecieron a posteriori al lanzamiento del "Super GameBoy" está separación es clara y se puede apreciar perfectamente como los sprites secundarios adquieren en todo momento los esquemas de colores definidos en la "Sprite Plane Palette-2".

Imagen

PD: aún queda integrar el módulo para controlar el DEBUGGER en la GUI, pero ya está casi terminado.

tuviello escribió:Ansiosos estamos ;)


De momento estoy preparando dos entradas para este hilo dedicadas a la programación en GameBoy. En principio será todo usando el GBDK y alguna herramienta para manejar imágenes. Voy a intentar que en los posts todo quede lo mejor explicado posible para que a partir de los ejemplos la gente pueda seguir investigando por su cuenta. Cuando acabe con la parte de de gameboy que será un tutorial dividido 4 partes empezaré con el de GameBoy Advance que tiene bastante más chicha y que será más largo.

Saludos.
Fantástica actualización. El poder meter paletas de colores en los juegos de gameboy clásica es una opción que suele estar presente en la mayoría de emuladores conocidos como el VBA o el bgb. Con esta nueva funcionalidad el emulador gana bastante.
jduran, a ver cuando le metes soporte de super gameboy!!
enkonsierto escribió:jduran, a ver cuando le metes soporte de super gameboy!!


Es una funcionalidad que tengo aún pendiente de implementar. Los juegos SGB son perfectamente jugables pero el emulador no muestra el marco "custom" que los juegos preparados para este accesorio incluían.
Vaya pedazo de hilo he ido a descubrir. Me quito el sombrero. Lo seguiré con gran interés.
Ya estoy terminando las dos primeras entradas del mini-tutorial para empezar a programar para GameBoy. Tampoco lo quiero extender mucho ya que serán 3 entradas o así y luego me meteré con la programación en GameBoy Advance.
Seguiré con atención este hilo
Bueno, pues aquí empiezo con los tutoriales de programación que había prometido. Como dije en su día lo iba a centrar en realizar algún tipo de juego o juegos para GameBoy Advance, pero antes de eso me gustaría hacer un par de entradas centradas en GameBoy. Estos tutoriales para aprender a desarrollar algo en GameBoy no serán avanzados o al menos no pretendo que sean demasiado avanzados para que la gente se pierda, pero entiendo que pueden ser útiles para tomar contacto con el lenguaje de programación C que es el que de forma mayoritaria voy a usar más adelante en los tutoriales para GameBoy Advance (además de que para usar efectos más interesantes como el MODO 7 es el que usaré de forma predilecta pues los kit de desarrollo que permiten tener mejor control del hardware de la GBA están basados en este lenguaje), aunque es probable que haga algún pequeño tutorial usando el DragonBasic con el que es muy fácil empezar a programar juegos para GBA aunque con ciertos límites. Después de este peñazo de introducción vamos al lio.

TUTORIAL DE PROGRAMACIÓN PARA GAME BOY - PARTE #1

Antes de nada, una pequeña reseña acerca de la máquina para la que vamos a desarrollar. Las características técnicas de la GameBoy son las siguientes:

CPU: 8-bit Sharp LR35902 (Similar al Z80) a 4.19 MHz
8K de RAM principal
8K de Video RAM
2.6” LCD 160×144, 4 Tonos
Sonido estéreo, 4 Canales
Puerto serie (ext)
6V, 0.7A
90 mm x 148 x 32 mm



En esta primera entrada centrada en la programación para GameBoy he preparado un programa muy sencillo que ni si quiera es un juego pero va a servir como toma de contacto inicial. Para empezar en este tutorial y en posteriores (a no ser que diga lo contrario) voy a utilizar el GBDK (GameBoy Development Kit) el cual podeis descargar desde la siguiente URL: http://sourceforge.net/projects/gbdk/ (espero que los moderadores no tengan ningún inconveniente en que coloque aquí estos enlaces, si hay algún problema que por favor me lo notifiquen para modificar este post). Lo único que teneis que hacer es decargaros el instalable, instalarlo en algún directorio de vuestra unidad C: (o la unidad donde vayais a querer tener instalado el entorno) y posteriormente editar las variables de entorno de Windows para añadir el directorio "\bin" de tal forma que si habeis instalado el entorno de desarrollo en "C:\GBDK\bin" pues añadís tal cual dicha ruta en la variable PATH de windows (PANEL DE CONTROL -> SISTEMA -> OPCIONES AVANZADAS -> Variables De Entorno). Para escribir los programas no es necesario que os compliqueis la vida buscando un IDE potente como Eclipse o CodeBlocks y configurarlo para que tire del GBDK, simplemente con un editor de textos que reconozca y resalte la sintaxis C/C++ vale. Por ejemplo yo uso mucho NotePad++ y el Crimson Editor.

NOTA: antes de seguir leyendo os recomiendo que os leais algún tutorial básico de lenguaje C para entender al menos de forma básica algunas de las cosas que iré poniendo en este hilo aunque intentaré siempre ser lo más explícito posible, y por supuesto si teneis alguna duda me podeis preguntar en este mismo hilo que os contestaré dentro de mis posibilidades.

El programa como tal es un simple contador que cuenta números desde 1 hasta 90 y los muestra en la pantalla de la GameBoy. Como veis no me he roto demasiado la cabeza, pero como os decía anteriormente no quería que la primera entrada fuese excesivamente complicada. A continuación os dejo el código fuente del programa para que le echeis un vistazo:

programa.c

#include <gb/gb.h>
#include <stdio.h>

void main(){
   int howmuch;
   int counter;
   counter = 0;
   howmuch=90;
   
   printf("\n GAMEBOY C TUTORIAL");
        printf("\n-------------------\n");
        printf("\t\t\t\t(\\" "\\" "_/)\t\t\t\t\t(\\" "\\" "_/)\n");
   printf("\t\t\t\t(O.o)\t\t\t\t\t(O.o)\n");
   printf("\t\t\t\t(> <)\t\t\t\t\t(> <)\n");
   printf("-------------------\n");
   printf("PROGRAMMED BY RYOGA");
   printf("\n");
   printf("\nPress start to count to ninety\n");
   waitpad(J_START);
   do{
      counter++;
      printf("%d\n" ,counter);
   }while(counter<howmuch);

   printf("\nProgrammed by RYOGA\n");
}


Si no conoceis el lenguaje de programación de C es probable que todo lo anterior os suene un poco a chino.

Las dos primeras lineas empiezan con la palabra reservada del lenguaje "#include" que permite incluir en nuestro programa la definición de funciones externas que no estén declaradas en nuestro fichero "programa.c". El fichero gb.h tiene la declaración de un montón de funciones que hacen uso explícito del hardware de la gameboy (también incluye algunas funuciones auxiliares) y por otro lado stdio.h es el fichero que tiene la declaración de las funciones necesarias para manejar la entrada/salida y que en este ejemplo usaremos para mostrar por pantalla mensajes y textos. (stdio.h es un fichero muy utilizado fuera del desarrollo para GameBoy con la misma función que aquí, es decir, manejar la entrada/salida estándar como pueda ser la pantalla de un PC por ejemplo. El fichero stdio.h que usaremos aquí es una versión reducida adaptada para ser incluido en el GBDK).

El lenguaje de programación C es un lenguaje de programación funcional, es decir orientado a estructurar el código en funciones. En el programa anterior podeis apreciar que hay una única función declarada por el usuario, se trata de la función main() o función principal del programa dentro de la cual se incluyen todas las sentencias que en el caso de este programa son necesarias para generar el efecto esperado de contar desde 1 hasta 90. A continuación hay declaradas 2 variables de tipo "entero" o "int":

int howmuch;
int counter;
counter = 0;
howmuch=90;


howmuch es el límite máximo de cuenta que en este caso está inicializada a 90. Se podía haber declarado directamente como:

int howmuch = 90;


counter es el contador que vamos a utilizar para ir avanzando en el programa. Se podía haber declarado directamente como:

int counter = 0;


A continuación veis que hay varias llamadas a la función printf() incluida en stdio.h la cual vamos a utilizar para mostrar los siguientes textos con formato. El carácter "\n" es el retorno de carro equivalente a pulsar un INTRO, mientras que el carácter "\t" es la tabulación.


printf("\n GAMEBOY C TUTORIAL");
printf("\n-------------------\n");
printf("\t\t\t\t(\\" "\\" "_/)\t\t\t\t\t(\\" "\\" "_/)\n");
printf("\t\t\t\t(O.o)\t\t\t\t\t(O.o)\n");
printf("\t\t\t\t(> <)\t\t\t\t\t(> <)\n");
printf("-------------------\n");
printf("PROGRAMMED BY RYOGA");
printf("\n");
printf("\nPress start to count to ninety\n");



Ahora viene algo importante:
waitpad(J_START);


Esta función está incluida en gb.h y en este caso lo que hace es "bloquear" la ejecución del programa hasta que el usuario pulse el botón START de la consola. J_START es una constante que también está incluida en gb.h por lo que no es necesario que la declareis vosotros. En el gb.h están mapeados todos los botones de la GameBoy mediante códigos y los nombres de las constantes son los siguientes:

J_START
J_SELECT
J_B
J_A
J_DOWN
J_UP
J_LEFT
J_RIGHT


A continuación viene otra parte importante, un bucle.

       do{
      counter++;
      printf("%d\n" ,counter);
   }while(counter<howmuch);

   printf("\nProgrammed by RYOGA\n");


El búcle Do...While ejecuta siempre una primera vez las sentencias que tiene dentro y se vuelve a ejecutar las veces necesarias mientras se cumpla la condición "booleana" que está incluida en el while(). En este caso el bucle se mantiene mientras counter sea menor que howmuch. Dentro del búcle cada vez que se ejecutan las sentencias se incrementa en uno el valor de counter y se muestra por pantalla su valor junto con un retorno de carro, por tanto según avanza la ejecución del programa llegará un momento en que counter sea igual a 90 y ya no se cumpla la condición del while()... por lo que se saldrá del búcle y a continuación se ejecutará la llamada a la función printf() del final.

Una vez que tenemos nuestro fichero programa.c completo vamos a compilarlo para generar la ROM con extensión .gb. Para realizar esta operación yo lo que hago normalmente desde windows es crear un fichero .bat de proceso por lotes con las instrucciones que necesito, en este caso al ser el programa muy sencillo basta con añadir esto a nuestro fichero .bat (que debe estar en el mismo directorio que nuestro fichero programa.c):

lcc -o programa.gb programa.c


A continuación ejecutais la sentencia anterior ejecutando el fichero .bat y si todo ha ido correctamente debería aparecer en el mismo directorio donde teneis los fuentes y el .bat un fichero con extensión .gb de la ROM generada. Ahora sólo teneis que probarla en un emulador para ver que funciona correctamente. Si algo ha fallado, puede ser o bien que no tenies bien configurada la variable PATH en las variables de entorno o bien que si habeis copiado el código desde este post se haya metido algún carácter raro.

Bueno, pues esto es todo para la primera entrada de sobre esta temática. Espero que os haya quedado claro. Podeis hacer algún que otro ejercicio adicional para controlar el resto de botones de la consola, o que se muestren textos alternativos en función del botón del PAD pulsado y cosas así para ir practicando antes de la siguiente entrada.

Además os dejo todo el proceso anterior en formato video en el que se ve todo el proceso de codificación, compilación, prueba en emulador...y prueba en hardware real mediante flashcart, en este caso en una GBA SP.

GBDK: Game Boy C Programming - Counter To 90 [GAMEBOY HOMEBREW]
https://www.youtube.com/watch?v=iXYEmAc2buE

Saludos.
262 respuestas
1, 2, 3, 4, 5, 6