Close

Envío System/Rom desde Batocera (LINUX) . Falta chequear

A project log for THE ULTIMATE MINI ARCADE

Classic arcade with all the latest technological advancements, ready for the classics. Enjoy!

srrubioSrRubio 08/28/2025 at 12:350 Comments
  1. Cuando seleccionas un juego en el menú → enviamos system:rom.
  2. Cuando sales al menú (sin juego seleccionado todavía) → enviamos logo.

Con esto tu RPi recibirá exactamente lo mismo que ya recibe desde RetroBat.

1. Script unificado para envío

📌 /userdata/marquee/send_marquee.sh

#!/bin/bash
set -euo pipefail

# ===== CONFIG =====
RPI_IP="192.168.1.138"   # cambia si usas otra IP
RPI_PORT=12345
SEPARATOR=":"
LOG="/tmp/marquee_batocera.log"
# ==================

ts(){ date +"%Y-%m-%d %H:%M:%S,%3N"; }
log(){ printf "%s %s\n" "$(ts)" "$*" >> "$LOG"; }

send_line(){  local line="$1"  if command -v nc >/dev/null 2>&1; then    echo -n "$line" | nc "$RPI_IP" "$RPI_PORT" && { log "[TX nc] <$line>"; return; }  fi  if command -v socat >/dev/null 2>&1; then    echo -n "$line" | socat - "TCP:$RPI_IP:$RPI_PORT" && { log "[TX socat] <$line>"; return; }  fi  log "[FAIL] <$line>"
}

rom_basename(){  local full="$1"  local base="$(basename "$full")"  echo "${base%.*}"
}

case "$1" in  game-selected)    # EmulationStation pasa: $2=system, $3=rom path, $4=rom name (según versión)    system="$2"    rom="$(rom_basename "$3")"    send_line "${system}${SEPARATOR}${rom}"    ;;  game-end)    # Al salir del juego volvemos al logo    send_line "logo"    ;;  *)    log "[WARN] Llamada desconocida: $*"    ;;
esac


chmod +x /userdata/marquee/send_marquee.sh


2. Hook de selección de juego

📌 /userdata/system/configs/emulationstation/scripts/game-selected/send_selected.sh

#!/bin/bash
exec /userdata/marquee/send_marquee.sh game-selected "$@"


chmod +x /userdata/system/configs/emulationstation/scripts/game-selected/send_selected.sh


3. Hook de salida de juego → “logo”

📌 /userdata/system/configs/emulationstation/scripts/game-end/send_end.sh

#!/bin/bash
exec /userdata/marquee/send_marquee.sh game-end "$@"


chmod +x /userdata/system/configs/emulationstation/scripts/game-end/send_end.sh


4. Comprobación

Discussions