CPC Rulez
https://cpcrulez.fr/forum/

Attract Mode & MAME pour jeux Amstrad CPC dans une MameCab
https://cpcrulez.fr/forum/viewtopic.php?f=7&t=5912
Page 1 sur 1

Auteur :  JMD [ 26 Mars 2017, 19:59 ]
Sujet du message :  Attract Mode & MAME pour jeux Amstrad CPC dans une MameCab

Hello,

Je vais faire hurler les puristes mais ça fait un moment que je voulais ajouter des jeux Amstrad dans ma Mamecab. Le confort n'est pas aussi bien que sur un Amstrad mais beaucoup de personnes m'en parlaient et je trouvait ça amusant.
Par contre, j'ai un peu galéré et ce n'est pas si simple alors je me suis écrit un petit guide pour m'en souvenir. Plutôt que de garder ceci pour moi, je l'ai transformé en tuto et en essayant d’être clair, au cas où ceci intéresse d'autres personnes.


Je vais décrire ici un cas concret pour utiliser Attract Mode en front end pour lancer des jeux Amstrad CPC 6128 sur Windows (testé sur 7 et 10 en 64 bits). Mon but est de rajouter, à ma Mame Cab (2 joueurs de 3 boutons), une section Amstrad. Mon cas est très précis et ne s’applique sans doute qu’à ma situation mais ceci pourra peut-être aider d’autres.

Préparation des programmes :

Il existe énormément de très bon émulateurs CPC WinApe, CPCe, PC-CPC, SugarBox, Caprice, … mais j’ai choisis MAME.
En effet, mon choix a été guidé par :
  • La ligne de commande permet de faire beaucoup, y compris le lancement de jeux
  • Il permet une configuration clavier/émulateur par jeu
  • En plein écran, il permet des résolutions natives (en 15khz avec Groovy Mame)
  • Il ne fonctionne pas si mal en mode CPC 6128 et jeux basiques
Par contre :
  • Son émulation reste basique (pas de +, ni trop de subtilités)

Concernant Attract Mode, c’est un front end que j’utilise depuis plusieurs années et je l’aime bien, notamment à cause de la facilité pour créer des thèmes … C’est donc un choix purement personnel :D
La première chose à faire est de télécharger l’ensemble de ce dont on a besoin :

On va créer des répertoires pour accueillir tout ça : un répertoire Tuto qui contient deux sous répertoires Amstrad et Attract Mode
Image

On va décompresser dans son répertoires Attract Mode puis Mame dans AMSTRAD.
Enfin, pour que MAME puisse fonctionner, il faut aller chercher les roms du CPC6128 et les y coller.


Paramétrage d’Attract Mode

Dans le sous répertoire Attract Mode/Emulators, copier-coller le fichier mame.cfg et renommez le en amstrad.cfg
Image


Puis éditez-le :
Image
Voilà les éditions que je vous propose :
Commençons par l’accessoires : nous commençons par rediriger les répertoires des artworks vers notre répertoire Amstrad.
Image
En remontant, on va aussi changer le nom du système et préciser que les extensions des disques Amstrad sont bien .dsk :
Image
Ensuite, on va préciser le chemin de l’exécutable de Mame dédié à l’Amstrad :
Image
Puis des fichiers dsk :
Image
Il ne nous reste donc plus qu’à préciser celui des arguments :
Image

Ça se complique un peu donc voici un peu d’explications :
  • cpc6128 : indique à MAME qu’on emule un Amstrad CPC 6128
  • -flop1 "dsk\[name].dsk" : permet de dire à MAME que le 1er disque est dans le lecteur 1. On utilise le nom du jeu pour qu’il trouve le bon disque.
  • -ui_active : cet argument dit à MAME que nous ne souhaitons pas le clavier naturel du CPC mais un clavier emulé (qui permet de reconfigurer les touches)
  • -autoboot_command "run\"[name]\n" : celui-ci indique à MAME de lancer automatiquement la commande de run en se basant sur le nom du disque
  • -autoboot_delay 2 : on ajoute un petit délai pour que MAME attente l’initialisation avant de lancer la commande précédente.
  • -cfg_directory "cfg\[name]" : indique à MAME d’utiliser un répertoire de configuration spécifique situé dans un répertoire spécifique du nom du jeu. L’astuce est là car on va lui forcer, grâce au sous répertoire à avoir des configurations différentes par jeu (mappage du clavier notamment).
L’étape suivante sera de définir la liste des jeux. Attract Mode gère ceci à base de romlists.
Lancer Attract Mode et choisir sa langue puis aller dans émulateur, sélectionnez Amstrad puis « Générer la liste des roms ».
Un fichier Amstrad.Txt vient d’être crée dans le (nouveau) répertoire « romlists ». Les jeux seront dans ce fichier (mais on verra comment les ajouter après ;).


Préparation des jeux :

Ensuite, nous allons choisir un jeu et aller le chercher. Pour ce doc, on prend Chuckie Egg (http://cpcrulez.fr/GamesTest/chuckie_egg_1.htm ).
Il est important que le disc soit le plus clean possible … c’est-à-dire un crack propre en mode fichier, idéalement sans trainer et, dans mon ça, quelque chose qui s’adapte aux jeux avec des boutons.
Dans le répertoire Amstrad, on va créer un sous répertoire dsk et on glisse le dsk dedans (le hfe ne nous sert à rien ici). On va ensuite le renommer avec un nom court (moins de 8 caractères standards) : chkiegg.dsk
Image

Pour terminer, nous allons nous assurer que, pour lancer le jeu, la commande soit la même que le nom du disque.
En pratique, le disque s’appelle chkiegg.dsk : il nous faudra donc lancer le jeu par :
Image

Pour ça, utiliser WinApe, charger le disc puis éditer le. Renommer alors le fichier avec le bon nom :
Image
Devient :
Image

On le teste et on se rend compte que le jeu a un trainer. On le supprime en chargeant le basic chkiegg.bas, le listant
Image
et éditant la ligne 40 avec un goto 130 entre le Call &A400 et le LOCATE :
Image

Un petit hors sujet et c’est là que je me dis que c’est la croix et la bannière pour trouver des jeux avec des cracks clean et sans trainer : bref un jeu simplement le plus accessible possible..



Notre jeu est maintenant prêt et au bon endroit.

Il faut donc l’ajouter au fichier Amstrad.txt de tout à l’heure, qui liste les jeux.
Editer ce fichier puis rajouter les 3 premières colonnes comme suit :
Image

La 1ere est le nom du dsk et du fichier à lancer sur le disque Amstrad (qui je rappelle doivent être identiques).
La 2eme colonne (séparé par ; ) est le nom du jeu propre et la 3eme amstrad (nom de l’émulateur dans Attract Mode)
Compléter avec des ; (il en faut 14)

Lancer Attract Mode et après la video de présentation, le jeu doit s’afficher
Image

Un clic sur entrer ou control va lancer le jeu … et là, surprise, ça doit fonctionner :winner: .
Mais ce n’est pas fini car on n’a pas mappé les touches pour (dans mon cas) la manette et les boutons de la borne.
Une fois le jeu lancé dans MAME, appuyer sur TAB pour afficher le menu (on peut faire ceci grâce à l’option -ui_active de la ligne de commande tout à l’heure).
Aller dans Input (This Machine) et l’interface de mappage s’affiche.
Image
Pour Chuckie Egg, les touches sont :
  • Z pour le haut
  • A pour le bas
  • , pour la gauche
  • . pour la droite
  • ESPACE pour sauter (Control pour moi, le 1er bouton)
  • S pour commencer (Alt pour moi, le2eme bouton)
Il est à noter que le jeu demande aussi le nombre de joueurs : j’ai donc laissé 1 et 2 mappé tel quel pour les boutons 1 joueur et 2 joueur de ma borne).
Enfin le jeu demande de taper son nom au clavier et de le valider par ENTREE. J’ai donc mappé mon 3eme bouton (ESPACE) sur entrée.

Auteur :  JMD [ 28 Mars 2017, 08:07 ]
Sujet du message :  Re: Attract Mode & MAME pour jeux Amstrad CPC dans une MameC

Pour que vous puissiez vous faire un idée de ce que ça donne, j'ai posé sur mon site l'exemple précédent avec plusieurs jeux Amstrad et le thème que j’utilise (que je me suis fait).

Image

Vous trouverez ceci ici

Auteur :  case [ 28 Mars 2017, 13:45 ]
Sujet du message :  Re: Attract Mode & MAME pour jeux Amstrad CPC dans une MameC

super ;)

Auteur :  Swargill [ 14 Jan 2018, 11:14 ]
Sujet du message :  Re: Attract Mode & MAME pour jeux Amstrad CPC dans une MameC

Sinon pour le probleme de trainer, il y a une version d'arnold parrallele qui tourne pas mal dans ma "machine".
Elle permet de passer les trainers avec un menu special, sauvegarder les parties et surtout de changer les disquettes.
Je retrouve plus le lien mais regarde a "emulateur arnold aeliss"

Auteur :  ccollomb [ 25 Jan 2019, 20:24 ]
Sujet du message :  Re: Attract Mode & MAME pour jeux Amstrad CPC dans une MameC

Tres bon post. Un autre avantage de Mame est les shaders CRT.

Tout marche bien, sauf que j'arrive pas a faire marcher la version Amstrad de Afterburner avec Mame. J'ai essaye plusieurs dsk differents mais impossible de demarrer le jeu.

Quelqu'un peut m'aider?

Auteur :  ccollomb [ 27 Jan 2019, 18:19 ]
Sujet du message :  Re: Attract Mode & MAME pour jeux Amstrad CPC dans une MameC

Il semble que Mame a le meme probleme que les CPC+ (http://tj.gpa.free.fr/html/coding/cpcplus.htm) donc j'ai reussi a faire marcher Afterburner en utilisant le patch / loader de Tom et Jerry (Merci Herve pour ton aide!).

Le plus simple est d'editer une version d'ici: https://cpcrulez.fr/download.php?a=V4uq ... Da3pPClb8=

Changez avec un editeur hexa sur PC de l'addresse fichier 9998 les octets ED 78 E6 30 4F F6 C0 ED 79 en 0E C0 ED 49 0E 00 ED 49 00 et tout marche nickel sur Mame maintenant :D

Merci encore a Herve et JMD.

J'ai fais un script Python que je me suis fait pour extraire automatiquement le nom a taper pour lancer automatiquement le jeu. Ca marche bien pour les 212 jeux de ma collection.

Code :
import os
import sys

if len(sys.argv) != 2 :
   print( "Need path to .dsk file as argument" )
   exit()

if os.path.exists(sys.argv[ 1 ])==False:
   print( "File " + sys.argv[ 1 ] + " does not exist " )
   exit()

with open( sys.argv[ 1 ], "rb") as binary_file:
   textData = binary_file.read()
binData = bytearray( textData )

if binData[ 0x0 ] == 0x4D:
   format = 1
#   print( "MV FORMAT")
   sizeTrack1 = binData[ 0x33 ] * 256 + binData[ 0x32 ]
   sizeTrack2 = sizeTrack1
   directorySize = 0x800
elif binData[ 0x0 ] == 0x45:   
   format = 2
#   print( "EXTENDED FORMAT")
   sizeTrack1 = binData[ 0x34 ] * 256
   sizeTrack2 = binData[ 0x35 ] * 256
   directorySize = 0x800
else:
   print( "DSK format not recognized " + sys.argv[ 1 ] )
   exit()

trackStart = 0x100
possibleCPM = False
if ( binData[ 0x11A ] & 0x80 == 0 ):
   trackStart = 0x100 + sizeTrack1 + sizeTrack2
   possibleCPM = True

trackInfoSize = 0x100
start = trackStart + trackInfoSize

sectorsIndices = []
sectorSize = binData[ trackStart + 0x14 ] * 256
numSectors = binData[ trackStart + 0x15 ]
for j in range(0, numSectors):
   sectorsIndices.append( binData[ trackStart + 0x1A + j * 8 ] )

sortedIndices = sectorsIndices[:]
sortedIndices.sort()
directorySectors = directorySize / sectorSize
basic = []
nothing = []
bin = []

for j in range(0, directorySectors):
   idx = sectorsIndices.index( sortedIndices[ j ] )
   current = start   + idx * sectorSize
   while current < start + idx * sectorSize + sectorSize:
      if ( binData[ current ] == 0x0 ):
         name = ""
         if ( binData[ current + 10 ] & 0x80 == 0 ) & ( binData[ current + 15 ] & 0x80 == 0 ):
            for j in range(1, 9):
               if ( binData[ current + j ] != 0x20 ):
                  name = name + textData[ current + j ].upper()
            name = name + "."
            for j in range(9, 12):
               val = binData[ current + j ] & 0x7F
               name = name + chr( val ).upper()
            if name.find( ".BAS" ) != -1 :
               basic.append( name )
            if name.find( ".   " ) != -1 :
               nothing.append( name[:len(name)-4] )
            if name.find( ".BIN" ) != -1 :
               bin.append( name )
      current += 0x20

runFile = ""   
if 0 < len( basic ) :
   runFile = basic[ 0 ]
elif 0 < len( nothing ) :
   runFile = nothing[ 0 ]
elif 0 < len( bin ) :
   runFile = bin[ 0 ]
elif possibleCPM == True :
   runFile = "CPM"

if 0 < len( runFile ) :   
   print( sys.argv[ 1 ] + ": " + runFile )
   os.system( "call runCPC.bat \"" + sys.argv[ 1 ] + "\" \"" + runFile + "\"" )
else:         
   print( sys.argv[ 1 ] + ": " + "NO BOOT PROGRAM FOUND" )

Auteur :  JMD [ 29 Jan 2019, 20:43 ]
Sujet du message :  Re: Attract Mode & MAME pour jeux Amstrad CPC dans une MameC

C’est cool, merci pour l’info et le script :)

JMD

Auteur :  ccollomb [ 24 Avr 2019, 20:58 ]
Sujet du message :  Re: Attract Mode & MAME pour jeux Amstrad CPC dans une MameC

La nouvelle version de Mame marche pas mal du tout et a fixe plein de jeux recents: de CPCretrodev2017 et 2018 par example.

Le seul truc que j'ai pas trouve est comment changer de disquette facilement pour les jeux a plusieurs disquettes.

Quelqu'un a une bonne solution?

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/