pokefirered/asm/sound.s
2018-10-03 21:30:13 -04:00

1542 lines
28 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start InitMapMusic
InitMapMusic: @ 8071938
push {lr}
ldr r1, _08071948 @ =gUnknown_3005080
movs r0, 0
strb r0, [r1]
bl ResetMapMusic
pop {r0}
bx r0
.align 2, 0
_08071948: .4byte gUnknown_3005080
thumb_func_end InitMapMusic
thumb_func_start MapMusicMain
MapMusicMain: @ 807194C
push {r4,r5,lr}
ldr r0, _08071964 @ =gUnknown_3000FC4
ldrb r1, [r0]
adds r2, r0, 0
cmp r1, 0x7
bhi _08071A2E
lsls r0, r1, 2
ldr r1, _08071968 @ =_0807196C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08071964: .4byte gUnknown_3000FC4
_08071968: .4byte _0807196C
.align 2, 0
_0807196C:
.4byte _08071A2E
.4byte _0807198C
.4byte _08071A2E
.4byte _08071A2E
.4byte _08071A2E
.4byte _080719A0
.4byte _080719C0
.4byte _080719FC
_0807198C:
movs r0, 0x2
strb r0, [r2]
ldr r0, _0807199C @ =gUnknown_3000FC0
ldrh r0, [r0]
bl PlayBGM
b _08071A2E
.align 2, 0
_0807199C: .4byte gUnknown_3000FC0
_080719A0:
bl IsBGMStopped
lsls r0, 24
cmp r0, 0
beq _08071A2E
ldr r0, _080719B8 @ =gUnknown_3000FC2
movs r1, 0
strh r1, [r0]
ldr r0, _080719BC @ =gUnknown_3000FC4
strb r1, [r0]
b _08071A2E
.align 2, 0
_080719B8: .4byte gUnknown_3000FC2
_080719BC: .4byte gUnknown_3000FC4
_080719C0:
bl IsBGMStopped
lsls r0, 24
cmp r0, 0
beq _08071A2E
bl IsFanfareTaskInactive
lsls r0, 24
cmp r0, 0
beq _08071A2E
ldr r2, _080719F0 @ =gUnknown_3000FC0
ldr r1, _080719F4 @ =gUnknown_3000FC2
ldrh r0, [r1]
strh r0, [r2]
movs r0, 0
strh r0, [r1]
ldr r1, _080719F8 @ =gUnknown_3000FC4
movs r0, 0x2
strb r0, [r1]
ldrh r0, [r2]
bl PlayBGM
b _08071A2E
.align 2, 0
_080719F0: .4byte gUnknown_3000FC0
_080719F4: .4byte gUnknown_3000FC2
_080719F8: .4byte gUnknown_3000FC4
_080719FC:
bl IsBGMStopped
lsls r0, 24
cmp r0, 0
beq _08071A2E
bl IsFanfareTaskInactive
lsls r0, 24
cmp r0, 0
beq _08071A2E
ldr r4, _08071A34 @ =gUnknown_3000FC2
ldrh r0, [r4]
ldr r5, _08071A38 @ =gUnknown_3000FC5
ldrb r1, [r5]
bl FadeInNewBGM
ldr r1, _08071A3C @ =gUnknown_3000FC0
ldrh r0, [r4]
strh r0, [r1]
movs r2, 0
strh r2, [r4]
ldr r1, _08071A40 @ =gUnknown_3000FC4
movs r0, 0x2
strb r0, [r1]
strb r2, [r5]
_08071A2E:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08071A34: .4byte gUnknown_3000FC2
_08071A38: .4byte gUnknown_3000FC5
_08071A3C: .4byte gUnknown_3000FC0
_08071A40: .4byte gUnknown_3000FC4
thumb_func_end MapMusicMain
thumb_func_start ResetMapMusic
ResetMapMusic: @ 8071A44
ldr r0, _08071A58 @ =gUnknown_3000FC0
movs r1, 0
strh r1, [r0]
ldr r0, _08071A5C @ =gUnknown_3000FC2
strh r1, [r0]
ldr r0, _08071A60 @ =gUnknown_3000FC4
strb r1, [r0]
ldr r0, _08071A64 @ =gUnknown_3000FC5
strb r1, [r0]
bx lr
.align 2, 0
_08071A58: .4byte gUnknown_3000FC0
_08071A5C: .4byte gUnknown_3000FC2
_08071A60: .4byte gUnknown_3000FC4
_08071A64: .4byte gUnknown_3000FC5
thumb_func_end ResetMapMusic
thumb_func_start GetCurrentMapMusic
GetCurrentMapMusic: @ 8071A68
ldr r0, _08071A70 @ =gUnknown_3000FC0
ldrh r0, [r0]
bx lr
.align 2, 0
_08071A70: .4byte gUnknown_3000FC0
thumb_func_end GetCurrentMapMusic
thumb_func_start PlayNewMapMusic
PlayNewMapMusic: @ 8071A74
ldr r1, _08071A88 @ =gUnknown_3000FC0
strh r0, [r1]
ldr r1, _08071A8C @ =gUnknown_3000FC2
movs r0, 0
strh r0, [r1]
ldr r1, _08071A90 @ =gUnknown_3000FC4
movs r0, 0x1
strb r0, [r1]
bx lr
.align 2, 0
_08071A88: .4byte gUnknown_3000FC0
_08071A8C: .4byte gUnknown_3000FC2
_08071A90: .4byte gUnknown_3000FC4
thumb_func_end PlayNewMapMusic
thumb_func_start StopMapMusic
StopMapMusic: @ 8071A94
ldr r0, _08071AA8 @ =gUnknown_3000FC0
movs r1, 0
strh r1, [r0]
ldr r0, _08071AAC @ =gUnknown_3000FC2
strh r1, [r0]
ldr r1, _08071AB0 @ =gUnknown_3000FC4
movs r0, 0x1
strb r0, [r1]
bx lr
.align 2, 0
_08071AA8: .4byte gUnknown_3000FC0
_08071AAC: .4byte gUnknown_3000FC2
_08071AB0: .4byte gUnknown_3000FC4
thumb_func_end StopMapMusic
thumb_func_start FadeOutMapMusic
FadeOutMapMusic: @ 8071AB4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
bl IsNotWaitingForBGMStop
lsls r0, 24
cmp r0, 0
beq _08071ACA
adds r0, r4, 0
bl FadeOutBGM
_08071ACA:
ldr r0, _08071AE0 @ =gUnknown_3000FC0
movs r1, 0
strh r1, [r0]
ldr r0, _08071AE4 @ =gUnknown_3000FC2
strh r1, [r0]
ldr r1, _08071AE8 @ =gUnknown_3000FC4
movs r0, 0x5
strb r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08071AE0: .4byte gUnknown_3000FC0
_08071AE4: .4byte gUnknown_3000FC2
_08071AE8: .4byte gUnknown_3000FC4
thumb_func_end FadeOutMapMusic
thumb_func_start FadeOutAndPlayNewMapMusic
FadeOutAndPlayNewMapMusic: @ 8071AEC
push {r4,lr}
adds r4, r0, 0
adds r0, r1, 0
lsls r4, 16
lsrs r4, 16
lsls r0, 24
lsrs r0, 24
bl FadeOutMapMusic
ldr r1, _08071B14 @ =gUnknown_3000FC0
movs r0, 0
strh r0, [r1]
ldr r0, _08071B18 @ =gUnknown_3000FC2
strh r4, [r0]
ldr r1, _08071B1C @ =gUnknown_3000FC4
movs r0, 0x6
strb r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08071B14: .4byte gUnknown_3000FC0
_08071B18: .4byte gUnknown_3000FC2
_08071B1C: .4byte gUnknown_3000FC4
thumb_func_end FadeOutAndPlayNewMapMusic
thumb_func_start FadeOutAndFadeInNewMapMusic
FadeOutAndFadeInNewMapMusic: @ 8071B20
push {r4,r5,lr}
adds r4, r0, 0
adds r0, r1, 0
adds r5, r2, 0
lsls r4, 16
lsrs r4, 16
lsls r0, 24
lsrs r0, 24
lsls r5, 24
lsrs r5, 24
bl FadeOutMapMusic
ldr r1, _08071B54 @ =gUnknown_3000FC0
movs r0, 0
strh r0, [r1]
ldr r0, _08071B58 @ =gUnknown_3000FC2
strh r4, [r0]
ldr r1, _08071B5C @ =gUnknown_3000FC4
movs r0, 0x7
strb r0, [r1]
ldr r0, _08071B60 @ =gUnknown_3000FC5
strb r5, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08071B54: .4byte gUnknown_3000FC0
_08071B58: .4byte gUnknown_3000FC2
_08071B5C: .4byte gUnknown_3000FC4
_08071B60: .4byte gUnknown_3000FC5
thumb_func_end FadeOutAndFadeInNewMapMusic
thumb_func_start FadeInNewMapMusic
FadeInNewMapMusic: @ 8071B64
push {r4,lr}
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl FadeInNewBGM
ldr r0, _08071B90 @ =gUnknown_3000FC0
strh r4, [r0]
ldr r0, _08071B94 @ =gUnknown_3000FC2
movs r2, 0
strh r2, [r0]
ldr r1, _08071B98 @ =gUnknown_3000FC4
movs r0, 0x2
strb r0, [r1]
ldr r0, _08071B9C @ =gUnknown_3000FC5
strb r2, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08071B90: .4byte gUnknown_3000FC0
_08071B94: .4byte gUnknown_3000FC2
_08071B98: .4byte gUnknown_3000FC4
_08071B9C: .4byte gUnknown_3000FC5
thumb_func_end FadeInNewMapMusic
thumb_func_start IsNotWaitingForBGMStop
IsNotWaitingForBGMStop: @ 8071BA0
push {lr}
ldr r0, _08071BB8 @ =gUnknown_3000FC4
ldrb r0, [r0]
cmp r0, 0x6
beq _08071BBC
cmp r0, 0x5
beq _08071BBC
cmp r0, 0x7
beq _08071BBC
movs r0, 0x1
b _08071BBE
.align 2, 0
_08071BB8: .4byte gUnknown_3000FC4
_08071BBC:
movs r0, 0
_08071BBE:
pop {r1}
bx r1
thumb_func_end IsNotWaitingForBGMStop
thumb_func_start sub_8071BC4
sub_8071BC4: @ 8071BC4
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _08071BDC @ =gUnknown_203ADFA
ldrb r0, [r0]
cmp r0, 0x2
bne _08071BE4
ldr r1, _08071BE0 @ =gUnknown_3000FC6
movs r0, 0xFF
strh r0, [r1]
b _08071BFC
.align 2, 0
_08071BDC: .4byte gUnknown_203ADFA
_08071BE0: .4byte gUnknown_3000FC6
_08071BE4:
ldr r0, _08071C04 @ =gMPlay_BGM
bl m4aMPlayStop
ldr r0, _08071C08 @ =gUnknown_83AC990
lsls r1, r4, 2
adds r1, r0
ldrh r0, [r1]
ldr r2, _08071C0C @ =gUnknown_3000FC6
ldrh r1, [r1, 0x2]
strh r1, [r2]
bl m4aSongNumStart
_08071BFC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08071C04: .4byte gMPlay_BGM
_08071C08: .4byte gUnknown_83AC990
_08071C0C: .4byte gUnknown_3000FC6
thumb_func_end sub_8071BC4
thumb_func_start WaitFanfare
WaitFanfare: @ 8071C10
push {lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r2, _08071C28 @ =gUnknown_3000FC6
ldrh r0, [r2]
cmp r0, 0
beq _08071C2C
subs r0, 0x1
strh r0, [r2]
movs r0, 0
b _08071C44
.align 2, 0
_08071C28: .4byte gUnknown_3000FC6
_08071C2C:
cmp r1, 0
bne _08071C3C
ldr r0, _08071C38 @ =gMPlay_BGM
bl m4aMPlayContinue
b _08071C42
.align 2, 0
_08071C38: .4byte gMPlay_BGM
_08071C3C:
movs r0, 0
bl m4aSongNumStart
_08071C42:
movs r0, 0x1
_08071C44:
pop {r1}
bx r1
thumb_func_end WaitFanfare
thumb_func_start StopFanfareByFanfareNum
StopFanfareByFanfareNum: @ 8071C48
push {lr}
lsls r0, 24
ldr r1, _08071C5C @ =gUnknown_83AC990
lsrs r0, 22
adds r0, r1
ldrh r0, [r0]
bl m4aSongNumStop
pop {r0}
bx r0
.align 2, 0
_08071C5C: .4byte gUnknown_83AC990
thumb_func_end StopFanfareByFanfareNum
thumb_func_start PlayFanfare
PlayFanfare: @ 8071C60
push {lr}
lsls r0, 16
lsrs r3, r0, 16
movs r1, 0
ldr r2, _08071C80 @ =gUnknown_83AC990
_08071C6A:
ldrh r0, [r2]
cmp r0, r3
bne _08071C84
lsls r0, r1, 24
lsrs r0, 24
bl sub_8071BC4
bl CreateFanfareTask
b _08071C96
.align 2, 0
_08071C80: .4byte gUnknown_83AC990
_08071C84:
adds r2, 0x4
adds r1, 0x1
cmp r1, 0xD
bls _08071C6A
movs r0, 0
bl sub_8071BC4
bl CreateFanfareTask
_08071C96:
pop {r0}
bx r0
thumb_func_end PlayFanfare
thumb_func_start IsFanfareTaskInactive
IsFanfareTaskInactive: @ 8071C9C
push {lr}
ldr r0, _08071CB0 @ =Task_Fanfare
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08071CB4
movs r0, 0x1
b _08071CB6
.align 2, 0
_08071CB0: .4byte Task_Fanfare
_08071CB4:
movs r0, 0
_08071CB6:
pop {r1}
bx r1
thumb_func_end IsFanfareTaskInactive
thumb_func_start Task_Fanfare
Task_Fanfare: @ 8071CBC
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _08071CD0 @ =gUnknown_3000FC6
ldrh r0, [r1]
cmp r0, 0
beq _08071CD4
subs r0, 0x1
strh r0, [r1]
b _08071CE0
.align 2, 0
_08071CD0: .4byte gUnknown_3000FC6
_08071CD4:
ldr r0, _08071CE8 @ =gMPlay_BGM
bl m4aMPlayContinue
adds r0, r4, 0
bl DestroyTask
_08071CE0:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08071CE8: .4byte gMPlay_BGM
thumb_func_end Task_Fanfare
thumb_func_start CreateFanfareTask
CreateFanfareTask: @ 8071CEC
push {r4,lr}
ldr r4, _08071D0C @ =Task_Fanfare
adds r0, r4, 0
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08071D06
adds r0, r4, 0
movs r1, 0x50
bl CreateTask
_08071D06:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08071D0C: .4byte Task_Fanfare
thumb_func_end CreateFanfareTask
thumb_func_start FadeInNewBGM
FadeInNewBGM: @ 8071D10
push {r4-r7,lr}
lsls r0, 16
lsrs r5, r0, 16
lsls r1, 24
lsrs r7, r1, 24
ldr r0, _08071D58 @ =gUnknown_3005080
ldrb r0, [r0]
cmp r0, 0
beq _08071D24
movs r5, 0
_08071D24:
ldr r6, _08071D5C @ =0x0000ffff
cmp r5, r6
bne _08071D2C
movs r5, 0
_08071D2C:
adds r0, r5, 0
bl m4aSongNumStart
ldr r4, _08071D60 @ =gMPlay_BGM
adds r0, r4, 0
bl m4aMPlayImmInit
adds r0, r4, 0
adds r1, r6, 0
movs r2, 0
bl m4aMPlayVolumeControl
adds r0, r5, 0
bl m4aSongNumStop
adds r0, r4, 0
adds r1, r7, 0
bl m4aMPlayFadeIn
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08071D58: .4byte gUnknown_3005080
_08071D5C: .4byte 0x0000ffff
_08071D60: .4byte gMPlay_BGM
thumb_func_end FadeInNewBGM
thumb_func_start FadeOutBGMTemporarily
FadeOutBGMTemporarily: @ 8071D64
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r0, _08071D78 @ =gMPlay_BGM
bl m4aMPlayFadeOutTemporarily
pop {r0}
bx r0
.align 2, 0
_08071D78: .4byte gMPlay_BGM
thumb_func_end FadeOutBGMTemporarily
thumb_func_start IsBGMPausedOrStopped
IsBGMPausedOrStopped: @ 8071D7C
push {lr}
ldr r0, _08071D94 @ =gMPlay_BGM
ldr r1, [r0, 0x4]
cmp r1, 0
blt _08071D9C
ldr r0, _08071D98 @ =0x0000ffff
ands r1, r0
cmp r1, 0
beq _08071D9C
movs r0, 0
b _08071D9E
.align 2, 0
_08071D94: .4byte gMPlay_BGM
_08071D98: .4byte 0x0000ffff
_08071D9C:
movs r0, 0x1
_08071D9E:
pop {r1}
bx r1
thumb_func_end IsBGMPausedOrStopped
thumb_func_start FadeInBGM
FadeInBGM: @ 8071DA4
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r0, _08071DB8 @ =gMPlay_BGM
bl m4aMPlayFadeIn
pop {r0}
bx r0
.align 2, 0
_08071DB8: .4byte gMPlay_BGM
thumb_func_end FadeInBGM
thumb_func_start FadeOutBGM
FadeOutBGM: @ 8071DBC
push {lr}
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
ldr r0, _08071DD0 @ =gMPlay_BGM
bl m4aMPlayFadeOut
pop {r0}
bx r0
.align 2, 0
_08071DD0: .4byte gMPlay_BGM
thumb_func_end FadeOutBGM
thumb_func_start IsBGMStopped
IsBGMStopped: @ 8071DD4
push {lr}
ldr r0, _08071DE4 @ =gMPlay_BGM
ldrh r0, [r0, 0x4]
cmp r0, 0
beq _08071DE8
movs r0, 0
b _08071DEA
.align 2, 0
_08071DE4: .4byte gMPlay_BGM
_08071DE8:
movs r0, 0x1
_08071DEA:
pop {r1}
bx r1
thumb_func_end IsBGMStopped
thumb_func_start PlayCry1
PlayCry1: @ 8071DF0
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
adds r4, r1, 0
lsls r5, 16
lsrs r5, 16
lsls r4, 24
lsrs r4, 24
ldr r0, _08071E30 @ =gMPlay_BGM
ldr r1, _08071E34 @ =0x0000ffff
movs r2, 0x55
bl m4aMPlayVolumeControl
lsls r4, 24
asrs r4, 24
movs r0, 0
str r0, [sp]
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x78
movs r3, 0xA
bl sub_8071F78
ldr r1, _08071E38 @ =gUnknown_2037ED0
movs r0, 0x2
strb r0, [r1]
bl RestoreBGMVolumeAfterPokemonCry
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08071E30: .4byte gMPlay_BGM
_08071E34: .4byte 0x0000ffff
_08071E38: .4byte gUnknown_2037ED0
thumb_func_end PlayCry1
thumb_func_start PlayCry2
PlayCry2: @ 8071E3C
push {r4,lr}
sub sp, 0x4
lsls r0, 16
lsrs r0, 16
lsls r3, 24
lsrs r3, 24
lsls r1, 24
asrs r1, 24
lsls r2, 24
asrs r2, 24
movs r4, 0
str r4, [sp]
bl sub_8071F78
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end PlayCry2
thumb_func_start PlayCry3
PlayCry3: @ 8071E60
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 16
lsrs r6, r0, 16
lsls r1, 24
lsrs r5, r1, 24
lsls r2, 24
lsrs r4, r2, 24
cmp r4, 0x1
bne _08071E86
lsls r1, r5, 24
asrs r1, 24
str r4, [sp]
adds r0, r6, 0
movs r2, 0x78
movs r3, 0xA
bl sub_8071F78
b _08071EAA
_08071E86:
ldr r0, _08071EB4 @ =gMPlay_BGM
ldr r1, _08071EB8 @ =0x0000ffff
movs r2, 0x55
bl m4aMPlayVolumeControl
lsls r1, r5, 24
asrs r1, 24
str r4, [sp]
adds r0, r6, 0
movs r2, 0x78
movs r3, 0xA
bl sub_8071F78
ldr r1, _08071EBC @ =gUnknown_2037ED0
movs r0, 0x2
strb r0, [r1]
bl RestoreBGMVolumeAfterPokemonCry
_08071EAA:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08071EB4: .4byte gMPlay_BGM
_08071EB8: .4byte 0x0000ffff
_08071EBC: .4byte gUnknown_2037ED0
thumb_func_end PlayCry3
thumb_func_start PlayCry4
PlayCry4: @ 8071EC0
push {r4-r6,lr}
sub sp, 0x4
lsls r0, 16
lsrs r0, 16
adds r6, r0, 0
lsls r1, 24
lsrs r1, 24
adds r5, r1, 0
lsls r2, 24
lsrs r2, 24
adds r4, r2, 0
cmp r2, 0x1
bne _08071EEA
lsls r1, 24
asrs r1, 24
str r2, [sp]
movs r2, 0x78
movs r3, 0xA
bl sub_8071F78
b _08071F10
_08071EEA:
ldr r0, _08071F18 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
bne _08071F00
ldr r0, _08071F1C @ =gMPlay_BGM
ldr r1, _08071F20 @ =0x0000ffff
movs r2, 0x55
bl m4aMPlayVolumeControl
_08071F00:
lsls r1, r5, 24
asrs r1, 24
str r4, [sp]
adds r0, r6, 0
movs r2, 0x78
movs r3, 0xA
bl sub_8071F78
_08071F10:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08071F18: .4byte gBattleTypeFlags
_08071F1C: .4byte gMPlay_BGM
_08071F20: .4byte 0x0000ffff
thumb_func_end PlayCry4
thumb_func_start sub_8071F24
sub_8071F24: @ 8071F24
push {r4,r5,lr}
sub sp, 0x4
lsls r0, 16
lsrs r5, r0, 16
lsls r1, 24
lsrs r4, r1, 24
ldr r0, _08071F68 @ =gUnknown_203ADFA
ldrb r0, [r0]
subs r0, 0x2
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bls _08071F56
ldr r0, _08071F6C @ =gMPlay_BGM
ldr r1, _08071F70 @ =0x0000ffff
movs r2, 0x55
bl m4aMPlayVolumeControl
str r4, [sp]
adds r0, r5, 0
movs r1, 0
movs r2, 0x78
movs r3, 0xA
bl sub_8071F78
_08071F56:
ldr r1, _08071F74 @ =gUnknown_2037ED0
movs r0, 0x2
strb r0, [r1]
bl RestoreBGMVolumeAfterPokemonCry
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08071F68: .4byte gUnknown_203ADFA
_08071F6C: .4byte gMPlay_BGM
_08071F70: .4byte 0x0000ffff
_08071F74: .4byte gUnknown_2037ED0
thumb_func_end sub_8071F24
thumb_func_start sub_8071F78
sub_8071F78: @ 8071F78
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r4, [sp, 0x24]
lsls r0, 16
lsls r1, 24
lsrs r1, 24
mov r10, r1
lsls r2, 24
lsrs r2, 24
lsls r3, 24
lsrs r3, 24
str r3, [sp]
lsls r4, 24
lsrs r1, r4, 24
ldr r3, _08071FC0 @ =0xffff0000
adds r0, r3
lsrs r7, r0, 16
movs r6, 0x8C
movs r0, 0
mov r9, r0
movs r5, 0
movs r4, 0xF0
lsls r4, 6
mov r8, r5
cmp r1, 0xC
bhi _0807208A
lsls r0, r1, 2
ldr r1, _08071FC4 @ =_08071FC8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08071FC0: .4byte 0xffff0000
_08071FC4: .4byte _08071FC8
.align 2, 0
_08071FC8:
.4byte _0807208A
.4byte _08071FFC
.4byte _08072002
.4byte _08072010
.4byte _08072020
.4byte _08072038
.4byte _08072044
.4byte _08072054
.4byte _0807205E
.4byte _08072068
.4byte _08072078
.4byte _08072088
.4byte _08072084
_08071FFC:
movs r6, 0x14
movs r5, 0xE1
b _0807208A
_08072002:
movs r5, 0xE1
ldr r4, _0807200C @ =0x00003cf0
movs r1, 0x14
b _0807202C
.align 2, 0
_0807200C: .4byte 0x00003cf0
_08072010:
movs r6, 0x32
movs r5, 0xC8
ldr r4, _0807201C @ =0x00003db8
movs r3, 0x14
b _0807204A
.align 2, 0
_0807201C: .4byte 0x00003db8
_08072020:
movs r6, 0x19
movs r0, 0x1
mov r9, r0
movs r5, 0x64
ldr r4, _08072034 @ =0x00003cf0
movs r1, 0xC0
_0807202C:
mov r8, r1
movs r2, 0x5A
b _0807208A
.align 2, 0
_08072034: .4byte 0x00003cf0
_08072038:
movs r5, 0xC8
ldr r4, _08072040 @ =0x00003868
b _0807208A
.align 2, 0
_08072040: .4byte 0x00003868
_08072044:
movs r5, 0xDC
ldr r4, _08072050 @ =0x00003cc3
movs r3, 0xC0
_0807204A:
mov r8, r3
movs r2, 0x5A
b _0807208A
.align 2, 0
_08072050: .4byte 0x00003cc3
_08072054:
movs r6, 0xA
movs r5, 0x64
movs r4, 0xE8
lsls r4, 6
b _0807208A
_0807205E:
movs r6, 0x3C
movs r5, 0xE1
movs r4, 0xF4
lsls r4, 6
b _0807208A
_08072068:
movs r6, 0xF
movs r0, 0x1
mov r9, r0
movs r5, 0x7D
ldr r4, _08072074 @ =0x00003b60
b _0807208A
.align 2, 0
_08072074: .4byte 0x00003b60
_08072078:
movs r6, 0x64
movs r5, 0xE1
ldr r4, _08072080 @ =0x00003b60
b _0807208A
.align 2, 0
_08072080: .4byte 0x00003b60
_08072084:
movs r6, 0x14
movs r5, 0xE1
_08072088:
ldr r4, _080720E4 @ =0x00003a98
_0807208A:
adds r0, r2, 0
bl SetPokemonCryVolume
mov r1, r10
lsls r0, r1, 24
asrs r0, 24
bl SetPokemonCryPanpot
adds r0, r4, 0
bl SetPokemonCryPitch
adds r0, r6, 0
bl SetPokemonCryLength
movs r0, 0
bl SetPokemonCryProgress
adds r0, r5, 0
bl SetPokemonCryRelease
mov r3, r8
lsls r0, r3, 24
asrs r0, 24
bl SetPokemonCryChorus
ldr r0, [sp]
bl SetPokemonCryPriority
adds r0, r7, 0
bl SpeciesToCryId
adds r7, r0, 0
movs r1, 0x7F
ands r1, r7
lsrs r0, r7, 7
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
cmp r0, 0x1
beq _08072118
cmp r0, 0x1
bgt _080720E8
cmp r0, 0
beq _080720F2
b _08072186
.align 2, 0
_080720E4: .4byte 0x00003a98
_080720E8:
cmp r2, 0x2
beq _0807213C
cmp r2, 0x3
beq _08072160
b _08072186
_080720F2:
mov r0, r9
cmp r0, 0
beq _08072108
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08072104 @ =gUnknown_848DB44
b _0807217C
.align 2, 0
_08072104: .4byte gUnknown_848DB44
_08072108:
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08072114 @ =gUnknown_848C914
b _0807217C
.align 2, 0
_08072114: .4byte gUnknown_848C914
_08072118:
mov r3, r9
cmp r3, 0
beq _0807212C
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08072128 @ =gUnknown_848E144
b _0807217C
.align 2, 0
_08072128: .4byte gUnknown_848E144
_0807212C:
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08072138 @ =gUnknown_848CF14
b _0807217C
.align 2, 0
_08072138: .4byte gUnknown_848CF14
_0807213C:
mov r0, r9
cmp r0, 0
beq _08072150
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _0807214C @ =gUnknown_848E744
b _0807217C
.align 2, 0
_0807214C: .4byte gUnknown_848E744
_08072150:
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _0807215C @ =gUnknown_848D514
b _0807217C
.align 2, 0
_0807215C: .4byte gUnknown_848D514
_08072160:
mov r3, r9
cmp r3, 0
beq _08072174
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08072170 @ =gUnknown_848ED44
b _0807217C
.align 2, 0
_08072170: .4byte gUnknown_848ED44
_08072174:
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
ldr r1, _08072198 @ =gUnknown_848DB14
_0807217C:
adds r0, r1
bl SetPokemonCryTone
ldr r1, _0807219C @ =gUnknown_2037ECC
str r0, [r1]
_08072186:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08072198: .4byte gUnknown_848DB14
_0807219C: .4byte gUnknown_2037ECC
thumb_func_end sub_8071F78
thumb_func_start IsCryFinished
IsCryFinished: @ 80721A0
push {lr}
ldr r0, _080721B8 @ =Task_DuckBGMForPokemonCry
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080721BC
bl ClearPokemonCrySongs
movs r0, 0x1
b _080721BE
.align 2, 0
_080721B8: .4byte Task_DuckBGMForPokemonCry
_080721BC:
movs r0, 0
_080721BE:
pop {r1}
bx r1
thumb_func_end IsCryFinished
thumb_func_start StopCryAndClearCrySongs
StopCryAndClearCrySongs: @ 80721C4
push {lr}
ldr r0, _080721D8 @ =gUnknown_2037ECC
ldr r0, [r0]
bl m4aMPlayStop
bl ClearPokemonCrySongs
pop {r0}
bx r0
.align 2, 0
_080721D8: .4byte gUnknown_2037ECC
thumb_func_end StopCryAndClearCrySongs
thumb_func_start StopCry
StopCry: @ 80721DC
push {lr}
ldr r0, _080721EC @ =gUnknown_2037ECC
ldr r0, [r0]
bl m4aMPlayStop
pop {r0}
bx r0
.align 2, 0
_080721EC: .4byte gUnknown_2037ECC
thumb_func_end StopCry
thumb_func_start IsCryPlayingOrClearCrySongs
IsCryPlayingOrClearCrySongs: @ 80721F0
push {lr}
ldr r0, _08072208 @ =gUnknown_2037ECC
ldr r0, [r0]
bl IsPokemonCryPlaying
cmp r0, 0
bne _0807220C
bl ClearPokemonCrySongs
movs r0, 0
b _0807220E
.align 2, 0
_08072208: .4byte gUnknown_2037ECC
_0807220C:
movs r0, 0x1
_0807220E:
pop {r1}
bx r1
thumb_func_end IsCryPlayingOrClearCrySongs
thumb_func_start IsCryPlaying
IsCryPlaying: @ 8072214
push {lr}
ldr r0, _08072228 @ =gUnknown_2037ECC
ldr r0, [r0]
bl IsPokemonCryPlaying
cmp r0, 0
bne _0807222C
movs r0, 0
b _0807222E
.align 2, 0
_08072228: .4byte gUnknown_2037ECC
_0807222C:
movs r0, 0x1
_0807222E:
pop {r1}
bx r1
thumb_func_end IsCryPlaying
thumb_func_start Task_DuckBGMForPokemonCry
Task_DuckBGMForPokemonCry: @ 8072234
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _08072248 @ =gUnknown_2037ED0
ldrb r0, [r1]
cmp r0, 0
beq _0807224C
subs r0, 0x1
strb r0, [r1]
b _0807226A
.align 2, 0
_08072248: .4byte gUnknown_2037ED0
_0807224C:
ldr r0, _08072270 @ =gUnknown_2037ECC
ldr r0, [r0]
bl IsPokemonCryPlaying
cmp r0, 0
bne _0807226A
ldr r0, _08072274 @ =gMPlay_BGM
ldr r1, _08072278 @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
bl m4aMPlayVolumeControl
adds r0, r4, 0
bl DestroyTask
_0807226A:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08072270: .4byte gUnknown_2037ECC
_08072274: .4byte gMPlay_BGM
_08072278: .4byte 0x0000ffff
thumb_func_end Task_DuckBGMForPokemonCry
thumb_func_start RestoreBGMVolumeAfterPokemonCry
RestoreBGMVolumeAfterPokemonCry: @ 807227C
push {r4,lr}
ldr r4, _0807229C @ =Task_DuckBGMForPokemonCry
adds r0, r4, 0
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08072296
adds r0, r4, 0
movs r1, 0x50
bl CreateTask
_08072296:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0807229C: .4byte Task_DuckBGMForPokemonCry
thumb_func_end RestoreBGMVolumeAfterPokemonCry
thumb_func_start PlayBGM
PlayBGM: @ 80722A0
push {lr}
lsls r0, 16
lsrs r1, r0, 16
ldr r0, _080722C4 @ =gUnknown_3005080
ldrb r0, [r0]
cmp r0, 0
beq _080722B0
movs r1, 0
_080722B0:
ldr r0, _080722C8 @ =0x0000ffff
cmp r1, r0
bne _080722B8
movs r1, 0
_080722B8:
adds r0, r1, 0
bl m4aSongNumStart
pop {r0}
bx r0
.align 2, 0
_080722C4: .4byte gUnknown_3005080
_080722C8: .4byte 0x0000ffff
thumb_func_end PlayBGM
thumb_func_start PlaySE
PlaySE: @ 80722CC
push {lr}
lsls r0, 16
lsrs r1, r0, 16
ldr r0, _080722EC @ =gUnknown_2031DD8
ldrb r0, [r0]
cmp r0, 0
bne _080722E8
ldr r0, _080722F0 @ =gUnknown_203ADFA
ldrb r0, [r0]
cmp r0, 0x2
beq _080722E8
adds r0, r1, 0
bl m4aSongNumStart
_080722E8:
pop {r0}
bx r0
.align 2, 0
_080722EC: .4byte gUnknown_2031DD8
_080722F0: .4byte gUnknown_203ADFA
thumb_func_end PlaySE
thumb_func_start PlaySE12WithPanning
PlaySE12WithPanning: @ 80722F4
push {r4-r6,lr}
mov r6, r8
push {r6}
adds r4, r1, 0
lsls r0, 16
lsrs r0, 16
lsls r4, 24
lsrs r4, 24
bl m4aSongNumStart
ldr r6, _0807233C @ =gMPlay_SE1
adds r0, r6, 0
bl m4aMPlayImmInit
ldr r0, _08072340 @ =gMPlay_SE2
mov r8, r0
bl m4aMPlayImmInit
ldr r5, _08072344 @ =0x0000ffff
lsls r4, 24
asrs r4, 24
adds r0, r6, 0
adds r1, r5, 0
adds r2, r4, 0
bl m4aMPlayPanpotControl
mov r0, r8
adds r1, r5, 0
adds r2, r4, 0
bl m4aMPlayPanpotControl
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0807233C: .4byte gMPlay_SE1
_08072340: .4byte gMPlay_SE2
_08072344: .4byte 0x0000ffff
thumb_func_end PlaySE12WithPanning
thumb_func_start PlaySE1WithPanning
PlaySE1WithPanning: @ 8072348
push {r4,r5,lr}
adds r4, r1, 0
lsls r0, 16
lsrs r0, 16
lsls r4, 24
lsrs r4, 24
bl m4aSongNumStart
ldr r5, _08072374 @ =gMPlay_SE1
adds r0, r5, 0
bl m4aMPlayImmInit
ldr r1, _08072378 @ =0x0000ffff
lsls r4, 24
asrs r4, 24
adds r0, r5, 0
adds r2, r4, 0
bl m4aMPlayPanpotControl
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08072374: .4byte gMPlay_SE1
_08072378: .4byte 0x0000ffff
thumb_func_end PlaySE1WithPanning
thumb_func_start PlaySE2WithPanning
PlaySE2WithPanning: @ 807237C
push {r4,r5,lr}
adds r4, r1, 0
lsls r0, 16
lsrs r0, 16
lsls r4, 24
lsrs r4, 24
bl m4aSongNumStart
ldr r5, _080723A8 @ =gMPlay_SE2
adds r0, r5, 0
bl m4aMPlayImmInit
ldr r1, _080723AC @ =0x0000ffff
lsls r4, 24
asrs r4, 24
adds r0, r5, 0
adds r2, r4, 0
bl m4aMPlayPanpotControl
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080723A8: .4byte gMPlay_SE2
_080723AC: .4byte 0x0000ffff
thumb_func_end PlaySE2WithPanning
thumb_func_start SE12PanpotControl
SE12PanpotControl: @ 80723B0
push {r4,r5,lr}
adds r4, r0, 0
ldr r0, _080723D4 @ =gMPlay_SE1
ldr r5, _080723D8 @ =0x0000ffff
lsls r4, 24
asrs r4, 24
adds r1, r5, 0
adds r2, r4, 0
bl m4aMPlayPanpotControl
ldr r0, _080723DC @ =gMPlay_SE2
adds r1, r5, 0
adds r2, r4, 0
bl m4aMPlayPanpotControl
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080723D4: .4byte gMPlay_SE1
_080723D8: .4byte 0x0000ffff
_080723DC: .4byte gMPlay_SE2
thumb_func_end SE12PanpotControl
thumb_func_start IsSEPlaying
IsSEPlaying: @ 80723E0
push {lr}
ldr r0, _08072410 @ =gMPlay_SE1
ldr r1, [r0, 0x4]
movs r2, 0x80
lsls r2, 24
adds r3, r0, 0
cmp r1, 0
bge _080723FA
ldr r0, _08072414 @ =gMPlay_SE2
ldr r0, [r0, 0x4]
ands r0, r2
cmp r0, 0
bne _0807240C
_080723FA:
ldr r1, _08072418 @ =0x0000ffff
ldrh r0, [r3, 0x4]
cmp r0, 0
bne _0807241C
ldr r0, _08072414 @ =gMPlay_SE2
ldr r0, [r0, 0x4]
ands r0, r1
cmp r0, 0
bne _0807241C
_0807240C:
movs r0, 0
b _0807241E
.align 2, 0
_08072410: .4byte gMPlay_SE1
_08072414: .4byte gMPlay_SE2
_08072418: .4byte 0x0000ffff
_0807241C:
movs r0, 0x1
_0807241E:
pop {r1}
bx r1
thumb_func_end IsSEPlaying
thumb_func_start IsBGMPlaying
IsBGMPlaying: @ 8072424
push {lr}
ldr r0, _0807243C @ =gMPlay_BGM
ldr r1, [r0, 0x4]
cmp r1, 0
blt _08072444
ldr r0, _08072440 @ =0x0000ffff
ands r1, r0
cmp r1, 0
beq _08072444
movs r0, 0x1
b _08072446
.align 2, 0
_0807243C: .4byte gMPlay_BGM
_08072440: .4byte 0x0000ffff
_08072444:
movs r0, 0
_08072446:
pop {r1}
bx r1
thumb_func_end IsBGMPlaying
thumb_func_start IsSpecialSEPlaying
IsSpecialSEPlaying: @ 807244C
push {lr}
ldr r0, _08072464 @ =gMPlay_SE3
ldr r1, [r0, 0x4]
cmp r1, 0
blt _0807246C
ldr r0, _08072468 @ =0x0000ffff
ands r1, r0
cmp r1, 0
beq _0807246C
movs r0, 0x1
b _0807246E
.align 2, 0
_08072464: .4byte gMPlay_SE3
_08072468: .4byte 0x0000ffff
_0807246C:
movs r0, 0
_0807246E:
pop {r1}
bx r1
thumb_func_end IsSpecialSEPlaying
thumb_func_start sub_8072474
sub_8072474: @ 8072474
push {lr}
adds r2, r0, 0
lsls r2, 16
lsrs r2, 16
ldr r1, _08072490 @ =gUnknown_203F174
movs r0, 0x1
strb r0, [r1]
ldr r0, _08072494 @ =gMPlay_BGM
ldr r1, _08072498 @ =0x0000ffff
bl m4aMPlayVolumeControl
pop {r0}
bx r0
.align 2, 0
_08072490: .4byte gUnknown_203F174
_08072494: .4byte gMPlay_BGM
_08072498: .4byte 0x0000ffff
thumb_func_end sub_8072474
thumb_func_start sub_807249C
sub_807249C: @ 807249C
push {lr}
ldr r1, _080724B4 @ =gUnknown_203F174
movs r0, 0
strb r0, [r1]
ldr r0, _080724B8 @ =gMPlay_BGM
ldr r1, _080724BC @ =0x0000ffff
movs r2, 0x80
lsls r2, 1
bl m4aMPlayVolumeControl
pop {r0}
bx r0
.align 2, 0
_080724B4: .4byte gUnknown_203F174
_080724B8: .4byte gMPlay_BGM
_080724BC: .4byte 0x0000ffff
thumb_func_end sub_807249C
.align 2, 0 @ Don't pad with nop.