aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-08-12 13:17:58 +0200
committerAstatin <[email protected]>2025-08-12 13:17:58 +0200
commitc70b3cb2cab64d550a585dcfbc166bf30c0ea955 (patch)
treeef41d8f22129ab84e112bc7e78a6ce3ceb97dc83
parent41b5858e855c68e01bf388e54abd82661e846585 (diff)
Add jump, damage, earcoptr and hop sound effects
-rw-r--r--Makefile2
-rw-r--r--animation.gbasm1
-rw-r--r--definitions.gbasm2
-rw-r--r--enemiesattacks/basic.gbasm1
-rw-r--r--enemiesattacks/laser.gbasm2
-rw-r--r--entity/bunny.gbasm2
-rw-r--r--main.gbasm9
-rw-r--r--music/soundeffects.gbasm12
-rw-r--r--music/soundeffects/damage.gbasm50
-rw-r--r--music/soundeffects/earcoptr.gbasm60
-rw-r--r--music/soundeffects/jump.gbasm48
-rw-r--r--music/soundeffects/laser.gbasm46
-rw-r--r--playerattacks/earcoptr.gbasm8
-rw-r--r--playerattacks/hop.gbasm1
14 files changed, 240 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index f130a43..fab68cb 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/main.gbasm b/main.gbasm
index 5d39faf..0966338 100644
--- a/main.gbasm
+++ b/main.gbasm
@@ -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