Hola Zoneros, os traigo un script que he montado para poder gestionar las roms de nuestras máquinas. Básicamente sirve para seleccionar y gestionar un lote de roms de un romset.
Mi motivación para hacer el script:No soy de los que necesitan toooodos los juegos con sus clones, simplemente me gustan algunos juegos que conozco, además de descubrir otros "buenos juegos" que no conozco. Por otro lado, tengo máquinas con y sin trackball, spinners... por lo que no quiero los mismos juegos en todas mis máquinas. Además, debido al hardware que tienen, cada equipo tiene una versión de mame instalada con su sistema operativo (Windows7, XP, Ubuntu del 10.04, ubuntu 21.04) así que con este batiburrillo de hardware, sistemas, mames, y mandos es complicado que un mismo lote de roms venga bien para todos los equipos.
Por otra parte, siempre está el tema de las roms, unas necesitan bios, otras no, los clones necesitan habitualmente una rom-parent, unas roms funcionan en unas versiones de Mame y en otras... pues no.
Necesitaba algo para hacer un "customromset" para cada uno de los equipos y que fuera fácil de gestionar y que me diera cierta garantía de que las roms funcionasen... y si no, pues una pista de porqué no funcionan.
Filosofía del script: El script se apoya por un lado en la versión del emulador de mame con la que quieres trabajar, y por otro lado con un romset (completo o no).
El script, entonces podrá operar con dichos juegos para: chequearlos, añadirlos o borrarlos a o en tu custom-romset.
Los ficheros del romset nunca se modifican. Solamente los ficheros de nuestro customromset que estamos preparando. Ya que nuestro customromset es una copia de lo que hay en las carpetas del romset.
Trabajando con el scriptEl script está hecho en python3. Podrás correrlo con un intérprete de python 3.7 en adelante. Tanto en Windows como en linux.
Para los usuarios de windows, hay una versión compilada para windows de 64bits.
El script necesitas correrlo desde un terminal, así que abre un cmd, o un terminal de linux, ve a la carpeta del equipo y ejecútalo.
en linux: python3 mameXML2SQLite3.py
en windows: mameXML2SQLite3.exe
Permite línea de comandos para indicarles principalmente dónde están las carpetas con los romset, y el XML con el que vas a trabajar. Aunque lo ideal es preparar una carpeta con la información siguiendo una estructura que tomará por defecto.
puedes obtener ayuda sobre la línea de comandos con el parámetro --help
Montando la estructura de carpetas por defectoPrepara una carpeta con esta estructura:
(en el caso del ejecutable, en vez de un .py, será un .exe)
bestgames.ini y catver.ini son archivos opcionales.
se pueden conseguir aquí:
www.progettosnaps.net/bestgames/www.progettosnaps.net/catver/Es un listado de "mejores juegos", dejando claro que los gustos son personales y de cada uno.
El fichero catver es un fichero donde se "catalogan" los juegos, sports/mature/driving/shooter.... etc...
Estos dos ficheros nos servirán para elegir o descartar por esta información.
Dentro de la carpeta de romset:
crear las siguientes carpetas:
- artwork
- chds
- cheat
- roms
- samples
a este nivel colocaremos el fichero xml generado por mame.
El fichero se genera llamando al ejecutable de mame con el parámetro -listxml y redirigiendo la salida a un fichero. En línea de comandos sería así:
mame -listxml > mame.xml
y dentro de artwork, crear la carpeta de "snaps"
Dentro de
snaps metemos tooodos las capturas de pantallas de los juegos, esos que utiliza nuestro frontend.
Dentro de
chds, meteremos los CHDs que tengamos, cada juego en una carpeta con su nombre, y dentro los CHDs que le corresponda.
Dentro de
cheat meteremos los ficheros .xml correspondientes a los cheats, o bien los comprimiremos todos en un solo ficheros llamado "cheat.zip"
Dentro de
roms meteremos los ficheros de roms y bios del romset.
Dentro de
samples meteremos los ficheros de samples, cada uno comprimido en ZIP con el nombre de cada juego.
Una vez que tenemos las carpetas preparadas, ejecutaremos el script.
Creando la base de datosLa primera vez, el script leerá el fichero XML y generará una base de datos SQLite3 con información. Para los que sepan cómo utilizarla, pueden consultar información de forma más eficiente que en un fichero XML mastodóntico.
y luego te dará diferentes opciones:
Las primeras opciones si vas a gestionar un listado de juegos, será añadir los ficheros de bestgames.ini y catver.ini (opciones 5 y 6)
Y luego podemos ir montando nuestro romset con las opciones 2, 3 añadir o eliminar juego. o chequear con la opción 4.
Hasta aquí sería hacerlo juego a juego, pero podemos generar el proceso por lotes y gestionar el listado de juegos en una hoja de cálculo.
para ello, le damos a la opción 7.
Y en la carpeta de
customromset aparecerá un fichero de datos CSV.
Si lo abrimos con una hoja de cálculo, tendremos información de los juegos y podremos chequearlos en el "romset", añadiros o borrarlos de nuestro "customromset".
Al abrir el fichero en la hoja de cálculo, no olvidar que es un fichero simple separado por
TABuladores:
Las columnas que ofrece son:
action
name
description
cloneof
chd
year
manufacturer
display_type
display_rotate
driver_savestate
driver_emulation
isbios
isdevice
input_players
input_buttons
input_coins
controls_ctrl_type
catver
En la columna "action" podremos indicarle acciones a realizar por el script.
Por ejemplo, yo voy a chequear el juego "1941", a añadir el juego "1942" y a borrar el juego "1943"
Podremos poner todos los "add", "remove" y "check" que queramos en la columna action.
También podremos crear nuevas columnas para controlar la información que necesitemos.
Recuerda guardar este fichero en CSV separado por
TABuladores nuevamente.
Cuando guardemos el fichero, en el script, seleccionar la opción 8 y esperar a que termine el proceso. Cuando termine, podemos recargar el fichero CSV o volver a abrirlo para ver los cambios.
Rellenar el fichero con los juegos que tengoPuedes generar el fichero gamelist.csv y rellenarlo con las "customromset/roms" que tienes. para esto, utiliza la opción 9.
Separar las bios de las romsLas versiones más antiguas de mame, necesitan tener en una misma carpeta las roms y las bios, y muchos frontends incluyen en sus listados las roms y las bios (sin tener opción a filtrarlas para eliminarlas). Si este es tu caso, utiliza la opción 10 para mover las bios desde la carpeta de "customromset/roms" hasta una nueva carpeta situada en "customromset/bios".
Actualiza la lista de juegos en tu frontend y luego vuelve a colocarlas junto con las roms. De esta manera desaparecerán en tu listado del frontend.
Y poco más. Espero que os sea de ayuda.
ah!, se me olvidaba:
La pagina de desarrollo aquí:
https://github.com/pablo33/mameXML2SQLite3La descarga directa del compilado para windows x64 aquí:
https://github.com/pablo33/mameXML2SQLite3...XML2SQLite3.zipSeguramente no esté exento de bugs, si encontráis alguno, por favor, informarlos en la página de Github junto con el error que da y la descripción.
No prometo nada, haré lo que pueda en la medida de lo posible, ya que solo me dedico a programar en mis ratos libres.
Saludos!
Edited by pablo33 - 14/10/2022, 11:31