This commit is contained in:
Eduardo Quezada
2022-08-02 15:44:28 -04:00
parent f2f74b94d2
commit c05c6bfe24
24 changed files with 485 additions and 8 deletions

View File

@@ -53,13 +53,13 @@ jobs:
run: make -j${nproc} all
- name: French Compare
run: make -j${nproc} compare_french
run: make -j${nproc} compare_fr
- name: French Modern
env:
MODERN: 1
COMPARE: 0
run: make -j${nproc} french
run: make -j${nproc} modern_fr
- name: Move symfiles
if: ${{ github.event_name == 'push' }}

View File

@@ -10,7 +10,6 @@ extern const u8 gText_MysteryEventRareWord[];
extern const u8 gText_MysteryEventSentOver[];
extern const u8 gText_MysteryEventFullParty[];
extern const u8 gText_MysteryEventNewTrainer[];
extern const u8 gText_MysteryEventNewAdversaryInBattleTower[];
extern const u8 gText_MysteryEventCantBeUsed[];
#endif // GUARD_MYSTERY_EVENT_MSG_H

View File

@@ -43,15 +43,22 @@ enum
PAGE_COORDINATORS,
PAGE_ENGLISH_VERSION,
PAGE_TRANSLATOR,
#if ENGLISH
PAGE_TEXT_EDITOR,
#endif
PAGE_NCL_COORDINATOR,
PAGE_PROGRAMMERS_5,
PAGE_GRAPHIC_DESIGNER,
PAGE_ENVIRONMENT_AND_TOOL_PROGRAMS_2,
PAGE_NOA_TESTING,
#if ENGLISH
PAGE_BRAILLE_CODE_CHECK_1,
PAGE_BRAILLE_CODE_CHECK_2,
#endif
PAGE_SPECIAL_THANKS_5,
#if FRENCH
PAGE_SPECIAL_THANKS_6,
#endif
PAGE_TASK_MANAGERS,
PAGE_PRODUCERS,
PAGE_EXECUTIVE_DIRECTOR,
@@ -63,7 +70,11 @@ enum
#define ENTRIES_PER_PAGE 5
static const u8 sCreditsText_EmptyString[] = _("");
#if ENGLISH
static const u8 sCreditsText_PkmnEmeraldVersion[] = _("POKéMON EMERALD VERSION");
#elif FRENCH
static const u8 sCreditsText_PkmnEmeraldVersion[] = _("POKéMON VERSION EMERAUDE");
#endif
static const u8 sCreditsText_Credits[] = _("Credits");
static const u8 sCreditsText_ExecutiveDirector[] = _("Executive Director");
static const u8 sCreditsText_Director[] = _("Director");
@@ -193,12 +204,21 @@ static const u8 sCreditsText_RetsujiNomoto[] = _("Retsuji Nomot
static const u8 sCreditsText_AzusaTajima[] = _("Azusa Tajima");
static const u8 sCreditsText_ShusakuEgami[] = _("Shusaku Egami");
static const u8 sCreditsText_PackageAndManual[] = _("Package & Manual Illustration");
#if ENGLISH
static const u8 sCreditsText_EnglishVersion[] = _("English Version Coordinators");
static const u8 sCreditsText_Translator[] = _("Translator");
static const u8 sCreditsText_TextEditor[] = _("Text Editor");
static const u8 sCreditsText_NCLCoordinator[] = _("NCL Coordinator");
static const u8 sCreditsText_GraphicDesigner[] = _("Graphic Designer");
static const u8 sCreditsText_NOAProductTesting[] = _("NOA Product Testing");
#elif FRENCH
static const u8 sCreditsText_EnglishVersion[] = _("French Version Coordinators");
static const u8 sCreditsText_Translator[] = _("Translators");
static const u8 sCreditsText_TextEditor[] = _("Text Editor");
static const u8 sCreditsText_NCLCoordinator[] = _("NCL Coordinators");
static const u8 sCreditsText_GraphicDesigner[] = _("Graphic Designer");
static const u8 sCreditsText_NOAProductTesting[] = _("NOE Product Testing");
#endif
static const u8 sCreditsText_HideyukiNakajima[] = _("Hideyuki Nakajima");
static const u8 sCreditsText_HidenoriSaeki[] = _("Hidenori Saeki");
static const u8 sCreditsText_YokoWatanabe[] = _("Yoko Watanabe");
@@ -216,11 +236,30 @@ static const u8 sCreditsText_NationalFederationBlind[] = _("National Fede
static const u8 sCreditsText_PatriciaAMaurer[] = _("Patricia A. Maurer");
static const u8 sCreditsText_EuropeanBlindUnion[] = _("European Blind Union");
static const u8 sCreditsText_AustralianBrailleAuthority[] = _("Australian Braille Authority");
#if ENGLISH
static const u8 sCreditsText_RoyalNewZealandFederationBlind[] = _("Royal New Zealand Federation for the Blind");
static const u8 sCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima");
static const u8 sCreditsText_NicolaPrattBarlow[] = _("Nicola Pratt-Barlow");
static const u8 sCreditsText_ShellieDow[] = _("Shellie Dow");
static const u8 sCreditsText_ErikJohnson[] = _("Erik Johnson");
#elif FRENCH
static const u8 sCreditsText_EuropeanBlindUnion2[] = _("European Blind Union");
static const u8 sCreditsText_MotoyasuTojima[] = _("Motoyasu Tojima");
static const u8 sCreditsText_NicolaPrattBarlow[] = _("Nicola Wright"); // Possibly got married :)
static const u8 sCreditsText_ShellieDow[] = _("Shellie Dow");
static const u8 sCreditsText_ErikJohnson[] = _("Erik Johnson");
// New
static const u8 sCreditsText_NorikoNetley[] = _("Noriko Netley");
static const u8 sCreditsText_PierreSanchez[] = _("Pierre Sanchez");
static const u8 sCreditsText_SabrinaBretant[] = _("Sabrina Bretant");
static const u8 sCreditsText_ThomasFougeray[] = _("Thomas Fougeray");
static const u8 sCreditsText_AlessioDanieli[] = _("Alessio Danieli");
static const u8 sCreditsText_NOETestingTeam[] = _("NOE Testing Team");
static const u8 sCreditsText_StefanRomberg[] = _("Stefan Romberg");
static const u8 sCreditsText_MihoKozawa[] = _("Miho Kozawa");
static const u8 sCreditsText_ToshifumiSayama[] = _("Toshifumi Sayama");
static const u8 sCreditsText_Hiroshi_Akune[] = _("Hiroshi Akune");
#endif
static const struct CreditsEntry sCreditsEntry_EmptyString[] = { 0, FALSE, sCreditsText_EmptyString};
static const struct CreditsEntry sCreditsEntry_PkmnEmeraldVersion[] = { 7, TRUE, sCreditsText_PkmnEmeraldVersion};
static const struct CreditsEntry sCreditsEntry_Credits[] = {11, TRUE, sCreditsText_Credits};
@@ -375,11 +414,30 @@ static const struct CreditsEntry sCreditsEntry_NationalFederationBlind[]
static const struct CreditsEntry sCreditsEntry_PatriciaAMaurer[] = { 0, FALSE, sCreditsText_PatriciaAMaurer};
static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion[] = { 0, FALSE, sCreditsText_EuropeanBlindUnion};
static const struct CreditsEntry sCreditsEntry_AustralianBrailleAuthority[] = { 0, FALSE, sCreditsText_AustralianBrailleAuthority};
#if ENGLISH
static const struct CreditsEntry sCreditsEntry_RoyalNewZealandFederationBlind[] = { 0, FALSE, sCreditsText_RoyalNewZealandFederationBlind};
static const struct CreditsEntry sCreditsEntry_MotoyasuTojima[] = { 0, FALSE, sCreditsText_MotoyasuTojima};
static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow[] = { 0, FALSE, sCreditsText_NicolaPrattBarlow};
static const struct CreditsEntry sCreditsEntry_ShellieDow[] = { 0, FALSE, sCreditsText_ShellieDow};
static const struct CreditsEntry sCreditsEntry_ErikJohnson[] = { 0, FALSE, sCreditsText_ErikJohnson};
#elif FRENCH
static const struct CreditsEntry sCreditsEntry_EuropeanBlindUnion2[] = { 0, FALSE, sCreditsText_EuropeanBlindUnion2};
static const struct CreditsEntry sCreditsEntry_MotoyasuTojima[] = { 0, FALSE, sCreditsText_MotoyasuTojima};
static const struct CreditsEntry sCreditsEntry_NicolaPrattBarlow[] = { 0, FALSE, sCreditsText_NicolaPrattBarlow};
static const struct CreditsEntry sCreditsEntry_ShellieDow[] = { 0, FALSE, sCreditsText_ShellieDow};
static const struct CreditsEntry sCreditsEntry_ErikJohnson[] = { 0, FALSE, sCreditsText_ErikJohnson};
// New
static const struct CreditsEntry sCreditsEntry_NorikoNetley[] = { 0, FALSE, sCreditsText_NorikoNetley};
static const struct CreditsEntry sCreditsEntry_PierreSanchez[] = { 0, FALSE, sCreditsText_PierreSanchez};
static const struct CreditsEntry sCreditsEntry_SabrinaBretant[] = { 0, FALSE, sCreditsText_SabrinaBretant};
static const struct CreditsEntry sCreditsEntry_ThomasFougeray[] = { 0, FALSE, sCreditsText_ThomasFougeray};
static const struct CreditsEntry sCreditsEntry_AlessioDanieli[] = { 0, FALSE, sCreditsText_AlessioDanieli};
static const struct CreditsEntry sCreditsEntry_NOETestingTeam[] = { 0, FALSE, sCreditsText_NOETestingTeam};
static const struct CreditsEntry sCreditsEntry_StefanRomberg[] = { 0, FALSE, sCreditsText_StefanRomberg};
static const struct CreditsEntry sCreditsEntry_MihoKozawa[] = { 0, FALSE, sCreditsText_MihoKozawa};
static const struct CreditsEntry sCreditsEntry_ToshifumiSayama[] = { 0, FALSE, sCreditsText_ToshifumiSayama};
static const struct CreditsEntry sCreditsEntry_HiroshiAkune[] = { 0, FALSE, sCreditsText_Hiroshi_Akune};
#endif
#define _ sCreditsEntry_EmptyString
static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][ENTRIES_PER_PAGE] =
@@ -671,6 +729,7 @@ static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][EN
sCreditsEntry_RetsujiNomoto,
_,
},
#if ENGLISH
[PAGE_ENGLISH_VERSION] = {
_,
sCreditsEntry_EnglishVersion,
@@ -699,6 +758,29 @@ static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][EN
_,
_,
},
#elif FRENCH
[PAGE_ENGLISH_VERSION] = {
_,
sCreditsEntry_EnglishVersion,
sCreditsEntry_NorikoNetley,
sCreditsEntry_HiroyukiUesugi,
_,
},
[PAGE_TRANSLATOR] = {
sCreditsEntry_Translator,
sCreditsEntry_PierreSanchez,
sCreditsEntry_SabrinaBretant,
sCreditsEntry_ThomasFougeray,
_,
},
[PAGE_NCL_COORDINATOR] = {
_,
sCreditsEntry_NCLCoordinator,
sCreditsEntry_KimikoNakamichi,
sCreditsEntry_HiroshiAkune,
_,
},
#endif
[PAGE_PROGRAMMERS_5] = {
sCreditsEntry_Programmers,
sCreditsEntry_TerukiMurakawa,
@@ -720,6 +802,7 @@ static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][EN
sCreditsEntry_KimikoNakamichi,
_,
},
#if ENGLISH
[PAGE_NOA_TESTING] = {
sCreditsEntry_NOAProductTesting,
sCreditsEntry_ThomasHertzog,
@@ -748,6 +831,29 @@ static const struct CreditsEntry *const sCreditsEntryPointerTable[PAGE_COUNT][EN
sCreditsEntry_NicolaPrattBarlow,
sCreditsEntry_ShellieDow,
},
#elif FRENCH
[PAGE_NOA_TESTING] = {
_,
sCreditsEntry_NOAProductTesting,
sCreditsEntry_AlessioDanieli,
sCreditsEntry_NOETestingTeam,
_,
},
[PAGE_SPECIAL_THANKS_5] = {
sCreditsEntry_SpecialThanks,
sCreditsEntry_StefanRomberg,
sCreditsEntry_MihoKozawa,
sCreditsEntry_ToshifumiSayama,
_,
},
[PAGE_SPECIAL_THANKS_6] = {
_,
sCreditsEntry_SpecialThanks,
sCreditsEntry_EuropeanBlindUnion2,
_,
_,
},
#endif
[PAGE_TASK_MANAGERS] = {
_,
sCreditsEntry_TaskManagers,

View File

@@ -182,7 +182,11 @@ static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions)
if (numFrames < 3600)
{
ConvertIntToDecimalStringN(gStringVar2, numFrames / 60, STR_CONV_MODE_RIGHT_ALIGN, 2);
#if ENGLISH
gStringVar2[2] = CHAR_PERIOD;
#elif FRENCH
gStringVar2[2] = CHAR_COMMA;
#endif
ConvertIntToDecimalStringN(&gStringVar2[3], ((numFrames % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2);
StringAppend(gStringVar2, gText_SpaceSeconds);
}
@@ -2139,6 +2143,15 @@ void BufferBattleTowerElevatorFloors(void)
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
#if FRENCH
if (battleMode == FRONTIER_MODE_LINK_MULTIS)
{
gSpecialVar_0x8005 = 4;
gSpecialVar_0x8006 = 5;
return;
}
#endif
if (battleMode == FRONTIER_MODE_MULTIS && !FlagGet(FLAG_CHOSEN_MULTI_BATTLE_NPC_PARTNER))
{
gSpecialVar_0x8005 = 5;

View File

@@ -167,7 +167,9 @@ static void SpriteCB_PlayerHead(struct Sprite *);
static const u16 sMaleHead_Pal[] = INCBIN_U16("graphics/frontier_pass/map_heads.gbapal");
static const u16 sFemaleHead_Pal[] = INCBIN_U16("graphics/frontier_pass/map_heads_female.gbapal");
#if ENGLISH
static const u32 sMapScreen_Gfx[] = INCBIN_U32("graphics/frontier_pass/map_screen.4bpp.lz");
#endif
static const u32 sCursor_Gfx[] = INCBIN_U32("graphics/frontier_pass/cursor.4bpp.lz");
static const u32 sHeads_Gfx[] = INCBIN_U32("graphics/frontier_pass/map_heads.4bpp.lz");
static const u32 sMapCursor_Gfx[] = INCBIN_U32("graphics/frontier_pass/map_cursor.4bpp.lz");
@@ -1407,7 +1409,11 @@ static bool32 InitFrontierMap(void)
InitWindows(sMapWindowTemplates);
DeactivateAllTextPrinters();
PrintOnFrontierMap();
#if ENGLISH
DecompressAndCopyTileDataToVram(1, sMapScreen_Gfx, 0, 0, 0);
#elif FRENCH
DecompressAndCopyTileDataToVram(1, gFrontierPassMapScreen_Gfx, 0, 0, 0);
#endif
break;
case 5:
if (FreeTempTileDataBuffersIfPossible())

View File

@@ -1127,12 +1127,21 @@ static void ShowDomeResultsWindow(u8 battleMode)
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_Lv502, 8, 33, TEXT_SKIP_DRAW, NULL);
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_OpenLv, 8, 97, TEXT_SKIP_DRAW, NULL);
PrintHyphens(10);
#if ENGLISH
DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 64, 121, 33);
PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_50], 64, 121, 49);
PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_50], 64, 112, 65);
DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 64, 121, 97);
PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_OPEN], 64, 121, 113);
PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_OPEN], 64, 112, 129);
#elif FRENCH
DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 64, 153, 33);
PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_50], 64, 153, 49);
PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_50], 64, 116, 65);
DomePrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_OPEN, 64, 153, 97);
PrintTwoStrings(gText_Record, gText_ClearStreak, gSaveBlock2Ptr->frontier.domeRecordWinStreaks[battleMode][FRONTIER_LVL_OPEN], 64, 153, 113);
PrintTwoStrings(gText_Total, gText_Championships, gSaveBlock2Ptr->frontier.domeTotalChampionships[battleMode][FRONTIER_LVL_OPEN], 64, 116, 129);
#endif
PutWindowTilemap(gRecordsWindowId);
CopyWindowToVram(gRecordsWindowId, COPYWIN_FULL);
}
@@ -1255,12 +1264,21 @@ static void ShowPikeResultsWindow(void)
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_Lv502, 8, 33, TEXT_SKIP_DRAW, NULL);
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_OpenLv, 8, 97, TEXT_SKIP_DRAW, NULL);
PrintHyphens(10);
#if ENGLISH
PikePrintPrevOrCurrentStreak(FRONTIER_LVL_50, 64, 114, 33);
PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_50], 64, 114, 49);
PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_50], 64, 114, 65);
PikePrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 64, 114, 97);
PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_OPEN], 64, 114, 113);
PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_OPEN], 64, 114, 129);
#elif FRENCH
PikePrintPrevOrCurrentStreak(FRONTIER_LVL_50, 64, 138, 33);
PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_50], 64, 138, 49);
PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_50], 64, 118, 65);
PikePrintPrevOrCurrentStreak(FRONTIER_LVL_OPEN, 64, 138, 97);
PikePrintCleared(gText_Record, gText_RoomsCleared, gSaveBlock2Ptr->frontier.pikeRecordStreaks[FRONTIER_LVL_OPEN], 64, 138, 113);
PikePrintCleared(gText_Total, gText_TimesCleared, gSaveBlock2Ptr->frontier.pikeTotalStreaks[FRONTIER_LVL_OPEN], 64, 118, 129);
#endif
PutWindowTilemap(gRecordsWindowId);
CopyWindowToVram(gRecordsWindowId, COPYWIN_FULL);
}
@@ -1405,7 +1423,11 @@ static void ShowFactoryResultsWindow(u8 battleMode)
PrintAligned(gStringVar4, 0);
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_Lv502, 8, 33, TEXT_SKIP_DRAW, NULL);
#if ENGLISH
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_RentalSwap, 152, 33, TEXT_SKIP_DRAW, NULL);
#elif FRENCH
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_RentalSwap, 158, 33, TEXT_SKIP_DRAW, NULL);
#endif
AddTextPrinterParameterized(gRecordsWindowId, FONT_NORMAL, gText_OpenLv, 8, 97, TEXT_SKIP_DRAW, NULL);
PrintHyphens(10);
FactoryPrintPrevOrCurrentStreak(battleMode, FRONTIER_LVL_50, 8, 64, 158, 49);
@@ -2474,7 +2496,11 @@ void CopyFrontierBrainTrainerName(u8 *dst)
else
facility = VarGet(VAR_FRONTIER_FACILITY);
#if ENGLISH
for (i = 0; i < PLAYER_NAME_LENGTH; i++)
#elif FRENCH
for (i = 0; i < TRAINER_NAME_LENGTH + 1; i++)
#endif
dst[i] = gTrainers[sFrontierBrainTrainerIds[facility]].trainerName[i];
dst[i] = EOS;

View File

@@ -146,7 +146,11 @@ static void Task_CloseBagMenu(u8);
static u8 AddItemMessageWindow(u8);
static void RemoveItemMessageWindow(u8);
static void ReturnToItemList(u8);
#if ENGLISH
static void PrintItemQuantity(u8, s16);
#elif FRENCH
static void PrintItemQuantity(u8, s16, u32);
#endif
static u8 BagMenu_AddWindow(u8);
static u8 GetSwitchBagPocketDirection(void);
static void SwitchBagPocket(u8, s16, bool16);
@@ -275,7 +279,11 @@ static const struct MenuAction sItemMenuActions[] = {
[ACTION_WALK] = {gMenuText_Walk, ItemMenu_UseOutOfBattle},
[ACTION_DESELECT] = {gMenuText_Deselect, ItemMenu_Register},
[ACTION_CHECK_TAG] = {gMenuText_CheckTag, ItemMenu_CheckTag},
#if ENGLISH
[ACTION_CONFIRM] = {gMenuText_Confirm, Task_FadeAndCloseBagMenu},
#elif FRENCH
[ACTION_CONFIRM] = {gMenuText_Confirm2, Task_FadeAndCloseBagMenu},
#endif
[ACTION_SHOW] = {gMenuText_Show, ItemMenu_Show},
[ACTION_GIVE_FAVOR_LADY] = {gMenuText_Give2, ItemMenu_GiveFavorLady},
[ACTION_CONFIRM_QUIZ_LADY] = {gMenuText_Confirm, ItemMenu_ConfirmQuizLady},
@@ -323,8 +331,14 @@ static const u8 sContextMenuItems_Cancel[] = {
};
static const u8 sContextMenuItems_BerryBlenderCrush[] = {
#if ENGLISH
ACTION_CONFIRM, ACTION_CHECK_TAG,
ACTION_DUMMY, ACTION_CANCEL
#elif FRENCH
ACTION_CONFIRM, ACTION_DUMMY,
ACTION_CHECK_TAG, ACTION_DUMMY,
ACTION_CANCEL, ACTION_DUMMY
#endif
};
static const u8 sContextMenuItems_Apprentice[] = {
@@ -1187,15 +1201,29 @@ void CloseItemMessage(u8 taskId)
static void AddItemQuantityWindow(u8 windowType)
{
#if ENGLISH
PrintItemQuantity(BagMenu_AddWindow(windowType), 1);
#elif FRENCH
u32 windowId = BagMenu_AddWindow(windowType);
PrintItemQuantity(windowId, 1, TEXT_SKIP_DRAW);
CopyWindowToVram(windowId, 3);
#endif
}
#if ENGLISH
static void PrintItemQuantity(u8 windowId, s16 quantity)
#elif FRENCH
static void PrintItemQuantity(u8 windowId, s16 quantity, u32 speed)
#endif
{
u8 numDigits = (gBagPosition.pocket == BERRIES_POCKET) ? BERRY_CAPACITY_DIGITS : BAG_ITEM_CAPACITY_DIGITS;
ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_LEADING_ZEROS, numDigits);
StringExpandPlaceholders(gStringVar4, gText_xVar1);
#if ENGLISH
AddTextPrinterParameterized(windowId, FONT_NORMAL, gStringVar4, GetStringCenterAlignXOffset(FONT_NORMAL, gStringVar4, 40), 2, 0, 0);
#elif FRENCH
AddTextPrinterParameterized(windowId, FONT_NORMAL, gStringVar4, GetStringCenterAlignXOffset(FONT_NORMAL, gStringVar4, 40), 2, speed, NULL);
#endif
}
// Prints the quantity of items to be sold and the amount that would be earned
@@ -1852,7 +1880,11 @@ static void Task_ChooseHowManyToToss(u8 taskId)
if (AdjustQuantityAccordingToDPadInput(&tItemCount, tQuantity) == TRUE)
{
#if ENGLISH
PrintItemQuantity(gBagMenu->windowIds[ITEMWIN_QUANTITY], tItemCount);
#elif FRENCH
PrintItemQuantity(gBagMenu->windowIds[ITEMWIN_QUANTITY], tItemCount, 0);
#endif
}
else if (JOY_NEW(A_BUTTON))
{
@@ -2215,7 +2247,11 @@ static void Task_ChooseHowManyToDeposit(u8 taskId)
if (AdjustQuantityAccordingToDPadInput(&tItemCount, tQuantity) == TRUE)
{
#if ENGLISH
PrintItemQuantity(gBagMenu->windowIds[ITEMWIN_QUANTITY], tItemCount);
#elif FRENCH
PrintItemQuantity(gBagMenu->windowIds[ITEMWIN_QUANTITY], tItemCount, 0);
#endif
}
else if (JOY_NEW(A_BUTTON))
{
@@ -2528,7 +2564,11 @@ static void DisplayCurrentMoneyWindow(void)
{
u8 windowId = BagMenu_AddWindow(ITEMWIN_MONEY);
PrintMoneyAmountInMoneyBoxWithBorder(windowId, 1, 14, GetMoney(&gSaveBlock1Ptr->money));
#if ENGLISH
AddMoneyLabelObject(19, 11);
#elif FRENCH
AddMoneyLabelObject(24, 11);
#endif
}
static void RemoveMoneyWindow(void)

View File

@@ -15,6 +15,7 @@ struct LandmarkList
const struct Landmark *const *landmarks;
};
#if ENGLISH
static const u8 LandmarkName_FlowerShop[] = _("FLOWER SHOP");
static const u8 LandmarkName_PetalburgWoods[] = _("PETALBURG WOODS");
static const u8 LandmarkName_MrBrineysCottage[] = _("MR. BRINEY'S COTTAGE");
@@ -57,6 +58,50 @@ static const u8 LandmarkName_MirageTower[] = _("MIRAGE TOWER");
static const u8 LandmarkName_AlteringCave[] = _("ALTERING CAVE");
static const u8 LandmarkName_DesertUnderpass[] = _("DESERT UNDERPASS");
static const u8 LandmarkName_TrainerHill[] = _("TRAINER HILL");
#elif FRENCH
static const u8 LandmarkName_FlowerShop[] = _("FLEURISTE");
static const u8 LandmarkName_PetalburgWoods[] = _("BOIS CLEMENTI");
static const u8 LandmarkName_MrBrineysCottage[] = _("COTTAGE DE M. MARCO");
static const u8 LandmarkName_AbandonedShip[] = _("EPAVE");
static const u8 LandmarkName_SeashoreHouse[] = _("MAISON DU BORD DE MER");
static const u8 LandmarkName_SlateportBeach[] = _("PLAGE POIVRESSEL");
static const u8 LandmarkName_CyclingRoad[] = _("PISTE CYCLABLE");
static const u8 LandmarkName_NewMauville[] = _("NEW LAVANDIA");
static const u8 LandmarkName_TrickHouse[] = _("MAISON DES PIEGES");
static const u8 LandmarkName_OldLadysRestShop[] = _("GITE VIEILLE DAME");
static const u8 LandmarkName_Desert[] = _("DESERT");
static const u8 LandmarkName_WinstrateFamily[] = _("FAMILLE STRATEGE");
static const u8 LandmarkName_CableCar[] = _("TELEPHERIQUE");
static const u8 LandmarkName_GlassWorkshop[] = _("ATELIER DU VERRE");
static const u8 LandmarkName_WeatherInstitute[] = _("CENTRE METEO");
static const u8 LandmarkName_MeteorFalls[] = _("SITE METEORE");
static const u8 LandmarkName_TunnelersRestHouse[] = _("REFUGE DES FOREURS");
static const u8 LandmarkName_RusturfTunnel[] = _("TUNNEL MERAZON");
static const u8 LandmarkName_PokemonDayCare[] = _("PENSION POKéMON");
static const u8 LandmarkName_SafariZoneEntrance[] = _("ENTREE PARC SAFARI");
static const u8 LandmarkName_MtPyre[] = _("MONT MEMORIA");
static const u8 LandmarkName_ShoalCave[] = _("GROTTE TREFONDS");
static const u8 LandmarkName_SeafloorCavern[] = _("CAVERNE FONDMER");
static const u8 LandmarkName_GraniteCave[] = _("GROTTE GRANITE");
static const u8 LandmarkName_OceanCurrent[] = _("COURANT OCEANIQUE");
static const u8 LandmarkName_LanettesHouse[] = _("MAISON D’ANNETTE");
static const u8 LandmarkName_FieryPath[] = _("CHEMIN ARDENT");
static const u8 LandmarkName_JaggedPass[] = _("SENTIER SINUROC");
static const u8 LandmarkName_SkyPillar[] = _("PILIER CELESTE");
static const u8 LandmarkName_BerryMastersHouse[] = _("MAITRE DES BAIES");
static const u8 LandmarkName_IslandCave[] = _("GROTTE ISLAND");
static const u8 LandmarkName_DesertRuins[] = _("RUINES DESERT");
static const u8 LandmarkName_ScorchedSlab[] = _("GROTTE ZENITH");
static const u8 LandmarkName_AncientTomb[] = _("TOMBEAU ANTIQUE");
static const u8 LandmarkName_SealedChamber[] = _("SANCTUAIRE");
static const u8 LandmarkName_FossilManiacsHouse[] = _("MANIAQUE DES FOSSILES");
static const u8 LandmarkName_HuntersHouse[] = _("CHERCHEUR DE TRESORS");
static const u8 LandmarkName_MagmaHideout[] = _("PLANQUE MAGMA");
static const u8 LandmarkName_MirageTower[] = _("TOUR MIRAGE");
static const u8 LandmarkName_AlteringCave[] = _("GROTTE METAMO");
static const u8 LandmarkName_DesertUnderpass[] = _("VOIE DU DESERT");
static const u8 LandmarkName_TrainerHill[] = _("MONT DRESSEURS");
#endif
static const struct Landmark Landmark_FlowerShop = {LandmarkName_FlowerShop, FLAG_LANDMARK_FLOWER_SHOP};
static const struct Landmark Landmark_PetalburgWoods = {LandmarkName_PetalburgWoods, -1};

View File

@@ -396,7 +396,11 @@ static u8 BufferQuizAuthorName(void)
sQuizLadyPtr = &gSaveBlock1Ptr->lilycoveLady.quiz;
if (sQuizLadyPtr->playerName[0] == EOS)
{
#if ENGLISH
StringCopy_PlayerName(gStringVar1, gText_QuizLady_Lady);
#elif FRENCH
StringCopy(gStringVar1, gText_QuizLady_Lady);
#endif
authorNameId = QUIZ_AUTHOR_NAME_LADY;
}
else

View File

@@ -33,9 +33,13 @@ static void IntrDummy(void);
const u8 gGameVersion = GAME_VERSION;
const u8 gGameLanguage = GAME_LANGUAGE; // English
const u8 gGameLanguage = GAME_LANGUAGE;
#if ENGLISH
const char BuildDateTime[] = "2005 02 21 11:10";
#elif FRENCH
const char BuildDateTime[] = "2005 07 01 18:30";
#endif
const IntrFunc gIntrTableTemplate[] =
{

View File

@@ -38,12 +38,21 @@ static EWRAM_DATA struct MauvilleManStoryteller * sStorytellerPtr = NULL;
static EWRAM_DATA u8 sStorytellerWindowId = 0;
static const u16 sDefaultBardSongLyrics[BARD_SONG_LENGTH] = {
#if ENGLISH
EC_WORD_SHAKE,
EC_WORD_IT,
EC_WORD_DO,
EC_WORD_THE,
EC_WORD_DIET,
EC_WORD_DANCE
#elif FRENCH
EC_WORD_FEELING,
EC_WORD_DIET,
EC_WORD_IT_S,
EC_EMPTY_WORD,
EC_WORD_COOL,
EC_EMPTY_WORD
#endif
};
static const u8 * const sGiddyAdjectives[] = {

View File

@@ -46,7 +46,11 @@ static const struct WindowTemplate sWindowTemplates_MailboxMenu[MAILBOXWIN_COUNT
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
#if ENGLISH
.width = 8,
#elif FRENCH
.width = 24,
#endif
.height = 2,
.paletteNum = 15,
.baseBlock = 0x8
@@ -58,7 +62,11 @@ static const struct WindowTemplate sWindowTemplates_MailboxMenu[MAILBOXWIN_COUNT
.width = 8,
.height = 18,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x18
#elif FRENCH
.baseBlock = 0x38
#endif
},
[MAILBOXWIN_OPTIONS] = {
.bg = 0,
@@ -67,7 +75,11 @@ static const struct WindowTemplate sWindowTemplates_MailboxMenu[MAILBOXWIN_COUNT
.width = 11,
.height = 8,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x18
#elif FRENCH
.baseBlock = 0x38
#endif
}
};
@@ -219,7 +231,16 @@ u8 MailboxMenu_AddWindow(u8 windowIdx)
template.width = GetMaxWidthInMenuTable(&gMailboxMailOptions[0], 4);
sMailboxWindowIds[windowIdx] = AddWindow(&template);
}
else // MAILBOXWIN_TITLE or MAILBOXWIN_LIST
#if FRENCH
else if (windowIdx == MAILBOXWIN_TITLE)
{
struct WindowTemplate template = sWindowTemplates_MailboxMenu[windowIdx];
s32 width = GetStringWidth(FONT_NORMAL, gText_Mailbox, 0) + 9;
template.width = (width / 8) + 2;
sMailboxWindowIds[windowIdx] = AddWindow(&template);
}
#endif
else // MAILBOXWIN_TITLE or MAILBOXWIN_LIST in English. MAILBOXWIN_LIST in French.
{
sMailboxWindowIds[windowIdx] = AddWindow(&sWindowTemplates_MailboxMenu[windowIdx]);
}

View File

@@ -1,5 +1,8 @@
#include "global.h"
#include "decompress.h"
#if FRENCH
#include "graphics.h"
#endif
#include "link.h"
#include "link_rfu.h"
#include "sound.h"
@@ -374,8 +377,10 @@ static void CreateStartSprite(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subprior
static void InitStartGraphic(u8 spriteId1, u8 spriteId2, u8 spriteId3);
static void SpriteCB_Start(struct Sprite *sprite);
#if ENGLISH
static const u16 s321Start_Pal[] = INCBIN_U16("graphics/link/321start.gbapal");
static const u32 s321Start_Gfx[] = INCBIN_U32("graphics/link/321start.4bpp.lz");
#endif
#define tState data[0]
#define tTilesTag data[2]
@@ -603,8 +608,13 @@ static void SpriteCB_Start(struct Sprite *sprite)
static void Load321StartGfx(u16 tileTag, u16 palTag)
{
#if ENGLISH
struct CompressedSpriteSheet spriteSheet = {s321Start_Gfx, 0xE00, 0};
struct SpritePalette spritePalette = {s321Start_Pal, 0};
#elif FRENCH
struct CompressedSpriteSheet spriteSheet = {g321Start_Gfx, 0xE00, 0};
struct SpritePalette spritePalette = {g321Start_Pal, 0};
#endif
spriteSheet.tag = tileTag;
spritePalette.tag = palTag;

View File

@@ -1,5 +1,6 @@
#include "global.h"
#if ENGLISH
const u8 gText_MysteryEventBerry[] = _("Obtained a {STR_VAR_2} BERRY!\nDad has it at PETALBURG GYM.");
const u8 gText_MysteryEventBerryTransform[] = _("The {STR_VAR_1} BERRY transformed into\none {STR_VAR_2} BERRY.");
const u8 gText_MysteryEventBerryObtained[] = _("The {STR_VAR_1} BERRY has already been\nobtained.");
@@ -9,5 +10,19 @@ const u8 gText_MysteryEventRareWord[] = _("A rare word has been added.");
const u8 gText_MysteryEventSentOver[] = _("{STR_VAR_1} was sent over!");
const u8 gText_MysteryEventFullParty[] = _("Your party is full.\n{STR_VAR_1} could not be sent over.");
const u8 gText_MysteryEventNewTrainer[] = _("A new TRAINER has arrived in\nHOENN.");
const u8 gText_MysteryEventNewAdversaryInBattleTower[] = _("A new adversary has arrived in the\nBATTLE TOWER.");
static const u8 gText_MysteryEventNewAdversaryInBattleTower[] = _("A new adversary has arrived in the\nBATTLE TOWER."); // Unused
const u8 gText_MysteryEventCantBeUsed[] = _("This data can't be used in\nthis version.");
#elif FRENCH
ALIGNED(4)
const u8 gText_MysteryEventBerry[] = _("Tu as obtenu une BAIE {STR_VAR_2}!\nPapa en a une à l’ARENE de CLEMENTI.");
const u8 gText_MysteryEventBerryTransform[] = _("La BAIE {STR_VAR_1} s’est transformée en\nune BAIE {STR_VAR_2}.");
const u8 gText_MysteryEventBerryObtained[] = _("Tu avais déjà obtenu la BAIE\n{STR_VAR_1}.");
const u8 gText_MysteryEventSpecialRibbon[] = _("Un RUBAN spécial a été remis au\nPOKéMON de ton équipe.");
const u8 gText_MysteryEventNationalDex[] = _("Tu peux maintenant accéder au\nMODE NATIONAL dans ton POKéDEX.");
const u8 gText_MysteryEventRareWord[] = _("Un mot rare a été ajouté.");
const u8 gText_MysteryEventSentOver[] = _("{STR_VAR_1} a été envoyé!");
const u8 gText_MysteryEventFullParty[] = _("Ton équipe est complète.\n{STR_VAR_1} ne peut pas être envoyé.");
const u8 gText_MysteryEventNewTrainer[] = _("Un nouveau DRESSEUR est arrivé\ndans la région de HOENN.");
static const u8 gText_MysteryEventNewAdversaryInBattleTower[] = _("A new adversary has arrived in the\nBATTLE TOWER."); // Unused
const u8 gText_MysteryEventCantBeUsed[] = _("Ces données ne peuvent être utilisées\ndans cette version.");
#endif

View File

@@ -3,7 +3,11 @@
#include "mystery_gift_server.h"
#include "mystery_gift.h"
#if ENGLISH
static const u8 sText_CanceledReadingCard[] = _("Canceled reading\nthe Card.");
#elif FRENCH
static const u8 sText_CanceledReadingCard[] = _("Annuler la lecture\nde la carte.");
#endif
//==================

View File

@@ -312,7 +312,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 1,
#if ENGLISH
.width = 9,
#elif FRENCH
.width = 10,
#endif
.height = 2,
.paletteNum = 15,
.baseBlock = 0x1E
@@ -324,7 +328,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 14,
.height = 18,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x30
#elif FRENCH
.baseBlock = 0x32
#endif
},
[WIN_SPICY] = {
.bg = 0,
@@ -333,7 +341,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 5,
.height = 2,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x12C
#elif FRENCH
.baseBlock = 0x12E
#endif
},
[WIN_DRY] = {
.bg = 0,
@@ -342,7 +354,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 5,
.height = 2,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x136
#elif FRENCH
.baseBlock = 0x138
#endif
},
[WIN_SWEET] = {
.bg = 0,
@@ -351,7 +367,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 5,
.height = 2,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x140
#elif FRENCH
.baseBlock = 0x142
#endif
},
[WIN_BITTER] = {
.bg = 0,
@@ -360,7 +380,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 5,
.height = 2,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x14A
#elif FRENCH
.baseBlock = 0x14C
#endif
},
[WIN_SOUR] = {
.bg = 0,
@@ -369,7 +393,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 5,
.height = 2,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x154
#elif FRENCH
.baseBlock = 0x156
#endif
},
[WIN_FEEL] = {
.bg = 0,
@@ -378,7 +406,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 2,
.height = 2,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x15E
#elif FRENCH
.baseBlock = 0x160
#endif
},
[WIN_ACTIONS_TALL] = {
.bg = 1,
@@ -387,7 +419,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 6,
.height = 6,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x162
#elif FRENCH
.baseBlock = 0x164
#endif
},
[WIN_ACTIONS] = {
.bg = 1,
@@ -396,7 +432,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 6,
.height = 4,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x186
#elif FRENCH
.baseBlock = 0x188
#endif
},
[WIN_TOSS_MSG] = {
.bg = 1,
@@ -405,7 +445,11 @@ static const struct WindowTemplate sWindowTemplates[] =
.width = 27,
.height = 4,
.paletteNum = 15,
#if ENGLISH
.baseBlock = 0x19E
#elif FRENCH
.baseBlock = 0x1A0
#endif
},
DUMMY_WIN_TEMPLATE
};
@@ -418,7 +462,11 @@ static const struct WindowTemplate sTossPkblockWindowTemplate =
.width = 5,
.height = 4,
.paletteNum = 15,
.baseBlock = 0x20A
#if ENGLISH
.baseBlock = 0x20A
#elif FRENCH
.baseBlock = 0x20C
#endif
};
static const struct ListMenuTemplate sPokeblockListMenuTemplate =
@@ -700,7 +748,12 @@ static void DrawPokeblockMenuTitleText(void)
u8 i;
const u8 *itemName = ItemId_GetName(ITEM_POKEBLOCK_CASE);
#if ENGLISH
PrintOnPokeblockWindow(WIN_TITLE, itemName, GetStringCenterAlignXOffset(FONT_NORMAL, itemName, 72));
#elif FRENCH
PrintOnPokeblockWindow(WIN_TITLE, itemName, GetStringCenterAlignXOffset(FONT_NORMAL, itemName, 80));
#endif
PrintOnPokeblockWindow(WIN_SPICY, gText_Spicy, 0);
PrintOnPokeblockWindow(WIN_DRY, gText_Dry, 0);

View File

@@ -1,5 +1,8 @@
#include "global.h"
#include "bg.h"
#if FRENCH
#include "graphics.h"
#endif
#include "m4a.h"
#include "main.h"
#include "malloc.h"
@@ -69,8 +72,10 @@ static const u16 sCryMeterNeedle_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter_
static const u8 sCryMeterNeedle_Gfx[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp");
static const u16 sCryMeter_Tilemap[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin"); // Unused
#if ENGLISH
static const u16 sCryMeter_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
static const u8 sCryMeter_Gfx[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
#endif
static const u16 sWaveformOffsets[][72] =
{
@@ -457,8 +462,13 @@ bool8 LoadCryMeter(struct CryScreenWindow *window, u8 windowId)
if (!sCryMeterNeedle)
sCryMeterNeedle = AllocZeroed(sizeof(*sCryMeterNeedle));
#if ENGLISH
CopyToWindowPixelBuffer(windowId, sCryMeter_Gfx, 0, 0);
LoadPalette(sCryMeter_Pal, window->paletteNo * 16, 32);
#elif FRENCH
CopyToWindowPixelBuffer(windowId, gCryMeter_Gfx, 0, 0);
LoadPalette(gCryMeter_Pal, window->paletteNo * 16, 32);
#endif
gDexCryScreenState++;
break;
case 1:

View File

@@ -1,6 +1,9 @@
#include "global.h"
#include "pokenav.h"
#include "bg.h"
#if FRENCH
#include "graphics.h"
#endif
#include "menu.h"
#include "window.h"
#include "sound.h"
@@ -76,9 +79,11 @@ static const LoopedTask sConditionSearchLoopedTaskFuncs[] =
ConvertConditionsToListRanks
};
#if ENGLISH
static const u16 sConditionSearchResultFramePal[] = INCBIN_U16("graphics/pokenav/condition/search_results.gbapal");
static const u32 sConditionSearchResultTiles[] = INCBIN_U32("graphics/pokenav/condition/search_results.4bpp.lz");
static const u32 sConditionSearchResultTilemap[] = INCBIN_U32("graphics/pokenav/condition/search_results.bin.lz");
#endif
static const u16 sListBg_Pal[] = INCBIN_U16("graphics/pokenav/condition/search_results_list.gbapal");
static const struct BgTemplate sConditionSearchResultBgTemplates[] =
@@ -427,11 +432,19 @@ static u32 LoopedTask_OpenConditionSearchResults(s32 state)
{
case 0:
InitBgTemplates(sConditionSearchResultBgTemplates, ARRAY_COUNT(sConditionSearchResultBgTemplates));
#if ENGLISH
DecompressAndCopyTileDataToVram(1, sConditionSearchResultTiles, 0, 0, 0);
SetBgTilemapBuffer(1, gfx->buff);
CopyToBgTilemapBuffer(1, sConditionSearchResultTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
CopyPaletteIntoBufferUnfaded(sConditionSearchResultFramePal, 0x10, 0x20);
#elif FRENCH
DecompressAndCopyTileDataToVram(1, gConditionSearchResultTiles, 0, 0, 0);
SetBgTilemapBuffer(1, gfx->buff);
CopyToBgTilemapBuffer(1, gConditionSearchResultTilemap, 0, 0);
CopyBgTilemapBufferToVram(1);
CopyPaletteIntoBufferUnfaded(gConditionSearchResultFramePal, 0x10, 0x20);
#endif
CopyBgTilemapBufferToVram(1);
return LT_INC_AND_PAUSE;
case 1:
@@ -676,8 +689,13 @@ static void CreateSearchResultsList(void)
template.count = GetSearchResultsMonListCount();
template.itemSize = sizeof(struct PokenavListItem);
template.startIndex = GetSearchResultsCurrentListIndex();
#if ENGLISH
template.item_X = 13;
template.windowWidth = 17;
#elif FRENCH
template.item_X = 12;
template.windowWidth = 18;
#endif
template.listTop = 1;
template.maxShowed = 8;
template.fillValue = 2;

View File

@@ -224,7 +224,11 @@ static u32 LoopedTask_PrintListItems(s32 state)
if (listSub->iconDrawFunc != NULL)
listSub->iconDrawFunc(listSub->listWindow.windowId, listSub->printIndex, row);
#if ENGLISH
AddTextPrinterParameterized(listSub->listWindow.windowId, listSub->listWindow.fontId, listSub->itemTextBuffer, 8, (row << 4) + 1, TEXT_SKIP_DRAW, NULL);
#elif FRENCH
AddTextPrinterParameterized(listSub->listWindow.windowId, listSub->listWindow.fontId, listSub->itemTextBuffer, 10, (row << 4) + 1, TEXT_SKIP_DRAW, NULL);
#endif
if (++listSub->listWindow.numPrinted >= listSub->listWindow.numToPrint)
{
// Finished printing items. If icons were being drawn, draw the
@@ -714,7 +718,11 @@ static void PrintCheckPageTrainerName(struct PokenavListWindowState *state, stru
list->bufferItemFunc(state->listPtr + state->listItemSize * state->windowTopIndex, list->itemTextBuffer);
list->iconDrawFunc(list->listWindow.windowId, state->windowTopIndex, list->listWindow.unkA);
FillWindowPixelRect(list->listWindow.windowId, PIXEL_FILL(4), 0, list->listWindow.unkA * 16, list->listWindow.width * 8, 16);
#if ENGLISH
AddTextPrinterParameterized3(list->listWindow.windowId, list->listWindow.fontId, 8, (list->listWindow.unkA * 16) + 1, colors, TEXT_SKIP_DRAW, list->itemTextBuffer);
#elif FRENCH
AddTextPrinterParameterized3(list->listWindow.windowId, list->listWindow.fontId, 10, (list->listWindow.unkA * 16) + 1, colors, TEXT_SKIP_DRAW, list->itemTextBuffer);
#endif
SetListMarginTile(&list->listWindow, TRUE);
CopyWindowRectToVram(list->listWindow.windowId, COPYWIN_FULL, 0, list->listWindow.unkA * 2, list->listWindow.width, 2);
}
@@ -724,7 +732,11 @@ static void PrintMatchCallListTrainerName(struct PokenavListWindowState *state,
{
list->bufferItemFunc(state->listPtr + state->listItemSize * state->windowTopIndex, list->itemTextBuffer);
FillWindowPixelRect(list->listWindow.windowId, PIXEL_FILL(1), 0, list->listWindow.unkA * 16, list->listWindow.width * 8, 16);
#if ENGLISH
AddTextPrinterParameterized(list->listWindow.windowId, list->listWindow.fontId, list->itemTextBuffer, 8, list->listWindow.unkA * 16 + 1, TEXT_SKIP_DRAW, NULL);
#elif FRENCH
AddTextPrinterParameterized(list->listWindow.windowId, list->listWindow.fontId, list->itemTextBuffer, 10, list->listWindow.unkA * 16 + 1, TEXT_SKIP_DRAW, NULL);
#endif
SetListMarginTile(&list->listWindow, FALSE);
CopyWindowToVram(list->listWindow.windowId, COPYWIN_FULL);
}
@@ -740,7 +752,11 @@ static void PrintMatchCallFieldNames(struct PokenavListSub *list, u32 fieldId)
u32 top = (list->listWindow.unkA + 1 + (fieldId * 2)) & 0xF;
FillWindowPixelRect(list->listWindow.windowId, PIXEL_FILL(1), 0, top << 4, list->listWindow.width, 16);
#if ENGLISH
AddTextPrinterParameterized3(list->listWindow.windowId, FONT_NARROW, 2, (top << 4) + 1, colors, TEXT_SKIP_DRAW, fieldNames[fieldId]);
#elif FRENCH
AddTextPrinterParameterized3(list->listWindow.windowId, FONT_NARROW, 4, (top << 4) + 1, colors, TEXT_SKIP_DRAW, fieldNames[fieldId]);
#endif
CopyWindowRectToVram(list->listWindow.windowId, COPYWIN_GFX, 0, top << 1, list->listWindow.width, 2);
}
@@ -760,7 +776,11 @@ static void PrintMatchCallFlavorText(struct PokenavListWindowState *windowState,
if (str != NULL)
{
FillWindowTilesByRow(list->listWindow.windowId, 1, r6 * 2, list->listWindow.width - 1, 2);
AddTextPrinterParameterized(list->listWindow.windowId, FONT_NARROW, str, 2, (r6 << 4) + 1, TEXT_SKIP_DRAW, NULL);
#if ENGLISH
AddTextPrinterParameterized(list->listWindow.windowId, FONT_NARROW, str, 2, (r6 << 4) + 1, TEXT_SKIP_DRAW, NULL);
#elif FRENCH
AddTextPrinterParameterized(list->listWindow.windowId, FONT_NARROW, str, 4, (r6 << 4) + 1, TEXT_SKIP_DRAW, NULL);
#endif
CopyWindowRectToVram(list->listWindow.windowId, COPYWIN_GFX, 0, r6 * 2, list->listWindow.width, 2);
}
}
@@ -849,7 +869,11 @@ static void CreateListArrowSprites(struct PokenavListWindowState *windowState, s
u32 spriteId;
s16 x;
#if ENGLISH
spriteId = CreateSprite(&sSpriteTemplate_RightArrow, list->listWindow.x * 8 + 3, (list->listWindow.y + 1) * 8, 7);
#elif FRENCH
spriteId = CreateSprite(&sSpriteTemplate_RightArrow, list->listWindow.x * 8 + 5, (list->listWindow.y + 1) * 8, 7);
#endif
list->rightArrow = &gSprites[spriteId];
x = list->listWindow.x * 8 + (list->listWindow.width - 1) * 4;

View File

@@ -688,9 +688,11 @@ static void LoadLeftHeaderGfxForMenu(u32 menuGfxId)
RequestDma3Copy(gDecompressionBuffer, (void *)OBJ_VRAM0 + (GetSpriteTileStartByTag(2) * 32), size, 1);
menu->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + sMenuLeftHeaderSpriteSheets[menuGfxId].size;
#if ENGLISH
if (menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_OUT || menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_IN)
menu->leftHeaderSprites[1]->x2 = 56;
else
#endif
menu->leftHeaderSprites[1]->x2 = 64;
}
@@ -761,7 +763,11 @@ static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide)
if (!isOnRightSide)
start = -96, end = 32;
else
#if ENGLISH
start = 256, end = 160;
#elif FRENCH
start = 256, end = 144;
#endif
for (i = 0; i < (s32)ARRAY_COUNT(menu->leftHeaderSprites); i++)
{

View File

@@ -3,6 +3,9 @@
#include "data.h"
#include "decompress.h"
#include "dma3.h"
#if FRENCH
#include "graphics.h"
#endif
#include "international_string_util.h"
#include "main.h"
#include "match_call.h"
@@ -114,9 +117,11 @@ static u32 ShowCheckPageDown(s32);
static u32 ExitCheckPage(s32);
static u32 ExitMatchCall(s32);
#if ENGLISH
static const u16 sMatchCallUI_Pal[] = INCBIN_U16("graphics/pokenav/match_call/ui.gbapal");
static const u32 sMatchCallUI_Gfx[] = INCBIN_U32("graphics/pokenav/match_call/ui.4bpp.lz");
static const u32 sMatchCallUI_Tilemap[] = INCBIN_U32("graphics/pokenav/match_call/ui.bin.lz");
#endif
static const u16 sOptionsCursor_Pal[] = INCBIN_U16("graphics/pokenav/match_call/options_cursor.gbapal");
static const u32 sOptionsCursor_Gfx[] = INCBIN_U32("graphics/pokenav/match_call/options_cursor.4bpp.lz");
static const u16 sCallWindow_Pal[] = INCBIN_U16("graphics/pokenav/match_call/call_window.gbapal");
@@ -329,11 +334,19 @@ static u32 LoopedTask_OpenMatchCall(s32 state)
InitBgTemplates(sMatchCallBgTemplates, ARRAY_COUNT(sMatchCallBgTemplates));
ChangeBgX(2, 0, BG_COORD_SET);
ChangeBgY(2, 0, BG_COORD_SET);
#if ENGLISH
DecompressAndCopyTileDataToVram(2, sMatchCallUI_Gfx, 0, 0, 0);
SetBgTilemapBuffer(2, gfx->bgTilemapBuffer2);
CopyToBgTilemapBuffer(2, sMatchCallUI_Tilemap, 0, 0);
CopyBgTilemapBufferToVram(2);
CopyPaletteIntoBufferUnfaded(sMatchCallUI_Pal, 0x20, 0x20);
#elif FRENCH
DecompressAndCopyTileDataToVram(2, gMatchCallUI_Gfx, 0, 0, 0);
SetBgTilemapBuffer(2, gfx->bgTilemapBuffer2);
CopyToBgTilemapBuffer(2, gMatchCallUI_Tilemap, 0, 0);
CopyBgTilemapBufferToVram(2);
CopyPaletteIntoBufferUnfaded(gMatchCallUI_Pal, 0x20, 0x20);
#endif
CopyBgTilemapBufferToVram(2);
return LT_INC_AND_PAUSE;
case 1:

View File

@@ -405,11 +405,19 @@ void BufferMatchCallNameAndDesc(struct PokenavMatchCallEntry *matchCallEntry, u8
const u8 *className;
if (!matchCallEntry->isSpecialTrainer)
{
#if ENGLISH
int index = GetTrainerIdxByRematchIdx(matchCallEntry->headerId);
const struct Trainer *trainer = &gTrainers[index];
int class = trainer->trainerClass;
className = gTrainerClassNames[class];
trainerName = trainer->trainerName;
#elif FRENCH
const struct Trainer *trainer = &gTrainers[GetTrainerIdxByRematchIdx(matchCallEntry->headerId)];
int class = trainer->trainerClass;
int gender = trainer->encounterMusic_gender;
className = GetTrainerClassNameGenderSpecific(class, gender, trainer->trainerName);
trainerName = trainer->trainerName;
#endif
}
else
{

View File

@@ -138,7 +138,11 @@ static const struct WindowTemplate sMapSecInfoWindowTemplate =
.bg = 1,
.tilemapLeft = 17,
.tilemapTop = 4,
#if ENGLISH
.width = 12,
#elif FRENCH
.width = 13,
#endif
.height = 13,
.paletteNum = 1,
.baseBlock = 0x4C
@@ -537,7 +541,11 @@ static void UpdateMapSecInfoWindow(struct Pokenav_RegionMapGfx *state)
{
case MAPSECTYPE_CITY_CANFLY:
FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1));
#if ENGLISH
PutWindowRectTilemap(state->infoWindowId, 0, 0, 12, 2);
#elif FRENCH
PutWindowRectTilemap(state->infoWindowId, 0, 0, 13, 2);
#endif
AddTextPrinterParameterized(state->infoWindowId, FONT_NARROW, regionMap->mapSecName, 0, 1, TEXT_SKIP_DRAW, NULL);
DrawCityMap(state, regionMap->mapSecId, regionMap->posWithinMapSec);
CopyWindowToVram(state->infoWindowId, COPYWIN_FULL);
@@ -545,9 +553,15 @@ static void UpdateMapSecInfoWindow(struct Pokenav_RegionMapGfx *state)
break;
case MAPSECTYPE_CITY_CANTFLY:
FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1));
#if ENGLISH
PutWindowRectTilemap(state->infoWindowId, 0, 0, 12, 2);
AddTextPrinterParameterized(state->infoWindowId, FONT_NARROW, regionMap->mapSecName, 0, 1, TEXT_SKIP_DRAW, NULL);
FillBgTilemapBufferRect(1, 0x1041, 17, 6, 12, 11, 17);
#elif FRENCH
PutWindowRectTilemap(state->infoWindowId, 0, 0, 13, 2);
AddTextPrinterParameterized(state->infoWindowId, FONT_NARROW, regionMap->mapSecName, 0, 1, TEXT_SKIP_DRAW, NULL);
FillBgTilemapBufferRect(1, 0x1041, 17, 6, 13, 11, 17);
#endif
CopyWindowToVram(state->infoWindowId, COPYWIN_FULL);
SetCityZoomTextInvisibility(TRUE);
break;
@@ -561,7 +575,11 @@ static void UpdateMapSecInfoWindow(struct Pokenav_RegionMapGfx *state)
SetCityZoomTextInvisibility(TRUE);
break;
case MAPSECTYPE_NONE:
#if ENGLISH
FillBgTilemapBufferRect(1, 0x1041, 17, 4, 12, 13, 17);
#elif FRENCH
FillBgTilemapBufferRect(1, 0x1041, 17, 4, 13, 13, 17);
#endif
CopyBgTilemapBufferToVram(1);
SetCityZoomTextInvisibility(TRUE);
break;
@@ -643,7 +661,11 @@ static void DrawCityMap(struct Pokenav_RegionMapGfx *state, int mapSecId, int po
if (i == NUM_CITY_MAPS)
return;
#if ENGLISH
FillBgTilemapBufferRect_Palette0(1, 0x1041, 17, 6, 12, 11);
#elif FRENCH
FillBgTilemapBufferRect_Palette0(1, 0x1041, 17, 6, 13, 11);
#endif
CopyToBgTilemapBufferRect(1, state->cityZoomPics[i], 18, 6, 10, 10);
}
@@ -656,7 +678,11 @@ static void PrintLandmarkNames(struct Pokenav_RegionMapGfx *state, int mapSecId,
if (!landmarkName)
break;
#if ENGLISH
StringCopyPadded(gStringVar1, landmarkName, CHAR_SPACE, 12);
#elif FRENCH
StringCopyPadded(gStringVar1, landmarkName, CHAR_SPACE, 13);
#endif
AddTextPrinterParameterized(state->infoWindowId, FONT_NARROW, gStringVar1, 0, i * 16 + 17, TEXT_SKIP_DRAW, NULL);
i++;
}

View File

@@ -1,5 +1,8 @@
#include "global.h"
#include "pokenav.h"
#if FRENCH
#include "graphics.h"
#endif
#include "bg.h"
#include "menu.h"
#include "window.h"
@@ -71,9 +74,11 @@ static const LoopedTask sMonRibbonListLoopTaskFuncs[] =
BuildBoxMonRibbonList
};
#if ENGLISH
static const u16 sMonRibbonListFramePal[] = INCBIN_U16("graphics/pokenav/ribbons/list_bg.gbapal");
static const u32 sMonRibbonListFrameTiles[] = INCBIN_U32("graphics/pokenav/ribbons/list_bg.4bpp.lz");
static const u32 sMonRibbonListFrameTilemap[] = INCBIN_U32("graphics/pokenav/ribbons/list_bg.bin.lz");
#endif
static const u16 sMonRibbonListUi_Pal[] = INCBIN_U16("graphics/pokenav/ribbons/list_ui.gbapal");
static const struct BgTemplate sMonRibbonListBgTemplates[] =
@@ -428,10 +433,17 @@ static u32 LoopedTask_OpenRibbonsMonList(s32 state)
{
case 0:
InitBgTemplates(sMonRibbonListBgTemplates, ARRAY_COUNT(sMonRibbonListBgTemplates));
#if ENGLISH
DecompressAndCopyTileDataToVram(1, sMonRibbonListFrameTiles, 0, 0, 0);
SetBgTilemapBuffer(1, menu->buff);
CopyToBgTilemapBuffer(1, sMonRibbonListFrameTilemap, 0, 0);
CopyPaletteIntoBufferUnfaded(sMonRibbonListFramePal, 0x10, 0x20);
#elif FRENCH
DecompressAndCopyTileDataToVram(1, gMonRibbonListFrameTiles, 0, 0, 0);
SetBgTilemapBuffer(1, menu->buff);
CopyToBgTilemapBuffer(1, gMonRibbonListFrameTilemap, 0, 0);
CopyPaletteIntoBufferUnfaded(gMonRibbonListFramePal, 0x10, 0x20);
#endif
CopyBgTilemapBufferToVram(1);
return LT_INC_AND_PAUSE;
case 1:
@@ -684,8 +696,13 @@ static void CreateRibbonMonsList(void)
template.count = GetRibbonsMonListCount();
template.itemSize = sizeof(struct PokenavListItem);
template.startIndex = GetRibbonListMenuCurrIndex();
#if ENGLISH
template.item_X = 13;
template.windowWidth = 17;
#elif FRENCH
template.item_X = 12;
template.windowWidth = 18;
#endif
template.listTop = 1;
template.maxShowed = 8;
template.fillValue = 2;