1

Hello,

Je suis en train de jouer avec la lecture de pistes CD et j'ai qques problèmes et remarque par rapport au wiki.

Ca se passe ici http://wiki.neogeodev.org/index.php?title=CDDA :
$00: Read track and loop
$02: Pause ?
$04: Read track and loop (confirmed)
$05: Read track (loop ?)
$06: Stop ? sent with track number = 0 (puzzled)
$07: ? sent with track number = 0 (mutnat)


J'ai remarqué :
Si j'utilise le code 00 pour lancer les pistes, elles sont lancées en asynchrone.
Alors que le code 04 les lance en synchrone, la console freeze le temps de lancement de la piste.

Par contre avec 00, la console reboote aléatoirement au lancement des commandes.
Tandis qu'avec 04, elle ne reboote que si le lance la piste 8.... allez comprendre smile

Du coup j'ai pensé pour résoudre mes plantage à implémenter ce que décris cette phrase :

BIOSF_SYSYTEM_IO must be called every VBlank for direct CDDA commands to work.

Ca veut dire quoi ? J'ai pas trouvé de références à BIOSF_SYSYTEM_IO

Et pour finir j'ai rajouté ça à neodev pour jouer les pistes CD :
extern void PlayCDLoop(int Track); extern void StopCD(int Track); PlayCDLoop: .set _ARGS, 4 move.l _ARGS(a7), d0 add.w #0x0400,d0 //<== la notation est bizzare mais c'est la seule * add.w #0x0500,d0 //qu'il accepte, je pensais plutôt à "add.w #$400,d0" jsr 0xC0056A // mais ça ne compile pas. rts .align 4 StopCD: move.w #0x0200, d0 jsr 0xC0056A rts .align 4

2

xCeLfr (./1) :
$05: Read track (loop ?)


Qques tests hier, le $05 joue les pistes sans loop, la console freeze le temps d'accéder à la piste.
Par contre pas de reboot de la console.