47Fermer49
DEATHLe 26/02/2022 à 00:08
Zerosquare (./45) :

Sur la Jaguar c'est différent : c'est un DAC 16 bits série, qui a besoin d'un flux continu de données, d'une horloge et d'un signal de synchro gauche/droite. Une fois que le module I²S est initialisé, tout ça est géré automatiquement : la valeur de LTXD et RTXD est capturée une fois par cycle d'échantillonnage. Donc si tu utilises un timer plutôt que l'interruption I²S :
- si fréq. timer > fréq. I²S : il y a des échantillons qui sont ignorés
- si fréq. timer < fréq. I²S : il y a des échantillons qui sont utilisés deux fois (ou plus)
- si fréq. timer = fréq. I²S : ça marche, mais comme le déphasage I²S/timer est imprévisible, tu peux avoir une race condition entre l'écriture des registres audio et leur lecture

Bref autant utiliser l'interruption I²S : ça marche mieux et c'est fait exprès pour ça. Quant à savoir pourquoi certains jeux utilisent un timer... ils ont peut-être voulu faire comme ils avaient l'habitude sur les machines qu'ils connaissaient, ou pas bien compris la doc. C'est vrai que c'est pas forcément évident si on ne sait pas comment fonctionne l'électronique qu'il y a derrière. (Et puis si on commence à lister les jeux Jaguar qui font des trucs bizarres/douteux, on n'a pas fini grin)

Sinon, Super Burnout est techniquement très bon en effet smile

J'avoue que je ne comprends pas vraiment, dans Super Burnout (et Atari Kart) SLCK est à zéro, je ne vois pas comment i2s pourrait alors être à la même fréquence que JPIT
De plus JPIT et i2s n'ayant pas les mêmes diviseurs c'est certains qu'il devient difficile d'avoir la même fréquence.

J'ai toujours pensé que quand on utilisait JPIT comme timer pour la fréquence d'échantillonnage, i2s était en quelque sorte "désactivé" dans le sens ou les valeurs 16bits inscrites dans L_DAC et R_DAC étaient directement envoyées tel quel en parallèle vers le DAC. Et donc forcément à la fréquence à laquelle on les y inscrit.
Après, si les échantillons sont réellement envoyé à la fréquence de i2s, quelle importance ? Si SLCK est à 0 je suppose qu'on a la fréquence maxi de i2s. Si la fréquence de i2s est très supérieur au timer JPIT, envoyer plusieurs fois le même échantillon au DAC, ça ne change absolument rien au son produit.