Merge branch 'doc-ttower' of https://github.com/GriffinRichards/pokefirered into doc-ttower

This commit is contained in:
GriffinR
2020-01-24 05:11:37 -05:00
121 changed files with 10876 additions and 19297 deletions
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -2559,9 +2559,9 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
{
if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT)
{
if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY))
if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED))
{
if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) != BATTLE_TYPE_GHOST)
if (!IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality);
}
else if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
@@ -2674,7 +2674,7 @@ static void BattleIntroPrintWildMonAttacked(void)
{
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
PrepareStringBattle(STRINGID_INTROMSG, 0);
if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST))
if (IS_BATTLE_TYPE_GHOST_WITH_SCOPE(gBattleTypeFlags))
{
gBattleScripting.battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
BattleScriptExecute(BattleScript_SilphScopeUnveiled);
@@ -4183,7 +4183,7 @@ bool8 TryRunFromBattle(u8 battler)
gProtectStructs[battler].fleeFlag = 2;
++effect;
}
else if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
else if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
++effect;
+5 -5
View File
@@ -873,10 +873,10 @@ const u8 *const gBattleStringsTable[] = {
gUnknown_83FDDEB,
gUnknown_83FB484,
gUnknown_83FB4BE,
Text_1A5CF1,
Text_1A5D31,
Text_1A5D6E,
Text_1A5DB1,
Text_MonSentToBoxInSomeonesPC,
Text_MonSentToBoxInBillsPC,
Text_MonSentToBoxSomeonesBoxFull,
Text_MonSentToBoxBillsBoxFull,
sText_PokedudeUsedItem,
gUnknown_83FDA4D,
gUnknown_83FDA7A,
@@ -1517,7 +1517,7 @@ void BufferStringBattle(u16 stringId)
{
if (gBattleTypeFlags & BATTLE_TYPE_GHOST)
{
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
if (gBattleTypeFlags & BATTLE_TYPE_GHOST_UNVEILED)
stringPtr = gUnknown_83FD30D;
else
stringPtr = gUnknown_83FD2D9;
+1 -1
View File
@@ -7352,7 +7352,7 @@ static void atk95_setsandstorm(void)
static void atk96_weatherdamage(void)
{
if (((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)
&& (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT))
{
gBattleMoveDamage = 0;
+3 -3
View File
@@ -301,7 +301,7 @@ void BattleSetup_StartScriptedWildBattle(void)
{
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_PALACE;
gBattleTypeFlags = BATTLE_TYPE_WILD_SCRIPTED;
CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
IncrementGameStat(GAME_STAT_WILD_BATTLES);
@@ -313,7 +313,7 @@ void ScrSpecial_StartMarowakBattle(void)
gMain.savedCallback = CB2_EndMarowakBattle;
if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1))
{
gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY;
gBattleTypeFlags = BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED;
CreateMonWithGenderNatureLetter(gEnemyParty, SPECIES_MAROWAK, 30, 31, MON_FEMALE, NATURE_SERIOUS, 0);
}
else
@@ -342,7 +342,7 @@ void Special_StartLegendaryBattle(void)
ScriptContext2_Enable();
gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_ARENA;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_LEGENDARY_FRLG;
species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
switch (species)
{
+2 -2
View File
@@ -1382,7 +1382,7 @@ u8 AtkCanceller_UnableToUseMove(void)
++gBattleStruct->atkCancellerTracker;
break;
case CANCELLER_GHOST: // GHOST in pokemon tower
if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST)
if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
{
if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER)
gBattlescriptCurrInstr = BattleScript_TooScaredToMove;
@@ -1616,7 +1616,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
if (!moveArg)
moveArg = gCurrentMove;
GET_MOVE_TYPE(moveArg, moveType);
if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST
if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)
&& (gLastUsedAbility == ABILITY_INTIMIDATE || gLastUsedAbility == ABILITY_TRACE))
return effect;
switch (caseID)
+2 -2
View File
@@ -920,7 +920,7 @@ static s32 RollCredits(void)
case CREDITSSCRCMD_MON:
sCreditsMgr->mainseqno = CREDITSSCENE_MON_DESTROY_ASSETS;
sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
fade_screen(1, 0);
FadeScreen(1, 0);
break;
case CREDITSSCRCMD_THEENDGFX:
sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_DESTROY_ASSETS;
@@ -1342,7 +1342,7 @@ static s32 RollCredits(void)
"\tstrb r0, [r2, 0x9]\n"
"\tmovs r0, 0x1\n"
"\tmovs r1, 0\n"
"\tbl fade_screen\n"
"\tbl FadeScreen\n"
"\tb _080F3E94\n"
"\t.align 2, 0\n"
"_080F3E50: .4byte sCreditsMgr\n"
+1 -1
View File
@@ -9,7 +9,7 @@
bool8 walkrun_is_standing_still(void)
{
if (gPlayerAvatar.running1 == 1)
if (gPlayerAvatar.tileTransitionState == 1)
return FALSE;
else
return TRUE;
+11 -11
View File
@@ -56,12 +56,12 @@ void pal_fill_for_maplights(void)
{
case 0:
palette_bg_faded_fill_black();
fade_screen(0, 0);
FadeScreen(0, 0);
palette_bg_faded_fill_black();
break;
case 1:
palette_bg_faded_fill_white();
fade_screen(2, 0);
FadeScreen(2, 0);
palette_bg_faded_fill_white();
break;
}
@@ -73,12 +73,12 @@ static void sub_807DBAC(void)
{
case 0:
palette_bg_faded_fill_black();
fade_screen(0, 3);
FadeScreen(0, 3);
palette_bg_faded_fill_black();
break;
case 1:
palette_bg_faded_fill_white();
fade_screen(2, 3);
FadeScreen(2, 3);
palette_bg_faded_fill_white();
break;
}
@@ -87,7 +87,7 @@ static void sub_807DBAC(void)
void sub_807DC00(void)
{
palette_bg_faded_fill_black();
fade_screen(0, 0);
FadeScreen(0, 0);
palette_bg_faded_fill_black();
}
@@ -95,16 +95,16 @@ void sub_807DC18(void)
{
const struct MapHeader *header = warp1_get_mapheader();
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE))
fade_screen(1, 0);
FadeScreen(1, 0);
else
{
switch (sub_80C9D7C(GetCurrentMapType(), header->mapType))
{
case 0:
fade_screen(1, 0);
FadeScreen(1, 0);
break;
case 1:
fade_screen(3, 0);
FadeScreen(3, 0);
break;
}
}
@@ -115,10 +115,10 @@ static void sub_807DC70(void)
switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType))
{
case 0:
fade_screen(1, 3);
FadeScreen(1, 3);
break;
case 1:
fade_screen(3, 3);
FadeScreen(3, 3);
break;
}
}
@@ -654,7 +654,7 @@ static void sub_807E678(u8 taskId)
{
case 0:
ClearLinkCallback_2();
fade_screen(1, 0);
FadeScreen(1, 0);
sub_8055F88();
PlaySE(SE_KAIDAN);
data[0]++;
View File
+5 -5
View File
@@ -458,7 +458,7 @@ void FieldUseFunc_TmCase(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = Task_InitTMCaseFromField;
}
}
@@ -489,7 +489,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = Task_InitBerryPouchFromField;
}
}
@@ -532,7 +532,7 @@ void FieldUseFunc_TeachyTv(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = Task_InitTeachyTvFromField;
}
}
@@ -662,7 +662,7 @@ void FieldUseFunc_TownMap(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = sub_80A1CC0;
}
}
@@ -694,7 +694,7 @@ void FieldUseFunc_FameChecker(u8 taskId)
else
{
StopPokemonLeagueLightingEffectTask();
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = sub_80A1D68;
}
}
+2 -2
View File
@@ -1917,7 +1917,7 @@ void ClearAndInitHostRFUtgtGname(void)
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, 0, 0, 0);
}
void sub_80FAF58(u8 a0, u32 a1, u32 a2)
void SetHostRFUtgtGname(u8 a0, u32 a1, u32 a2)
{
InitHostRFUtgtGname(&gHostRFUtgtGnameBuffer, a0, a2, a1);
}
@@ -1944,7 +1944,7 @@ void sub_80FAFE0(u8 a0)
void sub_80FB008(u8 a0, u32 a1, u32 a2)
{
if (a0)
sub_80FAF58(a0, a1, a2);
SetHostRFUtgtGname(a0, a1, a2);
rfu_REQ_configGameData(0, 2, (void *)&gHostRFUtgtGnameBuffer, gHostRFUtgtUnameBuffer);
}
+4 -4
View File
@@ -603,7 +603,7 @@ static u8 GetConnectedChildStrength(u8 maxFlags)
}
#endif
void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 r2, s32 r3)
{
s32 i;
@@ -617,7 +617,7 @@ void InitHostRFUtgtGname(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3)
r3 >>= 8;
}
data->playerGender = gSaveBlock2Ptr->playerGender;
data->unk_0a_0 = r9;
data->unk_0a_0 = activity;
data->unk_0a_7 = r2;
data->unk_00.unk_00_0 = GAME_LANGUAGE;
data->unk_00.unk_01_2 = GAME_VERSION;
@@ -681,7 +681,7 @@ bool8 sub_80FCCF4(struct GFtgtGname *gname, u8 *uname, u8 idx)
return retVal;
}
void sub_80FCD50(struct GFtgtGname *gname, u8 *uname)
void LinkRfu3_SetGnameUnameFromStaticBuffers(struct GFtgtGname *gname, u8 *uname)
{
memcpy(gname, &gHostRFUtgtGnameBuffer, RFU_GAME_NAME_LENGTH);
memcpy(uname, gHostRFUtgtUnameBuffer, RFU_USER_NAME_LENGTH);
@@ -929,7 +929,7 @@ void RecordMixTrainerNames(void)
}
}
bool32 sub_80FD338(u16 id, u8 *name)
bool32 PlayerHasMetTrainerBefore(u16 id, u8 *name)
{
s32 i;
+2 -2
View File
@@ -652,7 +652,7 @@ void BlankMEventBuffer2(void)
gSaveBlock1Ptr->mysteryEventBuffers.buffer_310.crc = 0;
}
u16 sub_81440E8(void)
u16 GetWonderCardFlagId(void)
{
if (ValidateReceivedWonderCard())
return gSaveBlock1Ptr->mysteryEventBuffers.mecard.data.unk_00;
@@ -674,7 +674,7 @@ bool32 sub_8144124(u16 a0)
bool32 CheckReceivedGiftFromWonderCard(void)
{
u16 value = sub_81440E8();
u16 value = GetWonderCardFlagId();
if (!sub_8144124(value))
return FALSE;
if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE)
+1 -1
View File
@@ -5818,7 +5818,7 @@ static void Task_ContinueChoosingHalfParty(u8 taskId)
}
}
void sub_81277F4(u8 menuType, MainCallback callback)
void ChooseMonForTradingBoard(u8 menuType, MainCallback callback)
{
InitPartyMenu(menuType,
PARTY_LAYOUT_SINGLE,
+4 -4
View File
@@ -331,7 +331,7 @@ static void Task_DepositItem_WaitFadeAndGoToBag(u8 taskId)
static void Task_PlayerPcDepositItem(u8 taskId)
{
gTasks[taskId].func = Task_DepositItem_WaitFadeAndGoToBag;
fade_screen(1, 0);
FadeScreen(1, 0);
}
static void Task_ReturnToItemStorageSubmenu(u8 taskId)
@@ -394,7 +394,7 @@ static void Task_WithdrawItemBeginFade(u8 taskId)
{
gTasks[taskId].func = Task_WithdrawItem_WaitFadeAndGoToItemStorage;
ItemPc_SetInitializedFlag(0);
fade_screen(1, 0);
FadeScreen(1, 0);
}
static void Task_PlayerPcCancel(u8 taskId)
@@ -556,7 +556,7 @@ static void Task_MailSubmenuHandleInput(u8 taskId)
static void Task_PlayerPcReadMail(u8 taskId)
{
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = Task_WaitFadeAndReadSelectedMail;
}
@@ -663,7 +663,7 @@ static void Task_PlayerPcGiveMailToMon(u8 taskId)
}
else
{
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = Task_WaitFadeAndGoToPartyMenu;
}
}
+25 -25
View File
@@ -3982,49 +3982,49 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
{
gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] += itemEffect[cmdIndex] & 0xF;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] = 12;
gBattleMons[gActiveBattler].statStages[STAT_ATK] += itemEffect[cmdIndex] & 0xF;
if (gBattleMons[gActiveBattler].statStages[STAT_ATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_ATK] = 12;
retVal = FALSE;
}
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
{
gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] = 12;
gBattleMons[gActiveBattler].statStages[STAT_DEF] += (itemEffect[cmdIndex] & 0xF0) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_DEF] > 12)
gBattleMons[gActiveBattler].statStages[STAT_DEF] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
{
gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] += itemEffect[cmdIndex] & 0xF;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] = 12;
gBattleMons[gActiveBattler].statStages[STAT_SPEED] += itemEffect[cmdIndex] & 0xF;
if (gBattleMons[gActiveBattler].statStages[STAT_SPEED] > 12)
gBattleMons[gActiveBattler].statStages[STAT_SPEED] = 12;
retVal = FALSE;
}
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
{
gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] = 12;
gBattleMons[gActiveBattler].statStages[STAT_ACC] += (itemEffect[cmdIndex] & 0xF0) >> 4;
if (gBattleMons[gActiveBattler].statStages[STAT_ACC] > 12)
gBattleMons[gActiveBattler].statStages[STAT_ACC] = 12;
retVal = FALSE;
}
if ((itemEffect[cmdIndex] & 0xF)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
{
gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] += itemEffect[cmdIndex] & 0xF;
if (gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] = 12;
gBattleMons[gActiveBattler].statStages[STAT_SPATK] += itemEffect[cmdIndex] & 0xF;
if (gBattleMons[gActiveBattler].statStages[STAT_SPATK] > 12)
gBattleMons[gActiveBattler].statStages[STAT_SPATK] = 12;
retVal = FALSE;
}
break;
@@ -4496,25 +4496,25 @@ bool8 PokemonItemUseNoEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mo
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_FOCUS_ENERGY))
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_ATK] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_ATK] < 12)
retVal = FALSE;
break;
// in-battle stat boosting effects?
case 1:
if ((itemEffect[cmdIndex] & 0xF0)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_DEF] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_DEF] < 12)
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPEED] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_SPEED] < 12)
retVal = FALSE;
break;
// more stat boosting effects?
case 2:
if ((itemEffect[cmdIndex] & 0xF0)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_ACC] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_ACC] < 12)
retVal = FALSE;
if ((itemEffect[cmdIndex] & 0xF)
&& gBattleMons[gActiveBattler].statStages[STAT_STAGE_SPATK] < 12)
&& gBattleMons[gActiveBattler].statStages[STAT_SPATK] < 12)
retVal = FALSE;
break;
case 3:
+2 -2
View File
@@ -1049,7 +1049,7 @@ static void sub_811175C(u8 sceneNum, struct UnkStruct_203AE98 * a1)
static void sub_81118F4(s8 a0)
{
fade_screen(1, a0);
FadeScreen(1, a0);
sQuestLogCB = QuestLog_AdvancePlayhead;
}
@@ -1309,7 +1309,7 @@ static void QuestLog_CloseTextWindow(void)
static void QuestLog_SkipToEndOfPlayback(s8 a0)
{
fade_screen(1, a0);
FadeScreen(1, a0);
sQuestLogCB = QuestLog_WaitFadeAndCancelPlayback;
}
+2 -2
View File
@@ -202,7 +202,7 @@ static bool8 LoadBattlerSpriteGfx(u8 battler)
{
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
DecompressGhostFrontPic(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
@@ -228,7 +228,7 @@ static void CreateBattlerSprite(u8 battler)
{
u8 posY;
if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == BATTLE_TYPE_GHOST)
if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags))
posY = GetGhostSpriteDefault_Y(battler);
else if (gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
posY = GetSubstituteSpriteDefault_Y(battler);
+663
View File
@@ -0,0 +1,663 @@
#include "global.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "event_object_80688E4.h"
#include "event_object_8097404.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "rfu_union_tool.h"
#include "script.h"
#include "task.h"
#include "constants/flags.h"
#include "constants/event_object_movement.h"
#include "constants/object_events.h"
static EWRAM_DATA struct UnionObj * UnionObjWork = NULL;
static EWRAM_DATA u32 sUnionObjRefreshTimer = 0;
static u8 StartUnionObjAnimTask(void);
static u32 sub_811BBC8(u32 playerIdx, u32 arg1);
static void sub_811C008(s32 arg0, s32 arg1, u8 arg2);
static const u8 sUnionObjectEventGfxIds[][10] = {
[MALE] = {
OBJECT_EVENT_GFX_COOLTRAINER_M,
OBJECT_EVENT_GFX_BLACKBELT,
OBJECT_EVENT_GFX_CAMPER,
OBJECT_EVENT_GFX_YOUNGSTER,
OBJECT_EVENT_GFX_BOY,
OBJECT_EVENT_GFX_BUG_CATCHER,
OBJECT_EVENT_GFX_MAN,
OBJECT_EVENT_GFX_ROCKER
},
[FEMALE] = {
OBJECT_EVENT_GFX_COOLTRAINER_F,
OBJECT_EVENT_GFX_CHANNELER,
OBJECT_EVENT_GFX_PICNICKER,
OBJECT_EVENT_GFX_LASS,
OBJECT_EVENT_GFX_WOMAN_1,
OBJECT_EVENT_GFX_BATTLE_GIRL,
OBJECT_EVENT_GFX_WOMAN_2,
OBJECT_EVENT_GFX_BEAUTY
}
};
static const s16 sUnionPartnerCoords[][2] = {
{ 4, 6},
{13, 8},
{10, 6},
{ 1, 8},
{13, 4},
{ 7, 4},
{ 1, 4},
{ 7, 8}
};
static const s8 sFacingDirectionOffsets[][2] = {
[DIR_NONE] = { 0, 0},
[DIR_SOUTH] = { 1, 0},
[DIR_NORTH] = { 0, -1},
[DIR_WEST] = {-1, 0},
[DIR_EAST] = { 0, 1}
};
static const u8 sOppositeFacingDirection[] = {
[DIR_NONE] = DIR_NONE,
[DIR_SOUTH] = DIR_NORTH,
[DIR_NORTH] = DIR_SOUTH,
[DIR_WEST] = DIR_EAST,
[DIR_EAST] = DIR_WEST
};
static const u8 gUnknown_845711B[] = {
1,
3,
1,
4,
2
};
static const u8 sUnionRoomLocalIds[] = {
9,
8,
7,
2,
6,
5,
4,
3
};
static const u16 sUnref_8457128[] = {
0x63,
0x64,
0x65,
0x66,
0x67,
0x68,
0x69,
0x6A
};
static bool32 is_walking_or_running(void)
{
if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
static u8 GetUnionRoomPlayerGraphicsId(u32 gender, u32 id)
{
return sUnionObjectEventGfxIds[gender][id % 8];
}
static void GetUnionRoomPlayerFacingCoords(u32 id, u32 dirn, s32 * xp, s32 * yp)
{
*xp = sUnionPartnerCoords[id][0] + sFacingDirectionOffsets[dirn][0] + 7;
*yp = sUnionPartnerCoords[id][1] + sFacingDirectionOffsets[dirn][1] + 7;
}
static bool32 sub_811B58C(u32 id, u32 dirn, s32 x, s32 y)
{
if (sUnionPartnerCoords[id][0] + sFacingDirectionOffsets[dirn][0] + 7 != x)
{
return FALSE;
}
else if (sUnionPartnerCoords[id][1] + sFacingDirectionOffsets[dirn][1] + 7 != y)
{
return FALSE;
}
else
{
return TRUE;
}
}
static bool32 IsUnionRoomPlayerHidden(u32 player_idx)
{
return FlagGet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
}
static void HideUnionRoomPlayer(u32 player_idx)
{
FlagSet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
}
static void ShowUnionRoomPlayer(u32 player_idx)
{
FlagClear(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
}
static void SetUnionRoomPlayerGfx(u32 playerIdx, u32 gfxId)
{
VarSet(VAR_OBJ_GFX_ID_0 + playerIdx, gfxId);
}
static void CreateUnionRoomPlayerObjectEvent(u32 playerIdx)
{
TrySpawnObjectEvent(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
static void RemoveUnionRoomPlayerObjectEvent(u32 playerIdx)
{
RemoveObjectEventByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
static bool32 SetUnionRoomPlayerEnterExitMovement(u32 playerIdx, const u8 * movement)
{
u8 objectId;
struct ObjectEvent * object;
if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
{
return FALSE;
}
object = &gObjectEvents[objectId];
if (ObjectEventIsMovementOverridden(object))
{
return FALSE;
}
if (ObjectEventSetHeldMovement(object, *movement))
{
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 387);
return FALSE;
}
return TRUE;
}
static bool32 TryReleaseUnionRoomPlayerObjectEvent(u32 playerIdx)
{
u8 objectId;
struct ObjectEvent * object;
if (TryGetObjectEventIdByLocalIdAndMap(sUnionRoomLocalIds[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
{
return TRUE;
}
object = &gObjectEvents[objectId];
if (!ObjectEventClearHeldMovementIfFinished(object))
{
return FALSE;
}
if (!ScriptContext2_IsEnabled())
{
UnfreezeObjectEvent(object);
}
else
{
FreezeObjectEvent(object);
}
return TRUE;
}
u8 ZeroUnionObjWork(struct UnionObj * ptr)
{
s32 i;
sUnionObjRefreshTimer = 0;
UnionObjWork = ptr;
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 442)
for (i = 0; i < 8; i++)
{
ptr[i].state = 0;
ptr[i].gfxId = 0;
ptr[i].animState = 0;
ptr[i].schedAnim = 0;
}
return StartUnionObjAnimTask();
}
static const u8 sMovement_UnionPlayerExit[2] = {
MOVEMENT_ACTION_FLY_UP,
MOVEMENT_ACTION_STEP_END
};
static bool32 AnimateUnionRoomPlayerDespawn(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
{
switch (*a0)
{
case 0:
if (SetUnionRoomPlayerEnterExitMovement(playerIdx, sMovement_UnionPlayerExit) == TRUE)
{
HideUnionRoomPlayer(playerIdx);
(*a0)++;
}
break;
case 1:
if (TryReleaseUnionRoomPlayerObjectEvent(playerIdx))
{
RemoveUnionRoomPlayerObjectEvent(playerIdx);
HideUnionRoomPlayer(playerIdx);
*a0 = 0;
return TRUE;
}
break;
}
return FALSE;
}
static const u8 sMovement_UnionPlayerEnter[2] = {
MOVEMENT_ACTION_FLY_DOWN,
MOVEMENT_ACTION_STEP_END
};
static bool32 AnimateUnionRoomPlayerSpawn(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
{
s16 x, y;
switch (*a0)
{
case 0:
if (!is_walking_or_running())
{
break;
}
PlayerGetDestCoords(&x, &y);
if (sub_811B58C(playerIdx, 0, x, y) == TRUE)
{
break;
}
player_get_pos_including_state_based_drift(&x, &y);
if (sub_811B58C(playerIdx, 0, x, y) == TRUE)
{
break;
}
SetUnionRoomPlayerGfx(playerIdx, ptr->gfxId);
CreateUnionRoomPlayerObjectEvent(playerIdx);
ShowUnionRoomPlayer(playerIdx);
(*a0)++;
// fallthrough
case 3: // incorrect?
if (SetUnionRoomPlayerEnterExitMovement(playerIdx, sMovement_UnionPlayerEnter) == 1)
{
(*a0)++;
}
break;
case 2:
if (TryReleaseUnionRoomPlayerObjectEvent(playerIdx))
{
*a0 = 0;
return TRUE;
}
break;
}
return FALSE;
}
static bool32 sub_811B8BC(u32 playerIdx, u32 a1, u32 a2)
{
struct UnionObj * ptr = &UnionObjWork[playerIdx];
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 561)
ptr->schedAnim = 1;
ptr->gfxId = GetUnionRoomPlayerGraphicsId(a1, a2);
if (ptr->state == 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
static bool32 sub_811B90C(u32 playerIdx)
{
struct UnionObj * ptr = &UnionObjWork[playerIdx];
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 577)
ptr->schedAnim = 2;
if (ptr->state == 1)
{
return TRUE;
}
else
{
return FALSE;
}
}
static void AnimateUnionObj(u32 playerIdx, struct UnionObj * ptr)
{
switch (ptr->state)
{
case 0:
if (ptr->schedAnim == 1)
{
ptr->state = 2;
ptr->animState = 0;
}
else
{
break;
}
// fallthrough
case 2:
if (!sub_811BBC8(playerIdx, 0) && ptr->schedAnim == 2)
{
ptr->state = 0;
ptr->animState = 0;
RemoveUnionRoomPlayerObjectEvent(playerIdx);
HideUnionRoomPlayer(playerIdx);
}
else if (AnimateUnionRoomPlayerSpawn(&ptr->animState, playerIdx, ptr) == TRUE)
{
ptr->state = 1;
}
break;
case 1:
if (ptr->schedAnim == 2)
{
ptr->state = 3;
ptr->animState = 0;
}
else
{
break;
}
// fallthrough
case 3:
if (AnimateUnionRoomPlayerDespawn(&ptr->animState, playerIdx, ptr) == TRUE)
{
ptr->state = 0;
}
break;
}
ptr->schedAnim = 0;
}
static void Task_AnimateUnionObjs(u8 taskId)
{
s32 i;
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 643)
for (i = 0; i < 8; i++)
{
AnimateUnionObj(i, &UnionObjWork[i]);
}
}
static u8 StartUnionObjAnimTask(void)
{
if (FuncIsActiveTask(Task_AnimateUnionObjs) == TRUE)
{
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 655)
return NUM_TASKS;
}
else
{
return CreateTask(Task_AnimateUnionObjs, 5);
}
}
static void sub_811BA5C(void)
{
u8 taskId = FindTaskIdByFunc(Task_AnimateUnionObjs);
if (taskId < NUM_TASKS)
{
DestroyTask(taskId);
}
}
void sub_811BA78(void)
{
s32 i;
for (i = 0; i < 8; i++)
{
if (!IsUnionRoomPlayerHidden(i))
{
RemoveUnionRoomPlayerObjectEvent(i);
HideUnionRoomPlayer(i);
}
}
UnionObjWork = NULL;
sub_811BA5C();
}
void sub_811BAAC(u8 * sp8, s32 r9)
{
s32 r7;
for (r7 = 0; r7 < 5; r7++)
{
s32 r5 = 5 * r9 + r7;
sp8[r5] = sprite_new(OBJECT_EVENT_GFX_MAN, r5 - 0x38, sUnionPartnerCoords[r9][0] + sFacingDirectionOffsets[r7][0], sUnionPartnerCoords[r9][1] + sFacingDirectionOffsets[r7][1], 3, 1);
sub_8069124(r5 - 0x38, TRUE);
}
}
void sub_811BB40(u8 * r5)
{
s32 i;
for (i = 0; i < 40; i++)
{
DestroySprite(&gSprites[r5[i]]);
}
}
void sub_811BB68(void)
{
s32 i, j, x, y;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 5; j++)
{
GetUnionRoomPlayerFacingCoords(i, j, &x, &y);
sub_8059024(x, y, 0);
}
}
}
static u8 sub_811BBA0(u32 r1, u32 unused, struct GFtgtGname * r2)
{
if (r1 != 0)
{
return gUnknown_845711B[r1];
}
else if (r2->unk_0a_0 == 0x45)
{
return 1;
}
else
{
return 4;
}
}
static u32 sub_811BBC8(u32 a0, u32 a1)
{
return sub_806916C(5 * a0 + a1 - 0x38);
}
static void sub_811BBE0(u32 r5, u32 r6, u8 r8, struct GFtgtGname * r9)
{
s32 x, y;
s32 r7 = 5 * r5 + r6;
if (sub_811BBC8(r5, r6) == 1)
{
sub_8069124(r7 - 0x38, FALSE);
sub_80691A4(r7 - 0x38, 1);
}
sub_8069094(r7 - 0x38, r8);
sub_811C008(r6, r5, sub_811BBA0(r6, r5, r9));
GetUnionRoomPlayerFacingCoords(r5, r6, &x, &y);
sub_8059024(x, y, 1);
}
static void sub_811BC68(u32 a0, u32 a1)
{
s32 x, y;
sub_80691A4(5 * a0 + a1 - 0x38, 2);
GetUnionRoomPlayerFacingCoords(a0, a1, &x, &y);
sub_8059024(x, y, 0);
}
static void sub_811BCA0(u32 r7, struct GFtgtGname * r8)
{
s16 x, y, x2, y2;
s32 i;
PlayerGetDestCoords(&x, &y);
player_get_pos_including_state_based_drift(&x2, &y2);
if (sub_806916C(5 * r7 - 0x38) == 1)
{
if (sub_811B58C(r7, 0, x, y) == TRUE || sub_811B58C(r7, 0, x2, y2) == TRUE)
{
return;
}
sub_811BBE0(r7, 0, GetUnionRoomPlayerGraphicsId(r8->playerGender, r8->unk_00.playerTrainerId[0]), r8);
}
for (i = 1; i < 5; i++)
{
if (r8->unk_04[i - 1] == 0)
{
sub_811BC68(r7, i);
}
else if (sub_811B58C(r7, i, x, y) == FALSE && sub_811B58C(r7, i, x2, y2) == FALSE)
{
sub_811BBE0(r7, i, GetUnionRoomPlayerGraphicsId((r8->unk_04[i - 1] >> 3) & 1, r8->unk_04[i - 1] & 7), r8);
}
}
}
static void sub_811BDA8(u32 r5, struct GFtgtGname * r4)
{
u32 i;
switch (r4->unk_0a_0)
{
case 0x40:
case 0x54:
sub_811B8BC(r5, r4->playerGender, r4->unk_00.playerTrainerId[0]);
for (i = 0; i < 5; i++)
{
sub_811BC68(r5, i);
}
break;
case 0x41:
case 0x44:
case 0x45:
case 0x48:
case 0x51:
case 0x52:
case 0x53:
sub_811B90C(r5);
sub_811BCA0(r5, r4);
break;
default:
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 979)
}
}
static void sub_811BE6C(u32 r5, struct GFtgtGname * unused)
{
s32 i;
sub_811B90C(r5);
for (i = 0; i < 5; i++)
{
sub_811BC68(r5, i);
}
}
static void UpdateUnionRoomPlayerSprites(struct UnkStruct_URoom *r0)
{
s32 i;
struct UnkStruct_x20 * r4;
sUnionObjRefreshTimer = 0;
for (i = 0, r4 = r0->field_0->arr; i < 8; i++)
{
if (r4[i].field_1A_0 == 1)
{
sub_811BDA8(i, &r4[i].unk.gname);
}
else if (r4[i].field_1A_0 == 2)
{
sub_811BE6C(i, &r4[i].unk.gname);
}
}
}
void sub_811BECC(struct UnkStruct_URoom *unused)
{
sUnionObjRefreshTimer = 300;
}
void sub_811BEDC(struct UnkStruct_URoom *r2)
{
if (++sUnionObjRefreshTimer > 300)
{
UpdateUnionRoomPlayerSprites(r2);
}
}
bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
{
s16 x, y;
s32 i, j;
struct UnkStruct_x20 * r4;
if (!is_walking_or_running())
{
return FALSE;
}
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
for (i = 0, r4 = arg0->arr; i < 8; i++)
{
for (j = 0; j < 5; j++)
{
s32 r3 = 5 * i + j;
if (x != sUnionPartnerCoords[i][0] + sFacingDirectionOffsets[j][0] + 7)
{
continue;
}
if (y != sUnionPartnerCoords[i][1] + sFacingDirectionOffsets[j][1] + 7)
{
continue;
}
if (sub_806916C(r3 - 0x38) != 0)
{
continue;
}
if (sub_8069294(r3 - 0x38) != 0)
{
continue;
}
if (r4[i].field_1A_0 != 1)
{
continue;
}
sub_811C008(j, i, sOppositeFacingDirection[GetPlayerFacingDirection()]);
*arg1 = j;
*arg2 = i;
return TRUE;
}
}
return FALSE;
}
static void sub_811C008(s32 arg0, s32 arg1, u8 arg2)
{
sub_8069058(5 * arg1 - 0x38 + arg0, arg2);
}
void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
{
return sub_811C008(arg0, arg1, sub_811BBA0(arg0, arg1, &arg2->arr[arg1].unk.gname));
}
+4 -4
View File
@@ -630,7 +630,7 @@ static bool8 IsPaletteNotActive(void)
bool8 ScrCmd_fadescreen(struct ScriptContext *ctx)
{
fade_screen(ScriptReadByte(ctx), 0);
FadeScreen(ScriptReadByte(ctx), 0);
SetupNativeScript(ctx, IsPaletteNotActive);
return TRUE;
}
@@ -640,7 +640,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx)
u8 mode = ScriptReadByte(ctx);
u8 speed = ScriptReadByte(ctx);
fade_screen(mode, speed);
FadeScreen(mode, speed);
SetupNativeScript(ctx, IsPaletteNotActive);
return TRUE;
}
@@ -1064,7 +1064,7 @@ bool8 ScrCmd_addobject(struct ScriptContext *ctx)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
TrySpawnObjectEvent(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
@@ -1074,7 +1074,7 @@ bool8 ScrCmd_addobject_at(struct ScriptContext *ctx)
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
show_sprite(objectId, mapNum, mapGroup);
TrySpawnObjectEvent(objectId, mapNum, mapGroup);
return FALSE;
}
+2 -2
View File
@@ -294,14 +294,14 @@ static void Task_ShopMenu(u8 taskId)
static void Task_HandleShopMenuBuy(u8 taskId)
{
SetWordTaskArg(taskId, 0xE, (u32)CB2_InitBuyMenu);
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
static void Task_HandleShopMenuSell(u8 taskId)
{
SetWordTaskArg(taskId, 0xE, (u32)CB2_GoToSellMenu);
fade_screen(1, 0);
FadeScreen(1, 0);
gTasks[taskId].func = Task_GoToBuyOrSellMenu;
}
+2 -2
View File
@@ -446,7 +446,7 @@ static void StartMenu_FadeScreenIfLeavingOverworld(void)
&& sStartMenuCallback != StartMenuSafariZoneRetireCallback)
{
StopPokemonLeagueLightingEffectTask();
fade_screen(1, 0);
FadeScreen(1, 0);
}
}
@@ -554,7 +554,7 @@ static bool8 StartMenuLinkPlayerCallback(void)
{
PlayRainStoppingSoundEffect();
CleanupOverworldWindowsAndTilemaps();
ShowTrainerCardInLink(gUnknown_300502C, CB2_ReturnToFieldWithOpenMenu);
ShowTrainerCardInLink(gLocalLinkPlayerId, CB2_ReturnToFieldWithOpenMenu);
return TRUE;
}
return FALSE;
+4607
View File
File diff suppressed because it is too large Load Diff
+225
View File
@@ -0,0 +1,225 @@
#include "global.h"
#include "bg.h"
#include "battle.h"
#include "gpu_regs.h"
#include "link.h"
#include "malloc.h"
#include "menu.h"
#include "new_menu_helpers.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "strings.h"
#include "text_window.h"
#include "union_room.h"
#include "window.h"
struct UnkStruct_203B08C
{
s16 a0;
};
static EWRAM_DATA struct UnkStruct_203B08C * gUnknown_203B08C = NULL;
static const struct BgTemplate gUnknown_8457194[] = {
{
.bg = 0,
.charBaseIndex = 3,
.mapBaseIndex = 31
}
};
static const struct WindowTemplate gUnknown_8457198[] = {
{
.bg = 0,
.tilemapLeft = 2,
.tilemapTop = 15,
.width = 26,
.height = 4,
.paletteNum = 14,
.baseBlock = 0x014
}, DUMMY_WIN_TEMPLATE
};
static const u8 gUnknown_84571A8[] = {1, 2, 3};
static void sub_811C04C(void)
{
s32 i;
sub_81173C0(BATTLE_TYPE_LINK | BATTLE_TYPE_TRAINER);
for (i = 0; i < 2; i++)
{
gEnemyParty[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1];
}
for (i = 0; i < PARTY_SIZE; i++)
{
ZeroMonData(&gPlayerParty[i]);
}
for (i = 0; i < 2; i++)
{
gPlayerParty[i] = gEnemyParty[i];
}
IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES);
CalculatePlayerPartyCount();
gTrainerBattleOpponent_A = TRAINER_OPPONENT_C00;
SetMainCallback2(CB2_InitBattle);
}
static void sub_811C0E0(u8 windowId, const u8 * str, u8 x, u8 y, s32 speed)
{
s32 letterSpacing = 1;
s32 lineSpacing = 1;
FillWindowPixelBuffer(windowId, PIXEL_FILL(gUnknown_84571A8[0]));
AddTextPrinterParameterized4(windowId, 3, x, y, letterSpacing, lineSpacing, gUnknown_84571A8, speed, str);
}
static bool32 sub_811C150(s16 * state, const u8 * str, s32 speed)
{
switch (*state)
{
case 0:
DrawTextBorderOuter(0, 0x001, 0xD);
sub_811C0E0(0, str, 0, 2, speed);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
(*state)++;
break;
case 1:
if (!IsTextPrinterActive(0))
{
*state = 0;
return TRUE;
}
break;
}
return FALSE;
}
static void sub_811C1B4(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
void sub_811C1C8(void)
{
switch (gMain.state)
{
case 0:
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
gUnknown_203B08C = AllocZeroed(sizeof(struct UnkStruct_203B08C));
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_8457194, 1);
ResetTempTileDataBuffers();
if (!InitWindows(gUnknown_8457198))
{
return;
}
DeactivateAllTextPrinters();
ClearWindowTilemap(0);
FillWindowPixelBuffer(0, PIXEL_FILL(0));
FillWindowPixelBuffer(0, PIXEL_FILL(1));
FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 0xF);
TextWindow_SetStdFrame0_WithPal(0, 1, 0xD0);
Menu_LoadStdPal();
SetVBlankCallback(sub_811C1B4);
gMain.state++;
break;
case 1:
if (sub_811C150(&gUnknown_203B08C->a0, gText_CommStandbyAwaitingOtherPlayer, 0))
{
gMain.state++;
}
break;
case 2:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
ShowBg(0);
gMain.state++;
break;
case 3:
if (!UpdatePaletteFade())
{
memset(gBlockSendBuffer, 0, 0x20);
if (gSelectedOrderFromParty[0] == -gSelectedOrderFromParty[1])
{
gBlockSendBuffer[0] = 0x52;
}
else
{
gBlockSendBuffer[0] = 0x51;
}
SendBlock(0, gBlockSendBuffer, 0x20);
gMain.state++;
}
break;
case 4:
if (GetBlockReceivedStatus() == 3)
{
if (gBlockRecvBuffer[0][0] == 0x51 && gBlockRecvBuffer[1][0] == 0x51)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
gMain.state = 50;
}
else
{
sub_800AAC0();
if (gBlockRecvBuffer[GetMultiplayerId()][0] == 0x52)
{
gMain.state = 6;
}
else
{
gMain.state = 8;
}
}
ResetBlockReceivedFlags();
}
break;
case 50:
if (!UpdatePaletteFade())
{
sub_800AB9C();
gMain.state++;
}
break;
case 51:
if (IsLinkTaskFinished())
{
SetMainCallback2(sub_811C04C);
}
break;
case 6:
if (gReceivedRemoteLinkPlayers == 0)
{
gMain.state++;
}
break;
case 7:
if (sub_811C150(&gUnknown_203B08C->a0, gText_RefusedBattle, 1))
{
SetMainCallback2(CB2_ReturnToField);
}
break;
case 8:
if (gReceivedRemoteLinkPlayers == 0)
{
gMain.state++;
}
break;
case 9:
if (sub_811C150(&gUnknown_203B08C->a0, gText_BattleWasRefused, 1))
{
SetMainCallback2(CB2_ReturnToField);
}
break;
}
RunTasks();
RunTextPrinters();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
+543
View File
@@ -0,0 +1,543 @@
#include "global.h"
#include "union_room_message.h"
#include "mevent_server.h"
ALIGNED(4) const u8 gUnknown_84571AC[] = _("");
ALIGNED(4) const u8 gUnknown_84571B0[] = _(":");
ALIGNED(4) const u8 gUnknown_84571B4[] = _("{EXTRA 7}");
ALIGNED(4) const u8 gUnknown_84571B8[] = _("Please start over from the beginning.");
ALIGNED(4) const u8 gUnknown_84571E0[] = _("The WIRELESS COMMUNICATION\nSYSTEM search has been canceled.");
ALIGNED(4) const u8 gUnref_845721C[] = _("ともだちからの れんらくを\nまっています");
ALIGNED(4) const u8 gUnknown_8457234[] = _("{STR_VAR_1}! Awaiting\ncommunication from another player.");
ALIGNED(4) const u8 gUnknown_8457264[] = _("{STR_VAR_1}! Awaiting link!\nPress START when everyone's ready.");
ALIGNED(4) const u8 gJPText_SingleBattle[] = _("シングルバトルを かいさいする");
ALIGNED(4) const u8 gJPText_DoubleBattle[] = _("ダブルバトルを かいさいする");
ALIGNED(4) const u8 gJPText_MultiBattle[] = _("マルチバトルを かいさいする");
ALIGNED(4) const u8 gJPText_TradePokemon[] = _("ポケモンこうかんを かいさいする");
ALIGNED(4) const u8 gJPText_Chat[] = _("チャットを かいさいする");
ALIGNED(4) const u8 gJPText_DistWonderCard[] = _("ふしぎなカードをくばる");
ALIGNED(4) const u8 gJPText_DistWonderNews[] = _("ふしぎなニュースをくばる");
ALIGNED(4) const u8 unref_text_union_room_1[] = _("ふしぎなできごとを かいさいする");
ALIGNED(4) const u8 gJPText_HoldPokemonJump[] = _("なわとびを かいさいする");
ALIGNED(4) const u8 gJPText_HoldBerryCrush[] = _("きのみマッシャーを かいさいする");
ALIGNED(4) const u8 gJPText_HoldBerryPicking[] = _("きのみどりを かいさいする");
ALIGNED(4) const u8 gJPText_HoldSpinTrade[] = _("ぐるぐるこうかんを かいさいする");
ALIGNED(4) const u8 gJPText_HoldSpinShop[] = _("ぐるぐるショップを かいさいする");
const u8 *const unref_text_ptrs_union_room_0[] = {
gJPText_SingleBattle,
gJPText_DoubleBattle,
gJPText_MultiBattle,
gJPText_TradePokemon,
gJPText_Chat,
gJPText_DistWonderCard,
gJPText_DistWonderNews,
gJPText_DistWonderCard,
gJPText_HoldPokemonJump,
gJPText_HoldBerryCrush,
gJPText_HoldBerryPicking,
gJPText_HoldBerryPicking,
gJPText_HoldSpinTrade,
gJPText_HoldSpinShop
};
const u8 gText_1PlayerNeeded[] = _("1 player\nneeded.");
const u8 gText_2PlayersNeeded[] = _("2 players\nneeded.");
const u8 gText_3PlayersNeeded[] = _("3 players\nneeded.");
const u8 gText_4PlayersNeeded[] = _("あと4にん\nひつよう");
const u8 gText_2PlayerMode[] = _("2-PLAYER\nMODE");
const u8 gText_3PlayerMode[] = _("3-PLAYER\nMODE");
const u8 gText_4PlayerMode[] = _("4-PLAYER\nMODE");
const u8 gText_5PlayerMode[] = _("5-PLAYER\nMODE");
const u8 *const gUnknown_845742C[][5] = {
{
gText_1PlayerNeeded,
gText_2PlayerMode
}, {
gText_3PlayersNeeded,
gText_2PlayersNeeded,
gText_1PlayerNeeded,
gText_4PlayerMode
}, {
gText_1PlayerNeeded,
gText_2PlayerMode,
gText_3PlayerMode,
gText_4PlayerMode,
gText_5PlayerMode
}, {
gText_2PlayersNeeded,
gText_1PlayerNeeded,
gText_3PlayerMode,
gText_4PlayerMode,
gText_5PlayerMode
}
};
ALIGNED(4) const u8 gUnknown_845747C[] = _("{B_BUTTON}CANCEL");
ALIGNED(4) const u8 unref_text_union_room_2[] = _("ため\nさんかしゃ ぼしゅうちゅう です!");
ALIGNED(4) const u8 gUnknown_84574A0[] = _("{STR_VAR_2} contacted you for\n{STR_VAR_1}. Accept?");
ALIGNED(4) const u8 gUnknown_84574C4[] = _("{STR_VAR_2} contacted you.\nWill you share {STR_VAR_1}?");
ALIGNED(4) const u8 gUnknown_84574EC[] = _("{STR_VAR_2} contacted you.\nAdd to the members?");
ALIGNED(4) const u8 gUnknown_8457514[] = _("{STR_VAR_1}!\nAre these members OK?");
ALIGNED(4) const u8 gUnknown_8457530[] = _("Cancel {STR_VAR_1} MODE\nwith these members?");
ALIGNED(4) const u8 gUnknown_8457554[] = _("An “OK” was sent\nto {STR_VAR_1}.");
ALIGNED(4) const u8 gUnknown_845756C[] = _("The other TRAINER doesn't appear\nto be available now…\p");
ALIGNED(4) const u8 gUnknown_84575A4[] = _("You can't transmit with a TRAINER\nwho is too far away.\p");
ALIGNED(4) const u8 gUnknown_84575DC[] = _("The other TRAINER(S) is/are not\nready yet.\p");
const u8 *const gUnknown_8457608[] = {
gUnknown_84575A4,
gUnknown_84575DC
};
ALIGNED(4) const u8 gUnknown_8457610[] = _("The {STR_VAR_1} MODE with\nthese members will be canceled.{PAUSE 90}");
ALIGNED(4) const u8 gUnknown_8457644[] = _("There is a member who can no\nlonger remain available.\p");
const u8 *const gUnknown_845767C[] = {
gUnknown_845756C,
gUnknown_8457644
};
ALIGNED(4) const u8 gUnknown_8457684[] = _("The other TRAINER appears\nunavailable…\p");
ALIGNED(4) const u8 gUnknown_84576AC[] = _("{STR_VAR_1} sent back an “OK”!");
ALIGNED(4) const u8 gUnknown_84576C4[] = _("{STR_VAR_1} OK'd your registration as\na member.");
ALIGNED(4) const u8 gUnknown_84576EC[] = _("{STR_VAR_1} replied, “No…”\p");
ALIGNED(4) const u8 gUnknown_8457700[] = _("{STR_VAR_1}!\nAwaiting other members!");
ALIGNED(4) const u8 gUnknown_845771C[] = _("Quit being a member?");
ALIGNED(4) const u8 gUnknown_8457734[] = _("You stopped being a member.\p");
const u8 *const gUnknown_8457754[] = {
NULL,
gUnknown_8457644,
gUnknown_8457684,
NULL,
NULL,
NULL,
gUnknown_84576EC,
NULL,
NULL,
gUnknown_8457734
};
ALIGNED(4) const u8 gUnknown_845777C[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been established.");
ALIGNED(4) const u8 gUnknown_84577BC[] = _("The WIRELESS COMMUNICATION\nSYSTEM link has been dropped…");
ALIGNED(4) const u8 gUnknown_84577F8[] = _("The link with your friend has been\ndropped…");
ALIGNED(4) const u8 gUnknown_8457824[] = _("{STR_VAR_1} replied, “No…”");
const u8 *const gUnknown_8457838[] = {
NULL,
gUnknown_84577F8,
gUnknown_84577F8,
NULL,
NULL,
NULL,
gUnknown_8457824,
NULL,
NULL,
NULL
};
ALIGNED(4) const u8 gUnknown_8457860[] = _("Do you want the {STR_VAR_2}\nMODE?");
ALIGNED(4) const u8 gUnknown_845787C[] = _("Do you want the {STR_VAR_2}\nMODE?");
const u8 *const gUnknown_8457898[] = {
gUnknown_8457860,
gUnknown_845787C
};
ALIGNED(4) const u8 gUnknown_84578A0[] = _("はなしかけています…\nしょうしょう おまちください");
ALIGNED(4) const u8 gUnknown_84578BC[] = _("Awaiting {STR_VAR_1}'s response about\nthe trade…");
ALIGNED(4) const u8 gUnknown_84578E4[] = _("Communicating{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
ALIGNED(4) const u8 gUnknown_8457950[] = _("Communicating with {STR_VAR_1}{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
ALIGNED(4) const u8 gUnknown_84579BC[] = _("Please wait a while{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.\n{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.{PAUSE 15}.");
const u8 *const gUnknown_8457A34[] = {
gUnknown_84578E4,
gUnknown_8457950,
gUnknown_84579BC
};
ALIGNED(4) const u8 gUnknown_8457A40[] = _("Hiya! Is there something that you\nwanted to do?");
ALIGNED(4) const u8 gUnknown_8457A70[] = _("Hello!\nWould you like to do something?");
ALIGNED(4) const u8 gUnknown_8457A98[] = _("{STR_VAR_1}: Hiya, we meet again!\nWhat are you up for this time?");
ALIGNED(4) const u8 gUnknown_8457AD0[] = _("{STR_VAR_1}: Oh! {PLAYER}, hello!\nWould you like to do something?");
const u8 *const gUnknown_8457B04[][2] = {
{
gUnknown_8457A40,
gUnknown_8457A70
}, {
gUnknown_8457A98,
gUnknown_8457AD0
}
};
ALIGNED(4) const u8 gUnknown_8457B14[] = _("Want to do something?");
ALIGNED(4) const u8 gUnknown_8457B2C[] = _("Would you like to do something?");
ALIGNED(4) const u8 gUnknown_8457B4C[] = _("{STR_VAR_1}: What would you like to\ndo now?");
ALIGNED(4) const u8 gUnknown_8457B70[] = _("{STR_VAR_1}‘また なにかする?");
const u8 *const gUnknown_8457B80[] = {
gUnknown_8457B14,
gUnknown_8457B2C,
gUnknown_8457B4C,
gUnknown_8457B4C
};
ALIGNED(4) const u8 gUnknown_8457B90[] = _("Somebody has contacted you.{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_8457BA0[] = _("{STR_VAR_1} has contacted you.{PAUSE 60}");
const u8 *const gUnknown_8457BCC[] = {
gUnknown_8457B90,
gUnknown_8457BA0
};
ALIGNED(4) const u8 gUnknown_8457BD4[] = _("Awaiting a response from\nthe other TRAINER…");
ALIGNED(4) const u8 gUnknown_8457C00[] = _("Awaiting a response from\n{STR_VAR_1}…");
const u8 *const gUnknown_8457C20[] = {
gUnknown_8457BD4,
gUnknown_8457C00
};
ALIGNED(4) const u8 gUnknown_8457C28[] = _("あいての ていあんを まっています\nビーボタンで キャンセル");
ALIGNED(4) const u8 gUnknown_8457C48[] = _("The other TRAINER showed\nyou their TRAINER CARD.\pWould you like to show your\nTRAINER CARD?");
ALIGNED(4) const u8 gUnknown_8457CA4[] = _("The other TRAINER challenges you\nto battle.\pWill you accept the battle\nchallenge?");
ALIGNED(4) const u8 gUnknown_8457CF8[] = _("The other TRAINER invites you\nto chat.\pWill you accept the chat\ninvitation?");
ALIGNED(4) const u8 gUnknown_8457D44[] = _("There is an offer to trade your\nregistered Lv. {DYNAMIC 0} {DYNAMIC 1}\pin exchange for a\nLv. {DYNAMIC 2} {DYNAMIC 3}.\pWill you accept this trade\noffer?");
ALIGNED(4) const u8 gUnknown_8457DB8[] = _("There is an offer to trade your\nregistered EGG.\lWill you accept this trade offer?");
ALIGNED(4) const u8 gUnknown_8457E0C[] = _("The chat has been dropped.\p");
ALIGNED(4) const u8 gUnknown_8457E28[] = _("You declined the offer.\p");
ALIGNED(4) const u8 gUnknown_8457E44[] = _("You declined the offer.\p");
ALIGNED(4) const u8 gUnknown_8457E60[] = _("The chat was ended.\p");
const u8 *const gUnknown_8457E78[] = {
gUnknown_8457C48,
gUnknown_8457CA4,
gUnknown_8457CF8,
gUnknown_8457D44
};
ALIGNED(4) const u8 gUnknown_8457E88[] = _("Oh, hey! We're in a chat right now.\nWant to join us?");
ALIGNED(4) const u8 gUnknown_8457EC0[] = _("{STR_VAR_1}: Hey, {PLAYER}!\nWe're having a chat right now.\lWant to join us?");
ALIGNED(4) const u8 gUnknown_8457F00[] = _("Oh, hi! We're having a chat now.\nWould you like to join us?");
ALIGNED(4) const u8 gUnknown_8457F3C[] = _("{STR_VAR_1}: Oh, hi, {PLAYER}!\nWe're having a chat now.\lWould you like to join us?");
const u8 *const gUnknown_8457F80[][2] = {
{
gUnknown_8457E88,
gUnknown_8457F00
}, {
gUnknown_8457EC0,
gUnknown_8457F3C
}
};
ALIGNED(4) const u8 gUnknown_8457F90[] = _("……\nThe TRAINER appears to be busy…\p");
ALIGNED(4) const u8 gUnknown_8457FB4[] = _("A battle, huh?\nAll right, just give me some time.");
ALIGNED(4) const u8 gUnknown_8457FE8[] = _("You want to chat, huh?\nSure, just wait a little.");
ALIGNED(4) const u8 gUnknown_845801C[] = _("Sure thing! As my “Greetings,”\nhere's my TRAINER CARD.");
ALIGNED(4) const u8 gUnknown_8458054[] = _("A battle? Of course, but I need\ntime to get ready.");
ALIGNED(4) const u8 gUnknown_8458088[] = _("Did you want to chat?\nOkay, but please wait a moment.");
ALIGNED(4) const u8 gUnknown_84580C0[] = _("As my introduction, I'll show you\nmy TRAINER CARD.");
const u8 *const gUnknown_84580F4[][4] = {
{
gUnknown_8457FB4,
gUnknown_8457FE8,
NULL,
gUnknown_845801C
}, {
gUnknown_8458054,
gUnknown_8458088,
NULL,
gUnknown_84580C0
}
};
ALIGNED(4) const u8 gUnref_8458104[] = _("チャットだね!\nわかった ちょっと まってて!");
ALIGNED(4) const u8 gUnknown_845812C[] = _("Thanks for waiting!\nLet's get our battle started!{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_8458164[] = _("All right!\nLet's chat!{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_8458180[] = _("Sorry I made you wait!\nLet's get started!{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_84581B0[] = _("Sorry I made you wait!\nLet's chat.{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_84581D8[] = _("The trade will be started.{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_84581F8[] = _("The battle will be started.{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_8458218[] = _("Entering the chat…{PAUSE 60}");
const u8 *const gUnknown_8458230[][2][3] = {
{
{
gUnknown_84581F8,
gUnknown_8458218,
gUnknown_84581D8
}, {
gUnknown_84581F8,
gUnknown_8458218,
gUnknown_84581D8
}
}, {
{
gUnknown_845812C,
gUnknown_8458164,
gUnknown_84581D8
}, {
gUnknown_8458180,
gUnknown_84581B0,
gUnknown_84581D8
}
}
};
ALIGNED(4) const u8 gUnknown_8458260[] = _("Sorry! My POKéMON don't seem to\nbe feeling too well right now.\lLet me battle you another time.\p");
ALIGNED(4) const u8 gUnknown_84582C0[] = _("I'm terribly sorry, but my POKéMON\naren't feeling well…\pLet's battle another time.\p");
const u8 *const gUnknown_8458314[] = {
gUnknown_8458260,
gUnknown_84582C0
};
ALIGNED(4) const u8 gUnknown_845831C[] = _("Huh? My TRAINER CARD…\nWhere'd it go now?\lSorry! I'll show you another time!\p");
ALIGNED(4) const u8 gUnknown_845836C[] = _("Oh? Now where did I put my\nTRAINER CARD?…\lSorry! I'll show you later!\p");
const u8 *const gUnknown_84583B4[] = {
gUnknown_845831C,
gUnknown_845836C
};
ALIGNED(4) const u8 gUnknown_84583BC[] = _("If you want to do something with\nme, just give me a shout!\p");
ALIGNED(4) const u8 gUnknown_84583F8[] = _("If you want to do something with\nme, don't be shy.\p");
const u8 *const gUnknown_845842C[] = {
gUnknown_84583BC,
gUnknown_84583F8
};
ALIGNED(4) const u8 gUnknown_8458434[] = _("Whoops! Sorry, but I have to do\nsomething else.\lAnother time, okay?\p");
ALIGNED(4) const u8 gUnknown_845847C[] = _("If you want to battle, you need\ntwo POKéMON that are below\lLv. 30.\p");
ALIGNED(4) const u8 gUnknown_84584C0[] = _("For a battle, you need two\nPOKéMON that are below Lv. 30.\p");
ALIGNED(4) const u8 gUnknown_84584FC[] = _("Oh, all right.\nCome see me anytime, okay?\p");
ALIGNED(4) const u8 gUnknown_8458528[] = _("Oh…\nPlease come by anytime.\p");
const u8 *const gUnknown_8458548[] = {
gUnknown_84584FC,
gUnknown_8458528
};
ALIGNED(4) const u8 gUnknown_8458550[] = _("Oh, sorry!\nI just can't right this instant.\lLet's chat another time.\p");
ALIGNED(4) const u8 gUnknown_8458598[] = _("Oh, I'm sorry.\nI have too much to do right now.\lLet's chat some other time.\p");
const u8 *const gUnknown_84585E8[] = {
gUnknown_8458550,
gUnknown_8458598
};
ALIGNED(4) const u8 gUnknown_84585F0[] = _("Whoa!\nI can tell you're pretty tough!\p");
ALIGNED(4) const u8 gUnknown_8458618[] = _("You used that move?\nThat's good strategy!\p");
ALIGNED(4) const u8 gUnknown_8458644[] = _("Way to go!\nThat was an eye-opener!\p");
ALIGNED(4) const u8 gUnknown_8458668[] = _("Oh! How could you use that\nPOKéMON in that situation?\p");
ALIGNED(4) const u8 gUnknown_84586A0[] = _("That POKéMON…\nIt's been raised really well!\p");
ALIGNED(4) const u8 gUnknown_84586D0[] = _("That's it!\nThis is the right move now!\p");
ALIGNED(4) const u8 gUnknown_84586F8[] = _("That's awesome!\nYou can battle that way?\p");
ALIGNED(4) const u8 gUnknown_8458724[] = _("You have exquisite timing for\nswitching POKéMON!\p");
const u8 *const gUnknown_8458758[][4] = {
{
gUnknown_84585F0,
gUnknown_8458618,
gUnknown_8458644,
gUnknown_8458668
}, {
gUnknown_84586A0,
gUnknown_84586D0,
gUnknown_84586F8,
gUnknown_8458724
}
};
ALIGNED(4) const u8 gUnknown_8458778[] = _("Oh, I see!\nThis is educational!\p");
ALIGNED(4) const u8 gUnknown_845879C[] = _("Don't say anything funny anymore!\nI'm sore from laughing!\p");
ALIGNED(4) const u8 gUnknown_84587D8[] = _("Oh?\nSomething like that happened.\p");
ALIGNED(4) const u8 gUnknown_84587FC[] = _("Hmhm… What?\nSo is this what you're saying?\p");
ALIGNED(4) const u8 gUnknown_8458828[] = _("Is that right?\nI didn't know that.\p");
ALIGNED(4) const u8 gUnknown_845884C[] = _("Ahaha!\nWhat is that about?\p");
ALIGNED(4) const u8 gUnknown_8458868[] = _("Yes, that's exactly it!\nThat's what I meant.\p");
ALIGNED(4) const u8 gUnknown_8458898[] = _("In other words…\nYes! That's right!\p");
const u8 *const gUnknown_84588BC[][4] = {
{
gUnknown_8458778,
gUnknown_845879C,
gUnknown_84587D8,
gUnknown_84587FC
}, {
gUnknown_8458828,
gUnknown_845884C,
gUnknown_8458868,
gUnknown_8458898
}
};
ALIGNED(4) const u8 gUnknown_84588DC[] = _("I'm just showing my TRAINER CARD\nas my way of greeting.\p");
ALIGNED(4) const u8 gUnknown_8458918[] = _("I hope I get to know you better!\p");
ALIGNED(4) const u8 gUnknown_845893C[] = _("We're showing each other our\nTRAINER CARDS to get acquainted.\p");
ALIGNED(4) const u8 gUnknown_845897C[] = _("Glad to meet you.\nPlease don't be a stranger!\p");
const u8 *const gUnknown_84589AC[][2] = {
{
gUnknown_84588DC,
gUnknown_8458918
}, {
gUnknown_845893C,
gUnknown_845897C
}
};
ALIGNED(4) const u8 gUnknown_84589BC[] = _("Yeahah!\nI really wanted this POKéMON!\p");
ALIGNED(4) const u8 gUnknown_84589E4[] = _("Finally, a trade got me that\nPOKéMON I'd wanted a long time.\p");
ALIGNED(4) const u8 gUnknown_8458A24[] = _("I'm trading POKéMON right now.\p");
ALIGNED(4) const u8 gUnknown_8458A44[] = _("I finally got that POKéMON I\nwanted in a trade!\p");
const u8 *const gUnknown_8458A78[][4] = {
{
gUnknown_84589BC,
gUnknown_84589E4
}, {
gUnknown_8458A24,
gUnknown_8458A44
}
};
const u8 gUnknown_8458A98[] = _("{STR_VAR_1} checked the\nTRADING BOARD.\p");
ALIGNED(4) const u8 gUnknown_8458AB8[] = _("Welcome to the TRADING BOARD.\pYou may register your POKéMON\nand offer it up for a trade.\pWould you like to register one of\nyour POKéMON?");
ALIGNED(4) const u8 gUnknown_8458B44[] = _("This TRADING BOARD is used for\noffering a POKéMON for a trade.\pAll you need to do is register a\nPOKéMON for a trade.\pAnother TRAINER may offer a party\nPOKéMON in return for the trade.\pWe hope you will register POKéMON\nand trade them with many, many\lother TRAINERS.\pWould you like to register one of\nyour POKéMON?");
ALIGNED(4) const u8 gUnref_ThankYouForComing_JP[] = _("こうかんけいじばん の とうろくが\nかんりょう しました\pごりよう ありがとう\nございました!\p");
ALIGNED(4) const u8 gUnref_NoOneRegisteredMon[] = _("けいじばんに だれも ポケモンを\nとうろく していません\p\n");
ALIGNED(4) const u8 gUnknown_8458CD4[] = _("Please choose the type of POKéMON\nthat you would like in the trade.\n");
ALIGNED(4) const u8 gUnknown_8458D1C[] = _("Which of your party POKéMON will\nyou offer in trade?\p");
ALIGNED(4) const u8 gUnknown_8458D54[] = _("Registration has been canceled.\p");
ALIGNED(4) const u8 gUnknown_8458D78[] = _("Registration has been completed.\p");
ALIGNED(4) const u8 gUnknown_8458D9C[] = _("The trade has been canceled.\p");
ALIGNED(4) const u8 gUnknown_8458DBC[] = _("Cancel the registration of your\nLv. {STR_VAR_2} {STR_VAR_1}?");
ALIGNED(4) const u8 gUnknown_8458DE8[] = _("Cancel the registration of your\nEGG?");
ALIGNED(4) const u8 gUnknown_8458E10[] = _("The registration has been canceled.\p");
ALIGNED(4) const u8 gUnref_ShowPeopleWhoLikeYou_JP[] = _("こうかんを きぼうしているひとを\nひょうじします");
ALIGNED(4) const u8 gUnref_PleaseChooseTrainerYouWant[] = _("こうかん したい トレーナーを\nえらんで ください");
ALIGNED(4) const u8 gUnknown_8458E70[] = _("Would you like to ask {STR_VAR_1} to\nmake a trade?");
ALIGNED(4) const u8 gUnref_ImWaitingForAnswer[] = _("……\nあいての へんじを まっています");
ALIGNED(4) const u8 gUnref_MonSentOutIsNotRegistered[] = _("あなたが こうかんにだす\nポケモンが とうろくされていません\p");
ALIGNED(4) const u8 gUnknown_8458ED0[] = _("You don't have a {STR_VAR_2}-type\nPOKéMON that {STR_VAR_1} wants.\p");
ALIGNED(4) const u8 gUnknown_8458F04[] = _("You don't have an EGG that\n{STR_VAR_1} wants.\p");
ALIGNED(4) const u8 gUnknown_8458F2C[] = _("{STR_VAR_1} can't make a trade for\nyour POKéMON right now.\p");
ALIGNED(4) const u8 gUnknown_8458F60[] = _("You can't make a trade for\n{STR_VAR_1}'s POKéMON right now.\p");
const u8 *const gUnknown_8458F94[] = {
gUnknown_8458F2C,
gUnknown_8458F60
};
ALIGNED(4) const u8 gUnknown_8458F9C[] = _("Your trade offer was rejected.\p");
ALIGNED(4) const u8 gUnknown_8458FBC[] = _("EGG TRADE");
ALIGNED(4) const u8 gUnknown_8458FC8[] = _("{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL");
ALIGNED(4) const u8 gUnknown_8458FE4[] = _("Please choose a TRAINER.");
ALIGNED(4) const u8 gUnknown_8459000[] = _("Please choose a TRAINER for\na SINGLE BATTLE.");
ALIGNED(4) const u8 gUnknown_8459030[] = _("Please choose a TRAINER for\na DOUBLE BATTLE.");
ALIGNED(4) const u8 gUnknown_8459060[] = _("Please choose the LEADER\nfor a MULTI BATTLE.");
ALIGNED(4) const u8 gUnknown_8459090[] = _("Please choose the TRAINER to\ntrade with.");
ALIGNED(4) const u8 gUnknown_84590BC[] = _("Please choose the TRAINER who is\nsharing WONDER CARDS.");
ALIGNED(4) const u8 gUnknown_84590F4[] = _("Please choose the TRAINER who is\nsharing WONDER NEWS.");
ALIGNED(4) const u8 gUnknown_845912C[] = _("Jump with mini POKéMON!\nPlease choose the LEADER.");
ALIGNED(4) const u8 gUnknown_8459160[] = _("BERRY CRUSH!\nPlease choose the LEADER.");
ALIGNED(4) const u8 gUnknown_8459188[] = _("DODRIO BERRY-PICKING!\nPlease choose the LEADER.");
const u8 *const gUnknown_84591B8[] = {
gUnknown_8459000,
gUnknown_8459030,
gUnknown_8459060,
gUnknown_8459090,
gUnknown_845912C,
gUnknown_8459160,
gUnknown_8459188,
gUnknown_84590BC,
gUnknown_84590F4
};
ALIGNED(4) const u8 gUnknown_84591DC[] = _("Searching for a WIRELESS\nCOMMUNICATION SYSTEM. Wait...");
ALIGNED(4) const u8 gUnref_NeedAtLeast2InDblBtl[] = _("ダブルバトルでは 2ひき いじょうの\nポケモンが ひつようです\p");
ALIGNED(4) const u8 gUnknown_8459238[] = _("Awaiting {STR_VAR_1}'s response…");
ALIGNED(4) const u8 gUnknown_8459250[] = _("{STR_VAR_1} has been asked to register\nyou as a member. Please wait.");
ALIGNED(4) const u8 gUnknown_845928C[] = _("Awaiting a response from the\nWIRELESS COMMUNICATION SYSTEM.");
ALIGNED(4) const u8 gUnref_PlsWaitLittleWHile[] = _("ほかの さんかしゃが そろうまで\nしょうしょう おまちください");
ALIGNED(4) const u8 gUnknown_84592E8[] = _("No CARDS appear to be shared \nright now.");
ALIGNED(4) const u8 gUnknown_8459314[] = _("No NEWS appears to be shared\nright now.");
const u8 *const gUnknown_845933C[] = {
gUnknown_84592E8,
gUnknown_8459314
};
ALIGNED(4) const u8 gUnknown_8459344[] = _("BATTLE");
ALIGNED(4) const u8 gUnknown_845934C[] = _("CHAT");
ALIGNED(4) const u8 gUnknown_8459354[] = _("GREETINGS");
ALIGNED(4) const u8 gUnknown_8459360[] = _("EXIT");
ALIGNED(4) const u8 gUnknown_8459368[] = _("EXIT");
ALIGNED(4) const u8 gUnknown_8459370[] = _("INFO");
ALIGNED(4) const u8 gUnknown_8459378[] = _("NAME{CLEAR_TO 0x3C}WANTED{CLEAR_TO 0x6E}OFFER{CLEAR_TO 0xC6}LV.");
ALIGNED(4) const u8 gUnknown_8459394[] = _("SINGLE BATTLE");
ALIGNED(4) const u8 gUnknown_84593A4[] = _("DOUBLE BATTLE");
ALIGNED(4) const u8 gUnknown_84593B4[] = _("MULTI BATTLE");
ALIGNED(4) const u8 gUnknown_84593C4[] = _("POKéMON TRADES");
ALIGNED(4) const u8 gUnknown_84593D4[] = _("CHAT");
ALIGNED(4) const u8 gUnknown_84593DC[] = _("CARDS");
ALIGNED(4) const u8 gUnknown_84593E4[] = _("WONDER CARDS");
ALIGNED(4) const u8 gUnknown_84593F4[] = _("WONDER NEWS");
ALIGNED(4) const u8 gUnknown_8459400[] = _("POKéMON JUMP");
ALIGNED(4) const u8 gUnknown_8459410[] = _("BERRY CRUSH");
ALIGNED(4) const u8 gUnknown_845941C[] = _("BERRY-PICKING");
ALIGNED(4) const u8 gUnknown_845942C[] = _("SEARCH");
ALIGNED(4) const u8 gUnknown_8459434[] = _("ぐるぐるこうかん");
ALIGNED(4) const u8 gUnknown_8459440[] = _("アイテムトレード");
ALIGNED(4) const u8 gUnknown_845944C[] = _("It's a NORMAL CARD.");
ALIGNED(4) const u8 gUnknown_8459460[] = _("It's a BRONZE CARD!");
ALIGNED(4) const u8 gUnknown_8459474[] = _("It's a COPPER CARD!");
ALIGNED(4) const u8 gUnknown_8459488[] = _("It's a SILVER CARD!");
ALIGNED(4) const u8 gUnknown_845949C[] = _("It's a GOLD CARD!");
const u8 *const gUnknown_84594B0[] = {
gUnknown_845944C,
gUnknown_8459460,
gUnknown_8459474,
gUnknown_8459488,
gUnknown_845949C
};
ALIGNED(4) const u8 gUnknown_84594C4[] = _("This is {SPECIAL_F7 0x00} {SPECIAL_F7 0x01}'s\nTRAINER CARD…\l{SPECIAL_F7 0x02}\pPOKéDEX: {SPECIAL_F7 0x03}\nTIME: {SPECIAL_F7 0x04}:{SPECIAL_F7 0x05}\p");
ALIGNED(4) const u8 gUnknown_8459504[] = _("BATTLES: {SPECIAL_F7 0x00} WINS {SPECIAL_F7 0x02} LOSSES\nTRADES: {SPECIAL_F7 0x03} TIMES\p“{SPECIAL_F7 0x04} {SPECIAL_F7 0x05}\n{SPECIAL_F7 0x06} {SPECIAL_F7 0x07}”\p");
ALIGNED(4) const u8 gUnknown_8459544[] = _("{SPECIAL_F7 0x01}: Glad to have met you!{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_8459564[] = _("{SPECIAL_F7 0x01}: Glad to meet you!{PAUSE 60}");
const u8 *const gUnknown_8459580[] = {
gUnknown_8459544,
gUnknown_8459564
};
ALIGNED(4) const u8 gUnknown_8459588[] = _("Finished checking {SPECIAL_F7 0x01}'s\nTRAINER CARD.{PAUSE 60}");
ALIGNED(4) const u8 gUnknown_84595B0[] = _("Canceled reading the Card.");
const struct mevent_client_cmd gUnknown_84595CC[] = {
CLI_RECEIVE(0x15),
CLI_RECVBUF,
CLI_SENDALL,
CLI_RETURN(0x0e)
};
const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[] = {
SRV_SEND(0x20, gUnknown_84595CC),
SRV_WAITSND,
SRV_SENDSTR(0x1b, gUnknown_84595B0),
SRV_WAITSND,
SRV_RECV(0x14),
SRV_RETURN(0x09)
};
+1 -1
View File
@@ -1273,7 +1273,7 @@ static u8 GetRematchableTrainerLocalId(void)
static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script)
{
npc_sync_anim_pause_bits(&gObjectEvents[trainerInfo->objectEventId]);
UnfreezeObjectEvent(&gObjectEvents[trainerInfo->objectEventId]);
ScriptMovement_StartObjectMovementScript(trainerInfo->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, script);
}
+2 -2
View File
@@ -364,7 +364,7 @@ void sub_814F65C(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 palIdx)
u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
{
u32 r8 = unk20->unk.field_0.unk_0a_0;
u32 r8 = unk20->unk.gname.unk_0a_0;
s32 i, j, k;
for (i = 0; i < NELEMS(gUnknown_846FAC0); i++)
@@ -376,7 +376,7 @@ u32 sub_814F714(struct UnkStruct_x20 * unk20, u32 * arg1)
k = 0;
for (j = 0; j < 4; j++)
{
if (unk20->unk.field_0.unk_04[j] != 0) k++;
if (unk20->unk.gname.unk_04[j] != 0) k++;
}
k++;
arg1[gUnknown_846FAC0[i][1]] += k;