La Place des Développeurs Créer un fichier .CAS
aoineko
Membre non connecté
Conseiller Municipal
Hello,
Je créé ce fil de discussion à part pour voir si vous auriez des infos sur comment créer un fichier .CAS depuis un programme binaire qu'on peut charger avec BLOAD.
J'ai trouvé quelques infos sur MRC, mais cela ne fonctionne pas. :-/
Si j'ai bien compris, il me faut :
- 8 octets avec la série [0x1F, 0xA6, 0xDE, 0xBA, 0xCC, 0x13, 0x7D, 0x74] pour l'entête de fichier,
- 10 octets avec [0xD0] pour l'entête de fichier binaire,
- 6 octets pour le nom (en ASCII),
- 7 octets pour l'entête de fichier exécutable sous environnement BASIC [0xFE, START, END, EXEC],
- Mon programme qui sera chargé par défaut à l'adresse 0x8007.
J'ai testé avec un de mes programmes samples, mais si le nom du fichier semble bien détecté, le programme ne se lance pas.
Voici le .CAS : BIN_s_game.zip.
Une idée ?
Vous auriez les spécifications du format .CAS ?
Je créé ce fil de discussion à part pour voir si vous auriez des infos sur comment créer un fichier .CAS depuis un programme binaire qu'on peut charger avec BLOAD.
J'ai trouvé quelques infos sur MRC, mais cela ne fonctionne pas. :-/
Si j'ai bien compris, il me faut :
- 8 octets avec la série [0x1F, 0xA6, 0xDE, 0xBA, 0xCC, 0x13, 0x7D, 0x74] pour l'entête de fichier,
- 10 octets avec [0xD0] pour l'entête de fichier binaire,
- 6 octets pour le nom (en ASCII),
- 7 octets pour l'entête de fichier exécutable sous environnement BASIC [0xFE, START, END, EXEC],
- Mon programme qui sera chargé par défaut à l'adresse 0x8007.
J'ai testé avec un de mes programmes samples, mais si le nom du fichier semble bien détecté, le programme ne se lance pas.
Voici le .CAS : BIN_s_game.zip.
Une idée ?
Vous auriez les spécifications du format .CAS ?
On est toujours ignorant avant de savoir.
j'ai fait des test à partir des .CAS de Martos et j'arrive à ce résultat
- 8 octets avec la série [0x1F, 0xA6, 0xDE, 0xBA, 0xCC, 0x13, 0x7D, 0x74] pour l'entête de fichier,
- 10 octets avec [0xD0] pour l'entête de fichier binaire,
- 6 octets pour le nom (en ASCII),
- 8 octets avec la série [0x1F, 0xA6, 0xDE, 0xBA, 0xCC, 0x13, 0x7D, 0x74] pour l'entête de fichier
- 6 octets pour l'entête de fichier exécutable sous environnement BASIC [START, END, EXEC],
c'est juste dans le .BIN qu'il faut l'entête avec 0xFE
- 7 octets pour l'entête de fichier exécutable sous environnement BASIC [0xFE, START, END, EXEC],
- 8 octets avec la série [0x1F, 0xA6, 0xDE, 0xBA, 0xCC, 0x13, 0x7D, 0x74] pour l'entête de fichier,
- 10 octets avec [0xD0] pour l'entête de fichier binaire,
- 6 octets pour le nom (en ASCII),
- 8 octets avec la série [0x1F, 0xA6, 0xDE, 0xBA, 0xCC, 0x13, 0x7D, 0x74] pour l'entête de fichier
- 6 octets pour l'entête de fichier exécutable sous environnement BASIC [START, END, EXEC],
c'est juste dans le .BIN qu'il faut l'entête avec 0xFE
- 7 octets pour l'entête de fichier exécutable sous environnement BASIC [0xFE, START, END, EXEC],
c'est bon je l'ai reconstruit
car après avoir ajouté le 2éme header je trouve bien un fichier s_game
Start 8007
End BC51
Exe 800B
mais il me fait Device I/O error quand je le lance
j'ai trouvé ce qui ne va pas c'est ton calcul d'adresse de fin
Start 8007
End BB9C
Exe 800B
j'ai maintenant un petit pingouin qui saute voici le .CAS
Fichier CAS
Start 8007
End BB9C
Exe 800B
j'ai maintenant un petit pingouin qui saute voici le .CAS
Fichier CAS
aoineko
Membre non connecté
Conseiller Municipal
Super, merci Jipe !
Par contre, autant je peux comprendre pourquoi remplacer le 0xFE par un entête de fichier [0x1F, 0xA6, ...], autant je comprends pas du tout pourquoi il faudrait réduire la taille du fichier de 17 pour que cela fonctionne...
Comment es-tu passé de BC51h à BB9Ch ? Edité par aoineko Le 20/01/2024 à 19h06
Par contre, autant je peux comprendre pourquoi remplacer le 0xFE par un entête de fichier [0x1F, 0xA6, ...], autant je comprends pas du tout pourquoi il faudrait réduire la taille du fichier de 17 pour que cela fonctionne...
Comment es-tu passé de BC51h à BB9Ch ? Edité par aoineko Le 20/01/2024 à 19h06
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Arf... il va falloir que je trouve comment calculer ça automatiquement.
Mais ce qui est très bizarre c'est que je ne vois aucune raison pour que la partie du programme en binaire change de taille.
L'entête oui, mais pourquoi le code assembleur perdrait-il 181 octets?
Surtout que quand je charge ton .CAS, j'ai bien le programme qui va jusqu'à l'adresse BC51h d'après le débuggeur de openMSX.
C'est bien mystérieux tout ça...
Mais ce qui est très bizarre c'est que je ne vois aucune raison pour que la partie du programme en binaire change de taille.
L'entête oui, mais pourquoi le code assembleur perdrait-il 181 octets?
Surtout que quand je charge ton .CAS, j'ai bien le programme qui va jusqu'à l'adresse BC51h d'après le débuggeur de openMSX.
C'est bien mystérieux tout ça...
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Oh ! En fait j'avais un bug dans l'entête du fichier binaire pour le BLOAD : la taille du code était trop grande (je comptais aussi la taille des variables en RAM).
Etrangement ça ne pose pas de soucis quand on charge le binaire via un BLOAD depuis une disquette, mais c'est ça qui fait merder le chargement depuis une cassette !
Du coup c'est bon : non seulement on peut générer des programmes pour cassette depuis MSXgl, mais en plus j'ai peut-être corrigé un bug pour les programmes pour disquette.
Merci Jipe !
Joie
Etrangement ça ne pose pas de soucis quand on charge le binaire via un BLOAD depuis une disquette, mais c'est ça qui fait merder le chargement depuis une cassette !
Du coup c'est bon : non seulement on peut générer des programmes pour cassette depuis MSXgl, mais en plus j'ai peut-être corrigé un bug pour les programmes pour disquette.
Merci Jipe !
Joie
On est toujours ignorant avant de savoir.
aoineko
Membre non connecté
Conseiller Municipal
Cylicano :
@Aoineko : et que vas-tu faire de cette "capacité" ? Je suis curieux.
Moi ? Rien
J'ajoute des fonctionnalités à MSXgl soit parce que j'en ai besoin, soit parce que quelqu'un me le demande, soit parce que ça me semble nécessaire pour s'approcher de l'exhaustivité, soit... pour m'amuser.
Là, on est entre le 3e et 4e point.
J'étais curieux et comme la plupart des émulateurs le supporte, ça me semblait normal que MSXgl le permette.
Ceci dit, ça serait super cool de créer un jeu MSXgl sur cassette.
Jipe :
de rien il ne te reste plus qu'a bosser sur les programmes TSX
Je ne pense pas pousser plus loin. Il existe des outils de conversion entre CAS, WAV et TSX donc si quelqu'un souhaite un autre format que CAS, il peut toujours modifier le script de création pour avoir son jeu au format de son choix. Edité par aoineko Le 21/01/2024 à 12h33
On est toujours ignorant avant de savoir.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie