Species table generation code

This commit is contained in:
Bepis 2024-02-12 14:49:08 +11:00 committed by Rachel
parent 2b5752ccd6
commit 0ed8f42727
6 changed files with 235 additions and 566 deletions

63
include/tutor_movesets.h Normal file
View File

@ -0,0 +1,63 @@
#ifndef POKEPLATINUM_TUTOR_MOVESETS_H
#define POKEPLATINUM_TUTOR_MOVESETS_H
typedef struct {
u16 moveID;
u8 unk_02;
u8 unk_03;
u8 unk_04;
u8 unk_05;
u32 shardColor; // the type of underground shard you use to trade to the move tutors
} TeachableMove;
static const TeachableMove sTeachableMoves[] = {
{ MOVE_DIVE, 0x2, 0x4, 0x2, 0x0, 0x0 },
{ MOVE_MUD_SLAP, 0x4, 0x4, 0x0, 0x0, 0x1 },
{ MOVE_FURY_CUTTER, 0x0, 0x8, 0x0, 0x0, 0x0 },
{ MOVE_ICY_WIND, 0x0, 0x6, 0x0, 0x2, 0x0 },
{ MOVE_ROLLOUT, 0x4, 0x2, 0x0, 0x2, 0x1 },
{ MOVE_THUNDER_PUNCH, 0x2, 0x6, 0x0, 0x0, 0x0 },
{ MOVE_FIRE_PUNCH, 0x2, 0x6, 0x0, 0x0, 0x0 },
{ MOVE_SUPERPOWER, 0x8, 0x0, 0x0, 0x0, 0x1 },
{ MOVE_ICE_PUNCH, 0x2, 0x6, 0x0, 0x0, 0x0 },
{ MOVE_IRON_HEAD, 0x6, 0x0, 0x2, 0x0, 0x1 },
{ MOVE_AQUA_TAIL, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_OMINOUS_WIND, 0x0, 0x6, 0x0, 0x2, 0x0 },
{ MOVE_GASTRO_ACID, 0x4, 0x0, 0x2, 0x2, 0x1 },
{ MOVE_SNORE, 0x2, 0x0, 0x4, 0x2, 0x2 },
{ MOVE_SPITE, 0x0, 0x0, 0x8, 0x0, 0x2 },
{ MOVE_AIR_CUTTER, 0x2, 0x4, 0x0, 0x2, 0x0 },
{ MOVE_HELPING_HAND, 0x2, 0x0, 0x4, 0x2, 0x2 },
{ MOVE_ENDEAVOR, 0x4, 0x0, 0x4, 0x0, 0x1 },
{ MOVE_OUTRAGE, 0x6, 0x0, 0x2, 0x0, 0x1 },
{ MOVE_ANCIENT_POWER, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_SYNTHESIS, 0x0, 0x0, 0x2, 0x6, 0x2 },
{ MOVE_SIGNAL_BEAM, 0x2, 0x2, 0x2, 0x2, 0x1 },
{ MOVE_ZEN_HEADBUTT, 0x0, 0x4, 0x4, 0x0, 0x0 },
{ MOVE_VACUUM_WAVE, 0x2, 0x4, 0x0, 0x2, 0x0 },
{ MOVE_EARTH_POWER, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_GUNK_SHOT, 0x4, 0x2, 0x0, 0x2, 0x1 },
{ MOVE_TWISTER, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_SEED_BOMB, 0x4, 0x0, 0x0, 0x4, 0x1 },
{ MOVE_IRON_DEFENSE, 0x4, 0x2, 0x2, 0x0, 0x1 },
{ MOVE_MAGNET_RISE, 0x0, 0x2, 0x4, 0x2, 0x2 },
{ MOVE_LAST_RESORT, 0x0, 0x0, 0x0, 0x8, 0x2 },
{ MOVE_BOUNCE, 0x4, 0x0, 0x2, 0x2, 0x1 },
{ MOVE_TRICK, 0x0, 0x4, 0x4, 0x0, 0x0 },
{ MOVE_HEAT_WAVE, 0x4, 0x2, 0x0, 0x2, 0x1 },
{ MOVE_KNOCK_OFF, 0x4, 0x4, 0x0, 0x0, 0x0 },
{ MOVE_SUCKER_PUNCH, 0x0, 0x6, 0x2, 0x0, 0x0 },
{ MOVE_SWIFT, 0x0, 0x2, 0x2, 0x4, 0x2 },
{ MOVE_UPROAR, 0x0, 0x0, 0x6, 0x2, 0x2 }
};
#define MOVESET_MASK_SIZE (s32)((NELEMS(sTeachableMoves) + 7) / 8)
// Each of the bits in this array correspond to a move in sTeachableMoves
// Therefore the size is dependent on how many teachable moves exist
typedef struct {
u8 maskData[MOVESET_MASK_SIZE];
} MovesetMask;
#endif // POKEPLATINUM_TUTOR_MOVESETS_H

View File

@ -146,6 +146,7 @@ main = executable('main',
c_consts_generators,
asm_consts_generators,
naix_headers,
gen_species_headers
],
c_args: [
pokeplatinum_args,

View File

@ -771,6 +771,20 @@ pl_growtbl_narc = custom_target('pl_growtbl.narc',
]
)
species_header_target = meson.current_build_dir()
species_headers_includes = include_directories('.')
gen_species_headers = custom_target('auto-generated species headers',
output: 'gen_species_headers',
input: personal_files,
env: json2bin_env,
command: [
make_species_tables_py,
'--source-dir', '@CURRENT_SOURCE_DIR@',
'--output-dir', species_header_target
]
)
nitrofs_files += pl_personal_narc
nitrofs_files += evo_narc
nitrofs_files += pl_poke_icon_narc

View File

@ -40,572 +40,8 @@
#include "overlay005/ov5_021DC018.h"
#include "overlay005/ov5_021F77A8.h"
typedef struct {
u16 moveID;
u8 unk_02;
u8 unk_03;
u8 unk_04;
u8 unk_05;
u32 shardColor; // the type of underground shard you use to trade to the move tutors
} TeachableMove;
static const TeachableMove sTeachableMoves[] = {
{ MOVE_DIVE, 0x2, 0x4, 0x2, 0x0, 0x0 },
{ MOVE_MUD_SLAP, 0x4, 0x4, 0x0, 0x0, 0x1 },
{ MOVE_FURY_CUTTER, 0x0, 0x8, 0x0, 0x0, 0x0 },
{ MOVE_ICY_WIND, 0x0, 0x6, 0x0, 0x2, 0x0 },
{ MOVE_ROLLOUT, 0x4, 0x2, 0x0, 0x2, 0x1 },
{ MOVE_THUNDER_PUNCH, 0x2, 0x6, 0x0, 0x0, 0x0 },
{ MOVE_FIRE_PUNCH, 0x2, 0x6, 0x0, 0x0, 0x0 },
{ MOVE_SUPERPOWER, 0x8, 0x0, 0x0, 0x0, 0x1 },
{ MOVE_ICE_PUNCH, 0x2, 0x6, 0x0, 0x0, 0x0 },
{ MOVE_IRON_HEAD, 0x6, 0x0, 0x2, 0x0, 0x1 },
{ MOVE_AQUA_TAIL, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_OMINOUS_WIND, 0x0, 0x6, 0x0, 0x2, 0x0 },
{ MOVE_GASTRO_ACID, 0x4, 0x0, 0x2, 0x2, 0x1 },
{ MOVE_SNORE, 0x2, 0x0, 0x4, 0x2, 0x2 },
{ MOVE_SPITE, 0x0, 0x0, 0x8, 0x0, 0x2 },
{ MOVE_AIR_CUTTER, 0x2, 0x4, 0x0, 0x2, 0x0 },
{ MOVE_HELPING_HAND, 0x2, 0x0, 0x4, 0x2, 0x2 },
{ MOVE_ENDEAVOR, 0x4, 0x0, 0x4, 0x0, 0x1 },
{ MOVE_OUTRAGE, 0x6, 0x0, 0x2, 0x0, 0x1 },
{ MOVE_ANCIENT_POWER, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_SYNTHESIS, 0x0, 0x0, 0x2, 0x6, 0x2 },
{ MOVE_SIGNAL_BEAM, 0x2, 0x2, 0x2, 0x2, 0x1 },
{ MOVE_ZEN_HEADBUTT, 0x0, 0x4, 0x4, 0x0, 0x0 },
{ MOVE_VACUUM_WAVE, 0x2, 0x4, 0x0, 0x2, 0x0 },
{ MOVE_EARTH_POWER, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_GUNK_SHOT, 0x4, 0x2, 0x0, 0x2, 0x1 },
{ MOVE_TWISTER, 0x6, 0x0, 0x0, 0x2, 0x1 },
{ MOVE_SEED_BOMB, 0x4, 0x0, 0x0, 0x4, 0x1 },
{ MOVE_IRON_DEFENSE, 0x4, 0x2, 0x2, 0x0, 0x1 },
{ MOVE_MAGNET_RISE, 0x0, 0x2, 0x4, 0x2, 0x2 },
{ MOVE_LAST_RESORT, 0x0, 0x0, 0x0, 0x8, 0x2 },
{ MOVE_BOUNCE, 0x4, 0x0, 0x2, 0x2, 0x1 },
{ MOVE_TRICK, 0x0, 0x4, 0x4, 0x0, 0x0 },
{ MOVE_HEAT_WAVE, 0x4, 0x2, 0x0, 0x2, 0x1 },
{ MOVE_KNOCK_OFF, 0x4, 0x4, 0x0, 0x0, 0x0 },
{ MOVE_SUCKER_PUNCH, 0x0, 0x6, 0x2, 0x0, 0x0 },
{ MOVE_SWIFT, 0x0, 0x2, 0x2, 0x4, 0x2 },
{ MOVE_UPROAR, 0x0, 0x0, 0x6, 0x2, 0x2 }
};
#define MOVESET_MASK_SIZE (s32)((NELEMS(sTeachableMoves) + 7) / 8)
// Each of the bits in this array correspond to a move in sTeachableMoves
// Therefore the size is dependent on how many teachable moves exist
typedef struct {
u8 maskData[MOVESET_MASK_SIZE];
} MovesetMask;
const MovesetMask sTeachableMovesets[MOVESET_MAX] = {
{ 0x6, 0x20, 0x10, 0x8, 0x4 },
{ 0x6, 0x20, 0x10, 0x8, 0x4 },
{ 0x6, 0x20, 0x14, 0x8, 0x4 },
{ 0x66, 0x20, 0x0, 0x0, 0x12 },
{ 0x66, 0x20, 0x0, 0x0, 0x12 },
{ 0x66, 0xA8, 0x4, 0x4, 0x12 },
{ 0x1B, 0x25, 0x40, 0x10, 0x0 },
{ 0x1B, 0x25, 0x40, 0x10, 0x0 },
{ 0x1B, 0x25, 0x64, 0x10, 0x0 },
{ 0x0, 0x20, 0x0, 0x0, 0x0 },
{ 0x0, 0x0, 0x0, 0x10, 0x0 },
{ 0x0, 0xA8, 0x20, 0x4, 0x10 },
{ 0x0, 0x0, 0x0, 0x0, 0x0 },
{ 0x0, 0x0, 0x0, 0x10, 0x0 },
{ 0x4, 0xA8, 0x2, 0x0, 0x14 },
{ 0x2, 0xA8, 0x0, 0x4, 0x32 },
{ 0x2, 0xA8, 0x0, 0x4, 0x32 },
{ 0x2, 0xA8, 0x0, 0x4, 0x32 },
{ 0xA, 0x20, 0x42, 0x40, 0x18 },
{ 0xA, 0x20, 0x42, 0x40, 0x18 },
{ 0x2, 0xA8, 0x0, 0x4, 0x12 },
{ 0x2, 0xA8, 0x0, 0x4, 0x12 },
{ 0x0, 0x74, 0x0, 0xA, 0x0 },
{ 0x0, 0x74, 0x0, 0xA, 0x0 },
{ 0x32, 0x20, 0x21, 0x20, 0x14 },
{ 0x32, 0x20, 0x21, 0x20, 0x14 },
{ 0x16, 0x20, 0x0, 0x1, 0x14 },
{ 0x16, 0x20, 0x0, 0x1, 0x14 },
{ 0x2, 0x20, 0x1, 0x0, 0x0 },
{ 0x2, 0x20, 0x1, 0x0, 0x0 },
{ 0xEE, 0x25, 0x5, 0x1, 0x20 },
{ 0x2, 0x20, 0x1, 0x0, 0x8 },
{ 0x2, 0x20, 0x1, 0x0, 0x8 },
{ 0xEE, 0x25, 0x5, 0x1, 0x28 },
{ 0x7A, 0x21, 0x63, 0xC0, 0x5 },
{ 0x7A, 0x21, 0x63, 0xC0, 0x5 },
{ 0x0, 0x68, 0x40, 0x0, 0x12 },
{ 0x0, 0x68, 0x40, 0x0, 0x12 },
{ 0x7A, 0x21, 0x3, 0xC0, 0x4 },
{ 0x7A, 0x21, 0x3, 0xC0, 0x4 },
{ 0x0, 0xA8, 0x40, 0x4, 0x32 },
{ 0x0, 0xA8, 0x40, 0x4, 0x32 },
{ 0x0, 0x30, 0x10, 0x8, 0x0 },
{ 0x0, 0x30, 0x10, 0x8, 0x0 },
{ 0x0, 0x30, 0x10, 0x8, 0x0 },
{ 0x4, 0x20, 0x10, 0x8, 0x4 },
{ 0x4, 0x20, 0x10, 0x8, 0x4 },
{ 0x0, 0x20, 0x60, 0x0, 0x10 },
{ 0x0, 0xA8, 0x60, 0x4, 0x10 },
{ 0x2, 0x20, 0x0, 0x1, 0x8 },
{ 0x2, 0x20, 0x0, 0x1, 0x8 },
{ 0xA, 0x60, 0x0, 0x4A, 0x34 },
{ 0xA, 0x60, 0x0, 0x4A, 0x34 },
{ 0xB, 0x25, 0x60, 0x0, 0x10 },
{ 0xF, 0x25, 0x60, 0x0, 0x10 },
{ 0x62, 0x41, 0x87, 0xA, 0x30 },
{ 0x62, 0x41, 0x87, 0xA, 0x30 },
{ 0x2, 0x20, 0x1, 0x0, 0x12 },
{ 0x2, 0x22, 0x1, 0x0, 0x12 },
{ 0x9, 0x20, 0x1, 0x0, 0x0 },
{ 0xB, 0x21, 0x1, 0x0, 0x0 },
{ 0xB, 0x21, 0x81, 0x0, 0x0 },
{ 0x60, 0x21, 0x60, 0x0, 0x5 },
{ 0x60, 0x21, 0x60, 0x0, 0x5 },
{ 0x60, 0x21, 0x60, 0x0, 0x5 },
{ 0xE2, 0x21, 0x81, 0x0, 0x0 },
{ 0xE2, 0x21, 0x81, 0x0, 0x0 },
{ 0xE2, 0x21, 0x81, 0x0, 0x0 },
{ 0x0, 0x30, 0x10, 0x8, 0xC },
{ 0x0, 0x30, 0x10, 0x8, 0xC },
{ 0x0, 0x30, 0x10, 0x8, 0xC },
{ 0x9, 0x20, 0x0, 0x0, 0x4 },
{ 0x9, 0x20, 0x0, 0x0, 0x4 },
{ 0xF2, 0x20, 0x8, 0x1, 0x8 },
{ 0xF2, 0x20, 0x8, 0x1, 0x8 },
{ 0xF6, 0x22, 0x8, 0x1, 0x8 },
{ 0x0, 0x20, 0x0, 0x80, 0x12 },
{ 0x0, 0x20, 0x0, 0x80, 0x12 },
{ 0xB, 0x24, 0x60, 0x0, 0x11 },
{ 0xF, 0x25, 0x60, 0x10, 0x11 },
{ 0x10, 0x20, 0x20, 0x30, 0x10 },
{ 0x10, 0x20, 0x20, 0x30, 0x10 },
{ 0x6, 0xA8, 0x0, 0x44, 0x36 },
{ 0x2, 0xA0, 0x2, 0x0, 0x34 },
{ 0x2, 0xA0, 0x2, 0x0, 0x34 },
{ 0x9, 0x24, 0x20, 0x0, 0x0 },
{ 0x9, 0x24, 0x20, 0x0, 0x0 },
{ 0x62, 0x21, 0x0, 0x2, 0x0 },
{ 0x62, 0x21, 0x0, 0x2, 0x0 },
{ 0x9, 0x20, 0x0, 0x10, 0x10 },
{ 0x9, 0x20, 0x20, 0x10, 0x10 },
{ 0x68, 0x69, 0x0, 0x0, 0x2D },
{ 0x68, 0x69, 0x0, 0x0, 0x2D },
{ 0x68, 0x69, 0x0, 0x0, 0x2D },
{ 0x12, 0x22, 0x8, 0x5, 0x0 },
{ 0x60, 0x1, 0x60, 0x0, 0x1 },
{ 0x60, 0x1, 0x60, 0x0, 0x1 },
{ 0x8F, 0x20, 0x8, 0x10, 0x4 },
{ 0x8F, 0x20, 0x8, 0x10, 0x4 },
{ 0x10, 0x20, 0x20, 0x20, 0x18 },
{ 0x10, 0x20, 0x20, 0x20, 0x18 },
{ 0x10, 0x20, 0x18, 0x8, 0x20 },
{ 0x10, 0x20, 0x58, 0x8, 0x0 },
{ 0x6E, 0x20, 0x2, 0x11, 0x24 },
{ 0x6E, 0x20, 0x6, 0x11, 0x24 },
{ 0x82, 0x20, 0x81, 0x80, 0x1C },
{ 0x62, 0x21, 0x81, 0x0, 0x10 },
{ 0x7A, 0x25, 0x40, 0x0, 0x4 },
{ 0x10, 0x60, 0x0, 0x0, 0x20 },
{ 0x10, 0x60, 0x0, 0x0, 0x20 },
{ 0x9A, 0x64, 0xA, 0x1, 0x20 },
{ 0xFE, 0x65, 0xE, 0x1, 0x20 },
{ 0x7A, 0x21, 0x43, 0x40, 0x0 },
{ 0x0, 0x20, 0x18, 0x8, 0x4 },
{ 0x6E, 0x65, 0x7, 0x0, 0x28 },
{ 0x9, 0x20, 0x24, 0x84, 0x10 },
{ 0x9, 0x20, 0x24, 0x84, 0x10 },
{ 0xF, 0x24, 0x0, 0x80, 0x14 },
{ 0xF, 0x24, 0x0, 0x80, 0x14 },
{ 0x19, 0x20, 0x20, 0x4, 0x10 },
{ 0x19, 0x20, 0x20, 0x4, 0x11 },
{ 0x62, 0x21, 0x61, 0x10, 0x1 },
{ 0x4, 0x28, 0x0, 0x0, 0x14 },
{ 0xA, 0x21, 0x61, 0x0, 0x1 },
{ 0x62, 0x21, 0x21, 0x20, 0x10 },
{ 0x62, 0x20, 0x1, 0x0, 0x2 },
{ 0x84, 0x20, 0x0, 0x10, 0x4 },
{ 0x8, 0x62, 0x47, 0x0, 0x20 },
{ 0x0, 0x0, 0x0, 0x80, 0x0 },
{ 0x9, 0x66, 0x4, 0x84, 0x20 },
{ 0x9, 0x26, 0x6C, 0x0, 0x0 },
{ 0x0, 0x0, 0x0, 0x0, 0x0 },
{ 0x2, 0x20, 0x1, 0x40, 0x10 },
{ 0xB, 0x24, 0x21, 0x40, 0x10 },
{ 0x2, 0x20, 0x21, 0x60, 0x10 },
{ 0x82, 0x20, 0x1, 0x40, 0x12 },
{ 0x8, 0x20, 0x60, 0x40, 0x11 },
{ 0x19, 0x20, 0x8, 0x11, 0x4 },
{ 0x19, 0x20, 0x8, 0x11, 0x4 },
{ 0x1A, 0x20, 0x8, 0x11, 0x4 },
{ 0x9F, 0x24, 0x8, 0x11, 0x4 },
{ 0x0, 0xAE, 0x8, 0x5, 0x12 },
{ 0xFA, 0x23, 0x44, 0x4A, 0x0 },
{ 0xA, 0xA8, 0x28, 0x4, 0x10 },
{ 0x2, 0xA8, 0x28, 0x4, 0x12 },
{ 0x2, 0xA8, 0x8, 0x4, 0x12 },
{ 0x8, 0x24, 0x4, 0x4, 0x10 },
{ 0x8, 0x24, 0x4, 0x4, 0x10 },
{ 0xEF, 0xAF, 0x4, 0x4, 0x12 },
{ 0x6A, 0x25, 0x60, 0x0, 0x11 },
{ 0xFF, 0xFF, 0xFF, 0xFF, 0x3F },
{ 0x6, 0x20, 0x18, 0x8, 0x0 },
{ 0x6, 0x20, 0x18, 0x8, 0x0 },
{ 0x6, 0x20, 0x1C, 0x8, 0x0 },
{ 0x12, 0x20, 0x0, 0x0, 0x12 },
{ 0x16, 0x20, 0x0, 0x0, 0x12 },
{ 0x76, 0x20, 0x0, 0x0, 0x12 },
{ 0x8B, 0x65, 0x8, 0x0, 0x20 },
{ 0x8F, 0x61, 0x8, 0x0, 0x20 },
{ 0x8F, 0x65, 0xC, 0x0, 0x20 },
{ 0x76, 0x25, 0x1, 0x40, 0x3C },
{ 0x76, 0x25, 0x1, 0x40, 0x3C },
{ 0x2, 0x88, 0x40, 0x4, 0x32 },
{ 0x2, 0x88, 0x40, 0x4, 0x32 },
{ 0x30, 0xA9, 0x0, 0x0, 0x34 },
{ 0x30, 0xA9, 0x0, 0x0, 0x34 },
{ 0x0, 0x0, 0x20, 0x80, 0x8 },
{ 0x0, 0x0, 0x20, 0x80, 0x8 },
{ 0x0, 0xA8, 0x40, 0x4, 0x32 },
{ 0x9, 0x20, 0x20, 0x80, 0x8 },
{ 0x9, 0x24, 0x20, 0x80, 0x8 },
{ 0x12, 0x20, 0x21, 0x20, 0x30 },
{ 0x1A, 0x20, 0x63, 0x40, 0x21 },
{ 0x1A, 0x20, 0x3, 0xC0, 0x20 },
{ 0x12, 0x20, 0x6A, 0x40, 0x31 },
{ 0x12, 0xA8, 0x6A, 0x44, 0x13 },
{ 0x0, 0xA8, 0x60, 0x4, 0x1B },
{ 0x0, 0xA8, 0x60, 0x4, 0x1B },
{ 0x0, 0x20, 0x20, 0x20, 0x10 },
{ 0x60, 0x20, 0x20, 0x20, 0x10 },
{ 0x60, 0x20, 0x24, 0x20, 0x10 },
{ 0x0, 0x30, 0x10, 0x8, 0x20 },
{ 0x9B, 0x25, 0x1, 0x0, 0x14 },
{ 0x9B, 0x25, 0x1, 0x0, 0x14 },
{ 0x72, 0x21, 0x1, 0x1, 0x8 },
{ 0xB, 0x20, 0x1, 0x80, 0x0 },
{ 0x0, 0x20, 0x11, 0x88, 0x0 },
{ 0x0, 0x20, 0x11, 0x88, 0x0 },
{ 0x0, 0x20, 0x11, 0x88, 0x0 },
{ 0x66, 0x61, 0x0, 0xCA, 0x34 },
{ 0x0, 0x20, 0x13, 0x8, 0x20 },
{ 0x0, 0x20, 0x13, 0x8, 0x20 },
{ 0x0, 0xA8, 0x28, 0x0, 0x30 },
{ 0x1B, 0x25, 0x8, 0x1, 0x0 },
{ 0x1B, 0x25, 0x8, 0x1, 0x0 },
{ 0x2, 0x20, 0x61, 0x40, 0x11 },
{ 0x2, 0x60, 0x1, 0x40, 0x18 },
{ 0xA, 0xC8, 0x0, 0x4, 0x3A },
{ 0xF, 0x25, 0x60, 0x10, 0x11 },
{ 0x8, 0x68, 0x0, 0x0, 0x39 },
{ 0x0, 0x0, 0x0, 0x0, 0x0 },
{ 0x0, 0x0, 0x0, 0x0, 0x0 },
{ 0x2, 0x20, 0x60, 0x0, 0x39 },
{ 0x10, 0x20, 0x0, 0x10, 0x0 },
{ 0x10, 0x20, 0x20, 0x30, 0x0 },
{ 0x12, 0x64, 0x4A, 0x40, 0x0 },
{ 0x4, 0x24, 0x0, 0x1, 0x14 },
{ 0x12, 0x26, 0x8, 0x25, 0x0 },
{ 0xE2, 0x21, 0x0, 0x40, 0x0 },
{ 0xE2, 0x21, 0x0, 0x40, 0x0 },
{ 0x19, 0x24, 0x20, 0x80, 0x10 },
{ 0x84, 0x2A, 0x0, 0x10, 0x14 },
{ 0x12, 0x30, 0x9, 0x1, 0x0 },
{ 0x4, 0x20, 0x81, 0x10, 0x4 },
{ 0xE, 0x61, 0x0, 0x0, 0x14 },
{ 0xF6, 0x21, 0x0, 0x4A, 0x10 },
{ 0xF6, 0x21, 0x0, 0x4A, 0x30 },
{ 0x12, 0x20, 0x8, 0x11, 0x2 },
{ 0x12, 0x20, 0x8, 0x11, 0x2 },
{ 0x8A, 0x20, 0xA, 0x1, 0x0 },
{ 0x8A, 0x20, 0xA, 0x1, 0x0 },
{ 0x1A, 0x20, 0xA, 0x1, 0x8 },
{ 0xB, 0x20, 0x20, 0x8A, 0x10 },
{ 0xB, 0x20, 0x20, 0x8A, 0x10 },
{ 0x1A, 0x0, 0x20, 0x8A, 0x10 },
{ 0xB, 0xA6, 0x21, 0x8A, 0x10 },
{ 0xE, 0xA8, 0x0, 0x14, 0x10 },
{ 0x2, 0x60, 0x0, 0x0, 0x3A },
{ 0x2, 0x60, 0x0, 0x0, 0x3A },
{ 0x9, 0x22, 0x24, 0x84, 0x10 },
{ 0x92, 0x20, 0xA, 0xB, 0x4 },
{ 0x92, 0x20, 0xA, 0x9B, 0x4 },
{ 0x8, 0x20, 0x60, 0x40, 0x11 },
{ 0x2, 0x60, 0x60, 0xC0, 0x38 },
{ 0x0, 0x0, 0x0, 0x0, 0x0 },
{ 0x2, 0x20, 0x81, 0x0, 0x30 },
{ 0x12, 0x20, 0x83, 0x4, 0x18 },
{ 0xA, 0x21, 0x61, 0x0, 0x21 },
{ 0x62, 0x21, 0x21, 0x20, 0x30 },
{ 0x62, 0x20, 0x1, 0x0, 0x22 },
{ 0x7A, 0x23, 0x41, 0x0, 0x0 },
{ 0x7A, 0x21, 0x43, 0x40, 0x0 },
{ 0x2, 0x22, 0x20, 0x20, 0x10 },
{ 0x2, 0x22, 0x0, 0x0, 0x12 },
{ 0xB, 0x2A, 0x20, 0x0, 0x10 },
{ 0x82, 0x62, 0x8, 0x1, 0x20 },
{ 0x82, 0x62, 0x8, 0x11, 0x20 },
{ 0xE6, 0x67, 0xC, 0x1, 0x20 },
{ 0xB, 0xAE, 0x68, 0x5, 0x11 },
{ 0x2, 0xAA, 0x68, 0x5, 0x12 },
{ 0x2, 0x20, 0x79, 0x49, 0x39 },
{ 0x26, 0x20, 0x12, 0x8, 0x10 },
{ 0x26, 0x20, 0x12, 0x8, 0x10 },
{ 0x26, 0x20, 0x16, 0x8, 0x10 },
{ 0x2, 0x20, 0x1, 0xC0, 0x12 },
{ 0x66, 0x20, 0x81, 0xC0, 0x12 },
{ 0xE6, 0x20, 0x81, 0xC0, 0x16 },
{ 0x9B, 0x24, 0xA, 0x1, 0x0 },
{ 0x9B, 0x25, 0xA, 0x1, 0x0 },
{ 0x9B, 0x25, 0xE, 0x1, 0x0 },
{ 0x2, 0x60, 0x0, 0x0, 0x28 },
{ 0x2, 0x60, 0x0, 0x0, 0x28 },
{ 0x1E, 0x20, 0x1, 0x4A, 0x11 },
{ 0x1E, 0x20, 0x1, 0x4A, 0x11 },
{ 0x0, 0x20, 0x0, 0x0, 0x0 },
{ 0x0, 0x0, 0x0, 0x10, 0x0 },
{ 0x0, 0xA8, 0x20, 0x4, 0x10 },
{ 0x0, 0x0, 0x0, 0x10, 0x0 },
{ 0x0, 0xA8, 0x20, 0x4, 0x10 },
{ 0x8, 0x20, 0x50, 0x8, 0x20 },
{ 0x6B, 0x21, 0x50, 0x8, 0x20 },
{ 0x6B, 0x21, 0x50, 0x8, 0x20 },
{ 0x10, 0x60, 0x10, 0x8, 0x0 },
{ 0x16, 0x60, 0x10, 0x8, 0x10 },
{ 0x1E, 0xE8, 0x10, 0x8C, 0x1C },
{ 0x2, 0xA8, 0x2, 0x4, 0x12 },
{ 0x2, 0xA8, 0x2, 0x4, 0x12 },
{ 0xA, 0xA8, 0x0, 0x4, 0x34 },
{ 0xA, 0xA8, 0x0, 0xE, 0x34 },
{ 0x6A, 0x21, 0x61, 0x0, 0x11 },
{ 0x6A, 0x21, 0x61, 0x0, 0x11 },
{ 0x6A, 0x21, 0x61, 0x0, 0x11 },
{ 0xA, 0x20, 0x20, 0x0, 0x10 },
{ 0xA, 0xA8, 0x20, 0x4, 0x10 },
{ 0x0, 0x20, 0x11, 0x8, 0x0 },
{ 0xA6, 0x20, 0x91, 0x8, 0x0 },
{ 0x6E, 0x21, 0x0, 0x2, 0x8 },
{ 0x6E, 0x1, 0x0, 0x2, 0x28 },
{ 0x6E, 0x21, 0x0, 0x2, 0x8 },
{ 0x6, 0x60, 0x0, 0x0, 0x0 },
{ 0x6, 0xE8, 0x0, 0x0, 0x30 },
{ 0x6, 0x60, 0x0, 0x0, 0x9 },
{ 0x7A, 0x21, 0x40, 0x0, 0x20 },
{ 0x7A, 0x21, 0x40, 0x0, 0x20 },
{ 0x7A, 0x21, 0x44, 0x0, 0x20 },
{ 0xE2, 0x21, 0x81, 0x0, 0x4 },
{ 0xE2, 0x23, 0x81, 0x0, 0x4 },
{ 0x1A, 0x20, 0x1, 0x0, 0x34 },
{ 0x72, 0x21, 0x8, 0x31, 0x0 },
{ 0x1A, 0x20, 0x41, 0x40, 0x18 },
{ 0x1A, 0x20, 0x41, 0x40, 0x18 },
{ 0x6E, 0x69, 0x60, 0x0, 0xD },
{ 0x2A, 0x23, 0x8, 0x30, 0xC },
{ 0x96, 0x62, 0xA, 0x31, 0x20 },
{ 0x96, 0x62, 0xA, 0x31, 0x20 },
{ 0xFE, 0x67, 0xE, 0x31, 0x20 },
{ 0x62, 0x21, 0xE1, 0x0, 0x11 },
{ 0x62, 0x21, 0xE1, 0x0, 0x11 },
{ 0x2, 0x20, 0x20, 0x20, 0x10 },
{ 0x2, 0x20, 0x20, 0x20, 0x10 },
{ 0x32, 0x20, 0x21, 0x60, 0x30 },
{ 0x32, 0x20, 0x21, 0x60, 0x30 },
{ 0x22, 0xA9, 0x61, 0x0, 0x10 },
{ 0x22, 0xA9, 0x41, 0x0, 0x10 },
{ 0x6, 0x20, 0x10, 0x8, 0x10 },
{ 0x72, 0x31, 0x0, 0xA, 0x0 },
{ 0x72, 0x31, 0x0, 0xA, 0x0 },
{ 0xF, 0x60, 0x48, 0x80, 0x30 },
{ 0xF, 0x60, 0x48, 0x80, 0x30 },
{ 0x19, 0x20, 0x0, 0x80, 0x0 },
{ 0x19, 0x22, 0x0, 0x80, 0x0 },
{ 0x12, 0x20, 0x0, 0x1, 0x2 },
{ 0x12, 0x22, 0x0, 0x1, 0x2 },
{ 0x12, 0x20, 0x0, 0x11, 0x2 },
{ 0x8, 0x20, 0x60, 0x80, 0x11 },
{ 0x6A, 0x21, 0x60, 0x80, 0x11 },
{ 0x7A, 0x21, 0x41, 0x40, 0x38 },
{ 0x6, 0x20, 0x0, 0x1, 0x0 },
{ 0x6, 0xA8, 0x4, 0x5, 0x12 },
{ 0x66, 0xA8, 0x4, 0x5, 0x12 },
{ 0x26, 0x60, 0x10, 0x8, 0x8 },
{ 0xA6, 0x60, 0x10, 0x8, 0x8 },
{ 0x2, 0xA8, 0x4, 0x4, 0x32 },
{ 0x2, 0xA8, 0x4, 0x4, 0x32 },
{ 0x7E, 0x21, 0x2, 0x40, 0x14 },
{ 0x6, 0x24, 0x0, 0x0, 0x1C },
{ 0x10, 0x22, 0x69, 0x1, 0x10 },
{ 0x10, 0x22, 0x69, 0x11, 0x10 },
{ 0xB, 0x24, 0x0, 0x81, 0x0 },
{ 0xB, 0x24, 0x40, 0x81, 0x0 },
{ 0x8E, 0x60, 0xA, 0x10, 0x4 },
{ 0x8F, 0x60, 0xA, 0x10, 0x14 },
{ 0x2, 0x20, 0x68, 0x1, 0x1 },
{ 0x2, 0x20, 0x68, 0x1, 0x1 },
{ 0x2, 0x30, 0x18, 0x9, 0x0 },
{ 0x2, 0x30, 0x18, 0x9, 0x0 },
{ 0x6, 0x20, 0x8, 0x11, 0x4 },
{ 0x86, 0x24, 0x8, 0x11, 0x4 },
{ 0x9, 0x20, 0x0, 0x0, 0x10 },
{ 0xB, 0x26, 0x0, 0x4, 0x10 },
{ 0x8, 0x28, 0x0, 0x40, 0x10 },
{ 0x7E, 0x25, 0x8, 0x40, 0x1D },
{ 0x8, 0x48, 0x0, 0x0, 0xD },
{ 0xA, 0x48, 0x0, 0x0, 0xD },
{ 0x8, 0x68, 0x0, 0x0, 0x9 },
{ 0x6A, 0x69, 0x0, 0x0, 0x9 },
{ 0x6, 0xA8, 0x14, 0x4, 0x0 },
{ 0x18, 0x20, 0x61, 0x40, 0x25 },
{ 0x8E, 0x60, 0x40, 0x80, 0x1C },
{ 0x0, 0x0, 0x0, 0x0, 0x0 },
{ 0x18, 0x60, 0x0, 0x0, 0x0 },
{ 0x18, 0x62, 0x20, 0x0, 0x0 },
{ 0x1B, 0x24, 0x20, 0x0, 0x0 },
{ 0x1B, 0x24, 0x20, 0x0, 0x0 },
{ 0x1F, 0x26, 0x20, 0x0, 0x0 },
{ 0x9, 0x20, 0x0, 0x10, 0x0 },
{ 0xB, 0x24, 0x0, 0x80, 0x18 },
{ 0xB, 0x24, 0x20, 0x80, 0x10 },
{ 0xB, 0x24, 0x8, 0x81, 0x0 },
{ 0x9, 0x20, 0x0, 0x80, 0x10 },
{ 0x6, 0x20, 0x44, 0x4, 0x0 },
{ 0x16, 0x20, 0x44, 0x14, 0x0 },
{ 0x16, 0xAC, 0x44, 0x4, 0x12 },
{ 0x0, 0x2, 0x40, 0x10, 0x0 },
{ 0x3E, 0x23, 0x60, 0x30, 0x11 },
{ 0x3E, 0x23, 0x60, 0x30, 0x11 },
{ 0xF2, 0x23, 0x8, 0x1, 0x0 },
{ 0xBA, 0x23, 0x28, 0x0, 0x0 },
{ 0xB2, 0x23, 0x8, 0x30, 0x0 },
{ 0xF, 0x20, 0x45, 0x44, 0x19 },
{ 0xF, 0x20, 0x45, 0x44, 0x11 },
{ 0xB, 0x26, 0x28, 0x0, 0x30 },
{ 0x76, 0x22, 0x8, 0x1, 0x30 },
{ 0xF, 0x26, 0xC, 0x5, 0x30 },
{ 0x6A, 0x23, 0x69, 0x50, 0x31 },
{ 0x6A, 0x21, 0x60, 0x0, 0x15 },
{ 0x82, 0x20, 0x10, 0x9, 0x0 },
{ 0x82, 0x20, 0x10, 0x9, 0x0 },
{ 0x82, 0x22, 0x14, 0x9, 0x0 },
{ 0x72, 0x20, 0x83, 0x2, 0x32 },
{ 0x72, 0x20, 0x83, 0x2, 0x12 },
{ 0x72, 0x20, 0x83, 0x2, 0x12 },
{ 0xB, 0x20, 0x20, 0x0, 0x0 },
{ 0xB, 0x20, 0x20, 0x0, 0x0 },
{ 0xF, 0x20, 0x20, 0x10, 0x4 },
{ 0x2, 0xA8, 0x2, 0x4, 0x12 },
{ 0x2, 0xA8, 0x2, 0x4, 0x12 },
{ 0x2, 0xA8, 0x2, 0x4, 0x12 },
{ 0x9E, 0x24, 0x0, 0x40, 0x10 },
{ 0x9F, 0x24, 0x0, 0x40, 0x10 },
{ 0x2, 0x20, 0x2, 0x0, 0x20 },
{ 0x6, 0x20, 0x2, 0x0, 0x24 },
{ 0x6, 0x20, 0x20, 0x20, 0x10 },
{ 0x6, 0x20, 0x20, 0x20, 0x10 },
{ 0x86, 0x20, 0x20, 0x20, 0x10 },
{ 0x2, 0x20, 0x10, 0x8, 0x30 },
{ 0x6, 0x20, 0x10, 0x8, 0x10 },
{ 0xE2, 0x62, 0x4A, 0x1, 0x20 },
{ 0xE2, 0x62, 0x4E, 0x1, 0x20 },
{ 0x2, 0x22, 0x8, 0x31, 0x0 },
{ 0x2, 0x22, 0xC, 0x31, 0x0 },
{ 0x0, 0x20, 0x0, 0x0, 0x0 },
{ 0x0, 0x20, 0x32, 0x8, 0x28 },
{ 0x2, 0xA8, 0x20, 0x4, 0x10 },
{ 0x2, 0xA8, 0x2, 0x0, 0x10 },
{ 0x6, 0xA8, 0x22, 0x0, 0x10 },
{ 0x32, 0x20, 0x1, 0x6A, 0x30 },
{ 0xB, 0x21, 0x0, 0x0, 0x10 },
{ 0xB, 0x25, 0x0, 0x0, 0x10 },
{ 0x10, 0x20, 0x11, 0x8, 0x0 },
{ 0x10, 0x20, 0x11, 0x8, 0x0 },
{ 0xB, 0x20, 0x8, 0x1, 0x0 },
{ 0xB, 0x20, 0x8, 0x1, 0x0 },
{ 0x66, 0x61, 0x0, 0xCA, 0x34 },
{ 0x1A, 0xE8, 0x0, 0x0, 0x1D },
{ 0x1A, 0xE8, 0x0, 0x0, 0x1D },
{ 0x2, 0x20, 0x3, 0xC0, 0x30 },
{ 0x66, 0x21, 0x3, 0xC0, 0x30 },
{ 0x8, 0x68, 0x0, 0x0, 0x39 },
{ 0x82, 0xC8, 0x0, 0x4, 0x3A },
{ 0x6, 0x20, 0x0, 0x40, 0x1C },
{ 0x16, 0x20, 0x0, 0x40, 0x1C },
{ 0x18, 0x20, 0x61, 0x40, 0x35 },
{ 0x6, 0x20, 0x0, 0x0, 0x18 },
{ 0x6, 0x20, 0x0, 0x0, 0x18 },
{ 0x10, 0x20, 0x28, 0x0, 0x1 },
{ 0x10, 0x22, 0x68, 0x0, 0x1 },
{ 0x10, 0x20, 0x1, 0x1, 0x28 },
{ 0x2, 0x20, 0x21, 0x0, 0x21 },
{ 0x1A, 0x20, 0x43, 0x40, 0x20 },
{ 0x2, 0xA8, 0x0, 0x4, 0x32 },
{ 0x8, 0x68, 0x0, 0x0, 0x29 },
{ 0x6, 0x22, 0x4, 0x5, 0x10 },
{ 0x6, 0x22, 0x4, 0x5, 0x10 },
{ 0x6, 0x26, 0x4, 0x5, 0x10 },
{ 0xFA, 0x21, 0x40, 0x4A, 0x20 },
{ 0x26, 0x21, 0xC1, 0x30, 0x10 },
{ 0x26, 0x21, 0xC1, 0x30, 0x10 },
{ 0x82, 0x20, 0x0, 0x1, 0x0 },
{ 0x82, 0x22, 0x0, 0x1, 0x0 },
{ 0x6, 0x24, 0x0, 0x0, 0x4 },
{ 0x6, 0x24, 0x0, 0x0, 0x4 },
{ 0x2E, 0x61, 0x81, 0x82, 0xC },
{ 0x2E, 0x61, 0x81, 0x82, 0xC },
{ 0x6, 0x30, 0x10, 0x8, 0x4 },
{ 0x9, 0xAC, 0x0, 0x84, 0x10 },
{ 0x9, 0xAC, 0x0, 0x84, 0x10 },
{ 0xB, 0xA0, 0x1, 0x80, 0x10 },
{ 0xA, 0x21, 0x10, 0x8, 0x0 },
{ 0xA, 0x21, 0x14, 0x8, 0x0 },
{ 0xE, 0x61, 0x0, 0x0, 0x14 },
{ 0x10, 0x22, 0x20, 0x30, 0x10 },
{ 0x7A, 0x25, 0x40, 0x0, 0x4 },
{ 0xFE, 0x67, 0xE, 0x1, 0x20 },
{ 0x2, 0x20, 0x18, 0x8, 0x4 },
{ 0x62, 0x21, 0x21, 0x20, 0x10 },
{ 0x62, 0x20, 0x1, 0x0, 0x2 },
{ 0x12, 0xA8, 0x6A, 0x44, 0x13 },
{ 0x2, 0xA8, 0x28, 0x0, 0x30 },
{ 0x6, 0x20, 0x11, 0x48, 0x14 },
{ 0xA, 0x24, 0x21, 0x40, 0x10 },
{ 0x6, 0x24, 0x0, 0x1, 0x14 },
{ 0x8E, 0x22, 0xA, 0x1, 0x4 },
{ 0x8, 0x20, 0x60, 0x40, 0x31 },
{ 0x66, 0x21, 0xE1, 0x0, 0x15 },
{ 0x72, 0x23, 0x8, 0x31, 0x0 },
{ 0x6A, 0x69, 0x0, 0x0, 0x9 },
{ 0x1A, 0x69, 0x20, 0x0, 0x9 },
{ 0x2, 0x68, 0x20, 0x0, 0x39 },
{ 0x62, 0x21, 0x61, 0x0, 0x15 },
{ 0x62, 0x21, 0x61, 0x0, 0x15 },
{ 0x62, 0x21, 0x61, 0x40, 0x35 },
{ 0x6, 0x22, 0xC, 0x35, 0x10 },
{ 0x7, 0x24, 0xC, 0x5, 0x10 },
{ 0x2, 0x22, 0x8, 0x11, 0x22 },
{ 0xEA, 0x23, 0x48, 0x1, 0x0 },
{ 0xE, 0xEE, 0xC, 0x5, 0x10 },
{ 0xE, 0x20, 0x61, 0x0, 0x11 },
{ 0xB, 0x20, 0x29, 0xC0, 0x34 },
{ 0xB, 0x20, 0x29, 0xC0, 0x34 },
{ 0xA, 0x68, 0x0, 0x40, 0x1D },
{ 0x2, 0x20, 0x52, 0x49, 0x10 },
{ 0xF, 0x2E, 0x6C, 0x55, 0x13 },
{ 0x82, 0x20, 0x60, 0x0, 0x1 },
{ 0x2, 0x20, 0x60, 0x10, 0x5 },
{ 0x2, 0x20, 0x60, 0x0, 0x15 },
{ 0x12, 0x20, 0x22, 0x1, 0x28 },
{ 0x0, 0x22, 0x22, 0x32, 0x28 },
{ 0xE, 0xEE, 0xC, 0x5, 0x10 },
{ 0x2, 0xA8, 0x50, 0x48, 0x10 },
{ 0x2, 0x68, 0x20, 0x0, 0x39 },
{ 0x2, 0x68, 0x20, 0x0, 0x39 },
{ 0x2, 0x68, 0x20, 0x0, 0x39 },
{ 0x2, 0x68, 0x20, 0x0, 0x39 },
{ 0x2, 0x68, 0x20, 0x0, 0x39 }
};
#include "tutor_movesets.h"
#include "res/pokemon/tutor_movesets.h"
struct UnkStruct_ov5_021F7ED8_t {
FieldSystem * unk_00;

View File

@ -0,0 +1,154 @@
#!/usr/bin/env python3
import argparse
import json
import pathlib
import sys
from consts.moves import Move
from consts.species import PokemonSpecies
argparser = argparse.ArgumentParser(
prog='make_species_tables.py',
description='Creates generated .h files for species-specific data'
)
argparser.add_argument('-s', '--source-dir',
required=True,
help='Path to the source directory (res/pokemon)')
argparser.add_argument('-o', '--output-dir',
required=True,
help='Path to the output directory (where the header files will be made)')
args = argparser.parse_args()
source_dir = pathlib.Path(args.source_dir)
output_dir = pathlib.Path(args.output_dir)
moveset = [
Move.MOVE_DIVE,
Move.MOVE_MUD_SLAP,
Move.MOVE_FURY_CUTTER,
Move.MOVE_ICY_WIND,
Move.MOVE_ROLLOUT,
Move.MOVE_THUNDER_PUNCH,
Move.MOVE_FIRE_PUNCH,
Move.MOVE_SUPERPOWER,
Move.MOVE_ICE_PUNCH,
Move.MOVE_IRON_HEAD,
Move.MOVE_AQUA_TAIL,
Move.MOVE_OMINOUS_WIND,
Move.MOVE_GASTRO_ACID,
Move.MOVE_SNORE,
Move.MOVE_SPITE,
Move.MOVE_AIR_CUTTER,
Move.MOVE_HELPING_HAND,
Move.MOVE_ENDEAVOR,
Move.MOVE_OUTRAGE,
Move.MOVE_ANCIENT_POWER,
Move.MOVE_SYNTHESIS,
Move.MOVE_SIGNAL_BEAM,
Move.MOVE_ZEN_HEADBUTT,
Move.MOVE_VACUUM_WAVE,
Move.MOVE_EARTH_POWER,
Move.MOVE_GUNK_SHOT,
Move.MOVE_TWISTER,
Move.MOVE_SEED_BOMB,
Move.MOVE_IRON_DEFENSE,
Move.MOVE_MAGNET_RISE,
Move.MOVE_LAST_RESORT,
Move.MOVE_BOUNCE,
Move.MOVE_TRICK,
Move.MOVE_HEAT_WAVE,
Move.MOVE_KNOCK_OFF,
Move.MOVE_SUCKER_PUNCH,
Move.MOVE_SWIFT,
Move.MOVE_UPROAR,
]
NATIONAL_DEX_COUNT = 493
FORM_INDICES = {
'DEOXYS' : {
'ATTACK': NATIONAL_DEX_COUNT + 1,
'DEFENSE': NATIONAL_DEX_COUNT + 2,
'SPEED': NATIONAL_DEX_COUNT + 3,
},
'WORMADAM': {
'SANDY': NATIONAL_DEX_COUNT + 4,
'TRASH': NATIONAL_DEX_COUNT + 5,
},
'GIRATINA': {
'ORIGIN': NATIONAL_DEX_COUNT + 6,
},
'SHAYMIN': {
'SKY': NATIONAL_DEX_COUNT + 7,
},
'ROTOM': {
'HEAT': NATIONAL_DEX_COUNT + 8,
'WASH': NATIONAL_DEX_COUNT + 9,
'FROST': NATIONAL_DEX_COUNT + 10,
'FAN': NATIONAL_DEX_COUNT + 11,
'MOW': NATIONAL_DEX_COUNT + 12,
},
}
species_sets = {}
for file_path in source_dir.glob("**/data.json"):
with open(file_path, 'r') as data_file:
species_data = json.load(data_file)
species_name = file_path.parent.stem.upper()
if species_name in ["000", "EGG", "BAD_EGG"]:
continue
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]
else:
species_id = PokemonSpecies[f"SPECIES_{species_name}"].value
# this needs to be increased if more than 40 moves are added to this list
byte_array = [0, 0, 0, 0, 0]
def set_bit(bit_num):
byte_index = bit_num // 8
bit_index = bit_num % 8
byte = byte_array[byte_index]
byte_array[byte_index] = byte | (1 << bit_index)
for tutor_move in species_data["learnset"]["tutor"]:
set_bit(moveset.index(Move[tutor_move]))
species_sets[species_id] = byte_array
generated_disclaimer = [
"// This file is GENERATED. Changes will be overwritten here on build\n",
"// Check make_species_tables.py for reference\n",
]
output_path = output_dir / "tutor_movesets.h"
with open(output_path, "w") as output_file:
output_file.writelines(generated_disclaimer)
output_file.write("#ifndef POKEPLATINUM_GENERATED_TUTOR_MOVESETS_H\n")
output_file.write("#define POKEPLATINUM_GENERATED_TUTOR_MOVESETS_H\n")
output_file.write("#include \"tutor_movesets.h\"\n")
output_file.write("#include \"constants/forms.h\"\n")
output_file.write("\n")
output_file.write("const MovesetMask sTeachableMovesets[MOVESET_MAX] = {\n")
sorted_array = sorted(species_sets.items())
for key, value in sorted_array:
struct = ''.join([f" 0x{i:X},".ljust(6) for i in value])
output_file.write(f" {{{struct.rstrip(' ,').ljust(29)} }},\n")
output_file.write("};\n")
output_file.write("\n#endif\n")

View File

@ -6,3 +6,4 @@ make_script_bin_sh = find_program('make_script_bin.sh', native: true)
make_pl_pokezukan_py = find_program('make_pl_pokezukan.py', native: true)
make_shinzukan_py = find_program('make_shinzukan.py', native: true)
make_pl_growtbl_py = find_program('make_pl_growtbl.py', native: true)
make_species_tables_py = find_program('make_species_tables.py', native: true)