mirror of https://github.com/zeldaret/tmc.git
947 lines
16 KiB
ArmAsm
947 lines
16 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_08018500
|
|
sub_08018500: @ 0x08018500
|
|
push {r4, lr}
|
|
ldr r4, _08018550 @ =gUnk_02033AB8
|
|
adds r3, r4, #4
|
|
ldr r0, _08018554 @ =gUnk_080B3D14
|
|
ldrb r1, [r4]
|
|
lsls r1, r1, #1
|
|
adds r1, r1, r0
|
|
ldrb r2, [r4, #1]
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r2
|
|
ldrh r1, [r1]
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
_0801851A:
|
|
strh r0, [r3]
|
|
adds r0, #1
|
|
adds r3, #2
|
|
adds r2, #1
|
|
cmp r2, #2
|
|
bls _0801851A
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
ldr r1, _08018558 @ =0x00000C81
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
adds r1, r4, #0
|
|
adds r1, #0xa
|
|
_08018536:
|
|
strh r0, [r3]
|
|
adds r0, #1
|
|
adds r3, #2
|
|
adds r2, #1
|
|
cmp r2, #4
|
|
bls _08018536
|
|
movs r0, #5
|
|
bl sub_08018690
|
|
movs r0, #0
|
|
strb r0, [r4, #2]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08018550: .4byte gUnk_02033AB8
|
|
_08018554: .4byte gUnk_080B3D14
|
|
_08018558: .4byte 0x00000C81
|
|
|
|
thumb_func_start sub_0801855C
|
|
sub_0801855C: @ 0x0801855C
|
|
push {r4, r5, r6, lr}
|
|
ldr r4, _08018570 @ =gUnk_02033AB8
|
|
adds r0, r4, #0
|
|
movs r1, #0x14
|
|
bl MemClear
|
|
adds r5, r4, #0
|
|
ldr r4, _08018574 @ =gUnk_080B3D20
|
|
movs r6, #0
|
|
b _0801858C
|
|
.align 2, 0
|
|
_08018570: .4byte gUnk_02033AB8
|
|
_08018574: .4byte gUnk_080B3D20
|
|
_08018578:
|
|
adds r0, r4, #0
|
|
bl sub_080185B4
|
|
cmp r0, #0
|
|
beq _08018584
|
|
ldrb r6, [r5, #3]
|
|
_08018584:
|
|
ldrb r0, [r5, #3]
|
|
adds r0, #1
|
|
strb r0, [r5, #3]
|
|
adds r4, #4
|
|
_0801858C:
|
|
ldrb r0, [r4]
|
|
cmp r0, #0xff
|
|
bne _08018578
|
|
strb r6, [r5, #3]
|
|
ldrb r0, [r5, #3]
|
|
lsls r0, r0, #2
|
|
ldr r1, _080185B0 @ =gUnk_080B3D20
|
|
adds r4, r0, r1
|
|
ldrb r0, [r4, #2]
|
|
strb r0, [r5]
|
|
ldrb r0, [r4, #3]
|
|
strb r0, [r5, #1]
|
|
adds r0, r6, #1
|
|
strb r0, [r5, #3]
|
|
bl sub_08018500
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_080185B0: .4byte gUnk_080B3D20
|
|
|
|
thumb_func_start sub_080185B4
|
|
sub_080185B4: @ 0x080185B4
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldrb r0, [r2]
|
|
cmp r0, #0xff
|
|
bne _080185C2
|
|
movs r0, #0
|
|
b _080185F6
|
|
_080185C2:
|
|
cmp r0, #0xfe
|
|
bne _080185D4
|
|
ldrb r0, [r2, #1]
|
|
bl GetInventoryValue
|
|
cmp r0, #0
|
|
beq _080185F6
|
|
movs r0, #1
|
|
b _080185F6
|
|
_080185D4:
|
|
cmp r0, #0xfd
|
|
beq _080185F0
|
|
ldr r1, _080185EC @ =gLocalFlagBanks
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
ldrb r1, [r2, #1]
|
|
bl CheckLocalFlagByBank
|
|
b _080185F6
|
|
.align 2, 0
|
|
_080185EC: .4byte gLocalFlagBanks
|
|
_080185F0:
|
|
ldrb r0, [r2, #1]
|
|
bl CheckKinstoneFused
|
|
_080185F6:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_080185F8
|
|
sub_080185F8: @ 0x080185F8
|
|
push {r4, r5, lr}
|
|
ldr r5, _08018624 @ =gUnk_02033AB8
|
|
ldrb r0, [r5, #3]
|
|
lsls r0, r0, #2
|
|
ldr r1, _08018628 @ =gUnk_080B3D20
|
|
adds r4, r0, r1
|
|
adds r0, r4, #0
|
|
bl sub_080185B4
|
|
cmp r0, #0
|
|
beq _08018620
|
|
ldrb r0, [r4, #2]
|
|
strb r0, [r5]
|
|
ldrb r0, [r4, #3]
|
|
strb r0, [r5, #1]
|
|
ldrb r0, [r5, #3]
|
|
adds r0, #1
|
|
strb r0, [r5, #3]
|
|
bl sub_08018500
|
|
_08018620:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08018624: .4byte gUnk_02033AB8
|
|
_08018628: .4byte gUnk_080B3D20
|
|
|
|
thumb_func_start GenerateAreaHint
|
|
GenerateAreaHint: @ 0x0801862C
|
|
push {r4, r5, lr}
|
|
ldr r1, _0801864C @ =gPlayerState
|
|
movs r2, #0
|
|
movs r0, #0x16
|
|
strb r0, [r1, #0xc]
|
|
ldr r5, _08018650 @ =gRoomTransition
|
|
adds r0, r5, #0
|
|
.ifdef JP
|
|
adds r0, #0x34
|
|
.else
|
|
.ifdef EU
|
|
adds r0, #0x34
|
|
.else
|
|
adds r0, #0x35
|
|
.endif
|
|
.endif
|
|
strb r2, [r0]
|
|
ldr r4, _08018654 @ =gUnk_02033AB8
|
|
ldrb r0, [r4]
|
|
cmp r0, #0xff
|
|
bne _08018658
|
|
ldrh r0, [r4, #4]
|
|
strh r0, [r5, #0x36]
|
|
b _0801868C
|
|
.align 2, 0
|
|
_0801864C: .4byte gPlayerState
|
|
_08018650: .4byte gRoomTransition
|
|
_08018654: .4byte gUnk_02033AB8
|
|
_08018658:
|
|
ldrb r0, [r4, #2]
|
|
lsls r0, r0, #1
|
|
adds r1, r4, #4
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, #0x36]
|
|
ldrb r0, [r4, #2]
|
|
adds r0, #1
|
|
strb r0, [r4, #2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #7
|
|
bls _0801868C
|
|
movs r0, #0
|
|
strb r0, [r4, #2]
|
|
movs r0, #8
|
|
bl sub_08018690
|
|
ldrh r0, [r4, #4]
|
|
ldrh r5, [r5, #0x36]
|
|
cmp r0, r5
|
|
bne _0801868C
|
|
adds r1, r0, #0
|
|
ldrh r0, [r4, #0x12]
|
|
strh r0, [r4, #4]
|
|
strh r1, [r4, #0x12]
|
|
_0801868C:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08018690
|
|
sub_08018690: @ 0x08018690
|
|
push {r4, r5, r6, lr}
|
|
adds r6, r1, #0
|
|
subs r4, r0, #1
|
|
cmp r4, #0
|
|
beq _080186BC
|
|
lsls r0, r4, #1
|
|
adds r5, r0, r6
|
|
_0801869E:
|
|
bl Random
|
|
adds r1, r4, #1
|
|
bl __modsi3
|
|
ldrh r2, [r5]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r6
|
|
ldrh r1, [r0]
|
|
strh r1, [r5]
|
|
strh r2, [r0]
|
|
subs r5, #2
|
|
subs r4, #1
|
|
cmp r4, #0
|
|
bne _0801869E
|
|
_080186BC:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_080186C0
|
|
sub_080186C0: @ 0x080186C0
|
|
ldr r3, _080186D0 @ =gArea
|
|
adds r2, r3, #0
|
|
adds r2, #0x28
|
|
movs r1, #0xff
|
|
strb r1, [r2]
|
|
strh r0, [r3, #0x2c]
|
|
bx lr
|
|
.align 2, 0
|
|
_080186D0: .4byte gArea
|
|
|
|
thumb_func_start sub_080186D4
|
|
sub_080186D4: @ 0x080186D4
|
|
push {lr}
|
|
ldr r0, _080186E8 @ =gArea
|
|
adds r0, #0x28
|
|
ldrb r0, [r0]
|
|
cmp r0, #0xff
|
|
bne _080186E4
|
|
bl sub_0801855C
|
|
_080186E4:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_080186E8: .4byte gArea
|
|
|
|
thumb_func_start sub_080186EC
|
|
sub_080186EC: @ 0x080186EC
|
|
push {r4, r5, lr}
|
|
movs r5, #0
|
|
ldr r4, _0801870C @ =gUnk_080C9CBC
|
|
_080186F2:
|
|
ldrb r0, [r4, #3]
|
|
cmp r0, #8
|
|
bne _08018700
|
|
ldrb r1, [r4, #4]
|
|
adds r0, r5, #0
|
|
bl sub_08018738
|
|
_08018700:
|
|
adds r4, #8
|
|
adds r5, #1
|
|
cmp r5, #0x64
|
|
bls _080186F2
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0801870C: .4byte gUnk_080C9CBC
|
|
|
|
thumb_func_start sub_08018710
|
|
sub_08018710: @ 0x08018710
|
|
push {r4, r5, r6, lr}
|
|
adds r6, r0, #0
|
|
movs r5, #0
|
|
ldr r4, _08018734 @ =gUnk_080C9CBC
|
|
_08018718:
|
|
ldrb r0, [r4, #3]
|
|
cmp r0, #8
|
|
bne _0801872A
|
|
ldrb r1, [r4, #4]
|
|
cmp r6, r1
|
|
beq _0801872A
|
|
adds r0, r5, #0
|
|
bl sub_08018738
|
|
_0801872A:
|
|
adds r4, #8
|
|
adds r5, #1
|
|
cmp r5, #0x64
|
|
bls _08018718
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08018734: .4byte gUnk_080C9CBC
|
|
|
|
thumb_func_start sub_08018738
|
|
sub_08018738: @ 0x08018738
|
|
push {r4, lr}
|
|
adds r2, r0, #0
|
|
adds r4, r1, #0
|
|
lsls r0, r4, #2
|
|
adds r0, r0, r4
|
|
lsls r0, r0, #2
|
|
ldr r1, _08018764 @ =gUnk_080FE320
|
|
adds r0, r0, r1
|
|
ldr r1, _08018768 @ =gRoomControls
|
|
ldrh r0, [r0, #2]
|
|
ldrh r1, [r1, #4]
|
|
cmp r0, r1
|
|
bne _08018760
|
|
adds r0, r2, #0
|
|
bl CheckKinstoneFused
|
|
adds r1, r0, #0
|
|
adds r0, r4, #0
|
|
bl sub_0801876C
|
|
_08018760:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08018764: .4byte gUnk_080FE320
|
|
_08018768: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_0801876C
|
|
sub_0801876C: @ 0x0801876C
|
|
push {r4, r5, lr}
|
|
adds r2, r0, #0
|
|
adds r4, r1, #0
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #2
|
|
ldr r1, _08018790 @ =gUnk_080FE320
|
|
adds r5, r0, r1
|
|
ldrb r0, [r5]
|
|
cmp r0, #0x1c
|
|
bls _08018784
|
|
b _080189E4
|
|
_08018784:
|
|
lsls r0, r0, #2
|
|
ldr r1, _08018794 @ =_08018798
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08018790: .4byte gUnk_080FE320
|
|
_08018794: .4byte _08018798
|
|
_08018798: @ jump table
|
|
.4byte _080189E4 @ case 0
|
|
.4byte _08018838 @ case 1
|
|
.4byte _0801882A @ case 2
|
|
.4byte _08018858 @ case 3
|
|
.4byte _08018878 @ case 4
|
|
.4byte _08018886 @ case 5
|
|
.4byte _0801880C @ case 6
|
|
.4byte _08018894 @ case 7
|
|
.4byte _080188E0 @ case 8
|
|
.4byte _08018930 @ case 9
|
|
.4byte _080189E4 @ case 10
|
|
.4byte _080188FE @ case 11
|
|
.4byte _080189E4 @ case 12
|
|
.4byte _080189E4 @ case 13
|
|
.4byte _080189E4 @ case 14
|
|
.4byte _080189B4 @ case 15
|
|
.4byte _080189E4 @ case 16
|
|
.4byte _080189D0 @ case 17
|
|
.4byte _080189E4 @ case 18
|
|
.4byte _080189E4 @ case 19
|
|
.4byte _080189E4 @ case 20
|
|
.4byte _080189E4 @ case 21
|
|
.4byte _080189E4 @ case 22
|
|
.4byte _080189E4 @ case 23
|
|
.4byte _080189A4 @ case 24
|
|
.4byte _080188B8 @ case 25
|
|
.4byte _080189E4 @ case 26
|
|
.4byte _080189E4 @ case 27
|
|
.4byte _080189E4 @ case 28
|
|
_0801880C:
|
|
cmp r4, #0
|
|
beq _08018812
|
|
b _080189E4
|
|
_08018812:
|
|
ldrh r0, [r5, #8]
|
|
lsrs r0, r0, #4
|
|
movs r2, #0x3f
|
|
ands r0, r2
|
|
ldrh r1, [r5, #0xa]
|
|
lsrs r1, r1, #4
|
|
ands r1, r2
|
|
lsls r1, r1, #6
|
|
orrs r0, r1
|
|
bl sub_08018AB4
|
|
b _080189E4
|
|
_0801882A:
|
|
cmp r4, #0
|
|
bne _08018830
|
|
b _080189E4
|
|
_08018830:
|
|
adds r0, r2, #0
|
|
bl sub_08018BB4
|
|
b _080189E4
|
|
_08018838:
|
|
cmp r4, #0
|
|
bne _0801883E
|
|
b _080189E4
|
|
_0801883E:
|
|
ldrh r0, [r5, #0x12]
|
|
bl CheckGlobalFlag
|
|
cmp r0, #0
|
|
beq _0801884A
|
|
b _080189E4
|
|
_0801884A:
|
|
ldrb r0, [r5, #1]
|
|
lsls r0, r0, #4
|
|
ldr r1, _08018854 @ =gUnk_080FEC28
|
|
b _080188A4
|
|
.align 2, 0
|
|
_08018854: .4byte gUnk_080FEC28
|
|
_08018858:
|
|
cmp r4, #0
|
|
bne _0801885E
|
|
b _080189E4
|
|
_0801885E:
|
|
ldrh r0, [r5, #0x12]
|
|
bl GetInventoryValue
|
|
cmp r0, #0
|
|
beq _0801886A
|
|
b _080189E4
|
|
_0801886A:
|
|
ldrb r0, [r5, #1]
|
|
lsls r0, r0, #4
|
|
ldr r1, _08018874 @ =gUnk_080FEBE8
|
|
b _080188A4
|
|
.align 2, 0
|
|
_08018874: .4byte gUnk_080FEBE8
|
|
_08018878:
|
|
cmp r4, #0
|
|
beq _0801887E
|
|
b _080189E4
|
|
_0801887E:
|
|
adds r0, r2, #0
|
|
bl sub_08018A58
|
|
b _080189E4
|
|
_08018886:
|
|
cmp r4, #0
|
|
bne _0801888C
|
|
b _080189E4
|
|
_0801888C:
|
|
adds r0, r2, #0
|
|
bl sub_08018B50
|
|
b _080189E4
|
|
_08018894:
|
|
cmp r4, #0
|
|
beq _0801889A
|
|
b _080189E4
|
|
_0801889A:
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #0x80
|
|
beq _080188B0
|
|
lsls r0, r0, #4
|
|
ldr r1, _080188AC @ =gUnk_080FECC8
|
|
_080188A4:
|
|
adds r0, r0, r1
|
|
bl LoadRoomEntity
|
|
b _080189E4
|
|
.align 2, 0
|
|
_080188AC: .4byte gUnk_080FECC8
|
|
_080188B0:
|
|
adds r0, r2, #0
|
|
bl sub_080189EC
|
|
b _080189E4
|
|
_080188B8:
|
|
ldrb r0, [r5, #1]
|
|
lsls r0, r0, #4
|
|
ldr r1, _080188DC @ =gUnk_080FED18
|
|
adds r0, r0, r1
|
|
bl LoadRoomEntity
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
bne _080188CC
|
|
b _080189E4
|
|
_080188CC:
|
|
rsbs r0, r4, #0
|
|
orrs r0, r4
|
|
asrs r0, r0, #0x1f
|
|
movs r1, #2
|
|
ands r0, r1
|
|
strb r0, [r2, #0xa]
|
|
b _080189E4
|
|
.align 2, 0
|
|
_080188DC: .4byte gUnk_080FED18
|
|
_080188E0:
|
|
cmp r4, #0
|
|
bne _080188E6
|
|
b _080189E4
|
|
_080188E6:
|
|
movs r0, #0xb4
|
|
lsls r0, r0, #1
|
|
ldrh r1, [r5, #8]
|
|
lsrs r1, r1, #4
|
|
movs r3, #0x3f
|
|
ands r1, r3
|
|
ldrh r2, [r5, #0xa]
|
|
lsrs r2, r2, #4
|
|
ands r2, r3
|
|
lsls r2, r2, #6
|
|
orrs r1, r2
|
|
b _0801899C
|
|
_080188FE:
|
|
cmp r4, #0
|
|
beq _080189E4
|
|
ldrb r0, [r5, #1]
|
|
lsls r0, r0, #4
|
|
ldr r1, _08018924 @ =gUnk_080FED58
|
|
adds r0, r0, r1
|
|
bl LoadRoomEntity
|
|
ldr r2, _08018928 @ =gRoomVars
|
|
ldrb r0, [r5, #1]
|
|
lsls r0, r0, #2
|
|
adds r2, #0x8c
|
|
adds r2, r0, r2
|
|
ldr r1, _0801892C @ =gUnk_080FED98
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
str r0, [r2]
|
|
b _080189E4
|
|
.align 2, 0
|
|
_08018924: .4byte gUnk_080FED58
|
|
_08018928: .4byte gRoomVars
|
|
_0801892C: .4byte gUnk_080FED98
|
|
_08018930:
|
|
cmp r4, #0
|
|
beq _080189E4
|
|
ldrb r0, [r5, #1]
|
|
lsls r0, r0, #4
|
|
ldr r1, _08018974 @ =gUnk_080FEE78
|
|
adds r0, r0, r1
|
|
bl LoadRoomEntity
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _08018958
|
|
ldr r0, _08018978 @ =gRoomControls
|
|
ldrh r1, [r0, #6]
|
|
ldrh r3, [r5, #8]
|
|
adds r1, r1, r3
|
|
strh r1, [r2, #0x38]
|
|
ldrh r0, [r0, #8]
|
|
ldrh r1, [r5, #0xa]
|
|
adds r0, r0, r1
|
|
strh r0, [r2, #0x3a]
|
|
_08018958:
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #0
|
|
bne _0801897C
|
|
ldrh r1, [r5, #8]
|
|
lsrs r1, r1, #4
|
|
movs r2, #0x3f
|
|
ands r1, r2
|
|
ldrh r0, [r5, #0xa]
|
|
lsrs r0, r0, #4
|
|
ands r0, r2
|
|
lsls r0, r0, #6
|
|
orrs r1, r0
|
|
movs r0, #0x8d
|
|
b _0801899C
|
|
.align 2, 0
|
|
_08018974: .4byte gUnk_080FEE78
|
|
_08018978: .4byte gRoomControls
|
|
_0801897C:
|
|
ldrh r4, [r5, #8]
|
|
lsrs r4, r4, #4
|
|
movs r1, #0x3f
|
|
ands r4, r1
|
|
ldrh r0, [r5, #0xa]
|
|
lsrs r0, r0, #4
|
|
ands r0, r1
|
|
lsls r0, r0, #6
|
|
orrs r4, r0
|
|
subs r1, r4, #1
|
|
movs r0, #0x8c
|
|
movs r2, #1
|
|
bl SetTileType
|
|
movs r0, #0x8e
|
|
adds r1, r4, #0
|
|
_0801899C:
|
|
movs r2, #1
|
|
bl SetTileType
|
|
b _080189E4
|
|
_080189A4:
|
|
cmp r4, #0
|
|
beq _080189E4
|
|
ldr r0, _080189B0 @ =gUnk_080FEE18
|
|
bl LoadRoomEntityList
|
|
b _080189E4
|
|
.align 2, 0
|
|
_080189B0: .4byte gUnk_080FEE18
|
|
_080189B4:
|
|
cmp r4, #0
|
|
beq _080189C4
|
|
ldr r0, _080189C0 @ =gUnk_080FEE58
|
|
bl LoadRoomEntity
|
|
b _080189E4
|
|
.align 2, 0
|
|
_080189C0: .4byte gUnk_080FEE58
|
|
_080189C4:
|
|
ldr r0, _080189CC @ =gUnk_080FEE48
|
|
bl LoadRoomEntity
|
|
b _080189E4
|
|
.align 2, 0
|
|
_080189CC: .4byte gUnk_080FEE48
|
|
_080189D0:
|
|
cmp r4, #0
|
|
beq _080189E4
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
.ifdef JP
|
|
movs r1, #0x77
|
|
.else
|
|
.ifdef EU
|
|
movs r1, #0x77
|
|
.else
|
|
.ifdef DEMO_JP
|
|
movs r1, #0x77 @ TODO deduplicate
|
|
.else
|
|
movs r1, #0x79
|
|
.endif
|
|
.endif
|
|
.endif
|
|
bl SetLocalFlagByBank
|
|
ldr r0, _080189E8 @ =gUnk_080FEE38
|
|
bl LoadRoomEntityList
|
|
_080189E4:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_080189E8: .4byte gUnk_080FEE38
|
|
|
|
thumb_func_start sub_080189EC
|
|
sub_080189EC: @ 0x080189EC
|
|
push {r4, r5, r6, lr}
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #2
|
|
ldr r0, _08018A48 @ =gUnk_080FE320
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1, #8]
|
|
lsrs r6, r0, #4
|
|
movs r2, #0x3f
|
|
ands r6, r2
|
|
ldrh r0, [r1, #0xa]
|
|
lsrs r0, r0, #4
|
|
ands r0, r2
|
|
lsls r0, r0, #6
|
|
orrs r6, r0
|
|
subs r6, #0x42
|
|
movs r5, #0
|
|
_08018A0E:
|
|
ldr r1, _08018A4C @ =0x000001DF
|
|
adds r0, r5, r1
|
|
adds r1, r6, r5
|
|
movs r2, #2
|
|
bl SetTileType
|
|
adds r5, #1
|
|
cmp r5, #3
|
|
bls _08018A0E
|
|
adds r6, #0x40
|
|
movs r5, #0
|
|
_08018A24:
|
|
ldr r1, _08018A50 @ =0x000001E3
|
|
adds r0, r5, r1
|
|
adds r4, r6, r5
|
|
adds r1, r4, #0
|
|
movs r2, #2
|
|
bl SetTileType
|
|
ldr r1, _08018A54 @ =0x000001DB
|
|
adds r0, r5, r1
|
|
adds r1, r4, #0
|
|
movs r2, #1
|
|
bl SetTileType
|
|
adds r5, #1
|
|
cmp r5, #3
|
|
bls _08018A24
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_08018A48: .4byte gUnk_080FE320
|
|
_08018A4C: .4byte 0x000001DF
|
|
_08018A50: .4byte 0x000001E3
|
|
_08018A54: .4byte 0x000001DB
|
|
|
|
thumb_func_start sub_08018A58
|
|
sub_08018A58: @ 0x08018A58
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #2
|
|
ldr r0, _08018AAC @ =gUnk_080FE320
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1, #8]
|
|
lsrs r5, r0, #4
|
|
movs r2, #0x3f
|
|
ands r5, r2
|
|
ldrh r0, [r1, #0xa]
|
|
lsrs r0, r0, #4
|
|
ands r0, r2
|
|
lsls r0, r0, #6
|
|
orrs r5, r0
|
|
subs r5, #0x43
|
|
ldr r6, _08018AB0 @ =0x00000232
|
|
movs r0, #0
|
|
_08018A80:
|
|
movs r4, #0
|
|
movs r1, #0x40
|
|
adds r1, r1, r5
|
|
mov r8, r1
|
|
adds r7, r0, #1
|
|
_08018A8A:
|
|
adds r0, r6, #0
|
|
adds r6, #1
|
|
adds r1, r5, r4
|
|
movs r2, #1
|
|
bl SetTileType
|
|
adds r4, #1
|
|
cmp r4, #6
|
|
bls _08018A8A
|
|
mov r5, r8
|
|
adds r0, r7, #0
|
|
cmp r0, #3
|
|
bls _08018A80
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_08018AAC: .4byte gUnk_080FE320
|
|
_08018AB0: .4byte 0x00000232
|
|
|
|
thumb_func_start sub_08018AB4
|
|
sub_08018AB4: @ 0x08018AB4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
sub sp, #4
|
|
adds r5, r0, #0
|
|
movs r3, #0xf4
|
|
lsls r3, r3, #1
|
|
movs r7, #0xfa
|
|
lsls r7, r7, #1
|
|
movs r0, #0
|
|
_08018ACA:
|
|
movs r6, #0
|
|
movs r1, #0x40
|
|
adds r1, r1, r5
|
|
mov r8, r1
|
|
adds r0, #1
|
|
mov sb, r0
|
|
adds r4, r5, #0
|
|
subs r4, #0x40
|
|
_08018ADA:
|
|
adds r0, r3, #0
|
|
adds r3, #1
|
|
adds r1, r5, r6
|
|
movs r2, #1
|
|
str r3, [sp]
|
|
bl SetTileType
|
|
adds r0, r7, #0
|
|
adds r7, #1
|
|
adds r1, r4, #0
|
|
movs r2, #2
|
|
bl SetTileType
|
|
adds r4, #1
|
|
adds r6, #1
|
|
ldr r3, [sp]
|
|
cmp r6, #3
|
|
bls _08018ADA
|
|
mov r5, r8
|
|
mov r0, sb
|
|
cmp r0, #2
|
|
bls _08018ACA
|
|
add sp, #4
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7, pc}
|
|
|
|
thumb_func_start sub_08018B10
|
|
sub_08018B10: @ 0x08018B10
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, #0
|
|
movs r0, #0xf8
|
|
lsls r0, r0, #1
|
|
mov r8, r0
|
|
movs r7, #0xfe
|
|
lsls r7, r7, #1
|
|
movs r5, #0
|
|
adds r4, r6, #0
|
|
subs r4, #0x40
|
|
_08018B28:
|
|
mov r0, r8
|
|
movs r1, #1
|
|
add r8, r1
|
|
adds r1, r6, r5
|
|
movs r2, #1
|
|
bl SetTileType
|
|
adds r0, r7, #0
|
|
adds r7, #1
|
|
adds r1, r4, #0
|
|
movs r2, #2
|
|
bl SetTileType
|
|
adds r4, #1
|
|
adds r5, #1
|
|
cmp r5, #3
|
|
bls _08018B28
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7, pc}
|
|
|
|
thumb_func_start sub_08018B50
|
|
sub_08018B50: @ 0x08018B50
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #4
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #2
|
|
ldr r0, _08018BAC @ =gUnk_080FE320
|
|
adds r2, r1, r0
|
|
ldrb r1, [r2, #1]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
ldr r3, _08018BB0 @ =0x00000219
|
|
cmp r0, #0
|
|
bne _08018B6C
|
|
subs r3, #0x19
|
|
_08018B6C:
|
|
ldrh r0, [r2, #8]
|
|
lsrs r5, r0, #4
|
|
movs r1, #0x3f
|
|
ands r5, r1
|
|
ldrh r0, [r2, #0xa]
|
|
lsrs r0, r0, #4
|
|
ands r0, r1
|
|
lsls r0, r0, #6
|
|
orrs r5, r0
|
|
subs r5, #0x82
|
|
movs r0, #0
|
|
_08018B82:
|
|
movs r4, #0
|
|
adds r6, r5, #0
|
|
adds r6, #0x40
|
|
adds r7, r0, #1
|
|
_08018B8A:
|
|
adds r0, r3, #0
|
|
adds r3, #1
|
|
adds r1, r5, r4
|
|
movs r2, #1
|
|
str r3, [sp]
|
|
bl SetTileType
|
|
adds r4, #1
|
|
ldr r3, [sp]
|
|
cmp r4, #4
|
|
bls _08018B8A
|
|
adds r5, r6, #0
|
|
adds r0, r7, #0
|
|
cmp r0, #4
|
|
bls _08018B82
|
|
add sp, #4
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_08018BAC: .4byte gUnk_080FE320
|
|
_08018BB0: .4byte 0x00000219
|
|
|
|
thumb_func_start sub_08018BB4
|
|
sub_08018BB4: @ 0x08018BB4
|
|
push {r4, r5, lr}
|
|
sub sp, #8
|
|
adds r4, r0, #0
|
|
lsls r0, r4, #3
|
|
ldr r1, _08018C14 @ =gUnk_080FEAC8
|
|
adds r0, r0, r1
|
|
mov r5, sp
|
|
mov r1, sp
|
|
movs r2, #8
|
|
bl MemCopy
|
|
lsls r0, r4, #2
|
|
adds r0, r0, r4
|
|
lsls r0, r0, #2
|
|
ldr r1, _08018C18 @ =gUnk_080FE320
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0, #8]
|
|
lsrs r1, r1, #4
|
|
movs r2, #0x3f
|
|
ands r1, r2
|
|
ldrh r0, [r0, #0xa]
|
|
lsrs r0, r0, #4
|
|
ands r0, r2
|
|
lsls r0, r0, #6
|
|
orrs r1, r0
|
|
strh r1, [r5, #4]
|
|
mov r0, sp
|
|
bl sub_0804B3C4
|
|
ldrb r0, [r5, #1]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _08018C10
|
|
ldrh r3, [r5, #4]
|
|
ldrb r1, [r5, #6]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
movs r2, #2
|
|
cmp r0, #0
|
|
bne _08018C08
|
|
movs r2, #1
|
|
_08018C08:
|
|
movs r0, #0x73
|
|
adds r1, r3, #0
|
|
bl SetTileType
|
|
_08018C10:
|
|
add sp, #8
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08018C14: .4byte gUnk_080FEAC8
|
|
_08018C18: .4byte gUnk_080FE320
|