diff --git a/asm/macros/scrcmd.inc b/asm/macros/scrcmd.inc index 13118a03aa..37a7e41690 100644 --- a/asm/macros/scrcmd.inc +++ b/asm/macros/scrcmd.inc @@ -4537,7 +4537,7 @@ .short \arg1 .endm - .macro ScrCmd_31F + .macro ResetDistortionWorldPersistedCameraAngles .short 799 .endm diff --git a/generated/map_headers.txt b/generated/map_headers.txt index 622cd69017..864e99046e 100644 --- a/generated/map_headers.txt +++ b/generated/map_headers.txt @@ -591,4 +591,5 @@ MAP_HEADER_MT_CORONET_ICEBERG_RUINS MAP_HEADER_ICEBERG_RUINS MAP_HEADER_ROUTE_228_ROCK_PEAK_RUINS MAP_HEADER_ROCK_PEAK_RUINS +MAP_HEADER_COUNT MAP_HEADER_DYNAMIC = 4095 diff --git a/include/constants/types.h b/include/constants/types.h new file mode 100644 index 0000000000..cb652f7f27 --- /dev/null +++ b/include/constants/types.h @@ -0,0 +1,10 @@ +#ifndef POKEPLATINUM_CONSTANTS_TYPES_H +#define POKEPLATINUM_CONSTANTS_TYPES_H + +#define S16_INT_MASK 0x7FFF +#define S16_SIGN_MASK 0x8000 + +#define S32_INT_MASK 0x7FFFFFFF +#define S32_SIGN_MASK 0x80000000 + +#endif // POKEPLATINUM_CONSTANTS_TYPES_H diff --git a/include/overlay009/camera_configuration.h b/include/overlay009/camera_configuration.h new file mode 100644 index 0000000000..cb1cd84511 --- /dev/null +++ b/include/overlay009/camera_configuration.h @@ -0,0 +1,14 @@ +#ifndef POKEPLATINUM_STRUCT_CAMERA_CONFIGURATION_H +#define POKEPLATINUM_STRUCT_CAMERA_CONFIGURATION_H + +#include "camera.h" + +typedef struct { + fx32 distance; + CameraAngle cameraAngle; + u8 projectionMtx; + u16 fovY; + u8 padding_0F; +} CameraConfiguration; + +#endif // POKEPLATINUM_STRUCT_CAMERA_CONFIGURATION_H diff --git a/include/overlay009/ov9_02249960.h b/include/overlay009/ov9_02249960.h index 1c9f0ac09c..ec21f2b7f7 100644 --- a/include/overlay009/ov9_02249960.h +++ b/include/overlay009/ov9_02249960.h @@ -9,11 +9,24 @@ #include "field_task.h" -void DistortionWorld_DynamicMapFeaturesInit(FieldSystem *fieldSystem); -void DistortionWorld_DynamicMapFeaturesFree(FieldSystem *fieldSystem); -BOOL DistortionWorld_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding); -void ov9_02249F9C(FieldSystem *fieldSystem); -void ov9_02249FD0(FieldSystem *fieldSystem); +typedef struct DistWorldPersistedData { + u32 valid : 1; + u32 unk_00_1 : 24; + u32 unk_00_25 : 4; + u32 padding : 3; + u16 cameraAngleX; + u16 cameraAngleY; + u16 cameraAngleZ; + u16 unk_0A; + u32 unk_0C; + u8 reserved_10[16]; +} DistWorldPersistedData; + +void DistWorld_DynamicMapFeaturesInit(FieldSystem *fieldSystem); +void DistWorld_DynamicMapFeaturesFree(FieldSystem *fieldSystem); +BOOL DistWorld_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding); +void DistWorld_UpdateCameraAngle(FieldSystem *fieldSystem); +void DistWorld_ResetPersistedCameraAngles(FieldSystem *fieldSystem); int ov9_0224A520(FieldSystem *fieldSystem, MapObject *param1); void ov9_0224A558(FieldSystem *fieldSystem, UnkStruct_020216E0 *param1, int param2); void ov9_0224A564(FieldSystem *fieldSystem, const UnkStruct_020216E0 *param1); diff --git a/include/overlay009/struct_ov9_02249FF4.h b/include/overlay009/struct_ov9_02249FF4.h deleted file mode 100644 index eff2f62c24..0000000000 --- a/include/overlay009/struct_ov9_02249FF4.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_OV9_02249FF4_H -#define POKEPLATINUM_STRUCT_OV9_02249FF4_H - -#include "camera.h" - -typedef struct { - fx32 unk_00; - CameraAngle cameraAngle; - u8 unk_0C; - u16 unk_0E; - u8 padding_0F; -} UnkStruct_ov9_02249FF4; - -#endif // POKEPLATINUM_STRUCT_OV9_02249FF4_H diff --git a/include/struct_defs/struct_02071C5C.h b/include/struct_defs/struct_02071C5C.h deleted file mode 100644 index 2fffefbb1c..0000000000 --- a/include/struct_defs/struct_02071C5C.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef POKEPLATINUM_STRUCT_02071C5C_H -#define POKEPLATINUM_STRUCT_02071C5C_H - -typedef struct { - u32 unk_00_0 : 1; - u32 unk_00_1 : 24; - u32 unk_00_25 : 4; - u32 : 3; - u16 unk_04; - u16 unk_06; - u16 unk_08; - u16 unk_0A; - u32 unk_0C; - u8 reserved_10[16]; -} UnkStruct_02071C5C; - -#endif // POKEPLATINUM_STRUCT_02071C5C_H diff --git a/res/field/scripts/scripts_distortion_world_giratina_room.s b/res/field/scripts/scripts_distortion_world_giratina_room.s index 40b7196187..03fbfc95d0 100644 --- a/res/field/scripts/scripts_distortion_world_giratina_room.s +++ b/res/field/scripts/scripts_distortion_world_giratina_room.s @@ -23,7 +23,7 @@ _0026: End _0033: - ScrCmd_31F + ResetDistortionWorldPersistedCameraAngles SetVar VAR_DISTORTION_WORLD_PROGRESS, 14 RemoveObject 128 End diff --git a/src/dynamic_map_features.c b/src/dynamic_map_features.c index cd31b9dad6..4d88d60154 100644 --- a/src/dynamic_map_features.c +++ b/src/dynamic_map_features.c @@ -27,7 +27,7 @@ const static DynamicMapFeaturesInitFunc sInitFuncs[DYNAMIC_MAP_FEATURES_COUNT] = GreatMarsh_DynamicMapFeaturesInit, PlatformLift_DynamicMapFeaturesInit, EternaGym_DynamicMapFeaturesInit, - DistortionWorld_DynamicMapFeaturesInit, + DistWorld_DynamicMapFeaturesInit, Villa_DynamicMapFeaturesInit }; @@ -41,7 +41,7 @@ const static DynamicMapFeaturesFreeFunc sFreeFuncs[DYNAMIC_MAP_FEATURES_COUNT] = NULL, NULL, EternaGym_DynamicMapFeaturesFree, - DistortionWorld_DynamicMapFeaturesFree, + DistWorld_DynamicMapFeaturesFree, Villa_DynamicMapFeaturesFree }; @@ -55,7 +55,7 @@ const static DynamicMapFeaturesCheckCollisionFunc sCheckCollisionFuncs[DYNAMIC_M NULL, NULL, EternaGym_DynamicMapFeaturesCheckCollision, - DistortionWorld_DynamicMapFeaturesCheckCollision, + DistWorld_DynamicMapFeaturesCheckCollision, Villa_DynamicMapFeaturesCheckCollision }; diff --git a/src/overlay005/fieldmap.c b/src/overlay005/fieldmap.c index 81bd6ea01f..07e5cdf8c9 100644 --- a/src/overlay005/fieldmap.c +++ b/src/overlay005/fieldmap.c @@ -694,7 +694,7 @@ static void ov5_021D15F4(FieldSystem *fieldSystem) if (fieldSystem->unk_20 == 1) { if (FieldMap_InDistortionWorld(fieldSystem) == TRUE) { - ov9_02249F9C(fieldSystem); + DistWorld_UpdateCameraAngle(fieldSystem); } Camera_ComputeViewMatrixWithRoll(); diff --git a/src/overlay009/ov9_02249960.c b/src/overlay009/ov9_02249960.c index 6ed9411835..c3f22c1519 100644 --- a/src/overlay009/ov9_02249960.c +++ b/src/overlay009/ov9_02249960.c @@ -5,13 +5,14 @@ #include "constants/field/dynamic_map_features.h" #include "constants/species.h" +#include "constants/types.h" +#include "generated/map_headers.h" #include "generated/movement_actions.h" #include "struct_decls/struct_020216E0_decl.h" #include "struct_decls/struct_0205E884_decl.h" #include "struct_decls/struct_02061830_decl.h" #include "struct_decls/struct_02061AB4_decl.h" -#include "struct_defs/struct_02071C5C.h" #include "struct_defs/struct_02073838.h" #include "struct_defs/struct_02073974.h" #include "struct_defs/struct_02073B50.h" @@ -33,7 +34,7 @@ #include "overlay005/struct_ov5_021DF47C_decl.h" #include "overlay005/struct_ov5_021ED0A4.h" #include "overlay005/struct_ov5_02201C58.h" -#include "overlay009/struct_ov9_02249FF4.h" +#include "overlay009/camera_configuration.h" #include "overlay009/struct_ov9_0224F6EC_decl.h" #include "overlay101/struct_ov101_021D5D90_decl.h" #include "overlay101/struct_ov101_021D86B0.h" @@ -74,16 +75,32 @@ #include "vars_flags.h" #include "vram_transfer.h" -typedef struct UnkStruct_ov9_02249B04_t UnkStruct_ov9_02249B04; +#define DISTORTION_WORLD_CAMERA_BASE_ANGLE_X -10750 +#define DISTORTION_WORLD_CAMERA_BASE_ANGLE_Y 0 +#define DISTORTION_WORLD_CAMERA_BASE_ANGLE_Z 0 +#define DISTORTION_WORLD_CAMERA_BASE_DISTANCE 0x29AEC1 +#define DISTORTION_WORLD_CAMERA_BASE_PROJECTION_MTX 0 +#define DISTORTION_WORLD_CAMERA_BASE_FOVY 1473 +#define DISTORTION_WORLD_NON_GIRATINA_ROOM_FOV_ADJUST (0x681 - 0x5c1) +#define DISTORTION_WORLD_CAMERA_BASE_NEAR_CLIP (FX32_ONE * 150) +#define DISTORTION_WORLD_CAMERA_BASE_FAR_CLIP (FX32_ONE * 1700) +#define DISTORTION_WORLD_CAMERA_PERSISTED_ANGLES_FACTOR 0x100 + +#define GIRATINA_ROOM_TELEPORT_TILE_X 15 +#define GIRATINA_ROOM_TELEPORT_TILE_Z 25 +#define B7F_TELEPORT_TILE_X 89 +#define B7F_TELEPORT_TILE_Z 57 + +typedef struct DistWorldSystem DistWorldSystem; typedef struct { - s16 unk_00; - s16 unk_02; - s16 unk_04; - s16 unk_06; - s16 unk_08; - s16 unk_0A; -} UnkStruct_ov9_02250E6C; + s16 startTileX; + s16 startTileY; + s16 startTileZ; + s16 sizeX; + s16 sizeY; + s16 sizeZ; +} DistWorldBounds; typedef struct { u8 unk_00; @@ -136,7 +153,7 @@ typedef struct { } UnkStruct_ov9_02253680; typedef struct { - UnkStruct_ov9_02249B04 *unk_00; + DistWorldSystem *unk_00; UnkStruct_ov9_02253680 unk_04; UnkStruct_ov9_0224B064 *unk_34; } UnkStruct_ov9_0224B1B4; @@ -149,7 +166,7 @@ typedef struct { } UnkStruct_ov9_0224B2C0; typedef struct { - u32 unk_00; + u32 mapHeaderID; u16 unk_04; s16 unk_06; s16 unk_08; @@ -165,7 +182,7 @@ typedef struct { typedef struct { s16 unk_00; u16 unk_02; - UnkStruct_ov9_02250E6C unk_04; + DistWorldBounds unk_04; u16 unk_10; u16 unk_12; } UnkStruct_ov9_0224C324; @@ -174,7 +191,7 @@ typedef struct { u16 unk_00; s16 unk_02; int unk_04; - UnkStruct_ov9_02250E6C unk_08; + DistWorldBounds unk_08; s16 unk_14; s16 unk_16; s16 unk_18; @@ -188,13 +205,13 @@ typedef struct { } UnkStruct_ov9_0224AA00; typedef struct { - UnkStruct_ov9_02250E6C unk_00; - u16 unk_0C; - u16 unk_0E; - u16 unk_10; - s16 unk_12; - s32 unk_14; -} UnkStruct_ov9_0224A8A0; + DistWorldBounds bounds; + u16 angleX; + u16 angleY; + u16 angleZ; + s16 playerDirection; + s32 transitionSteps; +} DistWorldCameraAngleTemplate; typedef struct { int unk_00; @@ -214,7 +231,7 @@ typedef struct { u32 unk_00; s16 unk_04; s16 unk_06; - UnkStruct_ov9_02250E6C unk_08; + DistWorldBounds unk_08; } UnkStruct_ov9_0224B748; typedef struct { @@ -231,9 +248,9 @@ typedef struct { } UnkStruct_ov9_0224C640; typedef struct { - int unk_00; - UnkStruct_ov9_0224A8A0 *unk_04; -} UnkStruct_ov9_0224C6E4; + int count; + DistWorldCameraAngleTemplate *templates; +} DistWorldCameraAngleTemplates; typedef struct { const UnkStruct_ov9_0224B3F8 *unk_00; @@ -245,46 +262,51 @@ typedef struct { int unk_00; int unk_04; int unk_08; - int unk_0C; + int cameraAngleSectionSize; int unk_10; -} UnkStruct_ov9_0224C088; +} DistWorldFileHeader; typedef struct { - u32 unk_00; + int count; + DistWorldCameraAngleTemplate *templates; +} DistWorldFileCameraAngleSection; + +typedef struct { + u32 mapHeaderID; void *unk_04; void *unk_08; - void *unk_0C; + DistWorldFileCameraAngleSection *cameraAngleSection; void *unk_10; - void *unk_14; - void *unk_18; -} UnkStruct_ov9_0224C14C; + void *header; + void *buffer; +} DistWorldFile; typedef struct { UnkStruct_ov9_0224BFE0 unk_00; - UnkStruct_ov9_0224C14C unk_0C; + DistWorldFile distortionWorldFile; UnkStruct_ov9_0224C2C4 unk_28; UnkStruct_ov9_0224C640 unk_3C; - UnkStruct_ov9_0224C6E4 unk_44; + DistWorldCameraAngleTemplates cameraAngleTemplates; UnkStruct_ov9_0224C788 unk_4C; - UnkStruct_ov9_0224C14C unk_58; + DistWorldFile unk_58; UnkStruct_ov9_0224C788 unk_74; } UnkStruct_ov9_02249B04_sub1; typedef struct { - int unk_00; - int unk_04; - VecFx32 unk_08; - VecFx32 unk_14; -} UnkStruct_ov9_0224A0DC; + BOOL isActive; + int stepsRemaining; + VecFx32 currentAngle; + VecFx32 angleStep; +} DistWorldCameraTransition; typedef struct { Camera *camera; - CameraAngle unk_04; - CameraAngle unk_0C; - CameraAngle unk_14; - UnkStruct_ov9_0224A0DC unk_1C; - SysTask *unk_3C; -} UnkStruct_ov9_02249F9C; + CameraAngle baseAngle; + CameraAngle currentAngle; + CameraAngle targetAngle; + DistWorldCameraTransition transition; + SysTask *transitionTask; +} DistWorldCameraManager; typedef struct { int unk_00; @@ -358,7 +380,7 @@ typedef struct { u16 unk_04; u16 unk_06; UnkStruct_ov9_0224B6CC unk_08; - UnkStruct_ov9_02249B04 *unk_14; + DistWorldSystem *unk_14; } UnkStruct_ov9_0224B708; typedef struct { @@ -383,7 +405,7 @@ typedef struct { s16 unk_04; u16 unk_06; u32 unk_08; - UnkStruct_ov9_02249B04 *unk_0C; + DistWorldSystem *unk_0C; } UnkStruct_ov9_0224DFA0; typedef struct { @@ -476,7 +498,7 @@ typedef struct { } UnkStruct_ov9_0224EB68; typedef struct { - UnkStruct_ov9_02249B04 *unk_00; + DistWorldSystem *unk_00; const UnkStruct_ov9_0224EBB8 *unk_04; } UnkStruct_ov9_0224EBCC; @@ -525,7 +547,7 @@ typedef struct { u8 unk_0C[160]; } UnkFuncPtr_ov9_0224E33C; -typedef int (*UnkFuncPtr_ov9_02253BE4)(UnkStruct_ov9_02249B04 *, FieldTask *, u16 *, const void *); +typedef int (*UnkFuncPtr_ov9_02253BE4)(DistWorldSystem *, FieldTask *, u16 *, const void *); typedef struct { s16 unk_00; @@ -583,13 +605,13 @@ typedef struct { SysTask *unk_2C; } UnkStruct_ov9_0224CBD8; -struct UnkStruct_ov9_02249B04_t { +struct DistWorldSystem { FieldSystem *fieldSystem; - UnkStruct_02071C5C *unk_04; - NARC *unk_08; + DistWorldPersistedData *persistedData; + NARC *distortionWorldNARC; NARC *unk_0C; NARC *unk_10; - UnkStruct_ov9_02249F9C unk_14; + DistWorldCameraManager cameraMan; UnkStruct_ov9_0224A570 unk_54; UnkFuncPtr_ov9_0224E33C unk_D8; UnkStruct_ov9_02249E94 unk_184; @@ -690,7 +712,7 @@ typedef struct { } UnkStruct_ov9_0224E870; typedef struct { - UnkStruct_ov9_02249B04 *unk_00; + DistWorldSystem *unk_00; UnkStruct_ov9_0224D928 *unk_04; UnkStruct_ov9_02252414 unk_08; } UnkStruct_ov9_0224E91C; @@ -721,7 +743,7 @@ typedef struct { } UnkStruct_ov9_0225311C; struct UnkStruct_ov9_0224F6EC_t { - UnkStruct_ov9_02249B04 *unk_00; + DistWorldSystem *unk_00; FieldSystem *fieldSystem; FieldTask *unk_08; MapObject *unk_0C; @@ -863,276 +885,276 @@ typedef struct { s16 unk_02; } UnkStruct_ov9_02250DE8; -static void ov9_02249B04(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249B68(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249C88(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249CAC(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249CC4(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249D18(UnkStruct_ov9_02249B04 *param0, u16 param1, u16 param2, u16 param3); -static void ov9_02249D24(UnkStruct_ov9_02249B04 *param0, u16 *param1, u16 *param2, u16 *param3); -static BOOL ov9_02249D38(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249D44(UnkStruct_ov9_02249B04 *param0, u32 param1); -static u32 ov9_02249D5C(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249D68(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_02249D70(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_02249D8C(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_02249DA8(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_02249DC8(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_02249DE4(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_02249E00(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_02249E20(UnkStruct_ov9_02249B04 *param0, u32 param1); -static u32 ov9_02249E44(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249E94(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249EC8(UnkStruct_ov9_02249B04 *param0); +static void ov9_02249B04(DistWorldSystem *param0); +static void ov9_02249B68(DistWorldSystem *param0); +static void OpenArchives(DistWorldSystem *system); +static void CloseArchives(DistWorldSystem *system); +static void ov9_02249CC4(DistWorldSystem *param0); +static void SetPersistedCameraAngles(DistWorldSystem *system, u16 angleX, u16 angleY, u16 angleZ); +static void GetPersistedCameraAngles(DistWorldSystem *system, u16 *angleX, u16 *angleY, u16 *angleZ); +static BOOL IsPersistedDataValid(DistWorldSystem *system); +static void ov9_02249D44(DistWorldSystem *param0, u32 param1); +static u32 ov9_02249D5C(DistWorldSystem *param0); +static void ov9_02249D68(DistWorldSystem *param0, u32 param1); +static void ov9_02249D70(DistWorldSystem *param0, u32 param1); +static void ov9_02249D8C(DistWorldSystem *param0, u32 param1); +static BOOL ov9_02249DA8(DistWorldSystem *param0, u32 param1); +static void ov9_02249DC8(DistWorldSystem *param0, u32 param1); +static void ov9_02249DE4(DistWorldSystem *param0, u32 param1); +static BOOL ov9_02249E00(DistWorldSystem *param0, u32 param1); +static void ov9_02249E20(DistWorldSystem *param0, u32 param1); +static u32 ov9_02249E44(DistWorldSystem *param0); +static void ov9_02249E94(DistWorldSystem *param0); +static void ov9_02249EC8(DistWorldSystem *param0); static void ov9_02249EDC(SysTask *param0, void *param1); -static void ov9_02249EF0(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249F18(UnkStruct_ov9_02249B04 *param0); +static void ov9_02249EF0(DistWorldSystem *param0); +static void ov9_02249F18(DistWorldSystem *param0); static void ov9_02249F3C(SysTask *param0, void *param1); -static void ov9_02249F50(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249F84(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249F88(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249F98(UnkStruct_ov9_02249B04 *param0); -static void ov9_02249FF4(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224A0C8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224A0DC(SysTask *param0, void *param1); -static BOOL ov9_0224A148(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224A8A0 *param1); -static void ov9_0224A1E4(UnkStruct_ov9_02249B04 *param0, int param1); +static void ov9_02249F50(DistWorldSystem *param0); +static void ov9_02249F84(DistWorldSystem *param0); +static void ov9_02249F88(DistWorldSystem *param0); +static void ov9_02249F98(DistWorldSystem *param0); +static void CameraInit(DistWorldSystem *system); +static void CameraFree(DistWorldSystem *system); +static void CameraTransitionTask(SysTask *sysTask, void *sysTaskParam); +static BOOL DoCameraTransition(DistWorldSystem *system, const DistWorldCameraAngleTemplate *cameraAngleTemplate); +static void ov9_0224A1E4(DistWorldSystem *param0, int param1); static void ov9_0224A228(UnkStruct_ov9_0224A228 *param0, UnkStruct_ov9_0224A294 *param1, UnkStruct_020216E0 *param2); static void ov9_0224A294(UnkStruct_ov9_0224A228 *param0, UnkStruct_ov9_0224A294 *param1); static void ov9_0224A2AC(UnkStruct_ov9_0224A228 *param0, UnkStruct_ov9_0224A294 *param1); -static void ov9_0224A334(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224A390(UnkStruct_ov9_02249B04 *param0, MapObject *param1, int param2); -static void ov9_0224A3C4(UnkStruct_ov9_02249B04 *param0, UnkStruct_020216E0 *param1, int param2); -static void ov9_0224A408(UnkStruct_ov9_02249B04 *param0, const UnkStruct_020216E0 *param1); -static void ov9_0224A49C(UnkStruct_ov9_02249B04 *param0); +static void ov9_0224A334(DistWorldSystem *param0); +static void ov9_0224A390(DistWorldSystem *param0, MapObject *param1, int param2); +static void ov9_0224A3C4(DistWorldSystem *param0, UnkStruct_020216E0 *param1, int param2); +static void ov9_0224A408(DistWorldSystem *param0, const UnkStruct_020216E0 *param1); +static void ov9_0224A49C(DistWorldSystem *param0); static void ov9_0224A4C8(UnkStruct_020216E0 *param0, void *param1); -static void ov9_0224A4D0(UnkStruct_ov9_02249B04 *param0, MapObject *param1, int param2, int param3); -static void ov9_0224A570(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224A574(UnkStruct_ov9_02249B04 *param0); -static void *ov9_0224A578(UnkStruct_ov9_02249B04 *param0, int param1); -static void *ov9_0224A598(UnkStruct_ov9_02249B04 *param0); -static BOOL ov9_0224A8A0(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4); -static void ov9_0224A8C0(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224A9E8(UnkStruct_ov9_02249B04 *param0); -static BOOL ov9_0224AA00(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4); -static void ov9_0224AA34(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224AA00 *param1); +static void ov9_0224A4D0(DistWorldSystem *param0, MapObject *param1, int param2, int param3); +static void ov9_0224A570(DistWorldSystem *param0); +static void ov9_0224A574(DistWorldSystem *param0); +static void *ov9_0224A578(DistWorldSystem *param0, int param1); +static void *ov9_0224A598(DistWorldSystem *param0); +static BOOL ApplyCameraAngleForPlayerPosition(DistWorldSystem *system, int playerX, int playerY, int playerZ, int playerDir); +static void ov9_0224A8C0(DistWorldSystem *param0); +static void ov9_0224A9E8(DistWorldSystem *param0); +static BOOL ov9_0224AA00(DistWorldSystem *param0, int param1, int param2, int param3, int param4); +static void ov9_0224AA34(DistWorldSystem *param0, const UnkStruct_ov9_0224AA00 *param1); static BOOL ov9_0224AAD4(FieldTask *param0); static BOOL ov9_0224AC58(UnkStruct_ov9_0224AC58 *param0, MapObject *param1); -static void ov9_0224ADC0(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224AED8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224AEE4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B064 *param1, NARC *param2); +static void ov9_0224ADC0(DistWorldSystem *param0); +static void ov9_0224AED8(DistWorldSystem *param0); +static void ov9_0224AEE4(DistWorldSystem *param0, UnkStruct_ov9_0224B064 *param1, NARC *param2); static void ov9_0224B064(UnkStruct_ov9_0224B064 *param0); static void ov9_0224B124(SysTask *param0, void *param1); static Sprite *ov9_0224B130(UnkStruct_ov9_0224B064 *param0, const VecFx32 *param1, u32 param2, u32 param3, u32 param4, u32 param5, int param6, int param7); -static void ov9_0224B1B4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov5_021DF47C *param1, UnkStruct_ov9_0224B064 *param2); -static void ov9_0224B3A8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B3F4(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B3F8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B3F8 *param2, const UnkStruct_ov9_0224B6CC *param3, int param4, u32 param5); -static void ov9_0224B45C(UnkStruct_ov9_02249B04 *param0, int param1); -static void ov9_0224B4CC(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B514(UnkStruct_ov9_02249B04 *param0); +static void ov9_0224B1B4(DistWorldSystem *param0, UnkStruct_ov5_021DF47C *param1, UnkStruct_ov9_0224B064 *param2); +static void ov9_0224B3A8(DistWorldSystem *param0); +static void ov9_0224B3F4(DistWorldSystem *param0); +static void ov9_0224B3F8(DistWorldSystem *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B3F8 *param2, const UnkStruct_ov9_0224B6CC *param3, int param4, u32 param5); +static void ov9_0224B45C(DistWorldSystem *param0, int param1); +static void ov9_0224B4CC(DistWorldSystem *param0); +static void ov9_0224B514(DistWorldSystem *param0); static void ov9_0224B528(UnkStruct_ov9_0224B528 *param0); -static void ov9_0224B560(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B624(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224B64C(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224B674(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224B698(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224B6BC(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B6CC(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B6CC *param2, int param3); -static UnkStruct_ov101_021D5D90 *ov9_0224B708(UnkStruct_ov9_02249B04 *param0, int param1, int param2, const UnkStruct_ov9_0224B6CC *param3); -static void ov9_0224B748(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4); -static BOOL ov9_0224B7B0(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224B844(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224B8DC(UnkStruct_ov9_02249B04 *param0, int param1); -static void ov9_0224B570(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B580(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B590(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B5A0(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B5B0(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224B5EC(UnkStruct_ov9_02249B04 *param0); +static void ov9_0224B560(DistWorldSystem *param0); +static void ov9_0224B624(DistWorldSystem *param0, u32 param1); +static void ov9_0224B64C(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224B674(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224B698(DistWorldSystem *param0, u32 param1); +static void ov9_0224B6BC(DistWorldSystem *param0); +static void ov9_0224B6CC(DistWorldSystem *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B6CC *param2, int param3); +static UnkStruct_ov101_021D5D90 *ov9_0224B708(DistWorldSystem *param0, int param1, int param2, const UnkStruct_ov9_0224B6CC *param3); +static void ov9_0224B748(DistWorldSystem *param0, int param1, int param2, int param3, int param4); +static BOOL ov9_0224B7B0(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224B844(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224B8DC(DistWorldSystem *param0, int param1); +static void ov9_0224B570(DistWorldSystem *param0); +static void ov9_0224B580(DistWorldSystem *param0); +static void ov9_0224B590(DistWorldSystem *param0); +static void ov9_0224B5A0(DistWorldSystem *param0); +static void ov9_0224B5B0(DistWorldSystem *param0); +static void ov9_0224B5EC(DistWorldSystem *param0); static u16 ov9_0224B958(UnkStruct_ov101_021D5D90 *param0); -static void ov9_0224BE14(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224BE8C(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224BEB4(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224BF18(UnkStruct_ov9_02249B04 *param0, u32 param1); +static void ov9_0224BE14(DistWorldSystem *param0); +static void ov9_0224BE8C(DistWorldSystem *param0); +static void ov9_0224BEB4(DistWorldSystem *param0, u32 param1); +static void ov9_0224BF18(DistWorldSystem *param0, u32 param1); static void ov9_0224BF8C(NARC *param0, UnkStruct_ov9_0224BFE0 *param1); -static void ov9_0224BFBC(UnkStruct_ov9_02249B04 *param0); +static void ov9_0224BFBC(DistWorldSystem *param0); static void ov9_0224BFE0(UnkStruct_ov9_0224BFE0 *param0); -static void ov9_0224BFFC(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224C034 *ov9_0224C00C(const UnkStruct_ov9_0224BFE0 *param0, int param1); -static const UnkStruct_ov9_0224C034 *ov9_0224C034(UnkStruct_ov9_02249B04 *param0, int param1); -static u32 ov9_0224C044(UnkStruct_ov9_02249B04 *param0, int param1); +static void ov9_0224BFFC(DistWorldSystem *param0); +static const UnkStruct_ov9_0224C034 *ov9_0224C00C(const UnkStruct_ov9_0224BFE0 *param0, enum MapHeader mapHeaderID); +static const UnkStruct_ov9_0224C034 *ov9_0224C034(DistWorldSystem *system, enum MapHeader mapHeaderID); +static u32 FindNARCIndex(DistWorldSystem *system, enum MapHeader mapHeaderID); static void ov9_0224C050(const UnkStruct_ov9_0224BFE0 *param0, int param1, int *param2, int *param3, int *param4); -static void ov9_0224C070(UnkStruct_ov9_02249B04 *param0, int param1, int *param2, int *param3, int *param4); -static void ov9_0224C088(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224C14C *param1, int param2); -static void ov9_0224C0F8(UnkStruct_ov9_02249B04 *param0, int param1, int param2); -static void ov9_0224C10C(UnkStruct_ov9_02249B04 *param0, int param1); -static void ov9_0224C120(UnkStruct_ov9_02249B04 *param0, int param1); -static void ov9_0224C14C(UnkStruct_ov9_0224C14C *param0); -static void ov9_0224C164(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C174(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C184(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C194(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C1E4(UnkStruct_ov9_02249B04 *param0); -static int ov9_0224C234(UnkStruct_ov9_0224C14C *param0); -static int ov9_0224C23C(UnkStruct_ov9_0224C14C *param0); -static UnkStruct_ov9_0224C324 *ov9_0224C244(UnkStruct_ov9_0224C14C *param0); -static int ov9_0224C24C(UnkStruct_ov9_0224C14C *param0); -static int ov9_0224C254(UnkStruct_ov9_0224C14C *param0); -static UnkStruct_ov9_0224AA00 *ov9_0224C25C(UnkStruct_ov9_0224C14C *param0); -static int ov9_0224C264(UnkStruct_ov9_0224C14C *param0); -static int ov9_0224C26C(UnkStruct_ov9_0224C14C *param0); -static UnkStruct_ov9_0224A8A0 *ov9_0224C274(UnkStruct_ov9_0224C14C *param0); -static int ov9_0224C27C(UnkStruct_ov9_02249B04 *param0); -static int ov9_0224C288(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224B3F8 *ov9_0224C2A8(UnkStruct_ov9_0224C14C *param0); -static const UnkStruct_ov9_0224B6CC *ov9_0224C2AC(UnkStruct_ov9_0224C14C *param0); -static const UnkStruct_ov9_0224B748 *ov9_0224C2B4(UnkStruct_ov9_0224C14C *param0); -static void ov9_0224C2C4(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C300(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C378(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, s16 param4); -static void ov9_0224C3F8(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224C44C(UnkStruct_ov9_02249B04 *param0); -static u32 ov9_0224C470(UnkStruct_ov9_02249B04 *param0); -static u32 ov9_0224C494(UnkStruct_ov9_02249B04 *param0); -static u32 ov9_0224C4B8(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3); -static void ov9_0224C4F4(UnkStruct_ov9_02249B04 *param0, u32 param1); -static u16 ov9_0224C52C(UnkStruct_ov9_02249B04 *param0, int param1, int param2); -static u16 ov9_0224C55C(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3); -static void ov9_0224C640(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C680(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224AA00 *ov9_0224C69C(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4); -static void ov9_0224C6E4(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C724(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224A8A0 *ov9_0224C740(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4); -static void ov9_0224C788(UnkStruct_ov9_0224C14C *param0, UnkStruct_ov9_0224C788 *param1); -static void ov9_0224C7C8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C7E8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C808(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C834(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C854(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C844(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C864(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C888(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224B3F8 *ov9_0224C8AC(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224B3F8 *ov9_0224C8B8(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224B6CC *ov9_0224C8C4(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224B6CC *ov9_0224C8D0(UnkStruct_ov9_02249B04 *param0); -static const UnkStruct_ov9_0224B748 *ov9_0224C8DC(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C8E8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224C9E8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224CA98(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224CB30(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224CBD8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224CBF8(UnkStruct_ov9_02249B04 *param0); +static void ov9_0224C070(DistWorldSystem *param0, int param1, int *param2, int *param3, int *param4); +static void DistWorldFile_Load(DistWorldSystem *system, DistWorldFile *file, enum MapHeader mapHeaderID); +static void ov9_0224C0F8(DistWorldSystem *param0, enum MapHeader mapHeaderID, int param2); +static void ov9_0224C10C(DistWorldSystem *param0, enum MapHeader mapHeaderID); +static void ov9_0224C120(DistWorldSystem *param0, enum MapHeader mapHeaderID); +static void DistWorldFile_Free(DistWorldFile *file); +static void ov9_0224C164(DistWorldSystem *param0); +static void ov9_0224C174(DistWorldSystem *param0); +static void ov9_0224C184(DistWorldSystem *param0); +static void ov9_0224C194(DistWorldSystem *param0); +static void ov9_0224C1E4(DistWorldSystem *param0); +static int ov9_0224C234(DistWorldFile *param0); +static int ov9_0224C23C(DistWorldFile *param0); +static UnkStruct_ov9_0224C324 *ov9_0224C244(DistWorldFile *param0); +static int ov9_0224C24C(DistWorldFile *param0); +static int ov9_0224C254(DistWorldFile *param0); +static UnkStruct_ov9_0224AA00 *ov9_0224C25C(DistWorldFile *param0); +static int DistWorldFile_GetCameraAngleSectionSize(DistWorldFile *file); +static int DistWorldFile_GetCameraAngleCount(DistWorldFile *file); +static DistWorldCameraAngleTemplate *DistWorldFile_GetCameraAngleTemplates(DistWorldFile *file); +static int ov9_0224C27C(DistWorldSystem *param0); +static int ov9_0224C288(DistWorldSystem *param0); +static const UnkStruct_ov9_0224B3F8 *ov9_0224C2A8(DistWorldFile *param0); +static const UnkStruct_ov9_0224B6CC *ov9_0224C2AC(DistWorldFile *param0); +static const UnkStruct_ov9_0224B748 *ov9_0224C2B4(DistWorldFile *param0); +static void ov9_0224C2C4(DistWorldSystem *param0); +static void ov9_0224C300(DistWorldSystem *param0); +static void ov9_0224C378(DistWorldSystem *param0, int param1, int param2, int param3, s16 param4); +static void ov9_0224C3F8(DistWorldSystem *param0, u32 param1); +static void ov9_0224C44C(DistWorldSystem *param0); +static u32 ov9_0224C470(DistWorldSystem *param0); +static u32 ov9_0224C494(DistWorldSystem *param0); +static u32 ov9_0224C4B8(DistWorldSystem *param0, int param1, int param2, int param3); +static void ov9_0224C4F4(DistWorldSystem *param0, u32 param1); +static u16 ov9_0224C52C(DistWorldSystem *param0, int param1, int param2); +static u16 ov9_0224C55C(DistWorldSystem *param0, int param1, int param2, int param3); +static void ov9_0224C640(DistWorldSystem *param0); +static void ov9_0224C680(DistWorldSystem *param0); +static const UnkStruct_ov9_0224AA00 *ov9_0224C69C(DistWorldSystem *param0, int param1, int param2, int param3, int param4); +static void InitCameraAngleTemplates(DistWorldSystem *system); +static void ResetCameraAngleTemplates(DistWorldSystem *system); +static const DistWorldCameraAngleTemplate *FindCameraAngleForPlayerPosition(DistWorldSystem *system, int playerX, int playerY, int playerZ, int playerDir); +static void ov9_0224C788(DistWorldFile *param0, UnkStruct_ov9_0224C788 *param1); +static void ov9_0224C7C8(DistWorldSystem *param0); +static void ov9_0224C7E8(DistWorldSystem *param0); +static void ov9_0224C808(DistWorldSystem *param0); +static void ov9_0224C834(DistWorldSystem *param0); +static void ov9_0224C854(DistWorldSystem *param0); +static void ov9_0224C844(DistWorldSystem *param0); +static void ov9_0224C864(DistWorldSystem *param0); +static void ov9_0224C888(DistWorldSystem *param0); +static const UnkStruct_ov9_0224B3F8 *ov9_0224C8AC(DistWorldSystem *param0); +static const UnkStruct_ov9_0224B3F8 *ov9_0224C8B8(DistWorldSystem *param0); +static const UnkStruct_ov9_0224B6CC *ov9_0224C8C4(DistWorldSystem *param0); +static const UnkStruct_ov9_0224B6CC *ov9_0224C8D0(DistWorldSystem *param0); +static const UnkStruct_ov9_0224B748 *ov9_0224C8DC(DistWorldSystem *param0); +static void ov9_0224C8E8(DistWorldSystem *param0); +static void ov9_0224C9E8(DistWorldSystem *param0); +static void ov9_0224CA98(DistWorldSystem *param0); +static void ov9_0224CB30(DistWorldSystem *param0); +static void ov9_0224CBD8(DistWorldSystem *param0); +static void ov9_0224CBF8(DistWorldSystem *param0); static void ov9_0224CC08(SysTask *param0, void *param1); -static void ov9_0224CC4C(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224CC50(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2); -static BOOL ov9_0224CC7C(UnkStruct_ov9_02249B04 *param0); -static BOOL ov9_0224D040(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3); -static void ov9_0224D078(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1); +static void ov9_0224CC4C(DistWorldSystem *param0); +static void ov9_0224CC50(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2); +static BOOL ov9_0224CC7C(DistWorldSystem *param0); +static BOOL ov9_0224D040(DistWorldSystem *param0, int param1, int param2, int param3); +static void ov9_0224D078(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1); static BOOL ov9_0224D098(FieldTask *param0); static const UnkStruct_ov9_022530A4 *ov9_0224D720(int param0); -static void ov9_0224D744(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224D780(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224D7C0(UnkStruct_ov9_02249B04 *param0, u32 param1); -static UnkStruct_02073838 *ov9_0224D7EC(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224D814(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224D874(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224D994(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224D9BC(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2, UnkStruct_02073B50 *param3, UnkStruct_02073974 *param4); -static void ov9_0224DA48(UnkStruct_ov9_02249B04 *param0, int param1, UnkStruct_02073B50 *param2, UnkStruct_02073974 *param3); -static void ov9_0224DA64(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3); -static void ov9_0224DAAC(UnkStruct_ov9_02249B04 *param0, int param1, int param2); -static void ov9_0224DAB8(UnkStruct_ov9_02249B04 *param0, int param1, int param2); +static void ov9_0224D744(DistWorldSystem *param0); +static void ov9_0224D780(DistWorldSystem *param0, u32 param1); +static void ov9_0224D7C0(DistWorldSystem *param0, u32 param1); +static UnkStruct_02073838 *ov9_0224D7EC(DistWorldSystem *param0, u32 param1); +static void ov9_0224D814(DistWorldSystem *param0, u32 param1); +static void ov9_0224D874(DistWorldSystem *param0, u32 param1); +static void ov9_0224D994(DistWorldSystem *param0); +static void ov9_0224D9BC(DistWorldSystem *param0, u32 param1, u32 param2, UnkStruct_02073B50 *param3, UnkStruct_02073974 *param4); +static void ov9_0224DA48(DistWorldSystem *param0, int param1, UnkStruct_02073B50 *param2, UnkStruct_02073974 *param3); +static void ov9_0224DA64(DistWorldSystem *param0, int param1, int param2, int param3); +static void ov9_0224DAAC(DistWorldSystem *param0, int param1, int param2); +static void ov9_0224DAB8(DistWorldSystem *param0, int param1, int param2); static BOOL ov9_0224DAEC(int param0); static BOOL ov9_0224DB04(int param0); -static void ov9_0224DB1C(UnkStruct_ov9_02249B04 *param0); -static UnkStruct_ov9_0224D928 *ov9_0224D8A4(UnkStruct_ov9_02249B04 *param0, u32 param1, int *param2); -static void ov9_0224D928(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D928 *param1); -static void ov9_0224D938(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D928 *param1); -static void ov9_0224D954(UnkStruct_ov9_02249B04 *param0, int param1); -static BOOL ov9_0224DBE4(UnkStruct_ov9_02249B04 *param0, int param1, VecFx32 *param2); -static void ov9_0224DC34(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224DC4C(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224DC74(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224DCA8(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224DD24(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224DD40(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252C38 *param1, u32 param2); -static void ov9_0224DDA0(UnkStruct_ov9_02249B04 *param0, u32 param1, int param2); -static UnkStruct_ov9_0224E0DC *ov9_0224DDDC(UnkStruct_ov9_02249B04 *param0); -static UnkStruct_ov9_0224E0DC *ov9_0224DE08(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2); +static void ov9_0224DB1C(DistWorldSystem *param0); +static UnkStruct_ov9_0224D928 *ov9_0224D8A4(DistWorldSystem *param0, u32 param1, int *param2); +static void ov9_0224D928(DistWorldSystem *param0, UnkStruct_ov9_0224D928 *param1); +static void ov9_0224D938(DistWorldSystem *param0, UnkStruct_ov9_0224D928 *param1); +static void ov9_0224D954(DistWorldSystem *param0, int param1); +static BOOL ov9_0224DBE4(DistWorldSystem *param0, int param1, VecFx32 *param2); +static void ov9_0224DC34(DistWorldSystem *param0); +static void ov9_0224DC4C(DistWorldSystem *param0); +static void ov9_0224DC74(DistWorldSystem *param0, u32 param1); +static void ov9_0224DCA8(DistWorldSystem *param0); +static void ov9_0224DD24(DistWorldSystem *param0, u32 param1); +static void ov9_0224DD40(DistWorldSystem *param0, const UnkStruct_ov9_02252C38 *param1, u32 param2); +static void ov9_0224DDA0(DistWorldSystem *param0, u32 param1, int param2); +static UnkStruct_ov9_0224E0DC *ov9_0224DDDC(DistWorldSystem *param0); +static UnkStruct_ov9_0224E0DC *ov9_0224DE08(DistWorldSystem *param0, u32 param1, u32 param2); static const UnkStruct_ov9_02252C38 *ov9_0224DE40(u32 param0); static const UnkStruct_ov9_0224DF10 *ov9_0224DE60(u32 param0, u32 param1); static const UnkStruct_ov9_02253830 *ov9_0224DE70(u32 param0); -static MapObject *ov9_0224DE94(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4, int param5, u32 param6); -static void ov9_0224DF10(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, MapObject *param2); -static UnkStruct_ov101_021D5D90 *ov9_0224DFA0(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1); -static void ov9_0224DFF4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, const UnkStruct_ov9_0224DF10 *param2, u32 param3); -static void ov9_0224E044(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1); -static void ov9_0224E060(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1); -static void ov9_0224E07C(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2); +static MapObject *ov9_0224DE94(DistWorldSystem *param0, int param1, int param2, int param3, int param4, int param5, u32 param6); +static void ov9_0224DF10(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, MapObject *param2); +static UnkStruct_ov101_021D5D90 *ov9_0224DFA0(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1); +static void ov9_0224DFF4(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, const UnkStruct_ov9_0224DF10 *param2, u32 param3); +static void ov9_0224E044(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1); +static void ov9_0224E060(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1); +static void ov9_0224E07C(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2); static void ov9_0224E0DC(UnkStruct_ov9_0224E0DC *param0, u32 param1); -static BOOL ov9_0224E0E0(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224E120(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224E160(UnkStruct_ov9_02249B04 *param0, int param1); -static UnkStruct_ov9_0224E0DC *ov9_0224E188(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, u32 param4); +static BOOL ov9_0224E0E0(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224E120(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224E160(DistWorldSystem *param0, int param1); +static UnkStruct_ov9_0224E0DC *ov9_0224E188(DistWorldSystem *param0, int param1, int param2, int param3, u32 param4); static VecFx32 *ov9_0224E330(UnkStruct_ov101_021D5D90 *param0); -static void ov9_0224E33C(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224E34C(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224E350(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02251438 *param1); -static void *ov9_0224E37C(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void *ov9_0224E39C(UnkStruct_ov9_02249B04 *param0); -static BOOL ov9_0224E3A0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1); -static BOOL ov9_0224E434(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3); -static void ov9_0224E498(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02251438 *param1); -static void ov9_0224E4B0(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252044 *param1); +static void ov9_0224E33C(DistWorldSystem *param0); +static void ov9_0224E34C(DistWorldSystem *param0); +static void ov9_0224E350(DistWorldSystem *param0, const UnkStruct_ov9_02251438 *param1); +static void *ov9_0224E37C(DistWorldSystem *param0, u32 param1); +static void *ov9_0224E39C(DistWorldSystem *param0); +static BOOL ov9_0224E3A0(DistWorldSystem *param0, FieldTask *param1); +static BOOL ov9_0224E434(DistWorldSystem *param0, int param1, int param2, int param3); +static void ov9_0224E498(DistWorldSystem *param0, const UnkStruct_ov9_02251438 *param1); +static void ov9_0224E4B0(DistWorldSystem *param0, const UnkStruct_ov9_02252044 *param1); static BOOL ov9_0224E4BC(FieldTask *param0); -static void ov9_0224E8B4(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224E8EC(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224E91C(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252414 *param1); -static BOOL ov9_0224E964(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224E984(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224E988(UnkStruct_ov9_02249B04 *param0); -static BOOL ov9_0224E9A4(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224E9CC(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224E9F4(UnkStruct_ov9_02249B04 *param0, int param1); -static void ov9_0224EB68(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224EB94(UnkStruct_ov9_02249B04 *param0); +static void ov9_0224E8B4(DistWorldSystem *param0); +static void ov9_0224E8EC(DistWorldSystem *param0); +static void ov9_0224E91C(DistWorldSystem *param0, const UnkStruct_ov9_02252414 *param1); +static BOOL ov9_0224E964(DistWorldSystem *param0); +static void ov9_0224E984(DistWorldSystem *param0); +static void ov9_0224E988(DistWorldSystem *param0); +static BOOL ov9_0224E9A4(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224E9CC(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224E9F4(DistWorldSystem *param0, int param1); +static void ov9_0224EB68(DistWorldSystem *param0); +static void ov9_0224EB94(DistWorldSystem *param0); static void ov9_0224EBB8(UnkStruct_ov9_0224EBB8 *param0); -static void ov9_0224EC10(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252548 *param1); -static void ov9_0224EC48(UnkStruct_ov9_02249B04 *param0, u32 param1); -static UnkStruct_ov9_0224EBB8 *ov9_0224EC70(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224EC94(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224ECC0(UnkStruct_ov9_02249B04 *param0, int param1); -static BOOL ov9_0224ECE8(UnkStruct_ov9_02249B04 *param0, u32 param1); -static BOOL ov9_0224ED20(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224EE40(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224EE6C(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224EE70(UnkStruct_ov9_02249B04 *param0, MapObject *param1); -static MapObject **ov9_0224EEA0(UnkStruct_ov9_02249B04 *param0); -static BOOL ov9_0224EF30(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224EF30 *param1, u16 param2); -static BOOL ov9_0224EF64(UnkStruct_ov9_02249B04 *param0, MapObject **param1, const UnkStruct_ov9_0224EF30 *param2, u32 param3, u16 param4); -static BOOL ov9_0224F048(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224EF30 **param1, u32 param2); -static void ov9_0224F078(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224F0A4(UnkStruct_ov9_02249B04 *param0, u32 param1); -static MapObject *ov9_0224F0D4(UnkStruct_ov9_02249B04 *param0, u32 param1, u16 param2); -static BOOL ov9_0224F1CC(UnkStruct_ov9_02249B04 *param0, MapObject *param1); -static void ov9_0224F724(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224F760(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224F764(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224F804(UnkStruct_ov9_02249B04 *param0); -static void ov9_0224F854(UnkStruct_ov9_02249B04 *param0, u32 param1); -static void ov9_0224F860(UnkStruct_ov9_02249B04 *param0, s16 param1); +static void ov9_0224EC10(DistWorldSystem *param0, const UnkStruct_ov9_02252548 *param1); +static void ov9_0224EC48(DistWorldSystem *param0, u32 param1); +static UnkStruct_ov9_0224EBB8 *ov9_0224EC70(DistWorldSystem *param0); +static void ov9_0224EC94(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224ECC0(DistWorldSystem *param0, int param1); +static BOOL ov9_0224ECE8(DistWorldSystem *param0, u32 param1); +static BOOL ov9_0224ED20(DistWorldSystem *param0, u32 param1); +static void ov9_0224EE40(DistWorldSystem *param0); +static void ov9_0224EE6C(DistWorldSystem *param0); +static void ov9_0224EE70(DistWorldSystem *param0, MapObject *param1); +static MapObject **ov9_0224EEA0(DistWorldSystem *param0); +static BOOL ov9_0224EF30(DistWorldSystem *param0, const UnkStruct_ov9_0224EF30 *param1, u16 param2); +static BOOL ov9_0224EF64(DistWorldSystem *param0, MapObject **param1, const UnkStruct_ov9_0224EF30 *param2, u32 param3, u16 param4); +static BOOL ov9_0224F048(DistWorldSystem *param0, const UnkStruct_ov9_0224EF30 **param1, u32 param2); +static void ov9_0224F078(DistWorldSystem *param0, u32 param1); +static void ov9_0224F0A4(DistWorldSystem *param0, u32 param1); +static MapObject *ov9_0224F0D4(DistWorldSystem *param0, u32 param1, u16 param2); +static BOOL ov9_0224F1CC(DistWorldSystem *param0, MapObject *param1); +static void ov9_0224F724(DistWorldSystem *param0); +static void ov9_0224F760(DistWorldSystem *param0); +static void ov9_0224F764(DistWorldSystem *param0); +static void ov9_0224F804(DistWorldSystem *param0); +static void ov9_0224F854(DistWorldSystem *param0, u32 param1); +static void ov9_0224F860(DistWorldSystem *param0, s16 param1); static void ov9_0224F86C(u16 param0, u16 param1, u16 param2, u16 *param3); -static BOOL ov9_02250E6C(int param0, int param1, int param2, const UnkStruct_ov9_02250E6C *param3); -static int ov9_02250EB0(u16 param0, u16 param1); +static BOOL DistWorldBounds_AreCoordinatesInBounds(int tileX, int tileY, int tileZ, const DistWorldBounds *bounds); +static int CalculateCameraAngleDelta(u16 currentAngleComponent, u16 targetAngleComponent); static void ov9_02250EE8(s16 *param0, s16 param1); static void ov9_02250F1C(fx32 *param0, fx32 param1); -static void ov9_02250F44(UnkStruct_ov9_02249B04 *param0, int *param1, int *param2, int *param3); -static u32 ov9_022510D0(UnkStruct_ov9_02249B04 *param0); +static void GetPlayerPos(DistWorldSystem *system, int *playerX, int *playerY, int *playerZ); +static u32 DistWorldSystem_GetMapHeaderID(DistWorldSystem *system); static int ov9_022510D8(u32 param0); -static BOOL ov9_02251104(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2); +static BOOL ov9_02251104(DistWorldSystem *param0, u32 param1, u32 param2); static void ov9_022511E0(u16 param0); static void ov9_022511F4(MapObject *param0, const VecFx32 *param1); @@ -1141,7 +1163,7 @@ static const UnkStruct_ov101_021D86B0 Unk_ov9_02251468; static const UnkStruct_ov101_021D86B0 Unk_ov9_022514B8; static const UnkStruct_ov101_021D86B0 Unk_ov9_02251530; static const fx32 Unk_ov9_02252CF8[16]; -static void (*const Unk_ov9_02251224[1])(UnkStruct_ov9_02249B04 *, const UnkStruct_ov9_0224AA00 *); +static void (*const Unk_ov9_02251224[1])(DistWorldSystem *, const UnkStruct_ov9_0224AA00 *); static const int Unk_ov9_02251E58[7]; static const int Unk_ov9_02251E90[7]; static const int Unk_ov9_02251EAC[7]; @@ -1165,57 +1187,57 @@ const UnkStruct_ov9_02251438 Unk_ov9_022513D8[]; const UnkStruct_ov9_02252548 Unk_ov9_02252548[]; const UnkStruct_ov9_02252EB4 Unk_ov9_02252EB4[]; -void DistortionWorld_DynamicMapFeaturesInit(FieldSystem *fieldSystem) +void DistWorld_DynamicMapFeaturesInit(FieldSystem *fieldSystem) { - PersistedMapFeatures *v0 = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem)); - UnkStruct_02071C5C *v1 = PersistedMapFeatures_GetBuffer(v0, DYNAMIC_MAP_FEATURES_DISTORTION_WORLD); - UnkStruct_ov9_02249B04 *v2 = Heap_AllocFromHeap(HEAP_ID_FIELD, sizeof(UnkStruct_ov9_02249B04)); + PersistedMapFeatures *persistedMapFeatures = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem)); + DistWorldPersistedData *data = PersistedMapFeatures_GetBuffer(persistedMapFeatures, DYNAMIC_MAP_FEATURES_DISTORTION_WORLD); + DistWorldSystem *dwSystem = Heap_AllocFromHeap(HEAP_ID_FIELD, sizeof(DistWorldSystem)); - memset(v2, 0, sizeof(UnkStruct_ov9_02249B04)); + memset(dwSystem, 0, sizeof(DistWorldSystem)); - v2->fieldSystem = fieldSystem; - v2->unk_04 = v1; + dwSystem->fieldSystem = fieldSystem; + dwSystem->persistedData = data; - fieldSystem->unk_04->dynamicMapFeaturesData = v2; + fieldSystem->unk_04->dynamicMapFeaturesData = dwSystem; - ov9_02249C88(v2); + OpenArchives(dwSystem); - if (v1->unk_00_0 == 0) { - ov9_02249CC4(v2); + if (data->valid == FALSE) { + ov9_02249CC4(dwSystem); } - ov9_0224BE14(v2); - ov9_02249F50(v2); - ov9_02249F88(v2); - ov9_0224A1E4(v2, (4 + 2)); - ov9_0224D744(v2); - ov9_0224ADC0(v2); - ov9_0224B3A8(v2); - ov9_0224AEE4(v2, &v2->unk_1A8, v2->unk_10); - ov9_0224F724(v2); - ov9_02249FF4(v2); - ov9_0224A570(v2); - ov9_0224A8C0(v2); - ov9_0224EE40(v2); - ov9_0224EB68(v2); - ov9_0224B514(v2); - ov9_0224DC34(v2); - ov9_0224E33C(v2); - ov9_02249E94(v2); - ov9_0224C8E8(v2); - ov9_0224CBD8(v2); - ov9_0224DCA8(v2); - ov9_0224B1B4(v2, v2->fieldSystem->unk_40, &v2->unk_1A8); - ov9_0224E984(v2); - ov5_021F34B8(v2->fieldSystem->unk_40); - ov9_02249EF0(v2); + ov9_0224BE14(dwSystem); + ov9_02249F50(dwSystem); + ov9_02249F88(dwSystem); + ov9_0224A1E4(dwSystem, (4 + 2)); + ov9_0224D744(dwSystem); + ov9_0224ADC0(dwSystem); + ov9_0224B3A8(dwSystem); + ov9_0224AEE4(dwSystem, &dwSystem->unk_1A8, dwSystem->unk_10); + ov9_0224F724(dwSystem); + CameraInit(dwSystem); + ov9_0224A570(dwSystem); + ov9_0224A8C0(dwSystem); + ov9_0224EE40(dwSystem); + ov9_0224EB68(dwSystem); + ov9_0224B514(dwSystem); + ov9_0224DC34(dwSystem); + ov9_0224E33C(dwSystem); + ov9_02249E94(dwSystem); + ov9_0224C8E8(dwSystem); + ov9_0224CBD8(dwSystem); + ov9_0224DCA8(dwSystem); + ov9_0224B1B4(dwSystem, dwSystem->fieldSystem->unk_40, &dwSystem->unk_1A8); + ov9_0224E984(dwSystem); + ov5_021F34B8(dwSystem->fieldSystem->unk_40); + ov9_02249EF0(dwSystem); - v1->unk_00_0 = 1; + data->valid = TRUE; } -void DistortionWorld_DynamicMapFeaturesFree(FieldSystem *fieldSystem) +void DistWorld_DynamicMapFeaturesFree(FieldSystem *fieldSystem) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; ov9_02249F18(v0); ov9_0224E988(v0); @@ -1229,7 +1251,7 @@ void DistortionWorld_DynamicMapFeaturesFree(FieldSystem *fieldSystem) ov9_0224EE6C(v0); ov9_0224A9E8(v0); ov9_0224A574(v0); - ov9_0224A0C8(v0); + CameraFree(v0); ov9_0224F760(v0); ov9_0224B064(&v0->unk_1A8); ov9_0224B3F4(v0); @@ -1239,16 +1261,16 @@ void DistortionWorld_DynamicMapFeaturesFree(FieldSystem *fieldSystem) ov9_02249F98(v0); ov9_02249F84(v0); ov9_0224BE8C(v0); - ov9_02249CAC(v0); + CloseArchives(v0); Heap_FreeToHeap(v0); fieldSystem->unk_04->dynamicMapFeaturesData = NULL; } -static void ov9_02249B04(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249B04(DistWorldSystem *param0) { - u32 v0 = ov9_022510D0(param0); + u32 v0 = DistWorldSystem_GetMapHeaderID(param0); const UnkStruct_ov9_022530A4 *v1 = ov9_0224D720(v0); ov9_0224B570(param0); @@ -1264,9 +1286,9 @@ static void ov9_02249B04(UnkStruct_ov9_02249B04 *param0) ov9_0224F078(param0, v1->unk_08); } -static void ov9_02249B68(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249B68(DistWorldSystem *param0) { - u32 v0 = ov9_022510D0(param0); + u32 v0 = DistWorldSystem_GetMapHeaderID(param0); const UnkStruct_ov9_022530A4 *v1 = ov9_0224D720(v0); v1 = ov9_0224D720(v1->unk_08); @@ -1284,7 +1306,7 @@ static void ov9_02249B68(UnkStruct_ov9_02249B04 *param0) ov9_0224F078(param0, v0); } -static void ov9_02249BD4(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249BD4(DistWorldSystem *param0, u32 param1) { ov9_0224B570(param0); ov9_02249D44(param0, 0); @@ -1294,7 +1316,7 @@ static void ov9_02249BD4(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_0224DB1C(param0); } -static void ov9_02249C08(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249C08(DistWorldSystem *param0, u32 param1) { ov9_0224B4CC(param0); ov9_0224EC48(param0, param1); @@ -1302,7 +1324,7 @@ static void ov9_02249C08(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_0224F078(param0, param1); } -static void ov9_02249C2C(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249C2C(DistWorldSystem *param0, u32 param1) { ov9_0224B580(param0); ov9_02249D44(param0, 0); @@ -1312,7 +1334,7 @@ static void ov9_02249C2C(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_0224DB1C(param0); } -static void ov9_02249C60(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249C60(DistWorldSystem *param0, u32 param1) { ov9_0224B45C(param0, 1); ov9_0224EC48(param0, param1); @@ -1320,23 +1342,23 @@ static void ov9_02249C60(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_0224F078(param0, param1); } -static void ov9_02249C88(UnkStruct_ov9_02249B04 *param0) +static void OpenArchives(DistWorldSystem *system) { - param0->unk_08 = NARC_ctor(NARC_INDEX_FIELDDATA__TORNWORLD__TW_ARC, HEAP_ID_FIELD); - param0->unk_0C = NARC_ctor(NARC_INDEX_FIELDDATA__TORNWORLD__TW_ARC_ATTR, HEAP_ID_FIELD); - param0->unk_10 = NARC_ctor(NARC_INDEX_DATA__TW_ARC_ETC, HEAP_ID_FIELD); + system->distortionWorldNARC = NARC_ctor(NARC_INDEX_FIELDDATA__TORNWORLD__TW_ARC, HEAP_ID_FIELD); + system->unk_0C = NARC_ctor(NARC_INDEX_FIELDDATA__TORNWORLD__TW_ARC_ATTR, HEAP_ID_FIELD); + system->unk_10 = NARC_ctor(NARC_INDEX_DATA__TW_ARC_ETC, HEAP_ID_FIELD); } -static void ov9_02249CAC(UnkStruct_ov9_02249B04 *param0) +static void CloseArchives(DistWorldSystem *system) { - NARC_dtor(param0->unk_08); - NARC_dtor(param0->unk_0C); - NARC_dtor(param0->unk_10); + NARC_dtor(system->distortionWorldNARC); + NARC_dtor(system->unk_0C); + NARC_dtor(system->unk_10); } -static void ov9_02249CC4(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249CC4(DistWorldSystem *param0) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; VarsFlags *v1 = SaveData_GetVarsFlags(param0->fieldSystem->saveData); v0->unk_0C = 0; @@ -1344,7 +1366,7 @@ static void ov9_02249CC4(UnkStruct_ov9_02249B04 *param0) { u32 v2 = ((1 << 3) | (1 << 7)); - if (ov9_022510D0(param0) == 581) { + if (DistWorldSystem_GetMapHeaderID(param0) == 581) { v2 = ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 7) | (1 << 9) | (1 << 10)); } @@ -1358,67 +1380,67 @@ static void ov9_02249CC4(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_02249D18(UnkStruct_ov9_02249B04 *param0, u16 param1, u16 param2, u16 param3) +static void SetPersistedCameraAngles(DistWorldSystem *system, u16 angleX, u16 angleY, u16 angleZ) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *persistedData = system->persistedData; - v0->unk_04 = param1; - v0->unk_06 = param2; - v0->unk_08 = param3; + persistedData->cameraAngleX = angleX; + persistedData->cameraAngleY = angleY; + persistedData->cameraAngleZ = angleZ; } -static void ov9_02249D24(UnkStruct_ov9_02249B04 *param0, u16 *param1, u16 *param2, u16 *param3) +static void GetPersistedCameraAngles(DistWorldSystem *system, u16 *angleX, u16 *angleY, u16 *angleZ) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *persistedData = system->persistedData; - *param1 = v0->unk_04; - *param2 = v0->unk_06; - *param3 = v0->unk_08; + *angleX = persistedData->cameraAngleX; + *angleY = persistedData->cameraAngleY; + *angleZ = persistedData->cameraAngleZ; } -static BOOL ov9_02249D38(UnkStruct_ov9_02249B04 *param0) +static BOOL IsPersistedDataValid(DistWorldSystem *system) { - UnkStruct_02071C5C *v0 = param0->unk_04; - return v0->unk_00_0; + DistWorldPersistedData *persistedData = system->persistedData; + return persistedData->valid; } -static void ov9_02249D44(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249D44(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; v0->unk_00_1 = param1; } -static u32 ov9_02249D5C(UnkStruct_ov9_02249B04 *param0) +static u32 ov9_02249D5C(DistWorldSystem *param0) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; return v0->unk_00_1; } -static void ov9_02249D68(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249D68(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; v0->unk_0A = param1; } -static void ov9_02249D70(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249D70(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; GF_ASSERT(param1 < 11); v0->unk_0A |= (1 << param1); } -static void ov9_02249D8C(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249D8C(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; GF_ASSERT(param1 < 11); v0->unk_0A &= ~(1 << param1); } -static BOOL ov9_02249DA8(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_02249DA8(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; GF_ASSERT(param1 < 11); @@ -1429,25 +1451,25 @@ static BOOL ov9_02249DA8(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static void ov9_02249DC8(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249DC8(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; GF_ASSERT(param1 < 17); v0->unk_0C |= (1 << param1); } -static void ov9_02249DE4(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249DE4(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; GF_ASSERT(param1 < 17); v0->unk_0C &= ~(1 << param1); } -static BOOL ov9_02249E00(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_02249E00(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; GF_ASSERT(param1 < 17); @@ -1458,42 +1480,42 @@ static BOOL ov9_02249E00(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static void ov9_02249E20(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_02249E20(DistWorldSystem *param0, u32 param1) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; GF_ASSERT(param1 < (1 << 4)); v0->unk_00_25 = param1; } -static u32 ov9_02249E44(UnkStruct_ov9_02249B04 *param0) +static u32 ov9_02249E44(DistWorldSystem *param0) { - UnkStruct_02071C5C *v0 = param0->unk_04; + DistWorldPersistedData *v0 = param0->persistedData; return v0->unk_00_25; } -BOOL DistortionWorld_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding) +BOOL DistWorld_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; - u32 v1 = ov9_022510D0(v0); + DistWorldSystem *dwSystem = fieldSystem->unk_04->dynamicMapFeaturesData; + u32 mapHeaderID = DistWorldSystem_GetMapHeaderID(dwSystem); - if (v1 == 582) { - if ((tileX == 15) && (tileZ == 26)) { - *isColliding = 1; - return 1; + if (mapHeaderID == MAP_HEADER_DISTORTION_WORLD_GIRATINA_ROOM) { + if (tileX == GIRATINA_ROOM_TELEPORT_TILE_X && tileZ == GIRATINA_ROOM_TELEPORT_TILE_Z + 1) { + *isColliding = TRUE; + return TRUE; } - } else if (v1 == 581) { - if ((tileX == 89) && (tileZ == 56)) { - *isColliding = 1; - return 1; + } else if (mapHeaderID == MAP_HEADER_DISTORTION_WORLD_B7F) { + if (tileX == B7F_TELEPORT_TILE_X && tileZ == B7F_TELEPORT_TILE_Z - 1) { + *isColliding = TRUE; + return TRUE; } } - *isColliding = 0; - return 0; + *isColliding = FALSE; + return FALSE; } -static void ov9_02249E94(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249E94(DistWorldSystem *param0) { int v0; UnkStruct_ov9_02249E94 *v1 = ¶m0->unk_184; @@ -1506,7 +1528,7 @@ static void ov9_02249E94(UnkStruct_ov9_02249B04 *param0) v1->unk_00 = SysTask_Start(ov9_02249EDC, param0, v0); } -static void ov9_02249EC8(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249EC8(DistWorldSystem *param0) { UnkStruct_ov9_02249E94 *v0 = ¶m0->unk_184; @@ -1517,7 +1539,7 @@ static void ov9_02249EC8(UnkStruct_ov9_02249B04 *param0) static void ov9_02249EDC(SysTask *param0, void *param1) { - UnkStruct_ov9_02249B04 *v0 = param1; + DistWorldSystem *v0 = param1; UnkStruct_ov9_02249E94 *v1 = &v0->unk_184; { @@ -1529,13 +1551,13 @@ static void ov9_02249EDC(SysTask *param0, void *param1) } } -static void ov9_02249EF0(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249EF0(DistWorldSystem *param0) { GF_ASSERT(param0->unk_1EC4 == NULL); param0->unk_1EC4 = SysTask_ExecuteOnVBlank(ov9_02249F3C, param0, 0x80); } -static void ov9_02249F18(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249F18(DistWorldSystem *param0) { GF_ASSERT(param0->unk_1EC4 != NULL); SysTask_Done(param0->unk_1EC4); @@ -1544,13 +1566,13 @@ static void ov9_02249F18(UnkStruct_ov9_02249B04 *param0) static void ov9_02249F3C(SysTask *param0, void *param1) { - UnkStruct_ov9_02249B04 *v0 = param1; + DistWorldSystem *v0 = param1; ov9_0224CC4C(v0); ov9_0224F804(v0); } -static void ov9_02249F50(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249F50(DistWorldSystem *param0) { { int v0; @@ -1564,167 +1586,165 @@ static void ov9_02249F50(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_02249F84(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249F84(DistWorldSystem *param0) { return; } -static void ov9_02249F88(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249F88(DistWorldSystem *param0) { MapObjectMan_SetEndMovement(param0->fieldSystem->mapObjMan, 0); } -static void ov9_02249F98(UnkStruct_ov9_02249B04 *param0) +static void ov9_02249F98(DistWorldSystem *param0) { return; } -void ov9_02249F9C(FieldSystem *fieldSystem) +void DistWorld_UpdateCameraAngle(FieldSystem *fieldSystem) { - CameraAngle v0; - UnkStruct_ov9_02249B04 *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; - UnkStruct_ov9_02249F9C *v2 = &v1->unk_14; + CameraAngle cameraAngle; + DistWorldSystem *dwSystem = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldCameraManager *cameraMan = &dwSystem->cameraMan; - v0.x = v2->unk_04.x + v2->unk_0C.x; - v0.y = v2->unk_04.y + v2->unk_0C.y; - v0.z = v2->unk_04.z + v2->unk_0C.z; + cameraAngle.x = cameraMan->baseAngle.x + cameraMan->currentAngle.x; + cameraAngle.y = cameraMan->baseAngle.y + cameraMan->currentAngle.y; + cameraAngle.z = cameraMan->baseAngle.z + cameraMan->currentAngle.z; - Camera_SetAngleAroundTarget(&v0, v2->camera); + Camera_SetAngleAroundTarget(&cameraAngle, cameraMan->camera); } -void ov9_02249FD0(FieldSystem *fieldSystem) +void DistWorld_ResetPersistedCameraAngles(FieldSystem *fieldSystem) { - PersistedMapFeatures *v0; - UnkStruct_02071C5C *v1; - GF_ASSERT(fieldSystem != NULL); - v0 = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem)); - v1 = PersistedMapFeatures_GetBuffer(v0, DYNAMIC_MAP_FEATURES_DISTORTION_WORLD); + PersistedMapFeatures *persistedMapFeatures = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem)); + DistWorldPersistedData *data = PersistedMapFeatures_GetBuffer(persistedMapFeatures, DYNAMIC_MAP_FEATURES_DISTORTION_WORLD); - v1->unk_04 = 0; - v1->unk_06 = 0; - v1->unk_08 = 0; + data->cameraAngleX = 0; + data->cameraAngleY = 0; + data->cameraAngleZ = 0; } -static void ov9_02249FF4(UnkStruct_ov9_02249B04 *param0) +static void CameraInit(DistWorldSystem *system) { - UnkStruct_ov9_02249F9C *v0 = ¶m0->unk_14; + DistWorldCameraManager *cameraMan = &system->cameraMan; - param0->fieldSystem->unk_20 = 1; - v0->camera = param0->fieldSystem->camera; + system->fieldSystem->unk_20 = 1; + cameraMan->camera = system->fieldSystem->camera; - { - UnkStruct_ov9_02249FF4 v1 = { - 0x29aec1, { -0x29fe, 0, 0 }, 0, 0x5c1, 0 - }; + CameraConfiguration cameraConfig = { + .distance = DISTORTION_WORLD_CAMERA_BASE_DISTANCE, + .cameraAngle = { + DISTORTION_WORLD_CAMERA_BASE_ANGLE_X, + DISTORTION_WORLD_CAMERA_BASE_ANGLE_Y, + DISTORTION_WORLD_CAMERA_BASE_ANGLE_Z }, + .projectionMtx = DISTORTION_WORLD_CAMERA_BASE_PROJECTION_MTX, + .fovY = DISTORTION_WORLD_CAMERA_BASE_FOVY, + }; - Camera_SetDistance(v1.unk_00, v0->camera); - Camera_SetAngleAroundTarget(&v1.cameraAngle, v0->camera); - Camera_SetFOV(v1.unk_0E, v0->camera); - Camera_ComputeProjectionMatrix(v1.unk_0C, v0->camera); + Camera_SetDistance(cameraConfig.distance, cameraMan->camera); + Camera_SetAngleAroundTarget(&cameraConfig.cameraAngle, cameraMan->camera); + Camera_SetFOV(cameraConfig.fovY, cameraMan->camera); + Camera_ComputeProjectionMatrix(cameraConfig.projectionMtx, cameraMan->camera); + Camera_SetClipping(DISTORTION_WORLD_CAMERA_BASE_NEAR_CLIP, DISTORTION_WORLD_CAMERA_BASE_FAR_CLIP, cameraMan->camera); + + cameraMan->baseAngle.x = DISTORTION_WORLD_CAMERA_BASE_ANGLE_X; + cameraMan->baseAngle.y = DISTORTION_WORLD_CAMERA_BASE_ANGLE_Y; + cameraMan->baseAngle.z = DISTORTION_WORLD_CAMERA_BASE_ANGLE_Z; + + if (IsPersistedDataValid(system) == TRUE) { + u16 angleX, angleY, angleZ; + GetPersistedCameraAngles(system, &angleX, &angleY, &angleZ); + + cameraMan->targetAngle.x = angleX * DISTORTION_WORLD_CAMERA_PERSISTED_ANGLES_FACTOR; + cameraMan->targetAngle.y = angleY * DISTORTION_WORLD_CAMERA_PERSISTED_ANGLES_FACTOR; + cameraMan->targetAngle.z = angleZ * DISTORTION_WORLD_CAMERA_PERSISTED_ANGLES_FACTOR; + + cameraMan->currentAngle = cameraMan->targetAngle; } - Camera_SetClipping((FX32_ONE * 150), (FX32_ONE * 1700), v0->camera); - - v0->unk_04.x = -0x29fe; - v0->unk_04.y = 0x0; - v0->unk_04.z = 0x0; - - if (ov9_02249D38(param0) == 1) { - u16 v2, v3, v4; - - ov9_02249D24(param0, &v2, &v3, &v4); - - v0->unk_14.x = ((v2) * 0x100); - v0->unk_14.y = ((v3) * 0x100); - v0->unk_14.z = ((v4) * 0x100); - v0->unk_0C = v0->unk_14; + if (DistWorldSystem_GetMapHeaderID(system) != MAP_HEADER_DISTORTION_WORLD_GIRATINA_ROOM) { + Camera_AdjustFOV(DISTORTION_WORLD_NON_GIRATINA_ROOM_FOV_ADJUST, cameraMan->camera); } - if (ov9_022510D0(param0) != 582) { - Camera_AdjustFOV(0x681 - 0x5c1, v0->camera); - } - - v0->unk_3C = SysTask_Start(ov9_0224A0DC, param0, 0); + cameraMan->transitionTask = SysTask_Start(CameraTransitionTask, system, 0); } -static void ov9_0224A0C8(UnkStruct_ov9_02249B04 *param0) +static void CameraFree(DistWorldSystem *system) { - UnkStruct_ov9_02249F9C *v0 = ¶m0->unk_14; + DistWorldCameraManager *cameraMan = &system->cameraMan; - param0->fieldSystem->unk_20 = 0; + system->fieldSystem->unk_20 = 0; - if (v0->unk_3C != NULL) { - SysTask_Done(v0->unk_3C); + if (cameraMan->transitionTask != NULL) { + SysTask_Done(cameraMan->transitionTask); } } -static void ov9_0224A0DC(SysTask *param0, void *param1) +static void CameraTransitionTask(SysTask *sysTask, void *sysTaskParam) { - UnkStruct_ov9_02249B04 *v0 = param1; - UnkStruct_ov9_02249F9C *v1 = &v0->unk_14; - UnkStruct_ov9_0224A0DC *v2 = &v1->unk_1C; + DistWorldSystem *system = sysTaskParam; + DistWorldCameraManager *cameraMan = &system->cameraMan; + DistWorldCameraTransition *transition = &cameraMan->transition; - if (v2->unk_00 == 0) { + if (transition->isActive == FALSE) { return; } - v2->unk_04--; + transition->stepsRemaining--; - if (v2->unk_04 <= 0) { - v2->unk_00 = 0; - v1->unk_0C = v1->unk_14; + if (transition->stepsRemaining <= 0) { + transition->isActive = FALSE; + cameraMan->currentAngle = cameraMan->targetAngle; return; } - v2->unk_08.x += v2->unk_14.x; - v2->unk_08.y += v2->unk_14.y; - v2->unk_08.z += v2->unk_14.z; - v1->unk_0C.x = ((v2->unk_08.x) / FX32_ONE); - v1->unk_0C.y = ((v2->unk_08.y) / FX32_ONE); - v1->unk_0C.z = ((v2->unk_08.z) / FX32_ONE); + transition->currentAngle.x += transition->angleStep.x; + transition->currentAngle.y += transition->angleStep.y; + transition->currentAngle.z += transition->angleStep.z; + + cameraMan->currentAngle.x = transition->currentAngle.x / FX32_ONE; + cameraMan->currentAngle.y = transition->currentAngle.y / FX32_ONE; + cameraMan->currentAngle.z = transition->currentAngle.z / FX32_ONE; } -static BOOL ov9_0224A148(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224A8A0 *param1) +static BOOL DoCameraTransition(DistWorldSystem *system, const DistWorldCameraAngleTemplate *cameraAngleTemplate) { - UnkStruct_ov9_02249F9C *v0 = ¶m0->unk_14; - UnkStruct_ov9_0224A0DC *v1 = &v0->unk_1C; + DistWorldCameraManager *cameraMan = &system->cameraMan; + DistWorldCameraTransition *transition = &cameraMan->transition; - ov9_02249D18(param0, param1->unk_0C, param1->unk_0E, param1->unk_10); + SetPersistedCameraAngles(system, cameraAngleTemplate->angleX, cameraAngleTemplate->angleY, cameraAngleTemplate->angleZ); - v0->unk_14.x = ((param1->unk_0C) * 0x100); - v0->unk_14.y = ((param1->unk_0E) * 0x100); - v0->unk_14.z = ((param1->unk_10) * 0x100); + cameraMan->targetAngle.x = cameraAngleTemplate->angleX * DISTORTION_WORLD_CAMERA_PERSISTED_ANGLES_FACTOR; + cameraMan->targetAngle.y = cameraAngleTemplate->angleY * DISTORTION_WORLD_CAMERA_PERSISTED_ANGLES_FACTOR; + cameraMan->targetAngle.z = cameraAngleTemplate->angleZ * DISTORTION_WORLD_CAMERA_PERSISTED_ANGLES_FACTOR; - if ((v0->unk_0C.x == v0->unk_14.x) && (v0->unk_0C.y == v0->unk_14.y) && (v0->unk_0C.z == v0->unk_14.z)) { - v1->unk_00 = 0; - return 0; + if (cameraMan->currentAngle.x == cameraMan->targetAngle.x && cameraMan->currentAngle.y == cameraMan->targetAngle.y && cameraMan->currentAngle.z == cameraMan->targetAngle.z) { + transition->isActive = FALSE; + return FALSE; } - v1->unk_00 = 1; - v1->unk_04 = param1->unk_14; - v1->unk_08.x = (FX32_ONE * (v0->unk_0C.x)); - v1->unk_08.y = (FX32_ONE * (v0->unk_0C.y)); - v1->unk_08.z = (FX32_ONE * (v0->unk_0C.z)); + transition->isActive = TRUE; + transition->stepsRemaining = cameraAngleTemplate->transitionSteps; - { - int v2; + transition->currentAngle.x = FX32_ONE * cameraMan->currentAngle.x; + transition->currentAngle.y = FX32_ONE * cameraMan->currentAngle.y; + transition->currentAngle.z = FX32_ONE * cameraMan->currentAngle.z; - v2 = ov9_02250EB0(v0->unk_0C.x, v0->unk_14.x); - v1->unk_14.x = (FX32_ONE * (v2)) / param1->unk_14; + int angleDelta = CalculateCameraAngleDelta(cameraMan->currentAngle.x, cameraMan->targetAngle.x); + transition->angleStep.x = (FX32_ONE * angleDelta) / cameraAngleTemplate->transitionSteps; - v2 = ov9_02250EB0(v0->unk_0C.y, v0->unk_14.y); - v1->unk_14.y = (FX32_ONE * (v2)) / param1->unk_14; + angleDelta = CalculateCameraAngleDelta(cameraMan->currentAngle.y, cameraMan->targetAngle.y); + transition->angleStep.y = (FX32_ONE * angleDelta) / cameraAngleTemplate->transitionSteps; - v2 = ov9_02250EB0(v0->unk_0C.z, v0->unk_14.z); - v1->unk_14.z = (FX32_ONE * (v2)) / param1->unk_14; - } + angleDelta = CalculateCameraAngleDelta(cameraMan->currentAngle.z, cameraMan->targetAngle.z); + transition->angleStep.z = (FX32_ONE * angleDelta) / cameraAngleTemplate->transitionSteps; - return 1; + return TRUE; } -static void ov9_0224A1E4(UnkStruct_ov9_02249B04 *param0, int param1) +static void ov9_0224A1E4(DistWorldSystem *param0, int param1) { UnkStruct_ov9_0224A228 *v0 = ¶m0->unk_188; @@ -1812,7 +1832,7 @@ static int ov9_0224A2E4(UnkStruct_ov9_0224A294 *param0) return 0; } -static void ov9_0224A334(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224A334(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224A228 *v1 = ¶m0->unk_188; @@ -1843,7 +1863,7 @@ static void ov9_0224A374(UnkStruct_ov9_0224A294 *param0, MapObject *param1, int } } -static void ov9_0224A390(UnkStruct_ov9_02249B04 *param0, MapObject *param1, int param2) +static void ov9_0224A390(DistWorldSystem *param0, MapObject *param1, int param2) { int v0 = 0; UnkStruct_ov9_0224A228 *v1 = ¶m0->unk_188; @@ -1862,7 +1882,7 @@ static void ov9_0224A390(UnkStruct_ov9_02249B04 *param0, MapObject *param1, int GF_ASSERT(0); } -static void ov9_0224A3C4(UnkStruct_ov9_02249B04 *param0, UnkStruct_020216E0 *param1, int param2) +static void ov9_0224A3C4(DistWorldSystem *param0, UnkStruct_020216E0 *param1, int param2) { int v0 = 0; UnkStruct_ov9_0224A228 *v1 = ¶m0->unk_188; @@ -1882,7 +1902,7 @@ static void ov9_0224A3C4(UnkStruct_ov9_02249B04 *param0, UnkStruct_020216E0 *par GF_ASSERT(0); } -static void ov9_0224A408(UnkStruct_ov9_02249B04 *param0, const UnkStruct_020216E0 *param1) +static void ov9_0224A408(DistWorldSystem *param0, const UnkStruct_020216E0 *param1) { int v0 = 0; UnkStruct_ov9_0224A228 *v1 = ¶m0->unk_188; @@ -1901,7 +1921,7 @@ static void ov9_0224A408(UnkStruct_ov9_02249B04 *param0, const UnkStruct_020216E GF_ASSERT(0); } -static void ov9_0224A438(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224A228 *param1, UnkStruct_ov9_0224A294 *param2) +static void ov9_0224A438(DistWorldSystem *param0, UnkStruct_ov9_0224A228 *param1, UnkStruct_ov9_0224A294 *param2) { int v0; @@ -1934,7 +1954,7 @@ static void ov9_0224A438(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224A228 } } -static void ov9_0224A49C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224A49C(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224A228 *v1 = ¶m0->unk_188; @@ -1951,7 +1971,7 @@ static void ov9_0224A4C8(UnkStruct_020216E0 *param0, void *param1) NNS_G3dAnmObjSetFrame(v0->unk_10, v0->unk_0C); } -static void ov9_0224A4D0(UnkStruct_ov9_02249B04 *param0, MapObject *param1, int param2, int param3) +static void ov9_0224A4D0(DistWorldSystem *param0, MapObject *param1, int param2, int param3) { int v0 = 0; UnkStruct_ov9_0224A228 *v1 = ¶m0->unk_188; @@ -1976,7 +1996,7 @@ static void ov9_0224A4D0(UnkStruct_ov9_02249B04 *param0, MapObject *param1, int int ov9_0224A520(FieldSystem *fieldSystem, MapObject *param1) { int v0 = 0; - UnkStruct_ov9_02249B04 *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; UnkStruct_ov9_0224A228 *v2 = &v1->unk_188; UnkStruct_ov9_0224A294 *v3 = v2->unk_04; @@ -1996,27 +2016,27 @@ int ov9_0224A520(FieldSystem *fieldSystem, MapObject *param1) void ov9_0224A558(FieldSystem *fieldSystem, UnkStruct_020216E0 *param1, int param2) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; ov9_0224A3C4(v0, param1, param2); } void ov9_0224A564(FieldSystem *fieldSystem, const UnkStruct_020216E0 *param1) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; ov9_0224A408(v0, param1); } -static void ov9_0224A570(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224A570(DistWorldSystem *param0) { UnkStruct_ov9_0224A570 *v0 = ¶m0->unk_54; } -static void ov9_0224A574(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224A574(DistWorldSystem *param0) { UnkStruct_ov9_0224A570 *v0 = ¶m0->unk_54; } -static void *ov9_0224A578(UnkStruct_ov9_02249B04 *param0, int param1) +static void *ov9_0224A578(DistWorldSystem *param0, int param1) { GF_ASSERT(param1 <= 128); { @@ -2028,7 +2048,7 @@ static void *ov9_0224A578(UnkStruct_ov9_02249B04 *param0, int param1) } } -static void *ov9_0224A598(UnkStruct_ov9_02249B04 *param0) +static void *ov9_0224A598(DistWorldSystem *param0) { UnkStruct_ov9_0224A570 *v0 = ¶m0->unk_54; void *v1 = v0->unk_04; @@ -2042,16 +2062,16 @@ BOOL ov9_0224A59C(FieldSystem *fieldSystem, int param1) if (PersistedMapFeatures_GetID(v0) == DYNAMIC_MAP_FEATURES_DISTORTION_WORLD) { int v1, v2, v3, v4; - UnkStruct_ov9_02249B04 *v5 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v5 = fieldSystem->unk_04->dynamicMapFeaturesData; v4 = sub_02061434(fieldSystem->playerAvatar, param1); - ov9_02250F44(v5, &v1, &v2, &v3); + GetPlayerPos(v5, &v1, &v2, &v3); if (v4 == 1) { ov9_0224B748(v5, v1, v2, v3, param1); } - if (ov9_0224A8A0(v5, v1, v2, v3, param1) == 1) { + if (ApplyCameraAngleForPlayerPosition(v5, v1, v2, v3, param1) == 1) { (void)0; } @@ -2060,7 +2080,7 @@ BOOL ov9_0224A59C(FieldSystem *fieldSystem, int param1) } { - u32 v6 = ov9_022510D0(v5); + u32 v6 = DistWorldSystem_GetMapHeaderID(v5); if (v6 == 577) { if ((param1 == 3) && (v1 == 104) && (v2 == 170) && (v3 >= 76) && (v3 <= 79)) { @@ -2081,8 +2101,8 @@ BOOL ov9_0224A59C(FieldSystem *fieldSystem, int param1) BOOL ov9_0224A67C(FieldSystem *fieldSystem, int param1) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; - u32 v1 = ov9_022510D0(v0); + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + u32 v1 = DistWorldSystem_GetMapHeaderID(v0); switch (v1) { case 581: @@ -2092,7 +2112,7 @@ BOOL ov9_0224A67C(FieldSystem *fieldSystem, int param1) if (SystemVars_GetDistortionWorldProgress(v2) >= 10) { int v3, v4, v5; - ov9_02250F44(v0, &v3, &v4, &v5); + GetPlayerPos(v0, &v3, &v4, &v5); if ((v3 == 89) && (v4 == 65) && (v5 == 57)) { ScriptManager_Set(fieldSystem, 2, NULL); @@ -2105,7 +2125,7 @@ BOOL ov9_0224A67C(FieldSystem *fieldSystem, int param1) if (param1 == 1) { int v6, v7, v8; - ov9_02250F44(v0, &v6, &v7, &v8); + GetPlayerPos(v0, &v6, &v7, &v8); if ((v6 == 15) && (v7 == 1) && (v8 == 25)) { ScriptManager_Set(fieldSystem, 4, NULL); @@ -2129,9 +2149,9 @@ BOOL ov9_0224A71C(FieldSystem *fieldSystem) { int v1, v2, v3; int v4 = PlayerAvatar_GetDir(fieldSystem->playerAvatar); - UnkStruct_ov9_02249B04 *v5 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v5 = fieldSystem->unk_04->dynamicMapFeaturesData; - ov9_02250F44(v5, &v1, &v2, &v3); + GetPlayerPos(v5, &v1, &v2, &v3); if (ov9_0224D040(v5, v1, v2, v3) == 1) { return 1; @@ -2142,7 +2162,7 @@ BOOL ov9_0224A71C(FieldSystem *fieldSystem) } { - u32 v6 = ov9_022510D0(v5); + u32 v6 = DistWorldSystem_GetMapHeaderID(v5); VarsFlags *v7 = SaveData_GetVarsFlags(v5->fieldSystem->saveData); if ((v6 == 581) && (v4 == 0)) { @@ -2166,8 +2186,8 @@ BOOL ov9_0224A71C(FieldSystem *fieldSystem) BOOL ov9_0224A800(FieldSystem *fieldSystem, int param1) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; - u32 v1 = ov9_022510D0(v0); + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + u32 v1 = DistWorldSystem_GetMapHeaderID(v0); switch (v1) { case 581: @@ -2177,7 +2197,7 @@ BOOL ov9_0224A800(FieldSystem *fieldSystem, int param1) if (SystemVars_GetDistortionWorldProgress(v2) >= 10) { int v3, v4, v5; - ov9_02250F44(v0, &v3, &v4, &v5); + GetPlayerPos(v0, &v3, &v4, &v5); if ((v3 == 89) && (v4 == 65) && (v5 == 57)) { ScriptManager_Set(fieldSystem, 2, NULL); @@ -2190,7 +2210,7 @@ BOOL ov9_0224A800(FieldSystem *fieldSystem, int param1) if (param1 == 1) { int v6, v7, v8; - ov9_02250F44(v0, &v6, &v7, &v8); + GetPlayerPos(v0, &v6, &v7, &v8); if ((v6 == 15) && (v7 == 1) && (v8 == 25)) { ScriptManager_Set(fieldSystem, 4, NULL); @@ -2203,19 +2223,19 @@ BOOL ov9_0224A800(FieldSystem *fieldSystem, int param1) return 0; } -static BOOL ov9_0224A8A0(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4) +static BOOL ApplyCameraAngleForPlayerPosition(DistWorldSystem *system, int playerX, int playerY, int playerZ, int playerDir) { - const UnkStruct_ov9_0224A8A0 *v0 = ov9_0224C740(param0, param1, param2, param3, param4); + const DistWorldCameraAngleTemplate *cameraAngleTemplate = FindCameraAngleForPlayerPosition(system, playerX, playerY, playerZ, playerDir); - if (v0 == NULL) { - return 0; + if (cameraAngleTemplate == NULL) { + return FALSE; } - ov9_0224A148(param0, v0); - return 1; + DoCameraTransition(system, cameraAngleTemplate); + return TRUE; } -static void ov9_0224A8C0(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224A8C0(DistWorldSystem *param0) { u32 v0, v1; int v2, v3, v4, v5; @@ -2223,7 +2243,7 @@ static void ov9_0224A8C0(UnkStruct_ov9_02249B04 *param0) PlayerAvatar *playerAvatar = param0->fieldSystem->playerAvatar; MapObject *v8 = Player_MapObject(playerAvatar); - ov9_02250F44(param0, &v2, &v3, &v4); + GetPlayerPos(param0, &v2, &v3, &v4); v0 = ov9_0224C494(param0); v0 = ov9_022510D8(v0); @@ -2280,7 +2300,7 @@ static void ov9_0224A8C0(UnkStruct_ov9_02249B04 *param0) ov9_0224A390(param0, v8, v6[v0]); } -static void ov9_0224A9E8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224A9E8(DistWorldSystem *param0) { PlayerAvatar *v0 = param0->fieldSystem->playerAvatar; @@ -2288,7 +2308,7 @@ static void ov9_0224A9E8(UnkStruct_ov9_02249B04 *param0) PlayerAvatar_ClearSpeed(v0); } -static BOOL ov9_0224AA00(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4) +static BOOL ov9_0224AA00(DistWorldSystem *param0, int param1, int param2, int param3, int param4) { { const UnkStruct_ov9_0224AA00 *v0; @@ -2306,7 +2326,7 @@ static BOOL ov9_0224AA00(UnkStruct_ov9_02249B04 *param0, int param1, int param2, return 0; } -static void ov9_0224AA34(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224AA00 *param1) +static void ov9_0224AA34(DistWorldSystem *param0, const UnkStruct_ov9_0224AA00 *param1) { UnkStruct_ov9_0224AC58 *v0 = ov9_0224A578(param0, sizeof(UnkStruct_ov9_0224AC58)); @@ -2336,7 +2356,7 @@ static void ov9_0224AA34(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_022 static BOOL ov9_0224AAD4(FieldTask *param0) { FieldSystem *fieldSystem = FieldTask_GetFieldSystem(param0); - UnkStruct_ov9_02249B04 *v1 = FieldTask_GetEnv(param0); + DistWorldSystem *v1 = FieldTask_GetEnv(param0); UnkStruct_ov9_0224AC58 *v2 = ov9_0224A598(v1); PlayerAvatar *playerAvatar = fieldSystem->playerAvatar; MapObject *v4 = Player_MapObject(playerAvatar); @@ -2551,7 +2571,7 @@ static BOOL ov9_0224AC58(UnkStruct_ov9_0224AC58 *param0, MapObject *param1) return 0; } -static void ov9_0224ADC0(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224ADC0(DistWorldSystem *param0) { char *v0; @@ -2620,12 +2640,12 @@ static void ov9_0224ADC0(UnkStruct_ov9_02249B04 *param0) GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1); } -static void ov9_0224AED8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224AED8(DistWorldSystem *param0) { G2_BlendNone(); } -static void ov9_0224AEE4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B064 *param1, NARC *param2) +static void ov9_0224AEE4(DistWorldSystem *param0, UnkStruct_ov9_0224B064 *param1, NARC *param2) { param1->unk_00 = SpriteList_InitRendering(16, ¶m1->unk_04, HEAP_ID_FIELD); SetMainScreenViewRect(¶m1->unk_04, (FX32_ONE * 0), (FX32_ONE * -512)); @@ -2748,7 +2768,7 @@ static Sprite *ov9_0224B130(UnkStruct_ov9_0224B064 *param0, const VecFx32 *param return v2; } -static void ov9_0224B1B4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov5_021DF47C *param1, UnkStruct_ov9_0224B064 *param2) +static void ov9_0224B1B4(DistWorldSystem *param0, UnkStruct_ov5_021DF47C *param1, UnkStruct_ov9_0224B064 *param2) { int v0; UnkStruct_ov9_0224B1B4 v1; @@ -2756,7 +2776,7 @@ static void ov9_0224B1B4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov5_021DF47C param0->unk_1EC2 = 0; - if (ov9_022510D0(param0) == 582) { + if (DistWorldSystem_GetMapHeaderID(param0) == 582) { VarsFlags *v3 = SaveData_GetVarsFlags(param0->fieldSystem->saveData); u32 v4 = SystemVars_GetDistortionWorldProgress(v3); @@ -2853,7 +2873,7 @@ static const UnkStruct_ov101_021D86B0 Unk_ov9_02251508 = { ov9_0224B3A4 }; -static void ov9_0224B3A8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B3A8(DistWorldSystem *param0) { UnkStruct_ov5_021D57D8 *v0 = param0->fieldSystem->unk_48; @@ -2873,12 +2893,12 @@ static void ov9_0224B3A8(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224B3F4(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B3F4(DistWorldSystem *param0) { return; } -static void ov9_0224B3F8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B3F8 *param2, const UnkStruct_ov9_0224B6CC *param3, int param4, u32 param5) +static void ov9_0224B3F8(DistWorldSystem *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B3F8 *param2, const UnkStruct_ov9_0224B6CC *param3, int param4, u32 param5) { { GF_ASSERT(param1->unk_08 == NULL); @@ -2902,12 +2922,12 @@ static void ov9_0224B3F8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B528 } } -static void ov9_0224B45C(UnkStruct_ov9_02249B04 *param0, int param1) +static void ov9_0224B45C(DistWorldSystem *param0, int param1) { int v0; const UnkStruct_ov9_022530A4 *v1; - v0 = ov9_022510D0(param0); + v0 = DistWorldSystem_GetMapHeaderID(param0); v1 = ov9_0224D720(v0); if (ov9_0224C27C(param0)) { @@ -2915,7 +2935,7 @@ static void ov9_0224B45C(UnkStruct_ov9_02249B04 *param0, int param1) const UnkStruct_ov9_0224B3F8 *v3 = ov9_0224C8AC(param0); const UnkStruct_ov9_0224B6CC *v4 = ov9_0224C8C4(param0); - if ((param1 == 1) || (ov9_02249D38(param0) == 0)) { + if ((param1 == 1) || (IsPersistedDataValid(param0) == 0)) { v2->unk_00 = ~v3->unk_08; ov9_02249D44(param0, v2->unk_00); } else { @@ -2926,12 +2946,12 @@ static void ov9_0224B45C(UnkStruct_ov9_02249B04 *param0, int param1) } } -static void ov9_0224B4CC(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B4CC(DistWorldSystem *param0) { int v0; const UnkStruct_ov9_022530A4 *v1; - v0 = ov9_022510D0(param0); + v0 = DistWorldSystem_GetMapHeaderID(param0); v1 = ov9_0224D720(v0); v0 = v1->unk_08; @@ -2944,7 +2964,7 @@ static void ov9_0224B4CC(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224B514(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B514(DistWorldSystem *param0) { ov9_0224B45C(param0, 0); ov9_0224B4CC(param0); @@ -2968,35 +2988,35 @@ static void ov9_0224B528(UnkStruct_ov9_0224B528 *param0) } } -static void ov9_0224B560(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B560(DistWorldSystem *param0) { ov9_0224B570(param0); ov9_0224B580(param0); } -static void ov9_0224B570(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B570(DistWorldSystem *param0) { ov9_0224B528(¶m0->unk_171C); } -static void ov9_0224B580(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B580(DistWorldSystem *param0) { ov9_0224B528(¶m0->unk_1728); } -static void ov9_0224B590(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B590(DistWorldSystem *param0) { param0->unk_171C.unk_08 = NULL; param0->unk_171C.unk_04 = 0; } -static void ov9_0224B5A0(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B5A0(DistWorldSystem *param0) { param0->unk_1728.unk_08 = NULL; param0->unk_1728.unk_04 = 0; } -static void ov9_0224B5B0(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B5B0(DistWorldSystem *param0) { GF_ASSERT(param0->unk_1728.unk_08 == NULL); GF_ASSERT(param0->unk_1728.unk_04 == 0); @@ -3004,7 +3024,7 @@ static void ov9_0224B5B0(UnkStruct_ov9_02249B04 *param0) param0->unk_1728 = param0->unk_171C; } -static void ov9_0224B5EC(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B5EC(DistWorldSystem *param0) { GF_ASSERT(param0->unk_171C.unk_08 == NULL); GF_ASSERT(param0->unk_171C.unk_04 == 0); @@ -3012,7 +3032,7 @@ static void ov9_0224B5EC(UnkStruct_ov9_02249B04 *param0) param0->unk_171C = param0->unk_1728; } -static void ov9_0224B624(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224B624(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224B528 *v0 = ¶m0->unk_171C; @@ -3022,7 +3042,7 @@ static void ov9_0224B624(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_02249D44(param0, v0->unk_00); } -static void ov9_0224B64C(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224B64C(DistWorldSystem *param0, u32 param1) { u32 v0 = ~(1 << param1); UnkStruct_ov9_0224B528 *v1 = ¶m0->unk_171C; @@ -3033,7 +3053,7 @@ static void ov9_0224B64C(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_02249D44(param0, v1->unk_00); } -static BOOL ov9_0224B674(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224B674(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224B528 *v0 = ¶m0->unk_171C; @@ -3046,7 +3066,7 @@ static BOOL ov9_0224B674(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224B698(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224B698(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224B528 *v0 = ¶m0->unk_1728; @@ -3059,13 +3079,13 @@ static BOOL ov9_0224B698(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static void ov9_0224B6BC(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224B6BC(DistWorldSystem *param0) { UnkStruct_ov9_0224B528 *v0 = ¶m0->unk_171C; ov9_02249D44(param0, v0->unk_00); } -static void ov9_0224B6CC(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B6CC *param2, int param3) +static void ov9_0224B6CC(DistWorldSystem *param0, UnkStruct_ov9_0224B528 *param1, const UnkStruct_ov9_0224B6CC *param2, int param3) { if (param1->unk_04) { int v0; @@ -3076,7 +3096,7 @@ static void ov9_0224B6CC(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224B528 } } -static UnkStruct_ov101_021D5D90 *ov9_0224B708(UnkStruct_ov9_02249B04 *param0, int param1, int param2, const UnkStruct_ov9_0224B6CC *param3) +static UnkStruct_ov101_021D5D90 *ov9_0224B708(DistWorldSystem *param0, int param1, int param2, const UnkStruct_ov9_0224B6CC *param3) { UnkStruct_ov101_021D5D90 *v0; UnkStruct_ov9_0224B708 v1; @@ -3093,7 +3113,7 @@ static UnkStruct_ov101_021D5D90 *ov9_0224B708(UnkStruct_ov9_02249B04 *param0, in return v0; } -static void ov9_0224B748(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4) +static void ov9_0224B748(DistWorldSystem *param0, int param1, int param2, int param3, int param4) { if (ov9_0224C27C(param0)) { const UnkStruct_ov9_0224B3F8 *v0 = ov9_0224C8AC(param0); @@ -3106,7 +3126,7 @@ static void ov9_0224B748(UnkStruct_ov9_02249B04 *param0, int param1, int param2, do { if (param4 == v2->unk_04) { - if (ov9_02250E6C(param1, param2, param3, &v2->unk_08)) { + if (DistWorldBounds_AreCoordinatesInBounds(param1, param2, param3, &v2->unk_08)) { if (v2->unk_06 == 0) { ov9_0224B624(param0, v2->unk_00); } else { @@ -3121,7 +3141,7 @@ static void ov9_0224B748(UnkStruct_ov9_02249B04 *param0, int param1, int param2, } } -static BOOL ov9_0224B7B0(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224B7B0(DistWorldSystem *param0, u32 param1) { int v0; u16 v1; @@ -3157,7 +3177,7 @@ static BOOL ov9_0224B7B0(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224B844(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224B844(DistWorldSystem *param0, u32 param1) { int v0; u16 v1; @@ -3193,7 +3213,7 @@ static BOOL ov9_0224B844(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224B8DC(UnkStruct_ov9_02249B04 *param0, int param1) +static BOOL ov9_0224B8DC(DistWorldSystem *param0, int param1) { int v0; u16 v1; @@ -3251,7 +3271,7 @@ static int ov9_0224B964(UnkStruct_ov101_021D5D90 *param0, void *param1) { BOOL v4; - if (ov9_022510D0(v3->unk_14) == v3->unk_02) { + if (DistWorldSystem_GetMapHeaderID(v3->unk_14) == v3->unk_02) { v4 = ov9_0224B674(v3->unk_14, v1->unk_00); } else { v4 = ov9_0224B698(v3->unk_14, v1->unk_00); @@ -3315,7 +3335,7 @@ static void ov9_0224BA6C(UnkStruct_ov101_021D5D90 *param0, void *param1) UnkStruct_ov9_0224BA48 *v1 = param1; UnkStruct_ov9_0224B708 *v2 = &v1->unk_28; UnkStruct_ov9_0224B6CC *v3 = &v2->unk_08; - u32 v4 = 0, v5 = ov9_022510D0(v2->unk_14); + u32 v4 = 0, v5 = DistWorldSystem_GetMapHeaderID(v2->unk_14); if ((v2->unk_08.unk_04 == 0) && (v5 == v2->unk_02)) { int v6 = 0; @@ -3357,7 +3377,7 @@ static void ov9_0224BA6C(UnkStruct_ov101_021D5D90 *param0, void *param1) { BOOL v10; - if (ov9_022510D0(v2->unk_14) == v2->unk_02) { + if (DistWorldSystem_GetMapHeaderID(v2->unk_14) == v2->unk_02) { v10 = ov9_0224B674(v2->unk_14, v3->unk_00); } else { v10 = ov9_0224B698(v2->unk_14, v3->unk_00); @@ -3434,7 +3454,7 @@ static int ov9_0224BC08(UnkStruct_ov101_021D5D90 *param0, void *param1) { BOOL v4; - if (ov9_022510D0(v3->unk_14) == v3->unk_02) { + if (DistWorldSystem_GetMapHeaderID(v3->unk_14) == v3->unk_02) { v4 = ov9_0224B674(v3->unk_14, v1->unk_00); } else { v4 = ov9_0224B698(v3->unk_14, v1->unk_00); @@ -3484,7 +3504,7 @@ static void ov9_0224BD18(UnkStruct_ov101_021D5D90 *param0, void *param1) { BOOL v3; - if (ov9_022510D0(v1->unk_14) == v1->unk_02) { + if (DistWorldSystem_GetMapHeaderID(v1->unk_14) == v1->unk_02) { v3 = ov9_0224B674(v1->unk_14, v2->unk_00); } else { v3 = ov9_0224B698(v1->unk_14, v2->unk_00); @@ -3554,26 +3574,26 @@ static void ov9_0224BDE8(UnkStruct_ov101_021D5D90 *param0, void *param1) } } -static void ov9_0224BE14(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224BE14(DistWorldSystem *param0) { - int v0; + enum MapHeader mapHeaderID; const UnkStruct_ov9_022530A4 *v1; - v0 = ov9_022510D0(param0); - v1 = ov9_0224D720(v0); + mapHeaderID = DistWorldSystem_GetMapHeaderID(param0); + v1 = ov9_0224D720(mapHeaderID); ov9_0224BFBC(param0); - ov9_0224C0F8(param0, v0, v1->unk_08); + ov9_0224C0F8(param0, mapHeaderID, v1->unk_08); ov9_0224C2C4(param0); ov9_0224C640(param0); - ov9_0224C6E4(param0); + InitCameraAngleTemplates(param0); ov9_0224C808(param0); - if (ov9_02249D38(param0) == 0) { + if (IsPersistedDataValid(param0) == 0) { int v2, v3, v4; - ov9_02250F44(param0, &v2, &v3, &v4); + GetPlayerPos(param0, &v2, &v3, &v4); ov9_0224C378(param0, v2, v3, v4, 4); } else { u32 v5 = ov9_02249E44(param0); @@ -3581,9 +3601,9 @@ static void ov9_0224BE14(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224BE8C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224BE8C(DistWorldSystem *param0) { - ov9_0224C724(param0); + ResetCameraAngleTemplates(param0); ov9_0224C680(param0); ov9_0224C300(param0); ov9_0224C854(param0); @@ -3591,11 +3611,11 @@ static void ov9_0224BE8C(UnkStruct_ov9_02249B04 *param0) ov9_0224BFFC(param0); } -static void ov9_0224BEB4(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224BEB4(DistWorldSystem *param0, u32 param1) { ov9_0224C844(param0); ov9_0224C184(param0); - ov9_0224C724(param0); + ResetCameraAngleTemplates(param0); ov9_0224C680(param0); ov9_0224C300(param0); ov9_0224C194(param0); @@ -3606,13 +3626,13 @@ static void ov9_0224BEB4(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_0224C2C4(param0); ov9_0224C44C(param0); ov9_0224C640(param0); - ov9_0224C6E4(param0); + InitCameraAngleTemplates(param0); ov9_0224C7C8(param0); } -static void ov9_0224BF18(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224BF18(DistWorldSystem *param0, u32 param1) { - ov9_0224C724(param0); + ResetCameraAngleTemplates(param0); ov9_0224C680(param0); ov9_0224C300(param0); ov9_0224C834(param0); @@ -3625,7 +3645,7 @@ static void ov9_0224BF18(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_0224C2C4(param0); ov9_0224C44C(param0); ov9_0224C640(param0); - ov9_0224C6E4(param0); + InitCameraAngleTemplates(param0); if (param1 != 593) { ov9_0224C120(param0, param1); @@ -3633,12 +3653,12 @@ static void ov9_0224BF18(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static void ov9_0224BF8C(NARC *param0, UnkStruct_ov9_0224BFE0 *param1) +static void ov9_0224BF8C(NARC *distortionWorldNARC, UnkStruct_ov9_0224BFE0 *param1) { - u32 v0 = NARC_GetMemberSize(param0, 0); + u32 v0 = NARC_GetMemberSize(distortionWorldNARC, 0); param1->unk_08 = Heap_AllocFromHeap(HEAP_ID_FIELD, v0); - NARC_ReadWholeMember(param0, 0, param1->unk_08); + NARC_ReadWholeMember(distortionWorldNARC, 0, param1->unk_08); param1->unk_00 = *(int *)param1->unk_08; param1->unk_04 = param1->unk_08; @@ -3646,10 +3666,10 @@ static void ov9_0224BF8C(NARC *param0, UnkStruct_ov9_0224BFE0 *param1) (u8 *)param1->unk_04 += 4; } -static void ov9_0224BFBC(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224BFBC(DistWorldSystem *param0) { GF_ASSERT(param0->unk_169C.unk_00.unk_08 == NULL); - ov9_0224BF8C(param0->unk_08, ¶m0->unk_169C.unk_00); + ov9_0224BF8C(param0->distortionWorldNARC, ¶m0->unk_169C.unk_00); } static void ov9_0224BFE0(UnkStruct_ov9_0224BFE0 *param0) @@ -3660,18 +3680,18 @@ static void ov9_0224BFE0(UnkStruct_ov9_0224BFE0 *param0) param0->unk_08 = NULL; } -static void ov9_0224BFFC(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224BFFC(DistWorldSystem *param0) { ov9_0224BFE0(¶m0->unk_169C.unk_00); } -static const UnkStruct_ov9_0224C034 *ov9_0224C00C(const UnkStruct_ov9_0224BFE0 *param0, int param1) +static const UnkStruct_ov9_0224C034 *ov9_0224C00C(const UnkStruct_ov9_0224BFE0 *param0, enum MapHeader mapHeaderID) { int v0 = 0; const UnkStruct_ov9_0224C034 *v1 = param0->unk_04; while (v0 < param0->unk_00) { - if (param1 == v1->unk_00) { + if (mapHeaderID == v1->mapHeaderID) { return v1; } @@ -3684,15 +3704,15 @@ static const UnkStruct_ov9_0224C034 *ov9_0224C00C(const UnkStruct_ov9_0224BFE0 * return NULL; } -static const UnkStruct_ov9_0224C034 *ov9_0224C034(UnkStruct_ov9_02249B04 *param0, int param1) +static const UnkStruct_ov9_0224C034 *ov9_0224C034(DistWorldSystem *system, enum MapHeader mapHeaderID) { - return ov9_0224C00C(¶m0->unk_169C.unk_00, param1); + return ov9_0224C00C(&system->unk_169C.unk_00, mapHeaderID); } -static u32 ov9_0224C044(UnkStruct_ov9_02249B04 *param0, int param1) +static u32 FindNARCIndex(DistWorldSystem *system, enum MapHeader mapHeaderID) { - const UnkStruct_ov9_0224C034 *v0 = ov9_0224C034(param0, param1); - return v0->unk_04 + (0 + 1); + const UnkStruct_ov9_0224C034 *v0 = ov9_0224C034(system, mapHeaderID); + return v0->unk_04 + 1; } static void ov9_0224C050(const UnkStruct_ov9_0224BFE0 *param0, int param1, int *param2, int *param3, int *param4) @@ -3704,121 +3724,121 @@ static void ov9_0224C050(const UnkStruct_ov9_0224BFE0 *param0, int param1, int * *param4 = v0->unk_0A; } -static void ov9_0224C070(UnkStruct_ov9_02249B04 *param0, int param1, int *param2, int *param3, int *param4) +static void ov9_0224C070(DistWorldSystem *param0, int param1, int *param2, int *param3, int *param4) { ov9_0224C050(¶m0->unk_169C.unk_00, param1, param2, param3, param4); } -static void ov9_0224C088(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224C14C *param1, int param2) +static void DistWorldFile_Load(DistWorldSystem *system, DistWorldFile *file, enum MapHeader mapHeaderID) { - GF_ASSERT(param1->unk_18 == NULL); + GF_ASSERT(file->buffer == NULL); - memset(param1, 0, sizeof(UnkStruct_ov9_0224C14C)); - param1->unk_00 = param2; + memset(file, 0, sizeof(DistWorldFile)); + file->mapHeaderID = mapHeaderID; - if (param2 != 593) { - u8 *v0; - u32 v1, v2; - UnkStruct_ov9_0224C088 *v3; + if (mapHeaderID != MAP_HEADER_COUNT) { + u8 *data; + u32 narcMemberSize, narcIndex; + DistWorldFileHeader *header; - v2 = ov9_0224C044(param0, param2); - v1 = NARC_GetMemberSize(param0->unk_08, v2); + narcIndex = FindNARCIndex(system, mapHeaderID); + narcMemberSize = NARC_GetMemberSize(system->distortionWorldNARC, narcIndex); - param1->unk_18 = Heap_AllocFromHeapAtEnd(HEAP_ID_FIELD, v1); - NARC_ReadWholeMember(param0->unk_08, v2, param1->unk_18); + file->buffer = Heap_AllocFromHeapAtEnd(HEAP_ID_FIELD, narcMemberSize); + NARC_ReadWholeMember(system->distortionWorldNARC, narcIndex, file->buffer); - v3 = param1->unk_18; - param1->unk_14 = v3; + header = file->buffer; + file->header = header; - v0 = param1->unk_18; - v0 += sizeof(UnkStruct_ov9_0224C088); + data = file->buffer; + data += sizeof(DistWorldFileHeader); - param1->unk_04 = v0; - param1->unk_08 = (u8 *)param1->unk_04 + v3->unk_04; - param1->unk_0C = (u8 *)param1->unk_08 + v3->unk_08; - param1->unk_10 = (u8 *)param1->unk_0C + v3->unk_0C; + file->unk_04 = data; + file->unk_08 = (u8 *)file->unk_04 + header->unk_04; + file->cameraAngleSection = (DistWorldFileCameraAngleSection *)((u8 *)file->unk_08 + header->unk_08); + file->unk_10 = (u8 *)file->cameraAngleSection + header->cameraAngleSectionSize; } } -static void ov9_0224C0F8(UnkStruct_ov9_02249B04 *param0, int param1, int param2) +static void ov9_0224C0F8(DistWorldSystem *param0, enum MapHeader mapHeaderID, int param2) { - ov9_0224C10C(param0, param1); + ov9_0224C10C(param0, mapHeaderID); ov9_0224C120(param0, param2); } -static void ov9_0224C10C(UnkStruct_ov9_02249B04 *param0, int param1) +static void ov9_0224C10C(DistWorldSystem *param0, enum MapHeader mapHeaderID) { - ov9_0224C088(param0, ¶m0->unk_169C.unk_0C, param1); + DistWorldFile_Load(param0, ¶m0->unk_169C.distortionWorldFile, mapHeaderID); } -static void ov9_0224C120(UnkStruct_ov9_02249B04 *param0, int param1) +static void ov9_0224C120(DistWorldSystem *param0, enum MapHeader mapHeaderID) { - ov9_0224C088(param0, ¶m0->unk_169C.unk_58, param1); + DistWorldFile_Load(param0, ¶m0->unk_169C.unk_58, mapHeaderID); } -static void ov9_0224C134(UnkStruct_ov9_0224C14C *param0) +static void DistWorldFile_Invalidate(DistWorldFile *file) { - memset(param0, 0, sizeof(UnkStruct_ov9_0224C14C)); - param0->unk_00 = 593; + memset(file, 0, sizeof(DistWorldFile)); + file->mapHeaderID = MAP_HEADER_COUNT; } -static void ov9_0224C14C(UnkStruct_ov9_0224C14C *param0) +static void DistWorldFile_Free(DistWorldFile *file) { - if (param0->unk_18 != NULL) { - Heap_FreeToHeap(param0->unk_18); + if (file->buffer != NULL) { + Heap_FreeToHeap(file->buffer); } - ov9_0224C134(param0); + DistWorldFile_Invalidate(file); } -static void ov9_0224C164(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C164(DistWorldSystem *param0) { ov9_0224C174(param0); ov9_0224C184(param0); } -static void ov9_0224C174(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C174(DistWorldSystem *param0) { - ov9_0224C14C(¶m0->unk_169C.unk_0C); + DistWorldFile_Free(¶m0->unk_169C.distortionWorldFile); } -static void ov9_0224C184(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C184(DistWorldSystem *param0) { - ov9_0224C14C(¶m0->unk_169C.unk_58); + DistWorldFile_Free(¶m0->unk_169C.unk_58); } -static void ov9_0224C194(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C194(DistWorldSystem *param0) { - GF_ASSERT(param0->unk_169C.unk_58.unk_00 == 593); - GF_ASSERT(param0->unk_169C.unk_58.unk_18 == NULL); + GF_ASSERT(param0->unk_169C.unk_58.mapHeaderID == MAP_HEADER_COUNT); + GF_ASSERT(param0->unk_169C.unk_58.buffer == NULL); - param0->unk_169C.unk_58 = param0->unk_169C.unk_0C; + param0->unk_169C.unk_58 = param0->unk_169C.distortionWorldFile; - ov9_0224C134(¶m0->unk_169C.unk_0C); + DistWorldFile_Invalidate(¶m0->unk_169C.distortionWorldFile); } -static void ov9_0224C1E4(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C1E4(DistWorldSystem *param0) { - GF_ASSERT(param0->unk_169C.unk_0C.unk_00 == 593); - GF_ASSERT(param0->unk_169C.unk_0C.unk_18 == NULL); + GF_ASSERT(param0->unk_169C.distortionWorldFile.mapHeaderID == MAP_HEADER_COUNT); + GF_ASSERT(param0->unk_169C.distortionWorldFile.buffer == NULL); - param0->unk_169C.unk_0C = param0->unk_169C.unk_58; - ov9_0224C134(¶m0->unk_169C.unk_58); + param0->unk_169C.distortionWorldFile = param0->unk_169C.unk_58; + DistWorldFile_Invalidate(¶m0->unk_169C.unk_58); } -static int ov9_0224C234(UnkStruct_ov9_0224C14C *param0) +static int ov9_0224C234(DistWorldFile *param0) { - UnkStruct_ov9_0224C088 *v0 = param0->unk_14; + DistWorldFileHeader *v0 = param0->header; return v0->unk_04; } -static int ov9_0224C23C(UnkStruct_ov9_0224C14C *param0) +static int ov9_0224C23C(DistWorldFile *param0) { int *v0 = param0->unk_04; return *v0; } -static UnkStruct_ov9_0224C324 *ov9_0224C244(UnkStruct_ov9_0224C14C *param0) +static UnkStruct_ov9_0224C324 *ov9_0224C244(DistWorldFile *param0) { u8 *v0 = param0->unk_04; @@ -3826,19 +3846,19 @@ static UnkStruct_ov9_0224C324 *ov9_0224C244(UnkStruct_ov9_0224C14C *param0) return (UnkStruct_ov9_0224C324 *)v0; } -static int ov9_0224C24C(UnkStruct_ov9_0224C14C *param0) +static int ov9_0224C24C(DistWorldFile *param0) { - UnkStruct_ov9_0224C088 *v0 = param0->unk_14; + DistWorldFileHeader *v0 = param0->header; return v0->unk_08; } -static int ov9_0224C254(UnkStruct_ov9_0224C14C *param0) +static int ov9_0224C254(DistWorldFile *param0) { int *v0 = param0->unk_08; return *v0; } -static UnkStruct_ov9_0224AA00 *ov9_0224C25C(UnkStruct_ov9_0224C14C *param0) +static UnkStruct_ov9_0224AA00 *ov9_0224C25C(DistWorldFile *param0) { u8 *v0 = param0->unk_08; @@ -3846,62 +3866,61 @@ static UnkStruct_ov9_0224AA00 *ov9_0224C25C(UnkStruct_ov9_0224C14C *param0) return (UnkStruct_ov9_0224AA00 *)v0; } -static int ov9_0224C264(UnkStruct_ov9_0224C14C *param0) +static int DistWorldFile_GetCameraAngleSectionSize(DistWorldFile *file) { - UnkStruct_ov9_0224C088 *v0 = param0->unk_14; - return v0->unk_0C; + DistWorldFileHeader *header = file->header; + return header->cameraAngleSectionSize; } -static int ov9_0224C26C(UnkStruct_ov9_0224C14C *param0) +static int DistWorldFile_GetCameraAngleCount(DistWorldFile *file) { - int *v0 = param0->unk_0C; - return *v0; + return file->cameraAngleSection->count; } -static UnkStruct_ov9_0224A8A0 *ov9_0224C274(UnkStruct_ov9_0224C14C *param0) +static DistWorldCameraAngleTemplate *DistWorldFile_GetCameraAngleTemplates(DistWorldFile *file) { - u8 *v0 = param0->unk_0C; + u8 *templates = (u8 *)file->cameraAngleSection; + templates += sizeof(int); - v0 += 4; - return (UnkStruct_ov9_0224A8A0 *)v0; + return (DistWorldCameraAngleTemplate *)templates; } -static int ov9_0224C27C(UnkStruct_ov9_02249B04 *param0) +static int ov9_0224C27C(DistWorldSystem *param0) { - UnkStruct_ov9_0224C14C *v0 = ¶m0->unk_169C.unk_0C; - UnkStruct_ov9_0224C088 *v1 = v0->unk_14; + DistWorldFile *v0 = ¶m0->unk_169C.distortionWorldFile; + DistWorldFileHeader *v1 = v0->header; return v1->unk_10; } -static int ov9_0224C288(UnkStruct_ov9_02249B04 *param0) +static int ov9_0224C288(DistWorldSystem *param0) { int v0 = 0; - UnkStruct_ov9_0224C14C *v1 = ¶m0->unk_169C.unk_58; + DistWorldFile *v1 = ¶m0->unk_169C.unk_58; - if (v1->unk_00 != 593) { - UnkStruct_ov9_0224C088 *v2 = v1->unk_14; + if (v1->mapHeaderID != MAP_HEADER_COUNT) { + DistWorldFileHeader *v2 = v1->header; v0 = v2->unk_10; } return v0; } -static const UnkStruct_ov9_0224B3F8 *ov9_0224C2A8(UnkStruct_ov9_0224C14C *param0) +static const UnkStruct_ov9_0224B3F8 *ov9_0224C2A8(DistWorldFile *param0) { UnkStruct_ov9_0224B3F8 *v0 = param0->unk_10; return v0; } -static const UnkStruct_ov9_0224B6CC *ov9_0224C2AC(UnkStruct_ov9_0224C14C *param0) +static const UnkStruct_ov9_0224B6CC *ov9_0224C2AC(DistWorldFile *param0) { const u8 *v0 = param0->unk_10; - v0 += sizeof(UnkStruct_ov9_0224B3F8); + return (UnkStruct_ov9_0224B6CC *)v0; } -static const UnkStruct_ov9_0224B748 *ov9_0224C2B4(UnkStruct_ov9_0224C14C *param0) +static const UnkStruct_ov9_0224B748 *ov9_0224C2B4(DistWorldFile *param0) { const UnkStruct_ov9_0224B3F8 *v0 = param0->unk_10; const u8 *v1 = param0->unk_10; @@ -3910,9 +3929,9 @@ static const UnkStruct_ov9_0224B748 *ov9_0224C2B4(UnkStruct_ov9_0224C14C *param0 return (UnkStruct_ov9_0224B748 *)v1; } -static void ov9_0224C2C4(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C2C4(DistWorldSystem *param0) { - UnkStruct_ov9_0224C14C *v0 = ¶m0->unk_169C.unk_0C; + DistWorldFile *v0 = ¶m0->unk_169C.distortionWorldFile; GF_ASSERT(param0->unk_169C.unk_28.unk_08 == NULL); @@ -3924,7 +3943,7 @@ static void ov9_0224C2C4(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224C300(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C300(DistWorldSystem *param0) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; @@ -3935,7 +3954,7 @@ static void ov9_0224C300(UnkStruct_ov9_02249B04 *param0) memset(v0, 0, sizeof(UnkStruct_ov9_0224C2C4)); } -static BOOL ov9_0224C324(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, s16 param4) +static BOOL ov9_0224C324(DistWorldSystem *param0, int param1, int param2, int param3, s16 param4) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; const UnkStruct_ov9_0224C324 *v1 = v0->unk_08; @@ -3946,7 +3965,7 @@ static BOOL ov9_0224C324(UnkStruct_ov9_02249B04 *param0, int param1, int param2, } do { - if (ov9_02250E6C(param1, param2, param3, &v1->unk_04) == 1) { + if (DistWorldBounds_AreCoordinatesInBounds(param1, param2, param3, &v1->unk_04) == 1) { if ((param4 != 4) || (param4 == v1->unk_00)) { return 1; } @@ -3959,7 +3978,7 @@ static BOOL ov9_0224C324(UnkStruct_ov9_02249B04 *param0, int param1, int param2, return 0; } -static void ov9_0224C378(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, s16 param4) +static void ov9_0224C378(DistWorldSystem *param0, int param1, int param2, int param3, s16 param4) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; const UnkStruct_ov9_0224C324 *v1 = v0->unk_08; @@ -3978,7 +3997,7 @@ static void ov9_0224C378(UnkStruct_ov9_02249B04 *param0, int param1, int param2, } do { - if (ov9_02250E6C(param1, param2, param3, &v1->unk_04) == 1) { + if (DistWorldBounds_AreCoordinatesInBounds(param1, param2, param3, &v1->unk_04) == 1) { if ((param4 == 4) || (param4 == v1->unk_00)) { v0->unk_00 = v2; ov9_02249E20(param0, v2); @@ -3992,7 +4011,7 @@ static void ov9_0224C378(UnkStruct_ov9_02249B04 *param0, int param1, int param2, } while (v2 < v3); } -static void ov9_0224C3F8(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224C3F8(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; const UnkStruct_ov9_0224C324 *v1 = v0->unk_08; @@ -4016,7 +4035,7 @@ static void ov9_0224C3F8(UnkStruct_ov9_02249B04 *param0, u32 param1) ov9_0224C4F4(param0, v1[param1].unk_02); } -static void ov9_0224C44C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C44C(DistWorldSystem *param0) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; @@ -4029,7 +4048,7 @@ static void ov9_0224C44C(UnkStruct_ov9_02249B04 *param0) } } -static u32 ov9_0224C470(UnkStruct_ov9_02249B04 *param0) +static u32 ov9_0224C470(DistWorldSystem *param0) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; const UnkStruct_ov9_0224C324 *v1 = v0->unk_08; @@ -4045,7 +4064,7 @@ static u32 ov9_0224C470(UnkStruct_ov9_02249B04 *param0) } } -static u32 ov9_0224C494(UnkStruct_ov9_02249B04 *param0) +static u32 ov9_0224C494(DistWorldSystem *param0) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; int v1 = v0->unk_04; @@ -4060,7 +4079,7 @@ static u32 ov9_0224C494(UnkStruct_ov9_02249B04 *param0) } } -static u32 ov9_0224C4B8(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3) +static u32 ov9_0224C4B8(DistWorldSystem *param0, int param1, int param2, int param3) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; int v1 = v0->unk_04; @@ -4072,7 +4091,7 @@ static u32 ov9_0224C4B8(UnkStruct_ov9_02249B04 *param0, int param1, int param2, { const UnkStruct_ov9_0224C324 *v2 = &v0->unk_08[v0->unk_00]; - if (ov9_02250E6C(param1, param2, param3, &v2->unk_04) == 0) { + if (DistWorldBounds_AreCoordinatesInBounds(param1, param2, param3, &v2->unk_04) == 0) { return 0; } @@ -4080,7 +4099,7 @@ static u32 ov9_0224C4B8(UnkStruct_ov9_02249B04 *param0, int param1, int param2, } } -static void ov9_0224C4F4(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224C4F4(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224C2C4 *v0 = ¶m0->unk_169C.unk_28; @@ -4094,7 +4113,7 @@ static void ov9_0224C4F4(UnkStruct_ov9_02249B04 *param0, u32 param1) NARC_ReadWholeMember(param0->unk_0C, param1, v0->unk_10); } -static u16 ov9_0224C52C(UnkStruct_ov9_02249B04 *param0, int param1, int param2) +static u16 ov9_0224C52C(DistWorldSystem *param0, int param1, int param2) { u16 v0; UnkStruct_ov9_0224C2C4 *v1 = ¶m0->unk_169C.unk_28; @@ -4106,7 +4125,7 @@ static u16 ov9_0224C52C(UnkStruct_ov9_02249B04 *param0, int param1, int param2) return v0; } -static u16 ov9_0224C55C(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3) +static u16 ov9_0224C55C(DistWorldSystem *param0, int param1, int param2, int param3) { u16 v0; int v1 = 0, v2 = 0; @@ -4119,7 +4138,7 @@ static u16 ov9_0224C55C(UnkStruct_ov9_02249B04 *param0, int param1, int param2, { UnkStruct_ov9_0224C324 *v4 = &v3->unk_08[v3->unk_00]; - if (ov9_02250E6C(param1, param2, param3, &v4->unk_04) == 0) { + if (DistWorldBounds_AreCoordinatesInBounds(param1, param2, param3, &v4->unk_04) == 0) { return 65534; } @@ -4127,20 +4146,20 @@ static u16 ov9_0224C55C(UnkStruct_ov9_02249B04 *param0, int param1, int param2, switch (v4->unk_00) { case 0: - v1 = param1 - v4->unk_04.unk_00; - v2 = param3 - v4->unk_04.unk_04; + v1 = param1 - v4->unk_04.startTileX; + v2 = param3 - v4->unk_04.startTileZ; break; case 1: - v1 = v4->unk_04.unk_08 - (param2 - v4->unk_04.unk_02); - v2 = param3 - v4->unk_04.unk_04; + v1 = v4->unk_04.sizeY - (param2 - v4->unk_04.startTileY); + v2 = param3 - v4->unk_04.startTileZ; break; case 2: - v1 = param2 - v4->unk_04.unk_02; - v2 = param3 - v4->unk_04.unk_04; + v1 = param2 - v4->unk_04.startTileY; + v2 = param3 - v4->unk_04.startTileZ; break; case 3: - v1 = v4->unk_04.unk_06 - (param1 - v4->unk_04.unk_00); - v2 = param3 - v4->unk_04.unk_04; + v1 = v4->unk_04.sizeX - (param1 - v4->unk_04.startTileX); + v2 = param3 - v4->unk_04.startTileZ; break; default: GF_ASSERT(0); @@ -4152,9 +4171,9 @@ static u16 ov9_0224C55C(UnkStruct_ov9_02249B04 *param0, int param1, int param2, } } -static void ov9_0224C640(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C640(DistWorldSystem *param0) { - UnkStruct_ov9_0224C14C *v0 = ¶m0->unk_169C.unk_0C; + DistWorldFile *v0 = ¶m0->unk_169C.distortionWorldFile; GF_ASSERT(param0->unk_169C.unk_3C.unk_04 == NULL); @@ -4166,13 +4185,13 @@ static void ov9_0224C640(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224C680(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C680(DistWorldSystem *param0) { UnkStruct_ov9_0224C640 *v0 = ¶m0->unk_169C.unk_3C; memset(v0, 0, sizeof(UnkStruct_ov9_0224C640)); } -static const UnkStruct_ov9_0224AA00 *ov9_0224C69C(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4) +static const UnkStruct_ov9_0224AA00 *ov9_0224C69C(DistWorldSystem *param0, int param1, int param2, int param3, int param4) { UnkStruct_ov9_0224C640 *v0 = ¶m0->unk_169C.unk_3C; UnkStruct_ov9_0224AA00 *v1 = v0->unk_04; @@ -4180,7 +4199,7 @@ static const UnkStruct_ov9_0224AA00 *ov9_0224C69C(UnkStruct_ov9_02249B04 *param0 while (v2) { if (param4 == v1->unk_02) { - if (ov9_02250E6C(param1, param2, param3, &v1->unk_08)) { + if (DistWorldBounds_AreCoordinatesInBounds(param1, param2, param3, &v1->unk_08)) { return v1; } } @@ -4192,47 +4211,47 @@ static const UnkStruct_ov9_0224AA00 *ov9_0224C69C(UnkStruct_ov9_02249B04 *param0 return NULL; } -static void ov9_0224C6E4(UnkStruct_ov9_02249B04 *param0) +static void InitCameraAngleTemplates(DistWorldSystem *system) { - UnkStruct_ov9_0224C14C *v0 = ¶m0->unk_169C.unk_0C; + DistWorldFile *file = &system->unk_169C.distortionWorldFile; - GF_ASSERT(param0->unk_169C.unk_44.unk_04 == NULL); + GF_ASSERT(system->unk_169C.cameraAngleTemplates.templates == NULL); - if (ov9_0224C264(v0)) { - UnkStruct_ov9_0224C6E4 *v1 = ¶m0->unk_169C.unk_44; + if (DistWorldFile_GetCameraAngleSectionSize(file)) { + DistWorldCameraAngleTemplates *cameraAngleTemplates = &system->unk_169C.cameraAngleTemplates; - v1->unk_00 = ov9_0224C26C(v0); - v1->unk_04 = ov9_0224C274(v0); + cameraAngleTemplates->count = DistWorldFile_GetCameraAngleCount(file); + cameraAngleTemplates->templates = DistWorldFile_GetCameraAngleTemplates(file); } } -static void ov9_0224C724(UnkStruct_ov9_02249B04 *param0) +static void ResetCameraAngleTemplates(DistWorldSystem *system) { - UnkStruct_ov9_0224C6E4 *v0 = ¶m0->unk_169C.unk_44; - memset(v0, 0, sizeof(UnkStruct_ov9_0224C6E4)); + DistWorldCameraAngleTemplates *cameraAngleTemplates = &system->unk_169C.cameraAngleTemplates; + memset(cameraAngleTemplates, 0, sizeof(DistWorldCameraAngleTemplates)); } -static const UnkStruct_ov9_0224A8A0 *ov9_0224C740(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4) +static const DistWorldCameraAngleTemplate *FindCameraAngleForPlayerPosition(DistWorldSystem *system, int playerX, int playerY, int playerZ, int playerDir) { - UnkStruct_ov9_0224C6E4 *v0 = ¶m0->unk_169C.unk_44; - UnkStruct_ov9_0224A8A0 *v1 = v0->unk_04; - int v2 = v0->unk_00; + DistWorldCameraAngleTemplates *cameraAngleTemplates = &system->unk_169C.cameraAngleTemplates; + DistWorldCameraAngleTemplate *cameraAngleTemplateIter = cameraAngleTemplates->templates; + int i = cameraAngleTemplates->count; - while (v2) { - if (param4 == v1->unk_12) { - if (ov9_02250E6C(param1, param2, param3, &v1->unk_00)) { - return v1; + while (i) { + if (playerDir == cameraAngleTemplateIter->playerDirection) { + if (DistWorldBounds_AreCoordinatesInBounds(playerX, playerY, playerZ, &cameraAngleTemplateIter->bounds)) { + return cameraAngleTemplateIter; } } - v1++; - v2--; + cameraAngleTemplateIter++; + i--; } return NULL; } -static void ov9_0224C788(UnkStruct_ov9_0224C14C *param0, UnkStruct_ov9_0224C788 *param1) +static void ov9_0224C788(DistWorldFile *param0, UnkStruct_ov9_0224C788 *param1) { GF_ASSERT(param1->unk_00 == NULL); GF_ASSERT(param1->unk_04 == NULL); @@ -4243,27 +4262,27 @@ static void ov9_0224C788(UnkStruct_ov9_0224C14C *param0, UnkStruct_ov9_0224C788 param1->unk_08 = ov9_0224C2B4(param0); } -static void ov9_0224C7C8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C7C8(DistWorldSystem *param0) { if (ov9_0224C27C(param0)) { - UnkStruct_ov9_0224C14C *v0 = ¶m0->unk_169C.unk_0C; + DistWorldFile *v0 = ¶m0->unk_169C.distortionWorldFile; UnkStruct_ov9_0224C788 *v1 = ¶m0->unk_169C.unk_4C; ov9_0224C788(v0, v1); } } -static void ov9_0224C7E8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C7E8(DistWorldSystem *param0) { if (ov9_0224C288(param0)) { - UnkStruct_ov9_0224C14C *v0 = ¶m0->unk_169C.unk_58; + DistWorldFile *v0 = ¶m0->unk_169C.unk_58; UnkStruct_ov9_0224C788 *v1 = ¶m0->unk_169C.unk_74; ov9_0224C788(v0, v1); } } -static void ov9_0224C808(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C808(DistWorldSystem *param0) { ov9_0224C7C8(param0); ov9_0224C7E8(param0); @@ -4274,75 +4293,75 @@ static void ov9_0224C818(UnkStruct_ov9_0224C788 *param0) memset(param0, 0, sizeof(UnkStruct_ov9_0224C788)); } -static void ov9_0224C834(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C834(DistWorldSystem *param0) { UnkStruct_ov9_0224C788 *v0 = ¶m0->unk_169C.unk_4C; ov9_0224C818(v0); } -static void ov9_0224C844(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C844(DistWorldSystem *param0) { UnkStruct_ov9_0224C788 *v0 = ¶m0->unk_169C.unk_74; ov9_0224C818(v0); } -static void ov9_0224C854(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C854(DistWorldSystem *param0) { ov9_0224C834(param0); ov9_0224C844(param0); } -static void ov9_0224C864(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C864(DistWorldSystem *param0) { param0->unk_169C.unk_74 = param0->unk_169C.unk_4C; ov9_0224C818(¶m0->unk_169C.unk_4C); } -static void ov9_0224C888(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C888(DistWorldSystem *param0) { param0->unk_169C.unk_4C = param0->unk_169C.unk_74; ov9_0224C818(¶m0->unk_169C.unk_74); } -static const UnkStruct_ov9_0224B3F8 *ov9_0224C8AC(UnkStruct_ov9_02249B04 *param0) +static const UnkStruct_ov9_0224B3F8 *ov9_0224C8AC(DistWorldSystem *param0) { UnkStruct_ov9_0224C788 *v0 = ¶m0->unk_169C.unk_4C; return v0->unk_00; } -static const UnkStruct_ov9_0224B3F8 *ov9_0224C8B8(UnkStruct_ov9_02249B04 *param0) +static const UnkStruct_ov9_0224B3F8 *ov9_0224C8B8(DistWorldSystem *param0) { UnkStruct_ov9_0224C788 *v0 = ¶m0->unk_169C.unk_74; return v0->unk_00; } -static const UnkStruct_ov9_0224B6CC *ov9_0224C8C4(UnkStruct_ov9_02249B04 *param0) +static const UnkStruct_ov9_0224B6CC *ov9_0224C8C4(DistWorldSystem *param0) { UnkStruct_ov9_0224C788 *v0 = ¶m0->unk_169C.unk_4C; return v0->unk_04; } -static const UnkStruct_ov9_0224B6CC *ov9_0224C8D0(UnkStruct_ov9_02249B04 *param0) +static const UnkStruct_ov9_0224B6CC *ov9_0224C8D0(DistWorldSystem *param0) { UnkStruct_ov9_0224C788 *v0 = ¶m0->unk_169C.unk_74; return v0->unk_04; } -static const UnkStruct_ov9_0224B748 *ov9_0224C8DC(UnkStruct_ov9_02249B04 *param0) +static const UnkStruct_ov9_0224B748 *ov9_0224C8DC(DistWorldSystem *param0) { UnkStruct_ov9_0224C788 *v0 = ¶m0->unk_169C.unk_4C; return v0->unk_08; } -static void ov9_0224C8E8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C8E8(DistWorldSystem *param0) { - int v0, v1; + enum MapHeader mapHeaderID, v1; UnkStruct_ov9_0224C8E8 *v2 = ¶m0->unk_1E88; FieldSystem *fieldSystem = param0->fieldSystem; const UnkStruct_ov9_022530A4 *v4, *v5; - v0 = ov9_022510D0(param0); - v4 = ov9_0224D720(v0); + mapHeaderID = DistWorldSystem_GetMapHeaderID(param0); + v4 = ov9_0224D720(mapHeaderID); v1 = v4->unk_08; if (v1 == 593) { @@ -4390,7 +4409,7 @@ static void ov9_0224C8E8(UnkStruct_ov9_02249B04 *param0) v2->unk_04 = 1; - if (ov9_02249D38(param0) == 0) { + if (IsPersistedDataValid(param0) == 0) { VecFx32 v12, v13; MapObject *v14 = Player_MapObject(fieldSystem->playerAvatar); @@ -4405,7 +4424,7 @@ static void ov9_0224C8E8(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224C9E8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224C9E8(DistWorldSystem *param0) { UnkStruct_ov9_0224C8E8 *v0 = ¶m0->unk_1E88; @@ -4431,7 +4450,7 @@ static void ov9_0224C9E8(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224CA30(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224CA30(DistWorldSystem *param0) { UnkStruct_ov9_0224C8E8 *v0 = ¶m0->unk_1E88; @@ -4442,13 +4461,13 @@ static void ov9_0224CA30(UnkStruct_ov9_02249B04 *param0) void ov9_0224CA50(FieldSystem *fieldSystem) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; ov9_0224CA30(v0); } void ov9_0224CA5C(FieldSystem *fieldSystem) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; UnkStruct_ov9_0224C8E8 *v1 = &v0->unk_1E88; { @@ -4466,7 +4485,7 @@ void ov9_0224CA5C(FieldSystem *fieldSystem) } } -static void ov9_0224CA98(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224CA98(DistWorldSystem *param0) { UnkStruct_ov9_0224CA5C *v0 = ¶m0->unk_1CB0; UnkStruct_ov9_0224C8E8 *v1 = ¶m0->unk_1E88; @@ -4507,7 +4526,7 @@ static void ov9_0224CA98(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224CB30(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224CB30(DistWorldSystem *param0) { UnkStruct_ov9_0224CA5C *v0 = ¶m0->unk_1CB0; UnkStruct_ov9_0224C8E8 *v1 = ¶m0->unk_1E88; @@ -4548,8 +4567,8 @@ static void ov9_0224CB30(UnkStruct_ov9_02249B04 *param0) } } -static int (*const Unk_ov9_022514E0[5])(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_0224CBD8 *); -static int (*const Unk_ov9_02251428[4])(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_0224CBD8 *); +static int (*const Unk_ov9_022514E0[5])(DistWorldSystem *, UnkStruct_ov9_0224CBD8 *); +static int (*const Unk_ov9_02251428[4])(DistWorldSystem *, UnkStruct_ov9_0224CBD8 *); static void ov9_0224CBBC(LandDataManager *param0, BOOL param1) { @@ -4560,7 +4579,7 @@ static void ov9_0224CBBC(LandDataManager *param0, BOOL param1) } while (v0 < 4); } -static void ov9_0224CBD8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224CBD8(DistWorldSystem *param0) { UnkStruct_ov9_0224CBD8 *v0 = ¶m0->unk_1CD0; @@ -4568,7 +4587,7 @@ static void ov9_0224CBD8(UnkStruct_ov9_02249B04 *param0) v0->unk_2C = SysTask_Start(ov9_0224CC08, param0, 1); } -static void ov9_0224CBF8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224CBF8(DistWorldSystem *param0) { UnkStruct_ov9_0224CBD8 *v0 = ¶m0->unk_1CD0; @@ -4577,10 +4596,10 @@ static void ov9_0224CBF8(UnkStruct_ov9_02249B04 *param0) static void ov9_0224CC08(SysTask *param0, void *param1) { - UnkStruct_ov9_02249B04 *v0 = param1; + DistWorldSystem *v0 = param1; UnkStruct_ov9_0224CBD8 *v1 = &v0->unk_1CD0; - int (*const *v2)(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_0224CBD8 *) = NULL; + int (*const *v2)(DistWorldSystem *, UnkStruct_ov9_0224CBD8 *) = NULL; if (v1->unk_00 == 2) { v2 = Unk_ov9_022514E0; @@ -4601,12 +4620,12 @@ static void ov9_0224CC08(SysTask *param0, void *param1) } } -static void ov9_0224CC4C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224CC4C(DistWorldSystem *param0) { UnkStruct_ov9_0224CBD8 *v0 = ¶m0->unk_1CD0; } -static void ov9_0224CC50(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2) +static void ov9_0224CC50(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2) { UnkStruct_ov9_0224CBD8 *v0 = ¶m0->unk_1CD0; @@ -4619,7 +4638,7 @@ static void ov9_0224CC50(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC v0->unk_28 = param1; } -static BOOL ov9_0224CC7C(UnkStruct_ov9_02249B04 *param0) +static BOOL ov9_0224CC7C(DistWorldSystem *param0) { UnkStruct_ov9_0224CBD8 *v0 = ¶m0->unk_1CD0; @@ -4630,20 +4649,20 @@ static BOOL ov9_0224CC7C(UnkStruct_ov9_02249B04 *param0) return 0; } -static int ov9_0224CC90(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CC90(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { ov9_0224CBBC(param0->fieldSystem->landDataMan, 0); - ov9_02249BD4(param0, ov9_022510D0(param0)); + ov9_02249BD4(param0, DistWorldSystem_GetMapHeaderID(param0)); param1->unk_04 = 1; return 0; } -static int ov9_0224CCB8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CCB8(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { FieldSystem *fieldSystem = param0->fieldSystem; UnkStruct_ov9_0224C8E8 *v1 = ¶m0->unk_1E88; - const UnkStruct_ov9_022530A4 *v2 = ov9_0224D720(ov9_022510D0(param0)); + const UnkStruct_ov9_022530A4 *v2 = ov9_0224D720(DistWorldSystem_GetMapHeaderID(param0)); GF_ASSERT(v2->unk_08 != 593); v2 = ov9_0224D720(v2->unk_08); @@ -4678,7 +4697,7 @@ static int ov9_0224CCB8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * return 0; } -static int ov9_0224CD84(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CD84(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { if (param1->unk_20 == 0) { int v0, v1, v2; @@ -4701,7 +4720,7 @@ static int ov9_0224CD84(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * return 0; } -static int ov9_0224CE00(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CE00(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { UnkStruct_ov9_0224C8E8 *v0 = ¶m0->unk_1E88; @@ -4716,7 +4735,7 @@ static int ov9_0224CE00(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * return 0; } -static int ov9_0224CE2C(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CE2C(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { const UnkStruct_ov9_022530A4 *v0; UnkStruct_ov9_0224C8E8 *v1 = ¶m0->unk_1E88; @@ -4737,7 +4756,7 @@ static int ov9_0224CE2C(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * return 2; } -static int (*const Unk_ov9_022514E0[5])(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_0224CBD8 *) = { +static int (*const Unk_ov9_022514E0[5])(DistWorldSystem *, UnkStruct_ov9_0224CBD8 *) = { ov9_0224CC90, ov9_0224CCB8, ov9_0224CD84, @@ -4745,7 +4764,7 @@ static int (*const Unk_ov9_022514E0[5])(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_ ov9_0224CE2C }; -static int ov9_0224CE80(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CE80(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { const UnkStruct_ov9_022530A4 *v0; UnkStruct_ov9_0224C8E8 *v1 = ¶m0->unk_1E88; @@ -4756,18 +4775,18 @@ static int ov9_0224CE80(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * ov9_0224CBBC(v1->unk_18, 0); } - v0 = ov9_0224D720(ov9_022510D0(param0)); + v0 = ov9_0224D720(DistWorldSystem_GetMapHeaderID(param0)); ov9_02249C2C(param0, v0->unk_08); param1->unk_04 = 1; return 0; } -static int ov9_0224CEBC(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CEBC(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { FieldSystem *fieldSystem = param0->fieldSystem; UnkStruct_ov9_0224C8E8 *v1 = ¶m0->unk_1E88; - const UnkStruct_ov9_022530A4 *v2 = ov9_0224D720(ov9_022510D0(param0)); + const UnkStruct_ov9_022530A4 *v2 = ov9_0224D720(DistWorldSystem_GetMapHeaderID(param0)); GF_ASSERT(v2->unk_04 != 593); v2 = ov9_0224D720(v2->unk_04); @@ -4825,7 +4844,7 @@ static int ov9_0224CEBC(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * return 0; } -static int ov9_0224CFE0(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224CFE0(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { FieldSystem *fieldSystem = param0->fieldSystem; @@ -4840,7 +4859,7 @@ static int ov9_0224CFE0(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * return 0; } -static int ov9_0224D008(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 *param1) +static int ov9_0224D008(DistWorldSystem *param0, UnkStruct_ov9_0224CBD8 *param1) { FieldSystem *fieldSystem = param0->fieldSystem; @@ -4856,16 +4875,16 @@ static int ov9_0224D008(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224CBD8 * return 2; } -static int (*const Unk_ov9_02251428[4])(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_0224CBD8 *) = { +static int (*const Unk_ov9_02251428[4])(DistWorldSystem *, UnkStruct_ov9_0224CBD8 *) = { ov9_0224CE80, ov9_0224CEBC, ov9_0224CFE0, ov9_0224D008 }; -static BOOL ov9_0224D040(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3) +static BOOL ov9_0224D040(DistWorldSystem *param0, int param1, int param2, int param3) { - UnkStruct_ov9_0224E0DC *v0 = ov9_0224E188(param0, param1, param2, param3, ov9_022510D0(param0)); + UnkStruct_ov9_0224E0DC *v0 = ov9_0224E188(param0, param1, param2, param3, DistWorldSystem_GetMapHeaderID(param0)); if (v0 == NULL) { return 0; @@ -4879,9 +4898,9 @@ static BOOL ov9_0224D040(UnkStruct_ov9_02249B04 *param0, int param1, int param2, return 0; } -static int (*const Unk_ov9_02252224[8])(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_0224D078 *); +static int (*const Unk_ov9_02252224[8])(DistWorldSystem *, UnkStruct_ov9_0224D078 *); -static void ov9_0224D078(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1) +static void ov9_0224D078(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1) { UnkStruct_ov9_0224D078 *v0 = ov9_0224A578(param0, sizeof(UnkStruct_ov9_0224D078)); v0->unk_64 = param1; @@ -4892,7 +4911,7 @@ static void ov9_0224D078(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC static BOOL ov9_0224D098(FieldTask *param0) { int v0; - UnkStruct_ov9_02249B04 *v1 = FieldTask_GetEnv(param0); + DistWorldSystem *v1 = FieldTask_GetEnv(param0); UnkStruct_ov9_0224D078 *v2 = ov9_0224A598(v1); do { @@ -4906,7 +4925,7 @@ static BOOL ov9_0224D098(FieldTask *param0) return 0; } -static int ov9_0224D0C8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D0C8(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { u32 v0; MapObject *v1; @@ -4916,7 +4935,7 @@ static int ov9_0224D0C8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * param1->unk_00 = param1->unk_64->unk_04.unk_0A; param1->unk_02 = param1->unk_64->unk_04.unk_08; - v0 = ov9_022510D0(param0); + v0 = DistWorldSystem_GetMapHeaderID(param0); v2 = ov9_0224D720(v0); if (param1->unk_00 == 1) { @@ -5006,7 +5025,7 @@ static int ov9_0224D0C8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * return 0; } -static int ov9_0224D288(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D288(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { VecFx32 v0; PlayerAvatar *playerAvatar = param0->fieldSystem->playerAvatar; @@ -5067,7 +5086,7 @@ static int ov9_0224D288(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * return 0; } -static int ov9_0224D374(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D374(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { int v0; PlayerAvatar *playerAvatar = param0->fieldSystem->playerAvatar; @@ -5110,7 +5129,7 @@ static int ov9_0224D374(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * return 0; } -static int ov9_0224D430(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D430(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { ov9_0224E0DC(param1->unk_64, 1); @@ -5149,7 +5168,7 @@ static int ov9_0224D430(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * return 0; } -static int ov9_0224D4C4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D4C4(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { int v0; PlayerAvatar *playerAvatar = param0->fieldSystem->playerAvatar; @@ -5217,7 +5236,7 @@ static int ov9_0224D4C4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * return 0; } -static int ov9_0224D5E8(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D5E8(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { if (ov9_0224CC7C(param0) == 0) { MapObject *v0 = Player_MapObject(param0->fieldSystem->playerAvatar); @@ -5280,7 +5299,7 @@ static const MapObjectAnimCmd *const Unk_ov9_02251384[3] = { Unk_ov9_02251350 }; -static int ov9_0224D69C(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D69C(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { int v0; MapObject *v1; @@ -5299,7 +5318,7 @@ static int ov9_0224D69C(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * return 0; } -static int ov9_0224D6E0(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 *param1) +static int ov9_0224D6E0(DistWorldSystem *param0, UnkStruct_ov9_0224D078 *param1) { if (MapObject_HasAnimationEnded(param1->unk_6C) == 1) { VarsFlags *v0; @@ -5318,7 +5337,7 @@ static int ov9_0224D6E0(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D078 * return 0; } -static int (*const Unk_ov9_02252224[8])(UnkStruct_ov9_02249B04 *, UnkStruct_ov9_0224D078 *) = { +static int (*const Unk_ov9_02252224[8])(DistWorldSystem *, UnkStruct_ov9_0224D078 *) = { ov9_0224D0C8, ov9_0224D288, ov9_0224D374, @@ -5347,7 +5366,7 @@ static const UnkStruct_ov9_022530A4 *ov9_0224D720(int param0) return NULL; } -static void ov9_0224D744(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224D744(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224D744 *v1 = ¶m0->unk_3A4; @@ -5363,7 +5382,7 @@ static void ov9_0224D744(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224D780(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224D780(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224D744 *v0 = ¶m0->unk_3A4; @@ -5375,7 +5394,7 @@ static void ov9_0224D780(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static void ov9_0224D7C0(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224D7C0(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224D744 *v0 = ¶m0->unk_3A4; @@ -5387,7 +5406,7 @@ static void ov9_0224D7C0(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static UnkStruct_02073838 *ov9_0224D7EC(UnkStruct_ov9_02249B04 *param0, u32 param1) +static UnkStruct_02073838 *ov9_0224D7EC(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224D744 *v0 = ¶m0->unk_3A4; @@ -5397,7 +5416,7 @@ static UnkStruct_02073838 *ov9_0224D7EC(UnkStruct_ov9_02249B04 *param0, u32 para return &v0->unk_00[param1].unk_04; } -static void ov9_0224D814(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224D814(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224D744 *v0 = ¶m0->unk_3A4; @@ -5413,7 +5432,7 @@ static void ov9_0224D814(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static void ov9_0224D874(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224D874(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224D744 *v0 = ¶m0->unk_3A4; @@ -5425,7 +5444,7 @@ static void ov9_0224D874(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static UnkStruct_ov9_0224D928 *ov9_0224D8A4(UnkStruct_ov9_02249B04 *param0, u32 param1, int *param2) +static UnkStruct_ov9_0224D928 *ov9_0224D8A4(DistWorldSystem *param0, u32 param1, int *param2) { int v0; BOOL v1; @@ -5457,13 +5476,13 @@ static UnkStruct_ov9_0224D928 *ov9_0224D8A4(UnkStruct_ov9_02249B04 *param0, u32 return NULL; } -static void ov9_0224D928(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D928 *param1) +static void ov9_0224D928(DistWorldSystem *param0, UnkStruct_ov9_0224D928 *param1) { GF_ASSERT(param1 != NULL); param1->unk_00 = 0; } -static void ov9_0224D938(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D928 *param1) +static void ov9_0224D938(DistWorldSystem *param0, UnkStruct_ov9_0224D928 *param1) { BOOL v0 = ov9_0224DB04(param1->unk_02); @@ -5472,7 +5491,7 @@ static void ov9_0224D938(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224D928 } } -static void ov9_0224D954(UnkStruct_ov9_02249B04 *param0, int param1) +static void ov9_0224D954(DistWorldSystem *param0, int param1) { int v0; UnkStruct_ov9_0224D744 *v1 = ¶m0->unk_3A4; @@ -5484,7 +5503,7 @@ static void ov9_0224D954(UnkStruct_ov9_02249B04 *param0, int param1) } } -static void ov9_0224D994(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224D994(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224D744 *v1 = ¶m0->unk_3A4; @@ -5498,7 +5517,7 @@ static void ov9_0224D994(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224D9BC(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2, UnkStruct_02073B50 *param3, UnkStruct_02073974 *param4) +static void ov9_0224D9BC(DistWorldSystem *param0, u32 param1, u32 param2, UnkStruct_02073B50 *param3, UnkStruct_02073974 *param4) { UnkStruct_ov9_0224D744 *v0 = ¶m0->unk_3A4; @@ -5522,13 +5541,13 @@ static void ov9_0224D9BC(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2, } } -static void ov9_0224DA48(UnkStruct_ov9_02249B04 *param0, int param1, UnkStruct_02073B50 *param2, UnkStruct_02073974 *param3) +static void ov9_0224DA48(DistWorldSystem *param0, int param1, UnkStruct_02073B50 *param2, UnkStruct_02073974 *param3) { const UnkStruct_ov9_022531D0 *v0 = &Unk_ov9_022531D0[param1]; ov9_0224D9BC(param0, v0->unk_00, v0->unk_02, param2, param3); } -static void ov9_0224DA64(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3) +static void ov9_0224DA64(DistWorldSystem *param0, int param1, int param2, int param3) { const UnkStruct_ov9_022531D0 *v0 = &Unk_ov9_022531D0[param1]; int v1 = v0->unk_00; @@ -5543,12 +5562,12 @@ static void ov9_0224DA64(UnkStruct_ov9_02249B04 *param0, int param1, int param2, } } -static void ov9_0224DAAC(UnkStruct_ov9_02249B04 *param0, int param1, int param2) +static void ov9_0224DAAC(DistWorldSystem *param0, int param1, int param2) { ov9_0224DA64(param0, param1, param2, -1); } -static void ov9_0224DAB8(UnkStruct_ov9_02249B04 *param0, int param1, int param2) +static void ov9_0224DAB8(DistWorldSystem *param0, int param1, int param2) { const UnkStruct_ov9_022531D0 *v0 = &Unk_ov9_022531D0[param1]; int v1 = v0->unk_00; @@ -5582,7 +5601,7 @@ static BOOL ov9_0224DB04(int param0) return 0; } -static void ov9_0224DB1C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224DB1C(DistWorldSystem *param0) { int v0; @@ -5605,7 +5624,7 @@ static void ov9_0224DB1C(UnkStruct_ov9_02249B04 *param0) } } -static BOOL ov9_0224DBE4(UnkStruct_ov9_02249B04 *param0, int param1, VecFx32 *param2) +static BOOL ov9_0224DBE4(DistWorldSystem *param0, int param1, VecFx32 *param2) { const VecFx32 *v0 = &Unk_ov9_022533C4[param1]; @@ -5628,13 +5647,13 @@ static BOOL ov9_0224DBE4(UnkStruct_ov9_02249B04 *param0, int param1, VecFx32 *pa return 0; } -static void ov9_0224DC34(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224DC34(DistWorldSystem *param0) { UnkStruct_ov9_0224DC34 *v0 = ¶m0->unk_1734; memset(v0, 0, sizeof(UnkStruct_ov9_0224DC34)); } -static void ov9_0224DC4C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224DC4C(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224DC34 *v1 = ¶m0->unk_1734; @@ -5646,7 +5665,7 @@ static void ov9_0224DC4C(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224DC74(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224DC74(DistWorldSystem *param0, u32 param1) { int v0; UnkStruct_ov9_0224DC34 *v1 = ¶m0->unk_1734; @@ -5664,9 +5683,9 @@ static void ov9_0224DC74(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static void ov9_0224DCA8(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224DCA8(DistWorldSystem *param0) { - if (ov9_02249D38(param0) == 1) { + if (IsPersistedDataValid(param0) == 1) { int v0 = 0; UnkStruct_ov9_0224E0DC *v1; MapObject *v2; @@ -5679,7 +5698,7 @@ static void ov9_0224DCA8(UnkStruct_ov9_02249B04 *param0) } } } else { - u32 v4 = ov9_022510D0(param0); + u32 v4 = DistWorldSystem_GetMapHeaderID(param0); const UnkStruct_ov9_022530A4 *v5 = ov9_0224D720(v4); ov9_0224DD24(param0, v4); @@ -5687,7 +5706,7 @@ static void ov9_0224DCA8(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224DD24(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224DD24(DistWorldSystem *param0, u32 param1) { const UnkStruct_ov9_02252C38 *v0 = ov9_0224DE40(param1); @@ -5696,7 +5715,7 @@ static void ov9_0224DD24(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static void ov9_0224DD40(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252C38 *param1, u32 param2) +static void ov9_0224DD40(DistWorldSystem *param0, const UnkStruct_ov9_02252C38 *param1, u32 param2) { u32 v0; int v1 = 0; @@ -5720,7 +5739,7 @@ static void ov9_0224DD40(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_022 } } -static void ov9_0224DDA0(UnkStruct_ov9_02249B04 *param0, u32 param1, int param2) +static void ov9_0224DDA0(DistWorldSystem *param0, u32 param1, int param2) { const UnkStruct_ov9_02252C38 *v0 = ov9_0224DE40(param1); @@ -5732,7 +5751,7 @@ static void ov9_0224DDA0(UnkStruct_ov9_02249B04 *param0, u32 param1, int param2) } } -static UnkStruct_ov9_0224E0DC *ov9_0224DDDC(UnkStruct_ov9_02249B04 *param0) +static UnkStruct_ov9_0224E0DC *ov9_0224DDDC(DistWorldSystem *param0) { int v0 = 0; UnkStruct_ov9_0224DC34 *v1 = ¶m0->unk_1734; @@ -5749,7 +5768,7 @@ static UnkStruct_ov9_0224E0DC *ov9_0224DDDC(UnkStruct_ov9_02249B04 *param0) return NULL; } -static UnkStruct_ov9_0224E0DC *ov9_0224DE08(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2) +static UnkStruct_ov9_0224E0DC *ov9_0224DE08(DistWorldSystem *param0, u32 param1, u32 param2) { int v0 = 0; UnkStruct_ov9_0224DC34 *v1 = ¶m0->unk_1734; @@ -5806,9 +5825,9 @@ static const UnkStruct_ov9_02253830 *ov9_0224DE70(u32 param0) return NULL; } -static MapObject *ov9_0224DE94(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, int param4, int param5, u32 param6) +static MapObject *ov9_0224DE94(DistWorldSystem *param0, int param1, int param2, int param3, int param4, int param5, u32 param6) { - MapObject *v0 = MapObjectMan_AddMapObject(param0->fieldSystem->mapObjMan, param1, param3, 0, 0x2000, 0x0, ov9_022510D0(param0)); + MapObject *v0 = MapObjectMan_AddMapObject(param0->fieldSystem->mapObjMan, param1, param3, 0, 0x2000, 0x0, DistWorldSystem_GetMapHeaderID(param0)); MapObject_SetY(v0, param2); MapObject_SetLocalID(v0, 0xfd); @@ -5823,7 +5842,7 @@ static MapObject *ov9_0224DE94(UnkStruct_ov9_02249B04 *param0, int param1, int p return v0; } -static void ov9_0224DF10(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, MapObject *param2) +static void ov9_0224DF10(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, MapObject *param2) { u32 v0, v1, v2, v3; const UnkStruct_ov9_0224DF10 *v4; @@ -5849,7 +5868,7 @@ static void ov9_0224DF10(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC sub_02062FC4(param2, 1); } -static UnkStruct_ov101_021D5D90 *ov9_0224DFA0(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1) +static UnkStruct_ov101_021D5D90 *ov9_0224DFA0(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1) { UnkStruct_ov101_021D5D90 *v0; UnkStruct_ov9_0224DFA0 v1; @@ -5869,7 +5888,7 @@ static UnkStruct_ov101_021D5D90 *ov9_0224DFA0(UnkStruct_ov9_02249B04 *param0, Un return v0; } -static void ov9_0224DFF4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, const UnkStruct_ov9_0224DF10 *param2, u32 param3) +static void ov9_0224DFF4(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, const UnkStruct_ov9_0224DF10 *param2, u32 param3) { param1->unk_00 = 1; param1->unk_02 = param3; @@ -5878,7 +5897,7 @@ static void ov9_0224DFF4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC param1->unk_20 = ov9_0224DFA0(param0, param1); } -static void ov9_0224E044(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1) +static void ov9_0224E044(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1) { if (param1->unk_20 != NULL) { sub_0207136C(param1->unk_20); @@ -5887,7 +5906,7 @@ static void ov9_0224E044(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC memset(param1, 0, sizeof(UnkStruct_ov9_0224E0DC)); } -static void ov9_0224E060(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1) +static void ov9_0224E060(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1) { if (param1->unk_1C != NULL) { MapObject_Delete(param1->unk_1C); @@ -5896,7 +5915,7 @@ static void ov9_0224E060(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC ov9_0224E044(param0, param1); } -static void ov9_0224E07C(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2) +static void ov9_0224E07C(DistWorldSystem *param0, UnkStruct_ov9_0224E0DC *param1, u32 param2) { param1->unk_02 = param2; @@ -5924,7 +5943,7 @@ static void ov9_0224E0DC(UnkStruct_ov9_0224E0DC *param0, u32 param1) param0->unk_01 = param1; } -static BOOL ov9_0224E0E0(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224E0E0(DistWorldSystem *param0, u32 param1) { int v0; u16 v1; @@ -5947,7 +5966,7 @@ static BOOL ov9_0224E0E0(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224E120(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224E120(DistWorldSystem *param0, u32 param1) { int v0; u16 v1; @@ -5970,7 +5989,7 @@ static BOOL ov9_0224E120(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224E160(UnkStruct_ov9_02249B04 *param0, int param1) +static BOOL ov9_0224E160(DistWorldSystem *param0, int param1) { int v0; const UnkStruct_ov9_022531D0 *v1; @@ -5987,7 +6006,7 @@ static BOOL ov9_0224E160(UnkStruct_ov9_02249B04 *param0, int param1) return 0; } -static UnkStruct_ov9_0224E0DC *ov9_0224E188(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3, u32 param4) +static UnkStruct_ov9_0224E0DC *ov9_0224E188(DistWorldSystem *param0, int param1, int param2, int param3, u32 param4) { int v0 = 32; UnkStruct_ov9_0224E0DC *v1 = param0->unk_1734.unk_00; @@ -6122,18 +6141,18 @@ static VecFx32 *ov9_0224E330(UnkStruct_ov101_021D5D90 *param0) return &v0->unk_04; } -static void ov9_0224E33C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224E33C(DistWorldSystem *param0) { UnkFuncPtr_ov9_0224E33C *v0 = ¶m0->unk_D8; memset(v0, 0, sizeof(UnkFuncPtr_ov9_0224E33C)); } -static void ov9_0224E34C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224E34C(DistWorldSystem *param0) { return; } -static void ov9_0224E350(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02251438 *param1) +static void ov9_0224E350(DistWorldSystem *param0, const UnkStruct_ov9_02251438 *param1) { UnkFuncPtr_ov9_0224E33C *v0 = ¶m0->unk_D8; @@ -6146,7 +6165,7 @@ static void ov9_0224E350(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_022 v0->unk_08 = param1; } -static void *ov9_0224E37C(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void *ov9_0224E37C(DistWorldSystem *param0, u32 param1) { GF_ASSERT(param1 < 160); @@ -6158,13 +6177,13 @@ static void *ov9_0224E37C(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static void *ov9_0224E39C(UnkStruct_ov9_02249B04 *param0) +static void *ov9_0224E39C(DistWorldSystem *param0) { u8 *v0 = param0->unk_D8.unk_0C; return v0; } -static BOOL ov9_0224E3A0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1) +static BOOL ov9_0224E3A0(DistWorldSystem *param0, FieldTask *param1) { int v0; int v1; @@ -6214,10 +6233,10 @@ static const UnkStruct_ov9_02252044 *ov9_0224E410(u32 param0) return NULL; } -static BOOL ov9_0224E434(UnkStruct_ov9_02249B04 *param0, int param1, int param2, int param3) +static BOOL ov9_0224E434(DistWorldSystem *param0, int param1, int param2, int param3) { VarsFlags *v0 = SaveData_GetVarsFlags(param0->fieldSystem->saveData); - const UnkStruct_ov9_02252044 *v1 = ov9_0224E410(ov9_022510D0(param0)); + const UnkStruct_ov9_02252044 *v1 = ov9_0224E410(DistWorldSystem_GetMapHeaderID(param0)); if (v1 != NULL) { u16 v2, v3; @@ -6240,20 +6259,20 @@ static BOOL ov9_0224E434(UnkStruct_ov9_02249B04 *param0, int param1, int param2, return 0; } -static void ov9_0224E498(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02251438 *param1) +static void ov9_0224E498(DistWorldSystem *param0, const UnkStruct_ov9_02251438 *param1) { ov9_0224E350(param0, param1); FieldSystem_CreateTask(param0->fieldSystem, ov9_0224E4BC, param0); } -static void ov9_0224E4B0(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252044 *param1) +static void ov9_0224E4B0(DistWorldSystem *param0, const UnkStruct_ov9_02252044 *param1) { ov9_0224E498(param0, param1->unk_0C); } static BOOL ov9_0224E4BC(FieldTask *param0) { - UnkStruct_ov9_02249B04 *v0 = FieldTask_GetEnv(param0); + DistWorldSystem *v0 = FieldTask_GetEnv(param0); if (ov9_0224E3A0(v0, param0) == 1) { return 1; @@ -6262,7 +6281,7 @@ static BOOL ov9_0224E4BC(FieldTask *param0) return 0; } -static int ov9_0224E4D8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E4D8(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_0224E4D8 *v0 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_0224E4D8)); @@ -6270,7 +6289,7 @@ static int ov9_0224E4D8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 1; } -static int ov9_0224E4E8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E4E8(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { MapObject *v0; const UnkStruct_ov9_0224E4E8 *v1 = param3; @@ -6287,7 +6306,7 @@ static int ov9_0224E4E8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0224E520(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E520(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { MapObject *v0; const UnkStruct_ov9_0224E4E8 *v1 = param3; @@ -6309,12 +6328,12 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251360[3] = { ov9_0224E520 }; -static int ov9_0224E550(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E550(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_0224E550 *v0 = param3; UnkStruct_ov9_0224E5EC *v1 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_0224E5EC)); - v1->unk_24 = ov9_0224DE08(param0, v0->unk_00, ov9_022510D0(param0)); + v1->unk_24 = ov9_0224DE08(param0, v0->unk_00, DistWorldSystem_GetMapHeaderID(param0)); GF_ASSERT(v1->unk_24 != NULL); v1->unk_0C.x = (((v0->unk_06) << 4) * FX32_ONE); @@ -6346,7 +6365,7 @@ static int ov9_0224E550(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0224E5EC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E5EC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { MapObject *v0 = NULL; const UnkStruct_ov9_0224E550 *v1 = param3; @@ -6404,7 +6423,7 @@ static int ov9_0224E5EC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0224E6B0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E6B0(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { VecFx32 v0 = { 0, 0, 0 }; const UnkStruct_ov9_0224E550 *v1 = param3; @@ -6458,7 +6477,7 @@ static int ov9_0224E6B0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0224E798(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E798(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_0224E550 *v0 = param3; @@ -6502,7 +6521,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_022513E8[4] = { ov9_0224E798 }; -static int ov9_0224E860(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E860(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_0224E860 *v0 = param3; @@ -6514,7 +6533,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251258[1] = { ov9_0224E860 }; -static int ov9_0224E870(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224E870(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_0224E870 *v0 = param3; @@ -6541,7 +6560,7 @@ static const UnkStruct_ov9_02252414 Unk_ov9_02252414[1] = { void ov9_0224E884(FieldSystem *fieldSystem, u16 param1) { - UnkStruct_ov9_02249B04 *v0; + DistWorldSystem *v0; GF_ASSERT(param1 < 1); v0 = fieldSystem->unk_04->dynamicMapFeaturesData; @@ -6550,11 +6569,11 @@ void ov9_0224E884(FieldSystem *fieldSystem, u16 param1) void ov9_0224E8A8(FieldSystem *fieldSystem) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; ov9_0224E988(v0); } -static void ov9_0224E8B4(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224E8B4(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224E8B4 *v1 = ¶m0->unk_1EA4; @@ -6570,7 +6589,7 @@ static void ov9_0224E8B4(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224E8EC(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224E8EC(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224E8B4 *v1 = ¶m0->unk_1EA4; @@ -6583,7 +6602,7 @@ static void ov9_0224E8EC(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224E91C(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252414 *param1) +static void ov9_0224E91C(DistWorldSystem *param0, const UnkStruct_ov9_02252414 *param1) { UnkStruct_ov9_0224E91C v0; UnkStruct_ov9_0224E8B4 *v1 = ¶m0->unk_1EA4; @@ -6597,7 +6616,7 @@ static void ov9_0224E91C(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_022 v1->unk_08 = ov5_021DF72C(param0->fieldSystem->unk_40, &Unk_ov9_022514B8, NULL, 0, &v0, 0); } -static BOOL ov9_0224E964(UnkStruct_ov9_02249B04 *param0) +static BOOL ov9_0224E964(DistWorldSystem *param0) { UnkStruct_ov9_0224E964 *v0; UnkStruct_ov9_0224E8B4 *v1 = ¶m0->unk_1EA4; @@ -6608,12 +6627,12 @@ static BOOL ov9_0224E964(UnkStruct_ov9_02249B04 *param0) return v0->unk_34; } -static void ov9_0224E984(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224E984(DistWorldSystem *param0) { UnkStruct_ov9_0224E8B4 *v0 = ¶m0->unk_1EA4; } -static void ov9_0224E988(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224E988(DistWorldSystem *param0) { UnkStruct_ov9_0224E8B4 *v0 = ¶m0->unk_1EA4; @@ -6624,7 +6643,7 @@ static void ov9_0224E988(UnkStruct_ov9_02249B04 *param0) ov9_0224E8EC(param0); } -static BOOL ov9_0224E9A4(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224E9A4(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224E8B4 *v0 = ¶m0->unk_1EA4; @@ -6639,7 +6658,7 @@ static BOOL ov9_0224E9A4(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224E9CC(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224E9CC(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224E8B4 *v0 = ¶m0->unk_1EA4; @@ -6654,7 +6673,7 @@ static BOOL ov9_0224E9CC(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224E9F4(UnkStruct_ov9_02249B04 *param0, int param1) +static BOOL ov9_0224E9F4(DistWorldSystem *param0, int param1) { UnkStruct_ov9_0224E8B4 *v0 = ¶m0->unk_1EA4; @@ -6776,10 +6795,10 @@ static const UnkStruct_ov101_021D86B0 Unk_ov9_022514B8 = { ov9_0224EB34 }; -static void ov9_0224EB68(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224EB68(DistWorldSystem *param0) { UnkStruct_ov9_0224EB68 *v0 = ¶m0->unk_1BB4; - u32 v1 = ov9_022510D0(param0); + u32 v1 = DistWorldSystem_GetMapHeaderID(param0); const UnkStruct_ov9_022530A4 *v2 = ov9_0224D720(v1); ov9_0224EC48(param0, v1); @@ -6789,7 +6808,7 @@ static void ov9_0224EB68(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224EB94(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224EB94(DistWorldSystem *param0) { int v0 = 0; UnkStruct_ov9_0224EB68 *v1 = ¶m0->unk_1BB4; @@ -6814,7 +6833,7 @@ static void ov9_0224EBB8(UnkStruct_ov9_0224EBB8 *param0) param0->unk_04 = NULL; } -static void ov9_0224EBCC(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224EBB8 *param1, const UnkStruct_ov9_0224EC10 *param2, u32 param3) +static void ov9_0224EBCC(DistWorldSystem *param0, UnkStruct_ov9_0224EBB8 *param1, const UnkStruct_ov9_0224EC10 *param2, u32 param3) { param1->unk_00 = param3; param1->unk_08 = *param2; @@ -6831,7 +6850,7 @@ static void ov9_0224EBCC(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224EBB8 } } -static void ov9_0224EC10(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_02252548 *param1) +static void ov9_0224EC10(DistWorldSystem *param0, const UnkStruct_ov9_02252548 *param1) { u16 v0, v1; const UnkStruct_ov9_0224EC10 *v2 = param1->unk_04; @@ -6850,7 +6869,7 @@ static void ov9_0224EC10(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_022 } } -static void ov9_0224EC48(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224EC48(DistWorldSystem *param0, u32 param1) { const UnkStruct_ov9_02252548 *v0 = Unk_ov9_02252548; @@ -6865,7 +6884,7 @@ static void ov9_0224EC48(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static UnkStruct_ov9_0224EBB8 *ov9_0224EC70(UnkStruct_ov9_02249B04 *param0) +static UnkStruct_ov9_0224EBB8 *ov9_0224EC70(DistWorldSystem *param0) { int v0 = 0; UnkStruct_ov9_0224EB68 *v1 = ¶m0->unk_1BB4; @@ -6884,7 +6903,7 @@ static UnkStruct_ov9_0224EBB8 *ov9_0224EC70(UnkStruct_ov9_02249B04 *param0) return NULL; } -static void ov9_0224EC94(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224EC94(DistWorldSystem *param0, u32 param1) { int v0 = 0; UnkStruct_ov9_0224EB68 *v1 = ¶m0->unk_1BB4; @@ -6900,7 +6919,7 @@ static void ov9_0224EC94(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static BOOL ov9_0224ECC0(UnkStruct_ov9_02249B04 *param0, int param1) +static BOOL ov9_0224ECC0(DistWorldSystem *param0, int param1) { int v0 = 0; UnkStruct_ov9_0224EB68 *v1 = ¶m0->unk_1BB4; @@ -6920,7 +6939,7 @@ static BOOL ov9_0224ECC0(UnkStruct_ov9_02249B04 *param0, int param1) return 0; } -static BOOL ov9_0224ECE8(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224ECE8(DistWorldSystem *param0, u32 param1) { int v0 = 0; const UnkStruct_ov9_022531D0 *v1; @@ -6943,7 +6962,7 @@ static BOOL ov9_0224ECE8(UnkStruct_ov9_02249B04 *param0, u32 param1) return 0; } -static BOOL ov9_0224ED20(UnkStruct_ov9_02249B04 *param0, u32 param1) +static BOOL ov9_0224ED20(DistWorldSystem *param0, u32 param1) { int v0 = 0; const UnkStruct_ov9_022531D0 *v1; @@ -7037,10 +7056,10 @@ static const UnkStruct_ov101_021D86B0 Unk_ov9_02251530 = { ov9_0224EE2C }; -static void ov9_0224EE40(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224EE40(DistWorldSystem *param0) { UnkStruct_ov9_0224EE40 *v0 = ¶m0->unk_1C64; - u32 v1 = ov9_022510D0(param0); + u32 v1 = DistWorldSystem_GetMapHeaderID(param0); const UnkStruct_ov9_022530A4 *v2 = ov9_0224D720(v1); ov9_0224F078(param0, v1); @@ -7050,12 +7069,12 @@ static void ov9_0224EE40(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224EE6C(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224EE6C(DistWorldSystem *param0) { return; } -static void ov9_0224EE70(UnkStruct_ov9_02249B04 *param0, MapObject *param1) +static void ov9_0224EE70(DistWorldSystem *param0, MapObject *param1) { int v0 = 0; UnkStruct_ov9_0224EE40 *v1 = ¶m0->unk_1C64; @@ -7072,7 +7091,7 @@ static void ov9_0224EE70(UnkStruct_ov9_02249B04 *param0, MapObject *param1) GF_ASSERT(0); } -static MapObject **ov9_0224EEA0(UnkStruct_ov9_02249B04 *param0) +static MapObject **ov9_0224EEA0(DistWorldSystem *param0) { int v0; UnkStruct_ov9_0224EE40 *v1 = ¶m0->unk_1C64; @@ -7087,7 +7106,7 @@ static MapObject **ov9_0224EEA0(UnkStruct_ov9_02249B04 *param0) return NULL; } -static MapObject *ov9_0224EECC(UnkStruct_ov9_02249B04 *param0, const ObjectEvent *param1, u32 param2) +static MapObject *ov9_0224EECC(DistWorldSystem *param0, const ObjectEvent *param1, u32 param2) { int v0 = 0; MapObject *v1; @@ -7105,7 +7124,7 @@ static MapObject *ov9_0224EECC(UnkStruct_ov9_02249B04 *param0, const ObjectEvent return NULL; } -static BOOL ov9_0224EF30(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224EF30 *param1, u16 param2) +static BOOL ov9_0224EF30(DistWorldSystem *param0, const UnkStruct_ov9_0224EF30 *param1, u16 param2) { u16 v0 = param1->unk_00; u16 v1 = param1->unk_02; @@ -7122,7 +7141,7 @@ static BOOL ov9_0224EF30(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_022 return 1; } -static BOOL ov9_0224EF64(UnkStruct_ov9_02249B04 *param0, MapObject **param1, const UnkStruct_ov9_0224EF30 *param2, u32 param3, u16 param4) +static BOOL ov9_0224EF64(DistWorldSystem *param0, MapObject **param1, const UnkStruct_ov9_0224EF30 *param2, u32 param3, u16 param4) { MapObject *v0 = ov9_0224EECC(param0, ¶m2->unk_08, param3); @@ -7171,7 +7190,7 @@ static BOOL ov9_0224EF64(UnkStruct_ov9_02249B04 *param0, MapObject **param1, con return 1; } -static BOOL ov9_0224F048(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_0224EF30 **param1, u32 param2) +static BOOL ov9_0224F048(DistWorldSystem *param0, const UnkStruct_ov9_0224EF30 **param1, u32 param2) { MapObject **v0; @@ -7184,7 +7203,7 @@ static BOOL ov9_0224F048(UnkStruct_ov9_02249B04 *param0, const UnkStruct_ov9_022 return 0; } -static void ov9_0224F078(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224F078(DistWorldSystem *param0, u32 param1) { const UnkStruct_ov9_02252EB4 *v0 = Unk_ov9_02252EB4; @@ -7198,7 +7217,7 @@ static void ov9_0224F078(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static void ov9_0224F0A4(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224F0A4(DistWorldSystem *param0, u32 param1) { int v0 = 0; UnkStruct_ov9_0224EE40 *v1 = ¶m0->unk_1C64; @@ -7214,7 +7233,7 @@ static void ov9_0224F0A4(UnkStruct_ov9_02249B04 *param0, u32 param1) } } -static MapObject *ov9_0224F0D4(UnkStruct_ov9_02249B04 *param0, u32 param1, u16 param2) +static MapObject *ov9_0224F0D4(DistWorldSystem *param0, u32 param1, u16 param2) { MapObject **v0 = NULL; const UnkStruct_ov9_02252EB4 *v1 = Unk_ov9_02252EB4; @@ -7254,7 +7273,7 @@ static MapObject *ov9_0224F0D4(UnkStruct_ov9_02249B04 *param0, u32 param1, u16 p void ov9_0224F158(FieldSystem *fieldSystem, u16 param1) { u32 v0 = fieldSystem->location->mapId; - UnkStruct_ov9_02249B04 *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; ov9_0224F0D4(v1, v0, param1); } @@ -7265,7 +7284,7 @@ void ov9_0224F16C(FieldSystem *fieldSystem, u16 param1) MapObject *v1; u32 v2 = fieldSystem->location->mapId; MapObjectManager *v3 = fieldSystem->mapObjMan; - UnkStruct_ov9_02249B04 *v4 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v4 = fieldSystem->unk_04->dynamicMapFeaturesData; while (sub_020625B0( v3, &v1, &v0, (1 << 0)) @@ -7279,7 +7298,7 @@ void ov9_0224F16C(FieldSystem *fieldSystem, u16 param1) GF_ASSERT(0); } -static BOOL ov9_0224F1CC(UnkStruct_ov9_02249B04 *param0, MapObject *param1) +static BOOL ov9_0224F1CC(DistWorldSystem *param0, MapObject *param1) { int v0 = 0; UnkStruct_ov9_0224EE40 *v1 = ¶m0->unk_1C64; @@ -7716,10 +7735,10 @@ BOOL ov9_0224F6EC(UnkStruct_ov9_0224F6EC *param0) return v0; } -static void ov9_0224F724(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224F724(DistWorldSystem *param0) { UnkStruct_ov9_0224ADC0 *v0 = ¶m0->unk_1D00; - u32 v1 = ov9_022510D0(param0); + u32 v1 = DistWorldSystem_GetMapHeaderID(param0); if (v1 == 582) { VarsFlags *v2 = SaveData_GetVarsFlags(param0->fieldSystem->saveData); @@ -7733,12 +7752,12 @@ static void ov9_0224F724(UnkStruct_ov9_02249B04 *param0) v0->unk_02 = -1; } -static void ov9_0224F760(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224F760(DistWorldSystem *param0) { return; } -static void ov9_0224F764(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224F764(DistWorldSystem *param0) { UnkStruct_ov9_0224ADC0 *v0 = ¶m0->unk_1D00; PlayerAvatar *playerAvatar = param0->fieldSystem->playerAvatar; @@ -7776,7 +7795,7 @@ static void ov9_0224F764(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224F804(UnkStruct_ov9_02249B04 *param0) +static void ov9_0224F804(DistWorldSystem *param0) { UnkStruct_ov9_0224ADC0 *v0 = ¶m0->unk_1D00; @@ -7805,13 +7824,13 @@ static void ov9_0224F804(UnkStruct_ov9_02249B04 *param0) } } -static void ov9_0224F854(UnkStruct_ov9_02249B04 *param0, u32 param1) +static void ov9_0224F854(DistWorldSystem *param0, u32 param1) { UnkStruct_ov9_0224ADC0 *v0 = ¶m0->unk_1D00; v0->unk_06 = param1; } -static void ov9_0224F860(UnkStruct_ov9_02249B04 *param0, s16 param1) +static void ov9_0224F860(DistWorldSystem *param0, s16 param1) { UnkStruct_ov9_0224ADC0 *v0 = ¶m0->unk_1D00; v0->unk_00 = param1; @@ -7829,7 +7848,7 @@ static void ov9_0224F86C(u16 param0, u16 param1, u16 param2, u16 *param3) (*param3) = (v0->unk_00_0 + ((v1->unk_00_0 - v0->unk_00_0) * param2 >> 4)) | ((v0->unk_00_5 + ((v1->unk_00_5 - v0->unk_00_5) * param2 >> 4)) << 5) | ((v0->unk_00_10 + ((v1->unk_00_10 - v0->unk_00_10) * param2 >> 4)) << 10); } -static void ov9_0224F8C4(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224F930 *param1, const UnkStruct_ov9_0224F8C4 *param2, const VecFx32 *param3) +static void ov9_0224F8C4(DistWorldSystem *param0, UnkStruct_ov9_0224F930 *param1, const UnkStruct_ov9_0224F8C4 *param2, const VecFx32 *param3) { param1->unk_00_3 = param2->unk_00; param1->unk_00_1 = param2->unk_04; @@ -7864,7 +7883,7 @@ static void ov9_0224F930(UnkStruct_ov9_0224F930 *param0, int param1, fx32 param2 param0->unk_00_2 = 1; } -static BOOL ov9_0224F970(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224F930 *param1) +static BOOL ov9_0224F970(DistWorldSystem *param0, UnkStruct_ov9_0224F930 *param1) { if (param1->unk_10.x != param1->unk_1C.x) { param1->unk_10.x += param1->unk_04.x; @@ -7938,7 +7957,7 @@ static BOOL ov9_0224F970(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224F930 return 0; } -static const UnkStruct_ov9_0224A8A0 Unk_ov9_02251E40 = { +static const DistWorldCameraAngleTemplate Unk_ov9_02251E40 = { { 0x0, 0x0, 0x0, 0x0 }, 0xF5, 0xEF, @@ -7947,7 +7966,7 @@ static const UnkStruct_ov9_0224A8A0 Unk_ov9_02251E40 = { 0x48 }; -static const UnkStruct_ov9_0224A8A0 Unk_ov9_02251888 = { +static const DistWorldCameraAngleTemplate Unk_ov9_02251888 = { { 0x0, 0x0, 0x0, 0x0 }, 0x0, 0x0, @@ -7956,18 +7975,18 @@ static const UnkStruct_ov9_0224A8A0 Unk_ov9_02251888 = { 0x20 }; -static void ov9_0224FA94(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224FA94 *param1) +static void ov9_0224FA94(DistWorldSystem *param0, UnkStruct_ov9_0224FA94 *param1) { MapObject *v0 = Player_MapObject(param0->fieldSystem->playerAvatar); int v1 = (((param1->unk_40.unk_10.y) >> 4) / FX32_ONE); if ((param1->unk_04 == 0) && (v1 == -20)) { - ov9_0224A148(param0, &Unk_ov9_02251E40); + DoCameraTransition(param0, &Unk_ov9_02251E40); ov9_0224A4D0(param0, v0, -32, 72); param1->unk_04++; } else if ((param1->unk_04 == 1) && (v1 == -36)) { MapObject_TryFace(v0, 2); - ov9_0224A148(param0, &Unk_ov9_02251888); + DoCameraTransition(param0, &Unk_ov9_02251888); ov9_0224A4D0(param0, v0, 32, 31); param1->unk_04++; } @@ -7982,7 +8001,7 @@ static void ov9_0224FA94(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_0224FA94 } } -static int ov9_0224FB3C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224FB3C(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { VecFx32 v0; UnkStruct_ov9_0224F930 *v1; @@ -8043,7 +8062,7 @@ static int ov9_0224FB3C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0224FC2C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224FC2C(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { MapObject *v0 = Player_MapObject(param0->fieldSystem->playerAvatar); UnkStruct_ov9_0224FA94 *v1 = ov9_0224E39C(param0); @@ -8114,7 +8133,7 @@ static int ov9_0224FC2C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0224FD74(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224FD74(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { int v0; UnkStruct_ov101_021D5D90 *v1 = sub_0205EC04(param0->fieldSystem->playerAvatar); @@ -8190,7 +8209,7 @@ static int ov9_0224FD74(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0224FEDC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0224FEDC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { int v0; UnkStruct_ov101_021D5D90 *v1 = sub_0205EC04(param0->fieldSystem->playerAvatar); @@ -8277,7 +8296,7 @@ static int ov9_0224FEDC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_022500E0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022500E0(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { u32 v0[2] = { 0xa, 0x6 }; UnkStruct_ov9_0224FA94 *v1 = ov9_0224E39C(param0); @@ -8304,7 +8323,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251544[5] = { ov9_022500E0 }; -static const UnkStruct_ov9_0224A8A0 Unk_ov9_02251C48 = { +static const DistWorldCameraAngleTemplate Unk_ov9_02251C48 = { { 0x0, 0x0, 0x0, 0x0 }, 0x37, 0xF0, @@ -8313,18 +8332,18 @@ static const UnkStruct_ov9_0224A8A0 Unk_ov9_02251C48 = { 0x10 }; -static void ov9_02250138(UnkStruct_ov9_02249B04 *param0, UnkStruct_ov9_02250138 *param1) +static void ov9_02250138(DistWorldSystem *param0, UnkStruct_ov9_02250138 *param1) { MapObject *v0 = Player_MapObject(param0->fieldSystem->playerAvatar); int v1 = (((param1->unk_34.unk_10.y) >> 4) / FX32_ONE); if ((param1->unk_04 == 0) && (v1 == 20)) { - ov9_0224A148(param0, &Unk_ov9_02251C48); + DoCameraTransition(param0, &Unk_ov9_02251C48); param1->unk_04++; } } -static int ov9_02250170(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250170(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { VecFx32 v0; UnkStruct_ov9_0224F930 *v1; @@ -8385,7 +8404,7 @@ static int ov9_02250170(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250260(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250260(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { MapObject *v0 = Player_MapObject(param0->fieldSystem->playerAvatar); UnkStruct_ov9_02250138 *v1 = ov9_0224E39C(param0); @@ -8453,7 +8472,7 @@ static int ov9_02250260(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250388(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250388(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { int v0; UnkStruct_ov101_021D5D90 *v1 = sub_0205EC04(param0->fieldSystem->playerAvatar); @@ -8506,7 +8525,7 @@ static int ov9_02250388(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250468(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250468(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { int v0; UnkStruct_ov101_021D5D90 *v1 = sub_0205EC04(param0->fieldSystem->playerAvatar); @@ -8588,7 +8607,7 @@ static int ov9_02250468(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250650(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250650(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { u32 v0[3] = { 0x97, 0x93, 0x73 }; UnkStruct_ov9_02250138 *v1 = ov9_0224E39C(param0); @@ -8615,7 +8634,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_0225151C[5] = { ov9_02250650 }; -static int ov9_022506AC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022506AC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_022506AC *v0 = param3; @@ -8624,7 +8643,7 @@ static int ov9_022506AC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_022506CC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022506CC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { return 2; } @@ -8634,7 +8653,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_022512C0[2] = { ov9_022506CC }; -static int ov9_022506D0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022506D0(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_022506D0 *v0 = param3; VarsFlags *v1 = SaveData_GetVarsFlags(param0->fieldSystem->saveData); @@ -8647,7 +8666,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251238[1] = { ov9_022506D0 }; -static int ov9_022506EC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022506EC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_022506EC *v0 = param3; VarsFlags *v1 = SaveData_GetVarsFlags(param0->fieldSystem->saveData); @@ -8660,7 +8679,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_0225121C[1] = { ov9_022506EC }; -static int ov9_02250704(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250704(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_02250704 *v0 = param3; @@ -8672,7 +8691,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251270[1] = { ov9_02250704 }; -static int ov9_02250710(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250710(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_02250704 *v0 = param3; @@ -8684,7 +8703,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251254[1] = { ov9_02250710 }; -static int ov9_0225071C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0225071C(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { const UnkStruct_ov9_02252414 *v0 = param3; @@ -8693,7 +8712,7 @@ static int ov9_0225071C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250730(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250730(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { if (ov9_0224E964(param0) == 1) { ov9_0224E988(param0); @@ -8738,7 +8757,7 @@ static void ov9_0225074C(UnkStruct_ov9_0225074C *param0) void ov9_02250780(FieldSystem *fieldSystem) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; if (v0->unk_1EC0 == 1) { UnkStruct_ov9_0225074C *v1 = ov9_0224E39C(v0); @@ -8752,7 +8771,7 @@ void ov9_02250780(FieldSystem *fieldSystem) } } -static int ov9_022507C4(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022507C4(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_0225074C *v0 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_0225074C)); v0->unk_18 = ov9_0224F0D4(param0, 582, (0x80 + 0)); @@ -8764,7 +8783,7 @@ static int ov9_022507C4(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_022507FC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022507FC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_0225074C *v1 = ov9_0224E39C(param0); UnkStruct_020216E0 *v0 = ov5_021EB1A0(v1->unk_18); @@ -8786,7 +8805,7 @@ static int ov9_022507FC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250854(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250854(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_0225074C *v0 = ov9_0224E39C(param0); v0->unk_04 += (FX32_ONE * 8) / (3 * 30); @@ -8812,7 +8831,7 @@ static int ov9_02250854(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_022508C0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022508C0(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_020216E0 *v0; NNSG3dResMdl *v1; @@ -8831,7 +8850,7 @@ static int ov9_022508C0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_022508F4(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022508F4(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_0225074C *v0 = ov9_0224E39C(param0); v0->unk_14++; @@ -8852,7 +8871,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251490[5] = { ov9_022508F4 }; -static int ov9_02250918(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250918(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250918 *v0 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_02250918)); v0->unk_20 = ov9_0224F0D4(param0, 579, (0x80 + 3)); @@ -8864,7 +8883,7 @@ static int ov9_02250918(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_0225094C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_0225094C(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250918 *v0; fx32 v1 = (FX32_ONE * 2); @@ -8885,7 +8904,7 @@ static int ov9_0225094C(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250994(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250994(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250918 *v0 = ov9_0224E39C(param0); v0->unk_14.z -= (FX32_ONE * 1); @@ -8899,7 +8918,7 @@ static int ov9_02250994(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_022509D4(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_022509D4(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250918 *v0; fx32 v1[8] = { 0x0, 0x800, 0x1000, 0x2000, 0x4000, 0x6000, 0x7000, 0x8000 }; @@ -8926,7 +8945,7 @@ static int ov9_022509D4(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250A58(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250A58(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250918 *v0 = ov9_0224E39C(param0); v0->unk_14.z += (FX32_ONE * 1); @@ -8940,7 +8959,7 @@ static int ov9_02250A58(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250A90(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250A90(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250918 *v0 = ov9_0224E39C(param0); @@ -8981,7 +9000,7 @@ static const MapObjectAnimCmd Unk_ov9_02251E74[] = { { 0xfe, 0x0 } }; -static int ov9_02250AFC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250AFC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250AFC *v0 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_02250AFC)); v0->unk_14 = ov9_0224F0D4(param0, 579, (0x80 + 4)); @@ -8992,7 +9011,7 @@ static int ov9_02250AFC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250B30(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250B30(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250AFC *v0; fx32 v1 = (FX32_ONE * 2); @@ -9015,7 +9034,7 @@ static int ov9_02250B30(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250B84(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250B84(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250AFC *v0 = ov9_0224E39C(param0); @@ -9028,7 +9047,7 @@ static int ov9_02250B84(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250BAC(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250BAC(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250AFC *v0 = ov9_0224E39C(param0); @@ -9146,7 +9165,7 @@ static const MapObjectAnimCmd Unk_ov9_02252E64[] = { { 0xfe, 0x0 } }; -static int ov9_02250C14(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250C14(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250C14 *v0 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_02250AFC)); v0->unk_18 = ov9_0224F0D4(param0, 579, (0x80 + 5)); @@ -9156,7 +9175,7 @@ static int ov9_02250C14(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250C48(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250C48(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250C14 *v0; fx32 v1 = (FX32_ONE * 2); @@ -9174,7 +9193,7 @@ static int ov9_02250C48(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * int v2, v3, v4; const MapObjectAnimCmd *v5, *v6; - ov9_02250F44(param0, &v2, &v3, &v4); + GetPlayerPos(param0, &v2, &v3, &v4); if (v4 == 67) { v5 = Unk_ov9_02252E14; @@ -9192,7 +9211,7 @@ static int ov9_02250C48(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250CD8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250CD8(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250C14 *v0 = ov9_0224E39C(param0); @@ -9206,7 +9225,7 @@ static int ov9_02250CD8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250D10(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250D10(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250C14 *v0 = ov9_0224E39C(param0); @@ -9236,7 +9255,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251448[4] = { ov9_02250D10 }; -const UnkStruct_ov9_0224A8A0 Unk_ov9_02251D68 = { +const DistWorldCameraAngleTemplate Unk_ov9_02251D68 = { { 0x0, 0x0, 0x0, 0x0 }, 0x10, 0x0, @@ -9245,11 +9264,11 @@ const UnkStruct_ov9_0224A8A0 Unk_ov9_02251D68 = { 0x14 }; -static int ov9_02250D78(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250D78(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250D78 *v0 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_02250D78)); - ov9_0224A148(param0, &Unk_ov9_02251D68); + DoCameraTransition(param0, &Unk_ov9_02251D68); v0->unk_02 = 20 + 16; v0->unk_00 = 1; @@ -9258,7 +9277,7 @@ static int ov9_02250D78(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 1; } -static int ov9_02250DA0(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250DA0(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250D78 *v0 = ov9_0224E39C(param0); @@ -9283,7 +9302,7 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_02251340[2] = { ov9_02250DA0 }; -static int ov9_02250DE8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250DE8(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250DE8 *v0 = ov9_0224E37C(param0, sizeof(UnkStruct_ov9_02250DE8)); v0->unk_02 = 16; @@ -9293,7 +9312,7 @@ static int ov9_02250DE8(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 1; } -static int ov9_02250E00(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250E00(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250DE8 *v0 = ov9_0224E39C(param0); @@ -9314,7 +9333,7 @@ static int ov9_02250E00(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 * return 0; } -static int ov9_02250E50(UnkStruct_ov9_02249B04 *param0, FieldTask *param1, u16 *param2, const void *param3) +static int ov9_02250E50(DistWorldSystem *param0, FieldTask *param1, u16 *param2, const void *param3) { UnkStruct_ov9_02250DE8 *v0 = ov9_0224E39C(param0); @@ -9333,35 +9352,41 @@ static const UnkFuncPtr_ov9_02253BE4 Unk_ov9_0225139C[3] = { ov9_02250E50 }; -static BOOL ov9_02250E6C(int param0, int param1, int param2, const UnkStruct_ov9_02250E6C *param3) +static BOOL DistWorldBounds_AreCoordinatesInBounds(int tileX, int tileY, int tileZ, const DistWorldBounds *bounds) { - if ((param1 >= param3->unk_02) && (param1 <= param3->unk_02 + param3->unk_08) && (param2 >= param3->unk_04) && (param2 <= param3->unk_04 + param3->unk_0A) && (param0 >= param3->unk_00) && (param0 <= param3->unk_00 + param3->unk_06)) { - return 1; + if ( + tileY >= bounds->startTileY + && tileY <= bounds->startTileY + bounds->sizeY + && tileZ >= bounds->startTileZ + && tileZ <= bounds->startTileZ + bounds->sizeZ + && tileX >= bounds->startTileX + && tileX <= bounds->startTileX + bounds->sizeX) { + return TRUE; } - return 0; + return FALSE; } -static int ov9_02250EB0(u16 param0, u16 param1) +static int CalculateCameraAngleDelta(u16 currentAngleComponent, u16 targetAngleComponent) { - int v0 = (s16)param1 - (s16)param0; - int v1 = v0; + int angleComponentDelta = (s16)targetAngleComponent - (s16)currentAngleComponent; + int fixedAngleComponentDelta = angleComponentDelta; - if (v1 < 0) { - v1 = -v1; + if (fixedAngleComponentDelta < 0) { + fixedAngleComponentDelta = -fixedAngleComponentDelta; } - if (v1 > 0x8000) { - v1 = (v1 + 0x8000) % 0x8000; + if (fixedAngleComponentDelta > S16_SIGN_MASK) { + fixedAngleComponentDelta = (fixedAngleComponentDelta + S16_SIGN_MASK) % S16_SIGN_MASK; - if (param0 < param1) { - v1 = -v1; + if (currentAngleComponent < targetAngleComponent) { + fixedAngleComponentDelta = -fixedAngleComponentDelta; } - v0 = v1; + angleComponentDelta = fixedAngleComponentDelta; } - return v0; + return angleComponentDelta; } static void ov9_02250EE8(s16 *param0, s16 param1) @@ -9390,14 +9415,13 @@ static void ov9_02250F1C(fx32 *param0, fx32 param1) } } -static void ov9_02250F44(UnkStruct_ov9_02249B04 *param0, int *param1, int *param2, int *param3) +static void GetPlayerPos(DistWorldSystem *system, int *playerX, int *playerY, int *playerZ) { - MapObject *v0 = Player_MapObject(param0->fieldSystem->playerAvatar); + MapObject *mapObj = Player_MapObject(system->fieldSystem->playerAvatar); - *param1 = MapObject_GetX(v0); - *param2 = MapObject_GetY(v0); - *param2 = ((*param2) / 2); - *param3 = MapObject_GetZ(v0); + *playerX = MapObject_GetX(mapObj); + *playerY = MapObject_GetY(mapObj) / 2; + *playerZ = MapObject_GetZ(mapObj); } BOOL ov9_02250F74(FieldSystem *fieldSystem) @@ -9414,7 +9438,7 @@ BOOL ov9_02250F74(FieldSystem *fieldSystem) BOOL ov9_02250F90(FieldSystem *fieldSystem, int param1, int param2, int param3) { u16 v0; - UnkStruct_ov9_02249B04 *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; v0 = ov9_0224C55C(v1, param1, param2, param3); @@ -9434,7 +9458,7 @@ BOOL ov9_02250F90(FieldSystem *fieldSystem, int param1, int param2, int param3) BOOL ov9_02250FBC(FieldSystem *fieldSystem, int param1, int param2, int param3) { u16 v0; - UnkStruct_ov9_02249B04 *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v1 = fieldSystem->unk_04->dynamicMapFeaturesData; v0 = ov9_0224C55C(v1, param1, param2, param3); @@ -9447,7 +9471,7 @@ BOOL ov9_02250FBC(FieldSystem *fieldSystem, int param1, int param2, int param3) BOOL ov9_02250FD8(FieldSystem *fieldSystem, int param1, int param2, int param3) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; s16 v1 = ov9_0224C494(v0); return ov9_0224C324(v0, param1, param2, param3, v1); @@ -9455,7 +9479,7 @@ BOOL ov9_02250FD8(FieldSystem *fieldSystem, int param1, int param2, int param3) void ov9_02251000(FieldSystem *fieldSystem, int param1, int param2, int param3) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; s16 v1 = ov9_0224C494(v0); if (ov9_0224C324(v0, param1, param2, param3, v1) == 1) { @@ -9477,7 +9501,7 @@ BOOL ov9_02251044(FieldSystem *fieldSystem, int param1, int param2, int param3, { u16 v1; - UnkStruct_ov9_02249B04 *v2 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v2 = fieldSystem->unk_04->dynamicMapFeaturesData; v1 = ov9_0224C55C(v2, param1, param2, param3); @@ -9502,9 +9526,9 @@ void ov9_02251094(int param0, int *param1, int *param2, int *param3) NARC_dtor(v1); } -static u32 ov9_022510D0(UnkStruct_ov9_02249B04 *param0) +static u32 DistWorldSystem_GetMapHeaderID(DistWorldSystem *system) { - return param0->fieldSystem->location->mapId; + return system->fieldSystem->location->mapId; } static int ov9_022510D8(u32 param0) @@ -9523,7 +9547,7 @@ static int ov9_022510D8(u32 param0) return AVATAR_DISTORTION_STATE_ACTIVE; } -static BOOL ov9_02251104(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2) +static BOOL ov9_02251104(DistWorldSystem *param0, u32 param1, u32 param2) { VarsFlags *v0 = SaveData_GetVarsFlags(param0->fieldSystem->saveData); @@ -9572,9 +9596,9 @@ static BOOL ov9_02251104(UnkStruct_ov9_02249B04 *param0, u32 param1, u32 param2) BOOL ov9_022511A0(FieldSystem *fieldSystem, int param1, int param2, int param3) { - UnkStruct_ov9_02249B04 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; + DistWorldSystem *v0 = fieldSystem->unk_04->dynamicMapFeaturesData; - if (ov9_022510D0(v0) == 582) { + if (DistWorldSystem_GetMapHeaderID(v0) == 582) { if ((param2 == 15) && (param1 == 15) && (param3 == 1)) { VarsFlags *v1 = SaveData_GetVarsFlags(v0->fieldSystem->saveData); u32 v2 = SystemVars_GetDistortionWorldProgress(v1); @@ -9626,7 +9650,7 @@ static const fx32 Unk_ov9_02252CF8[16] = { 0 * FX32_ONE }; -static void (*const Unk_ov9_02251224[1])(UnkStruct_ov9_02249B04 *, const UnkStruct_ov9_0224AA00 *) = { +static void (*const Unk_ov9_02251224[1])(DistWorldSystem *, const UnkStruct_ov9_0224AA00 *) = { ov9_0224AA34 }; diff --git a/src/overlay077/ov77_021D25B0.c b/src/overlay077/ov77_021D25B0.c index 7cc1fc2305..6d9fa7432a 100644 --- a/src/overlay077/ov77_021D25B0.c +++ b/src/overlay077/ov77_021D25B0.c @@ -6,7 +6,7 @@ #include "struct_defs/struct_0207C690.h" #include "struct_defs/struct_02099F80.h" -#include "overlay009/struct_ov9_02249FF4.h" +#include "overlay009/camera_configuration.h" #include "overlay077/ov77_021D54B0.h" #include "overlay077/ov77_021D6670.h" #include "overlay077/ov77_021D6C70.h" @@ -199,7 +199,7 @@ const int Unk_ov77_021D779C[][6] = { { 0x6E, 0x6F, 0x0, 0x0, 0x0, 0x0 } }; -static const UnkStruct_ov9_02249FF4 Unk_ov77_021D74FC = { +static const CameraConfiguration Unk_ov77_021D74FC = { 0x29AEC1, { -0x29fe, 0x0, 0x0 }, 0x0, @@ -1734,7 +1734,7 @@ static void ov77_021D4044(UnkStruct_ov77_021D37C0 *param0, int param1) { VecFx32 v0 = { 0, 0, FX32_ONE * 16 * 6 }; - Camera_InitWithTarget(&v0, Unk_ov77_021D74FC.unk_00, &Unk_ov77_021D74FC.cameraAngle, Unk_ov77_021D74FC.unk_0E, Unk_ov77_021D74FC.unk_0C, 0, param0->unk_20.camera); + Camera_InitWithTarget(&v0, Unk_ov77_021D74FC.distance, &Unk_ov77_021D74FC.cameraAngle, Unk_ov77_021D74FC.fovY, Unk_ov77_021D74FC.projectionMtx, 0, param0->unk_20.camera); Camera_SetFOV(0x981, param0->unk_20.camera); { @@ -2370,7 +2370,7 @@ static void ov77_021D4F38(UnkStruct_ov77_021D37C0 *param0, const int param1) Camera_Move(&v0, param0->unk_20.camera); } else if (param1 == ((40 * 30 - 15) + 6)) { VecFx32 v2 = { -(FX32_ONE * 16 * 4), 0, -FX32_ONE * 16 * 3 }; - Camera_InitWithTarget(&v2, Unk_ov77_021D74FC.unk_00, &Unk_ov77_021D74FC.cameraAngle, Unk_ov77_021D74FC.unk_0E, Unk_ov77_021D74FC.unk_0C, 0, param0->unk_20.camera); + Camera_InitWithTarget(&v2, Unk_ov77_021D74FC.distance, &Unk_ov77_021D74FC.cameraAngle, Unk_ov77_021D74FC.fovY, Unk_ov77_021D74FC.projectionMtx, 0, param0->unk_20.camera); { VecFx32 v3 = { 0, (FX32_ONE * 16 * 5), 0 }; @@ -2406,7 +2406,7 @@ static void ov77_021D4F38(UnkStruct_ov77_021D37C0 *param0, const int param1) Bg_ScheduleScroll(param0->unk_10, 1, 1, 4); } else if (param1 == ((47 * 30 - 15) + 6)) { VecFx32 v6 = { FX32_ONE * 16 * 30, 0, FX32_ONE * 0 - 0x70000 }; - Camera_InitWithTarget(&v6, Unk_ov77_021D74FC.unk_00, &Unk_ov77_021D74FC.cameraAngle, Unk_ov77_021D74FC.unk_0E, Unk_ov77_021D74FC.unk_0C, 0, param0->unk_20.camera); + Camera_InitWithTarget(&v6, Unk_ov77_021D74FC.distance, &Unk_ov77_021D74FC.cameraAngle, Unk_ov77_021D74FC.fovY, Unk_ov77_021D74FC.projectionMtx, 0, param0->unk_20.camera); { VecFx32 v7 = { 0, (FX32_ONE * 16 * 5), 0 }; Camera_Move(&v7, param0->unk_20.camera); diff --git a/src/overlay093/ov93_021D0D80.c b/src/overlay093/ov93_021D0D80.c index 21e0333c27..83c1af0934 100644 --- a/src/overlay093/ov93_021D0D80.c +++ b/src/overlay093/ov93_021D0D80.c @@ -6,7 +6,7 @@ #include "struct_defs/struct_0206C8D4.h" #include "struct_defs/struct_02099F80.h" -#include "overlay009/struct_ov9_02249FF4.h" +#include "overlay009/camera_configuration.h" #include "camera.h" #include "easy3d.h" @@ -42,7 +42,7 @@ static void ov93_021D0FA8(void); static void ov93_021D100C(void); static void ov93_021D102C(UnkStruct_ov93_021D102C *param0); -static const UnkStruct_ov9_02249FF4 Unk_ov93_021D14B8 = { +static const CameraConfiguration Unk_ov93_021D14B8 = { 0x29AEC1, { -0x29fe, 0x0, 0x0 }, 0x0, @@ -102,7 +102,7 @@ int ov93_021D0D80(ApplicationManager *appMan, int *param1) { VecFx32 v3 = { 0, 0, 0 }; - Camera_InitWithTarget(&v3, Unk_ov93_021D14B8.unk_00, &Unk_ov93_021D14B8.cameraAngle, Unk_ov93_021D14B8.unk_0E, Unk_ov93_021D14B8.unk_0C, 0, v1->camera); + Camera_InitWithTarget(&v3, Unk_ov93_021D14B8.distance, &Unk_ov93_021D14B8.cameraAngle, Unk_ov93_021D14B8.fovY, Unk_ov93_021D14B8.projectionMtx, 0, v1->camera); Camera_SetAsActive(v1->camera); } diff --git a/src/overlay093/ov93_021D111C.c b/src/overlay093/ov93_021D111C.c index 855b4ddd5c..0c4149c762 100644 --- a/src/overlay093/ov93_021D111C.c +++ b/src/overlay093/ov93_021D111C.c @@ -6,7 +6,7 @@ #include "struct_defs/struct_0206C8D4.h" #include "struct_defs/struct_02099F80.h" -#include "overlay009/struct_ov9_02249FF4.h" +#include "overlay009/camera_configuration.h" #include "camera.h" #include "easy3d.h" @@ -42,7 +42,7 @@ static void ov93_021D133C(void); static void ov93_021D13A0(void); static void ov93_021D13C0(UnkStruct_ov93_021D13C0 *param0); -static const UnkStruct_ov9_02249FF4 Unk_ov93_021D1534 = { +static const CameraConfiguration Unk_ov93_021D1534 = { 0x29AEC1, { -0x29fe, 0x0, 0x0 }, 0x0, @@ -103,7 +103,7 @@ int ov93_021D111C(ApplicationManager *appMan, int *param1) { VecFx32 v3 = { 0, 0, 0 }; - Camera_InitWithTarget(&v3, Unk_ov93_021D1534.unk_00, &Unk_ov93_021D1534.cameraAngle, Unk_ov93_021D1534.unk_0E, Unk_ov93_021D1534.unk_0C, 0, v1->camera); + Camera_InitWithTarget(&v3, Unk_ov93_021D1534.distance, &Unk_ov93_021D1534.cameraAngle, Unk_ov93_021D1534.fovY, Unk_ov93_021D1534.projectionMtx, 0, v1->camera); Camera_SetAsActive(v1->camera); } diff --git a/src/persisted_map_features_init.c b/src/persisted_map_features_init.c index ff1296bb6a..004101177c 100644 --- a/src/persisted_map_features_init.c +++ b/src/persisted_map_features_init.c @@ -12,11 +12,11 @@ #include "struct_defs/struct_02071BF8.h" #include "struct_defs/struct_02071C18.h" #include "struct_defs/struct_02071C34.h" -#include "struct_defs/struct_02071C5C.h" #include "field/field_system.h" #include "field/field_system_sub2_t.h" #include "overlay006/struct_ov6_02242AF0.h" +#include "overlay009/ov9_02249960.h" #include "field_system.h" #include "persisted_map_features.h" @@ -146,8 +146,8 @@ void PersistedMapFeatures_InitForDistortionWorld(FieldSystem *fieldSystem) PersistedMapFeatures *persistedMapFeatures = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem)); PersistedMapFeatures_InitWithID(persistedMapFeatures, DYNAMIC_MAP_FEATURES_DISTORTION_WORLD); - UnkStruct_02071C5C *data = PersistedMapFeatures_GetBuffer(persistedMapFeatures, DYNAMIC_MAP_FEATURES_DISTORTION_WORLD); - memset(data, 0, sizeof(UnkStruct_02071C5C)); + DistWorldPersistedData *data = PersistedMapFeatures_GetBuffer(persistedMapFeatures, DYNAMIC_MAP_FEATURES_DISTORTION_WORLD); + memset(data, 0, sizeof(DistWorldPersistedData)); } static void sub_02071C80(const u8 param0, const u8 param1, int *param2) diff --git a/src/scrcmd.c b/src/scrcmd.c index 307252130a..c0853f2ebd 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -732,7 +732,7 @@ static BOOL ScrCmd_GetRotomFormsInSave(ScriptContext *ctx); static BOOL ScrCmd_IncrementTrainerScore(ScriptContext *ctx); static BOOL ScrCmd_311(ScriptContext *ctx); static BOOL ScrCmd_312(ScriptContext *ctx); -static BOOL ScrCmd_31F(ScriptContext *ctx); +static BOOL ScrCmd_ResetDistortionWorldPersistedCameraAngles(ScriptContext *ctx); static BOOL ScrCmd_313(ScriptContext *ctx); static BOOL ScrCmd_StartGiratinaOriginBattle(ScriptContext *ctx); static BOOL ScrCmd_WriteSpeciesSeen(ScriptContext *ctx); @@ -1567,7 +1567,7 @@ const ScrCmdFunc Unk_020EAC58[] = { ScrCmd_CheckPartyHasFatefulEncounter, ScrCmd_31D, ScrCmd_31E, - ScrCmd_31F, + ScrCmd_ResetDistortionWorldPersistedCameraAngles, ScrCmd_320, ScrCmd_321, ScrCmd_322, @@ -7869,11 +7869,11 @@ static BOOL ScrCmd_312(ScriptContext *ctx) return FALSE; } -static BOOL ScrCmd_31F(ScriptContext *ctx) +static BOOL ScrCmd_ResetDistortionWorldPersistedCameraAngles(ScriptContext *ctx) { FieldSystem *fieldSystem = ctx->fieldSystem; - ov9_02249FD0(fieldSystem); + DistWorld_ResetPersistedCameraAngles(fieldSystem); return FALSE; }