Hola a tod@s,
El pasado día 8 de Julio,
manolito74 subió algunos ficheros al hilo. Entre ellos estaba el juego de Gremlin Graphics
Thing Bounces Back que tiene bloques "turbo" (que no son sino bloques con modulación de Spectrum) y me sorprendió que pudiese funcionar, pues la carga no era la apropiada. Efectivamente, no funcionaba, hehehe. Así que me he puesto un rato y he creado un fichero TZX del juego, que sí carga en el emulador (previa conversión a audio, claro).
El fichero está creado a mano. Los WAVs con los que he trabajado son los del repositorio de
Pablibiris y otro que
manolito74 hizo con Goldwave al principio del todo. La carga inicial MSX es un binario que carga entre &hD800 y &hD980, ejecutándose en &hD800. Volqué ese bloque de datos desde el debugger del MAME, por si acaso. Luego probé a hacer una copia con VECOPE a un fichero WAV desde el OpenMSX. También lo intenté con MAME, pero solo me creaba archivos CAS con 0 bytes.
Prefería tener un WAV "limpio" para usar el MakeTSX 0.6 contra él. Parece que la versión actual de la herramienta de
nataliapc sí lee correctamente los datos de la sección MSX: los datos dentro del fichero que generó coincidían con los que yo había grabado desde el debugger. Quedaban solo los bloques "turbo" del juego que no tenían la modulación estándar.
Esto se solucionó fácilmente con un emulador de Spectrum. Yo uso ZXSpin (aunque debería funcionar en cualquiera) porque tiene un cómodo soporte de grabación hacia ficheros TZX. Como copión uso un programa llamado ULTRACOPY que tiene menús en español; probablemente sea traducción de algún otro, puesto que con ese nombre no coincide con el encontrado en el repositorio de
WoS.
El TZX del juego que os presento aquí hoy, es el resultado de la mezcla de los TZX generados por los procesos que acabo de describir más arriba. Los tiempos de las pausas entre bloques están medidos a mano con el programa Cool Edit Pro y ajustados al milisegundo más cercano. En este juego no existen protecciones por tiempo, como SpeedLock, solo se han ajustado para parecerse más al original. Puede que la longitud del tono guía sea ligeramente diferente: he ajustado los valores en Blockeditor al estándar del manual de Sony.
Si bien en
Generation MSX aparece el
Thing Bounces Back con pantalla de carga, el WAV usado aquí no produce ninguna. Como falla en ambos emuladores, estoy dispuesto a creer que es un fallo de programación. El cargador de Gremlin es curioso, los bloques pequeños de 4 bytes indican el inicio y longitud de los bloques grandes. Cada bloque se carga siempre en el mismo sitio (&h8700) donde luego hay una rutina que mueve los datos con LDIR. Si hubiesen querido que apareciese la pantalla, debería haber habido código para ello en el primer bloque gordo, pero o no está o es defectuoso (no he investigado lo suficiente).