nan, ce que je veux dire c'est de mettre pour toutes les fonction snd_ en prefixe:
snd_install
snd_...etc
Bien sûr. Tu as vu que les var globales n'ont pas le même format? Montre-moi le diff entre ton code original et le code modifié que tu as essayé...
J'ai regardé le code que tu m'as donné et j'ai vus que tu as changé le codage des modes, que tu as regroupé dans une même varaible state et playmode mais le problème majeure avec ça c'est qu'il est difficle de gérer ça dans les fonctions de PolySnd. Je sais bien que créer une varaible de 8 bits alors que 2 sont utilisé c'est du gaspiyage et une perte de vitesse mais c'est la meilleur solution pour que les évenements de PolySnd soit concordant et facile à modifier pour l'utilisateur.
Quand à cette partie:
done_voice2:
64: ;Frequence int5 à 5000hz
65: ;frequence HW1/HW2
66: patch_hw1hw2_1
67: addi.w #1234,(a0)+ ; 20000 HW2, 14162 HW1
68: bpl.s execute_define_int5_handler
Je ne comprend pas comment tu peux gérer les 2 models de calculatrice et obtenir une fréquence de 5 KHz avec une fréquence d'origine de 8192 Hz OU 11639 Hz.
move.w #20000,patch_hw1hw2_1+2 ... test hardware... branch_si_hardware2 \calc_hw2 ; est-ce une HW2 ou une HW1 ? move.w #14162,patch_hw1hw2_1+2 ; c'est une HW1, corriger en conséquence \calc_hw2
Mais vraiment je te remercie de ton aide, car malgré que je n'ai pas implanté ça dans PolySnd, ça me donne un bon moyen d'optimiser mes futurs code en ASM et oublier les var locale.
Je ne crois pas qu'écrire le code pour mettre à jour les flags optimisés soit très compliqué, surtout que je t'ai donné les correspondances de bits... Si tu veux tu me re-minimsg le début du code que je t'avais envoyé et je t'écris le code de conversion Par contre je n'ai vraiment pas envie de le faire si je sais que ça ne sera pas utilisé et que tu refuses de l'implémenter dans PolySnd, donc si tu me demandes ça tu t'engages à faire un minimum d'effort pour voir ce qui ne va pas et/ou me demander si tu as des problèmes plutôt que de jeter ce que j'ai fait à la poubelle...
Tu le patches, i.e. au moment du chargement de ta lib :
move.w #20000,patch_hw1hw2_1+2
... test hardware...
branch_si_hardware2 \calc_hw2 ; est-ce une HW2 ou une HW1 ?
move.w #14162,patch_hw1hw2_1+2 ; c'est une HW1, corriger en conséquence \calc_hw2
Non franchement c'est très simple à mettre en oeuvre et si tu ne le fais pas au moins une fois tu ne le feras jamais. Si tu as un pb, demande-moi.
Je n'ai pas dit que ça serait compliqué à implanter mais juste que ça serait difficle à gérer surtout pour l'utilisateur, bien sûr ton idée et vraiment optimal, mettre tout dans une variable mais ça implique des contraintes.
Justement, c'est ce que tu n'as pas compris : CA N'IMPLIQUE AUCUNE CONTRAINTE! Renvoie-moi le code que je t'ai envoyé, et je t'écrirai le code de la fonction de conversion. Il n'y aura rien à modifier dans le reste de la lib.
Ben j'avoue que mis à part le grous souffle, je suis assez bluffé par la qualité (surtout de Mario Castle).
Faudrait arriver à faire rentrer un petit HP (un buzer de base, quoi) dans la TI
Update_internals: moveq #0,d0 tst.b playmode bne \no15 or.w #0x8000,d0 \no15 btst #0,state bne \no14 or.w #0x4000,d0 \no14 btst #2,mode bne \no13 or.w #0x2000,d0 \no13 btst #3,mode bne \no12 or.w #0x1000,d0 \no12 btst #1,mode bne \no11 or.w #0x800,d0 \no11 btst #0,mode bne \no10 or.w #0x400,d0 \no10 btst #1,state bne \no7 or.w #0x80,d0 \no7 btst #6,mode bne \no6 or.w #0x40,d0 \no6 btst #7,mode bne \no5 or.w #0x20,d0 \no5 btst #5,mode bne \no4 or.w #0x10,d0 \no4 btst #4,mode bne \no3 or.w #0x8,d0 \no3 move.w d0,state_and_mode rts
play_voice1: move.w play_frequency(PC),d1 move.w frequency_voice1(PC),d0 add.w d0,_fcounter1 lsr.w #1,d0 neg.w d0 add.w d1,d0 cmp.w _fcounter1(PC),d0 bcc.s son_1 tst.w frequency_voice1 beq.s son_1 sub.w d1,_fcounter1 ;bchg.b #0,($60000E) eori.b #1,($60000E) ;mode MONO tst.b playmode beq.s _mono_ ;subq.w #1,_ucounter1 son_1: subq.w #1,_ucounter1 rts _mono_: eori.b #2,($60000E) bra.s son_1
play: lea _fcounter_extended1(pc),a0 move.w frequency_voice1(pc),d0 bne.s son_1 add.w (a0),d0 bcc.s son_1 sub.w play_frequency(pc),d0 patch_playmode_1 eori.b #123,($60000E) ; à patcher en 1 en stéréo, 3 en mono son_1 move.w d0,(a0) subq.w #1,_ucounter1 ; et tu peux l'améliorer en mettant _ucounter1 juste après _fcounter1 rts