This is my new update_audio function:
Code: Select all
void update_audio(){
if(bLoadSound){ //bLoadSound is set to 12 after AFLOW interrupt
if(load_index < (sample_max - 255)){
mLo = (unsigned char)((unsigned short)load_index & 0x00ff);
mHi = (unsigned char)(((unsigned short)load_index & 0xff00) >> 8);
__asm__("lda #255");
__asm__("ldx _mLo");
__asm__("ldy _mHi");
__asm__("jsr $ff44"); //Call MACPTR
load_index += 255;
} else {
mLoad = (unsigned char)((unsigned short)sample_max - (unsigned short)load_index);
mLo = (unsigned char)((unsigned short)load_index & 0x00ff);
mHi = (unsigned char)(((unsigned short)load_index & 0xff00) >> 8);
__asm__("lda _mLoad");
__asm__("ldx _mLo");
__asm__("ldy _mHi");
__asm__("jsr $ff44"); //Call MACPTR
load_index = sample_point;
mLoad = (255 - mLoad);
mLo = (unsigned char)((unsigned short)load_index & 0x00ff);
mHi = (unsigned char)(((unsigned short)load_index & 0xff00) >> 8);
__asm__("lda _mLoad");
__asm__("ldx _mLo");
__asm__("ldy _mHi");
__asm__("jsr $ff44"); //Call MACPTR
load_index += mLoad;
}
bLoadSound--;
if(bLoadSound == 0){
while(load_index != sample_index){
*load_index = cbm_k_acptr();
load_index++;
if(load_index > sample_max){
load_index = sample_point;
}
}
}
}
}