Como Comprimir ROMs Retro

Los emuladores modernos aceptan archivos comprimidos de forma nativa, ahorrando espacio y disminuye los tiempos de carga., estos son los mejores formatos para cada uno:

EmuladorCompresión
PS2 y PSP.cso
PSX.chd
GameCube y Wii.rvz
Sega CD.chd
Sega Dreamcast.chd
Sega Saturn.chd
TurboGrafx-16 CD.chd
Panasonic 3DO.chd
Ver lista completa de emuladores y formatos de compresión de este tutorial

Comprimir .cue + .bin, .gdi y .iso a .chd

Originalmente el formato CHD fue creado por MAME específicamente para los discos duros de ciertas Arcades y luego el soporte fue extendido para PlayStation 1 (PSX), Sega CD, Saturn, Dreamcast, etc. y han desarrollado una herramienta llamada CHMAN, con la cual podemos reducir considerablemente el tamaño de los archivos., eso significa muchos juegos en poco espacio.

Instalar CHMAN

Windows

Descargar CHDMAN

Linux

sudo apt install -y --no-install-recommends mame-tools

macOS

En Mac hay que instalar el administrador de paquetes Homebrew para poder instalar chdman

brew install rom-tools

Convertir .cue y .gdi a .chd

En Windows

El archivo comprimido contiene la herramienta chdman.exe y algunos archivos por lotes, el cual procesa todos los archivos contenidos en la carpeta.

Probemos con los PSX., copiamos el archivo chdman.exe y CUE or GDI to CHD.bat en la carpeta donde se encuentran los ROMs

Ejecutamos dándole doble clic a CUE or GDI to CHD.bat y comenzará el proceso de convertir todos los archivos que se encuentren en la carpeta., una ROM pueden tener muchos archivos *.bin – Nombre_del_ROM (Track 01).bin hasta Nombre_del_ROM (Track X_Numero).bin y Nombre_del_ROM.cue, en la siguiente imagen se pueden ver más claro.

Al final transformará todos los archivos .bin y .cue en un solo .chd., en este ejemplo vemos cómo convirtió dos archivos .bin y el .cue, así como se redujo el peso de 646 MB a 384 MB

En este ejemplo también aplica para los .gdi a .chd.

En Linux / macOS

Primero ingresamos en la carpeta dentro de la Terminal, para este ejemplo usaremos 3do en un disco externo configurado con Batocera.

macOS:

cd /Volumes/nombre_disco_hdd/batocera/roms/3do

Linux:

Para la mayoría de las distros

cd /mnt/nombre_disco_hdd/batocera/roms/3do

En Ubuntu

cd /media/usuario/nombre_disco_hdd/batocera/roms/3do

Para comprimir todos los archivos en el directorio

Para .bin + .cue a .chd:

for i in *.cue; do chdman createcd -i "$i" -o "${i%.*}.chd"; done

Para .gdi a .chd:

for i in *.gdi; do chdman createcd -i "$i" -o "${i%.*}.chd"; done


Para comprimir cada archivo en subdirectorios dentro de una carpeta, teniendo en cuenta que ya estamos en la carpeta

for i in */*.cue; do chdman createcd -i "$i" -o "${i%.*}.chd"; done

De .gdi a .chd

for i in */*.gdi; do chdman createcd -i "$i" -o "${i%.*}.chd"; done

Como crear el archivo .cue

Sin el archivo .cue no podemos utilizar el proceso de compresión anteriormente visto, en caso de que tengas un ROMset y no lo tenga lo podemos crear en este sitio https://www.duckstation.org/cue-maker/ seleccionamos todos los archivos .bin del mismo nombre (Track 01 hasta X) > los soltamos en el cuadro [Drop your .bin files here!] y presionamos el botón [Download .cue file] y repetimos el proceso para cada uno.

Cortamos el archivo descargado .cue y lo pegamos donde están los .bin

Hay una versión de escritorio https://github.com/nielsbuus/psx_cue_maker_desktop/tree/master/dist del mismo autor Niels Buus., la cual encuentro mas complicada.

Tambien puedes descargar los Cuesheets para cada roms set en la pagina http://redump.org/downloads/

Convertir .iso a .chd

Este método puede ser utilizado para los ROMs.iso de PSX

En Windows

Editamos el archivo CUE or GDI to CHD.bat clic derecho y Editar

Agregamos , *.iso

Archivo Guardar y Cerrar o Salir

En Linux / macOS

for i in *.iso; do chdman createcd -i "$i" -o "${i%.*}.chd"; done

Todo en uno .cue, .gdi y .iso a .chd

for i in *.cue *.gdi *.iso; do chdman createcd -i "$i" -o "${i%.*}.chd"; done

Es normal si te marca un error si no encuentra ningún archivo con la extensión .cue / .gdi / .iso

Con cuáles sistemas y ROMs puedo usar este método de compresión.

Sistema Abreviación Ruta Extensiones
3DO Interactive Multiplayer 3do /userdata/roms/3do .iso .chd .cue
Amiga CD32 amigacd32 /userdata/roms/amigacd32 .bin .cue .iso .chd
Amiga CDTV amigacdtv /userdata/roms/amigacdtv .bin .cue .iso .chd .m3u
Dreamcast dreamcast /userdata/roms/dreamcast .cdi .cue .gdi .chd .m3u
FM-TOWNS fmtowns /userdata/roms/fmtowns .bin .m3u .cue .d88 .d77 .xdf .iso .chd .toc .nrg .gdi .cdr .mfi .dfi .hfe .mfm .td0 .imd .1dd .cqm .cqi .dsk .zip .7z
Macintosh macintosh /userdata/roms/macintosh .dsk .zip .7z .mfi .dfi .hfe .mfm .td0 .imd .d77 .d88 .1dd .cqm .cqi .dsk .ima .img .ufi .ipf .dc42 .woz .2mg .360 .chd .cue .toc .nrg .gdi .iso .cdr .hd .hdv .2mg .hdi
CD-i cdi /userdata/roms/cdi .chd .cue .toc .nrg .gdi .iso .cdr
Neo-Geo CD neogeocd /userdata/roms/neogeocd .cue .iso .chd
PC Engine CD pcenginecd /userdata/roms/pcenginecd .pce .cue .ccd .iso .img .chd
PC-FX pcfx /userdata/roms/pcfx .cue .ccd .toc .chd .zip .7z
PlayStation 2 ps2 /userdata/roms/ps2 .iso .mdf .nrg .bin .img .dump .gz .cso .chd
PlayStation psx /userdata/roms/psx .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso
Saturn saturn /userdata/roms/saturn .cue .ccd .m3u .chd .iso .zip
Sega CD segacd /userdata/roms/segacd .cue .iso .chd .m3u
Supergrafx supergrafx /userdata/roms/supergrafx .pce .sgx .cue .ccd .chd .zip .7z

Aunque para PS2 recomiendo el sistema de compresión CSO que veremos a continuación.

Comprimir PSP y PS2 en CSO

CSO es un formato comprimido mejor que el GZ., para ello usaremos la herramienta maxcso, este es su repositorio: https://github.com/unknownbrackets/maxcso

En Windows

Instalarlo:

Descarga su ultimo release en: https://github.com/unknownbrackets/maxcso/releases

La versión maxcso_v1.13.0_windows.7z es para sistemas 64 bits, si tienes un equipo viejo descarga maxcso_v1.13.0_windows-32bit.7z., requieres para descomprimirlos el 7z.

Uso:

Solo arrastra los archivos a maxcso.exe

Para convertir todos los archivos contenidos en la carpeta crearemos un archivo por lotes .bat lo podemos llamar ISO to CSO.bat, creamos un Documento de texto le ponemos el nombre de ISO to CSO.bat Si, clic derecho al archivo Editar

Escribimos el siguiente texto o copiamos y pegamos., guardamos y cerramos.

for /r %%i in (*.iso) do maxcso "%%i" -o "%%~ni.cso

Ejecutamos el ISO to CSO.bat dándole doble clic

Agregar velocidad al proceso, adicionamos el parámetro de –threads (Hilos por proceso)., si tienes un buen procesador de 8 nucleos te sugiero agregarle el valor de –threads=10

for /r %%i in (*.iso) do maxcso "%%i" --threads=2 -o "%%~ni.cso

En macOS

Aparte de gcc/g++ o clang (de Xcode o brew), también necesitarás librerías las cuales instalamos con brew, clonamos el repositorio y compilamos

Instalarlo:
brew install lz4
brew install libuv
brew install libdeflate
git clone https://github.com/unknownbrackets/maxcso.git
cd maxcso
make
sudo make install

En Linux

Aparte de gcc/g++ o clang instalamos con apt las librerías que se ocuparan, clonamos el repositorio y compilamos

Instalarlo:
sudo apt-get install git-core build-essential liblz4-dev libuv1-dev zlib1g-dev
git clone https://github.com/unknownbrackets/maxcso.git
cd maxcso
make
sudo make install
Uso:

Para este ejemplo usaremos las ISOs de PSP en Batocera usualmente se encuentra en la ruta /batocera/roms/psp., entramos en la carpeta y convertimos todas las .isos que contiene la carpeta en .cso

En macOS:

cd /Volumes/nombre_disco_hdd/batocera/roms/psp
for i in *.iso; do maxcso "$i"; done

Para cada archivo dentro de los subdirectorios

cd /Volumes/nombre_disco_hdd/batocera/roms/psp
for i in */*.iso; do maxcso "$i"; done

En Linux:

cd /media/usuario/nombre_disco_hdd/batocera/roms/psp
for i in *.iso; do maxcso "$i"; done

Para cada archivo dentro de los subdirectorios

cd /media/usuario/nombre_disco_hdd/batocera/roms/psp
for i in */*.iso; do maxcso "$i"; done

Comprimir Gamecube y Wii

La mejor manera de comprimir los roms de Gamecube y Wii es en formato RVZ, para ello ocupamos que ambos dos se encuentren en formato ISO.

Si tenemos .wbfs convertirlos a .iso

Si tenemos los ROMs de Wii en formato .wbfs hay que cambiarlos a .iso con la herramienta NKit v1.4 (descargamos y descomprimimos)., en este sitio se encuentra toda la documentación.

Ejecutamos NKitProcessingApp.exe

Vamos a la carpeta donde se encuentran los archivos .wbfs a convertir, los arrastramos al espacio donde indica Drag and Drop files here... en los Settings seleccionamos Convert to ISO y presionamos el botón Process

Los archivos procesados se encontrarán en la carpeta NKit_v1.4 > Processed > Wii_MatchFail copiamos los .iso a la carpeta donde concentramos tanto los de GameCube como Wii.

Eliminamos todos los .wbfs y .wbf[X]., recordemos que los .wbfs pueden dividirse en archivos con el_mismo_nombre.wbf1 hasta el_mismo_nombre.wbf[N] números, todos ellos conforman un solo.

Convertir .iso a .rvz

Descargamos el Emulador Dolphin y descomprimimos el archivo dolphin-master-5.0-16793-x64.7z entramos a la carpeta Dolphin-x64 y ejecutamos Dolphin.exe

Clic a Configuración luego Rutas y Añadir...

Seleccionamos la carpeta donde se encuentran las isos y cerramos la ventana

Se enlistan todas las ISOs, seleccionamos todos los elementos de la lista con el mouse o presionando ctrl + a presionamos clic derecho en lo seleccionado y clic a Convertir archivos seleccionados...

Conservamos estos parámetros, presionamos el botón Convertir... y seleccionamos la carpeta destino.

Al terminar el proceso presionamos Aceptar y vemos en el listado el nivel de compresión de los archivos tanto GC como Wii (los marcados con azul).

En macOS

Descarga la versión para macOS

Ejecuta estos parámetros en la terminal ya que por razones de seguridad no te va a permitir abrir la aplicación., reemplaza /path/to/ por la ruta donde se encuentre la app.

sudo xattr -r -d com.apple.quarantine /path/to/Dolphin.app
sudo xattr -r -d com.apple.quarantine /path/to/Dolphin\ Updater.app

En Linux

Ubuntu via Snap

sudo apt update
sudo apt install snapd
sudo snap install dolphin-emulator

Otras distros
https://wiki.dolphin-emu.org/index.php?title=Installing_Dolphin#Linux

Sigue el mismo proceso detallado en Convertir .iso a .rvz

Comprimir por lotes a Zip y 7z

Los emuladores más recientes también han abrazado la idea de aceptar archivos comprimidos Zip y 7z todo ello para facilitar a la comunidad de usuarios ahorrar espacio., ver listado completo de emuladores y extensiones permitidas claro ello incluyendo las descritas.

Windows

Descargar 7 Zip Extra y descomprime el archivo

El archivo contiene 7zxa.dll, 7za.exe y 7za.dll de 32 bits (para equipos antiguos) y dentro del folder x64 la versión 64 bits. 7-Zip es un programa de empaquetado y compresión de datos, con soporte para multitud de formatos 7z, ZIP, GZip, Bzip2 o TAR, entre los más conocidos y que destaca por su elevado ratio de compresión.

Vamos a comprimir las ROMs NES., creamos un archivo de texto clic derecho, Nuevo, Documentos de texto le ponemos el nombre de nes to zip.bat y presionamos el botón de Si.

Clic derecho, editar y escribimos, guardamos y cerramos.

for /r %%i in (*.nes) do 7za a -tzip "%%~ni.zip" "%%i"

Copiamos los archivos 7zxa.dll, 7za.exe y 7za.dll de la carpeta x64/x32 (dependiendo de tu equipo) en la carpeta de los roms y el bat.

Ejecutamos el archivo nes to zip.bat dándole doble clic

Al final se convertirán los archivos

Nes a 7z

Recomiendo la compresión en formato 7z ya que tiene más eficiente que Zip, sigue los pasos anteriores para crear un archivo bat por lotes nes to 7z.bat y escribe en él y ejecutalo.

for /r %%i in (*.nes) do 7za a -t7z "%%~ni.7z" "%%i"

Como hacerlo con las demás ROMs, la fórmula es sencilla solo hay que cambiar la extensión dentro del archivo por lotes .bat, por ejemplo para las ROMS de PC Engine / CD .pce:

De .pce a .zip

for /r %%i in (*.pce) do 7za a -tzip "%%~ni.zip" "%%i"

De .pce a .7z

for /r %%i in (*.pce) do 7za a -t7z "%%~ni.7z" "%%i"

¿Cómo funciona?

for = Cíclico
/r = Búsqueda recursiva incluyendo subdirectorios
%%i = Variable que es equivalente al nombre de cada archivo
in = conjunto de archivos a escanear en este caso *.pce
do = hacer a continuación los siguientes comandos

7za a -t[formato] paquete-comprimido archivo-a-comprimir
7za a -tzip «%%~ni.zip» «%%i» = Sintaxis para convertir a ZIP
7za a -t7z «%%~ni.7z» «%%i» = Sintaxis para convertir a 7z

En resumen toda la instrucción dicta que para cada archivo con extensión .pce en esta carpeta y en los subdirectorios ejecuta los parámetros de 7za para comprimir cada archivo en .zip o .7z

Así que solo cambia la extencion del archivo *.pce por la que quieras convertir, otro ejemplo Master System .sms

De .sms a .zip

for /r %%i in (*.sms) do 7za a -tzip "%%~ni.zip" "%%i"

De .sms a .7z

for /r %%i in (*.sms) do 7za a -t7z "%%~ni.7z" "%%i"

Descarga todos los archivos por lotes y herramientas descritas anteriormente incluyendo ISO to CSO.bat

Linux

Ubuntu

Instalamos con apt desde la Terminal si tienes una version Ubuntu anterior a la 14.04 cambia por apt-get

sudo apt install p7zip
sudo apt install p7zip-full
Otras distros:

Entramos a la carpeta donde se encuentran los ROMs, para este ejemplo los .nes., reemplaza /media/usuario/nombre_hdd/batocera/roms/nes por la ruta de la carpeta.

De .nes a .zip

cd /media/usuario/nombre_hdd/batocera/roms/nes
for i in *.nes; do 7z a -tzip "${i%.*}.zip" "$i"; done

De .nes a .7z

cd /media/usuario/nombre_hdd/batocera/roms/nes
for i in *.nes; do 7z a -t7z "${i%.*}.7z" "$i"; done

By

Publicado en