Todos sabemos que los emuladores no son lo mismo; hay que rescatar las viejas máquinas de trasteros y armarios para saborear lo auténtico. Pero qué pereza tener que esperar minutos para empezar a echar una partida, y eso suponiendo que todo vaya bien y no haya un error de carga. Afortunadamente en el siglo XXI, los reproductores de audio digital nos permiten cargar juegos en pocos segundos con gran fiabilidad.
Lo primero que nos va a hacer falta es el cable que se usaba para conectar el MSX al casete. Si ha desaparecido, cosa normal después de tantos años, es sencillo hacerse uno. No será necesario el mismo cable con un conector de 8 pines. Basta con uno más fácil de encontrar como el conector de 5 pines (un cable de teclado de PC antiguo se puede reciclar).
Los cartuchos rom, los discos floppy y las cintas de casete ya no se encuentran físicamente (salvo entre coleccionistas) pero su contenido está ahora en ficheros .ROM, .DSK, .CAS que podemos tener en el disco duro de nuestro PC. Así que lo segundo es bajarse de internet estos ficheros, muchos de ellos con todas las de la ley. Por último queda convertir esos ficheros a una señal de audio (.WAV, .MP3). Para tal menester, tenemos las herramientas del Proyecto OTLA: OtlaBuilder y OtlaPlayer.
OtlaBuilder
Con OtlaBuilder.exe se convierten los ficheros originales a un fichero intermedio (.SBB , stream of binary blocks) que representa los bloques de bytes que se van a cargar. Esta parte es la más complicada pues no es un proceso que en general se pueda hacer automáticamente. Conviene que refresquemos ahora algunos conceptos habituales de los cargadores de cinta:
CLEAR: Reserva memoria para los programas en código máquina. Va a determinar el posición de la pila (registro SP)
USR: Dirección de ejecución una vez cargados todos los bloques de bytes (en MSX normalmente no se usa, equivaldría a forzar un valor del registro PC cuando acaba la carga)
POKE -1: Indica la paginación de memoria (esto es específico de MSX)
Veamos ahora cómo utilizar OtlaBuilder con algunos ejemplos prácticos.
Antes de nada deberemos elegir en Machine la opción MSX (el proyecto OTLA también funciona para Amstrad y Spectrum). Después haremos click en NEW para abrir el fichero original y empezar a convertirlo.
Ficheros .HST
Son ficheros de test (Hexadecimal Screen Test) que sirven para ver en pantalla cuan buena es la calidad de carga. Deberemos ajustar valores de volumen, ecualización, etc. de nuestro reproductor de sonido digital hasta asegurarnos de que estos test funcionan. Si no, es inútil intentarlo con juegos de verdad. Adicionalmente quien se decida a utilizar la velocidad de carga más rápida, podrá hacer ajustes finos de frecuencias de muestreo, formas de onda, etc. Aceptamos el bloque y grabamos el fichero .SBB (más abajo se describe lo que se debería ver cuando se carga este fichero .SBB a un MSX con OtlaPlayer).
Conversión de ficheros .ROM
Para poder cargar roms antes hay que transformarlos a ficheros .BIN. OtlaBuilder utiliza la herramienta msxr2b de José Mari Jimenez que convierte roms de 16k y de 32k. Si el fichero rom es correcto, veremos uno o dos bloques de bytes de tipo binario. Ejemplo infinity.rom:
Aceptamos ambos bloques para ser añadidos al .SBB, ponemos la opción POKE -1,170 (véase readme.txt de la herramienta msxr2b) y guardamos el fichero SBB.
Conversión de ficheros .DSK
Los ficheros .DSK contienen los ficheros que estaban en el disco original. Para extraer esos ficheros se puede utilizar DskMngr.exe, pero solo nos interesan los ficheros .BIN (que son los que OtlaBuilder puede interpretar). También nos interesa echar un vistazo (con ayuda de un emulador) al programa cargador, normalmente un fichero .BAS. Vemos que el cargador de Manic Miner (1984 Software Projects).DSK es MINER.BAS y contiene:
Vemos en el cargador un Poke -1,170, un CLEAR 100,38048 y luego se carga m1 y luego m2.
Nos lo apuntamos y empezamos: vamos a construir el .SBB. Hacemos click en NEW y añadimos primero m1.BIN. Después hacemos click en ADD y añadimos m2.BIN. Después rellenamos la opción CLEAR con 38048 y POKE -1,170. Ojo si nos olvidamos de esto ya que puede ser que no funcione o funcione a medias.
Y guardamos con SAVE.
Conversión de ficheros .CAS
Un fichero CAS puede contener ficheros binarios, Ascii y "tokenized basic". OtlaBuilder solo procesa los primeros y presenta información de los Ascii (que normalmente es el cargador basic).
Abrimos ManicMiner.CAS:
En el cargador Basic vemos un un SCREEN 1 y un CLEAR 100,H$8500, que en decimal es 38048. Rellenamos clear con 34048. En este caso no hará falta poke -1 pero ojo al SCR 1.
OtlaPlayer
Una vez que tenemos los ficheros .SSB los abrimos con OtlaPlayer y se convierten a ficheros de audio (wav o mp3) o se pueden reproducir directamente a través de la tarjeta de sonido del PC.
Bastará con dejar las opciones por defecto para conseguir una carga sin problemas. Conviene probar el .wav en un emulador (OpenMSX admite ficheros wav) para verificar que al archivo .SBB se construyó correctamente. Si no funciona vigilar que los parámetros SP y POKE -e son correctos. También podría ser que algunos sistemas anticopia de rom o cargadores provoquen fallos.
Probando en emulador descartamos que el fallo sea por un error de carga, que obviamente se pueden dar. Si ocurre un error de carga, la rutina de carga lo detecta e intentará parar y mostrar el mensaje "loading error". Esta opción se puede desactivar (Check loading error) y ejecutar el juego a pesar de todo y confiando que el error de carga haya sido "pequeño".
Tan solo resta teclear BLOAD"CAS:",R en MSX y conectarlo al reproductor de audio digital. Escoger el wav generado y darle al play. La carga seguirá este esquema:
Primero se cargará normalmente la rutina de carga rápida (por defecto según los tiempos standard de MSX, se puede acortar con la opción Accelerate). La rutina se ubica por defecto en la dirección $f400 pero se puede reubicar con Locate at dando otro valor al byte más significativo de la dirección elegida .
Después se enciende el led de Mayúsculas indicando que empieza la carga de alta velocidad y se cargan los bloques de bytes presentes en el .SSB. Cuando acaba la carga, se apaga el led y se ejecuta el programa cargado.
Las pantallas de test que veríamos a los pocos segundos son estas:
Nota: en el ejemplo de manicminer.CAS antes de teclear BLOAD"CAS:",R hay que poner SCREEN 1 tal y como hacía su cargador original.