Generate footprint size data table

This commit is contained in:
Bepis
2024-02-13 06:34:31 +11:00
committed by Rachel
parent 738cd9f392
commit b402d1397b
9 changed files with 77 additions and 523 deletions

View File

@@ -166,6 +166,15 @@
"GENDER_RATIO_FEMALE_ONLY": 254,
"GENDER_RATIO_NO_GENDER": 255
}
},
"@PokemonFootprintSize": {
"type": "enum",
"as_preproc": true,
"values": [
"FOOTPRINT_SMALL",
"FOOTPRINT_MEDIUM",
"FOOTPRINT_LARGE"
]
}
}
}

View File

@@ -0,0 +1,10 @@
#ifndef POKEPLATINUM_FOOTPRINTSIZEDATA_H
#define POKEPLATINUM_FOOTPRINTSIZEDATA_H
typedef struct FootprintSizeData {
u8 hasFootprint;
u8 footprintSize;
u16 unk_02;
} FootprintSizeData;
#endif // POKEPLATINUM_FOOTPRINTSIZEDATA_H

View File

@@ -11,7 +11,7 @@ void ov113_02260620(MessageLoader * param0, StringTemplate * param1, Window para
void ov113_02260714(Window param0[], u32 param1);
u16 ov113_0226072C(int param0, u32 param1);
int ov113_02260748(UnkStruct_ov113_02260818 * param0, int param1);
BOOL ov113_02260788(int param0, int param1, BOOL param2);
BOOL ov113_022607B8(int param0, int param1);
BOOL PokemonHasOverworldFootprint(int param0, int param1, BOOL param2);
int PokemonOverworldFootprintSize(int param0, int param1);
#endif // POKEPLATINUM_OV113_02260620_H

View File

@@ -1,10 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_OV113_02260D90_H
#define POKEPLATINUM_STRUCT_OV113_02260D90_H
typedef struct {
u8 unk_00;
u8 unk_01;
u16 unk_02;
} UnkStruct_ov113_02260D90;
#endif // POKEPLATINUM_STRUCT_OV113_02260D90_H

View File

@@ -778,6 +778,7 @@ gen_species_headers = custom_target('auto-generated species headers',
output: 'gen_species_headers',
input: personal_files,
env: json2bin_env,
depends: [ py_consts_generators ],
command: [
make_species_tables_py,
'--source-dir', '@CURRENT_SOURCE_DIR@',

View File

@@ -1139,7 +1139,7 @@ static BOOL ov113_0225D938 (int param0, int param1, CellActorData * param2, NARC
return 0;
}
if (ov113_02260788(param0, param1, param6) == 1) {
if (PokemonHasOverworldFootprint(param0, param1, param6) == 1) {
v2 = sub_0200723C(param4, 3 + param0, 1, 118, 1);
NNS_G2dGetUnpackedCharacterData(v2, &v3);
DC_FlushRange(v3->pRawData, 0x20 * 8);

View File

@@ -682,7 +682,7 @@ static void ov113_0225E920 (NNSG3dResTex * param0, NARC * param1, NARC * param2,
NNSG2dCharacterData * v3;
int v4;
v4 = ov113_02260788(param3->unk_02, param3->unk_08, param4);
v4 = PokemonHasOverworldFootprint(param3->unk_02, param3->unk_08, param4);
v1 = (u8 *)((u8 *)param0 + param0->texInfo.ofsTex);
if (v4 == 1) {
@@ -920,7 +920,7 @@ static void ov113_0225ECA0 (UnkStruct_02017294 * param0, const UnkStruct_ov113_0
int v6;
fx64 v7, v8, v9, v10;
v6 = ov113_022607B8(param1->unk_02, param1->unk_08);
v6 = PokemonOverworldFootprintSize(param1->unk_02, param1->unk_08);
GF_ASSERT(v6 < NELEMS(Unk_ov113_02260C38));
sub_02017358(param0, &v0, &v1, &v2);

View File

@@ -10,7 +10,7 @@
#include "touch_screen.h"
#include "struct_defs/struct_0205AA50.h"
#include "overlay113/struct_ov113_02260818.h"
#include "overlay113/struct_ov113_02260D90.h"
#include "overlay113/FootprintSizeData.h"
#include "message.h"
#include "constants/species.h"
@@ -36,503 +36,7 @@ __attribute__((aligned(4))) static const u16 Unk_ov113_02260D6C[][2] = {
{ 0x2D4A, 0x5651 }
};
// footprint data, but apparently only affects overworld
static const UnkStruct_ov113_02260D90 Unk_ov113_02260D90[NATIONAL_DEX_COUNT + 1] = {
{ 0x0, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x2 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x0, 0x2 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x1 },
{ 0x1, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x0, 0x2 },
{ 0x1, 0x0 },
{ 0x1, 0x1 },
{ 0x1, 0x0 }
};
#include "res/pokemon/footprint_data.h"
static const TouchScreenRect Unk_ov113_02260D4C[] = {
{0xA0, 0xC0, 0x0, 0x20},
@@ -643,24 +147,27 @@ int ov113_02260748 (UnkStruct_ov113_02260818 * param0, int param1)
return v1;
}
BOOL ov113_02260788 (int param0, int param1, BOOL param2)
// canShowArceus is a flag pulled from wifi room data that dictates whether or not Arceus is allowed to be seen.
// The contexts where Arceus is allowed to be seen is unclear. I haven't seen any case where this could be true
// Seems to be from a cut feature where you could have pokemon out walking around while being in a wifi room. Amity square?
BOOL PokemonHasOverworldFootprint (int species, int form, BOOL canShowArceus)
{
if ((param0 == 487) && (param1 > 0)) {
if ((species == SPECIES_GIRATINA) && (form > 0)) {
return 0;
}
if ((param0 == SPECIES_ARCEUS) && (param2 == 0)) {
if ((species == SPECIES_ARCEUS) && (canShowArceus == 0)) {
return 0;
}
return Unk_ov113_02260D90[param0].unk_00;
return sSpeciesFootprintData[species].hasFootprint;
}
BOOL ov113_022607B8 (int param0, int param1)
int PokemonOverworldFootprintSize (int species, int form)
{
if ((param0 == 487) && (param1 > 0)) {
if ((species == SPECIES_GIRATINA) && (form > 0)) {
return 2;
}
return Unk_ov113_02260D90[param0].unk_01;
return sSpeciesFootprintData[species].footprintSize;
}

View File

@@ -5,6 +5,7 @@ import pathlib
import sys
from consts.moves import Move
from consts.species import PokemonSpecies
from consts.pokemon import PokemonFootprintSize
argparser = argparse.ArgumentParser(
@@ -90,7 +91,10 @@ FORM_INDICES = {
},
}
species_sets = {}
species_movesets = {}
species_footprints = {
0: { "has_footprint": False, "footprint_size": "FOOTPRINT_SMALL" }
}
for file_path in source_dir.glob("**/data.json"):
with open(file_path, 'r') as data_file:
@@ -101,12 +105,16 @@ for file_path in source_dir.glob("**/data.json"):
if species_name in ["000", "EGG", "BAD_EGG"]:
continue
isForm = False
if file_path.parent.parent.stem == "forms":
form_name = species_name
species_name = file_path.parent.parent.parent.stem.upper()
species_id = FORM_INDICES[species_name][form_name]
isForm = True
else:
species_id = PokemonSpecies[f"SPECIES_{species_name}"].value
@@ -124,7 +132,10 @@ for file_path in source_dir.glob("**/data.json"):
for tutor_move in species_data["learnset"]["tutor"]:
set_bit(moveset.index(Move[tutor_move]))
species_sets[species_id] = byte_array
species_movesets[species_id] = byte_array
if not isForm:
species_footprints[species_id] = species_data["footprint"]
generated_disclaimer = [
@@ -132,6 +143,7 @@ generated_disclaimer = [
"// Check make_species_tables.py for reference\n",
]
# write moveset table header
output_path = output_dir / "tutor_movesets.h"
with open(output_path, "w") as output_file:
@@ -143,7 +155,7 @@ with open(output_path, "w") as output_file:
output_file.write("\n")
output_file.write("const MovesetMask sTeachableMovesets[MOVESET_MAX] = {\n")
sorted_array = sorted(species_sets.items())
sorted_array = sorted(species_movesets.items())
for key, value in sorted_array:
struct = ''.join([f" 0x{i:X},".ljust(6) for i in value])
@@ -152,3 +164,28 @@ with open(output_path, "w") as output_file:
output_file.write("};\n")
output_file.write("\n#endif\n")
# write footprint table header
output_path = output_dir / "footprint_data.h"
with open(output_path, "w") as output_file:
output_file.writelines(generated_disclaimer)
output_file.write("#ifndef POKEPLATINUM_GENERATED_FOOTPRINT_DATA_H\n")
output_file.write("#define POKEPLATINUM_GENERATED_FOOTPRINT_DATA_H\n")
output_file.write("#include \"overlay113/FootprintSizeData.h\"\n")
output_file.write("#include \"constants/species.h\"\n")
output_file.write("\n")
output_file.write("static const FootprintSizeData sSpeciesFootprintData[NATIONAL_DEX_COUNT + 1] = {\n")
sorted_array = sorted(species_footprints.items())
for key, value in sorted_array:
has_footprint = "TRUE" if species_footprints[key]["has_footprint"] else "FALSE"
footprint_size = PokemonFootprintSize[species_footprints[key]["footprint_size"]].value
output_file.write(f" {{ {has_footprint}, {footprint_size} }},\n")
output_file.write("};\n")
output_file.write("\n#endif\n")