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 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
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
Puis éditez-le : 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. En remontant, on va aussi changer le nom du système et préciser que les extensions des disques Amstrad sont bien .dsk : Ensuite, on va préciser le chemin de l’exécutable de Mame dédié à l’Amstrad : Puis des fichiers dsk : Il ne nous reste donc plus qu’à préciser celui des arguments :
Ç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 (https://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
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 :
Pour ça, utiliser WinApe, charger le disc puis éditer le. Renommer alors le fichier avec le bon nom : Devient :
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 et éditant la ligne 40 avec un goto 130 entre le Call &A400 et le LOCATE :
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 :
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
Un clic sur entrer ou control va lancer le jeu … et là, surprise, ça doit fonctionner . 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. 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.
_________________ There is the theory of Möbius. A twist in the fabric of space where time becomes a loop
Dernière édition par JMD le 26 Mars 2017, 22:41, édité 1 fois.
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).
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"
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.
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!).
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
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 )
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
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 88 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum