Wait_Next_Frame: POP DE LD A, $saved_rom_bank LD ($mem_sound_effect_pc), A LD A, D LD ($mem_sound_effect_pc+1), A LD A, E LD ($mem_sound_effect_pc+2), A RET .MACRODEF RET_WAIT_NEXT_FRAME CALL =Wait_Next_Frame .END .MACRODEF RET_WAIT_NEXT_FRAME_SAVE_HL LD A, H LD ($mem_sound_effect_hl), A LD A, L LD ($mem_sound_effect_hl+1), A CALL =Wait_Next_Frame LD A, ($mem_sound_effect_hl) LD H, A LD A, ($mem_sound_effect_hl+1) LD L, A .END Play_Sound_Effect: LD A, ($mem_sound_effect_pc) CP $ff RET Z .CHANGE_BANK_TO_A LD A, ($mem_sound_effect_pc+1) LD D, A LD A, ($mem_sound_effect_pc+2) LD E, A PUSH DE RET .MACRODEF SET_SOUND_EFFECT =addr LD A, bank(=addr) LD ($mem_sound_effect_pc), A LD A, high(ptr(=addr)) LD ($mem_sound_effect_pc+1), A LD A, low(ptr(=addr)) LD ($mem_sound_effect_pc+2), A .END