MSX Village forum

La Place des Développeurs Créer un fichier .CAS

aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 20/01/2024 à 12h55
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 ?


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 20/01/2024 à 15h25
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],


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 20/01/2024 à 15h44
tu peux charger le .BIN du fichier que tu veux convertir en .CAS pour analyse SVP

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


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 20/01/2024 à 16h15
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


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 20/01/2024 à 19h05
Super, merci Jipe ! :top

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... :hum
Comment es-tu passé de BC51h à BB9Ch ? Edité par aoineko Le 20/01/2024 à 19h06


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 20/01/2024 à 20h06
je l'ai calculé avec la calculatrice Windows en mode programmeur par rapport au fichiers BIN et CAS que j'ai ouverts avec HexEdit


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 20/01/2024 à 20h33
Arf... il va falloir que je trouve comment calculer ça automatiquement. :moue

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... :fou


On est toujours ignorant avant de savoir.
Github    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 21/01/2024 à 00h37
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 :)


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10336

Le 21/01/2024 à 08h34
de rien il ne te reste plus qu'a bosser sur les programmes TSX ;)


:noel
Site web    
Cylicano Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 24/10/2021 à 11h19

Messages: 514

Le 21/01/2024 à 11h22
@Aoineko : et que vas-tu faire de cette "capacité" ? Je suis curieux.
:tea


Rien ne se perd, tout doit se transformer.

E-mail    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2699

Le 21/01/2024 à 12h31
Cylicano :
@Aoineko : et que vas-tu faire de cette "capacité" ? Je suis curieux. :tea


Moi ? Rien :lol

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.
Github    
Cylicano Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 24/10/2021 à 11h19

Messages: 514

Le 21/01/2024 à 17h11
Aoineko :
Ceci dit, ça serait super cool de créer un jeu MSXgl sur cassette.

En effet. Ce serait sympa.

:tea


Rien ne se perd, tout doit se transformer.

E-mail    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie