tmc/asm/guardWithSpear.s

625 lines
10 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0806407C
sub_0806407C: @ 0x0806407C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r1, #0
ldrb r0, [r5, #0x18]
cmp r0, #0
bne _080640E8
adds r0, #1
strb r0, [r5, #0x18]
bl Random
movs r1, #0x3f
ands r0, r1
adds r0, #0x20
strh r0, [r5, #0x12]
bl Random
adds r1, r0, #0
movs r0, #0x18
ands r1, r0
ldrb r0, [r4, #0x15]
cmp r0, #8
beq _080640C4
cmp r0, #8
bgt _080640B2
cmp r0, #0
beq _080640BC
b _080640DA
_080640B2:
cmp r0, #0x10
beq _080640CC
cmp r0, #0x18
beq _080640D4
b _080640DA
_080640BC:
cmp r1, #0x10
bne _080640DA
movs r1, #8
b _080640DA
_080640C4:
cmp r1, #0x18
bne _080640DA
movs r1, #0x10
b _080640DA
_080640CC:
cmp r1, #0
bne _080640DA
movs r1, #0x18
b _080640DA
_080640D4:
cmp r1, #8
bne _080640DA
movs r1, #0
_080640DA:
strb r1, [r4, #0x15]
adds r0, r1, #0
bl sub_0806F5B0
strb r0, [r4, #0x14]
movs r0, #0x80
strh r0, [r4, #0x24]
_080640E8:
ldrb r0, [r4, #0x14]
lsrs r2, r0, #1
adds r1, r2, #4
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r1, r0
beq _0806410A
adds r0, r4, #0
adds r0, #0x70
movs r1, #0
ldrsb r1, [r0, r1]
adds r1, #4
adds r1, r2, r1
adds r0, r4, #0
bl InitializeAnimation
_0806410A:
adds r0, r4, #0
bl ProcessMovement
movs r0, #0x2e
ldrsh r1, [r4, r0]
adds r2, r4, #0
adds r2, #0x68
movs r3, #0
ldrsh r0, [r2, r3]
subs r1, r1, r0
cmp r1, #0x10
ble _0806412C
ldrh r0, [r2]
adds r0, #0x10
strh r0, [r4, #0x2e]
movs r0, #1
strh r0, [r5, #0x12]
_0806412C:
movs r3, #0x10
rsbs r3, r3, #0
cmp r1, r3
bge _0806413E
ldrh r0, [r2]
subs r0, #0x10
strh r0, [r4, #0x2e]
movs r0, #1
strh r0, [r5, #0x12]
_0806413E:
movs r6, #0x32
ldrsh r1, [r4, r6]
adds r2, r4, #0
adds r2, #0x6a
movs r6, #0
ldrsh r0, [r2, r6]
subs r1, r1, r0
cmp r1, #0x10
ble _0806415A
ldrh r0, [r2]
adds r0, #0x10
strh r0, [r4, #0x32]
movs r0, #1
strh r0, [r5, #0x12]
_0806415A:
cmp r1, r3
bge _08064168
ldrh r0, [r2]
subs r0, #0x10
strh r0, [r4, #0x32]
movs r0, #1
strh r0, [r5, #0x12]
_08064168:
ldrh r0, [r5, #0x12]
subs r0, #1
strh r0, [r5, #0x12]
lsls r0, r0, #0x10
cmp r0, #0
beq _0806417A
ldr r1, _0806417C @ =gUnk_02033280
movs r0, #0
strb r0, [r1, #6]
_0806417A:
pop {r4, r5, r6, pc}
.align 2, 0
_0806417C: .4byte gUnk_02033280
thumb_func_start sub_08064180
sub_08064180: @ 0x08064180
push {lr}
movs r0, #7
movs r1, #0x15
movs r2, #7
bl FindEntityInListBySubtype
cmp r0, #0
beq _08064194
bl DeleteEntity
_08064194:
pop {pc}
.align 2, 0
thumb_func_start sub_08064198
sub_08064198: @ 0x08064198
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r4, r5, #0
adds r4, #0x71
ldrb r1, [r4]
movs r0, #0
ldrsb r0, [r4, r0]
cmp r0, #0
ble _080641AE
subs r0, r1, #1
strb r0, [r4]
_080641AE:
ldr r0, _080641D8 @ =gPlayerEntity
movs r2, #0x32
ldrsh r1, [r0, r2]
movs r2, #0x32
ldrsh r0, [r5, r2]
subs r1, r1, r0
cmp r1, #2
ble _080641C0
movs r1, #2
_080641C0:
movs r0, #2
rsbs r0, r0, #0
cmp r1, r0
bge _080641CA
adds r1, r0, #0
_080641CA:
adds r6, r4, #0
cmp r1, #0
beq _08064256
cmp r1, #0
ble _080641DC
movs r0, #0x10
b _080641DE
.align 2, 0
_080641D8: .4byte gPlayerEntity
_080641DC:
movs r0, #0
_080641DE:
strb r0, [r5, #0x15]
cmp r1, #0
bge _080641E6
rsbs r1, r1, #0
_080641E6:
lsls r0, r1, #8
strh r0, [r5, #0x24]
movs r0, #0x32
ldrsh r4, [r5, r0]
adds r0, r5, #0
bl ProcessMovement
movs r1, #0x32
ldrsh r0, [r5, r1]
adds r6, r5, #0
adds r6, #0x71
cmp r4, r0
beq _08064256
ldr r0, _080642B0 @ =gPlayerEntity
movs r2, #0x24
ldrsh r1, [r0, r2]
movs r0, #0xa0
lsls r0, r0, #1
cmp r1, r0
ble _08064222
ldr r0, _080642B4 @ =gScreenTransition
ldr r0, [r0]
movs r1, #6
bl __modsi3
cmp r0, #0
bne _08064222
adds r0, r5, #0
bl CreateDustSmall
_08064222:
adds r4, r5, #0
adds r4, #0x71
movs r0, #0xa
strb r0, [r4]
ldrb r0, [r5, #0x15]
bl sub_0806F5B0
strb r0, [r5, #0x14]
lsls r0, r0, #0x18
lsrs r0, r0, #0x19
adds r1, r5, #0
adds r1, #0x70
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r1, #4
adds r1, r0, r1
adds r0, r5, #0
adds r0, #0x58
adds r6, r4, #0
ldrb r0, [r0]
cmp r1, r0
beq _08064256
adds r0, r5, #0
bl InitializeAnimation
_08064256:
movs r0, #0
ldrsb r0, [r6, r0]
cmp r0, #0
bne _0806428C
ldr r1, _080642B0 @ =gPlayerEntity
adds r0, r5, #0
bl GetFacingDirection
bl sub_0806F5B0
strb r0, [r5, #0x14]
lsls r0, r0, #0x18
lsrs r0, r0, #0x19
adds r1, r5, #0
adds r1, #0x70
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r1, r0, r1
adds r0, r5, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r1, r0
beq _0806428C
adds r0, r5, #0
bl InitializeAnimation
_0806428C:
adds r0, r5, #0
bl sub_0806ED78
movs r0, #0x36
ldrsh r4, [r5, r0]
ldr r0, _080642B0 @ =gPlayerEntity
ldrh r0, [r0, #0x36]
strh r0, [r5, #0x36]
cmp r4, #0
bge _080642AC
lsls r0, r0, #0x10
cmp r0, #0
bne _080642AC
adds r0, r5, #0
bl CreateDustSmall
_080642AC:
pop {r4, r5, r6, pc}
.align 2, 0
_080642B0: .4byte gPlayerEntity
_080642B4: .4byte gScreenTransition
thumb_func_start sub_080642B8
sub_080642B8: @ 0x080642B8
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r4, r5, #0
adds r4, #0x71
ldrb r1, [r4]
movs r0, #0
ldrsb r0, [r4, r0]
cmp r0, #0
ble _080642CE
subs r0, r1, #1
strb r0, [r4]
_080642CE:
ldr r0, _080642F8 @ =gPlayerEntity
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r2, #0x2e
ldrsh r0, [r5, r2]
subs r1, r1, r0
cmp r1, #2
ble _080642E0
movs r1, #2
_080642E0:
movs r0, #2
rsbs r0, r0, #0
cmp r1, r0
bge _080642EA
adds r1, r0, #0
_080642EA:
adds r6, r4, #0
cmp r1, #0
beq _08064376
cmp r1, #0
ble _080642FC
movs r0, #8
b _080642FE
.align 2, 0
_080642F8: .4byte gPlayerEntity
_080642FC:
movs r0, #0x18
_080642FE:
strb r0, [r5, #0x15]
cmp r1, #0
bge _08064306
rsbs r1, r1, #0
_08064306:
lsls r0, r1, #8
strh r0, [r5, #0x24]
movs r0, #0x2e
ldrsh r4, [r5, r0]
adds r0, r5, #0
bl ProcessMovement
movs r1, #0x2e
ldrsh r0, [r5, r1]
adds r6, r5, #0
adds r6, #0x71
cmp r4, r0
beq _08064376
ldr r0, _080643D0 @ =gPlayerEntity
movs r2, #0x24
ldrsh r1, [r0, r2]
movs r0, #0xa0
lsls r0, r0, #1
cmp r1, r0
ble _08064342
ldr r0, _080643D4 @ =gScreenTransition
ldr r0, [r0]
movs r1, #6
bl __modsi3
cmp r0, #0
bne _08064342
adds r0, r5, #0
bl CreateDustSmall
_08064342:
adds r4, r5, #0
adds r4, #0x71
movs r0, #0xa
strb r0, [r4]
ldrb r0, [r5, #0x15]
bl sub_0806F5B0
strb r0, [r5, #0x14]
lsls r0, r0, #0x18
lsrs r0, r0, #0x19
adds r1, r5, #0
adds r1, #0x70
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r1, #4
adds r1, r0, r1
adds r0, r5, #0
adds r0, #0x58
adds r6, r4, #0
ldrb r0, [r0]
cmp r1, r0
beq _08064376
adds r0, r5, #0
bl InitializeAnimation
_08064376:
movs r0, #0
ldrsb r0, [r6, r0]
cmp r0, #0
bne _080643AC
ldr r1, _080643D0 @ =gPlayerEntity
adds r0, r5, #0
bl GetFacingDirection
bl sub_0806F5B0
strb r0, [r5, #0x14]
lsls r0, r0, #0x18
lsrs r0, r0, #0x19
adds r1, r5, #0
adds r1, #0x70
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r1, r0, r1
adds r0, r5, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r1, r0
beq _080643AC
adds r0, r5, #0
bl InitializeAnimation
_080643AC:
adds r0, r5, #0
bl sub_0806ED78
movs r0, #0x36
ldrsh r4, [r5, r0]
ldr r0, _080643D0 @ =gPlayerEntity
ldrh r0, [r0, #0x36]
strh r0, [r5, #0x36]
cmp r4, #0
bge _080643CC
lsls r0, r0, #0x10
cmp r0, #0
bne _080643CC
adds r0, r5, #0
bl CreateDustSmall
_080643CC:
pop {r4, r5, r6, pc}
.align 2, 0
_080643D0: .4byte gPlayerEntity
_080643D4: .4byte gScreenTransition
thumb_func_start sub_080643D8
sub_080643D8: @ 0x080643D8
push {r4, lr}
adds r4, r0, #0
movs r0, #2
bl CheckGlobalFlag
cmp r0, #0
bne _080643EA
movs r3, #0
b _08064406
_080643EA:
movs r0, #2
bl GetInventoryValue
cmp r0, #0
bne _080643F8
movs r3, #1
b _08064406
_080643F8:
movs r0, #3
bl GetInventoryValue
movs r3, #3
cmp r0, #0
bne _08064406
movs r3, #2
_08064406:
ldrb r1, [r4, #0xb]
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
ldr r2, _08064424 @ =gUnk_0810F6D4
lsls r1, r3, #1
lsls r0, r0, #3
adds r1, r1, r0
adds r1, r1, r2
ldrh r0, [r1]
adds r1, r4, #0
bl TextboxNoOverlap
pop {r4, pc}
.align 2, 0
_08064424: .4byte gUnk_0810F6D4
thumb_func_start sub_08064428
sub_08064428: @ 0x08064428
push {lr}
adds r3, r0, #0
ldr r0, _0806444C @ =gUnk_02002A40
ldrb r0, [r0, #8]
subs r1, r0, #2
cmp r1, #0
bge _08064438
movs r1, #0
_08064438:
ldrb r2, [r3, #0xb]
movs r0, #0x80
ands r0, r2
cmp r0, #0
bne _08064454
ldrb r0, [r3, #0xb]
lsls r0, r0, #3
ldr r1, _08064450 @ =gUnk_0810CF4C
b _08064460
.align 2, 0
_0806444C: .4byte gUnk_02002A40
_08064450: .4byte gUnk_0810CF4C
_08064454:
movs r0, #0x7f
ands r0, r2
lsls r0, r0, #6
lsls r1, r1, #3
ldr r2, _0806446C @ =gUnk_0810D0A4
adds r1, r1, r2
_08064460:
adds r1, r0, r1
adds r0, r3, #0
bl ShowNPCDialogue
pop {pc}
.align 2, 0
_0806446C: .4byte gUnk_0810D0A4
thumb_func_start sub_08064470
sub_08064470: @ 0x08064470
push {lr}
ldr r0, _08064484 @ =gPlayerState
adds r0, #0xab
ldrb r0, [r0]
cmp r0, #1
beq _0806447E
movs r0, #0
_0806447E:
str r0, [r1, #0x14]
pop {pc}
.align 2, 0
_08064484: .4byte gPlayerState
thumb_func_start sub_08064488
sub_08064488: @ 0x08064488
push {lr}
ldr r1, _080644A0 @ =gPlayerState
adds r0, r1, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #2
beq _0806449C
adds r1, #0xab
movs r0, #0
strb r0, [r1]
_0806449C:
pop {pc}
.align 2, 0
_080644A0: .4byte gPlayerState
thumb_func_start sub_080644A4
sub_080644A4: @ 0x080644A4
ldr r0, _080644B0 @ =gPlayerState
adds r0, #0xab
movs r1, #0
strb r1, [r0]
bx lr
.align 2, 0
_080644B0: .4byte gPlayerState
thumb_func_start sub_080644B4
sub_080644B4: @ 0x080644B4
push {lr}
adds r2, r1, #0
movs r3, #0
ldrb r1, [r0, #0x14]
ldr r0, [r2, #4]
cmp r1, r0
bne _080644C4
movs r3, #1
_080644C4:
str r3, [r2, #0x14]
pop {pc}
thumb_func_start sub_080644C8
sub_080644C8: @ 0x080644C8
push {r4, lr}
adds r2, r0, #0
movs r1, #0x2e
ldrsh r0, [r2, r1]
ldr r3, _08064500 @ =gRoomControls
movs r4, #0xa
ldrsh r1, [r3, r4]
subs r1, r0, r1
adds r0, r1, #0
adds r0, #8
cmp r0, #0
blt _08064504
adds r0, r1, #0
subs r0, #8
cmp r0, #0xf0
bgt _08064504
movs r0, #0x32
ldrsh r1, [r2, r0]
movs r2, #0xc
ldrsh r0, [r3, r2]
subs r0, r1, r0
cmp r0, #0
blt _08064504
subs r0, #0x18
cmp r0, #0xa0
bgt _08064504
movs r0, #1
b _08064506
.align 2, 0
_08064500: .4byte gRoomControls
_08064504:
movs r0, #0
_08064506:
pop {r4, pc}