ov97_02236DD0 -> ConvertGBASpeciesToDS

This commit is contained in:
Eduardo Quezada
2025-02-27 19:38:20 -03:00
parent 97174d322e
commit d9010fc005
3 changed files with 169 additions and 168 deletions

View File

@@ -5,7 +5,7 @@
u32 GetGBABoxMonData(BoxPokemonGBA *boxMon, int field, u8 *data);
void SetGBABoxMonData(BoxPokemonGBA *boxMon, int field, const u8 *dataArg);
int ov97_02236DD0(int param0);
int ConvertGBASpeciesToDS(int species);
u32 ov97_02236E00(BoxPokemonGBA *param0);
#endif // POKEPLATINUM_OV97_02236380_H

View File

@@ -635,7 +635,7 @@ static void ov97_02234278(int param0, int param1, u32 param2, int param3, int pa
u8 v1;
NNSG2dCharacterData *v2;
param0 = ov97_02236DD0(param0);
param0 = ConvertGBASpeciesToDS(param0);
v1 = GBASpeciesToDSFormId(param0, param2, param3);
v0 = ov97_022341B4(19, PokeIconSpriteIndex(param0, param1, v1), &v2, 78);
@@ -647,27 +647,28 @@ static void ov97_02234278(int param0, int param1, u32 param2, int param3, int pa
Heap_FreeToHeap(v0);
}
static void ov97_022342E4(int param0, int param1, int param2, int param3, Sprite *param4, void *param5, NARC *param6)
// speciesGBA is reused to store NDS species
static void ov97_022342E4(int speciesGBA, int param1, int param2, int param3, Sprite *param4, void *param5, NARC *param6)
{
u32 v0;
NNSG2dCharacterData *v1;
UnkStruct_ov97_0223F434 *v2 = Unk_ov97_0223F434 + param3;
if (param4) {
if (IsGBASpeciesInvalid(param0) == 0) {
param0 = ov97_02236DD0(param0);
if (IsGBASpeciesInvalid(speciesGBA) == FALSE) {
speciesGBA = ConvertGBASpeciesToDS(speciesGBA);
} else {
param0 = 0;
speciesGBA = SPECIES_NONE;
}
v0 = PokeIconSpriteIndex(param0, param1, param2);
v0 = PokeIconSpriteIndex(speciesGBA, param1, param2);
ov97_022341EC(v0, &v1, param5, param6);
MI_CpuCopyFast(v1->pRawData, v2->unk_0C, ((4 * 4) * 0x20));
v2->unk_00 = (0x64 + param3 * (4 * 4)) * 0x20;
v2->unk_08 = param4;
v2->unk_04 = PokeIconPaletteIndex(param0, param2, param1) + 8;
v2->unk_04 = PokeIconPaletteIndex(speciesGBA, param2, param1) + 8;
} else {
v2->unk_08 = NULL;
}
@@ -703,7 +704,7 @@ static void ov97_022343A8(UnkStruct_ov97_02234A2C *param0)
v2 = ov97_02234148(param0, param0->unk_E8E4, v0);
v5 = ov97_0223416C(param0, param0->unk_E8E4, v0);
v3 = gSystem.gbaCartridgeVersion;
v4 = GBASpeciesToDSFormId(ov97_02236DD0(v1), v5, v3);
v4 = GBASpeciesToDSFormId(ConvertGBASpeciesToDS(v1), v5, v3);
ov97_022342E4(v1, v2, v4, v0, param0->unk_20C[v0].unk_00, v6, v7);
Sprite_SetDrawFlag(param0->unk_20C[v0].unk_00, 1);
@@ -1209,7 +1210,7 @@ static void ov97_02234B0C(UnkStruct_ov97_02234A2C *param0, BoxPokemonGBA *param1
v8 = Strbuf_Init(64, 78);
v5 = MessageLoader_Init(1, 26, 412, 78);
v0 = ov97_02236DD0(GetGBABoxMonData(param1, 11, NULL));
v0 = ConvertGBASpeciesToDS(GetGBABoxMonData(param1, 11, NULL));
MessageLoader_GetStrbuf(v5, v0, v8);

View File

@@ -15,155 +15,155 @@
#include "system.h"
typedef struct {
u16 unk_00;
u16 unk_02;
} UnkStruct_ov97_0223ED5C;
u16 gbaSpecies;
u16 ndsSpecies;
} GBAToDSSpeciesStruct;
UnkStruct_ov97_0223ED5C Unk_ov97_0223ED5C[] = {
{ 0x115, 0xFC },
{ 0x116, 0xFD },
{ 0x117, 0xFE },
{ 0x118, 0xFF },
{ 0x119, 0x100 },
{ 0x11A, 0x101 },
{ 0x11B, 0x102 },
{ 0x11C, 0x103 },
{ 0x11D, 0x104 },
{ 0x11E, 0x105 },
{ 0x11F, 0x106 },
{ 0x120, 0x107 },
{ 0x121, 0x108 },
{ 0x122, 0x109 },
{ 0x123, 0x10A },
{ 0x124, 0x10B },
{ 0x125, 0x10C },
{ 0x126, 0x10D },
{ 0x127, 0x10E },
{ 0x128, 0x10F },
{ 0x129, 0x110 },
{ 0x12A, 0x111 },
{ 0x12B, 0x112 },
{ 0x12C, 0x113 },
{ 0x12D, 0x122 },
{ 0x12E, 0x123 },
{ 0x12F, 0x124 },
{ 0x130, 0x114 },
{ 0x131, 0x115 },
{ 0x132, 0x11D },
{ 0x133, 0x11E },
{ 0x134, 0x147 },
{ 0x135, 0x116 },
{ 0x136, 0x117 },
{ 0x137, 0x11B },
{ 0x138, 0x11C },
{ 0x139, 0x140 },
{ 0x13A, 0x141 },
{ 0x13B, 0x12C },
{ 0x13C, 0x12D },
{ 0x13D, 0x160 },
{ 0x13E, 0x157 },
{ 0x13F, 0x158 },
{ 0x140, 0x12B },
{ 0x141, 0x144 },
{ 0x142, 0x12E },
{ 0x143, 0x153 },
{ 0x144, 0x154 },
{ 0x145, 0x172 },
{ 0x146, 0x155 },
{ 0x147, 0x156 },
{ 0x148, 0x15D },
{ 0x149, 0x15E },
{ 0x14A, 0x13E },
{ 0x14B, 0x13F },
{ 0x14C, 0x148 },
{ 0x14D, 0x149 },
{ 0x14E, 0x14A },
{ 0x14F, 0x128 },
{ 0x150, 0x129 },
{ 0x151, 0x135 },
{ 0x152, 0x136 },
{ 0x153, 0x142 },
{ 0x154, 0x143 },
{ 0x155, 0x16B },
{ 0x156, 0x16C },
{ 0x157, 0x16D },
{ 0x158, 0x14B },
{ 0x159, 0x14C },
{ 0x15A, 0x169 },
{ 0x15B, 0x16A },
{ 0x15C, 0x151 },
{ 0x15D, 0x152 },
{ 0x15E, 0x12A },
{ 0x15F, 0x145 },
{ 0x160, 0x146 },
{ 0x161, 0x137 },
{ 0x162, 0x138 },
{ 0x163, 0x12F },
{ 0x164, 0x133 },
{ 0x165, 0x134 },
{ 0x166, 0x14D },
{ 0x167, 0x14E },
{ 0x168, 0x168 },
{ 0x169, 0x163 },
{ 0x16A, 0x164 },
{ 0x16B, 0x13B },
{ 0x16C, 0x11F },
{ 0x16D, 0x120 },
{ 0x16E, 0x121 },
{ 0x16F, 0x13C },
{ 0x170, 0x13D },
{ 0x171, 0x165 },
{ 0x172, 0x125 },
{ 0x173, 0x126 },
{ 0x174, 0x127 },
{ 0x175, 0x16E },
{ 0x176, 0x16F },
{ 0x177, 0x170 },
{ 0x178, 0x167 },
{ 0x179, 0x161 },
{ 0x17A, 0x162 },
{ 0x17B, 0x150 },
{ 0x17C, 0x14F },
{ 0x17D, 0x171 },
{ 0x17E, 0x130 },
{ 0x17F, 0x131 },
{ 0x180, 0x132 },
{ 0x181, 0x15F },
{ 0x182, 0x139 },
{ 0x183, 0x13A },
{ 0x184, 0x159 },
{ 0x185, 0x15A },
{ 0x186, 0x15B },
{ 0x187, 0x15C },
{ 0x188, 0x118 },
{ 0x189, 0x119 },
{ 0x18A, 0x11A },
{ 0x18B, 0x173 },
{ 0x18C, 0x174 },
{ 0x18D, 0x175 },
{ 0x18E, 0x176 },
{ 0x18F, 0x177 },
{ 0x190, 0x178 },
{ 0x191, 0x179 },
{ 0x192, 0x17A },
{ 0x193, 0x17B },
{ 0x194, 0x17E },
{ 0x195, 0x17F },
{ 0x196, 0x180 },
{ 0x197, 0x17C },
{ 0x198, 0x17D },
{ 0x199, 0x181 },
{ 0x19A, 0x182 },
{ 0x19B, 0x166 },
{ 0x19C, 0x19C },
{ 0x19D, 0x19D },
{ 0x19E, 0x19E },
{ 0x19F, 0x19F },
{ 0x1A0, 0x1A0 },
{ 0x1A1, 0x1A1 },
{ 0x1A2, 0x1A2 },
{ 0x1A3, 0x1A3 },
{ 0x1A4, 0x1A4 }
GBAToDSSpeciesStruct sGBAToDSSpecies[] = {
{ GBA_SPECIES_TREECKO, SPECIES_TREECKO },
{ GBA_SPECIES_GROVYLE, SPECIES_GROVYLE },
{ GBA_SPECIES_SCEPTILE, SPECIES_SCEPTILE },
{ GBA_SPECIES_TORCHIC, SPECIES_TORCHIC },
{ GBA_SPECIES_COMBUSKEN, SPECIES_COMBUSKEN },
{ GBA_SPECIES_BLAZIKEN, SPECIES_BLAZIKEN },
{ GBA_SPECIES_MUDKIP, SPECIES_MUDKIP },
{ GBA_SPECIES_MARSHTOMP, SPECIES_MARSHTOMP },
{ GBA_SPECIES_SWAMPERT, SPECIES_SWAMPERT },
{ GBA_SPECIES_POOCHYENA, SPECIES_POOCHYENA },
{ GBA_SPECIES_MIGHTYENA, SPECIES_MIGHTYENA },
{ GBA_SPECIES_ZIGZAGOON, SPECIES_ZIGZAGOON },
{ GBA_SPECIES_LINOONE, SPECIES_LINOONE },
{ GBA_SPECIES_WURMPLE, SPECIES_WURMPLE },
{ GBA_SPECIES_SILCOON, SPECIES_SILCOON },
{ GBA_SPECIES_BEAUTIFLY, SPECIES_BEAUTIFLY },
{ GBA_SPECIES_CASCOON, SPECIES_CASCOON },
{ GBA_SPECIES_DUSTOX, SPECIES_DUSTOX },
{ GBA_SPECIES_LOTAD, SPECIES_LOTAD },
{ GBA_SPECIES_LOMBRE, SPECIES_LOMBRE },
{ GBA_SPECIES_LUDICOLO, SPECIES_LUDICOLO },
{ GBA_SPECIES_SEEDOT, SPECIES_SEEDOT },
{ GBA_SPECIES_NUZLEAF, SPECIES_NUZLEAF },
{ GBA_SPECIES_SHIFTRY, SPECIES_SHIFTRY },
{ GBA_SPECIES_NINCADA, SPECIES_NINCADA },
{ GBA_SPECIES_NINJASK, SPECIES_NINJASK },
{ GBA_SPECIES_SHEDINJA, SPECIES_SHEDINJA },
{ GBA_SPECIES_TAILLOW, SPECIES_TAILLOW },
{ GBA_SPECIES_SWELLOW, SPECIES_SWELLOW },
{ GBA_SPECIES_SHROOMISH, SPECIES_SHROOMISH },
{ GBA_SPECIES_BRELOOM, SPECIES_BRELOOM },
{ GBA_SPECIES_SPINDA, SPECIES_SPINDA },
{ GBA_SPECIES_WINGULL, SPECIES_WINGULL },
{ GBA_SPECIES_PELIPPER, SPECIES_PELIPPER },
{ GBA_SPECIES_SURSKIT, SPECIES_SURSKIT },
{ GBA_SPECIES_MASQUERAIN, SPECIES_MASQUERAIN },
{ GBA_SPECIES_WAILMER, SPECIES_WAILMER },
{ GBA_SPECIES_WAILORD, SPECIES_WAILORD },
{ GBA_SPECIES_SKITTY, SPECIES_SKITTY },
{ GBA_SPECIES_DELCATTY, SPECIES_DELCATTY },
{ GBA_SPECIES_KECLEON, SPECIES_KECLEON },
{ GBA_SPECIES_BALTOY, SPECIES_BALTOY },
{ GBA_SPECIES_CLAYDOL, SPECIES_CLAYDOL },
{ GBA_SPECIES_NOSEPASS, SPECIES_NOSEPASS },
{ GBA_SPECIES_TORKOAL, SPECIES_TORKOAL },
{ GBA_SPECIES_SABLEYE, SPECIES_SABLEYE },
{ GBA_SPECIES_BARBOACH, SPECIES_BARBOACH },
{ GBA_SPECIES_WHISCASH, SPECIES_WHISCASH },
{ GBA_SPECIES_LUVDISC, SPECIES_LUVDISC },
{ GBA_SPECIES_CORPHISH, SPECIES_CORPHISH },
{ GBA_SPECIES_CRAWDAUNT, SPECIES_CRAWDAUNT },
{ GBA_SPECIES_FEEBAS, SPECIES_FEEBAS },
{ GBA_SPECIES_MILOTIC, SPECIES_MILOTIC },
{ GBA_SPECIES_CARVANHA, SPECIES_CARVANHA },
{ GBA_SPECIES_SHARPEDO, SPECIES_SHARPEDO },
{ GBA_SPECIES_TRAPINCH, SPECIES_TRAPINCH },
{ GBA_SPECIES_VIBRAVA, SPECIES_VIBRAVA },
{ GBA_SPECIES_FLYGON, SPECIES_FLYGON },
{ GBA_SPECIES_MAKUHITA, SPECIES_MAKUHITA },
{ GBA_SPECIES_HARIYAMA, SPECIES_HARIYAMA },
{ GBA_SPECIES_ELECTRIKE, SPECIES_ELECTRIKE },
{ GBA_SPECIES_MANECTRIC, SPECIES_MANECTRIC },
{ GBA_SPECIES_NUMEL, SPECIES_NUMEL },
{ GBA_SPECIES_CAMERUPT, SPECIES_CAMERUPT },
{ GBA_SPECIES_SPHEAL, SPECIES_SPHEAL },
{ GBA_SPECIES_SEALEO, SPECIES_SEALEO },
{ GBA_SPECIES_WALREIN, SPECIES_WALREIN },
{ GBA_SPECIES_CACNEA, SPECIES_CACNEA },
{ GBA_SPECIES_CACTURNE, SPECIES_CACTURNE },
{ GBA_SPECIES_SNORUNT, SPECIES_SNORUNT },
{ GBA_SPECIES_GLALIE, SPECIES_GLALIE },
{ GBA_SPECIES_LUNATONE, SPECIES_LUNATONE },
{ GBA_SPECIES_SOLROCK, SPECIES_SOLROCK },
{ GBA_SPECIES_AZURILL, SPECIES_AZURILL },
{ GBA_SPECIES_SPOINK, SPECIES_SPOINK },
{ GBA_SPECIES_GRUMPIG, SPECIES_GRUMPIG },
{ GBA_SPECIES_PLUSLE, SPECIES_PLUSLE },
{ GBA_SPECIES_MINUN, SPECIES_MINUN },
{ GBA_SPECIES_MAWILE, SPECIES_MAWILE },
{ GBA_SPECIES_MEDITITE, SPECIES_MEDITITE },
{ GBA_SPECIES_MEDICHAM, SPECIES_MEDICHAM },
{ GBA_SPECIES_SWABLU, SPECIES_SWABLU },
{ GBA_SPECIES_ALTARIA, SPECIES_ALTARIA },
{ GBA_SPECIES_WYNAUT, SPECIES_WYNAUT },
{ GBA_SPECIES_DUSKULL, SPECIES_DUSKULL },
{ GBA_SPECIES_DUSCLOPS, SPECIES_DUSCLOPS },
{ GBA_SPECIES_ROSELIA, SPECIES_ROSELIA },
{ GBA_SPECIES_SLAKOTH, SPECIES_SLAKOTH },
{ GBA_SPECIES_VIGOROTH, SPECIES_VIGOROTH },
{ GBA_SPECIES_SLAKING, SPECIES_SLAKING },
{ GBA_SPECIES_GULPIN, SPECIES_GULPIN },
{ GBA_SPECIES_SWALOT, SPECIES_SWALOT },
{ GBA_SPECIES_TROPIUS, SPECIES_TROPIUS },
{ GBA_SPECIES_WHISMUR, SPECIES_WHISMUR },
{ GBA_SPECIES_LOUDRED, SPECIES_LOUDRED },
{ GBA_SPECIES_EXPLOUD, SPECIES_EXPLOUD },
{ GBA_SPECIES_CLAMPERL, SPECIES_CLAMPERL },
{ GBA_SPECIES_HUNTAIL, SPECIES_HUNTAIL },
{ GBA_SPECIES_GOREBYSS, SPECIES_GOREBYSS },
{ GBA_SPECIES_ABSOL, SPECIES_ABSOL },
{ GBA_SPECIES_SHUPPET, SPECIES_SHUPPET },
{ GBA_SPECIES_BANETTE, SPECIES_BANETTE },
{ GBA_SPECIES_SEVIPER, SPECIES_SEVIPER },
{ GBA_SPECIES_ZANGOOSE, SPECIES_ZANGOOSE },
{ GBA_SPECIES_RELICANTH, SPECIES_RELICANTH },
{ GBA_SPECIES_ARON, SPECIES_ARON },
{ GBA_SPECIES_LAIRON, SPECIES_LAIRON },
{ GBA_SPECIES_AGGRON, SPECIES_AGGRON },
{ GBA_SPECIES_CASTFORM, SPECIES_CASTFORM },
{ GBA_SPECIES_VOLBEAT, SPECIES_VOLBEAT },
{ GBA_SPECIES_ILLUMISE, SPECIES_ILLUMISE },
{ GBA_SPECIES_LILEEP, SPECIES_LILEEP },
{ GBA_SPECIES_CRADILY, SPECIES_CRADILY },
{ GBA_SPECIES_ANORITH, SPECIES_ANORITH },
{ GBA_SPECIES_ARMALDO, SPECIES_ARMALDO },
{ GBA_SPECIES_RALTS, SPECIES_RALTS },
{ GBA_SPECIES_KIRLIA, SPECIES_KIRLIA },
{ GBA_SPECIES_GARDEVOIR, SPECIES_GARDEVOIR },
{ GBA_SPECIES_BAGON, SPECIES_BAGON },
{ GBA_SPECIES_SHELGON, SPECIES_SHELGON },
{ GBA_SPECIES_SALAMENCE, SPECIES_SALAMENCE },
{ GBA_SPECIES_BELDUM, SPECIES_BELDUM },
{ GBA_SPECIES_METANG, SPECIES_METANG },
{ GBA_SPECIES_METAGROSS, SPECIES_METAGROSS },
{ GBA_SPECIES_REGIROCK, SPECIES_REGIROCK },
{ GBA_SPECIES_REGICE, SPECIES_REGICE },
{ GBA_SPECIES_REGISTEEL, SPECIES_REGISTEEL },
{ GBA_SPECIES_KYOGRE, SPECIES_KYOGRE },
{ GBA_SPECIES_GROUDON, SPECIES_GROUDON },
{ GBA_SPECIES_RAYQUAZA, SPECIES_RAYQUAZA },
{ GBA_SPECIES_LATIAS, SPECIES_LATIAS },
{ GBA_SPECIES_LATIOS, SPECIES_LATIOS },
{ GBA_SPECIES_JIRACHI, SPECIES_JIRACHI },
{ GBA_SPECIES_DEOXYS, SPECIES_DEOXYS },
{ GBA_SPECIES_CHIMECHO, SPECIES_CHIMECHO },
{ GBA_SPECIES_EGG, 0x19C },
{ 0x19D, 0x19D },
{ 0x19E, 0x19E },
{ 0x19F, 0x19F },
{ 0x1A0, 0x1A0 },
{ 0x1A1, 0x1A1 },
{ 0x1A2, 0x1A2 },
{ 0x1A3, 0x1A3 },
{ 0x1A4, 0x1A4 }
};
typedef struct {
@@ -1292,21 +1292,21 @@ void SetGBABoxMonData(BoxPokemonGBA *boxMon, int field, const u8 *dataArg)
}
}
int ov97_02236DD0(int param0)
int ConvertGBASpeciesToDS(int species)
{
int v0;
int i;
if (param0 < 277) {
return param0;
if (species < GBA_SPECIES_TREECKO) {
return species;
}
for (v0 = 0; v0 < sizeof(Unk_ov97_0223ED5C) / sizeof(UnkStruct_ov97_0223ED5C); v0++) {
if (Unk_ov97_0223ED5C[v0].unk_00 == param0) {
return Unk_ov97_0223ED5C[v0].unk_02;
for (i = 0; i < sizeof(sGBAToDSSpecies) / sizeof(GBAToDSSpeciesStruct); i++) {
if (sGBAToDSSpecies[i].gbaSpecies == species) {
return sGBAToDSSpecies[i].ndsSpecies;
}
}
return param0;
return species;
}
u32 ov97_02236E00(BoxPokemonGBA *param0)
@@ -1314,7 +1314,7 @@ u32 ov97_02236E00(BoxPokemonGBA *param0)
int v0;
u32 v1;
v0 = ov97_02236DD0(GetGBABoxMonData(param0, 11, 0));
v0 = ConvertGBASpeciesToDS(GetGBABoxMonData(param0, 11, 0));
v1 = GetGBABoxMonData(param0, 25, 0);
return Pokemon_GetSpeciesLevelAt(v0, v1);
@@ -1366,7 +1366,7 @@ void BoxMonGBAToBoxMon(BoxPokemonGBA *param0, BoxPokemon *param1)
BoxPokemon_SetValue(param1, MON_DATA_PERSONALITY, (u8 *)&v1);
v1 = GetGBABoxMonData(param0, 11, NULL);
v1 = ov97_02236DD0(v1);
v1 = ConvertGBASpeciesToDS(v1);
BoxPokemon_SetValue(param1, MON_DATA_SPECIES, (u8 *)&v1);