diff options
author | Astatin <[email protected]> | 2025-08-12 13:17:58 +0200 |
---|---|---|
committer | Astatin <[email protected]> | 2025-08-12 13:17:58 +0200 |
commit | c70b3cb2cab64d550a585dcfbc166bf30c0ea955 (patch) | |
tree | ef41d8f22129ab84e112bc7e78a6ce3ceb97dc83 | |
parent | 41b5858e855c68e01bf388e54abd82661e846585 (diff) |
Add jump, damage, earcoptr and hop sound effects
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | animation.gbasm | 1 | ||||
-rw-r--r-- | definitions.gbasm | 2 | ||||
-rw-r--r-- | enemiesattacks/basic.gbasm | 1 | ||||
-rw-r--r-- | enemiesattacks/laser.gbasm | 2 | ||||
-rw-r--r-- | entity/bunny.gbasm | 2 | ||||
-rw-r--r-- | main.gbasm | 9 | ||||
-rw-r--r-- | music/soundeffects.gbasm | 12 | ||||
-rw-r--r-- | music/soundeffects/damage.gbasm | 50 | ||||
-rw-r--r-- | music/soundeffects/earcoptr.gbasm | 60 | ||||
-rw-r--r-- | music/soundeffects/jump.gbasm | 48 | ||||
-rw-r--r-- | music/soundeffects/laser.gbasm | 46 | ||||
-rw-r--r-- | playerattacks/earcoptr.gbasm | 8 | ||||
-rw-r--r-- | playerattacks/hop.gbasm | 1 |
14 files changed, 240 insertions, 4 deletions
@@ -58,7 +58,7 @@ build/game_linux_x86-64: build/makeself/start.sh build/makeself/main.rom build/m run: build/main.rom mkdir -p recordings - gb $< --record-input "./recordings/$(shell date -Iseconds).record" -v infos,errors,debug,halt_cycles + gb $< --record-input "./recordings/$(shell date -Iseconds).record" -v infos,errors,debug #,halt_cycles sameboy: build/main.rom sameboy build/main.rom diff --git a/animation.gbasm b/animation.gbasm index dfeb695..bfaabe6 100644 --- a/animation.gbasm +++ b/animation.gbasm @@ -116,6 +116,7 @@ End_animation: LD A, $1f LD $mem_blinking_animation_counter, A + .SET_SOUND_EFFECT =_sound_effect_Damage POP HL diff --git a/definitions.gbasm b/definitions.gbasm index 2fba957..e50008e 100644 --- a/definitions.gbasm +++ b/definitions.gbasm @@ -187,6 +187,8 @@ .DEFINE mem_sound_effect_pc $c078 ; Takes $c078 - $c07a (bank + ptr) +.DEFINE mem_sound_effect_hl $c07b ; Takes $c07b - $c07c + ; ## WARNING THE SPACE BETWEEN $c400 and $c800 is used as a buffer for the loading map function during dungeon generation .DEFINE mem_map_loading_buffer $c400 diff --git a/enemiesattacks/basic.gbasm b/enemiesattacks/basic.gbasm index 984029c..6887fb0 100644 --- a/enemiesattacks/basic.gbasm +++ b/enemiesattacks/basic.gbasm @@ -66,6 +66,7 @@ Basic_Enemy_Attack: ; Direction to face in E. Result in BC (XY), Direction in D LD A, $1f SUB B LD $mem_blinking_animation_counter, A + .SET_SOUND_EFFECT =_sound_effect_Damage POP BC RET diff --git a/enemiesattacks/laser.gbasm b/enemiesattacks/laser.gbasm index 18ce73e..da2bc51 100644 --- a/enemiesattacks/laser.gbasm +++ b/enemiesattacks/laser.gbasm @@ -144,6 +144,8 @@ Apply_Prepared_Laser_Enemy_Attack: ; Entity (whatever alignment) in HL Direction LD D, $10 CALL =Try_Launch_Animation + .SET_SOUND_EFFECT =_sound_effect_Laser + LD A, $enum_animation_wait_mode LD $mem_requested_mode, A LD $mem_current_mode, A diff --git a/entity/bunny.gbasm b/entity/bunny.gbasm index 928693c..d617285 100644 --- a/entity/bunny.gbasm +++ b/entity/bunny.gbasm @@ -92,6 +92,7 @@ Move_Bunny: LD A, $1f SUB B LD $mem_blinking_animation_counter, A + .SET_SOUND_EFFECT =_sound_effect_Damage LD A, $mem_bunny_flags SET 3, A LD $mem_bunny_flags, A @@ -255,6 +256,7 @@ Move_Bunny: SET 3, (HL) LD A, $24 LD $mem_blinking_animation_counter, A + .SET_SOUND_EFFECT =_sound_effect_Damage LD A, $00 LD $mem_entity_being_attacked_low, A @@ -10,11 +10,12 @@ Entrypoint: LD HL, $mem_bunny_attacks LD A, $01 LD (HL+), A - XOR A + LD A, $04 LD (HL+), A + XOR A LD (HL+), A LD (HL+), A - LD A, $01 + LD A, $02 LD $mem_number_of_attacks, A LD A, bank(=Morning_Forest) @@ -67,6 +68,10 @@ Entrypoint: .INCLUDE "music/soundeffects/menu.gbasm" .INCLUDE "music/soundeffects/heal.gbasm" .INCLUDE "music/soundeffects/nextfloor.gbasm" +.INCLUDE "music/soundeffects/jump.gbasm" +.INCLUDE "music/soundeffects/laser.gbasm" +.INCLUDE "music/soundeffects/damage.gbasm" +.INCLUDE "music/soundeffects/earcoptr.gbasm" _music_Dungeon: .INCLUDEBIN "music/morning-forest.vgm" diff --git a/music/soundeffects.gbasm b/music/soundeffects.gbasm index f320aaf..c164492 100644 --- a/music/soundeffects.gbasm +++ b/music/soundeffects.gbasm @@ -12,6 +12,18 @@ 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 diff --git a/music/soundeffects/damage.gbasm b/music/soundeffects/damage.gbasm new file mode 100644 index 0000000..aa325d1 --- /dev/null +++ b/music/soundeffects/damage.gbasm @@ -0,0 +1,50 @@ +_sound_effect_Damage: + LD A, $mem_sound_flags + SET 4, A + LD $mem_sound_flags, A + + LD A, $00 + LD ($21), A + LD A, $80 + LD ($23), A + + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + + LD A, $3f + LD ($20), A + LD A, $82 + LD ($21), A + LD A, $14 + LD ($22), A + LD A, $80 + LD ($23), A + + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + .RET_WAIT_NEXT_FRAME + + LD A, $3f + LD ($20), A + LD A, $a2 + LD ($21), A + LD A, $14 + LD ($22), A + LD A, $80 + LD ($23), A + + LD A, $mem_sound_flags + SET 5, A + LD $mem_sound_flags, A + LD A, $10 + LD $mem_sound_effect_frame_count, A + LD A, $ff + LD ($mem_sound_effect_pc), A + RET diff --git a/music/soundeffects/earcoptr.gbasm b/music/soundeffects/earcoptr.gbasm new file mode 100644 index 0000000..bbccb65 --- /dev/null +++ b/music/soundeffects/earcoptr.gbasm @@ -0,0 +1,60 @@ +_sound_effect_Earcoptr_slide_data: +.DB $e7, $86, $c4, $06, $9e, $06, $72, $06, $42, $06, $0b, $06, $ce, $05, $89, $05 +_sound_effect_Earcoptr_slide_data.semi: +.DB $3b, $05, $e5, $04, $83, $04, $16, $04, $9b, $03, $12, $03, $77, $02, $c9, $01 +_sound_effect_Earcoptr_slide_data.end: + +_sound_effect_Earcoptr: + LD A, $mem_sound_flags + SET 2, A + LD $mem_sound_flags, A + + + LD A, $80 + LD ($19), A + + .MACRODEF EARCOPTER_SOUND_LOOP =start =end + LD HL, =start + + $loop: + LD A, (HL+) + LD ($18), A + + LD A, (HL+) + LD ($19), A + + .RET_WAIT_NEXT_FRAME_SAVE_HL + + LD A, H + CP high(=end) + JR NZ, =$loop + LD A, L + CP low(=end) + JR NZ, =$loop + $end: + .END + + LD A, $3f + LD ($16), A + LD A, $82 + LD ($17), A + .EARCOPTER_SOUND_LOOP =_sound_effect_Earcoptr_slide_data, =_sound_effect_Earcoptr_slide_data.semi + + LD A, $3f + LD ($16), A + LD A, $82 + LD ($17), A + .EARCOPTER_SOUND_LOOP =_sound_effect_Earcoptr_slide_data, =_sound_effect_Earcoptr_slide_data.semi + + LD A, $3f + LD ($16), A + LD A, $82 + LD ($17), A + .EARCOPTER_SOUND_LOOP =_sound_effect_Earcoptr_slide_data, =_sound_effect_Earcoptr_slide_data.end + + 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/soundeffects/jump.gbasm b/music/soundeffects/jump.gbasm new file mode 100644 index 0000000..7ae9a58 --- /dev/null +++ b/music/soundeffects/jump.gbasm @@ -0,0 +1,48 @@ +_sound_effect_Jump_slide_data: + .DB $20 $86 $35 $06 $48 $06 $5b $06 $6d $06 $7e $06 $8e $06 $9e $06 + .DB $ad $06 $bb $06 $c9 $06 $d6 $06 $e3 $06 $ef $06 $fa $06 $06 $07 + .DB $10 $07 $1a $07 $24 $07 $2d $07 $36 $07 $3f $07 $47 $07 $4f $07 + .DB $56 $07 $5e $07 $64 $07 $6b $07 $71 $07 $77 $07 $7d $07 $83 $07 + .DB $88 $07 $8d $07 $92 $07 $97 $07 $9b $07 $9f $07 $a4 $07 $a7 $07 + .DB $ab $07 $af $07 $b2 $07 $b6 $07 $b9 $07 $bc $07 $bf $07 $c1 $07 + .DB $c4 $07 $c7 $07 $c9 $07 $cb $07 $ce $07 $d0 $07 $d2 $07 $d4 $07 + .DB $d6 $07 $d7 $07 $d9 $07 $db $07 +_sound_effect_Jump_slide_data.end: + +_sound_effect_Jump: + LD A, $mem_sound_flags + SET 2, A + LD $mem_sound_flags, A + + LD HL, =_sound_effect_Jump_slide_data + + LD A, $80 + LD ($19), A + LD A, $3f + LD ($16), A + LD A, $a2 + LD ($17), A + + .loop: + LD A, (HL+) + LD ($18), A + + LD A, (HL+) + LD ($19), A + + .RET_WAIT_NEXT_FRAME_SAVE_HL + + LD A, H + CP high(=_sound_effect_Jump_slide_data.end) + JR NZ, =.loop + LD A, L + CP low(=_sound_effect_Jump_slide_data.end) + JR NZ, =.loop + .end: + + 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/soundeffects/laser.gbasm b/music/soundeffects/laser.gbasm new file mode 100644 index 0000000..e73396b --- /dev/null +++ b/music/soundeffects/laser.gbasm @@ -0,0 +1,46 @@ +_sound_effect_Laser_slide_data: + .DB $bc, $87, $b6, $07, $af, $07, $a7, $07, $9f, $07, $97, $07, $8d, $07, $83, $07 + .DB $77, $07, $6b, $07, $5e, $07, $4f, $07, $3f, $07, $2d, $07, $1a, $07, $06, $07 + .DB $ef, $06, $d6, $06, $bb, $06, $9e, $06, $7e, $06, $5b, $06, $35, $06, $0b, $06 + .DB $de, $05, $ac, $05, $76, $05, $3b, $05, $fb, $04, $b5, $04, $69, $04, $16, $04 + .DB $bb, $03, $58, $03, $ed, $02, $77, $02, $f7, $01, $6b, $01, $d2, $00, $2c, $00 + .DB $01, $00 +_sound_effect_Laser_slide_data.end: + +_sound_effect_Laser: + LD A, $mem_sound_flags + SET 2, A + LD $mem_sound_flags, A + + LD HL, =_sound_effect_Laser_slide_data + + LD A, $80 + LD ($19), A + LD A, $3f + LD ($16), A + LD A, $a2 + LD ($17), A + + .loop: + LD A, (HL+) + LD ($18), A + + LD A, (HL+) + LD ($19), A + + .RET_WAIT_NEXT_FRAME_SAVE_HL + + LD A, H + CP high(=_sound_effect_Laser_slide_data.end) + JR NZ, =.loop + LD A, L + CP low(=_sound_effect_Laser_slide_data.end) + JR NZ, =.loop + .end: + + 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/playerattacks/earcoptr.gbasm b/playerattacks/earcoptr.gbasm index 721692e..818471b 100644 --- a/playerattacks/earcoptr.gbasm +++ b/playerattacks/earcoptr.gbasm @@ -17,10 +17,13 @@ Earcoptr_Attack_Loading_Regular: SLA A SLA A SLA A - INC A LD L, A LD A, (HL+) + CP $00 + RET Z + + LD A, (HL+) LD E, A LD A, $mem_bunny_x @@ -57,6 +60,7 @@ Earcoptr_Attack_Loading_Regular: LD A, $1f SUB B LD $mem_blinking_animation_counter, A + .SET_SOUND_EFFECT =_sound_effect_Damage LD A, (HL) SUB $01 @@ -91,6 +95,8 @@ Earcoptr_Attack: POP DE POP BC + .SET_SOUND_EFFECT =_sound_effect_Earcoptr + LD BC, =Earcoptr_Attack_Loading_VBlank LD A, B LD $mem_loading_mode_vblank_func_pointer_high, A diff --git a/playerattacks/hop.gbasm b/playerattacks/hop.gbasm index 30c673f..7549774 100644 --- a/playerattacks/hop.gbasm +++ b/playerattacks/hop.gbasm @@ -97,6 +97,7 @@ Hop_Attack_Loading_Regular: LD $mem_current_mode, A LD $mem_requested_mode, A CALL =Update_VBlank_Handler + .SET_SOUND_EFFECT =_sound_effect_Jump LD A, $mem_bunny_direction OR $08 LD $mem_bunny_direction, A |