tmc/asm/phonograph.s

250 lines
4.0 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Phonograph
Phonograph: @ 0x0806E91C
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xc]
cmp r0, #0
bne _0806E950
adds r0, #1
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r5, #0x18]
adds r1, r5, #0
adds r1, #0x68
movs r4, #0
movs r0, #1
strh r0, [r1]
adds r1, #2
ldr r0, _0806E960 @ =0x0000FFFF
strh r0, [r1]
adds r0, r5, #0
bl sub_0807DD64
strb r4, [r5, #0x1e]
_0806E950:
adds r0, r5, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r5, #0
bl sub_0807DDE4
pop {r4, r5, pc}
.align 2, 0
_0806E960: .4byte 0x0000FFFF
thumb_func_start sub_0806E964
sub_0806E964: @ 0x0806E964
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
adds r2, r1, #0
ldr r0, _0806E984 @ =gUnk_03000FF0
mov r8, r0
ldrh r1, [r0, #2]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0806E988
bl sub_08050384
b _0806EAAA
.align 2, 0
_0806E984: .4byte gUnk_03000FF0
_0806E988:
ldrb r0, [r2, #0x18]
adds r1, r0, #0
mov r6, sb
adds r6, #0x6c
mov r7, sb
adds r7, #0x68
cmp r1, #0
bne _0806E9A8
adds r0, #1
strb r0, [r2, #0x18]
strh r1, [r6]
movs r2, #0
ldrsh r1, [r7, r2]
mov r0, sb
bl sub_0806EABC
_0806E9A8:
movs r5, #0x1c
movs r0, #0x55
bl CheckGlobalFlag
cmp r0, #0
beq _0806E9B6
movs r5, #0x34
_0806E9B6:
movs r0, #0
ldrsh r4, [r7, r0]
mov r2, r8
ldrh r1, [r2, #2]
movs r2, #0xc0
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _0806E9E4
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0806E9D4
adds r4, #1
b _0806E9D6
_0806E9D4:
subs r4, #1
_0806E9D6:
cmp r4, #0
bgt _0806E9DC
adds r4, r5, #0
_0806E9DC:
cmp r4, r5
ble _0806EA0A
movs r4, #1
b _0806EA0A
_0806E9E4:
mov r0, r8
ldrh r1, [r0, #4]
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _0806EA0A
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0806E9FC
adds r4, #1
b _0806E9FE
_0806E9FC:
subs r4, #1
_0806E9FE:
cmp r4, #0
bgt _0806EA04
movs r4, #1
_0806EA04:
cmp r4, r5
ble _0806EA0A
adds r4, r5, #0
_0806EA0A:
movs r1, #0
ldrsh r0, [r7, r1]
cmp r4, r0
beq _0806EA28
mov r0, sb
adds r1, r4, #0
bl sub_0806EABC
ldrh r1, [r6]
movs r2, #0
ldrsh r0, [r6, r2]
cmp r0, #0
ble _0806EA28
subs r0, r1, #1
strh r0, [r6]
_0806EA28:
strh r4, [r7]
ldr r0, _0806EA74 @ =gUnk_03000FF0
ldrh r1, [r0, #2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0806EA86
mov r5, sb
adds r5, #0x6a
lsls r0, r4, #0x10
asrs r0, r0, #0x10
movs r2, #0
ldrsh r1, [r5, r2]
cmp r0, r1
bne _0806EA4E
movs r1, #0
ldrsh r0, [r6, r1]
cmp r0, #0
bne _0806EA7C
_0806EA4E:
ldr r4, _0806EA78 @ =gUnk_081145E4
movs r2, #0
ldrsh r0, [r7, r2]
lsls r0, r0, #2
adds r0, r0, r4
movs r1, #0
ldrsh r0, [r0, r1]
bl PlaySFX
ldrh r0, [r7]
strh r0, [r5]
movs r2, #0
ldrsh r0, [r7, r2]
lsls r0, r0, #2
adds r4, #2
adds r0, r0, r4
ldrh r0, [r0]
strh r0, [r6]
b _0806EA86
.align 2, 0
_0806EA74: .4byte gUnk_03000FF0
_0806EA78: .4byte gUnk_081145E4
_0806EA7C:
ldr r0, _0806EAB4 @ =0x80010000
bl PlaySFX
movs r0, #0
strh r0, [r5]
_0806EA86:
ldrh r1, [r6]
movs r2, #0
ldrsh r0, [r6, r2]
cmp r0, #0
ble _0806EAA4
subs r0, r1, #1
movs r1, #0
strh r0, [r6]
lsls r0, r0, #0x10
cmp r0, #0
bgt _0806EAA4
mov r0, sb
adds r0, #0x6a
strh r1, [r0]
strh r1, [r6]
_0806EAA4:
ldr r1, _0806EAB8 @ =gUnk_02033280
movs r0, #0
strb r0, [r1, #6]
_0806EAAA:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0806EAB4: .4byte 0x80010000
_0806EAB8: .4byte gUnk_02033280
thumb_func_start sub_0806EABC
sub_0806EABC: @ 0x0806EABC
push {r4, lr}
adds r4, r1, #0
bl sub_08050384
ldr r1, _0806EAE0 @ =gUnk_020227E8
ldr r2, _0806EAE4 @ =0x00202020
adds r0, r4, #0
bl sub_08057044
ldr r0, _0806EAE8 @ =0x00003302
ldr r1, _0806EAEC @ =gUnk_081146B8
bl sub_0805F46C
ldr r1, _0806EAF0 @ =gScreen
movs r0, #1
strh r0, [r1, #0xe]
pop {r4, pc}
.align 2, 0
_0806EAE0: .4byte gUnk_020227E8
_0806EAE4: .4byte 0x00202020
_0806EAE8: .4byte 0x00003302
_0806EAEC: .4byte gUnk_081146B8
_0806EAF0: .4byte gScreen