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

Dumps originaux
https://cpcrulez.fr/forum/viewtopic.php?f=8&t=135
Page 37 sur 54

Auteur :  Lone [ 15 Sep 2014, 16:42 ]
Sujet du message :  Re: Dumps originaux

Bonjour a tous

Petite bouteille à la mer : Je suis en train d'implémenter un support cassette pour Sugarbox.
Bon, grossièrement, ça semble fonctionner sur des dumps "simples", sans protections (wav "propre" et cdt).

Je me dis donc : Si ca marche avec un CDT, ça marche avec tous... Mais non : J'ai donc un doute sur le format CDT :
On parle, dans la spec, de la taille des samples 0 et 1 en T-state (donc, 1/4 000 000e de sec sur CPC, au premier abord), mais aussi... d'une compatibilité avec le format spectrum, qui semble plutot etre 1/ 3 500 000...

Je n'ai pas encore essayé avec la seconde valeur (pour voir si elle marche plus ou moins mieux que la première), et je cherche donc quelqu'un d'expert dans le domaine pour me donner des infos... (ou même, tout bêtement, la taille "standard" d'une impulsion sur un pilote, par exemple).

A implémenter, c'est différent du FDC : Globalement moins de chose, mais à debugger c'est pire (surtout lorsqu'on n'a, au final, que des longueurs entre changement de phase... :( )
Côté doc, c'est pas non plus la foule.

Bref, expert du domaine, signalez vous s'il vous plait :)

Auteur :  Kris [ 15 Sep 2014, 20:27 ]
Sujet du message :  Re: Dumps originaux

Tu devrais faire un tour sur CPCwiki, y'a pas mal de monde qui a bidouillé avec les cassettes et les formats associés....

Auteur :  TotO [ 15 Sep 2014, 21:06 ]
Sujet du message :  Re: Dumps originaux

Tu peux contacter SyX pour t'aider.

Auteur :  hERMOL [ 16 Sep 2014, 17:32 ]
Sujet du message :  Re: Dumps originaux

Dlfrsilver/CNGSoft devrai aussi avoir des réponses a tes questions.. :winner:

Auteur :  dlfrsilver [ 17 Sep 2014, 00:52 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
Bonjour a tous

Petite bouteille à la mer : Je suis en train d'implémenter un support cassette pour Sugarbox.
Bon, grossièrement, ça semble fonctionner sur des dumps "simples", sans protections (wav "propre" et cdt).

Je me dis donc : Si ca marche avec un CDT, ça marche avec tous... Mais non : J'ai donc un doute sur le format CDT :
On parle, dans la spec, de la taille des samples 0 et 1 en T-state (donc, 1/4 000 000e de sec sur CPC, au premier abord), mais aussi... d'une compatibilité avec le format spectrum, qui semble plutot etre 1/ 3 500 000...

Je n'ai pas encore essayé avec la seconde valeur (pour voir si elle marche plus ou moins mieux que la première), et je cherche donc quelqu'un d'expert dans le domaine pour me donner des infos... (ou même, tout bêtement, la taille "standard" d'une impulsion sur un pilote, par exemple).

A implémenter, c'est différent du FDC : Globalement moins de chose, mais à debugger c'est pire (surtout lorsqu'on n'a, au final, que des longueurs entre changement de phase... :( )
Côté doc, c'est pas non plus la foule.

Bref, expert du domaine, signalez vous s'il vous plait :)


je commençais à désespérer, sans nouvelle de toi, t'as quelqu'un d'autre ? :mdr:

Bref trève de conneries, voici un petit panel de ce qu'on trouve sur CPC en K7 :

Les jeux standard, avec fichier, bon ça tu as vu par toi même, ça casse pas trois pattes à un canard ;

Les jeux standard sans fichier sans entête (headerless) ; certains jeux peuvent avoir des blocs collés (exemple Phénix Noir de Chip)

Ensuite il y a tout un panel de jeux utilisant des blocs au format spectrum : (Lotus turbo challenge par exemple) à ne pas confondre avec les blocs encodés spectrum pour CPC (exemple : Shadow of the beast).

Les jeux avec des blocs spectrum entièrement collés sans aucune pause entre eux : les jeux hitec (wacky race, hong kong phoeey, etc)

Les jeux qui utilisent des micro-blocs de protection (exemple spherical, qui utilise une clé de 19 octets au format spectrum pur).

Les jeux qui utilisent des blocs de protection clé en fin de cassette (exemple : werner mach hin, les jeux cassette de chez Rainbow Arts)

Les jeux qui utilisent des Blocs d'enregistrement direct (DRB), ceux là sont rare, mais en gros les morceaux de bloc sont composés de flux de bits (exemple : les jeux bleepload v3)

Les jeux qui utilisent des blocs encodés MFM (comme sur les pistes d'une disquette MFM amiga !) (exemple Frank bruno's Boxing dans sa version full price, Dick Tracy, Wild street, Knight Force utilisent des blocs encodés MFM)

Le pire des systèmes de protection sur K7, c'est le gremlin loader 2. Il est utilisé sur les jeux gremlin suivant : (Mask, Impossamole, Basil the great mouse detective, Saint and Greavsie, Samurai Trilogy). Un jeu comme Impossamole est composé de 14300 blocs, soit 2860 blocs par niveaux.

Tu as aussi le système dinamic poliload qui équipe Grand prix master, After the War UK, Astro Marine Corps, Satan ES, jabato, el capitan trueno. Ce sont des micro-blocs de 36 octets entrecoupés par des pause de 2ms.

Les jeux speedlock existent en plusieurs parfum, les speedlock v3,4,5,6,7 utilisent entre 201 et 209 sous-blocs d'une taille variant de 64 à 80 octets.

Si tu as des questions précises, postes-les stp :)

Auteur :  Lone [ 18 Sep 2014, 09:36 ]
Sujet du message :  Re: Dumps originaux

Merci pour ses infos, dès que j'ai le temps de m'y replonger, je vois ça (et je sonde le cpc-wiki !)

Auteur :  Lone [ 30 Sep 2014, 17:13 ]
Sujet du message :  Re: Dumps originaux

Petit retour actuel :
Je me suis basé sur ta liste pour me faire un "jeu de test" significatif.
Je fais tourner correctement :
- Astro Marine Corps
- Lotus
- Elite
- Spherical

Il me reste a voir pourquoi les autres ne fonctionnent pas (et c'est coton, en général, je suis obligé de désassembler le loader custom pour voir ce qui ne va pas, et c'est pas super trivial)

Auteur :  Lone [ 30 Sep 2014, 21:40 ]
Sujet du message :  Re: Dumps originaux

J'en profite :
Je suis à la recherche des jeux au format WAV suivants, pour voir un peu ou foire mon interprétation du CDT.
Si quelqu'un a sous la main...

- 10 th frame
- Booty
- Knight force
- Mask (je charge presque tout... Mais pas tout !)
- Wacky races
- Werner - Mach Hin

Auteur :  JMD [ 30 Sep 2014, 21:49 ]
Sujet du message :  Re: Dumps originaux

Hello,

Je pense que tu en trouveras certain au format Wav sur mon site.

JMD

Auteur :  Lone [ 30 Sep 2014, 22:02 ]
Sujet du message :  Re: Dumps originaux

Une nouvelle ressource, chouette !
Je vais étudier ça de plus pres, merci !

Auteur :  Lone [ 10 Oct 2014, 14:02 ]
Sujet du message :  Re: Dumps originaux

Hello,

Après quelques recherches assidue, j'arrive à lancer mon petit jeu de test...

A part Wacky race (mais là, c'est sans doute lié à autre chose : C'est lors du changement de face, il doit se passer un truc qu'il ne se passe pas (encore)).

Et j'ai un doute sur MASK : A un moment donné, au chargement du premier niveau (après le choix Joystick / clavier), il est nécessaire de démarrer par un front descendant pour que ça fonctionne (après une pause), et je ne vois guère comment c'est possible. En bricolant un front montant après une pause, ça marche (mais bon, ça me laisse sur ma faim).

Je viens de tester Impossamole, il passe également.

Du coup, je cherche toujours un dump WAV de Mask !
JMD, j'ai vu que tu avais la cassette dans ta collec', mais malheureusement sans le dump associé...

En tout cas l'émulation cassette (CDT) commence à prendre forme. Pour le coup, ça a été tout codé à partir de la théorie, je n'ai jamais vu de 464 de ma vie (et oui, j'étais un petit garçon nanti avec un 6128 !)


Pour mémoire, si un jour quelqu'un se pose les mêmes questions que moi :

- La taille du pilote (ID 10 et 11 ) indique le nombre de "1" du pilote. Donc, le nombre de pulse du pilote, c'est cette valeur x2
- Le trailler est toujours inclus dans les données. Pas la peine de se coller 32 '1' supplémentaires. (bloc 10 et 11 en particulier)
- Les timings du CDT sont bel et bien pensé Spectrum. Il faut donc appliquer un ratio (multiplier les temps par 4/3.5 e ).
- Les PULSE sont des pulses ! donc, au final, soit un "1", soit un "0", mais pas la succession des deux (une pulse, c'est la valeur précédente inversé) (bloc 12 et 13 en particulier)
- L'étrange valeur Used bits in last byte est bien ce que l'on pense : Le nombre de bits (de poids fort) utilisé dans le dernier octet de la liste. On est au bit près (et ça c'est bien).
- Les pulses de sync forment correctement le "0" qui suit le pilote
- Penser, en fin de cassette, a correctement remettre son niveau a 0.
- Le bloc 15 a ses valeurs encore en TState spectrum (donc, les multiplier par 4/3.5 pour avoir une valeur utilisable par nous)

Auteur :  dlfrsilver [ 10 Oct 2014, 20:02 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
Hello,

Après quelques recherches assidue, j'arrive à lancer mon petit jeu de test...

A part Wacky race (mais là, c'est sans doute lié à autre chose : C'est lors du changement de face, il doit se passer un truc qu'il ne se passe pas (encore)).


Les jeux hitec utilisent en majorité des petits blocs qui sont collés (c'est une spécificité de cet éditeur).

Citer :
Et j'ai un doute sur MASK : A un moment donné, au chargement du premier niveau (après le choix Joystick / clavier), il est nécessaire de démarrer par un front descendant pour que ça fonctionne (après une pause), et je ne vois guère comment c'est possible. En bricolant un front montant après une pause, ça marche (mais bon, ça me laisse sur ma faim).


Mask utilise la protection Gremlin loader 2, la pire utilisée sur amstrad CPC.

Qu'est-ce que tu appelles un front descendant ? c'est quoi le terme anglais ? :mdr:

Citer :
Je viens de tester Impossamole, il passe également.


Utilise aussi le gremlin loader 2, c'est cool :)

PS : MASK est dispo sur CPCrulez et cpc-p0wer en K7 si ça peut t'aider ;)

Citer :
Du coup, je cherche toujours un dump WAV de Mask !


Je crois que tu n'as pas envie d'avoir en main le dump en WAV. Je peux t'en faire un si tu veux, mais tu vas t'enfuir en hurlant quand tu comprendras
de quoi il s'agit.....

Citer :
JMD, j'ai vu que tu avais la cassette dans ta collec', mais malheureusement sans le dump associé...


J'ai la cassette en original et en compil, donc à ta guise :)

Citer :
En tout cas l'émulation cassette (CDT) commence à prendre forme. Pour le coup, ça a été tout codé à partir de la théorie, je n'ai jamais vu de 464 de ma vie (et oui, j'étais un petit garçon nanti avec un 6128 !)


Moi aussi, mon papa m'a mis une cuillère en or appellée 6128 dans la bouche, hannn nantis que nous sommes :mdr:


Citer :
Pour mémoire, si un jour quelqu'un se pose les mêmes questions que moi :


- La taille du pilote (ID 10 et 11 ) indique le nombre de "1" du pilote. Donc, le nombre de pulse du pilote, c'est cette valeur x2
- Le trailer est toujours inclus dans les données. Pas la peine de se coller 32 '1' supplémentaires. (bloc 10 et 11 en particulier)
- Les timings du CDT sont bel et bien pensé Spectrum. Il faut donc appliquer un ratio (multiplier les temps par 4/3.5 e ).
- Les PULSE sont des pulses ! donc, au final, soit un "1", soit un "0", mais pas la succession des deux (une pulse, c'est la valeur précédente inversé) (bloc 12 et 13 en particulier)
- L'étrange valeur Used bits in last byte est bien ce que l'on pense : Le nombre de bits (de poids fort) utilisé dans le dernier octet de la liste. On est au bit près (et ça c'est bien).
- Les pulses de sync forment correctement le "0" qui suit le pilote
- Penser, en fin de cassette, a correctement remettre son niveau a 0.
- Le bloc 15 a ses valeurs encore en TState spectrum (donc, les multiplier par 4/3.5 pour avoir une valeur utilisable par nous)[/quote]

Je vais te confirmer ou t'infirmer ça :)

Auteur :  Lone [ 10 Oct 2014, 20:23 ]
Sujet du message :  Re: Dumps originaux

Je reste très intéressé par le dump de Mask : Je sais très exactement ce qui m'attend !
Pour comprendre son fonctionnement, j'ai décortiqué le loader et donc, je vois bien ce qui se trame (le cdt a 16000 "blocs" : des successions de data et de pseudo pilotes (dont la longueur est calculée par le loader).
Bref, j'ai mis des tas de traces, et j'ai donc des infos pertinentes sur ce qui défile.

Et c'est juste là, début de niveau ou je suis un peu perplexe :
On a une pause (donc, le level est à "low") suivi d'un nombre de pulse fixes (0x3FF... Nombre impair, donc), ce qui fait qu'à la fin, le niveau est haut.
Ensuite, on a un bloc de donnée (20 data), suivi de deux pulse, ou se trouve le test a proprement parler : On souhaite passer un pulse a haut, puis on time un pulse a base, jusqu'à trouver la bonne taille (ces pulses sont assez larges).

Si j'ai une forme telle ceci : ----___, ça passe. Or, mon analyse du décodage me donne ____-----, ce qui fait que ça ne marche pas.

Je voudrais donc juste voir, sur le wav, l'ordre de ces deux pulse....(et tenter ainsi de comprendre comment le déduire du CDT).

J'utilise le CDT de cpc-p0wer pour ceci.

Auteur :  dlfrsilver [ 11 Oct 2014, 13:28 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
Je reste très intéressé par le dump de Mask : Je sais très exactement ce qui m'attend !
Pour comprendre son fonctionnement, j'ai décortiqué le loader et donc, je vois bien ce qui se trame (le cdt a 16000 "blocs" : des successions de data et de pseudo pilotes (dont la longueur est calculée par le loader).
Bref, j'ai mis des tas de traces, et j'ai donc des infos pertinentes sur ce qui défile.

Et c'est juste là, début de niveau ou je suis un peu perplexe :
On a une pause (donc, le level est à "low") suivi d'un nombre de pulse fixes (0x3FF... Nombre impair, donc), ce qui fait qu'à la fin, le niveau est haut.
Ensuite, on a un bloc de donnée (20 data), suivi de deux pulse, ou se trouve le test a proprement parler : On souhaite passer un pulse a haut, puis on time un pulse a base, jusqu'à trouver la bonne taille (ces pulses sont assez larges).

Si j'ai une forme telle ceci : ----___, ça passe. Or, mon analyse du décodage me donne ____-----, ce qui fait que ça ne marche pas.

Je voudrais donc juste voir, sur le wav, l'ordre de ces deux pulse....(et tenter ainsi de comprendre comment le déduire du CDT).

J'utilise le CDT de cpc-p0wer pour ceci.


Bon concrètement César Nicolas a lui aussi déchiffré le loader du jeu pour comprendre ce qu'il fait.

Sinon il n'aurait pas pu créer le CDT avec le bytelogger de CPCE.

C'est moi qui ait dumpé Mask comme tu as pu le voir. J'ai monitoré le dump avec mon CPC 464 connecté à
mon PC sur lequel j'utilise Goldwave pour l'enregistrement.

C'est le seul moyen pour dumper le jeu proprement, car tel quel, le taux d'erreur lors du sampling est élevé
sur une telle protection. Il suffit d'un bloc foireux à la lecture pour avoir à tout recommencer.....

Mask je l'ai terminé, de bout en bout, testé en CDT sur CPCE, et testé en WAV converti depuis le CDT du jeu sur mon 464 et 464+ (il faut un petit programme pour la compatibilité, le jeu étant protégé au lancement de la commande |tape+RUN").

Contacte-moi en PM :)

Auteur :  dlfrsilver [ 11 Oct 2014, 21:52 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
Je reste très intéressé par le dump de Mask : Je sais très exactement ce qui m'attend !
Pour comprendre son fonctionnement, j'ai décortiqué le loader et donc, je vois bien ce qui se trame (le cdt a 16000 "blocs" : des successions de data et de pseudo pilotes (dont la longueur est calculée par le loader).
Bref, j'ai mis des tas de traces, et j'ai donc des infos pertinentes sur ce qui défile.

Et c'est juste là, début de niveau ou je suis un peu perplexe :
On a une pause (donc, le level est à "low") suivi d'un nombre de pulse fixes (0x3FF... Nombre impair, donc), ce qui fait qu'à la fin, le niveau est haut.
Ensuite, on a un bloc de donnée (20 data), suivi de deux pulse, ou se trouve le test a proprement parler : On souhaite passer un pulse a haut, puis on time un pulse a base, jusqu'à trouver la bonne taille (ces pulses sont assez larges).

Si j'ai une forme telle ceci : ----___, ça passe. Or, mon analyse du décodage me donne ____-----, ce qui fait que ça ne marche pas.

Je voudrais donc juste voir, sur le wav, l'ordre de ces deux pulse....(et tenter ainsi de comprendre comment le déduire du CDT).

J'utilise le CDT de cpc-p0wer pour ceci.


Explication de César :

Le problème central ici est que l'encodage nécessite _trois_ types de pulses.
Les pulses de 580 et 1160 T sont utilisées de manière normale, in couples that stand for bits.
Malheureusement, l'encodage s'attend à plusieurs pulses entre chaque groupe de 16 octets.
Tout d'abord il s'attend à 8 short pulses. Elles peuvent être simulées avec 4 bits courts.
Mais ensuite il s'attend à 2 pulses _extra longues_ de 2850 T.
D'ou le besoin d'utiliser des blocs "pure tone".

C'est pas marrant, mais c'est une solution au problème, et une qui est compacte et acceptable.
Grâce à elle on a pas besoin d'utiliser des DBR: après tout, même si la méthode est douteuse et peu fiable, elle gère malgré tout les bits sous forme de binomes de pulses.

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