more decomp

This commit is contained in:
red031000 2025-05-23 18:18:46 +01:00
parent 7715a27163
commit aa082ace99
No known key found for this signature in database
GPG Key ID: D27E50C050AE0CE1
14 changed files with 178 additions and 244 deletions

View File

@ -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}

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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);

View File

@ -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