mirror of
https://github.com/SAT-R/sa2.git
synced 2026-10-28 09:43:38 +00:00
* sprite.h: Background.unk14/.unk16 -> .xTiles/.yTiles * Background.unk2A -> .paletteOffset * Background.unk26/.unk28 ->targetTilesX/Y * Remove seemingly unused Background.unk2D * Background.unk10 -> .layout * Background.tilesVram -> .layoutVram * Some value documentation in camera.c * gUnknown_080D5864 -> gStageCameraBgTemplates * Various variable and function names * Various var and func renames * Document stage goal bonus points vars and a proc * Match sub_80213C0 and sub_8021490 * Document a few game_6 procedures and vars * (Basically) match InitializePlayer * Progress on sub_802195C. Remove 'move' var in sub_80213C0 * Match sub_802195C using sub_8029BB8 as base * Match sub_8021A34 and sub_8021B08 * Match sub_8021BE0 * Progress on sub_8021C4C * Match sub_8021C4C * Some cleanup * Match sub_8021DB8 * Match sub_8021EE4 and sub_802203C * Match sub_8022190 * Match sub_8022218, sub_8022284 and sub_8022318 * Match sub_80223BC, sub_80224DC, sub_80225E8, sub_8022710, sub_8022838 * Rename game_6_2 -> game_6_3 * Split game_6.s * Start sub_80228C0 * Progress on sub_80228C0 * Match sub_80228C0, sub_80229EC, sub_8022B18 and sub_8022C44 * Almost match sub_8022D6C * Add player_unknown_0.h * More progress on sub_8022D6C * Progress on sub_8022D6C * Move sub_8022D6C into non-matching * Cleanup by Ollie Co-authored-by: Oliver Bell <freshollie@gmail.com> * Document some gWater names * Make ifs more readable --------- Co-authored-by: Oliver Bell <freshollie@gmail.com>
5261 lines
89 KiB
ArmAsm
5261 lines
89 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.section .rodata
|
|
|
|
.text
|
|
.syntax unified
|
|
.arm
|
|
|
|
thumb_func_start CreateMultiplayerPlayer
|
|
CreateMultiplayerPlayer: @ 0x08016028
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #4
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
ldr r0, _08016090 @ =sub_801623C
|
|
movs r2, #0x80
|
|
lsls r2, r2, #6
|
|
ldr r1, _08016094 @ =sub_8018878
|
|
str r1, [sp]
|
|
movs r1, #0x6c
|
|
movs r3, #0
|
|
bl TaskCreate
|
|
mov r8, r0
|
|
ldrh r3, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r0, r0, r3
|
|
mov ip, r0
|
|
ldr r1, _08016098 @ =IWRAM_START + 0x56
|
|
adds r0, r3, r1
|
|
movs r1, #0
|
|
strb r4, [r0]
|
|
ldr r0, _0801609C @ =IWRAM_START + 0x54
|
|
adds r2, r3, r0
|
|
movs r0, #0x40
|
|
strh r0, [r2]
|
|
mov r2, ip
|
|
str r1, [r2, #0x44]
|
|
str r1, [r2, #0x48]
|
|
ldr r2, _080160A0 @ =IWRAM_START + 0x66
|
|
adds r0, r3, r2
|
|
strh r1, [r0]
|
|
adds r2, #2
|
|
adds r0, r3, r2
|
|
strh r1, [r0]
|
|
adds r2, #2
|
|
adds r0, r3, r2
|
|
strh r1, [r0]
|
|
ldr r0, _080160A4 @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
cmp r4, r0
|
|
beq _080160AC
|
|
ldr r0, _080160A8 @ =IWRAM_START + 0x60
|
|
adds r1, r3, r0
|
|
movs r0, #0x1e
|
|
b _080160B2
|
|
.align 2, 0
|
|
_08016090: .4byte sub_801623C
|
|
_08016094: .4byte sub_8018878
|
|
_08016098: .4byte IWRAM_START + 0x56
|
|
_0801609C: .4byte IWRAM_START + 0x54
|
|
_080160A0: .4byte IWRAM_START + 0x66
|
|
_080160A4: .4byte 0x04000128
|
|
_080160A8: .4byte IWRAM_START + 0x60
|
|
_080160AC:
|
|
ldr r2, _0801611C @ =IWRAM_START + 0x60
|
|
adds r1, r3, r2
|
|
movs r0, #0
|
|
_080160B2:
|
|
strb r0, [r1]
|
|
mov r1, ip
|
|
adds r1, #0x57
|
|
movs r5, #0
|
|
movs r0, #0x80
|
|
strb r0, [r1]
|
|
mov r0, ip
|
|
adds r0, #0x61
|
|
strb r5, [r0]
|
|
mov r0, ip
|
|
str r5, [r0, #0x5c]
|
|
mov r2, ip
|
|
adds r2, #0x56
|
|
ldrb r1, [r2]
|
|
adds r0, #0x64
|
|
strb r1, [r0]
|
|
ldr r6, _08016120 @ =gGameMode
|
|
ldrb r0, [r6]
|
|
adds r7, r2, #0
|
|
cmp r0, #5
|
|
beq _080160E8
|
|
mov r1, ip
|
|
ldr r0, [r1, #0x5c]
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
mov r2, ip
|
|
str r0, [r2, #0x5c]
|
|
_080160E8:
|
|
mov r3, ip
|
|
adds r3, #0x50
|
|
movs r1, #0
|
|
strh r5, [r3]
|
|
mov r4, ip
|
|
adds r4, #0x52
|
|
strh r5, [r4]
|
|
ldrb r0, [r6]
|
|
cmp r0, #4
|
|
bhi _0801612C
|
|
ldr r1, _08016124 @ =gSpawnPositions
|
|
ldr r2, _08016128 @ =gCurrentLevel
|
|
movs r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r3]
|
|
movs r0, #0
|
|
ldrsb r0, [r2, r0]
|
|
lsls r0, r0, #2
|
|
adds r1, #2
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
b _08016186
|
|
.align 2, 0
|
|
_0801611C: .4byte IWRAM_START + 0x60
|
|
_08016120: .4byte gGameMode
|
|
_08016124: .4byte gSpawnPositions
|
|
_08016128: .4byte gCurrentLevel
|
|
_0801612C:
|
|
ldr r0, _08016144 @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
cmp r0, #1
|
|
beq _08016160
|
|
cmp r0, #1
|
|
bgt _08016148
|
|
cmp r0, #0
|
|
beq _08016152
|
|
b _08016188
|
|
.align 2, 0
|
|
_08016144: .4byte 0x04000128
|
|
_08016148:
|
|
cmp r0, #2
|
|
beq _08016170
|
|
cmp r0, #3
|
|
beq _08016180
|
|
b _08016188
|
|
_08016152:
|
|
movs r0, #0xe8
|
|
strh r0, [r3]
|
|
ldr r0, _0801615C @ =0x0000033D
|
|
b _08016186
|
|
.align 2, 0
|
|
_0801615C: .4byte 0x0000033D
|
|
_08016160:
|
|
ldr r0, _08016168 @ =0x00000631
|
|
strh r0, [r3]
|
|
ldr r0, _0801616C @ =0x00000117
|
|
b _08016186
|
|
.align 2, 0
|
|
_08016168: .4byte 0x00000631
|
|
_0801616C: .4byte 0x00000117
|
|
_08016170:
|
|
ldr r0, _08016178 @ =0x00000631
|
|
strh r0, [r3]
|
|
ldr r0, _0801617C @ =0x0000039E
|
|
b _08016186
|
|
.align 2, 0
|
|
_08016178: .4byte 0x00000631
|
|
_0801617C: .4byte 0x0000039E
|
|
_08016180:
|
|
movs r0, #0xe8
|
|
strh r0, [r3]
|
|
adds r0, #0x74
|
|
_08016186:
|
|
strh r0, [r4]
|
|
_08016188:
|
|
mov r4, ip
|
|
movs r2, #0
|
|
movs r1, #0
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
strh r0, [r4, #0x1a]
|
|
strh r1, [r4, #8]
|
|
strh r1, [r4, #0x14]
|
|
strh r1, [r4, #0x1c]
|
|
adds r3, r4, #0
|
|
adds r3, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r3]
|
|
adds r3, #1
|
|
movs r0, #0x10
|
|
strb r0, [r3]
|
|
ldrb r0, [r7]
|
|
adds r3, #3
|
|
strb r0, [r3]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r0, [r4, #0x28]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #6
|
|
str r0, [r4, #0x10]
|
|
strh r1, [r4, #0xa]
|
|
adds r0, r4, #0
|
|
adds r0, #0x20
|
|
strb r2, [r0]
|
|
strh r1, [r4, #0x16]
|
|
strh r1, [r4, #0x18]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
strh r0, [r4, #0x3c]
|
|
ldr r2, _08016204 @ =gPlayerCharacterIdleAnims
|
|
ldr r1, _08016208 @ =gMultiplayerCharacters
|
|
ldrb r0, [r7]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
strh r0, [r4, #0xa]
|
|
ldr r0, _0801620C @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
ldrb r1, [r7]
|
|
lsrs r0, r0, #0x1e
|
|
cmp r1, r0
|
|
beq _08016210
|
|
movs r0, #0x40
|
|
bl VramMalloc
|
|
str r0, [r4, #4]
|
|
ldr r0, [r4, #0x10]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #2
|
|
orrs r0, r1
|
|
str r0, [r4, #0x10]
|
|
b _08016214
|
|
.align 2, 0
|
|
_08016204: .4byte gPlayerCharacterIdleAnims
|
|
_08016208: .4byte gMultiplayerCharacters
|
|
_0801620C: .4byte 0x04000128
|
|
_08016210:
|
|
ldr r0, _08016234 @ =0x06010000
|
|
str r0, [r4, #4]
|
|
_08016214:
|
|
adds r0, r4, #0
|
|
bl UpdateSpriteAnimation
|
|
ldr r1, _08016238 @ =gMultiplayerPlayerTasks
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
mov r1, r8
|
|
str r1, [r0]
|
|
add sp, #4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08016234: .4byte 0x06010000
|
|
_08016238: .4byte gMultiplayerPlayerTasks
|
|
|
|
thumb_func_start sub_801623C
|
|
sub_801623C: @ 0x0801623C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x14
|
|
ldr r0, _08016340 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r5, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r6, r5, r0
|
|
adds r7, r6, #0
|
|
adds r0, #0x38
|
|
adds r0, r5, r0
|
|
str r0, [sp]
|
|
ldr r1, _08016344 @ =IWRAM_START + 0x56
|
|
adds r3, r5, r1
|
|
ldrb r2, [r3]
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #2
|
|
ldr r1, _08016348 @ =gMultiSioRecv
|
|
adds r0, r0, r1
|
|
mov r8, r0
|
|
ldr r4, _0801634C @ =gMultiSioStatusFlags
|
|
mov sb, r4
|
|
movs r4, #1
|
|
adds r1, r4, #0
|
|
lsls r1, r2
|
|
mov r2, sb
|
|
ldr r0, [r2]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016284
|
|
b _0801666C
|
|
_08016284:
|
|
ldr r0, _08016350 @ =IWRAM_START + 0x61
|
|
adds r2, r5, r0
|
|
movs r1, #0
|
|
mov ip, r1
|
|
mov r0, ip
|
|
strb r0, [r2]
|
|
adds r1, r4, #0
|
|
ldrb r3, [r3]
|
|
lsls r1, r3
|
|
mov r3, sb
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080162A2
|
|
b _0801666C
|
|
_080162A2:
|
|
mov r4, r8
|
|
ldrh r1, [r4]
|
|
movs r0, #0xa0
|
|
lsls r0, r0, #7
|
|
cmp r1, r0
|
|
beq _080162B0
|
|
b _0801666C
|
|
_080162B0:
|
|
mov r0, ip
|
|
strb r0, [r2]
|
|
ldr r0, _08016354 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
beq _080162BE
|
|
b _080163C0
|
|
_080162BE:
|
|
movs r2, #2
|
|
ldrsh r1, [r4, r2]
|
|
ldr r3, _08016358 @ =IWRAM_START + 0x50
|
|
adds r3, r3, r5
|
|
mov ip, r3
|
|
movs r4, #0
|
|
ldrsh r0, [r3, r4]
|
|
subs r4, r1, r0
|
|
str r4, [r6, #0x44]
|
|
mov r0, r8
|
|
movs r1, #4
|
|
ldrsh r0, [r0, r1]
|
|
mov sb, r0
|
|
ldr r3, _0801635C @ =IWRAM_START + 0x52
|
|
adds r2, r5, r3
|
|
movs r1, #0
|
|
ldrsh r0, [r2, r1]
|
|
mov r3, sb
|
|
subs r1, r3, r0
|
|
str r1, [r6, #0x48]
|
|
adds r0, r4, #0
|
|
cmp r4, #0
|
|
bge _080162EE
|
|
rsbs r0, r4, #0
|
|
_080162EE:
|
|
mov r3, ip
|
|
str r3, [sp, #4]
|
|
str r2, [sp, #8]
|
|
cmp r0, #0xf
|
|
ble _080163A6
|
|
adds r0, r1, #0
|
|
cmp r1, #0
|
|
bge _08016300
|
|
rsbs r0, r1, #0
|
|
_08016300:
|
|
ldr r2, _08016358 @ =IWRAM_START + 0x50
|
|
adds r2, r5, r2
|
|
str r2, [sp, #4]
|
|
ldr r3, _0801635C @ =IWRAM_START + 0x52
|
|
adds r3, r5, r3
|
|
str r3, [sp, #8]
|
|
cmp r0, #0xf
|
|
ble _080163A6
|
|
cmp r4, #0
|
|
ble _08016368
|
|
cmp r1, #0
|
|
ble _08016368
|
|
mov r4, r8
|
|
movs r5, #2
|
|
ldrsh r0, [r4, r5]
|
|
ldr r1, _08016360 @ =0xFFFFFA60
|
|
adds r0, r0, r1
|
|
movs r3, #0
|
|
ldrsh r1, [r2, r3]
|
|
subs r0, r0, r1
|
|
str r0, [r6, #0x44]
|
|
ldr r4, [sp, #8]
|
|
movs r5, #0
|
|
ldrsh r1, [r4, r5]
|
|
mov r2, r8
|
|
movs r3, #4
|
|
ldrsh r0, [r2, r3]
|
|
ldr r4, _08016364 @ =0xFFFFFCA0
|
|
adds r0, r0, r4
|
|
subs r1, r1, r0
|
|
str r1, [r6, #0x48]
|
|
b _080163A6
|
|
.align 2, 0
|
|
_08016340: .4byte gCurTask
|
|
_08016344: .4byte IWRAM_START + 0x56
|
|
_08016348: .4byte gMultiSioRecv
|
|
_0801634C: .4byte gMultiSioStatusFlags
|
|
_08016350: .4byte IWRAM_START + 0x61
|
|
_08016354: .4byte gGameMode
|
|
_08016358: .4byte IWRAM_START + 0x50
|
|
_0801635C: .4byte IWRAM_START + 0x52
|
|
_08016360: .4byte 0xFFFFFA60
|
|
_08016364: .4byte 0xFFFFFCA0
|
|
_08016368:
|
|
ldr r0, [r7, #0x44]
|
|
adds r5, r7, #0
|
|
adds r5, #0x50
|
|
str r5, [sp, #4]
|
|
adds r1, r7, #0
|
|
adds r1, #0x52
|
|
str r1, [sp, #8]
|
|
cmp r0, #0
|
|
bge _080163A6
|
|
ldr r0, [r7, #0x48]
|
|
cmp r0, #0
|
|
bge _080163A6
|
|
mov r2, r8
|
|
movs r3, #2
|
|
ldrsh r1, [r2, r3]
|
|
movs r4, #0
|
|
ldrsh r0, [r5, r4]
|
|
ldr r5, _080163B8 @ =0xFFFFFA60
|
|
adds r0, r0, r5
|
|
subs r1, r1, r0
|
|
str r1, [r7, #0x44]
|
|
ldr r1, [sp, #8]
|
|
movs r2, #0
|
|
ldrsh r0, [r1, r2]
|
|
ldr r3, _080163BC @ =0xFFFFFCA0
|
|
adds r0, r0, r3
|
|
mov r4, r8
|
|
movs r5, #4
|
|
ldrsh r1, [r4, r5]
|
|
subs r0, r0, r1
|
|
str r0, [r7, #0x48]
|
|
_080163A6:
|
|
mov r1, r8
|
|
ldrh r0, [r1, #2]
|
|
ldr r2, [sp, #4]
|
|
strh r0, [r2]
|
|
ldrh r0, [r1, #4]
|
|
ldr r3, [sp, #8]
|
|
strh r0, [r3]
|
|
b _080163F2
|
|
.align 2, 0
|
|
_080163B8: .4byte 0xFFFFFA60
|
|
_080163BC: .4byte 0xFFFFFCA0
|
|
_080163C0:
|
|
mov r4, r8
|
|
movs r1, #2
|
|
ldrsh r0, [r4, r1]
|
|
ldr r2, _0801641C @ =IWRAM_START + 0x50
|
|
adds r3, r5, r2
|
|
movs r4, #0
|
|
ldrsh r1, [r3, r4]
|
|
subs r0, r0, r1
|
|
str r0, [r6, #0x44]
|
|
mov r1, r8
|
|
movs r2, #4
|
|
ldrsh r0, [r1, r2]
|
|
ldr r4, _08016420 @ =IWRAM_START + 0x52
|
|
adds r2, r5, r4
|
|
movs r5, #0
|
|
ldrsh r1, [r2, r5]
|
|
subs r0, r0, r1
|
|
str r0, [r6, #0x48]
|
|
mov r1, r8
|
|
ldrh r0, [r1, #2]
|
|
strh r0, [r3]
|
|
ldrh r0, [r1, #4]
|
|
strh r0, [r2]
|
|
str r3, [sp, #4]
|
|
str r2, [sp, #8]
|
|
_080163F2:
|
|
ldr r0, [r7, #0x44]
|
|
adds r1, r0, #0
|
|
cmp r0, #0
|
|
bge _080163FC
|
|
rsbs r1, r0, #0
|
|
_080163FC:
|
|
cmp r1, #0x40
|
|
bgt _0801640C
|
|
ldr r1, [r7, #0x48]
|
|
cmp r1, #0
|
|
bge _08016408
|
|
rsbs r1, r1, #0
|
|
_08016408:
|
|
cmp r1, #0x40
|
|
ble _08016424
|
|
_0801640C:
|
|
adds r0, r7, #0
|
|
adds r0, #0x66
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
adds r0, #2
|
|
strh r1, [r0]
|
|
b _08016434
|
|
.align 2, 0
|
|
_0801641C: .4byte IWRAM_START + 0x50
|
|
_08016420: .4byte IWRAM_START + 0x52
|
|
_08016424:
|
|
lsls r0, r0, #8
|
|
adds r1, r7, #0
|
|
adds r1, #0x66
|
|
strh r0, [r1]
|
|
ldr r0, [r7, #0x48]
|
|
lsls r0, r0, #8
|
|
adds r1, #2
|
|
strh r0, [r1]
|
|
_08016434:
|
|
adds r2, r7, #0
|
|
adds r2, #0x57
|
|
ldrb r3, [r2]
|
|
mov r4, r8
|
|
ldrb r0, [r4, #0xa]
|
|
adds r4, r0, #0
|
|
bics r4, r3
|
|
ldr r0, _080164C0 @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
adds r1, r7, #0
|
|
adds r1, #0x56
|
|
lsrs r0, r0, #0x1e
|
|
mov sb, r2
|
|
mov sl, r1
|
|
ldrb r5, [r1]
|
|
cmp r0, r5
|
|
bne _08016490
|
|
movs r1, #2
|
|
adds r0, r4, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016474
|
|
adds r0, r1, #0
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
bne _08016474
|
|
mov r1, sl
|
|
movs r0, #0
|
|
ldrsb r0, [r1, r0]
|
|
bl CreateItemTask_Invincibility
|
|
_08016474:
|
|
movs r0, #0x50
|
|
ands r4, r0
|
|
cmp r4, #0
|
|
beq _08016490
|
|
mov r2, sb
|
|
ldrb r1, [r2]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016490
|
|
mov r3, sl
|
|
movs r0, #0
|
|
ldrsb r0, [r3, r0]
|
|
bl CreateItemTask_Confusion
|
|
_08016490:
|
|
mov r4, r8
|
|
ldrb r0, [r4, #0xa]
|
|
mov r5, sb
|
|
strb r0, [r5]
|
|
ldrh r1, [r4, #8]
|
|
adds r0, r7, #0
|
|
adds r0, #0x54
|
|
strh r1, [r0]
|
|
ldr r3, _080164C0 @ =0x04000128
|
|
ldr r0, [r3]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
mov r2, sl
|
|
ldrb r2, [r2]
|
|
cmp r0, r2
|
|
beq _080164C4
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #3
|
|
ands r0, r1
|
|
lsrs r0, r0, #9
|
|
adds r1, r7, #0
|
|
adds r1, #0x64
|
|
strb r0, [r1]
|
|
b _08016576
|
|
.align 2, 0
|
|
_080164C0: .4byte 0x04000128
|
|
_080164C4:
|
|
ldr r0, [r3]
|
|
lsls r0, r0, #0x1a
|
|
adds r4, r7, #0
|
|
adds r4, #0x64
|
|
ldrb r2, [r4]
|
|
lsrs r0, r0, #0x1e
|
|
cmp r0, r2
|
|
beq _08016576
|
|
ldr r1, _080165A8 @ =gMultiplayerPlayerTasks
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r5, r1, r0
|
|
ldr r0, [r3]
|
|
lsls r0, r0, #0x1a
|
|
ldr r2, _080165AC @ =IWRAM_START + 0x64
|
|
adds r1, r1, r2
|
|
lsrs r0, r0, #0x1e
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _08016576
|
|
ldr r0, [r3]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
strb r0, [r4]
|
|
ldr r4, _080165B0 @ =gPlayer
|
|
ldr r0, [r4, #0x20]
|
|
movs r1, #9
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
subs r1, #0x18
|
|
ands r0, r1
|
|
movs r3, #5
|
|
rsbs r3, r3, #0
|
|
mov sb, r3
|
|
ands r0, r3
|
|
adds r1, #0x10
|
|
ands r0, r1
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
ldr r1, _080165B4 @ =0xFFFFFBFF
|
|
ands r0, r1
|
|
ldr r1, _080165B8 @ =0xFFFFFEFF
|
|
ands r0, r1
|
|
str r0, [r4, #0x20]
|
|
adds r0, r4, #0
|
|
movs r1, #0xe
|
|
bl sub_8023B5C
|
|
movs r0, #6
|
|
strb r0, [r4, #0x16]
|
|
movs r0, #0xe
|
|
strb r0, [r4, #0x17]
|
|
adds r0, r4, #0
|
|
adds r0, #0x61
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
adds r0, #1
|
|
strb r1, [r0]
|
|
adds r1, r4, #0
|
|
adds r1, #0x64
|
|
movs r0, #9
|
|
strh r0, [r1]
|
|
movs r0, #0x3c
|
|
strh r0, [r4, #0x2c]
|
|
ldr r0, _080165BC @ =PlayerCB_8025318
|
|
str r0, [r4]
|
|
ldr r0, [r4, #0x20]
|
|
ldr r2, _080165C0 @ =0xFFBFFFFF
|
|
ands r0, r2
|
|
str r0, [r4, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
mov r3, sb
|
|
ands r0, r3
|
|
str r0, [r7, #0x5c]
|
|
ldr r0, [r5, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016576
|
|
ldr r0, [r4, #0x20]
|
|
ands r0, r2
|
|
str r0, [r4, #0x20]
|
|
ldr r0, [r5, #0x5c]
|
|
ands r0, r3
|
|
str r0, [r5, #0x5c]
|
|
_08016576:
|
|
ldr r0, _080165C4 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
bne _080165D0
|
|
mov r4, r8
|
|
ldrh r1, [r4, #6]
|
|
ldrb r3, [r4, #6]
|
|
ldr r2, _080165C8 @ =gUnknown_030053E8
|
|
mov r5, sl
|
|
ldrb r0, [r5]
|
|
adds r0, r0, r2
|
|
lsrs r1, r1, #8
|
|
strb r1, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x6a
|
|
strh r3, [r0]
|
|
ldr r1, _080165CC @ =gPlayerCharacterIdleAnims
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
adds r0, r3, r0
|
|
lsls r0, r0, #0x10
|
|
lsrs r3, r0, #0x10
|
|
b _080165D4
|
|
.align 2, 0
|
|
_080165A8: .4byte gMultiplayerPlayerTasks
|
|
_080165AC: .4byte IWRAM_START + 0x64
|
|
_080165B0: .4byte gPlayer
|
|
_080165B4: .4byte 0xFFFFFBFF
|
|
_080165B8: .4byte 0xFFFFFEFF
|
|
_080165BC: .4byte PlayerCB_8025318
|
|
_080165C0: .4byte 0xFFBFFFFF
|
|
_080165C4: .4byte gGameMode
|
|
_080165C8: .4byte gUnknown_030053E8
|
|
_080165CC: .4byte gPlayerCharacterIdleAnims
|
|
_080165D0:
|
|
mov r0, r8
|
|
ldrh r3, [r0, #6]
|
|
_080165D4:
|
|
mov r1, r8
|
|
ldrb r0, [r1, #0xb]
|
|
movs r5, #0xf
|
|
ands r5, r0
|
|
ldrh r0, [r6, #0xa]
|
|
adds r4, r6, #0
|
|
adds r4, #0x20
|
|
cmp r0, r3
|
|
bne _080165EC
|
|
ldrb r0, [r4]
|
|
cmp r0, r5
|
|
beq _080165F4
|
|
_080165EC:
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r0, [r6, #0x28]
|
|
str r0, [r6, #0x30]
|
|
_080165F4:
|
|
adds r0, r7, #0
|
|
adds r0, #0x54
|
|
ldrh r1, [r0]
|
|
movs r2, #4
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016642
|
|
ldr r0, [r7, #0x5c]
|
|
ands r0, r2
|
|
ldr r2, _08016664 @ =gPlayer
|
|
mov ip, r2
|
|
cmp r0, #0
|
|
beq _08016622
|
|
ldr r0, [r2, #0x20]
|
|
ldr r1, _08016668 @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
_08016622:
|
|
mov r0, ip
|
|
ldr r1, [r0, #0x20]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016642
|
|
mov r2, ip
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r6
|
|
bne _08016642
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
movs r0, #2
|
|
orrs r1, r0
|
|
str r1, [r2, #0x20]
|
|
_08016642:
|
|
strh r3, [r6, #0xa]
|
|
strb r5, [r4]
|
|
mov r3, r8
|
|
ldrb r0, [r3, #0xb]
|
|
lsrs r0, r0, #4
|
|
adds r1, r7, #0
|
|
adds r1, #0x58
|
|
strb r0, [r1]
|
|
ldrb r0, [r3, #0xc]
|
|
adds r1, r6, #0
|
|
adds r1, #0x22
|
|
strb r0, [r1]
|
|
ldrb r0, [r3, #0xd]
|
|
lsls r0, r0, #2
|
|
ldr r4, [sp]
|
|
strh r0, [r4]
|
|
b _080166F0
|
|
.align 2, 0
|
|
_08016664: .4byte gPlayer
|
|
_08016668: .4byte 0xFFBFFFFF
|
|
_0801666C:
|
|
adds r3, r7, #0
|
|
adds r3, #0x50
|
|
adds r0, r7, #0
|
|
adds r0, #0x66
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x18
|
|
ldrh r5, [r3]
|
|
adds r0, r0, r5
|
|
strh r0, [r3]
|
|
adds r2, r7, #0
|
|
adds r2, #0x52
|
|
adds r0, r7, #0
|
|
adds r0, #0x68
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x18
|
|
ldrh r1, [r2]
|
|
adds r0, r0, r1
|
|
strh r0, [r2]
|
|
adds r4, r7, #0
|
|
adds r4, #0x61
|
|
ldrb r0, [r4]
|
|
adds r1, r0, #1
|
|
strb r1, [r4]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r3, [sp, #4]
|
|
str r2, [sp, #8]
|
|
cmp r0, #0x1e
|
|
bls _080166F0
|
|
ldr r1, _080166D4 @ =0x0000FFFF
|
|
movs r0, #0
|
|
bl TasksDestroyInPriorityRange
|
|
ldr r1, _080166D8 @ =gUnknown_03002AE4
|
|
ldr r0, _080166DC @ =gUnknown_0300287C
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r1, _080166E0 @ =gUnknown_03005390
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r1, _080166E4 @ =gVramGraphicsCopyCursor
|
|
ldr r0, _080166E8 @ =gVramGraphicsCopyQueueIndex
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, _080166EC @ =gGameMode
|
|
ldrb r0, [r0]
|
|
bl MultiPakCommunicationError
|
|
b _08016D08
|
|
.align 2, 0
|
|
_080166D4: .4byte 0x0000FFFF
|
|
_080166D8: .4byte gUnknown_03002AE4
|
|
_080166DC: .4byte gUnknown_0300287C
|
|
_080166E0: .4byte gUnknown_03005390
|
|
_080166E4: .4byte gVramGraphicsCopyCursor
|
|
_080166E8: .4byte gVramGraphicsCopyQueueIndex
|
|
_080166EC: .4byte gGameMode
|
|
_080166F0:
|
|
movs r2, #3
|
|
ldr r3, _0801688C @ =gPlayerCharacterIdleAnims
|
|
movs r4, #6
|
|
ldrsh r0, [r3, r4]
|
|
ldrh r1, [r6, #0xa]
|
|
adds r5, r7, #0
|
|
adds r5, #0x54
|
|
str r5, [sp, #0xc]
|
|
ldr r4, _08016890 @ =gCamera
|
|
cmp r0, r1
|
|
ble _08016722
|
|
_08016706:
|
|
lsls r0, r2, #0x18
|
|
movs r2, #0xff
|
|
lsls r2, r2, #0x18
|
|
adds r0, r0, r2
|
|
lsrs r2, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
blt _08016722
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
movs r5, #0
|
|
ldrsh r0, [r0, r5]
|
|
cmp r0, r1
|
|
bgt _08016706
|
|
_08016722:
|
|
ldr r1, [r4]
|
|
ldr r2, [sp, #4]
|
|
ldrh r0, [r2]
|
|
subs r0, r0, r1
|
|
strh r0, [r6, #0x16]
|
|
ldr r1, [r4, #4]
|
|
ldr r3, [sp, #8]
|
|
ldrh r0, [r3]
|
|
subs r0, r0, r1
|
|
strh r0, [r6, #0x18]
|
|
ldr r1, [r4]
|
|
ldrh r0, [r2]
|
|
subs r0, r0, r1
|
|
ldr r5, [sp]
|
|
strh r0, [r5, #6]
|
|
ldr r1, [r4, #4]
|
|
ldrh r0, [r3]
|
|
subs r0, r0, r1
|
|
strh r0, [r5, #8]
|
|
ldr r0, [sp, #0xc]
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016766
|
|
adds r1, r6, #0
|
|
adds r1, #0x21
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r0, [r6, #0x28]
|
|
str r0, [r6, #0x30]
|
|
_08016766:
|
|
adds r0, r6, #0
|
|
bl UpdateSpriteAnimation
|
|
ldr r0, _08016894 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #4
|
|
bne _0801680C
|
|
ldr r1, _08016898 @ =gUnknown_030054B4
|
|
ldr r2, _0801689C @ =0x04000128
|
|
ldr r0, [r2]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
adds r0, r0, r1
|
|
movs r1, #0
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
bne _0801680C
|
|
movs r1, #1
|
|
mov sl, r1
|
|
movs r5, #0
|
|
ldr r1, _080168A0 @ =gMultiplayerPlayerTasks
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
beq _080167FE
|
|
ldr r0, _080168A4 @ =gMultiplayerConnections
|
|
ldrb r0, [r0]
|
|
mov r8, r0
|
|
movs r3, #0x10
|
|
mov ip, r3
|
|
mov sb, r2
|
|
adds r4, r1, #0
|
|
_080167A8:
|
|
ldr r0, [r4]
|
|
ldrh r0, [r0, #6]
|
|
str r0, [sp, #0x10]
|
|
mov r2, ip
|
|
lsls r2, r5
|
|
mov r0, r8
|
|
ands r2, r0
|
|
adds r0, r5, #4
|
|
asrs r2, r0
|
|
mov r1, sb
|
|
ldr r0, [r1]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
mov r1, ip
|
|
lsls r1, r0
|
|
mov r3, r8
|
|
ands r1, r3
|
|
mov r3, sb
|
|
ldr r0, [r3]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
adds r0, #4
|
|
asrs r1, r0
|
|
cmp r2, r1
|
|
bne _080167F0
|
|
ldr r1, [sp, #0x10]
|
|
ldr r2, _080168A8 @ =IWRAM_START + 0x54
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080167F0
|
|
movs r3, #0
|
|
mov sl, r3
|
|
_080167F0:
|
|
adds r4, #4
|
|
adds r5, #1
|
|
cmp r5, #3
|
|
bhi _080167FE
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
bne _080167A8
|
|
_080167FE:
|
|
mov r4, sl
|
|
cmp r4, #0
|
|
beq _0801680C
|
|
bl sub_8019224
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
_0801680C:
|
|
ldr r0, _080168AC @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r2, #1
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
ldr r5, _080168B0 @ =gPlayer
|
|
mov ip, r5
|
|
cmp r0, #0
|
|
bne _08016910
|
|
ldr r0, [r7, #0x54]
|
|
ldr r1, _080168B4 @ =0x80000004
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016910
|
|
mov r0, ip
|
|
adds r0, #0x37
|
|
ldrb r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016838
|
|
b _08016956
|
|
_08016838:
|
|
ldr r0, [r7, #0x5c]
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08016910
|
|
mov r1, ip
|
|
movs r2, #0x2c
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, #0
|
|
bne _08016910
|
|
ldr r0, [r1, #0x20]
|
|
ldr r1, _080168B8 @ =0x00400080
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016910
|
|
ldr r0, _08016894 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
beq _080168F0
|
|
adds r0, r7, #0
|
|
adds r0, #0x56
|
|
ldrb r1, [r0]
|
|
ldr r0, _0801689C @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
cmp r1, r0
|
|
bne _08016870
|
|
b _08016A1A
|
|
_08016870:
|
|
ldr r0, _080168BC @ =gMultiplayerCharacters
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #4
|
|
bls _08016880
|
|
b _08016A1A
|
|
_08016880:
|
|
lsls r0, r0, #2
|
|
ldr r1, _080168C0 @ =_080168C4
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801688C: .4byte gPlayerCharacterIdleAnims
|
|
_08016890: .4byte gCamera
|
|
_08016894: .4byte gGameMode
|
|
_08016898: .4byte gUnknown_030054B4
|
|
_0801689C: .4byte 0x04000128
|
|
_080168A0: .4byte gMultiplayerPlayerTasks
|
|
_080168A4: .4byte gMultiplayerConnections
|
|
_080168A8: .4byte IWRAM_START + 0x54
|
|
_080168AC: .4byte gUnknown_03005424
|
|
_080168B0: .4byte gPlayer
|
|
_080168B4: .4byte 0x80000004
|
|
_080168B8: .4byte 0x00400080
|
|
_080168BC: .4byte gMultiplayerCharacters
|
|
_080168C0: .4byte _080168C4
|
|
_080168C4: @ jump table
|
|
.4byte _080168E4 @ case 0
|
|
.4byte _080168E4 @ case 1
|
|
.4byte _080168D8 @ case 2
|
|
.4byte _080168DE @ case 3
|
|
.4byte _080168EA @ case 4
|
|
_080168D8:
|
|
bl sub_801707C
|
|
b _08016A1A
|
|
_080168DE:
|
|
bl sub_8017670
|
|
b _08016A1A
|
|
_080168E4:
|
|
bl sub_8016D20
|
|
b _08016A1A
|
|
_080168EA:
|
|
bl sub_8017C28
|
|
b _08016A1A
|
|
_080168F0:
|
|
adds r1, r7, #0
|
|
adds r1, #0x56
|
|
ldr r0, _0801690C @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
ldrb r1, [r1]
|
|
lsrs r0, r0, #0x1e
|
|
cmp r1, r0
|
|
bne _08016904
|
|
b _08016A1A
|
|
_08016904:
|
|
bl sub_8018120
|
|
b _08016A1A
|
|
.align 2, 0
|
|
_0801690C: .4byte 0x04000128
|
|
_08016910:
|
|
mov r0, ip
|
|
adds r0, #0x37
|
|
ldrb r1, [r0]
|
|
movs r2, #0x80
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016956
|
|
adds r0, r7, #0
|
|
adds r0, #0x57
|
|
ldrb r1, [r0]
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016956
|
|
mov r3, ip
|
|
movs r4, #0x2c
|
|
ldrsh r0, [r3, r4]
|
|
cmp r0, #0
|
|
bne _08016956
|
|
ldr r0, [r3, #0x20]
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08016956
|
|
ldr r1, _080169DC @ =gUnknown_030054B4
|
|
adds r0, r7, #0
|
|
adds r0, #0x56
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
movs r1, #0
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
beq _08016A1A
|
|
_08016956:
|
|
ldr r0, _080169E0 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
beq _080169F4
|
|
adds r4, r7, #0
|
|
adds r4, #0x56
|
|
ldrb r1, [r4]
|
|
ldr r0, _080169E4 @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
cmp r1, r0
|
|
beq _080169BC
|
|
ldr r0, _080169E8 @ =gMultiplayerCharacters
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
bgt _080169BC
|
|
cmp r0, #2
|
|
blt _080169BC
|
|
ldr r1, [r7, #0x5c]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080169BC
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
str r1, [r7, #0x5c]
|
|
ldr r2, _080169EC @ =gPlayer
|
|
adds r0, r2, #0
|
|
adds r0, #0x37
|
|
ldrb r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080169AC
|
|
ldr r0, [r2, #0x20]
|
|
ldr r1, _080169F0 @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
_080169AC:
|
|
bl sub_8019224
|
|
movs r2, #0
|
|
movs r1, #8
|
|
strb r1, [r0]
|
|
ldrb r1, [r4]
|
|
strb r1, [r0, #1]
|
|
strb r2, [r0, #2]
|
|
_080169BC:
|
|
ldr r2, _080169EC @ =gPlayer
|
|
ldr r1, [r2, #0x20]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016A1A
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r6
|
|
bne _08016A1A
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
movs r0, #2
|
|
orrs r1, r0
|
|
str r1, [r2, #0x20]
|
|
b _08016A12
|
|
.align 2, 0
|
|
_080169DC: .4byte gUnknown_030054B4
|
|
_080169E0: .4byte gGameMode
|
|
_080169E4: .4byte 0x04000128
|
|
_080169E8: .4byte gMultiplayerCharacters
|
|
_080169EC: .4byte gPlayer
|
|
_080169F0: .4byte 0xFFBFFFFF
|
|
_080169F4:
|
|
mov r5, ip
|
|
ldr r1, [r5, #0x20]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016A1A
|
|
ldr r0, [r5, #0x3c]
|
|
cmp r0, r6
|
|
bne _08016A1A
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
movs r0, #2
|
|
orrs r1, r0
|
|
str r1, [r5, #0x20]
|
|
_08016A12:
|
|
adds r1, r7, #0
|
|
adds r1, #0x60
|
|
movs r0, #0x1e
|
|
strb r0, [r1]
|
|
_08016A1A:
|
|
ldr r0, [sp, #0xc]
|
|
ldrh r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016A86
|
|
ldr r0, [r6, #0x10]
|
|
movs r1, #0x20
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r6, #0x10]
|
|
ldr r2, _08016A5C @ =gUnknown_030054B8
|
|
ldrb r1, [r2]
|
|
adds r0, r1, #1
|
|
strb r0, [r2]
|
|
movs r0, #0x20
|
|
orrs r1, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
ldr r0, [r6, #0x10]
|
|
orrs r0, r1
|
|
str r0, [r6, #0x10]
|
|
ldr r2, [sp, #0xc]
|
|
ldrh r1, [r2]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016A60
|
|
movs r0, #0xff
|
|
lsls r0, r0, #8
|
|
ldr r3, [sp]
|
|
strh r0, [r3, #2]
|
|
b _08016A68
|
|
.align 2, 0
|
|
_08016A5C: .4byte gUnknown_030054B8
|
|
_08016A60:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
ldr r4, [sp]
|
|
strh r0, [r4, #2]
|
|
_08016A68:
|
|
ldr r5, [sp, #0xc]
|
|
ldrh r1, [r5]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016A7C
|
|
ldr r1, [sp]
|
|
ldrh r0, [r1, #2]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r1, #2]
|
|
_08016A7C:
|
|
adds r0, r6, #0
|
|
ldr r1, [sp]
|
|
bl sub_8004860
|
|
b _08016ACC
|
|
_08016A86:
|
|
ldr r2, [r6, #0x10]
|
|
movs r0, #0x21
|
|
rsbs r0, r0, #0
|
|
ands r2, r0
|
|
str r2, [r6, #0x10]
|
|
ldr r3, [sp, #0xc]
|
|
ldrh r1, [r3]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016AA4
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
orrs r2, r0
|
|
b _08016AA8
|
|
_08016AA4:
|
|
ldr r0, _08016AC0 @ =0xFFFFFBFF
|
|
ands r2, r0
|
|
_08016AA8:
|
|
str r2, [r6, #0x10]
|
|
ldr r4, [sp, #0xc]
|
|
ldrh r1, [r4]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016AC4
|
|
ldr r0, [r6, #0x10]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #4
|
|
orrs r0, r1
|
|
b _08016ACA
|
|
.align 2, 0
|
|
_08016AC0: .4byte 0xFFFFFBFF
|
|
_08016AC4:
|
|
ldr r0, [r6, #0x10]
|
|
ldr r1, _08016C0C @ =0xFFFFF7FF
|
|
ands r0, r1
|
|
_08016ACA:
|
|
str r0, [r6, #0x10]
|
|
_08016ACC:
|
|
ldr r1, [r6, #0x10]
|
|
ldr r0, _08016C10 @ =0xFFFFCFFF
|
|
ands r1, r0
|
|
str r1, [r6, #0x10]
|
|
ldr r5, [sp, #0xc]
|
|
ldrh r2, [r5]
|
|
movs r0, #0x30
|
|
ands r0, r2
|
|
lsls r0, r0, #8
|
|
orrs r1, r0
|
|
str r1, [r6, #0x10]
|
|
ldrh r3, [r5]
|
|
movs r0, #0x40
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _08016AEE
|
|
b _08016CE8
|
|
_08016AEE:
|
|
ldr r0, _08016C14 @ =gStageTime
|
|
ldr r0, [r0]
|
|
movs r4, #2
|
|
ands r0, r4
|
|
movs r1, #0x57
|
|
adds r1, r1, r7
|
|
mov sb, r1
|
|
cmp r0, #0
|
|
bne _08016B48
|
|
ldrb r1, [r1]
|
|
movs r0, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016B48
|
|
ldr r2, [r7, #0x5c]
|
|
movs r0, #1
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08016B48
|
|
ldr r1, _08016C18 @ =gUnknown_030054B4
|
|
adds r0, r7, #0
|
|
adds r0, #0x56
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
movs r1, #0
|
|
ldrsb r1, [r0, r1]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
bne _08016B48
|
|
adds r0, r7, #0
|
|
adds r0, #0x60
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _08016B36
|
|
b _08016CE8
|
|
_08016B36:
|
|
movs r0, #4
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _08016B40
|
|
b _08016CE8
|
|
_08016B40:
|
|
ands r2, r4
|
|
cmp r2, #0
|
|
beq _08016B48
|
|
b _08016CE8
|
|
_08016B48:
|
|
ldr r2, [sp, #0xc]
|
|
ldrh r1, [r2]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
movs r3, #0x80
|
|
lsls r3, r3, #3
|
|
adds r1, r3, #0
|
|
cmp r0, #0
|
|
beq _08016B60
|
|
movs r4, #0x88
|
|
lsls r4, r4, #3
|
|
adds r1, r4, #0
|
|
_08016B60:
|
|
strh r1, [r6, #0x1a]
|
|
ldr r5, [r6, #0x10]
|
|
ldr r0, _08016C1C @ =0xFFFFFE7F
|
|
ands r5, r0
|
|
str r5, [r6, #0x10]
|
|
mov r0, sb
|
|
ldrb r1, [r0]
|
|
movs r0, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016BE6
|
|
ldr r0, _08016C20 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #4
|
|
bne _08016BAE
|
|
ldr r0, _08016C24 @ =gMultiplayerConnections
|
|
ldrb r3, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x56
|
|
ldrb r0, [r0]
|
|
movs r2, #0x10
|
|
adds r1, r2, #0
|
|
lsls r1, r0
|
|
ands r1, r3
|
|
adds r0, #4
|
|
asrs r1, r0
|
|
ldr r4, _08016C28 @ =0x04000128
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
lsls r2, r0
|
|
ands r3, r2
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
adds r0, #4
|
|
asrs r3, r0
|
|
cmp r1, r3
|
|
beq _08016BE6
|
|
_08016BAE:
|
|
adds r0, r7, #0
|
|
adds r0, #0x60
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08016BE6
|
|
adds r1, r7, #0
|
|
adds r1, #0x56
|
|
ldr r0, _08016C28 @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
ldrb r1, [r1]
|
|
lsrs r0, r0, #0x1e
|
|
cmp r1, r0
|
|
beq _08016BE6
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
orrs r5, r0
|
|
str r5, [r6, #0x10]
|
|
ldr r2, _08016C2C @ =gDispCnt
|
|
ldrh r0, [r2]
|
|
movs r3, #0x80
|
|
lsls r3, r3, #8
|
|
adds r1, r3, #0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
ldr r1, _08016C30 @ =gWinRegs
|
|
ldr r0, _08016C34 @ =0x0000083F
|
|
strh r0, [r1, #0xa]
|
|
_08016BE6:
|
|
ldrh r0, [r6, #0x16]
|
|
adds r0, #0x3f
|
|
lsls r0, r0, #0x10
|
|
movs r1, #0xb7
|
|
lsls r1, r1, #0x11
|
|
cmp r0, r1
|
|
bhi _08016C38
|
|
movs r4, #0x18
|
|
ldrsh r1, [r6, r4]
|
|
movs r0, #0x40
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
ble _08016C38
|
|
cmp r1, #0xdf
|
|
bgt _08016C38
|
|
adds r0, r6, #0
|
|
bl DisplaySprite
|
|
b _08016CE8
|
|
.align 2, 0
|
|
_08016C0C: .4byte 0xFFFFF7FF
|
|
_08016C10: .4byte 0xFFFFCFFF
|
|
_08016C14: .4byte gStageTime
|
|
_08016C18: .4byte gUnknown_030054B4
|
|
_08016C1C: .4byte 0xFFFFFE7F
|
|
_08016C20: .4byte gGameMode
|
|
_08016C24: .4byte gMultiplayerConnections
|
|
_08016C28: .4byte 0x04000128
|
|
_08016C2C: .4byte gDispCnt
|
|
_08016C30: .4byte gWinRegs
|
|
_08016C34: .4byte 0x0000083F
|
|
_08016C38:
|
|
ldr r0, _08016C78 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
bne _08016CE8
|
|
ldr r0, _08016C7C @ =gCamera
|
|
movs r5, #0x16
|
|
ldrsh r1, [r6, r5]
|
|
ldr r0, [r0]
|
|
adds r0, r0, r1
|
|
movs r1, #0xf0
|
|
lsls r1, r1, #2
|
|
cmp r0, r1
|
|
ble _08016C88
|
|
ldr r1, _08016C80 @ =0xFFFFFA60
|
|
adds r0, r1, #0
|
|
ldrh r2, [r6, #0x16]
|
|
adds r1, r0, r2
|
|
strh r1, [r6, #0x16]
|
|
ldr r3, [sp]
|
|
ldrh r3, [r3, #6]
|
|
adds r0, r0, r3
|
|
ldr r4, [sp]
|
|
strh r0, [r4, #6]
|
|
ldr r5, _08016C84 @ =0xFFFFFCA0
|
|
adds r0, r5, #0
|
|
ldrh r2, [r6, #0x18]
|
|
adds r1, r0, r2
|
|
strh r1, [r6, #0x18]
|
|
ldrh r3, [r4, #8]
|
|
adds r0, r0, r3
|
|
strh r0, [r4, #8]
|
|
b _08016CB0
|
|
.align 2, 0
|
|
_08016C78: .4byte gGameMode
|
|
_08016C7C: .4byte gCamera
|
|
_08016C80: .4byte 0xFFFFFA60
|
|
_08016C84: .4byte 0xFFFFFCA0
|
|
_08016C88:
|
|
movs r4, #0xb4
|
|
lsls r4, r4, #3
|
|
adds r0, r4, #0
|
|
ldrh r5, [r6, #0x16]
|
|
adds r1, r0, r5
|
|
strh r1, [r6, #0x16]
|
|
ldr r1, [sp]
|
|
ldrh r1, [r1, #6]
|
|
adds r0, r0, r1
|
|
ldr r2, [sp]
|
|
strh r0, [r2, #6]
|
|
movs r3, #0xd8
|
|
lsls r3, r3, #2
|
|
adds r0, r3, #0
|
|
ldrh r4, [r6, #0x18]
|
|
adds r1, r0, r4
|
|
strh r1, [r6, #0x18]
|
|
ldrh r5, [r2, #8]
|
|
adds r0, r0, r5
|
|
strh r0, [r2, #8]
|
|
_08016CB0:
|
|
ldrh r0, [r6, #0x16]
|
|
adds r0, #0x3f
|
|
lsls r0, r0, #0x10
|
|
movs r1, #0xb7
|
|
lsls r1, r1, #0x11
|
|
cmp r0, r1
|
|
bhi _08016CE8
|
|
movs r0, #0x18
|
|
ldrsh r1, [r6, r0]
|
|
movs r0, #0x40
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
ble _08016CE8
|
|
cmp r1, #0xdf
|
|
bgt _08016CE8
|
|
ldr r2, [sp, #0xc]
|
|
ldrh r1, [r2]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016CE2
|
|
adds r0, r6, #0
|
|
ldr r1, [sp]
|
|
bl sub_8004860
|
|
_08016CE2:
|
|
adds r0, r6, #0
|
|
bl DisplaySprite
|
|
_08016CE8:
|
|
ldr r4, _08016D18 @ =gUnknown_03005B7C
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
beq _08016CF8
|
|
bl sub_8087368
|
|
movs r0, #0
|
|
strb r0, [r4]
|
|
_08016CF8:
|
|
ldr r4, _08016D1C @ =gUnknown_0300583C
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
beq _08016D08
|
|
bl sub_801A384
|
|
movs r0, #0
|
|
strb r0, [r4]
|
|
_08016D08:
|
|
add sp, #0x14
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08016D18: .4byte gUnknown_03005B7C
|
|
_08016D1C: .4byte gUnknown_0300583C
|
|
|
|
thumb_func_start sub_8016D20
|
|
sub_8016D20: @ 0x08016D20
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
sub sp, #0xc
|
|
ldr r2, _08016DB8 @ =gPlayer
|
|
adds r0, r2, #0
|
|
adds r0, #0x90
|
|
ldr r0, [r0]
|
|
adds r5, r0, #0
|
|
adds r5, #0xc
|
|
ldr r0, _08016DBC @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r6, r1, r0
|
|
mov r8, r6
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016D58
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r6
|
|
bne _08016D58
|
|
bl sub_8017F34
|
|
_08016D58:
|
|
ldr r0, _08016DC0 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #4
|
|
bne _08016D90
|
|
ldr r0, _08016DC4 @ =gMultiplayerConnections
|
|
ldrb r3, [r0]
|
|
adds r0, r6, #0
|
|
adds r0, #0x56
|
|
ldrb r0, [r0]
|
|
movs r2, #0x10
|
|
adds r1, r2, #0
|
|
lsls r1, r0
|
|
ands r1, r3
|
|
adds r0, #4
|
|
asrs r1, r0
|
|
ldr r4, _08016DC8 @ =0x04000128
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
lsls r2, r0
|
|
ands r3, r2
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
adds r0, #4
|
|
asrs r3, r0
|
|
cmp r1, r3
|
|
beq _08016DCC
|
|
_08016D90:
|
|
bl sub_8018300
|
|
cmp r0, #0
|
|
bne _08016D9A
|
|
b _0801706A
|
|
_08016D9A:
|
|
ldr r0, [r6, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016DA6
|
|
b _0801706A
|
|
_08016DA6:
|
|
ldr r2, _08016DB8 @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0
|
|
str r0, [r6, #0x4c]
|
|
b _0801706A
|
|
.align 2, 0
|
|
_08016DB8: .4byte gPlayer
|
|
_08016DBC: .4byte gCurTask
|
|
_08016DC0: .4byte gGameMode
|
|
_08016DC4: .4byte gMultiplayerConnections
|
|
_08016DC8: .4byte 0x04000128
|
|
_08016DCC:
|
|
adds r1, r6, #0
|
|
adds r1, #0x60
|
|
ldrb r0, [r1]
|
|
adds r4, r0, #0
|
|
mov sb, r1
|
|
cmp r4, #0
|
|
beq _08016DDC
|
|
b _08017002
|
|
_08016DDC:
|
|
bl sub_80181E0
|
|
cmp r0, #0
|
|
beq _08016E9E
|
|
ldr r0, [r6, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016DFC
|
|
ldr r0, _08016E5C @ =gPlayer
|
|
ldr r1, [r0, #0x20]
|
|
movs r2, #0x21
|
|
rsbs r2, r2, #0
|
|
ands r1, r2
|
|
str r1, [r0, #0x20]
|
|
str r4, [r6, #0x4c]
|
|
_08016DFC:
|
|
mov r1, r8
|
|
ldrh r0, [r1, #0xa]
|
|
cmp r0, #3
|
|
beq _08016E06
|
|
b _0801706A
|
|
_08016E06:
|
|
ldr r3, _08016E5C @ =gPlayer
|
|
adds r1, r3, #0
|
|
adds r1, #0x64
|
|
movs r2, #0
|
|
movs r0, #9
|
|
strh r0, [r1]
|
|
ldr r0, _08016E60 @ =PlayerCB_8025318
|
|
str r0, [r3]
|
|
adds r0, r3, #0
|
|
adds r0, #0x61
|
|
strb r2, [r0]
|
|
adds r0, #1
|
|
strb r2, [r0]
|
|
ldr r1, [r3, #0x20]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
adds r2, r3, #0
|
|
cmp r0, #0
|
|
beq _08016E3E
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r8
|
|
bne _08016E3E
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
movs r0, #2
|
|
orrs r1, r0
|
|
str r1, [r2, #0x20]
|
|
_08016E3E:
|
|
ldr r0, _08016E64 @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016E68
|
|
ldr r0, [r2, #0xc]
|
|
asrs r0, r0, #8
|
|
adds r1, r6, #0
|
|
adds r1, #0x52
|
|
movs r3, #0
|
|
ldrsh r1, [r1, r3]
|
|
cmp r0, r1
|
|
ble _08016E7A
|
|
b _08016FBC
|
|
.align 2, 0
|
|
_08016E5C: .4byte gPlayer
|
|
_08016E60: .4byte PlayerCB_8025318
|
|
_08016E64: .4byte gUnknown_03005424
|
|
_08016E68:
|
|
ldr r0, [r2, #0xc]
|
|
asrs r0, r0, #8
|
|
adds r1, r6, #0
|
|
adds r1, #0x52
|
|
movs r3, #0
|
|
ldrsh r1, [r1, r3]
|
|
cmp r0, r1
|
|
bge _08016E7A
|
|
b _08016FBC
|
|
_08016E7A:
|
|
mov r1, r8
|
|
ldr r0, [r1, #0x10]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #3
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016E8A
|
|
b _08016FE6
|
|
_08016E8A:
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #2
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
subs r1, #0x1f
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #4
|
|
b _08016FF6
|
|
_08016E9E:
|
|
ldr r0, [r5, #0x30]
|
|
movs r1, #1
|
|
rsbs r1, r1, #0
|
|
cmp r0, r1
|
|
beq _08016EB2
|
|
mov r3, r8
|
|
ldr r0, [r3, #0x30]
|
|
cmp r0, r1
|
|
beq _08016EB2
|
|
b _0801706A
|
|
_08016EB2:
|
|
ldr r7, _08016FA0 @ =gPlayer
|
|
adds r0, r7, #0
|
|
adds r0, #0x61
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08016ED4
|
|
adds r0, r7, #0
|
|
adds r0, #0x85
|
|
ldrb r0, [r0]
|
|
subs r0, #2
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bhi _08016ED4
|
|
b _0801706A
|
|
_08016ED4:
|
|
adds r0, r6, #0
|
|
adds r0, #0x50
|
|
movs r4, #0
|
|
ldrsh r1, [r0, r4]
|
|
adds r5, r6, #0
|
|
adds r5, #0x52
|
|
movs r0, #0
|
|
ldrsh r2, [r5, r0]
|
|
adds r0, r6, #0
|
|
adds r0, #0x66
|
|
movs r4, #0
|
|
ldrsh r3, [r0, r4]
|
|
adds r0, #2
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
str r0, [sp]
|
|
adds r0, r6, #0
|
|
adds r0, #0x54
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
mov r0, r8
|
|
bl sub_800D0A0
|
|
adds r2, r0, #0
|
|
ldr r0, [r6, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016F26
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016F26
|
|
ldr r0, [r7, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r7, #0x20]
|
|
_08016F26:
|
|
str r2, [r6, #0x4c]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xe
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _08016F38
|
|
movs r0, #0x1e
|
|
mov r1, sb
|
|
strb r0, [r1]
|
|
_08016F38:
|
|
ldr r0, _08016FA4 @ =0x00010028
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08016F42
|
|
b _0801706A
|
|
_08016F42:
|
|
mov r2, r8
|
|
ldrh r0, [r2, #0xa]
|
|
cmp r0, #3
|
|
beq _08016F4C
|
|
b _0801706A
|
|
_08016F4C:
|
|
ldr r3, _08016FA0 @ =gPlayer
|
|
adds r1, r3, #0
|
|
adds r1, #0x64
|
|
movs r2, #0
|
|
movs r0, #9
|
|
strh r0, [r1]
|
|
ldr r0, _08016FA8 @ =PlayerCB_8025318
|
|
str r0, [r3]
|
|
adds r0, r3, #0
|
|
adds r0, #0x61
|
|
strb r2, [r0]
|
|
adds r0, #1
|
|
strb r2, [r0]
|
|
ldr r1, [r3, #0x20]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
adds r2, r3, #0
|
|
cmp r0, #0
|
|
beq _08016F84
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r8
|
|
bne _08016F84
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
movs r0, #2
|
|
orrs r1, r0
|
|
str r1, [r2, #0x20]
|
|
_08016F84:
|
|
ldr r0, _08016FAC @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08016FB0
|
|
ldr r0, [r2, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r3, #0
|
|
ldrsh r1, [r5, r3]
|
|
cmp r0, r1
|
|
ble _08016FC4
|
|
b _08016FBC
|
|
.align 2, 0
|
|
_08016FA0: .4byte gPlayer
|
|
_08016FA4: .4byte 0x00010028
|
|
_08016FA8: .4byte PlayerCB_8025318
|
|
_08016FAC: .4byte gUnknown_03005424
|
|
_08016FB0:
|
|
ldr r0, [r2, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r3, #0
|
|
ldrsh r1, [r5, r3]
|
|
cmp r0, r1
|
|
bge _08016FC4
|
|
_08016FBC:
|
|
movs r0, #0x1e
|
|
mov r4, sb
|
|
strb r0, [r4]
|
|
b _0801706A
|
|
_08016FC4:
|
|
mov r1, r8
|
|
ldr r0, [r1, #0x10]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #3
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08016FE6
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #2
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
subs r1, #0x1f
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #4
|
|
b _08016FF6
|
|
_08016FE6:
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
subs r1, #0x22
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0xf4
|
|
lsls r0, r0, #8
|
|
_08016FF6:
|
|
strh r0, [r2, #0x14]
|
|
strh r0, [r2, #0x10]
|
|
movs r0, #0x1e
|
|
mov r2, sb
|
|
strb r0, [r2]
|
|
b _0801706A
|
|
_08017002:
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
ldr r5, _08017078 @ =gPlayer
|
|
ldr r0, [r5, #0x20]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0801706A
|
|
ldr r0, [r5, #0x3c]
|
|
cmp r0, r8
|
|
bne _0801706A
|
|
adds r0, r6, #0
|
|
adds r0, #0x50
|
|
movs r3, #0
|
|
ldrsh r1, [r0, r3]
|
|
adds r0, #2
|
|
movs r4, #0
|
|
ldrsh r2, [r0, r4]
|
|
adds r0, #0x14
|
|
movs r4, #0
|
|
ldrsh r3, [r0, r4]
|
|
adds r0, #2
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
str r0, [sp]
|
|
adds r0, r6, #0
|
|
adds r0, #0x54
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
mov r0, r8
|
|
bl sub_800D0A0
|
|
adds r2, r0, #0
|
|
ldr r0, [r6, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017068
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017068
|
|
ldr r0, [r5, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r5, #0x20]
|
|
_08017068:
|
|
str r2, [r6, #0x4c]
|
|
_0801706A:
|
|
add sp, #0xc
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08017078: .4byte gPlayer
|
|
|
|
thumb_func_start sub_801707C
|
|
sub_801707C: @ 0x0801707C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x2c
|
|
ldr r2, _08017128 @ =gPlayer
|
|
adds r0, r2, #0
|
|
adds r0, #0x90
|
|
ldr r0, [r0]
|
|
adds r0, #0xc
|
|
mov sb, r0
|
|
movs r0, #0
|
|
str r0, [sp, #0x14]
|
|
ldr r0, _0801712C @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r7, r1, r0
|
|
str r7, [sp, #0x10]
|
|
ldr r1, [r2, #0x20]
|
|
lsrs r3, r1, #5
|
|
movs r0, #1
|
|
ands r3, r0
|
|
str r3, [sp, #0x18]
|
|
movs r0, #8
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _080170C6
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r7
|
|
bne _080170C6
|
|
bl sub_8017F34
|
|
movs r4, #1
|
|
str r4, [sp, #0x14]
|
|
_080170C6:
|
|
ldr r0, _08017130 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
mov r8, r0
|
|
cmp r0, #4
|
|
bne _08017102
|
|
ldr r0, _08017134 @ =gMultiplayerConnections
|
|
ldrb r3, [r0]
|
|
adds r5, r7, #0
|
|
adds r5, #0x56
|
|
ldrb r0, [r5]
|
|
movs r2, #0x10
|
|
adds r1, r2, #0
|
|
lsls r1, r0
|
|
ands r1, r3
|
|
adds r0, #4
|
|
asrs r1, r0
|
|
ldr r4, _08017138 @ =0x04000128
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
lsls r2, r0
|
|
ands r3, r2
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
adds r0, #4
|
|
asrs r3, r0
|
|
str r5, [sp, #0x24]
|
|
cmp r1, r3
|
|
beq _0801713C
|
|
_08017102:
|
|
bl sub_8018300
|
|
cmp r0, #0
|
|
bne _0801710C
|
|
b _0801765E
|
|
_0801710C:
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017118
|
|
b _0801765E
|
|
_08017118:
|
|
ldr r2, _08017128 @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0
|
|
str r0, [r7, #0x4c]
|
|
b _0801765E
|
|
.align 2, 0
|
|
_08017128: .4byte gPlayer
|
|
_0801712C: .4byte gCurTask
|
|
_08017130: .4byte gGameMode
|
|
_08017134: .4byte gMultiplayerConnections
|
|
_08017138: .4byte 0x04000128
|
|
_0801713C:
|
|
ldr r6, _080171A8 @ =gPlayer
|
|
adds r0, r6, #0
|
|
adds r0, #0x61
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0801715C
|
|
adds r0, r6, #0
|
|
adds r0, #0x85
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
bne _0801715C
|
|
b _0801765E
|
|
_0801715C:
|
|
adds r1, r7, #0
|
|
adds r1, #0x60
|
|
ldrb r0, [r1]
|
|
str r1, [sp, #0x28]
|
|
cmp r0, #0
|
|
beq _08017174
|
|
ldr r5, [r7, #0x5c]
|
|
mov r2, r8
|
|
ands r5, r2
|
|
cmp r5, #0
|
|
bne _08017174
|
|
b _080175F8
|
|
_08017174:
|
|
movs r4, #0
|
|
strb r4, [r1]
|
|
ldr r3, [sp, #0x10]
|
|
ldrh r0, [r3, #0xa]
|
|
subs r0, #0xca
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #2
|
|
bls _080171CE
|
|
bl sub_80181E0
|
|
cmp r0, #0
|
|
beq _080171AC
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801719A
|
|
b _0801765E
|
|
_0801719A:
|
|
ldr r0, [r6, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
str r4, [r7, #0x4c]
|
|
b _0801765E
|
|
.align 2, 0
|
|
_080171A8: .4byte gPlayer
|
|
_080171AC:
|
|
ldr r4, [sp, #0x10]
|
|
ldrh r0, [r4, #0xa]
|
|
subs r0, #0xca
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #2
|
|
bls _080171CE
|
|
mov r5, sb
|
|
ldr r0, [r5, #0x30]
|
|
movs r1, #1
|
|
rsbs r1, r1, #0
|
|
cmp r0, r1
|
|
beq _080171CE
|
|
ldr r0, [r4, #0x30]
|
|
cmp r0, r1
|
|
beq _080171CE
|
|
b _0801765E
|
|
_080171CE:
|
|
ldr r0, _080172C8 @ =gPlayer
|
|
mov sl, r0
|
|
ldr r0, [r0, #0x20]
|
|
lsrs r0, r0, #1
|
|
mov sb, r0
|
|
movs r4, #1
|
|
mov r1, sb
|
|
ands r1, r4
|
|
mov sb, r1
|
|
movs r2, #0x50
|
|
adds r2, r2, r7
|
|
mov r8, r2
|
|
movs r3, #0
|
|
ldrsh r1, [r2, r3]
|
|
adds r6, r7, #0
|
|
adds r6, #0x52
|
|
movs r5, #0
|
|
ldrsh r2, [r6, r5]
|
|
adds r0, r7, #0
|
|
adds r0, #0x66
|
|
movs r5, #0
|
|
ldrsh r3, [r0, r5]
|
|
adds r0, #2
|
|
movs r5, #0
|
|
ldrsh r0, [r0, r5]
|
|
str r0, [sp]
|
|
adds r5, r7, #0
|
|
adds r5, #0x54
|
|
ldrh r0, [r5]
|
|
lsrs r0, r0, #7
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
ldr r0, [sp, #0x10]
|
|
bl sub_800D0A0
|
|
adds r2, r0, #0
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
mov r3, r8
|
|
str r3, [sp, #0x1c]
|
|
str r5, [sp, #0x20]
|
|
cmp r0, #0
|
|
beq _0801723A
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801723A
|
|
mov r4, sl
|
|
ldr r0, [r4, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r4, #0x20]
|
|
_0801723A:
|
|
str r2, [r7, #0x4c]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xe
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0801724C
|
|
movs r0, #0x1e
|
|
ldr r5, [sp, #0x28]
|
|
strb r0, [r5]
|
|
_0801724C:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017258
|
|
b _0801738A
|
|
_08017258:
|
|
mov r0, sb
|
|
cmp r0, #0
|
|
bne _08017266
|
|
ldr r1, [sp, #0x14]
|
|
cmp r1, #0
|
|
bne _08017266
|
|
b _0801737E
|
|
_08017266:
|
|
ldr r0, _080172CC @ =0x00010028
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08017270
|
|
b _0801737E
|
|
_08017270:
|
|
ldr r2, [sp, #0x10]
|
|
ldrh r0, [r2, #0xa]
|
|
subs r0, #0xca
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #2
|
|
bls _08017280
|
|
b _0801737E
|
|
_08017280:
|
|
ldr r0, _080172D0 @ =gUnknown_03005424
|
|
ldrh r3, [r0]
|
|
lsrs r2, r3, #7
|
|
movs r1, #1
|
|
ands r2, r1
|
|
ldr r4, [sp, #0x20]
|
|
ldrh r0, [r4]
|
|
lsrs r0, r0, #3
|
|
bics r1, r0
|
|
cmp r2, r1
|
|
beq _0801737E
|
|
movs r0, #0x80
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
bne _080172D8
|
|
ldr r2, _080172C8 @ =gPlayer
|
|
ldr r0, [r2, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r5, #0
|
|
ldrsh r1, [r6, r5]
|
|
cmp r1, r0
|
|
bge _080172AE
|
|
adds r1, r0, #0
|
|
_080172AE:
|
|
movs r0, #0x17
|
|
ldrsb r0, [r2, r0]
|
|
adds r0, r1, r0
|
|
ldr r1, [r2, #8]
|
|
asrs r1, r1, #8
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
add r3, sp, #0xc
|
|
str r3, [sp]
|
|
ldr r3, _080172D4 @ =sub_801EE64
|
|
str r3, [sp, #4]
|
|
movs r3, #8
|
|
b _08017302
|
|
.align 2, 0
|
|
_080172C8: .4byte gPlayer
|
|
_080172CC: .4byte 0x00010028
|
|
_080172D0: .4byte gUnknown_03005424
|
|
_080172D4: .4byte sub_801EE64
|
|
_080172D8:
|
|
ldr r2, _08017364 @ =gPlayer
|
|
ldr r0, [r2, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r4, #0
|
|
ldrsh r1, [r6, r4]
|
|
cmp r1, r0
|
|
ble _080172E8
|
|
adds r1, r0, #0
|
|
_080172E8:
|
|
movs r0, #0x17
|
|
ldrsb r0, [r2, r0]
|
|
subs r0, r1, r0
|
|
ldr r1, [r2, #8]
|
|
asrs r1, r1, #8
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
movs r3, #8
|
|
rsbs r3, r3, #0
|
|
add r5, sp, #0xc
|
|
str r5, [sp]
|
|
ldr r4, _08017368 @ =sub_801EE64
|
|
str r4, [sp, #4]
|
|
_08017302:
|
|
bl sub_801E4E4
|
|
adds r1, r0, #0
|
|
ldr r4, _08017364 @ =gPlayer
|
|
movs r0, #0x17
|
|
ldrsb r0, [r4, r0]
|
|
subs r0, r1, r0
|
|
cmp r0, #0
|
|
ble _0801737E
|
|
ldr r0, [r4, #0x20]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xf
|
|
orrs r0, r1
|
|
movs r1, #9
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r4, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
orrs r0, r1
|
|
str r0, [r7, #0x5c]
|
|
adds r0, r4, #0
|
|
movs r1, #0xe
|
|
bl sub_8023B5C
|
|
movs r0, #6
|
|
strb r0, [r4, #0x16]
|
|
movs r0, #0xe
|
|
strb r0, [r4, #0x17]
|
|
bl sub_8019224
|
|
movs r1, #8
|
|
strb r1, [r0]
|
|
ldr r2, [sp, #0x24]
|
|
ldrb r1, [r2]
|
|
strb r1, [r0, #1]
|
|
movs r1, #1
|
|
strb r1, [r0, #2]
|
|
ldr r0, _0801736C @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017374
|
|
ldr r0, [r7, #0x5c]
|
|
ldr r1, _08017370 @ =0xFFFFFEFF
|
|
ands r0, r1
|
|
b _0801737C
|
|
.align 2, 0
|
|
_08017364: .4byte gPlayer
|
|
_08017368: .4byte sub_801EE64
|
|
_0801736C: .4byte gUnknown_03005424
|
|
_08017370: .4byte 0xFFFFFEFF
|
|
_08017374:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
orrs r0, r1
|
|
_0801737C:
|
|
str r0, [r7, #0x5c]
|
|
_0801737E:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801738A
|
|
b _0801765E
|
|
_0801738A:
|
|
ldr r3, _080173CC @ =gPlayer
|
|
mov r8, r3
|
|
mov r1, r8
|
|
adds r1, #0x64
|
|
movs r2, #0
|
|
movs r0, #0
|
|
strh r0, [r1]
|
|
ldr r0, _080173D0 @ =PlayerCB_8025318
|
|
mov r4, r8
|
|
str r0, [r4]
|
|
ldr r0, [r4, #0x20]
|
|
movs r5, #2
|
|
mov sb, r5
|
|
orrs r0, r5
|
|
str r0, [r4, #0x20]
|
|
mov r0, r8
|
|
adds r0, #0x61
|
|
strb r2, [r0]
|
|
adds r0, #1
|
|
strb r2, [r0]
|
|
mov r0, r8
|
|
bl sub_8029E6C
|
|
cmp r0, #0
|
|
beq _080173D8
|
|
movs r0, #0x1e
|
|
ldr r1, [sp, #0x28]
|
|
strb r0, [r1]
|
|
ldr r0, [r4, #0x20]
|
|
ldr r1, _080173D4 @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
str r0, [r4, #0x20]
|
|
b _0801749C
|
|
.align 2, 0
|
|
_080173CC: .4byte gPlayer
|
|
_080173D0: .4byte PlayerCB_8025318
|
|
_080173D4: .4byte 0xFFBFFFFF
|
|
_080173D8:
|
|
ldr r2, [sp, #0x10]
|
|
ldrh r0, [r2, #0xa]
|
|
subs r0, #0xca
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #2
|
|
bhi _08017426
|
|
mov r3, r8
|
|
ldr r0, [r3, #8]
|
|
asrs r1, r0, #8
|
|
ldr r2, _08017474 @ =gCamera
|
|
ldr r0, [r2, #0x30]
|
|
cmp r1, r0
|
|
ble _08017426
|
|
ldr r0, [r2, #0x34]
|
|
cmp r1, r0
|
|
bge _08017426
|
|
ldr r0, _08017478 @ =gUnknown_03005424
|
|
ldrh r5, [r0]
|
|
lsrs r0, r5, #7
|
|
movs r4, #1
|
|
adds r2, r4, #0
|
|
bics r2, r0
|
|
ldr r0, [sp, #0x20]
|
|
ldrh r1, [r0]
|
|
lsrs r1, r1, #3
|
|
adds r0, r4, #0
|
|
bics r0, r1
|
|
cmp r2, r0
|
|
bne _08017426
|
|
ldr r3, [r7, #0x5c]
|
|
lsrs r1, r3, #8
|
|
adds r0, r4, #0
|
|
bics r0, r1
|
|
cmp r0, r2
|
|
bne _08017426
|
|
ldr r1, [sp, #0x18]
|
|
cmp r1, #0
|
|
beq _08017488
|
|
_08017426:
|
|
ldr r4, _0801747C @ =gPlayer
|
|
ldr r0, [r4, #0x20]
|
|
ldr r1, _08017480 @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
str r0, [r4, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
adds r1, r4, #0
|
|
adds r1, #0x64
|
|
movs r0, #0
|
|
strh r0, [r1]
|
|
ldr r0, _08017484 @ =PlayerCB_8025318
|
|
str r0, [r4]
|
|
ldr r0, _08017478 @ =gUnknown_03005424
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r3, #1
|
|
adds r2, r3, #0
|
|
bics r2, r0
|
|
ldr r5, [sp, #0x20]
|
|
ldrh r1, [r5]
|
|
lsrs r1, r1, #3
|
|
adds r0, r3, #0
|
|
bics r0, r1
|
|
cmp r2, r0
|
|
bne _0801746E
|
|
ldr r1, [r7, #0x5c]
|
|
lsrs r1, r1, #8
|
|
adds r0, r3, #0
|
|
bics r0, r1
|
|
cmp r0, r2
|
|
bne _0801746E
|
|
b _080175A4
|
|
_0801746E:
|
|
movs r0, #0x3c
|
|
strh r0, [r4, #0x2c]
|
|
b _080175A4
|
|
.align 2, 0
|
|
_08017474: .4byte gCamera
|
|
_08017478: .4byte gUnknown_03005424
|
|
_0801747C: .4byte gPlayer
|
|
_08017480: .4byte 0xFFBFFFFF
|
|
_08017484: .4byte PlayerCB_8025318
|
|
_08017488:
|
|
mov r0, r8
|
|
ldr r1, [r0, #0x20]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080174AC
|
|
ldr r0, _080174A8 @ =0xFFBFFFFF
|
|
ands r1, r0
|
|
mov r2, r8
|
|
str r1, [r2, #0x20]
|
|
_0801749C:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
b _080175A4
|
|
.align 2, 0
|
|
_080174A8: .4byte 0xFFBFFFFF
|
|
_080174AC:
|
|
movs r0, #0x80
|
|
ands r0, r5
|
|
movs r1, #4
|
|
orrs r3, r1
|
|
str r3, [r7, #0x5c]
|
|
ldr r3, [sp, #0x1c]
|
|
movs r4, #0
|
|
ldrsh r1, [r3, r4]
|
|
lsls r5, r1, #8
|
|
cmp r0, #0
|
|
bne _0801751C
|
|
movs r1, #0
|
|
ldrsh r0, [r6, r1]
|
|
ldr r1, [sp, #0x10]
|
|
adds r1, #0x2f
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r0, r0, r1
|
|
adds r0, #0x11
|
|
lsls r6, r0, #8
|
|
mov r2, r8
|
|
ldr r0, [r2, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r1, #0x17
|
|
ldrsb r1, [r2, r1]
|
|
adds r0, r0, r1
|
|
ldr r1, [r2, #8]
|
|
asrs r1, r1, #8
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
add r3, sp, #0xc
|
|
str r3, [sp]
|
|
ldr r3, _08017514 @ =sub_801EE64
|
|
str r3, [sp, #4]
|
|
movs r3, #8
|
|
bl sub_801E4E4
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
bge _0801757A
|
|
lsls r0, r1, #8
|
|
adds r6, r6, r0
|
|
mov r4, r8
|
|
ldr r0, [r4, #0x20]
|
|
ldr r1, _08017518 @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
mov r1, sb
|
|
orrs r0, r1
|
|
str r0, [r4, #0x20]
|
|
b _08017570
|
|
.align 2, 0
|
|
_08017514: .4byte sub_801EE64
|
|
_08017518: .4byte 0xFFBFFFFF
|
|
_0801751C:
|
|
movs r2, #0
|
|
ldrsh r0, [r6, r2]
|
|
ldr r1, [sp, #0x10]
|
|
adds r1, #0x2d
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r0, r0, r1
|
|
subs r0, #0x11
|
|
lsls r6, r0, #8
|
|
mov r3, r8
|
|
ldr r0, [r3, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r1, #0x17
|
|
ldrsb r1, [r3, r1]
|
|
subs r0, r0, r1
|
|
ldr r1, [r3, #8]
|
|
asrs r1, r1, #8
|
|
mov r2, r8
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
movs r3, #8
|
|
rsbs r3, r3, #0
|
|
add r4, sp, #0xc
|
|
str r4, [sp]
|
|
ldr r4, _080175D8 @ =sub_801EE64
|
|
str r4, [sp, #4]
|
|
bl sub_801E4E4
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
bge _0801757A
|
|
lsls r0, r1, #8
|
|
subs r6, r6, r0
|
|
mov r1, r8
|
|
ldr r0, [r1, #0x20]
|
|
ldr r1, _080175DC @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
mov r2, sb
|
|
orrs r0, r2
|
|
mov r3, r8
|
|
str r0, [r3, #0x20]
|
|
_08017570:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
_0801757A:
|
|
ldr r0, _080175E0 @ =gPlayer
|
|
str r5, [r0, #8]
|
|
str r6, [r0, #0xc]
|
|
ldr r1, [r7, #0x5c]
|
|
movs r2, #4
|
|
ands r1, r2
|
|
adds r3, r0, #0
|
|
cmp r1, #0
|
|
beq _080175AE
|
|
movs r2, #0
|
|
strh r2, [r3, #0x10]
|
|
ldr r0, _080175E4 @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
strh r2, [r3, #0x12]
|
|
ldr r0, [r3, #0x20]
|
|
movs r1, #0x21
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r3, #0x20]
|
|
_080175A4:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080175C0
|
|
_080175AE:
|
|
bl sub_8019224
|
|
movs r2, #0
|
|
movs r1, #8
|
|
strb r1, [r0]
|
|
ldr r4, [sp, #0x24]
|
|
ldrb r1, [r4]
|
|
strb r1, [r0, #1]
|
|
strb r2, [r0, #2]
|
|
_080175C0:
|
|
ldr r0, _080175E4 @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080175EC
|
|
ldr r0, [r7, #0x5c]
|
|
ldr r1, _080175E8 @ =0xFFFFFEFF
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
b _0801765E
|
|
.align 2, 0
|
|
_080175D8: .4byte sub_801EE64
|
|
_080175DC: .4byte 0xFFBFFFFF
|
|
_080175E0: .4byte gPlayer
|
|
_080175E4: .4byte gUnknown_03005424
|
|
_080175E8: .4byte 0xFFFFFEFF
|
|
_080175EC:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
orrs r0, r1
|
|
str r0, [r7, #0x5c]
|
|
b _0801765E
|
|
_080175F8:
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, [r6, #0x20]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0801765E
|
|
ldr r0, [r6, #0x3c]
|
|
ldr r1, [sp, #0x10]
|
|
cmp r0, r1
|
|
bne _0801765E
|
|
adds r0, r7, #0
|
|
adds r0, #0x50
|
|
movs r2, #0
|
|
ldrsh r1, [r0, r2]
|
|
adds r0, #2
|
|
movs r3, #0
|
|
ldrsh r2, [r0, r3]
|
|
adds r0, #0x14
|
|
movs r4, #0
|
|
ldrsh r3, [r0, r4]
|
|
adds r0, #2
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
adds r0, #0x54
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
str r5, [sp, #8]
|
|
ldr r0, [sp, #0x10]
|
|
bl sub_800D0A0
|
|
adds r2, r0, #0
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0801765C
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801765C
|
|
ldr r0, [r6, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
_0801765C:
|
|
str r2, [r7, #0x4c]
|
|
_0801765E:
|
|
add sp, #0x2c
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_8017670
|
|
sub_8017670: @ 0x08017670
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x28
|
|
ldr r2, _08017718 @ =gPlayer
|
|
adds r0, r2, #0
|
|
adds r0, #0x90
|
|
ldr r0, [r0]
|
|
adds r0, #0xc
|
|
mov sl, r0
|
|
ldr r0, _0801771C @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r7, r1, r0
|
|
mov sb, r7
|
|
ldr r1, [r2, #0x20]
|
|
lsrs r0, r1, #5
|
|
str r0, [sp, #0x14]
|
|
movs r0, #1
|
|
ldr r3, [sp, #0x14]
|
|
ands r3, r0
|
|
str r3, [sp, #0x14]
|
|
movs r0, #8
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _080176B6
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r7
|
|
bne _080176B6
|
|
bl sub_8017F34
|
|
_080176B6:
|
|
ldr r0, _08017720 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
mov r8, r0
|
|
cmp r0, #4
|
|
bne _080176F2
|
|
ldr r0, _08017724 @ =gMultiplayerConnections
|
|
ldrb r3, [r0]
|
|
adds r5, r7, #0
|
|
adds r5, #0x56
|
|
ldrb r0, [r5]
|
|
movs r2, #0x10
|
|
adds r1, r2, #0
|
|
lsls r1, r0
|
|
ands r1, r3
|
|
adds r0, #4
|
|
asrs r1, r0
|
|
ldr r4, _08017728 @ =0x04000128
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
lsls r2, r0
|
|
ands r3, r2
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
adds r0, #4
|
|
asrs r3, r0
|
|
str r5, [sp, #0x20]
|
|
cmp r1, r3
|
|
beq _0801772C
|
|
_080176F2:
|
|
bl sub_8018300
|
|
cmp r0, #0
|
|
bne _080176FC
|
|
b _08017C18
|
|
_080176FC:
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017708
|
|
b _08017C18
|
|
_08017708:
|
|
ldr r2, _08017718 @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0
|
|
str r0, [r7, #0x4c]
|
|
b _08017C18
|
|
.align 2, 0
|
|
_08017718: .4byte gPlayer
|
|
_0801771C: .4byte gCurTask
|
|
_08017720: .4byte gGameMode
|
|
_08017724: .4byte gMultiplayerConnections
|
|
_08017728: .4byte 0x04000128
|
|
_0801772C:
|
|
ldr r6, _0801779C @ =gPlayer
|
|
adds r0, r6, #0
|
|
adds r0, #0x61
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0801774C
|
|
adds r0, r6, #0
|
|
adds r0, #0x85
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #2
|
|
bne _0801774C
|
|
b _08017C18
|
|
_0801774C:
|
|
adds r1, r7, #0
|
|
adds r1, #0x60
|
|
ldrb r0, [r1]
|
|
str r1, [sp, #0x24]
|
|
cmp r0, #0
|
|
beq _08017764
|
|
ldr r5, [r7, #0x5c]
|
|
mov r4, r8
|
|
ands r5, r4
|
|
cmp r5, #0
|
|
bne _08017764
|
|
b _08017BB4
|
|
_08017764:
|
|
movs r5, #0
|
|
strb r5, [r1]
|
|
ldr r0, _080177A0 @ =0xFFFFFEDC
|
|
adds r4, r0, #0
|
|
mov r1, sb
|
|
ldrh r1, [r1, #0xa]
|
|
adds r0, r4, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #2
|
|
bls _080177C8
|
|
bl sub_80181E0
|
|
cmp r0, #0
|
|
beq _080177A4
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801778E
|
|
b _08017C18
|
|
_0801778E:
|
|
ldr r0, [r6, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
str r5, [r7, #0x4c]
|
|
b _08017C18
|
|
.align 2, 0
|
|
_0801779C: .4byte gPlayer
|
|
_080177A0: .4byte 0xFFFFFEDC
|
|
_080177A4:
|
|
mov r2, sb
|
|
ldrh r2, [r2, #0xa]
|
|
adds r0, r4, r2
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #2
|
|
bls _080177C8
|
|
mov r3, sl
|
|
ldr r0, [r3, #0x30]
|
|
movs r1, #1
|
|
rsbs r1, r1, #0
|
|
cmp r0, r1
|
|
beq _080177C8
|
|
mov r4, sb
|
|
ldr r0, [r4, #0x30]
|
|
cmp r0, r1
|
|
beq _080177C8
|
|
b _08017C18
|
|
_080177C8:
|
|
ldr r0, _080178D4 @ =gPlayer
|
|
mov sl, r0
|
|
ldrb r4, [r0, #0x16]
|
|
rsbs r0, r4, #0
|
|
add r1, sp, #0x10
|
|
strb r0, [r1]
|
|
mov r2, sl
|
|
ldrb r3, [r2, #0x17]
|
|
rsbs r2, r3, #0
|
|
mov r0, sp
|
|
adds r0, #0x11
|
|
strb r2, [r0]
|
|
adds r0, #1
|
|
strb r4, [r0]
|
|
adds r0, #1
|
|
strb r3, [r0]
|
|
add r0, sp, #0xc
|
|
movs r2, #4
|
|
bl memcpy
|
|
movs r3, #0x50
|
|
adds r3, r3, r7
|
|
mov r8, r3
|
|
movs r4, #0
|
|
ldrsh r1, [r3, r4]
|
|
adds r6, r7, #0
|
|
adds r6, #0x52
|
|
movs r0, #0
|
|
ldrsh r2, [r6, r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x66
|
|
movs r4, #0
|
|
ldrsh r3, [r0, r4]
|
|
adds r0, #2
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
str r0, [sp]
|
|
adds r5, r7, #0
|
|
adds r5, #0x54
|
|
ldrh r0, [r5]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
mov r0, sb
|
|
bl sub_800D0A0
|
|
adds r2, r0, #0
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
mov r3, r8
|
|
str r3, [sp, #0x18]
|
|
str r6, [sp, #0x1c]
|
|
mov r8, r5
|
|
cmp r0, #0
|
|
beq _0801784E
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801784E
|
|
mov r4, sl
|
|
ldr r0, [r4, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r4, #0x20]
|
|
_0801784E:
|
|
str r2, [r7, #0x4c]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xe
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _08017860
|
|
movs r0, #0x1e
|
|
ldr r1, [sp, #0x24]
|
|
strb r0, [r1]
|
|
_08017860:
|
|
ldr r2, [sp, #0x18]
|
|
movs r3, #0
|
|
ldrsh r1, [r2, r3]
|
|
ldr r4, [sp, #0x1c]
|
|
movs r0, #0
|
|
ldrsh r2, [r4, r0]
|
|
ldr r5, _080178D4 @ =gPlayer
|
|
add r3, sp, #0xc
|
|
str r3, [sp]
|
|
mov r0, sb
|
|
adds r3, r5, #0
|
|
bl sub_800BFAC
|
|
cmp r0, #0
|
|
bne _08017880
|
|
b _0801798E
|
|
_08017880:
|
|
mov r4, r8
|
|
ldrh r0, [r4]
|
|
lsls r2, r0, #0x10
|
|
lsrs r0, r2, #0x17
|
|
movs r4, #1
|
|
ands r0, r4
|
|
adds r1, r5, #0
|
|
adds r1, #0x38
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
beq _08017898
|
|
b _0801798E
|
|
_08017898:
|
|
ldr r1, _080178D8 @ =0xFFFFFEDC
|
|
adds r0, r1, #0
|
|
mov r3, sb
|
|
ldrh r3, [r3, #0xa]
|
|
adds r0, r0, r3
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #2
|
|
bhi _0801798E
|
|
ldr r0, _080178DC @ =gUnknown_03005424
|
|
ldrh r3, [r0]
|
|
lsrs r1, r3, #7
|
|
ands r1, r4
|
|
lsrs r2, r2, #0x13
|
|
adds r0, r4, #0
|
|
bics r0, r2
|
|
cmp r1, r0
|
|
beq _0801798E
|
|
movs r0, #0x80
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
bne _080178E0
|
|
ldr r0, [r5, #0xc]
|
|
asrs r0, r0, #8
|
|
ldr r4, [sp, #0x1c]
|
|
movs r2, #0
|
|
ldrsh r1, [r4, r2]
|
|
cmp r0, r1
|
|
bgt _080178EE
|
|
b _0801798E
|
|
.align 2, 0
|
|
_080178D4: .4byte gPlayer
|
|
_080178D8: .4byte 0xFFFFFEDC
|
|
_080178DC: .4byte gUnknown_03005424
|
|
_080178E0:
|
|
ldr r0, [r5, #0xc]
|
|
asrs r0, r0, #8
|
|
ldr r3, [sp, #0x1c]
|
|
movs r4, #0
|
|
ldrsh r1, [r3, r4]
|
|
cmp r0, r1
|
|
bge _0801798E
|
|
_080178EE:
|
|
ldr r4, _08017938 @ =gPlayer
|
|
ldr r0, [r4, #0x20]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xf
|
|
orrs r0, r1
|
|
str r0, [r4, #0x20]
|
|
adds r0, r4, #0
|
|
movs r1, #0xe
|
|
bl sub_8023B5C
|
|
movs r1, #0
|
|
movs r0, #6
|
|
strb r0, [r4, #0x16]
|
|
movs r0, #0xe
|
|
strb r0, [r4, #0x17]
|
|
movs r2, #0
|
|
strh r1, [r4, #0x14]
|
|
strh r1, [r4, #0x10]
|
|
adds r0, r4, #0
|
|
adds r0, #0x64
|
|
strh r1, [r0]
|
|
subs r0, #3
|
|
strb r2, [r0]
|
|
adds r0, #1
|
|
strb r2, [r0]
|
|
mov r1, sb
|
|
ldr r0, [r1, #0x10]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #3
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0801793C
|
|
ldr r0, [r4, #0x20]
|
|
movs r1, #2
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
b _08017942
|
|
.align 2, 0
|
|
_08017938: .4byte gPlayer
|
|
_0801793C:
|
|
ldr r0, [r4, #0x20]
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
_08017942:
|
|
str r0, [r4, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017986
|
|
bl sub_8019224
|
|
movs r1, #8
|
|
strb r1, [r0]
|
|
ldr r2, [sp, #0x20]
|
|
ldrb r1, [r2]
|
|
strb r1, [r0, #1]
|
|
movs r1, #1
|
|
strb r1, [r0, #2]
|
|
ldr r0, _08017974 @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801797C
|
|
ldr r0, [r7, #0x5c]
|
|
ldr r1, _08017978 @ =0xFFFFFEFF
|
|
ands r0, r1
|
|
b _08017984
|
|
.align 2, 0
|
|
_08017974: .4byte gUnknown_03005424
|
|
_08017978: .4byte 0xFFFFFEFF
|
|
_0801797C:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
orrs r0, r1
|
|
_08017984:
|
|
str r0, [r7, #0x5c]
|
|
_08017986:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
orrs r0, r1
|
|
str r0, [r7, #0x5c]
|
|
_0801798E:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801799A
|
|
b _08017C18
|
|
_0801799A:
|
|
ldr r6, _080179BC @ =gPlayer
|
|
adds r0, r6, #0
|
|
bl sub_8029E6C
|
|
cmp r0, #0
|
|
beq _080179C4
|
|
movs r0, #0x1e
|
|
ldr r3, [sp, #0x24]
|
|
strb r0, [r3]
|
|
ldr r0, [r6, #0x20]
|
|
ldr r1, _080179C0 @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
b _08017B9A
|
|
.align 2, 0
|
|
_080179BC: .4byte gPlayer
|
|
_080179C0: .4byte 0xFFBFFFFF
|
|
_080179C4:
|
|
ldr r4, _08017A5C @ =0xFFFFFEDC
|
|
adds r0, r4, #0
|
|
mov r1, sb
|
|
ldrh r1, [r1, #0xa]
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
ldr r5, _08017A60 @ =gUnknown_03005424
|
|
cmp r0, #2
|
|
bhi _08017A14
|
|
ldr r0, [r6, #8]
|
|
asrs r1, r0, #8
|
|
ldr r2, _08017A64 @ =gCamera
|
|
ldr r0, [r2, #0x30]
|
|
cmp r1, r0
|
|
ble _08017A14
|
|
ldr r0, [r2, #0x34]
|
|
cmp r1, r0
|
|
bge _08017A14
|
|
ldrh r4, [r5]
|
|
lsrs r0, r4, #7
|
|
movs r3, #1
|
|
adds r2, r3, #0
|
|
bics r2, r0
|
|
mov r1, r8
|
|
ldrh r0, [r1]
|
|
lsrs r0, r0, #3
|
|
adds r1, r3, #0
|
|
bics r1, r0
|
|
cmp r2, r1
|
|
bne _08017A14
|
|
ldr r1, [r7, #0x5c]
|
|
lsrs r1, r1, #8
|
|
adds r0, r3, #0
|
|
bics r0, r1
|
|
cmp r0, r2
|
|
bne _08017A14
|
|
ldr r2, [sp, #0x14]
|
|
cmp r2, #0
|
|
beq _08017A70
|
|
_08017A14:
|
|
ldr r2, _08017A68 @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
ldr r1, _08017A6C @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
adds r2, #0x64
|
|
movs r0, #0
|
|
strh r0, [r2]
|
|
ldrh r0, [r5]
|
|
lsrs r0, r0, #7
|
|
movs r3, #1
|
|
adds r2, r3, #0
|
|
bics r2, r0
|
|
mov r4, r8
|
|
ldrh r1, [r4]
|
|
lsrs r1, r1, #3
|
|
adds r0, r3, #0
|
|
bics r0, r1
|
|
cmp r2, r0
|
|
bne _08017A54
|
|
ldr r1, [r7, #0x5c]
|
|
lsrs r1, r1, #8
|
|
adds r0, r3, #0
|
|
bics r0, r1
|
|
cmp r0, r2
|
|
bne _08017A54
|
|
b _08017C18
|
|
_08017A54:
|
|
movs r0, #0x1e
|
|
ldr r1, [sp, #0x24]
|
|
strb r0, [r1]
|
|
b _08017C18
|
|
.align 2, 0
|
|
_08017A5C: .4byte 0xFFFFFEDC
|
|
_08017A60: .4byte gUnknown_03005424
|
|
_08017A64: .4byte gCamera
|
|
_08017A68: .4byte gPlayer
|
|
_08017A6C: .4byte 0xFFBFFFFF
|
|
_08017A70:
|
|
movs r2, #0x17
|
|
ldrsb r2, [r6, r2]
|
|
movs r0, #0x80
|
|
ands r0, r4
|
|
ldr r3, [sp, #0x18]
|
|
movs r4, #0
|
|
ldrsh r1, [r3, r4]
|
|
lsls r1, r1, #8
|
|
mov r8, r1
|
|
cmp r0, #0
|
|
bne _08017ACC
|
|
ldr r1, [sp, #0x1c]
|
|
movs r3, #0
|
|
ldrsh r0, [r1, r3]
|
|
mov r1, sb
|
|
adds r1, #0x2d
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r0, r0, r1
|
|
add r1, sp, #0xc
|
|
ldrb r1, [r1, #3]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
subs r0, r0, r1
|
|
lsls r5, r0, #8
|
|
subs r0, r0, r2
|
|
mov r4, r8
|
|
asrs r1, r4, #8
|
|
adds r2, r6, #0
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
movs r3, #8
|
|
rsbs r3, r3, #0
|
|
ldr r4, _08017AC8 @ =sub_801EC3C
|
|
str r4, [sp]
|
|
bl sub_801F100
|
|
cmp r0, #0
|
|
bge _08017B1C
|
|
lsls r0, r0, #8
|
|
subs r5, r5, r0
|
|
b _08017B08
|
|
.align 2, 0
|
|
_08017AC8: .4byte sub_801EC3C
|
|
_08017ACC:
|
|
ldr r1, [sp, #0x1c]
|
|
movs r3, #0
|
|
ldrsh r0, [r1, r3]
|
|
mov r1, sb
|
|
adds r1, #0x2f
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r0, r0, r1
|
|
add r1, sp, #0xc
|
|
ldrb r1, [r1, #3]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
adds r0, r0, r1
|
|
lsls r5, r0, #8
|
|
adds r0, r0, r2
|
|
mov r4, r8
|
|
asrs r1, r4, #8
|
|
adds r2, r6, #0
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
ldr r3, _08017B5C @ =sub_801EC3C
|
|
str r3, [sp]
|
|
movs r3, #8
|
|
bl sub_801F100
|
|
cmp r0, #0
|
|
bge _08017B1C
|
|
lsls r0, r0, #8
|
|
adds r5, r5, r0
|
|
_08017B08:
|
|
ldr r0, [r6, #0x20]
|
|
ldr r1, _08017B60 @ =0xFFBFFFFF
|
|
ands r0, r1
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
str r0, [r6, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
subs r1, #7
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
_08017B1C:
|
|
ldr r3, _08017B64 @ =gPlayer
|
|
mov r0, r8
|
|
str r0, [r3, #8]
|
|
str r5, [r3, #0xc]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017B78
|
|
ldr r2, [r3, #0x20]
|
|
movs r0, #8
|
|
orrs r2, r0
|
|
subs r0, #0xd
|
|
ands r2, r0
|
|
adds r0, #2
|
|
ands r2, r0
|
|
str r2, [r3, #0x20]
|
|
mov r1, sb
|
|
str r1, [r3, #0x3c]
|
|
movs r0, #0
|
|
strh r0, [r3, #0x12]
|
|
ldr r0, [r1, #0x10]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #3
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017B68
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
ands r2, r0
|
|
b _08017B6C
|
|
.align 2, 0
|
|
_08017B5C: .4byte sub_801EC3C
|
|
_08017B60: .4byte 0xFFBFFFFF
|
|
_08017B64: .4byte gPlayer
|
|
_08017B68:
|
|
movs r0, #1
|
|
orrs r2, r0
|
|
_08017B6C:
|
|
str r2, [r3, #0x20]
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017B8A
|
|
_08017B78:
|
|
bl sub_8019224
|
|
movs r2, #0
|
|
movs r1, #8
|
|
strb r1, [r0]
|
|
ldr r3, [sp, #0x20]
|
|
ldrb r1, [r3]
|
|
strb r1, [r0, #1]
|
|
strb r2, [r0, #2]
|
|
_08017B8A:
|
|
ldr r0, _08017BA0 @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017BA8
|
|
ldr r0, [r7, #0x5c]
|
|
ldr r1, _08017BA4 @ =0xFFFFFEFF
|
|
_08017B9A:
|
|
ands r0, r1
|
|
str r0, [r7, #0x5c]
|
|
b _08017C18
|
|
.align 2, 0
|
|
_08017BA0: .4byte gUnknown_03005424
|
|
_08017BA4: .4byte 0xFFFFFEFF
|
|
_08017BA8:
|
|
ldr r0, [r7, #0x5c]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
orrs r0, r1
|
|
str r0, [r7, #0x5c]
|
|
b _08017C18
|
|
_08017BB4:
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, [r6, #0x20]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017C18
|
|
ldr r0, [r6, #0x3c]
|
|
cmp r0, sb
|
|
bne _08017C18
|
|
adds r0, r7, #0
|
|
adds r0, #0x50
|
|
movs r4, #0
|
|
ldrsh r1, [r0, r4]
|
|
adds r0, #2
|
|
movs r3, #0
|
|
ldrsh r2, [r0, r3]
|
|
adds r0, #0x14
|
|
movs r4, #0
|
|
ldrsh r3, [r0, r4]
|
|
adds r0, #2
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
adds r0, #0x54
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
str r5, [sp, #8]
|
|
mov r0, sb
|
|
bl sub_800D0A0
|
|
adds r2, r0, #0
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017C16
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017C16
|
|
ldr r0, [r6, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
_08017C16:
|
|
str r2, [r7, #0x4c]
|
|
_08017C18:
|
|
add sp, #0x28
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
|
|
thumb_func_start sub_8017C28
|
|
sub_8017C28: @ 0x08017C28
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x18
|
|
ldr r0, _08017CB8 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r1, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r7, r1, r0
|
|
str r7, [sp, #0xc]
|
|
ldr r2, _08017CBC @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017C58
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r7
|
|
bne _08017C58
|
|
bl sub_8017F34
|
|
_08017C58:
|
|
ldr r0, _08017CC0 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #4
|
|
bne _08017C90
|
|
ldr r0, _08017CC4 @ =gMultiplayerConnections
|
|
ldrb r3, [r0]
|
|
adds r0, r7, #0
|
|
adds r0, #0x56
|
|
ldrb r0, [r0]
|
|
movs r2, #0x10
|
|
adds r1, r2, #0
|
|
lsls r1, r0
|
|
ands r1, r3
|
|
adds r0, #4
|
|
asrs r1, r0
|
|
ldr r4, _08017CC8 @ =0x04000128
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
lsls r2, r0
|
|
ands r3, r2
|
|
ldr r0, [r4]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
adds r0, #4
|
|
asrs r3, r0
|
|
cmp r1, r3
|
|
beq _08017CCC
|
|
_08017C90:
|
|
bl sub_8018300
|
|
cmp r0, #0
|
|
bne _08017C9A
|
|
b _08017F1E
|
|
_08017C9A:
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017CA6
|
|
b _08017F1E
|
|
_08017CA6:
|
|
ldr r2, _08017CBC @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0
|
|
str r0, [r7, #0x4c]
|
|
b _08017F1E
|
|
.align 2, 0
|
|
_08017CB8: .4byte gCurTask
|
|
_08017CBC: .4byte gPlayer
|
|
_08017CC0: .4byte gGameMode
|
|
_08017CC4: .4byte gMultiplayerConnections
|
|
_08017CC8: .4byte 0x04000128
|
|
_08017CCC:
|
|
adds r1, r7, #0
|
|
adds r1, #0x60
|
|
ldrb r0, [r1]
|
|
str r1, [sp, #0x14]
|
|
cmp r0, #0
|
|
beq _08017CDA
|
|
b _08017EB4
|
|
_08017CDA:
|
|
ldr r0, [sp, #0xc]
|
|
ldr r1, [r0, #0x30]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
bne _08017D3C
|
|
ldr r5, _08017D38 @ =gPlayer
|
|
adds r0, r5, #0
|
|
adds r0, #0x61
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08017D08
|
|
adds r0, r5, #0
|
|
adds r0, #0x85
|
|
ldrb r0, [r0]
|
|
subs r0, #2
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bhi _08017D08
|
|
b _08017F1E
|
|
_08017D08:
|
|
adds r0, r7, #0
|
|
adds r0, #0x50
|
|
movs r2, #0
|
|
ldrsh r1, [r0, r2]
|
|
adds r0, #2
|
|
movs r3, #0
|
|
ldrsh r2, [r0, r3]
|
|
adds r0, #0x14
|
|
movs r4, #0
|
|
ldrsh r3, [r0, r4]
|
|
adds r0, #2
|
|
movs r6, #0
|
|
ldrsh r0, [r0, r6]
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
adds r0, #0x54
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
b _08017EFA
|
|
.align 2, 0
|
|
_08017D38: .4byte gPlayer
|
|
_08017D3C:
|
|
ldr r0, _08017DD4 @ =gPlayer
|
|
str r0, [sp, #0x10]
|
|
adds r0, #0x61
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08017D5E
|
|
ldr r0, [sp, #0x10]
|
|
adds r0, #0x85
|
|
ldrb r0, [r0]
|
|
subs r0, #2
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bhi _08017D5E
|
|
b _08017F1E
|
|
_08017D5E:
|
|
movs r1, #0x50
|
|
adds r1, r1, r7
|
|
mov sl, r1
|
|
movs r2, #0
|
|
ldrsh r1, [r1, r2]
|
|
movs r3, #0x52
|
|
adds r3, r3, r7
|
|
mov sb, r3
|
|
movs r4, #0
|
|
ldrsh r2, [r3, r4]
|
|
movs r5, #0x66
|
|
adds r5, r5, r7
|
|
mov r8, r5
|
|
movs r6, #0
|
|
ldrsh r3, [r5, r6]
|
|
adds r6, r7, #0
|
|
adds r6, #0x68
|
|
movs r4, #0
|
|
ldrsh r0, [r6, r4]
|
|
str r0, [sp]
|
|
adds r5, r7, #0
|
|
adds r5, #0x54
|
|
ldrh r0, [r5]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #0xc]
|
|
bl sub_800DA4C
|
|
adds r3, r0, #0
|
|
movs r1, #2
|
|
ands r0, r1
|
|
mov r2, sl
|
|
mov sl, r6
|
|
mov ip, r5
|
|
cmp r0, #0
|
|
beq _08017DF4
|
|
ldr r5, [sp, #0x10]
|
|
ldr r0, [r5, #0x20]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017DF4
|
|
adds r0, r5, #0
|
|
adds r0, #0x24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08017DF4
|
|
ldr r6, [sp, #0xc]
|
|
ldrh r1, [r6, #0xa]
|
|
movs r0, #0xbd
|
|
lsls r0, r0, #1
|
|
cmp r1, r0
|
|
bne _08017DDC
|
|
ldr r0, _08017DD8 @ =0xFFFFF880
|
|
bl sub_80188A4
|
|
b _08017E56
|
|
.align 2, 0
|
|
_08017DD4: .4byte gPlayer
|
|
_08017DD8: .4byte 0xFFFFF880
|
|
_08017DDC:
|
|
ldr r0, _08017DEC @ =0x0000017F
|
|
cmp r1, r0
|
|
bne _08017DF4
|
|
ldr r0, _08017DF0 @ =0xFFFFF580
|
|
bl sub_80188A4
|
|
b _08017E56
|
|
.align 2, 0
|
|
_08017DEC: .4byte 0x0000017F
|
|
_08017DF0: .4byte 0xFFFFF580
|
|
_08017DF4:
|
|
movs r4, #1
|
|
adds r0, r3, #0
|
|
ands r0, r4
|
|
cmp r0, #0
|
|
beq _08017E64
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xa
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _08017E1C
|
|
ldr r1, _08017E18 @ =gPlayer
|
|
ldrh r2, [r1, #0x10]
|
|
movs r4, #0x10
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, #0
|
|
ble _08017E3C
|
|
b _08017E32
|
|
.align 2, 0
|
|
_08017E18: .4byte gPlayer
|
|
_08017E1C:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xb
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _08017E3C
|
|
ldr r1, _08017E60 @ =gPlayer
|
|
ldrh r2, [r1, #0x10]
|
|
movs r5, #0x10
|
|
ldrsh r0, [r1, r5]
|
|
cmp r0, #0
|
|
bge _08017E3C
|
|
_08017E32:
|
|
rsbs r0, r2, #0
|
|
strh r0, [r1, #0x10]
|
|
ldrh r0, [r1, #0x14]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r1, #0x14]
|
|
_08017E3C:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xd
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _08017E56
|
|
ldr r1, _08017E60 @ =gPlayer
|
|
ldrh r2, [r1, #0x12]
|
|
movs r6, #0x12
|
|
ldrsh r0, [r1, r6]
|
|
cmp r0, #0
|
|
ble _08017E56
|
|
rsbs r0, r2, #0
|
|
strh r0, [r1, #0x12]
|
|
_08017E56:
|
|
movs r0, #0x1e
|
|
ldr r1, [sp, #0x14]
|
|
strb r0, [r1]
|
|
b _08017F1E
|
|
.align 2, 0
|
|
_08017E60: .4byte gPlayer
|
|
_08017E64:
|
|
movs r3, #0
|
|
ldrsh r1, [r2, r3]
|
|
mov r5, sb
|
|
movs r6, #0
|
|
ldrsh r2, [r5, r6]
|
|
mov r0, r8
|
|
movs r5, #0
|
|
ldrsh r3, [r0, r5]
|
|
mov r6, sl
|
|
movs r5, #0
|
|
ldrsh r0, [r6, r5]
|
|
str r0, [sp]
|
|
mov r6, ip
|
|
ldrh r0, [r6]
|
|
lsrs r0, r0, #7
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
ldr r0, [sp, #0xc]
|
|
bl sub_800D0A0
|
|
adds r3, r0, #0
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017F1C
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017F1C
|
|
ldr r0, _08017EB0 @ =gPlayer
|
|
ldr r1, [r0, #0x20]
|
|
movs r2, #0x21
|
|
rsbs r2, r2, #0
|
|
ands r1, r2
|
|
str r1, [r0, #0x20]
|
|
b _08017F1C
|
|
.align 2, 0
|
|
_08017EB0: .4byte gPlayer
|
|
_08017EB4:
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
ldr r5, _08017F30 @ =gPlayer
|
|
ldr r0, [r5, #0x20]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017F1E
|
|
ldr r0, [r5, #0x3c]
|
|
ldr r1, [sp, #0xc]
|
|
cmp r0, r1
|
|
bne _08017F1E
|
|
adds r0, r7, #0
|
|
adds r0, #0x50
|
|
movs r2, #0
|
|
ldrsh r1, [r0, r2]
|
|
adds r0, #2
|
|
movs r3, #0
|
|
ldrsh r2, [r0, r3]
|
|
adds r0, #0x14
|
|
movs r4, #0
|
|
ldrsh r3, [r0, r4]
|
|
adds r0, #2
|
|
movs r6, #0
|
|
ldrsh r0, [r0, r6]
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
adds r0, #0x54
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
_08017EFA:
|
|
ldr r0, [sp, #0xc]
|
|
bl sub_800D0A0
|
|
adds r3, r0, #0
|
|
ldr r0, [r7, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08017F1C
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08017F1C
|
|
ldr r0, [r5, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r5, #0x20]
|
|
_08017F1C:
|
|
str r3, [r7, #0x4c]
|
|
_08017F1E:
|
|
add sp, #0x18
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08017F30: .4byte gPlayer
|
|
|
|
thumb_func_start sub_8017F34
|
|
sub_8017F34: @ 0x08017F34
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #4
|
|
ldr r0, _08017F78 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r3, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r6, r3, r0
|
|
ldr r0, [r6, #0x44]
|
|
cmp r0, #0
|
|
bge _08017F4C
|
|
rsbs r0, r0, #0
|
|
_08017F4C:
|
|
cmp r0, #0x80
|
|
bgt _08017F5C
|
|
ldr r0, [r6, #0x48]
|
|
cmp r0, #0
|
|
bge _08017F58
|
|
rsbs r0, r0, #0
|
|
_08017F58:
|
|
cmp r0, #0x80
|
|
ble _08017F80
|
|
_08017F5C:
|
|
ldr r2, _08017F7C @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #9
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
str r0, [r2, #0x20]
|
|
adds r1, r6, #0
|
|
adds r1, #0x60
|
|
movs r0, #0x1e
|
|
strb r0, [r1]
|
|
b _08018110
|
|
.align 2, 0
|
|
_08017F78: .4byte gCurTask
|
|
_08017F7C: .4byte gPlayer
|
|
_08017F80:
|
|
ldr r1, _08017FCC @ =gMultiplayerPlayerTasks
|
|
ldr r0, _08017FD0 @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
ldrh r0, [r0, #6]
|
|
ldr r1, _08017FD4 @ =IWRAM_START + 0x54
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
movs r4, #0x80
|
|
adds r1, r4, #0
|
|
ands r1, r0
|
|
ldr r2, _08017FD4 @ =IWRAM_START + 0x54
|
|
adds r0, r3, r2
|
|
ldrh r2, [r0]
|
|
adds r0, r4, #0
|
|
ands r0, r2
|
|
cmp r1, r0
|
|
beq _08017FE4
|
|
ldr r2, _08017FD8 @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #9
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r0, [r2, #0x3c]
|
|
ldr r1, _08017FDC @ =IWRAM_START + 0x56
|
|
adds r0, r3, r1
|
|
ldrb r1, [r0]
|
|
ldr r2, _08017FE0 @ =IWRAM_START + 0x64
|
|
adds r0, r3, r2
|
|
strb r1, [r0]
|
|
b _08018110
|
|
.align 2, 0
|
|
_08017FCC: .4byte gMultiplayerPlayerTasks
|
|
_08017FD0: .4byte 0x04000128
|
|
_08017FD4: .4byte IWRAM_START + 0x54
|
|
_08017FD8: .4byte gPlayer
|
|
_08017FDC: .4byte IWRAM_START + 0x56
|
|
_08017FE0: .4byte IWRAM_START + 0x64
|
|
_08017FE4:
|
|
ldr r2, _08018008 @ =gPlayer
|
|
ldr r1, [r6, #0x44]
|
|
lsls r1, r1, #8
|
|
ldr r0, [r2, #8]
|
|
adds r0, r0, r1
|
|
str r0, [r2, #8]
|
|
ldr r0, _0801800C @ =gUnknown_03005424
|
|
ldrh r1, [r0]
|
|
adds r0, r4, #0
|
|
ands r0, r1
|
|
adds r5, r2, #0
|
|
cmp r0, #0
|
|
bne _08018010
|
|
ldr r1, [r5, #0xc]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
adds r1, r1, r0
|
|
b _08018016
|
|
.align 2, 0
|
|
_08018008: .4byte gPlayer
|
|
_0801800C: .4byte gUnknown_03005424
|
|
_08018010:
|
|
ldr r1, [r5, #0xc]
|
|
ldr r2, _08018050 @ =0xFFFFFE00
|
|
adds r1, r1, r2
|
|
_08018016:
|
|
ldr r0, [r6, #0x48]
|
|
lsls r0, r0, #8
|
|
adds r1, r1, r0
|
|
str r1, [r5, #0xc]
|
|
ldr r0, [r6, #0x48]
|
|
cmp r0, #0
|
|
bge _08018058
|
|
ldr r0, [r5, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r1, #0x17
|
|
ldrsb r1, [r5, r1]
|
|
subs r0, r0, r1
|
|
ldr r1, [r5, #8]
|
|
asrs r1, r1, #8
|
|
adds r2, r5, #0
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
movs r3, #8
|
|
rsbs r3, r3, #0
|
|
ldr r4, _08018054 @ =sub_801EC3C
|
|
str r4, [sp]
|
|
bl sub_801F100
|
|
cmp r0, #0
|
|
bge _0801809C
|
|
lsls r1, r0, #8
|
|
ldr r0, [r5, #0xc]
|
|
subs r0, r0, r1
|
|
b _08018084
|
|
.align 2, 0
|
|
_08018050: .4byte 0xFFFFFE00
|
|
_08018054: .4byte sub_801EC3C
|
|
_08018058:
|
|
cmp r0, #0
|
|
ble _0801809C
|
|
ldr r0, [r5, #0xc]
|
|
asrs r0, r0, #8
|
|
movs r1, #0x17
|
|
ldrsb r1, [r5, r1]
|
|
adds r0, r0, r1
|
|
ldr r1, [r5, #8]
|
|
asrs r1, r1, #8
|
|
adds r2, r5, #0
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
ldr r3, _080180D4 @ =sub_801EC3C
|
|
str r3, [sp]
|
|
movs r3, #8
|
|
bl sub_801F100
|
|
cmp r0, #0
|
|
bge _0801809C
|
|
lsls r1, r0, #8
|
|
ldr r0, [r5, #0xc]
|
|
adds r0, r0, r1
|
|
_08018084:
|
|
str r0, [r5, #0xc]
|
|
ldr r0, [r5, #0x20]
|
|
movs r1, #9
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
str r0, [r5, #0x20]
|
|
adds r1, r6, #0
|
|
adds r1, #0x60
|
|
movs r0, #0x1e
|
|
strb r0, [r1]
|
|
_0801809C:
|
|
ldr r1, [r6, #0x44]
|
|
cmp r1, #0
|
|
bge _080180E0
|
|
ldr r5, _080180D8 @ =gPlayer
|
|
ldr r0, [r5, #8]
|
|
asrs r0, r0, #8
|
|
movs r1, #0x16
|
|
ldrsb r1, [r5, r1]
|
|
subs r0, r0, r1
|
|
ldr r1, [r5, #0xc]
|
|
asrs r1, r1, #8
|
|
adds r2, r5, #0
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
movs r3, #8
|
|
rsbs r3, r3, #0
|
|
ldr r4, _080180DC @ =sub_801EB44
|
|
str r4, [sp]
|
|
bl sub_801F100
|
|
cmp r0, #0
|
|
bge _08018110
|
|
lsls r1, r0, #8
|
|
ldr r0, [r5, #8]
|
|
subs r0, r0, r1
|
|
str r0, [r5, #8]
|
|
b _08018110
|
|
.align 2, 0
|
|
_080180D4: .4byte sub_801EC3C
|
|
_080180D8: .4byte gPlayer
|
|
_080180DC: .4byte sub_801EB44
|
|
_080180E0:
|
|
cmp r1, #0
|
|
ble _08018110
|
|
ldr r4, _08018118 @ =gPlayer
|
|
ldr r0, [r4, #8]
|
|
asrs r0, r0, #8
|
|
movs r1, #0x16
|
|
ldrsb r1, [r4, r1]
|
|
adds r0, r0, r1
|
|
ldr r1, [r4, #0xc]
|
|
asrs r1, r1, #8
|
|
adds r2, r4, #0
|
|
adds r2, #0x38
|
|
ldrb r2, [r2]
|
|
ldr r3, _0801811C @ =sub_801EB44
|
|
str r3, [sp]
|
|
movs r3, #8
|
|
bl sub_801F100
|
|
cmp r0, #0
|
|
bge _08018110
|
|
lsls r1, r0, #8
|
|
ldr r0, [r4, #8]
|
|
adds r0, r0, r1
|
|
str r0, [r4, #8]
|
|
_08018110:
|
|
add sp, #4
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08018118: .4byte gPlayer
|
|
_0801811C: .4byte sub_801EB44
|
|
|
|
thumb_func_start sub_8018120
|
|
sub_8018120: @ 0x08018120
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r0, _080181C4 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r5, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r6, r5, r0
|
|
ldr r3, _080181C8 @ =gPlayer
|
|
ldr r4, [r3, #0x20]
|
|
movs r0, #8
|
|
ands r0, r4
|
|
cmp r0, #0
|
|
beq _0801819C
|
|
ldr r0, [r3, #0x3c]
|
|
cmp r0, r6
|
|
bne _0801819C
|
|
ldr r1, [r6, #0x44]
|
|
lsls r1, r1, #8
|
|
ldr r0, [r3, #8]
|
|
adds r0, r0, r1
|
|
str r0, [r3, #8]
|
|
ldr r1, [r3, #0xc]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
adds r1, r1, r0
|
|
ldr r0, [r6, #0x48]
|
|
lsls r0, r0, #8
|
|
adds r1, r1, r0
|
|
str r1, [r3, #0xc]
|
|
ldr r1, _080181CC @ =gMultiplayerPlayerTasks
|
|
ldr r0, _080181D0 @ =0x04000128
|
|
ldr r0, [r0]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
ldrh r0, [r0, #6]
|
|
ldr r1, _080181D4 @ =IWRAM_START + 0x54
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, #0x80
|
|
adds r2, r0, #0
|
|
ands r2, r1
|
|
ldr r7, _080181D4 @ =IWRAM_START + 0x54
|
|
adds r1, r5, r7
|
|
ldrh r1, [r1]
|
|
ands r0, r1
|
|
cmp r2, r0
|
|
beq _0801819C
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r4, r0
|
|
str r4, [r3, #0x20]
|
|
adds r0, #8
|
|
str r0, [r3, #0x3c]
|
|
ldr r1, _080181D8 @ =IWRAM_START + 0x56
|
|
adds r0, r5, r1
|
|
ldrb r1, [r0]
|
|
ldr r2, _080181DC @ =IWRAM_START + 0x64
|
|
adds r0, r5, r2
|
|
strb r1, [r0]
|
|
_0801819C:
|
|
bl sub_8018300
|
|
cmp r0, #0
|
|
beq _080181BC
|
|
ldr r0, [r6, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080181BC
|
|
ldr r2, _080181C8 @ =gPlayer
|
|
ldr r0, [r2, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
movs r0, #0
|
|
str r0, [r6, #0x4c]
|
|
_080181BC:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080181C4: .4byte gCurTask
|
|
_080181C8: .4byte gPlayer
|
|
_080181CC: .4byte gMultiplayerPlayerTasks
|
|
_080181D0: .4byte 0x04000128
|
|
_080181D4: .4byte IWRAM_START + 0x54
|
|
_080181D8: .4byte IWRAM_START + 0x56
|
|
_080181DC: .4byte IWRAM_START + 0x64
|
|
|
|
thumb_func_start sub_80181E0
|
|
sub_80181E0: @ 0x080181E0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #8
|
|
ldr r5, _08018270 @ =gPlayer
|
|
adds r0, r5, #0
|
|
adds r0, #0x90
|
|
ldr r1, [r0]
|
|
ldr r0, _08018274 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r4, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r6, r4, r0
|
|
mov r8, r6
|
|
ldr r0, [r1, #0x3c]
|
|
movs r1, #1
|
|
rsbs r1, r1, #0
|
|
cmp r0, r1
|
|
beq _080182D0
|
|
ldr r0, [r6, #0x30]
|
|
cmp r0, r1
|
|
beq _080182D0
|
|
ldr r1, _08018278 @ =IWRAM_START + 0x50
|
|
adds r0, r4, r1
|
|
movs r2, #0
|
|
ldrsh r1, [r0, r2]
|
|
ldr r3, _0801827C @ =IWRAM_START + 0x52
|
|
adds r0, r4, r3
|
|
movs r7, #0
|
|
ldrsh r2, [r0, r7]
|
|
adds r3, #0x14
|
|
adds r0, r4, r3
|
|
movs r7, #0
|
|
ldrsh r3, [r0, r7]
|
|
ldr r7, _08018280 @ =IWRAM_START + 0x68
|
|
adds r0, r4, r7
|
|
movs r7, #0
|
|
ldrsh r0, [r0, r7]
|
|
str r0, [sp]
|
|
ldr r7, _08018284 @ =IWRAM_START + 0x54
|
|
adds r0, r4, r7
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r4, #1
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
adds r0, r6, #0
|
|
bl sub_800DA4C
|
|
adds r2, r0, #0
|
|
ands r0, r4
|
|
cmp r0, #0
|
|
beq _080182D0
|
|
adds r0, r5, #0
|
|
adds r0, #0x61
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080182A6
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xa
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _08018288
|
|
ldrh r1, [r5, #0x10]
|
|
movs r3, #0x10
|
|
ldrsh r0, [r5, r3]
|
|
cmp r0, #0
|
|
ble _080182A6
|
|
b _0801829C
|
|
.align 2, 0
|
|
_08018270: .4byte gPlayer
|
|
_08018274: .4byte gCurTask
|
|
_08018278: .4byte IWRAM_START + 0x50
|
|
_0801827C: .4byte IWRAM_START + 0x52
|
|
_08018280: .4byte IWRAM_START + 0x68
|
|
_08018284: .4byte IWRAM_START + 0x54
|
|
_08018288:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xb
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _080182A6
|
|
ldrh r1, [r5, #0x10]
|
|
movs r7, #0x10
|
|
ldrsh r0, [r5, r7]
|
|
cmp r0, #0
|
|
bge _080182A6
|
|
_0801829C:
|
|
rsbs r0, r1, #0
|
|
strh r0, [r5, #0x10]
|
|
ldrh r0, [r5, #0x14]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r5, #0x14]
|
|
_080182A6:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xd
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _080182C0
|
|
ldr r1, _080182CC @ =gPlayer
|
|
ldrh r2, [r1, #0x12]
|
|
movs r3, #0x12
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, #0
|
|
ble _080182C0
|
|
rsbs r0, r2, #0
|
|
strh r0, [r1, #0x12]
|
|
_080182C0:
|
|
mov r1, r8
|
|
adds r1, #0x60
|
|
movs r0, #0x1e
|
|
strb r0, [r1]
|
|
movs r0, #1
|
|
b _080182F0
|
|
.align 2, 0
|
|
_080182CC: .4byte gPlayer
|
|
_080182D0:
|
|
ldr r2, _080182FC @ =gPlayer
|
|
ldr r1, [r2, #0x20]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080182EE
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r6
|
|
bne _080182EE
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
movs r0, #2
|
|
orrs r1, r0
|
|
str r1, [r2, #0x20]
|
|
_080182EE:
|
|
movs r0, #0
|
|
_080182F0:
|
|
add sp, #8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080182FC: .4byte gPlayer
|
|
|
|
@ Out:
|
|
@ bool32 (hit?)
|
|
thumb_func_start sub_8018300
|
|
sub_8018300: @ 0x08018300
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x24
|
|
ldr r2, _080183A4 @ =gPlayer
|
|
adds r0, r2, #0
|
|
adds r0, #0x90
|
|
ldr r0, [r0]
|
|
adds r0, #0xc
|
|
str r0, [sp, #0x10]
|
|
ldr r0, _080183A8 @ =gCurTask
|
|
ldr r0, [r0]
|
|
ldrh r4, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r6, r4, r0
|
|
str r6, [sp, #0xc]
|
|
adds r0, #0x60
|
|
adds r1, r4, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _08018332
|
|
b _08018634
|
|
_08018332:
|
|
ldr r1, _080183AC @ =IWRAM_START + 0x50
|
|
adds r5, r4, r1
|
|
movs r2, #0
|
|
ldrsh r1, [r5, r2]
|
|
ldr r3, _080183B0 @ =IWRAM_START + 0x52
|
|
adds r7, r4, r3
|
|
movs r2, #0
|
|
ldrsh r0, [r7, r2]
|
|
mov ip, r0
|
|
adds r3, #0x14
|
|
adds r3, r3, r4
|
|
mov r8, r3
|
|
movs r2, #0
|
|
ldrsh r0, [r3, r2]
|
|
str r0, [sp, #0x20]
|
|
ldr r3, _080183B4 @ =IWRAM_START + 0x68
|
|
adds r3, r3, r4
|
|
mov sb, r3
|
|
movs r2, #0
|
|
ldrsh r0, [r3, r2]
|
|
str r0, [sp]
|
|
ldr r3, _080183B8 @ =IWRAM_START + 0x54
|
|
adds r4, r4, r3
|
|
ldrh r0, [r4]
|
|
lsrs r0, r0, #7
|
|
movs r2, #1
|
|
mov sl, r2
|
|
ands r0, r2
|
|
str r0, [sp, #4]
|
|
adds r0, r6, #0
|
|
mov r2, ip
|
|
ldr r3, [sp, #0x20]
|
|
bl sub_800DA4C
|
|
adds r2, r0, #0
|
|
ldr r0, _080183BC @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
bne _08018400
|
|
movs r0, #3
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _08018400
|
|
ldrh r2, [r5]
|
|
movs r3, #0
|
|
ldrsh r1, [r5, r3]
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #2
|
|
cmp r1, r0
|
|
ble _080183C8
|
|
ldr r5, _080183C0 @ =0xFFFFFA60
|
|
adds r1, r2, r5
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
ldr r0, _080183C4 @ =0xFFFFFCA0
|
|
b _080183D6
|
|
.align 2, 0
|
|
_080183A4: .4byte gPlayer
|
|
_080183A8: .4byte gCurTask
|
|
_080183AC: .4byte IWRAM_START + 0x50
|
|
_080183B0: .4byte IWRAM_START + 0x52
|
|
_080183B4: .4byte IWRAM_START + 0x68
|
|
_080183B8: .4byte IWRAM_START + 0x54
|
|
_080183BC: .4byte gGameMode
|
|
_080183C0: .4byte 0xFFFFFA60
|
|
_080183C4: .4byte 0xFFFFFCA0
|
|
_080183C8:
|
|
movs r5, #0xb4
|
|
lsls r5, r5, #3
|
|
adds r1, r2, r5
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
movs r0, #0xd8
|
|
lsls r0, r0, #2
|
|
_080183D6:
|
|
adds r2, r0, #0
|
|
ldrh r7, [r7]
|
|
adds r2, r2, r7
|
|
lsls r2, r2, #0x10
|
|
asrs r2, r2, #0x10
|
|
mov r5, r8
|
|
movs r7, #0
|
|
ldrsh r3, [r5, r7]
|
|
mov r5, sb
|
|
movs r7, #0
|
|
ldrsh r0, [r5, r7]
|
|
str r0, [sp]
|
|
ldrh r0, [r4]
|
|
lsrs r0, r0, #7
|
|
mov r4, sl
|
|
ands r0, r4
|
|
str r0, [sp, #4]
|
|
adds r0, r6, #0
|
|
bl sub_800DA4C
|
|
adds r2, r0, #0
|
|
_08018400:
|
|
adds r0, r2, #0
|
|
movs r5, #1
|
|
ands r0, r5
|
|
cmp r0, #0
|
|
beq _08018492
|
|
ldr r0, _08018440 @ =gPlayer
|
|
adds r1, r0, #0
|
|
adds r1, #0x61
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x18
|
|
asrs r1, r1, #0x18
|
|
mov r8, r0
|
|
cmp r1, #0
|
|
bne _08018464
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xa
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _08018444
|
|
mov r7, r8
|
|
ldrh r1, [r7, #0x10]
|
|
movs r3, #0x10
|
|
ldrsh r0, [r7, r3]
|
|
cmp r0, #0
|
|
ble _08018464
|
|
rsbs r0, r1, #0
|
|
strh r0, [r7, #0x10]
|
|
ldrh r0, [r7, #0x14]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r7, #0x14]
|
|
b _08018464
|
|
.align 2, 0
|
|
_08018440: .4byte gPlayer
|
|
_08018444:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xb
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _08018464
|
|
mov r4, r8
|
|
ldrh r1, [r4, #0x10]
|
|
movs r5, #0x10
|
|
ldrsh r0, [r4, r5]
|
|
cmp r0, #0
|
|
bge _08018464
|
|
rsbs r0, r1, #0
|
|
strh r0, [r4, #0x10]
|
|
ldrh r0, [r4, #0x14]
|
|
rsbs r0, r0, #0
|
|
strh r0, [r4, #0x14]
|
|
_08018464:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xd
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0801847E
|
|
mov r7, r8
|
|
ldrh r1, [r7, #0x12]
|
|
movs r3, #0x12
|
|
ldrsh r0, [r7, r3]
|
|
cmp r0, #0
|
|
ble _0801847E
|
|
rsbs r0, r1, #0
|
|
strh r0, [r7, #0x12]
|
|
_0801847E:
|
|
adds r1, r6, #0
|
|
adds r1, #0x60
|
|
movs r0, #0x1e
|
|
strb r0, [r1]
|
|
movs r0, #2
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
bne _0801849E
|
|
movs r0, #1
|
|
b _0801874C
|
|
_08018492:
|
|
movs r4, #2
|
|
ands r4, r2
|
|
ldr r5, _080184C4 @ =gPlayer
|
|
mov r8, r5
|
|
cmp r4, #0
|
|
beq _08018512
|
|
_0801849E:
|
|
movs r3, #1
|
|
ands r2, r3
|
|
cmp r2, #0
|
|
beq _080184D8
|
|
adds r0, r6, #0
|
|
adds r0, #0x50
|
|
movs r7, #0
|
|
ldrsh r1, [r0, r7]
|
|
mov r2, r8
|
|
ldr r0, [r2, #8]
|
|
asrs r0, r0, #8
|
|
cmp r1, r0
|
|
bge _080184C8
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #2
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r2, #0x20]
|
|
b _080184D0
|
|
.align 2, 0
|
|
_080184C4: .4byte gPlayer
|
|
_080184C8:
|
|
mov r4, r8
|
|
ldr r0, [r4, #0x20]
|
|
orrs r0, r3
|
|
str r0, [r4, #0x20]
|
|
_080184D0:
|
|
mov r0, r8
|
|
bl sub_800DE44
|
|
b _08018506
|
|
_080184D8:
|
|
adds r0, r6, #0
|
|
adds r0, #0x50
|
|
movs r5, #0
|
|
ldrsh r1, [r0, r5]
|
|
mov r7, r8
|
|
ldr r0, [r7, #8]
|
|
asrs r0, r0, #8
|
|
cmp r1, r0
|
|
bge _080184F2
|
|
ldr r0, [r7, #0x20]
|
|
orrs r0, r3
|
|
str r0, [r7, #0x20]
|
|
b _08018500
|
|
_080184F2:
|
|
mov r1, r8
|
|
ldr r0, [r1, #0x20]
|
|
movs r1, #2
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
mov r2, r8
|
|
str r0, [r2, #0x20]
|
|
_08018500:
|
|
mov r0, r8
|
|
bl sub_800DD54
|
|
_08018506:
|
|
adds r1, r6, #0
|
|
adds r1, #0x60
|
|
movs r0, #0x1e
|
|
strb r0, [r1]
|
|
movs r0, #1
|
|
b _0801874C
|
|
_08018512:
|
|
ldr r3, [sp, #0x10]
|
|
ldr r1, [r3, #0x30]
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r1, r0
|
|
bne _080185F4
|
|
ldr r5, [sp, #0xc]
|
|
ldr r0, [r5, #0x30]
|
|
cmp r0, r1
|
|
bne _080185F4
|
|
mov r7, r8
|
|
ldr r7, [r7, #0x20]
|
|
str r7, [sp, #0x14]
|
|
mov r0, r8
|
|
ldr r0, [r0, #0x3c]
|
|
str r0, [sp, #0x18]
|
|
adds r5, r6, #0
|
|
adds r5, #0x50
|
|
movs r2, #0
|
|
ldrsh r1, [r5, r2]
|
|
adds r7, r6, #0
|
|
adds r7, #0x52
|
|
movs r0, #0
|
|
ldrsh r3, [r7, r0]
|
|
mov ip, r3
|
|
movs r2, #0x66
|
|
adds r2, r2, r6
|
|
mov sb, r2
|
|
movs r0, #0
|
|
ldrsh r3, [r2, r0]
|
|
str r3, [sp, #0x20]
|
|
movs r2, #0x68
|
|
adds r2, r2, r6
|
|
mov sl, r2
|
|
movs r3, #0
|
|
ldrsh r0, [r2, r3]
|
|
str r0, [sp]
|
|
adds r0, r6, #0
|
|
adds r0, #0x54
|
|
str r0, [sp, #0x1c]
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r2, #1
|
|
ands r0, r2
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
ldr r0, [sp, #0xc]
|
|
mov r2, ip
|
|
ldr r3, [sp, #0x20]
|
|
bl sub_800D0A0
|
|
adds r4, r0, #0
|
|
ldr r0, _080185B0 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
beq _08018584
|
|
b _08018718
|
|
_08018584:
|
|
cmp r4, #0
|
|
beq _0801858A
|
|
b _08018718
|
|
_0801858A:
|
|
ldr r3, [sp, #0x14]
|
|
mov r0, r8
|
|
str r3, [r0, #0x20]
|
|
ldr r1, [sp, #0x18]
|
|
str r1, [r0, #0x3c]
|
|
ldrh r2, [r5]
|
|
movs r3, #0
|
|
ldrsh r1, [r5, r3]
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #2
|
|
cmp r1, r0
|
|
ble _080185BC
|
|
ldr r5, _080185B4 @ =0xFFFFFA60
|
|
adds r1, r2, r5
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
ldr r0, _080185B8 @ =0xFFFFFCA0
|
|
adds r2, r0, #0
|
|
b _080185CC
|
|
.align 2, 0
|
|
_080185B0: .4byte gGameMode
|
|
_080185B4: .4byte 0xFFFFFA60
|
|
_080185B8: .4byte 0xFFFFFCA0
|
|
_080185BC:
|
|
movs r0, #0xb4
|
|
lsls r0, r0, #3
|
|
adds r1, r2, r0
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
movs r3, #0xd8
|
|
lsls r3, r3, #2
|
|
adds r2, r3, #0
|
|
_080185CC:
|
|
ldrh r7, [r7]
|
|
adds r2, r2, r7
|
|
lsls r2, r2, #0x10
|
|
asrs r2, r2, #0x10
|
|
mov r5, sb
|
|
movs r7, #0
|
|
ldrsh r3, [r5, r7]
|
|
mov r5, sl
|
|
movs r7, #0
|
|
ldrsh r0, [r5, r7]
|
|
str r0, [sp]
|
|
ldr r5, [sp, #0x1c]
|
|
ldrh r0, [r5]
|
|
lsrs r0, r0, #7
|
|
movs r7, #1
|
|
ands r0, r7
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
ldr r0, [sp, #0xc]
|
|
b _08018712
|
|
_080185F4:
|
|
ldr r1, _08018630 @ =gPlayer
|
|
ldr r2, [r1, #0x20]
|
|
movs r0, #8
|
|
ands r0, r2
|
|
mov r8, r1
|
|
cmp r0, #0
|
|
beq _08018618
|
|
ldr r0, [r1, #0x3c]
|
|
ldr r1, [sp, #0xc]
|
|
cmp r0, r1
|
|
bne _08018618
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r2, r0
|
|
movs r0, #2
|
|
orrs r2, r0
|
|
mov r3, r8
|
|
str r2, [r3, #0x20]
|
|
_08018618:
|
|
ldr r0, [r6, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08018624
|
|
b _0801874A
|
|
_08018624:
|
|
mov r4, r8
|
|
ldr r0, [r4, #0x20]
|
|
subs r1, #0x41
|
|
ands r0, r1
|
|
str r0, [r4, #0x20]
|
|
b _0801874A
|
|
.align 2, 0
|
|
_08018630: .4byte gPlayer
|
|
_08018634:
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, [r2, #0x20]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08018644
|
|
b _0801874A
|
|
_08018644:
|
|
ldr r0, [r2, #0x3c]
|
|
cmp r0, r6
|
|
beq _0801864C
|
|
b _0801874A
|
|
_0801864C:
|
|
ldr r7, _080186C0 @ =IWRAM_START + 0x50
|
|
adds r5, r4, r7
|
|
movs r0, #0
|
|
ldrsh r1, [r5, r0]
|
|
ldr r2, _080186C4 @ =IWRAM_START + 0x52
|
|
adds r7, r4, r2
|
|
movs r0, #0
|
|
ldrsh r3, [r7, r0]
|
|
mov ip, r3
|
|
adds r2, #0x14
|
|
adds r2, r2, r4
|
|
mov r8, r2
|
|
movs r0, #0
|
|
ldrsh r3, [r2, r0]
|
|
str r3, [sp, #0x20]
|
|
ldr r2, _080186C8 @ =IWRAM_START + 0x68
|
|
adds r2, r2, r4
|
|
mov sb, r2
|
|
movs r3, #0
|
|
ldrsh r0, [r2, r3]
|
|
str r0, [sp]
|
|
ldr r0, _080186CC @ =IWRAM_START + 0x54
|
|
adds r0, r0, r4
|
|
mov sl, r0
|
|
ldrh r0, [r0]
|
|
lsrs r0, r0, #7
|
|
movs r2, #1
|
|
ands r0, r2
|
|
str r0, [sp, #4]
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
adds r0, r6, #0
|
|
mov r2, ip
|
|
ldr r3, [sp, #0x20]
|
|
bl sub_800D0A0
|
|
adds r4, r0, #0
|
|
ldr r0, _080186D0 @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
bne _08018718
|
|
cmp r4, #0
|
|
bne _08018718
|
|
ldrh r2, [r5]
|
|
movs r3, #0
|
|
ldrsh r1, [r5, r3]
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #2
|
|
cmp r1, r0
|
|
ble _080186DC
|
|
ldr r5, _080186D4 @ =0xFFFFFA60
|
|
adds r1, r2, r5
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
ldr r0, _080186D8 @ =0xFFFFFCA0
|
|
adds r2, r0, #0
|
|
b _080186EC
|
|
.align 2, 0
|
|
_080186C0: .4byte IWRAM_START + 0x50
|
|
_080186C4: .4byte IWRAM_START + 0x52
|
|
_080186C8: .4byte IWRAM_START + 0x68
|
|
_080186CC: .4byte IWRAM_START + 0x54
|
|
_080186D0: .4byte gGameMode
|
|
_080186D4: .4byte 0xFFFFFA60
|
|
_080186D8: .4byte 0xFFFFFCA0
|
|
_080186DC:
|
|
movs r0, #0xb4
|
|
lsls r0, r0, #3
|
|
adds r1, r2, r0
|
|
lsls r1, r1, #0x10
|
|
asrs r1, r1, #0x10
|
|
movs r3, #0xd8
|
|
lsls r3, r3, #2
|
|
adds r2, r3, #0
|
|
_080186EC:
|
|
ldrh r7, [r7]
|
|
adds r2, r2, r7
|
|
lsls r2, r2, #0x10
|
|
asrs r2, r2, #0x10
|
|
mov r5, r8
|
|
movs r7, #0
|
|
ldrsh r3, [r5, r7]
|
|
mov r5, sb
|
|
movs r7, #0
|
|
ldrsh r0, [r5, r7]
|
|
str r0, [sp]
|
|
mov r5, sl
|
|
ldrh r0, [r5]
|
|
lsrs r0, r0, #7
|
|
movs r7, #1
|
|
ands r0, r7
|
|
str r0, [sp, #4]
|
|
str r4, [sp, #8]
|
|
adds r0, r6, #0
|
|
_08018712:
|
|
bl sub_800D0A0
|
|
adds r4, r0, #0
|
|
_08018718:
|
|
ldr r0, [r6, #0x4c]
|
|
movs r1, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08018736
|
|
adds r0, r4, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08018736
|
|
ldr r0, _0801875C @ =gPlayer
|
|
ldr r1, [r0, #0x20]
|
|
movs r2, #0x21
|
|
rsbs r2, r2, #0
|
|
ands r1, r2
|
|
str r1, [r0, #0x20]
|
|
_08018736:
|
|
str r4, [r6, #0x4c]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xe
|
|
ands r0, r4
|
|
cmp r0, #0
|
|
beq _0801874A
|
|
adds r1, r6, #0
|
|
adds r1, #0x60
|
|
movs r0, #0x1e
|
|
strb r0, [r1]
|
|
_0801874A:
|
|
movs r0, #0
|
|
_0801874C:
|
|
add sp, #0x24
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801875C: .4byte gPlayer
|
|
|
|
thumb_func_start sub_8018760
|
|
sub_8018760: @ 0x08018760
|
|
push {r4, r5, r6, lr}
|
|
ldr r6, _080187D0 @ =gPlayer
|
|
adds r0, r6, #0
|
|
adds r0, #0x90
|
|
ldr r2, [r0]
|
|
ldr r0, [r2, #0x1c]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #7
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080187E4
|
|
ldr r5, _080187D4 @ =gCurTask
|
|
ldr r0, [r5]
|
|
ldrh r4, [r0, #6]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
adds r4, r4, r0
|
|
ldr r0, [r6, #0x20]
|
|
ldr r1, _080187D8 @ =0xFFDFFFFF
|
|
ands r0, r1
|
|
ldr r1, _080187DC @ =0xFF7FFFFF
|
|
ands r0, r1
|
|
movs r1, #9
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
ldr r1, _080187E0 @ =0xFFFFFEFF
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
adds r1, r6, #0
|
|
adds r1, #0x64
|
|
movs r0, #0x26
|
|
strh r0, [r1]
|
|
adds r1, r2, #0
|
|
adds r1, #0x2d
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r6, #0
|
|
movs r1, #0xe
|
|
bl sub_8023B5C
|
|
movs r0, #6
|
|
strb r0, [r6, #0x16]
|
|
movs r0, #0xe
|
|
strb r0, [r6, #0x17]
|
|
movs r0, #0x99
|
|
bl m4aSongNumStart
|
|
ldrh r0, [r4]
|
|
strh r0, [r6, #0x12]
|
|
ldr r0, [r5]
|
|
bl TaskDestroy
|
|
b _08018804
|
|
.align 2, 0
|
|
_080187D0: .4byte gPlayer
|
|
_080187D4: .4byte gCurTask
|
|
_080187D8: .4byte 0xFFDFFFFF
|
|
_080187DC: .4byte 0xFF7FFFFF
|
|
_080187E0: .4byte 0xFFFFFEFF
|
|
_080187E4:
|
|
adds r0, r6, #0
|
|
adds r0, #0x64
|
|
movs r1, #0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, #0x6d
|
|
beq _08018804
|
|
ldr r0, [r6, #0x20]
|
|
ldr r1, _0801880C @ =0xFFDFFFFF
|
|
ands r0, r1
|
|
ldr r1, _08018810 @ =0xFF7FFFFF
|
|
ands r0, r1
|
|
str r0, [r6, #0x20]
|
|
ldr r0, _08018814 @ =gCurTask
|
|
ldr r0, [r0]
|
|
bl TaskDestroy
|
|
_08018804:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801880C: .4byte 0xFFDFFFFF
|
|
_08018810: .4byte 0xFF7FFFFF
|
|
_08018814: .4byte gCurTask
|
|
|
|
thumb_func_start sub_8018818
|
|
sub_8018818: @ 0x08018818
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r0, _0801886C @ =gGameMode
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
bls _08018864
|
|
ldr r1, _08018870 @ =gMultiplayerPlayerTasks
|
|
ldr r0, [r1]
|
|
ldr r7, _08018874 @ =gPlayer
|
|
cmp r0, #0
|
|
beq _08018854
|
|
movs r6, #0xc0
|
|
lsls r6, r6, #0x12
|
|
movs r5, #3
|
|
rsbs r5, r5, #0
|
|
adds r3, r1, #0
|
|
adds r2, r3, #0
|
|
adds r4, r3, #0
|
|
adds r4, #0xc
|
|
_0801883C:
|
|
ldm r2!, {r0}
|
|
ldrh r1, [r0, #6]
|
|
adds r1, r1, r6
|
|
ldr r0, [r1, #0x5c]
|
|
ands r0, r5
|
|
str r0, [r1, #0x5c]
|
|
adds r3, #4
|
|
cmp r2, r4
|
|
bhi _08018854
|
|
ldr r0, [r3]
|
|
cmp r0, #0
|
|
bne _0801883C
|
|
_08018854:
|
|
movs r0, #0x78
|
|
strh r0, [r7, #0x2c]
|
|
adds r2, r7, #0
|
|
adds r2, #0x37
|
|
ldrb r1, [r2]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
_08018864:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801886C: .4byte gGameMode
|
|
_08018870: .4byte gMultiplayerPlayerTasks
|
|
_08018874: .4byte gPlayer
|
|
|
|
thumb_func_start sub_8018878
|
|
sub_8018878: @ 0x08018878
|
|
push {lr}
|
|
ldrh r0, [r0, #6]
|
|
movs r2, #0xc0
|
|
lsls r2, r2, #0x12
|
|
adds r2, r0, r2
|
|
ldr r1, _0801889C @ =gMultiplayerPlayerTasks
|
|
ldr r3, _080188A0 @ =IWRAM_START + 0x56
|
|
adds r0, r0, r3
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
movs r1, #0
|
|
str r1, [r0]
|
|
ldr r0, [r2, #4]
|
|
bl VramFree
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801889C: .4byte gMultiplayerPlayerTasks
|
|
_080188A0: .4byte IWRAM_START + 0x56
|
|
|
|
thumb_func_start sub_80188A4
|
|
sub_80188A4: @ 0x080188A4
|
|
push {r4, r5, lr}
|
|
sub sp, #4
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x10
|
|
lsrs r4, r4, #0x10
|
|
ldr r0, _080188F4 @ =sub_8018760
|
|
movs r2, #0x80
|
|
lsls r2, r2, #6
|
|
movs r5, #0
|
|
str r5, [sp]
|
|
movs r1, #2
|
|
movs r3, #0
|
|
bl TaskCreate
|
|
ldrh r0, [r0, #6]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0x12
|
|
adds r0, r0, r1
|
|
strh r4, [r0]
|
|
ldr r3, _080188F8 @ =gPlayer
|
|
ldr r1, [r3, #0x20]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xe
|
|
orrs r1, r0
|
|
adds r0, r3, #0
|
|
adds r0, #0x5c
|
|
strh r5, [r0]
|
|
adds r2, r3, #0
|
|
adds r2, #0x64
|
|
movs r0, #0x6d
|
|
strh r0, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x10
|
|
orrs r1, r0
|
|
str r1, [r3, #0x20]
|
|
add sp, #4
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080188F4: .4byte sub_8018760
|
|
_080188F8: .4byte gPlayer
|