Skip to content

Commit

Permalink
Merge pull request #359 from Kuruyia/feat/document-map-matrix
Browse files Browse the repository at this point in the history
Document map matrix
  • Loading branch information
lhearachel authored Feb 4, 2025
2 parents 5a48355 + c5a55ce commit a61adca
Show file tree
Hide file tree
Showing 29 changed files with 411 additions and 451 deletions.
10 changes: 10 additions & 0 deletions include/constants/map_matrix.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef POKEPLATINUM_CONSTANTS_MAP_MATRIX_H
#define POKEPLATINUM_CONSTANTS_MAP_MATRIX_H

#define MAP_MATRIX_MAX_WIDTH 30
#define MAP_MATRIX_MAX_HEIGHT 30
#define MAP_MATRIX_MAX_SIZE (MAP_MATRIX_MAX_WIDTH * MAP_MATRIX_MAX_HEIGHT)

#define MAP_MATRIX_MAX_NAME_LENGTH 16

#endif // POKEPLATINUM_CONSTANTS_MAP_MATRIX_H
4 changes: 2 additions & 2 deletions include/field/field_system.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#ifndef POKEPLATINUM_FIELD_SYSTEM_STRUCT_H
#define POKEPLATINUM_FIELD_SYSTEM_STRUCT_H

#include "struct_decls/struct_02039E30_decl.h"
#include "struct_decls/struct_02054C18_decl.h"
#include "struct_decls/struct_0205B43C_decl.h"
#include "struct_decls/struct_0205C22C_decl.h"
Expand Down Expand Up @@ -41,6 +40,7 @@
#include "journal.h"
#include "location.h"
#include "map_header_data.h"
#include "map_matrix.h"
#include "overlay_manager.h"
#include "pokeradar.h"
#include "savedata.h"
Expand All @@ -64,7 +64,7 @@ typedef struct FieldSystem_t {
int unk_20;
Camera *camera;
UnkStruct_ov5_021E8F60 *unk_28;
UnkStruct_02039E30 *unk_2C;
MapMatrix *mapMatrix;
UnkStruct_ov5_021EF76C *unk_30;
UnkStruct_ov5_021D1A68 *unk_34;
MapObjectManager *mapObjMan;
Expand Down
48 changes: 48 additions & 0 deletions include/map_matrix.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#ifndef POKEPLATINUM_MAP_MATRIX_H
#define POKEPLATINUM_MAP_MATRIX_H

#include "constants/map_matrix.h"

typedef struct MapMatrixData {
u8 height;
u8 width;
u16 mapHeaderIds[MAP_MATRIX_MAX_SIZE];
u8 altitudes[MAP_MATRIX_MAX_SIZE];
u16 landDataIds[MAP_MATRIX_MAX_SIZE];
char modelNamePrefix[MAP_MATRIX_MAX_NAME_LENGTH];
} MapMatrixData;

typedef struct MapMatrix {
u8 width;
u8 height;
u8 matrixId;
MapMatrixData data;
} MapMatrix;

typedef struct MainMapMatrixData {
u16 mapHeaderIds[MAP_MATRIX_MAX_SIZE];
} MainMapMatrixData;

MapMatrix *MapMatrix_New(void);
MapMatrix *MapMatrix_NewWithHeapID(u32 heapId);
void MapMatrix_Load(const int mapHeaderId, MapMatrix *mapMatrix);
void MapMatrix_Free(MapMatrix *const mapMatrix);
void MapMatrix_Copy(MapMatrix *src, MapMatrix *dest);
u16 MapMatrix_GetMapHeaderIDAtCoords(const MapMatrix *mapMatrix, int x, int y);
u16 MapMatrix_GetMapHeaderIDAtIndex(const MapMatrix *mapMatrix, const int index);
int MapMatrix_GetAltitudeAtCoords(const MapMatrix *mapMatrix, const int param1, const int x, const int y, const int width);
int MapMatrix_GetWidth(const MapMatrix *mapMatrix);
int MapMatrix_GetHeight(const MapMatrix *mapMatrix);
u8 MapMatrix_GetMatrixID(const MapMatrix *mapMatrix);
const u16 MapMatrix_GetLandDataIdByIndex(const int index, const MapMatrix *mapMatrix);
u16 MapMatrix_GetLandDataIdByIndex2(int index, const MapMatrix *mapMatrix);
void MapMatrix_RevealSpringPath(MapMatrix *mapMatrix);
void MapMatrix_RevealSeabreakPath(MapMatrix *mapMatrix);

int MapMatrixData_GetMapHeaderIDAtCoords(const int mapMatrixId, const u16 x, const u16 y);

MainMapMatrixData *MainMapMatrixData_Load(const u32 heapId);
void MainMapMatrixData_Free(MainMapMatrixData *mainMapMatrixData);
int MainMapMatrixData_GetMapHeaderIDAtCoords(const MainMapMatrixData *mainMapMatrixData, const u32 x, const u32 y);

#endif // POKEPLATINUM_MAP_MATRIX_H
15 changes: 7 additions & 8 deletions include/overlay005/ov5_021E779C.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@

#include <nitro/fx/fx.h>

#include "struct_decls/struct_02039E30_decl.h"

#include "field/field_system_decl.h"
#include "overlay005/funcptr_ov5_021E9630.h"
#include "overlay005/struct_ov5_021D3CAC_decl.h"
Expand All @@ -14,11 +12,12 @@
#include "overlay005/struct_ov5_021EF13C_decl.h"
#include "overlay005/struct_ov5_021EF76C_decl.h"

#include "map_matrix.h"
#include "narc.h"

void ov5_021E7A54(UnkStruct_ov5_021E8F60 *param0);
void ov5_021E8188(FieldSystem *fieldSystem, UnkStruct_ov5_021E8F60 *param1);
UnkStruct_ov5_021E8F60 *ov5_021E9084(UnkStruct_02039E30 *param0, UnkStruct_ov5_021EF76C *param1, UnkStruct_ov5_021D3CAC *param2, const int param3);
UnkStruct_ov5_021E8F60 *ov5_021E9084(MapMatrix *param0, UnkStruct_ov5_021EF76C *param1, UnkStruct_ov5_021D3CAC *param2, const int param3);
void ov5_021E9150(UnkStruct_ov5_021E8F60 *param0, const int param1, const int param2);
void ov5_021E9190(const u8 param0, UnkStruct_ov5_021E8F60 *param1);
void ov5_021E91FC(const UnkStruct_ov5_021E8F60 *param0, UnkStruct_ov5_021D5894 *const param1);
Expand All @@ -38,8 +37,8 @@ const UnkStruct_ov5_021EF13C *ov5_021E9610(const UnkStruct_ov5_021E8F60 *param0,
u16 const *ov5_021E9624(const UnkStruct_ov5_021E8F60 *param0, const u8 param1);
void ov5_021E9630(UnkStruct_ov5_021E8F60 *param0, UnkFuncPtr_ov5_021E9630 param1, void *param2);
NARC *ov5_021E9828(UnkStruct_ov5_021E8F60 *param0);
UnkStruct_ov5_021E8F60 *ov5_021E9830(UnkStruct_02039E30 *param0, UnkStruct_ov5_021EF76C *param1, NARC *param2);
void ov5_021E98C8(UnkStruct_ov5_021E8F60 *param0, UnkStruct_02039E30 *param1, UnkStruct_ov5_021EF76C *param2, NARC *param3);
UnkStruct_ov5_021E8F60 *ov5_021E9830(MapMatrix *param0, UnkStruct_ov5_021EF76C *param1, NARC *param2);
void ov5_021E98C8(UnkStruct_ov5_021E8F60 *param0, MapMatrix *param1, UnkStruct_ov5_021EF76C *param2, NARC *param3);
void ov5_021E9938(UnkStruct_ov5_021E8F60 *param0);
void ov5_021E9998(UnkStruct_ov5_021E8F60 *param0);
void ov5_021E99C4(UnkStruct_ov5_021E8F60 *param0);
Expand All @@ -48,10 +47,10 @@ void ov5_021E9AAC(UnkStruct_ov5_021E8F60 *param0, const int param1, const int pa
void ov5_021E9B10(UnkStruct_ov5_021E8F60 *param0, int param1, int param2);
void ov5_021E9C0C(const UnkStruct_ov5_021E8F60 *param0, const UnkStruct_ov5_021D5894 *param1);
void ov5_021E9CD8(UnkStruct_ov5_021E8F60 *param0);
void ov5_021E9D3C(UnkStruct_02039E30 *param0, UnkStruct_ov5_021EF76C *param1, UnkStruct_ov5_021E8F60 *param2, UnkStruct_ov5_021E8F60 *param3, const int param4, const int param5);
void ov5_021E9D3C(MapMatrix *param0, UnkStruct_ov5_021EF76C *param1, UnkStruct_ov5_021E8F60 *param2, UnkStruct_ov5_021E8F60 *param3, const int param4, const int param5);
void ov5_021E9F98(UnkStruct_ov5_021E8F60 *param0, UnkStruct_ov5_021E8F60 *param1);
void ov5_021EA174(FieldSystem *fieldSystem, UnkStruct_ov5_021E8F60 *param1);
void ov5_021EA540(UnkStruct_ov5_021E8F60 *param0, UnkStruct_02039E30 *param1, UnkStruct_ov5_021EF76C *param2);
void ov5_021EA540(UnkStruct_ov5_021E8F60 *param0, MapMatrix *param1, UnkStruct_ov5_021EF76C *param2);
void ov5_021EA58C(UnkStruct_ov5_021E8F60 *param0, const int param1, const int param2, int *param3);
void ov5_021EA5E0(UnkStruct_ov5_021E8F60 *param0, int param1, int param2);
void ov5_021EA678(UnkStruct_ov5_021E8F60 *param0, int param1, int param2, int param3);
Expand All @@ -60,7 +59,7 @@ int ov5_021EA6AC(const UnkStruct_ov5_021E8F60 *param0);
int ov5_021EA6B4(const UnkStruct_ov5_021E8F60 *param0);
void ov5_021EA6BC(const UnkStruct_ov5_021E8F60 *param0, VecFx32 *param1);
void ov5_021EA6D0(UnkStruct_ov5_021E8F60 *param0, int param1);
void ov5_021EA6D8(UnkStruct_ov5_021E8F60 *param0, UnkStruct_02039E30 *param1);
void ov5_021EA6D8(UnkStruct_ov5_021E8F60 *param0, MapMatrix *param1);
void ov5_021EA6E0(UnkStruct_ov5_021E8F60 *param0, int param1, BOOL param2);
void ov5_021EA6F4(UnkStruct_ov5_021E8F60 *param0, int param1, int param2);

Expand Down
4 changes: 2 additions & 2 deletions include/overlay080/struct_ov80_021D2A08.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include "struct_decls/cell_actor_data.h"
#include "struct_decls/struct_0200C6E4_decl.h"
#include "struct_decls/struct_0200C704_decl.h"
#include "struct_decls/struct_02039EBC_decl.h"
#include "struct_defs/struct_0203D8AC.h"

#include "overlay080/struct_ov80_021D259C.h"
Expand All @@ -15,6 +14,7 @@
#include "overlay080/struct_ov80_021D2E10.h"

#include "bg_window.h"
#include "map_matrix.h"
#include "message.h"
#include "strbuf.h"

Expand All @@ -33,7 +33,7 @@ typedef struct UnkStruct_ov80_021D2A08_t {
int unk_24;
BgConfig *unk_28;
UnkStruct_0203D8AC *unk_2C;
UnkStruct_02039EBC *unk_30;
MainMapMatrixData *unk_30;
void *unk_34;
int (*unk_38)(struct UnkStruct_ov80_021D2A08_t *);
UnkStruct_ov80_021D2C1C *unk_3C;
Expand Down
6 changes: 0 additions & 6 deletions include/struct_decls/struct_02039E30_decl.h

This file was deleted.

6 changes: 0 additions & 6 deletions include/struct_decls/struct_02039EBC_decl.h

This file was deleted.

27 changes: 0 additions & 27 deletions include/unk_02039C80.h

This file was deleted.

2 changes: 1 addition & 1 deletion platinum.us/main.lsf
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ Static main
Object main.nef.p/src_unk_02039814.c.o
Object main.nef.p/src_unk_02039A58.c.o
Object main.nef.p/src_unk_02039A64.c.o
Object main.nef.p/src_unk_02039C80.c.o
Object main.nef.p/src_map_matrix.c.o
Object main.nef.p/src_map_header.c.o
Object main.nef.p/src_map_header_data.c.o
Object main.nef.p/src_field_overworld_state.c.o
Expand Down
8 changes: 4 additions & 4 deletions src/field_map_change.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
#include "location.h"
#include "map_header.h"
#include "map_header_data.h"
#include "map_matrix.h"
#include "map_object.h"
#include "menu.h"
#include "message.h"
Expand All @@ -57,7 +58,6 @@
#include "unk_0200F174.h"
#include "unk_02027F50.h"
#include "unk_0202854C.h"
#include "unk_02039C80.h"
#include "unk_0203A7D8.h"
#include "unk_0203A944.h"
#include "unk_0203D1B8.h"
Expand Down Expand Up @@ -370,14 +370,14 @@ static void FieldMapChange_InitTerrainCollisionManager(FieldSystem *fieldSystem)
{
sub_020530C8(fieldSystem);
GF_ASSERT(fieldSystem->terrainCollisionMan == NULL);
sub_02039DC0(fieldSystem->location->mapId, fieldSystem->unk_2C);
MapMatrix_Load(fieldSystem->location->mapId, fieldSystem->mapMatrix);

if (VarFlags_HiddenLocationsUnlocked(SaveData_GetVarsFlags(fieldSystem->saveData), HL_SEABREAKPATH)) {
sub_02039FE0(fieldSystem->unk_2C); // reveal Seabreak Path if Oak's Letter has been used
MapMatrix_RevealSeabreakPath(fieldSystem->mapMatrix); // reveal Seabreak Path if Oak's Letter has been used
}

if (!VarFlags_HiddenLocationsUnlocked(SaveData_GetVarsFlags(fieldSystem->saveData), HL_SPRINGPATH)) {
sub_02039F8C(fieldSystem->unk_2C);
MapMatrix_RevealSpringPath(fieldSystem->mapMatrix);
}

GF_ASSERT(fieldSystem->mapLoadType < MAP_LOAD_TYPE_MAX);
Expand Down
6 changes: 3 additions & 3 deletions src/field_system.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@
#include "heap.h"
#include "main.h"
#include "map_header_data.h"
#include "map_matrix.h"
#include "overlay_manager.h"
#include "pokeradar.h"
#include "savedata.h"
#include "unk_02039C80.h"
#include "unk_0205F180.h"
#include "unk_0209ACBC.h"
#include "unk_0209C370.h"
Expand Down Expand Up @@ -160,7 +160,7 @@ static FieldSystem *InitFieldSystem(OverlayManager *ovyManager)
fieldSystem->saveData = ((ApplicationArgs *)OverlayManager_Args(ovyManager))->saveData;
fieldSystem->task = NULL;
fieldSystem->location = FieldOverworldState_GetPlayerLocation(SaveData_GetFieldOverworldState(fieldSystem->saveData));
fieldSystem->unk_2C = sub_02039D6C();
fieldSystem->mapMatrix = MapMatrix_New();

MapHeaderData_Init(fieldSystem, HEAP_ID_FIELDMAP);

Expand All @@ -179,7 +179,7 @@ static void TeardownFieldSystem(OverlayManager *ovyManager)
{
FieldSystem *fieldSystem = OverlayManager_Data(ovyManager);

sub_02039DE4(fieldSystem->unk_2C);
MapMatrix_Free(fieldSystem->mapMatrix);
MapHeaderData_Free(fieldSystem);
Heap_FreeToHeap(fieldSystem->unk_98);
RadarChain_Free(fieldSystem->chain);
Expand Down
Loading

0 comments on commit a61adca

Please sign in to comment.