[Batch] [Mini-Aporte] MAME Panel (Una tool para el emulador MAME)

Iniciado por Eleкtro, 9 Abril 2012, 10:19 AM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro



 

Un script para los aficionados a los Arcades (Como yo).

Cuenta con varias utilidades para manejar ciertos aspectos del emulador Mame y/o MameUI32/MameUI64  (Tengo que decir que solo lo he probado con la gui MameUI)

-Se puede arrastrar una rom al bat para ejecutarla. (Con MAME/Mameui no se puede a menos que la ROM esté en el directorio "ROMS"... Por eso empezé a hacer este script.)

Otras cosas que se pueden hacer son:

- Ejecutar una rom escribiendo el nombre.
- Ejecutar una rom al azar.
- Buscar una rom.
- Listar las roms disponibles.
- Eliminar una rom.
- Ejecutar MAME
- Descargar la última base de trucos (cheat.zip)
- Ejecutar un pequeño limpiador/organizador de roms creado por mi.


Notas:

El script tiene que ejecutarse en el directorio donde tiene su mame.exe o mameui32.exe/mameui64.exe

Algunas partes del script requieren ciertos programas para el correcto funcionamiento del code. De todas formas si no tiene ninguna de estas utilidades, No pasa nada, simplemente esa parte se "saltará".

CitarColous    (Para mostrar el scrpt coloreado)
Irfanview  (Para redimensionar las imagenes en el limpiador)
Wget      (Para descargar el cheat.zip)
7z          (Para descomprimir el cheat.zip)



Algunas imagenes:

 

 

 


El code:

@Echo OFF
Title Mame Panel v1.0

:: :: :: :: :: :: :: ::
:: By Elektro H@cker ::
:: :: :: :: :: :: :: ::

:: Configuración :: :: :: :: :: :: :: :: :: :: :: :: :: ::
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::

REM Modifica el nombre de los ejecutable si es necesario...

:: Obligatorio:
Set MAME=MameUI64.exe

:: Opcional:
Set COLOUS=%windir%\system32\colous.exe
Set IRFANVIEW=%windir%\system32\i_view32.exe
Set NIRCMD=%windir%\system32\nircmd
Set WGET=%windir%\system32\wget.exe
Set ZIP=%windir%\system32\7z.exe
:: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: :: ::

Mode con cols=80 lines=20
%NIRCMD% win center ititle "Mame Panel v1.0" 2>Nul
PUSHD "%~dp0"
IF NOT exist %MAME% (Exit /B 1)
IF exist "%~1" (Goto :Play_New)

:Invaders
call :Logo
%COLOUS% writesec "[7]                               By Elektro H@cker" 2>Nul || Echo:                               By Elektro H@cker
Echo:                                           ÛÛÛÛÛÛÛÛ
Echo:         ÛÛ          ÛÛ                     ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:     ÛÛ    ÛÛ      ÛÛ    ÛÛ                   ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:     ÛÛ  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  ÛÛ                   ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:     ÛÛÛÛÛÛ  ÛÛÛÛÛÛ  ÛÛÛÛÛÛ                   ÛÛÛÛÛÛ    ÛÛÛÛ    ÛÛÛÛÛÛ
Echo:       ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ                     ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:         ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ                             ÛÛÛÛ    ÛÛÛÛ
Echo:         ÛÛ          ÛÛ                           ÛÛÛÛ  ÛÛÛÛ  ÛÛÛÛ
Echo:       ÛÛ              ÛÛ                           ÛÛÛÛ    ÛÛÛÛ
Call :Wait
call :Logo
Echo+
Echo:                                                           ÛÛÛÛÛÛÛÛ
Echo:         ÛÛ          ÛÛ                              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:           ÛÛ      ÛÛ                              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:         ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ                            ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:       ÛÛÛÛ  ÛÛÛÛÛÛ  ÛÛÛÛ                          ÛÛÛÛÛÛ    ÛÛÛÛ    ÛÛÛÛÛÛ
Echo:     ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ                        ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo:     ÛÛ  ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ  ÛÛ                              ÛÛÛÛ    ÛÛÛÛ
Echo:     ÛÛ  ÛÛ          ÛÛ  ÛÛ                            ÛÛÛÛ  ÛÛÛÛ  ÛÛÛÛ
Echo:           ÛÛÛÛ  ÛÛÛÛ                              ÛÛÛÛ                ÛÛÛÛ
%COLOUS% writesec "[7]                               By Elektro H@cker" 2>Nul || Echo:                               By Elektro H@cker
Call :Wait
Set /A Animation+=1
IF %Animation% EQU 6 (Goto :Menu)
Goto :Invaders

:Logo
Cls
Set Rom=
Echo+
Echo:      _______ _______ _______ _______      ______                       __
Echo:     ^|   ^|   ^|   _   ^|   ^|   ^|    ___^|    ^|   __ \.---.-..-----..-----.^|  ^|
Echo:     ^|       ^|       ^|       ^|    ___^|    ^|    __/^|  _  ^|^|     ^|^|  -__^|^|  ^|
Echo:     ^|__^|_^|__^|___^|___^|__^|_^|__^|_______^|    ^|___^|   ^|___._^|^|__^|__^|^|_____^|^|__^|
Echo:
%COLOUS% Writesec "[8]     ÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈÈ" 2>NUL || Echo:     ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
Echo+
Goto :EOF

:Wait
ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul
ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul
ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul
ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul
ping -n 1 localhost >nul & ping -n 1 localhost >nul & ping -n 1 localhost >nul
Goto :EOF

:Menu
Call :Logo
%COLOUS% writesec "[7]     ([10]1[7]) Jugar rom al azar.               ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+  || Echo:     (1) Jugar rom al azar.               (M) Ejecutar M.A.M.E.    | MORE
%COLOUS% writesec "[7]     ([10]2[7]) Buscar rom.                      ([10]O[7]) Ir al organizador." 2>Nul && Echo+ || Echo:     (2) Buscar rom.                      (O) Ir al organizador.   | MORE
%COLOUS% writesec "[7]     ([10]3[7]) Listar roms disponibles.         ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+  || Echo:     (3) Listar roms disponibles.         (S) Salir...             | MORE & Echo+
%COLOUS% writesec "[7] Opcion [10]/[7] Nombre de la rom?" 2>Nul && Echo+                                             || Echo:  ¨Opci¢n / Nombre de la rom? | MORE
%COLOUS% Cursoron 2>Nul
Set /P ROM=^>^>
IF NOT defined ROM (Goto :Menu)
IF "%ROM%" EQU "1" (Goto :Random)
IF "%ROM%" EQU "2" (Goto :Search)
IF "%ROM%" EQU "3" (Goto :List)
IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit)
IF /I "%ROM%" EQU "O" (Goto :Manager)
IF /I "%ROM%" EQU "S" (Exit /B 0)
Start /B %MAME% %ROM%
Goto :Menu

:Play_New
Move %1 ".\roms\" >Nul
Start /W %MAME% "%~n1"
Echo: Si no te ha gustado la rom, Puedes borrarla... | MORE
Choice /M "¨Borrar la rom %~nx1 ?"
IF errorlevel 1 (Del /Q ".\Roms\%~nx1")
Goto :Menu

:List
Dir /W /P /A-D ".\Roms\*" ^| Find /V "bytes" | MORE /E /C +2
Pause
Goto :Menu

:Random
Setlocal enabledelayedexpansion
Del /Q "%temp%\roms.tmp" 2>Nul
For /F "Tokens=*" %%# in ('Dir /B ".\Roms\*"') do (Echo !Random!!Random!;%%#>>"%temp%\roms.tmp")
For /F "Tokens=2 Delims=;" %%# in ('Type "%temp%\roms.tmp" ^| Sort') do (Start /B %MAME% %%# && Endlocal && Goto :Menu)

:Search
Call :Logo
%COLOUS% writesec "[7]     Busca una rom en tu colecion...      ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+ || Echo:     Busca una rom en tu colecion...      (M) Ejecutar M.A.M.E. | MORE
%COLOUS% writesec "[7]     Ejemplo: [10]kof[7]                         ([10]V[7]) Volver..." 2>Nul && Echo+  || Echo:     Ejemplo: kof                         (V) Volver...         | MORE
%COLOUS% writesec "[7]                                          ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+ || Echo:                                          (S) Salir...          | MORE & Echo+
%COLOUS% writesec "[7] Nombre de la rom?" 2>Nul && Echo+                                                     || Echo:  ¨Nombre de la rom? | MORE
%COLOUS% Cursoron 2>Nul
Set /P ROM=^>^>
IF NOT defined ROM (Goto :Search)
IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit)
IF /I "%ROM%" EQU "V" (Goto :Menu)
IF /I "%ROM%" EQU "S" (Exit /B 0)
Cls
Echo+
%COLOUS% writesec "[7] Buscando roms con el patron [10]*%ROM%*[7] ..." 2>Nul && Echo+ || Echo: Buscando roms con el patr¢n: *%Rom%* ... | MORE
%COLOUS% Cursoron 2>Nul
Dir /B /A ".\Roms\*%rom%*" | MORE
Pause
Goto :Search

:Manager
Call :Logo
%COLOUS% writesec "[7]     ([10]1[7]) Descargar CheatDatabase          ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+ || Echo:     (1) Descargar CheatDatabase          (M) Ejecutar M.A.M.E. | MORE
%COLOUS% writesec "[7]     ([10]2[7]) Ejecutar el limpiador            ([10]V[7]) Volver..." 2>Nul && Echo+         || Echo:     (2) Ejecutar el limpiador            (V) Volver...         | MORE
%COLOUS% writesec "[7]     ([10]3[7]) Eliminar una rom.                ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+ || Echo:     (3) Eliminar una rom.                (S) Salir...          | MORE & Echo+
%COLOUS% writesec "[7] Opcion?" 2>Nul && Echo+                                                                      || Echo:  ¨Opci¢n? | MORE
%COLOUS% Cursoron 2>Nul
Set /P ROM=^>^>
IF NOT defined ROM (Goto :Manager)
IF "%ROM%" EQU "1" (Call :Cheats)
IF "%ROM%" EQU "2" (Goto :Cleaner)
IF "%ROM%" EQU "3" (Goto :Delete)
IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit)
IF /I "%ROM%" EQU "V" (Goto :Menu)
IF /I "%ROM%" EQU "S" (Exit /B 0)
Goto :Manager

:Cheats
Call :Logo
IF NOT exist "%wget%" (Echo Para usar esta opcion necesita instalar wget... | MORE & Pause & Goto :EOF)
IF NOT exist "%zip%"  (Echo Para usar esta opcion necesita instalar 7zip... | MORE & Pause & Goto :EOF)
%COLOUS% writesec "[7] Conectando con la pagina de [10]Pugsy's [7]..." 2>Nul && Echo+ || Echo: Conectando con la pagina de Pugsy's ... | MORE
%WGET% -q -t 3 http://cheat.retrogames.com/ -O "%temp%\mameloader_cheat.html.tmp" 1>Nul
%COLOUS% writesec "[7] Buscando la ultima version del archivo ..." 2>Nul && Echo+ || Echo: Buscando la £ltima versi¢n del archivo ... | MORE
For /F "tokens=3 Delims==>" %%# in ('Type "%temp%\mameloader_cheat.html.tmp" ^| Find /I "XML Cheat Collection for MAME" ^| Find /V /I "ZIP"') Do (Set CheatDatabase=%%#)
%COLOUS% writesec "[7] Descargando [10]%CheatDatabase:~10,-1% [7]..." 2>Nul && Echo+ || Echo: Descargando %CheatDatabase:~10,-1% ... | MORE
%WGET% -q -t 3 "http://cheat.retrogames.com/%CheatDatabase:~1,-1%" -O "%temp%\%CheatDatabase:~10,-1%" 1>Nul
%COLOUS% writesec "[7] Descomprimiendo [10]%CheatDatabase:~10,-1% [7]en la carpeta [10]cheat [7]..." 2>Nul && Echo+ || Echo: Descomprimiendo %CheatDatabase:~10,-1% en la carpeta "cheat" ... | MORE
%ZIP% e "%temp%\%CheatDatabase:~10,-1%" -o"%temp%\" cheat.zip -aoa 1>nul
%ZIP% e "%temp%\cheat.zip" -o".\cheat\" *.xml -aoa 1>nul
Echo: Listo! | MORE
%COLOUS% Cursoron 2>Nul
Pause
Goto :EOF


:Cleaner
Setlocal enabledelayedexpansion
Call :Logo
Echo+
%COLOUS% writesec "[7]El limpiador se encarga de redimensionar las imagenes de la carpeta titles y eliminar los archivos de las demas carpetas que no tengan una rom asociada en la carpeta [10]ROMS[7]." 2>Nul && Echo+ || Echo: El limpiador se encarga de redimensionar las imagenes de la carpeta titles y eliminar los archivos de las demas carpetas que no tengan una rom asociada en la carpeta ROMS. | MORE
%COLOUS% writesec "[7]Los archivos listos para su eliminacion se moveran a la carpeta [10]_Eliminados [7]del directorio de MAME." 2>Nul && Echo+ || Echo: Los archivos listos para su eliminacion se moveran a la carpeta "_Eliminados" del directorio de MAME. | MORE
%COLOUS% Cursoron 2>Nul
Choice /M "¨Ejecutar el limpiador?"
IF !Errorlevel! EQU 2 (Goto :Manager) Else (Call :Logo)
Call :Resizer_title_png
Call :Resizer_title_ico
Call :Clean cfg
Call :Clean cheat
Call :Clean diff
Call :Clean icons
Call :Clean_Folder nvram
Call :Clean snap
Call :Clean titles
Echo: Listo. | MORE
%COLOUS% Cursoron 2>Nul
Pause
Goto :Manager

:Clean
%COLOUS% writesec "[7] Eliminando archivos sin rom asociada en la carpeta: [10]%~1" 2>Nul || Echo: Eliminando archivos sin rom asociada en la carpeta: %~1
FOR /F "Tokens=*" %%a in ('Dir /B /A ".\%~1" ^| Find /V /I "Default.cfg" ^| Find /V /I "output.xml"') do (
Set "Rom=%%a"
IF NOT exist ".\Roms\!Rom:~0,-4!.zip" (
IF NOT exist ".\Roms\!Rom:~0,-4!" (
%COLOUS% writesec "[14] %%a" 2>nul || Echo: %%a
MKDir ".\_Eliminados\%~1" 2>NUL
Move /Y "%~1\%%a" ".\_Eliminados\%~1\" >NUL
)
)
)
Echo+
Goto :EOF

:Clean_Folder
%COLOUS% writesec "[7] Eliminando archivos sin rom asociada en la carpeta: [10]%~1" 2>Nul || Echo: Eliminando archivos sin rom asociada en la carpeta: %~1
FOR /F "Tokens=*" %%a in ('Dir /B /AD ".\%~1" ^| Find /V /I "Default.cfg" ^| Find /V /I "output.xml"') do (
IF NOT exist ".\Roms\%%a.zip" (
%COLOUS% writesec "[14] %%a" 2>nul || Echo: %%a
MKDir ".\_Eliminados\%~1" 2>NUL
Move /Y "%~1\%%a" ".\_Eliminados\%~1\" >NUL
)
)
Echo+
Goto :EOF

:Resizer_title_png
REM Redimensionar titles a 512x512 px (Y formato PNG)
%COLOUS% writesec "[7] Redimensionando los titles a PNG 512x512 px ..." 2>Nul || Echo: Redimensionando los titles a PNG 512x512 px ...
%IRFANVIEW% "%CD%\titles\* /resize=(512,512) /resample /convert=*.png" 2>NUL || IF NOT exist "%IRFANVIEW%" (Echo: Para usar esta opcion necesita instalar Irfanview... | MORE)
Del /Q "%CD%\titles\*.bmp", "%CD%\titles\*.gif", "%CD%\titles\*.ico", "%CD%\titles\*.jpg", "%CD%\titles\*.jpeg", "%CD%\titles\*.tif" 2>Nul
Echo+
Goto :EOF

:Resizer_title_ico
REM Convertir titles a iconos 32x32
%COLOUS% writesec "[7] Convirtiendo los titles a iconos de 32x32 px ..." 2>Nul || Echo: Convirtiendo los titles a iconos de 32x32 px ...
%IRFANVIEW% "%CD%\titles\* /resize=(32,32) /convert=..\icons\*.ico" 2>NUL || IF NOT exist "%IRFANVIEW%" (Echo: Para usar esta opcion necesita instalar Irfanview... | MORE)
Echo+
Goto :EOF

:Delete
Call :Logo
%COLOUS% writesec "[7]     Elimina una rom escribiendo          ([10]M[7]) Ejecutar M.A.M.E." 2>Nul && Echo+        || Echo:     Busca una rom en tu colecion...      (M) Ejecutar M.A.M.E. | MORE
%COLOUS% writesec "[7]     su nombre...                         ([10]V[7]) Volver..." 2>Nul && Echo+                || Echo:     Ejemplo: kof                         (V) Volver...         | MORE
%COLOUS% writesec "[7]     Ejemplo: [10]kof2000[7]                     ([10]S[7]) Salir..." 2>Nul && Echo+ && Echo+ || Echo:                                          (S) Salir...          | MORE & Echo+
%COLOUS% writesec "[7] Nombre de la rom?" 2>Nul && Echo+                                                            || Echo:  ¨Nombre de la rom? | MORE
%COLOUS% Cursoron 2>Nul
Set /P ROM=^>^>
IF NOT defined ROM (Goto :Delete)
IF /I "%ROM%" EQU "M" (Start /B %MAME% && Exit)
IF /I "%ROM%" EQU "V" (Goto :Manager)
IF /I "%ROM%" EQU "S" (Exit /B 0)
Cls
Echo+
Set Rom=%ROM:.zip=%
IF NOT exist ".\Roms\%Rom%.zip" (
%COLOUS% writesec "[7] Rom no encontrada..." 2>Nul && Echo+ || Echo: Rom no encontrada... | MORE
%COLOUS% writesec "[7] Mostrando resultados parecidos:" 2>Nul && Echo+ || Echo: Mostrando resultados parecidos: | MORE
%COLOUS% Cursoron 2>Nul
Dir /B /A ".\Roms\*%rom%*" | MORE
Pause
) Else (
Del /Q ".\Roms\%Rom%.zip"
%COLOUS% writesec "[7] Rom [10]%ROM%.zip [7]eliminada ..." 2>Nul && Echo+ || Echo: Rom %ROM%.zip eliminada ... | MORE
%COLOUS% Cursoron 2>Nul
Pause
)
Goto :Delete


Salu2.: