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

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

Auteur :  Lone [ 11 Oct 2014, 22:31 ]
Sujet du message :  Re: Dumps originaux

Petite question : Pourquoi les DRB sont-ils considérés comme si mauvais ?

Ca me parait la solution idéale : Pas de place à l'interprétation (du style : Après une pause, c'est pulse "high" ou "low" ??)

En regardant le wav de Mask (qui passe sans frémir; sur une version de Sbx un peu débuggée ) : Il fait ce que je pense qu'il doit faire : Les deux "Big pulses" sont dans l'ordre (high puis low), alors que quand je décode le CDT, j'en déduis l'inverse, ce qui me posait soucis : On mesure le pulse "low" (le second), alors que s'ils sont inversé, le décodage de ce pulse arrive trop tard (on a une sorte d'overflow, vu qu'on time la pulse en ratant le début).

Du coup, je me demande ce qu'on doit penser d'une "pause" : Comment repartir après sans se tromper ?
D'ailleurs, je me demande bien comment ce cas est géré par d'autres émulateurs : J'ai généré un CDT "patché" avec un pilots comprenant un nombre paire de pulse (comme sur le wav), et j'ai le résultat suivant :
- Winape fait tout marcher (je pense que ça n'est pas forcément bon signe)
- Sugarbox passe la version patchée, mais pas la version officielle
- CPCE passe la version générale, et pas la patchée

En fait, CPCE et Sugarbox ont un comportement correct. La différence réside dans l'interprétation du CDT (après cette fameuse pause... ou Sbx part avec une pulse "high" et CPCE sans doute "low" )

Bref, difficile de trancher avec les infos que j'ai...


PS: Pour les néophytes, DRB = Direct Recording Bloc : c'est une sorte de sampling de bloc (chaque bit de chaque octet de ce DRB est un sample, en fait (0 ou 1)).

Auteur :  dlfrsilver [ 12 Oct 2014, 07:13 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
Petite question : Pourquoi les DRB sont-ils considérés comme si mauvais ?

Ca me parait la solution idéale : Pas de place à l'interprétation (du style : Après une pause, c'est pulse "high" ou "low" ??)

En regardant le wav de Mask (qui passe sans frémir; sur une version de Sbx un peu débuggée ) : Il fait ce que je pense qu'il doit faire : Les deux "Big pulses" sont dans l'ordre (high puis low), alors que quand je décode le CDT, j'en déduis l'inverse, ce qui me posait soucis : On mesure le pulse "low" (le second), alors que s'ils sont inversé, le décodage de ce pulse arrive trop tard (on a une sorte d'overflow, vu qu'on time la pulse en ratant le début).

Du coup, je me demande ce qu'on doit penser d'une "pause" : Comment repartir après sans se tromper ?
D'ailleurs, je me demande bien comment ce cas est géré par d'autres émulateurs : J'ai généré un CDT "patché" avec un pilots comprenant un nombre paire de pulse (comme sur le wav), et j'ai le résultat suivant :
- Winape fait tout marcher (je pense que ça n'est pas forcément bon signe)
- Sugarbox passe la version patchée, mais pas la version officielle
- CPCE passe la version générale, et pas la patchée

En fait, CPCE et Sugarbox ont un comportement correct. La différence réside dans l'interprétation du CDT (après cette fameuse pause... ou Sbx part avec une pulse "high" et CPCE sans doute "low" )

Bref, difficile de trancher avec les infos que j'ai...


PS: Pour les néophytes, DRB = Direct Recording Bloc : c'est une sorte de sampling de bloc (chaque bit de chaque octet de ce DRB est un sample, en fait (0 ou 1)).


Les blocs DRB ne sont pas mauvais. Ils ne sont utilisés que sur certains jeux qui les utilisent. Mask n'en fait pas partie.

En fait c'est très simple : Mask n'utilise pas de DRB. Ce qui est enregistré c'est une alternance de blocs "PureTone" et "PureData".

Si tu utilises des blocs DRB, le contenu du CDT n'est plus conforme à ce qui est enregistré sur la K7 originale.

Si tu veux comparer, prends un jeu qui utilise un loader bleepload v3, qui eux utilisent des DRB. Tu peux essayer aussi Knight Force, Dick Tracy ou Wild streets, ou encore Frank Bruno's Boxing en version retail.

Tu trouveras pour ceux là des blocs DRB.

Je te recontacte :)

Auteur :  JMD [ 12 Oct 2014, 10:03 ]
Sujet du message :  Re: Dumps originaux

Hello,
J'arrive certainement après la bataille.
Effectivement, Mask n'est pas sur mon site car je en suis pas arrivé, à l’époque, à le dumper de manière a ce qu'il fonctionne sur émulateur.
Du coup, je l'ai redumpé ce matin et tu peux trouver le dump brut des deux faces là (16bits 44.1 stéréo, 105Mo)

Pour le dumper, j'ai utilisé ma méthode habituelle qui est d'intercepter le signal directement à la sortie du lecteur k7 d'un CPC 464 puis de échantillonner avec Wavosaur (très bon outil gratuit !) au travers de ma carte son (suivant les cas la realtek intégré au PC ou ma vieille MAudio delta que j'utilise pour la musique).
Le montage coté CPC m'avait été indiqué par Irios et ressemble à ça :
Image

J'ai de très bon résultats généralement et cette méthode permet de s'assurer que le jeu passe bien sur le CPC (il s’exécute en même temps).

Pour les WAV de mon site, j’effectue des retraitements audio pour rendre les wav plus compressibles et simplifier le signal. J'avais donné le détail là.
Enfin, pour la partie conversion CDT, j'utilise samp2cdt couplé à une petite interface que je me suis codé

Malgré tout ça, il arrive que ça ne suffise pas et suivant ma motivation, je peux mixer les résultats obtenus a partir de plusieurs sources (les 2 faces ou plusieurs versions équivalentes du jeu), généralement en utilisant CPCTapeXP.
Enfin, on arrive a "rattraper" certains wav en les passant par la formule (pas toujours) magique csw.com crée par César Nicolás González et fournit avec CPCE. Je ne sais pas trop comment ça marche en pratique mais il arrive que ce soit très efficace.

JMD

Auteur :  dlfrsilver [ 12 Oct 2014, 15:16 ]
Sujet du message :  Re: Dumps originaux

JMD a écrit :
Hello,
J'arrive certainement après la bataille.
Effectivement, Mask n'est pas sur mon site car je en suis pas arrivé, à l’époque, à le dumper de manière a ce qu'il fonctionne sur émulateur.
Du coup, je l'ai redumpé ce matin et tu peux trouver le dump brut des deux faces là (16bits 44.1 stéréo, 105Mo)

Pour le dumper, j'ai utilisé ma méthode habituelle qui est d'intercepter le signal directement à la sortie du lecteur k7 d'un CPC 464 puis de échantillonner avec Wavosaur (très bon outil gratuit !) au travers de ma carte son (suivant les cas la realtek intégré au PC ou ma vieille MAudio delta que j'utilise pour la musique).
Le montage coté CPC m'avait été indiqué par Irios et ressemble à ça :
Image

J'ai de très bon résultats généralement et cette méthode permet de s'assurer que le jeu passe bien sur le CPC (il s’exécute en même temps).

Pour les WAV de mon site, j’effectue des retraitements audio pour rendre les wav plus compressibles et simplifier le signal. J'avais donné le détail là.
Enfin, pour la partie conversion CDT, j'utilise samp2cdt couplé à une petite interface que je me suis codé

Malgré tout ça, il arrive que ça ne suffise pas et suivant ma motivation, je peux mixer les résultats obtenus a partir de plusieurs sources (les 2 faces ou plusieurs versions équivalentes du jeu), généralement en utilisant CPCTapeXP.
Enfin, on arrive a "rattraper" certains wav en les passant par la formule (pas toujours) magique csw.com crée par César Nicolás González et fournit avec CPCE. Je ne sais pas trop comment ça marche en pratique mais il arrive que ce soit très efficace.

JMD


Par rapport à ce que dis JMD, l'idée est là, Mask fait partie des jeux qui nécessite un enregistrement couplé à la lecture de la cassette sur un vrai amstrad CPC, sinon c'est juste horrible à transférer. La protection utilisée fait usage aussi de bruit rajouté au signal, bref, c'est juste hyper chiant à faire :(

Auteur :  Lone [ 12 Oct 2014, 20:48 ]
Sujet du message :  Re: Dumps originaux

En tout cas, ces deux dumps sont nickels (et permettent de comprendre ce qui se passe, surtout !)

Merci à vous deux !

A-t-on moyen de contacter Cesar ? J'aimerais lui poser la question concernant Mask, histoire d'avoir une conclusion définitive sur le sujet.

Auteur :  dlfrsilver [ 12 Oct 2014, 22:51 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
En tout cas, ces deux dumps sont nickels (et permettent de comprendre ce qui se passe, surtout !)

Merci à vous deux !

A-t-on moyen de contacter Cesar ? J'aimerais lui poser la question concernant Mask, histoire d'avoir une conclusion définitive sur le sujet.


Oui via Skype :)

Tu as un compte ?

voici un début de réponse de sa part au sujet des pauses :

"Toutes les pauses sont identiques d'après le standard TZX; Elles forcent l'état interne à l'état 'low'."
Elles le forcent après le premier millième de seconde de pause si il n'est pas encore à l'état 'low'. C'est de cette manière que le standard s'assure que la polarité de chaque pulse dans la cassette est toujours prévisible, en évitant l'ambiguité des dernières pulses qui sont en état 'high' ou 'low' après les pauses.

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

dlfrsilver a écrit :
voici un début de réponse de sa part au sujet des pauses :

"Toutes les pauses sont identiques d'après le standard TZX; Elles forcent l'état interne à l'état 'low'."
Elles le forcent après le premier millième de seconde de pause si il n'est pas encore à l'état 'low'. C'est de cette manière que le standard s'assure que la polarité de chaque pulse dans la cassette est toujours prévisible, en évitant l'ambiguité des dernières pulses qui sont en état 'high' ou 'low' après les pauses.



Rha, c'est bien là ou je trouve que ça coince : J'ai implémenté cette vision des choses (La pause force l'état "low", et donc l'état immédiatement suivant est "high"). Et cette vision ne fonctionne pas avec le CDT généré de Mask, ou il est nécessaire d'avoir un état "Low" immédiatement après la pause pour que ça marche...

Ce qui est également étrange, c'est que CDT2WAV utilisé sur ce Cdt de mask va faire la chose inverse :
Considérons 1 comme high, -1 comme low, et 0 comme "pause" :
Après la pause (positionéne sur le 0), on a un état low (-1)... Ce qui semble contradictoire, mais fait en fait fonctionner correctement le WAV généré en le rendant a peu près conforme au WAV original

Auteur :  dlfrsilver [ 13 Oct 2014, 17:52 ]
Sujet du message :  Re: Dumps originaux

Citer :
Rhaaa, c'est bien là ou je trouve que ça coince : J'ai implémenté cette vision des choses (La pause force l'état "low", et donc l'état immédiatement suivant est "high"). Et cette vision ne fonctionne pas avec le CDT généré de Mask, ou il est nécessaire d'avoir un état "Low" immédiatement après la pause pour que ça marche...


Le CDT généré c'est celui que tu as mis au point ?

Citer :
Ce qui est également étrange, c'est que CDT2WAV utilisé sur ce Cdt de mask va faire la chose inverse :
Considérons 1 comme high, -1 comme low, et 0 comme "pause" : Après la pause (positionéne sur le 0), on a un état low (-1)... Ce qui semble contradictoire, mais fait en fait fonctionner correctement le WAV généré en le rendant a peu près conforme au WAV original


C'est normal, l'outil CDT2WAV a été codé pour suivre le format TZX :) c'est donc logique ;)

Ensuite est-ce que tu sais que Mask fait usage de la "polarité" ? Est-ce que tu as implémenté ça dans ton émulateur ?

EDIT : tu n'as pas implémenté la polarité dans ton émulateur :? C'est de la que vient ton problème.

regarde la réponse de césar :

"Bien, j'insisterai sur ce que j'ai dit hier. En interne, les fichiers TZX sont joués/traités en basculant l'état. De cette façon on obtient les vagues carrés typiques pour les pilotes, syncs, bits...

Quand je lui ai donc dit, en toute logique, "bascule d'état" = polarité ? Il m'a répondu ce qui suit :

"High et low, oui. Les pauses dans la méthode TZX sont divisées en millisecondes: la polarité de la toute première milliseconde de pause est (comme attendu) l'inverse de la polarité de la dernière "pulse"... mais après cette première milliseconde de pause, la polarité est réinitialisée à l'état 'low', sans tenir compte si elle était en état 'high' ou 'low'.

Ainsi, si on avait deux blocs un après l'autre, et que le premier ait une "pause" définie à 0, la sortie à l'endroit ils s'unissent (partons du principe que le premier se termine avec un bit 0 et le second commence avec un 'pilot tone' dont les "pulses" sont 4x les pulses BIT0) ça fera quelque chose comme ça: soit ...LH,LLLLHHHH... ou ...HL,HHHHLLLL... Mais si il y avait une pause de disons, 10 unités, on obtiendrait quelque chose comme ça: ...LH,LLLLLLLLLL,HHHHLLLL... ou ...HL,HLLLLLLLLL,HHHHLLLL...
C'est un exemple très exagére bien entendu.
Commencer avec une énorme différence de taille entre les unités utilisées pour mesurer des 'pulses' (T, 1/3500000 s) et les pauses (ms, 1/1000 s); mais comme tu peux le voir, les pauses non égales à zéro forcent un changement d'état après leur première milliseconde.

Remarque que cela signifie que n'importe quelle pause dont la longueur est de 0 ms ne provoquera aucun changement sur la polarité!"

Tu dois donc implémenter cette bascule d'état que l'on connait sous le nom de 'polarité' (Mask n'est pas le seul jeu à utiliser la polarité au passage ;)

Auteur :  Lone [ 13 Oct 2014, 21:07 ]
Sujet du message :  Re: Dumps originaux

J'ai exactement cette implémentation (d'ailleurs, les wav de mask - les tiens et ceux de JMD - passent parfaitement).

De toute façon, on ne peut pas faire d'émulation un peu sérieuse des cassettes sans passer par là.

Concernant CDT2WAV, si tu le passes sur le CDT généré, et regarde le résultat, tu verras, a 3:15,690.... Une pause, suivi d'un level low... Et le wav résultant passe sur sugarbox.


Bref, j'en perds mon latin.

Je vais tacher de générer un wav a partir de mon implémentation du cdt , pour voir si ça passe sur CPCE.

Auteur :  dlfrsilver [ 13 Oct 2014, 21:46 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
J'ai exactement cette implémentation (d'ailleurs, les wav de mask - les tiens et ceux de JMD - passent parfaitement).

De toute façon, on ne peut pas faire d'émulation un peu sérieuse des cassettes sans passer par là.

Concernant CDT2WAV, si tu le passes sur le CDT généré, et regarde le résultat, tu verras, a 3:15,690.... Une pause, suivi d'un level low... Et le wav résultant passe sur sugarbox.


Bref, j'en perds mon latin.

Je vais tacher de générer un wav a partir de mon implémentation du cdt , pour voir si ça passe sur CPCE.


Tu pourrais nous faire profiter de ton CDT de mask, ainsi que du WAV ? Merki :kissed:

Auteur :  Lone [ 13 Oct 2014, 21:57 ]
Sujet du message :  Re: Dumps originaux

Voila, c'est codé.

J'ai donc pris la version "originale" de mask en cdt (celle de cpc-p0wer), regénéré par mes soins en wav. Verdict : Ko sur sugarbox (pas étonnant) et cpce.
Ensuite, ma version patchée, regénérée en wav.
Verdict : Ok sur sugarbox (encore heureux) et ok sur CPCE.

Conclusion : Je suis en phase sur le fond avec CPCE.

Corollaire : CPCE fait quelque chose différemment de moi sur le décodage du CDT.

J'avoue que j'adorerais avoir l'avis de César sur le sujet...

Mes wav générés : Http:\\sugarbox.free.fr/release/Mask.zip

PS : Je viens de lancer CPCE en version "Tape compatibility" et "Tape speedup".
Et là... Le CDT officiel de cpc p0wer plante, exactement comme Sugarbox. Et ma version patchée fonctionne. Comme Sugarbox.

On avance, les amis :)

Auteur :  dlfrsilver [ 13 Oct 2014, 22:26 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
Voila, c'est codé.

J'ai donc pris la version "originale" de mask en cdt (celle de cpc-p0wer), regénéré par mes soins en wav. Verdict : Ko sur sugarbox (pas étonnant) et cpce.
Ensuite, ma version patchée, regénérée en wav.
Verdict : Ok sur sugarbox (encore heureux) et ok sur CPCE.


Ok, je t'affranchi : les outils pour convertir en WAV sont pour certains buggés, et ne convertissent pas correctement les CDTs en WAV. :kissed:

Citer :
Conclusion : Je suis en phase sur le fond avec CPCE.

Corollaire : CPCE fait quelque chose différemment de moi sur le décodage du CDT.


Oui CPCE possède une option appelée "Polarity" qui doit être cochée :)

Citer :
J'avoue que j'adorerais avoir l'avis de César sur le sujet...


Ce que j'ai posté c'est ce qu'il m'a dit, et que j'ai traduis en français.

Si tu veux parler avec, skype est ton best friend (je parle pas de vidéo, mais de chat style messenger).

Citer :
Mes wav générés : Http:\\sugarbox.free.fr/release/Mask.zip


Le lien ne fonctionne pas rohhh..... quand même :mdr:

Citer :
PS : Je viens de lancer CPCE en version "Tape compatibility" et "Tape speedup".
Et là... Le CDT officiel de cpc p0wer plante, exactement comme Sugarbox. Et ma version patchée fonctionne. Comme Sugarbox.

On avance, les amis :)


Ces 2 options ne servent pas à lancer Mask sous CPCE :) C'est polarity que tu dois cocher :)

Auteur :  Lone [ 13 Oct 2014, 22:36 ]
Sujet du message :  Re: Dumps originaux

My bad, c'est bien polarity que j'ai coché ...
Et qui fait que ça ne marche plus.

Sugarbox.free.fr/Mask.zip devrait mieux marcher.
Ces WAV sont générés par un build spécial debug de sugarbox.

Auteur :  dlfrsilver [ 13 Oct 2014, 23:46 ]
Sujet du message :  Re: Dumps originaux

Lone a écrit :
My bad, c'est bien polarity que j'ai coché ...
Et qui fait que ça ne marche plus.

Sugarbox.free.fr/Mask.zip devrait mieux marcher.
Ces WAV sont générés par un build spécial debug de sugarbox.


Ton archive Mask.zip est corrompue :mdr:

Je desespère pas, que tu me l'envoie, cette archive, ahahah :kissed:

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

Sugarbox.free.fr/release/Mask.zip

J'espère que c'est bon ( je n'ai pas les moyens de tester, la...)

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