From 64c975dde3d7a87014ee231df5f52ebe98ff891e Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 7 Mar 2025 08:31:56 +0000 Subject: [PATCH] more --- arm9/asm/player_avatar_asm.s | 239 ++++----------------------- arm9/asm/unk_0204C1B4.s | 12 +- arm9/asm/unk_0204CB20.s | 4 +- arm9/asm/unk_02053750.s | 12 +- arm9/asm/unk_020557F4.s | 94 +++++------ arm9/asm/unk_0205DD18.s | 2 +- arm9/asm/unk_0205E4EC.s | 4 +- arm9/asm/unk_020607D4.s | 2 +- arm9/global.inc | 20 +-- arm9/overlays/05/asm/ov05_021D74E0.s | 4 +- arm9/overlays/05/asm/ov05_021D80E8.s | 8 +- arm9/overlays/05/asm/ov05_021E5FD8.s | 4 +- arm9/overlays/05/src/ov05_021E72FC.c | 1 - arm9/overlays/06/asm/overlay_06.s | 24 +-- arm9/overlays/18/asm/overlay_18.s | 4 +- arm9/src/field_move.c | 5 +- arm9/src/map_object.c | 16 +- arm9/src/player_avatar.c | 142 +++++++++++++--- arm9/src/scrcmd.c | 12 +- arm9/src/unk_0206015C.c | 1 - include/constants/global_fieldmap.h | 1 + include/player_avatar.h | 45 ++++- 22 files changed, 309 insertions(+), 347 deletions(-) diff --git a/arm9/asm/player_avatar_asm.s b/arm9/asm/player_avatar_asm.s index 30257a47f..d61ad872e 100644 --- a/arm9/asm/player_avatar_asm.s +++ b/arm9/asm/player_avatar_asm.s @@ -1,181 +1,12 @@ .include "asm/macros.inc" .include "global.inc" + .extern PlayerAvatar_SetFlagsBits + .extern PlayerAvatar_ClearFlagsBits + .extern PlayerAvatar_GetFlagsBitsMask + .text - thumb_func_start PlayerAvatar_GetXCoord -PlayerAvatar_GetXCoord: ; 0x02055320 - push {r3, lr} - bl PlayerAvatar_GetMapObject - bl MapObject_GetCurrentX - pop {r3, pc} - - thumb_func_start PlayerAvatar_GetZCoord -PlayerAvatar_GetZCoord: ; 0x0205532C - push {r3, lr} - bl PlayerAvatar_GetMapObject - bl MapObject_GetCurrentZ - pop {r3, pc} - - thumb_func_start sub_02055338 -sub_02055338: ; 0x02055338 - push {r3, lr} - bl PlayerAvatar_GetMapObject - bl MapObject_GetPreviousX - pop {r3, pc} - - thumb_func_start sub_02055344 -sub_02055344: ; 0x02055344 - push {r3, lr} - bl PlayerAvatar_GetMapObject - bl MapObject_GetPreviousZ - pop {r3, pc} - - thumb_func_start sub_02055350 -sub_02055350: ; 0x02055350 - push {r4, lr} - add r4, r1, #0x0 - bl PlayerAvatar_GetMapObject - add r1, r4, #0x0 - bl MapObject_CopyPositionVector - pop {r4, pc} - - thumb_func_start sub_02055360 -sub_02055360: ; 0x02055360 - push {r3, lr} - bl sub_020553A4 - bl MapObject_GetPositionVector - pop {r3, pc} - - thumb_func_start sub_0205536C -sub_0205536C: ; 0x0205536C - str r1, [r0, #0x10] - bx lr - - thumb_func_start sub_02055370 -sub_02055370: ; 0x02055370 - ldr r0, [r0, #0x10] - bx lr - - thumb_func_start sub_02055374 -sub_02055374: ; 0x02055374 - str r1, [r0, #0x14] - bx lr - - thumb_func_start sub_02055378 -sub_02055378: ; 0x02055378 - ldr r0, [r0, #0x14] - bx lr - - thumb_func_start sub_0205537C -sub_0205537C: ; 0x0205537C - push {r4, lr} - add r4, r1, #0x0 - bl PlayerAvatar_GetMapObject - cmp r4, #0x1 - bne _02055392 - mov r1, #0x2 - lsl r1, r1, #0x8 - bl MapObject_ClearFlagsBits - pop {r4, pc} -_02055392: - mov r1, #0x2 - lsl r1, r1, #0x8 - bl MapObject_SetFlagsBits - pop {r4, pc} - - thumb_func_start PlayerAvatar_SetMapObject -PlayerAvatar_SetMapObject: ; 0x0205539C - str r1, [r0, #0x2c] - bx lr - - thumb_func_start PlayerAvatar_GetMapObject -PlayerAvatar_GetMapObject: ; 0x020553A0 - ldr r0, [r0, #0x2c] - bx lr - - thumb_func_start sub_020553A4 -sub_020553A4: ; 0x020553A4 - ldr r0, [r0, #0x2c] - bx lr - - thumb_func_start PlayerAvatar_SetState -PlayerAvatar_SetState: ; 0x020553A8 - push {r3-r5, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - cmp r4, #0x3 - blt _020553B6 - bl GF_AssertFail -_020553B6: - add r0, r5, #0x0 - add r1, r4, #0x0 - str r4, [r5, #0x18] - bl sub_020554DC - pop {r3-r5, pc} - .balign 4 - - thumb_func_start PlayerAvatar_GetState -PlayerAvatar_GetState: ; 0x020553C4 - push {r4, lr} - add r4, r0, #0x0 - bne _020553CE - bl GF_AssertFail -_020553CE: - ldr r0, [r4, #0x18] - pop {r4, pc} - .balign 4 - - thumb_func_start PlayerAvatar_OrrTransitionFlags -PlayerAvatar_OrrTransitionFlags: ; 0x020553D4 - ldr r2, [r0, #0x4] - orr r1, r2 - str r1, [r0, #0x4] - bx lr - - thumb_func_start PlayerAvatar_SetTransitionFlags -PlayerAvatar_SetTransitionFlags: ; 0x020553DC - str r1, [r0, #0x4] - bx lr - - thumb_func_start PlayerAvatar_GetTransitionFlags -PlayerAvatar_GetTransitionFlags: ; 0x020553E0 - ldr r0, [r0, #0x4] - bx lr - - thumb_func_start PlayerAvatar_SetGender -PlayerAvatar_SetGender: ; 0x020553E4 - str r1, [r0, #0x1c] - bx lr - - thumb_func_start PlayerAvatar_GetGender -PlayerAvatar_GetGender: ; 0x020553E8 - ldr r0, [r0, #0x1c] - bx lr - - thumb_func_start sub_020553EC -sub_020553EC: ; 0x020553EC - ldr r2, [r0, #0x0] - orr r1, r2 - str r1, [r0, #0x0] - bx lr - - thumb_func_start sub_020553F4 -sub_020553F4: ; 0x020553F4 - ldr r2, [r0, #0x0] - mvn r1, r1 - and r1, r2 - str r1, [r0, #0x0] - bx lr - .balign 4 - - thumb_func_start sub_02055400 -sub_02055400: ; 0x02055400 - ldr r0, [r0, #0x0] - and r0, r1 - bx lr - .balign 4 - thumb_func_start sub_02055408 sub_02055408: ; 0x02055408 ldr r0, [r0, #0x20] @@ -376,10 +207,10 @@ sub_020554EC: ; 0x020554EC bl LocalMapObject_SetPositionFromVectorAndDirection add r0, r5, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x0 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r4-r6, pc} .balign 4 @@ -398,10 +229,10 @@ sub_02055514: ; 0x02055514 bl MapObject_SetPositionFromXYZAndDirection add r0, r5, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x0 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} thumb_func_start sub_02055540 @@ -626,11 +457,11 @@ sub_0205569C: ; 0x0205569C cmp r1, #0x1 bne _020556AA mov r1, #0x1 - bl sub_020553EC + bl PlayerAvatar_SetFlagsBits pop {r3, pc} _020556AA: mov r1, #0x1 - bl sub_020553F4 + bl PlayerAvatar_ClearFlagsBits pop {r3, pc} .balign 4 @@ -638,7 +469,7 @@ _020556AA: sub_020556B4: ; 0x020556B4 push {r3, lr} mov r1, #0x1 - bl sub_02055400 + bl PlayerAvatar_GetFlagsBitsMask cmp r0, #0x0 beq _020556C4 mov r0, #0x1 @@ -653,11 +484,11 @@ sub_020556C8: ; 0x020556C8 cmp r1, #0x1 bne _020556D6 mov r1, #0x2 - bl sub_020553EC + bl PlayerAvatar_SetFlagsBits pop {r3, pc} _020556D6: mov r1, #0x2 - bl sub_020553F4 + bl PlayerAvatar_ClearFlagsBits pop {r3, pc} .balign 4 @@ -665,7 +496,7 @@ _020556D6: sub_020556E0: ; 0x020556E0 push {r3, lr} mov r1, #0x2 - bl sub_02055400 + bl PlayerAvatar_GetFlagsBitsMask cmp r0, #0x0 beq _020556F0 mov r0, #0x1 @@ -680,11 +511,11 @@ sub_020556F4: ; 0x020556F4 cmp r1, #0x1 bne _02055702 mov r1, #0x4 - bl sub_020553EC + bl PlayerAvatar_SetFlagsBits pop {r3, pc} _02055702: mov r1, #0x4 - bl sub_020553F4 + bl PlayerAvatar_ClearFlagsBits pop {r3, pc} .balign 4 @@ -692,7 +523,7 @@ _02055702: sub_0205570C: ; 0x0205570C push {r3, lr} mov r1, #0x4 - bl sub_02055400 + bl PlayerAvatar_GetFlagsBitsMask cmp r0, #0x0 beq _0205571C mov r0, #0x1 @@ -707,11 +538,11 @@ sub_02055720: ; 0x02055720 cmp r1, #0x1 bne _0205572E mov r1, #0x8 - bl sub_020553EC + bl PlayerAvatar_SetFlagsBits pop {r3, pc} _0205572E: mov r1, #0x8 - bl sub_020553F4 + bl PlayerAvatar_ClearFlagsBits pop {r3, pc} .balign 4 @@ -719,7 +550,7 @@ _0205572E: sub_02055738: ; 0x02055738 push {r3, lr} mov r1, #0x8 - bl sub_02055400 + bl PlayerAvatar_GetFlagsBitsMask cmp r0, #0x0 beq _02055748 mov r0, #0x1 @@ -734,11 +565,11 @@ sub_0205574C: ; 0x0205574C cmp r1, #0x1 bne _0205575A mov r1, #0x10 - bl sub_020553EC + bl PlayerAvatar_SetFlagsBits pop {r3, pc} _0205575A: mov r1, #0x10 - bl sub_020553F4 + bl PlayerAvatar_ClearFlagsBits pop {r3, pc} .balign 4 @@ -746,7 +577,7 @@ _0205575A: sub_02055764: ; 0x02055764 push {r3, lr} mov r1, #0x10 - bl sub_02055400 + bl PlayerAvatar_GetFlagsBitsMask cmp r0, #0x0 beq _02055774 mov r0, #0x1 @@ -761,11 +592,11 @@ sub_02055778: ; 0x02055778 cmp r1, #0x1 bne _02055786 mov r1, #0x20 - bl sub_020553EC + bl PlayerAvatar_SetFlagsBits pop {r3, pc} _02055786: mov r1, #0x20 - bl sub_020553F4 + bl PlayerAvatar_ClearFlagsBits pop {r3, pc} .balign 4 @@ -773,7 +604,7 @@ _02055786: sub_02055790: ; 0x02055790 push {r3, lr} mov r1, #0x20 - bl sub_02055400 + bl PlayerAvatar_GetFlagsBitsMask cmp r0, #0x0 beq _020557A0 mov r0, #0x1 @@ -784,25 +615,25 @@ _020557A0: thumb_func_start sub_020557A4 sub_020557A4: ; 0x020557A4 - ldr r3, _020557AC ; =sub_020553EC + ldr r3, _020557AC ; =PlayerAvatar_SetFlagsBits mov r1, #0x40 bx r3 nop -_020557AC: .word sub_020553EC +_020557AC: .word PlayerAvatar_SetFlagsBits thumb_func_start sub_020557B0 sub_020557B0: ; 0x020557B0 - ldr r3, _020557B8 ; =sub_020553F4 + ldr r3, _020557B8 ; =PlayerAvatar_ClearFlagsBits mov r1, #0x40 bx r3 nop -_020557B8: .word sub_020553F4 +_020557B8: .word PlayerAvatar_ClearFlagsBits thumb_func_start sub_020557BC sub_020557BC: ; 0x020557BC push {r3, lr} mov r1, #0x40 - bl sub_02055400 + bl PlayerAvatar_GetFlagsBitsMask cmp r0, #0x0 beq _020557CC mov r0, #0x1 @@ -817,18 +648,18 @@ sub_020557D0: ; 0x020557D0 cmp r1, #0x1 bne _020557DE mov r1, #0x80 - bl sub_020553EC + bl PlayerAvatar_SetFlagsBits pop {r3, pc} _020557DE: mov r1, #0x80 - bl sub_020553F4 + bl PlayerAvatar_ClearFlagsBits pop {r3, pc} .balign 4 thumb_func_start sub_020557E8 sub_020557E8: ; 0x020557E8 - ldr r3, _020557F0 ; =sub_02055400 + ldr r3, _020557F0 ; =PlayerAvatar_GetFlagsBitsMask mov r1, #0x80 bx r3 nop -_020557F0: .word sub_02055400 +_020557F0: .word PlayerAvatar_GetFlagsBitsMask diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s index 1f8450a6b..8a281ea3d 100644 --- a/arm9/asm/unk_0204C1B4.s +++ b/arm9/asm/unk_0204C1B4.s @@ -1007,7 +1007,7 @@ sub_0204C984: ; 0x0204C984 add r4, r0, #0x0 ldr r0, [r5, #0x38] add r1, sp, #0x4 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector cmp r4, #0x3 bne _0204C9AA mov r0, #0x1 @@ -1036,11 +1036,11 @@ _0204C9B4: add r2, r4, #0x0 bl sub_020554EC ldr r0, [r5, #0x38] - bl sub_02055360 + bl PlayerAvatar_GetPositionVectorConst ldr r1, [r5, #0x20] bl Camera_SetLookAtTargetAndRecalcPos ldr r0, [r5, #0x38] - bl sub_02055360 + bl PlayerAvatar_GetPositionVectorConst ldr r1, [r5, #0x20] bl Camera_SetFixedTarget add sp, #0x10 @@ -1056,7 +1056,7 @@ sub_0204C9EC: ; 0x0204C9EC add r4, r0, #0x0 ldr r0, [r5, #0x38] add r1, sp, #0x4 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r0, [r5, #0x38] bl PlayerAvatar_GetXCoord add r6, r0, #0x0 @@ -1102,11 +1102,11 @@ _0204CA48: add r2, r4, #0x0 bl sub_020554EC ldr r0, [r5, #0x38] - bl sub_02055360 + bl PlayerAvatar_GetPositionVectorConst ldr r1, [r5, #0x20] bl Camera_SetLookAtTargetAndRecalcPos ldr r0, [r5, #0x38] - bl sub_02055360 + bl PlayerAvatar_GetPositionVectorConst ldr r1, [r5, #0x20] bl Camera_SetFixedTarget add sp, #0x10 diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s index a51875fec..7df00412b 100644 --- a/arm9/asm/unk_0204CB20.s +++ b/arm9/asm/unk_0204CB20.s @@ -953,13 +953,13 @@ sub_0204D248: ; 0x0204D248 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl sub_02055370 + bl PlayerAvatar_GetUnk10 add r4, r0, #0x0 ldr r0, _0204D2A8 ; =UNK_021C5A68 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl sub_02055378 + bl PlayerAvatar_GetUnk14 add r5, r0, #0x0 cmp r4, #0x0 bne _0204D292 diff --git a/arm9/asm/unk_02053750.s b/arm9/asm/unk_02053750.s index 4f4e16eb5..09343a092 100644 --- a/arm9/asm/unk_02053750.s +++ b/arm9/asm/unk_02053750.s @@ -100,7 +100,7 @@ _02053786: ldr r0, [r4, #0x0] mov r1, #0x0 ldr r0, [r0, #0x38] - bl sub_0205537C + bl PlayerAvatar_ToggleVisible mov r0, #0x6 lsl r0, r0, #0x6 ldr r1, [r4, r0] @@ -292,7 +292,7 @@ _020538FA: ldr r0, [r4, #0x0] mov r1, #0x0 ldr r0, [r0, #0x38] - bl sub_0205537C + bl PlayerAvatar_ToggleVisible mov r0, #0x6 lsl r0, r0, #0x6 ldr r1, [r4, r0] @@ -380,7 +380,7 @@ _020539A2: ldr r0, [r4, #0x0] mov r1, #0x1 ldr r0, [r0, #0x38] - bl sub_0205537C + bl PlayerAvatar_ToggleVisible add sp, #0x10 pop {r3-r5, pc} _020539C4: @@ -448,7 +448,7 @@ _02053A36: ldr r0, [r4, #0x0] mov r1, #0x0 ldr r0, [r0, #0x38] - bl sub_0205537C + bl PlayerAvatar_ToggleVisible mov r0, #0x6 lsl r0, r0, #0x6 ldr r1, [r4, r0] @@ -613,7 +613,7 @@ _02053B76: ldr r0, [r4, #0x0] mov r1, #0x0 ldr r0, [r0, #0x38] - bl sub_0205537C + bl PlayerAvatar_ToggleVisible mov r1, #0x57 lsl r1, r1, #0x2 add r0, r4, #0x0 @@ -680,7 +680,7 @@ _02053BF2: ldr r0, [r4, #0x0] mov r1, #0x1 ldr r0, [r0, #0x38] - bl sub_0205537C + bl PlayerAvatar_ToggleVisible mov r0, #0x61 mov r1, #0x6 lsl r0, r0, #0x2 diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index 6f8f21e94..fab27612e 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -178,7 +178,7 @@ sub_02055928: ; 0x02055928 cmp r0, #0x1 bne _02055964 add r0, r4, #0x0 - bl sub_02055370 + bl PlayerAvatar_GetUnk10 cmp r0, #0x1 bne _02055964 add r0, r4, #0x0 @@ -203,7 +203,7 @@ _02055964: sub_02055968: ; 0x02055968 push {r4-r6, lr} add r4, r0, #0x0 - bl sub_02055370 + bl PlayerAvatar_GetUnk10 cmp r0, #0x1 bne _02055A20 add r0, r4, #0x0 @@ -292,17 +292,17 @@ _02055A34: .word 0x00000653 sub_02055A38: ; 0x02055A38 push {r3-r7, lr} add r5, r0, #0x0 - bl sub_02055370 + bl PlayerAvatar_GetUnk10 add r6, r0, #0x0 add r0, r5, #0x0 - bl sub_02055378 + bl PlayerAvatar_GetUnk14 add r4, r0, #0x0 add r0, r5, #0x0 bl PlayerAvatar_GetMapObject add r7, r0, #0x0 add r0, r5, #0x0 mov r1, #0x0 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 mov r1, #0x0 add r0, r5, #0x0 mvn r1, r1 @@ -313,7 +313,7 @@ sub_02055A38: ; 0x02055A38 beq _02055A76 add r0, r5, #0x0 mov r1, #0x2 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} _02055A76: add r0, r7, #0x0 @@ -340,17 +340,17 @@ _02055A8E: _02055AA4: add r0, r5, #0x0 mov r1, #0x1 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} _02055AAE: add r0, r5, #0x0 mov r1, #0x2 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} _02055AB8: add r0, r5, #0x0 mov r1, #0x2 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} _02055AC2: add r0, r7, #0x0 @@ -371,12 +371,12 @@ _02055ADA: bne _02055AEC add r0, r5, #0x0 mov r1, #0x0 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} _02055AEC: add r0, r5, #0x0 mov r1, #0x3 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} _02055AF6: cmp r4, #0x0 @@ -385,12 +385,12 @@ _02055AF6: bne _02055B08 add r0, r5, #0x0 mov r1, #0x0 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 pop {r3-r7, pc} _02055B08: add r0, r5, #0x0 mov r1, #0x3 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 _02055B10: pop {r3-r7, pc} .balign 4 @@ -400,10 +400,10 @@ sub_02055B14: ; 0x02055B14 push {r4, lr} add r4, r0, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r4, #0x0 mov r1, #0x0 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 add r0, r4, #0x0 bl sub_02055410 pop {r4, pc} @@ -413,10 +413,10 @@ sub_02055B14: ; 0x02055B14 sub_02055B30: ; 0x02055B30 push {r3-r5, lr} add r5, r0, #0x0 - bl sub_02055370 + bl PlayerAvatar_GetUnk10 add r4, r0, #0x0 add r0, r5, #0x0 - bl sub_02055378 + bl PlayerAvatar_GetUnk14 cmp r4, #0x0 bne _02055B48 mov r0, #0x1 @@ -464,10 +464,10 @@ sub_02055B8C: ; 0x02055B8C add r5, r1, #0x0 add r4, r0, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r4, #0x0 mov r1, #0x0 - bl sub_02055374 + bl PlayerAvatar_SetUnk14 add r0, r4, #0x0 bl PlayerAvatar_GetMapObject add r4, r0, #0x0 @@ -610,7 +610,7 @@ sub_02055C78: ; 0x02055C78 bl sub_020556C8 add r0, r5, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x0 pop {r3-r7, pc} _02055CCA: @@ -650,7 +650,7 @@ _02055CE4: bl sub_0205543C add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x1 pop {r3-r7, pc} _02055D28: @@ -707,7 +707,7 @@ _02055D8E: _02055DA0: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x1 pop {r3-r7, pc} @@ -743,7 +743,7 @@ sub_02055DAC: ; 0x02055DAC bl sub_02056B5C add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x1 pop {r3-r7, pc} _02055DFE: @@ -777,7 +777,7 @@ _02055E18: bl sub_0205569C add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x1 bl sub_02055778 @@ -804,7 +804,7 @@ _02055E62: bl sub_02056B5C add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 bl sub_020554BC cmp r0, #0x1 @@ -837,7 +837,7 @@ _02055EAC: bl sub_0205569C add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x1 bl sub_02055778 @@ -945,7 +945,7 @@ sub_02055F90: ; 0x02055F90 bl sub_02056B5C add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x3 bl sub_0205540C @@ -963,7 +963,7 @@ _02055FCE: bl sub_02055410 add r0, r5, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x0 bl sub_020556F4 @@ -1221,7 +1221,7 @@ sub_020561D0: ; 0x020561D0 bl sub_020561EC add r1, r0, #0x0 add r0, r5, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1289,7 +1289,7 @@ sub_02056244: ; 0x02056244 cmp r4, r1 bne _0205625C mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x0 pop {r3-r5, pc} _0205625C: @@ -1297,18 +1297,18 @@ _0205625C: cmp r0, r4 beq _0205627A add r0, r5, #0x0 - bl sub_02055370 + bl PlayerAvatar_GetUnk10 cmp r0, #0x1 beq _0205627A add r0, r5, #0x0 mov r1, #0x2 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x2 pop {r3-r5, pc} _0205627A: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x1 pop {r3-r5, pc} .balign 4 @@ -1673,7 +1673,7 @@ sub_0205653C: ; 0x0205653C bl sub_02056558 add r1, r0, #0x0 add r0, r5, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -1726,13 +1726,13 @@ sub_0205658C: ; 0x0205658C bne _020565AE add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x3 pop {r4-r6, pc} _020565AE: add r0, r5, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x0 pop {r4-r6, pc} _020565BA: @@ -1744,18 +1744,18 @@ _020565BA: cmp r6, r4 beq _020565E2 add r0, r5, #0x0 - bl sub_02055370 + bl PlayerAvatar_GetUnk10 cmp r0, #0x1 beq _020565E2 add r0, r5, #0x0 mov r1, #0x2 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x2 pop {r4-r6, pc} _020565E2: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x1 pop {r4-r6, pc} .balign 4 @@ -2060,7 +2060,7 @@ sub_02056858: ; 0x02056858 bl sub_02056874 add r1, r0, #0x0 add r0, r5, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 add r0, r4, #0x0 pop {r3-r5, pc} .balign 4 @@ -2114,13 +2114,13 @@ sub_020568A8: ; 0x020568A8 bge _020568CC add r0, r5, #0x0 mov r1, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x0 pop {r4-r6, pc} _020568CC: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x3 pop {r4-r6, pc} _020568D8: @@ -2129,26 +2129,26 @@ _020568D8: cmp r0, r4 beq _02056908 add r0, r5, #0x0 - bl sub_02055370 + bl PlayerAvatar_GetUnk10 cmp r0, #0x1 beq _02056908 cmp r6, #0x2 bge _020568FC add r0, r5, #0x0 mov r1, #0x2 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x2 pop {r4-r6, pc} _020568FC: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x3 pop {r4-r6, pc} _02056908: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 mov r0, #0x1 pop {r4-r6, pc} @@ -3245,7 +3245,7 @@ sub_02057194: ; 0x02057194 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl sub_0205536C + bl PlayerAvatar_SetUnk10 cmp r4, #0x0 bne _020571C6 add r0, r5, #0x0 diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s index 6f7419b1a..3e5ac981f 100644 --- a/arm9/asm/unk_0205DD18.s +++ b/arm9/asm/unk_0205DD18.s @@ -88,7 +88,7 @@ sub_0205DD80: ; 0x0205DD80 strb r1, [r0, #0x3] ldr r0, [sp, #0xc] ldr r0, [r0, #0x38] - bl sub_02055360 + bl PlayerAvatar_GetPositionVectorConst str r0, [sp, #0x1c] ldr r0, [sp, #0x18] mov r5, #0x0 diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s index 580ac9ce1..c1fec71a1 100644 --- a/arm9/asm/unk_0205E4EC.s +++ b/arm9/asm/unk_0205E4EC.s @@ -263,10 +263,10 @@ sub_0205E698: ; 0x0205E698 bl MapObject_GetCurrentZ add r7, r0, #0x0 add r0, r4, #0x0 - bl sub_02055338 + bl PlayerAvatar_GetPreviousXCoord add r6, r0, #0x0 add r0, r4, #0x0 - bl sub_02055344 + bl PlayerAvatar_GetPreviousZCoord add r4, r0, #0x0 ldr r0, [sp, #0x0] cmp r0, r6 diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s index ab7c3146f..f17e49bbc 100644 --- a/arm9/asm/unk_020607D4.s +++ b/arm9/asm/unk_020607D4.s @@ -122,7 +122,7 @@ _02060892: str r0, [r4, #0x7c] ldr r0, [r5, #0x38] add r1, #0x24 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r0, [r5, #0x20] bl Camera_ClearFixedTarget add r0, r4, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index 0b8de1eaf..fba090f24 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3903,19 +3903,19 @@ .extern PlayerAvatar_GetNextFacingDirection .extern PlayerAvatar_GetXCoord .extern PlayerAvatar_GetZCoord -.extern sub_02055338 -.extern sub_02055344 -.extern sub_02055350 -.extern sub_02055360 -.extern sub_0205536C -.extern sub_02055370 -.extern sub_02055374 -.extern sub_02055378 -.extern sub_0205537C +.extern PlayerAvatar_GetPreviousXCoord +.extern PlayerAvatar_GetPreviousZCoord +.extern PlayerAvatar_CopyPositionVector +.extern PlayerAvatar_GetPositionVectorConst +.extern PlayerAvatar_SetUnk10 +.extern PlayerAvatar_GetUnk10 +.extern PlayerAvatar_SetUnk14 +.extern PlayerAvatar_GetUnk14 +.extern PlayerAvatar_ToggleVisible .extern PlayerAvatar_GetMapObject .extern PlayerAvatar_SetState .extern PlayerAvatar_GetState -.extern PlayerAvatar_OrrTransitionFlags +.extern PlayerAvatar_SetTransitionFlagsBits .extern PlayerAvatar_SetTransitionFlags .extern PlayerAvatar_GetTransitionFlags .extern PlayerAvatar_GetGender diff --git a/arm9/overlays/05/asm/ov05_021D74E0.s b/arm9/overlays/05/asm/ov05_021D74E0.s index 9d4709a3a..2cb8aa080 100644 --- a/arm9/overlays/05/asm/ov05_021D74E0.s +++ b/arm9/overlays/05/asm/ov05_021D74E0.s @@ -1077,7 +1077,7 @@ _021D7DF6: ldr r0, [r4, #0x34] bl sub_02058774 ldr r0, [r4, #0x38] - bl sub_02055360 + bl PlayerAvatar_GetPositionVectorConst ldr r1, [r4, #0x24] bl ov05_021EF5E0 add r0, r4, #0 @@ -1109,7 +1109,7 @@ ov05_021D7E4C: ; 0x021D7E4C bl sub_02034E10 add r5, r0, #0 ldr r0, [r4, #0x38] - bl sub_02055360 + bl PlayerAvatar_GetPositionVectorConst add r1, r4, #0 add r2, r5, #0 mov r3, #1 diff --git a/arm9/overlays/05/asm/ov05_021D80E8.s b/arm9/overlays/05/asm/ov05_021D80E8.s index ed307408a..f7c303f5e 100644 --- a/arm9/overlays/05/asm/ov05_021D80E8.s +++ b/arm9/overlays/05/asm/ov05_021D80E8.s @@ -74,10 +74,10 @@ ov05_021D8164: ; 0x021D8164 add r4, r3, #0 bl ov05_021D80E8 ldr r0, [r7, #0x38] - bl sub_02055378 + bl PlayerAvatar_GetUnk14 str r0, [sp, #4] ldr r0, [r7, #0x38] - bl sub_02055370 + bl PlayerAvatar_GetUnk10 str r0, [sp] ldr r0, [r7, #0x38] bl PlayerAvatar_GetFacingDirection @@ -208,7 +208,7 @@ ov05_021D825C: ; 0x021D825C add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x38] - bl sub_02055378 + bl PlayerAvatar_GetUnk14 add r6, r0, #0 ldr r0, [r4, #0x1c] ldr r1, [r0] @@ -231,7 +231,7 @@ _021D8290: cmp r6, #0 bne _021D82EC ldr r0, [r4, #0x38] - bl sub_02055370 + bl PlayerAvatar_GetUnk10 ldrb r1, [r5, #2] lsl r2, r1, #0x18 asr r3, r2, #0x18 diff --git a/arm9/overlays/05/asm/ov05_021E5FD8.s b/arm9/overlays/05/asm/ov05_021E5FD8.s index f90f01cdd..508210b42 100644 --- a/arm9/overlays/05/asm/ov05_021E5FD8.s +++ b/arm9/overlays/05/asm/ov05_021E5FD8.s @@ -5,10 +5,10 @@ thumb_func_start Field_PlayerAvatar_OrrTransitionFlags Field_PlayerAvatar_OrrTransitionFlags: ; 0x021E5FD8 - ldr r3, _021E5FDC ; =PlayerAvatar_OrrTransitionFlags + ldr r3, _021E5FDC ; =PlayerAvatar_SetTransitionFlagsBits bx r3 .balign 4, 0 -_021E5FDC: .word PlayerAvatar_OrrTransitionFlags +_021E5FDC: .word PlayerAvatar_SetTransitionFlagsBits thumb_func_start Field_PlayerAvatar_ApplyTransitionFlags Field_PlayerAvatar_ApplyTransitionFlags: ; 0x021E5FE0 diff --git a/arm9/overlays/05/src/ov05_021E72FC.c b/arm9/overlays/05/src/ov05_021E72FC.c index 4f481747a..7b3138585 100644 --- a/arm9/overlays/05/src/ov05_021E72FC.c +++ b/arm9/overlays/05/src/ov05_021E72FC.c @@ -8,7 +8,6 @@ #include "map_object.h" #include "unk_020051F4.h" -extern LocalMapObject *PlayerAvatar_GetMapObject(PlayerAvatar *avatar); extern BOOL sub_02054B30(u8 param0); extern BOOL sub_02054B3C(u8 param0); extern BOOL sub_02054B48(u8 param0); diff --git a/arm9/overlays/06/asm/overlay_06.s b/arm9/overlays/06/asm/overlay_06.s index 18aabd56e..140603d45 100644 --- a/arm9/overlays/06/asm/overlay_06.s +++ b/arm9/overlays/06/asm/overlay_06.s @@ -16506,7 +16506,7 @@ MoveHearthomeGymElevator: ; 0x02241914 add r4, r0, #0 ldr r0, [r5, #0x38] add r1, sp, #0 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r0, [sp, #4] cmp r0, #0 ldr r0, [r5, #0x10] @@ -16760,7 +16760,7 @@ ov06_02241B40: ; 0x02241B40 ldr r0, [r4] add r1, sp, #0 ldr r0, [r0, #0x38] - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r1, [sp, #4] asr r0, r1, #0xf lsr r0, r0, #0x10 @@ -17339,7 +17339,7 @@ _02241FD8: bl ov05_021E7EA0 ldr r0, [r7, #0x38] add r1, sp, #4 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r0, [sp, #4] add r1, r5, #0 str r0, [sp, #0x10] @@ -17499,7 +17499,7 @@ _02242128: bl ov05_021E7EA0 ldr r0, [r6, #0x38] add r1, sp, #4 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r0, [sp, #0xc] add r1, r5, #0 str r0, [sp, #0x18] @@ -17779,7 +17779,7 @@ _02242342: blt _022422CC ldr r0, [r6, #0x38] add r1, sp, #0x38 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r0, [sp, #0x14] ldr r1, [sp, #0x3c] bl ov06_02241D90 @@ -17916,7 +17916,7 @@ ov06_0224249C: ; 0x0224249C ldr r0, [r0] add r1, sp, #8 ldr r0, [r0, #0x38] - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r1, [sp, #8] ldr r7, _02242524 ; =0x0224F8B8 asr r0, r1, #0xf @@ -24255,7 +24255,7 @@ ov06_02245544: ; 0x02245544 add r6, r0, #0 ldr r0, [r5, #0x38] add r1, sp, #4 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector mov r0, #2 ldr r1, [sp, #0xc] lsl r0, r0, #0xe @@ -43357,7 +43357,7 @@ ov06_0224E8C4: ; 0x0224E8C4 add r7, r1, #0 add r6, r0, #0 add r1, sp, #0 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector add r0, r6, #0 bl PlayerAvatar_GetXCoord add r5, r0, #0 @@ -43412,7 +43412,7 @@ ov06_0224E92C: ; 0x0224E92C sub sp, #0xc add r4, r1, #0 add r1, sp, #0 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r1, [sp] ldr r2, [sp, #4] ldr r3, [sp, #8] @@ -44046,7 +44046,7 @@ ov06_0224EDB0: ; 0x0224EDB0 _0224EDC8: add r0, r6, #0 add r1, sp, #0 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r2, [sp, #4] ldr r3, [sp, #8] ldr r1, [sp] @@ -44182,7 +44182,7 @@ ov06_0224EEC8: ; 0x0224EEC8 ldr r0, [r4, r0] add r1, sp, #0 ldr r0, [r0, #0x38] - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector mov r1, #0xcf lsl r1, r1, #4 ldr r2, [sp] @@ -44346,7 +44346,7 @@ _0224EFF0: add r1, #0x10 ldr r0, [r0, #0x38] add r1, r5, r1 - bl sub_02055350 + bl PlayerAvatar_CopyPositionVector ldr r0, _0224F028 ; =0x00000D0C mov r1, #0 str r1, [r5, r0] diff --git a/arm9/overlays/18/asm/overlay_18.s b/arm9/overlays/18/asm/overlay_18.s index c607c77c2..ade87a2de 100644 --- a/arm9/overlays/18/asm/overlay_18.s +++ b/arm9/overlays/18/asm/overlay_18.s @@ -37268,7 +37268,7 @@ _0224B8A4: beq _0224B970 ldr r0, [r4, #0x38] mov r1, #0 - bl sub_0205537C + bl PlayerAvatar_ToggleVisible mov r0, #1 add r1, r4, #0 bl ov18_0224B804 @@ -37318,7 +37318,7 @@ _0224B912: beq _0224B970 ldr r0, [r4, #0x38] mov r1, #1 - bl sub_0205537C + bl PlayerAvatar_ToggleVisible mov r0, #0 add r1, r4, #0 bl ov18_0224B804 diff --git a/arm9/src/field_move.c b/arm9/src/field_move.c index 911444877..cf18c0b62 100644 --- a/arm9/src/field_move.c +++ b/arm9/src/field_move.c @@ -61,8 +61,6 @@ static void FieldMove_UseChatter(FieldMoveUseData *useData, const FieldMoveCheck static BOOL Task_UseChatterInField(TaskManager *taskManager); extern void FieldSystem_GetFacingObject(FieldSystem *fieldSystem, LocalMapObject **object); -extern u16 PlayerAvatar_GetXCoord(PlayerAvatar *playerAvatar); -extern u16 PlayerAvatar_GetZCoord(PlayerAvatar *playerAvatar); extern u8 GetMetatileBehavior(FieldSystem *fieldSystem, s32 x, s32 z); extern void PlayerAvatar_GetCoordsInFront(PlayerAvatar *playerAvatar, s32 *x, s32 *z); extern BOOL Field_PlayerCanSurfOnTile(PlayerAvatar *fieldPlayerAvatar, u32 standingTile, u32 facingTile); @@ -76,7 +74,6 @@ extern BOOL Task_UseFlyInField(TaskManager *taksManager); extern void TownMap_Init(FieldSystem *fieldSystem, TownMapAppData *townMap, u32 param2); extern void TownMap_Show(FieldSystem *fieldSystem, TownMapAppData *townMap); extern void StartMenu_SetExitTaskFunc(StartMenuTaskData *startMenu, TaskFunc taskFunc); -extern u32 PlayerAvatar_GetState(PlayerAvatar *avatar); extern FieldMoveTaskEnvironment *FieldMoveTask_CreateTeleportEnvironment(FieldSystem *fieldSystem, Pokemon *mon, HeapID heapId); extern BOOL Task_FieldTeleport(TaskManager *taskManager); extern FieldMoveTaskEnvironment *FieldMoveTask_CreateDigEnvironment(FieldSystem *fieldSystem, Pokemon *mon, HeapID heapId); @@ -158,7 +155,7 @@ void FieldMove_InitCheckData(FieldSystem *fieldSystem, FieldMoveCheckData *check } u32 x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); - s32 z = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); + u32 z = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); u32 standingTile = GetMetatileBehavior(fieldSystem, x, z); PlayerAvatar_GetCoordsInFront(fieldSystem->playerAvatar, &x, &z); diff --git a/arm9/src/map_object.c b/arm9/src/map_object.c index e2a14cf53..a9a0589b5 100644 --- a/arm9/src/map_object.c +++ b/arm9/src/map_object.c @@ -24,13 +24,13 @@ static void sub_02057CF0(MapObjectManager *manager, LocalMapObject *object); static void MapObject_InitFromObjectEvent(LocalMapObject *object, ObjectEvent *objectEvent, FieldSystem *fieldSystem); static void MapObject_SetPositionVectorFromObjectEvent(LocalMapObject *object, ObjectEvent *objectEvent); static void sub_02057E90(LocalMapObject *object, MapObjectManager *manager); -/*static*/ void sub_02057EE0(LocalMapObject *object); +static void sub_02057EE0(LocalMapObject *object); static void sub_02057F18(LocalMapObject *object); static void MapObject_Clear(LocalMapObject *object); static u32 sub_02057F90(LocalMapObject *object, u32 mapId, u32 objectEventCount, ObjectEvent *objectEvents); static LocalMapObject *MapObjectManager_GetFirstObjectWithIDAndMap(MapObjectManager *manager, u32 objectId, u32 mapId); static void sub_02058148(LocalMapObject *object); -/*static*/ void sub_0205815C(LocalMapObject *object); +static void sub_0205815C(LocalMapObject *object); static void MapObject_NoOp(LocalMapObject *object); static u32 FieldSystem_ResolveObjectSpriteID(FieldSystem *fieldSystem, s32 spriteId); static void sub_0205818C(LocalMapObject *object); @@ -55,7 +55,7 @@ static u32 MapObject_GetFlags(LocalMapObject *object); static void MapObject_SetFlags2(LocalMapObject *object, u32 flags); static u32 MapObject_GetFlags2(LocalMapObject *object); static void MapObject_SetMapID(LocalMapObject *object, u32 mapId); -/*static*/ void MapObject_SetMovement(LocalMapObject *object, u32 movement); +static void MapObject_SetMovement(LocalMapObject *object, u32 movement); static u32 MapObject_GetEventFlag(LocalMapObject *object); static void MapObject_SetInitialFacingDirection(LocalMapObject *object, u32 initialFacing); static void sub_02058554(LocalMapObject *object, SysTask *sysTask); @@ -66,7 +66,7 @@ static MapObjectManager *MapObject_GetManagerFromManager(LocalMapObject *object) static void sub_02058630(LocalMapObject *object, LocalMapObject_UnkCallback callback); static void sub_02058644(LocalMapObject *object, LocalMapObject_UnkCallback callback); static void sub_02058658(LocalMapObject *object, LocalMapObject_UnkCallback callback); -/*static*/ void sub_02058660(LocalMapObject *object); +static void sub_02058660(LocalMapObject *object); static void sub_0205866C(LocalMapObject *object); static void sub_02058684(LocalMapObject *object, LocalMapObject_UnkCallback callback); static void sub_0205868C(LocalMapObject *object); @@ -637,7 +637,7 @@ static void sub_02057E90(LocalMapObject *object, MapObjectManager *manager) { // MapObject_ClearHeldMovement(object); } -/*static*/ void sub_02057EE0(LocalMapObject *object) { +static void sub_02057EE0(LocalMapObject *object) { UnkLMOCallbackStruct *unk = sub_02058D14(MapObject_GetMovement(object)); sub_02058630(object, sub_02058D2C(unk)); sub_02058644(object, sub_02058D30(unk)); @@ -760,7 +760,7 @@ static void sub_02058148(LocalMapObject *object) { sub_0205815C(object); } -/*static*/ void sub_0205815C(LocalMapObject *object) { +static void sub_0205815C(LocalMapObject *object) { MapObject_ClearFlagsBits(object, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK26 | MAPOBJECTFLAG_UNK24 | MAPOBJECTFLAG_UNK20 | MAPOBJECTFLAG_UNK15)); } @@ -1037,7 +1037,7 @@ u32 sub_0205845C(LocalMapObject *object) { return spriteId; } -/*static*/ void MapObject_SetMovement(LocalMapObject *object, u32 movement) { +static void MapObject_SetMovement(LocalMapObject *object, u32 movement) { object->movement = movement; } @@ -1258,7 +1258,7 @@ static void sub_02058658(LocalMapObject *object, LocalMapObject_UnkCallback call object->unkC0 = callback; } -/*static*/ void sub_02058660(LocalMapObject *object) { +static void sub_02058660(LocalMapObject *object) { object->unkC0(object); } diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index aefd4e3b6..4260807da 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -5,34 +5,30 @@ #include "map_object.h" static PlayerAvatar *PlayerAvatar_Create(void); -static void PlayerAvatar_Setup(PlayerAvatar *avatar, u32 state, u32 gender, PlayerSaveData *playerSaveData); -static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, u32 x, s32 z); +static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, PlayerSaveData *playerSaveData); +static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, u32 x, u32 z); static LocalMapObject *PlayerAvatar_GetActiveMapObjectWithMovement1(MapObjectManager *manager); +static LocalMapObject *PlayerAvatar_GetMapObjectConst(PlayerAvatar *avatar); +static void PlayerAvatar_SetGender(PlayerAvatar *avatar, u32 gender); +/*static*/ void PlayerAvatar_SetFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags); +/*static*/ void PlayerAvatar_ClearFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags); +/*static*/ PlayerAvatarFlags PlayerAvatar_GetFlagsBitsMask(PlayerAvatar *avatar, PlayerAvatarFlags flags); -extern u32 PlayerAvatar_GetSpriteByStateAndGender(u32 state, u32 gender); +extern u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender); extern u32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData); -extern void PlayerAvatar_SetMapObject(PlayerAvatar *avatar, LocalMapObject *mapObject); -extern LocalMapObject *PlayerAvatar_GetMapObject(PlayerAvatar *avatar); extern void ov05_021EDBC8(PlayerAvatar *avatar); -extern u32 PlayerAvatar_GetState(PlayerAvatar *avatar); -extern u32 PlayerAvatar_GetXCoord(PlayerAvatar *avatar); -extern s32 PlayerAvatar_GetZCoord(PlayerAvatar *avatar); -extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, s32 z, u32 direction, u32 param4); +extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, u32 z, u32 direction, u32 param4); extern void sub_02055450(PlayerAvatar *avatar, u32 param1); extern void PlayerAvatar_SetPlayerSaveData(PlayerAvatar *avatar, PlayerSaveData *saveData); -extern void sub_0205536C(PlayerAvatar *avatar, u32 param1); -extern void sub_02055374(PlayerAvatar *avatar, u32 param1); -extern void PlayerAvatar_SetState(PlayerAvatar *avatar, u32 state); -extern void PlayerAvatar_SetGender(PlayerAvatar *avatar, u32 gender); -extern void PlayerAvatar_SetTransitionFlags(PlayerAvatar *avatar, u32 flags); extern void sub_02055410(PlayerAvatar *avatar); extern void sub_0205542C(PlayerAvatar *avatar, s32 param1); extern void sub_02055434(PlayerAvatar *avatar, s32 param1); extern void sub_02055460(PlayerAvatar *avatar, u32 param1); extern void sub_020556C8(PlayerAvatar *avatar, u32 param1); extern void sub_0205574C(PlayerAvatar *avatar, u32 param1); +extern void sub_020554DC(PlayerAvatar *avatar, s32 state); -PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData) { +PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData) { PlayerAvatar *avatar = PlayerAvatar_Create(); PlayerAvatar_Setup(avatar, state, gender, playerSaveData); u32 sprite = PlayerAvatar_GetSpriteByStateAndGender(state, gender); @@ -42,7 +38,7 @@ PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, s3 PlayerAvatar *PlayerAvatar_CreateWithActiveMapObject(MapObjectManager *manager, PlayerSaveData *playerSaveData, u32 gender) { PlayerAvatar *avatar = PlayerAvatar_Create(); - u32 state = PlayerSaveData_GetState(playerSaveData); + s32 state = PlayerSaveData_GetState(playerSaveData); PlayerAvatar_Setup(avatar, state, gender, playerSaveData); LocalMapObject *mapObject = PlayerAvatar_GetActiveMapObjectWithMovement1(manager); MapObject_SetSpriteID(mapObject, PlayerAvatar_GetSpriteByStateAndGender(state, gender)); @@ -60,7 +56,7 @@ void sub_02055108(PlayerAvatar *avatar) { ov05_021EDBC8(avatar); if (PlayerAvatar_GetState(avatar) == PLAYER_STATE_SURFING) { u32 x = PlayerAvatar_GetXCoord(avatar); - s32 z = PlayerAvatar_GetZCoord(avatar); + u32 z = PlayerAvatar_GetZCoord(avatar); u32 direction = PlayerAvatar_GetFacingDirection(avatar); sub_02055450(avatar, ov06_0224ABAC(mapObject, x, z, direction, 1)); } @@ -82,10 +78,10 @@ static PlayerAvatar *PlayerAvatar_Create(void) { return avatar; } -static void PlayerAvatar_Setup(PlayerAvatar *avatar, u32 state, u32 gender, PlayerSaveData *playerSaveData) { +static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, PlayerSaveData *playerSaveData) { PlayerAvatar_SetPlayerSaveData(avatar, playerSaveData); - sub_0205536C(avatar, 0); - sub_02055374(avatar, 0); + PlayerAvatar_SetUnk10(avatar, 0); + PlayerAvatar_SetUnk14(avatar, 0); PlayerAvatar_SetState(avatar, state); PlayerAvatar_SetGender(avatar, gender); PlayerAvatar_SetTransitionFlags(avatar, 0); @@ -97,7 +93,7 @@ static void PlayerAvatar_Setup(PlayerAvatar *avatar, u32 state, u32 gender, Play sub_0205574C(avatar, 1); } -static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, u32 x, s32 z) { +static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, u32 x, u32 z) { LocalMapObject *mapObject = MapObject_Create(manager, x, z, direction, sprite, 1, 1); GF_ASSERT(mapObject != NULL); MapObject_SetID(mapObject, 255); @@ -143,3 +139,107 @@ void PlayerAvatar_SetFacingDirection(PlayerAvatar *avatar, u32 direction) { u32 PlayerAvatar_GetNextFacingDirection(PlayerAvatar *avatar) { return MapObject_GetNextFacingDirection(PlayerAvatar_GetMapObject(avatar)); } + +u32 PlayerAvatar_GetXCoord(PlayerAvatar *avatar) { + return MapObject_GetCurrentX(PlayerAvatar_GetMapObject(avatar)); +} + +u32 PlayerAvatar_GetZCoord(PlayerAvatar *avatar) { + return MapObject_GetCurrentZ(PlayerAvatar_GetMapObject(avatar)); +} + +u32 PlayerAvatar_GetPreviousXCoord(PlayerAvatar *avatar) { + return MapObject_GetPreviousX(PlayerAvatar_GetMapObject(avatar)); +} + +u32 PlayerAvatar_GetPreviousZCoord(PlayerAvatar *avatar) { + return MapObject_GetPreviousZ(PlayerAvatar_GetMapObject(avatar)); +} + +void PlayerAvatar_CopyPositionVector(PlayerAvatar *avatar, VecFx32 *vector) { + MapObject_CopyPositionVector(PlayerAvatar_GetMapObject(avatar), vector); +} + +VecFx32 *PlayerAvatar_GetPositionVectorConst(PlayerAvatar *avatar) { + return MapObject_GetPositionVector(PlayerAvatar_GetMapObjectConst(avatar)); +} + +void PlayerAvatar_SetUnk10(PlayerAvatar *avatar, u32 param1) { + avatar->unk10 = param1; +} + +u32 PlayerAvatar_GetUnk10(PlayerAvatar *avatar) { + return avatar->unk10; +} + +void PlayerAvatar_SetUnk14(PlayerAvatar *avatar, u32 param1) { + avatar->unk14 = param1; +} + +u32 PlayerAvatar_GetUnk14(PlayerAvatar *avatar) { + return avatar->unk14; +} + +void PlayerAvatar_ToggleVisible(PlayerAvatar *avatar, BOOL invisible) { + LocalMapObject *mapObject = PlayerAvatar_GetMapObject(avatar); + if (invisible == TRUE) { + MapObject_ClearFlagsBits(mapObject, MAPOBJECTFLAG_VISIBLE); + } else { + MapObject_SetFlagsBits(mapObject, MAPOBJECTFLAG_VISIBLE); + } +} + +void PlayerAvatar_SetMapObject(PlayerAvatar *avatar, LocalMapObject *mapObject) { + avatar->mapObject = mapObject; +} + +LocalMapObject *PlayerAvatar_GetMapObject(PlayerAvatar *avatar) { + return avatar->mapObject; +} + +static LocalMapObject *PlayerAvatar_GetMapObjectConst(PlayerAvatar *avatar) { + return avatar->mapObject; +} + +void PlayerAvatar_SetState(PlayerAvatar *avatar, s32 state) { + GF_ASSERT(state < PLAYER_STATE_UNK_SP); + avatar->state = state; + sub_020554DC(avatar, state); +} + +s32 PlayerAvatar_GetState(PlayerAvatar *avatar) { + GF_ASSERT(avatar != NULL); + return avatar->state; +} + +void PlayerAvatar_SetTransitionFlagsBits(PlayerAvatar *avatar, u32 flags) { + avatar->transitionFlags |= flags; +} + +void PlayerAvatar_SetTransitionFlags(PlayerAvatar *avatar, u32 flags) { + avatar->transitionFlags = flags; +} + +u32 PlayerAvatar_GetTransitionFlags(PlayerAvatar *avatar) { + return avatar->transitionFlags; +} + +static void PlayerAvatar_SetGender(PlayerAvatar *avatar, u32 gender) { + avatar->gender = gender; +} + +u32 PlayerAvatar_GetGender(PlayerAvatar *avatar) { + return avatar->gender; +} + +/*static*/ void PlayerAvatar_SetFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags) { + avatar->flags |= flags; +} + +/*static*/ void PlayerAvatar_ClearFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags) { + avatar->flags &= ~flags; +} + +/*static*/ PlayerAvatarFlags PlayerAvatar_GetFlagsBitsMask(PlayerAvatar *avatar, PlayerAvatarFlags flags) { + return (PlayerAvatarFlags)(avatar->flags & flags); +} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 74025fc40..068540aba 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -91,7 +91,6 @@ extern void ov05_021E2B9C(u32 param0, u8 param1); extern u32 sub_0205AEA4(LocalMapObject *event, const void *ptr); extern BOOL sub_0205AEF0(u32 param0); extern void sub_0205AEFC(u32 param0); -extern LocalMapObject *PlayerAvatar_GetMapObject(PlayerAvatar *playerAvatar); extern u32 sub_0205AE28(LocalMapObject *event); extern LocalMapObject *sub_0205E7C4(LocalMapObject *event); extern u32 sub_02034B64(FieldSystem *fieldSystem); @@ -101,8 +100,6 @@ extern VecFx32 *MapObject_GetPositionVector(LocalMapObject *target); extern void ov05_021EF5E0(VecFx32 *target, u32 param1); extern u32 sub_02059E74(u32 direction); extern void ov05_021F1EC0(LocalMapObject *event, u32 param1); -extern u16 PlayerAvatar_GetXCoord(PlayerAvatar *playerAvatar); -extern u16 PlayerAvatar_GetZCoord(PlayerAvatar *playerAvatar); extern u16 sub_02029E0C(SealCase *sealCase); extern u16 SealCase_CountSealOccurrenceAnywhere(SealCase *sealCase, u16 sealId); extern void sub_02029D44(SealCase *sealCase, u16 sealId, s16 amount); @@ -167,19 +164,16 @@ extern u32 LocalFieldData_GetWeatherType(LocalFieldData *localFieldData); extern void ov05_021DC174(u32 param0, u32 weather); extern void LocalFieldData_SetWeatherType(LocalFieldData *localFieldData, u32 weather); extern void CallFieldTask_Waterfall(TaskManager *taskManager, u32 playerDirection, u16 partyPosition); -extern u32 PlayerAvatar_GetGender(PlayerAvatar *avatar); extern void *ov06_0224666C(FieldSystem *fieldSystem, u32 param1, Pokemon *mon, u32 playerGender); extern BOOL ov06_022466A0(void *param0); extern void ov06_022466AC(void *param0); extern void ov05_021E7030(TaskManager *taskManager); -extern u32 PlayerAvatar_GetState(PlayerAvatar *avatar); extern void FieldSystem_SetSavedMusicId(FieldSystem *fieldSystem, u16 musicId); extern void FieldSystem_PlayOrFadeToNewMusicId(FieldSystem *fieldSystem, u16 musicId, u32 param2); extern void Field_PlayerAvatar_OrrTransitionFlags(PlayerAvatar *playerAvatar, u32 transitionFlags); extern void Field_PlayerAvatar_ApplyTransitionFlags(PlayerAvatar *playerAvatar); extern u16 FieldSystem_GetOverriddenMusicId(FieldSystem *fieldSystem, u32 mapId); extern void sub_02055720(PlayerAvatar *avatar, u8 action); -extern void PlayerAvatar_OrrTransitionFlags(PlayerAvatar *playerAvatar, u32 transitionFlags); extern RoamerSaveData *Save_Roamers_Get(SaveData *save); extern u32 Roamers_GetRand(RoamerSaveData *roamerSaveData, u32 index); extern void GetSwarmInfoFromRand(u32 rand, u16 *map, u16 *species); @@ -1797,10 +1791,10 @@ BOOL ScrCmd_GetPlayerPosition(ScriptContext *ctx) { // 0069 FieldSystem *fieldSystem = ctx->fieldSystem; u16 *x = ScriptGetVarPointer(ctx); - u16 *y = ScriptGetVarPointer(ctx); + u16 *z = ScriptGetVarPointer(ctx); *x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); - *y = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); + *z = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); return FALSE; } @@ -2642,7 +2636,7 @@ BOOL ScrCmd_GetPlayerState(ScriptContext *ctx) { // 00CA BOOL ScrCmd_SetPlayerState(ScriptContext *ctx) { // 00CB u16 state = ScriptReadHalfword(ctx); - PlayerAvatar_OrrTransitionFlags(ctx->fieldSystem->playerAvatar, state); + PlayerAvatar_SetTransitionFlagsBits(ctx->fieldSystem->playerAvatar, state); return TRUE; } diff --git a/arm9/src/unk_0206015C.c b/arm9/src/unk_0206015C.c index 1a6dfe14d..f4282629a 100644 --- a/arm9/src/unk_0206015C.c +++ b/arm9/src/unk_0206015C.c @@ -30,7 +30,6 @@ extern u32 ov06_022451F0(u32); extern void sub_02049160(struct TaskManager *taskManager, u32); extern void sub_0204C1B4(struct TaskManager *taskManager, u32, u32, u32, u32, u32, u32, u32); -extern LocalMapObject *PlayerAvatar_GetMapObject(struct PlayerAvatar *playerAvatar); extern void sub_0205F1C4(struct SaveVarsFlags *); extern void sub_0205F1D4(struct SaveVarsFlags *); extern void sub_0206367C(struct FieldSystem *, u32); diff --git a/include/constants/global_fieldmap.h b/include/constants/global_fieldmap.h index 94d6362ed..01fadc05b 100644 --- a/include/constants/global_fieldmap.h +++ b/include/constants/global_fieldmap.h @@ -11,6 +11,7 @@ #define PLAYER_STATE_WALKING 0 #define PLAYER_STATE_CYCLING 1 #define PLAYER_STATE_SURFING 2 +#define PLAYER_STATE_UNK_SP 3 // Player transition bits #define PLAYER_TRANSITION_WALKING 1 << 0 diff --git a/include/player_avatar.h b/include/player_avatar.h index 8816441fe..73d251b17 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -1,19 +1,41 @@ #ifndef POKEDIAMOND_PLAYER_AVATAR_H #define POKEDIAMOND_PLAYER_AVATAR_H +#include "nitro/FX_types.h" + #include "global.h" #include "field_types_def.h" +typedef enum PlayerAvatarFlags { + AVATAR_FLAG_UNK0 = (1 << 0), + AVATAR_FLAG_UNK1 = (1 << 1), + AVATAR_FLAG_UNK2 = (1 << 2), + AVATAR_FLAG_LOCK_BIKE_STATE = (1 << 3), // Blocks the player from mounting/dismounting their bike (though this was intended to stop dismounting during Cycling Road) + AVATAR_FLAG_UNK4 = (1 << 4), + AVATAR_FLAG_UNK5 = (1 << 5), + AVATAR_FLAG_UNK6 = (1 << 6), + AVATAR_FLAG_UNK7 = (1 << 7), +} PlayerAvatarFlags; // TODO: check if this is right + typedef struct PlayerSaveData { u8 padding[0x8]; } PlayerSaveData; struct PlayerAvatar { - u8 padding0[0x3C]; + PlayerAvatarFlags flags; + u32 transitionFlags; + u8 padding0[0x8]; + u32 unk10; + u32 unk14; + s32 state; + u32 gender; + u8 padding1[0xC]; + LocalMapObject *mapObject; + u8 padding2[0xC]; }; // TODO: populate once we know more -PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *mapObjectManager, u32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData); +PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *mapObjectManager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData); PlayerAvatar *PlayerAvatar_CreateWithActiveMapObject(MapObjectManager *mapObjectManager, PlayerSaveData *playerSaveData, u32 gender); void sub_02055108(PlayerAvatar *avatar); void PlayerAvatar_FreeToHeap(PlayerAvatar *avatar); @@ -22,5 +44,24 @@ LocalMapObject *MapObjectManager_GetFirstActiveObjectWithMovement1(MapObjectMana u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *avatar); void PlayerAvatar_SetFacingDirection(PlayerAvatar *avatar, u32 direction); u32 PlayerAvatar_GetNextFacingDirection(PlayerAvatar *avatar); +u32 PlayerAvatar_GetXCoord(PlayerAvatar *avatar); +u32 PlayerAvatar_GetZCoord(PlayerAvatar *avatar); +u32 PlayerAvatar_GetPreviousXCoord(PlayerAvatar *avatar); +u32 PlayerAvatar_GetPreviousZCoord(PlayerAvatar *avatar); +void PlayerAvatar_CopyPositionVector(PlayerAvatar *avatar, VecFx32 *vector); +VecFx32 *PlayerAvatar_GetPositionVectorConst(PlayerAvatar *avatar); +void PlayerAvatar_SetUnk10(PlayerAvatar *avatar, u32 param1); +u32 PlayerAvatar_GetUnk10(PlayerAvatar *avatar); +void PlayerAvatar_SetUnk14(PlayerAvatar *avatar, u32 param1); +u32 PlayerAvatar_GetUnk14(PlayerAvatar *avatar); +void PlayerAvatar_ToggleVisible(PlayerAvatar *avatar, BOOL invisible); +void PlayerAvatar_SetMapObject(PlayerAvatar *avatar, LocalMapObject *mapObject); +LocalMapObject *PlayerAvatar_GetMapObject(PlayerAvatar *avatar); +void PlayerAvatar_SetState(PlayerAvatar *avatar, s32 state); +s32 PlayerAvatar_GetState(PlayerAvatar *avatar); +void PlayerAvatar_SetTransitionFlagsBits(PlayerAvatar *avatar, u32 flags); +void PlayerAvatar_SetTransitionFlags(PlayerAvatar *avatar, u32 flags); +u32 PlayerAvatar_GetTransitionFlags(PlayerAvatar *avatar); +u32 PlayerAvatar_GetGender(PlayerAvatar *avatar); #endif // POKEDIAMOND_PLAYER_AVATAR_H