mirror of https://github.com/zeldaret/tmc.git
620 lines
11 KiB
ArmAsm
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
|