Si l'on prend un sample de $170 et que l'on applique la valeur 2 à la commande, il y a débordement
Donc on va la faire comme ceci
Code : Tout sélectionner
move.b n_sampleoffset(A6),D0 ; On charge la valeur de l'offset
lsl.w #7,D0 ; Que l'on multiplie par 128
add.w d0,d0 ; On multiplie le résultat par 2
cmp.w PTv_SmpLength(a6),d0 ; On regarde si débordement
bge.s PT_sofskip ; Si oui on sort (ici sans muter le sample)
add.l d0,PTv_SmpStart(a6) ; Sinon on additionne D0 à l'adresse de début du sample
PT_sofskip
rts
Maintenant est-ce vraiment nécessaire de multiplier par 256 compte tenu de la machine. Je veux dire que je doute voir des samples de 65535 octets. Il serait plus judicieux d'utiliser comme multiple 16 qui peut travailler sur un sample de 4096 octets. 4ko c'est déjà bien pour un thomson surtout que si l'on considère 31 samples de même taille cela fait un mod de plus de 130 ko (en comptant 1 seul patt). Ce qui est plus qu'honorable à mon avis