From 05944c7f69ef96635aaa3542f8e1db088ffc0773 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 5 Mar 2025 02:34:33 +0000 Subject: [PATCH 1/9] start decomping player_avatar --- arm9/arm9.lsf | 3 +- .../{unk_02055068.s => player_avatar_asm.s} | 285 +----------------- arm9/asm/unk_02036FA4.s | 4 +- arm9/asm/unk_02037024.s | 4 +- arm9/asm/unk_02038C78.s | 4 +- arm9/asm/unk_02046030.s | 4 +- arm9/asm/unk_02048904.s | 10 +- arm9/asm/unk_0204B34C.s | 12 +- arm9/asm/unk_0204C1B4.s | 28 +- arm9/asm/unk_0204CB20.s | 28 +- arm9/asm/unk_02052EE8.s | 4 +- arm9/asm/unk_020557F4.s | 4 +- arm9/asm/unk_02059F04.s | 8 +- arm9/asm/unk_0205C598.s | 8 +- arm9/asm/unk_0205CE48.s | 8 +- arm9/asm/unk_0205DD18.s | 4 +- arm9/asm/unk_0205E4EC.s | 12 +- arm9/asm/unk_0205F7A0.s | 4 +- arm9/asm/unk_020607D4.s | 8 +- arm9/global.inc | 12 +- arm9/overlays/05/asm/ov05_021D74E0.s | 16 +- arm9/overlays/05/asm/ov05_021D80E8.s | 12 +- arm9/overlays/05/asm/ov05_021E1374.s | 4 +- arm9/overlays/05/asm/ov05_021E5FD8.s | 12 +- arm9/overlays/05/asm/ov05_021E8310.s | 4 +- arm9/overlays/05/asm/ov05_021F3854.s | 4 +- arm9/overlays/05/asm/ov05_021F4CF8.s | 4 +- arm9/overlays/05/asm/ov05_021F5518.s | 4 +- arm9/overlays/06/asm/overlay_06.s | 40 +-- arm9/overlays/18/asm/overlay_18.s | 32 +- arm9/overlays/59/include/ov59_Intro.h | 4 +- arm9/src/field_move.c | 8 +- arm9/src/player_avatar.c | 117 +++++++ arm9/src/player_data.c | 6 +- arm9/src/scrcmd.c | 14 +- include/constants/global.h | 4 + include/field_player_avatar.h | 10 - include/field_system.h | 2 +- include/field_types_def.h | 1 + include/player_avatar.h | 22 ++ include/player_data.h | 9 +- include/script.h | 2 +- 42 files changed, 329 insertions(+), 456 deletions(-) rename arm9/asm/{unk_02055068.s => player_avatar_asm.s} (75%) create mode 100644 arm9/src/player_avatar.c delete mode 100644 include/field_player_avatar.h create mode 100644 include/player_avatar.h diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index bf8eec514..d9dd011ff 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -213,7 +213,8 @@ Static arm9 Object text_02054590.o Object unk_0205478C.o Object unk_02054C14.o - Object unk_02055068.o + Object player_avatar.o + Object player_avatar_asm.o Object unk_020557F4.o Object map_object.o Object unk_02058EE8.o diff --git a/arm9/asm/unk_02055068.s b/arm9/asm/player_avatar_asm.s similarity index 75% rename from arm9/asm/unk_02055068.s rename to arm9/asm/player_avatar_asm.s index 0da694005..abfe0ed56 100644 --- a/arm9/asm/unk_02055068.s +++ b/arm9/asm/player_avatar_asm.s @@ -3,263 +3,6 @@ .text - thumb_func_start sub_02055068 -sub_02055068: ; 0x02055068 - push {r4-r7, lr} - sub sp, #0xc - add r7, r0, #0x0 - add r5, r1, #0x0 - add r4, r2, #0x0 - str r3, [sp, #0x8] - bl sub_0205517C - ldr r1, [sp, #0x20] - ldr r2, [sp, #0x24] - ldr r3, [sp, #0x28] - add r6, r0, #0x0 - bl sub_0205519C - ldr r0, [sp, #0x20] - ldr r1, [sp, #0x24] - bl PlayerAvatar_GetSpriteByStateAndGender - add r2, r0, #0x0 - str r5, [sp, #0x0] - ldr r3, [sp, #0x8] - add r0, r6, #0x0 - add r1, r7, #0x0 - str r4, [sp, #0x4] - bl sub_02055208 - add r0, r6, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start sub_020550A4 -sub_020550A4: ; 0x020550A4 - push {r3-r7, lr} - add r4, r1, #0x0 - add r7, r0, #0x0 - add r6, r2, #0x0 - bl sub_0205517C - add r5, r0, #0x0 - add r0, r4, #0x0 - bl sub_020554C8 - str r0, [sp, #0x0] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - add r2, r6, #0x0 - add r3, r4, #0x0 - bl sub_0205519C - add r0, r7, #0x0 - bl sub_020552E4 - add r4, r0, #0x0 - ldr r0, [sp, #0x0] - add r1, r6, #0x0 - bl PlayerAvatar_GetSpriteByStateAndGender - add r1, r0, #0x0 - add r0, r4, #0x0 - bl MapObject_SetSpriteID - mov r1, #0x9 - add r0, r4, #0x0 - lsl r1, r1, #0xa - bl MapObject_SetFlagsBits - mov r1, #0x6 - add r0, r4, #0x0 - lsl r1, r1, #0x6 - bl MapObject_ClearFlagsBits - add r0, r4, #0x0 - mov r1, #0x1 - bl MapObject_SetFlag29 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl sub_0205539C - add r0, r5, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start sub_02055108 -sub_02055108: ; 0x02055108 - push {r3-r7, lr} - add r5, r0, #0x0 - bl PlayerAvatar_GetMapObject - add r4, r0, #0x0 - bne _02055118 - bl GF_AssertFail -_02055118: - add r0, r4, #0x0 - bl MapObject_GetManager - add r0, r5, #0x0 - bl ov05_021EDBC8 - add r0, r5, #0x0 - bl PlayerAvatar_GetState - cmp r0, #0x2 - bne _0205515C - add r0, r5, #0x0 - bl GetPlayerXCoord - add r6, r0, #0x0 - add r0, r5, #0x0 - bl GetPlayerZCoord - add r7, r0, #0x0 - add r0, r5, #0x0 - bl PlayerAvatar_GetFacingDirection - add r3, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - add r0, r4, #0x0 - add r1, r6, #0x0 - add r2, r7, #0x0 - bl ov06_0224ABAC - add r1, r0, #0x0 - add r0, r5, #0x0 - bl sub_02055450 -_0205515C: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start sub_02055160 -sub_02055160: ; 0x02055160 - ldr r3, _02055164 ; =FreeToHeap - bx r3 - .balign 4 -_02055164: .word FreeToHeap - - thumb_func_start sub_02055168 -sub_02055168: ; 0x02055168 - push {r4, lr} - add r4, r0, #0x0 - bl PlayerAvatar_GetMapObject - bl MapObject_Remove - add r0, r4, #0x0 - bl sub_02055160 - pop {r4, pc} - - thumb_func_start sub_0205517C -sub_0205517C: ; 0x0205517C - push {r4, lr} - mov r0, #0xb - mov r1, #0x3c - bl AllocFromHeap - add r4, r0, #0x0 - bne _0205518E - bl GF_AssertFail -_0205518E: - add r0, r4, #0x0 - mov r1, #0x0 - mov r2, #0x3c - bl memset - add r0, r4, #0x0 - pop {r4, pc} - - thumb_func_start sub_0205519C -sub_0205519C: ; 0x0205519C - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r1, r3, #0x0 - add r6, r2, #0x0 - bl sub_02055458 - add r0, r5, #0x0 - mov r1, #0x0 - bl sub_0205536C - add r0, r5, #0x0 - mov r1, #0x0 - bl sub_02055374 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl PlayerAvatar_SetState - add r0, r5, #0x0 - add r1, r6, #0x0 - bl sub_020553E4 - add r0, r5, #0x0 - mov r1, #0x0 - bl PlayerAvatar_SetTransitionFlags - add r0, r5, #0x0 - bl sub_02055410 - mov r1, #0x0 - add r0, r5, #0x0 - mvn r1, r1 - bl sub_0205542C - mov r1, #0x0 - add r0, r5, #0x0 - mvn r1, r1 - bl sub_02055434 - add r0, r5, #0x0 - mov r1, #0xff - bl sub_02055460 - add r0, r5, #0x0 - mov r1, #0x1 - bl sub_020556C8 - add r0, r5, #0x0 - mov r1, #0x1 - bl sub_0205574C - pop {r4-r6, pc} - .balign 4 - - thumb_func_start sub_02055208 -sub_02055208: ; 0x02055208 - push {r4-r5, lr} - sub sp, #0xc - add r4, r0, #0x0 - str r2, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - str r0, [sp, #0x8] - add r0, r1, #0x0 - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x1c] - bl MapObject_Create - add r5, r0, #0x0 - bne _02055228 - bl GF_AssertFail -_02055228: - add r0, r5, #0x0 - mov r1, #0xff - bl MapObject_SetID - add r0, r5, #0x0 - mov r1, #0x0 - bl MapObject_SetType - add r0, r5, #0x0 - mov r1, #0x0 - bl MapObject_SetEventFlag - add r0, r5, #0x0 - mov r1, #0x0 - bl MapObject_SetScriptID - mov r1, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl MapObject_SetParam - add r0, r5, #0x0 - mov r1, #0x0 - mov r2, #0x1 - bl MapObject_SetParam - add r0, r5, #0x0 - mov r1, #0x0 - mov r2, #0x2 - bl MapObject_SetParam - mov r1, #0x0 - add r0, r5, #0x0 - mvn r1, r1 - bl MapObject_SetXRange - mov r1, #0x0 - add r0, r5, #0x0 - mvn r1, r1 - bl MapObject_SetYRange - mov r1, #0x9 - add r0, r5, #0x0 - lsl r1, r1, #0xa - bl MapObject_SetFlagsBits - mov r1, #0x6 - add r0, r5, #0x0 - lsl r1, r1, #0x6 - bl MapObject_ClearFlagsBits - add r0, r5, #0x0 - mov r1, #0x1 - bl MapObject_SetFlag29 - add r0, r4, #0x0 - add r1, r5, #0x0 - bl sub_0205539C - add sp, #0xc - pop {r4-r5, pc} - .balign 4 - thumb_func_start sub_020552A4 sub_020552A4: ; 0x020552A4 push {r3-r7, lr} @@ -294,8 +37,8 @@ _020552DE: add sp, #0x8 pop {r3-r7, pc} - thumb_func_start sub_020552E4 -sub_020552E4: ; 0x020552E4 + thumb_func_start PlayerAvatar_CreateMapObject +PlayerAvatar_CreateMapObject: ; 0x020552E4 push {r4, lr} bl sub_020552A4 add r4, r0, #0x0 @@ -329,15 +72,15 @@ sub_02055314: ; 0x02055314 bl MapObject_GetNextFacingDirection pop {r3, pc} - thumb_func_start GetPlayerXCoord -GetPlayerXCoord: ; 0x02055320 + thumb_func_start PlayerAvatar_GetXCoord +PlayerAvatar_GetXCoord: ; 0x02055320 push {r3, lr} bl PlayerAvatar_GetMapObject bl MapObject_GetCurrentX pop {r3, pc} - thumb_func_start GetPlayerZCoord -GetPlayerZCoord: ; 0x0205532C + thumb_func_start PlayerAvatar_GetZCoord +PlayerAvatar_GetZCoord: ; 0x0205532C push {r3, lr} bl PlayerAvatar_GetMapObject bl MapObject_GetCurrentZ @@ -410,8 +153,8 @@ _02055392: bl MapObject_SetFlagsBits pop {r4, pc} - thumb_func_start sub_0205539C -sub_0205539C: ; 0x0205539C + thumb_func_start PlayerAvatar_SetMapObject +PlayerAvatar_SetMapObject: ; 0x0205539C str r1, [r0, #0x2c] bx lr @@ -469,8 +212,8 @@ PlayerAvatar_GetTransitionFlags: ; 0x020553E0 ldr r0, [r0, #0x4] bx lr - thumb_func_start sub_020553E4 -sub_020553E4: ; 0x020553E4 + thumb_func_start PlayerAvatar_SetGender +PlayerAvatar_SetGender: ; 0x020553E4 str r1, [r0, #0x1c] bx lr @@ -574,8 +317,8 @@ sub_02055454: ; 0x02055454 ldr r0, [r0, #0x30] bx lr - thumb_func_start sub_02055458 -sub_02055458: ; 0x02055458 + thumb_func_start PlayerAvatar_SetPlayerSaveData +PlayerAvatar_SetPlayerSaveData: ; 0x02055458 str r1, [r0, #0x34] bx lr @@ -663,8 +406,8 @@ sub_020554BC: ; 0x020554BC bl sub_02055498 pop {r3, pc} - thumb_func_start sub_020554C8 -sub_020554C8: ; 0x020554C8 + thumb_func_start PlayerSaveData_GetState +PlayerSaveData_GetState: ; 0x020554C8 cmp r0, #0x0 beq _020554D0 ldr r0, [r0, #0x4] diff --git a/arm9/asm/unk_02036FA4.s b/arm9/asm/unk_02036FA4.s index cec7dda53..4950a0f91 100644 --- a/arm9/asm/unk_02036FA4.s +++ b/arm9/asm/unk_02036FA4.s @@ -13,10 +13,10 @@ sub_02036FA4: ; 0x02036FA4 bl PlayerAvatar_GetFacingDirection add r7, r0, #0x0 ldr r0, [r6, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [r4, #0x0] ldr r0, [r6, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord str r0, [r5, #0x0] cmp r7, #0x3 bhi _02036FFA diff --git a/arm9/asm/unk_02037024.s b/arm9/asm/unk_02037024.s index 0e0e848bc..70f47804b 100644 --- a/arm9/asm/unk_02037024.s +++ b/arm9/asm/unk_02037024.s @@ -331,11 +331,11 @@ sub_02037264: ; 0x02037264 ldr r0, [r0, #0x38] str r1, [sp, #0x4] str r2, [sp, #0x8] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [sp, #0x0] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r4, r0, #0x0 ldr r0, [sp, #0x8] mov r7, #0x0 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index 16a6ec949..f89fa8d60 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -2341,11 +2341,11 @@ _02039786: _020397A0: ldr r0, [sp, #0x0] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [sp, #0x18] ldr r0, [sp, #0x0] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord str r0, [sp, #0x14] ldr r0, [sp, #0x18] sub r0, r0, #0x7 diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s index e28683a82..46c9c27f3 100644 --- a/arm9/asm/unk_02046030.s +++ b/arm9/asm/unk_02046030.s @@ -71,10 +71,10 @@ _02046096: ; jump table (using 16-bit offset) .short _020461E4 - _02046096 - 2; case 11 _020460AE: ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord strh r0, [r4, #0x4] ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord strh r0, [r4, #0x6] add r0, r5, #0x0 mov r1, #0x1 diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index 36ef2a7b1..d7db95fc1 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -283,7 +283,7 @@ sub_02048AE4: ; 0x02048AE4 ldr r1, [r3, #0x8] ldr r2, [r3, #0xc] ldr r3, [r3, #0x10] - bl sub_02055068 + bl PlayerAvatar_CreateWithParamsExtended str r0, [r5, #0x38] add r0, r5, #0x0 bl sub_02034AC8 @@ -299,7 +299,7 @@ sub_02048B34: ; 0x02048B34 add r4, r0, #0x0 bl sub_0204CC48 ldr r0, [r4, #0x38] - bl sub_02055160 + bl PlayerAvatar_FreeToHeap ldr r0, [r4, #0x34] bl MapObjectManager_RemoveAllActiveObjects ldr r0, [r4, #0x34] @@ -326,7 +326,7 @@ sub_02048B50: ; 0x02048B50 add r2, r0, #0x0 ldr r0, [r5, #0x34] add r1, r4, #0x0 - bl sub_020550A4 + bl PlayerAvatar_CreateWithParams str r0, [r5, #0x38] ldr r0, [r5, #0x34] bl sub_02058768 @@ -483,10 +483,10 @@ sub_02048CB0: ; 0x02048CB0 add r4, r1, #0x0 add r5, r0, #0x0 ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r6, r0, #0x0 ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldr r1, [r4, #0x1c] ldr r1, [r1, #0x0] str r1, [r5, #0x0] diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s index 5612c21eb..c40efe161 100644 --- a/arm9/asm/unk_0204B34C.s +++ b/arm9/asm/unk_0204B34C.s @@ -507,10 +507,10 @@ sub_0204B70C: ; 0x0204B70C add r7, r0, #0x0 ldr r0, [r7, #0x38] add r5, r2, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r7, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r4, r0, #0x0 cmp r5, #0x2 bne _0204B72A @@ -562,10 +562,10 @@ sub_0204B770: ; 0x0204B770 add r5, r0, #0x0 ldr r0, [r5, #0x38] add r6, r1, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0x0 cmp r6, #0x2 bne _0204B78E @@ -588,10 +588,10 @@ sub_0204B7A0: ; 0x0204B7A0 add r5, r0, #0x0 ldr r0, [r5, #0x38] add r6, r1, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r7, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r4, r0, #0x0 ldr r0, [r6, #0x4] cmp r0, #0x0 diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s index c410c6285..1f8450a6b 100644 --- a/arm9/asm/unk_0204C1B4.s +++ b/arm9/asm/unk_0204C1B4.s @@ -418,10 +418,10 @@ _0204C4D0: bl ov05_021DA5B8 str r0, [r4, #0x1c] ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0x0 ldr r2, [r4, #0x1c] add r0, r6, #0x0 @@ -478,10 +478,10 @@ _0204C54A: bl ov05_021DA5B8 str r0, [r4, #0x1c] ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0x0 ldr r2, [r4, #0x1c] add r0, r6, #0x0 @@ -696,10 +696,10 @@ _0204C700: bl PlayerAvatar_GetMapObject add r7, r0, #0x0 ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [sp, #0x0] ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0x0 ldr r1, [sp, #0x0] add r0, r4, #0x0 @@ -726,10 +726,10 @@ _0204C74A: bl ov05_021DA5B8 str r0, [r5, #0x1c] ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0x0 ldr r2, [r5, #0x1c] add r0, r6, #0x0 @@ -782,10 +782,10 @@ _0204C7BE: bl PlayerAvatar_GetMapObject add r7, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [sp, #0x0] ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0x0 ldr r1, [sp, #0x0] add r0, r5, #0x0 @@ -844,10 +844,10 @@ _0204C846: bl ov05_021DA5B8 str r0, [r4, #0x1c] ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0x0 ldr r2, [r4, #0x1c] add r0, r6, #0x0 @@ -1058,10 +1058,10 @@ sub_0204C9EC: ; 0x0204C9EC add r1, sp, #0x4 bl sub_02055350 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0x0 add r0, r5, #0x0 add r1, r6, #0x0 diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s index 54a182dd9..4518c1728 100644 --- a/arm9/asm/unk_0204CB20.s +++ b/arm9/asm/unk_0204CB20.s @@ -251,12 +251,12 @@ sub_0204CC9C: ; 0x0204CC9C ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldr r0, _0204CCD8 ; =UNK_021C5A68 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord _0204CCD6: pop {r3, pc} .balign 4 @@ -402,7 +402,7 @@ _0204CDD4: ldrb r1, [r1, r2] cmp r1, #0x0 beq _0204CDF2 - bl sub_02055168 + bl PlayerAvatar_DeleteFromMap _0204CDF2: ldr r0, [r6, #0x0] add r1, r0, r7 @@ -606,7 +606,7 @@ sub_0204CF60: ; 0x0204CF60 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldr r1, _0204D03C ; =UNK_021C5A68 ldr r2, [r1, #0x0] lsl r1, r4, #0x3 @@ -619,7 +619,7 @@ sub_0204CF60: ; 0x0204CF60 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, _0204D03C ; =UNK_021C5A68 ldr r2, [r1, #0x0] lsl r1, r4, #0x3 @@ -645,7 +645,7 @@ sub_0204CF60: ; 0x0204CF60 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldr r1, _0204D03C ; =UNK_021C5A68 ldr r2, [r1, #0x0] lsl r1, r4, #0x3 @@ -658,7 +658,7 @@ sub_0204CF60: ; 0x0204CF60 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, _0204D03C ; =UNK_021C5A68 ldr r2, [r1, #0x0] lsl r1, r4, #0x3 @@ -839,13 +839,13 @@ sub_0204D168: ; 0x0204D168 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0x0 ldr r0, _0204D194 ; =UNK_021C5A68 ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -1126,7 +1126,7 @@ _0204D37C: ldrh r2, [r2, #0x0] ldrsb r3, [r7, r3] ldr r0, [r0, #0x34] - bl sub_02055068 + bl PlayerAvatar_CreateWithParamsExtended add r7, r0, #0x0 bne _0204D3B2 bl GF_AssertFail @@ -1232,10 +1232,10 @@ sub_0204D43C: ; 0x0204D43C cmp r7, #0x0 beq _0204D484 _0204D47E: - bl sub_02055168 + bl PlayerAvatar_DeleteFromMap b _0204D488 _0204D484: - bl sub_02055160 + bl PlayerAvatar_FreeToHeap _0204D488: ldr r0, _0204D4CC ; =UNK_021C5A68 mov r1, #0x0 @@ -2543,12 +2543,12 @@ _0204DE86: bne _0204DE98 b _0204E068 _0204DE98: - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldrh r1, [r5, #0x0] sub r0, r0, r1 str r0, [sp, #0x10] ldr r0, [sp, #0x18] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldrh r1, [r5, #0x2] sub r7, r0, r1 ldr r0, [sp, #0x18] diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s index d4041f637..adc3b53db 100644 --- a/arm9/asm/unk_02052EE8.s +++ b/arm9/asm/unk_02052EE8.s @@ -410,11 +410,11 @@ sub_020531E4: ; 0x020531E4 str r0, [sp, #0x0] ldr r0, [r0, #0x8] str r1, [sp, #0x4] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [sp, #0xc] ldr r0, [sp, #0x0] ldr r0, [r0, #0x8] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r4, [sp, #0x0] str r0, [sp, #0x8] add r6, r4, #0x0 diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index de3bf24b6..b70b0cecd 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -3369,14 +3369,14 @@ sub_02057288: ; 0x02057288 str r0, [sp, #0x0] add r4, r2, #0x0 add r7, r3, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 add r0, r5, #0x0 bl sub_02059BF4 add r0, r6, r0 str r0, [r4, #0x0] ldr r0, [sp, #0x0] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r4, r0, #0x0 add r0, r5, #0x0 bl sub_02059C00 diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s index 0384f93a0..99e100b2f 100644 --- a/arm9/asm/unk_02059F04.s +++ b/arm9/asm/unk_02059F04.s @@ -1736,10 +1736,10 @@ _0205AB72: pop {r3-r7, pc} _0205AB8E: add r0, r6, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r7, r0, #0x0 add r0, r6, #0x0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x0 @@ -1826,10 +1826,10 @@ _0205AC22: bl MapObject_GetFieldSystem bl sub_02055698 str r0, [sp, #0xc] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [sp, #0x10] ldr r0, [sp, #0xc] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r2, [sp, #0x8] ldr r1, [sp, #0x10] cmp r2, r1 diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s index 6339e8b8c..8a6b60e15 100644 --- a/arm9/asm/unk_0205C598.s +++ b/arm9/asm/unk_0205C598.s @@ -285,10 +285,10 @@ sub_0205C794: ; 0x0205C794 cmp r0, #0x1 bne _0205C802 add r0, r4, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r7, r0, #0x0 add r0, r4, #0x0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r6, r0, #0x0 add r0, r5, #0x0 bl MapObject_GetFacingDirection @@ -329,10 +329,10 @@ _0205C802: cmp r0, #0x2 bne _0205C864 add r0, r4, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [sp, #0x10] add r0, r4, #0x0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r7, r0, #0x0 add r0, r5, #0x0 mov r1, #0x0 diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s index 8471ce677..ff94cf24d 100644 --- a/arm9/asm/unk_0205CE48.s +++ b/arm9/asm/unk_0205CE48.s @@ -82,10 +82,10 @@ sub_0205CE80: ; 0x0205CE80 bl PlayerAvatar_GetState str r0, [r5, #0x8] ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r7, r0, #0x0 add r0, r4, #0x0 add r1, r6, #0x0 @@ -492,12 +492,12 @@ _0205D1DA: _0205D1EE: ldr r0, [r5, #0x18] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord lsl r0, r0, #0x10 lsr r4, r0, #0x10 ldr r0, [r5, #0x18] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord lsl r0, r0, #0x10 lsr r2, r0, #0x10 ldr r0, [r5, #0x18] diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s index 126180f09..6f7419b1a 100644 --- a/arm9/asm/unk_0205DD18.s +++ b/arm9/asm/unk_0205DD18.s @@ -882,10 +882,10 @@ _0205E374: mov r0, #0x0 strb r0, [r6, #0x0] ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r3, r4, #0x0 add r3, #0x90 add r2, r0, #0x0 diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s index cd3544db6..f1c97669f 100644 --- a/arm9/asm/unk_0205E4EC.s +++ b/arm9/asm/unk_0205E4EC.s @@ -160,10 +160,10 @@ sub_0205E5E0: ; 0x0205E5E0 mov r1, #0x1 add r4, r0, #0x0 strb r1, [r5, #0x1] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord strh r0, [r5, #0x2] add r0, r4, #0x0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord strh r0, [r5, #0x4] mov r0, #0xff strh r0, [r5, #0x6] @@ -178,10 +178,10 @@ sub_0205E608: ; 0x0205E608 bl sub_02055698 add r6, r0, #0x0 beq _0205E638 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0x0 add r0, r6, #0x0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord mov r1, #0x2 ldrsh r1, [r5, r1] cmp r4, r1 @@ -204,10 +204,10 @@ sub_0205E63C: ; 0x0205E63C bl MapObject_GetFieldSystem bl sub_02055698 add r4, r0, #0x0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord strh r0, [r5, #0x2] add r0, r4, #0x0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord strh r0, [r5, #0x4] pop {r3-r5, pc} .balign 4 diff --git a/arm9/asm/unk_0205F7A0.s b/arm9/asm/unk_0205F7A0.s index 7b12a0116..d3b7a198c 100644 --- a/arm9/asm/unk_0205F7A0.s +++ b/arm9/asm/unk_0205F7A0.s @@ -38,11 +38,11 @@ TownMap_Init: ; 0x0205F7A0 bl memset ldr r0, [sp, #0x0] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0x0 ldr r0, [sp, #0x0] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r6, r0, #0x0 ldr r0, [sp, #0x0] asr r1, r4, #0x4 diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s index 945df1b92..ab7c3146f 100644 --- a/arm9/asm/unk_020607D4.s +++ b/arm9/asm/unk_020607D4.s @@ -52,10 +52,10 @@ _02060802: mov r0, #0x22 str r0, [sp, #0x14] ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0x0 mov r0, #0x3 str r0, [sp, #0x0] @@ -81,10 +81,10 @@ _0206085C: ldr r0, _02060918 ; =0x000001C1 str r0, [sp, #0x14] ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0x0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0x0 mov r0, #0x6 str r0, [sp, #0x0] diff --git a/arm9/global.inc b/arm9/global.inc index ab48a651d..018eedf6b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3892,17 +3892,17 @@ .extern Save_PlayerHasAllRegisInParty .extern sub_02054F50 .extern sub_0205502C -.extern sub_02055068 -.extern sub_020550A4 +.extern PlayerAvatar_CreateWithParamsExtended +.extern PlayerAvatar_CreateWithParams .extern sub_02055108 -.extern sub_02055160 -.extern sub_02055168 +.extern PlayerAvatar_FreeToHeap +.extern PlayerAvatar_DeleteFromMap .extern sub_020552A4 .extern PlayerAvatar_GetFacingDirection .extern sub_02055304 .extern sub_02055314 -.extern GetPlayerXCoord -.extern GetPlayerZCoord +.extern PlayerAvatar_GetXCoord +.extern PlayerAvatar_GetZCoord .extern sub_02055338 .extern sub_02055344 .extern sub_02055350 diff --git a/arm9/overlays/05/asm/ov05_021D74E0.s b/arm9/overlays/05/asm/ov05_021D74E0.s index 98f5ff848..9d4709a3a 100644 --- a/arm9/overlays/05/asm/ov05_021D74E0.s +++ b/arm9/overlays/05/asm/ov05_021D74E0.s @@ -232,11 +232,11 @@ _021D76E2: ldr r0, [r4, #0x24] bl ov05_021EF5FC ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldr r1, [r4, #0x1c] str r0, [r1, #8] ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, [r4, #0x1c] str r0, [r1, #0xc] ldr r0, [r4, #0x38] @@ -383,10 +383,10 @@ ov05_021D7864: ; 0x021D7864 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r2, [r5, #0x1c] ldr r1, [r2, #8] cmp r4, r1 @@ -411,13 +411,13 @@ ov05_021D7894: ; 0x021D7894 sub sp, #8 add r5, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord asr r1, r0, #4 lsr r1, r1, #0x1b add r1, r0, r1 ldr r0, [r5, #0x38] asr r4, r1, #5 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord asr r1, r0, #4 lsr r1, r1, #0x1b add r1, r0, r1 @@ -550,13 +550,13 @@ ov05_021D79B4: ; 0x021D79B4 bl sub_02034E0C add r7, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord asr r1, r0, #4 lsr r1, r1, #0x1b add r1, r0, r1 ldr r0, [r5, #0x38] asr r6, r1, #5 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord asr r1, r0, #4 lsr r1, r1, #0x1b add r1, r0, r1 diff --git a/arm9/overlays/05/asm/ov05_021D80E8.s b/arm9/overlays/05/asm/ov05_021D80E8.s index 2d120806f..ed307408a 100644 --- a/arm9/overlays/05/asm/ov05_021D80E8.s +++ b/arm9/overlays/05/asm/ov05_021D80E8.s @@ -1451,10 +1451,10 @@ _021D8C88: bl Save_PlayerData_GetProfile add r6, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r7, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0 add r0, r5, #0 add r1, r7, #0 @@ -1521,10 +1521,10 @@ _021D8D34: pop {r3, r4, r5, r6, r7, pc} _021D8D4C: ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r7, r0, #0 add r0, r5, #0 add r1, r4, #0 @@ -1988,10 +1988,10 @@ ov05_021D90F8: ; 0x021D90F8 ldr r0, [r5, #0x38] add r4, r1, #0 add r6, r2, #0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [r4] ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord str r0, [r6] pop {r4, r5, r6, pc} .balign 4, 0 diff --git a/arm9/overlays/05/asm/ov05_021E1374.s b/arm9/overlays/05/asm/ov05_021E1374.s index 8ce0f6ec5..1db70d272 100644 --- a/arm9/overlays/05/asm/ov05_021E1374.s +++ b/arm9/overlays/05/asm/ov05_021E1374.s @@ -259,12 +259,12 @@ _021E1562: ldr r0, [sp] ldr r0, [r0, #4] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, [sp] ldr r0, [r0, #4] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord sub r1, r4, #7 str r1, [sp, #0x14] add r1, r4, #7 diff --git a/arm9/overlays/05/asm/ov05_021E5FD8.s b/arm9/overlays/05/asm/ov05_021E5FD8.s index 936222d04..63c502035 100644 --- a/arm9/overlays/05/asm/ov05_021E5FD8.s +++ b/arm9/overlays/05/asm/ov05_021E5FD8.s @@ -672,13 +672,13 @@ _021E6500: b _021E65E4 _021E6514: ldr r0, [r4, #0x20] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r5, r0, #0 ldr r0, [r4, #4] bl sub_02059BF4 add r6, r0, #0 ldr r0, [r4, #0x20] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r7, r0, #0 ldr r0, [r4, #4] bl sub_02059C00 @@ -1329,13 +1329,13 @@ ov05_021E6A58: ; 0x021E6A58 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r0, [r5, #0x10] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, [r5, #4] bl sub_02059BF4 add r6, r0, #0 ldr r0, [r5, #0x10] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r7, r0, #0 ldr r0, [r5, #4] bl sub_02059C00 @@ -2367,13 +2367,13 @@ ov05_021E727C: ; 0x021E727C push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r4, r0, #0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0 add r0, r5, #0 bl sub_02059BF4 add r7, r0, #0 add r0, r4, #0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord str r0, [sp] add r0, r5, #0 bl sub_02059C00 diff --git a/arm9/overlays/05/asm/ov05_021E8310.s b/arm9/overlays/05/asm/ov05_021E8310.s index 37db7fcb9..d8746c584 100644 --- a/arm9/overlays/05/asm/ov05_021E8310.s +++ b/arm9/overlays/05/asm/ov05_021E8310.s @@ -372,11 +372,11 @@ Field_SaveGame: ; 0x021E85FC mov r2, #0 bl ov05_021EFA9C ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldr r1, [r4, #0x1c] str r0, [r1, #8] ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, [r4, #0x1c] str r0, [r1, #0xc] mov r1, #0 diff --git a/arm9/overlays/05/asm/ov05_021F3854.s b/arm9/overlays/05/asm/ov05_021F3854.s index ea04af7b2..6c5f5ad44 100644 --- a/arm9/overlays/05/asm/ov05_021F3854.s +++ b/arm9/overlays/05/asm/ov05_021F3854.s @@ -21,10 +21,10 @@ ov05_021F3860: ; 0x021F3860 add r5, r1, #0 ldr r0, [r5, #0x38] add r4, r2, #0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r7, r0, #0 ldr r0, [r4] cmp r0, r6 diff --git a/arm9/overlays/05/asm/ov05_021F4CF8.s b/arm9/overlays/05/asm/ov05_021F4CF8.s index e5b65d4a9..09121d081 100644 --- a/arm9/overlays/05/asm/ov05_021F4CF8.s +++ b/arm9/overlays/05/asm/ov05_021F4CF8.s @@ -42,10 +42,10 @@ ov05_021F4D2C: ; 0x021F4D2C ldr r0, _021F4D7C ; =0x000007D8 str r0, [r1] ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r6, r0, #0 ldr r0, [r5, #0x38] bl PlayerAvatar_GetFacingDirection diff --git a/arm9/overlays/05/asm/ov05_021F5518.s b/arm9/overlays/05/asm/ov05_021F5518.s index 84ae66566..5661c68cb 100644 --- a/arm9/overlays/05/asm/ov05_021F5518.s +++ b/arm9/overlays/05/asm/ov05_021F5518.s @@ -480,10 +480,10 @@ _021F5888: cmp r0, #0 bge _021F5980 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 diff --git a/arm9/overlays/06/asm/overlay_06.s b/arm9/overlays/06/asm/overlay_06.s index 250e1f4c1..18aabd56e 100644 --- a/arm9/overlays/06/asm/overlay_06.s +++ b/arm9/overlays/06/asm/overlay_06.s @@ -4819,10 +4819,10 @@ ov06_0223BA04: ; 0x0223BA04 sub sp, #0xb4 add r5, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord str r0, [sp, #0x14] ldr r2, [sp, #0x14] add r0, r5, #0 @@ -5351,10 +5351,10 @@ ov06_0223BE70: ; 0x0223BE70 add r5, r0, #0 ldr r0, [r5, #0x38] str r1, [sp, #0xc] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0 add r0, r5, #0 add r1, r4, #0 @@ -5602,10 +5602,10 @@ ov06_0223C08C: ; 0x0223C08C mov r0, #0 str r0, [r4] ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 @@ -5963,10 +5963,10 @@ _0223C3A6: cmp r4, #0 beq _0223C3EC ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r6, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0 add r0, r5, #0 add r5, #0x90 @@ -15673,10 +15673,10 @@ CheckPastoriaGymButton: ; 0x02241230 ldr r0, [r3] str r0, [r2] ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r5, r0, #0 ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0 mov r0, #1 str r0, [sp] @@ -19914,10 +19914,10 @@ ov06_022433B8: ; 0x022433B8 bl LocalFieldData_GetDynamicWarp add r4, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r6, r0, #0 ldr r0, [r5, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord ldr r1, [r5, #0x1c] ldr r1, [r1] str r1, [r4] @@ -23734,11 +23734,11 @@ _02245148: blo _02245132 ldr r0, [sp] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord strh r0, [r5, #0x14] ldr r0, [sp] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord strh r0, [r5, #0x16] ldr r0, [sp] ldr r0, [r0, #0x1c] @@ -24286,7 +24286,7 @@ _02245578: cmp r0, #6 bhs _022455BC ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, [r4, #0x10] cmp r0, r1 ble _022455BC @@ -24302,7 +24302,7 @@ _022455B4: b _02245640 _022455BC: ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, [r4, #0x10] cmp r0, r1 bgt _02245640 @@ -24333,7 +24333,7 @@ _022455E0: cmp r0, #6 bhs _0224561E ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, [r4, #0x10] cmp r0, r1 bge _0224561E @@ -24349,7 +24349,7 @@ _02245616: b _02245640 _0224561E: ldr r0, [r5, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord ldr r1, [r4, #0x10] cmp r0, r1 blt _02245640 @@ -43359,10 +43359,10 @@ ov06_0224E8C4: ; 0x0224E8C4 add r1, sp, #0 bl sub_02055350 add r0, r6, #0 - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r5, r0, #0 add r0, r6, #0 - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r4, r0, #0 add r0, r6, #0 bl PlayerAvatar_GetFacingDirection diff --git a/arm9/overlays/18/asm/overlay_18.s b/arm9/overlays/18/asm/overlay_18.s index 778830a2e..45f4d142d 100644 --- a/arm9/overlays/18/asm/overlay_18.s +++ b/arm9/overlays/18/asm/overlay_18.s @@ -13445,13 +13445,13 @@ ov18_0223FDEC: ; 0x0223FDEC ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [sp] ldr r0, _0223FE64 ; =0x022513A0 ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r7, r0, #0 add r0, r4, #0 bl sub_0204F610 @@ -13866,13 +13866,13 @@ ov18_022400A0: ; 0x022400A0 ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, _022400F8 ; =0x022513A0 ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r3, r0, #0 ldr r0, _022400F8 ; =0x022513A0 add r1, r4, #0 @@ -16012,13 +16012,13 @@ _0224110C: ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r5, r0, #0 ldr r0, _02241278 ; =0x022513A0 ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0 ldr r0, [r4, #8] cmp r0, #0 @@ -19203,13 +19203,13 @@ _02242A20: ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r5, r0, #0 ldr r0, _02242D68 ; =0x022513A0 ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r2, r0, #0 mov r0, #0x20 str r0, [sp] @@ -22803,10 +22803,10 @@ _02244640: cmp r0, #0 bne _0224467E ldr r0, [sp] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord str r0, [r5] ldr r0, [sp] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord str r0, [r5, #4] b _022446AA _0224467E: @@ -26574,13 +26574,13 @@ ov18_02246338: ; 0x02246338 ldr r0, [r0, #0x38] cmp r0, #0 beq _0224640E - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, _02246414 ; =0x022513EC ldr r0, [r0] ldr r0, [r0] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0 add r0, r4, #0 bl ov18_0223E2F4 @@ -35021,11 +35021,11 @@ ov18_0224A6B4: ; 0x0224A6B4 bl ov18_022498EC ldr r0, [r5, #0xc] ldr r0, [r0, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord add r4, r0, #0 ldr r0, [r5, #0xc] ldr r0, [r0, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord add r1, r0, #0 add r0, r4, #0 bl ov18_0223E2F4 @@ -37188,14 +37188,14 @@ ov18_0224B804: ; 0x0224B804 add r4, r1, #0 str r0, [sp, #4] ldr r0, [r4, #0x38] - bl GetPlayerXCoord + bl PlayerAvatar_GetXCoord lsl r1, r0, #0x10 mov r0, #0xf lsl r0, r0, #0x10 sub r0, r0, r1 str r0, [sp] ldr r0, [r4, #0x38] - bl GetPlayerZCoord + bl PlayerAvatar_GetZCoord lsl r1, r0, #0x10 mov r0, #0x11 lsl r0, r0, #0x10 diff --git a/arm9/overlays/59/include/ov59_Intro.h b/arm9/overlays/59/include/ov59_Intro.h index bea0e5ad4..70ed3b8b9 100644 --- a/arm9/overlays/59/include/ov59_Intro.h +++ b/arm9/overlays/59/include/ov59_Intro.h @@ -13,7 +13,7 @@ struct ov59_UnkPlayerStruct { u8 padding[0x4]; - PlayerGender gender; + u32 gender; u8 padding2[0x10]; struct String *name; }; @@ -46,7 +46,7 @@ typedef struct ov59_IntroOverlayData { u32 fadeCounter; fx32 alphaBlend1; fx32 alphaBlend2; - PlayerGender selectedGender; + u32 selectedGender; u8 scrnDataIndexMain; u8 spriteDataIndex0; u8 spriteDataIndex1; diff --git a/arm9/src/field_move.c b/arm9/src/field_move.c index 4083aa8ad..302d01a8f 100644 --- a/arm9/src/field_move.c +++ b/arm9/src/field_move.c @@ -60,8 +60,8 @@ static void FieldMove_UseChatter(FieldMoveUseData *useData, const FieldMoveCheck static BOOL Task_UseChatterInField(TaskManager *taskManager); extern void FieldSystem_GetFacingObject(FieldSystem *fieldSystem, LocalMapObject **object); -extern u16 GetPlayerXCoord(PlayerAvatar *playerAvatar); -extern u16 GetPlayerZCoord(PlayerAvatar *playerAvatar); +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); @@ -157,8 +157,8 @@ void FieldMove_InitCheckData(FieldSystem *fieldSystem, FieldMoveCheckData *check } } - s32 x = GetPlayerXCoord(fieldSystem->playerAvatar); - s32 z = GetPlayerZCoord(fieldSystem->playerAvatar); + s32 x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); + s32 z = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); u32 standingTile = GetMetatileBehavior(fieldSystem, x, z); PlayerAvatar_GetCoordsInFront(fieldSystem->playerAvatar, &x, &z); diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c new file mode 100644 index 000000000..3fb935ad4 --- /dev/null +++ b/arm9/src/player_avatar.c @@ -0,0 +1,117 @@ +#include "player_avatar.h" + +#include "global.h" + +#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, s32 x, s32 z); + +extern u32 PlayerAvatar_GetSpriteByStateAndGender(u32 state, u32 gender); +extern u32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData); +extern LocalMapObject *PlayerAvatar_CreateMapObject(MapObjectManager *manager); +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 s32 PlayerAvatar_GetXCoord(PlayerAvatar *avatar); +extern s32 PlayerAvatar_GetZCoord(PlayerAvatar *avatar); +extern u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *avatar); +extern u32 ov06_0224ABAC(LocalMapObject *mapObject, s32 x, s32 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); + +PlayerAvatar *PlayerAvatar_CreateWithParamsExtended(MapObjectManager *manager, s32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData) { + PlayerAvatar *avatar = PlayerAvatar_Create(); + PlayerAvatar_Setup(avatar, state, gender, playerSaveData); + u32 sprite = PlayerAvatar_GetSpriteByStateAndGender(state, gender); + PlayerAvatar_CreateMapObjectWithParams(avatar, manager, sprite, direction, x, z); + return avatar; +} + +PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, PlayerSaveData *playerSaveData, u32 gender) { + PlayerAvatar *avatar = PlayerAvatar_Create(); + u32 state = PlayerSaveData_GetState(playerSaveData); + PlayerAvatar_Setup(avatar, state, gender, playerSaveData); + LocalMapObject *mapObject = PlayerAvatar_CreateMapObject(manager); + MapObject_SetSpriteID(mapObject, PlayerAvatar_GetSpriteByStateAndGender(state, gender)); + MapObject_SetFlagsBits(mapObject, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK13 | MAPOBJECTFLAG_KEEP)); + MapObject_ClearFlagsBits(mapObject, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK8 | MAPOBJECTFLAG_UNK7)); + MapObject_SetFlag29(mapObject, TRUE); + PlayerAvatar_SetMapObject(avatar, mapObject); + return avatar; +} + +void sub_02055108(PlayerAvatar *avatar) { + LocalMapObject *mapObject = PlayerAvatar_GetMapObject(avatar); + GF_ASSERT(mapObject != NULL); + MapObject_GetManager(mapObject); + ov05_021EDBC8(avatar); + if (PlayerAvatar_GetState(avatar) == PLAYER_STATE_SURFING) { + s32 x = PlayerAvatar_GetXCoord(avatar); + s32 z = PlayerAvatar_GetZCoord(avatar); + u32 direction = PlayerAvatar_GetFacingDirection(avatar); + sub_02055450(avatar, ov06_0224ABAC(mapObject, x, z, direction, 1)); + } +} + +void PlayerAvatar_FreeToHeap(PlayerAvatar *avatar) { + FreeToHeap(avatar); +} + +void PlayerAvatar_DeleteFromMap(PlayerAvatar *avatar) { + MapObject_Remove(PlayerAvatar_GetMapObject(avatar)); + PlayerAvatar_FreeToHeap(avatar); +} + +static PlayerAvatar *PlayerAvatar_Create(void) { + PlayerAvatar *avatar = AllocFromHeap(HEAP_ID_FIELD, sizeof(PlayerAvatar)); + GF_ASSERT(avatar != NULL); + memset(avatar, 0, sizeof(PlayerAvatar)); + return avatar; +} + +static void PlayerAvatar_Setup(PlayerAvatar *avatar, u32 state, u32 gender, PlayerSaveData *playerSaveData) { + PlayerAvatar_SetPlayerSaveData(avatar, playerSaveData); + sub_0205536C(avatar, 0); + sub_02055374(avatar, 0); + PlayerAvatar_SetState(avatar, state); + PlayerAvatar_SetGender(avatar, gender); + PlayerAvatar_SetTransitionFlags(avatar, 0); + sub_02055410(avatar); + sub_0205542C(avatar, -1); + sub_02055434(avatar, -1); + sub_02055460(avatar, 255); + sub_020556C8(avatar, 1); + sub_0205574C(avatar, 1); +} + +static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, s32 x, s32 z) { + LocalMapObject *mapObject = MapObject_Create(manager, x, z, direction, sprite, 1, 1); + GF_ASSERT(mapObject != NULL); + MapObject_SetID(mapObject, 255); + MapObject_SetType(mapObject, 0); + MapObject_SetEventFlag(mapObject, 0); + MapObject_SetScriptID(mapObject, 0); + MapObject_SetParam(mapObject, 0, 0); + MapObject_SetParam(mapObject, 0, 1); + MapObject_SetParam(mapObject, 0, 2); + MapObject_SetXRange(mapObject, -1); + MapObject_SetYRange(mapObject, -1); + MapObject_SetFlagsBits(mapObject, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK13 | MAPOBJECTFLAG_KEEP)); + MapObject_ClearFlagsBits(mapObject, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK8 | MAPOBJECTFLAG_UNK7)); + MapObject_SetFlag29(mapObject, TRUE); + PlayerAvatar_SetMapObject(avatar, mapObject); +} diff --git a/arm9/src/player_data.c b/arm9/src/player_data.c index 81c52b802..30cb30ae1 100644 --- a/arm9/src/player_data.c +++ b/arm9/src/player_data.c @@ -93,12 +93,12 @@ u16 PlayerProfile_GetTrainerID_VisibleHalf(PlayerProfile *data) { return (u16)data->playerId; } -void PlayerProfile_SetTrainerGender(PlayerProfile *data, PlayerGender gender) { +void PlayerProfile_SetTrainerGender(PlayerProfile *data, u32 gender) { data->gender = gender; } -PlayerGender PlayerProfile_GetTrainerGender(PlayerProfile *data) { - return (PlayerGender)data->gender; +u32 PlayerProfile_GetTrainerGender(PlayerProfile *data) { + return data->gender; } BOOL PlayerProfile_TestBadgeFlag(PlayerProfile *data, u32 badgeno) { diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 9282a03dd..a09a262cb 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -102,8 +102,8 @@ extern void ov05_021EF5E0(VecFx32 *target, u32 param1); extern u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *playerAvatar); extern u32 sub_02059E74(u32 direction); extern void ov05_021F1EC0(LocalMapObject *event, u32 param1); -extern u16 GetPlayerXCoord(PlayerAvatar *playerAvatar); -extern u16 GetPlayerZCoord(PlayerAvatar *playerAvatar); +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); @@ -227,9 +227,9 @@ extern u32 sub_02052608(u32 param0); extern void sub_02052E10(u32 param0); extern u32 sub_02052648(u32 param0); extern u32 sub_02052718(u32 param0, u32 param1); -extern void sub_0205363C(u32 trainerId, PlayerGender playerGender, MessageFormat *messageFormat); -extern u16 sub_02053678(u32 trainerId, PlayerGender playerGender, u32 param2); -extern u16 sub_020536D0(PlayerGender playerGender, u16 param1, u16 param2); +extern void sub_0205363C(u32 trainerId, u32 playerGender, MessageFormat *messageFormat); +extern u16 sub_02053678(u32 trainerId, u32 playerGender, u32 param2); +extern u16 sub_020536D0(u32 playerGender, u16 param1, u16 param2); extern void sub_02049EA4(TaskManager *taskManager); extern void LocalFieldData_SetBlackoutSpawn(LocalFieldData *localFieldData, u16 spawnPoint); extern void HealParty(Party *playerParty); @@ -1800,8 +1800,8 @@ BOOL ScrCmd_GetPlayerPosition(ScriptContext *ctx) { // 0069 u16 *x = ScriptGetVarPointer(ctx); u16 *y = ScriptGetVarPointer(ctx); - *x = GetPlayerXCoord(fieldSystem->playerAvatar); - *y = GetPlayerZCoord(fieldSystem->playerAvatar); + *x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); + *y = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); return FALSE; } diff --git a/include/constants/global.h b/include/constants/global.h index 70186f6db..adf059aee 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -2,8 +2,12 @@ #define POKEDIAMOND_CONSTANTS_GLOBAL_H #include "constants/charcode.h" +#include "constants/global_fieldmap.h" #define POKEMON_NAME_LENGTH 10 #define PLAYER_NAME_LENGTH 7 +#define PLAYER_GENDER_MALE 0 +#define PLAYER_GENDER_FEMALE 1 + #endif // POKEDIAMOND_CONSTANTS_GLOBAL_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h deleted file mode 100644 index 57ffb1c7f..000000000 --- a/include/field_player_avatar.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef POKEDIAMOND_FIELD_PLAYER_AVATAR_H -#define POKEDIAMOND_FIELD_PLAYER_AVATAR_H - -#include "global.h" - -typedef struct PlayerAvatar { - u8 padding0[0x40]; -} PlayerAvatar; // TODO: populate once we know more - -#endif // POKEDIAMOND_FIELD_PLAYER_AVATAR_H diff --git a/include/field_system.h b/include/field_system.h index 3719dfa22..8e6fa981b 100644 --- a/include/field_system.h +++ b/include/field_system.h @@ -5,8 +5,8 @@ #include "bg_window.h" #include "camera.h" -#include "field_player_avatar.h" #include "field_types_def.h" +#include "player_avatar.h" #include "save.h" #include "task.h" diff --git a/include/field_types_def.h b/include/field_types_def.h index 5ccd6bd5b..451665ec4 100644 --- a/include/field_types_def.h +++ b/include/field_types_def.h @@ -6,5 +6,6 @@ typedef struct LocalMapObject LocalMapObject; typedef struct MapObjectManager MapObjectManager; typedef struct ObjectEvent ObjectEvent; typedef struct TaskManager TaskManager; +typedef struct PlayerAvatar PlayerAvatar; #endif // POKEDIAMOND_FIELD_TYPES_DEF_H diff --git a/include/player_avatar.h b/include/player_avatar.h new file mode 100644 index 000000000..31228979b --- /dev/null +++ b/include/player_avatar.h @@ -0,0 +1,22 @@ +#ifndef POKEDIAMOND_PLAYER_AVATAR_H +#define POKEDIAMOND_PLAYER_AVATAR_H + +#include "global.h" + +#include "field_types_def.h" + +typedef struct PlayerSaveData { + u8 padding[0x8]; +} PlayerSaveData; + +struct PlayerAvatar { + u8 padding0[0x3C]; +}; // TODO: populate once we know more + +PlayerAvatar *PlayerAvatar_CreateWithParamsExtended(MapObjectManager *mapObjectManager, s32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData); +PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *mapObjectManager, PlayerSaveData *playerSaveData, u32 gender); +void sub_02055108(PlayerAvatar *avatar); +void PlayerAvatar_FreeToHeap(PlayerAvatar *avatar); +void PlayerAvatar_DeleteFromMap(PlayerAvatar *avatar); + +#endif // POKEDIAMOND_PLAYER_AVATAR_H diff --git a/include/player_data.h b/include/player_data.h index 02180f245..18d4f5409 100644 --- a/include/player_data.h +++ b/include/player_data.h @@ -9,11 +9,6 @@ struct SaveData; #define MAX_MONEY 999999 -typedef enum PlayerGender { - PLAYER_GENDER_MALE = 0, - PLAYER_GENDER_FEMALE = 1 -} PlayerGender; - typedef struct PlayerProfile { /* 0x00 */ u16 playerName[PLAYER_NAME_LENGTH + 1]; /* 0x10 */ u32 playerId; @@ -56,8 +51,8 @@ struct String *PlayerProfile_GetPlayerName_NewString(PlayerProfile *data, HeapID void PlayerProfile_SetTrainerID(PlayerProfile *playerProfile, u32 otid); u32 PlayerProfile_GetTrainerID(PlayerProfile *data); u16 PlayerProfile_GetTrainerID_VisibleHalf(PlayerProfile *data); -void PlayerProfile_SetTrainerGender(PlayerProfile *data, PlayerGender gender); -PlayerGender PlayerProfile_GetTrainerGender(PlayerProfile *data); +void PlayerProfile_SetTrainerGender(PlayerProfile *data, u32 gender); +u32 PlayerProfile_GetTrainerGender(PlayerProfile *data); BOOL PlayerProfile_TestBadgeFlag(PlayerProfile *data, u32 badgeno); void PlayerProfile_SetBadgeFlag(PlayerProfile *data, u32 badgeno); u32 PlayerProfile_CountBadges(PlayerProfile *data); diff --git a/include/script.h b/include/script.h index 1631a0c7d..5581c2952 100644 --- a/include/script.h +++ b/include/script.h @@ -6,10 +6,10 @@ #include "bg_window.h" #include "camera.h" #include "fashion_case.h" -#include "field_player_avatar.h" #include "field_system.h" #include "map_object.h" #include "msgdata.h" +#include "player_avatar.h" #include "render_window.h" #include "save.h" #include "save_local_field_data.h" From f08180fc014a9dddb1d649c20d5c0d383bb18742 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 5 Mar 2025 05:00:57 +0000 Subject: [PATCH 2/9] more --- arm9/asm/player_avatar_asm.s | 69 ------------------------ arm9/asm/unk_02048904.s | 4 +- arm9/asm/unk_0204B34C.s | 8 +-- arm9/asm/unk_0204CB20.s | 8 +-- arm9/asm/unk_020557F4.s | 6 +-- arm9/asm/unk_0205E4EC.s | 2 +- arm9/global.inc | 8 +-- arm9/overlays/05/asm/ov05_021E5FD8.s | 2 +- arm9/overlays/05/asm/ov05_021E7504.s | 6 +-- arm9/overlays/05/include/ov05_021E72FC.h | 7 +-- arm9/overlays/05/src/ov05_021E72FC.c | 33 ++++++------ arm9/overlays/18/asm/overlay_18.s | 2 +- arm9/src/field_move.c | 4 +- arm9/src/player_avatar.c | 48 +++++++++++++---- arm9/src/scrcmd.c | 15 +++--- include/player_avatar.h | 8 ++- 16 files changed, 96 insertions(+), 134 deletions(-) diff --git a/arm9/asm/player_avatar_asm.s b/arm9/asm/player_avatar_asm.s index abfe0ed56..30257a47f 100644 --- a/arm9/asm/player_avatar_asm.s +++ b/arm9/asm/player_avatar_asm.s @@ -3,75 +3,6 @@ .text - thumb_func_start sub_020552A4 -sub_020552A4: ; 0x020552A4 - push {r3-r7, lr} - sub sp, #0x8 - mov r1, #0x0 - str r1, [sp, #0x4] - str r1, [sp, #0x0] - add r1, sp, #0x0 - add r2, sp, #0x4 - mov r3, #0x1 - add r5, r0, #0x0 - bl MapObjectManager_GetNextObjectWithFlagFromIndex - cmp r0, #0x0 - beq _020552DE - add r4, sp, #0x0 - add r6, sp, #0x4 - mov r7, #0x1 -_020552C4: - ldr r0, [sp, #0x0] - bl MapObject_GetMovement - cmp r0, #0x1 - beq _020552DE - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - add r3, r7, #0x0 - bl MapObjectManager_GetNextObjectWithFlagFromIndex - cmp r0, #0x0 - bne _020552C4 -_020552DE: - ldr r0, [sp, #0x0] - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start PlayerAvatar_CreateMapObject -PlayerAvatar_CreateMapObject: ; 0x020552E4 - push {r4, lr} - bl sub_020552A4 - add r4, r0, #0x0 - bne _020552F2 - bl GF_AssertFail -_020552F2: - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start PlayerAvatar_GetFacingDirection -PlayerAvatar_GetFacingDirection: ; 0x020552F8 - push {r3, lr} - bl PlayerAvatar_GetMapObject - bl MapObject_GetFacingDirection - pop {r3, pc} - - thumb_func_start sub_02055304 -sub_02055304: ; 0x02055304 - push {r4, lr} - add r4, r1, #0x0 - bl PlayerAvatar_GetMapObject - add r1, r4, #0x0 - bl MapObject_SetFacingDirection - pop {r4, pc} - - thumb_func_start sub_02055314 -sub_02055314: ; 0x02055314 - push {r3, lr} - bl PlayerAvatar_GetMapObject - bl MapObject_GetNextFacingDirection - pop {r3, pc} - thumb_func_start PlayerAvatar_GetXCoord PlayerAvatar_GetXCoord: ; 0x02055320 push {r3, lr} diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index d7db95fc1..c0f640a4b 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -283,7 +283,7 @@ sub_02048AE4: ; 0x02048AE4 ldr r1, [r3, #0x8] ldr r2, [r3, #0xc] ldr r3, [r3, #0x10] - bl PlayerAvatar_CreateWithParamsExtended + bl PlayerAvatar_CreateWithParams str r0, [r5, #0x38] add r0, r5, #0x0 bl sub_02034AC8 @@ -326,7 +326,7 @@ sub_02048B50: ; 0x02048B50 add r2, r0, #0x0 ldr r0, [r5, #0x34] add r1, r4, #0x0 - bl PlayerAvatar_CreateWithParams + bl PlayerAvatar_CreateWithActiveMapObject str r0, [r5, #0x38] ldr r0, [r5, #0x34] bl sub_02058768 diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s index c40efe161..042be9001 100644 --- a/arm9/asm/unk_0204B34C.s +++ b/arm9/asm/unk_0204B34C.s @@ -767,7 +767,7 @@ _0204B8F6: bne _0204B910 ldr r0, [r5, #0x38] mov r1, #0x0 - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection mov r0, #0x4 str r0, [r4, #0x0] b _0204B98E @@ -789,7 +789,7 @@ _0204B922: ble _0204B98E ldr r0, [r5, #0x38] ldr r1, [r4, #0x4] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection mov r0, #0x4 str r0, [r4, #0x0] b _0204B98E @@ -814,14 +814,14 @@ _0204B93A: _0204B964: ldr r0, [r5, #0x38] ldr r1, [r4, #0x4] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection mov r0, #0x4 str r0, [r4, #0x0] b _0204B98E _0204B972: ldr r0, [r5, #0x38] ldr r1, [r4, #0x4] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection ldr r0, [r5, #0x38] bl PlayerAvatar_GetMapObject bl MapObject_PauseMovement diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s index 4518c1728..a51875fec 100644 --- a/arm9/asm/unk_0204CB20.s +++ b/arm9/asm/unk_0204CB20.s @@ -1126,7 +1126,7 @@ _0204D37C: ldrh r2, [r2, #0x0] ldrsb r3, [r7, r3] ldr r0, [r0, #0x34] - bl PlayerAvatar_CreateWithParamsExtended + bl PlayerAvatar_CreateWithParams add r7, r0, #0x0 bne _0204D3B2 bl GF_AssertFail @@ -2424,7 +2424,7 @@ _0204DD5E: ldr r0, [r0, #0x0] add r0, r0, r7 ldr r0, [r0, #0x8] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection add r0, r4, #0x0 mov r1, #0x80 bl MapObject_SetFlagsBits @@ -5707,7 +5707,7 @@ sub_0204F6DC: ; 0x0204F6DC ldr r0, [r0, #0x0] ldr r0, [r0, #0x54] ldr r0, [r0, #0x38] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection bl sub_02031190 ldr r1, _0204F708 ; =UNK_021C5A68 lsl r0, r0, #0x3 @@ -5734,7 +5734,7 @@ sub_0204F70C: ; 0x0204F70C ldr r2, [r3, #0x0] add r0, r2, r0 ldr r0, [r0, #0x8] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection pop {r4, pc} .balign 4 _0204F728: .word UNK_021C5A68 diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index b70b0cecd..6f8f21e94 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -1920,7 +1920,7 @@ sub_02056740: ; 0x02056740 bl sub_02056494 str r0, [sp, #0x0] add r0, r5, #0x0 - bl sub_02055314 + bl PlayerAvatar_GetNextFacingDirection add r6, r0, #0x0 add r0, r5, #0x0 add r1, r7, #0x0 @@ -2347,7 +2347,7 @@ sub_02056AB8: ; 0x02056AB8 bl sub_02056494 str r0, [sp, #0x0] add r0, r5, #0x0 - bl sub_02055314 + bl PlayerAvatar_GetNextFacingDirection add r6, r0, #0x0 add r0, r5, #0x0 add r1, r7, #0x0 @@ -3079,7 +3079,7 @@ sub_02057060: ; 0x02057060 pop {r3-r7, pc} _02057086: add r0, r6, #0x0 - bl sub_02055314 + bl PlayerAvatar_GetNextFacingDirection add r7, r0, #0x0 add r0, r6, #0x0 bl sub_02055430 diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s index f1c97669f..580ac9ce1 100644 --- a/arm9/asm/unk_0205E4EC.s +++ b/arm9/asm/unk_0205E4EC.s @@ -133,7 +133,7 @@ sub_0205E5B4: ; 0x0205E5B4 add r5, r0, #0x0 add r4, r1, #0x0 bl MapObject_GetManager - bl sub_020552A4 + bl MapObjectManager_GetFirstActiveObjectWithMovement1 cmp r0, #0x0 bne _0205E5CC mov r0, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index 018eedf6b..0b8de1eaf 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3892,15 +3892,15 @@ .extern Save_PlayerHasAllRegisInParty .extern sub_02054F50 .extern sub_0205502C -.extern PlayerAvatar_CreateWithParamsExtended .extern PlayerAvatar_CreateWithParams +.extern PlayerAvatar_CreateWithActiveMapObject .extern sub_02055108 .extern PlayerAvatar_FreeToHeap .extern PlayerAvatar_DeleteFromMap -.extern sub_020552A4 +.extern MapObjectManager_GetFirstActiveObjectWithMovement1 .extern PlayerAvatar_GetFacingDirection -.extern sub_02055304 -.extern sub_02055314 +.extern PlayerAvatar_SetFacingDirection +.extern PlayerAvatar_GetNextFacingDirection .extern PlayerAvatar_GetXCoord .extern PlayerAvatar_GetZCoord .extern sub_02055338 diff --git a/arm9/overlays/05/asm/ov05_021E5FD8.s b/arm9/overlays/05/asm/ov05_021E5FD8.s index 63c502035..f90f01cdd 100644 --- a/arm9/overlays/05/asm/ov05_021E5FD8.s +++ b/arm9/overlays/05/asm/ov05_021E5FD8.s @@ -1157,7 +1157,7 @@ ov05_021E6904: ; 0x021E6904 pop {r4, pc} _021E6916: add r0, r4, #0 - bl sub_02055314 + bl PlayerAvatar_GetNextFacingDirection add r1, r0, #0 add r0, r4, #0 bl ov05_021E727C diff --git a/arm9/overlays/05/asm/ov05_021E7504.s b/arm9/overlays/05/asm/ov05_021E7504.s index c15757d9d..439a164e8 100644 --- a/arm9/overlays/05/asm/ov05_021E7504.s +++ b/arm9/overlays/05/asm/ov05_021E7504.s @@ -37,12 +37,12 @@ _021E7532: str r0, [r1, #0x10] _021E7536: ldr r0, [r1] - ldr r3, _021E7540 ; =sub_02055304 + ldr r3, _021E7540 ; =PlayerAvatar_SetFacingDirection ldr r0, [r0, #0x38] ldr r1, [r1, #0x10] bx r3 .balign 4, 0 -_021E7540: .word sub_02055304 +_021E7540: .word PlayerAvatar_SetFacingDirection thumb_func_start ov05_021E7544 ov05_021E7544: ; 0x021E7544 @@ -264,7 +264,7 @@ _021E771C: ldr r0, [r5] mov r1, #1 ldr r0, [r0, #0x38] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection ldr r0, [r5, #4] mov r1, #1 str r1, [r0] diff --git a/arm9/overlays/05/include/ov05_021E72FC.h b/arm9/overlays/05/include/ov05_021E72FC.h index 40f064c49..09f9f9b2f 100644 --- a/arm9/overlays/05/include/ov05_021E72FC.h +++ b/arm9/overlays/05/include/ov05_021E72FC.h @@ -4,6 +4,7 @@ #include "nitro/types.h" #include "field_system.h" +#include "player_avatar.h" #include "task.h" typedef struct UnkStruct021E7358 { @@ -11,12 +12,12 @@ typedef struct UnkStruct021E7358 { u32 Unk04; u32 Unk08; FieldSystem *fieldSystem; - u32 Unk10; + PlayerAvatar *avatar; } UnkStruct021E7358; -BOOL ov05_021E72FC(FieldSystem *fieldSystem, u32 param1); -void ov05_021E7358(FieldSystem *fieldSystem, u32 param1, u32 param2); +BOOL ov05_021E72FC(FieldSystem *fieldSystem, PlayerAvatar *avatar); +void ov05_021E7358(FieldSystem *fieldSystem, PlayerAvatar *avatar, u32 param2); u32 ov05_021E7388(u32 param0); BOOL ov05_021E73B4(TaskManager *taskManager); UnkStruct021E7358 *ov05_021E74D4(u32 param0); diff --git a/arm9/overlays/05/src/ov05_021E72FC.c b/arm9/overlays/05/src/ov05_021E72FC.c index 17a1fc7c0..4f481747a 100644 --- a/arm9/overlays/05/src/ov05_021E72FC.c +++ b/arm9/overlays/05/src/ov05_021E72FC.c @@ -8,19 +8,18 @@ #include "map_object.h" #include "unk_020051F4.h" -extern LocalMapObject *PlayerAvatar_GetMapObject(u32 param0); +extern LocalMapObject *PlayerAvatar_GetMapObject(PlayerAvatar *avatar); extern BOOL sub_02054B30(u8 param0); extern BOOL sub_02054B3C(u8 param0); extern BOOL sub_02054B48(u8 param0); extern BOOL sub_02054B54(u8 param0); -extern BOOL sub_02057254(u32 param0); +extern BOOL sub_02057254(PlayerAvatar *avatar); extern u32 sub_0205AFDC(u32 param0, u32 param1); -extern void sub_02057260(u32 param0, u32 param1); -extern void sub_02055304(u32 param0, u32 param1); -extern BOOL sub_02056B74(u32 param0, LocalMapObject *object, u32 param2); +extern void sub_02057260(PlayerAvatar *avatar, u32 param1); +extern BOOL sub_02056B74(PlayerAvatar *avatar, LocalMapObject *object, u32 param2); -BOOL ov05_021E72FC(FieldSystem *fieldSystem, u32 param1) { - u8 res = (u8)sub_02058720(PlayerAvatar_GetMapObject(param1)); +BOOL ov05_021E72FC(FieldSystem *fieldSystem, PlayerAvatar *avatar) { + u8 res = (u8)sub_02058720(PlayerAvatar_GetMapObject(avatar)); u32 r2; if (sub_02054B30(res) == TRUE) { r2 = 3; @@ -37,14 +36,14 @@ BOOL ov05_021E72FC(FieldSystem *fieldSystem, u32 param1) { } return FALSE; label: - ov05_021E7358(fieldSystem, param1, r2); + ov05_021E7358(fieldSystem, avatar, r2); return TRUE; } -void ov05_021E7358(FieldSystem *fieldSystem, u32 param1, u32 param2) { +void ov05_021E7358(FieldSystem *fieldSystem, PlayerAvatar *avatar, u32 param2) { UnkStruct021E7358 *res = ov05_021E74D4(24); res->fieldSystem = fieldSystem; - res->Unk10 = param1; + res->avatar = avatar; res->Unk00 = param2; PlaySE(SEQ_SE_DP_F209); FieldSystem_CreateTask(fieldSystem, ov05_021E73B4, res); @@ -66,7 +65,7 @@ u32 ov05_021E7388(u32 param0) { BOOL ov05_021E73B4(TaskManager *taskManager) { UnkStruct021E7358 *strct = TaskManager_GetEnvironment(taskManager); - LocalMapObject *playerObject = PlayerAvatar_GetMapObject(strct->Unk10); + LocalMapObject *playerObject = PlayerAvatar_GetMapObject(strct->avatar); u8 res2 = (u8)sub_02058720(playerObject); switch (strct->Unk08) { case 0: @@ -74,18 +73,18 @@ BOOL ov05_021E73B4(TaskManager *taskManager) { strct->Unk08++; break; case 1: - if (!sub_02057254(strct->Unk10)) { + if (!sub_02057254(strct->avatar)) { break; } - sub_02057260(strct->Unk10, sub_0205AFDC(strct->Unk00, 12)); - sub_02055304(strct->Unk10, strct->Unk00); + sub_02057260(strct->avatar, sub_0205AFDC(strct->Unk00, 12)); + PlayerAvatar_SetFacingDirection(strct->avatar, strct->Unk00); strct->Unk08++; strct->Unk04 = 7; break; case 2: if (strct->Unk04 == 2 || strct->Unk04 == 4 || strct->Unk04 == 6) { strct->Unk00 = ov05_021E7388(strct->Unk00); - sub_02055304(strct->Unk10, strct->Unk00); + PlayerAvatar_SetFacingDirection(strct->avatar, strct->Unk00); } if (--(strct->Unk04)) { break; @@ -101,13 +100,13 @@ BOOL ov05_021E73B4(TaskManager *taskManager) { } else { strct->Unk00 = ov05_021E7388(strct->Unk00); } - if (sub_02056B74(strct->Unk10, playerObject, strct->Unk00) == FALSE) { + if (sub_02056B74(strct->avatar, playerObject, strct->Unk00) == FALSE) { strct->Unk08 = 1; break; } MapObject_ClearFlagsBits(playerObject, MAPOBJECTFLAG_UNK7); MapObject_ClearFlagsBits(playerObject, MAPOBJECTFLAG_UNK8); - sub_02055304(strct->Unk10, strct->Unk00); + PlayerAvatar_SetFacingDirection(strct->avatar, strct->Unk00); ov05_021E74F8(strct); sub_020054F0(1624, 0); return TRUE; diff --git a/arm9/overlays/18/asm/overlay_18.s b/arm9/overlays/18/asm/overlay_18.s index 45f4d142d..c607c77c2 100644 --- a/arm9/overlays/18/asm/overlay_18.s +++ b/arm9/overlays/18/asm/overlay_18.s @@ -13403,7 +13403,7 @@ ov18_0223FD8C: ; 0x0223FD8C ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl sub_02055304 + bl PlayerAvatar_SetFacingDirection bl sub_02031190 ldr r1, _0223FDE0 ; =0x022513A0 lsl r0, r0, #3 diff --git a/arm9/src/field_move.c b/arm9/src/field_move.c index 302d01a8f..911444877 100644 --- a/arm9/src/field_move.c +++ b/arm9/src/field_move.c @@ -13,6 +13,7 @@ #include "map_header.h" #include "map_object.h" #include "overlay_06.h" +#include "player_avatar.h" #include "player_data.h" #include "save_local_field_data.h" #include "start_menu.h" @@ -65,7 +66,6 @@ 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); -extern u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *playerAvatar); extern BOOL MetatileBehavior_IsRockClimbInDirection(u32 facingTile, u32 facingDirection); extern BOOL MetatileBehavior_IsWaterfall(u8 facingTile); extern LocalFieldData *Save_LocalFieldData_Get(SaveData *save); @@ -157,7 +157,7 @@ void FieldMove_InitCheckData(FieldSystem *fieldSystem, FieldMoveCheckData *check } } - s32 x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); + u32 x = PlayerAvatar_GetXCoord(fieldSystem->playerAvatar); s32 z = PlayerAvatar_GetZCoord(fieldSystem->playerAvatar); u32 standingTile = GetMetatileBehavior(fieldSystem, x, z); diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index 3fb935ad4..aefd4e3b6 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -6,19 +6,18 @@ 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, s32 x, s32 z); +static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, u32 x, s32 z); +static LocalMapObject *PlayerAvatar_GetActiveMapObjectWithMovement1(MapObjectManager *manager); extern u32 PlayerAvatar_GetSpriteByStateAndGender(u32 state, u32 gender); extern u32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData); -extern LocalMapObject *PlayerAvatar_CreateMapObject(MapObjectManager *manager); 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 s32 PlayerAvatar_GetXCoord(PlayerAvatar *avatar); +extern u32 PlayerAvatar_GetXCoord(PlayerAvatar *avatar); extern s32 PlayerAvatar_GetZCoord(PlayerAvatar *avatar); -extern u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *avatar); -extern u32 ov06_0224ABAC(LocalMapObject *mapObject, s32 x, s32 z, u32 direction, u32 param4); +extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, s32 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); @@ -33,7 +32,7 @@ extern void sub_02055460(PlayerAvatar *avatar, u32 param1); extern void sub_020556C8(PlayerAvatar *avatar, u32 param1); extern void sub_0205574C(PlayerAvatar *avatar, u32 param1); -PlayerAvatar *PlayerAvatar_CreateWithParamsExtended(MapObjectManager *manager, s32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData) { +PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData) { PlayerAvatar *avatar = PlayerAvatar_Create(); PlayerAvatar_Setup(avatar, state, gender, playerSaveData); u32 sprite = PlayerAvatar_GetSpriteByStateAndGender(state, gender); @@ -41,11 +40,11 @@ PlayerAvatar *PlayerAvatar_CreateWithParamsExtended(MapObjectManager *manager, s return avatar; } -PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, PlayerSaveData *playerSaveData, u32 gender) { +PlayerAvatar *PlayerAvatar_CreateWithActiveMapObject(MapObjectManager *manager, PlayerSaveData *playerSaveData, u32 gender) { PlayerAvatar *avatar = PlayerAvatar_Create(); u32 state = PlayerSaveData_GetState(playerSaveData); PlayerAvatar_Setup(avatar, state, gender, playerSaveData); - LocalMapObject *mapObject = PlayerAvatar_CreateMapObject(manager); + LocalMapObject *mapObject = PlayerAvatar_GetActiveMapObjectWithMovement1(manager); MapObject_SetSpriteID(mapObject, PlayerAvatar_GetSpriteByStateAndGender(state, gender)); MapObject_SetFlagsBits(mapObject, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK13 | MAPOBJECTFLAG_KEEP)); MapObject_ClearFlagsBits(mapObject, (MapObjectFlagBits)(MAPOBJECTFLAG_UNK8 | MAPOBJECTFLAG_UNK7)); @@ -60,7 +59,7 @@ void sub_02055108(PlayerAvatar *avatar) { MapObject_GetManager(mapObject); ov05_021EDBC8(avatar); if (PlayerAvatar_GetState(avatar) == PLAYER_STATE_SURFING) { - s32 x = PlayerAvatar_GetXCoord(avatar); + u32 x = PlayerAvatar_GetXCoord(avatar); s32 z = PlayerAvatar_GetZCoord(avatar); u32 direction = PlayerAvatar_GetFacingDirection(avatar); sub_02055450(avatar, ov06_0224ABAC(mapObject, x, z, direction, 1)); @@ -98,7 +97,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, s32 x, s32 z) { +static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, u32 x, s32 z) { LocalMapObject *mapObject = MapObject_Create(manager, x, z, direction, sprite, 1, 1); GF_ASSERT(mapObject != NULL); MapObject_SetID(mapObject, 255); @@ -115,3 +114,32 @@ static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObje MapObject_SetFlag29(mapObject, TRUE); PlayerAvatar_SetMapObject(avatar, mapObject); } + +LocalMapObject *MapObjectManager_GetFirstActiveObjectWithMovement1(MapObjectManager *manager) { + s32 index = 0; + LocalMapObject *mapObject = NULL; + while (MapObjectManager_GetNextObjectWithFlagFromIndex(manager, &mapObject, &index, MAPOBJECTFLAG_ACTIVE)) { + if (MapObject_GetMovement(mapObject) == 1) { + break; + } + } + return mapObject; +} + +static LocalMapObject *PlayerAvatar_GetActiveMapObjectWithMovement1(MapObjectManager *manager) { + LocalMapObject *mapObject = MapObjectManager_GetFirstActiveObjectWithMovement1(manager); + GF_ASSERT(mapObject != NULL); + return mapObject; +} + +u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *avatar) { + return MapObject_GetFacingDirection(PlayerAvatar_GetMapObject(avatar)); +} + +void PlayerAvatar_SetFacingDirection(PlayerAvatar *avatar, u32 direction) { + MapObject_SetFacingDirection(PlayerAvatar_GetMapObject(avatar), direction); +} + +u32 PlayerAvatar_GetNextFacingDirection(PlayerAvatar *avatar) { + return MapObject_GetNextFacingDirection(PlayerAvatar_GetMapObject(avatar)); +} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index a09a262cb..74025fc40 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -27,6 +27,7 @@ #include "msgdata.h" #include "options.h" #include "party.h" +#include "player_avatar.h" #include "player_data.h" #include "pokedex.h" #include "pokemon_storage_system.h" @@ -67,7 +68,6 @@ extern MessageFormat *ov06_02244210(SaveData *sav, u16 poke, u16 sex, u8 flag, u extern void ov05_021E2CBC(ScriptContext *ctx, MessageFormat *messageFormat, u8 param2, u32 param3); extern void ov05_021E2BB8(void *param0, ScriptContext *ctx); extern BOOL sub_02030F40(void); -extern void sub_02055304(PlayerAvatar *playerAvatar, u32 param1); extern void sub_02039460(FieldSystem *arg); extern void ov05_021E8128(u32 param0, u8 type, u16 map); extern void ov05_021E8130(u32 param0, u32 param1); @@ -99,7 +99,6 @@ extern const ObjectEvent *sub_02034B6C(FieldSystem *fieldSystem); extern u32 sub_02059D1C(LocalMapObject *target); extern VecFx32 *MapObject_GetPositionVector(LocalMapObject *target); extern void ov05_021EF5E0(VecFx32 *target, u32 param1); -extern u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *playerAvatar); extern u32 sub_02059E74(u32 direction); extern void ov05_021F1EC0(LocalMapObject *event, u32 param1); extern u16 PlayerAvatar_GetXCoord(PlayerAvatar *playerAvatar); @@ -1027,13 +1026,13 @@ static BOOL sub_0203A4E0(ScriptContext *ctx) { if (gSystem.newKeys & (PAD_BUTTON_A | PAD_BUTTON_B)) { return TRUE; } else if (gSystem.newKeys & PAD_KEY_UP) { - sub_02055304(ctx->fieldSystem->playerAvatar, 0); + PlayerAvatar_SetFacingDirection(ctx->fieldSystem->playerAvatar, 0); } else if (gSystem.newKeys & PAD_KEY_DOWN) { - sub_02055304(ctx->fieldSystem->playerAvatar, 1); + PlayerAvatar_SetFacingDirection(ctx->fieldSystem->playerAvatar, 1); } else if (gSystem.newKeys & PAD_KEY_LEFT) { - sub_02055304(ctx->fieldSystem->playerAvatar, 2); + PlayerAvatar_SetFacingDirection(ctx->fieldSystem->playerAvatar, 2); } else if (gSystem.newKeys & PAD_KEY_RIGHT) { - sub_02055304(ctx->fieldSystem->playerAvatar, 3); + PlayerAvatar_SetFacingDirection(ctx->fieldSystem->playerAvatar, 3); } else if (gSystem.newKeys & PAD_BUTTON_X) { sub_02039460(ctx->fieldSystem); } else { @@ -1258,7 +1257,7 @@ static BOOL sub_0203A94C(ScriptContext *ctx) { if (tmp != 0xFFFF) { sub_0201BD7C(*printerNumber); - sub_02055304(ctx->fieldSystem->playerAvatar, tmp); + PlayerAvatar_SetFacingDirection(ctx->fieldSystem->playerAvatar, tmp); *varPtr = 0; return TRUE; } else { @@ -1296,7 +1295,7 @@ static BOOL sub_0203AA0C(ScriptContext *ctx) { } if (tmp != 0xFFFF) { - sub_02055304(ctx->fieldSystem->playerAvatar, tmp); + PlayerAvatar_SetFacingDirection(ctx->fieldSystem->playerAvatar, tmp); *unk = 0; return TRUE; } else { diff --git a/include/player_avatar.h b/include/player_avatar.h index 31228979b..8816441fe 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -13,10 +13,14 @@ struct PlayerAvatar { u8 padding0[0x3C]; }; // TODO: populate once we know more -PlayerAvatar *PlayerAvatar_CreateWithParamsExtended(MapObjectManager *mapObjectManager, s32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData); -PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *mapObjectManager, PlayerSaveData *playerSaveData, u32 gender); +PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *mapObjectManager, u32 x, s32 z, u32 direction, u32 state, u32 gender, PlayerSaveData *playerSaveData); +PlayerAvatar *PlayerAvatar_CreateWithActiveMapObject(MapObjectManager *mapObjectManager, PlayerSaveData *playerSaveData, u32 gender); void sub_02055108(PlayerAvatar *avatar); void PlayerAvatar_FreeToHeap(PlayerAvatar *avatar); void PlayerAvatar_DeleteFromMap(PlayerAvatar *avatar); +LocalMapObject *MapObjectManager_GetFirstActiveObjectWithMovement1(MapObjectManager *manager); +u32 PlayerAvatar_GetFacingDirection(PlayerAvatar *avatar); +void PlayerAvatar_SetFacingDirection(PlayerAvatar *avatar, u32 direction); +u32 PlayerAvatar_GetNextFacingDirection(PlayerAvatar *avatar); #endif // POKEDIAMOND_PLAYER_AVATAR_H From 64c975dde3d7a87014ee231df5f52ebe98ff891e Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 7 Mar 2025 08:31:56 +0000 Subject: [PATCH 3/9] 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 From 7715a2716393e1158f7d8692ea053f6aba9214b5 Mon Sep 17 00:00:00 2001 From: red031000 Date: Tue, 29 Apr 2025 01:03:50 +0100 Subject: [PATCH 4/9] more decomp --- arm9/asm/player_avatar_asm.s | 76 +------------------- arm9/asm/unk_020557F4.s | 104 +++++++++++++-------------- arm9/global.inc | 20 +++--- arm9/overlays/05/asm/ov05_021E5FD8.s | 28 ++++---- arm9/src/player_avatar.c | 66 ++++++++++++++--- include/player_avatar.h | 16 ++++- 6 files changed, 150 insertions(+), 160 deletions(-) diff --git a/arm9/asm/player_avatar_asm.s b/arm9/asm/player_avatar_asm.s index d61ad872e..d2770af6f 100644 --- a/arm9/asm/player_avatar_asm.s +++ b/arm9/asm/player_avatar_asm.s @@ -7,78 +7,6 @@ .text - thumb_func_start sub_02055408 -sub_02055408: ; 0x02055408 - ldr r0, [r0, #0x20] - bx lr - - thumb_func_start sub_0205540C -sub_0205540C: ; 0x0205540C - str r1, [r0, #0x20] - bx lr - - thumb_func_start sub_02055410 -sub_02055410: ; 0x02055410 - ldr r3, _02055418 ; =sub_020556F4 - mov r1, #0x0 - str r1, [r0, #0x20] - bx r3 - .balign 4 -_02055418: .word sub_020556F4 - - thumb_func_start sub_0205541C -sub_0205541C: ; 0x0205541C - ldr r3, [r0, #0x20] - add r1, r3, r1 - str r1, [r0, #0x20] - cmp r1, r2 - ble _02055428 - str r2, [r0, #0x20] -_02055428: - ldr r0, [r0, #0x20] - bx lr - - thumb_func_start sub_0205542C -sub_0205542C: ; 0x0205542C - str r1, [r0, #0x24] - bx lr - - thumb_func_start sub_02055430 -sub_02055430: ; 0x02055430 - ldr r0, [r0, #0x24] - bx lr - - thumb_func_start sub_02055434 -sub_02055434: ; 0x02055434 - str r1, [r0, #0x28] - bx lr - - thumb_func_start sub_02055438 -sub_02055438: ; 0x02055438 - ldr r0, [r0, #0x28] - bx lr - - thumb_func_start sub_0205543C -sub_0205543C: ; 0x0205543C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r2, #0x0 - bl sub_0205542C - add r0, r5, #0x0 - add r1, r4, #0x0 - bl sub_02055434 - pop {r3-r5, pc} - - thumb_func_start sub_02055450 -sub_02055450: ; 0x02055450 - str r1, [r0, #0x30] - bx lr - - thumb_func_start sub_02055454 -sub_02055454: ; 0x02055454 - ldr r0, [r0, #0x30] - bx lr - thumb_func_start PlayerAvatar_SetPlayerSaveData PlayerAvatar_SetPlayerSaveData: ; 0x02055458 str r1, [r0, #0x34] @@ -505,8 +433,8 @@ _020556F0: mov r0, #0x0 pop {r3, pc} - thumb_func_start sub_020556F4 -sub_020556F4: ; 0x020556F4 + thumb_func_start PlayerAvatar_SetFlag2 +PlayerAvatar_SetFlag2: ; 0x020556F4 push {r3, lr} cmp r1, #0x1 bne _02055702 diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index fab27612e..5291b247d 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -164,7 +164,7 @@ sub_02055900: ; 0x02055900 add r2, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 add r0, r5, #0x0 bl sub_020557B0 pop {r4-r6, pc} @@ -405,7 +405,7 @@ sub_02055B14: ; 0x02055B14 mov r1, #0x0 bl PlayerAvatar_SetUnk14 add r0, r4, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 pop {r4, pc} .balign 4 @@ -647,7 +647,7 @@ _02055CE4: mvn r1, r1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 add r0, r5, #0x0 mov r1, #0x1 bl PlayerAvatar_SetUnk10 @@ -694,7 +694,7 @@ _02055D54: mvn r1, r1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 b _02055DA0 _02055D8E: mov r1, #0x6 @@ -729,7 +729,7 @@ sub_02055DAC: ; 0x02055DAC cmp r0, #0x1 bne _02055DFE add r0, r5, #0x0 - bl sub_02055408 + bl PlayerAvatar_GetUnk20 cmp r0, #0x3 blt _02055DFE cmp r7, #0x0 @@ -771,7 +771,7 @@ _02055E18: add r1, r6, #0x0 bl sub_02056B5C add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r5, #0x0 mov r1, #0x1 bl sub_0205569C @@ -785,7 +785,7 @@ _02055E18: mvn r1, r1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 mov r0, #0x1 pop {r3-r7, pc} _02055E62: @@ -811,13 +811,13 @@ _02055E62: bne _02055E9C add r0, r5, #0x0 mov r1, #0x3 - bl sub_0205540C + bl PlayerAvatar_SetUnk20 _02055E9C: mov r1, #0x0 mvn r1, r1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 mov r0, #0x1 pop {r3-r7, pc} _02055EAC: @@ -845,7 +845,7 @@ _02055EAC: mvn r1, r1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 mov r0, #0x1 pop {r3-r7, pc} _02055EF0: @@ -948,7 +948,7 @@ sub_02055F90: ; 0x02055F90 bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x3 - bl sub_0205540C + bl PlayerAvatar_SetUnk20 mov r0, #0x1 pop {r3-r5, pc} _02055FCE: @@ -960,13 +960,13 @@ _02055FCE: add r1, r4, #0x0 bl sub_02056B5C add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r5, #0x0 mov r1, #0x0 bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x0 - bl sub_020556F4 + bl PlayerAvatar_SetFlag2 mov r0, #0x1 pop {r3-r5, pc} .balign 4 @@ -988,7 +988,7 @@ sub_02055FFC: ; 0x02055FFC cmp r0, #0x0 bne _02056026 add r0, r4, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 _02056026: add r0, r4, #0x0 mov r1, #0x0 @@ -1056,7 +1056,7 @@ sub_020560A0: ; 0x020560A0 push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 - bl sub_02055408 + bl PlayerAvatar_GetUnk20 add r1, r0, #0x0 cmp r4, #0x1 bne _020560B8 @@ -1073,7 +1073,7 @@ _020560B8: mov r1, #0x3 _020560C4: add r0, r5, #0x0 - bl sub_0205540C + bl PlayerAvatar_SetUnk20 mov r0, #0x1 pop {r3-r5, pc} .balign 4 @@ -1087,7 +1087,7 @@ sub_020560D0: ; 0x020560D0 add r7, r0, #0x0 add r0, r5, #0x0 mov r4, #0x10 - bl sub_02055408 + bl PlayerAvatar_GetUnk20 cmp r0, #0x1 beq _020560F2 cmp r0, #0x2 @@ -1527,7 +1527,7 @@ sub_02056438: ; 0x02056438 push {r3-r5, lr} add r5, r1, #0x0 mov r4, #0x4c - bl sub_02055408 + bl PlayerAvatar_GetUnk20 cmp r0, #0x1 beq _02056450 cmp r0, #0x2 @@ -1555,7 +1555,7 @@ sub_02056464: ; 0x02056464 add r5, r0, #0x0 mov r1, #0x1 mov r2, #0x3 - bl sub_0205541C + bl PlayerAvatar_Unk20AddWithCeiling add r4, r0, #0x0 add r0, r5, #0x0 bl sub_0205570C @@ -1565,7 +1565,7 @@ sub_02056464: ; 0x02056464 blt _02056488 add r0, r5, #0x0 mov r1, #0x1 - bl sub_020556F4 + bl PlayerAvatar_SetFlag2 _02056488: cmp r4, #0x3 bne _02056490 @@ -1580,7 +1580,7 @@ sub_02056494: ; 0x02056494 push {r4-r6, lr} add r5, r0, #0x0 mov r6, #0x1 - bl sub_02055408 + bl PlayerAvatar_GetUnk20 sub r4, r0, #0x1 bpl _020564A6 mov r4, #0x0 @@ -1588,7 +1588,7 @@ sub_02056494: ; 0x02056494 _020564A6: add r0, r5, #0x0 add r1, r4, #0x0 - bl sub_0205540C + bl PlayerAvatar_SetUnk20 add r0, r5, #0x0 bl sub_0205570C cmp r0, #0x1 @@ -1597,7 +1597,7 @@ _020564A6: bne _020564C4 add r0, r5, #0x0 mov r1, #0x0 - bl sub_020556F4 + bl PlayerAvatar_SetFlag2 _020564C4: add r0, r6, #0x0 pop {r4-r6, pc} @@ -1740,7 +1740,7 @@ _020565BA: add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x0 - bl sub_020556F4 + bl PlayerAvatar_SetFlag2 cmp r6, r4 beq _020565E2 add r0, r5, #0x0 @@ -1774,7 +1774,7 @@ sub_020565F0: ; 0x020565F0 add r1, r4, #0x0 bl sub_02056B5C add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 pop {r3-r5, pc} thumb_func_start sub_02056614 @@ -1819,11 +1819,11 @@ _02056656: add r0, r6, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 sub r1, r7, #0x1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 b _020566EA _02056680: cmp r4, #0x0 @@ -1845,7 +1845,7 @@ _020566A0: add r0, r6, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 b _020566EA _020566B0: add r0, r6, #0x0 @@ -1856,11 +1856,11 @@ _020566B0: add r0, r6, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 sub r1, r7, #0x1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 b _020566EA _020566D4: add r0, r5, #0x0 @@ -1870,7 +1870,7 @@ _020566D4: bl sub_020557A4 add r0, r5, #0x0 mov r1, #0x2 - bl sub_0205540C + bl PlayerAvatar_SetUnk20 _020566EA: ldr r0, [sp, #0x0] add r1, r7, #0x0 @@ -1889,7 +1889,7 @@ sub_02056704: ; 0x02056704 add r5, r0, #0x0 add r4, r1, #0x0 add r6, r2, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 @@ -1907,7 +1907,7 @@ sub_02056704: ; 0x02056704 add r1, r6, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 _0205673E: pop {r4-r6, pc} @@ -1944,7 +1944,7 @@ _02056774: bl sub_0205AFDC str r0, [sp, #0x4] add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 b _020567C4 _0205678C: cmp r4, #0x0 @@ -1965,7 +1965,7 @@ _020567AA: add r1, r6, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 b _020567C4 _020567BA: add r0, r5, #0x0 @@ -1978,7 +1978,7 @@ _020567C4: bne _020567D2 add r0, r5, #0x0 mov r1, #0x0 - bl sub_020556F4 + bl PlayerAvatar_SetFlag2 _020567D2: ldr r2, [sp, #0x4] add r0, r5, #0x0 @@ -2104,7 +2104,7 @@ sub_020568A8: ; 0x020568A8 push {r4-r6, lr} add r5, r0, #0x0 add r4, r1, #0x0 - bl sub_02055408 + bl PlayerAvatar_GetUnk20 add r6, r0, #0x0 mov r0, #0x0 mvn r0, r0 @@ -2166,7 +2166,7 @@ sub_02056914: ; 0x02056914 add r1, r4, #0x0 bl sub_02056B5C add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 pop {r3-r5, pc} thumb_func_start sub_02056938 @@ -2196,7 +2196,7 @@ _0205696A: tst r0, r4 beq _020569BA add r0, r5, #0x0 - bl sub_02055408 + bl PlayerAvatar_GetUnk20 cmp r0, #0x3 blt _02056994 add r0, r5, #0x0 @@ -2224,7 +2224,7 @@ _020569AA: add r1, r7, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 b _02056A6C _020569BA: mov r0, #0x40 @@ -2240,12 +2240,12 @@ _020569BA: add r1, r4, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 mov r1, #0x0 mvn r1, r1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 b _02056A6C _020569EC: cmp r4, #0x0 @@ -2270,7 +2270,7 @@ _02056A14: add r1, r7, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 b _02056A6C _02056A24: add r0, r6, #0x0 @@ -2283,12 +2283,12 @@ _02056A24: add r1, r4, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 mov r1, #0x0 mvn r1, r1 add r0, r5, #0x0 add r2, r1, #0x0 - bl sub_0205543C + bl PlayerAvatar_SetUnk24Unk28 b _02056A6C _02056A50: add r0, r5, #0x0 @@ -2316,7 +2316,7 @@ sub_02056A7C: ; 0x02056A7C add r5, r0, #0x0 add r4, r1, #0x0 add r6, r2, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 @@ -2334,7 +2334,7 @@ sub_02056A7C: ; 0x02056A7C add r1, r6, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 _02056AB6: pop {r4-r6, pc} @@ -2371,7 +2371,7 @@ _02056AEC: bl sub_0205AFDC str r0, [sp, #0x4] add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 b _02056B3C _02056B04: cmp r4, #0x0 @@ -2392,7 +2392,7 @@ _02056B22: add r1, r6, #0x0 bl MapObject_SetNextFacingDirection add r0, r5, #0x0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 b _02056B3C _02056B32: add r0, r5, #0x0 @@ -2405,7 +2405,7 @@ _02056B3C: bne _02056B4A add r0, r5, #0x0 mov r1, #0x0 - bl sub_020556F4 + bl PlayerAvatar_SetFlag2 _02056B4A: ldr r2, [sp, #0x4] add r0, r5, #0x0 @@ -3082,10 +3082,10 @@ _02057086: bl PlayerAvatar_GetNextFacingDirection add r7, r0, #0x0 add r0, r6, #0x0 - bl sub_02055430 + bl PlayerAvatar_GetUnk24 str r0, [sp, #0x0] add r0, r6, #0x0 - bl sub_02055438 + bl PlayerAvatar_GetUnk28 mov r1, #0x0 mvn r1, r1 cmp r7, r1 diff --git a/arm9/global.inc b/arm9/global.inc index fba090f24..d504f7e84 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3919,15 +3919,15 @@ .extern PlayerAvatar_SetTransitionFlags .extern PlayerAvatar_GetTransitionFlags .extern PlayerAvatar_GetGender -.extern sub_02055408 -.extern sub_0205540C -.extern sub_02055410 -.extern sub_0205541C -.extern sub_02055430 -.extern sub_02055438 -.extern sub_0205543C -.extern sub_02055450 -.extern sub_02055454 +.extern PlayerAvatar_GetUnk20 +.extern PlayerAvatar_SetUnk20 +.extern PlayerAvatar_ClearUnk20ClearFlag2 +.extern PlayerAvatar_Unk20AddWithCeiling +.extern PlayerAvatar_GetUnk24 +.extern PlayerAvatar_GetUnk28 +.extern PlayerAvatar_SetUnk24Unk28 +.extern PlayerAvatar_SetUnk30 +.extern PlayerAvatar_GetUnk30 .extern sub_0205545C .extern sub_02055460 .extern sub_02055464 @@ -3948,7 +3948,7 @@ .extern sub_020556B4 .extern sub_020556C8 .extern sub_020556E0 -.extern sub_020556F4 +.extern PlayerAvatar_SetFlag2 .extern sub_0205570C .extern sub_02055720 .extern sub_02055738 diff --git a/arm9/overlays/05/asm/ov05_021E5FD8.s b/arm9/overlays/05/asm/ov05_021E5FD8.s index 508210b42..ac89dbf7b 100644 --- a/arm9/overlays/05/asm/ov05_021E5FD8.s +++ b/arm9/overlays/05/asm/ov05_021E5FD8.s @@ -53,16 +53,16 @@ ov05_021E6014: ; 0x021E6014 mov r1, #0 bl PlayerAvatar_SetState add r0, r4, #0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r4, #0 - bl sub_02055454 + bl PlayerAvatar_GetUnk30 cmp r0, #0 beq _021E6048 bl ov05_021E4DE4 _021E6048: add r0, r4, #0 mov r1, #0 - bl sub_02055450 + bl PlayerAvatar_SetUnk30 pop {r4, pc} .balign 4, 0 @@ -81,16 +81,16 @@ ov05_021E6054: ; 0x021E6054 mov r1, #1 bl PlayerAvatar_SetState add r0, r4, #0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r4, #0 - bl sub_02055454 + bl PlayerAvatar_GetUnk30 cmp r0, #0 beq _021E6088 bl ov05_021E4DE4 _021E6088: add r0, r4, #0 mov r1, #0 - bl sub_02055450 + bl PlayerAvatar_SetUnk30 ldr r0, _021E6098 ; =0x00000618 bl PlaySE pop {r4, pc} @@ -113,16 +113,16 @@ ov05_021E609C: ; 0x021E609C mov r1, #2 bl PlayerAvatar_SetState add r0, r5, #0 - bl sub_02055410 + bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r5, #0 - bl sub_02055454 + bl PlayerAvatar_GetUnk30 cmp r0, #0 beq _021E60D2 bl ov05_021E4DE4 _021E60D2: add r0, r5, #0 mov r1, #0 - bl sub_02055450 + bl PlayerAvatar_SetUnk30 add r0, r5, #0 bl PlayerAvatar_GetFacingDirection add r4, r0, #0 @@ -139,7 +139,7 @@ _021E60D2: bl ov06_0224ABAC add r1, r0, #0 add r0, r5, #0 - bl sub_02055450 + bl PlayerAvatar_SetUnk30 add sp, #4 pop {r3, r4, r5, r6, pc} .balign 4, 0 @@ -693,7 +693,7 @@ _021E6514: str r0, [r4, #0x28] ldr r0, [r4, #0x20] ldr r1, [r4, #0x28] - bl sub_02055450 + bl PlayerAvatar_SetUnk30 ldr r0, [r4, #0x20] mov r1, #2 bl PlayerAvatar_SetState @@ -821,7 +821,7 @@ ov05_021E6638: ; 0x021E6638 bl PlayerAvatar_GetMapObject str r0, [r4, #0x10] add r0, r7, #0 - bl sub_02055454 + bl PlayerAvatar_GetUnk30 str r0, [r4, #0x14] cmp r0, #0 bne _021E6666 @@ -883,7 +883,7 @@ _021E66CC: bl ov05_021E4DE4 ldr r0, [r4, #0xc] mov r1, #0 - bl sub_02055450 + bl PlayerAvatar_SetUnk30 ldr r0, [r4, #0xc] mov r1, #0 bl PlayerAvatar_SetState @@ -1150,7 +1150,7 @@ ov05_021E6904: ; 0x021E6904 push {r4, lr} add r4, r1, #0 add r0, r4, #0 - bl sub_02055408 + bl PlayerAvatar_GetUnk20 cmp r0, #1 bge _021E6916 mov r0, #0 diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index 4260807da..af47a6b24 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -13,20 +13,19 @@ 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); +static void PlayerAvatar_SetUnk24(PlayerAvatar *avatar, s32 param1); +static void PlayerAvatar_SetUnk28(PlayerAvatar *avatar, s32 param1); extern u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender); extern u32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData); extern void ov05_021EDBC8(PlayerAvatar *avatar); 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_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); +extern void PlayerAvatar_SetFlag2(PlayerAvatar *avatar, BOOL flag); PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData) { PlayerAvatar *avatar = PlayerAvatar_Create(); @@ -58,7 +57,7 @@ void sub_02055108(PlayerAvatar *avatar) { u32 x = PlayerAvatar_GetXCoord(avatar); u32 z = PlayerAvatar_GetZCoord(avatar); u32 direction = PlayerAvatar_GetFacingDirection(avatar); - sub_02055450(avatar, ov06_0224ABAC(mapObject, x, z, direction, 1)); + PlayerAvatar_SetUnk30(avatar, ov06_0224ABAC(mapObject, x, z, direction, 1)); } } @@ -85,9 +84,9 @@ static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, Play PlayerAvatar_SetState(avatar, state); PlayerAvatar_SetGender(avatar, gender); PlayerAvatar_SetTransitionFlags(avatar, 0); - sub_02055410(avatar); - sub_0205542C(avatar, -1); - sub_02055434(avatar, -1); + PlayerAvatar_ClearUnk20ClearFlag2(avatar); + PlayerAvatar_SetUnk24(avatar, -1); + PlayerAvatar_SetUnk28(avatar, -1); sub_02055460(avatar, 255); sub_020556C8(avatar, 1); sub_0205574C(avatar, 1); @@ -243,3 +242,54 @@ u32 PlayerAvatar_GetGender(PlayerAvatar *avatar) { /*static*/ PlayerAvatarFlags PlayerAvatar_GetFlagsBitsMask(PlayerAvatar *avatar, PlayerAvatarFlags flags) { return (PlayerAvatarFlags)(avatar->flags & flags); } + +s32 PlayerAvatar_GetUnk20(PlayerAvatar *avatar) { + return avatar->unk20; +} + +void PlayerAvatar_SetUnk20(PlayerAvatar *avatar, s32 param1) { + avatar->unk20 = param1; +} + +void PlayerAvatar_ClearUnk20ClearFlag2(PlayerAvatar *avatar) { + avatar->unk20 = 0; + PlayerAvatar_SetFlag2(avatar, FALSE); +} + +s32 PlayerAvatar_Unk20AddWithCeiling(PlayerAvatar *avatar, s32 param1, s32 param2) { + s32 var = avatar->unk20 + param1; + avatar->unk20 = var; + if (var > param2) { + avatar->unk20 = param2; + } + return avatar->unk20; +} + +static void PlayerAvatar_SetUnk24(PlayerAvatar *avatar, s32 param1) { + avatar->unk24 = param1; +} + +s32 PlayerAvatar_GetUnk24(PlayerAvatar *avatar) { + return avatar->unk24; +} + +static void PlayerAvatar_SetUnk28(PlayerAvatar *avatar, s32 param1) { + avatar->unk28 = param1; +} + +s32 PlayerAvatar_GetUnk28(PlayerAvatar *avatar) { + return avatar->unk28; +} + +void PlayerAvatar_SetUnk24Unk28(PlayerAvatar *avatar, s32 unk24, s32 unk28) { + PlayerAvatar_SetUnk24(avatar, unk24); + PlayerAvatar_SetUnk28(avatar, unk28); +} + +void PlayerAvatar_SetUnk30(PlayerAvatar *avatar, u32 param1) { + avatar->unk30 = param1; +} + +u32 PlayerAvatar_GetUnk30(PlayerAvatar *avatar) { + return avatar->unk30; +} diff --git a/include/player_avatar.h b/include/player_avatar.h index 73d251b17..b81127299 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -30,9 +30,12 @@ struct PlayerAvatar { u32 unk14; s32 state; u32 gender; - u8 padding1[0xC]; + s32 unk20; + s32 unk24; + s32 unk28; LocalMapObject *mapObject; - u8 padding2[0xC]; + u32 unk30; + u8 padding2[0x8]; }; // TODO: populate once we know more PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *mapObjectManager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData); @@ -63,5 +66,14 @@ void PlayerAvatar_SetTransitionFlagsBits(PlayerAvatar *avatar, u32 flags); void PlayerAvatar_SetTransitionFlags(PlayerAvatar *avatar, u32 flags); u32 PlayerAvatar_GetTransitionFlags(PlayerAvatar *avatar); u32 PlayerAvatar_GetGender(PlayerAvatar *avatar); +s32 PlayerAvatar_GetUnk20(PlayerAvatar *avatar); +void PlayerAvatar_SetUnk20(PlayerAvatar *avatar, s32 param1); +void PlayerAvatar_ClearUnk20ClearFlag2(PlayerAvatar *avatar); +s32 PlayerAvatar_Unk20AddWithCeiling(PlayerAvatar *avatar, s32 param1, s32 param2); +s32 PlayerAvatar_GetUnk24(PlayerAvatar *avatar); +s32 PlayerAvatar_GetUnk28(PlayerAvatar *avatar); +void PlayerAvatar_SetUnk24Unk28(PlayerAvatar *avatar, s32 unk24, s32 unk28); +void PlayerAvatar_SetUnk30(PlayerAvatar *avatar, u32 param1); +u32 PlayerAvatar_GetUnk30(PlayerAvatar *avatar); #endif // POKEDIAMOND_PLAYER_AVATAR_H From aa082ace99436f7e9a54d03fa1cd58deee3f4a7c Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 23 May 2025 18:18:46 +0100 Subject: [PATCH 5/9] more decomp --- arm9/asm/player_avatar_asm.s | 187 ------------------------------ arm9/asm/unk_02034D7C.s | 2 +- arm9/asm/unk_020557F4.s | 22 ++-- arm9/asm/unk_0205E4EC.s | 2 +- arm9/asm/unk_020647A4.s | 4 +- arm9/global.inc | 20 ++-- arm9/overlays/06/asm/overlay_06.s | 6 +- arm9/overlays/18/asm/overlay_18.s | 12 +- arm9/src/map_object.c | 2 +- arm9/src/player_avatar.c | 120 ++++++++++++++++++- arm9/src/scrcmd.c | 1 - arm9/src/scrcmd_flags.c | 18 ++- include/map_object.h | 2 +- include/player_avatar.h | 24 +++- 14 files changed, 178 insertions(+), 244 deletions(-) diff --git a/arm9/asm/player_avatar_asm.s b/arm9/asm/player_avatar_asm.s index d2770af6f..783a38a58 100644 --- a/arm9/asm/player_avatar_asm.s +++ b/arm9/asm/player_avatar_asm.s @@ -7,193 +7,6 @@ .text - thumb_func_start PlayerAvatar_SetPlayerSaveData -PlayerAvatar_SetPlayerSaveData: ; 0x02055458 - str r1, [r0, #0x34] - bx lr - - thumb_func_start sub_0205545C -sub_0205545C: ; 0x0205545C - ldr r0, [r0, #0x34] - bx lr - - thumb_func_start sub_02055460 -sub_02055460: ; 0x02055460 - str r1, [r0, #0x8] - bx lr - - thumb_func_start sub_02055464 -sub_02055464: ; 0x02055464 - ldr r0, [r0, #0x8] - bx lr - - thumb_func_start sub_02055468 -sub_02055468: ; 0x02055468 - mov r1, #0x0 - strh r1, [r0, #0x0] - strh r1, [r0, #0x2] - str r1, [r0, #0x4] - bx lr - .balign 4 - - thumb_func_start sub_02055474 -sub_02055474: ; 0x02055474 - cmp r0, #0x0 - beq _02055482 - ldrh r0, [r0, #0x2] - cmp r0, #0x1 - bne _02055482 - mov r0, #0x1 - bx lr -_02055482: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start sub_02055488 -sub_02055488: ; 0x02055488 - cmp r1, #0x1 - bne _02055492 - mov r1, #0x1 - strh r1, [r0, #0x2] - bx lr -_02055492: - mov r1, #0x0 - strh r1, [r0, #0x2] - bx lr - - thumb_func_start sub_02055498 -sub_02055498: ; 0x02055498 - cmp r0, #0x0 - bne _020554A0 - mov r0, #0x0 - bx lr -_020554A0: - ldrh r0, [r0, #0x0] - bx lr - - thumb_func_start sub_020554A4 -sub_020554A4: ; 0x020554A4 - cmp r0, #0x0 - beq _020554AA - strh r1, [r0, #0x0] -_020554AA: - bx lr - - thumb_func_start sub_020554AC -sub_020554AC: ; 0x020554AC - push {r4, lr} - add r4, r1, #0x0 - bl sub_0205545C - add r1, r4, #0x0 - bl sub_020554A4 - pop {r4, pc} - - thumb_func_start sub_020554BC -sub_020554BC: ; 0x020554BC - push {r3, lr} - bl sub_0205545C - bl sub_02055498 - pop {r3, pc} - - thumb_func_start PlayerSaveData_GetState -PlayerSaveData_GetState: ; 0x020554C8 - cmp r0, #0x0 - beq _020554D0 - ldr r0, [r0, #0x4] - bx lr -_020554D0: - mov r0, #0x0 - bx lr - - thumb_func_start sub_020554D4 -sub_020554D4: ; 0x020554D4 - cmp r0, #0x0 - beq _020554DA - str r1, [r0, #0x4] -_020554DA: - bx lr - - thumb_func_start sub_020554DC -sub_020554DC: ; 0x020554DC - push {r4, lr} - add r4, r1, #0x0 - bl sub_0205545C - add r1, r4, #0x0 - bl sub_020554D4 - pop {r4, pc} - - thumb_func_start sub_020554EC -sub_020554EC: ; 0x020554EC - push {r4-r6, lr} - add r4, r1, #0x0 - add r6, r2, #0x0 - add r5, r0, #0x0 - bl PlayerAvatar_GetMapObject - add r1, r4, #0x0 - add r2, r6, #0x0 - bl LocalMapObject_SetPositionFromVectorAndDirection - add r0, r5, #0x0 - mov r1, #0x0 - bl PlayerAvatar_SetUnk10 - add r0, r5, #0x0 - mov r1, #0x0 - bl PlayerAvatar_SetUnk14 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start sub_02055514 -sub_02055514: ; 0x02055514 - push {r3-r7, lr} - add r6, r1, #0x0 - add r7, r2, #0x0 - add r5, r0, #0x0 - add r4, r3, #0x0 - bl PlayerAvatar_GetMapObject - add r1, r6, #0x0 - mov r2, #0x0 - add r3, r7, #0x0 - str r4, [sp, #0x0] - bl MapObject_SetPositionFromXYZAndDirection - add r0, r5, #0x0 - mov r1, #0x0 - bl PlayerAvatar_SetUnk10 - add r0, r5, #0x0 - mov r1, #0x0 - bl PlayerAvatar_SetUnk14 - pop {r3-r7, pc} - - thumb_func_start sub_02055540 -sub_02055540: ; 0x02055540 - push {r4-r5, lr} - sub sp, #0xc - add r5, r1, #0x0 - bl PlayerAvatar_GetMapObject - add r4, r0, #0x0 - add r1, sp, #0x0 - bl MapObject_CopyPositionVector - add r0, r4, #0x0 - add r1, sp, #0x0 - str r5, [sp, #0x4] - bl MapObject_SetPositionVector - add sp, #0xc - pop {r4-r5, pc} - - thumb_func_start PlayerAvatar_ToggleAutomaticHeightUpdating -PlayerAvatar_ToggleAutomaticHeightUpdating: ; 0x02055560 - push {r4, lr} - add r4, r1, #0x0 - bl PlayerAvatar_GetMapObject - cmp r4, #0x1 - bne _02055574 - mov r1, #0x0 - bl MapObject_SetIgnoreHeights - pop {r4, pc} -_02055574: - mov r1, #0x1 - bl MapObject_SetIgnoreHeights - pop {r4, pc} - thumb_func_start sub_0205557C sub_0205557C: ; 0x0205557C push {r3-r5, lr} diff --git a/arm9/asm/unk_02034D7C.s b/arm9/asm/unk_02034D7C.s index a56623798..f85252e76 100644 --- a/arm9/asm/unk_02034D7C.s +++ b/arm9/asm/unk_02034D7C.s @@ -38,7 +38,7 @@ sub_02034D98: ; 0x02034D98 bl sub_0204ADE0 add r0, r4, #0x0 add r0, #0x8c - bl sub_02055468 + bl PlayerSaveData_Init bl GetMomSpawnId add r4, #0x68 strh r0, [r4, #0x0] diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index 5291b247d..820a9baed 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -806,7 +806,7 @@ _02055E62: mov r1, #0x1 bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 - bl sub_020554BC + bl PlayerAvatar_GetPlayerSaveDataUnk0 cmp r0, #0x1 bne _02055E9C add r0, r5, #0x0 @@ -862,7 +862,7 @@ sub_02055EF8: ; 0x02055EF8 add r4, r0, #0x0 bl MapObject_GetNextFacingDirection add r0, r5, #0x0 - bl sub_020554BC + bl PlayerAvatar_GetPlayerSaveDataUnk0 cmp r0, #0x1 bne _02055F22 ldr r0, _02055F40 ; =0x00000656 @@ -897,7 +897,7 @@ sub_02055F44: ; 0x02055F44 add r4, r0, #0x0 bl MapObject_GetNextFacingDirection add r0, r5, #0x0 - bl sub_020554BC + bl PlayerAvatar_GetPlayerSaveDataUnk0 cmp r0, #0x1 bne _02055F6E ldr r0, _02055F8C ; =0x00000656 @@ -1363,8 +1363,8 @@ _020562DC: _020562E6: add r0, r5, #0x0 mov r4, #0xc - bl sub_0205545C - bl sub_02055474 + bl PlayerAvatar_GetPlayerSaveData + bl PlayerSaveData_CheckRunningShoes cmp r0, #0x1 bne _02056306 add r1, sp, #0x8 @@ -1458,7 +1458,7 @@ sub_020563A8: ; 0x020563A8 add r4, r1, #0x0 add r6, r2, #0x0 add r7, r3, #0x0 - bl sub_020554BC + bl PlayerAvatar_GetPlayerSaveDataUnk0 cmp r0, #0x1 add r0, sp, #0x10 bne _020563D6 @@ -1500,14 +1500,14 @@ sub_020563F0: ; 0x020563F0 beq _0205642C add r0, r5, #0x0 mov r4, #0x1 - bl sub_020554BC + bl PlayerAvatar_GetPlayerSaveDataUnk0 cmp r0, #0x1 bne _02056412 mov r4, #0x0 _02056412: add r0, r5, #0x0 add r1, r4, #0x0 - bl sub_020554AC + bl PlayerAvatar_SetPlayerSaveDataUnk0 cmp r4, #0x0 bne _02056426 ldr r0, _02056430 ; =0x0000061C @@ -2422,7 +2422,7 @@ sub_02056B5C: ; 0x02056B5C add r4, r2, #0x0 add r5, r1, #0x0 add r1, r4, #0x0 - bl sub_02055460 + bl PlayerAvatar_SetUnk8 add r0, r5, #0x0 add r1, r4, #0x0 bl sub_0205ADDC @@ -3173,7 +3173,7 @@ _0205711E: thumb_func_start sub_02057124 sub_02057124: ; 0x02057124 push {r3, lr} - bl sub_02055464 + bl PlayerAvatar_GetUnk8 sub r0, #0x58 cmp r0, #0x3 bhi _02057148 @@ -3216,7 +3216,7 @@ _02057162: b _0205718E _02057172: add r0, r5, #0x0 - bl sub_020554BC + bl PlayerAvatar_GetPlayerSaveDataUnk0 add r0, r5, #0x0 add r1, r4, #0x0 bl sub_020568A8 diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s index c1fec71a1..2f3e97642 100644 --- a/arm9/asm/unk_0205E4EC.s +++ b/arm9/asm/unk_0205E4EC.s @@ -217,7 +217,7 @@ sub_0205E65C: ; 0x0205E65C push {r3, lr} bl MapObject_GetFieldSystem bl sub_02055698 - bl sub_02055464 + bl PlayerAvatar_GetUnk8 add r1, r0, #0x0 sub r1, #0x58 cmp r1, #0x3 diff --git a/arm9/asm/unk_020647A4.s b/arm9/asm/unk_020647A4.s index 41d28160a..14385c227 100644 --- a/arm9/asm/unk_020647A4.s +++ b/arm9/asm/unk_020647A4.s @@ -503,7 +503,7 @@ _02064B00: _02064B1C: ldr r0, [r5, #0x38] ldr r1, [sp, #0x14] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition ldr r0, [sp, #0xc] add r1, sp, #0x10 bl ov05_021E7EB0 @@ -620,7 +620,7 @@ _02064BEC: _02064C12: ldr r0, [r5, #0x38] ldr r1, [sp, #0x14] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition ldr r0, [sp, #0xc] add r1, sp, #0x10 bl ov05_021E7EB0 diff --git a/arm9/global.inc b/arm9/global.inc index d504f7e84..373435c0b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3928,17 +3928,17 @@ .extern PlayerAvatar_SetUnk24Unk28 .extern PlayerAvatar_SetUnk30 .extern PlayerAvatar_GetUnk30 -.extern sub_0205545C -.extern sub_02055460 -.extern sub_02055464 -.extern sub_02055468 -.extern sub_02055474 -.extern sub_02055488 -.extern sub_020554AC -.extern sub_020554BC +.extern PlayerAvatar_GetPlayerSaveData +.extern PlayerAvatar_SetUnk8 +.extern PlayerAvatar_GetUnk8 +.extern PlayerSaveData_Init +.extern PlayerSaveData_CheckRunningShoes +.extern PlayerSaveData_SetRunningShoesFlag +.extern PlayerAvatar_SetPlayerSaveDataUnk0 +.extern PlayerAvatar_GetPlayerSaveDataUnk0 .extern sub_020554EC .extern sub_02055514 -.extern sub_02055540 +.extern PlayerAvatar_SetMapObjectYPosition .extern PlayerAvatar_ToggleAutomaticHeightUpdating .extern sub_0205557C .extern PlayerAvatar_GetSpriteByStateAndGender @@ -4143,7 +4143,7 @@ .extern sub_02058BD4 .extern MapObject_GetPositionVectorYCoordUInt .extern MapObjectManager_GetFirstObjectWithXAndZ -.extern LocalMapObject_SetPositionFromVectorAndDirection +.extern MapObject_SetPositionFromVectorAndDirection .extern MapObject_SetPositionFromXYZAndDirection .extern sub_02058E90 .extern sub_02058EB0 diff --git a/arm9/overlays/06/asm/overlay_06.s b/arm9/overlays/06/asm/overlay_06.s index 140603d45..b2d4bbb81 100644 --- a/arm9/overlays/06/asm/overlay_06.s +++ b/arm9/overlays/06/asm/overlay_06.s @@ -16593,7 +16593,7 @@ _022419B8: _022419F0: ldr r0, [r5, #0x38] ldr r1, [sp, #4] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition add r0, r6, #0 add r1, sp, #0 bl ov05_021E7EB0 @@ -16690,7 +16690,7 @@ _02241A88: _02241ABC: ldr r0, [r5, #0x38] ldr r1, [sp, #4] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition add r0, r6, #0 add r1, sp, #0 bl ov05_021E7EB0 @@ -17245,7 +17245,7 @@ _02241F2A: _02241F2E: ldr r0, [r6, #0x38] ldr r1, [sp, #4] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition add r0, r7, #0 add r1, sp, #0 bl ov05_021E7EB0 diff --git a/arm9/overlays/18/asm/overlay_18.s b/arm9/overlays/18/asm/overlay_18.s index ade87a2de..0a9035845 100644 --- a/arm9/overlays/18/asm/overlay_18.s +++ b/arm9/overlays/18/asm/overlay_18.s @@ -15773,7 +15773,7 @@ ov18_02240F34: ; 0x02240F34 ldr r0, [r1, #0x40] mov r1, #0 ldr r0, [r0, #0x38] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition ldr r0, _02240F80 ; =0x022513A0 ldr r1, [r0, #4] mov r0, #0xa3 @@ -15837,7 +15837,7 @@ _02240FB4: ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition ldr r0, _02241000 ; =0x022513A0 ldr r1, [r0, #4] mov r0, #0xa3 @@ -16037,7 +16037,7 @@ _0224110C: ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition add sp, #0x14 pop {r4, r5, pc} _02241166: @@ -16055,7 +16055,7 @@ _02241166: ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition add sp, #0x14 pop {r4, r5, pc} _0224118C: @@ -16082,7 +16082,7 @@ _022411B0: ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition add r0, r4, #0 bl FreeToHeap add r0, r5, #0 @@ -16143,7 +16143,7 @@ _02241222: ldr r0, [r0, #4] ldr r0, [r0, #0x40] ldr r0, [r0, #0x38] - bl sub_02055540 + bl PlayerAvatar_SetMapObjectYPosition ldr r0, [r4, #0x10] add r0, r0, #1 str r0, [r4, #0x10] diff --git a/arm9/src/map_object.c b/arm9/src/map_object.c index a9a0589b5..a470e84f7 100644 --- a/arm9/src/map_object.c +++ b/arm9/src/map_object.c @@ -1944,7 +1944,7 @@ LocalMapObject *MapObjectManager_GetFirstObjectWithXAndZ(MapObjectManager *manag return NULL; } -void LocalMapObject_SetPositionFromVectorAndDirection(LocalMapObject *object, VecFx32 *positionVector, u32 direction) { +void MapObject_SetPositionFromVectorAndDirection(LocalMapObject *object, VecFx32 *positionVector, u32 direction) { MapObject_SetCurrentX(object, (positionVector->x >> 4) / FX32_ONE); MapObject_SetCurrentY(object, (positionVector->y >> 3) / FX32_ONE); MapObject_SetCurrentZ(object, (positionVector->z >> 4) / FX32_ONE); diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index af47a6b24..20b81a479 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -15,16 +15,18 @@ static void PlayerAvatar_SetGender(PlayerAvatar *avatar, u32 gender); /*static*/ PlayerAvatarFlags PlayerAvatar_GetFlagsBitsMask(PlayerAvatar *avatar, PlayerAvatarFlags flags); static void PlayerAvatar_SetUnk24(PlayerAvatar *avatar, s32 param1); static void PlayerAvatar_SetUnk28(PlayerAvatar *avatar, s32 param1); +static void PlayerAvatar_SetPlayerSaveData(PlayerAvatar *avatar, PlayerSaveData *playerSaveData); +static u16 PlayerSaveData_GetUnk0(PlayerSaveData *playerSaveData); +static void PlayerSaveData_SetUnk0(PlayerSaveData *playerSaveData, u16 unk0); +static s32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData); +static void PlayerSaveData_SetState(PlayerSaveData *playerSaveData, s32 state); +static void PlayerAvatar_SetPlayerSaveDataState(PlayerAvatar *avatar, s32 state); extern u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender); -extern u32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData); extern void ov05_021EDBC8(PlayerAvatar *avatar); extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, u32 z, u32 direction, u32 param4); -extern void PlayerAvatar_SetPlayerSaveData(PlayerAvatar *avatar, PlayerSaveData *saveData); -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); extern void PlayerAvatar_SetFlag2(PlayerAvatar *avatar, BOOL flag); PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData) { @@ -87,7 +89,7 @@ static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, Play PlayerAvatar_ClearUnk20ClearFlag2(avatar); PlayerAvatar_SetUnk24(avatar, -1); PlayerAvatar_SetUnk28(avatar, -1); - sub_02055460(avatar, 255); + PlayerAvatar_SetUnk8(avatar, 255); sub_020556C8(avatar, 1); sub_0205574C(avatar, 1); } @@ -203,7 +205,7 @@ static LocalMapObject *PlayerAvatar_GetMapObjectConst(PlayerAvatar *avatar) { void PlayerAvatar_SetState(PlayerAvatar *avatar, s32 state) { GF_ASSERT(state < PLAYER_STATE_UNK_SP); avatar->state = state; - sub_020554DC(avatar, state); + PlayerAvatar_SetPlayerSaveDataState(avatar, state); } s32 PlayerAvatar_GetState(PlayerAvatar *avatar) { @@ -293,3 +295,109 @@ void PlayerAvatar_SetUnk30(PlayerAvatar *avatar, u32 param1) { u32 PlayerAvatar_GetUnk30(PlayerAvatar *avatar) { return avatar->unk30; } + +static void PlayerAvatar_SetPlayerSaveData(PlayerAvatar *avatar, PlayerSaveData *playerSaveData) { + avatar->playerSaveData = playerSaveData; +} + +PlayerSaveData *PlayerAvatar_GetPlayerSaveData(PlayerAvatar *avatar) { + return avatar->playerSaveData; +} + +void PlayerAvatar_SetUnk8(PlayerAvatar *avatar, u32 param1) { + avatar->unk8 = param1; +} + +u32 PlayerAvatar_GetUnk8(PlayerAvatar *avatar) { + return avatar->unk8; +} + +void PlayerSaveData_Init(PlayerSaveData *playerSaveData) { + playerSaveData->unk0 = 0; + playerSaveData->hasRunningShoes = FALSE; + playerSaveData->state = 0; +} + +BOOL PlayerSaveData_CheckRunningShoes(PlayerSaveData *playerSaveData) { + if (playerSaveData != NULL && playerSaveData->hasRunningShoes == TRUE) { + return TRUE; + } + return FALSE; +} + +void PlayerSaveData_SetRunningShoesFlag(PlayerSaveData *playerSaveData, BOOL flag) { + if (flag == TRUE) { + playerSaveData->hasRunningShoes = TRUE; + } else { + playerSaveData->hasRunningShoes = FALSE; + } +} + +static u16 PlayerSaveData_GetUnk0(PlayerSaveData *playerSaveData) { + if (playerSaveData == NULL) { + return 0; + } + return playerSaveData->unk0; +} + +static void PlayerSaveData_SetUnk0(PlayerSaveData *playerSaveData, u16 unk0) { + if (playerSaveData == NULL) { + return; + } + playerSaveData->unk0 = unk0; +} + +void PlayerAvatar_SetPlayerSaveDataUnk0(PlayerAvatar *playerAvatar, u16 unk0) { + PlayerSaveData_SetUnk0(PlayerAvatar_GetPlayerSaveData(playerAvatar), unk0); +} + +u16 PlayerAvatar_GetPlayerSaveDataUnk0(PlayerAvatar *playerAvatar) { + return PlayerSaveData_GetUnk0(PlayerAvatar_GetPlayerSaveData(playerAvatar)); +} + +static s32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData) { + if (!playerSaveData) { + return 0; + } + return playerSaveData->state; +} + +static void PlayerSaveData_SetState(PlayerSaveData *playerSaveData, s32 state) { + if (!playerSaveData) { + return; + } + playerSaveData->state = state; +} + +static void PlayerAvatar_SetPlayerSaveDataState(PlayerAvatar *avatar, s32 state) { + PlayerSaveData_SetState(PlayerAvatar_GetPlayerSaveData(avatar), state); +} + +void sub_020554EC(PlayerAvatar *avatar, VecFx32 *position, u32 direction) { + MapObject_SetPositionFromVectorAndDirection(PlayerAvatar_GetMapObject(avatar), position, direction); + PlayerAvatar_SetUnk10(avatar, 0); + PlayerAvatar_SetUnk14(avatar, 0); +} + +void sub_02055514(PlayerAvatar *avatar, u32 x, u32 z, u32 direction) { + MapObject_SetPositionFromXYZAndDirection(PlayerAvatar_GetMapObject(avatar), x, 0, z, direction); + PlayerAvatar_SetUnk10(avatar, 0); + PlayerAvatar_SetUnk14(avatar, 0); +} + +void PlayerAvatar_SetMapObjectYPosition(PlayerAvatar *avatar, fx32 yVal) { + LocalMapObject *mapObject = PlayerAvatar_GetMapObject(avatar); + VecFx32 position; + MapObject_CopyPositionVector(mapObject, &position); + position.y = yVal; + MapObject_SetPositionVector(mapObject, &position); +} + +void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag) { + LocalMapObject *mapObject = PlayerAvatar_GetMapObject(avatar); + if (flag == TRUE) { + MapObject_SetIgnoreHeights(mapObject, FALSE); + } else { + MapObject_SetIgnoreHeights(mapObject, TRUE); + } +} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 068540aba..bc0300afb 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -290,7 +290,6 @@ extern void sub_02061574(FieldSystem *fieldSystem); extern u16 SpearPillarSequence(FieldSystem *fieldSystem, u8 operation); extern void ov06_0224525C(FieldSystem *fieldSystem, u16 var, u16 type); extern u16 ov06_02245340(FieldSystem *fieldSystem, u16 position); -extern void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag); extern u16 Save_VarsFlags_GetSpiritombTalkCounter(SaveVarsFlags *varsFlags); extern void sub_0205F5A4(SaveVarsFlags *varsFlags, u16 param1); extern u16 sub_0205F594(SaveVarsFlags *varsFlags); diff --git a/arm9/src/scrcmd_flags.c b/arm9/src/scrcmd_flags.c index ef419ef64..7cdbc47b5 100644 --- a/arm9/src/scrcmd_flags.c +++ b/arm9/src/scrcmd_flags.c @@ -4,10 +4,8 @@ #include "save_vars_flags.h" #include "scrcmd.h" -extern void *sub_02034E20(void *); -extern void *Save_LocalFieldData_Get(void *); -extern BOOL sub_02055474(void *); -extern void sub_02055488(void *, u32); +extern PlayerSaveData *sub_02034E20(LocalFieldData *localFieldData); +extern LocalFieldData *Save_LocalFieldData_Get(SaveData *save); extern void sub_0205ECD4(struct SaveVarsFlags *state); extern BOOL sub_0205ECE0(struct SaveVarsFlags *state); extern void sub_0205ECFC(struct SaveVarsFlags *state); @@ -59,20 +57,20 @@ BOOL ScrCmd_GiveSinnohDex(struct ScriptContext *ctx) // 0158 BOOL ScrCmd_HasRunningShoes(struct ScriptContext *ctx) // 0159 { u16 *ret_ptr = ScriptGetVarPointer(ctx); - void *unk_sav_ptr = Save_LocalFieldData_Get(ctx->fieldSystem->saveData); - void *unk = sub_02034E20(unk_sav_ptr); + LocalFieldData *localFieldData = Save_LocalFieldData_Get(ctx->fieldSystem->saveData); + PlayerSaveData *playerSaveData = sub_02034E20(localFieldData); - *ret_ptr = (u16)sub_02055474(unk); + *ret_ptr = (u16)PlayerSaveData_CheckRunningShoes(playerSaveData); return FALSE; } BOOL ScrCmd_GiveRunningShoes(struct ScriptContext *ctx) // 015A { - void *unk_sav_ptr = Save_LocalFieldData_Get(ctx->fieldSystem->saveData); - void *unk = sub_02034E20(unk_sav_ptr); + LocalFieldData *localFieldData = Save_LocalFieldData_Get(ctx->fieldSystem->saveData); + PlayerSaveData *playerSaveData = sub_02034E20(localFieldData); - sub_02055488(unk, 1); + PlayerSaveData_SetRunningShoesFlag(playerSaveData, TRUE); return FALSE; } diff --git a/include/map_object.h b/include/map_object.h index a545bdd69..c9a24f399 100644 --- a/include/map_object.h +++ b/include/map_object.h @@ -357,7 +357,7 @@ void sub_02058BC4(LocalMapObject *object, VecFx32 *vector); void sub_02058BD4(LocalMapObject *object, VecFx32 *vector); u32 MapObject_GetPositionVectorYCoordUInt(LocalMapObject *object); LocalMapObject *MapObjectManager_GetFirstObjectWithXAndZ(MapObjectManager *manager, u32 x, u32 z); -void LocalMapObject_SetPositionFromVectorAndDirection(LocalMapObject *object, VecFx32 *positionVector, u32 direction); +void MapObject_SetPositionFromVectorAndDirection(LocalMapObject *object, VecFx32 *positionVector, u32 direction); void MapObject_SetPositionFromXYZAndDirection(LocalMapObject *object, u32 x, u32 y, u32 z, u32 direction); void sub_02058E90(LocalMapObject *object, u32 movement); void sub_02058EB0(LocalMapObject *object, u32 id); diff --git a/include/player_avatar.h b/include/player_avatar.h index b81127299..5a023d940 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -19,13 +19,16 @@ typedef enum PlayerAvatarFlags { } PlayerAvatarFlags; // TODO: check if this is right typedef struct PlayerSaveData { - u8 padding[0x8]; -} PlayerSaveData; + u16 unk0; + u16 hasRunningShoes; // bool16 + s32 state; +} PlayerSaveData; // TODO: copied from heartgold, check if this is correct struct PlayerAvatar { PlayerAvatarFlags flags; u32 transitionFlags; - u8 padding0[0x8]; + u32 unk8; + u8 padding0[0x4]; u32 unk10; u32 unk14; s32 state; @@ -35,7 +38,8 @@ struct PlayerAvatar { s32 unk28; LocalMapObject *mapObject; u32 unk30; - u8 padding2[0x8]; + PlayerSaveData *playerSaveData; + u8 padding2[0x4]; }; // TODO: populate once we know more PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *mapObjectManager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData); @@ -75,5 +79,17 @@ s32 PlayerAvatar_GetUnk28(PlayerAvatar *avatar); void PlayerAvatar_SetUnk24Unk28(PlayerAvatar *avatar, s32 unk24, s32 unk28); void PlayerAvatar_SetUnk30(PlayerAvatar *avatar, u32 param1); u32 PlayerAvatar_GetUnk30(PlayerAvatar *avatar); +PlayerSaveData *PlayerAvatar_GetPlayerSaveData(PlayerAvatar *avatar); +void PlayerAvatar_SetUnk8(PlayerAvatar *avatar, u32 param1); +u32 PlayerAvatar_GetUnk8(PlayerAvatar *avatar); +void PlayerSaveData_Init(PlayerSaveData *playerSaveData); +BOOL PlayerSaveData_CheckRunningShoes(PlayerSaveData *playerSaveData); +void PlayerSaveData_SetRunningShoesFlag(PlayerSaveData *playerSaveData, BOOL flag); +void PlayerAvatar_SetPlayerSaveDataUnk0(PlayerAvatar *playerAvatar, u16 unk0); +u16 PlayerAvatar_GetPlayerSaveDataUnk0(PlayerAvatar *playerAvatar); +void sub_020554EC(PlayerAvatar *avatar, VecFx32 *position, u32 direction); +void sub_02055514(PlayerAvatar *avatar, u32 x, u32 z, u32 direction); +void PlayerAvatar_SetMapObjectYPosition(PlayerAvatar *avatar, fx32 yVal); +void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag); #endif // POKEDIAMOND_PLAYER_AVATAR_H From c4ed650d1538abede8f03a45da179c0092580377 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 27 Aug 2025 21:47:36 +0100 Subject: [PATCH 6/9] sprites.h and player states --- arm9/asm/player_avatar_asm.s | 18 --- arm9/asm/unk_020647A4.s | 4 +- arm9/global.inc | 2 +- arm9/overlays/06/asm/overlay_06.s | 6 +- arm9/src/bg_window.c | 34 ++-- arm9/src/player_avatar.c | 15 +- include/constants/global_fieldmap.h | 14 +- include/constants/sprites.h | 238 +++++++++++++++++++++++++++- include/player_avatar.h | 1 + 9 files changed, 283 insertions(+), 49 deletions(-) diff --git a/arm9/asm/player_avatar_asm.s b/arm9/asm/player_avatar_asm.s index 783a38a58..a10b1ddd1 100644 --- a/arm9/asm/player_avatar_asm.s +++ b/arm9/asm/player_avatar_asm.s @@ -7,24 +7,6 @@ .text - thumb_func_start sub_0205557C -sub_0205557C: ; 0x0205557C - push {r3-r5, lr} - add r5, r1, #0x0 - bl PlayerAvatar_GetMapObject - add r4, r0, #0x0 - cmp r5, #0x1 - bne _02055598 - mov r1, #0x0 - bl MapObject_SetIgnoreHeights - add r0, r4, #0x0 - bl sub_02059D1C - pop {r3-r5, pc} -_02055598: - mov r1, #0x1 - bl MapObject_SetIgnoreHeights - pop {r3-r5, pc} - thumb_func_start PlayerAvatar_GetSpriteByStateAndGender PlayerAvatar_GetSpriteByStateAndGender: ; 0x020555A0 push {r3, lr} diff --git a/arm9/asm/unk_020647A4.s b/arm9/asm/unk_020647A4.s index 14385c227..ede2ffa75 100644 --- a/arm9/asm/unk_020647A4.s +++ b/arm9/asm/unk_020647A4.s @@ -517,7 +517,7 @@ _02064B2E: bl ov05_021F4594 ldr r0, [r5, #0x38] mov r1, #0x1 - bl sub_0205557C + bl PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate ldr r0, _02064B6C ; =0x0000061A bl PlaySE ldr r0, [r4, #0x0] @@ -634,7 +634,7 @@ _02064C24: bl ov05_021F4594 ldr r0, [r5, #0x38] mov r1, #0x1 - bl sub_0205557C + bl PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate ldr r0, _02064C60 ; =0x0000061A bl PlaySE ldr r0, [r4, #0x0] diff --git a/arm9/global.inc b/arm9/global.inc index 373435c0b..76241b21d 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3940,7 +3940,7 @@ .extern sub_02055514 .extern PlayerAvatar_SetMapObjectYPosition .extern PlayerAvatar_ToggleAutomaticHeightUpdating -.extern sub_0205557C +.extern PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate .extern PlayerAvatar_GetSpriteByStateAndGender .extern sub_02055648 .extern sub_02055698 diff --git a/arm9/overlays/06/asm/overlay_06.s b/arm9/overlays/06/asm/overlay_06.s index b2d4bbb81..1f8006414 100644 --- a/arm9/overlays/06/asm/overlay_06.s +++ b/arm9/overlays/06/asm/overlay_06.s @@ -16608,7 +16608,7 @@ _02241A02: bl ov05_021F4594 ldr r0, [r5, #0x38] mov r1, #1 - bl sub_0205557C + bl PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate ldr r0, _02241A40 ; =0x0000061A bl PlaySE ldr r0, [r4] @@ -16704,7 +16704,7 @@ _02241ACE: bl ov05_021F4594 ldr r0, [r5, #0x38] mov r1, #1 - bl sub_0205557C + bl PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate ldr r0, _02241B0C ; =0x0000061A bl PlaySE ldr r0, [r4] @@ -17256,7 +17256,7 @@ _02241F2E: _02241F48: ldr r0, [r6, #0x38] mov r1, #1 - bl sub_0205557C + bl PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate ldr r0, _02241F78 ; =0x0000061A bl PlaySE ldr r0, [r4] diff --git a/arm9/src/bg_window.c b/arm9/src/bg_window.c index 200618c37..dffbb1faa 100644 --- a/arm9/src/bg_window.c +++ b/arm9/src/bg_window.c @@ -126,19 +126,19 @@ void SetScreenModeAndDisable(const struct GraphicsModes *gfxModes, enum GFScreen } void InitBgFromTemplate(BgConfig *bgConfig, u8 bgId, const BgTemplate *template, u8 bgMode) { - u8 screenSize = TranslateGFBgModePairToGXScreenSize((enum GFBgScreenSize) template->size, (enum GFBgType)bgMode); + u8 screenSize = TranslateGFBgModePairToGXScreenSize((enum GFBgScreenSize)template->size, (enum GFBgType)bgMode); switch (bgId) { case GF_BG_LYR_MAIN_0: GfGfx_EngineATogglePlanes(GF_BG_LYR_MAIN_0_F, GX_PLANE_TOGGLE_ON); - G2_SetBG0Control((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase, (GXBGExtPltt) template->bgExtPltt); + G2_SetBG0Control((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase, (GXBGExtPltt)template->bgExtPltt); G2_SetBG0Priority(template->priority); G2_BG0Mosaic(template->mosaic); break; case GF_BG_LYR_MAIN_1: GfGfx_EngineATogglePlanes(GF_BG_LYR_MAIN_1_F, GX_PLANE_TOGGLE_ON); - G2_SetBG1Control((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase, (GXBGExtPltt) template->bgExtPltt); + G2_SetBG1Control((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase, (GXBGExtPltt)template->bgExtPltt); G2_SetBG1Priority(template->priority); G2_BG1Mosaic(template->mosaic); break; @@ -148,13 +148,13 @@ void InitBgFromTemplate(BgConfig *bgConfig, u8 bgId, const BgTemplate *template, switch (bgMode) { default: case GF_BG_TYPE_TEXT: - G2_SetBG2ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2_SetBG2ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_AFFINE: - G2_SetBG2ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2_SetBG2ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_256x16PLTT: - G2_SetBG2Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2_SetBG2Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; } G2_SetBG2Priority(template->priority); @@ -166,13 +166,13 @@ void InitBgFromTemplate(BgConfig *bgConfig, u8 bgId, const BgTemplate *template, switch (bgMode) { default: case GF_BG_TYPE_TEXT: - G2_SetBG3ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2_SetBG3ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_AFFINE: - G2_SetBG3ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2_SetBG3ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_256x16PLTT: - G2_SetBG3Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2_SetBG3Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; } G2_SetBG3Priority(template->priority); @@ -181,14 +181,14 @@ void InitBgFromTemplate(BgConfig *bgConfig, u8 bgId, const BgTemplate *template, case GF_BG_LYR_SUB_0: GfGfx_EngineBTogglePlanes(GF_BG_LYR_SUB_0_F, GX_PLANE_TOGGLE_ON); - G2S_SetBG0Control((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase, (GXBGExtPltt) template->bgExtPltt); + G2S_SetBG0Control((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase, (GXBGExtPltt)template->bgExtPltt); G2S_SetBG0Priority(template->priority); G2S_BG0Mosaic(template->mosaic); break; case GF_BG_LYR_SUB_1: GfGfx_EngineBTogglePlanes(GF_BG_LYR_SUB_1_F, GX_PLANE_TOGGLE_ON); - G2S_SetBG1Control((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase, (GXBGExtPltt) template->bgExtPltt); + G2S_SetBG1Control((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase, (GXBGExtPltt)template->bgExtPltt); G2S_SetBG1Priority(template->priority); G2S_BG1Mosaic(template->mosaic); break; @@ -198,13 +198,13 @@ void InitBgFromTemplate(BgConfig *bgConfig, u8 bgId, const BgTemplate *template, switch (bgMode) { default: case GF_BG_TYPE_TEXT: - G2S_SetBG2ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2S_SetBG2ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_AFFINE: - G2S_SetBG2ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2S_SetBG2ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_256x16PLTT: - G2S_SetBG2Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2S_SetBG2Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; } G2S_SetBG2Priority(template->priority); @@ -216,13 +216,13 @@ void InitBgFromTemplate(BgConfig *bgConfig, u8 bgId, const BgTemplate *template, switch (bgMode) { default: case GF_BG_TYPE_TEXT: - G2S_SetBG3ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode) template->colorMode, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2S_SetBG3ControlText((GXBGScrSizeText)screenSize, (GXBGColorMode)template->colorMode, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_AFFINE: - G2S_SetBG3ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2S_SetBG3ControlAffine((GXBGScrSizeAffine)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; case GF_BG_TYPE_256x16PLTT: - G2S_SetBG3Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver) template->areaOver, (GXBGScrBase) template->screenBase, (GXBGCharBase) template->charBase); + G2S_SetBG3Control256x16Pltt((GXBGScrSize256x16Pltt)screenSize, (GXBGAreaOver)template->areaOver, (GXBGScrBase)template->screenBase, (GXBGCharBase)template->charBase); break; } G2S_SetBG3Priority(template->priority); diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index 20b81a479..68f55b67c 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -2,6 +2,8 @@ #include "global.h" +#include "constants/sprites.h" + #include "map_object.h" static PlayerAvatar *PlayerAvatar_Create(void); @@ -28,6 +30,7 @@ extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, u32 z, u32 direction, extern void sub_020556C8(PlayerAvatar *avatar, u32 param1); extern void sub_0205574C(PlayerAvatar *avatar, u32 param1); extern void PlayerAvatar_SetFlag2(PlayerAvatar *avatar, BOOL flag); +extern u32 sub_02059D1C(LocalMapObject *object); PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData) { PlayerAvatar *avatar = PlayerAvatar_Create(); @@ -203,7 +206,7 @@ static LocalMapObject *PlayerAvatar_GetMapObjectConst(PlayerAvatar *avatar) { } void PlayerAvatar_SetState(PlayerAvatar *avatar, s32 state) { - GF_ASSERT(state < PLAYER_STATE_UNK_SP); + GF_ASSERT(state < PLAYER_STATE_USE_HM); avatar->state = state; PlayerAvatar_SetPlayerSaveDataState(avatar, state); } @@ -401,3 +404,13 @@ void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag) { MapObject_SetIgnoreHeights(mapObject, TRUE); } } + +void PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate(PlayerAvatar *avatar, BOOL flag) { + LocalMapObject *mapObject = PlayerAvatar_GetMapObject(avatar); + if (flag == TRUE) { + MapObject_SetIgnoreHeights(mapObject, FALSE); + sub_02059D1C(mapObject); + } else { + MapObject_SetIgnoreHeights(mapObject, TRUE); + } +} diff --git a/include/constants/global_fieldmap.h b/include/constants/global_fieldmap.h index 01fadc05b..3a6ac021a 100644 --- a/include/constants/global_fieldmap.h +++ b/include/constants/global_fieldmap.h @@ -8,10 +8,16 @@ #define DIR_EAST 3 // Player avatar state -#define PLAYER_STATE_WALKING 0 -#define PLAYER_STATE_CYCLING 1 -#define PLAYER_STATE_SURFING 2 -#define PLAYER_STATE_UNK_SP 3 +#define PLAYER_STATE_WALKING 0 +#define PLAYER_STATE_CYCLING 1 +#define PLAYER_STATE_SURFING 2 +#define PLAYER_STATE_USE_HM 3 +#define PLAYER_STATE_WATERING 4 +#define PLAYER_STATE_CONTEST 5 +#define PLAYER_STATE_FISHING 6 +#define PLAYER_STATE_POKETCH 7 +#define PLAYER_STATE_SAVING 8 +#define PLAYER_STATE_HEAL 9 // Player transition bits #define PLAYER_TRANSITION_WALKING 1 << 0 diff --git a/include/constants/sprites.h b/include/constants/sprites.h index 85c624ec1..55d747a39 100644 --- a/include/constants/sprites.h +++ b/include/constants/sprites.h @@ -1,9 +1,241 @@ #ifndef POKEDIAMOND_CONSTANTS_SPRITES_H #define POKEDIAMOND_CONSTANTS_SPRITES_H -#define SPRITE_ROCK 84 -#define SPRITE_BREAKROCK 85 -#define SPRITE_TREE 86 +#define SPRITE_HERO 0 +#define SPRITE_BABYBOY1 1 +#define SPRITE_BABYGIRL1 2 +#define SPRITE_BOY1 3 +#define SPRITE_BOY2 4 +#define SPRITE_BOY3 5 +#define SPRITE_GIRL1 6 +#define SPRITE_GIRL2 7 +#define SPRITE_GIRL3 8 +#define SPRITE_MAN1 9 +#define SPRITE_MAN2 10 +#define SPRITE_MAN3 11 +#define SPRITE_WOMAN1 12 +#define SPRITE_WOMAN2 13 +#define SPRITE_WOMAN3 14 +#define SPRITE_MIDDLEMAN1 15 +#define SPRITE_MIDDLEWOMAN1 16 +#define SPRITE_OLDMAN1 17 +#define SPRITE_OLDWOMAN1 18 +#define SPRITE_BIGMAN 19 +#define SPRITE_MOUNT 20 +#define SPRITE_CYCLEHERO 21 +#define SPRITE_REPORTER 22 +#define SPRITE_CAMERAMAN 23 +#define SPRITE_SHOPM1 24 +#define SPRITE_SHOPW1 25 +#define SPRITE_PCWOMAN1 26 +#define SPRITE_PCWOMAN2 27 +#define SPRITE_PCWOMAN3 28 +#define SPRITE_ASSISTANTM 29 +#define SPRITE_ASSISTANTW 30 +#define SPRITE_BADMAN 31 +#define SPRITE_SKIERM 32 +#define SPRITE_SKIERW 33 +#define SPRITE_POLICEMAN 34 +#define SPRITE_IDOL 35 +#define SPRITE_GENTLEMAN 36 +#define SPRITE_LADY 37 +#define SPRITE_CYCLEM 38 +#define SPRITE_CYCLEW 39 +#define SPRITE_WORKMAN 40 +#define SPRITE_FARMER 41 +#define SPRITE_COWGIRL 42 +#define SPRITE_CLOWN 43 +#define SPRITE_ARTIST 44 +#define SPRITE_SPORTSMAN 45 +#define SPRITE_SWIMMERM 46 +#define SPRITE_SWIMMERW 47 +#define SPRITE_BEACHGIRL 48 +#define SPRITE_BEACHBOY 49 +#define SPRITE_EXPLORE 50 +#define SPRITE_FIGHTER 51 +#define SPRITE_CAMPBOY 52 +#define SPRITE_PICNICGIRL 53 +#define SPRITE_FISHING 54 +#define SPRITE_AMBRELLA 55 +#define SPRITE_SEAMAN 56 +#define SPRITE_WAITER 59 +#define SPRITE_WAITRESS 60 +#define SPRITE_GORGGEOUSM 62 +#define SPRITE_GORGGEOUSW 63 +#define SPRITE_BOY4 64 +#define SPRITE_GIRL4 65 +#define SPRITE_MAN5 68 +#define SPRITE_WOMAN5 69 +#define SPRITE_MYSTERY 70 +#define SPRITE_PIKACHU 71 +#define SPRITE_PIPPI 72 +#define SPRITE_PURIN 73 +#define SPRITE_KODUCK 74 +#define SPRITE_ACHAMO 78 +#define SPRITE_ENECO 79 +#define SPRITE_BABY 81 +#define SPRITE_MIDDLEMAN2 82 +#define SPRITE_MIDDLEWOMAN2 83 +#define SPRITE_ROCK 84 +#define SPRITE_BREAKROCK 85 +#define SPRITE_TREE 86 +#define SPRITE_MONSTARBALL 87 +#define SPRITE_GIRL1_2 88 +#define SPRITE_GIRL1_3 89 +#define SPRITE_GIRL1_4 90 +#define SPRITE_HEROINE 97 +#define SPRITE_CYCLEHEROINE 98 +#define SPRITE_DOCTOR 99 +#define SPRITE_GINGABOSS 120 +#define SPRITE_GKANBU1 121 +#define SPRITE_GKANBU2 122 +#define SPRITE_GKANBU3 123 +#define SPRITE_GINGAM 124 +#define SPRITE_GINGAW 125 +#define SPRITE_LEADER1 126 +#define SPRITE_LEADER2 127 +#define SPRITE_LEADER3 128 +#define SPRITE_LEADER4 129 +#define SPRITE_LEADER5 130 +#define SPRITE_LEADER6 131 +#define SPRITE_LEADER7 132 +#define SPRITE_LEADER8 133 +#define SPRITE_BIGFOUR1 134 +#define SPRITE_BIGFOUR2 135 +#define SPRITE_BIGFOUR3 136 +#define SPRITE_BIGFOUR4 137 +#define SPRITE_CHAMPION 138 +#define SPRITE_MAN1_2 139 +#define SPRITE_MAMA 140 +#define SPRITE_SEVEN1 141 +#define SPRITE_SEVEN2 142 +#define SPRITE_SEVEN3 143 +#define SPRITE_SEVEN4 144 +#define SPRITE_SEVEN5 145 +#define SPRITE_RIVEL 148 +#define SPRITE_BIGMAN_2 149 +#define SPRITE_BIGMAN_3 150 +#define SPRITE_SPPOKE1 151 +#define SPRITE_SPPOKE2 152 +#define SPRITE_SPPOKE3 153 +#define SPRITE_SPPOKE4 154 +#define SPRITE_SPPOKE5 155 +#define SPRITE_SPPOKE6 156 +#define SPRITE_SPPOKE7 157 +#define SPRITE_SPPOKE8 158 +#define SPRITE_SPPOKE9 159 +#define SPRITE_SPPOKE10 160 +#define SPRITE_SPPOKE11 161 +#define SPRITE_WOMAN6 163 +#define SPRITE_OLDMAN2 164 +#define SPRITE_OLDWOMAN2 165 +#define SPRITE_OOKIDO 166 +#define SPRITE_MIKAN 167 +#define SPRTIE_SUNGLASSES 168 +#define SPRITE_TOWERBOSS 169 +#define SPRITE_BIGMAN_4 170 +#define SPRITE_BIGMAN_5 171 +#define SPRITE_BIGMAN_6 172 +#define SPRITE_BIRD 173 +#define SPRITE_BAG 174 +#define SPRITE_MAID 175 +#define SPRITE_SPHERO 176 +#define SPRITE_SPHEROINE 177 +#define SPRITE_SWIMHERO 178 +#define SPRITE_SWIMHEROINE 179 +#define SPRITE_WATERHERO 180 +#define SPRITE_WATERHEROINE 181 +#define SPRITE_VENTHOLE 182 +#define SPRITE_SSPOKE12 184 +#define SPRITE_BALLOON 185 +#define SPRITE_CONTESTHERO 186 +#define SPRITE_CONT_HEROINE 187 +#define SPRITE_FISHINGHERO 188 +#define SPRITE_FISH_HEROINE 189 +#define SPIRTE_MOSS 190 +#define SPRITE_FREEZES 191 +#define SPRITE_POLE 192 +#define SPRITE_DELIVERY 193 +#define SPRITE_DSBOY 194 +#define SPRITE_KOIKING 195 +#define SPRITE_POKEHERO 196 +#define SPRITE_POKEHEROINE 197 +#define SPRITE_SAVEHERO 198 +#define SPRITE_SAVEHEROINE 199 +#define SPRITE_BANZAIHERO 200 +#define SPRITE_BANZAIHEROINE 201 +#define SPRITE_GINGA_DOOR 202 +#define SPRITE_T5_O01_C 203 +#define SPRITE_PATIRITUSU 204 +#define SPRITE_KINOCOCO 205 +#define SPRITE_MIMITUTO 206 +#define SPRITE_KOLUCKY 207 +#define SPRITE_WANRIKY 208 + +#define SPRITE_SEED00_A 4096 +#define SPRITE_SEED01_A 4097 +#define SPRITE_SEED01_B 4098 +#define SPRITE_SEED01_C 4099 +#define SPRITE_SEED02_A 4100 +#define SPRITE_SEED02_B 4101 +#define SPRITE_SEED02_C 4102 +#define SPRITE_SEED03_A 4103 +#define SPRITE_SEED03_B 4104 +#define SPRITE_SEED03_C 4105 +#define SPRITE_SEED04_A 4106 +#define SPRITE_SEED04_B 4107 +#define SPRITE_SEED04_C 4108 +#define SPRITE_SEED05_A 4109 +#define SPRITE_SEED05_B 4110 +#define SPRITE_SEED05_C 4111 +#define SPRITE_SEED06_A 4112 +#define SPRITE_SEED06_B 4113 +#define SPRITE_SEED06_C 4114 +#define SPRITE_SEED07_A 4115 +#define SPRITE_SEED07_B 4116 +#define SPRITE_SEED07_C 4117 +#define SPRITE_SEED08_A 4118 +#define SPRITE_SEED08_B 4119 +#define SPRITE_SEED08_C 4120 +#define SPRITE_SEED09_A 4121 +#define SPRITE_SEED09_B 4122 +#define SPRITE_SEED09_C 4123 +#define SPRITE_SEED10_A 4124 +#define SPRITE_SEED10_B 4125 +#define SPRITE_SEED10_C 4126 +#define SPRITE_SEED11_A 4127 +#define SPRITE_SEED11_B 4128 +#define SPRITE_SEED11_C 4129 +#define SPRITE_SEED12_A 4130 +#define SPRTIE_SEED12_B 4131 +#define SPRITE_SEED12_C 4132 +#define SPRITE_SEED13_A 4133 +#define SPRITE_SEED13_B 4134 +#define SPRITE_SEED13_C 4135 +#define SPRITE_SEED14_A 4136 +#define SPRITE_SEED14_B 4137 +#define SPRITE_SEED14_C 4138 +#define SPRITE_SEED15_A 4139 +#define SPRITE_SEED15_B 4140 +#define SPRITE_SEED15_C 4141 +#define SPRITE_SEED16_A 4142 +#define SPRITE_SEED16_B 4143 +#define SPRITE_SEED16_C 4144 +#define SPRITE_SEED17_A 4145 +#define SPRITE_SEED17_B 4146 +#define SPRITE_SEED17_C 4147 +#define SPRITE_SEED18_A 4148 +#define SPRITE_SEED18_B 4149 +#define SPRITE_SEED18_C 4150 +#define SPRITE_SEED19_A 4151 +#define SPRITE_SEED19_B 4152 +#define SPRITE_SEED19_C 4153 +#define SPRITE_SEED20_A 4154 +#define SPRITE_SEED20_B 4155 +#define SPRITE_SEED20_C 4156 +#define SPRITE_SEED21_A 4157 +#define SPRITE_SEED21_B 4158 +#define SPRITE_SEED21_c 4159 #define SPRITE_CAMERA_FOCUS 8192 diff --git a/include/player_avatar.h b/include/player_avatar.h index 5a023d940..3bd384892 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -91,5 +91,6 @@ void sub_020554EC(PlayerAvatar *avatar, VecFx32 *position, u32 direction); void sub_02055514(PlayerAvatar *avatar, u32 x, u32 z, u32 direction); void PlayerAvatar_SetMapObjectYPosition(PlayerAvatar *avatar, fx32 yVal); void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag); +void PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate(PlayerAvatar *avatar, BOOL flag); #endif // POKEDIAMOND_PLAYER_AVATAR_H From bcb39643c983666ae105a6a68ef27a90f90534b5 Mon Sep 17 00:00:00 2001 From: red031000 Date: Thu, 28 Aug 2025 00:25:58 +0100 Subject: [PATCH 7/9] finish sprites.h and add PlayerAvatar_GetSpriteByStateAndGender --- arm9/asm/player_avatar_asm.s | 110 ----------------------------- arm9/src/player_avatar.c | 53 +++++++++++++- include/constants/sprites.h | 131 ++++++++++++++++++++++++++++++++++- include/player_avatar.h | 1 + 4 files changed, 183 insertions(+), 112 deletions(-) diff --git a/arm9/asm/player_avatar_asm.s b/arm9/asm/player_avatar_asm.s index a10b1ddd1..147ba1cc4 100644 --- a/arm9/asm/player_avatar_asm.s +++ b/arm9/asm/player_avatar_asm.s @@ -7,116 +7,6 @@ .text - thumb_func_start PlayerAvatar_GetSpriteByStateAndGender -PlayerAvatar_GetSpriteByStateAndGender: ; 0x020555A0 - push {r3, lr} - cmp r1, #0x0 - bne _020555F2 - cmp r0, #0x9 - bhi _0205563E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020555B6: ; jump table (using 16-bit offset) - .short _020555CA - _020555B6 - 2; case 0 - .short _020555CE - _020555B6 - 2; case 1 - .short _020555D2 - _020555B6 - 2; case 2 - .short _020555D6 - _020555B6 - 2; case 3 - .short _020555DA - _020555B6 - 2; case 4 - .short _020555DE - _020555B6 - 2; case 5 - .short _020555E2 - _020555B6 - 2; case 6 - .short _020555E6 - _020555B6 - 2; case 7 - .short _020555EA - _020555B6 - 2; case 8 - .short _020555EE - _020555B6 - 2; case 9 -_020555CA: - mov r0, #0x0 - pop {r3, pc} -_020555CE: - mov r0, #0x15 - pop {r3, pc} -_020555D2: - mov r0, #0xb2 - pop {r3, pc} -_020555D6: - mov r0, #0xb0 - pop {r3, pc} -_020555DA: - mov r0, #0xb4 - pop {r3, pc} -_020555DE: - mov r0, #0xba - pop {r3, pc} -_020555E2: - mov r0, #0xbc - pop {r3, pc} -_020555E6: - mov r0, #0xc4 - pop {r3, pc} -_020555EA: - mov r0, #0xc6 - pop {r3, pc} -_020555EE: - mov r0, #0xc8 - pop {r3, pc} -_020555F2: - cmp r0, #0x9 - bhi _0205563E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02055602: ; jump table (using 16-bit offset) - .short _02055616 - _02055602 - 2; case 0 - .short _0205561A - _02055602 - 2; case 1 - .short _0205561E - _02055602 - 2; case 2 - .short _02055622 - _02055602 - 2; case 3 - .short _02055626 - _02055602 - 2; case 4 - .short _0205562A - _02055602 - 2; case 5 - .short _0205562E - _02055602 - 2; case 6 - .short _02055632 - _02055602 - 2; case 7 - .short _02055636 - _02055602 - 2; case 8 - .short _0205563A - _02055602 - 2; case 9 -_02055616: - mov r0, #0x61 - pop {r3, pc} -_0205561A: - mov r0, #0x62 - pop {r3, pc} -_0205561E: - mov r0, #0xb3 - pop {r3, pc} -_02055622: - mov r0, #0xb1 - pop {r3, pc} -_02055626: - mov r0, #0xb5 - pop {r3, pc} -_0205562A: - mov r0, #0xbb - pop {r3, pc} -_0205562E: - mov r0, #0xbd - pop {r3, pc} -_02055632: - mov r0, #0xc5 - pop {r3, pc} -_02055636: - mov r0, #0xc7 - pop {r3, pc} -_0205563A: - mov r0, #0xc9 - pop {r3, pc} -_0205563E: - bl GF_AssertFail - mov r0, #0x0 - pop {r3, pc} - .balign 4 - thumb_func_start sub_02055648 sub_02055648: ; 0x02055648 push {r3, lr} diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index 68f55b67c..3ddf3185b 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -24,7 +24,6 @@ static s32 PlayerSaveData_GetState(PlayerSaveData *playerSaveData); static void PlayerSaveData_SetState(PlayerSaveData *playerSaveData, s32 state); static void PlayerAvatar_SetPlayerSaveDataState(PlayerAvatar *avatar, s32 state); -extern u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender); extern void ov05_021EDBC8(PlayerAvatar *avatar); extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, u32 z, u32 direction, u32 param4); extern void sub_020556C8(PlayerAvatar *avatar, u32 param1); @@ -414,3 +413,55 @@ void PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate(PlayerAvatar *avatar, B MapObject_SetIgnoreHeights(mapObject, TRUE); } } + +u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender) { + if (gender == PLAYER_GENDER_MALE) { + switch (state) { + case PLAYER_STATE_WALKING: + return SPRITE_HERO; + case PLAYER_STATE_CYCLING: + return SPRITE_CYCLEHERO; + case PLAYER_STATE_SURFING: + return SPRITE_SWIMHERO; + case PLAYER_STATE_USE_HM: + return SPRITE_SPHERO; + case PLAYER_STATE_WATERING: + return SPRITE_WATERHERO; + case PLAYER_STATE_CONTEST: + return SPRITE_CONTESTHERO; + case PLAYER_STATE_FISHING: + return SPRITE_FISHINGHERO; + case PLAYER_STATE_POKETCH: + return SPRITE_POKEHERO; + case PLAYER_STATE_SAVING: + return SPRITE_SAVEHERO; + case PLAYER_STATE_HEAL: + return SPRITE_BANZAIHERO; + } + } else { + switch (state) { + case PLAYER_STATE_WALKING: + return SPRITE_HEROINE; + case PLAYER_STATE_CYCLING: + return SPRITE_CYCLEHEROINE; + case PLAYER_STATE_SURFING: + return SPRITE_SWIMHEROINE; + case PLAYER_STATE_USE_HM: + return SPRITE_SPHEROINE; + case PLAYER_STATE_WATERING: + return SPRITE_WATERHEROINE; + case PLAYER_STATE_CONTEST: + return SPRITE_CONT_HEROINE; + case PLAYER_STATE_FISHING: + return SPRITE_FISH_HEROINE; + case PLAYER_STATE_POKETCH: + return SPRITE_POKEHEROINE; + case PLAYER_STATE_SAVING: + return SPRITE_SAVEHEROINE; + case PLAYER_STATE_HEAL: + return SPRITE_BANZAIHEROINE; + } + } + GF_ASSERT(FALSE); + return 0; +} diff --git a/include/constants/sprites.h b/include/constants/sprites.h index 55d747a39..51da00094 100644 --- a/include/constants/sprites.h +++ b/include/constants/sprites.h @@ -235,7 +235,136 @@ #define SPRITE_SEED20_C 4156 #define SPRITE_SEED21_A 4157 #define SPRITE_SEED21_B 4158 -#define SPRITE_SEED21_c 4159 +#define SPRITE_SEED21_C 4159 +#define SPRITE_SEED22_A 4160 +#define SPRITE_SEED22_B 4161 +#define SPRITE_SEED22_C 4162 +#define SPRITE_SEED23_A 4163 +#define SPRITE_SEED23_B 4164 +#define SPRITE_SEED23_C 4165 +#define SPRITE_SEED24_A 4166 +#define SPRITE_SEED24_B 4167 +#define SPRITE_SEED24_C 4168 +#define SPRITE_SEED25_A 4169 +#define SPRITE_SEED25_B 4170 +#define SPRITE_SEED25_C 4171 +#define SPRITE_SEED26_A 4172 +#define SPRITE_SEED26_B 4173 +#define SPRITE_SEED26_C 4174 +#define SPRITE_SEED27_A 4175 +#define SPRITE_SEED27_B 4176 +#define SPRITE_SEED27_C 4177 +#define SPRITE_SEED28_A 4178 +#define SPRITE_SEED28_B 4179 +#define SPRITE_SEED28_C 4180 +#define SPRITE_SEED29_A 4181 +#define SPRITE_SEED29_B 4182 +#define SPRITE_SEED29_C 4183 +#define SPRITE_SEED30_A 4184 +#define SPRITE_SEED30_B 4185 +#define SPRITE_SEED30_C 4186 +#define SPRITE_SEED31_A 4187 +#define SPRITE_SEED31_B 4188 +#define SPRITE_SEED31_C 4189 +#define SPRITE_SEED32_A 4190 +#define SPRITE_SEED32_B 4191 +#define SPRITE_SEED32_C 4192 +#define SPRITE_SEED33_A 4193 +#define SPRITE_SEED33_B 4194 +#define SPRITE_SEED33_C 4195 +#define SPRITE_SEED34_A 4196 +#define SPRITE_SEED34_B 4197 +#define SPRITE_SEED34_C 4198 +#define SPRITE_SEED35_A 4199 +#define SPRITE_SEED35_B 4200 +#define SPRITE_SEED35_C 4201 +#define SPRITE_SEED36_A 4202 +#define SPRITE_SEED36_B 4203 +#define SPRITE_SEED36_C 4204 +#define SPRITE_SEED37_A 4205 +#define SPRITE_SEED37_B 4206 +#define SPRITE_SEED37_C 4207 +#define SPRITE_SEED38_A 4208 +#define SPRITE_SEED38_B 4209 +#define SPRITE_SEED38_C 4210 +#define SPRITE_SEED39_A 4211 +#define SPRITE_SEED39_B 4212 +#define SPRITE_SEED39_C 4213 +#define SPRITE_SEED40_A 4214 +#define SPRITE_SEED40_B 4215 +#define SPRITE_SEED40_C 4216 +#define SPRITE_SEED41_A 4217 +#define SPRITE_SEED41_B 4218 +#define SPRITE_SEED41_C 4219 +#define SPRITE_SEED42_A 4220 +#define SPRITE_SEED42_B 4221 +#define SPRITE_SEED42_C 4222 +#define SPRITE_SEED43_A 4223 +#define SPRITE_SEED43_B 4224 +#define SPRITE_SEED43_C 4225 +#define SPRITE_SEED44_A 4226 +#define SPRITE_SEED44_B 4227 +#define SPRITE_SEED44_C 4228 +#define SPRITE_SEED45_A 4229 +#define SPRITE_SEED45_B 4230 +#define SPRITE_SEED45_C 4231 +#define SPRITE_SEED46_A 4232 +#define SPRITE_SEED46_B 4233 +#define SPRITE_SEED46_C 4234 +#define SPRITE_SEED47_A 4235 +#define SPRITE_SEED47_B 4236 +#define SPRITE_SEED47_C 4237 +#define SPRITE_SEED48_A 4238 +#define SPRITE_SEED48_B 4239 +#define SPRITE_SEED48_C 4240 +#define SPRITE_SEED49_A 4241 +#define SPRITE_SEED49_B 4242 +#define SPRITE_SEED49_C 4243 +#define SPRITE_SEED50_A 4244 +#define SPRITE_SEED50_B 4245 +#define SPRITE_SEED50_C 4246 +#define SPRITE_SEED51_A 4247 +#define SPRITE_SEED51_B 4248 +#define SPRITE_SEED51_C 4249 +#define SPRITE_SEED52_A 4250 +#define SPRITE_SEED52_B 4251 +#define SPRITE_SEED52_C 4252 +#define SPRITE_SEED53_A 4253 +#define SPRITE_SEED53_B 4254 +#define SPRITE_SEED53_C 4255 +#define SPRITE_SEED54_A 4256 +#define SPRITE_SEED54_B 4257 +#define SPRITE_SEED54_C 4258 +#define SPRITE_SEED55_A 4259 +#define SPRITE_SEED55_B 4260 +#define SPRITE_SEED55_C 4261 +#define SPRITE_SEED56_A 4262 +#define SPRITE_SEED56_B 4263 +#define SPRITE_SEED56_C 4264 +#define SPRITE_SEED57_A 4265 +#define SPRITE_SEED57_B 4266 +#define SPRITE_SEED57_C 4267 +#define SPRITE_SEED58_A 4268 +#define SPRITE_SEED58_B 4269 +#define SPRITE_SEED58_C 4270 +#define SPRITE_SEED59_A 4271 +#define SPRITE_SEED59_B 4272 +#define SPRITE_SEED59_C 4273 +#define SPRITE_SEED60_A 4274 +#define SPRITE_SEED60_B 4275 +#define SPRITE_SEED60_C 4276 +#define SPRITE_SEED61_A 4277 +#define SPRITE_SEED61_B 4278 +#define SPRITE_SEED61_C 4279 +#define SPRITE_SEED62_A 4280 +#define SPRITE_SEED62_B 4281 +#define SPRITE_SEED62_C 4282 +#define SPRITE_SEED63_A 4283 +#define SPRITE_SEED63_B 4284 +#define SPRITE_SEED63_C 4285 +#define SPRITE_SEED64_A 4286 +#define SPRITE_SEED64_B 4287 +#define SPRITE_SEED64_C 4288 #define SPRITE_CAMERA_FOCUS 8192 diff --git a/include/player_avatar.h b/include/player_avatar.h index 3bd384892..bc2d892ac 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -92,5 +92,6 @@ void sub_02055514(PlayerAvatar *avatar, u32 x, u32 z, u32 direction); void PlayerAvatar_SetMapObjectYPosition(PlayerAvatar *avatar, fx32 yVal); void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag); void PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate(PlayerAvatar *avatar, BOOL flag); +u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender); #endif // POKEDIAMOND_PLAYER_AVATAR_H From dbd00e46082bec19070ae18e497fd59052e8bc67 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 30 Aug 2025 06:11:02 +0100 Subject: [PATCH 8/9] finish player_avatar --- arm9/arm9.lsf | 1 - arm9/asm/player_avatar_asm.s | 278 --------------------------- arm9/asm/unk_0204B34C.s | 2 +- arm9/asm/unk_020557F4.s | 80 ++++---- arm9/asm/unk_02059F04.s | 4 +- arm9/asm/unk_0205CE48.s | 4 +- arm9/asm/unk_0205E4EC.s | 10 +- arm9/global.inc | 36 ++-- arm9/overlays/05/asm/ov05_021D80E8.s | 2 +- arm9/overlays/05/asm/ov05_021E5FD8.s | 12 +- arm9/overlays/05/asm/ov05_021F5C44.s | 2 +- arm9/src/player_avatar.c | 165 ++++++++++++++-- arm9/src/scrcmd.c | 3 +- include/constants/global_fieldmap.h | 12 +- include/player_avatar.h | 19 ++ 15 files changed, 259 insertions(+), 371 deletions(-) delete mode 100644 arm9/asm/player_avatar_asm.s diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index d9dd011ff..671c928fc 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -214,7 +214,6 @@ Static arm9 Object unk_0205478C.o Object unk_02054C14.o Object player_avatar.o - Object player_avatar_asm.o Object unk_020557F4.o Object map_object.o Object unk_02058EE8.o diff --git a/arm9/asm/player_avatar_asm.s b/arm9/asm/player_avatar_asm.s deleted file mode 100644 index 147ba1cc4..000000000 --- a/arm9/asm/player_avatar_asm.s +++ /dev/null @@ -1,278 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern PlayerAvatar_SetFlagsBits - .extern PlayerAvatar_ClearFlagsBits - .extern PlayerAvatar_GetFlagsBitsMask - - .text - - thumb_func_start sub_02055648 -sub_02055648: ; 0x02055648 - push {r3, lr} - cmp r0, #0x9 - bhi _02055690 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0205565A: ; jump table (using 16-bit offset) - .short _0205566E - _0205565A - 2; case 0 - .short _02055672 - _0205565A - 2; case 1 - .short _02055676 - _0205565A - 2; case 2 - .short _02055690 - _0205565A - 2; case 3 - .short _0205567A - _0205565A - 2; case 4 - .short _02055690 - _0205565A - 2; case 5 - .short _0205567E - _0205565A - 2; case 6 - .short _02055682 - _0205565A - 2; case 7 - .short _02055686 - _0205565A - 2; case 8 - .short _0205568A - _0205565A - 2; case 9 -_0205566E: - mov r0, #0x1 - pop {r3, pc} -_02055672: - mov r0, #0x2 - pop {r3, pc} -_02055676: - mov r0, #0x4 - pop {r3, pc} -_0205567A: - mov r0, #0x10 - pop {r3, pc} -_0205567E: - mov r0, #0x20 - pop {r3, pc} -_02055682: - mov r0, #0x40 - pop {r3, pc} -_02055686: - mov r0, #0x80 - pop {r3, pc} -_0205568A: - mov r0, #0x1 - lsl r0, r0, #0x8 - pop {r3, pc} -_02055690: - bl GF_AssertFail - mov r0, #0x1 - pop {r3, pc} - - thumb_func_start sub_02055698 -sub_02055698: ; 0x02055698 - ldr r0, [r0, #0x38] - bx lr - - thumb_func_start sub_0205569C -sub_0205569C: ; 0x0205569C - push {r3, lr} - cmp r1, #0x1 - bne _020556AA - mov r1, #0x1 - bl PlayerAvatar_SetFlagsBits - pop {r3, pc} -_020556AA: - mov r1, #0x1 - bl PlayerAvatar_ClearFlagsBits - pop {r3, pc} - .balign 4 - - thumb_func_start sub_020556B4 -sub_020556B4: ; 0x020556B4 - push {r3, lr} - mov r1, #0x1 - bl PlayerAvatar_GetFlagsBitsMask - cmp r0, #0x0 - beq _020556C4 - mov r0, #0x1 - pop {r3, pc} -_020556C4: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start sub_020556C8 -sub_020556C8: ; 0x020556C8 - push {r3, lr} - cmp r1, #0x1 - bne _020556D6 - mov r1, #0x2 - bl PlayerAvatar_SetFlagsBits - pop {r3, pc} -_020556D6: - mov r1, #0x2 - bl PlayerAvatar_ClearFlagsBits - pop {r3, pc} - .balign 4 - - thumb_func_start sub_020556E0 -sub_020556E0: ; 0x020556E0 - push {r3, lr} - mov r1, #0x2 - bl PlayerAvatar_GetFlagsBitsMask - cmp r0, #0x0 - beq _020556F0 - mov r0, #0x1 - pop {r3, pc} -_020556F0: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start PlayerAvatar_SetFlag2 -PlayerAvatar_SetFlag2: ; 0x020556F4 - push {r3, lr} - cmp r1, #0x1 - bne _02055702 - mov r1, #0x4 - bl PlayerAvatar_SetFlagsBits - pop {r3, pc} -_02055702: - mov r1, #0x4 - bl PlayerAvatar_ClearFlagsBits - pop {r3, pc} - .balign 4 - - thumb_func_start sub_0205570C -sub_0205570C: ; 0x0205570C - push {r3, lr} - mov r1, #0x4 - bl PlayerAvatar_GetFlagsBitsMask - cmp r0, #0x0 - beq _0205571C - mov r0, #0x1 - pop {r3, pc} -_0205571C: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start sub_02055720 -sub_02055720: ; 0x02055720 - push {r3, lr} - cmp r1, #0x1 - bne _0205572E - mov r1, #0x8 - bl PlayerAvatar_SetFlagsBits - pop {r3, pc} -_0205572E: - mov r1, #0x8 - bl PlayerAvatar_ClearFlagsBits - pop {r3, pc} - .balign 4 - - thumb_func_start sub_02055738 -sub_02055738: ; 0x02055738 - push {r3, lr} - mov r1, #0x8 - bl PlayerAvatar_GetFlagsBitsMask - cmp r0, #0x0 - beq _02055748 - mov r0, #0x1 - pop {r3, pc} -_02055748: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start sub_0205574C -sub_0205574C: ; 0x0205574C - push {r3, lr} - cmp r1, #0x1 - bne _0205575A - mov r1, #0x10 - bl PlayerAvatar_SetFlagsBits - pop {r3, pc} -_0205575A: - mov r1, #0x10 - bl PlayerAvatar_ClearFlagsBits - pop {r3, pc} - .balign 4 - - thumb_func_start sub_02055764 -sub_02055764: ; 0x02055764 - push {r3, lr} - mov r1, #0x10 - bl PlayerAvatar_GetFlagsBitsMask - cmp r0, #0x0 - beq _02055774 - mov r0, #0x1 - pop {r3, pc} -_02055774: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start sub_02055778 -sub_02055778: ; 0x02055778 - push {r3, lr} - cmp r1, #0x1 - bne _02055786 - mov r1, #0x20 - bl PlayerAvatar_SetFlagsBits - pop {r3, pc} -_02055786: - mov r1, #0x20 - bl PlayerAvatar_ClearFlagsBits - pop {r3, pc} - .balign 4 - - thumb_func_start sub_02055790 -sub_02055790: ; 0x02055790 - push {r3, lr} - mov r1, #0x20 - bl PlayerAvatar_GetFlagsBitsMask - cmp r0, #0x0 - beq _020557A0 - mov r0, #0x1 - pop {r3, pc} -_020557A0: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start sub_020557A4 -sub_020557A4: ; 0x020557A4 - ldr r3, _020557AC ; =PlayerAvatar_SetFlagsBits - mov r1, #0x40 - bx r3 - nop -_020557AC: .word PlayerAvatar_SetFlagsBits - - thumb_func_start sub_020557B0 -sub_020557B0: ; 0x020557B0 - ldr r3, _020557B8 ; =PlayerAvatar_ClearFlagsBits - mov r1, #0x40 - bx r3 - nop -_020557B8: .word PlayerAvatar_ClearFlagsBits - - thumb_func_start sub_020557BC -sub_020557BC: ; 0x020557BC - push {r3, lr} - mov r1, #0x40 - bl PlayerAvatar_GetFlagsBitsMask - cmp r0, #0x0 - beq _020557CC - mov r0, #0x1 - pop {r3, pc} -_020557CC: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start sub_020557D0 -sub_020557D0: ; 0x020557D0 - push {r3, lr} - cmp r1, #0x1 - bne _020557DE - mov r1, #0x80 - bl PlayerAvatar_SetFlagsBits - pop {r3, pc} -_020557DE: - mov r1, #0x80 - bl PlayerAvatar_ClearFlagsBits - pop {r3, pc} - .balign 4 - - thumb_func_start sub_020557E8 -sub_020557E8: ; 0x020557E8 - ldr r3, _020557F0 ; =PlayerAvatar_GetFlagsBitsMask - mov r1, #0x80 - bx r3 - nop -_020557F0: .word PlayerAvatar_GetFlagsBitsMask diff --git a/arm9/asm/unk_0204B34C.s b/arm9/asm/unk_0204B34C.s index 042be9001..c500587d8 100644 --- a/arm9/asm/unk_0204B34C.s +++ b/arm9/asm/unk_0204B34C.s @@ -865,7 +865,7 @@ sub_0204B9CC: ; 0x0204B9CC add r4, r0, #0x0 ldr r0, [r4, #0x38] bl PlayerAvatar_GetState - bl sub_02055648 + bl PlayerAvatar_GetTransitionBits add r1, r0, #0x0 ldr r0, [r4, #0x38] bl Field_PlayerAvatar_OrrTransitionFlags diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index 820a9baed..1b0b22c31 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -166,7 +166,7 @@ sub_02055900: ; 0x02055900 add r1, r4, #0x0 bl PlayerAvatar_SetUnk24Unk28 add r0, r5, #0x0 - bl sub_020557B0 + bl PlayerAvatar_ClearFlag6 pop {r4-r6, pc} .balign 4 @@ -174,7 +174,7 @@ sub_02055900: ; 0x02055900 sub_02055928: ; 0x02055928 push {r4, lr} add r4, r0, #0x0 - bl sub_020557BC + bl PlayerAvatar_CheckFlag6 cmp r0, #0x1 bne _02055964 add r0, r4, #0x0 @@ -183,14 +183,14 @@ sub_02055928: ; 0x02055928 bne _02055964 add r0, r4, #0x0 mov r1, #0x0 - bl sub_020556C8 + bl PlayerAvatar_SetFlag1 add r0, r4, #0x0 - bl sub_02055764 + bl PlayerAvatar_CheckFlag4 cmp r0, #0x1 bne _02055964 add r0, r4, #0x0 mov r1, #0x0 - bl sub_0205574C + bl PlayerAvatar_SetFlag4 add r0, r4, #0x0 bl PlayerAvatar_GetMapObject mov r1, #0x0 @@ -520,7 +520,7 @@ sub_02055BEC: ; 0x02055BEC pop {r3-r7, pc} _02055C10: add r0, r5, #0x0 - bl sub_020556E0 + bl PlayerAvatar_CheckFlag1 cmp r0, #0x1 bne _02055C1E add r0, r4, #0x0 @@ -597,7 +597,7 @@ sub_02055C78: ; 0x02055C78 str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 ldr r0, [sp, #0x0] cmp r0, #0x0 beq _02055D28 @@ -607,7 +607,7 @@ sub_02055C78: ; 0x02055C78 beq _02055CCA add r0, r5, #0x0 mov r1, #0x1 - bl sub_020556C8 + bl PlayerAvatar_SetFlag1 add r0, r5, #0x0 mov r1, #0x0 bl PlayerAvatar_SetUnk10 @@ -639,10 +639,10 @@ _02055CE4: bl sub_02056B5C add r0, r5, #0x0 mov r1, #0x1 - bl sub_020556C8 + bl PlayerAvatar_SetFlag1 add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 mov r1, #0x0 mvn r1, r1 add r0, r5, #0x0 @@ -686,10 +686,10 @@ _02055D54: bl sub_02056B5C add r0, r5, #0x0 mov r1, #0x1 - bl sub_020556C8 + bl PlayerAvatar_SetFlag1 add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 mov r1, #0x0 mvn r1, r1 add r0, r5, #0x0 @@ -774,13 +774,13 @@ _02055E18: bl PlayerAvatar_ClearUnk20ClearFlag2 add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 add r0, r5, #0x0 mov r1, #0x1 bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x1 - bl sub_02055778 + bl PlayerAvatar_SetFlag5 mov r1, #0x0 mvn r1, r1 add r0, r5, #0x0 @@ -792,7 +792,7 @@ _02055E62: cmp r4, #0x1 bne _02055EF0 add r0, r5, #0x0 - bl sub_02055790 + bl PlayerAvatar_CheckFlag5 cmp r0, #0x0 bne _02055EAC add r0, r4, #0x0 @@ -834,13 +834,13 @@ _02055EAC: bl sub_02056B5C add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 add r0, r5, #0x0 mov r1, #0x1 bl PlayerAvatar_SetUnk10 add r0, r5, #0x0 mov r1, #0x1 - bl sub_02055778 + bl PlayerAvatar_SetFlag5 mov r1, #0x0 mvn r1, r1 add r0, r5, #0x0 @@ -880,10 +880,10 @@ _02055F22: _02055F2C: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 add r0, r5, #0x0 mov r1, #0x1 - bl sub_020557D0 + bl PlayerAvatar_SetFlag7 mov r0, #0x1 pop {r3-r5, pc} .balign 4 @@ -915,10 +915,10 @@ _02055F6E: _02055F78: add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 add r0, r5, #0x0 mov r1, #0x1 - bl sub_020557D0 + bl PlayerAvatar_SetFlag7 mov r0, #0x1 pop {r3-r5, pc} .balign 4 @@ -975,7 +975,7 @@ _02055FCE: sub_02055FFC: ; 0x02055FFC push {r4, lr} add r4, r0, #0x0 - bl sub_020556B4 + bl PlayerAvatar_CheckFlag0 cmp r0, #0x1 bne _0205603E add r0, r4, #0x0 @@ -984,7 +984,7 @@ sub_02055FFC: ; 0x02055FFC lsl r1, r1, #0x6 bl MapObject_ClearFlagsBits add r0, r4, #0x0 - bl sub_020557E8 + bl PlayerAvatar_CheckFlag7 cmp r0, #0x0 bne _02056026 add r0, r4, #0x0 @@ -992,13 +992,13 @@ sub_02055FFC: ; 0x02055FFC _02056026: add r0, r4, #0x0 mov r1, #0x0 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 add r0, r4, #0x0 mov r1, #0x0 - bl sub_020557D0 + bl PlayerAvatar_SetFlag7 add r0, r4, #0x0 mov r1, #0x0 - bl sub_02055778 + bl PlayerAvatar_SetFlag5 _0205603E: pop {r4, pc} @@ -1387,7 +1387,7 @@ _02056306: add r0, r5, #0x0 bl sub_020572D4 add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 b _0205636C _0205632A: cmp r4, #0x0 @@ -1407,7 +1407,7 @@ _02056332: add r0, r5, #0x0 bl sub_020572D4 add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 b _0205636C _02056356: mov r0, #0x8 @@ -1558,7 +1558,7 @@ sub_02056464: ; 0x02056464 bl PlayerAvatar_Unk20AddWithCeiling add r4, r0, #0x0 add r0, r5, #0x0 - bl sub_0205570C + bl PlayerAvatar_CheckFlag2 cmp r0, #0x0 bne _02056488 cmp r4, #0x2 @@ -1590,7 +1590,7 @@ _020564A6: add r1, r4, #0x0 bl PlayerAvatar_SetUnk20 add r0, r5, #0x0 - bl sub_0205570C + bl PlayerAvatar_CheckFlag2 cmp r0, #0x1 bne _020564C4 cmp r4, #0x0 @@ -1721,7 +1721,7 @@ sub_0205658C: ; 0x0205658C add r5, r0, #0x0 cmp r4, r1 bne _020565BA - bl sub_0205570C + bl PlayerAvatar_CheckFlag2 cmp r0, #0x1 bne _020565AE add r0, r5, #0x0 @@ -1792,7 +1792,7 @@ sub_02056614: ; 0x02056614 mov r7, #0x38 bl sub_020572D4 add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 b _020566EA _02056638: mov r0, #0x10 @@ -1802,10 +1802,10 @@ _02056638: mov r7, #0x50 bl sub_020572D4 add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 b _020566EA _02056656: mov r0, #0x40 @@ -1867,7 +1867,7 @@ _020566D4: mov r7, #0x50 bl sub_020572D4 add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 add r0, r5, #0x0 mov r1, #0x2 bl PlayerAvatar_SetUnk20 @@ -2189,7 +2189,7 @@ sub_02056938: ; 0x02056938 add r0, r5, #0x0 bl sub_020572D4 add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 b _02056A6C _0205696A: mov r0, #0x10 @@ -2204,10 +2204,10 @@ _0205696A: bl sub_02056438 str r0, [sp, #0x0] add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 add r0, r5, #0x0 mov r1, #0x1 - bl sub_0205569C + bl PlayerAvatar_SetFlag0 b _02056A6C _02056994: add r0, r7, #0x0 @@ -2300,7 +2300,7 @@ _02056A50: add r0, r5, #0x0 bl sub_020572D4 add r0, r5, #0x0 - bl sub_020557A4 + bl PlayerAvatar_SetFlag6 _02056A6C: ldr r2, [sp, #0x0] add r0, r5, #0x0 @@ -3474,7 +3474,7 @@ _0205734E: pop {r3-r5, pc} _0205735A: add r0, r5, #0x0 - bl sub_02055738 + bl PlayerAvatar_CheckBikeStateLocked cmp r0, #0x0 bne _02057368 mov r0, #0x0 diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s index 99e100b2f..f2c8c8afd 100644 --- a/arm9/asm/unk_02059F04.s +++ b/arm9/asm/unk_02059F04.s @@ -1695,7 +1695,7 @@ sub_0205AB20: ; 0x0205AB20 _0205AB36: add r0, r5, #0x0 bl MapObject_GetFieldSystem - bl sub_02055698 + bl FieldSystem_GetPlayerAvatar add r6, r0, #0x0 bl sub_02057124 cmp r0, #0x0 @@ -1824,7 +1824,7 @@ _0205AC22: str r0, [sp, #0x4] ldr r0, [sp, #0x0] bl MapObject_GetFieldSystem - bl sub_02055698 + bl FieldSystem_GetPlayerAvatar str r0, [sp, #0xc] bl PlayerAvatar_GetXCoord str r0, [sp, #0x10] diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s index ff94cf24d..6bfe89c37 100644 --- a/arm9/asm/unk_0205CE48.s +++ b/arm9/asm/unk_0205CE48.s @@ -448,7 +448,7 @@ _0205D184: pop {r3-r5, pc} _0205D194: ldr r0, [r5, #0x14] - bl sub_02055738 + bl PlayerAvatar_CheckBikeStateLocked cmp r0, #0x1 bne _0205D1A4 mov r0, #0x0 @@ -651,7 +651,7 @@ sub_0205D328: ; 0x0205D328 pop {r3-r5, pc} _0205D336: ldr r0, [r4, #0x14] - bl sub_02055738 + bl PlayerAvatar_CheckBikeStateLocked cmp r0, #0x1 bne _0205D344 mov r0, #0x1 diff --git a/arm9/asm/unk_0205E4EC.s b/arm9/asm/unk_0205E4EC.s index 2f3e97642..0bbe70b19 100644 --- a/arm9/asm/unk_0205E4EC.s +++ b/arm9/asm/unk_0205E4EC.s @@ -156,7 +156,7 @@ sub_0205E5E0: ; 0x0205E5E0 push {r3-r5, lr} add r5, r1, #0x0 bl MapObject_GetFieldSystem - bl sub_02055698 + bl FieldSystem_GetPlayerAvatar mov r1, #0x1 add r4, r0, #0x0 strb r1, [r5, #0x1] @@ -175,7 +175,7 @@ sub_0205E608: ; 0x0205E608 push {r4-r6, lr} add r5, r1, #0x0 bl MapObject_GetFieldSystem - bl sub_02055698 + bl FieldSystem_GetPlayerAvatar add r6, r0, #0x0 beq _0205E638 bl PlayerAvatar_GetXCoord @@ -202,7 +202,7 @@ sub_0205E63C: ; 0x0205E63C push {r3-r5, lr} add r5, r1, #0x0 bl MapObject_GetFieldSystem - bl sub_02055698 + bl FieldSystem_GetPlayerAvatar add r4, r0, #0x0 bl PlayerAvatar_GetXCoord strh r0, [r5, #0x2] @@ -216,7 +216,7 @@ sub_0205E63C: ; 0x0205E63C sub_0205E65C: ; 0x0205E65C push {r3, lr} bl MapObject_GetFieldSystem - bl sub_02055698 + bl FieldSystem_GetPlayerAvatar bl PlayerAvatar_GetUnk8 add r1, r0, #0x0 sub r1, #0x58 @@ -254,7 +254,7 @@ sub_0205E698: ; 0x0205E698 sub sp, #0x8 add r5, r0, #0x0 bl MapObject_GetFieldSystem - bl sub_02055698 + bl FieldSystem_GetPlayerAvatar add r4, r0, #0x0 add r0, r5, #0x0 bl MapObject_GetCurrentX diff --git a/arm9/global.inc b/arm9/global.inc index 76241b21d..c1fe324a4 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3942,25 +3942,25 @@ .extern PlayerAvatar_ToggleAutomaticHeightUpdating .extern PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate .extern PlayerAvatar_GetSpriteByStateAndGender -.extern sub_02055648 -.extern sub_02055698 -.extern sub_0205569C -.extern sub_020556B4 -.extern sub_020556C8 -.extern sub_020556E0 +.extern PlayerAvatar_GetTransitionBits +.extern FieldSystem_GetPlayerAvatar +.extern PlayerAvatar_SetFlag0 +.extern PlayerAvatar_CheckFlag0 +.extern PlayerAvatar_SetFlag1 +.extern PlayerAvatar_CheckFlag1 .extern PlayerAvatar_SetFlag2 -.extern sub_0205570C -.extern sub_02055720 -.extern sub_02055738 -.extern sub_0205574C -.extern sub_02055764 -.extern sub_02055778 -.extern sub_02055790 -.extern sub_020557A4 -.extern sub_020557B0 -.extern sub_020557BC -.extern sub_020557D0 -.extern sub_020557E8 +.extern PlayerAvatar_CheckFlag2 +.extern PlayerAvatar_SetBikeStateLock +.extern PlayerAvatar_CheckBikeStateLocked +.extern PlayerAvatar_SetFlag4 +.extern PlayerAvatar_CheckFlag4 +.extern PlayerAvatar_SetFlag5 +.extern PlayerAvatar_CheckFlag5 +.extern PlayerAvatar_SetFlag6 +.extern PlayerAvatar_ClearFlag6 +.extern PlayerAvatar_CheckFlag6 +.extern PlayerAvatar_SetFlag7 +.extern PlayerAvatar_CheckFlag7 .extern sub_020557F4 .extern sub_02055898 .extern sub_02055A38 diff --git a/arm9/overlays/05/asm/ov05_021D80E8.s b/arm9/overlays/05/asm/ov05_021D80E8.s index f7c303f5e..577686742 100644 --- a/arm9/overlays/05/asm/ov05_021D80E8.s +++ b/arm9/overlays/05/asm/ov05_021D80E8.s @@ -1551,7 +1551,7 @@ _021D8D76: pop {r3, r4, r5, r6, r7, pc} _021D8D90: ldr r0, [r5, #0x38] - bl sub_020556B4 + bl PlayerAvatar_CheckFlag0 cmp r0, #0 beq _021D8D9E mov r0, #0 diff --git a/arm9/overlays/05/asm/ov05_021E5FD8.s b/arm9/overlays/05/asm/ov05_021E5FD8.s index ac89dbf7b..be0cdff13 100644 --- a/arm9/overlays/05/asm/ov05_021E5FD8.s +++ b/arm9/overlays/05/asm/ov05_021E5FD8.s @@ -146,11 +146,11 @@ _021E60D2: thumb_func_start ov05_021E610C ov05_021E610C: ; 0x021E610C - ldr r3, _021E6114 ; =sub_020556C8 + ldr r3, _021E6114 ; =PlayerAvatar_SetFlag1 mov r1, #1 bx r3 nop -_021E6114: .word sub_020556C8 +_021E6114: .word PlayerAvatar_SetFlag1 thumb_func_start ov05_021E6118 ov05_021E6118: ; 0x021E6118 @@ -230,7 +230,7 @@ ov05_021E61A4: ; 0x021E61A4 add r0, r5, #0 add r4, r2, #0 add r7, r3, #0 - bl sub_020556B4 + bl PlayerAvatar_CheckFlag0 cmp r0, #1 bne _021E61CE add r0, r6, #0 @@ -945,7 +945,7 @@ ov05_021E6758: ; 0x021E6758 add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 - bl sub_02055764 + bl PlayerAvatar_CheckFlag4 cmp r0, #1 bne _021E676C mov r0, #0 @@ -1032,7 +1032,7 @@ _021E6804: bl PlaySE ldr r0, [r4, #0xc] mov r1, #1 - bl sub_0205574C + bl PlayerAvatar_SetFlag4 add r0, r4, #0 bl ov05_021E72DC add sp, #0xc @@ -1084,7 +1084,7 @@ _021E682A: bne _021E68A2 ldr r0, [r4, #0xc] mov r1, #1 - bl sub_0205574C + bl PlayerAvatar_SetFlag4 add r0, r4, #0 bl ov05_021E72DC ldr r0, [sp, #4] diff --git a/arm9/overlays/05/asm/ov05_021F5C44.s b/arm9/overlays/05/asm/ov05_021F5C44.s index 341c86e2f..41dff0e80 100644 --- a/arm9/overlays/05/asm/ov05_021F5C44.s +++ b/arm9/overlays/05/asm/ov05_021F5C44.s @@ -539,7 +539,7 @@ _021F602C: bl ov05_021F60FC add r0, r4, #0 bl PlayerAvatar_GetState - bl sub_02055648 + bl PlayerAvatar_GetTransitionBits add r1, r0, #0 add r0, r4, #0 bl Field_PlayerAvatar_OrrTransitionFlags diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index 3ddf3185b..2ff633feb 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -12,9 +12,9 @@ static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObje 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); +static void PlayerAvatar_SetFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags); +static void PlayerAvatar_ClearFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags); +static PlayerAvatarFlags PlayerAvatar_GetFlagsBitsMask(PlayerAvatar *avatar, PlayerAvatarFlags flags); static void PlayerAvatar_SetUnk24(PlayerAvatar *avatar, s32 param1); static void PlayerAvatar_SetUnk28(PlayerAvatar *avatar, s32 param1); static void PlayerAvatar_SetPlayerSaveData(PlayerAvatar *avatar, PlayerSaveData *playerSaveData); @@ -26,9 +26,6 @@ static void PlayerAvatar_SetPlayerSaveDataState(PlayerAvatar *avatar, s32 state) extern void ov05_021EDBC8(PlayerAvatar *avatar); extern u32 ov06_0224ABAC(LocalMapObject *mapObject, u32 x, u32 z, u32 direction, u32 param4); -extern void sub_020556C8(PlayerAvatar *avatar, u32 param1); -extern void sub_0205574C(PlayerAvatar *avatar, u32 param1); -extern void PlayerAvatar_SetFlag2(PlayerAvatar *avatar, BOOL flag); extern u32 sub_02059D1C(LocalMapObject *object); PlayerAvatar *PlayerAvatar_CreateWithParams(MapObjectManager *manager, u32 x, u32 z, u32 direction, s32 state, u32 gender, PlayerSaveData *playerSaveData) { @@ -92,8 +89,8 @@ static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, Play PlayerAvatar_SetUnk24(avatar, -1); PlayerAvatar_SetUnk28(avatar, -1); PlayerAvatar_SetUnk8(avatar, 255); - sub_020556C8(avatar, 1); - sub_0205574C(avatar, 1); + PlayerAvatar_SetFlag1(avatar, TRUE); + PlayerAvatar_SetFlag4(avatar, TRUE); } static void PlayerAvatar_CreateMapObjectWithParams(PlayerAvatar *avatar, MapObjectManager *manager, u32 sprite, u32 direction, u32 x, u32 z) { @@ -235,15 +232,15 @@ u32 PlayerAvatar_GetGender(PlayerAvatar *avatar) { return avatar->gender; } -/*static*/ void PlayerAvatar_SetFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags) { +static void PlayerAvatar_SetFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags) { avatar->flags |= flags; } -/*static*/ void PlayerAvatar_ClearFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags) { +static void PlayerAvatar_ClearFlagsBits(PlayerAvatar *avatar, PlayerAvatarFlags flags) { avatar->flags &= ~flags; } -/*static*/ PlayerAvatarFlags PlayerAvatar_GetFlagsBitsMask(PlayerAvatar *avatar, PlayerAvatarFlags flags) { +static PlayerAvatarFlags PlayerAvatar_GetFlagsBitsMask(PlayerAvatar *avatar, PlayerAvatarFlags flags) { return (PlayerAvatarFlags)(avatar->flags & flags); } @@ -465,3 +462,149 @@ u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender) { GF_ASSERT(FALSE); return 0; } + +u32 PlayerAvatar_GetTransitionBits(s32 state) { + switch (state) { + case PLAYER_STATE_WALKING: + return PLAYER_TRANSITION_WALKING; + case PLAYER_STATE_CYCLING: + return PLAYER_TRANSITION_CYCLING; + case PLAYER_STATE_SURFING: + return PLAYER_TRANSITION_SURFING; + case PLAYER_STATE_WATERING: + return PLAYER_TRANSITION_WATERING; + case PLAYER_STATE_FISHING: + return PLAYER_TRANSITION_FISHING; + case PLAYER_STATE_POKETCH: + return PLAYER_TRANSITION_POKETCH; + case PLAYER_STATE_SAVING: + return PLAYER_TRANSITION_SAVING; + case PLAYER_STATE_HEAL: + return PLAYER_TRANSITION_HEAL; + case PLAYER_STATE_USE_HM: + default: + GF_ASSERT(FALSE); + return PLAYER_TRANSITION_WALKING; + } +} + +PlayerAvatar *FieldSystem_GetPlayerAvatar(FieldSystem *fieldSystem) { + return fieldSystem->playerAvatar; +} + +void PlayerAvatar_SetFlag0(PlayerAvatar *avatar, BOOL set) { + if (set == TRUE) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_UNK0); + } else { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_UNK0); + } +} + +BOOL PlayerAvatar_CheckFlag0(PlayerAvatar *avatar) { + if (PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_UNK0)) { + return TRUE; + } + return FALSE; +} + +void PlayerAvatar_SetFlag1(PlayerAvatar *avatar, BOOL set) { + if (set == TRUE) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_UNK1); + } else { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_UNK1); + } +} + +BOOL PlayerAvatar_CheckFlag1(PlayerAvatar *avatar) { + if (PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_UNK1)) { + return TRUE; + } + return FALSE; +} + +void PlayerAvatar_SetFlag2(PlayerAvatar *avatar, BOOL set) { + if (set == TRUE) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_UNK2); + } else { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_UNK2); + } +} + +BOOL PlayerAvatar_CheckFlag2(PlayerAvatar *avatar) { + if (PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_UNK2)) { + return TRUE; + } + return FALSE; +} + +void PlayerAvatar_SetBikeStateLock(PlayerAvatar *avatar, BOOL lock) { + if (lock == TRUE) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_LOCK_BIKE_STATE); + } else { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_LOCK_BIKE_STATE); + } +} + +BOOL PlayerAvatar_CheckBikeStateLocked(PlayerAvatar *avatar) { + if (PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_LOCK_BIKE_STATE)) { + return TRUE; + } + return FALSE; +} + +void PlayerAvatar_SetFlag4(PlayerAvatar *avatar, BOOL set) { + if (set == TRUE) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_UNK4); + } else { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_UNK4); + } +} + +BOOL PlayerAvatar_CheckFlag4(PlayerAvatar *avatar) { + if (PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_UNK4)) { + return TRUE; + } + return FALSE; +} + +void PlayerAvatar_SetFlag5(PlayerAvatar *avatar, BOOL set) { + if (set == TRUE) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_UNK5); + } else { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_UNK5); + } +} + +BOOL PlayerAvatar_CheckFlag5(PlayerAvatar *avatar) { + if (PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_UNK5)) { + return TRUE; + } + return FALSE; +} + +void PlayerAvatar_SetFlag6(PlayerAvatar *avatar) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_UNK6); +} + +void PlayerAvatar_ClearFlag6(PlayerAvatar *avatar) { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_UNK6); +} + +BOOL PlayerAvatar_CheckFlag6(PlayerAvatar *avatar) { + if (PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_UNK6)) { + return TRUE; + } + return FALSE; +} + +void PlayerAvatar_SetFlag7(PlayerAvatar *avatar, BOOL set) { + if (set == TRUE) { + PlayerAvatar_SetFlagsBits(avatar, AVATAR_FLAG_UNK7); + } else { + PlayerAvatar_ClearFlagsBits(avatar, AVATAR_FLAG_UNK7); + } +} + +BOOL PlayerAvatar_CheckFlag7(PlayerAvatar *avatar) { + return PlayerAvatar_GetFlagsBitsMask(avatar, AVATAR_FLAG_UNK7); +} diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index bc0300afb..243c81960 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -173,7 +173,6 @@ extern void FieldSystem_PlayOrFadeToNewMusicId(FieldSystem *fieldSystem, u16 mus 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 RoamerSaveData *Save_Roamers_Get(SaveData *save); extern u32 Roamers_GetRand(RoamerSaveData *roamerSaveData, u32 index); extern void GetSwarmInfoFromRand(u32 rand, u16 *map, u16 *species); @@ -2623,7 +2622,7 @@ BOOL ScrCmd_DummyRideBike(ScriptContext *ctx) { // 02BF BOOL ScrCmd_CyclingRoad(ScriptContext *ctx) { // 00C9 u8 action = ScriptReadByte(ctx); - sub_02055720(ctx->fieldSystem->playerAvatar, action); + PlayerAvatar_SetBikeStateLock(ctx->fieldSystem->playerAvatar, action); return FALSE; } diff --git a/include/constants/global_fieldmap.h b/include/constants/global_fieldmap.h index 3a6ac021a..bfb772c0e 100644 --- a/include/constants/global_fieldmap.h +++ b/include/constants/global_fieldmap.h @@ -20,8 +20,14 @@ #define PLAYER_STATE_HEAL 9 // Player transition bits -#define PLAYER_TRANSITION_WALKING 1 << 0 -#define PLAYER_TRANSITION_CYCLING 1 << 1 -#define PLAYER_TRANSITION_SURFING 1 << 2 +#define PLAYER_TRANSITION_WALKING 1 << 0 +#define PLAYER_TRANSITION_CYCLING 1 << 1 +#define PLAYER_TRANSITION_SURFING 1 << 2 +#define PLAYER_TRANSITION_x0008 1 << 3 +#define PLAYER_TRANSITION_WATERING 1 << 4 +#define PLAYER_TRANSITION_FISHING 1 << 5 +#define PLAYER_TRANSITION_POKETCH 1 << 6 +#define PLAYER_TRANSITION_SAVING 1 << 7 +#define PLAYER_TRANSITION_HEAL 1 << 8 #endif // POKEDIAMOND_CONSTANTS_GLOBAL_FIELDMAP_H diff --git a/include/player_avatar.h b/include/player_avatar.h index bc2d892ac..ab59bb2c1 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -93,5 +93,24 @@ void PlayerAvatar_SetMapObjectYPosition(PlayerAvatar *avatar, fx32 yVal); void PlayerAvatar_ToggleAutomaticHeightUpdating(PlayerAvatar *avatar, u8 flag); void PlayerAvatar_ToggleAutomaticHeightUpdatingImmediate(PlayerAvatar *avatar, BOOL flag); u32 PlayerAvatar_GetSpriteByStateAndGender(s32 state, u32 gender); +u32 PlayerAvatar_GetTransitionBits(s32 state); +PlayerAvatar *FieldSystem_GetPlayerAvatar(FieldSystem *fieldSystem); +void PlayerAvatar_SetFlag0(PlayerAvatar *avatar, BOOL set); +BOOL PlayerAvatar_CheckFlag0(PlayerAvatar *avatar); +void PlayerAvatar_SetFlag1(PlayerAvatar *avatar, BOOL set); +BOOL PlayerAvatar_CheckFlag1(PlayerAvatar *avatar); +void PlayerAvatar_SetFlag2(PlayerAvatar *avatar, BOOL set); +BOOL PlayerAvatar_CheckFlag2(PlayerAvatar *avatar); +void PlayerAvatar_SetBikeStateLock(PlayerAvatar *avatar, BOOL lock); +BOOL PlayerAvatar_CheckBikeStateLocked(PlayerAvatar *avatar); +void PlayerAvatar_SetFlag4(PlayerAvatar *avatar, BOOL set); +BOOL PlayerAvatar_CheckFlag4(PlayerAvatar *avatar); +void PlayerAvatar_SetFlag5(PlayerAvatar *avatar, BOOL set); +BOOL PlayerAvatar_CheckFlag5(PlayerAvatar *avatar); +void PlayerAvatar_SetFlag6(PlayerAvatar *avatar); +void PlayerAvatar_ClearFlag6(PlayerAvatar *avatar); +BOOL PlayerAvatar_CheckFlag6(PlayerAvatar *avatar); +void PlayerAvatar_SetFlag7(PlayerAvatar *avatar, BOOL set); +BOOL PlayerAvatar_CheckFlag7(PlayerAvatar *avatar); #endif // POKEDIAMOND_PLAYER_AVATAR_H From bff82d2bca3ff9879d65f5b077794a11dd184398 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sun, 31 Aug 2025 01:03:28 +0100 Subject: [PATCH 9/9] address review comments --- arm9/asm/unk_0204C1B4.s | 8 ++-- arm9/asm/unk_020557F4.s | 30 ++++++------ arm9/asm/unk_02058EE8.s | 68 ++++++++++++++-------------- arm9/asm/unk_02059F04.s | 24 +++++----- arm9/asm/unk_0205BEF8.s | 16 +++---- arm9/asm/unk_0205C598.s | 30 ++++++------ arm9/asm/unk_0205DD18.s | 2 +- arm9/asm/unk_0205E4EC.s | 28 ++++++------ arm9/global.inc | 14 +++--- arm9/overlays/05/asm/ov05_021D74E0.s | 4 +- arm9/overlays/05/asm/ov05_021E1374.s | 4 +- arm9/overlays/05/asm/ov05_021E5FD8.s | 8 ++-- arm9/overlays/05/asm/ov05_021EDB70.s | 4 +- arm9/overlays/06/asm/overlay_06.s | 58 ++++++++++++------------ arm9/src/map_object.c | 26 +++++------ arm9/src/player_avatar.c | 15 +++--- arm9/src/scrcmd.c | 8 ++-- include/map_object.h | 12 ++--- include/player_avatar.h | 2 +- include/scrcmd.h | 2 + 20 files changed, 183 insertions(+), 180 deletions(-) diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s index 8a281ea3d..47753d510 100644 --- a/arm9/asm/unk_0204C1B4.s +++ b/arm9/asm/unk_0204C1B4.s @@ -1036,11 +1036,11 @@ _0204C9B4: add r2, r4, #0x0 bl sub_020554EC ldr r0, [r5, #0x38] - bl PlayerAvatar_GetPositionVectorConst + bl PlayerAvatar_GetPositionVector ldr r1, [r5, #0x20] bl Camera_SetLookAtTargetAndRecalcPos ldr r0, [r5, #0x38] - bl PlayerAvatar_GetPositionVectorConst + bl PlayerAvatar_GetPositionVector ldr r1, [r5, #0x20] bl Camera_SetFixedTarget add sp, #0x10 @@ -1102,11 +1102,11 @@ _0204CA48: add r2, r4, #0x0 bl sub_020554EC ldr r0, [r5, #0x38] - bl PlayerAvatar_GetPositionVectorConst + bl PlayerAvatar_GetPositionVector ldr r1, [r5, #0x20] bl Camera_SetLookAtTargetAndRecalcPos ldr r0, [r5, #0x38] - bl PlayerAvatar_GetPositionVectorConst + bl PlayerAvatar_GetPositionVector ldr r1, [r5, #0x20] bl Camera_SetFixedTarget add sp, #0x10 diff --git a/arm9/asm/unk_020557F4.s b/arm9/asm/unk_020557F4.s index 1b0b22c31..b41422faa 100644 --- a/arm9/asm/unk_020557F4.s +++ b/arm9/asm/unk_020557F4.s @@ -2515,16 +2515,16 @@ sub_02056C0C: ; 0x02056C0C add r5, r1, #0x0 str r2, [sp, #0x4] add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r7, r0, #0x0 ldr r0, [sp, #0x4] bl sub_02059BF4 str r0, [sp, #0x14] add r0, r5, #0x0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord str r0, [sp, #0x8] add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0xc] ldr r0, [sp, #0x4] bl sub_02059C00 @@ -2613,13 +2613,13 @@ sub_02056CCC: ; 0x02056CCC bl MapObject_GetFieldSystem str r0, [sp, #0x0] add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r4, #0x0 bl sub_02059BF4 add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r5, r0, #0x0 add r0, r4, #0x0 bl sub_02059C00 @@ -2682,10 +2682,10 @@ sub_02056D58: ; 0x02056D58 bl MapObject_GetFieldSystem add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x0] ldr r2, [sp, #0x0] add r0, r7, #0x0 @@ -2766,13 +2766,13 @@ sub_02056E04: ; 0x02056E04 bl MapObject_GetFieldSystem str r0, [sp, #0x0] add r0, r4, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r5, #0x0 bl sub_02059BF4 add r7, r0, #0x0 add r0, r4, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r4, r0, #0x0 add r0, r5, #0x0 bl sub_02059C00 @@ -2816,13 +2816,13 @@ sub_02056E6C: ; 0x02056E6C bl MapObject_GetFieldSystem str r0, [sp, #0x0] add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r4, #0x0 bl sub_02059BF4 add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x4] add r0, r4, #0x0 bl sub_02059C00 @@ -2860,13 +2860,13 @@ sub_02056EC8: ; 0x02056EC8 bl MapObject_GetFieldSystem str r0, [sp, #0x4] add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r4, #0x0 bl sub_02059BF4 add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x8] add r0, r4, #0x0 bl sub_02059C00 @@ -2948,13 +2948,13 @@ sub_02056F78: ; 0x02056F78 bl MapObject_GetFieldSystem str r0, [sp, #0x0] add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r4, #0x0 bl sub_02059BF4 add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x4] add r0, r4, #0x0 bl sub_02059C00 diff --git a/arm9/asm/unk_02058EE8.s b/arm9/asm/unk_02058EE8.s index 51b711cd1..21b1cecbc 100644 --- a/arm9/asm/unk_02058EE8.s +++ b/arm9/asm/unk_02058EE8.s @@ -2160,13 +2160,13 @@ sub_020596D8: ; 0x020596D8 cmp r0, #0x1 bne _02059708 add r0, r5, #0x0 - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord add r4, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetPreviousY + bl MapObject_GetPreviousYCoord add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord add r3, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -2185,13 +2185,13 @@ sub_0205970C: ; 0x0205970C cmp r0, #0x1 bne _0205973C add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r3, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -2210,13 +2210,13 @@ sub_02059740: ; 0x02059740 cmp r0, #0x1 bne _02059770 add r0, r5, #0x0 - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord add r4, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetPreviousY + bl MapObject_GetPreviousYCoord add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord add r3, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -2235,13 +2235,13 @@ sub_02059774: ; 0x02059774 cmp r0, #0x1 bne _020597A4 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r3, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -2445,16 +2445,16 @@ sub_02059918: ; 0x02059918 sub sp, #0xc add r4, r1, #0x0 add r5, r0, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r4, #0x0 bl sub_02059BF4 add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord str r0, [sp, #0x4] add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x8] add r0, r4, #0x0 bl sub_02059C00 @@ -2501,16 +2501,16 @@ _0205997C: cmp r0, #0x0 bne _020599F4 ldr r0, [sp, #0x8] - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r7, r0, #0x0 ldr r0, [sp, #0x8] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord cmp r7, r5 bne _020599C8 cmp r0, r6 bne _020599C8 ldr r0, [sp, #0x8] - bl MapObject_GetCurrentY + bl MapObject_GetYCoord sub r0, r0, r4 bpl _020599BE neg r0, r0 @@ -2522,16 +2522,16 @@ _020599BE: pop {r4-r7, pc} _020599C8: ldr r0, [sp, #0x8] - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord add r7, r0, #0x0 ldr r0, [sp, #0x8] - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord cmp r7, r5 bne _020599F4 cmp r0, r6 bne _020599F4 ldr r0, [sp, #0x8] - bl MapObject_GetCurrentY + bl MapObject_GetYCoord sub r0, r0, r4 bpl _020599EA neg r0, r0 @@ -2839,17 +2839,17 @@ sub_02059C0C: ; 0x02059C0C push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r1, r0, #0x0 add r0, r5, #0x0 bl MapObject_SetPreviousX add r0, r5, #0x0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord add r1, r0, #0x0 add r0, r5, #0x0 bl MapObject_SetPreviousY add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r1, r0, #0x0 add r0, r5, #0x0 bl MapObject_SetPreviousZ @@ -2872,17 +2872,17 @@ sub_02059C0C: ; 0x02059C0C sub_02059C60: ; 0x02059C60 push {r4, lr} add r4, r0, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r1, r0, #0x0 add r0, r4, #0x0 bl MapObject_SetPreviousX add r0, r4, #0x0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord add r1, r0, #0x0 add r0, r4, #0x0 bl MapObject_SetPreviousY add r0, r4, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r1, r0, #0x0 add r0, r4, #0x0 bl MapObject_SetPreviousZ @@ -2894,13 +2894,13 @@ sub_02059C90: ; 0x02059C90 push {r3-r7, lr} add r5, r1, #0x0 add r4, r0, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r5, #0x0 bl sub_02059BF4 add r7, r0, #0x0 add r0, r4, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x0] add r0, r5, #0x0 bl sub_02059C00 @@ -3005,7 +3005,7 @@ _02059D4E: add r0, r5, #0x0 bl MapObject_SetPositionVector add r0, r5, #0x0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord add r1, r0, #0x0 add r0, r5, #0x0 bl MapObject_SetPreviousY @@ -3037,10 +3037,10 @@ _02059DAC: sub_02059DB4: ; 0x02059DB4 push {r3-r7, lr} add r5, r0, #0x0 - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord add r4, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord add r6, r0, #0x0 add r0, r5, #0x0 bl MapObject_GetFieldSystem @@ -3052,10 +3052,10 @@ sub_02059DB4: ; 0x02059DB4 add r0, r5, #0x0 bl sub_02058728 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r2, r0, #0x0 add r0, r7, #0x0 add r1, r4, #0x0 diff --git a/arm9/asm/unk_02059F04.s b/arm9/asm/unk_02059F04.s index f2c8c8afd..470d39b01 100644 --- a/arm9/asm/unk_02059F04.s +++ b/arm9/asm/unk_02059F04.s @@ -493,13 +493,13 @@ sub_0205A270: ; 0x0205A270 add r1, sp, #0x0 bl sub_0205A174 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0x0 add r0, r6, #0x0 bl sub_02059BF4 add r4, r4, r0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r5, r0, #0x0 add r0, r6, #0x0 bl sub_02059C00 @@ -1061,10 +1061,10 @@ sub_0205A67C: ; 0x0205A67C bl MapObject_GetInitialZ add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #0x0] add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord ldr r1, [sp, #0x0] cmp r6, r1 bne _0205A6DA @@ -1461,7 +1461,7 @@ sub_0205A940: ; 0x0205A940 bl MapObject_GetInitialX add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord cmp r6, r0 bne _0205A98C mov r0, #0x2 @@ -1473,7 +1473,7 @@ _0205A974: bl MapObject_GetInitialZ add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord cmp r6, r0 bne _0205A98C mov r0, #0x2 @@ -1492,10 +1492,10 @@ _0205A98C: bl MapObject_GetInitialZ add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #0x0] add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord ldr r1, [sp, #0x0] cmp r6, r1 bne _0205A9C0 @@ -1746,10 +1746,10 @@ _0205AB8E: bl MapObject_GetParam str r0, [sp, #0x0] add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r3, r0, #0x0 ldr r0, [sp, #0x0] ldr r5, [sp, #0x0] @@ -1817,10 +1817,10 @@ _0205AC22: mvn r7, r7 ldr r0, [sp, #0x0] add r6, r7, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #0x8] ldr r0, [sp, #0x0] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x4] ldr r0, [sp, #0x0] bl MapObject_GetFieldSystem diff --git a/arm9/asm/unk_0205BEF8.s b/arm9/asm/unk_0205BEF8.s index 256272714..925f3de55 100644 --- a/arm9/asm/unk_0205BEF8.s +++ b/arm9/asm/unk_0205BEF8.s @@ -113,20 +113,20 @@ _0205BF74: .word UNK_020F7178 sub_0205BF78: ; 0x0205BF78 push {r3-r5, lr} add r4, r0, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r5, r0, #0x0 add r0, r4, #0x0 - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord cmp r5, r0 beq _0205BF90 mov r0, #0x1 pop {r3-r5, pc} _0205BF90: add r0, r4, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r5, r0, #0x0 add r0, r4, #0x0 - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord cmp r5, r0 beq _0205BFA6 mov r0, #0x1 @@ -140,20 +140,20 @@ _0205BFA6: sub_0205BFAC: ; 0x0205BFAC push {r3-r5, lr} add r4, r0, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r5, r0, #0x0 add r0, r4, #0x0 - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord cmp r5, r0 beq _0205BFC4 mov r0, #0x0 pop {r3-r5, pc} _0205BFC4: add r0, r4, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r5, r0, #0x0 add r0, r4, #0x0 - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord cmp r5, r0 bne _0205BFDA mov r0, #0x1 diff --git a/arm9/asm/unk_0205C598.s b/arm9/asm/unk_0205C598.s index 8a6b60e15..eb85e3cc8 100644 --- a/arm9/asm/unk_0205C598.s +++ b/arm9/asm/unk_0205C598.s @@ -402,11 +402,11 @@ sub_0205C888: ; 0x0205C888 add r5, r1, #0x0 add r6, r2, #0x0 add r4, r3, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord cmp r0, r6 bne _0205C8AE add r0, r7, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord cmp r4, r0 bge _0205C8AE sub r1, r0, r5 @@ -426,11 +426,11 @@ sub_0205C8B4: ; 0x0205C8B4 add r5, r1, #0x0 add r6, r2, #0x0 add r4, r3, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord cmp r0, r6 bne _0205C8DA add r0, r7, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord cmp r4, r0 ble _0205C8DA add r1, r0, r5 @@ -450,11 +450,11 @@ sub_0205C8E0: ; 0x0205C8E0 add r5, r1, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord cmp r0, r6 bne _0205C906 add r0, r7, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord cmp r4, r0 bge _0205C906 sub r1, r0, r5 @@ -474,11 +474,11 @@ sub_0205C90C: ; 0x0205C90C add r5, r1, #0x0 add r4, r2, #0x0 add r6, r3, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord cmp r0, r6 bne _0205C932 add r0, r7, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord cmp r4, r0 ble _0205C932 add r1, r0, r5 @@ -504,13 +504,13 @@ sub_0205C938: ; 0x0205C938 mov r0, #0x1 pop {r3-r7, pc} _0205C94C: - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0x0 ldr r0, [sp, #0x4] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r7, r0, #0x0 ldr r0, [sp, #0x4] - bl MapObject_GetCurrentY + bl MapObject_GetYCoord str r0, [sp, #0xc] add r0, r5, #0x0 bl sub_02059BF4 @@ -1024,16 +1024,16 @@ sub_0205CCEC: ; 0x0205CCEC ldr r0, [r5, #0x28] bl PlayerAvatar_GetMapObject add r4, r0, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0x0 add r0, r4, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r7, r0, #0x0 ldr r0, [r5, #0x24] - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #0x0] ldr r0, [r5, #0x24] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r3, r0, #0x0 ldr r2, [sp, #0x0] add r0, r6, #0x0 diff --git a/arm9/asm/unk_0205DD18.s b/arm9/asm/unk_0205DD18.s index 3e5ac981f..2474af7b1 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 PlayerAvatar_GetPositionVectorConst + bl PlayerAvatar_GetPositionVector 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 0bbe70b19..f6bdc0eec 100644 --- a/arm9/asm/unk_0205E4EC.s +++ b/arm9/asm/unk_0205E4EC.s @@ -257,10 +257,10 @@ sub_0205E698: ; 0x0205E698 bl FieldSystem_GetPlayerAvatar add r4, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #0x0] add r0, r5, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r7, r0, #0x0 add r0, r4, #0x0 bl PlayerAvatar_GetPreviousXCoord @@ -541,10 +541,10 @@ sub_0205E8D0: ; 0x0205E8D0 add r4, r2, #0x0 strb r0, [r5, #0x1] add r0, r4, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord strh r0, [r5, #0x2] add r0, r4, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord strh r0, [r5, #0x4] mov r0, #0xff strh r0, [r5, #0x6] @@ -557,16 +557,16 @@ sub_0205E8F4: ; 0x0205E8F4 push {r3-r7, lr} add r6, r0, #0x0 ldr r5, [r1, #0x8] - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0x0 add r0, r6, #0x0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r6, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord add r7, r0, #0x0 add r0, r5, #0x0 - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord cmp r4, r7 bne _0205E91E cmp r6, r0 @@ -596,22 +596,22 @@ sub_0205E940: ; 0x0205E940 sub sp, #0xc str r0, [sp, #0x0] add r5, r1, #0x0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0x0 ldr r0, [sp, #0x0] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r6, r0, #0x0 ldr r0, [r5, #0x8] - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #0x8] ldr r0, [r5, #0x8] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r7, r0, #0x0 ldr r0, [r5, #0x8] - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord str r0, [sp, #0x4] ldr r0, [r5, #0x8] - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord add r3, r0, #0x0 ldr r0, [sp, #0x8] cmp r4, r0 diff --git a/arm9/global.inc b/arm9/global.inc index c1fe324a4..8c8de459f 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3906,7 +3906,7 @@ .extern PlayerAvatar_GetPreviousXCoord .extern PlayerAvatar_GetPreviousZCoord .extern PlayerAvatar_CopyPositionVector -.extern PlayerAvatar_GetPositionVectorConst +.extern PlayerAvatar_GetPositionVector .extern PlayerAvatar_SetUnk10 .extern PlayerAvatar_GetUnk10 .extern PlayerAvatar_SetUnk14 @@ -4116,19 +4116,19 @@ .extern MapObject_GetInitialX .extern MapObject_GetInitialY .extern MapObject_GetInitialZ -.extern MapObject_GetPreviousX +.extern MapObject_GetPreviousXCoord .extern MapObject_SetPreviousX -.extern MapObject_GetPreviousY +.extern MapObject_GetPreviousYCoord .extern MapObject_SetPreviousY -.extern MapObject_GetPreviousZ +.extern MapObject_GetPreviousZCoord .extern MapObject_SetPreviousZ -.extern MapObject_GetCurrentX +.extern MapObject_GetXCoord .extern MapObject_SetCurrentX .extern MapObject_AddCurrentX -.extern MapObject_GetCurrentY +.extern MapObject_GetYCoord .extern MapObject_SetCurrentY .extern MapObject_AddCurrentY -.extern MapObject_GetCurrentZ +.extern MapObject_GetZCoord .extern MapObject_SetCurrentZ .extern MapObject_AddCurrentZ .extern MapObject_CopyPositionVector diff --git a/arm9/overlays/05/asm/ov05_021D74E0.s b/arm9/overlays/05/asm/ov05_021D74E0.s index 2cb8aa080..587460d5b 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 PlayerAvatar_GetPositionVectorConst + bl PlayerAvatar_GetPositionVector 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 PlayerAvatar_GetPositionVectorConst + bl PlayerAvatar_GetPositionVector add r1, r4, #0 add r2, r5, #0 mov r3, #1 diff --git a/arm9/overlays/05/asm/ov05_021E1374.s b/arm9/overlays/05/asm/ov05_021E1374.s index 1db70d272..2ccf5b4ee 100644 --- a/arm9/overlays/05/asm/ov05_021E1374.s +++ b/arm9/overlays/05/asm/ov05_021E1374.s @@ -319,10 +319,10 @@ _021E15CA: ; jump table .short _021E15DC - _021E15CA - 2 ; case 8 _021E15DC: add r0, r4, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r7, r0, #0 add r0, r4, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord ldr r1, [sp, #0x14] cmp r7, r1 blt _021E161A diff --git a/arm9/overlays/05/asm/ov05_021E5FD8.s b/arm9/overlays/05/asm/ov05_021E5FD8.s index be0cdff13..bc12cfb88 100644 --- a/arm9/overlays/05/asm/ov05_021E5FD8.s +++ b/arm9/overlays/05/asm/ov05_021E5FD8.s @@ -1647,14 +1647,14 @@ ov05_021E6CC4: ; 0x021E6CC4 sub sp, #0x18 add r5, r0, #0 ldr r0, [r5, #0x3c] - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0 mov r0, #0 bl sub_02059BF4 lsl r0, r0, #1 add r4, r4, r0 ldr r0, [r5, #0x3c] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r6, r0, #0 mov r0, #0 bl sub_02059C00 @@ -1878,14 +1878,14 @@ ov05_021E6E90: ; 0x021E6E90 sub sp, #0x18 add r5, r0, #0 ldr r0, [r5, #0x3c] - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0 mov r0, #1 bl sub_02059BF4 lsl r0, r0, #1 add r4, r4, r0 ldr r0, [r5, #0x3c] - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r6, r0, #0 mov r0, #1 bl sub_02059C00 diff --git a/arm9/overlays/05/asm/ov05_021EDB70.s b/arm9/overlays/05/asm/ov05_021EDB70.s index 678b2167c..5563f6f03 100644 --- a/arm9/overlays/05/asm/ov05_021EDB70.s +++ b/arm9/overlays/05/asm/ov05_021EDB70.s @@ -173,13 +173,13 @@ _021EDCAE: str r0, [r5, #0x20] _021EDCB8: add r0, r6, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r4, r0, #0 ldr r0, [r5, #4] bl sub_02059BF4 add r7, r0, #0 add r0, r6, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #8] ldr r0, [r5, #4] bl sub_02059C00 diff --git a/arm9/overlays/06/asm/overlay_06.s b/arm9/overlays/06/asm/overlay_06.s index 1f8006414..b5654673a 100644 --- a/arm9/overlays/06/asm/overlay_06.s +++ b/arm9/overlays/06/asm/overlay_06.s @@ -1127,11 +1127,11 @@ ov06_02239F04: ; 0x02239F04 bl GF_AssertFail _02239F18: add r0, r5, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord lsl r0, r0, #0x10 lsr r5, r0, #0x10 mov r0, #4 @@ -33893,10 +33893,10 @@ ov06_02249E9C: ; 0x02249E9C sub sp, #0x34 add r5, r0, #0 add r4, r1, #0 - bl MapObject_GetPreviousX + bl MapObject_GetPreviousXCoord str r0, [sp, #0xc] add r0, r5, #0 - bl MapObject_GetPreviousZ + bl MapObject_GetPreviousZCoord str r0, [sp, #0x10] add r0, r5, #0 bl MapObject_GetPositionVectorYCoord @@ -36382,7 +36382,7 @@ ov06_0224B124: ; 0x0224B124 add r0, r2, r0 str r0, [sp, #0x18] add r0, r5, #0 - bl MapObject_GetPreviousY + bl MapObject_GetPreviousYCoord lsl r1, r0, #0xf mov r0, #2 lsl r0, r0, #0xe @@ -36588,7 +36588,7 @@ ov06_0224B2C4: ; 0x0224B2C4 add r0, r1, r0 str r0, [sp, #0x18] add r0, r5, #0 - bl MapObject_GetPreviousY + bl MapObject_GetPreviousYCoord lsl r1, r0, #0xf mov r0, #2 lsl r0, r0, #0xe @@ -36887,13 +36887,13 @@ ov06_0224B568: ; 0x0224B568 bl ov05_021E4C24 add r4, r0, #0 add r0, r5, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #8] add r0, r5, #0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord str r0, [sp, #0xc] add r0, r5, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x10] add r0, r4, #0 str r4, [sp, #0x18] @@ -37092,10 +37092,10 @@ _0224B710: pop {r3, r4, r5, r6, r7, pc} _0224B72A: add r0, r6, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r7, r0, #0 add r0, r6, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord ldr r1, [r4, #0x18] cmp r1, r7 bne _0224B744 @@ -37731,10 +37731,10 @@ ov06_0224BBEC: ; 0x0224BBEC str r5, [sp, #0x20] bl MapObject_CopyPositionVector add r0, r5, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0 add r0, r5, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r1, r0, #0 add r0, r6, #0 add r2, sp, #8 @@ -37925,13 +37925,13 @@ ov06_0224BD90: ; 0x0224BD90 bl ov05_021E4C24 add r4, r0, #0 add r0, r5, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #8] add r0, r5, #0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord str r0, [sp, #0xc] add r0, r5, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x10] add r0, r4, #0 str r4, [sp, #0x18] @@ -38121,10 +38121,10 @@ _0224BF2A: str r0, [r4] _0224BF40: add r0, r6, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r7, r0, #0 add r0, r6, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord ldr r1, [r4, #0x18] cmp r1, r7 bne _0224BF5A @@ -38252,13 +38252,13 @@ ov06_0224C038: ; 0x0224C038 bl ov05_021E4C24 add r4, r0, #0 add r0, r5, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #8] add r0, r5, #0 - bl MapObject_GetCurrentY + bl MapObject_GetYCoord str r0, [sp, #0xc] add r0, r5, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord str r0, [sp, #0x10] add r0, r4, #0 str r4, [sp, #0x18] @@ -38454,10 +38454,10 @@ _0224C1DE: str r0, [r4] _0224C1F4: add r0, r6, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r7, r0, #0 add r0, r6, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord ldr r1, [r4, #0x18] cmp r1, r7 bne _0224C20E @@ -40118,10 +40118,10 @@ ov06_0224CECC: ; 0x0224CECC bl ov05_021E4C20 add r7, r0, #0 add r0, r5, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord str r0, [sp, #8] add r0, r5, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r1, r0, #0 ldr r0, [sp, #8] add r2, sp, #0x20 @@ -40663,10 +40663,10 @@ ov06_0224D2E0: ; 0x0224D2E0 str r5, [sp, #0x20] bl MapObject_CopyPositionVector add r0, r5, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r6, r0, #0 add r0, r5, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r1, r0, #0 add r0, r6, #0 add r2, sp, #8 @@ -43303,10 +43303,10 @@ ov06_0224E858: ; 0x0224E858 add r1, sp, #0 bl MapObject_CopyPositionVector add r0, r6, #0 - bl MapObject_GetCurrentX + bl MapObject_GetXCoord add r5, r0, #0 add r0, r6, #0 - bl MapObject_GetCurrentZ + bl MapObject_GetZCoord add r4, r0, #0 add r0, r6, #0 bl MapObject_GetFacingDirection diff --git a/arm9/src/map_object.c b/arm9/src/map_object.c index a470e84f7..d1a95d98b 100644 --- a/arm9/src/map_object.c +++ b/arm9/src/map_object.c @@ -423,9 +423,9 @@ static void SavedMapObject_InitFromLocalMapObject(FieldSystem *fieldSystem, Loca savedObject->initialX = MapObject_GetInitialX(localObject); savedObject->initialY = MapObject_GetInitialY(localObject); savedObject->initialZ = MapObject_GetInitialZ(localObject); - savedObject->currentX = MapObject_GetCurrentX(localObject); - savedObject->currentY = MapObject_GetCurrentY(localObject); - savedObject->currentZ = MapObject_GetCurrentZ(localObject); + savedObject->currentX = MapObject_GetXCoord(localObject); + savedObject->currentY = MapObject_GetYCoord(localObject); + savedObject->currentZ = MapObject_GetZCoord(localObject); VecFx32 coords; sub_02059E60(savedObject->currentX, savedObject->currentZ, &coords); // some kind of x y vec copy with convertion between int and fx32 @@ -496,13 +496,13 @@ static void MapObject_ConvertXZToPositionVec(LocalMapObject *object) { VecFx32 position; MapObject_CopyPositionVector(object, &position); - u32 x = MapObject_GetCurrentX(object); + u32 x = MapObject_GetXCoord(object); position.x = x * FX32_CONST(16) + FX32_CONST(8); MapObject_SetPreviousX(object, x); - MapObject_SetPreviousY(object, MapObject_GetCurrentY(object)); + MapObject_SetPreviousY(object, MapObject_GetYCoord(object)); - u32 z = MapObject_GetCurrentZ(object); + u32 z = MapObject_GetZCoord(object); position.z = z * FX32_CONST(16) + FX32_CONST(8); MapObject_SetPreviousZ(object, z); @@ -1618,7 +1618,7 @@ static void MapObject_SetInitialZ(LocalMapObject *object, u32 initialY) { object->initialZ = initialY; } -u32 MapObject_GetPreviousX(LocalMapObject *object) { +u32 MapObject_GetPreviousXCoord(LocalMapObject *object) { return object->previousX; } @@ -1626,7 +1626,7 @@ void MapObject_SetPreviousX(LocalMapObject *object, u32 previousX) { object->previousX = previousX; } -u32 MapObject_GetPreviousY(LocalMapObject *object) { +u32 MapObject_GetPreviousYCoord(LocalMapObject *object) { return object->previousY; } @@ -1634,7 +1634,7 @@ void MapObject_SetPreviousY(LocalMapObject *object, u32 previousY) { object->previousY = previousY; } -u32 MapObject_GetPreviousZ(LocalMapObject *object) { +u32 MapObject_GetPreviousZCoord(LocalMapObject *object) { return object->previousZ; } @@ -1642,7 +1642,7 @@ void MapObject_SetPreviousZ(LocalMapObject *object, u32 previousZ) { object->previousZ = previousZ; } -u32 MapObject_GetCurrentX(LocalMapObject *object) { +u32 MapObject_GetXCoord(LocalMapObject *object) { return object->currentX; } @@ -1654,7 +1654,7 @@ void MapObject_AddCurrentX(LocalMapObject *object, u32 currentX) { object->currentX += currentX; } -s32 MapObject_GetCurrentY(LocalMapObject *object) { +s32 MapObject_GetYCoord(LocalMapObject *object) { return object->currentY; } @@ -1666,7 +1666,7 @@ void MapObject_AddCurrentY(LocalMapObject *object, s32 currentY) { object->currentY += currentY; } -u32 MapObject_GetCurrentZ(LocalMapObject *object) { +u32 MapObject_GetZCoord(LocalMapObject *object) { return object->currentZ; } @@ -1932,7 +1932,7 @@ LocalMapObject *MapObjectManager_GetFirstObjectWithXAndZ(MapObjectManager *manag do { if (MapObject_GetFlagsBitsMask(objects, MAPOBJECTFLAG_ACTIVE) != 0) { - if (x == MapObject_GetCurrentX(objects) && z == MapObject_GetCurrentZ(objects)) { + if (x == MapObject_GetXCoord(objects) && z == MapObject_GetZCoord(objects)) { return objects; } } diff --git a/arm9/src/player_avatar.c b/arm9/src/player_avatar.c index 2ff633feb..5c75e8898 100644 --- a/arm9/src/player_avatar.c +++ b/arm9/src/player_avatar.c @@ -5,6 +5,7 @@ #include "constants/sprites.h" #include "map_object.h" +#include "scrcmd.h" static PlayerAvatar *PlayerAvatar_Create(void); static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, PlayerSaveData *playerSaveData); @@ -88,7 +89,7 @@ static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, Play PlayerAvatar_ClearUnk20ClearFlag2(avatar); PlayerAvatar_SetUnk24(avatar, -1); PlayerAvatar_SetUnk28(avatar, -1); - PlayerAvatar_SetUnk8(avatar, 255); + PlayerAvatar_SetUnk8(avatar, 255); // obj_player? PlayerAvatar_SetFlag1(avatar, TRUE); PlayerAvatar_SetFlag4(avatar, TRUE); } @@ -96,7 +97,7 @@ static void PlayerAvatar_Setup(PlayerAvatar *avatar, s32 state, u32 gender, Play 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); + MapObject_SetID(mapObject, obj_player); MapObject_SetType(mapObject, 0); MapObject_SetEventFlag(mapObject, 0); MapObject_SetScriptID(mapObject, 0); @@ -141,26 +142,26 @@ u32 PlayerAvatar_GetNextFacingDirection(PlayerAvatar *avatar) { } u32 PlayerAvatar_GetXCoord(PlayerAvatar *avatar) { - return MapObject_GetCurrentX(PlayerAvatar_GetMapObject(avatar)); + return MapObject_GetXCoord(PlayerAvatar_GetMapObject(avatar)); } u32 PlayerAvatar_GetZCoord(PlayerAvatar *avatar) { - return MapObject_GetCurrentZ(PlayerAvatar_GetMapObject(avatar)); + return MapObject_GetZCoord(PlayerAvatar_GetMapObject(avatar)); } u32 PlayerAvatar_GetPreviousXCoord(PlayerAvatar *avatar) { - return MapObject_GetPreviousX(PlayerAvatar_GetMapObject(avatar)); + return MapObject_GetPreviousXCoord(PlayerAvatar_GetMapObject(avatar)); } u32 PlayerAvatar_GetPreviousZCoord(PlayerAvatar *avatar) { - return MapObject_GetPreviousZ(PlayerAvatar_GetMapObject(avatar)); + return MapObject_GetPreviousZCoord(PlayerAvatar_GetMapObject(avatar)); } void PlayerAvatar_CopyPositionVector(PlayerAvatar *avatar, VecFx32 *vector) { MapObject_CopyPositionVector(PlayerAvatar_GetMapObject(avatar), vector); } -VecFx32 *PlayerAvatar_GetPositionVectorConst(PlayerAvatar *avatar) { +VecFx32 *PlayerAvatar_GetPositionVector(PlayerAvatar *avatar) { return MapObject_GetPositionVector(PlayerAvatar_GetMapObjectConst(avatar)); } diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 243c81960..777b7222d 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -1532,8 +1532,8 @@ BOOL ScrCmd_Unk02A1(ScriptContext *ctx) { // 02A1 GF_ASSERT(event); u16 *unk4 = AllocFromHeap(HEAP_ID_4, 0x100); - u16 xVal = (u16)MapObject_GetCurrentX(event); - u16 zVal = (u16)MapObject_GetCurrentZ(event); + u16 xVal = (u16)MapObject_GetXCoord(event); + u16 zVal = (u16)MapObject_GetZCoord(event); u32 pos = 0; @@ -1805,8 +1805,8 @@ BOOL ScrCmd_GetEventPosition(ScriptContext *ctx) { // 006A u16 *x = ScriptGetVarPointer(ctx); u16 *z = ScriptGetVarPointer(ctx); - *x = (u16)MapObject_GetCurrentX(event); - *z = (u16)MapObject_GetCurrentZ(event); + *x = (u16)MapObject_GetXCoord(event); + *z = (u16)MapObject_GetZCoord(event); return FALSE; } diff --git a/include/map_object.h b/include/map_object.h index c9a24f399..d4f49f5b3 100644 --- a/include/map_object.h +++ b/include/map_object.h @@ -330,19 +330,19 @@ BOOL MapObject_CheckFlag29(LocalMapObject *object); u32 MapObject_GetInitialX(LocalMapObject *object); u32 MapObject_GetInitialY(LocalMapObject *object); u32 MapObject_GetInitialZ(LocalMapObject *object); -u32 MapObject_GetPreviousX(LocalMapObject *object); +u32 MapObject_GetPreviousXCoord(LocalMapObject *object); void MapObject_SetPreviousX(LocalMapObject *object, u32 previousX); -u32 MapObject_GetPreviousY(LocalMapObject *object); +u32 MapObject_GetPreviousYCoord(LocalMapObject *object); void MapObject_SetPreviousY(LocalMapObject *object, u32 previousY); -u32 MapObject_GetPreviousZ(LocalMapObject *object); +u32 MapObject_GetPreviousZCoord(LocalMapObject *object); void MapObject_SetPreviousZ(LocalMapObject *object, u32 previousZ); -u32 MapObject_GetCurrentX(LocalMapObject *object); +u32 MapObject_GetXCoord(LocalMapObject *object); void MapObject_SetCurrentX(LocalMapObject *object, u32 currentX); void MapObject_AddCurrentX(LocalMapObject *object, u32 currentX); -s32 MapObject_GetCurrentY(LocalMapObject *object); +s32 MapObject_GetYCoord(LocalMapObject *object); void MapObject_SetCurrentY(LocalMapObject *object, s32 currentY); void MapObject_AddCurrentY(LocalMapObject *object, s32 currentY); -u32 MapObject_GetCurrentZ(LocalMapObject *object); +u32 MapObject_GetZCoord(LocalMapObject *object); void MapObject_SetCurrentZ(LocalMapObject *object, u32 currentZ); void MapObject_AddCurrentZ(LocalMapObject *object, u32 currentZ); void MapObject_CopyPositionVector(LocalMapObject *object, VecFx32 *positionVector); diff --git a/include/player_avatar.h b/include/player_avatar.h index ab59bb2c1..71f1a6314 100644 --- a/include/player_avatar.h +++ b/include/player_avatar.h @@ -56,7 +56,7 @@ 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); +VecFx32 *PlayerAvatar_GetPositionVector(PlayerAvatar *avatar); void PlayerAvatar_SetUnk10(PlayerAvatar *avatar, u32 param1); u32 PlayerAvatar_GetUnk10(PlayerAvatar *avatar); void PlayerAvatar_SetUnk14(PlayerAvatar *avatar, u32 param1); diff --git a/include/scrcmd.h b/include/scrcmd.h index 74b8a4b4e..e80edb7f7 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -6,6 +6,8 @@ #include "script.h" #include "unk_0200CA44.h" +#define obj_player 255 + extern u16 FieldSystem_VarGet(FieldSystem *fieldSystem, u16); extern u16 *GetVarPointer(FieldSystem *fieldSystem, u16); extern SaveData *FieldSystem_GetSaveData(FieldSystem *fieldSystem);