tmc/asm/manager1.s

620 lines
11 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08057064
sub_08057064: @ 0x08057064
push {r4, r5, lr}
adds r4, r0, #0
ldr r1, _080570AC @ =gUnk_08107C5C
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldr r1, _080570B0 @ =gUnk_08107C48
adds r5, r4, #0
adds r5, #0x21
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldr r1, _080570B4 @ =gUnk_08107C40
ldrb r0, [r5]
adds r0, r0, r1
ldrb r1, [r0]
cmp r1, #0
beq _080570AA
adds r2, r4, #0
adds r2, #0x20
ldrb r0, [r2]
cmp r0, r1
beq _080570AA
strb r1, [r2]
adds r0, r1, #0
bl sub_0801D7EC
_080570AA:
pop {r4, r5, pc}
.align 2, 0
_080570AC: .4byte gUnk_08107C5C
_080570B0: .4byte gUnk_08107C48
_080570B4: .4byte gUnk_08107C40
thumb_func_start sub_080570B8
sub_080570B8: @ 0x080570B8
push {r4, lr}
adds r4, r0, #0
adds r0, #0x20
ldrb r0, [r0]
bl sub_0801D7EC
movs r0, #0
str r0, [r4, #0x34]
adds r1, r4, #0
adds r1, #0x21
ldrb r0, [r1]
cmp r0, #3
bne _080570E0
ldr r1, _080570DC @ =gScreen
movs r0, #1
strh r0, [r1, #0x32]
b _080570F0
.align 2, 0
_080570DC: .4byte gScreen
_080570E0:
ldr r0, _080570F4 @ =gUnk_08107C48
ldrb r1, [r1]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_080570F0:
pop {r4, pc}
.align 2, 0
_080570F4: .4byte gUnk_08107C48
thumb_func_start sub_080570F8
sub_080570F8: @ 0x080570F8
push {lr}
ldr r1, _08057110 @ =gScreen
ldrh r2, [r1]
ldr r0, _08057114 @ =0x0000F7FF
ands r0, r2
movs r2, #0
strh r0, [r1]
adds r1, #0x66
strh r2, [r1]
bl sub_08056250
pop {pc}
.align 2, 0
_08057110: .4byte gScreen
_08057114: .4byte 0x0000F7FF
thumb_func_start sub_08057118
sub_08057118: @ 0x08057118
push {r4, lr}
adds r3, r0, #0
movs r1, #0
strb r1, [r3, #0xe]
adds r0, #0x20
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #1
strb r1, [r0]
movs r0, #1
strb r0, [r3, #0xc]
ldr r1, _08057160 @ =gScreen
ldr r0, _08057164 @ =0x00001E04
strh r0, [r1, #0x2c]
ldrh r0, [r1]
movs r4, #0x80
lsls r4, r4, #4
adds r2, r4, #0
orrs r0, r2
strh r0, [r1]
adds r2, r1, #0
adds r2, #0x66
ldr r0, _08057168 @ =0x00003648
strh r0, [r2]
adds r1, #0x68
movs r0, #0x80
lsls r0, r0, #5
strh r0, [r1]
ldr r1, _0805716C @ =sub_080570B8
ldr r2, _08057170 @ =sub_080570F8
adds r0, r3, #0
bl sub_08052D74
pop {r4, pc}
.align 2, 0
_08057160: .4byte gScreen
_08057164: .4byte 0x00001E04
_08057168: .4byte 0x00003648
_0805716C: .4byte sub_080570B8
_08057170: .4byte sub_080570F8
thumb_func_start sub_08057174
sub_08057174: @ 0x08057174
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
bl sub_0804B128
adds r3, r0, #0
ldrb r0, [r3]
cmp r0, #0xff
bne _08057188
b _0805728A
_08057188:
ldr r1, _080571E8 @ =gLinkEntity
movs r2, #0x2e
ldrsh r0, [r1, r2]
cmp r0, #0
bge _08057194
adds r0, #0xf
_08057194:
asrs r6, r0, #4
movs r7, #0x32
ldrsh r0, [r1, r7]
cmp r0, #0
bge _080571A0
adds r0, #0xf
_080571A0:
asrs r5, r0, #4
movs r0, #0x21
adds r0, r0, r4
mov ip, r0
_080571A8:
ldrb r0, [r3]
mov r1, ip
ldrb r1, [r1]
cmp r0, r1
beq _08057282
ldr r1, _080571EC @ =gRoomControls
ldrh r0, [r1, #6]
lsrs r0, r0, #4
ldrb r7, [r3, #1]
adds r2, r0, r7
ldrh r0, [r1, #8]
lsrs r0, r0, #4
ldrb r1, [r3, #2]
adds r0, r0, r1
subs r0, r5, r0
ldrb r7, [r3, #4]
cmp r0, r7
bhs _08057282
subs r0, r6, r2
ldrb r1, [r3, #3]
cmp r0, r1
bhs _08057282
ldrb r0, [r3]
subs r0, #1
cmp r0, #5
bhi _08057268
lsls r0, r0, #2
ldr r1, _080571F0 @ =_080571F4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080571E8: .4byte gLinkEntity
_080571EC: .4byte gRoomControls
_080571F0: .4byte _080571F4
_080571F4: @ jump table
.4byte _0805720C @ case 0
.4byte _08057220 @ case 1
.4byte _08057258 @ case 2
.4byte _08057246 @ case 3
.4byte _08057216 @ case 4
.4byte _08057236 @ case 5
_0805720C:
mov r2, ip
ldrb r0, [r2]
cmp r0, #2
bne _08057268
b _08057260
_08057216:
mov r7, ip
ldrb r0, [r7]
cmp r0, #6
bne _08057268
b _08057260
_08057220:
mov r0, ip
ldrb r1, [r0]
cmp r1, #0
bne _08057268
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x20
strb r1, [r0]
b _08057268
_08057236:
mov r2, ip
ldrb r1, [r2]
cmp r1, #0
bne _08057268
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
b _08057268
_08057246:
mov r7, ip
ldrb r1, [r7]
cmp r1, #0
bne _08057268
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
str r1, [r4, #0x34]
b _08057268
_08057258:
mov r1, ip
ldrb r0, [r1]
cmp r0, #4
bne _08057268
_08057260:
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #9
strb r0, [r4, #0xe]
_08057268:
ldrb r0, [r4, #0xc]
cmp r0, #1
beq _08057282
movs r0, #8
strb r0, [r4, #0xf]
ldrb r0, [r3]
mov r2, ip
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x22
movs r0, #1
strb r0, [r1]
b _0805728A
_08057282:
adds r3, #5
ldrb r0, [r3]
cmp r0, #0xff
bne _080571A8
_0805728A:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0805728C
sub_0805728C: @ 0x0805728C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _080572CA
movs r0, #8
strb r0, [r4, #0xf]
ldr r2, _080572CC @ =gScreen
ldr r3, _080572D0 @ =gUnk_08107C1C
ldrb r0, [r4, #0xe]
adds r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x17
adds r0, r0, r3
ldrh r0, [r0]
adds r2, #0x68
strh r0, [r2]
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
cmp r1, #0xa
bne _080572CA
movs r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x22
movs r0, #0
strb r0, [r1]
_080572CA:
pop {r4, pc}
.align 2, 0
_080572CC: .4byte gScreen
_080572D0: .4byte gUnk_08107C1C
thumb_func_start sub_080572D4
sub_080572D4: @ 0x080572D4
push {r4, r5, lr}
adds r3, r0, #0
ldrb r0, [r3, #0xf]
subs r0, #1
strb r0, [r3, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08057320
movs r0, #8
strb r0, [r3, #0xf]
ldr r5, _08057324 @ =gScreen
ldr r2, _08057328 @ =gUnk_08107C1C
ldrb r0, [r3, #0xe]
adds r1, r0, #0
adds r1, #0xff
strb r1, [r3, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x17
adds r0, r0, r2
ldrh r2, [r0]
adds r0, r5, #0
adds r0, #0x68
movs r4, #0
strh r2, [r0]
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
cmp r1, #0xff
bne _08057320
movs r0, #1
strb r0, [r3, #0xc]
adds r0, r3, #0
adds r0, #0x22
strb r4, [r0]
subs r0, #1
strb r4, [r0]
adds r0, r5, #0
adds r0, #0x6c
strb r4, [r0]
_08057320:
pop {r4, r5, pc}
.align 2, 0
_08057324: .4byte gScreen
_08057328: .4byte gUnk_08107C1C
thumb_func_start sub_0805732C
sub_0805732C: @ 0x0805732C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r6, r0, #0
adds r5, r1, #0
ldr r2, _08057390 @ =gUnk_03003DE4
ldrb r1, [r2]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
ldr r1, _08057394 @ =gUnk_02017AA0
adds r4, r0, r1
movs r3, #0
mov ip, r2
mov r8, r1
ldr r0, _08057398 @ =gSineTable
mov sb, r0
movs r2, #0xff
ldr r1, _0805739C @ =gScreen
_08057354:
adds r0, r5, r3
ands r0, r2
lsls r0, r0, #1
add r0, sb
movs r7, #0
ldrsh r0, [r0, r7]
muls r0, r6, r0
lsrs r0, r0, #8
ldrh r7, [r1, #0x2e]
adds r0, r0, r7
strh r0, [r4]
adds r4, #2
adds r3, #1
cmp r3, #0x9f
bls _08057354
mov r0, ip
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
add r0, r8
ldr r1, _080573A0 @ =0x0400001C
ldr r2, _080573A4 @ =0xA2600001
bl sub_0805622C
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08057390: .4byte gUnk_03003DE4
_08057394: .4byte gUnk_02017AA0
_08057398: .4byte gSineTable
_0805739C: .4byte gScreen
_080573A0: .4byte 0x0400001C
_080573A4: .4byte 0xA2600001
thumb_func_start nullsub_494
nullsub_494: @ 0x080573A8
bx lr
.align 2, 0
thumb_func_start sub_080573AC
sub_080573AC: @ 0x080573AC
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r2, _08057434 @ =gRoomControls
ldr r0, [r2, #0x28]
ldr r1, _08057438 @ =0xFFFFE000
adds r0, r0, r1
str r0, [r2, #0x28]
ldr r0, [r2, #0x2c]
ldr r1, _0805743C @ =0xFFFFF000
adds r0, r0, r1
str r0, [r2, #0x2c]
ldr r5, _08057440 @ =gScreen
movs r1, #0xa
ldrsh r0, [r2, r1]
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #1
ldrh r1, [r2, #0x2a]
adds r0, r0, r1
strh r0, [r5, #0x2e]
movs r1, #0xc
ldrsh r0, [r2, r1]
ldrh r1, [r2, #8]
subs r0, r0, r1
asrs r0, r0, #1
ldrh r2, [r2, #0x2e]
adds r0, r0, r2
strh r0, [r5, #0x30]
ldr r2, _08057444 @ =gSineTable
ldr r4, _08057448 @ =gUnk_030010A0
ldr r1, [r4]
ldrb r0, [r4]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r2
movs r2, #0
ldrsh r0, [r0, r2]
asrs r0, r0, #5
adds r0, #0x10
bl sub_0805732C
adds r0, r6, #0
adds r0, #0x22
ldrb r0, [r0]
cmp r0, #0
bne _08057430
ldr r0, [r4]
movs r1, #0x1f
ands r0, r1
cmp r0, #0
bne _08057430
adds r2, r6, #0
adds r2, #0x24
ldrb r0, [r2]
adds r0, #1
movs r1, #7
ands r0, r1
strb r0, [r2]
ldr r1, _0805744C @ =gUnk_08107C30
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r5, #0
adds r0, #0x68
strh r1, [r0]
_08057430:
pop {r4, r5, r6, pc}
.align 2, 0
_08057434: .4byte gRoomControls
_08057438: .4byte 0xFFFFE000
_0805743C: .4byte 0xFFFFF000
_08057440: .4byte gScreen
_08057444: .4byte gSineTable
_08057448: .4byte gUnk_030010A0
_0805744C: .4byte gUnk_08107C30
thumb_func_start sub_08057450
sub_08057450: @ 0x08057450
push {r4, r5, r6, lr}
adds r3, r0, #0
ldr r4, _08057504 @ =gScreen
movs r0, #0x10
strh r0, [r4, #0x2e]
ldr r0, _08057508 @ =gRoomControls
movs r2, #0xc
ldrsh r1, [r0, r2]
ldrh r0, [r0, #8]
subs r1, r1, r0
asrs r1, r1, #2
movs r2, #0x3f
adds r0, r1, #0
ands r0, r2
strh r0, [r4, #0x30]
cmp r1, #0
bge _08057474
adds r1, #0x3f
_08057474:
asrs r0, r1, #6
lsls r0, r0, #9
ldr r1, _0805750C @ =gUnk_02001A40
adds r1, r0, r1
str r1, [r4, #0x34]
ldr r0, [r3, #0x34]
cmp r0, r1
beq _0805748A
str r1, [r3, #0x34]
movs r0, #1
strh r0, [r4, #0x32]
_0805748A:
adds r0, r3, #0
adds r0, #0x22
ldrb r0, [r0]
ldr r5, _08057510 @ =gUnk_030010A0
cmp r0, #0
bne _080574BE
ldr r0, [r5]
movs r1, #0x1f
ands r0, r1
cmp r0, #0
bne _080574BE
adds r2, r3, #0
adds r2, #0x24
ldrb r0, [r2]
adds r0, #1
movs r1, #7
ands r0, r1
strb r0, [r2]
ldr r1, _08057514 @ =gUnk_08107C30
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0x68
strh r1, [r0]
_080574BE:
ldr r0, [r5]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _08057502
adds r0, r3, #0
adds r0, #0x23
ldrb r1, [r0]
lsls r1, r1, #5
ldr r2, _08057518 @ =gUnk_085B4180
adds r1, r1, r2
movs r5, #0
adds r6, r0, #0
adds r4, r1, #0
adds r4, #0xe
_080574DC:
adds r0, r5, #0
adds r0, #0x87
ldrh r1, [r4]
bl sub_0801D79C
adds r0, r5, #0
adds r0, #0x8c
ldrh r1, [r4, #0xa]
bl sub_0801D79C
adds r4, #2
adds r5, #1
cmp r5, #3
bls _080574DC
ldrb r0, [r6]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r6]
_08057502:
pop {r4, r5, r6, pc}
.align 2, 0
_08057504: .4byte gScreen
_08057508: .4byte gRoomControls
_0805750C: .4byte gUnk_02001A40
_08057510: .4byte gUnk_030010A0
_08057514: .4byte gUnk_08107C30
_08057518: .4byte gUnk_085B4180