diff options
author | Astatin <[email protected]> | 2025-08-06 21:00:27 +0200 |
---|---|---|
committer | Astatin <[email protected]> | 2025-08-06 21:00:27 +0200 |
commit | 8b7594415a4ca28b0193d24d59c3089f046a3be1 (patch) | |
tree | cc73c7f8b59ff5a30d9989bc99508de8b7241c08 /music | |
parent | 4db56b6d877ee88a672f5361bbe372783086353d (diff) |
Add click sound effect on menu open, dialogue next & menu arrow moves
Diffstat (limited to 'music')
-rw-r--r-- | music/load.gbasm | 172 | ||||
-rw-r--r-- | music/morning-forest.fur | bin | 765 -> 773 bytes | |||
-rw-r--r-- | music/morning-forest.vgm | bin | 7127 -> 7022 bytes | |||
-rw-r--r-- | music/soundeffects.gbasm | 34 | ||||
-rw-r--r-- | music/soundeffects/click.gbasm | 36 | ||||
-rw-r--r-- | music/title-screen-music.fur | bin | 708 -> 707 bytes | |||
-rw-r--r-- | music/title-screen.vgm | bin | 0 -> 6221 bytes |
7 files changed, 227 insertions, 15 deletions
diff --git a/music/load.gbasm b/music/load.gbasm index 0634a2b..eac38ac 100644 --- a/music/load.gbasm +++ b/music/load.gbasm @@ -1,15 +1,57 @@ -Load_Music: - .LOAD_BANK_OF =_music_Dungeon +.MACRODEF LOAD_MUSIC =music_addr + LD A, bank(=music_addr) + LD ($mem_current_vgm_header), A + LD A, high(ptr(=music_addr)) + LD ($mem_current_vgm_header+1), A + LD A, low(ptr(=music_addr)) + LD ($mem_current_vgm_header+2), A +.END - LD HL, ptr(=_music_Dungeon+52) +Reset_Music_Channels: + LD A, $00 + LD ($11), A + LD ($12), A + LD ($13), A + LD ($14), A + LD ($16), A + LD ($17), A + LD ($18), A + LD ($19), A + LD ($1A), A + LD ($1B), A + LD ($1C), A + LD ($1D), A + LD ($1E), A + LD ($20), A + LD ($21), A + LD ($22), A + LD ($23), A + RET + +Start_Music: + LD A, ($mem_current_vgm_header) + .CHANGE_BANK_TO_A + LD A, ($mem_current_vgm_header+1) + LD H, A + LD A, ($mem_current_vgm_header+2) + LD L, A + + LD A, L + ADD $34 + LD L, A + LD A, H + ADC $00 + LD H, A + CALL =Fix_HL_Bank LD A, L ADD (HL) LD L, A LD A, H ADC $00 LD H, A + CALL =Fix_HL_Bank - LD A, bank(=_music_Dungeon) + LD A, $saved_rom_bank LD ($mem_current_vgm_pc), A LD A, H LD ($mem_current_vgm_pc+1), A @@ -18,23 +60,39 @@ Load_Music: RET Loop_Music: - .LOAD_BANK_OF =_music_Dungeon + LD A, ($mem_current_vgm_header) + .CHANGE_BANK_TO_A + LD A, ($mem_current_vgm_header+1) + LD H, A + LD A, ($mem_current_vgm_header+2) + LD L, A - LD HL, ptr(=_music_Dungeon+28) - LD BC, ptr(=_music_Dungeon+28) - LD E, bank(=_music_Dungeon+28) + LD A, L + ADD $1c + LD L, A + LD A, H + ADC $00 + LD H, A + CALL =Fix_HL_Bank + LD B, H + LD C, L + LD A, $saved_rom_bank + LD E, A LD A, B SUB $40 LD B, A - LD A, (HL+) + LD A, (HL) + CALL =Inc_HL_Fix_Bank ADD C LD C, A - LD A, (HL+) + LD A, (HL) + CALL =Inc_HL_Fix_Bank ADC B LD B, A - LD A, (HL+) + LD A, (HL) + CALL =Inc_HL_Fix_Bank ADC E LD E, A @@ -60,6 +118,11 @@ Loop_Music: Inc_HL_Fix_Bank: PUSH AF INC HL + CALL =Fix_HL_Bank + POP AF + RET + +Fix_HL_Bank: LD A, H CP $80 JR C, =.end @@ -71,10 +134,80 @@ Inc_HL_Fix_Bank: .CHANGE_BANK_TO_A .end: - POP AF + RET + +Check_Channel_Available: + ; TODO: Channel panning register in $FF25 is still impacted by music + CP $24 + RET NC + + PUSH BC + + CP $1A + JR NC =.channel_3_4 + .channel_1_2: + CP $16 + JR NC, =.channel_2 + + .channel_1: + LD C, A + LD A, $mem_sound_flags + BIT 1, A + LD A, C + JR Z, =.end + LD A, $00 + JR =.end + + .channel_2: + LD C, A + LD A, $mem_sound_flags + BIT 2, A + LD A, C + JR Z, =.end + LD A, $00 + JR =.end + + .channel_3_4: + CP $20 + JR NC, =.channel_4 + + .channel_3: + LD C, A + LD A, $mem_sound_flags + BIT 3, A + LD A, C + JR Z, =.end + LD A, $00 + JR =.end + + .channel_4: + LD C, A + LD A, $mem_sound_flags + BIT 4, A + LD A, C + JR Z, =.end + LD A, $00 + + .end: + POP BC RET Play_Music: + LD A, $mem_sound_flags + BIT 0, A + RET Z + BIT 5, A + JR Z, =.sound_effect_frame_count_dec_skip + LD A, $mem_sound_effect_frame_count + DEC A + LD $mem_sound_effect_frame_count, A + CP $00 + JR NZ, =.sound_effect_frame_count_dec_skip + + LD A, $mem_sound_flags + AND 0b11000001 + LD $mem_sound_flags, A + .sound_effect_frame_count_dec_skip: LD A, ($mem_current_vgm_pc) .CHANGE_BANK_TO_A LD A, ($mem_current_vgm_pc+1) @@ -90,10 +223,19 @@ Play_Music: .set_register: LD A, (HL) CALL =Inc_HL_Fix_Bank - ADD $10 LD C, A - LD A, (HL) + + LD B, (HL) CALL =Inc_HL_Fix_Bank + + LD A, C + ADD $10 + CALL =Check_Channel_Available + CP $00 + JR Z, =.next + LD C, A + + LD A, B LD (C), A JR =.next .set_register.end: @@ -113,7 +255,7 @@ Play_Music: .the61thingy.end: .panic: - DBG + LD A, $saved_rom_bank STOP .panic.end: diff --git a/music/morning-forest.fur b/music/morning-forest.fur Binary files differindex f5c4e0c..bb9b8d4 100644 --- a/music/morning-forest.fur +++ b/music/morning-forest.fur diff --git a/music/morning-forest.vgm b/music/morning-forest.vgm Binary files differindex fbedcce..b3f423d 100644 --- a/music/morning-forest.vgm +++ b/music/morning-forest.vgm diff --git a/music/soundeffects.gbasm b/music/soundeffects.gbasm new file mode 100644 index 0000000..f320aaf --- /dev/null +++ b/music/soundeffects.gbasm @@ -0,0 +1,34 @@ +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 + +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 diff --git a/music/soundeffects/click.gbasm b/music/soundeffects/click.gbasm new file mode 100644 index 0000000..8b811db --- /dev/null +++ b/music/soundeffects/click.gbasm @@ -0,0 +1,36 @@ +_sound_effect_Click: + LD A, $mem_sound_flags + SET 2, A + LD $mem_sound_flags, A + + ; LD A, $3f + LD A, $80 + LD ($16), A + ; LD A, $a1 + LD A, $f3 + LD ($17), A + ; LD A, $16 + LD A, $83 + LD ($18), A + ; LD A, $84 + LD A, $87 + LD ($19), A + + .RET_WAIT_NEXT_FRAME + ; .RET_WAIT_NEXT_FRAME + ; .RET_WAIT_NEXT_FRAME + ; .RET_WAIT_NEXT_FRAME + + LD A, $08 + LD ($17), A + LD A, $16 + LD ($18), A + LD A, $84 + LD ($19), A + + LD A, $mem_sound_flags + AND 0b11000001 + LD $mem_sound_flags, A + LD A, $ff + LD ($mem_sound_effect_pc), A + RET diff --git a/music/title-screen-music.fur b/music/title-screen-music.fur Binary files differindex f20eff8..9a474c5 100644 --- a/music/title-screen-music.fur +++ b/music/title-screen-music.fur diff --git a/music/title-screen.vgm b/music/title-screen.vgm Binary files differnew file mode 100644 index 0000000..4c6725b --- /dev/null +++ b/music/title-screen.vgm |