Skip to content

Commit c76ab19

Browse files
committed
Document behavior for getting stuck in deep mud
1 parent 557d2b4 commit c76ab19

25 files changed

+350
-330
lines changed

generated/game_records.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ RECORD_UNK_052
5454
RECORD_UNK_053
5555
RECORD_UNK_054
5656
RECORD_UNK_055
57-
RECORD_UNK_056
57+
RECORD_TIMES_STUCK_IN_DEEP_MUD
5858
RECORD_UNK_057
5959
RECORD_UNK_058
6060
RECORD_UNK_059

include/constants/map_object.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#define MAP_OBJ_STATUS_24 (1 << 24)
3838
#define MAP_OBJ_STATUS_25 (1 << 25)
3939
#define MAP_OBJ_STATUS_26 (1 << 26)
40-
#define MAP_OBJ_STATUS_27 (1 << 27)
40+
#define MAP_OBJ_DO_NOT_SINK_INTO_TERRAIN (1 << 27)
4141
#define MAP_OBJ_STATUS_28 (1 << 28)
4242
#define MAP_OBJ_DYNAMIC_HEIGHT_CALCULATION_ENABLED (1 << 29)
4343

include/map_object.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,8 @@ void sub_02062E78(MapObject *mapObj, int param1);
211211
int sub_02062E94(const MapObject *mapObj);
212212
void sub_02062EAC(MapObject *mapObj, int param1);
213213
int sub_02062EC8(const MapObject *mapObj);
214-
void sub_02062EE0(MapObject *mapObj, int param1);
215-
int sub_02062EFC(const MapObject *mapObj);
214+
void MapObject_SetFlagDoNotSinkIntoTerrain(MapObject *mapObj, BOOL flag);
215+
int MapObject_CheckFlagDoNotSinkIntoTerrain(const MapObject *mapObj);
216216
void sub_02062F14(MapObject *mapObj, int param1);
217217
int sub_02062F30(const MapObject *mapObj);
218218
void sub_02062F48(MapObject *mapObj, int param1);
@@ -247,13 +247,13 @@ void MapObject_GetPosPtr(const MapObject *mapObj, VecFx32 *pos);
247247
void MapObject_SetPos(MapObject *mapObj, const VecFx32 *pos);
248248
const VecFx32 *MapObject_GetPos(const MapObject *mapObj);
249249
fx32 MapObject_GetPosY(const MapObject *mapObj);
250-
void sub_02063078(const MapObject *mapObj, VecFx32 *vec);
251-
void sub_02063088(MapObject *mapObj, const VecFx32 *vec);
252-
VecFx32 *sub_02063098(MapObject *mapObj);
250+
void MapObject_GetSpriteJumpOffset(const MapObject *mapObj, VecFx32 *vec);
251+
void MapObject_SetSpriteJumpOffset(MapObject *mapObj, const VecFx32 *vec);
252+
VecFx32 *MapObject_GetSpriteJumpOffset1(MapObject *mapObj);
253253
void sub_0206309C(const MapObject *mapObj, VecFx32 *vec);
254254
void sub_020630AC(MapObject *mapObj, const VecFx32 *vec);
255-
void sub_020630BC(const MapObject *mapObj, VecFx32 *vec);
256-
void sub_020630CC(MapObject *mapObj, const VecFx32 *vec);
255+
void MapObject_GetSpriteTerrainOffset(const MapObject *mapObj, VecFx32 *vec);
256+
void MapObject_SetSpriteTerrainOffset(MapObject *mapObj, const VecFx32 *spriteOffset);
257257
int sub_020630DC(const MapObject *mapObj);
258258
void ObjectEvent_SetLocalID(ObjectEvent *objectEvent, int localID);
259259
int ObjectEvent_GetLocalID(const ObjectEvent *objectEvent);

include/overlay005/ov5_021DFB54.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
#include "field/field_system_decl.h"
77

88
#include "field_task.h"
9+
#include "location.h"
910
#include "sys_task_manager.h"
1011

1112
void PlayerAvatar_SetTransitionState(PlayerAvatar *playerAvatar, u32 param1);
1213
void PlayerAvatar_RequestChangeState(PlayerAvatar *playerAvatar);
13-
int ov5_021DFDE0(FieldSystem *fieldSystem, PlayerAvatar *param1, int param2, int param3);
14+
int ov5_021DFDE0(FieldSystem *fieldSystem, PlayerAvatar *playerAvatar, enum FaceDirection dir, int param3);
1415
void FieldTask_StartUseSurf(FieldTask *task, int direction, int partySlot);
1516
int PlayerAvatar_CanUseSurf(PlayerAvatar *playerAvatar, u32 currTileBehavior, u32 nextTileBehavior);
1617
void FieldTask_StartUseRockClimb(FieldTask *task, int direction, int partySlot);

include/player_avatar.h

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,29 @@
1313
#include "field/field_system_decl.h"
1414
#include "overlay101/struct_ov101_021D5D90_decl.h"
1515

16+
#include "location.h"
17+
1618
enum PlayerAvatarForm {
1719
PLAYER_AVATAR_WALKING = 0,
1820
PLAYER_AVATAR_BIKING,
1921
PLAYER_AVATAR_SURFING,
2022
};
2123

24+
enum PlayerAvatarFlagUnk00 {
25+
UNK_00_1 = (1 << 1),
26+
UNK_00_2 = (1 << 2),
27+
UNK_00_3 = (1 << 3),
28+
UNK_00_ESCAPED_FROM_DEEP_MUD = (1 << 4),
29+
UNK_00_5 = (1 << 5),
30+
UNK_00_6 = (1 << 6),
31+
UNK_00_7 = (1 << 7),
32+
UNK_00_8 = (1 << 8),
33+
UNK_00_9 = (1 << 9),
34+
UNK_00_10 = (1 << 10),
35+
UNK_00_11 = (1 << 11),
36+
UNK_00_12 = (1 << 12)
37+
};
38+
2239
PlayerAvatar *PlayerAvatar_Init(const MapObjectManager *param0, int param1, int param2, int param3, int param4, int param5, int param6, PlayerData *param7);
2340
PlayerAvatar *sub_0205E820(const MapObjectManager *param0, PlayerData *param1, int gender);
2441
void PlayerAvatar_InitDraw(PlayerAvatar *playerAvatar, int dynamicMapFeaturesID);
@@ -54,11 +71,11 @@ int PlayerAvatar_Speed(PlayerAvatar *playerAvatar);
5471
void PlayerAvatar_SetSpeed(PlayerAvatar *playerAvatar, int param1);
5572
void PlayerAvatar_ClearSpeed(PlayerAvatar *playerAvatar);
5673
int PlayerAvatar_AddMoveSpeed(PlayerAvatar *playerAvatar, int param1, int param2);
57-
void sub_0205EBDC(PlayerAvatar *playerAvatar, int param1);
58-
int sub_0205EBE0(PlayerAvatar *playerAvatar);
59-
void sub_0205EBE4(PlayerAvatar *playerAvatar, int param1);
60-
int sub_0205EBE8(PlayerAvatar *playerAvatar);
61-
void sub_0205EBEC(PlayerAvatar *playerAvatar, int param1, int param2);
74+
void PlayerAvatar_SetFaceLeftOrRight(PlayerAvatar *playerAvatar, enum FaceDirection leftOrRight);
75+
enum FaceDirection PlayerAvatar_GetFaceLeftOrRight(PlayerAvatar *playerAvatar);
76+
void PlayerAvatar_SetFaceUpOrDown(PlayerAvatar *playerAvatar, enum FaceDirection faceUpOrDown);
77+
enum FaceDirection PlayerAvatar_GetFaceUpOrDown(PlayerAvatar *playerAvatar);
78+
void PlayerAvater_SetFaceDirection(PlayerAvatar *playerAvatar, enum FaceDirection faceLeftOrRight, enum FaceDirection faceUpOrDown);
6279
void sub_0205EC00(PlayerAvatar *playerAvatar, UnkStruct_ov101_021D5D90 *param1);
6380
UnkStruct_ov101_021D5D90 *sub_0205EC04(PlayerAvatar *playerAvatar);
6481
PlayerData *PlayerAvatar_PlayerData(PlayerAvatar *playerAvatar);
@@ -81,23 +98,23 @@ void PlayerAvatar_SetHeightCalculationEnabled(PlayerAvatar *playerAvatar, BOOL h
8198
void PlayerAvatar_SetHeightCalculationEnabledAndUpdate(PlayerAvatar *playerAvatar, BOOL heightCalculationEnabled);
8299
int Player_MoveStateFromGender(int param0, int param1);
83100
u32 Player_ConvertStateToTransition(int param0);
84-
PlayerAvatar *sub_0205EF3C(FieldSystem *fieldSystem);
101+
PlayerAvatar *FieldSystem_GetPlayerAvatar(FieldSystem *fieldSystem);
85102
void sub_0205EF40(PlayerAvatar *playerAvatar, int param1);
86-
int sub_0205EF58(PlayerAvatar *playerAvatar);
103+
BOOL sub_0205EF58(PlayerAvatar *playerAvatar);
87104
void sub_0205EF6C(PlayerAvatar *playerAvatar, int param1);
88-
int sub_0205EF84(PlayerAvatar *playerAvatar);
105+
BOOL sub_0205EF84(PlayerAvatar *playerAvatar);
89106
void sub_0205EF98(PlayerAvatar *playerAvatar, int param1);
90-
int sub_0205EFB0(PlayerAvatar *playerAvatar);
107+
BOOL sub_0205EFB0(PlayerAvatar *playerAvatar);
91108
void sub_0205EFC4(PlayerAvatar *playerAvatar, int param1);
92-
int sub_0205EFDC(PlayerAvatar *playerAvatar);
93-
void PlayerAvatar_SetInDeepSwamp(PlayerAvatar *playerAvatar, int param1);
94-
int PlayerAvatar_IsNotInDeepSwamp(PlayerAvatar *playerAvatar);
95-
void sub_0205F01C(PlayerAvatar *playerAvatar, int param1);
96-
int sub_0205F034(PlayerAvatar *playerAvatar);
109+
BOOL sub_0205EFDC(PlayerAvatar *playerAvatar);
110+
void PlayerAvatar_SetEscapedFromDeepMud(PlayerAvatar *playerAvatar, BOOL flag);
111+
BOOL PlayerAvatar_CheckEscapedFromDeepMud(PlayerAvatar *playerAvatar);
112+
void sub_0205F01C(PlayerAvatar *playerAvatar, BOOL param1);
113+
BOOL sub_0205F034(PlayerAvatar *playerAvatar);
97114
void sub_0205F048(PlayerAvatar *playerAvatar);
98115
void sub_0205F054(PlayerAvatar *playerAvatar);
99-
int sub_0205F060(PlayerAvatar *playerAvatar);
100-
void sub_0205F074(PlayerAvatar *playerAvatar, int param1);
116+
BOOL sub_0205F060(PlayerAvatar *playerAvatar);
117+
void sub_0205F074(PlayerAvatar *playerAvatar, BOOL param1);
101118
int sub_0205F08C(PlayerAvatar *playerAvatar);
102119
void PlayerAvatar_SetDistortionState(PlayerAvatar *playerAvatar, enum AvatarDistortionState state);
103120
enum AvatarDistortionState PlayerAvatar_MapDistortionState(PlayerAvatar *const playerAvatar);

include/unk_0205F180.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
#include "overlay005/land_data_manager_decl.h"
88

9+
#include "location.h"
10+
911
void PlayerAvatar_MoveControl(PlayerAvatar *playerAvatar, const LandDataManager *param1, int param2, u16 param3, u16 param4, BOOL param5);
1012
int PlayerAvatar_CheckStartMove(PlayerAvatar *playerAvatar, int param1);
1113
void sub_0205F490(PlayerAvatar *playerAvatar);
@@ -14,8 +16,8 @@ int sub_0205F588(PlayerAvatar *playerAvatar);
1416
void sub_0205F5E4(PlayerAvatar *playerAvatar, int param1);
1517
u32 sub_02060B7C(PlayerAvatar *playerAvatar, MapObject *param1, int param2);
1618
u32 sub_020611FC(PlayerAvatar *playerAvatar, MapObject *param1, int param2);
17-
int sub_02061308(PlayerAvatar *playerAvatar, u16 param1, u16 param2);
18-
int sub_020613AC(PlayerAvatar *playerAvatar);
19+
enum FaceDirection PlayerAvatar_CalcFaceDirection(PlayerAvatar *playerAvatar, u16 pressedKeys, u16 heldKeys);
20+
BOOL PlayerAvatar_IsAnimationSetOrWalkOnSpotSlow(PlayerAvatar *playerAvatar);
1921
int sub_020613FC(PlayerAvatar *playerAvatar, u16 param1);
2022
int sub_0206140C(PlayerAvatar *playerAvatar);
2123
int sub_02061434(PlayerAvatar *playerAvatar, int param1);

src/comm_player_manager.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1085,7 +1085,7 @@ static void CommPlayer_MoveClient(int netId)
10851085
}
10861086

10871087
if (sub_02061544(playerAvatar) == 0) {
1088-
if (sub_020613AC(playerAvatar) == 0) {
1088+
if (PlayerAvatar_IsAnimationSetOrWalkOnSpotSlow(playerAvatar) == 0) {
10891089
return;
10901090
}
10911091
}

src/game_records.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ static u8 sUsesHighLimit[MAX_RECORDS] = {
143143
[RECORD_UNK_053] = FALSE,
144144
[RECORD_UNK_054] = FALSE,
145145
[RECORD_UNK_055] = FALSE,
146-
[RECORD_UNK_056] = FALSE,
146+
[RECORD_TIMES_STUCK_IN_DEEP_MUD] = FALSE,
147147
[RECORD_UNK_057] = TRUE,
148148
[RECORD_UNK_058] = TRUE,
149149
[RECORD_UNK_059] = TRUE,

src/map_object.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ typedef struct MapObject {
7777
int y;
7878
int z;
7979
VecFx32 pos;
80-
VecFx32 unk_7C;
80+
VecFx32 spriteJumpOffset;
8181
VecFx32 unk_88;
82-
VecFx32 unk_94;
82+
VecFx32 spriteTerrainOffset;
8383
u32 unk_A0;
8484
enum MovementAction movementAction;
8585
int movementStep;
@@ -1896,18 +1896,18 @@ int sub_02062EC8(const MapObject *mapObj)
18961896
return FALSE;
18971897
}
18981898

1899-
void sub_02062EE0(MapObject *mapObj, int param1)
1899+
void MapObject_SetFlagDoNotSinkIntoTerrain(MapObject *mapObj, BOOL flag)
19001900
{
1901-
if (param1 == TRUE) {
1902-
MapObject_SetStatusFlagOn(mapObj, MAP_OBJ_STATUS_27);
1901+
if (flag == TRUE) {
1902+
MapObject_SetStatusFlagOn(mapObj, MAP_OBJ_DO_NOT_SINK_INTO_TERRAIN);
19031903
} else {
1904-
MapObject_SetStatusFlagOff(mapObj, MAP_OBJ_STATUS_27);
1904+
MapObject_SetStatusFlagOff(mapObj, MAP_OBJ_DO_NOT_SINK_INTO_TERRAIN);
19051905
}
19061906
}
19071907

1908-
int sub_02062EFC(const MapObject *mapObj)
1908+
int MapObject_CheckFlagDoNotSinkIntoTerrain(const MapObject *mapObj)
19091909
{
1910-
if (MapObject_CheckStatus(mapObj, MAP_OBJ_STATUS_27)) {
1910+
if (MapObject_CheckStatus(mapObj, MAP_OBJ_DO_NOT_SINK_INTO_TERRAIN)) {
19111911
return TRUE;
19121912
}
19131913

@@ -2120,19 +2120,19 @@ fx32 MapObject_GetPosY(const MapObject *mapObj)
21202120
return mapObj->pos.y;
21212121
}
21222122

2123-
void sub_02063078(const MapObject *mapObj, VecFx32 *vec)
2123+
void MapObject_GetSpriteJumpOffset(const MapObject *mapObj, VecFx32 *vec)
21242124
{
2125-
*vec = mapObj->unk_7C;
2125+
*vec = mapObj->spriteJumpOffset;
21262126
}
21272127

2128-
void sub_02063088(MapObject *mapObj, const VecFx32 *vec)
2128+
void MapObject_SetSpriteJumpOffset(MapObject *mapObj, const VecFx32 *vec)
21292129
{
2130-
mapObj->unk_7C = *vec;
2130+
mapObj->spriteJumpOffset = *vec;
21312131
}
21322132

2133-
VecFx32 *sub_02063098(MapObject *mapObj)
2133+
VecFx32 *MapObject_GetSpriteJumpOffset1(MapObject *mapObj)
21342134
{
2135-
return &mapObj->unk_7C;
2135+
return &mapObj->spriteJumpOffset;
21362136
}
21372137

21382138
void sub_0206309C(const MapObject *mapObj, VecFx32 *vec)
@@ -2145,14 +2145,14 @@ void sub_020630AC(MapObject *mapObj, const VecFx32 *vec)
21452145
mapObj->unk_88 = *vec;
21462146
}
21472147

2148-
void sub_020630BC(const MapObject *mapObj, VecFx32 *vec)
2148+
void MapObject_GetSpriteTerrainOffset(const MapObject *mapObj, VecFx32 *spriteOffset)
21492149
{
2150-
*vec = mapObj->unk_94;
2150+
*spriteOffset = mapObj->spriteTerrainOffset;
21512151
}
21522152

2153-
void sub_020630CC(MapObject *mapObj, const VecFx32 *vec)
2153+
void MapObject_SetSpriteTerrainOffset(MapObject *mapObj, const VecFx32 *spriteOffset)
21542154
{
2155-
mapObj->unk_94 = *vec;
2155+
mapObj->spriteTerrainOffset = *spriteOffset;
21562156
}
21572157

21582158
int sub_020630DC(const MapObject *mapObj)

0 commit comments

Comments
 (0)