Crear imágenes ROM a partir de cartuchos

Fuente: MSXNet.org.

Artículo original de BiFi en inglés. Traducido y adaptado por Konamito.

Tienes un cartucho MSX verdaderametne raro y te gustaría jugarlo en un emulador y compartirlo con el mundo. ¿Cómo lo haces? Me gustaría explicártelo a continuación.

Para este propósito, he creado dos programas MSX, getrom.bin y saverom.com.

Dependiendo de qué tipo de cartucho quieras grabar, deberás hacer una elección. SaveROM pide información al usuario y GetROM lo detecta automáticamente por tí; aunque desafortunadamente esto no funciona en bastantes cartuchos.

GetROM.BIN

GetROM.BIN es un binario MSX-BASIC; empieza escribiendo

BLOAD"GETROM.BIN",R

y obtendrás una lista de cartuchos y otras ROMs encontradas por GetROM. Simplemente escribe el número a la izquierda y dale un nombre. El cartucho se habrá grabado.

GetROM soporta lo siguiente:

  • Main BIOS/BASIC ROM
  • Extended BIOS (Sub ROM)
  • Disk ROM
  • Cualquier cartucho de 8, 16 ó 32 kB en la página 1 y/o en la 2
  • MegaROMs tipo Konami4 y Konami5 megaROMs hasta 512 kB

GetROM tiene algunas limitaciones: Solid Snake no se graba correctamente ya que guarda desde el área de la memoria 8000h – 9FFFh y por lo tanto los últimos 800h bytes son ilegibles (área de la memoria del SCC). Solamente Solid Snake tiene este problema porque es el único cartucho de 4 megabit con SCC. Además, GetROM.BIN se cuelga cuando trabaja bajo Disk BASIC 2 cuando graba.

SaveROM.COM

SaveROM ha sido programado para ser una herramienta potente y completa. Espero que cada cartucho pueda ser grabado con ella, pero el usuario tiene que proporcionar la información, en forma de direcciones y números de bloque.

SaveROM soporta completamente las páginas 2 y 3. Es un programa que funciona bajo MSX-DOS y debes arrancarlo desde la línea de comandos escribiendo el nombre del archivo tras él.

Después de arrancar SaveROM, primero preguntará en qué slot primario está. Si el slot es expandido, se preguntará también el slot secundario.

A continuación SaveROM pregunta por el tipo de mapper. Existen 6 tipos diferentes: Normal, ASCII 8 kB, ASCII 16 kB, Konami, Konami SCC y Custom. Para ir de uno al otro hay que pulsar los cursores arriba y abajo. Se confirma la selección con RETURN.

El tipo Normal grabará una ROM normal. Se preguntarán las direcciones de inicio y final.

Así que si quieres grabar la BIOS principal, las direcciones son 0 y 7FFF. Para la BIOS extendida son 0 y 3FFF.

El tipo Custom grabará la ROM como megaROM. Y se pedirán los siguientes datos:

  • Switch Address: Dirección actual usada para el cambio de bloques
  • Save Address: Dirección de comienzo donde comienza la grabación
  • Block Size: Tamaño de un bloque, por ejemplo: 200h para 8kB, 0000h para 64Kb. Puede ser cualquier valor
  • First Block: Primer bloque a grabar
  • Last Block: Último bloque a grabar

Los tipos de mapper ASCII 8 kB, ASCII 16 kB, Konami y Konami SCC se guardarán en formato megaROM. La dirección de cambio, de guardado y tamaño de bloque son predeterminados, como se muestra más abajo. Pero es necesario indicar los siguientes datos:

  • First Block: Primer bloque a guardar
  • Last Block: Último bloque a guardar

Los valores son siempre hexadecimales. De hecho, el valor del primer bloque hasta el último se escribe en la dirección de cambio de bloques y el tamaño de bloque se guarda en cada iteración de la dirección de comienzo de la grabación. Si el primer bloque es mayor que el último, la iteración se hace en orden inverso. El bloque actual que se está grabando se muestra en formato hexadecimal en un indicador de progreso.

Ejemplos:

  • Konami 1megabit SCC
  • Select Type: Konami SCC o Custom
  • Switch Address: B000
  • Save Address: A000
  • Block Size: 2000
  • First Block: 0
  • Last Block: F
  • Ascii/16K 2megabit
    • Select Type: ASCII 16 kB o Custom
    • Switch Address: 7000h
    • Save Address: 8000
    • Block Size: 4000
    • First Block: 0
    • Last Block: F
  • Konami 1megabit sin SCC (también Game Master 2)
    • Select Type: Konami o Custom
    • Switch Address: A000
    • Save Address: A000
    • Block Size: 2000
    • First Block: 0
    • Last Block: F
  • Ascii/8K 2 megabit
    • Select Type: ASCII 8 kB o Custom
    • Switch Address: 7800
    • Save Address: A000
    • Block Size: 2000
    • First Block: 0
    • Last Block: 1F
  • MSX DOS 2 (arrancar pulsando la tecla SELECT)
    • Select Type: Custom
    • Switch Address: 6000
    • Save Address: 4000
    • Block Size: 4000
    • First Block: 0
    • Last Block: 3
  • FM PAC: (Panasonic)
    • Select Type: Custom
    • Switch Address: 7FF7
    • Save Address: 4000
    • Block Size: 4000
    • First Block: 0
    • Last Block: 3

    Con estos ejemplos es suficiente. Si no tienes ni puñetera idea de los datos que introduces cuando estés grabando tu cartucho, pregúntale a un programador y probablemente él sepa. También puedes grabar los primeros 32kB con GetROM y enviárselos a un programador (a mí por ejemplo) y podrá descubrir qué tipo de ROM es.

    2 comentarios sobre «Crear imágenes ROM a partir de cartuchos»

    Deja tu comentario sobre esto

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.