Esta es una herramienta (inspirada por los scripts de actualización de MiSTer), que crea la mayoría de la estructura de archivos y directorios necesarios en una tarjeta microSD para la familia ZXTRES de dispositivos FPGA.
Se puede descargar la última versión pública, aquí:
https://github.com/kounch/ZX3_Downloader/releases/
Necesita, por el momento, tener instalado Python (versión 3.9 o superior) para funcionar. Por otra parte, esto hace posible utilizarla en Windows, macOS, Linux...
¿Qué es lo que hace?
- Utiliza múltiples fuentes para obtener información de lo que necesita descargar. Usa un sistema de ficheros índice JSON relacionados, y aprovecha que muchas de las fuentes están en GitHub para usar ids de commit, y así asegurar la integridad de todo aunque cambien los repositorios (esto es importante, por ejemplo, con los cores de Jotego, ya que lleva unas semanas reorganizando todo, y ahora mismo las cosas no son compatibles entre todos los cores que hay generados para ZXTRES y los de MiSter, etc.). Siempre que es posible, verifica la integridad de las descargas usando MD5 y los tamaños de los ficheros.
- Descarga (si no estuvieran ya) archivos ZIP, MRA, BIT, ZX3, etc. de las fuentes obtenidas anteriormente, y los verifica
- Descarga (si fuera necesario) herramientas para el sistema operativo utilizado (Mac, Windows o Linux)
- Construye la estructura de archivos para la SD
A día de hoy, esto es todo lo que prepara:
- esxdos 0.8.9 (para el core de Spectrum principal)
- comandos de esxdos específicos para ZXTRES
- Navegador NMI de Bob Fossil para esxdos
- Configura autoarranque, para iniciar el navegador directamente en la carpeta de core
- Core de Amiga (incluye algunos ficheros de arranque, pero no la ROM)
- Core de Amstrad CPC 464
- Core de Amstrad CPC 6128, incluyendo ROMs necesarias
- Core de Atari 2600
- Core de ColecoVision, incluyendo BIOS y ROM multcart
- Core de Elan Enterprise, incluyendo ROM
- Core de Neo-Geo (no incluye ROM)
- Core de PC XT, ROMs incluidas y una imagen de disco básica de ejemplo
- Core de SAM Coupé
- ZX81, incluyendo ROMs
- ZX Spectrum Next con todo (instalación completa de la distribución 22.10 incluida)
- Core ZXP3 y ROM (sólo funciona instalado en flash. No se incluye software, sólo ROM)
- Cores arcade de Jotego (todo incluido, ROMS, ARC, etc.)
- Core y ROM de Atari Tetris
- Cores de prueba varios (DisplayPort, etc.)
El uso básico (teniendo instalado Python) es muy sencillo. Solo hay que ejecutarlo en una consola indicando el modelo de FPGA (a35t para ZXTRES, a100t para ZXTRES+ o a200t para ZXTRES++). Por ejemplo, para ZXTRES++ sería:
Código: Seleccionar todo
....python ZX3_Downloader.py -k a200t
Entonces, desde cmd (cmd.exe), para ZXTRES+ (a100t, habría que poner (a veces se puede hacer arrastrando desde el explorador de Windows a la ventana de cmd)
Código: Seleccionar todo
"c:\program files\python39\python.exe" "C:\users\mi usuario\desktop\zx3_downloader.py" -k a100t
Esto creará, al lado del script, un directorio "cache" donde descargará lo necesario, y otro directorio "SD" donde creará la estructura de directorios.
Una vez el proceso haya finalizado, si no se han producido errores, copiar el contenido del directorio SD a la raíz de una tarjeta microSD para utilizarlo.
Si se produjera alguna situación que interrumpa la descarga de ficheros, se recomienda volver a lanzar el script, que continuará a partir de ese último fallo.
Ahora, si dentro de unos días aparece una nueva versión de un core, una ROM mejorada, etc. procuraré mantener al día los ficheros índice y, si no se ha borrado nada del directorio "cache", al volver a ejecutar el script de la misma manera, se descargará sólo aquello que sea nuevo, y se actualizarán los ficheros correspondientes en el directorio SD.
Uso avanzado
El script tiene los siguientes parámetros avanzados, que explicaré más abajo con algunos ejemplos:
Código: Seleccionar todo
-v, --version Mostrar el número de versión del programa y salir
-c, --clean_sd Borrar todos los ficheros en el destino y crear una SD limpia
-C CACHE_DIR, --cache_dir CACHE_DIR
Cambiar la ubicación del directorio de la Caché
-O OUT_DIR, --out_dir OUT_DIR
Cambiar el nombre y la ubicación del directorio de salida
-a, --force_arcade_db
Fuerza la descarga de nuevo de la base de datos de Arcade almacenada en caché
-E EXTRA_DIR, --extra_dir EXTRA_DIR
Nombre y ubicación de un directorio con contenido extra
-K, --keep Intentar mantener los ficheros anteriores cuando sea posible
-k KINDS, --kinds KINDS
Lista de tipos de FPGAs a considerar
-t TYPES, --types TYPES
Lista de tipos de ficheros de core a incluir (bit, zx3)
-T TAGS, --tags TAGS Lista de categorías de contenido a incluir (arcade, console,
computer, util)
-g, --group_types Agrupar los ficheros de core por tipo
-G, --group_tags Agrupar los ficheros de core por tipo de contenido
-a AUTOBOOT, --autoboot AUTOBOOT
Definir el tipo (directorio) de autoarranque (sólo al agrupar por tipo de core)
-n, --no_autoboot No configurar autoarranque
Siguiendo con el ejemplo anterior, supongamos que tenemos en la unidad D: de Windows la tarjeta microSD y queremos que se copien ahí todos los ficheros en vez de tener que hacerlo nosotros desde "C:\users\mi usuario\desktop\SD". Entonces pondríamos
Código: Seleccionar todo
"c:\program files\python39\python.exe" "C:\users\mi usuario\desktop\zx3_downloader.py" -k a100t -O D:\
Por el momento, los cores están etiquetados en cuatro grupos:
- Arcade (Tetrix, cores de Jotego, etc.)
- Computer (Amstrad CPC, Elan Enterprise, PC XT, etc.)
- Console (Atari 2600)
- Util (Cores de prueba de DisplayPort, etc.)
Podemos elegir instalar sólo los cores y archivos asociados a algunos de esos grupos.
Así, para construir una SD sólo con Arcade y Consola, para ZXTRES++, sería
Código: Seleccionar todo
...python ...zx3_downloader.py" -k a200t -T arcade,console
También es posible indicar si se quiere agrupar los cores en directorios por tipo (bit, zx3) o categoría (arcade, etc.), usando "-g" y "-G" respectivamente.
Entonces, para que se cree una estructura de carpetas así
Código: Seleccionar todo
cores/
bit/
arcade/
console/
...
zx3
arcade/
console/
...
Habría que poner los dos parámetros
Código: Seleccionar todo
...python ...zx3_downloader.py" -k a200t -g -G
Si sólo se desea uno de los dos niveles, basta con indicarlo (por ejemplo, sólo "-g" para agrupar en directorios bit y zx3)
El autoarranque, por defecto, sitúa el navegador en el directorio /cores, pero, en el cao de estar agrupados es posible indicar uno de los directorios de tipo. Por ejemplo, para que se sitúe en /cores/bit, sería
Código: Seleccionar todo
...python ...zx3_downloader.py" -k a200t -g -a bit
Código: Seleccionar todo
...python ...zx3_downloader.py" -k a200t -n
También es posible indicar que sólo copie cores de un tipo (bit o zx3) con el parámetro "-t. Por ejemplo, para sólo incluir cores del tipo bit
Código: Seleccionar todo
...python ...zx3_downloader.py" -k a200t -t bit
Otra opción interesante es la que permite, tras haber construido la SD, añadir ficheros que tengamos en otro directorio. Por ejemplo, supongamos que tenemos una copia de la ROM Kickstart de Amiga y un disco HDF que queremos usar, así como el fichero 15KHZ.CFG para forzar el arranque de los cores demistificados en modo RGB.
Bastaría con crear un directorio llamado "extra" al lado del script, situando dentro los ficheros y directorios tal y como queremos que se copien en la SD.
Si preferimos que se utilice otro directorio distinto, se podrá indicar con el parámetro "-E".
Todos los parámetros que sean compatibles entre sí se pueden combinar simultáneamente. Por ejemplo, en el ejemplo anterior de Windows, para crear una SD que tenga cores de arcade para ZXTRES y ZXTRES+ (pero no de ZXTRES++), agrupados por tipo de fichero (bit,zx3) con autoarranque en el directorio cores/zx3, copiando al final los ficheros que hay en el directorio "C:\users\mi usuario\cositasSD" y dejándolo todo en la unidad E:\, sería
Código: Seleccionar todo
"c:\program files\python39\python.exe" "C:\users\mi usuario\desktop\zx3_downloader.py" -k a35t,a100t -g -t bit,zx3 -T arcade -a zx3 -E "C:\users\mi usuario\cositasSD" -O E:\
== Descripción más detallada del contenido que se crea automáticamente con el script y las opciones por defecto ==
Código: Seleccionar todo
AMSTRAD/ <-- Ficheros ROM para el core Amstrad CPC 6128
BIN/ <-- Directorio utilizado por esxdos (incluyendo utilidades específicas para ZXTRES)
CORES/ <-- Ficheros de core para cargar directamente en la FPGA desde el navegador NMI (los BIT sólo funcionan en ZXTRES, etc. con tarjeta intermedia -middle board-)
DOT/ <-- Ficheros para el core de ZX Spectrum Next
JOTEGO/ <-- Ficheros ARC y ROM de Arcade
MACHINES/ <-- Ficheros para el core de ZX Spectrum Next
NEXTZXOS/ <-- Ficheros para el core de ZX Spectrum Next
SYS/ <-- Directorio utilizado por esxdos (incluyendo utilidades específicas para ZXTRES)
TBBLUE.FW <-- Ficheros para el core de ZX Spectrum Next
TBBLUE.TBU <-- Ficheros para el core de ZX Spectrum Next
TMP/ <-- Directorio utilizado por esxdos
832OSDAD.bin <-- Necesario para el core de Amiga
ep.rom <-- ROM necesaria para el core de Elan Enterprise
ESXMMC.BIN <-- Para utilizar esxdos con el core de ZX Spectrum Next
minimig.art <-- Para que el core de Amiga muestre imágenes y animación en el arranque
minimig.bal <-- Ídem
minimig.cop <-- Ídem
PCXT.ROM <-- BIOS para el core de PC XT
TANDY.ROM <-- BIOS para el core de PC XT
XTIDE.ROM <-- BIOS para el core de PC XT
ZX81 <-- Para ficheros de ZX81
zxp3.rom <-- ROM para el core de ZX Spectrum +3 (zxp3)
Los ficheros BIT y ZX3 se han nombrado con la siguiente convención (nombre_de_core_o_sistema)_(modelo de fpga)_(fecha).(extension)
Los ficheros y utilidades de esxdos para ZXTRES que se instalan son:
Código: Seleccionar todo
BIN/BACKZX3
BIN/BPLUGINS/BIT
BIN/BPLUGINS/ZX3
BIN/CORE
BIN/DATE
BIN/DMAPLAYW
BIN/ESPRST
BIN/INITFLSH
BIN/IWCONFIG
BIN/JOYCONF
BIN/KEYMAP
BIN/LOADPZX
BIN/LOADTAP
BIN/MBINFO
BIN/MBUPD
BIN/PLAYMID
BIN/PLAYRMOD
BIN/PLAYZXM
BIN/RTCST
BIN/UPDCORE
BIN/UPGRZX3
BIN/ZXUC
BIN/zxuc.bin
BIN/ZXUCSAVE
BIN/ZXUNOCFG
BIN/BPLUGINS/BIT
BIN/BPLUGINS/MID
BIN/BPLUGINS/ZX3
SYS/KEYMAPS/AV
SYS/KEYMAPS/ES
SYS/KEYMAPS/US
SYS/RTC.SYS
mbjoycal.tap
RP2MAPP.BIN
RP2UAPP.BIN