Nueva utilidad para creación y edición de ROMS.ZX1 (ZX1RomPack)
Publicado: 01 Ago 2016, 12:14
Para poder facilitar el testeo de roms en el ZX-UNO durante el desarrollo, me hice un programita para crear o modificar fácilmente archivos ROMS.ZX1, usando una GUI intuitiva. Pero he visto que podría ser muy útil para todos, y he decidido meterle unas cuantas mejoras y ponerlo para descarga (ya está disponible en el repositorio SVN, carpeta /software/ZX1RomPack: http://guest:zxuno@svn.zxuno.com/svn/zx ... X1RomPack/). Unicamente Para Windows. Por favor, notificad bugs que pueda haber en el hilo.
A modo de resumen, sobre el archivo ROMS.ZX1, es un archivo donde se almacenan en pack todas las roms de Spectrum que lleva la Flash del ZX-UNO, sus settings, orden y cual es la rom de arranque por defecto, y se graba en la flash mediante el comando ESXDOS .ROMSUPGR, habiendo grabado el archivo ROMS.ZX1 en la SD previamente y se pueden descargar backups de las roms de la flash con .ROMSBACK. Ambos disponibles en el SVN en /software/upgrade.
NOTA: Sólo es posible usar estas utilidades si has arrancado con una rom "Rooted" (Por ejemplo la Rooted ZX Spectrum 48K"). Una rom Rooted, tiene la particularidad de que da acceso a la memoria flash del ZX-UNO desde el Spectrum. Cualquier otra rom, no lo permite, y estas utilidades no funcionarán.
Como la mayoría sabéis, para poder añadir, modificar, quitar ROMs de Spectrum del ZX-UNO, sólo puede hacerse en BIOS mediante carga por cinta (EAR), o bien mediante el mencionado ROMS.ZX1 previamente "cocinado", a través de la SD, el cual sustituye todas las que tuvieras del tirón.
Ya sabéis a que lista de ROMs nos estamos refiriendo:
Para "cocinar" ese archivo, bien partiendo de cero (crearlo entero con las ROMs a tu gusto), o modificar uno existente, cambiando, añadiendo, editando roms, cambiando sus settings, su orden y elegir la rom de arranque por defecto, os presento la utilidad que os comentaba al principio: ZX-UNO RomPack Tool:
Es bastante sencilla de manejar. Abajo destaco las funcionas básicas. Si tenéis preguntas, hacedlas en el hilo y os echo una mano. La utilidad la he escrito en inglés, pero creo que nadie tendrá problemas en manejarla.
En resumen:
- Menú file: Crear un nuevo pack desde cero, abrir uno existente y guardar el que ya hayamos preparado
- Lista: Saldrá la lista de roms del archivo abierto o las que ya estéis insertando. Las columnas que no entendáis, no les hagáis caso.
** Leyenda de la lista: En negrita: Rom por defecto al arraque. Si tiene un asterisco (*) en los Parameters, es una rom Rooted. Color rojo: Una Rom añadida a la lista a la que aún no se le han rellenado los detalles (no se le ha añadido un fichero ROM, nombre, etc). Verde: Se ha editado la línea y se han guardado los cambios.
** Al pulsar un elemento de la lista: Se abrirá a la derecha el panel de información y edición de la rom seleccionada.
- Botones: Se explican por si solos, pero bueno:
** Añadir ROM (se añadirá al final de la lista, si hay slots suficientes, esperando a que el usuario rellene sus datos y le asigne un archivo rom). Una vez rellenados los datos de la rom a la derecha, se pulsa "Submit changes" para aceptar los cambios de esa linea y actualizar la lista.
** Delete ROM: Pues eso, borra una rom de la lista. No recomiendo usarlo demasiado, sobre todo en ROMs que no estén al final, porque de momento, esos huecos que ha dejado, esta utilidad no los rellena cuando añades después otra rom, salvo que las que hayas eliminado estén al final de la lista de slots.
** Default boot ROM: Claro clarinete. Hace que la rom seleccionada de la lista sea la rom por defecto al arrancar el ZX-UNO
** Flechas Move Up y Move Down: Bastante claro, mueve la rom seleccionada arriba o abajo en la lista para variar su posición.
- Panel "ROM details": Es donde vemos la información de la rom seleccionada de la lista, y además poder editarla. Se puede poner/cambiar nombre a la ROM, el archivo ROM (formato raw, extension .rom, disponibles muchas en /firmware/roms del SVN), y los settings, o "config". Hay dos pestañas.
**Pestaña Basic config: Para elegir el timing, keyboard issue, contención de memoria, y habilitar DivMMC y menú NMI.
**Pestaña Advanced config: Para elegir si deshabilitar en el core el puerto SD, rom alta y baja (1ffd bit 2 y 7ffd bit 4), el paginado de memoria (puertos 1ffd y 7ffd), los chips Ay y activar la MMU horizontal Timex.
Estas opciones son muy importantes, porque cada ROM va a necesitar unas diferentes, si no pueden incluso no funcionar. Si por ejemplo añades una ROM de un Spectrum 128K radiador, y no desabilitas el paginado de +2A/+3, la rom no va a arrancar. También es importante para que determinados modelos de Spectrum funcionen fieles al original. Por ejemplo para hacer funcionar correctamente algunos juegos de Ultimate como Atic Atac por ejemplo, es necesario que usemos la rom de un 48K desactivando high y low bit rom, 1ffd y 7ffd. Para dudas con este tema de compatibilidades, preguntad a Antonio o Mcleod.
**(NUEVO en v0.30) Pestaña Extra: los modos Radastan, Timex y ULAPlus (sólo funcional si tienes BIOS de v0.55 en adelante)
- Carencias de la versión actual:
- No rellena huecos si se han borrado ROMs que estén en slots de enmedio (no el último/últimos).
- No calcula el Checksum/CRC de las ROMs añadidas o cambiadas. Para que no de error al arrancar en BIOS, desactivad la comprobación CRC en BIOS anteriores a la 0.46 <- añadido en v0.25
- TO-DO:
- Admitir importar también archivos de rom en formato .tap, ya que están "precocinadas" y ya vienen con las settings adecuadas y el nombre puestos.
- Añadir CRC <- añadido en v0.25
- Exportar archivos .rom individuales de un pack <- aádido en v0.30
- opción de extraer TAP
En el SVN, en /software/ZX1RomPack , además del ejecutable, también he dejado un ROMS.ZX1 de ejemplo por si queréis trastear con él.
Ejecución del EXE: Si al ajecutarlo os da error pidiendo alguna DLL, ejecultarlo la primera vez con permisos de administrador, y las siguientes veces ya debería ir bien.
Más adelante si tengo tiempo tengo pensado hacer alguna utilidad más, como por ejemplo una para crear archivos FLASH.ZX1 eligiendo fácilmente con un GUI los cores que van a ir en la flash, su orden y arranque, inyectar ROMS.ZX1, etc.
------------------- ACTUALIZACIONES -------------------------
01/08/2016: Subida primera version pública (v0.23)
03/08/2016: Subida nueva versión v0.25 que implementa el cálculo de CRC compatible con la nueva BIOS v0.48
25/09/2016: Subida nueva versión v0.30. Añade soporte para las nuevas funciones de desactivar los modos Radastan, Timex y ULAPlus (sólo funcional si tienes BIOS de v0.55 en adelante). Añade opción de extraer roms individiales de un pack. Corrige algunos bugs en el guardado. Añadido nuevo ROMS.ZX1 de ejemplo.
A modo de resumen, sobre el archivo ROMS.ZX1, es un archivo donde se almacenan en pack todas las roms de Spectrum que lleva la Flash del ZX-UNO, sus settings, orden y cual es la rom de arranque por defecto, y se graba en la flash mediante el comando ESXDOS .ROMSUPGR, habiendo grabado el archivo ROMS.ZX1 en la SD previamente y se pueden descargar backups de las roms de la flash con .ROMSBACK. Ambos disponibles en el SVN en /software/upgrade.
NOTA: Sólo es posible usar estas utilidades si has arrancado con una rom "Rooted" (Por ejemplo la Rooted ZX Spectrum 48K"). Una rom Rooted, tiene la particularidad de que da acceso a la memoria flash del ZX-UNO desde el Spectrum. Cualquier otra rom, no lo permite, y estas utilidades no funcionarán.
Como la mayoría sabéis, para poder añadir, modificar, quitar ROMs de Spectrum del ZX-UNO, sólo puede hacerse en BIOS mediante carga por cinta (EAR), o bien mediante el mencionado ROMS.ZX1 previamente "cocinado", a través de la SD, el cual sustituye todas las que tuvieras del tirón.
Ya sabéis a que lista de ROMs nos estamos refiriendo:
Para "cocinar" ese archivo, bien partiendo de cero (crearlo entero con las ROMs a tu gusto), o modificar uno existente, cambiando, añadiendo, editando roms, cambiando sus settings, su orden y elegir la rom de arranque por defecto, os presento la utilidad que os comentaba al principio: ZX-UNO RomPack Tool:
Es bastante sencilla de manejar. Abajo destaco las funcionas básicas. Si tenéis preguntas, hacedlas en el hilo y os echo una mano. La utilidad la he escrito en inglés, pero creo que nadie tendrá problemas en manejarla.
En resumen:
- Menú file: Crear un nuevo pack desde cero, abrir uno existente y guardar el que ya hayamos preparado
- Lista: Saldrá la lista de roms del archivo abierto o las que ya estéis insertando. Las columnas que no entendáis, no les hagáis caso.
** Leyenda de la lista: En negrita: Rom por defecto al arraque. Si tiene un asterisco (*) en los Parameters, es una rom Rooted. Color rojo: Una Rom añadida a la lista a la que aún no se le han rellenado los detalles (no se le ha añadido un fichero ROM, nombre, etc). Verde: Se ha editado la línea y se han guardado los cambios.
** Al pulsar un elemento de la lista: Se abrirá a la derecha el panel de información y edición de la rom seleccionada.
- Botones: Se explican por si solos, pero bueno:
** Añadir ROM (se añadirá al final de la lista, si hay slots suficientes, esperando a que el usuario rellene sus datos y le asigne un archivo rom). Una vez rellenados los datos de la rom a la derecha, se pulsa "Submit changes" para aceptar los cambios de esa linea y actualizar la lista.
** Delete ROM: Pues eso, borra una rom de la lista. No recomiendo usarlo demasiado, sobre todo en ROMs que no estén al final, porque de momento, esos huecos que ha dejado, esta utilidad no los rellena cuando añades después otra rom, salvo que las que hayas eliminado estén al final de la lista de slots.
** Default boot ROM: Claro clarinete. Hace que la rom seleccionada de la lista sea la rom por defecto al arrancar el ZX-UNO
** Flechas Move Up y Move Down: Bastante claro, mueve la rom seleccionada arriba o abajo en la lista para variar su posición.
- Panel "ROM details": Es donde vemos la información de la rom seleccionada de la lista, y además poder editarla. Se puede poner/cambiar nombre a la ROM, el archivo ROM (formato raw, extension .rom, disponibles muchas en /firmware/roms del SVN), y los settings, o "config". Hay dos pestañas.
**Pestaña Basic config: Para elegir el timing, keyboard issue, contención de memoria, y habilitar DivMMC y menú NMI.
**Pestaña Advanced config: Para elegir si deshabilitar en el core el puerto SD, rom alta y baja (1ffd bit 2 y 7ffd bit 4), el paginado de memoria (puertos 1ffd y 7ffd), los chips Ay y activar la MMU horizontal Timex.
Estas opciones son muy importantes, porque cada ROM va a necesitar unas diferentes, si no pueden incluso no funcionar. Si por ejemplo añades una ROM de un Spectrum 128K radiador, y no desabilitas el paginado de +2A/+3, la rom no va a arrancar. También es importante para que determinados modelos de Spectrum funcionen fieles al original. Por ejemplo para hacer funcionar correctamente algunos juegos de Ultimate como Atic Atac por ejemplo, es necesario que usemos la rom de un 48K desactivando high y low bit rom, 1ffd y 7ffd. Para dudas con este tema de compatibilidades, preguntad a Antonio o Mcleod.
**(NUEVO en v0.30) Pestaña Extra: los modos Radastan, Timex y ULAPlus (sólo funcional si tienes BIOS de v0.55 en adelante)
- Carencias de la versión actual:
- No rellena huecos si se han borrado ROMs que estén en slots de enmedio (no el último/últimos).
- No calcula el Checksum/CRC de las ROMs añadidas o cambiadas. Para que no de error al arrancar en BIOS, desactivad la comprobación CRC en BIOS anteriores a la 0.46 <- añadido en v0.25
- TO-DO:
- Admitir importar también archivos de rom en formato .tap, ya que están "precocinadas" y ya vienen con las settings adecuadas y el nombre puestos.
- Añadir CRC <- añadido en v0.25
- Exportar archivos .rom individuales de un pack <- aádido en v0.30
- opción de extraer TAP
En el SVN, en /software/ZX1RomPack , además del ejecutable, también he dejado un ROMS.ZX1 de ejemplo por si queréis trastear con él.
Ejecución del EXE: Si al ajecutarlo os da error pidiendo alguna DLL, ejecultarlo la primera vez con permisos de administrador, y las siguientes veces ya debería ir bien.
Más adelante si tengo tiempo tengo pensado hacer alguna utilidad más, como por ejemplo una para crear archivos FLASH.ZX1 eligiendo fácilmente con un GUI los cores que van a ir en la flash, su orden y arranque, inyectar ROMS.ZX1, etc.
------------------- ACTUALIZACIONES -------------------------
01/08/2016: Subida primera version pública (v0.23)
03/08/2016: Subida nueva versión v0.25 que implementa el cálculo de CRC compatible con la nueva BIOS v0.48
25/09/2016: Subida nueva versión v0.30. Añade soporte para las nuevas funciones de desactivar los modos Radastan, Timex y ULAPlus (sólo funcional si tienes BIOS de v0.55 en adelante). Añade opción de extraer roms individiales de un pack. Corrige algunos bugs en el guardado. Añadido nuevo ROMS.ZX1 de ejemplo.