From 53ef036ce1f32f7f5cba99763801991937be0053 Mon Sep 17 00:00:00 2001 From: Kuruyia Date: Wed, 2 Apr 2025 18:24:28 +0200 Subject: [PATCH 1/2] Start documenting Distortion World and its camera This begins the documentation of overlay009, which is in charge of managing stuff related to the Distortion World. For now, the scope of this commit has been limited to the following: - start documenting structures used throughout this overlay, more specifically the `DistortionWorldSystem` struct - start documenting the structures found inside the files of the `tw_arc.narc` NARC - document functions and structures related to camera management inside the Distortion Word, including the templates found inside the `tw_arc.narc` NARC Signed-off-by: Kuruyia --- generated/map_headers.txt | 1 + include/constants/types.h | 10 + include/overlay009/camera_configuration.h | 14 + include/overlay009/ov9_02249960.h | 23 +- include/overlay009/struct_ov9_02249FF4.h | 14 - include/struct_defs/struct_02071C5C.h | 17 - src/dynamic_map_features.c | 6 +- src/overlay005/fieldmap.c | 2 +- src/overlay009/ov9_02249960.c | 2032 +++++++++++---------- src/overlay077/ov77_021D25B0.c | 10 +- src/overlay093/ov93_021D0D80.c | 6 +- src/overlay093/ov93_021D111C.c | 6 +- src/persisted_map_features_init.c | 6 +- src/scrcmd.c | 2 +- 14 files changed, 1090 insertions(+), 1059 deletions(-) create mode 100644 include/constants/types.h create mode 100644 include/overlay009/camera_configuration.h delete mode 100644 include/overlay009/struct_ov9_02249FF4.h delete mode 100644 include/struct_defs/struct_02071C5C.h 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/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..349e70360e 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -7873,7 +7873,7 @@ static BOOL ScrCmd_31F(ScriptContext *ctx) { FieldSystem *fieldSystem = ctx->fieldSystem; - ov9_02249FD0(fieldSystem); + DistWorld_ResetPersistedCameraAngles(fieldSystem); return FALSE; } From d649ae0222330f7d24b610dbe895860f201f3d23 Mon Sep 17 00:00:00 2001 From: Kuruyia Date: Sun, 6 Apr 2025 10:35:17 +0200 Subject: [PATCH 2/2] Document map script command to reset persisted camera angles in the Distortion World This documents the `ScrCmd_31F` map script command, that is only used in the Giratina Room map of the Distortion World to reset the camera angles that are present in the persisted map features data. Signed-off-by: Kuruyia --- asm/macros/scrcmd.inc | 2 +- res/field/scripts/scripts_distortion_world_giratina_room.s | 2 +- src/scrcmd.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) 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/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/scrcmd.c b/src/scrcmd.c index 349e70360e..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,7 +7869,7 @@ static BOOL ScrCmd_312(ScriptContext *ctx) return FALSE; } -static BOOL ScrCmd_31F(ScriptContext *ctx) +static BOOL ScrCmd_ResetDistortionWorldPersistedCameraAngles(ScriptContext *ctx) { FieldSystem *fieldSystem = ctx->fieldSystem;