mirror of
https://github.com/thornAvery/kep-hack.git
synced 2026-02-06 15:45:24 +13:00
Fix battle sound pitch/tempo modifiers
This commit is contained in:
parent
b2afaae7ab
commit
17044ab7eb
6 changed files with 200 additions and 43 deletions
|
|
@ -2605,6 +2605,131 @@ _PlayCry::
|
|||
call MusicOn
|
||||
ret
|
||||
|
||||
_PlayBattleSound::
|
||||
; clear channels if they aren't already
|
||||
call MusicOff
|
||||
ld hl, wChannel5Flags1
|
||||
bit SOUND_CHANNEL_ON, [hl] ; ch5 on?
|
||||
jr z, .ch6
|
||||
res SOUND_CHANNEL_ON, [hl] ; turn it off
|
||||
xor a
|
||||
ldh [rNR11], a ; length/wavepattern = 0
|
||||
ld a, $8
|
||||
ldh [rNR12], a ; envelope = 0
|
||||
xor a
|
||||
ldh [rNR13], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ldh [rNR14], a ; restart sound (freq hi = 0)
|
||||
xor a
|
||||
ld [wPitchSweep], a ; pitch sweep off
|
||||
ldh [rNR10], a ; pitch sweep off
|
||||
.ch6
|
||||
ld hl, wChannel6Flags1
|
||||
bit SOUND_CHANNEL_ON, [hl]
|
||||
jr z, .ch7
|
||||
res SOUND_CHANNEL_ON, [hl] ; turn it off
|
||||
xor a
|
||||
ldh [rNR21], a ; length/wavepattern = 0
|
||||
ld a, $8
|
||||
ldh [rNR22], a ; envelope = 0
|
||||
xor a
|
||||
ldh [rNR23], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ldh [rNR24], a ; restart sound (freq hi = 0)
|
||||
.ch7
|
||||
ld hl, wChannel7Flags1
|
||||
bit SOUND_CHANNEL_ON, [hl]
|
||||
jr z, .ch8
|
||||
res SOUND_CHANNEL_ON, [hl] ; turn it off
|
||||
xor a
|
||||
ldh [rNR30], a ; sound mode #3 off
|
||||
ldh [rNR31], a ; length/wavepattern = 0
|
||||
ld a, $8
|
||||
ldh [rNR32], a ; envelope = 0
|
||||
xor a
|
||||
ldh [rNR33], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ldh [rNR34], a ; restart sound (freq hi = 0)
|
||||
.ch8
|
||||
ld hl, wChannel8Flags1
|
||||
bit SOUND_CHANNEL_ON, [hl]
|
||||
jr z, .chscleared
|
||||
res SOUND_CHANNEL_ON, [hl] ; turn it off
|
||||
xor a
|
||||
ldh [rNR41], a ; length/wavepattern = 0
|
||||
ld a, $8
|
||||
ldh [rNR42], a ; envelope = 0
|
||||
xor a
|
||||
ldh [rNR43], a ; frequency lo = 0
|
||||
ld a, $80
|
||||
ldh [rNR44], a ; restart sound (freq hi = 0)
|
||||
xor a
|
||||
ld [wNoiseSampleAddress], a
|
||||
ld [wNoiseSampleAddress + 1], a
|
||||
.chscleared
|
||||
; start reading sfx header for # chs
|
||||
ld hl, wMusicID
|
||||
ld [hl], e
|
||||
inc hl
|
||||
ld [hl], d
|
||||
ld hl, SFX
|
||||
add hl, de ; three
|
||||
add hl, de ; byte
|
||||
add hl, de ; pointers
|
||||
; get bank
|
||||
ld a, [hli]
|
||||
ld [wMusicBank], a
|
||||
; get address
|
||||
ld e, [hl]
|
||||
inc hl
|
||||
ld d, [hl]
|
||||
; get # channels
|
||||
call LoadMusicByte
|
||||
rlca ; top 2
|
||||
rlca ; bits
|
||||
maskbits NUM_MUSIC_CHANS
|
||||
inc a ; # channels -> # loops
|
||||
.startchannels
|
||||
push af
|
||||
call LoadChannel ; bc = current channel
|
||||
ld hl, CHANNEL_FLAGS1
|
||||
add hl, bc
|
||||
set SOUND_SFX, [hl]
|
||||
|
||||
ld hl, CHANNEL_FLAGS2
|
||||
add hl, bc
|
||||
set SOUND_PITCH_OFFSET, [hl]
|
||||
|
||||
ld hl, CHANNEL_PITCH_OFFSET
|
||||
add hl, bc
|
||||
ld a, [wCryPitch]
|
||||
ld [hli], a
|
||||
ld a, [wCryPitch + 1]
|
||||
ld [hl], a
|
||||
|
||||
; No tempo for channel 4
|
||||
ld a, [wCurChannel]
|
||||
maskbits NUM_MUSIC_CHANS
|
||||
cp CHAN4
|
||||
jr nc, .start
|
||||
|
||||
; Tempo is effectively length
|
||||
ld hl, CHANNEL_TEMPO
|
||||
add hl, bc
|
||||
ld a, [wCryLength]
|
||||
ld [hli], a
|
||||
ld a, [wCryLength + 1]
|
||||
ld [hl], a
|
||||
.start
|
||||
call StartChannel
|
||||
pop af
|
||||
dec a
|
||||
jr nz, .startchannels
|
||||
call MusicOn
|
||||
xor a
|
||||
ld [wSFXPriority], a
|
||||
ret
|
||||
|
||||
_PlaySFX::
|
||||
; clear channels if they aren't already
|
||||
call MusicOff
|
||||
|
|
|
|||
|
|
@ -113,8 +113,3 @@ SFX:
|
|||
dba SFX_Shooting_Star
|
||||
|
||||
dba SFX_PokefluteInBattle
|
||||
|
||||
dba Sfx_NotVeryEffective
|
||||
dba Sfx_Damage
|
||||
dba Sfx_SuperEffective
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue