615 lines
9.1 KiB
ArmAsm
615 lines
9.1 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
|
|
thumb_func_start PlayCryInternal
|
|
PlayCryInternal: @ 80A344C
|
|
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, =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 _080A3562
|
|
lsls r0, r1, 2
|
|
ldr r1, =_080A349C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080A349C:
|
|
.4byte _080A3562
|
|
.4byte _080A34D0
|
|
.4byte _080A34D6
|
|
.4byte _080A34E4
|
|
.4byte _080A34F8
|
|
.4byte _080A3510
|
|
.4byte _080A351C
|
|
.4byte _080A352C
|
|
.4byte _080A3536
|
|
.4byte _080A3540
|
|
.4byte _080A3550
|
|
.4byte _080A3560
|
|
.4byte _080A355C
|
|
_080A34D0:
|
|
movs r6, 0x14
|
|
movs r5, 0xE1
|
|
b _080A3562
|
|
_080A34D6:
|
|
movs r5, 0xE1
|
|
ldr r4, =0x00003cf0
|
|
movs r1, 0x14
|
|
b _080A3504
|
|
.pool
|
|
_080A34E4:
|
|
movs r6, 0x32
|
|
movs r5, 0xC8
|
|
ldr r4, =0x00003db8
|
|
movs r3, 0x14
|
|
mov r8, r3
|
|
movs r2, 0x5A
|
|
b _080A3562
|
|
.pool
|
|
_080A34F8:
|
|
movs r6, 0x19
|
|
movs r0, 0x1
|
|
mov r9, r0
|
|
movs r5, 0x64
|
|
ldr r4, =0x00003cf0
|
|
movs r1, 0xC0
|
|
_080A3504:
|
|
mov r8, r1
|
|
movs r2, 0x5A
|
|
b _080A3562
|
|
.pool
|
|
_080A3510:
|
|
movs r5, 0xC8
|
|
ldr r4, =0x00003868
|
|
b _080A3562
|
|
.pool
|
|
_080A351C:
|
|
movs r5, 0xDC
|
|
ldr r4, =0x00003cc3
|
|
movs r3, 0xC0
|
|
mov r8, r3
|
|
movs r2, 0x46
|
|
b _080A3562
|
|
.pool
|
|
_080A352C:
|
|
movs r6, 0xA
|
|
movs r5, 0x64
|
|
movs r4, 0xE8
|
|
lsls r4, 6
|
|
b _080A3562
|
|
_080A3536:
|
|
movs r6, 0x3C
|
|
movs r5, 0xE1
|
|
movs r4, 0xF4
|
|
lsls r4, 6
|
|
b _080A3562
|
|
_080A3540:
|
|
movs r6, 0xF
|
|
movs r0, 0x1
|
|
mov r9, r0
|
|
movs r5, 0x7D
|
|
ldr r4, =0x00003b60
|
|
b _080A3562
|
|
.pool
|
|
_080A3550:
|
|
movs r6, 0x64
|
|
movs r5, 0xE1
|
|
ldr r4, =0x00003b60
|
|
b _080A3562
|
|
.pool
|
|
_080A355C:
|
|
movs r6, 0x14
|
|
movs r5, 0xE1
|
|
_080A3560:
|
|
ldr r4, =0x00003a98
|
|
_080A3562:
|
|
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 speciesid_conv
|
|
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 _080A35F0
|
|
cmp r0, 0x1
|
|
bgt _080A35C0
|
|
cmp r0, 0
|
|
beq _080A35CA
|
|
b _080A365E
|
|
.pool
|
|
_080A35C0:
|
|
cmp r2, 0x2
|
|
beq _080A3614
|
|
cmp r2, 0x3
|
|
beq _080A3638
|
|
b _080A365E
|
|
_080A35CA:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _080A35E0
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_0869EF24
|
|
b _080A3654
|
|
.pool
|
|
_080A35E0:
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_0869DCF4
|
|
b _080A3654
|
|
.pool
|
|
_080A35F0:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _080A3604
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_0869F524
|
|
b _080A3654
|
|
.pool
|
|
_080A3604:
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_0869E2F4
|
|
b _080A3654
|
|
.pool
|
|
_080A3614:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _080A3628
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_0869FB24
|
|
b _080A3654
|
|
.pool
|
|
_080A3628:
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_0869E8F4
|
|
b _080A3654
|
|
.pool
|
|
_080A3638:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _080A364C
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_086A0124
|
|
b _080A3654
|
|
.pool
|
|
_080A364C:
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gUnknown_0869EEF4
|
|
_080A3654:
|
|
adds r0, r1
|
|
bl SetPokemonCryTone
|
|
ldr r1, =gUnknown_020383E8
|
|
str r0, [r1]
|
|
_080A365E:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end PlayCryInternal
|
|
|
|
thumb_func_start sub_80A3678
|
|
sub_80A3678: @ 80A3678
|
|
push {lr}
|
|
ldr r0, =sub_80A370C
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _080A3694
|
|
bl ClearPokemonCrySongs
|
|
movs r0, 0x1
|
|
b _080A3696
|
|
.pool
|
|
_080A3694:
|
|
movs r0, 0
|
|
_080A3696:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A3678
|
|
|
|
thumb_func_start sub_80A369C
|
|
sub_80A369C: @ 80A369C
|
|
push {lr}
|
|
ldr r0, =gUnknown_020383E8
|
|
ldr r0, [r0]
|
|
bl m4aMPlayStop
|
|
bl ClearPokemonCrySongs
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A369C
|
|
|
|
thumb_func_start sub_80A36B4
|
|
sub_80A36B4: @ 80A36B4
|
|
push {lr}
|
|
ldr r0, =gUnknown_020383E8
|
|
ldr r0, [r0]
|
|
bl m4aMPlayStop
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A36B4
|
|
|
|
thumb_func_start sub_80A36C8
|
|
sub_80A36C8: @ 80A36C8
|
|
push {lr}
|
|
ldr r0, =gUnknown_020383E8
|
|
ldr r0, [r0]
|
|
bl IsPokemonCryPlaying
|
|
cmp r0, 0
|
|
bne _080A36E4
|
|
bl ClearPokemonCrySongs
|
|
movs r0, 0
|
|
b _080A36E6
|
|
.pool
|
|
_080A36E4:
|
|
movs r0, 0x1
|
|
_080A36E6:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A36C8
|
|
|
|
thumb_func_start sub_80A36EC
|
|
sub_80A36EC: @ 80A36EC
|
|
push {lr}
|
|
ldr r0, =gUnknown_020383E8
|
|
ldr r0, [r0]
|
|
bl IsPokemonCryPlaying
|
|
cmp r0, 0
|
|
bne _080A3704
|
|
movs r0, 0
|
|
b _080A3706
|
|
.pool
|
|
_080A3704:
|
|
movs r0, 0x1
|
|
_080A3706:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A36EC
|
|
|
|
thumb_func_start sub_80A370C
|
|
sub_80A370C: @ 80A370C
|
|
push {r4,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, =gPokemonCryBGMDuckingCounter
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _080A3724
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
b _080A3742
|
|
.pool
|
|
_080A3724:
|
|
ldr r0, =gUnknown_020383E8
|
|
ldr r0, [r0]
|
|
bl IsPokemonCryPlaying
|
|
cmp r0, 0
|
|
bne _080A3742
|
|
ldr r0, =gMPlay_BGM
|
|
ldr r1, =0x0000ffff
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
bl m4aMPlayVolumeControl
|
|
adds r0, r4, 0
|
|
bl DestroyTask
|
|
_080A3742:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A370C
|
|
|
|
thumb_func_start RestoreBGMVolumeAfterPokemonCry
|
|
RestoreBGMVolumeAfterPokemonCry: @ 80A3754
|
|
push {r4,lr}
|
|
ldr r4, =sub_80A370C
|
|
adds r0, r4, 0
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _080A376E
|
|
adds r0, r4, 0
|
|
movs r1, 0x50
|
|
bl CreateTask
|
|
_080A376E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end RestoreBGMVolumeAfterPokemonCry
|
|
|
|
thumb_func_start PlayBGM
|
|
PlayBGM: @ 80A3778
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
ldr r0, =gDisableMusic
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _080A3788
|
|
movs r1, 0
|
|
_080A3788:
|
|
ldr r0, =0x0000ffff
|
|
cmp r1, r0
|
|
bne _080A3790
|
|
movs r1, 0
|
|
_080A3790:
|
|
adds r0, r1, 0
|
|
bl m4aSongNumStart
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end PlayBGM
|
|
|
|
thumb_func_start audio_play
|
|
audio_play: @ 80A37A4
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl m4aSongNumStart
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end audio_play
|
|
|
|
thumb_func_start audio_play_and_stuff
|
|
audio_play_and_stuff: @ 80A37B4
|
|
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, =gMPlay_SE1
|
|
adds r0, r6, 0
|
|
bl m4aMPlayImmInit
|
|
ldr r0, =gMPlay_SE2
|
|
mov r8, r0
|
|
bl m4aMPlayImmInit
|
|
ldr r5, =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
|
|
.pool
|
|
thumb_func_end audio_play_and_stuff
|
|
|
|
thumb_func_start sub_80A3808
|
|
sub_80A3808: @ 80A3808
|
|
push {r4,r5,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl m4aSongNumStart
|
|
ldr r5, =gMPlay_SE1
|
|
adds r0, r5, 0
|
|
bl m4aMPlayImmInit
|
|
ldr r1, =0x0000ffff
|
|
lsls r4, 24
|
|
asrs r4, 24
|
|
adds r0, r5, 0
|
|
adds r2, r4, 0
|
|
bl m4aMPlayPanpotControl
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A3808
|
|
|
|
thumb_func_start sub_80A383C
|
|
sub_80A383C: @ 80A383C
|
|
push {r4,r5,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl m4aSongNumStart
|
|
ldr r5, =gMPlay_SE2
|
|
adds r0, r5, 0
|
|
bl m4aMPlayImmInit
|
|
ldr r1, =0x0000ffff
|
|
lsls r4, 24
|
|
asrs r4, 24
|
|
adds r0, r5, 0
|
|
adds r2, r4, 0
|
|
bl m4aMPlayPanpotControl
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A383C
|
|
|
|
thumb_func_start sub_80A3870
|
|
sub_80A3870: @ 80A3870
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, =gMPlay_SE1
|
|
ldr r5, =0x0000ffff
|
|
lsls r4, 24
|
|
asrs r4, 24
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl m4aMPlayPanpotControl
|
|
ldr r0, =gMPlay_SE2
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl m4aMPlayPanpotControl
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80A3870
|
|
|
|
thumb_func_start mplay_has_finished_maybe
|
|
mplay_has_finished_maybe: @ 80A38A0
|
|
push {lr}
|
|
ldr r0, =gMPlay_SE1
|
|
ldr r1, [r0, 0x4]
|
|
movs r2, 0x80
|
|
lsls r2, 24
|
|
adds r3, r0, 0
|
|
cmp r1, 0
|
|
bge _080A38BA
|
|
ldr r0, =gMPlay_SE2
|
|
ldr r0, [r0, 0x4]
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _080A38CC
|
|
_080A38BA:
|
|
ldr r1, =0x0000ffff
|
|
ldrh r0, [r3, 0x4]
|
|
cmp r0, 0
|
|
bne _080A38DC
|
|
ldr r0, =gMPlay_SE2
|
|
ldr r0, [r0, 0x4]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080A38DC
|
|
_080A38CC:
|
|
movs r0, 0
|
|
b _080A38DE
|
|
.pool
|
|
_080A38DC:
|
|
movs r0, 0x1
|
|
_080A38DE:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end mplay_has_finished_maybe
|
|
|
|
thumb_func_start sub_80A38E4
|
|
sub_80A38E4: @ 80A38E4
|
|
push {lr}
|
|
ldr r0, =gMPlay_BGM
|
|
ldr r1, [r0, 0x4]
|
|
cmp r1, 0
|
|
blt _080A3904
|
|
ldr r0, =0x0000ffff
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080A3904
|
|
movs r0, 0x1
|
|
b _080A3906
|
|
.pool
|
|
_080A3904:
|
|
movs r0, 0
|
|
_080A3906:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A38E4
|
|
|
|
thumb_func_start sub_80A390C
|
|
sub_80A390C: @ 80A390C
|
|
push {lr}
|
|
ldr r0, =gMPlay_SE3
|
|
ldr r1, [r0, 0x4]
|
|
cmp r1, 0
|
|
blt _080A392C
|
|
ldr r0, =0x0000ffff
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080A392C
|
|
movs r0, 0x1
|
|
b _080A392E
|
|
.pool
|
|
_080A392C:
|
|
movs r0, 0
|
|
_080A392E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80A390C
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|