Version changes

This commit is contained in:
Eduardo Quezada
2025-03-06 22:18:26 -03:00
parent 2e53db0460
commit 7e36d72ab5
19 changed files with 233 additions and 230 deletions

View File

@@ -42,7 +42,7 @@ arm9_c_flags = [
"-DSDK_TS",
"-DPOKEPLATINUM_GENERATED_ENUM",
"-DPM_KEEP_ASSERTS",
"-DGAME_VERSION=PLATINUM",
"-DGAME_VERSION=VERSION_PLATINUM",
"-DGAME_LANGUAGE=ENGLISH",
]

View File

@@ -1,17 +1,18 @@
#ifndef POKEPLATINUM_PM_VERSION_H
#define POKEPLATINUM_PM_VERSION_H
#define SAPPHIRE 1
#define RUBY 2
#define EMERALD 3
#define FIRERED 4
#define LEAFGREEN 5
#define HEARTGOLD 7
#define SOULSILVER 8
#define DIAMOND 10
#define PEARL 11
#define PLATINUM 12
#define COLOSSEUM 15
#define VERSION_NONE 0
#define VERSION_SAPPHIRE 1
#define VERSION_RUBY 2
#define VERSION_EMERALD 3
#define VERSION_FIRERED 4
#define VERSION_LEAFGREEN 5
#define VERSION_HEARTGOLD 7
#define VERSION_SOULSILVER 8
#define VERSION_DIAMOND 10
#define VERSION_PEARL 11
#define VERSION_PLATINUM 12
#define VERSION_GAMECUBE 15 // Both Colosseum and XD use the same ID
#define JAPANESE 1
#define ENGLISH 2

View File

@@ -6,7 +6,7 @@
int ov97_02235D2C(void *param0);
void ov97_02235DA4(void);
int ov97_02235DB0(void);
int ov97_02235DBC(void);
int GBACart_GetLanguage(void);
int ov97_022360D8(void);
BOOL ov97_02236280(void);
int ov97_022362C8(void);

View File

@@ -52,7 +52,7 @@ add_global_arguments(c_args,
pokeplatinum_args = [
'-DPM_KEEP_ASSERTS',
'-DGAME_VERSION=PLATINUM',
'-DGAME_VERSION=VERSION_PLATINUM',
'-DGAME_LANGUAGE=ENGLISH'
]

View File

@@ -71,7 +71,7 @@ void NitroMain(void)
InitVRAM();
InitKeypadAndTouchpad();
SetGBACartridgeVersion(NULL);
SetGBACartridgeVersion(VERSION_NONE);
PM_GetBackLight(&sSavedBacklightState, NULL);
sub_0202419C();
InitRTC();

View File

@@ -31,7 +31,7 @@ const u16 MapHeader_GetMapMatrixID(u32 headerID)
headerID = MapHeader_IDBoundsCheck(headerID);
u16 mapMatrixID = sMapHeaders[headerID].mapMatrixID;
if (mapMatrixID == 22 && gGameVersion == PEARL) {
if (mapMatrixID == 22 && gGameVersion == VERSION_PEARL) {
mapMatrixID = 23;
}

View File

@@ -217,7 +217,7 @@ void MapHeaderData_LoadWildEncounters(WildEncounters *data, int headerID)
{
memset(data, 0, sizeof(WildEncounters));
if (MapHeader_HasWildEncounters(headerID)) {
int narcIndex = (GAME_VERSION == DIAMOND || GAME_VERSION == PLATINUM)
int narcIndex = (GAME_VERSION == VERSION_DIAMOND || GAME_VERSION == VERSION_PLATINUM)
? NARC_INDEX_FIELDDATA__ENCOUNTDATA__PL_ENC_DATA
: NARC_INDEX_FIELDDATA__ENCOUNTDATA__P_ENC_DATA;
NARC_ReadWholeMemberByIndexPair(data, narcIndex, MapHeader_GetWildEncountersArchiveID(headerID));

View File

@@ -456,7 +456,7 @@ int HoneyTree_GetSpecies(FieldSystem *fieldSystem)
treeDat = SpecialEncounter_GetPlayerHoneyTreeStates(SaveData_GetSpecialEncounters(fieldSystem->saveData));
tree = SpecialEncounter_GetHoneyTree(treeId, treeDat);
if ((GAME_VERSION == DIAMOND) || (GAME_VERSION == PLATINUM)) {
if ((GAME_VERSION == VERSION_DIAMOND) || (GAME_VERSION == VERSION_PLATINUM)) {
narcData = NARC_AllocAtEndAndReadWholeMemberByIndexPair(NARC_INDEX_ARC__ENCDATA_EX, sEncounterTableIndexes_DPt[tree->encounterTableIndex], HEAP_ID_FIELD);
} else {
narcData = NARC_AllocAtEndAndReadWholeMemberByIndexPair(NARC_INDEX_ARC__ENCDATA_EX, sEncounterTableIndexes_P_Unused[tree->encounterTableIndex], HEAP_ID_FIELD);

View File

@@ -14,23 +14,23 @@ void WildEncounters_ReplaceDualSlotEncounters(const WildEncounters *encounterDat
}
switch (gSystem.gbaCartridgeVersion) {
case SAPPHIRE:
case VERSION_SAPPHIRE:
(*param2) = encounterData->dualSlotSapphireEncounters[0];
(*param3) = encounterData->dualSlotSapphireEncounters[1];
break;
case RUBY:
case VERSION_RUBY:
(*param2) = encounterData->dualSlotRubyEncounters[0];
(*param3) = encounterData->dualSlotRubyEncounters[1];
break;
case EMERALD:
case VERSION_EMERALD:
(*param2) = encounterData->dualSlotEmeraldEncouters[0];
(*param3) = encounterData->dualSlotEmeraldEncouters[1];
break;
case FIRERED:
case VERSION_FIRERED:
(*param2) = encounterData->dualSlotFireredEncounters[0];
(*param3) = encounterData->dualSlotFireredEncounters[1];
break;
case LEAFGREEN:
case VERSION_LEAFGREEN:
(*param2) = encounterData->dualSlotLeafgreenEncounters[0];
(*param3) = encounterData->dualSlotLeafgreenEncounters[1];
break;

View File

@@ -877,7 +877,7 @@ static void ov6_0223E830(UnkStruct_ov5_021D1BEC *param0, FieldSystem *fieldSyste
VecFx32 v1;
CameraAngle v2;
#if (GAME_VERSION == DIAMOND || GAME_VERSION == PLATINUM)
#if (GAME_VERSION == VERSION_DIAMOND || GAME_VERSION == VERSION_PLATINUM)
Camera_SetFOV(0x1701, fieldSystem->camera);
Camera_SetDistance(0xc8a55, fieldSystem->camera);
v1.x = 0x2280ef;
@@ -890,7 +890,7 @@ static void ov6_0223E830(UnkStruct_ov5_021D1BEC *param0, FieldSystem *fieldSyste
Camera_SetAngleAroundTarget(&v2, fieldSystem->camera);
Camera_SetClipping(2 * FX32_ONE, 2000 * FX32_ONE, fieldSystem->camera);
#elif (GAME_VERSION == PEARL)
#elif (GAME_VERSION == VERSION_PEARL)
Camera_SetFOV(0x10c1, fieldSystem->camera);
Camera_SetDistance(0xD5052, fieldSystem->camera);
v1.x = 0x1bffbd;

View File

@@ -765,7 +765,7 @@ static BOOL ov73_021D1648(UnkStruct_ov73_021D1058 *param0, int param1, int param
case 2:
v2 = &Unk_ov72_021D37CC;
if ((gGameVersion == DIAMOND) || (GAME_VERSION == PLATINUM)) {
if ((gGameVersion == VERSION_DIAMOND) || (GAME_VERSION == VERSION_PLATINUM)) {
v3 = Unk_ov72_021D3954;
v5 = NELEMS(Unk_ov72_021D3954);
} else {
@@ -907,10 +907,10 @@ static void ov73_021D1930(UnkStruct_ov73_021D1058 *param0)
{
int v0, v1;
if (gGameVersion == 12) {
if (gGameVersion == VERSION_PLATINUM) {
v0 = 3;
v1 = 27;
} else if (gGameVersion == 10) {
} else if (gGameVersion == VERSION_DIAMOND) {
v0 = 1;
v1 = 25;
} else {
@@ -2102,7 +2102,7 @@ static BOOL ov73_021D2318(UnkStruct_ov73_021D1058 *param0)
case 5: {
u32 v9;
if ((gGameVersion == DIAMOND) || (GAME_VERSION == PLATINUM)) {
if ((gGameVersion == VERSION_DIAMOND) || (GAME_VERSION == VERSION_PLATINUM)) {
v9 = Unk_ov72_021D3954[param0->unk_48 - 1].unk_00;
} else {
v9 = Unk_ov73_021D1648[param0->unk_48 - 1].unk_00;

View File

@@ -192,29 +192,29 @@ static int sGBAHMMoves[] = {
static int sMigrateFromGBAGameMessageIDs[] = {
NULL,
[SAPPHIRE] = migrate_from_gba_from_sapphire,
[RUBY] = migrate_from_gba_from_ruby,
[EMERALD] = migrate_from_gba_from_emerald,
[FIRERED] = migrate_from_gba_from_firered,
[LEAFGREEN] = migrate_from_gba_from_leafgreen,
[VERSION_SAPPHIRE] = migrate_from_gba_from_sapphire,
[VERSION_RUBY] = migrate_from_gba_from_ruby,
[VERSION_EMERALD] = migrate_from_gba_from_emerald,
[VERSION_FIRERED] = migrate_from_gba_from_firered,
[VERSION_LEAFGREEN] = migrate_from_gba_from_leafgreen,
};
static int sSavingOnGBAGameAndPlatinumMessageIDs[] = {
NULL,
[SAPPHIRE] = migrate_from_gba_saving_on_sapphire_and_platinum,
[RUBY] = migrate_from_gba_saving_on_ruby_and_platinum,
[EMERALD] = migrate_from_gba_saving_on_emerald_and_platinum,
[FIRERED] = migrate_from_gba_saving_on_firered_and_platinum,
[LEAFGREEN] = migrate_from_gba_saving_on_leafgreen_and_platinum,
[VERSION_SAPPHIRE] = migrate_from_gba_saving_on_sapphire_and_platinum,
[VERSION_RUBY] = migrate_from_gba_saving_on_ruby_and_platinum,
[VERSION_EMERALD] = migrate_from_gba_saving_on_emerald_and_platinum,
[VERSION_FIRERED] = migrate_from_gba_saving_on_firered_and_platinum,
[VERSION_LEAFGREEN] = migrate_from_gba_saving_on_leafgreen_and_platinum,
};
static u8 sGBAGameRectPalettes[] = {
0x0,
[SAPPHIRE] = 0x2,
[RUBY] = 0x1,
[EMERALD] = 0x3,
[FIRERED] = 0x4,
[LEAFGREEN] = 0x5,
[VERSION_SAPPHIRE] = 0x2,
[VERSION_RUBY] = 0x1,
[VERSION_EMERALD] = 0x3,
[VERSION_FIRERED] = 0x4,
[VERSION_LEAFGREEN] = 0x5,
};
static int Unk_ov97_0223EAB8[] = {
@@ -247,19 +247,19 @@ static void ov97_02233B44(GBAMigrator *migrator)
{
switch (ov97_02235DB0()) {
case 0:
migrator->gbaVersion = RUBY;
migrator->gbaVersion = VERSION_RUBY;
break;
case 1:
migrator->gbaVersion = SAPPHIRE;
migrator->gbaVersion = VERSION_SAPPHIRE;
break;
case 2:
migrator->gbaVersion = LEAFGREEN;
migrator->gbaVersion = VERSION_LEAFGREEN;
break;
case 3:
migrator->gbaVersion = FIRERED;
migrator->gbaVersion = VERSION_FIRERED;
break;
case 4:
migrator->gbaVersion = EMERALD;
migrator->gbaVersion = VERSION_EMERALD;
break;
default:
migrator->gbaVersion = -1;
@@ -627,17 +627,17 @@ static u8 GetSpeciesGBAForm(int speciesNDS, u32 personality, int gbaVersion)
case SPECIES_DEOXYS:
switch (gbaVersion) {
default:
case RUBY:
case SAPPHIRE:
case VERSION_RUBY:
case VERSION_SAPPHIRE:
form = 0;
break;
case FIRERED:
case VERSION_FIRERED:
form = 1;
break;
case LEAFGREEN:
case VERSION_LEAFGREEN:
form = 2;
break;
case EMERALD:
case VERSION_EMERALD:
form = 3;
break;
}
@@ -1143,7 +1143,7 @@ static void ov97_02234A2C(GBAMigrator *migrator, int param1)
v0.unk_2C = TEXT_COLOR(1, 2, 0);
v0.unk_20 = 0xA0;
GBAStringToDSString(migrator->pokemonStorage->boxNames[param1], boxName, GBA_BOX_NAME_LEN + 1, ov97_02235DBC());
GBAStringToDSString(migrator->pokemonStorage->boxNames[param1], boxName, GBA_BOX_NAME_LEN + 1, GBACart_GetLanguage());
v0.unk_38 = boxName;
ov97_02233DD0(migrator, &v0, 0x1);
}
@@ -1453,7 +1453,7 @@ static void ov97_02234ECC(GBAMigrator *migrator)
static void ov97_02234F88(GBAMigrator *migrator)
{
int i, v1, v2, v3;
int i, species, isEgg, gbaVersion;
u32 personality;
AffineSpriteListTemplate v5;
@@ -1483,12 +1483,12 @@ static void ov97_02234F88(GBAMigrator *migrator)
Sprite_SetExplicitPriority(migrator->unk_478[i], 1);
Sprite_SetDrawFlag(migrator->unk_478[i], TRUE);
v1 = GetGBABoxMonSpeciesInBox(migrator, migrator->unk_42C[i].boxId, migrator->unk_42C[i].boxPosition);
v2 = IsGBABoxMonEggInBox(migrator, migrator->unk_42C[i].boxId, migrator->unk_42C[i].boxPosition);
species = GetGBABoxMonSpeciesInBox(migrator, migrator->unk_42C[i].boxId, migrator->unk_42C[i].boxPosition);
isEgg = IsGBABoxMonEggInBox(migrator, migrator->unk_42C[i].boxId, migrator->unk_42C[i].boxPosition);
personality = GetGBABoxMonPersonalityInBox(migrator, migrator->unk_42C[i].boxId, migrator->unk_42C[i].boxPosition);
v3 = gSystem.gbaCartridgeVersion;
gbaVersion = gSystem.gbaCartridgeVersion;
ov97_02234278(v1, v2, personality, v3, i, migrator->unk_478[i]);
ov97_02234278(species, isEgg, personality, gbaVersion, i, migrator->unk_478[i]);
}
Graphics_LoadTilemapToBgLayer(NARC_INDEX_GRAPHIC__MYSTERY, 21, migrator->bgConfig, 2, 0, 32 * 24 * 2, 1, HEAP_ID_MIGRATE_FROM_GBA);
@@ -1616,27 +1616,27 @@ static void ov97_02235310(GBAMigrator *migrator)
static void ov97_02235344(GBAMigrator *migrator)
{
UnkStruct_ov97_02233DAC v0;
StringTemplate *v1;
Strbuf *v2;
u16 v3[7 + 1];
StringTemplate *strTemplate;
Strbuf *strBuf;
u16 playerName[GBA_PLAYER_NAME_LEN + 1];
GBAStringToDSString(GetGBAPlayerName(), v3, GBA_PLAYER_NAME_LEN + 1, ov97_02235DBC());
GBAStringToDSString(GetGBAPlayerName(), playerName, GBA_PLAYER_NAME_LEN + 1, GBACart_GetLanguage());
v1 = StringTemplate_Default(HEAP_ID_MIGRATE_FROM_GBA);
v2 = Strbuf_Init(GBA_PLAYER_NAME_LEN + 1, HEAP_ID_MIGRATE_FROM_GBA);
strTemplate = StringTemplate_Default(HEAP_ID_MIGRATE_FROM_GBA);
strBuf = Strbuf_Init(GBA_PLAYER_NAME_LEN + 1, HEAP_ID_MIGRATE_FROM_GBA);
Strbuf_CopyChars(v2, v3);
StringTemplate_SetStrbuf(v1, 1, v2, 0, 1, GAME_LANGUAGE);
Strbuf_CopyChars(strBuf, playerName);
StringTemplate_SetStrbuf(strTemplate, 1, strBuf, 0, 1, GAME_LANGUAGE);
ov97_02234ECC(migrator);
migrator->unk_490.messageEntryID = sMigrateFromGBAGameMessageIDs[migrator->gbaVersion];
migrator->unk_490.unk_40 = v1;
migrator->unk_490.unk_40 = strTemplate;
ov97_02233DD0(migrator, &migrator->unk_490, 0x8 | 0x10);
Strbuf_Free(v2);
StringTemplate_Free(v1);
Strbuf_Free(strBuf);
StringTemplate_Free(strTemplate);
ov97_02235310(migrator);
}

View File

@@ -203,7 +203,7 @@ static BOOL ov97_0222AE64(UnkStruct_0222AE60 *param0)
static void ov97_0222AF1C(UnkStruct_0222AE60 *param0)
{
int v0;
int gbaVersion;
int v1 = ov97_02235D2C(NULL);
param0->unk_24 = 0;
@@ -212,33 +212,33 @@ static void ov97_0222AF1C(UnkStruct_0222AE60 *param0)
return;
}
v0 = 0;
gbaVersion = VERSION_NONE;
switch (ov97_02235DB0()) {
case 0:
v0 = 2;
gbaVersion = VERSION_RUBY;
break;
case 1:
v0 = 1;
gbaVersion = VERSION_SAPPHIRE;
break;
case 2:
v0 = 5;
gbaVersion = VERSION_LEAFGREEN;
break;
case 3:
v0 = 4;
gbaVersion = VERSION_FIRERED;
break;
case 4:
v0 = 3;
gbaVersion = VERSION_EMERALD;
break;
}
SetGBACartridgeVersion(v0);
SetGBACartridgeVersion(gbaVersion);
if (Pokedex_IsNationalDexObtained(param0->unk_08) == FALSE) {
return;
}
if (ov97_02235DBC() != gGameLanguage) {
if (GBACart_GetLanguage() != gGameLanguage) {
return;
}

View File

@@ -2444,7 +2444,7 @@ static int ov97_022301BC(OverlayManager *param0, int *param1)
Heap_Destroy(HEAP_ID_86);
if (v0->unk_1638 == 2) {
SetGBACartridgeVersion(NULL);
SetGBACartridgeVersion(VERSION_NONE);
}
ov97_02238400(0);

View File

@@ -29,7 +29,7 @@ static UnkStruct_ov97_0223F450 Unk_ov97_0223F450;
static UnkStruct_ov97_0223F450 Unk_ov97_0223F450;
static const GBAPokemonCartInfo sGBAPokemonCartInfo[30];
static u8 Unk_ov97_0223EC04[0xa0 - 4];
static const GBAPokemonCartInfo *Unk_ov97_0223EBFC = NULL;
static const GBAPokemonCartInfo *sLoadedGBACartInfo = NULL;
static int Unk_ov97_0223F438;
static u32 Unk_ov97_0223F448;
GBASaveSlot *sGBASaveSlot;
@@ -49,7 +49,7 @@ int ov97_02235D2C(void *param0)
{
sGBASaveSlot = (GBASaveSlot *)param0;
if (Unk_ov97_0223EBFC != NULL) {
if (sLoadedGBACartInfo != NULL) {
return 12;
}
@@ -61,7 +61,7 @@ int ov97_02235D2C(void *param0)
}
}
if (Unk_ov97_0223EBFC->unk_04 == 0) {
if (sLoadedGBACartInfo->unk_04 == 0) {
Unk_ov97_0223F450.unk_88 = 2192;
Unk_ov97_0223F450.unk_8C = 15040;
Unk_ov97_0223F450.unk_50 = 4640;
@@ -81,41 +81,41 @@ int ov97_02235D2C(void *param0)
void ov97_02235DA4(void)
{
Unk_ov97_0223EBFC = NULL;
sLoadedGBACartInfo = NULL;
}
int ov97_02235DB0()
{
return Unk_ov97_0223EBFC->unk_05;
return sLoadedGBACartInfo->unk_05;
}
int ov97_02235DBC()
int GBACart_GetLanguage()
{
return Unk_ov97_0223EBFC->language;
return sLoadedGBACartInfo->language;
}
static int ov97_02235DC8(const GBAPokemonCartInfo *cartInfo, int param1)
{
u32 v0;
u32 agbGameCode;
Unk_ov97_0223EBFC = NULL;
sLoadedGBACartInfo = NULL;
if (!CTRDG_IsAgbCartridge()) {
return 1;
}
v0 = CTRDG_GetAgbGameCode();
agbGameCode = CTRDG_GetAgbGameCode();
{
int i;
for (i = 0; i < param1; i++) {
if (cartInfo[i].agbGameCode == v0) {
Unk_ov97_0223EBFC = cartInfo + i;
if (cartInfo[i].agbGameCode == agbGameCode) {
sLoadedGBACartInfo = cartInfo + i;
break;
}
}
if (Unk_ov97_0223EBFC == NULL) {
if (sLoadedGBACartInfo == NULL) {
return 2;
}
}

View File

@@ -993,17 +993,17 @@ void BoxMonGBAToBoxMon(BoxPokemonGBA *boxMonGBA, BoxPokemon *boxMon)
if (BoxPokemon_GetValue(boxMon, MON_DATA_SPECIES, NULL) == SPECIES_DEOXYS) {
switch (gSystem.gbaCartridgeVersion) {
default:
case RUBY:
case SAPPHIRE:
case VERSION_RUBY:
case VERSION_SAPPHIRE:
value = 0;
break;
case FIRERED:
case VERSION_FIRERED:
value = 1;
break;
case LEAFGREEN:
case VERSION_LEAFGREEN:
value = 2;
break;
case EMERALD:
case VERSION_EMERALD:
value = 3;
break;
}

View File

@@ -3,9 +3,11 @@
#include <nitro.h>
#include <string.h>
// Char conversion table?
static const u16 Unk_ov97_0223DAE8[][2] = {
{ 0x1, 0x1 },
#include "constants/charcode.h"
// Japanese, International
static const u16 sGBACharToDSChars[][2] = {
{ CHAR_WIDE_SPACE, CHAR_WIDE_SPACE },
{ 0x3, 0x3 },
{ 0x5, 0x5 },
{ 0x7, 0x7 },
@@ -166,173 +168,173 @@ static const u16 Unk_ov97_0223DAE8[][2] = {
{ 0x8B, 0x8B },
{ 0x8E, 0x8E },
{ 0x74, 0x74 },
{ 0xA2, 0x121 },
{ 0xA3, 0x122 },
{ 0xA4, 0x123 },
{ 0xA5, 0x124 },
{ 0xA6, 0x125 },
{ 0xA7, 0x126 },
{ 0xA8, 0x127 },
{ 0xA9, 0x128 },
{ 0xAA, 0x129 },
{ 0xAB, 0x12A },
{ 0xE1, 0x1AB },
{ 0xE2, 0x1AC },
{ 0xE4, 0x1AE },
{ 0xf1, 0x1BE },
{ 0xE6, 0x1B0 },
{ 0xE5, 0x1af },
{ 0xEA, 0xEA },
{ 0xEB, 0xEB },
{ 0xE8, 0x1B2 },
{ 0xE9, 0x1B3 },
{ 0xEE, 0x1BB },
{ 0xef, 0x1BC },
{ 0x112, 0x112 },
{ 0xE3, 0x1AD },
{ 0xf2, 0x176 },
{ 0xE7, 0x1B1 },
{ 0xAC, 0x12B },
{ 0xAD, 0x12C },
{ 0xAE, 0x12D },
{ 0xaf, 0x12E },
{ 0xB0, 0x12f },
{ 0xB1, 0x130 },
{ 0xB2, 0x131 },
{ 0xB3, 0x132 },
{ 0xB4, 0x133 },
{ 0xB5, 0x134 },
{ 0xB6, 0x135 },
{ 0xB7, 0x136 },
{ 0xB8, 0x137 },
{ 0xB9, 0x138 },
{ 0xBA, 0x139 },
{ 0xBB, 0x13A },
{ 0xBC, 0x13B },
{ 0xBD, 0x13C },
{ 0xBE, 0x13D },
{ 0xbf, 0x13E },
{ 0xC0, 0x13f },
{ 0xC1, 0x140 },
{ 0xC2, 0x141 },
{ 0xC3, 0x142 },
{ 0xC4, 0x143 },
{ 0xC5, 0x144 },
{ 0xC6, 0x145 },
{ 0xC7, 0x146 },
{ 0xC8, 0x147 },
{ 0xC9, 0x148 },
{ 0xCA, 0x149 },
{ 0xCB, 0x14A },
{ 0xCC, 0x14B },
{ 0xCD, 0x14C },
{ 0xCE, 0x14D },
{ 0xcf, 0x14E },
{ 0xD0, 0x14f },
{ 0xD1, 0x150 },
{ 0xD2, 0x151 },
{ 0xD3, 0x152 },
{ 0xD4, 0x153 },
{ 0xD5, 0x154 },
{ 0xD6, 0x155 },
{ 0xD7, 0x156 },
{ 0xD8, 0x157 },
{ 0xD9, 0x158 },
{ 0xDA, 0x159 },
{ 0xDB, 0x15A },
{ 0xDC, 0x15B },
{ 0xDD, 0x15C },
{ 0xDE, 0x15D },
{ 0xdf, 0x15E },
{ 0x11f, 0x11f },
{ 0xf6, 0x1C4 },
{ 0x163, 0x163 },
{ 0x175, 0x175 },
{ 0x17B, 0x17B },
{ 0x183, 0x183 },
{ 0x195, 0x195 },
{ 0x19B, 0x19B }
{ CHAR_WIDE_0, CHAR_0 },
{ CHAR_WIDE_1, CHAR_1 },
{ CHAR_WIDE_2, CHAR_2 },
{ CHAR_WIDE_3, CHAR_3 },
{ CHAR_WIDE_4, CHAR_4 },
{ CHAR_WIDE_5, CHAR_5 },
{ CHAR_WIDE_6, CHAR_6 },
{ CHAR_WIDE_7, CHAR_7 },
{ CHAR_WIDE_8, CHAR_8 },
{ CHAR_WIDE_9, CHAR_9 },
{ CHAR_WIDE_EXCLAMATION, CHAR_EXCLAMATION },
{ CHAR_WIDE_QUESTION, CHAR_QUESTION },
{ CHAR_JP_PERIOD, CHAR_PERIOD },
{ CHAR_WIDE_MINUS, CHAR_MINUS },
{ CHAR_JP_DOT, CHAR_DOT },
{ CHAR_JP_ELLIPSIS, CHAR_ELLPSIS },
{ CHAR_JP_DOUBLE_QUOTE_OPEN, CHAR_JP_DOUBLE_QUOTE_OPEN },
{ CHAR_JP_DOUBLE_QUOTE_CLOSE, CHAR_JP_DOUBLE_QUOTE_CLOSE },
{ CHAR_JP_SINGLE_QUOTE_OPEN, CHAR_SINGLE_QUOTE_OPEN },
{ CHAR_JP_SINGLE_QUOTE_CLOSE, CHAR_SINGLE_QUOTE_CLOSE },
{ CHAR_WIDE_MALE, CHAR_MALE },
{ CHAR_WIDE_FEMALE, CHAR_FEMALE },
{ CHAR_YEN, CHAR_YEN },
{ CHAR_JP_COMMA, CHAR_COMMA },
{ CHAR_WIDE_MULTIPLY, CHAR_MULTIPLY },
{ CHAR_WIDE_SLASH, CHAR_SLASH },
{ CHAR_WIDE_A, CHAR_A },
{ CHAR_WIDE_B, CHAR_B },
{ CHAR_WIDE_C, CHAR_C },
{ CHAR_WIDE_D, CHAR_D },
{ CHAR_WIDE_E, CHAR_E },
{ CHAR_WIDE_F, CHAR_F },
{ CHAR_WIDE_G, CHAR_G },
{ CHAR_WIDE_H, CHAR_H },
{ CHAR_WIDE_I, CHAR_I },
{ CHAR_WIDE_J, CHAR_J },
{ CHAR_WIDE_K, CHAR_K },
{ CHAR_WIDE_L, CHAR_L },
{ CHAR_WIDE_M, CHAR_M },
{ CHAR_WIDE_N, CHAR_N },
{ CHAR_WIDE_O, CHAR_O },
{ CHAR_WIDE_P, CHAR_P },
{ CHAR_WIDE_Q, CHAR_Q },
{ CHAR_WIDE_R, CHAR_R },
{ CHAR_WIDE_S, CHAR_S },
{ CHAR_WIDE_T, CHAR_T },
{ CHAR_WIDE_U, CHAR_U },
{ CHAR_WIDE_V, CHAR_V },
{ CHAR_WIDE_W, CHAR_W },
{ CHAR_WIDE_X, CHAR_X },
{ CHAR_WIDE_Y, CHAR_Y },
{ CHAR_WIDE_Z, CHAR_Z },
{ CHAR_WIDE_a, CHAR_a },
{ CHAR_WIDE_b, CHAR_b },
{ CHAR_WIDE_c, CHAR_c },
{ CHAR_WIDE_d, CHAR_d },
{ CHAR_WIDE_e, CHAR_e },
{ CHAR_WIDE_f, CHAR_f },
{ CHAR_WIDE_g, CHAR_g },
{ CHAR_WIDE_h, CHAR_h },
{ CHAR_WIDE_i, CHAR_i },
{ CHAR_WIDE_j, CHAR_j },
{ CHAR_WIDE_k, CHAR_k },
{ CHAR_WIDE_l, CHAR_l },
{ CHAR_WIDE_m, CHAR_m },
{ CHAR_WIDE_n, CHAR_n },
{ CHAR_WIDE_o, CHAR_o },
{ CHAR_WIDE_p, CHAR_p },
{ CHAR_WIDE_q, CHAR_q },
{ CHAR_WIDE_r, CHAR_r },
{ CHAR_WIDE_s, CHAR_s },
{ CHAR_WIDE_t, CHAR_t },
{ CHAR_WIDE_u, CHAR_u },
{ CHAR_WIDE_v, CHAR_v },
{ CHAR_WIDE_w, CHAR_w },
{ CHAR_WIDE_x, CHAR_x },
{ CHAR_WIDE_y, CHAR_y },
{ CHAR_WIDE_z, CHAR_z },
{ CHAR_ARROW_MENU, CHAR_ARROW_MENU },
{ CHAR_WIDE_COLON, CHAR_COLON },
{ CHAR_A_DIERESIS, CHAR_A_DIERESIS },
{ CHAR_O_DIERSIS, CHAR_O_DIERSIS },
{ CHAR_U_DIERESIS, CHAR_U_DIERESIS },
{ CHAR_a_DIERESIS, CHAR_a_DIERESIS },
{ CHAR_o_DIERSIS, CHAR_o_DIERSIS },
{ CHAR_u_DIERESIS, CHAR_u_DIERESIS }
};
static u16 ov97_022392E4(u32 language)
static u16 GetSpaceChar(u32 language)
{
return (language == JAPANESE) ? 0x1 : 0x1de;
return (language == JAPANESE) ? CHAR_WIDE_SPACE : CHAR_SPACE;
}
static u16 ov97_022392F8(u32 language)
static u16 GetDoubleQuoteOpenChar(u32 language)
{
switch (language) {
case JAPANESE:
default:
return 0xea;
return CHAR_JP_DOUBLE_QUOTE_OPEN;
case ENGLISH:
case ITALIAN:
case SPANISH:
return 0x1b4;
return CHAR_DOUBLE_QUOTE_OPEN;
case FRENCH:
return 0x1b7;
return CHAR_DOUBLE_PAREN_OPEN;
case GERMAN:
return 0x1b6;
return CHAR_DOUBLE_QUOTE_CLOSE_INVERTED;
}
}
static u16 ov97_02239334(u32 language)
static u16 GetDoubleQuoteCloseChar(u32 language)
{
switch (language) {
case JAPANESE:
default:
return 0xeb;
return CHAR_JP_DOUBLE_QUOTE_CLOSE;
case ENGLISH:
case ITALIAN:
case SPANISH:
return 0x1b5;
return CHAR_DOUBLE_QUOTE_CLOSE;
case FRENCH:
return 0x1b8;
return CHAR_DOUBLE_PAREN_CLOSE;
case GERMAN:
return 0x1b4;
return CHAR_DOUBLE_QUOTE_OPEN;
}
}
BOOL GBAStringToDSString(const u8 *src, u16 *dst, u32 length, u32 language)
{
u32 i, v1;
u32 i, nonJap;
v1 = (language != JAPANESE);
nonJap = (language != JAPANESE);
for (i = 0; i < (length - 1); i++) {
if (src[i] == 0xff) {
break;
}
if (src[i] >= NELEMS(Unk_ov97_0223DAE8)) {
int v2, v3;
if (src[i] >= NELEMS(sGBACharToDSChars)) {
int j, v3;
v3 = ((length - 1) < 10) ? (length - 1) : 10;
for (v2 = 0; v2 < v3; v2++) {
dst[v2] = 0x1ac;
for (j = 0; j < v3; j++) {
dst[j] = CHAR_QUESTION;
}
dst[v2] = 0xffff;
return 0;
dst[j] = CHAR_EOS;
return FALSE;
}
switch (Unk_ov97_0223DAE8[src[i]][v1]) {
case 0x1:
dst[i] = ov97_022392E4(language);
switch (sGBACharToDSChars[src[i]][nonJap]) {
case CHAR_WIDE_SPACE:
dst[i] = GetSpaceChar(language);
break;
case 0xea:
dst[i] = ov97_022392F8(language);
case CHAR_JP_DOUBLE_QUOTE_OPEN:
dst[i] = GetDoubleQuoteOpenChar(language);
break;
case 0xeb:
dst[i] = ov97_02239334(language);
case CHAR_JP_DOUBLE_QUOTE_CLOSE:
dst[i] = GetDoubleQuoteCloseChar(language);
break;
default:
dst[i] = Unk_ov97_0223DAE8[src[i]][v1];
dst[i] = sGBACharToDSChars[src[i]][nonJap];
break;
}
}
dst[i] = 0xffff;
return 1;
dst[i] = CHAR_EOS;
return TRUE;
}

View File

@@ -362,25 +362,25 @@ static void InitializeAlternateMetInfoStrBuf(PokemonInfoDisplayStruct *param0, i
default:
StringTemplate_SetMetLocationName(param0->unk_08, 4, (SpecialMetLoc_GetId(1, 7)));
break;
case FIRERED:
case LEAFGREEN:
case VERSION_FIRERED:
case VERSION_LEAFGREEN:
StringTemplate_SetMetLocationName(param0->unk_08, 4, (SpecialMetLoc_GetId(1, 3)));
break;
case HEARTGOLD:
case SOULSILVER:
case VERSION_HEARTGOLD:
case VERSION_SOULSILVER:
StringTemplate_SetMetLocationName(param0->unk_08, 4, (SpecialMetLoc_GetId(1, 4)));
break;
case RUBY:
case SAPPHIRE:
case EMERALD:
case VERSION_RUBY:
case VERSION_SAPPHIRE:
case VERSION_EMERALD:
StringTemplate_SetMetLocationName(param0->unk_08, 4, (SpecialMetLoc_GetId(1, 5)));
break;
case COLOSSEUM:
case VERSION_GAMECUBE:
StringTemplate_SetMetLocationName(param0->unk_08, 4, (SpecialMetLoc_GetId(1, 8)));
break;
case DIAMOND:
case PEARL:
case PLATINUM:
case VERSION_DIAMOND:
case VERSION_PEARL:
case VERSION_PLATINUM:
StringTemplate_SetMetLocationName(param0->unk_08, 4, (SpecialMetLoc_GetId(1, 7)));
break;
}

View File

@@ -5,7 +5,7 @@ OUT_FILE=ctx.c
GCC=gcc
FLAGS="-E -P -dD -undef"
INCLUDES="-Itools/cw/include -Isubprojects/NitroSDK-4.2.30001/include -Ibuild/subprojects/NitroSDK-4.2.30001/gen -Isubprojects/NitroSystem-071126.1/include -Isubprojects/NitroWiFi-2.1.30003/include -Isubprojects/NitroDWC-2.2.30008/include -Isubprojects/libvct-1.3.1/include -Isubprojects/libcrypto/include -Isubprojects/ppwlobby/include -Iinclude -Iasm -Ires -Ilib/gds/include -Ilib/spl/include -Ibuild -Ibuild/res/text -include pch/global_pch.h"
DEFINES="-DGAME_VERSION=PLATINUM -DGAME_LANGUAGE=ENGLISH -DPM_KEEP_ASSERTS -D_NITRO -DLINK_PPWLOBBY -DNNS_FINALROM -DSDK_4M -DSDK_ARM9 -DSDK_CODE_ARM -DSDK_CW -DSDK_CW_FORCE_EXPORT_SUPPORT -DSDK_FINALROM -DSDK_TS"
DEFINES="-DGAME_VERSION=VERSION_PLATINUM -DGAME_LANGUAGE=ENGLISH -DPM_KEEP_ASSERTS -D_NITRO -DLINK_PPWLOBBY -DNNS_FINALROM -DSDK_4M -DSDK_ARM9 -DSDK_CODE_ARM -DSDK_CW -DSDK_CW_FORCE_EXPORT_SUPPORT -DSDK_FINALROM -DSDK_TS"
generate-ctx () {
# Remove any line containing a predefined macro. If not removed, mwccarm