Zona Arcade. Construye, Restaura y Decora tu Máquina Arcade y Pinball.

mameXML2SQLite3, Gestiona tu set de roms personalizado

« Older   Newer »
  Share  
view post Posted on 14/9/2021, 17:29     +1   -1
Avatar


Group:
Moderator
Posts:
2,025
Location:
Sevilla

Status:


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 script
El 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 defecto
Prepara una carpeta con esta estructura:
588
(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:
587
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 datos
La 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:
589

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.
592

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:
590

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.

591

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.
593


Rellenar el fichero con los juegos que tengo
Puedes 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 roms
Las 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/mameXML2SQLite3

La descarga directa del compilado para windows x64 aquí:
https://github.com/pablo33/mameXML2SQLite3...XML2SQLite3.zip

Seguramente 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
 
Top
view post Posted on 20/9/2021, 15:54     +1   -1
Avatar


Group:
Moderadores
Posts:
17,878
Location:
Zona Arcade.

Status:


Buen trabajo Pablo, merece hacerlo tutorial o importante con sus resultados o soluciones al ejecutarlo.

Podemos añadir imágenes o capturas de los pasos a seguir y de los ficheros.

Está claro que este documento lleva sus horas de dedicación.

Queda un romset impoluto.

Saludos
 
Web Contacts  Top
view post Posted on 20/9/2021, 23:20     +1   -1
Avatar


Group:
Member
Posts:
540
Location:
leon

Status:


Que de información, muy útil para limpiar romset muchas gracias en cuanto pueda lo pongo en práctica
 
Top
view post Posted on 27/9/2021, 20:33     +1   -1


Group:
Member
Posts:
2

Status:


Me lo apunto ya digo resultados.

Fantastico software

Gracias.
 
Top
3 replies since 14/9/2021, 17:29   186 views
  Share