Archivos de etiquetas: ROM

BennVenn nuevo cartucho flash para Game Boy

BennVenn es un fanático de la Game Boy, como podéis ver en su web le encanta la programación y la ingeniería inversa. En lo que respecta a Game Boy a “destripado” el cartucho Shark MX, llegando a limites tan insospechados como extraer el boot, reprogramarlo o ampliarle la memoria. Después de la experiencia adquirida ha decidido desarrollar su propio cartucho flash, en palabras de propio Benn:

Mis cartuchos flash están disponibles en 64M, 128M y 256M con 128K, 256K y 512K de SRAM respectivamente,
están diseñados a partir de un MBC5 con un sistema avanzado de intercambio de la ROM. Cada cartucho se divide en bloques de 2mbyte, cada bloque tiene su propia memoria de 32K para salvar partidas. Esto significa que se dispone de 4 bancos en 64M, 8 en el 128 y 16 en el 256, esto no significa que el cartucho sólo pueda manejar 4, 8 o 16 ROMS, sólo que se reserva esa catidad de SRAM para ese bloque de la ROM. Puedes llenar todo el flash con la mayor cantidad de ROMs que puedan caber,seleccionando cada una en el arranque con mi menú de inicio personalizado.

Para volcar la ROM de un cartucho, y  gestionar SRAM tengo disponibles mi Lector/Grabador, este cuenta con una interfaz USB que se puede utilizar junto al cartucho Flash para, añadir y quitar ROMS y saves, funciona también con cualquier cartucho original  inclusive con la Game Boy Camera.

El cartucho cuenta con una gestión de energía muy buena. Utilizan una Flash SRAM de 3.3v ,y una lógica sin CPLD / FPGA el consumo actual es varias veces inferior que el resto de cartuchos flash actuales, incluso consume menos de un cartucho original de GB.

GBflash

Aunque pueda parecer un producto similar a muchos otros que ya existen en el mercado, nada mas lejos de la realidad, la posibilidad de poder dumpear cartuchos originales de Game Boy o extraer los saves incluyendo las fotos de la Game Boy Camera es un valor muy a tener en cuenta, incluso el precio es bastante competitivo.

GB Classic Flash Cart

Según ha declarado el autor, es posible que supere al EverdriveGb en compatibilidad al funcionar en el Transfer Pack de N64 y con algún otro tipo de homebrew, ya que si se graba un solo juego se comporta igual que un cartucho original de Game Boy.

Anuncios

BGB Game Boy Emulator

bgb

Nueva versión de uno de los mejores emuladores de Game Boy, BGB GameBoy Emulator. Para el que no lo conozca, estamos hablando de un COMPLETISIMO emulador y debuger, capaz de “trazear” instrucción a instrucción, todo lo que esta sucediendo dentro de la Game Boy mientras se ejecuta una rom.

Aquí todas las mejoras:

New in BGB 1.5

  • AVI writer
  • Greatly improved efficiency (about 10-30% faster, depending on the system)
  • Improved accuracy
  • Improved sound quality
  • Lower audio latency
  • Preview screenshots in select state window
  • Improvements to debugger, including selectable RGBDS or WLA assembler syntax, “ld d,d” debug messages, and editing the palette in the vram viewer.
  • Fixed a large number of bugs, including “alt+F4 loads state”, and “timing in LSDJ is unstable”

Y un enlace a la web del programador para descargarlo.

Si estáis programando algo en Game Boy y necesitáis testear y/o “debugear” vuestra propia rom, esta es la herramienta perfecta. También ayuda mucho a conocer como funciona la maquina o como se han programado ciertos juegos, así como el uso de paletas, tiles o la vram.

Lo dicho, una vez lo pruebes no podrás vivir sin él.

 

 

Cabecera de los cartuchos de Game Boy

Después de investigar como funciona el Nintendo Logo Check, me ha picado la curiosidad de como esta diseñada la estructura de una ROM/Cartucho de Game Boy.

??????????????????????

La parte mas interesante es la Cabecera de la ROM/Cartucho, este área esta definida entre las posiciones 0100 y 014F, recordemos que una vez se validaba el cartucho se saltaba a la dirección 0100 donde esta el programa principal del cartucho.

Inicio de Ejecución 0100-0103

Normalmente esta área de 4 bytes se rellena con instrucciones NOP (no hacer nada en ensamblador) seguida de un JP  0150h (salta a la dirección 0150 ).

Logo de Nintendo 0104-0133

En esta área se encuentra la imagen con el logo de Nintendo que se usa en el Nintendo Logo Check, como curiosidad si cambiamos el logo a partir de la byte 19h la Game Boy Color arrancara mostrando la mitad superior de logo cambiado y la inferior no, en cambio una Game Boy Pocket no funcionara ya que verifica todo el logotipo.

Titulo de Juego 0134-0143

Aquí se guarda en ASCII el titulo del juego en mayúsculas, si el tamaño es inferior a 16 caracteres se rellena con ceros, este espacio fue reducido en la Game Boy Color, es el titulo que habitualmente se muestra en lo emuladores, catalogadores cartuchos flash etc..

Código del Fabricante 013F-0142

Este área aparece en los juegos de Game Boy Color, recortando el Titulo del juego a 11 caracteres, supuestamente forma parte del control de fabricación por terceros.

Marca Game Boy Color 0143

En los cartuchos mas antiguos este campo también formaba parte de titulo. Esta marca se utiliza en los cartuchos para indicar si son compatibles con Game Boy Color, Game Boy o ambas. En el caso de ser compatibles con ambas e introducir el juego en un modelo monocromo se cancela la inicialización de paletas.

Nuevo Código de Licencia 0144-0145

Un código de dos caracteres ASCII que identifica al editor del juego, supuestamente forma parte del control de las licencias con las third party.

Marca Super Game Boy 0146

Especifica si el cartucho dispone de soporte para Super Game Boy, solo se activa el modo SGB si este byte contiene el valor 03h.

Tipo de Cartucho  0147

Identifica que tipo de Memory Bank Controller (MBC) usa el cartucho, si es que usa alguno y si dispone de algún tipo de hardware añadido.

  00h  ROM ONLY                 13h  MBC3+RAM+BATTERY
  01h  MBC1                     15h  MBC4
  02h  MBC1+RAM                 16h  MBC4+RAM
  03h  MBC1+RAM+BATTERY         17h  MBC4+RAM+BATTERY
  05h  MBC2                     19h  MBC5
  06h  MBC2+BATTERY             1Ah  MBC5+RAM
  08h  ROM+RAM                  1Bh  MBC5+RAM+BATTERY
  09h  ROM+RAM+BATTERY          1Ch  MBC5+RUMBLE
  0Bh  MMM01                    1Dh  MBC5+RUMBLE+RAM
  0Ch  MMM01+RAM                1Eh  MBC5+RUMBLE+RAM+BATTERY
  0Dh  MMM01+RAM+BATTERY        FCh  POCKET CAMERA
  0Fh  MBC3+TIMER+BATTERY       FDh  BANDAI TAMA5
  10h  MBC3+TIMER+RAM+BATTERY   FEh  HuC3
  11h  MBC3                     FFh  HuC1+RAM+BATTERY
  12h  MBC3+RAM

Tamaño de la ROM 0148

Identifica el tamaño de la ROM incluida en el cartucho normalmente son multiplos de 32KBytes

  00h -  32KByte (no ROM banking)
  01h -  64KByte (4 banks)
  02h - 128KByte (8 banks)
  03h - 256KByte (16 banks)
  04h - 512KByte (32 banks)
  05h -   1MByte (64 banks)  - only 63 banks used by MBC1
  06h -   2MByte (128 banks) - only 125 banks used by MBC1
  07h -   4MByte (256 banks)
  52h - 1.1MByte (72 banks)
  53h - 1.2MByte (80 banks)
  54h - 1.5MByte (96 banks)

Tamaño de la RAM 0149

Identifica el tamaño de la RAM externa incluida en el cartucho.

  00h - None
  01h - 2 KBytes
  02h - 8 Kbytes
  03h - 32 KBytes (4 banks of 8KBytes each)

Código Destino 014A

Especifica si la versión de este juego es para ser vendida en Japón o no. 00h – Japones / 01h No Japones ¿?¿?

Código Licencia anterior 014B

Identifica a la compañía o editor con un código entre 00 y FFh. A excepción del código 33h que se usa para indicar el uso del Nuevo Código de Licencia en la dirección 0144-0145.

Numero de versión del juego 0140C

Normalmente 00h.

Comprobación de Cabecera 014D 

Contiene una suma de comprobación de 8 bits con el contenido de la direcciones 0134 a 014C.
Los 8 bits más bajos del resultado del checksum deben coincidir con el valor almacenado en esta posición. El juego no funcionará si esta suma de comprobación no es correcta.

Comprobación Global 014E – 014F

Contiene una suma de comprobación de 16 bits usando toda la ROM del cartucho. Producida por la adición de todos los bytes del cartucho (excepto para los dos bytes de suma de comprobación). La Gameboy no verifica esta suma de comprobación.

Después de esta disección un poco rollo, os dejo una herramienta para que podáis ver las cabeceras de distintas ROM.