Modificamos el bat launch_mame_direct.bat desde la carpeta plugings que ya usamos para llamar al script del giro en el restrictor. (C:\RetroBat\plugins)
@echo off
REM RESTRICTOR (4/8/0)
python "C:\RetroBat\plugins\restrictor.py" %1
REM =========================
REM Lanza directamente MAME con la ROM que le pasa RetroBat
cd /d "C:\RetroBat\emulators\mame"
mame.exe %1
REM =========================
REM POST-LANZAMIENTO (EXIT)
REM =========================
python "C:\RetroBat\plugins\restrictor.py"Se añade la parte el EXIT, para llamar al giro de pantalla y que vuelva al horizontal cada vez que salimos del juego.
Por supuesto, también modificamos el archivo restrictor.py (misma carpeta) en el que añadimos la parte del giro de pantalla
import serial
import serial.tools.list_ports
import sys
import time
import os
# ================= CONFIG =================
COM_RESTRICTOR = "COM7" # Pro Micro restrictor
COM_ORIENTACION = "COM5" # Pro Micro giro pantalla
BAUDRATE = 115200
# -------- 4 WAY --------
lista_4 = [
"pacman", "puckman", "galaga",
"digdug", "donkeykong", "dkong",
"frogger"
]
# -------- 8 WAY --------
lista_8 = [
"sf2", "sf2ce", "sf2hf",
"ssf2", "mk", "mk2", "mk3", "umk3",
"kof94", "kof95", "kof96", "kof97",
"kof98", "kof99",
"samsho", "samsho2"
]
# -------- VERTICALES --------
lista_vertical = [
"pacman", "galaga", "dkong", "frogger",
"1942", "1943", "commando"
]
# ================= FUNCIONES =================
def contiene(lista, rom):
for item in lista:
if item in rom: # coincidencia parcial (clones incluidos)
return True
return False
def puerto_disponible(nombre):
puertos = [p.device for p in serial.tools.list_ports.comports()]
return nombre in puertos
def enviar(puerto, mensaje):
if not puerto_disponible(puerto):
return # si no está conectado, no hace nada
try:
with serial.Serial(puerto, BAUDRATE, timeout=1) as ser:
time.sleep(1.2) # necesario por reset del Pro Micro
ser.write((mensaje + "\n").encode())
except:
pass
# ================= MAIN =================
if __name__ == "__main__":
# 👉 SALIDA DEL JUEGO → HOME
if len(sys.argv) < 2 or sys.argv[1] == "":
enviar(COM_RESTRICTOR, "0") # cuadrado
enviar(COM_ORIENTACION, "H") # horizontal
sys.exit(0)
rom_path = sys.argv[1]
rom = os.path.splitext(os.path.basename(rom_path))[0].lower()
# ---------------- CONTROL (RESTRICTOR) ----------------
if contiene(lista_4, rom):
control = "4"
elif contiene(lista_8, rom):
control = "8"
else:
control = "0"
# ---------------- ORIENTACIÓN ----------------
if contiene(lista_vertical, rom):
modo = "V"
else:
modo = "H"
# ---------------- ENVÍO ----------------
enviar(COM_RESTRICTOR, control)
enviar(COM_ORIENTACION, modo)El script se modifcará con los listados que añadí en anterores logs
SrRubio
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.