aboutsummaryrefslogtreecommitdiff
path: root/music
diff options
context:
space:
mode:
authorAstatin <[email protected]>2025-08-19 15:57:51 +0200
committerAstatin <[email protected]>2025-08-19 15:57:51 +0200
commitbbc5ab6ad02dbabcb79e1e83195288c0fb8cf1d1 (patch)
tree619cda5870860164fd8bddcb4e0ed741cf63ca49 /music
parentc70b3cb2cab64d550a585dcfbc166bf30c0ea955 (diff)
Add insect bite & frog grab sound effects + disallow 2 sound effects at once
Diffstat (limited to 'music')
-rw-r--r--music/soundeffects.gbasm28
-rw-r--r--music/soundeffects/bite.gbasm70
-rw-r--r--music/soundeffects/earcoptr.gbasm27
-rw-r--r--music/soundeffects/freeze.gbasm56
-rw-r--r--music/soundeffects/grab.gbasm23
-rw-r--r--music/soundeffects/jump.gbasm19
-rw-r--r--music/soundeffects/laser.gbasm19
7 files changed, 182 insertions, 60 deletions
diff --git a/music/soundeffects.gbasm b/music/soundeffects.gbasm
index c164492..6bf4a15 100644
--- a/music/soundeffects.gbasm
+++ b/music/soundeffects.gbasm
@@ -24,6 +24,28 @@ Wait_Next_Frame:
LD L, A
.END
+.MACRODEF CHANNEL_2_SOUND_EFFECT_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
+
+
Play_Sound_Effect:
LD A, ($mem_sound_effect_pc)
CP $ff
@@ -37,10 +59,16 @@ Play_Sound_Effect:
RET
.MACRODEF SET_SOUND_EFFECT =addr
+ PUSH AF
+ LD A, $mem_sound_flags
+ AND 0b00111110
+ JR NZ =$end
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:
+ POP AF
.END
diff --git a/music/soundeffects/bite.gbasm b/music/soundeffects/bite.gbasm
new file mode 100644
index 0000000..3ac67a3
--- /dev/null
+++ b/music/soundeffects/bite.gbasm
@@ -0,0 +1,70 @@
+_sound_effect_Bite_slide_data:
+.DB $7d, $87, $77, $07, $71, $07, $6b, $07, $64, $07, $5e, $07, $56, $07, $4f, $07
+.DB $47, $07, $3f, $07, $36, $07, $2d, $07, $24, $07
+_sound_effect_Bite_slide_data.end:
+
+_sound_effect_Bite:
+ LD A, $mem_sound_flags
+ OR 0b00010100
+ LD $mem_sound_flags, A
+
+ LD A, $3f
+ LD ($20), A
+ LD A, $42
+ 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
+
+ LD A, $08
+ LD ($21), A
+ LD A, $14
+ LD ($22), A
+ LD A, $80
+ LD ($23), A
+
+ .RET_WAIT_NEXT_FRAME
+
+ LD A, $3f
+ LD ($20), A
+ LD A, $42
+ 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
+
+ LD A, $08
+ LD ($21), A
+ LD A, $14
+ LD ($22), A
+ LD A, $80
+ LD ($23), A
+
+ .RET_WAIT_NEXT_FRAME
+
+ LD A, $3f
+ LD ($16), A
+ LD A, $a2
+ LD ($17), A
+
+ .CHANNEL_2_SOUND_EFFECT_LOOP =_sound_effect_Bite_slide_data, =_sound_effect_Bite_slide_data.end
+
+ LD A, $08
+ LD ($17), 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/soundeffects/earcoptr.gbasm b/music/soundeffects/earcoptr.gbasm
index bbccb65..0c11168 100644
--- a/music/soundeffects/earcoptr.gbasm
+++ b/music/soundeffects/earcoptr.gbasm
@@ -13,44 +13,23 @@ _sound_effect_Earcoptr:
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
+ .CHANNEL_2_SOUND_EFFECT_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
+ .CHANNEL_2_SOUND_EFFECT_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
+ .CHANNEL_2_SOUND_EFFECT_LOOP =_sound_effect_Earcoptr_slide_data, =_sound_effect_Earcoptr_slide_data.end
LD A, $mem_sound_flags
AND 0b11000001
diff --git a/music/soundeffects/freeze.gbasm b/music/soundeffects/freeze.gbasm
new file mode 100644
index 0000000..5d4915f
--- /dev/null
+++ b/music/soundeffects/freeze.gbasm
@@ -0,0 +1,56 @@
+_sound_effect_Freeze_slide_data:
+.DB $c2, $87, $c1, $07, $c1, $07, $c1, $07, $c2, $07
+.semi:
+.DB $c1, $07, $c1, $07, $c1, $07
+.DB $c2, $07, $c2, $07, $c1, $07, $c1, $07, $c1, $07, $c2, $07, $c1, $07, $c1, $07
+.DB $c1, $07, $c2, $07, $c1, $07, $c1, $07, $c1, $07, $c2, $07, $c2, $07, $c1, $07
+.DB $c1, $07, $c1, $07, $c2, $07, $c1, $07, $c1, $07, $c1, $07, $c2, $07, $c1, $07
+.DB $c1, $07, $c1, $07, $c2, $07
+.end:
+
+_sound_effect_Freeze:
+ LD A, $mem_sound_flags
+ OR 0b00010100
+ LD $mem_sound_flags, A
+
+
+ LD A, $80
+ LD ($19), A
+ LD A, $3f
+ LD ($16), A
+ LD A, $a3
+ LD ($17), A
+
+ LD A, $3f
+ LD ($20), A
+ LD A, $52
+ LD ($21), A
+ LD A, $14
+ LD ($22), A
+ LD A, $80
+ LD ($23), A
+
+ .CHANNEL_2_SOUND_EFFECT_LOOP =_sound_effect_Freeze_slide_data, =_sound_effect_Freeze_slide_data.semi
+
+ LD A, $3f
+ LD ($16), A
+ LD A, $a3
+ LD ($17), A
+
+ LD A, $3f
+ LD ($20), A
+ LD A, $52
+ LD ($21), A
+ LD A, $14
+ LD ($22), A
+ LD A, $80
+ LD ($23), A
+
+ .CHANNEL_2_SOUND_EFFECT_LOOP =_sound_effect_Freeze_slide_data, =_sound_effect_Freeze_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/grab.gbasm b/music/soundeffects/grab.gbasm
new file mode 100644
index 0000000..5145774
--- /dev/null
+++ b/music/soundeffects/grab.gbasm
@@ -0,0 +1,23 @@
+_sound_effect_Grab_slide_data:
+.DB $a3, $86, $93, $06, $83, $06, $72, $06, $61, $06, $4e, $06, $3b, $06, $27, $06
+.DB $12, $06, $fc, $05, $e5, $05, $ce, $05, $b5, $05, $9b, $05, $80, $05, $63, $05
+.DB $46, $05
+_sound_effect_Grab_slide_data.end:
+
+_sound_effect_Grab:
+ LD A, $mem_sound_flags
+ SET 2, A
+ LD $mem_sound_flags, A
+
+ LD A, $3f
+ LD ($16), A
+ LD A, $84
+ LD ($17), A
+ .CHANNEL_2_SOUND_EFFECT_LOOP =_sound_effect_Grab_slide_data, =_sound_effect_Grab_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
index 7ae9a58..13c21c0 100644
--- a/music/soundeffects/jump.gbasm
+++ b/music/soundeffects/jump.gbasm
@@ -14,8 +14,6 @@ _sound_effect_Jump:
SET 2, A
LD $mem_sound_flags, A
- LD HL, =_sound_effect_Jump_slide_data
-
LD A, $80
LD ($19), A
LD A, $3f
@@ -23,22 +21,7 @@ _sound_effect_Jump:
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:
+ .CHANNEL_2_SOUND_EFFECT_LOOP =_sound_effect_Jump_slide_data =_sound_effect_Jump_slide_data.end
LD A, $mem_sound_flags
AND 0b11000001
diff --git a/music/soundeffects/laser.gbasm b/music/soundeffects/laser.gbasm
index e73396b..b3c02a7 100644
--- a/music/soundeffects/laser.gbasm
+++ b/music/soundeffects/laser.gbasm
@@ -12,8 +12,6 @@ _sound_effect_Laser:
SET 2, A
LD $mem_sound_flags, A
- LD HL, =_sound_effect_Laser_slide_data
-
LD A, $80
LD ($19), A
LD A, $3f
@@ -21,22 +19,7 @@ _sound_effect_Laser:
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:
+ .CHANNEL_2_SOUND_EFFECT_LOOP =_sound_effect_Laser_slide_data, =_sound_effect_Laser_slide_data.end
LD A, $mem_sound_flags
AND 0b11000001