From d77b156de83e8a93e3fa9832642824089593d1db Mon Sep 17 00:00:00 2001 From: Astatin Date: Sat, 12 Jul 2025 02:45:00 +0200 Subject: Play music from included vgm file --- music/load.gbasm | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ music/test.vgm | Bin 0 -> 2093 bytes 2 files changed, 90 insertions(+) create mode 100644 music/load.gbasm create mode 100644 music/test.vgm (limited to 'music') diff --git a/music/load.gbasm b/music/load.gbasm new file mode 100644 index 0000000..400fa1d --- /dev/null +++ b/music/load.gbasm @@ -0,0 +1,90 @@ +Load_Music: + .LOAD_BANK_OF =_music_Test + + LD HL, ptr(=_music_Test+52) + LD A, L + ADD (HL) + LD L, A + LD A, H + ADC $00 + LD H, A + + LD A, bank(=_music_Test) + LD ($mem_current_vgm_pc), A + LD A, H + LD ($mem_current_vgm_pc+1), A + LD A, L + LD ($mem_current_vgm_pc+2), A + RET + +Inc_HL_Fix_Bank: + PUSH AF + INC HL + LD A, H + CP $80 + JR C, =.end + SUB $40 + LD H, A + + LD A, $saved_rom_bank + INC A + DBG + .CHANGE_BANK_TO_A + + .end: + POP AF + RET + +Play_Music: + LD A, ($mem_current_vgm_pc) + .CHANGE_BANK_TO_A + LD A, ($mem_current_vgm_pc+1) + LD H, A + LD A, ($mem_current_vgm_pc+2) + LD L, A + + .next: + LD A, (HL) + DBG + CALL =Inc_HL_Fix_Bank + CP $b3 + JR NZ, =.set_register.end + .set_register: + LD A, (HL) + CALL =Inc_HL_Fix_Bank + ADD $10 + LD C, A + LD A, (HL) + CALL =Inc_HL_Fix_Bank + LD (C), A + JR =.next + .set_register.end: + + CP $66 + JR Z, =Load_Music + + + CP $62 + JR Z, =.panic.end + CP $61 + JR NZ, =.the61thingy.end + .the61thingy: + CALL =Inc_HL_Fix_Bank + CALL =Inc_HL_Fix_Bank + JR =.panic.end + .the61thingy.end: + + .panic: + LD A, $saved_rom_bank + DBG + STOP + .panic.end: + + LD A, H + LD ($mem_current_vgm_pc+1), A + LD A, L + LD ($mem_current_vgm_pc+2), A + LD A, $saved_rom_bank + DBG + LD ($mem_current_vgm_pc), A + RET diff --git a/music/test.vgm b/music/test.vgm new file mode 100644 index 0000000..9922409 Binary files /dev/null and b/music/test.vgm differ -- cgit v1.2.3-70-g09d2