Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Techniques informatiques
Choisissez une musique :

Batocera : gérer les ROMS Amstrad CPC multi-disques

21/07/2026

Paramétrer Batocera pour lancer les jeux Amstrad CPC tenant sur une disquette ne pose pas de problème : le jeu est automatiquement décompressé et lu par RetroArch. C'est lorsqu'il s'agit de jeux tenant sur plusieurs disquettes que des soucis peuvent se présenter.

Sur émulateur, l'approche classique pour gérer les jeux nécessitant plusieurs disques consiste à :

  • Créer un fichier M3U listant les fichiers DSK du jeu
  • Placer les fichiers DSK dans ce même répertoire car RetroArch ne lit pas directement les archives

Plusieurs inconvénients se présentent sur cette façon de faire :

  • Les fichiers DSK ne sont pas compressés dans le répertoire des ROMs (alors qu'on obtient régulièrement des taux de compression de 300% sur les DSK)
  • On a plusieurs fichiers pour un seul jeu : il est quand même plus pratique de ne manipuler qu'un seul fichier par jeu. Et le fichier M3U parasite légèrement le répertoire car il ne s'agit pas d'une ROM en soit.
  • EmulationStation affiche le jeu en plusieurs exemplaires : un par disque et un pour le fichier M3U.

Nouvelle approche proposée

Dans mon cas, je souhaite utiliser un seul fichier 7Zip par jeu, et ceci quelque soit le nombre de disques.

Voici le fonctionnement pour mettre ceci en place :

  • Chaque archive (ZIP ou 7ZIP) contient l'ensemble des fichiers DSK ainsi qu'un fichier M3U.
  • Le fichier M3U liste les fichiers DSK, sans présenter de sous-répertoire. Par exemple :
    Sram_Disk_1_of_2.dsk
    Sram_Disk_2_of_2.dsk
  • Lors du scan des jeux par EmulationStation, un seul fichier ROM est trouvé : celui de l'archive.
  • Lors du lancement d'un jeu, un script dédié se cale avant l'appel à RetroArch et décompresse les fichiers DSK dans le répertoire attendu par RetroArch.
  • EmulationStation continue le lancement et envoie à RetroArch le nom de l'archive. RetroArch décompresse uniquement le fichier M3U.

Mise en place d'un script de décompression de ROM

  • Il faut savoir que les scripts présents dans /userdata/system/scripts sont lancés par EmulationStation dans plusieurs cas :
    • Juste après avoir lancé un jeu et avant le lancement de RetroArch
    • Lorsqu'un jeu est fermé dans RetroArch
  • Il s'agit donc d'exploiter ce fonctionnement en créant un script dédié. Paramétrez le répertoire du script :
    mkdir /userdata/system/scripts/
    touch /userdata/system/scripts/lancement_rom_amstrad_cpc.sh
    chmod +x /userdata/system/scripts/lancement_rom_amstrad_cpc.sh
  • Modifiez le fichier lancement_rom_amstrad_cpc.sh ainsi créé et collez-y le code suivant :
    #!/bin/bash
    set -e

    # Ce script gère la décompression de ROMS pour Amstrad CPC tenant sur plusieurs disquettes
    # Pré-requis :
    # ------------
    # - Avoir une archive zip/7zip contenant les fichiers DSK + un fichier MP3 les listant
    # - Le fichier M3U liste l'ensemble des fichiers DSK
    # A noter que ces fichiers DSK ne doivent pas contenir les caractères : ( )
    #
    # Fonctionnement :
    # ----------------
    # Seul le fichier M3U est extrait par RetroArch tandis que les fichiers DSK sont extraits par ce script,
    # pour les placer dans le répertoire temporaire
    #
    # Eric Quillévéré / juillet 2026
    #

    CHEMIN_7Z="/usr/bin/7z"
    REP_EXTRACTION_ROM="/userdata/system/configs/retroarch/cache/"
    SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
    LOG="
    $SCRIPT_DIR/lancement_rom.log"

    ACTION="
    ${1:-}"
    SYSTEM="
    ${2:-}"
    chemin_complet_archive="
    ${5:-}"

    # Supprime le fichier de log
    rm -f "
    $LOG"

    echo "
    === $(date -Is) ===" >>"$LOG"
    echo "
    - Fichier ROM : $chemin_complet_archive" >> "$LOG"

    if [ -n "
    $chemin_complet_archive" ] \
    && { [ "
    ${chemin_complet_archive<a class="lien_interne" href="/programmation/langages/php/creer-tache-cron-serveur-php_14508.htm">Créer une tâche CRON pour PHP</a>*.}" = "7z" ] || [ "${chemin_complet_archive<a class="lien_interne" href="/programmation/langages/php/creer-tache-cron-serveur-php_14508.htm">Créer une tâche CRON pour PHP</a>*.}" = "zip" ]; } \
    && [ "
    $SYSTEM" = "amstradcpc" ]; then

        echo "
    - Rep extraction : $REP_EXTRACTION_ROM" >>"$LOG"

        case "
    $ACTION" in
            gameStart)

                # Supprime le contenu du répertoire
                find "
    $REP_EXTRACTION_ROM" -mindepth 1 -delete

                # Vérifie accès 7Z
                if [ -z "
    $CHEMIN_7Z" ] || [ ! -x "$CHEMIN_7Z" ]; then
                    echo "
    ERREUR: 7z non trouvable/executable. PATH=$PATH" >>"$LOG"
                    exit 1
                fi

     cmd=(
     "
    $CHEMIN_7Z" x -y -bb0 -bso0 -bsp0
     -o"
    $REP_EXTRACTION_ROM"
     "
    $chemin_complet_archive" "*.dsk" "*.DSK"
     )

     printf '%q ' "
    ${cmd[@]}" >>"$LOG"; printf '\n' >>"$LOG"
     "
    ${cmd[@]}" >>"$LOG" 2>&1
                rc=$?
                echo "
    - Code retour 7zip : $rc" >>"$LOG"

             ;;
            gameEnd|gameStop)
             find "
    $REP_EXTRACTION_ROM" -mindepth 1 -delete
             echo "
    Répertoire vidé" >>"$LOG"
             ;;
     esac
    fi
  • Vérifiez que le répertoire d'extraction des ROMs (variable REP_EXTRACTION_ROM) correspond bien à votre installation.
  • Pour faire le test, vous pouvez vérifier sur les jeux d'aventure SRAM ou La Chose de Grotembourg, qui nécessitent rapidement un changement de disque :
    • Créez un fichier sram.m3u
    • Mettez le contenu suivant dans le fichier et sauvez-le :
      Sram_Disk_1_of_2.dsk
      Sram_Disk_2_of_2.dsk
    • Créez une archive 7zip de ce fichier et ajoutez-y les 2 ROMs avec les noms correspondants. A noter que ces fichiers DSK ne doivent pas contenir certains caractères comme ( ).
    • Déposez l'arvhive sram.7z dans votre répertoire de ROMs Amstrad
    • Sur EmulationStation, actualisez la liste des jeux.
    • Recherchez le jeu SRAM
    • Lancez-le
    • Allez dans le paramétrage de RetroArch, puis Contrôle du disque, Ejecter le disque, Changez le disque, Insérer le disque. RetroArch doit vous proposer 3 disques (les 2 fichiers DSK et le fichier M3U, qui n'est lui pas utilisable).
  • Si tout fonctionne, vous pouvez appliquer cette méthode sur vos autres ROMs Amstrad.
Dernière modification le 21/07/2026 - Quillevere.net

Commentaires

Aucune inscription n'est requise si vous souhaitez

Rechercher sur le site

fr en rss RSS info Informations