Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pal Park Documentation - Part 2 #410

Merged
merged 7 commits into from
Mar 2, 2025
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions include/catching_show.h
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#ifndef POKEPLATINUM_CATCHING_SHOW_H
#define POKEPLATINUM_CATCHING_SHOW_H

#include "constants/catching_show.h"

#include "field/field_system_decl.h"

#include "field_battle_data_transfer.h"

#define CATCHING_SHOW_MONS 6

typedef struct CatchingShowPokemon {
u16 species;
u8 area;
Expand Down
6 changes: 6 additions & 0 deletions include/constants/catching_show.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#ifndef POKEPLATINUM_CONSTANTS_CATCHING_SHOW_H
#define POKEPLATINUM_CONSTANTS_CATCHING_SHOW_H

#define CATCHING_SHOW_MONS 6

#endif // POKEPLATINUM_CONSTANTS_CATCHING_SHOW_H
7 changes: 7 additions & 0 deletions include/constants/gba/global.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#ifndef POKEPLATINUM_CONSTANTS_GBA_GLOBAL_H
#define POKEPLATINUM_CONSTANTS_GBA_GLOBAL_H

#define GBA_TRAINER_ID_LEN 4
#define GBA_PLAYER_NAME_LEN 7

#endif // POKEPLATINUM_CONSTANTS_GBA_GLOBAL_H
9 changes: 9 additions & 0 deletions include/constants/gba/pokemon_storage_system.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#ifndef POKEPLATINUM_CONSTANTS_GBA_POKEMON_STORAGE_SYSTEM_H
#define POKEPLATINUM_CONSTANTS_GBA_POKEMON_STORAGE_SYSTEM_H

#define GBA_MAX_PC_BOXES 14
#define GBA_MAX_PC_ROWS 5
#define GBA_MAX_PC_COLS 6
#define GBA_MAX_MONS_PER_BOX (GBA_MAX_PC_ROWS * GBA_MAX_PC_COLS)

#endif // POKEPLATINUM_CONSTANTS_GBA_POKEMON_STORAGE_SYSTEM_H
16 changes: 12 additions & 4 deletions include/overlay097/box_pokemon_gba.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ typedef struct {
u32 modernFatefulEncounter : 1;
} PokemonGBASubstruct3;

union PokemonGBASubstruct {
PokemonGBASubstruct0 type0;
PokemonGBASubstruct1 type1;
PokemonGBASubstruct2 type2;
PokemonGBASubstruct3 type3;
u16 raw[6];
};

typedef struct BoxPokemonGBA {
u32 personality;
u32 otId;
Expand All @@ -86,10 +94,10 @@ typedef struct BoxPokemonGBA {
u8 markings;
u16 checksum;
u16 unknown;
u8 secure[sizeof(PokemonGBASubstruct0)
+ sizeof(PokemonGBASubstruct1)
+ sizeof(PokemonGBASubstruct2)
+ sizeof(PokemonGBASubstruct3)];
union {
u32 raw[12];
union PokemonGBASubstruct substructs[4];
} secure;
} BoxPokemonGBA;

#endif // POKEPLATINUM_BOX_POKEMON_GBA_H
2 changes: 1 addition & 1 deletion include/overlay097/ov97_02235D18.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ BOOL ov97_02236280(void);
int ov97_022362C8(void);
int ov97_02236308(void);
PokemonStorageGBA *ov97_02236340(void);
void *ov97_02236350(void);
void *GetGBASaveBlock2(void);

#endif // POKEPLATINUM_OV97_02235D18_H
4 changes: 2 additions & 2 deletions include/overlay097/ov97_0223635C.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#ifndef POKEPLATINUM_OV97_0223635C_H
#define POKEPLATINUM_OV97_0223635C_H

u32 ov97_0223635C(void);
u8 *ov97_02236378(void);
u32 GetGBAPlayerTrainerId(void);
u8 *GetGBAPlayerName(void);

#endif // POKEPLATINUM_OV97_0223635C_H
10 changes: 5 additions & 5 deletions include/overlay097/struct_ov97_02236340.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
#ifndef POKEPLATINUM_STRUCT_OV97_02236340_H
#define POKEPLATINUM_STRUCT_OV97_02236340_H

#include "overlay097/box_pokemon_gba.h"
#include "constants/gba/pokemon_storage_system.h"

#define GBA_TOTAL_BOXES_COUNT 14
#include "overlay097/box_pokemon_gba.h"

typedef struct {
u8 currentBox;
BoxPokemonGBA boxes[GBA_TOTAL_BOXES_COUNT][30];
u8 boxNames[GBA_TOTAL_BOXES_COUNT][9];
u8 boxWallpapers[GBA_TOTAL_BOXES_COUNT];
BoxPokemonGBA boxes[GBA_MAX_PC_BOXES][GBA_MAX_MONS_PER_BOX];
u8 boxNames[GBA_MAX_PC_BOXES][9];
u8 boxWallpapers[GBA_MAX_PC_BOXES];
} PokemonStorageGBA;

#endif // POKEPLATINUM_STRUCT_OV97_02236340_H
37 changes: 20 additions & 17 deletions include/overlay097/struct_ov97_0223635C.h
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
#ifndef POKEPLATINUM_STRUCT_OV97_0223635C_H
#define POKEPLATINUM_STRUCT_OV97_0223635C_H

#include "constants/gba/global.h"

// These fields are present at the beginning of RSE's and FRLG's SaveBlock2
typedef struct {
u8 unk_00[8];
u8 unk_08;
u8 unk_09;
u8 unk_0A[4];
u16 unk_0E;
u8 unk_10;
u8 unk_11;
u8 unk_12;
u8 unk_13;
u16 unk_14_0 : 3;
u16 unk_14_3 : 5;
u16 unk_14_8 : 1;
u16 unk_14_9 : 1;
u16 unk_14_10 : 1;
u16 unk_14_11 : 1;
u16 : 4;
} UnkStruct_ov97_0223635C;
u8 playerName[GBA_PLAYER_NAME_LEN + 1];
u8 playerGender;
u8 specialSaveWarpFlags;
u8 playerTrainerId[GBA_TRAINER_ID_LEN];
u16 playTimeHours;
u8 playTimeMinutes;
u8 playTimeSeconds;
u8 playTimeVBlanks;
u8 optionsButtonMode;
u16 optionsTextSpeed : 3;
u16 optionsWindowFrameType : 5;
u16 optionsSound : 1;
u16 optionsBattleStyle : 1;
u16 optionsBattleSceneOff : 1;
u16 regionMapZoom : 1;
u16 padding : 4;
} GBASaveBlock2;

#endif // POKEPLATINUM_STRUCT_OV97_0223635C_H
20 changes: 10 additions & 10 deletions include/unk_0202EEC0.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
#include "pokemon.h"

int PalParkTransfer_SaveSize(void);
void PalParkTransfer_Init(PalParkTransfer *param0);
void sub_0202EF04(PalParkTransfer *param0);
void sub_0202EFA4(PalParkTransfer *transfer, BoxPokemon *boxMon, int param2);
void sub_0202EFB8(PalParkTransfer *param0, u32 param1);
void sub_0202F000(const PalParkTransfer *param0, int param1, Pokemon *param2);
int sub_0202F028(const PalParkTransfer *param0);
int sub_0202F050(const PalParkTransfer *param0, u32 param1);
BOOL sub_0202F088(const PalParkTransfer *param0);
BOOL sub_0202F0BC(const PalParkTransfer *param0);
BOOL sub_0202F0E0(const PalParkTransfer *param0);
void PalParkTransfer_Init(PalParkTransfer *transferData);
void sub_0202EF04(PalParkTransfer *transferData);
void BoxMonToTransferData(PalParkTransfer *transfer, BoxPokemon *boxMon, int param2);
void sub_0202EFB8(PalParkTransfer *transferData, u32 param1);
void TransferDataToMon(const PalParkTransfer *transferData, int param1, Pokemon *param2);
int GetPalParkTransferMonCount(const PalParkTransfer *transferData);
int sub_0202F050(const PalParkTransfer *transferData, u32 param1);
BOOL sub_0202F088(const PalParkTransfer *transferData);
BOOL sub_0202F0BC(const PalParkTransfer *transferData);
BOOL sub_0202F0E0(const PalParkTransfer *transferData);

#endif // POKEPLATINUM_UNK_0202EEC0_H
8 changes: 4 additions & 4 deletions src/catching_show.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,12 +126,12 @@ static void InitSpeciesData(FieldSystem *fieldSystem, CatchingShow *catchingShow
int i;
SpeciesPalPark speciesData;
u16 monSpecies;
PalParkTransfer *v4 = SaveData_PalParkTransfer(fieldSystem->saveData);
PalParkTransfer *transferData = SaveData_PalParkTransfer(fieldSystem->saveData);
Pokemon *mon = Pokemon_New(HEAP_ID_FIELD);

for (i = 0; i < CATCHING_SHOW_MONS; i++) {
catchingShow->caughtMonsOrder[i] = 0;
sub_0202F000(v4, i, mon);
TransferDataToMon(transferData, i, mon);

monSpecies = Pokemon_GetValue(mon, MON_DATA_SPECIES, NULL);

Expand Down Expand Up @@ -258,12 +258,12 @@ static void UpdateBattleResultInternal(FieldSystem *fieldSystem, FieldBattleDTO
static FieldBattleDTO *SetupBattleDTO(FieldSystem *fieldSystem, CatchingShow *catchingShow)
{
Pokemon *mon = Pokemon_New(HEAP_ID_FIELD_TASK);
PalParkTransfer *v2 = SaveData_PalParkTransfer(fieldSystem->saveData);
PalParkTransfer *transferData = SaveData_PalParkTransfer(fieldSystem->saveData);
int parkBallCount = CatchingShow_GetParkBallCount(fieldSystem);
FieldBattleDTO *dto = FieldBattleDTO_NewPalPark(HEAP_ID_FIELDMAP, parkBallCount);

FieldBattleDTO_Init(dto, fieldSystem);
sub_0202F000(v2, catchingShow->currentEncounterIndex, mon);
TransferDataToMon(transferData, catchingShow->currentEncounterIndex, mon);
FieldBattleDTO_AddPokemonToBattler(dto, mon, BATTLER_ENEMY_1);
Heap_FreeToHeap(mon);

Expand Down
Loading