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
- Select Type: ASCII 16 kB o Custom
- Switch Address: 7000h
- Save Address: 8000
- Block Size: 4000
- First Block: 0
- Last Block: F
- Select Type: Konami o Custom
- Switch Address: A000
- Save Address: A000
- Block Size: 2000
- First Block: 0
- Last Block: F
- Select Type: ASCII 8 kB o Custom
- Switch Address: 7800
- Save Address: A000
- Block Size: 2000
- First Block: 0
- Last Block: 1F
- Select Type: Custom
- Switch Address: 6000
- Save Address: 4000
- Block Size: 4000
- First Block: 0
- Last Block: 3
- 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.
Buen aporte! 🙂
Excelente! Muchas gracias!