30.08€ pour 50 CD-R à Auchan, c'est rush...
2 ou 3 petits trucs, on peut tester le déclanchement/arrêt des pistes CD sur nebula en ouvrant le .cue les commande fonctionnent.
A un détail pret, les "CDDALEFTL ($FF0188) and REG_CDDARIGHTL ($FF01AA)" ne sont pas mis à jour alors que sur le vrai hard ca marche.
La routine StopAudio en page1 de ce thread arrête bien la piste en cours sur nebula mais pas sur le vrai hard, l'arrêt ne fonctionne pas.
StopAudio:
move.w #0x0400, d0 <== marche sur emul mais pas en vrai
bset #7, 0x10FD80
jsr 0xC0056A
rts
Par contre "move.w #0x0200, d0" ou "move.w #0x0600, d0" arrêtent bien la piste en cours sur nebula et sur le hard.
J'ai fait un test de synchro audio/video, c'est pas super beau mais ca marche :
while(true) {
wait_vbl();
data1 = *((PBYTE)0xFF0188);
data2 = *((PBYTE)0xFF018A);
if(data1 != 0 || data2 != 0) break;
/* Donne du temps aux autres taches */
_release_timeslice();
}
(..)
Intro...
furrtek (./243) :
T'as ajouté la récup des niveaux et corrigé la lecture des pistes sur Neodev alors ?
Oui pour la lecture et l'arret d'une piste, j'ai rajouté ca sous forme de librairie à linker à son code.
Pour les niveaux je suis en train d'essayer, je sais déjà envoyer une valeur de C vers ASM, je sais pas encore faire de l'ASM vers le C en retour de fonction(j'ai pas encore vraiment cherché)
Si j'ai bien compris, il faut traiter les valeurs retournées dans $FF0188 et $FF018A par ton code ?
;D1:Input, D0:Output
reverse16bits:
moveq #16-1,d7
moveq #0,d0
rev:
lsr #1,d1
bcc zerobit
bset d7,d0
zerobit:
dbf d7,rev
Vu que j'y comprends rien ^^, j'ai essayé d'interpréter :
- on met la valeur de FF0188 ou $FF018A dans D1 et une fois le code plus haut exécuté on récupère la bonne valeur dans D0 ?
toujours si mon interprétation est pas fausse, il suffirait de renvoyer D0 au C pour faire un vmetre en C ?
J'ai essayé de faire bouger 2 sprite avec les valeurs brutes, bouge dans tous les sens, on sent bien qu'il y a un rapport lointain avec la musique mais c'est pas flagrant
