This commit is contained in:
red031000 2025-03-05 05:00:57 +00:00
parent 05944c7f69
commit f08180fc01
No known key found for this signature in database
GPG Key ID: D27E50C050AE0CE1
16 changed files with 96 additions and 134 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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