Merge branch 'master' into event_object_movement
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,4 @@
|
||||
#include "global.h"
|
||||
#include "task.h"
|
||||
#include "palette.h"
|
||||
#include "item_menu.h"
|
||||
#include "text.h"
|
||||
@@ -9,7 +8,6 @@
|
||||
#include "new_menu_helpers.h"
|
||||
#include "menu.h"
|
||||
#include "money.h"
|
||||
#include "bag.h"
|
||||
#include "strings.h"
|
||||
|
||||
static const u16 sBagWindowPalF[] = INCBIN_U16("data/bag/bag_window_pal.gbapal");
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_interface.h"
|
||||
#include "decompress.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "math_util.h"
|
||||
#include "palette.h"
|
||||
#include "random.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "sound.h"
|
||||
#include "trig.h"
|
||||
#include "util.h"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "decompress.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "math_util.h"
|
||||
#include "palette.h"
|
||||
#include "random.h"
|
||||
|
||||
@@ -178,7 +178,7 @@ void sub_80DD148(u8 taskId)
|
||||
gTasks[taskId].data[2] = pan;
|
||||
if (species != SPECIES_NONE)
|
||||
{
|
||||
if (gBattleAnimArgs[1] == TASK_NONE)
|
||||
if (gBattleAnimArgs[1] == TAIL_SENTINEL)
|
||||
PlayCry3(species, pan, 9);
|
||||
else
|
||||
PlayCry3(species, pan, 7);
|
||||
@@ -199,7 +199,7 @@ static void sub_80DD270(u8 taskId)
|
||||
{
|
||||
++gTasks[taskId].data[9];
|
||||
}
|
||||
else if (gTasks[taskId].data[0] == TASK_NONE)
|
||||
else if (gTasks[taskId].data[0] == TAIL_SENTINEL)
|
||||
{
|
||||
if (!IsCryPlaying())
|
||||
{
|
||||
|
||||
+1076
File diff suppressed because it is too large
Load Diff
@@ -1,27 +1,20 @@
|
||||
#include "global.h"
|
||||
#include "bg.h"
|
||||
#include "data.h"
|
||||
#include "link.h"
|
||||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "palette.h"
|
||||
#include "pokeball.h"
|
||||
#include "pokemon.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "battle.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/facility_trainer_classes.h"
|
||||
@@ -1134,11 +1127,11 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
}
|
||||
else if (gLinkPlayers[GetBattlerMultiplayerId(gActiveBattler)].gender != MALE)
|
||||
{
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_4];
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_LEAF];
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_3];
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RED];
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1159,11 +1152,11 @@ static void LinkOpponentHandleDrawTrainerPic(void)
|
||||
}
|
||||
else if (gLinkPlayers[GetMultiplayerId() ^ BIT_SIDE].gender != MALE)
|
||||
{
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_4];
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_LEAF];
|
||||
}
|
||||
else
|
||||
{
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_PLAYER_3];
|
||||
trainerPicId = gFacilityClassToPicIndex[FACILITY_CLASS_RED];
|
||||
}
|
||||
}
|
||||
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "bg.h"
|
||||
#include "data.h"
|
||||
#include "link.h"
|
||||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "palette.h"
|
||||
#include "pokeball.h"
|
||||
#include "pokemon.h"
|
||||
@@ -12,16 +9,11 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "battle.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
#include "global.h"
|
||||
#include "bg.h"
|
||||
#include "data.h"
|
||||
#include "item.h"
|
||||
#include "link.h"
|
||||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "palette.h"
|
||||
#include "pokeball.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
@@ -20,15 +15,12 @@
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_interface.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "battle_gfx_sfx_util.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_ai_switch_items.h"
|
||||
#include "trainer_tower.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include "party_menu.h"
|
||||
#include "pokeball.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
#include "sound.h"
|
||||
#include "strings.h"
|
||||
#include "string_util.h"
|
||||
@@ -24,7 +23,6 @@
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_interface.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_script_commands.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "constants/battle_anim.h"
|
||||
@@ -831,9 +829,9 @@ void sub_802F6A8(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (gWirelessCommType == 0)
|
||||
sub_800AAC0();
|
||||
Link_TryStartSend5FFF();
|
||||
else
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
gBattlerControllerFuncs[gActiveBattler] = sub_802F610;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
#include "link.h"
|
||||
#include "sound.h"
|
||||
#include "event_data.h"
|
||||
#include "item.h"
|
||||
#include "item_menu.h"
|
||||
#include "text.h"
|
||||
#include "strings.h"
|
||||
@@ -25,7 +24,6 @@
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "teachy_tv.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/trainers.h"
|
||||
@@ -127,7 +125,7 @@ static void SetPokedudeMonData(u8 monId);
|
||||
static void sub_8159478(u8 battlerId);
|
||||
static void PokedudeDoMoveAnimation(void);
|
||||
static void sub_81595EC(u8 taskId);
|
||||
static const u8 *sub_8159EF0(void);
|
||||
static const u8 *GetPokedudeText(void);
|
||||
|
||||
u8 *gUnknown_3005EE0[MAX_BATTLERS_COUNT];
|
||||
|
||||
@@ -224,10 +222,10 @@ static const u8 gUnknown_8479048[][8] =
|
||||
|
||||
static const u8 (*const gUnknown_8479060[])[8] =
|
||||
{
|
||||
gUnknown_8479008,
|
||||
gUnknown_8479018,
|
||||
gUnknown_8479030,
|
||||
gUnknown_8479048,
|
||||
[TTVSCR_BATTLE] = gUnknown_8479008,
|
||||
[TTVSCR_STATUS] = gUnknown_8479018,
|
||||
[TTVSCR_MATCHUPS] = gUnknown_8479030,
|
||||
[TTVSCR_CATCHING] = gUnknown_8479048,
|
||||
};
|
||||
|
||||
static const u8 gUnknown_8479070[][8] =
|
||||
@@ -261,10 +259,10 @@ static const u8 gUnknown_84790C0[][8] =
|
||||
|
||||
static const u8 (*const gUnknown_84790D8[])[8] =
|
||||
{
|
||||
gUnknown_8479070,
|
||||
gUnknown_8479080,
|
||||
gUnknown_84790A0,
|
||||
gUnknown_84790C0,
|
||||
[TTVSCR_BATTLE] = gUnknown_8479070,
|
||||
[TTVSCR_STATUS] = gUnknown_8479080,
|
||||
[TTVSCR_MATCHUPS] = gUnknown_84790A0,
|
||||
[TTVSCR_CATCHING] = gUnknown_84790C0,
|
||||
};
|
||||
|
||||
static const struct Unk_84790E8 gUnknown_84790E8[] =
|
||||
@@ -417,48 +415,48 @@ static const struct Unk_84790E8 gUnknown_8479168[] =
|
||||
|
||||
static const struct Unk_84790E8 *const gUnknown_8479198[] =
|
||||
{
|
||||
gUnknown_84790E8,
|
||||
gUnknown_8479108,
|
||||
gUnknown_8479130,
|
||||
gUnknown_8479168,
|
||||
[TTVSCR_BATTLE] = gUnknown_84790E8,
|
||||
[TTVSCR_STATUS] = gUnknown_8479108,
|
||||
[TTVSCR_MATCHUPS] = gUnknown_8479130,
|
||||
[TTVSCR_CATCHING] = gUnknown_8479168,
|
||||
};
|
||||
|
||||
static const u8 *const gUnknown_84791A8[] =
|
||||
static const u8 *const sPokedudeTexts_Battle[] =
|
||||
{
|
||||
gUnknown_81C5F69,
|
||||
gUnknown_81C5FA7,
|
||||
gUnknown_81C5FDC,
|
||||
gUnknown_81C601C,
|
||||
Pokedude_Text_SpeedierBattlerGoesFirst,
|
||||
Pokedude_Text_MyRattataFasterThanPidgey,
|
||||
Pokedude_Text_BattlersTakeTurnsAttacking,
|
||||
Pokedude_Text_MyRattataWonGetsEXP,
|
||||
};
|
||||
|
||||
static const u8 *const gUnknown_84791B8[] =
|
||||
static const u8 *const sPokedudeTexts_Status[] =
|
||||
{
|
||||
gUnknown_81C60FA,
|
||||
gUnknown_81C60FA,
|
||||
gUnknown_81C615A,
|
||||
gUnknown_81C6196,
|
||||
gUnknown_81C61EA,
|
||||
Pokedude_Text_UhOhRattataPoisoned,
|
||||
Pokedude_Text_UhOhRattataPoisoned,
|
||||
Pokedude_Text_HealStatusRightAway,
|
||||
Pokedude_Text_UsingItemTakesTurn,
|
||||
Pokedude_Text_YayWeManagedToWin,
|
||||
};
|
||||
|
||||
static const u8 *const gUnknown_84791CC[] =
|
||||
static const u8 *const sPokedudeTexts_TypeMatchup[] =
|
||||
{
|
||||
gUnknown_81C6202,
|
||||
gUnknown_81C6301,
|
||||
gUnknown_81C63A9,
|
||||
gUnknown_81C63F9,
|
||||
gUnknown_81C6446,
|
||||
gUnknown_81C657A,
|
||||
gUnknown_81C6637,
|
||||
Pokedude_Text_WaterNotVeryEffectiveAgainstGrass,
|
||||
Pokedude_Text_GrassEffectiveAgainstWater,
|
||||
Pokedude_Text_LetsTryShiftingMons,
|
||||
Pokedude_Text_ShiftingUsesTurn,
|
||||
Pokedude_Text_ButterfreeDoubleResistsGrass,
|
||||
Pokedude_Text_ButterfreeGoodAgainstOddish,
|
||||
Pokedude_Text_YeahWeWon,
|
||||
};
|
||||
|
||||
static const u8 *const gUnknown_84791E8[] =
|
||||
static const u8 *const sPokedudeTexts_Catching[] =
|
||||
{
|
||||
gUnknown_81C6645,
|
||||
gUnknown_81C6645,
|
||||
gUnknown_81C66CF,
|
||||
gUnknown_81C6787,
|
||||
gUnknown_81C684B,
|
||||
gUnknown_81C686C,
|
||||
Pokedude_Text_WeakenMonBeforeCatching,
|
||||
Pokedude_Text_WeakenMonBeforeCatching,
|
||||
Pokedude_Text_BestIfTargetStatused,
|
||||
Pokedude_Text_CantDoubleUpOnStatus,
|
||||
Pokedude_Text_LetMeThrowBall,
|
||||
Pokedude_Text_PickBestKindOfBall,
|
||||
};
|
||||
|
||||
static const struct PokedudeBattlePartyInfo sParties_Battle[] =
|
||||
@@ -556,10 +554,10 @@ static const struct PokedudeBattlePartyInfo sParties_Catching[] =
|
||||
|
||||
static const struct PokedudeBattlePartyInfo *const sPokedudeBattlePartyPointers[] =
|
||||
{
|
||||
sParties_Battle,
|
||||
sParties_Status,
|
||||
sParties_Matchups,
|
||||
sParties_Catching,
|
||||
[TTVSCR_BATTLE] = sParties_Battle,
|
||||
[TTVSCR_STATUS] = sParties_Status,
|
||||
[TTVSCR_MATCHUPS] = sParties_Matchups,
|
||||
[TTVSCR_CATCHING] = sParties_Catching,
|
||||
};
|
||||
|
||||
static void nullsub_99(void)
|
||||
@@ -2597,7 +2595,7 @@ static void sub_8159BA8(void)
|
||||
break;
|
||||
case 2:
|
||||
gBattle_BG0_Y = 0;
|
||||
BattleStringExpandPlaceholdersToDisplayedString(sub_8159EF0());
|
||||
BattleStringExpandPlaceholdersToDisplayedString(GetPokedudeText());
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
|
||||
++gUnknown_3005EE0[gActiveBattler][2];
|
||||
break;
|
||||
@@ -2658,7 +2656,7 @@ static void sub_8159D04(void)
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(sub_8159EF0());
|
||||
BattleStringExpandPlaceholdersToDisplayedString(GetPokedudeText());
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 24);
|
||||
++gUnknown_3005EE0[gActiveBattler][2];
|
||||
break;
|
||||
@@ -2698,19 +2696,19 @@ static void sub_8159D04(void)
|
||||
}
|
||||
}
|
||||
|
||||
static const u8 *sub_8159EF0(void)
|
||||
static const u8 *GetPokedudeText(void)
|
||||
{
|
||||
switch (gBattleStruct->field_96)
|
||||
{
|
||||
case 0:
|
||||
case TTVSCR_BATTLE:
|
||||
default:
|
||||
return gUnknown_84791A8[gBattleStruct->field_97 - 1];
|
||||
case 1:
|
||||
return gUnknown_84791B8[gBattleStruct->field_97 - 1];
|
||||
case 2:
|
||||
return gUnknown_84791CC[gBattleStruct->field_97 - 1];
|
||||
case 3:
|
||||
return gUnknown_84791E8[gBattleStruct->field_97 - 1];
|
||||
return sPokedudeTexts_Battle[gBattleStruct->field_97 - 1];
|
||||
case TTVSCR_STATUS:
|
||||
return sPokedudeTexts_Status[gBattleStruct->field_97 - 1];
|
||||
case TTVSCR_MATCHUPS:
|
||||
return sPokedudeTexts_TypeMatchup[gBattleStruct->field_97 - 1];
|
||||
case TTVSCR_CATCHING:
|
||||
return sPokedudeTexts_Catching[gBattleStruct->field_97 - 1];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,16 +9,12 @@
|
||||
#include "item_menu.h"
|
||||
#include "link.h"
|
||||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "palette.h"
|
||||
#include "pokeball.h"
|
||||
#include "pokemon.h"
|
||||
#include "reshow_battle_screen.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "strings.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/battle_anim.h"
|
||||
|
||||
@@ -35,7 +35,7 @@ void HandleLinkBattleSetup(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (gWirelessCommType)
|
||||
sub_800B1F4();
|
||||
SetWirelessCommType1();
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
OpenLink();
|
||||
CreateTask(sub_8081A90, 0);
|
||||
@@ -491,7 +491,7 @@ void sub_800DD28(void)
|
||||
|
||||
if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_20) && (gLinkPlayers[0].linkType == 0x2211))
|
||||
{
|
||||
sub_80FBB4C();
|
||||
LinkRfu_DestroyIdleTask();
|
||||
for (i = 0; i < GetLinkPlayerCount(); ++i)
|
||||
{
|
||||
if (GetBlockReceivedStatus() & gBitTable[i])
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
#include "party_menu.h"
|
||||
#include "battle.h"
|
||||
#include "battle_main.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_interface.h"
|
||||
#include "constants/battle_anim.h"
|
||||
@@ -546,7 +544,7 @@ bool8 BattleLoadAllHealthBoxesGfx(u8 state)
|
||||
|
||||
void LoadBattleBarGfx(u8 arg0)
|
||||
{
|
||||
LZDecompressWram(gFile_graphics_interface_hp_numbers, gMonSpritesGfxPtr->barFontGfx);
|
||||
LZDecompressWram(gInterfaceGfx_HPNumbers, gMonSpritesGfxPtr->barFontGfx);
|
||||
}
|
||||
|
||||
bool8 BattleInitAllSprites(u8 *state, u8 *battlerId)
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
#include "safari_zone.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "text.h"
|
||||
#include "window.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
+10
-15
@@ -8,13 +8,11 @@
|
||||
#include "battle_message.h"
|
||||
#include "battle_scripts.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "berry.h"
|
||||
#include "bg.h"
|
||||
#include "data.h"
|
||||
#include "decompress.h"
|
||||
#include "dma3.h"
|
||||
#include "event_data.h"
|
||||
#include "evolution_scene.h"
|
||||
#include "graphics.h"
|
||||
@@ -40,14 +38,12 @@
|
||||
#include "sound.h"
|
||||
#include "sprite.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "trig.h"
|
||||
#include "vs_seeker.h"
|
||||
#include "util.h"
|
||||
#include "window.h"
|
||||
#include "cable_club.h"
|
||||
#include "constants/abilities.h"
|
||||
#include "constants/battle_move_effects.h"
|
||||
#include "constants/battle_setup.h"
|
||||
@@ -645,17 +641,17 @@ void CB2_InitBattle(void)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
HelpSystem_SetSomeVariable2(0x19);
|
||||
SetHelpContext(HELPCONTEXT_TRAINER_BATTLE_DOUBLE);
|
||||
else
|
||||
HelpSystem_SetSomeVariable2(0x18);
|
||||
SetHelpContext(HELPCONTEXT_TRAINER_BATTLE_SINGLE);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||
{
|
||||
HelpSystem_SetSomeVariable2(0x1A);
|
||||
SetHelpContext(HELPCONTEXT_SAFARI_BATTLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
HelpSystem_SetSomeVariable2(0x17);
|
||||
SetHelpContext(HELPCONTEXT_WILD_BATTLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -979,7 +975,7 @@ static void CB2_HandleStartBattle(void)
|
||||
ResetBlockReceivedFlags();
|
||||
sub_8010414(2, playerMultiplayerId);
|
||||
SetAllPlayersBerryData();
|
||||
taskId = CreateTask(sub_800F6FC, 0);
|
||||
taskId = CreateTask(InitLinkBattleVsScreen, 0);
|
||||
gTasks[taskId].data[1] = 270;
|
||||
gTasks[taskId].data[2] = 90;
|
||||
gTasks[taskId].data[5] = 0;
|
||||
@@ -1152,9 +1148,9 @@ static void CB2_PreInitMultiBattle(void)
|
||||
{
|
||||
++gBattleCommunication[MULTIUSE_STATE];
|
||||
if (gWirelessCommType)
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
else
|
||||
sub_800AAC0();
|
||||
Link_TryStartSend5FFF();
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
@@ -1227,7 +1223,7 @@ static void CB2_HandleStartMultiBattle(void)
|
||||
SetAllPlayersBerryData();
|
||||
SetDeoxysStats();
|
||||
memcpy(gDecompressionBuffer, gPlayerParty, sizeof(struct Pokemon) * 3);
|
||||
taskId = CreateTask(sub_800F6FC, 0);
|
||||
taskId = CreateTask(InitLinkBattleVsScreen, 0);
|
||||
gTasks[taskId].data[1] = 270;
|
||||
gTasks[taskId].data[2] = 90;
|
||||
gTasks[taskId].data[5] = 0;
|
||||
@@ -1785,7 +1781,7 @@ void sub_8011A1C(void)
|
||||
FreeAllSpritePalettes();
|
||||
gReservedSpritePaletteCount = 4;
|
||||
SetVBlankCallback(VBlankCB_Battle);
|
||||
taskId = CreateTask(sub_800F6FC, 0);
|
||||
taskId = CreateTask(InitLinkBattleVsScreen, 0);
|
||||
gTasks[taskId].data[1] = 270;
|
||||
gTasks[taskId].data[2] = 90;
|
||||
gTasks[taskId].data[5] = 1;
|
||||
@@ -3717,7 +3713,7 @@ static void HandleEndTurn_BattleLost(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && ScrSpecial_GetTrainerBattleMode() == TRAINER_BATTLE_EARLY_RIVAL)
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && GetTrainerBattleMode() == TRAINER_BATTLE_EARLY_RIVAL)
|
||||
{
|
||||
if (GetRivalBattleFlags() & RIVAL_BATTLE_HEAL_AFTER)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = 1; // Dont do white out text
|
||||
@@ -4164,7 +4160,6 @@ bool8 TryRunFromBattle(u8 battler)
|
||||
{
|
||||
bool8 effect = FALSE;
|
||||
u8 holdEffect;
|
||||
u8 pyramidMultiplier;
|
||||
u8 speedVar;
|
||||
|
||||
if (gBattleMons[battler].item == ITEM_ENIGMA_BERRY)
|
||||
|
||||
+13
-13
@@ -1271,9 +1271,9 @@ const u8 gUnknown_83FE860[] = _(" is");
|
||||
const u8 gUnknown_83FE864[] = _(" is");
|
||||
const u8 gText_BadEgg[] = _("Bad EGG");
|
||||
const u8 gUnknown_83FE870[] = _("ミツル");
|
||||
const u8 gUnknown_83FE874[] = _("{HIGHLIGHT 0}Win");
|
||||
const u8 gUnknown_83FE87B[] = _("{HIGHLIGHT 0}Loss");
|
||||
const u8 gUnknown_83FE883[] = _("{HIGHLIGHT 0}Draw");
|
||||
const u8 gText_Win[] = _("{HIGHLIGHT 0}Win");
|
||||
const u8 gText_Loss[] = _("{HIGHLIGHT 0}Loss");
|
||||
const u8 gText_Draw[] = _("{HIGHLIGHT 0}Draw");
|
||||
static const u8 sText_SpaceIs[] = _(" is");
|
||||
static const u8 sText_ApostropheS[] = _("'s");
|
||||
const u8 gUnknown_83FE892[] = _("a NORMAL move");
|
||||
@@ -1294,9 +1294,9 @@ const u8 gUnknown_83FE94D[] = _("a PSYCHIC move");
|
||||
const u8 gUnknown_83FE95C[] = _("an ICE move");
|
||||
const u8 gUnknown_83FE968[] = _("a DRAGON move");
|
||||
const u8 gUnknown_83FE976[] = _("a DARK move");
|
||||
const u8 gUnknown_83FE982[] = _("TIME BOARD");
|
||||
const u8 gUnknown_83FE98D[] = _("CLEAR TIME");
|
||||
const u8 gUnknown_83FE998[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC.");
|
||||
const u8 gText_TimeBoard[] = _("TIME BOARD");
|
||||
const u8 gText_ClearTime[] = _("CLEAR TIME"); // Unused
|
||||
const u8 gText_XMinYZSec[] = _("{STR_VAR_1}MIN. {STR_VAR_2}.{STR_VAR_3}SEC.");
|
||||
const u8 gUnknown_83FE9A9[] = _("1F");
|
||||
const u8 gUnknown_83FE9AC[] = _("2F");
|
||||
const u8 gUnknown_83FE9AF[] = _("3F");
|
||||
@@ -1306,7 +1306,7 @@ const u8 gUnknown_83FE9B8[] = _("6F");
|
||||
const u8 gUnknown_83FE9BB[] = _("7F");
|
||||
const u8 gUnknown_83FE9BE[] = _("8F");
|
||||
|
||||
const u8 *const gUnknown_83FE9C4[] = {
|
||||
const u8 *const gTrainerTowerChallengeTypeTexts[NUM_TOWER_CHALLENGE_TYPES] = {
|
||||
gOtherText_Single,
|
||||
gOtherText_Double,
|
||||
gOtherText_Knockout,
|
||||
@@ -1990,7 +1990,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||
toCpy = gTrainerClassNames[GetBattleTowerTrainerClassNameId()];
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
|
||||
toCpy = gTrainerClassNames[sub_815DA10()];
|
||||
toCpy = gTrainerClassNames[GetTrainerTowerOpponentClass()];
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
|
||||
toCpy = gTrainerClassNames[GetEreaderTrainerClassId()];
|
||||
else
|
||||
@@ -2014,7 +2014,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
|
||||
{
|
||||
sub_815DA28(text);
|
||||
GetTrainerTowerOpponentName(text);
|
||||
toCpy = text;
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
|
||||
@@ -2054,7 +2054,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
||||
case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
|
||||
{
|
||||
sub_815DC40(gStringVar4, 0);
|
||||
GetTrainerTowerOpponentLoseText(gStringVar4, 0);
|
||||
toCpy = gStringVar4;
|
||||
}
|
||||
else
|
||||
@@ -2065,7 +2065,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
||||
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER)
|
||||
{
|
||||
sub_815DBF4(gStringVar4, 0);
|
||||
GetTrainerTowerOpponentWinText(gStringVar4, 0);
|
||||
toCpy = gStringVar4;
|
||||
}
|
||||
else
|
||||
@@ -2074,11 +2074,11 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
||||
}
|
||||
break;
|
||||
case B_TXT_TRAINER2_LOSE_TEXT:
|
||||
sub_815DC40(gStringVar4, 1);
|
||||
GetTrainerTowerOpponentLoseText(gStringVar4, 1);
|
||||
toCpy = gStringVar4;
|
||||
break;
|
||||
case B_TXT_TRAINER2_WIN_TEXT:
|
||||
sub_815DBF4(gStringVar4, 1);
|
||||
GetTrainerTowerOpponentWinText(gStringVar4, 1);
|
||||
toCpy = gStringVar4;
|
||||
break;
|
||||
case B_TXT_26: // ?
|
||||
|
||||
@@ -88,7 +88,7 @@ static u8 *const sStringVars[3] = {
|
||||
gStringVar3
|
||||
};
|
||||
|
||||
void Special_BattleRecords(void)
|
||||
void ShowBattleRecords(void)
|
||||
{
|
||||
SetVBlankCallback(NULL);
|
||||
SetMainCallback2(MainCB2_SetUp);
|
||||
@@ -419,7 +419,7 @@ void ClearPlayerLinkBattleRecords(void)
|
||||
|
||||
static void IncTrainerCardWinCount(s32 battlerId)
|
||||
{
|
||||
u16 *wins = &gTrainerCards[battlerId].linkBattleWins;
|
||||
u16 *wins = &gTrainerCards[battlerId].rse.linkBattleWins;
|
||||
(*wins)++;
|
||||
if (*wins > 9999)
|
||||
*wins = 9999;
|
||||
@@ -427,7 +427,7 @@ static void IncTrainerCardWinCount(s32 battlerId)
|
||||
|
||||
static void IncTrainerCardLossCount(s32 battlerId)
|
||||
{
|
||||
u16 *losses = &gTrainerCards[battlerId].linkBattleLosses;
|
||||
u16 *losses = &gTrainerCards[battlerId].rse.linkBattleLosses;
|
||||
(*losses)++;
|
||||
if (*losses > 9999)
|
||||
*losses = 9999;
|
||||
@@ -453,7 +453,7 @@ void TryRecordLinkBattleOutcome(s32 battlerId)
|
||||
if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNION_ROOM) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNION_ROOM))
|
||||
{
|
||||
UpdateBattleOutcomeOnTrainerCards(battlerId);
|
||||
AddOpponentLinkBattleRecord(&gSaveBlock2Ptr->linkBattleRecords, gTrainerCards[battlerId].playerName, gTrainerCards[battlerId].trainerId, gBattleOutcome, gLinkPlayers[battlerId].language);
|
||||
AddOpponentLinkBattleRecord(&gSaveBlock2Ptr->linkBattleRecords, gTrainerCards[battlerId].rse.playerName, gTrainerCards[battlerId].rse.trainerId, gBattleOutcome, gLinkPlayers[battlerId].language);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "util.h"
|
||||
#include "pokemon.h"
|
||||
#include "random.h"
|
||||
#include "data.h"
|
||||
#include "text.h"
|
||||
#include "sound.h"
|
||||
#include "pokedex.h"
|
||||
@@ -14,7 +13,6 @@
|
||||
#include "bg.h"
|
||||
#include "string_util.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "m4a.h"
|
||||
#include "mail.h"
|
||||
#include "event_data.h"
|
||||
#include "strings.h"
|
||||
@@ -30,7 +28,6 @@
|
||||
#include "battle.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_ai_script_commands.h"
|
||||
#include "battle_scripts.h"
|
||||
#include "battle_string_ids.h"
|
||||
@@ -48,7 +45,7 @@
|
||||
#include "constants/abilities.h"
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
|
||||
|
||||
|
||||
+20
-23
@@ -13,7 +13,7 @@
|
||||
#include "strings.h"
|
||||
#include "string_util.h"
|
||||
#include "event_data.h"
|
||||
#include "event_object_80688E4.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "event_scripts.h"
|
||||
#include "fldeff.h"
|
||||
@@ -22,10 +22,8 @@
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_screen_effect.h"
|
||||
#include "field_message_box.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "vs_seeker.h"
|
||||
#include "battle.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_transition.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "constants/battle_setup.h"
|
||||
@@ -37,7 +35,6 @@
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/trainer_classes.h"
|
||||
#include "constants/map_types.h"
|
||||
|
||||
enum
|
||||
{
|
||||
@@ -224,7 +221,7 @@ static bool8 CheckSilphScopeInPokemonTower(u16 mapGroup, u16 mapNum)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void BattleSetup_StartWildBattle(void)
|
||||
void StartWildBattle(void)
|
||||
{
|
||||
if (GetSafariZoneFlag())
|
||||
DoSafariBattle();
|
||||
@@ -246,7 +243,7 @@ static void DoStandardWildBattle(void)
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
|
||||
void BattleSetup_StartRoamerBattle(void)
|
||||
void StartRoamerBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
FreezeObjectEvents();
|
||||
@@ -288,7 +285,7 @@ static void DoTrainerBattle(void)
|
||||
IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
|
||||
}
|
||||
|
||||
void ScrSpecial_StartOldManTutorialBattle(void)
|
||||
void StartOldManTutorialBattle(void)
|
||||
{
|
||||
CreateMaleMon(&gEnemyParty[0], SPECIES_WEEDLE, 5);
|
||||
ScriptContext2_Enable();
|
||||
@@ -297,7 +294,7 @@ void ScrSpecial_StartOldManTutorialBattle(void)
|
||||
CreateBattleStartTask(B_TRANSITION_SLICED_SCREEN, 0);
|
||||
}
|
||||
|
||||
void BattleSetup_StartScriptedWildBattle(void)
|
||||
void StartScriptedWildBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
@@ -307,7 +304,7 @@ void BattleSetup_StartScriptedWildBattle(void)
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
|
||||
void ScrSpecial_StartMarowakBattle(void)
|
||||
void StartMarowakBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gMain.savedCallback = CB2_EndMarowakBattle;
|
||||
@@ -326,7 +323,7 @@ void ScrSpecial_StartMarowakBattle(void)
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
|
||||
void ScrSpecial_StartSouthernIslandBattle(void)
|
||||
void StartSouthernIslandBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
@@ -336,7 +333,7 @@ void ScrSpecial_StartSouthernIslandBattle(void)
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
|
||||
void Special_StartLegendaryBattle(void)
|
||||
void StartLegendaryBattle(void)
|
||||
{
|
||||
u16 species;
|
||||
|
||||
@@ -367,7 +364,7 @@ void Special_StartLegendaryBattle(void)
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
|
||||
void Special_StartGroudonKyogreBattle(void)
|
||||
void StartGroudonKyogreBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
@@ -380,7 +377,7 @@ void Special_StartGroudonKyogreBattle(void)
|
||||
IncrementGameStat(GAME_STAT_WILD_BATTLES);
|
||||
}
|
||||
|
||||
void Special_StartRegiBattle(void)
|
||||
void StartRegiBattle(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
gMain.savedCallback = CB2_EndScriptedWildBattle;
|
||||
@@ -781,7 +778,7 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
|
||||
{
|
||||
case TRAINER_BATTLE_SINGLE_NO_INTRO_TEXT:
|
||||
TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data);
|
||||
return EventScript_DoTrainerBattle;
|
||||
return EventScript_DoNoIntroTrainerBattle;
|
||||
case TRAINER_BATTLE_DOUBLE:
|
||||
TrainerBattleLoadArgs(sDoubleBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
@@ -810,7 +807,7 @@ const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
|
||||
return EventScript_TryDoRematchBattle;
|
||||
case TRAINER_BATTLE_EARLY_RIVAL:
|
||||
TrainerBattleLoadArgs(sEarlyRivalBattleParams, data);
|
||||
return EventScript_DoTrainerBattle;
|
||||
return EventScript_DoNoIntroTrainerBattle;
|
||||
default:
|
||||
TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
|
||||
SetMapVarsToTrainer();
|
||||
@@ -823,7 +820,7 @@ void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerSc
|
||||
gSelectedObjectEvent = trainerEventObjId;
|
||||
gSpecialVar_LastTalked = gObjectEvents[trainerEventObjId].localId;
|
||||
BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
|
||||
ScriptContext1_SetupScript(gUnknown_81A4EB4);
|
||||
ScriptContext1_SetupScript(EventScript_DoTrainerBattleFromApproach);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
@@ -841,7 +838,7 @@ void SetUpTrainerMovement(void)
|
||||
SetTrainerMovementType(objectEvent, GetTrainerFacingDirectionMovementType(objectEvent->facingDirection));
|
||||
}
|
||||
|
||||
u8 ScrSpecial_GetTrainerBattleMode(void)
|
||||
u8 GetTrainerBattleMode(void)
|
||||
{
|
||||
return sTrainerBattleMode;
|
||||
}
|
||||
@@ -851,7 +848,7 @@ u16 GetRivalBattleFlags(void)
|
||||
return sRivalBattleFlags;
|
||||
}
|
||||
|
||||
u16 ScrSpecial_HasTrainerBeenFought(void)
|
||||
u16 Script_HasTrainerBeenFought(void)
|
||||
{
|
||||
return FlagGet(GetTrainerAFlag());
|
||||
}
|
||||
@@ -882,10 +879,10 @@ void ClearTrainerFlag(u16 trainerId)
|
||||
FlagClear(FLAG_TRAINER_FLAG_START + trainerId);
|
||||
}
|
||||
|
||||
void BattleSetup_StartTrainerBattle(void)
|
||||
void StartTrainerBattle(void)
|
||||
{
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
|
||||
if (ScrSpecial_GetTrainerBattleMode() == TRAINER_BATTLE_EARLY_RIVAL && GetRivalBattleFlags() & RIVAL_BATTLE_TUTORIAL)
|
||||
if (GetTrainerBattleMode() == TRAINER_BATTLE_EARLY_RIVAL && GetRivalBattleFlags() & RIVAL_BATTLE_TUTORIAL)
|
||||
gBattleTypeFlags |= BATTLE_TYPE_FIRST_BATTLE;
|
||||
gMain.savedCallback = CB2_EndTrainerBattle;
|
||||
DoTrainerBattle();
|
||||
@@ -959,7 +956,7 @@ static void CB2_EndRematchBattle(void)
|
||||
}
|
||||
}
|
||||
|
||||
void ScrSpecial_StartTrainerEyeRematch(void)
|
||||
void StartRematchBattle(void)
|
||||
{
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
|
||||
gMain.savedCallback = CB2_EndRematchBattle;
|
||||
@@ -967,7 +964,7 @@ void ScrSpecial_StartTrainerEyeRematch(void)
|
||||
ScriptContext1_Stop();
|
||||
}
|
||||
|
||||
void ScrSpecial_ShowTrainerIntroSpeech(void)
|
||||
void ShowTrainerIntroSpeech(void)
|
||||
{
|
||||
ShowFieldMessage(GetIntroSpeechOfApproachingTrainer());
|
||||
}
|
||||
@@ -988,7 +985,7 @@ const u8 *BattleSetup_GetTrainerPostBattleScript(void)
|
||||
return Test_EventScript_Sign;
|
||||
}
|
||||
|
||||
void ScrSpecial_ShowTrainerNonBattlingSpeech(void)
|
||||
void ShowTrainerCantBattleSpeech(void)
|
||||
{
|
||||
ShowFieldMessage(GetTrainerCantBattleSpeech());
|
||||
}
|
||||
|
||||
+11
-11
@@ -24,7 +24,7 @@
|
||||
#include "constants/moves.h"
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/vars.h"
|
||||
#include "constants/object_events.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
static EWRAM_DATA u16 sSpecialVar_0x8004_Copy = 0;
|
||||
|
||||
@@ -177,7 +177,7 @@ static const u16 sLongStreakPrizes[] = {
|
||||
ITEM_CHOICE_BAND
|
||||
};
|
||||
|
||||
void ScrSpecial_BattleTowerMapScript2(void)
|
||||
void BattleTowerMapScript2(void)
|
||||
{
|
||||
u8 count = 0;
|
||||
s32 levelType;
|
||||
@@ -389,7 +389,7 @@ void ChooseNextBattleTowerTrainer(void)
|
||||
|
||||
static void SetBattleTowerTrainerGfxId(u8 trainerClass)
|
||||
{
|
||||
VarSet(VAR_OBJ_GFX_ID_0, OBJECT_EVENT_GFX_YOUNGSTER);
|
||||
VarSet(VAR_OBJ_GFX_ID_0, OBJ_EVENT_GFX_YOUNGSTER);
|
||||
}
|
||||
|
||||
void SetEReaderTrainerGfxId(void)
|
||||
@@ -825,7 +825,7 @@ void CheckPartyBattleTowerBanlist(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintBattleTowerTrainerMessage(const u16 *greeting)
|
||||
static void BufferBattleTowerTrainerMessage(const u16 *greeting)
|
||||
{
|
||||
s32 i;
|
||||
if (EC_DoesEasyChatStringFitOnLine(greeting, 3, 2, 18))
|
||||
@@ -847,11 +847,11 @@ static void PrintBattleTowerTrainerMessage(const u16 *greeting)
|
||||
void PrintBattleTowerTrainerGreeting(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
|
||||
PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
|
||||
BufferBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
|
||||
else if (gSaveBlock2Ptr->battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
|
||||
PrintBattleTowerTrainerMessage(gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].greeting);
|
||||
BufferBattleTowerTrainerMessage(gBattleTowerTrainers[gSaveBlock2Ptr->battleTower.battleTowerTrainerId].greeting);
|
||||
else
|
||||
PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting);
|
||||
BufferBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.records[gSaveBlock2Ptr->battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting);
|
||||
}
|
||||
|
||||
static void CB2_FinishEReaderBattle(void)
|
||||
@@ -1395,9 +1395,9 @@ void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
|
||||
((u32 *)ereaderTrainer)[i] = 0;
|
||||
}
|
||||
|
||||
void PrintEReaderTrainerGreeting(void)
|
||||
void BufferEReaderTrainerGreeting(void)
|
||||
{
|
||||
PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
|
||||
BufferBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.greeting);
|
||||
}
|
||||
|
||||
static void PrintEReaderTrainerFarewellMessage(void)
|
||||
@@ -1405,9 +1405,9 @@ static void PrintEReaderTrainerFarewellMessage(void)
|
||||
if (gBattleOutcome == B_OUTCOME_DREW)
|
||||
gStringVar4[0] = EOS;
|
||||
else if (gBattleOutcome == B_OUTCOME_WON)
|
||||
PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerWon);
|
||||
BufferBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerWon);
|
||||
else
|
||||
PrintBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerLost);
|
||||
BufferBattleTowerTrainerMessage(gSaveBlock2Ptr->battleTower.ereaderTrainer.farewellPlayerLost);
|
||||
}
|
||||
|
||||
void Dummy_TryEnableBravoTrainerBattleTower(void)
|
||||
|
||||
@@ -644,7 +644,7 @@ static bool8 BT_Phase1Blink(struct Task *task)
|
||||
|
||||
static bool8 BT_WaitForPhase1(struct Task *task)
|
||||
{
|
||||
if (FindTaskIdByFunc(sBT_Phase1Tasks[task->tTransitionId]) == TASK_NONE)
|
||||
if (FindTaskIdByFunc(sBT_Phase1Tasks[task->tTransitionId]) == TAIL_SENTINEL)
|
||||
{
|
||||
++task->tState;
|
||||
return TRUE;
|
||||
@@ -665,7 +665,7 @@ static bool8 BT_Phase2LaunchAnimTask(struct Task *task)
|
||||
static bool8 BT_WaitForPhase2(struct Task *task)
|
||||
{
|
||||
task->tTransitionDone = FALSE;
|
||||
if (FindTaskIdByFunc(sBT_Phase2Tasks[task->tTransitionId]) == TASK_NONE)
|
||||
if (FindTaskIdByFunc(sBT_Phase2Tasks[task->tTransitionId]) == TAIL_SENTINEL)
|
||||
task->tTransitionDone = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -3432,7 +3432,7 @@ static void BT_CreatePhase1SubTask(s16 fadeOutDelay, s16 fadeInDelay, s16 blinkT
|
||||
|
||||
static bool8 BT_IsPhase1Done(void)
|
||||
{
|
||||
if (FindTaskIdByFunc(BT_Phase1SubTask) == TASK_NONE)
|
||||
if (FindTaskIdByFunc(BT_Phase1SubTask) == TAIL_SENTINEL)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "pokemon.h"
|
||||
#include "malloc.h"
|
||||
#include "trainer_tower.h"
|
||||
#include "battle_util2.h"
|
||||
|
||||
void AllocateBattleResources(void)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,228 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "berry_crush.h"
|
||||
#include "berry_pouch.h"
|
||||
#include "berry_powder.h"
|
||||
#include "item.h"
|
||||
#include "item_menu.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "math_util.h"
|
||||
#include "overworld.h"
|
||||
#include "task.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
static EWRAM_DATA struct BerryCrushGame *gUnknown_203F3DC = NULL;
|
||||
|
||||
static void sub_814B860(void);
|
||||
static void sub_814BA6C(void);
|
||||
static void sub_814BA80(void);
|
||||
static void sub_814BA98(u8 taskId);
|
||||
|
||||
struct BerryCrushGame *sub_814B6F0(void)
|
||||
{
|
||||
return gUnknown_203F3DC;
|
||||
}
|
||||
|
||||
u32 sub_814B6FC(MainCallback callback)
|
||||
{
|
||||
if (!gUnknown_203F3DC)
|
||||
return 2;
|
||||
|
||||
if (!callback)
|
||||
callback = gUnknown_203F3DC->unk0;
|
||||
|
||||
DestroyTask(gUnknown_203F3DC->unkA);
|
||||
FREE_AND_SET_NULL(gUnknown_203F3DC);
|
||||
SetMainCallback2(callback);
|
||||
if (callback == CB2_ReturnToField)
|
||||
{
|
||||
PlayNewMapMusic(MUS_POKECEN);
|
||||
SetMainCallback1(CB1_Overworld);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void StartBerryCrush(MainCallback callback)
|
||||
{
|
||||
u8 playerCount = 0;
|
||||
u8 multiplayerId;
|
||||
|
||||
if (!gReceivedRemoteLinkPlayers || gWirelessCommType == 0)
|
||||
{
|
||||
SetMainCallback2(callback);
|
||||
Rfu.linkman_param[0] = 0;
|
||||
Rfu.linkman_param[1] = 0;
|
||||
Rfu.errorState = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
playerCount = GetLinkPlayerCount();
|
||||
multiplayerId = GetMultiplayerId();
|
||||
if (playerCount < 2 || multiplayerId >= playerCount)
|
||||
{
|
||||
SetMainCallback2(callback);
|
||||
Rfu.linkman_param[0] = 0;
|
||||
Rfu.linkman_param[1] = 0;
|
||||
Rfu.errorState = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
gUnknown_203F3DC = AllocZeroed(sizeof(*gUnknown_203F3DC));
|
||||
if (!gUnknown_203F3DC)
|
||||
{
|
||||
SetMainCallback2(callback);
|
||||
Rfu.linkman_param[0] = 0;
|
||||
Rfu.linkman_param[1] = 0;
|
||||
Rfu.errorState = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
gUnknown_203F3DC->unk0 = callback;
|
||||
gUnknown_203F3DC->unk8 = multiplayerId;
|
||||
gUnknown_203F3DC->unk9 = playerCount;
|
||||
sub_814BABC(gUnknown_203F3DC);
|
||||
gUnknown_203F3DC->unk12 = 1;
|
||||
gUnknown_203F3DC->unkE = 1;
|
||||
gUnknown_203F3DC->unkF = 6;
|
||||
sub_814D564(gUnknown_203F3DC->unk36, 1, -1, 0, 16, 0, 0);
|
||||
sub_814BB4C(4, 1, gUnknown_203F3DC->unk36);
|
||||
SetMainCallback2(sub_814BA80);
|
||||
gUnknown_203F3DC->unkA = CreateTask(sub_814BA98, 8);
|
||||
}
|
||||
|
||||
static void sub_814B860(void)
|
||||
{
|
||||
if (gSpecialVar_ItemId < FIRST_BERRY_INDEX || gSpecialVar_ItemId > LAST_BERRY_INDEX + 1)
|
||||
gSpecialVar_ItemId = ITEM_CHERI_BERRY;
|
||||
else
|
||||
RemoveBagItem(gSpecialVar_ItemId, 1);
|
||||
|
||||
gUnknown_203F3DC->unk68.as_four_players.others[gUnknown_203F3DC->unk8].unk0 = gSpecialVar_ItemId - FIRST_BERRY_INDEX;
|
||||
gUnknown_203F3DC->unkE = 1;
|
||||
gUnknown_203F3DC->unkF = 9;
|
||||
sub_814D564(gUnknown_203F3DC->unk36, 0, -1, 0, 16, 0, 0);
|
||||
sub_814BB4C(4, 1, gUnknown_203F3DC->unk36);
|
||||
gUnknown_203F3DC->unkA = CreateTask(sub_814BA98, 8);
|
||||
SetMainCallback2(sub_814BA80);
|
||||
}
|
||||
|
||||
void sub_814B8F0(void)
|
||||
{
|
||||
DestroyTask(gUnknown_203F3DC->unkA);
|
||||
InitBerryPouch(BERRYPOUCH_FROMBERRYCRUSH, sub_814B860, FALSE);
|
||||
}
|
||||
|
||||
void sub_814B914(void)
|
||||
{
|
||||
SetVBlankCallback(sub_814BA6C);
|
||||
}
|
||||
|
||||
void sub_814B924(void)
|
||||
{
|
||||
SetVBlankCallback(NULL);
|
||||
}
|
||||
|
||||
void sub_814B930(void)
|
||||
{
|
||||
u32 var0, var1;
|
||||
|
||||
var0 = gUnknown_203F3DC->unk68.as_four_players.unk00.unk04;
|
||||
var0 <<= 8;
|
||||
var0 = sub_80D8B68(var0, 60 << 8);
|
||||
var1 = gUnknown_203F3DC->unk68.as_four_players.unk00.unk0A;
|
||||
var1 <<= 8;
|
||||
var1 = sub_80D8B68(var1, var0) & 0xFFFF;
|
||||
gUnknown_203F3DC->unk16 = var1;
|
||||
switch (gUnknown_203F3DC->unk9)
|
||||
{
|
||||
case 2:
|
||||
if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[0])
|
||||
{
|
||||
gUnknown_203F3DC->unk25_1 = 1;
|
||||
gSaveBlock2Ptr->berryCrush.berryCrushResults[0] = gUnknown_203F3DC->unk16;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[1])
|
||||
{
|
||||
gUnknown_203F3DC->unk25_1 = 1;
|
||||
gSaveBlock2Ptr->berryCrush.berryCrushResults[1] = gUnknown_203F3DC->unk16;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[2])
|
||||
{
|
||||
gUnknown_203F3DC->unk25_1 = 1;
|
||||
gSaveBlock2Ptr->berryCrush.berryCrushResults[2] = gUnknown_203F3DC->unk16;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (gUnknown_203F3DC->unk16 > gSaveBlock2Ptr->berryCrush.berryCrushResults[3])
|
||||
{
|
||||
gUnknown_203F3DC->unk25_1 = 1;
|
||||
gSaveBlock2Ptr->berryCrush.berryCrushResults[3] = gUnknown_203F3DC->unk16;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
gUnknown_203F3DC->unk1C = gUnknown_203F3DC->unk68.as_four_players.unk00.unk00;
|
||||
if (GiveBerryPowder(gUnknown_203F3DC->unk1C))
|
||||
return;
|
||||
|
||||
gUnknown_203F3DC->unk25_0 = 1;
|
||||
}
|
||||
|
||||
static void sub_814BA6C(void)
|
||||
{
|
||||
TransferPlttBuffer();
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
}
|
||||
|
||||
static void sub_814BA80(void)
|
||||
{
|
||||
RunTasks();
|
||||
RunTextPrinters();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
}
|
||||
|
||||
static void sub_814BA98(u8 taskId)
|
||||
{
|
||||
if (gUnknown_203F3DC->unk4)
|
||||
gUnknown_203F3DC->unk4(gUnknown_203F3DC, gUnknown_203F3DC->unk36);
|
||||
|
||||
sub_814D9CC(gUnknown_203F3DC);
|
||||
}
|
||||
|
||||
void sub_814BABC(struct BerryCrushGame *arg0)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for (i = 0; i < arg0->unk9; i++)
|
||||
{
|
||||
StringCopy(PLAYER_UNK14(arg0, i), gLinkPlayers[i].name);
|
||||
arg0->unk68.as_five_players.unk1C[i].unk14[PLAYER_NAME_LENGTH] = EOS;
|
||||
}
|
||||
for (; i < 5; i++)
|
||||
{
|
||||
memset(PLAYER_UNK14(arg0, i), 1, PLAYER_NAME_LENGTH);
|
||||
arg0->unk68.as_five_players.unk1C[i].unk14[PLAYER_NAME_LENGTH] = EOS;
|
||||
}
|
||||
|
||||
switch (gSaveBlock2Ptr->optionsTextSpeed)
|
||||
{
|
||||
case OPTIONS_TEXT_SPEED_SLOW:
|
||||
arg0->unkB = 8;
|
||||
break;
|
||||
case OPTIONS_TEXT_SPEED_MID:
|
||||
arg0->unkB = 4;
|
||||
break;
|
||||
case OPTIONS_TEXT_SPEED_FAST:
|
||||
arg0->unkB = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
+1480
File diff suppressed because it is too large
Load Diff
+1386
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,12 @@
|
||||
#include "global.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "multiboot.h"
|
||||
#include "malloc.h"
|
||||
#include "bg.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "sprite.h"
|
||||
#include "task.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "window.h"
|
||||
#include "text.h"
|
||||
#include "help_system.h"
|
||||
#include "menu.h"
|
||||
#include "m4a.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
+2
-2
@@ -748,7 +748,7 @@ static void BerryPouchSetArrowCursorAt(u8 y, u8 colorIdx)
|
||||
}
|
||||
else
|
||||
{
|
||||
BerryPouchPrint(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx);
|
||||
BerryPouchPrint(0, 2, gText_SelectorArrow2, 1, y, 0, 0, 0, colorIdx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1027,7 +1027,7 @@ static void CreateNormalContextMenu(u8 taskId)
|
||||
Menu_InitCursor(windowId, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumOptions, 0);
|
||||
windowId2 = GetOrCreateVariableWindow(6);
|
||||
CopySelectedListMenuItemName(data[1], gStringVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
|
||||
BerryPouchPrint(windowId2, 2, gStringVar4, 0, 2, 1, 2, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -36,7 +36,7 @@ static bool8 HasEnoughBerryPowder(u32 cost)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 Special_HasEnoughBerryPowder(void)
|
||||
bool8 Script_HasEnoughBerryPowder(void)
|
||||
{
|
||||
if (DecryptBerryPowder(&gSaveBlock2Ptr->berryCrush.berryPowderAmount) < gSpecialVar_0x8004)
|
||||
return FALSE;
|
||||
@@ -73,7 +73,7 @@ static bool8 TakeBerryPowder(u32 cost)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 Special_TakeBerryPowder(void)
|
||||
bool8 Script_TakeBerryPowder(void)
|
||||
{
|
||||
u32 *powder = &gSaveBlock2Ptr->berryCrush.berryPowderAmount;
|
||||
if (!HasEnoughBerryPowder(gSpecialVar_0x8004))
|
||||
|
||||
@@ -0,0 +1,964 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "battle.h"
|
||||
#include "battle_records.h"
|
||||
#include "cable_club.h"
|
||||
#include "event_data.h"
|
||||
#include "event_scripts.h"
|
||||
#include "field_message_box.h"
|
||||
#include "field_weather.h"
|
||||
#include "link.h"
|
||||
#include "load_save.h"
|
||||
#include "m4a.h"
|
||||
#include "mevent.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "overworld.h"
|
||||
#include "quest_log.h"
|
||||
#include "script.h"
|
||||
#include "script_pokemon_util.h"
|
||||
#include "start_menu.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "trade.h"
|
||||
#include "trainer_card.h"
|
||||
#include "union_room.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/cable_club.h"
|
||||
#include "constants/field_weather.h"
|
||||
|
||||
u32 UnusedVarNeededToMatch[8];
|
||||
|
||||
static void Task_Linkup0(u8 taskId);
|
||||
static void Task_Linkup1(u8 taskId);
|
||||
static void Task_LinkupMaster_2(u8 taskId);
|
||||
static void Task_LinkupMaster_3(u8 taskId);
|
||||
static void Task_LinkupMaster_4(u8 taskId);
|
||||
static void Task_LinkupMaster_5(u8 taskId);
|
||||
static void Task_LinkupSlave_2(u8 taskId);
|
||||
static void Task_LinkupMaster_6(u8 taskId);
|
||||
static void Task_Linkup_6a(u8 taskId);
|
||||
static void Task_Linkup_7(u8 taskId);
|
||||
static void Task_Linkup_Canceled(u8 taskId);
|
||||
static void Task_Linkup_ErroredOut(u8 taskId);
|
||||
static bool8 Task_Linkup_TimedOut(u8 taskId);
|
||||
static void Task_ReestablishLinkInCableClubRoom_0(u8 taskId);
|
||||
static void Task_ReestablishLinkInCableClubRoom_1(u8 taskId);
|
||||
static void Task_ReestablishLinkInCableClubRoom_Master(u8 taskId);
|
||||
static void Task_ReestablishLinkInCableClubRoom_2(u8 taskId);
|
||||
|
||||
static const struct WindowTemplate gUnknown_83C6AB0 = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 16,
|
||||
.tilemapTop = 11,
|
||||
.width = 11,
|
||||
.height = 2,
|
||||
.paletteNum = 15,
|
||||
.baseBlock = 0x125
|
||||
};
|
||||
|
||||
static const u8 *const sStarsMessagePtrs[] = {
|
||||
gUnknown_841DF8B,
|
||||
gUnknown_841DF92,
|
||||
gUnknown_841DF99,
|
||||
gUnknown_841DFA0
|
||||
};
|
||||
|
||||
static void CreateLinkupTask(u8 lower, u8 higher)
|
||||
{
|
||||
u8 taskId;
|
||||
if (FindTaskIdByFunc(Task_Linkup0) == 0xFF)
|
||||
{
|
||||
taskId = CreateTask(Task_Linkup0, 80);
|
||||
gTasks[taskId].data[1] = lower;
|
||||
gTasks[taskId].data[2] = higher;
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintNewCountOnLinkPlayerCountDisplayWindow(u16 windowId, s32 num)
|
||||
{
|
||||
ConvertIntToDecimalStringN(gStringVar1, num, STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||
SetStdWindowBorderStyle(windowId, FALSE);
|
||||
StringExpandPlaceholders(gStringVar4, gUnknown_841DF82);
|
||||
AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 0, TEXT_SPEED_FF, NULL);
|
||||
CopyWindowToVram(windowId, 3);
|
||||
}
|
||||
|
||||
static void DestroyLinkPlayerCountDisplayWindow(u16 windowId)
|
||||
{
|
||||
ClearStdWindowAndFrame(windowId, FALSE);
|
||||
CopyWindowToVram(windowId, 3);
|
||||
}
|
||||
|
||||
static void UpdateLinkPlayerCountDisplay(u8 taskId, u8 num)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (num != data[3])
|
||||
{
|
||||
if (num < 2)
|
||||
DestroyLinkPlayerCountDisplayWindow(data[5]);
|
||||
else
|
||||
PrintNewCountOnLinkPlayerCountDisplayWindow(data[5], num);
|
||||
data[3] = num;
|
||||
}
|
||||
}
|
||||
|
||||
static u16 sub_8080844(u8 lower, u8 higher)
|
||||
{
|
||||
switch (GetLinkPlayerDataExchangeStatusTimed(lower, higher))
|
||||
{
|
||||
case EXCHANGE_COMPLETE:
|
||||
return 1;
|
||||
case EXCHANGE_IN_PROGRESS:
|
||||
return 3;
|
||||
case EXCHANGE_STAT_4:
|
||||
return 7;
|
||||
case EXCHANGE_STAT_5:
|
||||
return 9;
|
||||
case EXCHANGE_STAT_6:
|
||||
ConvertIntToDecimalStringN(gStringVar1, GetLinkPlayerCount_2(), STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||
return 4;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 sub_80808BC(u8 taskId)
|
||||
{
|
||||
if (HasLinkErrorOccurred() == TRUE)
|
||||
{
|
||||
gTasks[taskId].func = Task_Linkup_ErroredOut;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 sub_80808F0(u8 taskId)
|
||||
{
|
||||
if (JOY_NEW(B_BUTTON) && !IsLinkConnectionEstablished())
|
||||
{
|
||||
gLinkType = 0;
|
||||
gTasks[taskId].func = Task_Linkup_Canceled;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 sub_808093C(u8 taskId)
|
||||
{
|
||||
if (IsLinkConnectionEstablished())
|
||||
{
|
||||
SetSuppressLinkErrorMessage(TRUE);
|
||||
}
|
||||
if (JOY_NEW(B_BUTTON))
|
||||
{
|
||||
gLinkType = 0;
|
||||
gTasks[taskId].func = Task_Linkup_Canceled;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 sub_8080990(u8 taskId)
|
||||
{
|
||||
if (GetSioMultiSI() == TRUE)
|
||||
{
|
||||
gTasks[taskId].func = Task_Linkup_ErroredOut;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_80809C4(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
if (gTasks[taskId].data[0] == 10)
|
||||
{
|
||||
sub_800A474(2);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_Linkup0(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (data[0] == 0)
|
||||
{
|
||||
OpenLinkTimed();
|
||||
sub_800AA24();
|
||||
ResetLinkPlayers();
|
||||
data[5] = AddWindow(&gUnknown_83C6AB0);
|
||||
}
|
||||
else if (data[0] > 9)
|
||||
{
|
||||
gTasks[taskId].func = Task_Linkup1;
|
||||
}
|
||||
data[0]++;
|
||||
}
|
||||
|
||||
static void Task_Linkup1(u8 taskId)
|
||||
{
|
||||
u8 linkPlayerCount = GetLinkPlayerCount_2();
|
||||
if (sub_80808F0(taskId) != TRUE && sub_808093C(taskId) != TRUE && linkPlayerCount >= 2)
|
||||
{
|
||||
SetSuppressLinkErrorMessage(TRUE);
|
||||
gTasks[taskId].data[3] = 0;
|
||||
if (IsLinkMaster() == TRUE)
|
||||
{
|
||||
PlaySE(SE_PIN);
|
||||
ShowFieldAutoScrollMessage(CableClub_Text_WhenAllPlayersReadyAConfirmBCancel);
|
||||
gTasks[taskId].func = Task_LinkupMaster_2;
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySE(SE_BOO);
|
||||
ShowFieldAutoScrollMessage(CableClub_Text_AwaitingLinkupBCancel);
|
||||
gTasks[taskId].func = Task_LinkupSlave_2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_LinkupMaster_2(u8 taskId)
|
||||
{
|
||||
if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !textbox_any_visible())
|
||||
{
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].func = Task_LinkupMaster_3;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_LinkupMaster_3(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
s32 linkPlayerCount = GetLinkPlayerCount_2();
|
||||
if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE)
|
||||
{
|
||||
UpdateLinkPlayerCountDisplay(taskId, linkPlayerCount);
|
||||
if (JOY_NEW(A_BUTTON) && linkPlayerCount >= data[1])
|
||||
{
|
||||
sub_800A900(linkPlayerCount);
|
||||
DestroyLinkPlayerCountDisplayWindow(data[5]);
|
||||
ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
|
||||
ShowFieldAutoScrollMessage(CableClub_Text_StartLinkWithXPlayersAConfirmBCancel);
|
||||
gTasks[taskId].func = Task_LinkupMaster_4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_LinkupMaster_4(u8 taskId)
|
||||
{
|
||||
if (sub_80808F0(taskId) != TRUE && sub_8080990(taskId) != TRUE && sub_80808BC(taskId) != TRUE && !textbox_any_visible())
|
||||
{
|
||||
if (GetSavedPlayerCount() != GetLinkPlayerCount_2())
|
||||
{
|
||||
ShowFieldAutoScrollMessage(CableClub_Text_WhenAllPlayersReadyAConfirmBCancel);
|
||||
gTasks[taskId].func = Task_LinkupMaster_2;
|
||||
}
|
||||
else if (JOY_HELD(B_BUTTON))
|
||||
{
|
||||
ShowFieldAutoScrollMessage(CableClub_Text_WhenAllPlayersReadyAConfirmBCancel);
|
||||
gTasks[taskId].func = Task_LinkupMaster_2;
|
||||
}
|
||||
else if (JOY_HELD(A_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
CheckShouldAdvanceLinkState();
|
||||
gTasks[taskId].func = Task_LinkupMaster_5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_LinkupMaster_5(u8 taskId)
|
||||
{
|
||||
u8 lower = gTasks[taskId].data[1];
|
||||
u8 higher = gTasks[taskId].data[2];
|
||||
u16 *res;
|
||||
if (sub_80808BC(taskId) != TRUE && Task_Linkup_TimedOut(taskId) != TRUE)
|
||||
{
|
||||
if (GetLinkPlayerCount_2() != GetSavedPlayerCount())
|
||||
{
|
||||
gTasks[taskId].func = Task_Linkup_ErroredOut;
|
||||
}
|
||||
else
|
||||
{
|
||||
res = &gSpecialVar_Result;
|
||||
*res = sub_8080844(lower, higher);
|
||||
if (*res)
|
||||
gTasks[taskId].func = Task_LinkupMaster_6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_LinkupSlave_2(u8 taskId)
|
||||
{
|
||||
u8 lower = gTasks[taskId].data[1];
|
||||
u8 higher = gTasks[taskId].data[2];
|
||||
u16 *res;
|
||||
if (sub_80808F0(taskId) != TRUE && sub_80808BC(taskId) != TRUE)
|
||||
{
|
||||
res = &gSpecialVar_Result;
|
||||
*res = sub_8080844(lower, higher);
|
||||
if (*res)
|
||||
{
|
||||
if (*res == 3 || *res == 4)
|
||||
{
|
||||
Link_TryStartSend5FFF();
|
||||
HideFieldMessageBox();
|
||||
gTasks[taskId].func = Task_Linkup_7;
|
||||
}
|
||||
else if (*res == 7 || *res == 9)
|
||||
{
|
||||
CloseLink();
|
||||
HideFieldMessageBox();
|
||||
gTasks[taskId].func = Task_Linkup_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
|
||||
gLocalLinkPlayerId = GetMultiplayerId();
|
||||
sub_800A900(gFieldLinkPlayerCount);
|
||||
TrainerCard_GenerateCardForLinkPlayer((void*)gBlockSendBuffer);
|
||||
gTasks[taskId].func = Task_Linkup_6a;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static bool32 AnyConnectedPartnersPlayingRS(void)
|
||||
{
|
||||
int i;
|
||||
u16 version;
|
||||
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
version = gLinkPlayers[i].version & 0xFF;
|
||||
if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Task_LinkupMaster_6(u8 taskId)
|
||||
{
|
||||
if (sub_80808BC(taskId) != TRUE)
|
||||
{
|
||||
if (gSpecialVar_Result == 4)
|
||||
{
|
||||
if (AnyConnectedPartnersPlayingRS() == TRUE)
|
||||
CloseLink();
|
||||
else
|
||||
Link_TryStartSend5FFF();
|
||||
HideFieldMessageBox();
|
||||
gTasks[taskId].func = Task_Linkup_7;
|
||||
}
|
||||
else if (gSpecialVar_Result == 3)
|
||||
{
|
||||
Link_TryStartSend5FFF();
|
||||
HideFieldMessageBox();
|
||||
gTasks[taskId].func = Task_Linkup_7;
|
||||
}
|
||||
else if (gSpecialVar_Result == 7 || gSpecialVar_Result == 9)
|
||||
{
|
||||
CloseLink();
|
||||
HideFieldMessageBox();
|
||||
gTasks[taskId].func = Task_Linkup_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
|
||||
gLocalLinkPlayerId = GetMultiplayerId();
|
||||
sub_800A900(gFieldLinkPlayerCount);
|
||||
TrainerCard_GenerateCardForLinkPlayer((void*)gBlockSendBuffer);
|
||||
gTasks[taskId].func = Task_Linkup_6a;
|
||||
sub_800A474(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_Linkup_6a(u8 taskId)
|
||||
{
|
||||
u8 i;
|
||||
u16 version;
|
||||
u8 * dest;
|
||||
if (sub_80808BC(taskId) != TRUE && GetBlockReceivedStatus() == sub_800A8A4())
|
||||
{
|
||||
for(i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
version = gLinkPlayers[i].version & 0xFF;
|
||||
if (version != VERSION_FIRE_RED && version != VERSION_LEAF_GREEN)
|
||||
{
|
||||
const struct TrainerCardRSE * src = (const struct TrainerCardRSE *)gBlockRecvBuffer[i];
|
||||
gTrainerCards[i].rse = *src;
|
||||
gTrainerCards[i].version = gLinkPlayers[i].version;
|
||||
}
|
||||
else
|
||||
{
|
||||
const struct TrainerCard * src = (const struct TrainerCard *)gBlockRecvBuffer[i];
|
||||
gTrainerCards[i] = *src;
|
||||
}
|
||||
}
|
||||
SetSuppressLinkErrorMessage(FALSE);
|
||||
ResetBlockReceivedFlags();
|
||||
HideFieldMessageBox();
|
||||
if (gSpecialVar_Result == 1)
|
||||
{
|
||||
// Dumb trick required to match
|
||||
if (gLinkType == LINKTYPE_0x4411)
|
||||
*UnusedVarNeededToMatch += 0;
|
||||
DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]);
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
Link_TryStartSend5FFF();
|
||||
gTasks[taskId].func = Task_Linkup_7;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_Linkup_7(u8 taskId)
|
||||
{
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
{
|
||||
DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]);
|
||||
EnableBothScriptContexts();
|
||||
RemoveWindow(gTasks[taskId].data[5]);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_Linkup_Canceled(u8 taskId)
|
||||
{
|
||||
gSpecialVar_Result = 5;
|
||||
DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]);
|
||||
HideFieldMessageBox();
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
static void Task_Linkup_ErroredOut(u8 taskId)
|
||||
{
|
||||
gSpecialVar_Result = 6;
|
||||
DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]);
|
||||
HideFieldMessageBox();
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
static bool8 Task_Linkup_TimedOut(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].data[4]++;
|
||||
if (gTasks[taskId].data[4] > 600)
|
||||
{
|
||||
gTasks[taskId].func = Task_Linkup_ErroredOut;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void TryBattleLinkup(void)
|
||||
{
|
||||
u8 lower, higher;
|
||||
higher = lower = 2;
|
||||
switch (gSpecialVar_0x8004)
|
||||
{
|
||||
case USING_SINGLE_BATTLE:
|
||||
higher = lower = 2;
|
||||
gLinkType = LINKTYPE_SINGLE_BATTLE;
|
||||
break;
|
||||
case USING_DOUBLE_BATTLE:
|
||||
higher = lower = 2;
|
||||
gLinkType = LINKTYPE_DOUBLE_BATTLE;
|
||||
break;
|
||||
case USING_MULTI_BATTLE:
|
||||
higher = lower = 4;
|
||||
gLinkType = LINKTYPE_MULTI_BATTLE;
|
||||
break;
|
||||
}
|
||||
CreateLinkupTask(lower, higher);
|
||||
}
|
||||
|
||||
void TryTradeLinkup(void)
|
||||
{
|
||||
gLinkType = LINKTYPE_0x1133;
|
||||
gBattleTypeFlags = 0;
|
||||
CreateLinkupTask(2, 2);
|
||||
}
|
||||
|
||||
void TryRecordMixLinkup(void)
|
||||
{
|
||||
gSpecialVar_Result = 0;
|
||||
gLinkType = LINKTYPE_0x3311;
|
||||
gBattleTypeFlags = 0;
|
||||
CreateLinkupTask(2, 4);
|
||||
}
|
||||
|
||||
void sub_8081128(void)
|
||||
{
|
||||
gLinkType = LINKTYPE_0x6601;
|
||||
gBattleTypeFlags = 0;
|
||||
CreateLinkupTask(4, 4);
|
||||
}
|
||||
|
||||
u8 CreateTask_ReestablishLinkInCableClubRoom(void)
|
||||
{
|
||||
if (FuncIsActiveTask(Task_ReestablishLinkInCableClubRoom_0))
|
||||
return 0xFF;
|
||||
switch (gSpecialVar_0x8004)
|
||||
{
|
||||
case USING_SINGLE_BATTLE:
|
||||
gLinkType = LINKTYPE_SINGLE_BATTLE;
|
||||
break;
|
||||
case USING_DOUBLE_BATTLE:
|
||||
gLinkType = LINKTYPE_DOUBLE_BATTLE;
|
||||
break;
|
||||
case USING_MULTI_BATTLE:
|
||||
gLinkType = LINKTYPE_MULTI_BATTLE;
|
||||
break;
|
||||
case USING_TRADE_CENTER:
|
||||
gLinkType = LINKTYPE_0x1111;
|
||||
break;
|
||||
case USING_RECORD_CORNER:
|
||||
gLinkType = LINKTYPE_0x3322;
|
||||
break;
|
||||
}
|
||||
return CreateTask(Task_ReestablishLinkInCableClubRoom_0, 80);
|
||||
}
|
||||
|
||||
static void Task_ReestablishLinkInCableClubRoom_0(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (data[0] == 0)
|
||||
{
|
||||
OpenLink();
|
||||
ResetLinkPlayers();
|
||||
CreateTask(sub_8081A90, 80);
|
||||
}
|
||||
else if (data[0] > 9)
|
||||
gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_1;
|
||||
data[0]++;
|
||||
}
|
||||
|
||||
static void Task_ReestablishLinkInCableClubRoom_1(u8 taskId)
|
||||
{
|
||||
if (GetLinkPlayerCount_2() >= 2)
|
||||
{
|
||||
if (IsLinkMaster() == TRUE)
|
||||
{
|
||||
gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_Master;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_ReestablishLinkInCableClubRoom_Master(u8 taskId)
|
||||
{
|
||||
if (GetSavedPlayerCount() == GetLinkPlayerCount_2())
|
||||
{
|
||||
CheckShouldAdvanceLinkState();
|
||||
gTasks[taskId].func = Task_ReestablishLinkInCableClubRoom_2;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_ReestablishLinkInCableClubRoom_2(u8 taskId)
|
||||
{
|
||||
if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
|
||||
{
|
||||
sub_800A9A4();
|
||||
sub_8009FE8();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void CableClub_AskSaveTheGame(void)
|
||||
{
|
||||
Field_AskSaveTheGame();
|
||||
}
|
||||
|
||||
static void Task_StartWiredCableClubBattle(u8 taskId)
|
||||
{
|
||||
struct Task * task = &gTasks[taskId];
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gLinkType = LINKTYPE_BATTLE;
|
||||
ClearLinkCallback_2();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
task->data[1]++;
|
||||
if (task->data[1] > 20)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
Link_TryStartSend5FFF();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 4:
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 5:
|
||||
if (gLinkPlayers[0].trainerId & 1)
|
||||
PlayMapChosenOrBattleBGM(MUS_BATTLE32);
|
||||
else
|
||||
PlayMapChosenOrBattleBGM(MUS_BATTLE20);
|
||||
switch (gSpecialVar_0x8004)
|
||||
{
|
||||
case USING_SINGLE_BATTLE:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK;
|
||||
break;
|
||||
case USING_DOUBLE_BATTLE:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE;
|
||||
break;
|
||||
case USING_MULTI_BATTLE:
|
||||
ReducePlayerPartyToThree();
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI;
|
||||
break;
|
||||
}
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
gTrainerBattleOpponent_A = TRAINER_LINK_OPPONENT;
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
gMain.savedCallback = CB2_ReturnFromCableClubBattle;
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_StartWirelessCableClubBattle(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
int i;
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gLinkType = LINKTYPE_BATTLE;
|
||||
ClearLinkCallback_2();
|
||||
data[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
data[0] = 2;
|
||||
break;
|
||||
case 2:
|
||||
SendBlock(0, &gLocalLinkPlayer, sizeof(struct LinkPlayer));
|
||||
data[0] = 3;
|
||||
break;
|
||||
case 3:
|
||||
if (GetBlockReceivedStatus() == sub_800A8D4())
|
||||
{
|
||||
for (i = 0; i < GetLinkPlayerCount(); i++)
|
||||
{
|
||||
gLinkPlayers[i] = *(struct LinkPlayer *)gBlockRecvBuffer[i];
|
||||
IntlConvertLinkPlayerName(&gLinkPlayers[i]);
|
||||
ResetBlockReceivedFlag(i);
|
||||
}
|
||||
data[0] = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
data[1]++;
|
||||
if (data[1] > 20)
|
||||
data[0] = 5;
|
||||
break;
|
||||
case 5:
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
data[0] = 6;
|
||||
break;
|
||||
case 6:
|
||||
if (IsLinkTaskFinished())
|
||||
data[0] = 7;
|
||||
break;
|
||||
case 7:
|
||||
if (gLinkPlayers[0].trainerId & 1)
|
||||
PlayMapChosenOrBattleBGM(MUS_BATTLE32);
|
||||
else
|
||||
PlayMapChosenOrBattleBGM(MUS_BATTLE20);
|
||||
gLinkPlayers[0].linkType = LINKTYPE_BATTLE;
|
||||
switch (gSpecialVar_0x8004)
|
||||
{
|
||||
case USING_SINGLE_BATTLE:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK;
|
||||
break;
|
||||
case USING_DOUBLE_BATTLE:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE;
|
||||
break;
|
||||
case USING_MULTI_BATTLE:
|
||||
ReducePlayerPartyToThree();
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI;
|
||||
break;
|
||||
}
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
gTrainerBattleOpponent_A = TRAINER_LINK_OPPONENT;
|
||||
SetMainCallback2(CB2_InitBattle);
|
||||
gMain.savedCallback = CB2_ReturnFromCableClubBattle;
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8081624(void)
|
||||
{
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
Link_TryStartSend5FFF();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
if (IsLinkTaskFinished())
|
||||
SetMainCallback2(CB2_ReturnToField);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CB2_ReturnFromCableClubBattle(void)
|
||||
{
|
||||
gBattleTypeFlags &= (u16)~BATTLE_TYPE_20;
|
||||
sub_8055DB8();
|
||||
LoadPlayerParty();
|
||||
SavePlayerBag();
|
||||
Special_UpdateTrainerFansAfterLinkBattle();
|
||||
if (gSpecialVar_0x8004 != USING_MULTI_BATTLE)
|
||||
{
|
||||
TryRecordLinkBattleOutcome(gLocalLinkPlayerId ^ 1);
|
||||
if (gWirelessCommType != 0)
|
||||
{
|
||||
switch (gBattleOutcome)
|
||||
{
|
||||
case B_OUTCOME_WON:
|
||||
MEvent_RecordIdOfWonderCardSenderByEventType(0, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
|
||||
break;
|
||||
case B_OUTCOME_LOST:
|
||||
MEvent_RecordIdOfWonderCardSenderByEventType(1, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (InUnionRoom() == TRUE)
|
||||
{
|
||||
gMain.savedCallback = sub_8081624;
|
||||
}
|
||||
else
|
||||
{
|
||||
gMain.savedCallback = c2_8056854;
|
||||
}
|
||||
SetMainCallback2(CB2_SetUpSaveAfterLinkBattle);
|
||||
}
|
||||
|
||||
void CleanupLinkRoomState(void)
|
||||
{
|
||||
if (gSpecialVar_0x8004 == USING_SINGLE_BATTLE || gSpecialVar_0x8004 == USING_DOUBLE_BATTLE || gSpecialVar_0x8004 == USING_MULTI_BATTLE)
|
||||
{
|
||||
LoadPlayerParty();
|
||||
SavePlayerBag();
|
||||
}
|
||||
copy_saved_warp2_bank_and_enter_x_to_warp1(127);
|
||||
}
|
||||
|
||||
void ExitLinkRoom(void)
|
||||
{
|
||||
sub_8057F5C();
|
||||
}
|
||||
|
||||
static void Task_EnterCableClubSeat(u8 taskId)
|
||||
{
|
||||
struct Task * task = &gTasks[taskId];
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
ShowFieldMessage(CableClub_Text_PleaseWaitBCancel);
|
||||
task->data[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
if (IsFieldMessageBoxHidden())
|
||||
{
|
||||
sub_8057F34();
|
||||
SetLocalLinkPlayerId(gSpecialVar_0x8005);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
switch (sub_8057EC0())
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
HideFieldMessageBox();
|
||||
task->data[0] = 0;
|
||||
sub_8057F70();
|
||||
SwitchTaskToFollowupFunc(taskId);
|
||||
break;
|
||||
case 2:
|
||||
task->data[0] = 3;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sub_8057F48();
|
||||
sub_80F771C(TRUE);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void CreateEnterCableClubSeatTaskWithFollowupFunc(TaskFunc followUpFunc)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_EnterCableClubSeat, 80);
|
||||
SetTaskFuncWithFollowupFunc(taskId, Task_EnterCableClubSeat, followUpFunc);
|
||||
ScriptContext1_Stop();
|
||||
}
|
||||
|
||||
static void Task_StartWiredCableClubTrade(u8 taskId)
|
||||
{
|
||||
struct Task * task = &gTasks[taskId];
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
ScriptContext2_Enable();
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
ClearLinkCallback_2();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
gSelectedTradeMonPositions[0] = 0;
|
||||
gSelectedTradeMonPositions[1] = 0;
|
||||
m4aMPlayAllStop();
|
||||
Link_TryStartSend5FFF();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
{
|
||||
SetMainCallback2(CB2_ReturnFromLinkTrade);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_StartWirelessCableClubTrade(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
ScriptContext2_Enable();
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
Rfu_set_zero();
|
||||
data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
gSelectedTradeMonPositions[0] = 0;
|
||||
gSelectedTradeMonPositions[1] = 0;
|
||||
m4aMPlayAllStop();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
UnionRoom_CreateTask_CallCB2ReturnFromLinkTrade();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EnterTradeSeat(void)
|
||||
{
|
||||
if (gWirelessCommType)
|
||||
CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWirelessCableClubTrade);
|
||||
else
|
||||
CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWiredCableClubTrade);
|
||||
}
|
||||
|
||||
static void CreateTask_StartWiredCableClubTrade(void)
|
||||
{
|
||||
CreateTask(Task_StartWiredCableClubTrade, 80);
|
||||
}
|
||||
|
||||
void StartWiredCableClubTrade(void)
|
||||
{
|
||||
CreateTask_StartWiredCableClubTrade();
|
||||
ScriptContext1_Stop();
|
||||
}
|
||||
|
||||
void EnterColosseumPlayerSpot(void)
|
||||
{
|
||||
gLinkType = LINKTYPE_BATTLE;
|
||||
if (gWirelessCommType)
|
||||
CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWirelessCableClubBattle);
|
||||
else
|
||||
CreateEnterCableClubSeatTaskWithFollowupFunc(Task_StartWiredCableClubBattle);
|
||||
}
|
||||
|
||||
static void Debug_CreateTaskEnterCableClubSeat(void)
|
||||
{
|
||||
CreateTask(Task_EnterCableClubSeat, 80);
|
||||
ScriptContext1_Stop();
|
||||
}
|
||||
|
||||
void Script_ShowLinkTrainerCard(void)
|
||||
{
|
||||
ShowTrainerCardInLink(gSpecialVar_0x8006, CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
bool32 GetSeeingLinkPlayerCardMsg(u8 who)
|
||||
{
|
||||
u8 stars;
|
||||
gSpecialVar_0x8006 = who;
|
||||
StringCopy(gStringVar1, gLinkPlayers[who].name);
|
||||
stars = GetTrainerCardStars(who);
|
||||
if (stars == 0)
|
||||
return FALSE;
|
||||
StringCopy(gStringVar2, sStarsMessagePtrs[stars - 1]);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8081A90(u8 taskId)
|
||||
{
|
||||
struct Task * task = &gTasks[taskId];
|
||||
task->data[0]++;
|
||||
if (task->data[0] > 300)
|
||||
{
|
||||
CloseLink();
|
||||
SetMainCallback2(CB2_LinkError);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
if (gReceivedRemoteLinkPlayers)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
static void sub_8081AE4(u8 taskId)
|
||||
{
|
||||
if (!gReceivedRemoteLinkPlayers)
|
||||
{
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8081B08(u8 taskId)
|
||||
{
|
||||
Link_TryStartSend5FFF();
|
||||
gTasks[taskId].func = sub_8081AE4;
|
||||
}
|
||||
+20
-14
@@ -6,40 +6,40 @@
|
||||
|
||||
u8 sub_815D654(void)
|
||||
{
|
||||
return (gSaveBlock1Ptr->unkArray[0].unk9 + 1) % 256;
|
||||
return (gSaveBlock1Ptr->trainerTower[0].unk9 + 1) % 256;
|
||||
}
|
||||
|
||||
static bool32 ValidateTrainerTowerTrainer(struct TrainerTowerFloor * floor)
|
||||
{
|
||||
if (floor->floorIdx < 1 || floor->floorIdx > 8)
|
||||
if (floor->floorIdx < 1 || floor->floorIdx > MAX_TRAINER_TOWER_FLOORS)
|
||||
return FALSE;
|
||||
if (floor->challengeType > 2)
|
||||
if (floor->challengeType > CHALLENGE_TYPE_KNOCKOUT)
|
||||
return FALSE;
|
||||
if (CalcByteArraySum((const u8 *)floor, offsetof(typeof(*floor), checksum)) != floor->checksum)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 ValidateTrainerTowerData(struct EReaderTrainerHillSet * ttdata)
|
||||
bool32 ValidateTrainerTowerData(struct EReaderTrainerTowerSet * ttdata)
|
||||
{
|
||||
u32 count = ttdata->count;
|
||||
u32 numFloors = ttdata->numFloors;
|
||||
s32 i;
|
||||
if (count < 1 || count > 8)
|
||||
if (numFloors < 1 || numFloors > MAX_TRAINER_TOWER_FLOORS)
|
||||
return FALSE;
|
||||
for (i = 0; i < count; i++)
|
||||
for (i = 0; i < numFloors; i++)
|
||||
{
|
||||
if (!ValidateTrainerTowerTrainer(&ttdata->floors[i]))
|
||||
return FALSE;
|
||||
}
|
||||
if (CalcByteArraySum((const u8 *)ttdata->floors, count * sizeof(ttdata->floors[0])) != ttdata->checksum)
|
||||
if (CalcByteArraySum((const u8 *)ttdata->floors, numFloors * sizeof(ttdata->floors[0])) != ttdata->checksum)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#define SEC30_SIZE (offsetof(struct EReaderTrainerHillSet, floors[4]))
|
||||
#define SEC31_SIZE (sizeof(struct EReaderTrainerHillSet) - SEC30_SIZE)
|
||||
#define SEC30_SIZE (offsetof(struct EReaderTrainerTowerSet, floors[4]))
|
||||
#define SEC31_SIZE (sizeof(struct EReaderTrainerTowerSet) - SEC30_SIZE)
|
||||
|
||||
static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttdata, u8 * buffer)
|
||||
static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerTowerSet * ttdata, u8 * buffer)
|
||||
{
|
||||
AGB_ASSERT_EX(ttdata->dummy == 0, ABSPATH("cereader_tool.c"), 198);
|
||||
AGB_ASSERT_EX(ttdata->id == 0, ABSPATH("cereader_tool.c"), 199)
|
||||
@@ -56,7 +56,7 @@ static bool32 CEReaderTool_SaveTrainerTower_r(struct EReaderTrainerHillSet * ttd
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerHillSet * ttdata)
|
||||
bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerTowerSet * ttdata)
|
||||
{
|
||||
u8 * buffer = AllocZeroed(0x1000);
|
||||
bool32 result = CEReaderTool_SaveTrainerTower_r(ttdata, buffer);
|
||||
@@ -64,7 +64,7 @@ bool32 CEReaderTool_SaveTrainerTower(struct EReaderTrainerHillSet * ttdata)
|
||||
return result;
|
||||
}
|
||||
|
||||
static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerHillSet * ttdata, void * buffer)
|
||||
static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerTowerSet * ttdata, void * buffer)
|
||||
{
|
||||
if (TryCopySpecialSaveSection(SECTOR_TTOWER(0), buffer) != 1)
|
||||
return FALSE;
|
||||
@@ -79,10 +79,16 @@ static bool32 CEReaderTool_LoadTrainerTower_r(struct EReaderTrainerHillSet * ttd
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 CEReaderTool_LoadTrainerTower(struct EReaderTrainerHillSet * ttdata)
|
||||
bool32 CEReaderTool_LoadTrainerTower(struct EReaderTrainerTowerSet * ttdata)
|
||||
{
|
||||
void * buffer = AllocZeroed(0x1000);
|
||||
bool32 success = CEReaderTool_LoadTrainerTower_r(ttdata, buffer);
|
||||
Free(buffer);
|
||||
return success;
|
||||
}
|
||||
|
||||
bool32 ReadTrainerTowerAndValidate(void)
|
||||
{
|
||||
// Stubbed out. Populated in Emerald
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,224 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "menu.h"
|
||||
#include "save.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "text_window.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
struct ClearSaveDataStruct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
};
|
||||
|
||||
static EWRAM_DATA struct ClearSaveDataStruct * sClearSaveDataState = NULL;
|
||||
|
||||
static void Task_DrawClearSaveDataScreen(u8 taskId);
|
||||
static void Task_HandleYesNoMenu(u8 taskId);
|
||||
static void Task_CleanUpAndSoftReset(u8 taskId);
|
||||
static void CB2_Sub_SaveClearScreen_Init(void);
|
||||
static void SaveClearScreen_GpuInit(void);
|
||||
|
||||
static const struct BgTemplate sBgTemplates[] = {
|
||||
{
|
||||
.bg = 0,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 31,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 0,
|
||||
.baseTile = 0x000
|
||||
}
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sWindowTemplates[] = {
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 3,
|
||||
.tilemapTop = 5,
|
||||
.width = 6,
|
||||
.height = 4,
|
||||
.paletteNum = 0xF,
|
||||
.baseBlock = 0x00A
|
||||
}, {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 3,
|
||||
.tilemapTop = 15,
|
||||
.width = 23,
|
||||
.height = 4,
|
||||
.paletteNum = 0xF,
|
||||
.baseBlock = 0x022
|
||||
}, DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
static const u8 sTextColor[] = {
|
||||
TEXT_COLOR_WHITE,
|
||||
TEXT_COLOR_DARK_GREY,
|
||||
TEXT_COLOR_LIGHT_GREY
|
||||
};
|
||||
|
||||
static void CB2_RunClearSaveDataScreen(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
static void VBlankCB_WaitYesNo(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void CB2_SaveClearScreen_Init(void)
|
||||
{
|
||||
sClearSaveDataState = AllocZeroed(sizeof(struct ClearSaveDataStruct));
|
||||
sClearSaveDataState->unk1 = 0;
|
||||
sClearSaveDataState->unk0 = 0;
|
||||
sClearSaveDataState->unk2 = 0;
|
||||
CB2_Sub_SaveClearScreen_Init();
|
||||
CreateTask(Task_DrawClearSaveDataScreen, 0);
|
||||
SetMainCallback2(CB2_RunClearSaveDataScreen);
|
||||
}
|
||||
|
||||
static void Task_DrawClearSaveDataScreen(u8 taskId)
|
||||
{
|
||||
switch (sClearSaveDataState->unk1)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
break;
|
||||
case 1:
|
||||
if (gPaletteFade.active)
|
||||
return;
|
||||
SetVBlankCallback(NULL);
|
||||
break;
|
||||
case 2:
|
||||
SaveClearScreen_GpuInit();
|
||||
break;
|
||||
case 3:
|
||||
TextWindow_SetStdFrame0_WithPal(0, 0x001, 0xF0);
|
||||
TextWindow_SetStdFrame0_WithPal(1, 0x001, 0xF0);
|
||||
break;
|
||||
case 4:
|
||||
DrawStdFrameWithCustomTileAndPalette(1, TRUE, 0x001, 0xF);
|
||||
AddTextPrinterParameterized4(1, 2, 0, 3, 1, 1, sTextColor, 0, gUnknown_841B69E);
|
||||
CopyWindowToVram(1, 2);
|
||||
break;
|
||||
case 5:
|
||||
CreateYesNoMenu(&sWindowTemplates[0], 2, 0, 2, 0x001, 0xF, 1);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
break;
|
||||
default:
|
||||
BeginNormalPaletteFade(0xFFFF, 0, 16, 0, RGB_WHITEALPHA);
|
||||
SetVBlankCallback(VBlankCB_WaitYesNo);
|
||||
gTasks[taskId].func = Task_HandleYesNoMenu;
|
||||
break;
|
||||
}
|
||||
sClearSaveDataState->unk1++;
|
||||
}
|
||||
|
||||
static void Task_HandleYesNoMenu(u8 taskId)
|
||||
{
|
||||
// agbcc refuses to keep &sClearSaveDataState in a register
|
||||
// unless explicitly told to do so as such:
|
||||
struct ClearSaveDataStruct ** r5 = &sClearSaveDataState;
|
||||
if ((*r5)->unk0 == 0)
|
||||
{
|
||||
switch (Menu_ProcessInputNoWrapClearOnChoose())
|
||||
{
|
||||
case MENU_B_PRESSED:
|
||||
case 1:
|
||||
PlaySE(SE_SELECT);
|
||||
break;
|
||||
case 0:
|
||||
PlaySE(SE_SELECT);
|
||||
FillWindowPixelBuffer(1, PIXEL_FILL(1));
|
||||
AddTextPrinterParameterized4(1, 2, 0, 3, 1, 1, sTextColor, 0, gUnknown_841B6B9);
|
||||
CopyWindowToVram(1, 3);
|
||||
ClearSaveData();
|
||||
break;
|
||||
case MENU_NOTHING_CHOSEN:
|
||||
default:
|
||||
return;
|
||||
}
|
||||
(*r5)->unk0++;
|
||||
}
|
||||
else
|
||||
{
|
||||
Task_CleanUpAndSoftReset(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_CleanUpAndSoftReset(u8 taskId)
|
||||
{
|
||||
switch (sClearSaveDataState->unk2)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(0xFFFF, 0, 0, 16, RGB_WHITEALPHA);
|
||||
sClearSaveDataState->unk2++;
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
DestroyYesNoMenu();
|
||||
DestroyTask(taskId);
|
||||
FreeAllWindowBuffers();
|
||||
FREE_AND_SET_NULL(sClearSaveDataState);
|
||||
DoSoftReset();
|
||||
// noreturn
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void CB2_Sub_SaveClearScreen_Init(void)
|
||||
{
|
||||
ResetSpriteData();
|
||||
ResetPaletteFade();
|
||||
ResetTasks();
|
||||
}
|
||||
|
||||
static void SaveClearScreen_GpuInit(void)
|
||||
{
|
||||
DmaClearLarge16(3, (void *)VRAM, VRAM_SIZE, 0x1000);
|
||||
|
||||
#ifndef NONMATCHING
|
||||
asm("":::"ip");
|
||||
#endif
|
||||
|
||||
do
|
||||
{
|
||||
void * dest = (void *)OAM;
|
||||
size_t size = OAM_SIZE;
|
||||
DmaClear32(3, dest, size);
|
||||
} while (0);
|
||||
|
||||
do
|
||||
{
|
||||
void * dest = (void *)PLTT;
|
||||
size_t size = PLTT_SIZE;
|
||||
DmaClear16(3, dest, size);
|
||||
} while (0);
|
||||
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
ResetBgsAndClearDma3BusyFlags(FALSE);
|
||||
InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
ChangeBgX(1, 0, 0);
|
||||
ChangeBgY(1, 0, 0);
|
||||
ChangeBgX(2, 0, 0);
|
||||
ChangeBgY(2, 0, 0);
|
||||
ChangeBgX(3, 0, 0);
|
||||
ChangeBgY(3, 0, 0);
|
||||
InitWindows(sWindowTemplates);
|
||||
DeactivateAllTextPrinters();
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
|
||||
ShowBg(0);
|
||||
}
|
||||
+1
-2
@@ -4,11 +4,10 @@
|
||||
#include "menu.h"
|
||||
#include "text_window.h"
|
||||
#include "strings.h"
|
||||
#include "constants/coins.h"
|
||||
|
||||
EWRAM_DATA static u8 sCoinsWindowId = 0;
|
||||
|
||||
#define MAX_COINS 9999
|
||||
|
||||
u16 GetCoins(void)
|
||||
{
|
||||
return gSaveBlock1Ptr->coins ^ gSaveBlock2Ptr->encryptionKey;
|
||||
|
||||
+3
-4
@@ -11,12 +11,11 @@
|
||||
#include "decompress.h"
|
||||
#include "graphics.h"
|
||||
#include "strings.h"
|
||||
#include "menu.h"
|
||||
#include "field_weather.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "sound.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/field_weather.h"
|
||||
|
||||
#if defined(FIRERED)
|
||||
#define TITLE_TEXT gString_PokemonFireRed_Staff
|
||||
@@ -716,7 +715,7 @@ static const struct CreditsTextHeader sCreditsTexts[] = {
|
||||
{ gString_Dummy, gString_Dummy, FALSE }
|
||||
};
|
||||
|
||||
void Special_Credits(void)
|
||||
void DoCredits(void)
|
||||
{
|
||||
sCreditsMgr = AllocZeroed(sizeof(*sCreditsMgr));
|
||||
ResetTasks();
|
||||
@@ -920,7 +919,7 @@ static s32 RollCredits(void)
|
||||
case CREDITSSCRCMD_MON:
|
||||
sCreditsMgr->mainseqno = CREDITSSCENE_MON_DESTROY_ASSETS;
|
||||
sCreditsMgr->whichMon = sCreditsScript[sCreditsMgr->scrcmdidx].param;
|
||||
FadeScreen(1, 0);
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
break;
|
||||
case CREDITSSCRCMD_THEENDGFX:
|
||||
sCreditsMgr->mainseqno = CREDITSSCENE_THEEND_DESTROY_ASSETS;
|
||||
|
||||
@@ -0,0 +1,247 @@
|
||||
#ifndef GUARD_DATA_DODRIO_BERRY_PICKING_H
|
||||
#define GUARD_DATA_DODRIO_BERRY_PICKING_H
|
||||
|
||||
static const struct BgTemplate sUnknown_847565C[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 30,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 0,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 1,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 12,
|
||||
.screenSize = 1,
|
||||
.paletteMode = 0,
|
||||
.priority = 1,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 2,
|
||||
.charBaseIndex = 2,
|
||||
.mapBaseIndex = 14,
|
||||
.screenSize = 1,
|
||||
.paletteMode = 0,
|
||||
.priority = 1,
|
||||
.baseTile = 0
|
||||
},
|
||||
{
|
||||
.bg = 3,
|
||||
.charBaseIndex = 3,
|
||||
.mapBaseIndex = 31,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0,
|
||||
.priority = 2,
|
||||
.baseTile = 0
|
||||
},
|
||||
};
|
||||
|
||||
// Unknown unreferenced data, feel free to remove.
|
||||
static const u32 sUnused[] = {255, 0};
|
||||
|
||||
static const struct WindowTemplate sUnknown_8475674[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 1,
|
||||
.width = 28,
|
||||
.height = 3,
|
||||
.paletteNum = 13,
|
||||
.baseBlock = 0x13,
|
||||
},
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 6,
|
||||
.width = 28,
|
||||
.height = 13,
|
||||
.paletteNum = 13,
|
||||
.baseBlock = 0x67,
|
||||
}
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sUnknown_8475684 =
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 6,
|
||||
.width = 28,
|
||||
.height = 7,
|
||||
.paletteNum = 13,
|
||||
.baseBlock = 0x67,
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sUnknown_847568C[] =
|
||||
{
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 8,
|
||||
.width = 19,
|
||||
.height = 3,
|
||||
.paletteNum = 13,
|
||||
.baseBlock = 0x13,
|
||||
},
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 22,
|
||||
.tilemapTop = 7,
|
||||
.width = 6,
|
||||
.height = 4,
|
||||
.paletteNum = 13,
|
||||
.baseBlock = 0x4C,
|
||||
}
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sUnknown_847569C =
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 4,
|
||||
.tilemapTop = 6,
|
||||
.width = 22,
|
||||
.height = 5,
|
||||
.paletteNum = 13,
|
||||
.baseBlock = 0x13,
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sUnknown_84756A4 =
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 5,
|
||||
.tilemapTop = 8,
|
||||
.width = 19,
|
||||
.height = 3,
|
||||
.paletteNum = 13,
|
||||
.baseBlock = 0x13,
|
||||
};
|
||||
|
||||
static const u8 sUnknown_8471F50[5][5][11] =
|
||||
{
|
||||
{
|
||||
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
|
||||
},
|
||||
{
|
||||
{0, 1, 2, 3, 4, 5, 6, 3, 8, 9, 0},
|
||||
{0, 1, 2, 5, 6, 3, 4, 5, 8, 9, 0},
|
||||
},
|
||||
{
|
||||
{0, 1, 2, 3, 4, 5, 6, 7, 2, 9, 0},
|
||||
{0, 1, 4, 5, 6, 7, 2, 3, 4, 9, 0},
|
||||
{0, 1, 6, 7, 2, 3, 4, 5, 6, 9, 0},
|
||||
},
|
||||
{
|
||||
{0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 0},
|
||||
{0, 3, 4, 5, 6, 7, 8, 1, 2, 3, 0},
|
||||
{0, 5, 6, 7, 8, 1, 2, 3, 4, 5, 0},
|
||||
{0, 7, 8, 1, 2, 3, 4, 5, 6, 7, 0},
|
||||
},
|
||||
{
|
||||
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0},
|
||||
{2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2},
|
||||
{4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4},
|
||||
{6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6},
|
||||
{8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8},
|
||||
},
|
||||
};
|
||||
|
||||
static const u8 sUnknown_8472063[5][5][3] =
|
||||
{
|
||||
{
|
||||
{4, 5, 6},
|
||||
},
|
||||
{
|
||||
{3, 4, 5},
|
||||
{5, 6, 3},
|
||||
},
|
||||
{
|
||||
{4, 5, 6},
|
||||
{6, 7, 2},
|
||||
{2, 3, 4},
|
||||
},
|
||||
{
|
||||
{3, 4, 5},
|
||||
{5, 6, 7},
|
||||
{7, 8, 1},
|
||||
{1, 2, 3},
|
||||
},
|
||||
{
|
||||
{4, 5, 6},
|
||||
{6, 7, 8},
|
||||
{8, 9, 0},
|
||||
{0, 1, 2},
|
||||
{2, 3, 4},
|
||||
},
|
||||
};
|
||||
|
||||
static const u8 sUnknown_84720AE[5][5][3] =
|
||||
{
|
||||
{
|
||||
{1, 0, 1},
|
||||
},
|
||||
{
|
||||
{1, 0, 1},
|
||||
{0, 1, 0},
|
||||
},
|
||||
{
|
||||
{2, 0, 1},
|
||||
{0, 1, 2},
|
||||
{1, 2, 0},
|
||||
},
|
||||
{
|
||||
{3, 0, 1},
|
||||
{0, 1, 2},
|
||||
{1, 2, 3},
|
||||
{2, 3, 0},
|
||||
},
|
||||
{
|
||||
{4, 0, 1},
|
||||
{0, 1, 2},
|
||||
{1, 2, 3},
|
||||
{2, 3, 4},
|
||||
{3, 4, 0},
|
||||
},
|
||||
};
|
||||
|
||||
ALIGNED(4)
|
||||
static const u8 sUnknown_84720FC[5][11] =
|
||||
{
|
||||
{9, 9, 9, 9, 1, 1, 1, 9, 9, 9, 9},
|
||||
{9, 9, 9, 0, 0, 1, 1, 0, 9, 9, 9},
|
||||
{9, 9, 2, 2, 0, 0, 1, 1, 1, 9, 9},
|
||||
{9, 3, 3, 0, 0, 1, 1, 2, 2, 3, 9},
|
||||
{3, 3, 4, 4, 0, 0, 1, 1, 2, 2, 3},
|
||||
};
|
||||
|
||||
static const u8 sUnknown_8472133[5][5] =
|
||||
{
|
||||
{5},
|
||||
{4, 6},
|
||||
{3, 5, 7},
|
||||
{2, 4, 6, 8},
|
||||
{1, 3, 5, 6, 9},
|
||||
};
|
||||
|
||||
static const u16 sDodrioBerryBgPal1[] = INCBIN_U16("graphics/link_games/dodrioberry_bg1.gbapal",
|
||||
"graphics/link_games/dodrioberry_bg2.gbapal");
|
||||
static const u16 sDodrioBerryPkmnPal[] = INCBIN_U16("graphics/link_games/dodrioberry_pkmn.gbapal");
|
||||
static const u16 sDodrioBerryShinyPal[] = INCBIN_U16("graphics/link_games/dodrioberry_shiny.gbapal");
|
||||
static const u16 sDodrioBerryStatusPal[] = INCBIN_U16("graphics/link_games/dodrioberry_status.gbapal");
|
||||
static const u16 sDodrioBerrySpritesPal[] = INCBIN_U16("graphics/link_games/dodrioberry_berrysprites.gbapal");
|
||||
static const u32 sDodrioBerrySpritesGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_berrysprites.4bpp.lz");
|
||||
static const u16 sDodrioBerryPlatformPal[] = INCBIN_U16("graphics/link_games/dodrioberry_platform.gbapal");
|
||||
static const u32 sDodrioBerryBgGfx1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.4bpp.lz");
|
||||
static const u32 sDodrioBerryBgGfx2[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2.4bpp.lz");
|
||||
static const u32 sDodrioBerryStatusGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_status.4bpp.lz");
|
||||
static const u32 sDodrioBerryPlatformGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_platform.4bpp.lz");
|
||||
static const u32 sDodrioBerryPkmnGfx[] = INCBIN_U32("graphics/link_games/dodrioberry_pkmn.4bpp.lz");
|
||||
static const u32 sDodrioBerryBgTilemap1[] = INCBIN_U32("graphics/link_games/dodrioberry_bg1.bin.lz");
|
||||
static const u32 sDodrioBerryBgTilemap2Right[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2right.bin.lz");
|
||||
static const u32 sDodrioBerryBgTilemap2Left[] = INCBIN_U32("graphics/link_games/dodrioberry_bg2left.bin.lz");
|
||||
|
||||
#endif //GUARD_DATA_DODRIO_BERRY_PICKING_H
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_plain_palette_palette[] = INCBIN_U32("graphics/battle_terrain/plain/palette.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_building_tiles_sheet[] = INCBIN_U32("graphics/battle_terrain/building/tiles.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_stadium_battle_frontier_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/battle_frontier.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_building_map_tilemap[] = INCBIN_U32("graphics/battle_terrain/building/map.bin.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_stadium_tiles_sheet[] = INCBIN_U32("graphics/battle_terrain/stadium/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_battle_terrain_stadium_map_tilemap[] = INCBIN_U32("graphics/battle_terrain/stadium/map.bin.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_building_palette_palette[] = INCBIN_U32("graphics/battle_terrain/building/palette.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_water_kyogre_palette[] = INCBIN_U32("graphics/battle_terrain/water/kyogre.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_cave_groudon_palette[] = INCBIN_U32("graphics/battle_terrain/cave/groudon.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_building_palette2_palette[] = INCBIN_U32("graphics/battle_terrain/building/palette2.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_building_palette3_palette[] = INCBIN_U32("graphics/battle_terrain/building/palette3.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_stadium_palette1_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette1.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_stadium_palette2_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette2.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_stadium_palette3_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette3.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_stadium_palette4_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette4.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_stadium_palette5_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette5.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_stadium_palette6_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette6.gbapal.lz");
|
||||
const u32 gFile_graphics_battle_terrain_stadium_palette7_palette[] = INCBIN_U32("graphics/battle_terrain/stadium/palette7.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_battle_terrain_building_anim_tiles_sheet[] = INCBIN_U32("graphics/battle_terrain/building/anim_tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_battle_terrain_building_anim_map_tilemap[] = INCBIN_U32("graphics/battle_terrain/building/anim_map.bin.lz");
|
||||
@@ -0,0 +1,37 @@
|
||||
const u32 gInterfaceGfx_PokeBall[] = INCBIN_U32("graphics/interface/ball/poke.4bpp.lz");
|
||||
const u32 gInterfacePal_PokeBall[] = INCBIN_U32("graphics/interface/ball/poke.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_GreatBall[] = INCBIN_U32("graphics/interface/ball/great.4bpp.lz");
|
||||
const u32 gInterfacePal_GreatBall[] = INCBIN_U32("graphics/interface/ball/great.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_SafariBall[] = INCBIN_U32("graphics/interface/ball/safari.4bpp.lz");
|
||||
const u32 gInterfacePal_SafariBall[] = INCBIN_U32("graphics/interface/ball/safari.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_UltraBall[] = INCBIN_U32("graphics/interface/ball/ultra.4bpp.lz");
|
||||
const u32 gInterfacePal_UltraBall[] = INCBIN_U32("graphics/interface/ball/ultra.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_MasterBall[] = INCBIN_U32("graphics/interface/ball/master.4bpp.lz");
|
||||
const u32 gInterfacePal_MasterBall[] = INCBIN_U32("graphics/interface/ball/master.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_NetBall[] = INCBIN_U32("graphics/interface/ball/net.4bpp.lz");
|
||||
const u32 gInterfacePal_NetBall[] = INCBIN_U32("graphics/interface/ball/net.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_DiveBall[] = INCBIN_U32("graphics/interface/ball/dive.4bpp.lz");
|
||||
const u32 gInterfacePal_DiveBall[] = INCBIN_U32("graphics/interface/ball/dive.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_NestBall[] = INCBIN_U32("graphics/interface/ball/nest.4bpp.lz");
|
||||
const u32 gInterfacePal_NestBall[] = INCBIN_U32("graphics/interface/ball/nest.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_RepeatBall[] = INCBIN_U32("graphics/interface/ball/repeat.4bpp.lz");
|
||||
const u32 gInterfacePal_RepeatBall[] = INCBIN_U32("graphics/interface/ball/repeat.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_TimerBall[] = INCBIN_U32("graphics/interface/ball/timer.4bpp.lz");
|
||||
const u32 gInterfacePal_TimerBall[] = INCBIN_U32("graphics/interface/ball/timer.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_LuxuryBall[] = INCBIN_U32("graphics/interface/ball/luxury.4bpp.lz");
|
||||
const u32 gInterfacePal_LuxuryBall[] = INCBIN_U32("graphics/interface/ball/luxury.gbapal.lz");
|
||||
|
||||
const u32 gInterfaceGfx_PremierBall[] = INCBIN_U32("graphics/interface/ball/premier.4bpp.lz");
|
||||
const u32 gInterfacePal_PremierBall[] = INCBIN_U32("graphics/interface/ball/premier.gbapal.lz");
|
||||
|
||||
const u32 gOpenPokeballGfx[] = INCBIN_U32("graphics/interface/ball_open.4bpp.lz");
|
||||
@@ -0,0 +1,672 @@
|
||||
const u32 gFile_graphics_items_icons_question_mark_sheet[] = INCBIN_U32("graphics/items/icons/question_mark.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_question_mark_palette[] = INCBIN_U32("graphics/items/icon_palettes/question_mark.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_return_to_field_arrow_sheet[] = INCBIN_U32("graphics/items/icons/return_to_field_arrow.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[] = INCBIN_U32("graphics/items/icon_palettes/return_to_field_arrow.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_master_ball_sheet[] = INCBIN_U32("graphics/items/icons/master_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_master_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/master_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_ultra_ball_sheet[] = INCBIN_U32("graphics/items/icons/ultra_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ultra_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/ultra_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_great_ball_sheet[] = INCBIN_U32("graphics/items/icons/great_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_great_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/great_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_poke_ball_sheet[] = INCBIN_U32("graphics/items/icons/poke_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_poke_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/poke_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_safari_ball_sheet[] = INCBIN_U32("graphics/items/icons/safari_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_safari_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/safari_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_net_ball_sheet[] = INCBIN_U32("graphics/items/icons/net_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_net_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/net_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_dive_ball_sheet[] = INCBIN_U32("graphics/items/icons/dive_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_dive_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/dive_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_nest_ball_sheet[] = INCBIN_U32("graphics/items/icons/nest_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_nest_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/nest_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_repeat_ball_sheet[] = INCBIN_U32("graphics/items/icons/repeat_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_repeat_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/repeat_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_timer_ball_sheet[] = INCBIN_U32("graphics/items/icons/timer_ball.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_luxury_ball_sheet[] = INCBIN_U32("graphics/items/icons/luxury_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_luxury_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/luxury_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_premier_ball_sheet[] = INCBIN_U32("graphics/items/icons/premier_ball.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_potion_sheet[] = INCBIN_U32("graphics/items/icons/potion.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_potion_palette[] = INCBIN_U32("graphics/items/icon_palettes/potion.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_antidote_sheet[] = INCBIN_U32("graphics/items/icons/antidote.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_antidote_palette[] = INCBIN_U32("graphics/items/icon_palettes/antidote.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_burn_heal_palette[] = INCBIN_U32("graphics/items/icon_palettes/burn_heal.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ice_heal_palette[] = INCBIN_U32("graphics/items/icon_palettes/ice_heal.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_status_heal_sheet[] = INCBIN_U32("graphics/items/icons/status_heal.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_awakening_palette[] = INCBIN_U32("graphics/items/icon_palettes/awakening.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_paralyze_heal_palette[] = INCBIN_U32("graphics/items/icon_palettes/paralyze_heal.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_large_potion_sheet[] = INCBIN_U32("graphics/items/icons/large_potion.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_full_restore_palette[] = INCBIN_U32("graphics/items/icon_palettes/full_restore.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_max_potion_palette[] = INCBIN_U32("graphics/items/icon_palettes/max_potion.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_hyper_potion_palette[] = INCBIN_U32("graphics/items/icon_palettes/hyper_potion.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_super_potion_palette[] = INCBIN_U32("graphics/items/icon_palettes/super_potion.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_full_heal_sheet[] = INCBIN_U32("graphics/items/icons/full_heal.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_full_heal_palette[] = INCBIN_U32("graphics/items/icon_palettes/full_heal.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_revive_sheet[] = INCBIN_U32("graphics/items/icons/revive.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icons_max_revive_sheet[] = INCBIN_U32("graphics/items/icons/max_revive.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_revive_palette[] = INCBIN_U32("graphics/items/icon_palettes/revive.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_fresh_water_sheet[] = INCBIN_U32("graphics/items/icons/fresh_water.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_fresh_water_palette[] = INCBIN_U32("graphics/items/icon_palettes/fresh_water.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_soda_pop_sheet[] = INCBIN_U32("graphics/items/icons/soda_pop.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_soda_pop_palette[] = INCBIN_U32("graphics/items/icon_palettes/soda_pop.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lemonade_sheet[] = INCBIN_U32("graphics/items/icons/lemonade.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_lemonade_palette[] = INCBIN_U32("graphics/items/icon_palettes/lemonade.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_moomoo_milk_sheet[] = INCBIN_U32("graphics/items/icons/moomoo_milk.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_moomoo_milk_palette[] = INCBIN_U32("graphics/items/icon_palettes/moomoo_milk.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_powder_sheet[] = INCBIN_U32("graphics/items/icons/powder.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_energy_powder_palette[] = INCBIN_U32("graphics/items/icon_palettes/energy_powder.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_energy_root_sheet[] = INCBIN_U32("graphics/items/icons/energy_root.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_energy_root_palette[] = INCBIN_U32("graphics/items/icon_palettes/energy_root.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icon_palettes_heal_powder_palette[] = INCBIN_U32("graphics/items/icon_palettes/heal_powder.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_revival_herb_sheet[] = INCBIN_U32("graphics/items/icons/revival_herb.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_revival_herb_palette[] = INCBIN_U32("graphics/items/icon_palettes/revival_herb.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_ether_sheet[] = INCBIN_U32("graphics/items/icons/ether.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ether_palette[] = INCBIN_U32("graphics/items/icon_palettes/ether.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_max_ether_palette[] = INCBIN_U32("graphics/items/icon_palettes/max_ether.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_elixir_palette[] = INCBIN_U32("graphics/items/icon_palettes/elixir.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_max_elixir_palette[] = INCBIN_U32("graphics/items/icon_palettes/max_elixir.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lava_cookie_sheet[] = INCBIN_U32("graphics/items/icons/lava_cookie.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette[] = INCBIN_U32("graphics/items/icon_palettes/lava_cookie_and_letter.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_flute_sheet[] = INCBIN_U32("graphics/items/icons/flute.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_blue_flute_palette[] = INCBIN_U32("graphics/items/icon_palettes/blue_flute.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_yellow_flute_palette[] = INCBIN_U32("graphics/items/icon_palettes/yellow_flute.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_red_flute_palette[] = INCBIN_U32("graphics/items/icon_palettes/red_flute.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_black_flute_palette[] = INCBIN_U32("graphics/items/icon_palettes/black_flute.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_white_flute_palette[] = INCBIN_U32("graphics/items/icon_palettes/white_flute.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_berry_juice_sheet[] = INCBIN_U32("graphics/items/icons/berry_juice.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_berry_juice_palette[] = INCBIN_U32("graphics/items/icon_palettes/berry_juice.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_sacred_ash_sheet[] = INCBIN_U32("graphics/items/icons/sacred_ash.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_sacred_ash_palette[] = INCBIN_U32("graphics/items/icon_palettes/sacred_ash.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icon_palettes_shoal_salt_palette[] = INCBIN_U32("graphics/items/icon_palettes/shoal_salt.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_shoal_shell_sheet[] = INCBIN_U32("graphics/items/icons/shoal_shell.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_shell_palette[] = INCBIN_U32("graphics/items/icon_palettes/shell.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_shard_sheet[] = INCBIN_U32("graphics/items/icons/shard.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_red_shard_palette[] = INCBIN_U32("graphics/items/icon_palettes/red_shard.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_blue_shard_palette[] = INCBIN_U32("graphics/items/icon_palettes/blue_shard.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_yellow_shard_palette[] = INCBIN_U32("graphics/items/icon_palettes/yellow_shard.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_green_shard_palette[] = INCBIN_U32("graphics/items/icon_palettes/green_shard.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_hp_up_sheet[] = INCBIN_U32("graphics/items/icons/hp_up.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_hp_up_palette[] = INCBIN_U32("graphics/items/icon_palettes/hp_up.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_vitamin_sheet[] = INCBIN_U32("graphics/items/icons/vitamin.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_protein_palette[] = INCBIN_U32("graphics/items/icon_palettes/protein.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_iron_palette[] = INCBIN_U32("graphics/items/icon_palettes/iron.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_carbos_palette[] = INCBIN_U32("graphics/items/icon_palettes/carbos.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_calcium_palette[] = INCBIN_U32("graphics/items/icon_palettes/calcium.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_rare_candy_sheet[] = INCBIN_U32("graphics/items/icons/rare_candy.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_rare_candy_palette[] = INCBIN_U32("graphics/items/icon_palettes/rare_candy.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pp_up_sheet[] = INCBIN_U32("graphics/items/icons/pp_up.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pp_up_palette[] = INCBIN_U32("graphics/items/icon_palettes/pp_up.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icon_palettes_zinc_palette[] = INCBIN_U32("graphics/items/icon_palettes/zinc.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pp_max_sheet[] = INCBIN_U32("graphics/items/icons/pp_max.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pp_max_palette[] = INCBIN_U32("graphics/items/icon_palettes/pp_max.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icon_palettes_guard_spec_palette[] = INCBIN_U32("graphics/items/icon_palettes/guard_spec.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_dire_hit_palette[] = INCBIN_U32("graphics/items/icon_palettes/dire_hit.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_x_attack_palette[] = INCBIN_U32("graphics/items/icon_palettes/x_attack.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_battle_stat_item_sheet[] = INCBIN_U32("graphics/items/icons/battle_stat_item.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_x_defend_palette[] = INCBIN_U32("graphics/items/icon_palettes/x_defend.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_x_speed_palette[] = INCBIN_U32("graphics/items/icon_palettes/x_speed.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_x_accuracy_palette[] = INCBIN_U32("graphics/items/icon_palettes/x_accuracy.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_x_special_palette[] = INCBIN_U32("graphics/items/icon_palettes/x_special.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_poke_doll_sheet[] = INCBIN_U32("graphics/items/icons/poke_doll.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_poke_doll_palette[] = INCBIN_U32("graphics/items/icon_palettes/poke_doll.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_fluffy_tail_sheet[] = INCBIN_U32("graphics/items/icons/fluffy_tail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_fluffy_tail_palette[] = INCBIN_U32("graphics/items/icon_palettes/fluffy_tail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_repel_sheet[] = INCBIN_U32("graphics/items/icons/repel.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_super_repel_palette[] = INCBIN_U32("graphics/items/icon_palettes/super_repel.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_max_repel_palette[] = INCBIN_U32("graphics/items/icon_palettes/max_repel.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_escape_rope_sheet[] = INCBIN_U32("graphics/items/icons/escape_rope.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_escape_rope_palette[] = INCBIN_U32("graphics/items/icon_palettes/escape_rope.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icon_palettes_repel_palette[] = INCBIN_U32("graphics/items/icon_palettes/repel.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_sun_stone_sheet[] = INCBIN_U32("graphics/items/icons/sun_stone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_sun_stone_palette[] = INCBIN_U32("graphics/items/icon_palettes/sun_stone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_moon_stone_sheet[] = INCBIN_U32("graphics/items/icons/moon_stone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_moon_stone_palette[] = INCBIN_U32("graphics/items/icon_palettes/moon_stone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_fire_stone_sheet[] = INCBIN_U32("graphics/items/icons/fire_stone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_fire_stone_palette[] = INCBIN_U32("graphics/items/icon_palettes/fire_stone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_thunder_stone_sheet[] = INCBIN_U32("graphics/items/icons/thunder_stone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_thunder_stone_palette[] = INCBIN_U32("graphics/items/icon_palettes/thunder_stone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_water_stone_sheet[] = INCBIN_U32("graphics/items/icons/water_stone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_water_stone_palette[] = INCBIN_U32("graphics/items/icon_palettes/water_stone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_leaf_stone_sheet[] = INCBIN_U32("graphics/items/icons/leaf_stone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_leaf_stone_palette[] = INCBIN_U32("graphics/items/icon_palettes/leaf_stone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_tiny_mushroom_sheet[] = INCBIN_U32("graphics/items/icons/tiny_mushroom.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icons_big_mushroom_sheet[] = INCBIN_U32("graphics/items/icons/big_mushroom.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_mushroom_palette[] = INCBIN_U32("graphics/items/icon_palettes/mushroom.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pearl_sheet[] = INCBIN_U32("graphics/items/icons/pearl.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pearl_palette[] = INCBIN_U32("graphics/items/icon_palettes/pearl.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_big_pearl_sheet[] = INCBIN_U32("graphics/items/icons/big_pearl.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_stardust_sheet[] = INCBIN_U32("graphics/items/icons/stardust.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_star_palette[] = INCBIN_U32("graphics/items/icon_palettes/star.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_star_piece_sheet[] = INCBIN_U32("graphics/items/icons/star_piece.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_nugget_sheet[] = INCBIN_U32("graphics/items/icons/nugget.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_nugget_palette[] = INCBIN_U32("graphics/items/icon_palettes/nugget.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_heart_scale_sheet[] = INCBIN_U32("graphics/items/icons/heart_scale.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_heart_scale_palette[] = INCBIN_U32("graphics/items/icon_palettes/heart_scale.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_orange_mail_sheet[] = INCBIN_U32("graphics/items/icons/orange_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_orange_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/orange_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_harbor_mail_sheet[] = INCBIN_U32("graphics/items/icons/harbor_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_harbor_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/harbor_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_glitter_mail_sheet[] = INCBIN_U32("graphics/items/icons/glitter_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_glitter_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/glitter_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_mech_mail_sheet[] = INCBIN_U32("graphics/items/icons/mech_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_mech_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/mech_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_wood_mail_sheet[] = INCBIN_U32("graphics/items/icons/wood_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_wood_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/wood_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_wave_mail_sheet[] = INCBIN_U32("graphics/items/icons/wave_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_wave_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/wave_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_bead_mail_sheet[] = INCBIN_U32("graphics/items/icons/bead_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_bead_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/bead_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_shadow_mail_sheet[] = INCBIN_U32("graphics/items/icons/shadow_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_shadow_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/shadow_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_tropic_mail_sheet[] = INCBIN_U32("graphics/items/icons/tropic_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_tropic_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/tropic_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_dream_mail_sheet[] = INCBIN_U32("graphics/items/icons/dream_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_dream_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/dream_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_fab_mail_sheet[] = INCBIN_U32("graphics/items/icons/fab_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_fab_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/fab_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_retro_mail_sheet[] = INCBIN_U32("graphics/items/icons/retro_mail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_retro_mail_palette[] = INCBIN_U32("graphics/items/icon_palettes/retro_mail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_cheri_berry_sheet[] = INCBIN_U32("graphics/items/icons/cheri_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_cheri_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/cheri_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_chesto_berry_sheet[] = INCBIN_U32("graphics/items/icons/chesto_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_chesto_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/chesto_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pecha_berry_sheet[] = INCBIN_U32("graphics/items/icons/pecha_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pecha_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/pecha_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_rawst_berry_sheet[] = INCBIN_U32("graphics/items/icons/rawst_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_rawst_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/rawst_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_aspear_berry_sheet[] = INCBIN_U32("graphics/items/icons/aspear_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_aspear_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/aspear_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_leppa_berry_sheet[] = INCBIN_U32("graphics/items/icons/leppa_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_leppa_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/leppa_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_oran_berry_sheet[] = INCBIN_U32("graphics/items/icons/oran_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_oran_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/oran_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_persim_berry_sheet[] = INCBIN_U32("graphics/items/icons/persim_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_persim_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/persim_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lum_berry_sheet[] = INCBIN_U32("graphics/items/icons/lum_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_lum_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/lum_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_sitrus_berry_sheet[] = INCBIN_U32("graphics/items/icons/sitrus_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_sitrus_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/sitrus_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_figy_berry_sheet[] = INCBIN_U32("graphics/items/icons/figy_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_figy_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/figy_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_wiki_berry_sheet[] = INCBIN_U32("graphics/items/icons/wiki_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_wiki_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/wiki_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_mago_berry_sheet[] = INCBIN_U32("graphics/items/icons/mago_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_mago_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/mago_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_aguav_berry_sheet[] = INCBIN_U32("graphics/items/icons/aguav_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_aguav_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/aguav_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_iapapa_berry_sheet[] = INCBIN_U32("graphics/items/icons/iapapa_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_iapapa_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/iapapa_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_razz_berry_sheet[] = INCBIN_U32("graphics/items/icons/razz_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_razz_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/razz_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_bluk_berry_sheet[] = INCBIN_U32("graphics/items/icons/bluk_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_bluk_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/bluk_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_nanab_berry_sheet[] = INCBIN_U32("graphics/items/icons/nanab_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_nanab_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/nanab_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_wepear_berry_sheet[] = INCBIN_U32("graphics/items/icons/wepear_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_wepear_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/wepear_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pinap_berry_sheet[] = INCBIN_U32("graphics/items/icons/pinap_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pinap_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/pinap_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pomeg_berry_sheet[] = INCBIN_U32("graphics/items/icons/pomeg_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pomeg_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/pomeg_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_kelpsy_berry_sheet[] = INCBIN_U32("graphics/items/icons/kelpsy_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_kelpsy_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/kelpsy_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_qualot_berry_sheet[] = INCBIN_U32("graphics/items/icons/qualot_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_qualot_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/qualot_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_hondew_berry_sheet[] = INCBIN_U32("graphics/items/icons/hondew_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_hondew_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/hondew_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_grepa_berry_sheet[] = INCBIN_U32("graphics/items/icons/grepa_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_grepa_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/grepa_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_tamato_berry_sheet[] = INCBIN_U32("graphics/items/icons/tamato_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_tamato_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/tamato_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_cornn_berry_sheet[] = INCBIN_U32("graphics/items/icons/cornn_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_cornn_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/cornn_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_magost_berry_sheet[] = INCBIN_U32("graphics/items/icons/magost_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_magost_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/magost_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_rabuta_berry_sheet[] = INCBIN_U32("graphics/items/icons/rabuta_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_rabuta_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/rabuta_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_nomel_berry_sheet[] = INCBIN_U32("graphics/items/icons/nomel_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_nomel_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/nomel_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_spelon_berry_sheet[] = INCBIN_U32("graphics/items/icons/spelon_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_spelon_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/spelon_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pamtre_berry_sheet[] = INCBIN_U32("graphics/items/icons/pamtre_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pamtre_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/pamtre_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_watmel_berry_sheet[] = INCBIN_U32("graphics/items/icons/watmel_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_watmel_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/watmel_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_durin_berry_sheet[] = INCBIN_U32("graphics/items/icons/durin_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_durin_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/durin_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_belue_berry_sheet[] = INCBIN_U32("graphics/items/icons/belue_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_belue_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/belue_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_liechi_berry_sheet[] = INCBIN_U32("graphics/items/icons/liechi_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_liechi_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/liechi_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_ganlon_berry_sheet[] = INCBIN_U32("graphics/items/icons/ganlon_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ganlon_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/ganlon_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_salac_berry_sheet[] = INCBIN_U32("graphics/items/icons/salac_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_salac_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/salac_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_petaya_berry_sheet[] = INCBIN_U32("graphics/items/icons/petaya_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_petaya_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/petaya_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_apicot_berry_sheet[] = INCBIN_U32("graphics/items/icons/apicot_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_apicot_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/apicot_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lansat_berry_sheet[] = INCBIN_U32("graphics/items/icons/lansat_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_lansat_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/lansat_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_starf_berry_sheet[] = INCBIN_U32("graphics/items/icons/starf_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_starf_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/starf_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_enigma_berry_sheet[] = INCBIN_U32("graphics/items/icons/enigma_berry.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_enigma_berry_palette[] = INCBIN_U32("graphics/items/icon_palettes/enigma_berry.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_bright_powder_sheet[] = INCBIN_U32("graphics/items/icons/bright_powder.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_bright_powder_palette[] = INCBIN_U32("graphics/items/icon_palettes/bright_powder.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_in_battle_herb_sheet[] = INCBIN_U32("graphics/items/icons/in_battle_herb.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_white_herb_palette[] = INCBIN_U32("graphics/items/icon_palettes/white_herb.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_macho_brace_sheet[] = INCBIN_U32("graphics/items/icons/macho_brace.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_macho_brace_palette[] = INCBIN_U32("graphics/items/icon_palettes/macho_brace.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_exp_share_sheet[] = INCBIN_U32("graphics/items/icons/exp_share.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_exp_share_palette[] = INCBIN_U32("graphics/items/icon_palettes/exp_share.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_quick_claw_sheet[] = INCBIN_U32("graphics/items/icons/quick_claw.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_quick_claw_palette[] = INCBIN_U32("graphics/items/icon_palettes/quick_claw.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_soothe_bell_sheet[] = INCBIN_U32("graphics/items/icons/soothe_bell.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_soothe_bell_palette[] = INCBIN_U32("graphics/items/icon_palettes/soothe_bell.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icon_palettes_mental_herb_palette[] = INCBIN_U32("graphics/items/icon_palettes/mental_herb.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_choice_band_sheet[] = INCBIN_U32("graphics/items/icons/choice_band.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_choice_band_palette[] = INCBIN_U32("graphics/items/icon_palettes/choice_band.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_kings_rock_sheet[] = INCBIN_U32("graphics/items/icons/kings_rock.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_kings_rock_palette[] = INCBIN_U32("graphics/items/icon_palettes/kings_rock.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_silver_powder_sheet[] = INCBIN_U32("graphics/items/icons/silver_powder.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_silver_powder_palette[] = INCBIN_U32("graphics/items/icon_palettes/silver_powder.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_amulet_coin_sheet[] = INCBIN_U32("graphics/items/icons/amulet_coin.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_amulet_coin_palette[] = INCBIN_U32("graphics/items/icon_palettes/amulet_coin.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_cleanse_tag_sheet[] = INCBIN_U32("graphics/items/icons/cleanse_tag.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_cleanse_tag_palette[] = INCBIN_U32("graphics/items/icon_palettes/cleanse_tag.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_soul_dew_sheet[] = INCBIN_U32("graphics/items/icons/soul_dew.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_soul_dew_palette[] = INCBIN_U32("graphics/items/icon_palettes/soul_dew.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_deep_sea_tooth_sheet[] = INCBIN_U32("graphics/items/icons/deep_sea_tooth.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_deep_sea_tooth_palette[] = INCBIN_U32("graphics/items/icon_palettes/deep_sea_tooth.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_deep_sea_scale_sheet[] = INCBIN_U32("graphics/items/icons/deep_sea_scale.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_deep_sea_scale_palette[] = INCBIN_U32("graphics/items/icon_palettes/deep_sea_scale.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_smoke_ball_sheet[] = INCBIN_U32("graphics/items/icons/smoke_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_smoke_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/smoke_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_everstone_sheet[] = INCBIN_U32("graphics/items/icons/everstone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_everstone_palette[] = INCBIN_U32("graphics/items/icon_palettes/everstone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_focus_band_sheet[] = INCBIN_U32("graphics/items/icons/focus_band.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_focus_band_palette[] = INCBIN_U32("graphics/items/icon_palettes/focus_band.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lucky_egg_sheet[] = INCBIN_U32("graphics/items/icons/lucky_egg.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_lucky_egg_palette[] = INCBIN_U32("graphics/items/icon_palettes/lucky_egg.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_scope_lens_sheet[] = INCBIN_U32("graphics/items/icons/scope_lens.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_scope_lens_palette[] = INCBIN_U32("graphics/items/icon_palettes/scope_lens.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_metal_coat_sheet[] = INCBIN_U32("graphics/items/icons/metal_coat.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_metal_coat_palette[] = INCBIN_U32("graphics/items/icon_palettes/metal_coat.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_leftovers_sheet[] = INCBIN_U32("graphics/items/icons/leftovers.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_leftovers_palette[] = INCBIN_U32("graphics/items/icon_palettes/leftovers.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_dragon_scale_sheet[] = INCBIN_U32("graphics/items/icons/dragon_scale.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_dragon_scale_palette[] = INCBIN_U32("graphics/items/icon_palettes/dragon_scale.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_light_ball_sheet[] = INCBIN_U32("graphics/items/icons/light_ball.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_light_ball_palette[] = INCBIN_U32("graphics/items/icon_palettes/light_ball.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_soft_sand_sheet[] = INCBIN_U32("graphics/items/icons/soft_sand.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_soft_sand_palette[] = INCBIN_U32("graphics/items/icon_palettes/soft_sand.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_hard_stone_sheet[] = INCBIN_U32("graphics/items/icons/hard_stone.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_hard_stone_palette[] = INCBIN_U32("graphics/items/icon_palettes/hard_stone.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_miracle_seed_sheet[] = INCBIN_U32("graphics/items/icons/miracle_seed.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_miracle_seed_palette[] = INCBIN_U32("graphics/items/icon_palettes/miracle_seed.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_black_glasses_sheet[] = INCBIN_U32("graphics/items/icons/black_glasses.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette[] = INCBIN_U32("graphics/items/icon_palettes/black_type_enhancing_item.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_black_belt_sheet[] = INCBIN_U32("graphics/items/icons/black_belt.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_magnet_sheet[] = INCBIN_U32("graphics/items/icons/magnet.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_magnet_palette[] = INCBIN_U32("graphics/items/icon_palettes/magnet.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_mystic_water_sheet[] = INCBIN_U32("graphics/items/icons/mystic_water.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_mystic_water_palette[] = INCBIN_U32("graphics/items/icon_palettes/mystic_water.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_sharp_beak_sheet[] = INCBIN_U32("graphics/items/icons/sharp_beak.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_sharp_beak_palette[] = INCBIN_U32("graphics/items/icon_palettes/sharp_beak.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_poison_barb_sheet[] = INCBIN_U32("graphics/items/icons/poison_barb.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_poison_barb_palette[] = INCBIN_U32("graphics/items/icon_palettes/poison_barb.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_never_melt_ice_sheet[] = INCBIN_U32("graphics/items/icons/never_melt_ice.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_never_melt_ice_palette[] = INCBIN_U32("graphics/items/icon_palettes/never_melt_ice.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_spell_tag_sheet[] = INCBIN_U32("graphics/items/icons/spell_tag.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_spell_tag_palette[] = INCBIN_U32("graphics/items/icon_palettes/spell_tag.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_twisted_spoon_sheet[] = INCBIN_U32("graphics/items/icons/twisted_spoon.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_twisted_spoon_palette[] = INCBIN_U32("graphics/items/icon_palettes/twisted_spoon.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_charcoal_sheet[] = INCBIN_U32("graphics/items/icons/charcoal.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_charcoal_palette[] = INCBIN_U32("graphics/items/icon_palettes/charcoal.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_dragon_fang_sheet[] = INCBIN_U32("graphics/items/icons/dragon_fang.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_dragon_fang_palette[] = INCBIN_U32("graphics/items/icon_palettes/dragon_fang.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_silk_scarf_sheet[] = INCBIN_U32("graphics/items/icons/silk_scarf.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_silk_scarf_palette[] = INCBIN_U32("graphics/items/icon_palettes/silk_scarf.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_up_grade_sheet[] = INCBIN_U32("graphics/items/icons/up_grade.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_up_grade_palette[] = INCBIN_U32("graphics/items/icon_palettes/up_grade.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_shell_bell_sheet[] = INCBIN_U32("graphics/items/icons/shell_bell.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_sea_incense_sheet[] = INCBIN_U32("graphics/items/icons/sea_incense.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_sea_incense_palette[] = INCBIN_U32("graphics/items/icon_palettes/sea_incense.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lax_incense_sheet[] = INCBIN_U32("graphics/items/icons/lax_incense.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_lax_incense_palette[] = INCBIN_U32("graphics/items/icon_palettes/lax_incense.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lucky_punch_sheet[] = INCBIN_U32("graphics/items/icons/lucky_punch.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_lucky_punch_palette[] = INCBIN_U32("graphics/items/icon_palettes/lucky_punch.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_metal_powder_sheet[] = INCBIN_U32("graphics/items/icons/metal_powder.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_metal_powder_palette[] = INCBIN_U32("graphics/items/icon_palettes/metal_powder.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_thick_club_sheet[] = INCBIN_U32("graphics/items/icons/thick_club.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_thick_club_palette[] = INCBIN_U32("graphics/items/icon_palettes/thick_club.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_stick_sheet[] = INCBIN_U32("graphics/items/icons/stick.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_stick_palette[] = INCBIN_U32("graphics/items/icon_palettes/stick.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_scarf_sheet[] = INCBIN_U32("graphics/items/icons/scarf.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_red_scarf_palette[] = INCBIN_U32("graphics/items/icon_palettes/red_scarf.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_blue_scarf_palette[] = INCBIN_U32("graphics/items/icon_palettes/blue_scarf.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pink_scarf_palette[] = INCBIN_U32("graphics/items/icon_palettes/pink_scarf.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_green_scarf_palette[] = INCBIN_U32("graphics/items/icon_palettes/green_scarf.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_yellow_scarf_palette[] = INCBIN_U32("graphics/items/icon_palettes/yellow_scarf.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_mach_bike_sheet[] = INCBIN_U32("graphics/items/icons/mach_bike.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_mach_bike_palette[] = INCBIN_U32("graphics/items/icon_palettes/mach_bike.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_coin_case_sheet[] = INCBIN_U32("graphics/items/icons/coin_case.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_coin_case_palette[] = INCBIN_U32("graphics/items/icon_palettes/coin_case.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_itemfinder_sheet[] = INCBIN_U32("graphics/items/icons/itemfinder.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_itemfinder_palette[] = INCBIN_U32("graphics/items/icon_palettes/itemfinder.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_old_rod_sheet[] = INCBIN_U32("graphics/items/icons/old_rod.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_old_rod_palette[] = INCBIN_U32("graphics/items/icon_palettes/old_rod.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_good_rod_sheet[] = INCBIN_U32("graphics/items/icons/good_rod.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_good_rod_palette[] = INCBIN_U32("graphics/items/icon_palettes/good_rod.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_super_rod_sheet[] = INCBIN_U32("graphics/items/icons/super_rod.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_super_rod_palette[] = INCBIN_U32("graphics/items/icon_palettes/super_rod.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_ss_ticket_sheet[] = INCBIN_U32("graphics/items/icons/ss_ticket.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ss_ticket_palette[] = INCBIN_U32("graphics/items/icon_palettes/ss_ticket.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_contest_pass_sheet[] = INCBIN_U32("graphics/items/icons/contest_pass.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_contest_pass_palette[] = INCBIN_U32("graphics/items/icon_palettes/contest_pass.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_wailmer_pail_sheet[] = INCBIN_U32("graphics/items/icons/wailmer_pail.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_wailmer_pail_palette[] = INCBIN_U32("graphics/items/icon_palettes/wailmer_pail.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_devon_goods_sheet[] = INCBIN_U32("graphics/items/icons/devon_goods.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_devon_goods_palette[] = INCBIN_U32("graphics/items/icon_palettes/devon_goods.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_soot_sack_sheet[] = INCBIN_U32("graphics/items/icons/soot_sack.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_soot_sack_palette[] = INCBIN_U32("graphics/items/icon_palettes/soot_sack.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_basement_key_sheet[] = INCBIN_U32("graphics/items/icons/basement_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_old_key_palette[] = INCBIN_U32("graphics/items/icon_palettes/old_key.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_acro_bike_sheet[] = INCBIN_U32("graphics/items/icons/acro_bike.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_acro_bike_palette[] = INCBIN_U32("graphics/items/icon_palettes/acro_bike.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_pokeblock_case_sheet[] = INCBIN_U32("graphics/items/icons/pokeblock_case.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_pokeblock_case_palette[] = INCBIN_U32("graphics/items/icon_palettes/pokeblock_case.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_letter_sheet[] = INCBIN_U32("graphics/items/icons/letter.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_eon_ticket_sheet[] = INCBIN_U32("graphics/items/icons/eon_ticket.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_eon_ticket_palette[] = INCBIN_U32("graphics/items/icon_palettes/eon_ticket.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_orb_sheet[] = INCBIN_U32("graphics/items/icons/orb.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_red_orb_palette[] = INCBIN_U32("graphics/items/icon_palettes/red_orb.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_blue_orb_palette[] = INCBIN_U32("graphics/items/icon_palettes/blue_orb.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_scanner_sheet[] = INCBIN_U32("graphics/items/icons/scanner.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_scanner_palette[] = INCBIN_U32("graphics/items/icon_palettes/scanner.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_go_goggles_sheet[] = INCBIN_U32("graphics/items/icons/go_goggles.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_go_goggles_palette[] = INCBIN_U32("graphics/items/icon_palettes/go_goggles.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_meteorite_sheet[] = INCBIN_U32("graphics/items/icons/meteorite.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_meteorite_palette[] = INCBIN_U32("graphics/items/icon_palettes/meteorite.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_room1_key_sheet[] = INCBIN_U32("graphics/items/icons/room1_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icons_room2_key_sheet[] = INCBIN_U32("graphics/items/icons/room2_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icons_room4_key_sheet[] = INCBIN_U32("graphics/items/icons/room4_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icons_room6_key_sheet[] = INCBIN_U32("graphics/items/icons/room6_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icons_storage_key_sheet[] = INCBIN_U32("graphics/items/icons/storage_key.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_root_fossil_sheet[] = INCBIN_U32("graphics/items/icons/root_fossil.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_hoenn_fossil_palette[] = INCBIN_U32("graphics/items/icon_palettes/hoenn_fossil.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_claw_fossil_sheet[] = INCBIN_U32("graphics/items/icons/claw_fossil.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_devon_scope_sheet[] = INCBIN_U32("graphics/items/icons/devon_scope.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_devon_scope_palette[] = INCBIN_U32("graphics/items/icon_palettes/devon_scope.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_tm_sheet[] = INCBIN_U32("graphics/items/icons/tm.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/fighting_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_dragon_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/dragon_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_water_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/water_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/psychic_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/normal_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_poison_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/poison_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/ice_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/grass_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/fire_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/dark_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_steel_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/steel_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/electric_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ground_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/ground_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_ghost_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/ghost_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_rock_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/rock_tm_hm.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_flying_tm_hm_palette[] = INCBIN_U32("graphics/items/icon_palettes/flying_tm_hm.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_oaks_parcel_sheet[] = INCBIN_U32("graphics/items/icons/oaks_parcel.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_oaks_parcel_palette[] = INCBIN_U32("graphics/items/icon_palettes/oaks_parcel.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_poke_flute_sheet[] = INCBIN_U32("graphics/items/icons/poke_flute.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_poke_flute_palette[] = INCBIN_U32("graphics/items/icon_palettes/poke_flute.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_secret_key_sheet[] = INCBIN_U32("graphics/items/icons/secret_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_secret_key_palette[] = INCBIN_U32("graphics/items/icon_palettes/secret_key.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_bike_voucher_sheet[] = INCBIN_U32("graphics/items/icons/bike_voucher.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_bike_voucher_palette[] = INCBIN_U32("graphics/items/icon_palettes/bike_voucher.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_gold_teeth_sheet[] = INCBIN_U32("graphics/items/icons/gold_teeth.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_gold_teeth_palette[] = INCBIN_U32("graphics/items/icon_palettes/gold_teeth.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_old_amber_sheet[] = INCBIN_U32("graphics/items/icons/old_amber.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_old_amber_palette[] = INCBIN_U32("graphics/items/icon_palettes/old_amber.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_card_key_sheet[] = INCBIN_U32("graphics/items/icons/card_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_card_key_palette[] = INCBIN_U32("graphics/items/icon_palettes/card_key.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_lift_key_sheet[] = INCBIN_U32("graphics/items/icons/lift_key.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_key_palette[] = INCBIN_U32("graphics/items/icon_palettes/key.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_helix_fossil_sheet[] = INCBIN_U32("graphics/items/icons/helix_fossil.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_kanto_fossil_palette[] = INCBIN_U32("graphics/items/icon_palettes/kanto_fossil.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_dome_fossil_sheet[] = INCBIN_U32("graphics/items/icons/dome_fossil.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_silph_scope_sheet[] = INCBIN_U32("graphics/items/icons/silph_scope.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_silph_scope_palette[] = INCBIN_U32("graphics/items/icon_palettes/silph_scope.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_bicycle_sheet[] = INCBIN_U32("graphics/items/icons/bicycle.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_bicycle_palette[] = INCBIN_U32("graphics/items/icon_palettes/bicycle.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_town_map_sheet[] = INCBIN_U32("graphics/items/icons/town_map.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_town_map_palette[] = INCBIN_U32("graphics/items/icon_palettes/town_map.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_vs_seeker_sheet[] = INCBIN_U32("graphics/items/icons/vs_seeker.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_vs_seeker_palette[] = INCBIN_U32("graphics/items/icon_palettes/vs_seeker.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_fame_checker_sheet[] = INCBIN_U32("graphics/items/icons/fame_checker.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_fame_checker_palette[] = INCBIN_U32("graphics/items/icon_palettes/fame_checker.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_tm_case_sheet[] = INCBIN_U32("graphics/items/icons/tm_case.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_tm_case_palette[] = INCBIN_U32("graphics/items/icon_palettes/tm_case.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_berry_pouch_sheet[] = INCBIN_U32("graphics/items/icons/berry_pouch.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_berry_pouch_palette[] = INCBIN_U32("graphics/items/icon_palettes/berry_pouch.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_teachy_tv_sheet[] = INCBIN_U32("graphics/items/icons/teachy_tv.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_teachy_tv_palette[] = INCBIN_U32("graphics/items/icon_palettes/teachy_tv.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_tri_pass_sheet[] = INCBIN_U32("graphics/items/icons/tri_pass.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_tri_pass_palette[] = INCBIN_U32("graphics/items/icon_palettes/tri_pass.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_rainbow_pass_sheet[] = INCBIN_U32("graphics/items/icons/rainbow_pass.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_rainbow_pass_palette[] = INCBIN_U32("graphics/items/icon_palettes/rainbow_pass.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_tea_sheet[] = INCBIN_U32("graphics/items/icons/tea.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_tea_palette[] = INCBIN_U32("graphics/items/icon_palettes/tea.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_mystic_ticket_sheet[] = INCBIN_U32("graphics/items/icons/mystic_ticket.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_mystic_ticket_palette[] = INCBIN_U32("graphics/items/icon_palettes/mystic_ticket.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_aurora_ticket_sheet[] = INCBIN_U32("graphics/items/icons/aurora_ticket.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_aurora_ticket_palette[] = INCBIN_U32("graphics/items/icon_palettes/aurora_ticket.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icons_powder_jar_sheet[] = INCBIN_U32("graphics/items/icons/powder_jar.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_powder_jar_palette[] = INCBIN_U32("graphics/items/icon_palettes/powder_jar.gbapal.lz");
|
||||
|
||||
const u32 gFile_graphics_items_icon_palettes_ruby_palette[] = INCBIN_U32("graphics/items/icon_palettes/ruby.gbapal.lz");
|
||||
const u32 gFile_graphics_items_icons_gem_sheet[] = INCBIN_U32("graphics/items/icons/gem.4bpp.lz");
|
||||
const u32 gFile_graphics_items_icon_palettes_sapphire_palette[] = INCBIN_U32("graphics/items/icon_palettes/sapphire.gbapal.lz");
|
||||
@@ -0,0 +1,38 @@
|
||||
const u16 gFile_graphics_mail_orange_palette_pal[] = INCBIN_U16("graphics/mail/orange/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_harbor_palette_pal[] = INCBIN_U16("graphics/mail/harbor/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_glitter_palette_pal[] = INCBIN_U16("graphics/mail/glitter/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_mech_palette_pal[] = INCBIN_U16("graphics/mail/mech/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_wood_palette_pal[] = INCBIN_U16("graphics/mail/wood/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_wave_palette_pal[] = INCBIN_U16("graphics/mail/wave/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_bead_palette_pal[] = INCBIN_U16("graphics/mail/bead/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_shadow_palette_pal[] = INCBIN_U16("graphics/mail/shadow/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_tropic_palette_pal[] = INCBIN_U16("graphics/mail/tropic/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_dream_palette_pal[] = INCBIN_U16("graphics/mail/dream/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_fab_palette_pal[] = INCBIN_U16("graphics/mail/fab/palette.gbapal");
|
||||
const u16 gFile_graphics_mail_retro_palette_pal[] = INCBIN_U16("graphics/mail/retro/palette.gbapal");
|
||||
|
||||
const u32 gFile_graphics_mail_orange_tiles_sheet[] = INCBIN_U32("graphics/mail/orange/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_harbor_tiles_sheet[] = INCBIN_U32("graphics/mail/harbor/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_glitter_tiles_sheet[] = INCBIN_U32("graphics/mail/glitter/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_mech_tiles_sheet[] = INCBIN_U32("graphics/mail/mech/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_wood_tiles_sheet[] = INCBIN_U32("graphics/mail/wood/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_wave_tiles_sheet[] = INCBIN_U32("graphics/mail/wave/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_bead_tiles_sheet[] = INCBIN_U32("graphics/mail/bead/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_shadow_tiles_sheet[] = INCBIN_U32("graphics/mail/shadow/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_tropic_tiles_sheet[] = INCBIN_U32("graphics/mail/tropic/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_dream_tiles_sheet[] = INCBIN_U32("graphics/mail/dream/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_fab_tiles_sheet[] = INCBIN_U32("graphics/mail/fab/tiles.4bpp.lz");
|
||||
const u32 gFile_graphics_mail_retro_tiles_sheet[] = INCBIN_U32("graphics/mail/retro/tiles.4bpp.lz");
|
||||
|
||||
const u32 gFile_graphics_mail_orange_map_tilemap[] = INCBIN_U32("graphics/mail/orange/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_harbor_map_tilemap[] = INCBIN_U32("graphics/mail/harbor/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_glitter_map_tilemap[] = INCBIN_U32("graphics/mail/glitter/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_mech_map_tilemap[] = INCBIN_U32("graphics/mail/mech/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_wood_map_tilemap[] = INCBIN_U32("graphics/mail/wood/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_wave_map_tilemap[] = INCBIN_U32("graphics/mail/wave/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_bead_map_tilemap[] = INCBIN_U32("graphics/mail/bead/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_shadow_map_tilemap[] = INCBIN_U32("graphics/mail/shadow/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_tropic_map_tilemap[] = INCBIN_U32("graphics/mail/tropic/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_dream_map_tilemap[] = INCBIN_U32("graphics/mail/dream/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_fab_map_tilemap[] = INCBIN_U32("graphics/mail/fab/map.bin.lz");
|
||||
const u32 gFile_graphics_mail_retro_map_tilemap[] = INCBIN_U32("graphics/mail/retro/map.bin.lz");
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,456 @@
|
||||
const u32 gTrainerFrontPic_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/front_pics/aqua_leader_archie_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_AquaLeaderArchie[] = INCBIN_U32("graphics/trainers/palettes/aqua_leader_archie.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_AquaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_AquaGruntM[] = INCBIN_U32("graphics/trainers/palettes/aqua_grunt_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_AquaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_grunt_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_AquaGruntF[] = INCBIN_U32("graphics/trainers/palettes/aqua_grunt_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSAromaLady[] = INCBIN_U32("graphics/trainers/front_pics/rs_aroma_lady_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSAromaLady[] = INCBIN_U32("graphics/trainers/palettes/rs_aroma_lady.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSRuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/rs_ruin_maniac_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSRuinManiac[] = INCBIN_U32("graphics/trainers/palettes/rs_ruin_maniac.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Interviewer[] = INCBIN_U32("graphics/trainers/front_pics/interviewer_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Interviewer[] = INCBIN_U32("graphics/trainers/palettes/interviewer.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSTuberF[] = INCBIN_U32("graphics/trainers/front_pics/rs_tuber_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSTuberF[] = INCBIN_U32("graphics/trainers/palettes/rs_tuber_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_TuberM[] = INCBIN_U32("graphics/trainers/front_pics/tuber_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_TuberM[] = INCBIN_U32("graphics/trainers/palettes/tuber_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSCooltrainerM[] = INCBIN_U32("graphics/trainers/front_pics/rs_cool_trainer_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSCooltrainerM[] = INCBIN_U32("graphics/trainers/palettes/rs_cool_trainer_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSCooltrainerF[] = INCBIN_U32("graphics/trainers/front_pics/rs_cool_trainer_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSCooltrainerF[] = INCBIN_U32("graphics/trainers/palettes/rs_cool_trainer_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_HexManiac[] = INCBIN_U32("graphics/trainers/front_pics/hex_maniac_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_HexManiac[] = INCBIN_U32("graphics/trainers/palettes/hex_maniac.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSLady[] = INCBIN_U32("graphics/trainers/front_pics/rs_lady_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSLady[] = INCBIN_U32("graphics/trainers/palettes/rs_lady.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSBeauty[] = INCBIN_U32("graphics/trainers/front_pics/rs_beauty_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSBeauty[] = INCBIN_U32("graphics/trainers/palettes/rs_beauty.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RichBoy[] = INCBIN_U32("graphics/trainers/front_pics/rich_boy_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RichBoy[] = INCBIN_U32("graphics/trainers/palettes/rich_boy.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSPokeManiac[] = INCBIN_U32("graphics/trainers/front_pics/rs_pokemaniac_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSPokeManiac[] = INCBIN_U32("graphics/trainers/palettes/rs_pokemaniac.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSSwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/rs_swimmer_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSSwimmerM[] = INCBIN_U32("graphics/trainers/palettes/rs_swimmer_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSBlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/rs_black_belt_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSBlackBelt[] = INCBIN_U32("graphics/trainers/palettes/rs_black_belt.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Guitarist[] = INCBIN_U32("graphics/trainers/front_pics/guitarist_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Guitarist[] = INCBIN_U32("graphics/trainers/palettes/guitarist.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Kindler[] = INCBIN_U32("graphics/trainers/front_pics/kindler_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Kindler[] = INCBIN_U32("graphics/trainers/palettes/kindler.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSCamper[] = INCBIN_U32("graphics/trainers/front_pics/rs_camper_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSCamper[] = INCBIN_U32("graphics/trainers/palettes/rs_camper.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_BugManiac[] = INCBIN_U32("graphics/trainers/front_pics/bug_maniac_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_BugManiac[] = INCBIN_U32("graphics/trainers/palettes/bug_maniac.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSPsychicM[] = INCBIN_U32("graphics/trainers/front_pics/rs_psychic_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSPsychicM[] = INCBIN_U32("graphics/trainers/palettes/rs_psychic_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSPsychicF[] = INCBIN_U32("graphics/trainers/front_pics/rs_psychic_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSPsychicF[] = INCBIN_U32("graphics/trainers/palettes/rs_psychic_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSGentleman[] = INCBIN_U32("graphics/trainers/front_pics/rs_gentleman_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSGentleman[] = INCBIN_U32("graphics/trainers/palettes/rs_gentleman.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourSidney[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_sidney_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourSidney[] = INCBIN_U32("graphics/trainers/palettes/elite_four_sidney.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_phoebe_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourPhoebe[] = INCBIN_U32("graphics/trainers/palettes/elite_four_phoebe.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/front_pics/leader_roxanne_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderRoxanne[] = INCBIN_U32("graphics/trainers/palettes/leader_roxanne.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderBrawly[] = INCBIN_U32("graphics/trainers/front_pics/leader_brawly_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderBrawly[] = INCBIN_U32("graphics/trainers/palettes/leader_brawly.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/front_pics/leader_tate_and_liza_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderTateAndLiza[] = INCBIN_U32("graphics/trainers/palettes/leader_tate_and_liza.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SchoolKidM[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SchoolKidM[] = INCBIN_U32("graphics/trainers/palettes/school_kid_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SchoolKidF[] = INCBIN_U32("graphics/trainers/front_pics/school_kid_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SchoolKidF[] = INCBIN_U32("graphics/trainers/palettes/school_kid_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SrAndJr[] = INCBIN_U32("graphics/trainers/front_pics/sr_and_jr_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SrAndJr[] = INCBIN_U32("graphics/trainers/palettes/sr_and_jr.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PokefanM[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PokefanM[] = INCBIN_U32("graphics/trainers/palettes/pokefan_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PokefanF[] = INCBIN_U32("graphics/trainers/front_pics/pokefan_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PokefanF[] = INCBIN_U32("graphics/trainers/palettes/pokefan_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_ExpertM[] = INCBIN_U32("graphics/trainers/front_pics/expert_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_ExpertM[] = INCBIN_U32("graphics/trainers/palettes/expert_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_ExpertF[] = INCBIN_U32("graphics/trainers/front_pics/expert_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_ExpertF[] = INCBIN_U32("graphics/trainers/palettes/expert_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSYoungster[] = INCBIN_U32("graphics/trainers/front_pics/rs_youngster_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSYoungster[] = INCBIN_U32("graphics/trainers/palettes/rs_youngster.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_ChampionSteven[] = INCBIN_U32("graphics/trainers/front_pics/champion_steven_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_ChampionSteven[] = INCBIN_U32("graphics/trainers/palettes/champion_steven.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSFisherman[] = INCBIN_U32("graphics/trainers/front_pics/rs_fisherman_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSFisherman[] = INCBIN_U32("graphics/trainers/palettes/rs_fisherman.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CyclingTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/cycling_triathlete_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/cycling_triathlete_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CyclingTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/cycling_triathlete_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RunningTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/running_triathlete_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/running_triathlete_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RunningTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/running_triathlete_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SwimmingTriathleteM[] = INCBIN_U32("graphics/trainers/palettes/swimming_triathlete_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/front_pics/swimming_triathlete_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SwimmingTriathleteF[] = INCBIN_U32("graphics/trainers/palettes/swimming_triathlete_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_DragonTamer[] = INCBIN_U32("graphics/trainers/front_pics/dragon_tamer_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_DragonTamer[] = INCBIN_U32("graphics/trainers/palettes/dragon_tamer.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSBirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/rs_bird_keeper_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSBirdKeeper[] = INCBIN_U32("graphics/trainers/palettes/rs_bird_keeper.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_NinjaBoy[] = INCBIN_U32("graphics/trainers/front_pics/ninja_boy_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_NinjaBoy[] = INCBIN_U32("graphics/trainers/palettes/ninja_boy.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_BattleGirl[] = INCBIN_U32("graphics/trainers/front_pics/battle_girl_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_BattleGirl[] = INCBIN_U32("graphics/trainers/palettes/battle_girl.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_ParasolLady[] = INCBIN_U32("graphics/trainers/front_pics/parasol_lady_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_ParasolLady[] = INCBIN_U32("graphics/trainers/palettes/parasol_lady.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSSwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/rs_swimmer_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSSwimmerF[] = INCBIN_U32("graphics/trainers/palettes/rs_swimmer_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSPicnicker[] = INCBIN_U32("graphics/trainers/front_pics/rs_picnicker_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSPicnicker[] = INCBIN_U32("graphics/trainers/palettes/rs_picnicker.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSTwins[] = INCBIN_U32("graphics/trainers/front_pics/rs_twins_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSTwins[] = INCBIN_U32("graphics/trainers/palettes/rs_twins.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSSailor[] = INCBIN_U32("graphics/trainers/front_pics/rs_sailor_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSSailor[] = INCBIN_U32("graphics/trainers/palettes/rs_sailor.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Collector[] = INCBIN_U32("graphics/trainers/front_pics/collector_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Collector[] = INCBIN_U32("graphics/trainers/palettes/collector.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Wally[] = INCBIN_U32("graphics/trainers/front_pics/wally_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Wally[] = INCBIN_U32("graphics/trainers/palettes/wally.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSBrendan1[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSBrendan1[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSMay1[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_may_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSMay1[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_may.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PokemonBreederM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PokemonBreederM[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSPokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/rs_pokemon_breeder_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSPokemonBreederF[] = INCBIN_U32("graphics/trainers/palettes/rs_pokemon_breeder_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSPokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/rs_pokemon_ranger_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSPokemonRangerM[] = INCBIN_U32("graphics/trainers/palettes/rs_pokemon_ranger_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSPokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/rs_pokemon_ranger_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSPokemonRangerF[] = INCBIN_U32("graphics/trainers/palettes/rs_pokemon_ranger_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/front_pics/magma_leader_maxie_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_MagmaLeaderMaxie[] = INCBIN_U32("graphics/trainers/palettes/magma_leader_maxie.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_MagmaGruntM[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_MagmaGruntM[] = INCBIN_U32("graphics/trainers/palettes/magma_grunt_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_MagmaGruntF[] = INCBIN_U32("graphics/trainers/front_pics/magma_grunt_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_MagmaGruntF[] = INCBIN_U32("graphics/trainers/palettes/magma_grunt_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSLass[] = INCBIN_U32("graphics/trainers/front_pics/rs_lass_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSLass[] = INCBIN_U32("graphics/trainers/palettes/rs_lass.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSBugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/rs_bug_catcher_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSBugCatcher[] = INCBIN_U32("graphics/trainers/palettes/rs_bug_catcher.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSHiker[] = INCBIN_U32("graphics/trainers/front_pics/rs_hiker_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSHiker[] = INCBIN_U32("graphics/trainers/palettes/rs_hiker.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSYoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/rs_young_couple_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSYoungCouple[] = INCBIN_U32("graphics/trainers/palettes/rs_young_couple.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_OldCouple[] = INCBIN_U32("graphics/trainers/front_pics/old_couple_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_OldCouple[] = INCBIN_U32("graphics/trainers/palettes/old_couple.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSSisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/rs_sis_and_bro_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSSisAndBro[] = INCBIN_U32("graphics/trainers/palettes/rs_sis_and_bro.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_AquaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_AquaAdminM[] = INCBIN_U32("graphics/trainers/palettes/aqua_admin_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_AquaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/aqua_admin_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_AquaAdminF[] = INCBIN_U32("graphics/trainers/palettes/aqua_admin_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_MagmaAdminM[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_MagmaAdminM[] = INCBIN_U32("graphics/trainers/palettes/magma_admin_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_MagmaAdminF[] = INCBIN_U32("graphics/trainers/front_pics/magma_admin_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_MagmaAdminF[] = INCBIN_U32("graphics/trainers/palettes/magma_admin_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderWattson[] = INCBIN_U32("graphics/trainers/front_pics/leader_wattson_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderWattson[] = INCBIN_U32("graphics/trainers/palettes/leader_wattson.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderFlannery[] = INCBIN_U32("graphics/trainers/front_pics/leader_flannery_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderFlannery[] = INCBIN_U32("graphics/trainers/palettes/leader_flannery.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderNorman[] = INCBIN_U32("graphics/trainers/front_pics/leader_norman_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderNorman[] = INCBIN_U32("graphics/trainers/palettes/leader_norman.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderWinona[] = INCBIN_U32("graphics/trainers/front_pics/leader_winona_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderWinona[] = INCBIN_U32("graphics/trainers/palettes/leader_winona.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderWallace[] = INCBIN_U32("graphics/trainers/front_pics/leader_wallace_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderWallace[] = INCBIN_U32("graphics/trainers/palettes/leader_wallace.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_glacia_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourGlacia[] = INCBIN_U32("graphics/trainers/palettes/elite_four_glacia.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourDrake[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_drake_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourDrake[] = INCBIN_U32("graphics/trainers/palettes/elite_four_drake.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Youngster[] = INCBIN_U32("graphics/trainers/front_pics/youngster_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Youngster[] = INCBIN_U32("graphics/trainers/palettes/youngster.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_BugCatcher[] = INCBIN_U32("graphics/trainers/front_pics/bug_catcher_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_BugCatcher[] = INCBIN_U32("graphics/trainers/palettes/bug_catcher.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Lass[] = INCBIN_U32("graphics/trainers/front_pics/lass_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Lass[] = INCBIN_U32("graphics/trainers/palettes/lass.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Sailor[] = INCBIN_U32("graphics/trainers/front_pics/sailor_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Sailor[] = INCBIN_U32("graphics/trainers/palettes/sailor.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Camper[] = INCBIN_U32("graphics/trainers/front_pics/camper_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Camper[] = INCBIN_U32("graphics/trainers/palettes/camper.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Picnicker[] = INCBIN_U32("graphics/trainers/front_pics/picnicker_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Picnicker[] = INCBIN_U32("graphics/trainers/palettes/picnicker.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PokeManiac[] = INCBIN_U32("graphics/trainers/front_pics/pokemaniac_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PokeManiac[] = INCBIN_U32("graphics/trainers/palettes/pokemaniac.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SuperNerd[] = INCBIN_U32("graphics/trainers/front_pics/super_nerd_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SuperNerd[] = INCBIN_U32("graphics/trainers/palettes/super_nerd.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Hiker[] = INCBIN_U32("graphics/trainers/front_pics/hiker_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Hiker[] = INCBIN_U32("graphics/trainers/palettes/hiker.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Biker[] = INCBIN_U32("graphics/trainers/front_pics/biker_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Biker[] = INCBIN_U32("graphics/trainers/palettes/biker.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Burglar[] = INCBIN_U32("graphics/trainers/front_pics/burglar_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Burglar[] = INCBIN_U32("graphics/trainers/palettes/burglar.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Engineer[] = INCBIN_U32("graphics/trainers/front_pics/engineer_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Engineer[] = INCBIN_U32("graphics/trainers/palettes/engineer.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Fisherman[] = INCBIN_U32("graphics/trainers/front_pics/fisherman_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Fisherman[] = INCBIN_U32("graphics/trainers/palettes/fisherman.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SwimmerM[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SwimmerM[] = INCBIN_U32("graphics/trainers/palettes/swimmer_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CueBall[] = INCBIN_U32("graphics/trainers/front_pics/cue_ball_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CueBall[] = INCBIN_U32("graphics/trainers/palettes/cue_ball.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Gamer[] = INCBIN_U32("graphics/trainers/front_pics/gamer_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Gamer[] = INCBIN_U32("graphics/trainers/palettes/gamer.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Beauty[] = INCBIN_U32("graphics/trainers/front_pics/beauty_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Beauty[] = INCBIN_U32("graphics/trainers/palettes/beauty.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SwimmerF[] = INCBIN_U32("graphics/trainers/front_pics/swimmer_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SwimmerF[] = INCBIN_U32("graphics/trainers/palettes/swimmer_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PsychicM[] = INCBIN_U32("graphics/trainers/front_pics/psychic_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PsychicM[] = INCBIN_U32("graphics/trainers/palettes/psychic_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Rocker[] = INCBIN_U32("graphics/trainers/front_pics/rocker_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Rocker[] = INCBIN_U32("graphics/trainers/palettes/rocker.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Juggler[] = INCBIN_U32("graphics/trainers/front_pics/juggler_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Juggler[] = INCBIN_U32("graphics/trainers/palettes/juggler.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Tamer[] = INCBIN_U32("graphics/trainers/front_pics/tamer_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Tamer[] = INCBIN_U32("graphics/trainers/palettes/tamer.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_BirdKeeper[] = INCBIN_U32("graphics/trainers/front_pics/bird_keeper_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_BirdKeeper[] = INCBIN_U32("graphics/trainers/palettes/bird_keeper.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_BlackBelt[] = INCBIN_U32("graphics/trainers/front_pics/black_belt_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_BlackBelt[] = INCBIN_U32("graphics/trainers/palettes/black_belt.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Rival1[] = INCBIN_U32("graphics/trainers/front_pics/rival_1_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Rival1[] = INCBIN_U32("graphics/trainers/palettes/rival_1.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Scientist[] = INCBIN_U32("graphics/trainers/front_pics/scientist_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Scientist[] = INCBIN_U32("graphics/trainers/palettes/scientist.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderGiovanni[] = INCBIN_U32("graphics/trainers/front_pics/leader_giovanni_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderGiovanni[] = INCBIN_U32("graphics/trainers/palettes/leader_giovanni.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RocketGruntM[] = INCBIN_U32("graphics/trainers/front_pics/rocket_grunt_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RocketGruntM[] = INCBIN_U32("graphics/trainers/palettes/rocket_grunt_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CooltrainerM[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CooltrainerM[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CooltrainerF[] = INCBIN_U32("graphics/trainers/front_pics/cool_trainer_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CooltrainerF[] = INCBIN_U32("graphics/trainers/palettes/cool_trainer_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourLorelei[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_lorelei_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourLorelei[] = INCBIN_U32("graphics/trainers/palettes/elite_four_lorelei.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourBruno[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_bruno_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourBruno[] = INCBIN_U32("graphics/trainers/palettes/elite_four_bruno.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourAgatha[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_agatha_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourAgatha[] = INCBIN_U32("graphics/trainers/palettes/elite_four_agatha.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_EliteFourLance[] = INCBIN_U32("graphics/trainers/front_pics/elite_four_lance_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_EliteFourLance[] = INCBIN_U32("graphics/trainers/palettes/elite_four_lance.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderBrock[] = INCBIN_U32("graphics/trainers/front_pics/leader_brock_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderBrock[] = INCBIN_U32("graphics/trainers/palettes/leader_brock.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderMisty[] = INCBIN_U32("graphics/trainers/front_pics/leader_misty_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderMisty[] = INCBIN_U32("graphics/trainers/palettes/leader_misty.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderLtSurge[] = INCBIN_U32("graphics/trainers/front_pics/leader_lt_surge_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderLtSurge[] = INCBIN_U32("graphics/trainers/palettes/leader_lt_surge.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderErika[] = INCBIN_U32("graphics/trainers/front_pics/leader_erika_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderErika[] = INCBIN_U32("graphics/trainers/palettes/leader_erika.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderKoga[] = INCBIN_U32("graphics/trainers/front_pics/leader_koga_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderKoga[] = INCBIN_U32("graphics/trainers/palettes/leader_koga.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderBlaine[] = INCBIN_U32("graphics/trainers/front_pics/leader_blaine_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderBlaine[] = INCBIN_U32("graphics/trainers/palettes/leader_blaine.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_LeaderSabrina[] = INCBIN_U32("graphics/trainers/front_pics/leader_sabrina_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_LeaderSabrina[] = INCBIN_U32("graphics/trainers/palettes/leader_sabrina.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Gentleman[] = INCBIN_U32("graphics/trainers/front_pics/gentleman_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Gentleman[] = INCBIN_U32("graphics/trainers/palettes/gentleman.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Rival2[] = INCBIN_U32("graphics/trainers/front_pics/rival_2_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Rival2[] = INCBIN_U32("graphics/trainers/palettes/rival_2.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_ChampionRival[] = INCBIN_U32("graphics/trainers/front_pics/champion_rival_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_ChampionRival[] = INCBIN_U32("graphics/trainers/palettes/champion_rival.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Channeler[] = INCBIN_U32("graphics/trainers/front_pics/channeler_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Channeler[] = INCBIN_U32("graphics/trainers/palettes/channeler.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Twins[] = INCBIN_U32("graphics/trainers/front_pics/twins_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Twins[] = INCBIN_U32("graphics/trainers/palettes/twins.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CoolCouple[] = INCBIN_U32("graphics/trainers/front_pics/cool_couple_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CoolCouple[] = INCBIN_U32("graphics/trainers/palettes/cool_couple.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_YoungCouple[] = INCBIN_U32("graphics/trainers/front_pics/young_couple_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_YoungCouple[] = INCBIN_U32("graphics/trainers/palettes/young_couple.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CrushKin[] = INCBIN_U32("graphics/trainers/front_pics/crush_kin_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CrushKin[] = INCBIN_U32("graphics/trainers/palettes/crush_kin.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_SisAndBro[] = INCBIN_U32("graphics/trainers/front_pics/sis_and_bro_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_SisAndBro[] = INCBIN_U32("graphics/trainers/palettes/sis_and_bro.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_ProfessorOak[] = INCBIN_U32("graphics/trainers/front_pics/professor_oak_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_ProfessorOak[] = INCBIN_U32("graphics/trainers/palettes/professor_oak.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSBrendan2[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_brendan_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSBrendan2[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_brendan.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RSMay2[] = INCBIN_U32("graphics/trainers/front_pics/ruby_sapphire_may_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RSMay2[] = INCBIN_U32("graphics/trainers/palettes/ruby_sapphire_may.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Red[] = INCBIN_U32("graphics/trainers/front_pics/red_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Red[] = INCBIN_U32("graphics/trainers/palettes/red.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Leaf[] = INCBIN_U32("graphics/trainers/front_pics/leaf_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Leaf[] = INCBIN_U32("graphics/trainers/palettes/leaf.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RocketGruntF[] = INCBIN_U32("graphics/trainers/front_pics/rocket_grunt_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RocketGruntF[] = INCBIN_U32("graphics/trainers/palettes/rocket_grunt_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PsychicF[] = INCBIN_U32("graphics/trainers/front_pics/psychic_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PsychicF[] = INCBIN_U32("graphics/trainers/palettes/psychic_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_CrushGirl[] = INCBIN_U32("graphics/trainers/front_pics/crush_girl_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_CrushGirl[] = INCBIN_U32("graphics/trainers/palettes/crush_girl.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_TuberF[] = INCBIN_U32("graphics/trainers/front_pics/tuber_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_TuberF[] = INCBIN_U32("graphics/trainers/palettes/tuber_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PokemonBreederF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_breeder_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PokemonBreederF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_breeder_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PokemonRangerM[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_m_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PokemonRangerM[] = INCBIN_U32("graphics/trainers/palettes/pokemon_ranger_m.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_PokemonRangerF[] = INCBIN_U32("graphics/trainers/front_pics/pokemon_ranger_f_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_PokemonRangerF[] = INCBIN_U32("graphics/trainers/palettes/pokemon_ranger_f.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_AromaLady[] = INCBIN_U32("graphics/trainers/front_pics/aroma_lady_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_AromaLady[] = INCBIN_U32("graphics/trainers/palettes/aroma_lady.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_RuinManiac[] = INCBIN_U32("graphics/trainers/front_pics/ruin_maniac_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_RuinManiac[] = INCBIN_U32("graphics/trainers/palettes/ruin_maniac.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Lady[] = INCBIN_U32("graphics/trainers/front_pics/lady_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Lady[] = INCBIN_U32("graphics/trainers/palettes/lady.gbapal.lz");
|
||||
|
||||
const u32 gTrainerFrontPic_Painter[] = INCBIN_U32("graphics/trainers/front_pics/painter_front_pic.4bpp.lz");
|
||||
const u32 gTrainerPalette_Painter[] = INCBIN_U32("graphics/trainers/palettes/painter.gbapal.lz");
|
||||
|
||||
const u8 gTrainerBackPic_Red[] = INCBIN_U8("graphics/trainers/back_pics/red_back_pic.4bpp");
|
||||
const u8 gTrainerBackPic_Leaf[] = INCBIN_U8("graphics/trainers/back_pics/leaf_back_pic.4bpp");
|
||||
const u8 gTrainerBackPic_Pokedude[] = INCBIN_U8("graphics/trainers/back_pics/pokedude_back_pic.4bpp");
|
||||
const u8 gTrainerBackPic_OldMan[] = INCBIN_U8("graphics/trainers/back_pics/old_man_back_pic.4bpp");
|
||||
|
||||
const u8 gTrainerBackPic_RSBrendan[] = INCBIN_U8("graphics/trainers/back_pics/ruby_sapphire_brendan_back_pic.4bpp");
|
||||
const u8 gTrainerBackPic_RSMay[] = INCBIN_U8("graphics/trainers/back_pics/ruby_sapphire_may_back_pic.4bpp");
|
||||
|
||||
const u32 gTrainerPalette_RedBackPic[] = INCBIN_U32("graphics/trainers/palettes/leaf_back_pic.gbapal.lz");
|
||||
const u32 gTrainerPalette_LeafBackPic[] = INCBIN_U32("graphics/trainers/palettes/red_back_pic.gbapal.lz");
|
||||
const u32 gTrainerPalette_PokedudeBackPic[] = INCBIN_U32("graphics/trainers/palettes/pokedude_back_pic.gbapal.lz");
|
||||
const u32 gTrainerPalette_OldManBackPic[] = INCBIN_U32("graphics/trainers/palettes/old_man_back_pic.gbapal.lz");
|
||||
@@ -133,10 +133,10 @@ const u8 gFacilityClassToPicIndex[] =
|
||||
[FACILITY_CLASS_CRUSH_KIN] = 130,
|
||||
[FACILITY_CLASS_SIS_AND_BRO_2] = 131,
|
||||
[FACILITY_CLASS_PKMN_PROF] = 132,
|
||||
[FACILITY_CLASS_PLAYER] = 133,
|
||||
[FACILITY_CLASS_PLAYER_2] = 134,
|
||||
[FACILITY_CLASS_PLAYER_3] = 135,
|
||||
[FACILITY_CLASS_PLAYER_4] = 136,
|
||||
[FACILITY_CLASS_BRENDAN] = TRAINER_PIC_RS_BRENDAN_2,
|
||||
[FACILITY_CLASS_MAY] = TRAINER_PIC_RS_MAY_2,
|
||||
[FACILITY_CLASS_RED] = TRAINER_PIC_RED,
|
||||
[FACILITY_CLASS_LEAF] = TRAINER_PIC_LEAF,
|
||||
[FACILITY_CLASS_TEAM_ROCKET_2] = 137,
|
||||
[FACILITY_CLASS_PSYCHIC_4] = 138,
|
||||
[FACILITY_CLASS_CRUSH_GIRL] = 139,
|
||||
@@ -287,10 +287,10 @@ const u8 gFacilityClassToTrainerClass[] =
|
||||
[FACILITY_CLASS_CRUSH_KIN] = CLASS_CRUSH_KIN,
|
||||
[FACILITY_CLASS_SIS_AND_BRO_2] = CLASS_SIS_AND_BRO_2,
|
||||
[FACILITY_CLASS_PKMN_PROF] = CLASS_PKMN_PROF,
|
||||
[FACILITY_CLASS_PLAYER] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_PLAYER_2] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_PLAYER_3] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_PLAYER_4] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_BRENDAN] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_MAY] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_RED] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_LEAF] = CLASS_PLAYER,
|
||||
[FACILITY_CLASS_TEAM_ROCKET_2] = CLASS_TEAM_ROCKET,
|
||||
[FACILITY_CLASS_PSYCHIC_4] = CLASS_PSYCHIC_2,
|
||||
[FACILITY_CLASS_CRUSH_GIRL] = CLASS_CRUSH_GIRL,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
const struct CompressedSpritePalette gMonPaletteTable[] =
|
||||
// A dirty hack because field_effect.c requires this not be const
|
||||
__attribute__((section(".rodata"))) struct CompressedSpritePalette gMonPaletteTable[] =
|
||||
{
|
||||
SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
|
||||
SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
const u8 gText_QuestLog_PreviouslyOnYourQuest[] = _("Previously on your quest…");
|
||||
const u8 gText_QuestLog_SwitchMon1WithMon2[] = _("{PLAYER} switched the POKéMON\n{STR_VAR_1} with {STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_SwappedHeldItemsOnMon[] = _("Took the item {STR_VAR_2} from\n{STR_VAR_1} and gave it the item\n{STR_VAR_3} to hold.");
|
||||
const u8 gText_QuestLog_TookHeldItemFromMon[] = _("Took the item {STR_VAR_2} from\n{STR_VAR_1}.");
|
||||
const u8 gText_QuestLog_UsedItemOnMonAtThisLocation[] = _("Used the item {STR_VAR_1} on {STR_VAR_2}\nat this location.");
|
||||
const u8 gText_QuestLog_UsedTheItem[] = _("{PLAYER} used the\n{STR_VAR_1}.");
|
||||
const u8 gText_QuestLog_UsedTheKeyItem[] = _("Used the item {STR_VAR_1}, which was\nin the KEY ITEMS POCKET.");
|
||||
const u8 gText_QuestLog_MonLearnedMoveFromTM[] = _("{STR_VAR_1} learned the move\n{STR_VAR_2} from a TM.");
|
||||
const u8 gText_QuestLog_MonReplacedMoveWithTM[] = _("{STR_VAR_1} learned the move\n{STR_VAR_2} from a TM and forgot\nthe move {STR_VAR_3}.");
|
||||
const u8 gText_QuestLog_MonsWereFullyRestoredAtCenter[] = _("POKéMON were fully restored\nat a POKéMON CENTER.");
|
||||
const u8 gText_QuestLog_PlayerBattledChampionRival[] = _("{DYNAMIC 0x00} had a marvelous battle\nwith the CHAMPION, {DYNAMIC 0x01}.");
|
||||
const u8 gText_QuestLog_PlayerSentOutMon1RivalSentOutMon2[] = _("In the end, {DYNAMIC 0x00} sent out {DYNAMIC 0x01}\nwhile {DYNAMIC 0x02} countered with\n{DYNAMIC 0x03}.");
|
||||
const u8 gText_QuestLog_WonTheMatchAsAResult[] = _("And, as a result of battling with every\nbit of power, {DYNAMIC 0x00} won\nthe match.");
|
||||
const u8 gText_QuestLog_StoredItemInPC[] = _("Removed the item {STR_VAR_1} from\nthe BAG's ITEMS POCKET and stored it\non the PC.");
|
||||
const u8 gText_QuestLog_WithdrewItemFromPC[] = _("{PLAYER} withdrew the item {STR_VAR_1}\nfrom the PC.");
|
||||
const u8 gText_QuestLog_TradedMon1ForPersonsMon2[] = _("Traded {STR_VAR_3} in exchange for\n{STR_VAR_1}'s {STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_SingleBattleWithPersonResultedInOutcome[] = _("Took on {DYNAMIC 0x00} in a SINGLE BATTLE.\nIt was a hotly contested match that\nresulted in a {DYNAMIC 0x01}.");
|
||||
const u8 gText_QuestLog_DoubleBattleWithPersonResultedInOutcome[] = _("Took on {DYNAMIC 0x00} in a DOUBLE BATTLE.\nIt was an extended match that resulted\nin a {DYNAMIC 0x01}.");
|
||||
const u8 gText_QuestLog_MultiBattleWithPeopleResultedInOutcome[] = _("{DYNAMIC 0x00} and {DYNAMIC 0x01} took on\n{DYNAMIC 0x02} and {DYNAMIC 0x03} in a\nMULTI BATTLE and got a {DYNAMIC 0x04}.");
|
||||
const u8 gText_QuestLog_Win[] = _("win");
|
||||
const u8 gText_QuestLog_Loss[] = _("loss");
|
||||
const u8 gText_QuestLog_MingledInUnionRoom[] = _("Mingled with other TRAINERS in\nthe UNION ROOM.");
|
||||
const u8 gText_QuestLog_DepartedPlaceInTownForNextDestination[] = _("Departed {STR_VAR_2}\nin {STR_VAR_1} for the next\ndestination.");
|
||||
const u8 gText_QuestLog_SwitchedMonsBetweenBoxes[] = _("After consideration, switched\n{DYNAMIC 0x01} in {DYNAMIC 0x00} with\n{DYNAMIC 0x03} in {DYNAMIC 0x02}.");
|
||||
const u8 gText_QuestLog_MovedMonToNewBox[] = _("After deep thought, switched\n{DYNAMIC 0x01} in BOX “{DYNAMIC 0x00}” to\nthe BOX “{DYNAMIC 0x02}.”");
|
||||
const u8 gText_QuestLog_SwitchedMonsWithinBox[] = _("Switched around {DYNAMIC 0x01} and\n{DYNAMIC 0x02} in {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_MovedMonWithinBox[] = _("Moved {DYNAMIC 0x01} in {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_SwitchedPartyMonForPCMon[] = _("Switched {DYNAMIC 0x01} in {DYNAMIC 0x00}\nwith {DYNAMIC 0x02} in the party.");
|
||||
const u8 gText_QuestLog_WithdrewMonFromPC[] = _("Added {DYNAMIC 0x01} in {DYNAMIC 0x00}\nto the party.");
|
||||
const u8 gText_QuestLog_DepositedMonInPC[] = _("Moved {DYNAMIC 0x00} from the party\nto {DYNAMIC 0x01}.");
|
||||
const u8 gText_QuestLog_SwitchedMultipleMons[] = _("Moved a group of POKéMON in\n{DYNAMIC 0x00} to {DYNAMIC 0x01}.");
|
||||
const u8 gText_QuestLog_ADifferentSpot[] = _("a different spot");
|
||||
const u8 gText_QuestLog_GaveMonHeldItemFromPC[] = _("Removed the item {STR_VAR_1} from\n{PLAYER}'s PC and gave it to {STR_VAR_2}\nto hold.");
|
||||
const u8 gText_QuestLog_SwappedHeldItemFromPC[] = _("Removed the item {STR_VAR_1} from\na PC, gave it to {STR_VAR_2}, and put\nthe {STR_VAR_3} it held in the BAG.");
|
||||
const u8 gText_QuestLog_ChattedWithManyTrainers[] = _("Chatted with many TRAINERS.");
|
||||
const u8 gText_QuestLog_Handily[] = _("handily");
|
||||
const u8 gText_QuestLog_Tenaciously[] = _("tenaciously");
|
||||
const u8 gText_QuestLog_Somehow[] = _("somehow");
|
||||
const u8 gText_QuestLog_TradedMon1ForTrainersMon2[] = _("Met and traded with {STR_VAR_1}.\nObtained the TRAINER's {STR_VAR_2} in\nexchange for {STR_VAR_3}.");
|
||||
const u8 gText_QuestLog_BattledTrainerEndedInOutcome[] = _("Met and battled {STR_VAR_1}.\nThe match ended in a {STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_BoughtItem[] = _("Went to the POKéMON MART in\n{DYNAMIC 0x00} and bought one \n{DYNAMIC 0x01}.");
|
||||
const u8 gText_QuestLog_BoughtItemsIncludingItem[] = _("Went to the POKéMON MART in\n{DYNAMIC 0x00} and spent ¥{DYNAMIC 0x02} for\nitems including {DYNAMIC 0x01}(s).");
|
||||
const u8 gText_QuestLog_SoldNumOfItem[] = _("{DYNAMIC 0x00} went to the POKéMON MART in\n{DYNAMIC 0x01} and sold {DYNAMIC 0x03} of\nthe item {DYNAMIC 0x02}.");
|
||||
const u8 gText_QuestLog_SoldItemsIncludingItem[] = _("Sold items including {DYNAMIC 0x01} at\nthe POKéMON MART in {DYNAMIC 0x00},\nworth ¥{DYNAMIC 0x02}.");
|
||||
const u8 gText_QuestLog_JustOne[] = _("just one");
|
||||
const u8 gText_QuestLog_Num[] = _("{DYNAMIC 0x04}");
|
||||
const u8 gText_QuestLog_UsedSoftboiled[] = _("{STR_VAR_1} shared its HP using the move\nSOFTBOILED.");
|
||||
const u8 gText_QuestLog_UsedMilkDrink[] = _("{STR_VAR_1} shared its HP using the move\nMILK DRINK.");
|
||||
const u8 gText_QuestLog_MonLearnedMoveFromHM[] = _("{STR_VAR_1} securely learned the move\n{STR_VAR_2} using an HM.");
|
||||
const u8 gText_QuestLog_MonReplacedMoveWithHM[] = _("{STR_VAR_1} securely learned the move\n{STR_VAR_2} using an HM and forgot\nthe move {STR_VAR_3}.");
|
||||
const u8 gText_QuestLog_DefeatedWildMon[] = _("{DYNAMIC 0x05} managed to defeat the POKéMON\n{DYNAMIC 0x01} in {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_DefeatedWildMons[] = _("Defeated {DYNAMIC 0x02} wild POKéMON including\n{DYNAMIC 0x01} in {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_CaughtWildMon[] = _("{DYNAMIC 0x05} managed to catch the POKéMON\n{DYNAMIC 0x03} in {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_CaughtWildMons[] = _("Threw POKé BALLS in a frenzy, catching\n{DYNAMIC 0x04} POKéMON including {DYNAMIC 0x03} here\nin {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_DefeatedWildMonAndCaughtWildMon[] = _("{DYNAMIC 0x05} defeated the POKéMON\n{DYNAMIC 0x01} and caught one {DYNAMIC 0x03}\nin {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_DefeatedWildMonAndCaughtWildMons[] = _("Defeated the POKéMON {DYNAMIC 0x01}\nand caught {DYNAMIC 0x04} POKéMON including\n{DYNAMIC 0x03} in {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_DefeatedWildMonsAndCaughtWildMon[] = _("{DYNAMIC 0x05} defeated {DYNAMIC 0x02} POKéMON including\n{DYNAMIC 0x01} and caught one {DYNAMIC 0x03}\nin {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_DefeatedWildMonsAndCaughtWildMons[] = _("Defeated {DYNAMIC 0x02} POKéMON including\n{DYNAMIC 0x01} and caught {DYNAMIC 0x04} POKéMON\nincluding {DYNAMIC 0x03} in {DYNAMIC 0x00}.");
|
||||
const u8 gText_QuestLog_GaveMonHeldItem[] = _("Made {STR_VAR_1} hold the item\n{STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_GaveMonHeldItem2[] = _("{PLAYER} made {STR_VAR_1} hold the item\n{STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_UsedCut[] = _("{STR_VAR_1} used the Hidden Move\nCUT here.");
|
||||
const u8 gText_QuestLog_UsedFly[] = _("{STR_VAR_1} used the Hidden Move\nFLY and flew to {STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_UsedSurf[] = _("{STR_VAR_1} used the Hidden Move\nSURF and rode the waves.");
|
||||
const u8 gText_QuestLog_UsedStrength[] = _("{STR_VAR_1} used the Hidden Move\nSTRENGTH here.");
|
||||
const u8 gText_QuestLog_UsedFlash[] = _("{STR_VAR_1} used the Hidden Move\nFLASH and illuminated a pitch-black\ncave.");
|
||||
const u8 gText_QuestLog_UsedRockSmash[] = _("{STR_VAR_1} used the Hidden Move\nROCK SMASH here.");
|
||||
const u8 gText_QuestLog_UsedWaterfall[] = _("{STR_VAR_1} used the Hidden Move\nWATERFALL to scale a raging torrent."); // Unused
|
||||
const u8 gText_QuestLog_UsedDive[] = _("{STR_VAR_1}は ふかい ところを めざし\nひでんわざ\nダイビングを つかった!");
|
||||
const u8 gText_QuestLog_UsedDigInLocation[] = _("{STR_VAR_1} used DIG to escape from\n{STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_UsedSweetScent[] = _("{STR_VAR_1} used SWEET SCENT to attract\nwild POKéMON.");
|
||||
const u8 gText_QuestLog_UsedTeleportToLocation[] = _("{STR_VAR_1} used TELEPORT, transporting\nthe party to {STR_VAR_2}'s\n{STR_VAR_3}.");
|
||||
const u8 gText_QuestLog_LeftTownsLocationForNextDestination[] = _("{PLAYER} left {STR_VAR_1}'s\n{STR_VAR_2} for the next\ndestination.");
|
||||
const u8 gText_QuestLog_PlayedGamesAtGameCorner[] = _("Played a lot of games at the ROCKET\nGAME CORNER in {STR_VAR_1}.");
|
||||
const u8 gText_QuestLog_RestedAtHome[] = _("{PLAYER} rested comfortably at home.");
|
||||
const u8 gText_QuestLog_LeftOaksLab[] = _("{PLAYER} left PROF. OAK's POKéMON\nRESEARCH LAB.");
|
||||
const u8 gText_QuestLog_GymWasFullOfToughTrainers[] = _("The GYM in {STR_VAR_1} was full of\ntough TRAINERS…\nPreparations had to be made.");
|
||||
const u8 gText_QuestLog_DepartedGym[] = _("Departed the GYM in {STR_VAR_1}.");
|
||||
const u8 gText_QuestLog_HadGreatTimeInSafariZone[] = _("{PLAYER} had a great time with POKéMON\nin the SAFARI ZONE.");
|
||||
const u8 gText_QuestLog_ManagedToGetOutOfLocation[] = _("Managed to get out of {STR_VAR_2}\nafter wandering about.");
|
||||
const u8 gText_QuestLog_TookOnGymLeadersMonWithMonAndWon[] = _("Took on {DYNAMIC 0x00} GYM LEADER\n{DYNAMIC 0x01}'s {DYNAMIC 0x02} with {DYNAMIC 0x03}\nand won {DYNAMIC 0x04}!");
|
||||
const u8 gText_QuestLog_TookOnEliteFoursMonWithMonAndWon[] = _("Took on ELITE FOUR {DYNAMIC 0x00}'s\n{DYNAMIC 0x01} with {DYNAMIC 0x02} and\nwon {DYNAMIC 0x03}!");
|
||||
const u8 gText_QuestLog_TookOnTrainersMonWithMonAndWon[] = _("In {DYNAMIC 0x00}, took on\n{DYNAMIC 0x01}'s {DYNAMIC 0x02} with {DYNAMIC 0x03}\nand won {DYNAMIC 0x04}!");
|
||||
const u8 gText_QuestLog_Coolly[] = _("coolly");
|
||||
const u8 gText_QuestLog_Barely[] = _("barely");
|
||||
const u8 gText_QuestLog_UsedEscapeRope[] = _("{PLAYER} used an ESCAPE ROPE to get\nout from {STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_Draw[] = _("draw");
|
||||
const u8 gText_QuestLog_DepartedTheLocationForNextDestination[] = _("Departed from the {STR_VAR_2}\nfor the next destination.");
|
||||
const u8 gText_QuestLog_DepartedFromLocationToNextDestination[] = _("{PLAYER} departed from\n{STR_VAR_2} and made way\nto the next destination.");
|
||||
const u8 gText_QuestLog_ObtainedItemInLocation[] = _("Here in {STR_VAR_1}, {PLAYER}\nobtained the item {STR_VAR_2}.");
|
||||
const u8 gText_QuestLog_ArrivedInLocation[] = _("Arrived in {STR_VAR_1}.");
|
||||
const u8 gText_QuestLog_SavedGameAtLocation[] = _("And {PLAYER} saved the game at this\nlocation: {STR_VAR_1}.");
|
||||
const u8 gText_QuestLog_Home[] = _("HOME");
|
||||
const u8 gText_QuestLog_OakResearchLab[] = _("OAK RESEARCH LAB");
|
||||
const u8 gText_QuestLog_Gym[] = _("GYM");
|
||||
const u8 gText_QuestLog_PokemonLeagueGate[] = _("POKéMON LEAGUE GATE");
|
||||
const u8 gText_QuestLog_ViridianForest[] = _("VIRIDIAN FOREST");
|
||||
const u8 gText_QuestLog_PewterMuseumOfScience[] = _("PEWTER MUSEUM OF SCIENCE");
|
||||
const u8 gText_QuestLog_MtMoon[] = _("MT. MOON");
|
||||
const u8 gText_QuestLog_BikeShop[] = _("BIKE SHOP");
|
||||
const u8 gText_QuestLog_BillsHouse[] = _("BILL'S HOUSE");
|
||||
const u8 gText_QuestLog_DayCare[] = _("DAY CARE");
|
||||
const u8 gText_QuestLog_UndergroundPath[] = _("UNDERGROUND PATH");
|
||||
const u8 gText_QuestLog_PokemonFanClub[] = _("POKéMON FAN CLUB");
|
||||
const u8 gText_QuestLog_SSAnne[] = _("S.S. ANNE");
|
||||
const u8 gText_QuestLog_DiglettsCave[] = _("DIGLETT'S CAVE");
|
||||
const u8 gText_QuestLog_RockTunnel[] = _("ROCK TUNNEL");
|
||||
const u8 gText_QuestLog_PowerPlant[] = _("POWER PLANT");
|
||||
const u8 gText_QuestLog_PokemonTower[] = _("POKéMON TOWER");
|
||||
const u8 gText_QuestLog_VolunteerHouse[] = _("VOLUNTEER HOUSE");
|
||||
const u8 gText_QuestLog_NameRatersHouse[] = _("NAME RATER'S HOUSE");
|
||||
const u8 gText_QuestLog_CeladonDeptStore[] = _("CELADON DEPT. STORE");
|
||||
const u8 gText_QuestLog_CeladonMansion[] = _("CELADON MANSION");
|
||||
const u8 gText_QuestLog_RocketGameCorner[] = _("ROCKET GAME CORNER");
|
||||
const u8 gText_QuestLog_Restaurant[] = _("RESTAURANT");
|
||||
const u8 gText_QuestLog_RocketHideout[] = _("ROCKET HIDEOUT");
|
||||
const u8 gText_QuestLog_SafariZone[] = _("SAFARI ZONE");
|
||||
const u8 gText_QuestLog_WardensHome[] = _("WARDEN'S HOME");
|
||||
const u8 gText_QuestLog_FightingDojo[] = _("FIGHTING DOJO");
|
||||
const u8 gText_QuestLog_SilphCo[] = _("SILPH CO.");
|
||||
const u8 gText_QuestLog_SeafoamIslands[] = _("SEAFOAM ISLANDS");
|
||||
const u8 gText_QuestLog_PokemonMansion[] = _("POKéMON MANSION");
|
||||
const u8 gText_QuestLog_PokemonResearchLab[] = _("POKéMON RESEARCH LAB");
|
||||
const u8 gText_QuestLog_VictoryRoad[] = _("VICTORY ROAD");
|
||||
const u8 gText_QuestLog_PokemonLeague[] = _("POKéMON LEAGUE");
|
||||
const u8 gText_QuestLog_CeruleanCave[] = _("CERULEAN CAVE");
|
||||
@@ -0,0 +1,198 @@
|
||||
const u8 gTeachyTvString_TeachBattle[] = _("Teach me how to battle.");
|
||||
const u8 gTeachyTvString_StatusProblems[] = _("What are status problems?");
|
||||
const u8 gTeachyTvString_TypeMatchups[] = _("What are type matchups?");
|
||||
const u8 gTeachyTvString_CatchPkmn[] = _("I want to catch POKéMON.");
|
||||
const u8 gTeachyTvString_AboutTMs[] = _("Teach me about TMs.");
|
||||
const u8 gTeachyTvString_RegisterItem[] = _("How do I register an item?");
|
||||
const u8 gTeachyTvString_Cancel[] = _("CANCEL");
|
||||
const u8 gTeachyTvText_PokedudeSaysHello[] = _(
|
||||
"Hey, all you TRAINERS out there!\n"
|
||||
"HELLO, TRAINERS!\p"
|
||||
"……… ……… ………\p"
|
||||
"Come on, let me hear you!\n"
|
||||
"HELLO, TRAINERS!\l"
|
||||
"It's me, the POKé DUDE!\p");
|
||||
const u8 gTeachyTvText_BattleScript1[] = _(
|
||||
"Today, the POKé DUDE's here to\n"
|
||||
"tell you about how you can battle\l"
|
||||
"POKéMON!\p"
|
||||
"Say you're out for a stroll when,\n"
|
||||
"suddenly, a wild POKéMON appears!\p"
|
||||
"It's up to you to smartly use your\n"
|
||||
"POKéMON and their moves to reduce\l"
|
||||
"the opponent's HP to nothing, and\l"
|
||||
"claim victory!\p"
|
||||
"I'll show you how to do that in\n"
|
||||
"person and for sure!\p"
|
||||
"All righty, here goes!\p"
|
||||
"Keep your eyes glued to the super\n"
|
||||
"POKé DUDE SHOW!");
|
||||
const u8 gTeachyTvText_BattleScript2[] = _(
|
||||
"Well, did you get that?\p"
|
||||
"Even if your own POKéMON's HP\n"
|
||||
"falls to zero, and it becomes\l"
|
||||
"unable to battle, not to worry!\p"
|
||||
"Just take it to any POKéMON\n"
|
||||
"CENTER and heal it!\p"
|
||||
"All righty, be seeing you!\p"
|
||||
"Remember, TRAINERS, a good deed\n"
|
||||
"a day brings happiness to stay!");
|
||||
const u8 gTeachyTvText_StatusScript1[] = _(
|
||||
"Today, the POKé DUDE's here to\n"
|
||||
"tell you about status problems!\p"
|
||||
"Status problems include poisoning,\n"
|
||||
"paralysis, sleep, burn…\p"
|
||||
"There are a couple others, but\n"
|
||||
"they really are trouble.\p"
|
||||
"Get any one, and your POKéMON\n"
|
||||
"may become useless in battle.\p"
|
||||
"You know, it hurts the POKé DUDE\n"
|
||||
"to see a POKéMON suffer…\p"
|
||||
"So, what should you do if your\n"
|
||||
"POKéMON gets a status problem?\p"
|
||||
"Well, you've got me to show you!\p"
|
||||
"All righty, here goes!\p"
|
||||
"Keep your eyes glued to the super\n"
|
||||
"POKé DUDE SHOW!");
|
||||
const u8 gTeachyTvText_StatusScript2[] = _(
|
||||
"Poisoning or paralysis don't go\n"
|
||||
"away after a battle.\p"
|
||||
"If a POKéMON is poisoned, it loses\n"
|
||||
"HP even while you're walking.\p"
|
||||
"You should heal POKéMON of these\n"
|
||||
"kinds of problems right away.\p"
|
||||
"Use an item, or try to get to a\n"
|
||||
"POKéMON CENTER for healing.\p"
|
||||
"That wasn't hard, was it?\n"
|
||||
"All righty, be seeing you!\p"
|
||||
"Remember, TRAINERS, a good deed\n"
|
||||
"a day brings happiness to stay!");
|
||||
const u8 gTeachyTvText_MatchupsScript1[] = _(
|
||||
"Does everyone know about type\n"
|
||||
"matchups?\p"
|
||||
"POKéMON and their moves all\n"
|
||||
"belong to certain types.\p"
|
||||
"For example, there are such types\n"
|
||||
"as GRASS and WATER.\p"
|
||||
"You need to consider the type of\n"
|
||||
"the move used to attack…\p"
|
||||
"And, the type of the POKéMON that\n"
|
||||
"is hit by that attack.\p"
|
||||
"Depending on how those two types\n"
|
||||
"match up, the damage can change.\p"
|
||||
"You see, it depends on whether\n"
|
||||
"the type matchup is good or bad.\p"
|
||||
"If you don't know how matchups\n"
|
||||
"work, battles will be tough.\p"
|
||||
"So, let me demonstrate exactly\n"
|
||||
"what I mean.\p"
|
||||
"All righty, here goes!\p"
|
||||
"Keep your eyes glued to the super\n"
|
||||
"POKé DUDE SHOW!");
|
||||
const u8 gTeachyTvText_MatchupsScript2[] = _(
|
||||
"Is it possible to launch an attack\n"
|
||||
"that will inflict heavy damage?\p"
|
||||
"Does the opposing POKéMON pose\n"
|
||||
"a threat to your POKéMON?\p"
|
||||
"Is there any chance that it may\n"
|
||||
"have disastrously tough moves?\p"
|
||||
"Watch the type matchups to gain\n"
|
||||
"the upper hand!\p"
|
||||
"All righty, be seeing you!\p"
|
||||
"Oh, for the COOL-type POKé DUDE,\n"
|
||||
"AWESOME-type kids like you match\l"
|
||||
"up perfectly!\p"
|
||||
"Remember, a good deed a day\n"
|
||||
"brings happiness to stay!");
|
||||
const u8 gTeachyTvText_CatchingScript1[] = _(
|
||||
"Today, the POKé DUDE's going to\n"
|
||||
"show you how to catch POKéMON!\p"
|
||||
"Just imagine… A groovy POKéMON\n"
|
||||
"suddenly appearing in the wild!\p"
|
||||
"Oh, you want it!\n"
|
||||
"You just can't help it!\p"
|
||||
"Oh, you have to catch it!\n"
|
||||
"You gotta have it!\p"
|
||||
"Let me show you how you can make\n"
|
||||
"it happen!\p"
|
||||
"All righty, here goes!\p"
|
||||
"Keep your eyes glued to the super\n"
|
||||
"POKé DUDE SHOW!");
|
||||
const u8 gTeachyTvText_CatchingScript2[] = _(
|
||||
"If your first POKé BALL fails to\n"
|
||||
"catch the POKéMON, don't give up!\p"
|
||||
"Keep throwing POKé BALLS…\n"
|
||||
"It's bound to work sometime!\p"
|
||||
"All righty, be seeing you!\p"
|
||||
"Remember, TRAINERS, a good deed\n"
|
||||
"a day brings happiness to stay!");
|
||||
const u8 gTeachyTvText_TMsScript1[] = _(
|
||||
"Hey, everyone!\n"
|
||||
"Do you all have TMs?\p"
|
||||
"A TM, Technical Machine, is an\n"
|
||||
"amazingly great item!\p"
|
||||
"It teaches POKéMON a move that\n"
|
||||
"it may not learn when leveling up!\p"
|
||||
"Isn't that just great? What a\n"
|
||||
"convenient world we live in!\p"
|
||||
"Open the TM CASE and check out\n"
|
||||
"the TMs you have.\p"
|
||||
"You can check them out in detail,\n"
|
||||
"too.");
|
||||
const u8 gPokedudeText_TMTypes[] = _(
|
||||
"POKé DUDE: NORMAL, WATER, GRASS…\n"
|
||||
"TMs also come in types.\p"
|
||||
"Check the type and teach it to\n"
|
||||
"a POKéMON that matches up well.\p"
|
||||
"For example, WATER PULSE is\n"
|
||||
"suitable for WATER-type POKéMON.\p"
|
||||
"BULLET SEED is a move that most\n"
|
||||
"GRASS-type POKéMON can learn.\p"
|
||||
"There's one other thing!");
|
||||
const u8 gPokedudeText_ReadTMDescription[] = _(
|
||||
"Don't just look at the type, read\n"
|
||||
"the description, too.\p"
|
||||
"It will contain hints about what\n"
|
||||
"POKéMON might learn the move.\p"
|
||||
"For example, take a move like\n"
|
||||
"FOCUS PUNCH.\p"
|
||||
"It doesn't sound like anything a\n"
|
||||
"bird or fish POKéMON can learn.\p"
|
||||
"So, try using it on POKéMON with\n"
|
||||
"arms that can throw punches!");
|
||||
const u8 gTeachyTvText_TMsScript2[] = _(
|
||||
"Wow, I talked a lot today!\n"
|
||||
"All righty, be seeing you!\p"
|
||||
"Remember, TRAINERS, a good deed\n"
|
||||
"a day brings happiness to stay!");
|
||||
const u8 gTeachyTvText_RegisterScript1[] = _(
|
||||
"A TRAINER's BAG has a bunch of\n"
|
||||
"nifty, convenient features!\p"
|
||||
"Take stuff in the KEY ITEMS\n"
|
||||
"POCKET, for instance.\p"
|
||||
"You can use a key item without\n"
|
||||
"opening the BAG every time.\p"
|
||||
"For example, let's pretend I have\n"
|
||||
"a TEACHY TV in my BAG.\p"
|
||||
"I can register it for instant use,\n"
|
||||
"and I'll show you how!\p"
|
||||
"All righty, here goes!\p"
|
||||
"Keep your eyes glued to the sorta\n"
|
||||
"super POKé DUDE SHOW!");
|
||||
const u8 gTeachyTvText_RegisterScript2[] = _(
|
||||
"And now, your TEACHY TV is\n"
|
||||
"registered.\p"
|
||||
"How do you use it?\n"
|
||||
"Well, here's how it works.\p"
|
||||
"Once an item in the KEY ITEMS\n"
|
||||
"POKCET is registered, you can use\l"
|
||||
"it by pressing SELECT.\p"
|
||||
"So, you've given yourself\n"
|
||||
"one-touch access to TEACHY TV.\p"
|
||||
"All it takes for you to see me is\n"
|
||||
"pressing one button!\p"
|
||||
"That kind of attention is a little\n"
|
||||
"embarrassing!\p"
|
||||
"All righty, be seeing you!\p"
|
||||
"Remember, TRAINERS, a good deed\n"
|
||||
"a day brings happiness to stay!");
|
||||
+742
-742
File diff suppressed because it is too large
Load Diff
+3
-4
@@ -1,7 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "battle.h"
|
||||
#include "daycare.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/items.h"
|
||||
#include "mail_data.h"
|
||||
@@ -29,7 +28,7 @@
|
||||
#include "field_fadetransition.h"
|
||||
#include "trade.h"
|
||||
#include "constants/daycare.h"
|
||||
#include "constants/region_map.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
|
||||
// Combination of RSE's Day-Care (re-used on Four Island), FRLG's Day-Care, and egg_hatch.c
|
||||
|
||||
@@ -1816,7 +1815,7 @@ static void CB2_EggHatch_0(void)
|
||||
break;
|
||||
case 2:
|
||||
DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0);
|
||||
CopyToBgTilemapBuffer(0, gFile_graphics_interface_menu_map_tilemap, 0, 0);
|
||||
CopyToBgTilemapBuffer(0, gBattleTextboxTilemap, 0, 0);
|
||||
LoadCompressedPalette(gBattleTextboxPalette, 0, 0x20);
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -1968,7 +1967,7 @@ static void CB2_EggHatch_1(void)
|
||||
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
|
||||
gender = GetMonGender(&gPlayerParty[sEggHatchData->eggPartyID]);
|
||||
personality = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
|
||||
DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
|
||||
DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
|
||||
break;
|
||||
case 1:
|
||||
case -1:
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#include "malloc.h"
|
||||
#include "decompress.h"
|
||||
#include "pokemon.h"
|
||||
#include "text.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern const struct CompressedSpriteSheet gMonFrontPicTable[];
|
||||
|
||||
@@ -0,0 +1,452 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "decompress.h"
|
||||
#include "digit_obj_util.h"
|
||||
#include "main.h"
|
||||
|
||||
struct DigitPrinterAlloc
|
||||
{
|
||||
u32 count;
|
||||
struct DigitPrinter
|
||||
{
|
||||
bool8 isActive;
|
||||
u8 firstOamId;
|
||||
u8 strConvMode;
|
||||
u8 oamCount;
|
||||
u8 palTagIndex;
|
||||
u8 size;
|
||||
u8 shape;
|
||||
u8 priority;
|
||||
u8 xDelta;
|
||||
u8 tilesPerImage;
|
||||
u16 tileStart;
|
||||
s16 x;
|
||||
s16 y;
|
||||
u16 tileTag;
|
||||
u16 palTag;
|
||||
u32 pow10;
|
||||
s32 lastPrinted;
|
||||
} *array;
|
||||
};
|
||||
|
||||
// this file's functions
|
||||
static u8 GetFirstOamId(u8 oamCount);
|
||||
static void CopyWorkToOam(struct DigitPrinter *objWork);
|
||||
static void DrawNumObjsLeadingZeros(struct DigitPrinter *objWork, s32 num, bool32 sign);
|
||||
static void DrawNumObjsMinusInFront(struct DigitPrinter *objWork, s32 num, bool32 sign);
|
||||
static void DrawNumObjsMinusInBack(struct DigitPrinter *objWork, s32 num, bool32 sign);
|
||||
static bool32 SharesTileWithAnyActive(u32 id);
|
||||
static bool32 SharesPalWithAnyActive(u32 id);
|
||||
static u8 GetTilesPerImage(u32 shape, u32 size);
|
||||
|
||||
// ewram
|
||||
static EWRAM_DATA struct DigitPrinterAlloc *sOamWork = {0};
|
||||
|
||||
// const rom data
|
||||
static const u8 sTilesPerImage[4][4] =
|
||||
{
|
||||
[ST_OAM_SQUARE] = {
|
||||
[ST_OAM_SIZE_0] = 0x01, // SPRITE_SIZE_8x8
|
||||
[ST_OAM_SIZE_1] = 0x04, // SPRITE_SIZE_16x16
|
||||
[ST_OAM_SIZE_2] = 0x10, // SPRITE_SIZE_32x32
|
||||
[ST_OAM_SIZE_3] = 0x40 // SPRITE_SIZE_64x64
|
||||
},
|
||||
[ST_OAM_H_RECTANGLE] = {
|
||||
[ST_OAM_SIZE_0] = 0x02, // SPRITE_SIZE_16x8
|
||||
[ST_OAM_SIZE_1] = 0x04, // SPRITE_SIZE_32x8
|
||||
[ST_OAM_SIZE_2] = 0x08, // SPRITE_SIZE_32x16
|
||||
[ST_OAM_SIZE_3] = 0x20 // SPRITE_SIZE_64x32
|
||||
},
|
||||
[ST_OAM_V_RECTANGLE] = {
|
||||
[ST_OAM_SIZE_0] = 0x02, // SPRITE_SIZE_8x16
|
||||
[ST_OAM_SIZE_1] = 0x04, // SPRITE_SIZE_8x32
|
||||
[ST_OAM_SIZE_2] = 0x08, // SPRITE_SIZE_16x32
|
||||
[ST_OAM_SIZE_3] = 0x20 // SPRITE_SIZE_32x64
|
||||
}
|
||||
};
|
||||
|
||||
const u16 gUnknown_8479668[] = INCBIN_U16("graphics/misc/unk_8479688.gbapal");
|
||||
const u32 gUnknown_8479688[] = INCBIN_U32("graphics/misc/unk_8479688.4bpp.lz");
|
||||
const u32 gUnknown_8479748[] = INCBIN_U32("graphics/misc/unk_8479748.4bpp.lz");
|
||||
|
||||
// code
|
||||
bool32 DigitObjUtil_Init(u32 count)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
if (sOamWork != NULL)
|
||||
DigitObjUtil_Teardown();
|
||||
|
||||
sOamWork = Alloc(sizeof(*sOamWork));
|
||||
if (sOamWork == NULL)
|
||||
return FALSE;
|
||||
|
||||
sOamWork->array = Alloc(sizeof(struct DigitPrinter) * count);
|
||||
if (sOamWork->array == NULL)
|
||||
{
|
||||
Free(sOamWork);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
sOamWork->count = count;
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
sOamWork->array[i].isActive = FALSE;
|
||||
sOamWork->array[i].firstOamId = 0xFF;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void DigitObjUtil_Teardown(void)
|
||||
{
|
||||
if (sOamWork != NULL)
|
||||
{
|
||||
if (sOamWork->array != NULL)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < sOamWork->count; i++)
|
||||
DigitObjUtil_DeletePrinter(i);
|
||||
|
||||
Free(sOamWork->array);
|
||||
}
|
||||
|
||||
FREE_AND_SET_NULL(sOamWork);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 DigitObjUtil_CreatePrinter(u32 id, s32 num, const struct DigitObjUtilTemplate *template)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
if (sOamWork == NULL)
|
||||
return FALSE;
|
||||
if (sOamWork->array[id].isActive)
|
||||
return FALSE;
|
||||
|
||||
sOamWork->array[id].firstOamId = GetFirstOamId(template->oamCount);
|
||||
if (sOamWork->array[id].firstOamId == 0xFF)
|
||||
return FALSE;
|
||||
|
||||
sOamWork->array[id].tileStart = GetSpriteTileStartByTag(template->spriteSheet.uncompressed->tag);
|
||||
if (sOamWork->array[id].tileStart == 0xFFFF)
|
||||
{
|
||||
if (template->spriteSheet.uncompressed->size != 0)
|
||||
{
|
||||
sOamWork->array[id].tileStart = LoadSpriteSheet(template->spriteSheet.uncompressed);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct CompressedSpriteSheet compObjectPic;
|
||||
|
||||
compObjectPic = *template->spriteSheet.compressed;
|
||||
compObjectPic.size = GetDecompressedDataSize((const void *)template->spriteSheet.compressed->data);
|
||||
sOamWork->array[id].tileStart = LoadCompressedSpriteSheet(&compObjectPic);
|
||||
}
|
||||
|
||||
if (sOamWork->array[id].tileStart == 0xFFFF)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
sOamWork->array[id].palTagIndex = IndexOfSpritePaletteTag(template->spritePal->tag);
|
||||
if (sOamWork->array[id].palTagIndex == 0xFF)
|
||||
sOamWork->array[id].palTagIndex = LoadSpritePalette(template->spritePal);
|
||||
|
||||
sOamWork->array[id].strConvMode = template->strConvMode;
|
||||
sOamWork->array[id].oamCount = template->oamCount;
|
||||
sOamWork->array[id].x = template->x;
|
||||
sOamWork->array[id].y = template->y;
|
||||
sOamWork->array[id].shape = template->shape;
|
||||
sOamWork->array[id].size = template->size;
|
||||
sOamWork->array[id].priority = template->priority;
|
||||
sOamWork->array[id].xDelta = template->xDelta;
|
||||
sOamWork->array[id].tilesPerImage = GetTilesPerImage(template->shape, template->size);
|
||||
sOamWork->array[id].tileTag = template->spriteSheet.uncompressed->tag;
|
||||
sOamWork->array[id].palTag = template->spritePal->tag;
|
||||
sOamWork->array[id].isActive = TRUE;
|
||||
|
||||
// Decimal left shift
|
||||
sOamWork->array[id].pow10 = 1;
|
||||
for (i = 1; i < template->oamCount; i++)
|
||||
sOamWork->array[id].pow10 *= 10;
|
||||
|
||||
CopyWorkToOam(&sOamWork->array[id]);
|
||||
DigitObjUtil_PrintNumOn(id, num);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void CopyWorkToOam(struct DigitPrinter *objWork)
|
||||
{
|
||||
u32 i;
|
||||
u32 oamId = objWork->firstOamId;
|
||||
u32 x = objWork->x;
|
||||
u32 oamCount = objWork->oamCount + 1;
|
||||
|
||||
CpuFill16(0, &gMain.oamBuffer[oamId], sizeof(struct OamData) * oamCount);
|
||||
for (i = 0, oamId = objWork->firstOamId; i < oamCount; i++, oamId++)
|
||||
{
|
||||
gMain.oamBuffer[oamId].y = objWork->y;
|
||||
gMain.oamBuffer[oamId].x = x;
|
||||
gMain.oamBuffer[oamId].shape = objWork->shape;
|
||||
gMain.oamBuffer[oamId].size = objWork->size;
|
||||
gMain.oamBuffer[oamId].tileNum = objWork->tileStart;
|
||||
gMain.oamBuffer[oamId].priority = objWork->priority;
|
||||
gMain.oamBuffer[oamId].paletteNum = objWork->palTagIndex;
|
||||
|
||||
x += objWork->xDelta;
|
||||
}
|
||||
|
||||
oamId--;
|
||||
gMain.oamBuffer[oamId].x = objWork->x - objWork->xDelta;
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
gMain.oamBuffer[oamId].tileNum = objWork->tileStart + (objWork->tilesPerImage * 10);
|
||||
}
|
||||
|
||||
void DigitObjUtil_PrintNumOn(u32 id, s32 num)
|
||||
{
|
||||
bool32 sign;
|
||||
|
||||
if (sOamWork == NULL)
|
||||
return;
|
||||
if (!sOamWork->array[id].isActive)
|
||||
return;
|
||||
|
||||
sOamWork->array[id].lastPrinted = num;
|
||||
if (num < 0)
|
||||
{
|
||||
sign = TRUE;
|
||||
num *= -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sign = FALSE;
|
||||
}
|
||||
|
||||
switch (sOamWork->array[id].strConvMode)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
DrawNumObjsLeadingZeros(&sOamWork->array[id], num, sign);
|
||||
break;
|
||||
case 1:
|
||||
DrawNumObjsMinusInFront(&sOamWork->array[id], num, sign);
|
||||
break;
|
||||
case 2:
|
||||
DrawNumObjsMinusInBack(&sOamWork->array[id], num, sign);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void DrawNumObjsLeadingZeros(struct DigitPrinter *objWork, s32 num, bool32 sign)
|
||||
{
|
||||
u32 pow10 = objWork->pow10;
|
||||
u32 oamId = objWork->firstOamId;
|
||||
|
||||
while (pow10 != 0)
|
||||
{
|
||||
u32 digit = num / pow10;
|
||||
num -= (digit * pow10);
|
||||
pow10 /= 10;
|
||||
|
||||
gMain.oamBuffer[oamId].tileNum = (digit * objWork->tilesPerImage) + objWork->tileStart;
|
||||
oamId++;
|
||||
}
|
||||
|
||||
if (sign)
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_OFF;
|
||||
else
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
}
|
||||
|
||||
static void DrawNumObjsMinusInFront(struct DigitPrinter *objWork, s32 num, bool32 sign)
|
||||
{
|
||||
u32 pow10 = objWork->pow10;
|
||||
static int oamId;
|
||||
static int curDigit;
|
||||
static int firstDigit;
|
||||
|
||||
oamId = objWork->firstOamId;
|
||||
curDigit = 0;
|
||||
firstDigit = -1;
|
||||
|
||||
while (pow10 != 0)
|
||||
{
|
||||
u32 digit = num / pow10;
|
||||
num -= (digit * pow10);
|
||||
pow10 /= 10;
|
||||
|
||||
if (digit != 0 || firstDigit != -1 || pow10 == 0)
|
||||
{
|
||||
gMain.oamBuffer[oamId].tileNum = (digit * objWork->tilesPerImage) + objWork->tileStart;
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_OFF;
|
||||
|
||||
if (firstDigit == -1)
|
||||
firstDigit = curDigit;
|
||||
}
|
||||
else
|
||||
{
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
}
|
||||
|
||||
oamId++;
|
||||
curDigit++;
|
||||
}
|
||||
|
||||
if (sign)
|
||||
{
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_OFF;
|
||||
gMain.oamBuffer[oamId].x = objWork->x + ((firstDigit - 1) * objWork->xDelta);
|
||||
}
|
||||
else
|
||||
{
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
}
|
||||
}
|
||||
|
||||
static void DrawNumObjsMinusInBack(struct DigitPrinter *objWork, s32 num, bool32 sign)
|
||||
{
|
||||
u32 pow10 = objWork->pow10;
|
||||
u32 oamId = objWork->firstOamId;
|
||||
u32 printingDigits = 0;
|
||||
s32 nsprites = 0;
|
||||
|
||||
while (pow10 != 0)
|
||||
{
|
||||
u32 digit = num / pow10;
|
||||
num -= (digit * pow10);
|
||||
pow10 /= 10;
|
||||
|
||||
if (digit != 0 || printingDigits != 0 || pow10 == 0)
|
||||
{
|
||||
printingDigits = 1;
|
||||
gMain.oamBuffer[oamId].tileNum = (digit * objWork->tilesPerImage) + objWork->tileStart;
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_OFF;
|
||||
|
||||
oamId++;
|
||||
nsprites++;
|
||||
}
|
||||
}
|
||||
|
||||
while (nsprites < objWork->oamCount)
|
||||
{
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
oamId++;
|
||||
nsprites++;
|
||||
}
|
||||
|
||||
if (sign)
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_OFF;
|
||||
else
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
}
|
||||
|
||||
void DigitObjUtil_DeletePrinter(u32 id)
|
||||
{
|
||||
s32 oamId, oamCount, i;
|
||||
|
||||
if (sOamWork == NULL)
|
||||
return;
|
||||
if (!sOamWork->array[id].isActive)
|
||||
return;
|
||||
|
||||
oamCount = sOamWork->array[id].oamCount + 1;
|
||||
oamId = sOamWork->array[id].firstOamId;
|
||||
|
||||
for (i = 0; i < oamCount; i++, oamId++)
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
|
||||
if (!SharesTileWithAnyActive(id))
|
||||
FreeSpriteTilesByTag(sOamWork->array[id].tileTag);
|
||||
if (!SharesPalWithAnyActive(id))
|
||||
FreeSpritePaletteByTag(sOamWork->array[id].palTag);
|
||||
|
||||
sOamWork->array[id].isActive = FALSE;
|
||||
}
|
||||
|
||||
void DigitObjUtil_HideOrShow(u32 id, bool32 hide)
|
||||
{
|
||||
s32 oamId, oamCount, i;
|
||||
|
||||
if (sOamWork == NULL)
|
||||
return;
|
||||
if (!sOamWork->array[id].isActive)
|
||||
return;
|
||||
|
||||
oamCount = sOamWork->array[id].oamCount + 1;
|
||||
oamId = sOamWork->array[id].firstOamId;
|
||||
if (hide)
|
||||
{
|
||||
for (i = 0; i < oamCount; i++, oamId++)
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_ERASE;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < oamCount; i++, oamId++)
|
||||
gMain.oamBuffer[oamId].affineMode = ST_OAM_AFFINE_OFF;
|
||||
|
||||
DigitObjUtil_PrintNumOn(id, sOamWork->array[id].lastPrinted);
|
||||
}
|
||||
}
|
||||
|
||||
static u8 GetFirstOamId(u8 oamCount)
|
||||
{
|
||||
u32 i;
|
||||
u16 firstOamId = 64;
|
||||
|
||||
for (i = 0; i < sOamWork->count; i++)
|
||||
{
|
||||
if (!sOamWork->array[i].isActive)
|
||||
{
|
||||
if (sOamWork->array[i].firstOamId != 0xFF && sOamWork->array[i].oamCount <= oamCount)
|
||||
return sOamWork->array[i].firstOamId;
|
||||
}
|
||||
else
|
||||
{
|
||||
firstOamId += 1 + sOamWork->array[i].oamCount;
|
||||
}
|
||||
}
|
||||
|
||||
if (firstOamId + oamCount + 1 > 128)
|
||||
return 0xFF;
|
||||
else
|
||||
return firstOamId;
|
||||
}
|
||||
|
||||
static bool32 SharesTileWithAnyActive(u32 id)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < sOamWork->count; i++)
|
||||
{
|
||||
if (sOamWork->array[i].isActive && i != id
|
||||
&& sOamWork->array[i].tileTag == sOamWork->array[id].tileTag)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 SharesPalWithAnyActive(u32 id)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < sOamWork->count; i++)
|
||||
{
|
||||
if (sOamWork->array[i].isActive && i != id
|
||||
&& sOamWork->array[i].palTag == sOamWork->array[id].palTag)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static u8 GetTilesPerImage(u32 shape, u32 size)
|
||||
{
|
||||
return sTilesPerImage[shape][size];
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "dynamic_placeholder_text_util.h"
|
||||
#include "gba/macro.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "main.h"
|
||||
#include "malloc.h"
|
||||
#include "menu.h"
|
||||
@@ -19,7 +18,6 @@
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "window.h"
|
||||
#include "diploma.h"
|
||||
|
||||
struct Diploma
|
||||
{
|
||||
|
||||
+2344
-656
File diff suppressed because it is too large
Load Diff
+1607
-13
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,241 @@
|
||||
#include "global.h"
|
||||
#include "dodrio_berry_picking.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
|
||||
void sub_815A5BC(s32 a0)
|
||||
{
|
||||
struct Padded_U8 data[2];
|
||||
data[0].value = 1;
|
||||
data[1].value = a0;
|
||||
RfuPrepareSend0x2f00(data);
|
||||
}
|
||||
|
||||
u8 sub_815A5E8(s32 a0)
|
||||
{
|
||||
u8 * r1;
|
||||
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
|
||||
return 0;
|
||||
r1 = (u8 *)&gRecvCmds[a0][1];
|
||||
if (r1[0] == 1)
|
||||
return r1[4];
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct UnkPacket2
|
||||
{
|
||||
u8 id;
|
||||
u8 unk1_0:4;
|
||||
u8 unk1_1:4;
|
||||
u16 unk2_0:4;
|
||||
u16 unk2_1:4;
|
||||
u16 unk3_0:4;
|
||||
u16 unk3_1:4;
|
||||
u16 unk4_0:4;
|
||||
u16 unk4_1:4;
|
||||
u16 unk5_0:4;
|
||||
u16 unk5_1:4;
|
||||
u16 unk6_0:2;
|
||||
u16 unk6_1:2;
|
||||
u16 unk6_2:2;
|
||||
u16 unk6_3:2;
|
||||
u16 unk7_0:2;
|
||||
u16 unk7_1:2;
|
||||
u16 unk7_2:2;
|
||||
u16 unk7_3:2;
|
||||
u8 unk8_0:2;
|
||||
u8 unk8_1:2;
|
||||
u8 unk8_2:2;
|
||||
u8 unk8_3:2;
|
||||
u8 unk9_0:2;
|
||||
u8 unk9_1:2;
|
||||
u8 unk9_2:2;
|
||||
u8 unk9_3:1;
|
||||
u8 unk9_4:1;
|
||||
u8 unkA_0:1;
|
||||
u8 unkA_1:1;
|
||||
u8 unkA_2:1;
|
||||
u8 unkA_3:5;
|
||||
u8 unkB_0:1;
|
||||
u8 unkB_1:1;
|
||||
u8 unkB_2:1;
|
||||
u8 unkB_3:1;
|
||||
u8 unkB_4:1;
|
||||
u8 unkB_5:1;
|
||||
u8 unkB_6:1;
|
||||
};
|
||||
|
||||
void sub_815A61C(struct DodrioSubstruct_31A0 * arg0, struct DodrioSubstruct_31A0_2C * arg1, struct DodrioSubstruct_31A0_2C * arg2, struct DodrioSubstruct_31A0_2C * arg3, struct DodrioSubstruct_31A0_2C * arg4, struct DodrioSubstruct_31A0_2C * arg5, u8 arg6, u32 arg7, u32 arg8)
|
||||
{
|
||||
struct UnkPacket2 packet;
|
||||
struct DodrioSubstruct_31A0_14 * ptr = &arg0->unk14;
|
||||
|
||||
packet.id = 2;
|
||||
packet.unk1_0 = ptr->unkB[0];
|
||||
packet.unk1_1 = ptr->unkB[1];
|
||||
packet.unk2_0 = ptr->unkB[2];
|
||||
packet.unk2_1 = ptr->unkB[3];
|
||||
packet.unk3_0 = ptr->unkB[4];
|
||||
packet.unk3_1 = ptr->unkB[5];
|
||||
packet.unk4_0 = ptr->unkB[6];
|
||||
packet.unk4_1 = ptr->unkB[7];
|
||||
packet.unk5_0 = ptr->unkB[8];
|
||||
packet.unk5_1 = ptr->unkB[9];
|
||||
|
||||
packet.unk6_0 = ptr->unk0[0];
|
||||
packet.unk6_1 = ptr->unk0[1];
|
||||
packet.unk6_2 = ptr->unk0[2];
|
||||
packet.unk6_3 = ptr->unk0[3];
|
||||
packet.unk7_0 = ptr->unk0[4];
|
||||
packet.unk7_1 = ptr->unk0[5];
|
||||
packet.unk7_2 = ptr->unk0[6];
|
||||
packet.unk7_3 = ptr->unk0[7];
|
||||
packet.unk8_0 = ptr->unk0[8];
|
||||
packet.unk8_1 = ptr->unk0[9];
|
||||
|
||||
packet.unk8_2 = arg1->unk0;
|
||||
packet.unk8_3 = arg2->unk0;
|
||||
packet.unk9_0 = arg3->unk0;
|
||||
packet.unk9_1 = arg4->unk0;
|
||||
packet.unk9_2 = arg5->unk0;
|
||||
|
||||
packet.unk9_3 = arg1->unk4;
|
||||
packet.unk9_4 = arg2->unk4;
|
||||
packet.unkA_0 = arg3->unk4;
|
||||
packet.unkA_1 = arg4->unk4;
|
||||
packet.unkA_2 = arg5->unk4;
|
||||
|
||||
packet.unkB_2 = arg1->unk8;
|
||||
packet.unkB_3 = arg2->unk8;
|
||||
packet.unkB_4 = arg3->unk8;
|
||||
packet.unkB_5 = arg4->unk8;
|
||||
packet.unkB_6 = arg5->unk8;
|
||||
|
||||
packet.unkA_3 = arg6;
|
||||
packet.unkB_1 = arg7;
|
||||
packet.unkB_0 = arg8;
|
||||
RfuPrepareSend0x2f00(&packet);
|
||||
}
|
||||
|
||||
u32 sub_815A950(u32 unused, struct DodrioSubstruct_31A0 * arg0, struct DodrioSubstruct_31A0_2C * arg1, struct DodrioSubstruct_31A0_2C * arg2, struct DodrioSubstruct_31A0_2C * arg3, struct DodrioSubstruct_31A0_2C * arg4, struct DodrioSubstruct_31A0_2C * arg5, u8 *arg6, u32 *arg7, u32 *arg8)
|
||||
{
|
||||
struct UnkPacket2 * packet;
|
||||
struct DodrioSubstruct_31A0_14 * ptr = &arg0->unk14;
|
||||
|
||||
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
|
||||
return 0;
|
||||
|
||||
packet = (void *)&gRecvCmds[0][1];
|
||||
if (packet->id == 2)
|
||||
{
|
||||
ptr->unkB[0] = packet->unk1_0;
|
||||
ptr->unkB[1] = packet->unk1_1;
|
||||
ptr->unkB[2] = packet->unk2_0;
|
||||
ptr->unkB[3] = packet->unk2_1;
|
||||
ptr->unkB[4] = packet->unk3_0;
|
||||
ptr->unkB[5] = packet->unk3_1;
|
||||
ptr->unkB[6] = packet->unk4_0;
|
||||
ptr->unkB[7] = packet->unk4_1;
|
||||
ptr->unkB[8] = packet->unk5_0;
|
||||
ptr->unkB[9] = packet->unk5_1;
|
||||
ptr->unkB[10] = packet->unk1_0;
|
||||
|
||||
ptr->unk0[0] = packet->unk6_0;
|
||||
ptr->unk0[1] = packet->unk6_1;
|
||||
ptr->unk0[2] = packet->unk6_2;
|
||||
ptr->unk0[3] = packet->unk6_3;
|
||||
ptr->unk0[4] = packet->unk7_0;
|
||||
ptr->unk0[5] = packet->unk7_1;
|
||||
ptr->unk0[6] = packet->unk7_2;
|
||||
ptr->unk0[7] = packet->unk7_3;
|
||||
ptr->unk0[8] = packet->unk8_0;
|
||||
ptr->unk0[9] = packet->unk8_1;
|
||||
ptr->unk0[10] = packet->unk6_0;
|
||||
|
||||
arg1->unk0 = packet->unk8_2;
|
||||
arg1->unk4 = packet->unk9_3;
|
||||
arg1->unk8 = packet->unkB_2;
|
||||
|
||||
arg2->unk0 = packet->unk8_3;
|
||||
arg2->unk4 = packet->unk9_4;
|
||||
arg2->unk8 = packet->unkB_3;
|
||||
|
||||
arg3->unk0 = packet->unk9_0;
|
||||
arg3->unk4 = packet->unkA_0;
|
||||
arg3->unk8 = packet->unkB_4;
|
||||
|
||||
arg4->unk0 = packet->unk9_1;
|
||||
arg4->unk4 = packet->unkA_1;
|
||||
arg4->unk8 = packet->unkB_5;
|
||||
|
||||
arg5->unk0 = packet->unk9_2;
|
||||
arg5->unk4 = packet->unkA_2;
|
||||
arg5->unk8 = packet->unkB_6;
|
||||
|
||||
*arg6 = packet->unkA_3;
|
||||
*arg7 = packet->unkB_1;
|
||||
*arg8 = packet->unkB_0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct UnkPacket3
|
||||
{
|
||||
u8 id;
|
||||
u8 ALIGNED(4) unk4;
|
||||
};
|
||||
|
||||
void sub_815AAD8(u8 arg0)
|
||||
{
|
||||
struct UnkPacket3 packet;
|
||||
packet.id = 3;
|
||||
packet.unk4 = arg0;
|
||||
RfuPrepareSend0x2f00(&packet);
|
||||
}
|
||||
|
||||
u32 sub_815AB04(u32 arg0, u8 *arg1)
|
||||
{
|
||||
struct UnkPacket3 * packet;
|
||||
|
||||
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
|
||||
return 0;
|
||||
|
||||
packet = (void *)&gRecvCmds[arg0][1];
|
||||
if (packet->id == 3)
|
||||
{
|
||||
*arg1 = packet->unk4;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct UnkPacket4
|
||||
{
|
||||
u8 id;
|
||||
u32 unk4;
|
||||
};
|
||||
|
||||
void sub_815AB3C(u32 arg0)
|
||||
{
|
||||
struct UnkPacket4 packet;
|
||||
packet.id = 4;
|
||||
packet.unk4 = arg0;
|
||||
RfuPrepareSend0x2f00(&packet);
|
||||
}
|
||||
|
||||
u32 sub_815AB60(u32 arg0)
|
||||
{
|
||||
struct UnkPacket4 * packet;
|
||||
|
||||
if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
|
||||
return 0;
|
||||
|
||||
packet = (void *)&gRecvCmds[arg0][1];
|
||||
if (packet->id == 4)
|
||||
return packet->unk4;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1,17 +1,89 @@
|
||||
#include "global.h"
|
||||
#include "text.h"
|
||||
#include "dynamic_placeholder_text_util.h"
|
||||
#include "string_util.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
static EWRAM_DATA const u8 *sStringPointers[8] = {0};
|
||||
|
||||
static const u8 sTextColorTable[] =
|
||||
{
|
||||
0, 0, 0, 16, 17, 17, 17, 16, 16, 0, 0, 17, 1, 0, 17, 16,
|
||||
0, 16, 16, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0,
|
||||
17, 1, 0, 0, 0, 16, 17, 0, 16, 16, 16, 0, 1, 0, 51, 51,
|
||||
51, 51, 51, 51, 51, 51, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34,
|
||||
34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 50,
|
||||
// [LOW_NYBBLE / 2] = 0xXY, // HIGH_NYBBLE
|
||||
[OBJ_EVENT_GFX_RED_NORMAL / 2] = 0x00, // OBJ_EVENT_GFX_RED_BIKE
|
||||
[OBJ_EVENT_GFX_RED_SURF / 2] = 0x00, // OBJ_EVENT_GFX_RED_ITEM
|
||||
[OBJ_EVENT_GFX_RED_FISH / 2] = 0x00, // OBJ_EVENT_GFX_RED_ITEM_COPY
|
||||
[OBJ_EVENT_GFX_RED_VS_SEEKER / 2] = 0x10, // OBJ_EVENT_GFX_GREEN_NORMAL
|
||||
[OBJ_EVENT_GFX_GREEN_BIKE / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_SURF
|
||||
[OBJ_EVENT_GFX_GREEN_ITEM / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_FISH
|
||||
[OBJ_EVENT_GFX_GREEN_ITEM_COPY / 2] = 0x11, // OBJ_EVENT_GFX_GREEN_VS_SEEKER
|
||||
[OBJ_EVENT_GFX_RS_BRENDAN / 2] = 0x10, // OBJ_EVENT_GFX_RS_MAY
|
||||
[OBJ_EVENT_GFX_LITTLE_BOY / 2] = 0x10, // OBJ_EVENT_GFX_LITTLE_GIRL
|
||||
[OBJ_EVENT_GFX_YOUNGSTER / 2] = 0x00, // OBJ_EVENT_GFX_BOY
|
||||
[OBJ_EVENT_GFX_BUG_CATCHER / 2] = 0x00, // OBJ_EVENT_GFX_SITTING_BOY
|
||||
[OBJ_EVENT_GFX_LASS / 2] = 0x11, // OBJ_EVENT_GFX_WOMAN_1
|
||||
[OBJ_EVENT_GFX_BATTLE_GIRL / 2] = 0x01, // OBJ_EVENT_GFX_MAN
|
||||
[OBJ_EVENT_GFX_ROCKER / 2] = 0x00, // OBJ_EVENT_GFX_FAT_MAN
|
||||
[OBJ_EVENT_GFX_WOMAN_2 / 2] = 0x11, // OBJ_EVENT_GFX_BEAUTY
|
||||
[OBJ_EVENT_GFX_BALDING_MAN / 2] = 0x10, // OBJ_EVENT_GFX_WOMAN_3
|
||||
[OBJ_EVENT_GFX_OLD_MAN_1 / 2] = 0x00, // OBJ_EVENT_GFX_OLD_MAN_2
|
||||
[OBJ_EVENT_GFX_OLD_MAN_LYING_DOWN / 2] = 0x10, // OBJ_EVENT_GFX_OLD_WOMAN
|
||||
[OBJ_EVENT_GFX_TUBER_M_1 / 2] = 0x10, // OBJ_EVENT_GFX_TUBER_F
|
||||
[OBJ_EVENT_GFX_TUBER_M_2 / 2] = 0x00, // OBJ_EVENT_GFX_CAMPER
|
||||
[OBJ_EVENT_GFX_PICNICKER / 2] = 0x01, // OBJ_EVENT_GFX_COOLTRAINER_M
|
||||
[OBJ_EVENT_GFX_COOLTRAINER_F / 2] = 0x01, // OBJ_EVENT_GFX_SWIMMER_M_WATER
|
||||
[OBJ_EVENT_GFX_SWIMMER_F_WATER / 2] = 0x01, // OBJ_EVENT_GFX_SWIMMER_M_LAND
|
||||
[OBJ_EVENT_GFX_SWIMMER_F_LAND / 2] = 0x01, // OBJ_EVENT_GFX_WORKER_M
|
||||
[OBJ_EVENT_GFX_WORKER_F / 2] = 0x01, // OBJ_EVENT_GFX_ROCKET_M
|
||||
[OBJ_EVENT_GFX_ROCKET_F / 2] = 0x01, // OBJ_EVENT_GFX_GBA_KID
|
||||
[OBJ_EVENT_GFX_SUPER_NERD / 2] = 0x00, // OBJ_EVENT_GFX_BIKER
|
||||
[OBJ_EVENT_GFX_BLACKBELT / 2] = 0x00, // OBJ_EVENT_GFX_SCIENTIST
|
||||
[OBJ_EVENT_GFX_HIKER / 2] = 0x00, // OBJ_EVENT_GFX_FISHER
|
||||
[OBJ_EVENT_GFX_CHANNELER / 2] = 0x01, // OBJ_EVENT_GFX_CHEF
|
||||
[OBJ_EVENT_GFX_POLICEMAN / 2] = 0x00, // OBJ_EVENT_GFX_GENTLEMAN
|
||||
[OBJ_EVENT_GFX_SAILOR / 2] = 0x00, // OBJ_EVENT_GFX_CAPTAIN
|
||||
[OBJ_EVENT_GFX_NURSE / 2] = 0x11, // OBJ_EVENT_GFX_CABLE_CLUB_RECEPTIONIST
|
||||
[OBJ_EVENT_GFX_UNION_ROOM_RECEPTIONIST / 2] = 0x01, // OBJ_EVENT_GFX_UNUSED_MALE_RECEPTIONIST
|
||||
[OBJ_EVENT_GFX_CLERK / 2] = 0x00, // OBJ_EVENT_GFX_MG_DELIVERYMAN
|
||||
[OBJ_EVENT_GFX_TRAINER_TOWER_DUDE / 2] = 0x00, // OBJ_EVENT_GFX_PROF_OAK
|
||||
[OBJ_EVENT_GFX_BLUE / 2] = 0x00, // OBJ_EVENT_GFX_BILL
|
||||
[OBJ_EVENT_GFX_LANCE / 2] = 0x10, // OBJ_EVENT_GFX_AGATHA
|
||||
[OBJ_EVENT_GFX_DAISY / 2] = 0x11, // OBJ_EVENT_GFX_LORELEI
|
||||
[OBJ_EVENT_GFX_MR_FUJI / 2] = 0x00, // OBJ_EVENT_GFX_BRUNO
|
||||
[OBJ_EVENT_GFX_BROCK / 2] = 0x10, // OBJ_EVENT_GFX_MISTY
|
||||
[OBJ_EVENT_GFX_LT_SURGE / 2] = 0x10, // OBJ_EVENT_GFX_ERIKA
|
||||
[OBJ_EVENT_GFX_KOGA / 2] = 0x10, // OBJ_EVENT_GFX_SABRINA
|
||||
[OBJ_EVENT_GFX_BLAINE / 2] = 0x00, // OBJ_EVENT_GFX_GIOVANNI
|
||||
[OBJ_EVENT_GFX_MOM / 2] = 0x01, // OBJ_EVENT_GFX_CELIO
|
||||
[OBJ_EVENT_GFX_TEACHY_TV_HOST / 2] = 0x00, // OBJ_EVENT_GFX_GYM_GUY
|
||||
[OBJ_EVENT_GFX_ITEM_BALL / 2] = 0x33, // OBJ_EVENT_GFX_TOWN_MAP
|
||||
[OBJ_EVENT_GFX_POKEDEX / 2] = 0x33, // OBJ_EVENT_GFX_CUT_TREE
|
||||
[OBJ_EVENT_GFX_ROCK_SMASH_ROCK / 2] = 0x33, // OBJ_EVENT_GFX_STRENGTH_BOULDER
|
||||
[OBJ_EVENT_GFX_FOSSIL / 2] = 0x33, // OBJ_EVENT_GFX_RUBY
|
||||
[OBJ_EVENT_GFX_SAPPHIRE / 2] = 0x33, // OBJ_EVENT_GFX_OLD_AMBER
|
||||
[OBJ_EVENT_GFX_GYM_SIGN / 2] = 0x33, // OBJ_EVENT_GFX_SIGN
|
||||
[OBJ_EVENT_GFX_TRAINER_TIPS / 2] = 0x33, // OBJ_EVENT_GFX_CLIPBOARD
|
||||
[OBJ_EVENT_GFX_METEORITE / 2] = 0x33, // OBJ_EVENT_GFX_LAPRAS_DOLL
|
||||
[OBJ_EVENT_GFX_SEAGALLOP / 2] = 0x23, // OBJ_EVENT_GFX_SNORLAX
|
||||
[OBJ_EVENT_GFX_SPEAROW / 2] = 0x22, // OBJ_EVENT_GFX_CUBONE
|
||||
[OBJ_EVENT_GFX_POLIWRATH / 2] = 0x22, // OBJ_EVENT_GFX_CLEFAIRY
|
||||
[OBJ_EVENT_GFX_PIDGEOT / 2] = 0x22, // OBJ_EVENT_GFX_JIGGLYPUFF
|
||||
[OBJ_EVENT_GFX_PIDGEY / 2] = 0x22, // OBJ_EVENT_GFX_CHANSEY
|
||||
[OBJ_EVENT_GFX_OMANYTE / 2] = 0x22, // OBJ_EVENT_GFX_KANGASKHAN
|
||||
[OBJ_EVENT_GFX_PIKACHU / 2] = 0x22, // OBJ_EVENT_GFX_PSYDUCK
|
||||
[OBJ_EVENT_GFX_NIDORAN_F / 2] = 0x22, // OBJ_EVENT_GFX_NIDORAN_M
|
||||
[OBJ_EVENT_GFX_NIDORINO / 2] = 0x22, // OBJ_EVENT_GFX_MEOWTH
|
||||
[OBJ_EVENT_GFX_SEEL / 2] = 0x22, // OBJ_EVENT_GFX_VOLTORB
|
||||
[OBJ_EVENT_GFX_SLOWPOKE / 2] = 0x22, // OBJ_EVENT_GFX_SLOWBRO
|
||||
[OBJ_EVENT_GFX_MACHOP / 2] = 0x22, // OBJ_EVENT_GFX_WIGGLYTUFF
|
||||
[OBJ_EVENT_GFX_DODUO / 2] = 0x22, // OBJ_EVENT_GFX_FEAROW
|
||||
[OBJ_EVENT_GFX_MACHOKE / 2] = 0x22, // OBJ_EVENT_GFX_LAPRAS
|
||||
[OBJ_EVENT_GFX_ZAPDOS / 2] = 0x22, // OBJ_EVENT_GFX_MOLTRES
|
||||
[OBJ_EVENT_GFX_ARTICUNO / 2] = 0x22, // OBJ_EVENT_GFX_MEWTWO
|
||||
[OBJ_EVENT_GFX_MEW / 2] = 0x22, // OBJ_EVENT_GFX_ENTEI
|
||||
[OBJ_EVENT_GFX_SUICUNE / 2] = 0x22, // OBJ_EVENT_GFX_RAIKOU
|
||||
[OBJ_EVENT_GFX_LUGIA / 2] = 0x22, // OBJ_EVENT_GFX_HO_OH
|
||||
[OBJ_EVENT_GFX_CELEBI / 2] = 0x22, // OBJ_EVENT_GFX_KABUTO
|
||||
[OBJ_EVENT_GFX_DEOXYS_D / 2] = 0x22, // OBJ_EVENT_GFX_DEOXYS_A
|
||||
[OBJ_EVENT_GFX_DEOXYS_N / 2] = 0x32, // OBJ_EVENT_GFX_SS_ANNE
|
||||
};
|
||||
|
||||
void DynamicPlaceholderTextUtil_Reset(void)
|
||||
@@ -63,7 +135,7 @@ u8 GetColorFromTextColorTable(u16 graphicId)
|
||||
u32 test = graphicId >> 1;
|
||||
u32 shift = (graphicId & 1) << 2;
|
||||
|
||||
if (test > 0x4B)
|
||||
if (test >= NELEMS(sTextColorTable))
|
||||
return 3;
|
||||
else
|
||||
return (sTextColorTable[graphicId >> 1] >> shift) & 0xF;
|
||||
|
||||
+1
-16
@@ -1,33 +1,18 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "bg.h"
|
||||
#include "data.h"
|
||||
#include "decompress.h"
|
||||
#include "dynamic_placeholder_text_util.h"
|
||||
#include "easy_chat.h"
|
||||
#include "event_data.h"
|
||||
#include "field_message_box.h"
|
||||
#include "field_weather.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "mevent.h"
|
||||
#include "menu.h"
|
||||
#include "mail.h"
|
||||
#include "overworld.h"
|
||||
#include "palette.h"
|
||||
#include "pokedex.h"
|
||||
#include "random.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "text_window.h"
|
||||
#include "window.h"
|
||||
#include "constants/easy_chat.h"
|
||||
#include "constants/object_events.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
struct Unk203A120
|
||||
@@ -291,7 +276,7 @@ static u16 GetRandomWordFromAnyGroup(u16 groupId)
|
||||
return GetRandomWordFromGroup(groupId);
|
||||
}
|
||||
|
||||
void Special_BufferEasyChatMessage(void)
|
||||
void ShowEasyChatMessage(void)
|
||||
{
|
||||
u16 *easyChatWords;
|
||||
int columns, rows;
|
||||
|
||||
+1363
File diff suppressed because it is too large
Load Diff
+2298
File diff suppressed because it is too large
Load Diff
+84
-75
@@ -1,25 +1,18 @@
|
||||
#include "global.h"
|
||||
#include "link.h"
|
||||
#include "unk_815c27c.h"
|
||||
|
||||
enum {
|
||||
EREADER_XFR_STATE_INIT,
|
||||
EREADER_XFR_STATE_HANDSHAKE,
|
||||
EREADER_XFR_STATE_START,
|
||||
EREADER_XFR_STATE_TRANSFER,
|
||||
};
|
||||
#include "ereader_helpers.h"
|
||||
|
||||
struct SendRecvMgr
|
||||
{
|
||||
u8 sendOrRecv;
|
||||
u8 state;
|
||||
u8 field_02;
|
||||
u8 field_03;
|
||||
u8 field_04;
|
||||
u32 * dataptr;
|
||||
int cursor;
|
||||
int size;
|
||||
u32 checksum;
|
||||
u8 master_slave; // 0: clock slave; 1: clock master
|
||||
u8 state; // EREADER_XFR_STATE_*
|
||||
u8 xferState; // EREADER_XFER_*
|
||||
u8 checksumResult; // EREADER_CHECKSUM_*
|
||||
u8 cancellationReason; // EREADER_CANCEL_*
|
||||
u32 * dataptr; // Payload source or destination
|
||||
int cursor; // Index of the next word
|
||||
int size; // Last word index
|
||||
u32 checksum; // Validation checksum
|
||||
};
|
||||
|
||||
static bool16 DetermineSendRecvState(u8);
|
||||
@@ -39,10 +32,9 @@ static u16 sSavedIme;
|
||||
static u16 sSavedIe;
|
||||
static u16 sSavedTm3Cnt;
|
||||
static u16 sSavedSioCnt;
|
||||
static u16 sSavedSioCnt;
|
||||
static u16 sSavedRCnt;
|
||||
|
||||
int EReader_Send(size_t r6, const void * r5)
|
||||
int EReader_Send(size_t size, const void * src)
|
||||
{
|
||||
int result;
|
||||
EReaderHelper_SaveRegsState();
|
||||
@@ -53,18 +45,18 @@ int EReader_Send(size_t r6, const void * r5)
|
||||
if (TEST_BUTTON(sJoyNew, B_BUTTON))
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
sSendRecvStatus = EReaderHandleTransfer(1, r6, r5, NULL);
|
||||
if ((sSendRecvStatus & 0x13) == 0x10)
|
||||
sSendRecvStatus = EReaderHandleTransfer(1, size, src, NULL);
|
||||
if ((sSendRecvStatus & 0x13) == 0x10) // checksum OK and xfer off
|
||||
{
|
||||
result = 0;
|
||||
break;
|
||||
}
|
||||
else if (sSendRecvStatus & 8)
|
||||
else if (sSendRecvStatus & 8) // cancelled by player
|
||||
{
|
||||
result = 1;
|
||||
break;
|
||||
}
|
||||
else if (sSendRecvStatus & 4)
|
||||
else if (sSendRecvStatus & 4) // timed out
|
||||
{
|
||||
result = 2;
|
||||
break;
|
||||
@@ -81,7 +73,7 @@ int EReader_Send(size_t r6, const void * r5)
|
||||
return result;
|
||||
}
|
||||
|
||||
int EReader_Recv(void * r5)
|
||||
int EReader_Recv(void * dest)
|
||||
{
|
||||
int result;
|
||||
EReaderHelper_SaveRegsState();
|
||||
@@ -92,18 +84,18 @@ int EReader_Recv(void * r5)
|
||||
if (TEST_BUTTON(sJoyNew, B_BUTTON))
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
sSendRecvStatus = EReaderHandleTransfer(0, 0, NULL, r5);
|
||||
if ((sSendRecvStatus & 0x13) == 0x10)
|
||||
sSendRecvStatus = EReaderHandleTransfer(0, 0, NULL, dest);
|
||||
if ((sSendRecvStatus & 0x13) == 0x10) // checksum OK and xfer off
|
||||
{
|
||||
result = 0;
|
||||
break;
|
||||
}
|
||||
else if (sSendRecvStatus & 8)
|
||||
else if (sSendRecvStatus & 8) // cancelled by player
|
||||
{
|
||||
result = 1;
|
||||
break;
|
||||
}
|
||||
else if (sSendRecvStatus & 4)
|
||||
else if (sSendRecvStatus & 4) // timed out
|
||||
{
|
||||
result = 2;
|
||||
break;
|
||||
@@ -159,92 +151,98 @@ u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu
|
||||
{
|
||||
switch (sSendRecvMgr.state)
|
||||
{
|
||||
case 0:
|
||||
case EREADER_XFR_STATE_INIT:
|
||||
OpenSerialMulti();
|
||||
sSendRecvMgr.field_02 = 1;
|
||||
sSendRecvMgr.state = 1;
|
||||
sSendRecvMgr.xferState = EREADER_XFER_EXE;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_HANDSHAKE;
|
||||
break;
|
||||
case 1:
|
||||
case EREADER_XFR_STATE_HANDSHAKE:
|
||||
if (DetermineSendRecvState(mode))
|
||||
EnableSio();
|
||||
if (gShouldAdvanceLinkState == 2)
|
||||
{
|
||||
sSendRecvMgr.field_04 = 2;
|
||||
sSendRecvMgr.state = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_KEY;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
// Progression is handled by the serial callback
|
||||
break;
|
||||
case 2:
|
||||
case EREADER_XFR_STATE_START:
|
||||
OpenSerial32();
|
||||
SetUpTransferManager(size, data, recvBuffer);
|
||||
sSendRecvMgr.state = 3;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_TRANSFER;
|
||||
// fallthrough
|
||||
case 3:
|
||||
case EREADER_XFR_STATE_TRANSFER:
|
||||
if (gShouldAdvanceLinkState == 2)
|
||||
{
|
||||
sSendRecvMgr.field_04 = 2;
|
||||
sSendRecvMgr.state = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_KEY;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
sCounter1++;
|
||||
sCounter2++;
|
||||
if (sSendRecvMgr.sendOrRecv == 0 && sCounter2 > 60)
|
||||
if (sSendRecvMgr.master_slave == 0 && sCounter2 > 60)
|
||||
{
|
||||
sSendRecvMgr.field_04 = 1;
|
||||
sSendRecvMgr.state = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_TIMEOUT;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
if (sSendRecvMgr.field_02 != 2)
|
||||
if (sSendRecvMgr.xferState != EREADER_XFER_CHK)
|
||||
{
|
||||
if (sSendRecvMgr.sendOrRecv != 0 && sCounter1 > 2)
|
||||
if (sSendRecvMgr.master_slave != 0 && sCounter1 > 2)
|
||||
{
|
||||
EnableSio();
|
||||
sSendRecvMgr.field_02 = 2;
|
||||
sSendRecvMgr.xferState = EREADER_XFER_CHK;
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableSio();
|
||||
sSendRecvMgr.field_02 = 2;
|
||||
sSendRecvMgr.xferState = EREADER_XFER_CHK;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Progression is handled by the serial callback
|
||||
break;
|
||||
case 4:
|
||||
case EREADER_XFR_STATE_TRANSFER_DONE:
|
||||
OpenSerialMulti();
|
||||
sSendRecvMgr.state = 5;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_CHECKSUM;
|
||||
break;
|
||||
case 5:
|
||||
if (sSendRecvMgr.sendOrRecv == 1 && sCounter1 > 2)
|
||||
case EREADER_XFR_STATE_CHECKSUM:
|
||||
if (sSendRecvMgr.master_slave == 1 && sCounter1 > 2)
|
||||
EnableSio();
|
||||
if (++sCounter1 > 60)
|
||||
{
|
||||
sSendRecvMgr.field_04 = 1;
|
||||
sSendRecvMgr.state = 6;
|
||||
sSendRecvMgr.cancellationReason = EREADER_CANCEL_TIMEOUT;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (sSendRecvMgr.field_02 != 0)
|
||||
// Progression is handled by the serial callback
|
||||
case EREADER_XFR_STATE_DONE:
|
||||
if (sSendRecvMgr.xferState != 0)
|
||||
{
|
||||
CloseSerial();
|
||||
sSendRecvMgr.field_02 = 0;
|
||||
sSendRecvMgr.xferState = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return sSendRecvMgr.field_02 | (sSendRecvMgr.field_04 << 2) | (sSendRecvMgr.field_03 << 4);
|
||||
return
|
||||
(sSendRecvMgr.xferState << EREADER_XFER_SHIFT)
|
||||
| (sSendRecvMgr.cancellationReason << EREADER_CANCEL_SHIFT)
|
||||
| (sSendRecvMgr.checksumResult << EREADER_CHECKSUM_SHIFT);
|
||||
}
|
||||
|
||||
static bool16 DetermineSendRecvState(u8 mode)
|
||||
{
|
||||
bool16 resp;
|
||||
if ((*(vu32 *)REG_ADDR_SIOCNT & (SIO_MULTI_SI | SIO_MULTI_SD)) == SIO_MULTI_SD && mode)
|
||||
resp = sSendRecvMgr.sendOrRecv = TRUE;
|
||||
resp = sSendRecvMgr.master_slave = TRUE;
|
||||
else
|
||||
resp = sSendRecvMgr.sendOrRecv = FALSE;
|
||||
resp = sSendRecvMgr.master_slave = FALSE;
|
||||
return resp;
|
||||
}
|
||||
|
||||
static void SetUpTransferManager(size_t size, const void * data, void * recvBuffer)
|
||||
{
|
||||
if (sSendRecvMgr.sendOrRecv)
|
||||
if (sSendRecvMgr.master_slave)
|
||||
{
|
||||
REG_SIOCNT |= SIO_38400_BPS;
|
||||
sSendRecvMgr.dataptr = (void *)data;
|
||||
@@ -284,7 +282,7 @@ void EReaderHelper_SerialCallback(void)
|
||||
|
||||
switch (sSendRecvMgr.state)
|
||||
{
|
||||
case 1:
|
||||
case EREADER_XFR_STATE_HANDSHAKE:
|
||||
REG_SIOMLT_SEND = 0xCCD0;
|
||||
*(u64 *)recv = REG_SIOMLT_RECV;
|
||||
for (i = 0, cnt1 = 0, cnt2 = 0; i < 4; i++)
|
||||
@@ -295,14 +293,17 @@ void EReaderHelper_SerialCallback(void)
|
||||
cnt2++;
|
||||
}
|
||||
if (cnt1 == 2 && cnt2 == 0)
|
||||
sSendRecvMgr.state = 2;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_START;
|
||||
break;
|
||||
case 3:
|
||||
// Progression is handled by software
|
||||
case EREADER_XFR_STATE_TRANSFER:
|
||||
recv32 = REG_SIODATA32;
|
||||
if (sSendRecvMgr.cursor == 0 && sSendRecvMgr.sendOrRecv == 0)
|
||||
// The first value sent by the EReader is the payload size
|
||||
if (sSendRecvMgr.cursor == 0 && sSendRecvMgr.master_slave == 0)
|
||||
sSendRecvMgr.size = recv32 / 4 + 1;
|
||||
if (sSendRecvMgr.sendOrRecv == 1)
|
||||
if (sSendRecvMgr.master_slave == 1)
|
||||
{
|
||||
// Send mode
|
||||
if (sSendRecvMgr.cursor < sSendRecvMgr.size)
|
||||
{
|
||||
REG_SIODATA32 = sSendRecvMgr.dataptr[sSendRecvMgr.cursor];
|
||||
@@ -313,43 +314,51 @@ void EReaderHelper_SerialCallback(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Receive mode
|
||||
if (sSendRecvMgr.cursor > 0 && sSendRecvMgr.cursor < sSendRecvMgr.size + 1)
|
||||
{
|
||||
// Receive next word
|
||||
sSendRecvMgr.dataptr[sSendRecvMgr.cursor - 1] = recv32;
|
||||
sSendRecvMgr.checksum += recv32;
|
||||
}
|
||||
else if (sSendRecvMgr.cursor != 0)
|
||||
{
|
||||
// Reached the end, test the received checksum
|
||||
if (sSendRecvMgr.checksum == recv32)
|
||||
sSendRecvMgr.field_03 = 1;
|
||||
sSendRecvMgr.checksumResult = EREADER_CHECKSUM_OK;
|
||||
else
|
||||
sSendRecvMgr.field_03 = 2;
|
||||
sSendRecvMgr.checksumResult = EREADER_CHECKSUM_ERR;
|
||||
}
|
||||
sCounter2 = 0;
|
||||
}
|
||||
sSendRecvMgr.cursor++;
|
||||
if (sSendRecvMgr.cursor < sSendRecvMgr.size + 2)
|
||||
{
|
||||
if (sSendRecvMgr.sendOrRecv != 0)
|
||||
if (sSendRecvMgr.master_slave != 0)
|
||||
// Clock master; start timer
|
||||
REG_TM3CNT_H |= TIMER_ENABLE;
|
||||
else
|
||||
// Clock slave; reset
|
||||
EnableSio();
|
||||
}
|
||||
else
|
||||
{
|
||||
sSendRecvMgr.state = 4;
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_TRANSFER_DONE;
|
||||
sCounter1 = 0;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (sSendRecvMgr.sendOrRecv == 0)
|
||||
REG_SIODATA8 = sSendRecvMgr.field_03;
|
||||
// Progression is handled by the software
|
||||
case EREADER_XFR_STATE_CHECKSUM:
|
||||
if (sSendRecvMgr.master_slave == 0)
|
||||
// Clock slave
|
||||
REG_SIODATA8 = sSendRecvMgr.checksumResult;
|
||||
*(vu64 *)recv = REG_SIOMLT_RECV;
|
||||
if (recv[1] == 1 || recv[1] == 2)
|
||||
if (recv[1] == EREADER_CHECKSUM_OK || recv[1] == EREADER_CHECKSUM_ERR)
|
||||
{
|
||||
if (sSendRecvMgr.sendOrRecv == 1)
|
||||
sSendRecvMgr.field_03 = recv[1];
|
||||
sSendRecvMgr.state = 6;
|
||||
if (sSendRecvMgr.master_slave == 1)
|
||||
// EReader has (in)validated the payload
|
||||
sSendRecvMgr.checksumResult = recv[1];
|
||||
sSendRecvMgr.state = EREADER_XFR_STATE_DONE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
+4
-4
@@ -24,7 +24,7 @@ EWRAM_DATA u16 gSpecialVar_MonBoxId = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_MonBoxPos = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_TextColor = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_PrevTextColor = 0;
|
||||
EWRAM_DATA u16 gUnknown_20370DE = 0;
|
||||
EWRAM_DATA u16 gSpecialVar_0x8014 = 0;
|
||||
EWRAM_DATA u8 sSpecialFlags[SPECIAL_FLAGS_COUNT] = {};
|
||||
|
||||
u16 gLastQuestLogStoredFlagOrVarIdx;
|
||||
@@ -118,7 +118,7 @@ bool32 IsMysteryGiftEnabled(void)
|
||||
return FlagGet(FLAG_SYS_MYSTERY_GIFT_ENABLED);
|
||||
}
|
||||
|
||||
void sub_806E2D0(void)
|
||||
void ResetMysteryEventFlags(void)
|
||||
{
|
||||
FlagClear(FLAG_MYSTERY_EVENT_DONE);
|
||||
FlagClear(FLAG_0x3D9);
|
||||
@@ -138,7 +138,7 @@ void sub_806E2D0(void)
|
||||
FlagClear(FLAG_0x3E7);
|
||||
}
|
||||
|
||||
void sub_806E370(void)
|
||||
void ResetMysteryEventVars(void)
|
||||
{
|
||||
VarSet(VAR_EVENT_PICHU_SLOT, 0);
|
||||
VarSet(VAR_0x40B6, 0);
|
||||
@@ -321,5 +321,5 @@ void ResetSpecialVars(void)
|
||||
gSpecialVar_MonBoxPos = 0;
|
||||
gSpecialVar_TextColor = 0;
|
||||
gSpecialVar_PrevTextColor = 0;
|
||||
gUnknown_20370DE = 0;
|
||||
gSpecialVar_0x8014 = 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,653 @@
|
||||
#include "global.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_ground_effect.h"
|
||||
|
||||
// This is part of evobjmv.c (see assert statement in DoObjectUnionRoomWarpYDisplacement).
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacement(struct Sprite * sprite);
|
||||
|
||||
bool8 FreezeObjectEvent(struct ObjectEvent * objectEvent)
|
||||
{
|
||||
if (objectEvent->heldMovementActive || objectEvent->frozen)
|
||||
return TRUE;
|
||||
objectEvent->frozen = TRUE;
|
||||
objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused;
|
||||
objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused;
|
||||
gSprites[objectEvent->spriteId].animPaused = TRUE;
|
||||
gSprites[objectEvent->spriteId].affineAnimPaused = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void FreezeObjectEvents(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
if (gObjectEvents[i].active && i != gPlayerAvatar.objectEventId)
|
||||
FreezeObjectEvent(&gObjectEvents[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void FreezeObjectEventsExceptOne(u8 noFreeze)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
if (i != noFreeze && gObjectEvents[i].active && i != gPlayerAvatar.objectEventId)
|
||||
FreezeObjectEvent(&gObjectEvents[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void UnfreezeObjectEvent(struct ObjectEvent * objectEvent)
|
||||
{
|
||||
if (objectEvent->active && objectEvent->frozen)
|
||||
{
|
||||
objectEvent->frozen = FALSE;
|
||||
gSprites[objectEvent->spriteId].animPaused = objectEvent->spriteAnimPausedBackup;
|
||||
gSprites[objectEvent->spriteId].affineAnimPaused = objectEvent->spriteAffineAnimPausedBackup;
|
||||
}
|
||||
}
|
||||
|
||||
void UnfreezeObjectEvents(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
if (gObjectEvents[i].active)
|
||||
UnfreezeObjectEvent(&gObjectEvents[i]);
|
||||
}
|
||||
}
|
||||
|
||||
#define tObjectEventId data[0]
|
||||
#define tZCoord data[1]
|
||||
#define tInvisible data[2]
|
||||
|
||||
#define tDirection data[3]
|
||||
#define tSpeed data[4]
|
||||
#define tStepNo data[5]
|
||||
|
||||
static void little_step(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += sDirectionToVectors[direction].x;
|
||||
sprite->pos1.y += sDirectionToVectors[direction].y;
|
||||
}
|
||||
|
||||
static void double_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 2 * (u16) sDirectionToVectors[direction].x;
|
||||
sprite->pos1.y += 2 * (u16) sDirectionToVectors[direction].y;
|
||||
}
|
||||
|
||||
static void triple_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 2 * (u16) sDirectionToVectors[direction].x + (u16) sDirectionToVectors[direction].x;
|
||||
sprite->pos1.y += 2 * (u16) sDirectionToVectors[direction].y + (u16) sDirectionToVectors[direction].y;
|
||||
}
|
||||
|
||||
static void quad_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 4 * (u16) sDirectionToVectors[direction].x;
|
||||
sprite->pos1.y += 4 * (u16) sDirectionToVectors[direction].y;
|
||||
}
|
||||
|
||||
static void oct_little_steps(struct Sprite * sprite, u8 direction)
|
||||
{
|
||||
sprite->pos1.x += 8 * (u16) sDirectionToVectors[direction].x;
|
||||
sprite->pos1.y += 8 * (u16) sDirectionToVectors[direction].y;
|
||||
}
|
||||
|
||||
void oamt_npc_ministep_reset(struct Sprite * sprite, u8 direction, u8 speed)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tSpeed = speed;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 direction);
|
||||
|
||||
static const SpriteStepFunc sSpeed0[] = {
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step,
|
||||
little_step
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed1[] = {
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps,
|
||||
double_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed2[] = {
|
||||
double_little_steps,
|
||||
triple_little_steps,
|
||||
triple_little_steps,
|
||||
double_little_steps,
|
||||
triple_little_steps,
|
||||
triple_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed3[] = {
|
||||
quad_little_steps,
|
||||
quad_little_steps,
|
||||
quad_little_steps,
|
||||
quad_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc sSpeed4[] = {
|
||||
oct_little_steps,
|
||||
oct_little_steps
|
||||
};
|
||||
|
||||
static const SpriteStepFunc *const sSpriteStepFuncsBySpeed[] = {
|
||||
sSpeed0,
|
||||
sSpeed1,
|
||||
sSpeed2,
|
||||
sSpeed3,
|
||||
sSpeed4
|
||||
};
|
||||
|
||||
static const s16 sSpriteStepCountsBySpeed[] = {
|
||||
NELEMS(sSpeed0),
|
||||
NELEMS(sSpeed1),
|
||||
NELEMS(sSpeed2),
|
||||
NELEMS(sSpeed3),
|
||||
NELEMS(sSpeed4)
|
||||
};
|
||||
|
||||
bool8 obj_npc_ministep(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->tStepNo >= sSpriteStepCountsBySpeed[sprite->tSpeed])
|
||||
return FALSE;
|
||||
|
||||
sSpriteStepFuncsBySpeed[sprite->tSpeed][sprite->tStepNo](sprite, sprite->tDirection);
|
||||
|
||||
sprite->tStepNo++;
|
||||
|
||||
if (sprite->tStepNo < sSpriteStepCountsBySpeed[sprite->tSpeed])
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#undef tStepNo
|
||||
#undef tSpeed
|
||||
#undef tDirection
|
||||
|
||||
#define tDirection data[3]
|
||||
#define tDelay data[4]
|
||||
#define tStepNo data[5]
|
||||
|
||||
void sub_8068BBC(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
// used by an_walk_any_2
|
||||
bool8 sub_8068BCC(struct Sprite *sprite)
|
||||
{
|
||||
if (!(sprite->tDelay & 1))
|
||||
{
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
|
||||
sprite->tDelay++;
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8068C08(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8068C18(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->tDelay < 3)
|
||||
{
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
else
|
||||
sprite->tDelay = 0;
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8068C58(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8068C68(struct Sprite *sprite)
|
||||
{
|
||||
if (++sprite->tDelay > 9)
|
||||
{
|
||||
sprite->tDelay = 0;
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8068CA4(struct Sprite *sprite, u8 direction)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tDelay = 0;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
bool8 sub_8068CB4(struct Sprite *sprite)
|
||||
{
|
||||
if ((++sprite->tDelay) & 1)
|
||||
{
|
||||
little_step(sprite, sprite->tDirection);
|
||||
sprite->tStepNo++;
|
||||
}
|
||||
else
|
||||
{
|
||||
double_little_steps(sprite, sprite->tDirection);
|
||||
sprite->tStepNo += 2;
|
||||
}
|
||||
|
||||
if (sprite->tStepNo > 15)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#undef tStepNo
|
||||
#undef tDelay
|
||||
#undef tDirection
|
||||
|
||||
#define tDirection data[3]
|
||||
#define tJumpSpeed data[4]
|
||||
#define tJumpHeight data[5]
|
||||
#define tStepNo data[6]
|
||||
|
||||
static const s8 sJumpHeight12[] = {
|
||||
-4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
|
||||
};
|
||||
|
||||
static const s8 sJumpHeight6[] = {
|
||||
0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
|
||||
};
|
||||
|
||||
static const s8 sJumpHeight10[] = {
|
||||
-2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
|
||||
};
|
||||
|
||||
static const s8 *const sYDisplacementPtrs[] = {
|
||||
sJumpHeight12,
|
||||
sJumpHeight6,
|
||||
sJumpHeight10
|
||||
};
|
||||
|
||||
static s16 GetJumpYDisplacement(s16 stepno, u8 jumpno)
|
||||
{
|
||||
return sYDisplacementPtrs[jumpno][stepno];
|
||||
}
|
||||
|
||||
void sub_8068D1C(struct Sprite *sprite, u8 direction, u8 speed, u8 height)
|
||||
{
|
||||
sprite->tDirection = direction;
|
||||
sprite->tJumpSpeed = speed;
|
||||
sprite->tJumpHeight = height;
|
||||
sprite->tStepNo = 0;
|
||||
}
|
||||
|
||||
u8 sub_8068D3C(struct Sprite *sprite)
|
||||
{
|
||||
s16 duration[3] = {0x10, 0x10, 0x20};
|
||||
u8 shifts[3] = {0, 0, 1};
|
||||
u8 jumpPhase = 0;
|
||||
|
||||
if (sprite->tJumpSpeed != 0)
|
||||
little_step(sprite, sprite->tDirection);
|
||||
|
||||
sprite->pos2.y = GetJumpYDisplacement(sprite->tStepNo >> shifts[sprite->tJumpSpeed], sprite->tJumpHeight);
|
||||
|
||||
sprite->tStepNo++;
|
||||
|
||||
if (sprite->tStepNo == (duration[sprite->tJumpSpeed] >> 1))
|
||||
jumpPhase = 1;
|
||||
|
||||
if (sprite->tStepNo >= duration[sprite->tJumpSpeed])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
jumpPhase = -1;
|
||||
}
|
||||
|
||||
return jumpPhase;
|
||||
}
|
||||
|
||||
u8 sub_8068DC4(struct Sprite *sprite)
|
||||
{
|
||||
s16 duration[3] = {0x20, 0x20, 0x40};
|
||||
u8 shifts[3] = {1, 1, 2};
|
||||
u8 jumpPhase = 0;
|
||||
|
||||
if (sprite->tJumpSpeed != 0 && !(sprite->tStepNo & 1))
|
||||
little_step(sprite, sprite->tDirection);
|
||||
|
||||
sprite->pos2.y = GetJumpYDisplacement(sprite->tStepNo >> shifts[sprite->tJumpSpeed], sprite->tJumpHeight);
|
||||
|
||||
sprite->tStepNo++;
|
||||
|
||||
if (sprite->tStepNo == (duration[sprite->tJumpSpeed] >> 1))
|
||||
jumpPhase = 1;
|
||||
|
||||
if (sprite->tStepNo >= duration[sprite->tJumpSpeed])
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
jumpPhase = -1;
|
||||
}
|
||||
|
||||
return jumpPhase;
|
||||
}
|
||||
|
||||
#undef tStepNo
|
||||
#undef tJumpHeight
|
||||
#undef tJumpSpeed
|
||||
#undef tDirection
|
||||
|
||||
#define tDelay data[3]
|
||||
|
||||
void SetMovementDelay(struct Sprite *sprite, s16 delay)
|
||||
{
|
||||
sprite->tDelay = delay;
|
||||
}
|
||||
|
||||
bool8 WaitForMovementDelay(struct Sprite *sprite)
|
||||
{
|
||||
sprite->tDelay--;
|
||||
|
||||
if (sprite->tDelay == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#undef tDelay
|
||||
|
||||
void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex)
|
||||
{
|
||||
sprite->animNum = animNum;
|
||||
sprite->animPaused = FALSE;
|
||||
SeekSpriteAnim(sprite, animCmdIndex);
|
||||
}
|
||||
|
||||
bool8 SpriteAnimEnded(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->animEnded)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible)
|
||||
{
|
||||
u16 x, y;
|
||||
s16 x2, y2;
|
||||
|
||||
sprite->invisible = invisible;
|
||||
|
||||
if (sprite->coordOffsetEnabled)
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
|
||||
}
|
||||
else
|
||||
{
|
||||
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
|
||||
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
|
||||
}
|
||||
|
||||
x2 = x - (sprite->centerToCornerVecX >> 1);
|
||||
y2 = y - (sprite->centerToCornerVecY >> 1);
|
||||
|
||||
if ((s16)x > 255 || x2 < -16)
|
||||
sprite->invisible = TRUE;
|
||||
if ((s16)y > 175 || y2 < -16)
|
||||
sprite->invisible = TRUE;
|
||||
}
|
||||
|
||||
void UpdateObjectEventSpriteSubpriorityAndVisibility(struct Sprite *sprite)
|
||||
{
|
||||
DoObjectUnionRoomWarpYDisplacement(sprite);
|
||||
SetObjectSubpriorityByZCoord(sprite->tZCoord, sprite, 1);
|
||||
UpdateObjectEventSpriteVisibility(sprite, sprite->tInvisible);
|
||||
}
|
||||
|
||||
void sub_8068FD0(void)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
if (sprite->inUse && sprite->callback == UpdateObjectEventSpriteSubpriorityAndVisibility)
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#define tUnionRoomWarpAnimNo data[3]
|
||||
#define tUnionRoomWarpAnimState data[4]
|
||||
|
||||
static int GetObjectEventSpriteId(u8 objectEventId)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[i];
|
||||
if (sprite->inUse && sprite->callback == UpdateObjectEventSpriteSubpriorityAndVisibility && (u8)sprite->tObjectEventId == objectEventId)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return MAX_SPRITES;
|
||||
}
|
||||
|
||||
void TurnObjectEvent(u8 objectEventId, u8 direction)
|
||||
{
|
||||
u8 animNum;
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(direction));
|
||||
}
|
||||
}
|
||||
|
||||
void RfuUnionObjectSetFacingDirection(u8 objectEventId, u8 direction)
|
||||
{
|
||||
u8 animNum;
|
||||
int spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
u16 baseBlock;
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
const struct ObjectEventGraphicsInfo * info = GetObjectEventGraphicsInfo(direction);
|
||||
baseBlock = sprite->oam.tileNum;
|
||||
sprite->oam = *info->oam;
|
||||
sprite->oam.tileNum = baseBlock;
|
||||
sprite->oam.paletteNum = info->paletteSlot;
|
||||
sprite->images = info->images;
|
||||
if (info->subspriteTables == NULL)
|
||||
{
|
||||
sprite->subspriteTables = NULL;
|
||||
sprite->subspriteTableNum = 0;
|
||||
sprite->subspriteMode = SUBSPRITES_OFF;
|
||||
}
|
||||
else
|
||||
{
|
||||
SetSubspriteTables(sprite, info->subspriteTables);
|
||||
sprite->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
|
||||
}
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void RfuUnionObjectToggleInvisibility(u8 objectEventId, bool32 invisible)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
if (invisible)
|
||||
gSprites[spriteId].tInvisible = TRUE;
|
||||
else
|
||||
gSprites[spriteId].tInvisible = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 RfuUnionObjectIsInvisible(u8 objectEventId)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return FALSE;
|
||||
return gSprites[spriteId].tInvisible == TRUE;
|
||||
}
|
||||
|
||||
void RfuUnionObjectStartWarp(u8 objectEventId, u8 animNo)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].tUnionRoomWarpAnimNo = animNo;
|
||||
gSprites[spriteId].tUnionRoomWarpAnimState = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacementUpwards(struct Sprite * sprite)
|
||||
{
|
||||
switch (sprite->tUnionRoomWarpAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = 0;
|
||||
sprite->tUnionRoomWarpAnimState++;
|
||||
// fallthrough
|
||||
case 1:
|
||||
if ((sprite->pos2.y -= 8) == -160)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->tInvisible = 1;
|
||||
sprite->tUnionRoomWarpAnimNo = 0;
|
||||
sprite->tUnionRoomWarpAnimState = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacementDownwards(struct Sprite * sprite)
|
||||
{
|
||||
switch (sprite->tUnionRoomWarpAnimState)
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.y = -160;
|
||||
sprite->tUnionRoomWarpAnimState++;
|
||||
// fallthrough
|
||||
case 1:
|
||||
if ((sprite->pos2.y += 8) == 0)
|
||||
{
|
||||
sprite->tUnionRoomWarpAnimNo = 0;
|
||||
sprite->tUnionRoomWarpAnimState = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void DoObjectUnionRoomWarpYDisplacement(struct Sprite * sprite)
|
||||
{
|
||||
switch (sprite->tUnionRoomWarpAnimNo)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
DoObjectUnionRoomWarpYDisplacementDownwards(sprite);
|
||||
break;
|
||||
case 2:
|
||||
DoObjectUnionRoomWarpYDisplacementUpwards(sprite);
|
||||
break;
|
||||
default:
|
||||
sprite->tUnionRoomWarpAnimNo = 0;
|
||||
AGB_ASSERT_EX(0, ABSPATH("evobjmv.c"), 13331);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 RfuUnionObjectIsWarping(u8 objectEventId)
|
||||
{
|
||||
u8 spriteId = GetObjectEventSpriteId(objectEventId);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return FALSE;
|
||||
if (gSprites[spriteId].tUnionRoomWarpAnimNo)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#undef tUnionRoomWarpAnimState
|
||||
#undef tUnionRoomWarpAnimNo
|
||||
#undef tInvisible
|
||||
#undef tZCoord
|
||||
#undef tObjectEventId
|
||||
|
||||
u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct ObjectEvent * objectEvent)
|
||||
{
|
||||
ObjectEventGetLocalIdAndMap(objectEvent, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
|
||||
return FieldEffectStart(fieldEffectId);
|
||||
}
|
||||
|
||||
void DoShadowFieldEffect(struct ObjectEvent *objectEvent)
|
||||
{
|
||||
if (!objectEvent->hasShadow)
|
||||
{
|
||||
objectEvent->hasShadow = TRUE;
|
||||
oe_exec_and_other_stuff(FLDEFF_SHADOW, objectEvent);
|
||||
}
|
||||
}
|
||||
|
||||
void DoRippleFieldEffect(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
const struct ObjectEventGraphicsInfo *graphicsInfo = GetObjectEventGraphicsInfo(objectEvent->graphicsId);
|
||||
gFieldEffectArguments[0] = sprite->pos1.x;
|
||||
gFieldEffectArguments[1] = sprite->pos1.y + (graphicsInfo->height >> 1) - 2;
|
||||
gFieldEffectArguments[2] = 151;
|
||||
gFieldEffectArguments[3] = 3;
|
||||
FieldEffectStart(FLDEFF_RIPPLE);
|
||||
}
|
||||
@@ -3,9 +3,7 @@
|
||||
#include "field_player_avatar.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "script_movement.h"
|
||||
#include "event_object_80688E4.h"
|
||||
#include "event_data.h"
|
||||
#include "event_object_lock.h"
|
||||
|
||||
bool8 walkrun_is_standing_still(void)
|
||||
{
|
||||
@@ -89,18 +87,18 @@ void sub_80696C0(void)
|
||||
{
|
||||
u8 objectEventId = GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objectEventId]);
|
||||
sub_80974D8();
|
||||
ScriptMovement_UnfreezeObjectEvents();
|
||||
UnfreezeObjectEvents();
|
||||
}
|
||||
|
||||
void sub_80696F0(void)
|
||||
void UnionRoom_UnlockPlayerAndChatPartner(void)
|
||||
{
|
||||
u8 objectEventId;
|
||||
if (gObjectEvents[gSelectedObjectEvent].active)
|
||||
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[gSelectedObjectEvent]);
|
||||
objectEventId = GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
ObjectEventClearHeldMovementIfFinished(&gObjectEvents[objectEventId]);
|
||||
sub_80974D8();
|
||||
ScriptMovement_UnfreezeObjectEvents();
|
||||
UnfreezeObjectEvents();
|
||||
}
|
||||
|
||||
|
||||
+144
-148
@@ -1,8 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "event_data.h"
|
||||
#include "event_object_80688E4.h"
|
||||
#include "event_object_8097404.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_control_avatar.h"
|
||||
@@ -21,7 +19,6 @@
|
||||
#include "trig.h"
|
||||
#include "constants/event_object_movement.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/object_events.h"
|
||||
|
||||
#define NUM_FIELD_MAP_OBJECT_TEMPLATES 0x51
|
||||
|
||||
@@ -74,18 +71,18 @@ static u8 sub_8063304(struct ObjectEvent *, struct Sprite *);
|
||||
static u8 sub_8063324(struct ObjectEvent *, struct Sprite *);
|
||||
static u8 sub_8063344(struct ObjectEvent *, struct Sprite *);
|
||||
static void sub_8064544(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064988(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_80649C8(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064A08(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064A48(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064A88(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064AC8(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064B08(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064B48(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064C5C(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064C9C(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064CDC(struct ObjectEvent *, struct Sprite *);
|
||||
u8 sub_8064D1C(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x9B_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x9C_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x9D_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x9E_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x08_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x09_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x0A_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x0B_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x0D_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x0C_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x0E_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementActionFunc_x0F_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_WalkNormalDown_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_WalkNormalUp_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_WalkNormalLeft_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
@@ -98,10 +95,10 @@ u8 MovementAction_WalkFastDown_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_WalkFastUp_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_WalkFastLeft_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_WalkFastRight_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_8065438(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_80654A4(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_8065510(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_806557C(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA0_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA1_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA2_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA3_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_RideWaterCurrentDown_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_RideWaterCurrentUp_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_RideWaterCurrentLeft_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
@@ -118,18 +115,18 @@ u8 MovementAction_PlayerRunDown_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_PlayerRunUp_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_PlayerRunLeft_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_PlayerRunRight_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_8065FE4(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_8066024(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_8066064(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_80660A4(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x41_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x42_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x43_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x44_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_JumpSpecialDown_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_JumpSpecialUp_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_JumpSpecialLeft_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_806629C(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_80662DC(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_806631C(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_806635C(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA6_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA7_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA8_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_xA9_1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_JumpDown_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_JumpUp_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_JumpLeft_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
@@ -165,10 +162,10 @@ u8 MovementAction_AcroWheelieMoveDown_Step1(struct ObjectEvent *, struct Sprite
|
||||
u8 MovementAction_AcroWheelieMoveUp_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_AcroWheelieMoveLeft_Step1(struct ObjectEvent *, struct Sprite *);
|
||||
u8 MovementAction_AcroWheelieMoveRight_Step1(struct ObjectEvent *, struct Sprite *);;
|
||||
bool8 sub_80676A4(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_80676E4(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_8067724(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 sub_8067764(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x94_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x95_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x96_1(struct ObjectEvent *, struct Sprite *);
|
||||
bool8 MovementActionFunc_x97_1(struct ObjectEvent *, struct Sprite *);
|
||||
|
||||
#define movement_type_def(setup, table) \
|
||||
static u8 setup##_callback(struct ObjectEvent *, struct Sprite *);\
|
||||
@@ -319,7 +316,6 @@ extern const struct UnkStruct_083A3698 gUnknown_83A3698[];
|
||||
extern const u8 gTrainerFacingDirectionMovementTypes[];
|
||||
extern bool8 (*const gOppositeDirectionBlockedMetatileFuncs[])(u8);
|
||||
extern bool8 (*const gDirectionBlockedMetatileFuncs[])(u8);
|
||||
extern const struct Coords16 sDirectionToVectors[];
|
||||
extern const u8 gFaceDirectionMovementActions[5];
|
||||
extern const u8 gWalkSlowMovementActions[5];
|
||||
extern const u8 gUnknown_83A64F6[];
|
||||
@@ -793,7 +789,7 @@ static u8 sub_805E238(struct ObjectEventTemplate *template, u8 var, s16 x, s16 y
|
||||
|
||||
static u8 sub_805E27C(struct ObjectEventTemplate *template, s16 x, s16 y)
|
||||
{
|
||||
if ((u8) (template->graphicsId - OBJECT_EVENT_GFX_CUT_TREE) > 1)
|
||||
if ((u8) (template->graphicsId - OBJ_EVENT_GFX_CUT_TREE) > 1)
|
||||
return 1;
|
||||
|
||||
if (gSaveBlock1Ptr->pos.x < x)
|
||||
@@ -826,7 +822,7 @@ static u8 sub_805E2E8(struct ObjectEventTemplate *template, s16 x, s16 y)
|
||||
x2 = gBackupMapLayout.Xsize - 16;
|
||||
y2 = gBackupMapLayout.Ysize - 15;
|
||||
|
||||
if ((u8) (template->graphicsId - OBJECT_EVENT_GFX_CUT_TREE) > 1)
|
||||
if ((u8) (template->graphicsId - OBJ_EVENT_GFX_CUT_TREE) > 1)
|
||||
return 1;
|
||||
|
||||
if (!gSaveBlock1Ptr->pos.x)
|
||||
@@ -1043,7 +1039,7 @@ u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *objectEventTemplate)
|
||||
return TrySpawnObjectEventTemplate(objectEventTemplate, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, cameraX, cameraY);
|
||||
}
|
||||
|
||||
u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z)
|
||||
int SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 z)
|
||||
{
|
||||
struct ObjectEventTemplate objectEventTemplate;
|
||||
|
||||
@@ -4846,13 +4842,13 @@ bool8 sub_8064930(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064968(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064904(objectEvent, sprite, DIR_SOUTH);
|
||||
return sub_8064988(objectEvent, sprite);
|
||||
return MovementActionFunc_x9B_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064988(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064930(objectEvent, sprite))
|
||||
{
|
||||
@@ -4862,13 +4858,13 @@ bool8 sub_8064988(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80649A8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9C_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064904(objectEvent, sprite, DIR_NORTH);
|
||||
return sub_80649C8(objectEvent, sprite);
|
||||
return MovementActionFunc_x9C_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80649C8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9C_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064930(objectEvent, sprite))
|
||||
{
|
||||
@@ -4878,13 +4874,13 @@ bool8 sub_80649C8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80649E8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9D_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064904(objectEvent, sprite, DIR_WEST);
|
||||
return sub_8064A08(objectEvent, sprite);
|
||||
return MovementActionFunc_x9D_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064A08(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9D_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064930(objectEvent, sprite))
|
||||
{
|
||||
@@ -4894,13 +4890,13 @@ bool8 sub_8064A08(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064A28(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9E_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064904(objectEvent, sprite, DIR_EAST);
|
||||
return sub_8064A48(objectEvent, sprite);
|
||||
return MovementActionFunc_x9E_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064A48(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9E_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064930(objectEvent, sprite))
|
||||
{
|
||||
@@ -4910,13 +4906,13 @@ bool8 sub_8064A48(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064A68(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x08_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064830(objectEvent, sprite, DIR_SOUTH);
|
||||
return sub_8064A88(objectEvent, sprite);
|
||||
return MovementActionFunc_x08_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064A88(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x08_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (an_walk_any_2(objectEvent, sprite))
|
||||
{
|
||||
@@ -4926,13 +4922,13 @@ bool8 sub_8064A88(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064AA8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x09_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064830(objectEvent, sprite, DIR_NORTH);
|
||||
return sub_8064AC8(objectEvent, sprite);
|
||||
return MovementActionFunc_x09_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064AC8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x09_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (an_walk_any_2(objectEvent, sprite))
|
||||
{
|
||||
@@ -4942,13 +4938,13 @@ bool8 sub_8064AC8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064AE8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0A_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064830(objectEvent, sprite, DIR_WEST);
|
||||
return sub_8064B08(objectEvent, sprite);
|
||||
return MovementActionFunc_x0A_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064B08(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0A_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (an_walk_any_2(objectEvent, sprite))
|
||||
{
|
||||
@@ -4958,13 +4954,13 @@ bool8 sub_8064B08(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064B28(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064830(objectEvent, sprite, DIR_EAST);
|
||||
return sub_8064B48(objectEvent, sprite);
|
||||
return MovementActionFunc_x0B_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064B48(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0B_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (an_walk_any_2(objectEvent, sprite))
|
||||
{
|
||||
@@ -5008,13 +5004,13 @@ bool8 sub_8064C04(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064C3C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0D_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064BD8(objectEvent, sprite, DIR_NORTH);
|
||||
return sub_8064C5C(objectEvent, sprite);
|
||||
return MovementActionFunc_x0D_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064C5C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0D_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064C04(objectEvent, sprite))
|
||||
{
|
||||
@@ -5024,13 +5020,13 @@ bool8 sub_8064C5C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064C7C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0C_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064BD8(objectEvent, sprite, DIR_SOUTH);
|
||||
return sub_8064C9C(objectEvent, sprite);
|
||||
return MovementActionFunc_x0C_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064C9C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0C_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064C04(objectEvent, sprite))
|
||||
{
|
||||
@@ -5040,13 +5036,13 @@ bool8 sub_8064C9C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064CBC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0E_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064BD8(objectEvent, sprite, DIR_WEST);
|
||||
return sub_8064CDC(objectEvent, sprite);
|
||||
return MovementActionFunc_x0E_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064CDC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0E_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064C04(objectEvent, sprite))
|
||||
{
|
||||
@@ -5056,13 +5052,13 @@ bool8 sub_8064CDC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8064CFC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0F_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8064BD8(objectEvent, sprite, DIR_EAST);
|
||||
return sub_8064D1C(objectEvent, sprite);
|
||||
return MovementActionFunc_x0F_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8064D1C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x0F_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8064C04(objectEvent, sprite))
|
||||
{
|
||||
@@ -5421,16 +5417,16 @@ bool8 sub_80653CC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_80653F8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_xA0_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_SOUTH)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH));
|
||||
|
||||
npc_apply_direction(objectEvent, sprite, DIR_SOUTH, 1);
|
||||
return sub_8065438(objectEvent, sprite);
|
||||
return MovementActionFunc_xA0_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8065438(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA0_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
AnimateSprite(sprite);
|
||||
if (sub_80653CC(objectEvent, sprite))
|
||||
@@ -5441,16 +5437,16 @@ bool8 sub_8065438(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_8065464(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_xA1_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_NORTH)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH));
|
||||
|
||||
npc_apply_direction(objectEvent, sprite, DIR_NORTH, 1);
|
||||
return sub_80654A4(objectEvent, sprite);
|
||||
return MovementActionFunc_xA1_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80654A4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA1_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
AnimateSprite(sprite);
|
||||
if (sub_80653CC(objectEvent, sprite))
|
||||
@@ -5461,16 +5457,16 @@ bool8 sub_80654A4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_80654D0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_xA2_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_WEST)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST));
|
||||
|
||||
npc_apply_direction(objectEvent, sprite, DIR_WEST, 1);
|
||||
return sub_8065510(objectEvent, sprite);
|
||||
return MovementActionFunc_xA2_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8065510(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA2_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
AnimateSprite(sprite);
|
||||
if (sub_80653CC(objectEvent, sprite))
|
||||
@@ -5481,16 +5477,16 @@ bool8 sub_8065510(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_806553C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_xA3_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_EAST)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST));
|
||||
|
||||
npc_apply_direction(objectEvent, sprite, DIR_EAST, 1);
|
||||
return sub_806557C(objectEvent, sprite);
|
||||
return MovementActionFunc_xA3_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_806557C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA3_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
AnimateSprite(sprite);
|
||||
if (sub_80653CC(objectEvent, sprite))
|
||||
@@ -5509,7 +5505,7 @@ void sub_80655A8(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 dire
|
||||
sprite->data[2] = 1;
|
||||
}
|
||||
|
||||
u8 sub_80655D4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_x04_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_SOUTH)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_SOUTH));
|
||||
@@ -5519,7 +5515,7 @@ u8 sub_80655D4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_8065610(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_x05_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_NORTH)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_NORTH));
|
||||
@@ -5529,7 +5525,7 @@ u8 sub_8065610(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_806564C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_x06_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_WEST)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_WEST));
|
||||
@@ -5539,7 +5535,7 @@ u8 sub_806564C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_8065688(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_x07_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if(objectEvent->facingDirection != DIR_EAST)
|
||||
StartSpriteAnim(sprite, GetFaceDirectionAnimNum(DIR_EAST));
|
||||
@@ -5964,13 +5960,13 @@ bool8 sub_8065F8C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8065FC4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x41_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8065F60(objectEvent, sprite, DIR_SOUTH);
|
||||
return sub_8065FE4(objectEvent, sprite);
|
||||
return MovementActionFunc_x41_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8065FE4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x41_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065F8C(objectEvent, sprite))
|
||||
{
|
||||
@@ -5980,13 +5976,13 @@ bool8 sub_8065FE4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8066004(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x42_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8065F60(objectEvent, sprite, DIR_NORTH);
|
||||
return sub_8066024(objectEvent, sprite);
|
||||
return MovementActionFunc_x42_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8066024(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x42_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065F8C(objectEvent, sprite))
|
||||
{
|
||||
@@ -5996,13 +5992,13 @@ bool8 sub_8066024(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8066044(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x43_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8065F60(objectEvent, sprite, DIR_WEST);
|
||||
return sub_8066064(objectEvent, sprite);
|
||||
return MovementActionFunc_x43_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8066064(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x43_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065F8C(objectEvent, sprite))
|
||||
{
|
||||
@@ -6012,13 +6008,13 @@ bool8 sub_8066064(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8066084(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x44_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8065F60(objectEvent, sprite, DIR_SOUTH);
|
||||
return sub_80660A4(objectEvent, sprite);
|
||||
return MovementActionFunc_x44_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80660A4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x44_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065F8C(objectEvent, sprite))
|
||||
{
|
||||
@@ -6125,13 +6121,13 @@ bool8 MovementAction_JumpSpecialRight_Step1(struct ObjectEvent *objectEvent, str
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_806627C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA6_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066128(objectEvent, sprite, DIR_SOUTH);
|
||||
return sub_806629C(objectEvent, sprite);
|
||||
return MovementActionFunc_xA6_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_806629C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA6_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065040(objectEvent, sprite))
|
||||
{
|
||||
@@ -6141,13 +6137,13 @@ bool8 sub_806629C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80662BC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA7_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066128(objectEvent, sprite, DIR_NORTH);
|
||||
return sub_80662DC(objectEvent, sprite);
|
||||
return MovementActionFunc_xA7_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80662DC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA7_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065040(objectEvent, sprite))
|
||||
{
|
||||
@@ -6157,13 +6153,13 @@ bool8 sub_80662DC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80662FC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA8_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066128(objectEvent, sprite, DIR_WEST);
|
||||
return sub_806631C(objectEvent, sprite);
|
||||
return MovementActionFunc_xA8_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_806631C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA8_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065040(objectEvent, sprite))
|
||||
{
|
||||
@@ -6173,13 +6169,13 @@ bool8 sub_806631C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_806633C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA9_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066128(objectEvent, sprite, DIR_EAST);
|
||||
return sub_806635C(objectEvent, sprite);
|
||||
return MovementActionFunc_xA9_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_806635C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA9_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (sub_8065040(objectEvent, sprite))
|
||||
{
|
||||
@@ -6504,23 +6500,23 @@ bool8 MovementAction_EmoteQuestionMark_Step0(struct ObjectEvent *objectEvent, st
|
||||
bool8 MovementAction_EmoteHeart_Step0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
|
||||
FieldEffectStart(FLDEFF_HEART_ICON);
|
||||
FieldEffectStart(FLDEFF_X_ICON);
|
||||
sprite->data[2] = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_806698C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 do_double_excl_bubble(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
|
||||
FieldEffectStart(FLDEFF_UNK_42);
|
||||
FieldEffectStart(FLDEFF_DOUBLE_EXCL_MARK_ICON);
|
||||
sprite->data[2] = 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80669B0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 do_smile_bubble(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
ObjectEventGetLocalIdAndMap(objectEvent, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
|
||||
FieldEffectStart(FLDEFF_UNK_40);
|
||||
FieldEffectStart(FLDEFF_SMILEY_FACE_ICON);
|
||||
sprite->data[2] = 1;
|
||||
return TRUE;
|
||||
}
|
||||
@@ -6529,7 +6525,7 @@ bool8 MovementAction_RevealTrainer_Step0(struct ObjectEvent *objectEvent, struct
|
||||
{
|
||||
if (objectEvent->movementType == MOVEMENT_TYPE_HIDDEN)
|
||||
{
|
||||
sub_80824EC(objectEvent);
|
||||
MovementAction_RevealTrainer_RunTrainerSeeFuncList(objectEvent);
|
||||
return FALSE;
|
||||
}
|
||||
if (objectEvent->movementType != MOVEMENT_TYPE_TREE_DISGUISE && objectEvent->movementType != MOVEMENT_TYPE_MOUNTAIN_DISGUISE)
|
||||
@@ -6686,25 +6682,25 @@ void sub_8066C70(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 dire
|
||||
sprite->data[2] = 1;
|
||||
}
|
||||
|
||||
bool8 sub_8066CB0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x70_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066C70(objectEvent, sprite, DIR_SOUTH);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8066CC0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x71_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066C70(objectEvent, sprite, DIR_NORTH);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8066CD0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x72_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066C70(objectEvent, sprite, DIR_WEST);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8066CE0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x73_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_8066C70(objectEvent, sprite, DIR_EAST);
|
||||
return TRUE;
|
||||
@@ -6993,25 +6989,25 @@ bool8 MovementAction_AcroWheelieJumpRight_Step1(struct ObjectEvent *objectEvent,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8067304(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x88_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_80656C4(objectEvent, sprite, DIR_SOUTH, GetFishingDirectionAnimNum(DIR_SOUTH), 8);
|
||||
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_806733C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x89_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_80656C4(objectEvent, sprite, DIR_NORTH, GetFishingDirectionAnimNum(DIR_NORTH), 8);
|
||||
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8067374(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x8A_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_80656C4(objectEvent, sprite, DIR_WEST, GetFishingDirectionAnimNum(DIR_WEST), 8);
|
||||
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80673AC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x8B_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_80656C4(objectEvent, sprite, DIR_EAST, GetFishingDirectionAnimNum(DIR_EAST), 8);
|
||||
return MovementAction_WalkInPlace_Step1(objectEvent, sprite);
|
||||
@@ -7165,13 +7161,13 @@ void sub_806764C(struct ObjectEvent *objectEvent, struct Sprite *sprite, u8 dire
|
||||
SeekSpriteAnim(sprite, 0);
|
||||
}
|
||||
|
||||
bool8 sub_8067684(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x94_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_806764C(objectEvent, sprite, DIR_SOUTH, 1);
|
||||
return sub_80676A4(objectEvent, sprite);
|
||||
return MovementActionFunc_x94_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80676A4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x94_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
|
||||
{
|
||||
@@ -7181,13 +7177,13 @@ bool8 sub_80676A4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80676C4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x95_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_806764C(objectEvent, sprite, DIR_NORTH, 1);
|
||||
return sub_80676E4(objectEvent, sprite);
|
||||
return MovementActionFunc_x95_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_80676E4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x95_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
|
||||
{
|
||||
@@ -7197,13 +7193,13 @@ bool8 sub_80676E4(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8067704(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x96_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_806764C(objectEvent, sprite, DIR_WEST, 1);
|
||||
return sub_8067724(objectEvent, sprite);
|
||||
return MovementActionFunc_x96_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8067724(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x96_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
|
||||
{
|
||||
@@ -7213,13 +7209,13 @@ bool8 sub_8067724(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8067744(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x97_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sub_806764C(objectEvent, sprite, DIR_EAST, 1);
|
||||
return sub_8067764(objectEvent, sprite);
|
||||
return MovementActionFunc_x97_1(objectEvent, sprite);
|
||||
}
|
||||
|
||||
bool8 sub_8067764(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x97_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
if (npc_obj_ministep_stop_on_arrival(objectEvent, sprite))
|
||||
{
|
||||
@@ -7229,7 +7225,7 @@ bool8 sub_8067764(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8067784(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x98_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, 20);
|
||||
sprite->animPaused = FALSE;
|
||||
@@ -7242,12 +7238,12 @@ bool8 sub_8067784(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80677C0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x98_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
return sprite->animEnded;
|
||||
}
|
||||
|
||||
bool8 sub_80677CC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x99_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
s32 y;
|
||||
switch (sprite->data[7])
|
||||
@@ -7294,7 +7290,7 @@ bool8 sub_80677CC(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80678C0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9A_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
bool8 ret;
|
||||
sprite->data[7] = (sprite->data[7] + 4) & 0xFF;
|
||||
@@ -7306,7 +7302,7 @@ bool8 sub_80678C0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool8 sub_80678F0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9F_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
StartSpriteAnim(sprite, 28);
|
||||
sprite->animPaused = FALSE;
|
||||
@@ -7315,7 +7311,7 @@ bool8 sub_80678F0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8067924(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_x9F_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
return sprite->animEnded;
|
||||
}
|
||||
@@ -7331,14 +7327,14 @@ bool8 MovementAction_PauseSpriteAnim(struct ObjectEvent *objectEvent, struct Spr
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8067944(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA4_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = 0;
|
||||
sprite->data[2]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8067954(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA4_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y -= 8;
|
||||
if (sprite->pos2.y == -160)
|
||||
@@ -7346,14 +7342,14 @@ bool8 sub_8067954(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_8067978(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA5_0(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y = -160;
|
||||
sprite->data[2]++;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_806798C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
bool8 MovementActionFunc_xA5_1(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos2.y += 8;
|
||||
if (sprite->pos2.y == 0)
|
||||
@@ -7361,7 +7357,7 @@ bool8 sub_806798C(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_80679A8(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
u8 MovementActionFunc_xA4_2(struct ObjectEvent *objectEvent, struct Sprite *sprite)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -31,8 +31,6 @@
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "trig.h"
|
||||
#include "trade.h"
|
||||
#include "util.h"
|
||||
#include "battle_string_ids.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
+2
-2
@@ -1536,7 +1536,7 @@ static void PlaceListMenuCursor(bool8 isActive)
|
||||
{
|
||||
u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->listMenuTaskId);
|
||||
if (isActive == TRUE)
|
||||
AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor);
|
||||
AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_DkGrey, 0, gText_SelectorArrow2);
|
||||
else
|
||||
AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_White, 0, gFameCheckerText_ListMenuCursor);
|
||||
AddTextPrinterParameterized4(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, sTextColor_White, 0, gText_SelectorArrow2);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,572 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "overworld.h"
|
||||
|
||||
EWRAM_DATA bool8 gUnusedBikeCameraAheadPanback = FALSE;
|
||||
|
||||
// Static type declarations
|
||||
struct FieldCameraOffset
|
||||
{
|
||||
u8 xPixelOffset;
|
||||
u8 yPixelOffset;
|
||||
u8 xTileOffset;
|
||||
u8 yTileOffset;
|
||||
bool8 copyBGToVRAM;
|
||||
};
|
||||
|
||||
// static functions
|
||||
static void RedrawMapSliceNorth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceSouth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceEast(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
|
||||
static void RedrawMapSliceWest(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout);
|
||||
static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset *a, s32 x, s32 y);
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout);
|
||||
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16, int, int);
|
||||
static void DrawMetatile(s32 a, const u16 *b, u16 c);
|
||||
static void CameraPanningCB_PanAhead(void);
|
||||
|
||||
// IWRAM bss vars
|
||||
static struct FieldCameraOffset sFieldCameraOffset;
|
||||
static s16 sHorizontalCameraPan;
|
||||
static s16 sVerticalCameraPan;
|
||||
static u8 gUnknown_3000E9C;
|
||||
static void (*sFieldCameraPanningCallback)(void);
|
||||
|
||||
struct CameraObject gFieldCamera;
|
||||
u16 gTotalCameraPixelOffsetY;
|
||||
u16 gTotalCameraPixelOffsetX;
|
||||
|
||||
// text
|
||||
static void move_tilemap_camera_to_upper_left_corner_(struct FieldCameraOffset *cameraOffset)
|
||||
{
|
||||
cameraOffset->xTileOffset = 0;
|
||||
cameraOffset->yTileOffset = 0;
|
||||
cameraOffset->xPixelOffset = 0;
|
||||
cameraOffset->yPixelOffset = 0;
|
||||
cameraOffset->copyBGToVRAM = TRUE;
|
||||
}
|
||||
|
||||
static void tilemap_move_something(struct FieldCameraOffset *cameraOffset, u32 b, u32 c)
|
||||
{
|
||||
cameraOffset->xTileOffset += b;
|
||||
cameraOffset->xTileOffset %= 32;
|
||||
cameraOffset->yTileOffset += c;
|
||||
cameraOffset->yTileOffset %= 32;
|
||||
}
|
||||
|
||||
static void coords8_add(struct FieldCameraOffset *cameraOffset, u32 b, u32 c)
|
||||
{
|
||||
cameraOffset->xPixelOffset += b;
|
||||
cameraOffset->yPixelOffset += c;
|
||||
}
|
||||
|
||||
void move_tilemap_camera_to_upper_left_corner(void)
|
||||
{
|
||||
move_tilemap_camera_to_upper_left_corner_(&sFieldCameraOffset);
|
||||
}
|
||||
|
||||
void FieldUpdateBgTilemapScroll(void)
|
||||
{
|
||||
u32 r4, r5;
|
||||
r5 = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
|
||||
r4 = sVerticalCameraPan + sFieldCameraOffset.yPixelOffset + 8;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, r5);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, r4);
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, r5);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, r4);
|
||||
SetGpuReg(REG_OFFSET_BG3HOFS, r5);
|
||||
SetGpuReg(REG_OFFSET_BG3VOFS, r4);
|
||||
}
|
||||
|
||||
void sub_805A658(s16 *a, s16 *b)
|
||||
{
|
||||
*a = sFieldCameraOffset.xPixelOffset + sHorizontalCameraPan;
|
||||
*b = sFieldCameraOffset.yPixelOffset + sVerticalCameraPan + 8;
|
||||
}
|
||||
|
||||
void DrawWholeMapView(void)
|
||||
{
|
||||
DrawWholeMapViewInternal(gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y, gMapHeader.mapLayout);
|
||||
// sFieldCameraOffset.copyBGToVRAM = TRUE;
|
||||
}
|
||||
|
||||
static void DrawWholeMapViewInternal(int x, int y, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 j;
|
||||
u32 r6;
|
||||
u8 temp;
|
||||
|
||||
for (i = 0; i < 32; i += 2)
|
||||
{
|
||||
temp = sFieldCameraOffset.yTileOffset + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
r6 = temp * 32;
|
||||
for (j = 0; j < 32; j += 2)
|
||||
{
|
||||
temp = sFieldCameraOffset.xTileOffset + j;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapLayout, r6 + temp, x + j / 2, y + i / 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSlicesForCameraUpdate(struct FieldCameraOffset *cameraOffset, int x, int y)
|
||||
{
|
||||
const struct MapLayout *mapLayout = gMapHeader.mapLayout;
|
||||
|
||||
if (x > 0)
|
||||
RedrawMapSliceWest(cameraOffset, mapLayout);
|
||||
if (x < 0)
|
||||
RedrawMapSliceEast(cameraOffset, mapLayout);
|
||||
if (y > 0)
|
||||
RedrawMapSliceNorth(cameraOffset, mapLayout);
|
||||
if (y < 0)
|
||||
RedrawMapSliceSouth(cameraOffset, mapLayout);
|
||||
cameraOffset->copyBGToVRAM = TRUE;
|
||||
}
|
||||
|
||||
static void RedrawMapSliceNorth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
u32 r7;
|
||||
|
||||
temp = cameraOffset->yTileOffset + 28;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
r7 = temp * 32;
|
||||
for (i = 0; i < 32; i += 2)
|
||||
{
|
||||
temp = cameraOffset->xTileOffset + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y + 14);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceSouth(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
u32 r7 = cameraOffset->yTileOffset * 32;
|
||||
|
||||
for (i = 0; i < 32; i += 2)
|
||||
{
|
||||
temp = cameraOffset->xTileOffset + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapLayout, r7 + temp, gSaveBlock1Ptr->pos.x + i / 2, gSaveBlock1Ptr->pos.y);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceEast(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
u32 r6 = cameraOffset->xTileOffset;
|
||||
|
||||
for (i = 0; i < 32; i += 2)
|
||||
{
|
||||
temp = cameraOffset->yTileOffset + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapLayout, temp * 32 + r6, gSaveBlock1Ptr->pos.x, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
}
|
||||
}
|
||||
|
||||
static void RedrawMapSliceWest(struct FieldCameraOffset *cameraOffset, const struct MapLayout *mapLayout)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
u8 r5 = cameraOffset->xTileOffset + 28;
|
||||
|
||||
if (r5 >= 32)
|
||||
r5 -= 32;
|
||||
for (i = 0; i < 32; i += 2)
|
||||
{
|
||||
temp = cameraOffset->yTileOffset + i;
|
||||
if (temp >= 32)
|
||||
temp -= 32;
|
||||
DrawMetatileAt(mapLayout, temp * 32 + r5, gSaveBlock1Ptr->pos.x + 14, gSaveBlock1Ptr->pos.y + i / 2);
|
||||
}
|
||||
}
|
||||
|
||||
void CurrentMapDrawMetatileAt(int x, int y)
|
||||
{
|
||||
int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y);
|
||||
|
||||
if (offset >= 0)
|
||||
{
|
||||
DrawMetatileAt(gMapHeader.mapLayout, offset, x, y);
|
||||
// sFieldCameraOffset.copyBGToVRAM = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void DrawDoorMetatileAt(int x, int y, const u16 *arr)
|
||||
{
|
||||
int offset = MapPosToBgTilemapOffset(&sFieldCameraOffset, x, y);
|
||||
|
||||
if (offset >= 0)
|
||||
{
|
||||
DrawMetatile(1, arr, offset);
|
||||
// sFieldCameraOffset.copyBGToVRAM = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
static void DrawMetatileAt(const struct MapLayout *mapLayout, u16 offset, int x, int y)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
u16 *metatiles;
|
||||
|
||||
if (metatileId > NUM_METATILES_TOTAL)
|
||||
metatileId = 0;
|
||||
if (metatileId < NUM_METATILES_IN_PRIMARY)
|
||||
metatiles = mapLayout->primaryTileset->metatiles;
|
||||
else
|
||||
{
|
||||
metatiles = mapLayout->secondaryTileset->metatiles;
|
||||
metatileId -= NUM_METATILES_IN_PRIMARY;
|
||||
}
|
||||
DrawMetatile(MapGridGetMetatileLayerTypeAt(x, y), metatiles + metatileId * 8, offset);
|
||||
}
|
||||
|
||||
static void DrawMetatile(s32 metatileLayerType, const u16 *metatiles, u16 offset)
|
||||
{
|
||||
switch (metatileLayerType)
|
||||
{
|
||||
case 2: // LAYER_TYPE_
|
||||
// Draw metatile's bottom layer to the bottom background layer.
|
||||
gBGTilemapBuffers3[offset] = metatiles[0];
|
||||
gBGTilemapBuffers3[offset + 1] = metatiles[1];
|
||||
gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
|
||||
gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
|
||||
|
||||
// Draw transparent tiles to the middle background layer.
|
||||
gBGTilemapBuffers1[offset] = 0;
|
||||
gBGTilemapBuffers1[offset + 1] = 0;
|
||||
gBGTilemapBuffers1[offset + 0x20] = 0;
|
||||
gBGTilemapBuffers1[offset + 0x21] = 0;
|
||||
|
||||
// Draw metatile's top layer to the top background layer.
|
||||
gBGTilemapBuffers2[offset] = metatiles[4];
|
||||
gBGTilemapBuffers2[offset + 1] = metatiles[5];
|
||||
gBGTilemapBuffers2[offset + 0x20] = metatiles[6];
|
||||
gBGTilemapBuffers2[offset + 0x21] = metatiles[7];
|
||||
break;
|
||||
case 1: // LAYER_TYPE_COVERED_BY_OBJECTS
|
||||
// Draw metatile's bottom layer to the bottom background layer.
|
||||
gBGTilemapBuffers3[offset] = metatiles[0];
|
||||
gBGTilemapBuffers3[offset + 1] = metatiles[1];
|
||||
gBGTilemapBuffers3[offset + 0x20] = metatiles[2];
|
||||
gBGTilemapBuffers3[offset + 0x21] = metatiles[3];
|
||||
|
||||
// Draw metatile's top layer to the middle background layer.
|
||||
gBGTilemapBuffers1[offset] = metatiles[4];
|
||||
gBGTilemapBuffers1[offset + 1] = metatiles[5];
|
||||
gBGTilemapBuffers1[offset + 0x20] = metatiles[6];
|
||||
gBGTilemapBuffers1[offset + 0x21] = metatiles[7];
|
||||
|
||||
// Draw transparent tiles to the top background layer.
|
||||
gBGTilemapBuffers2[offset] = 0;
|
||||
gBGTilemapBuffers2[offset + 1] = 0;
|
||||
gBGTilemapBuffers2[offset + 0x20] = 0;
|
||||
gBGTilemapBuffers2[offset + 0x21] = 0;
|
||||
break;
|
||||
case 0: // LAYER_TYPE_NORMAL
|
||||
// Draw garbage to the bottom background layer.
|
||||
gBGTilemapBuffers3[offset] = 0x3014;
|
||||
gBGTilemapBuffers3[offset + 1] = 0x3014;
|
||||
gBGTilemapBuffers3[offset + 0x20] = 0x3014;
|
||||
gBGTilemapBuffers3[offset + 0x21] = 0x3014;
|
||||
|
||||
// Draw metatile's bottom layer to the middle background layer.
|
||||
gBGTilemapBuffers1[offset] = metatiles[0];
|
||||
gBGTilemapBuffers1[offset + 1] = metatiles[1];
|
||||
gBGTilemapBuffers1[offset + 0x20] = metatiles[2];
|
||||
gBGTilemapBuffers1[offset + 0x21] = metatiles[3];
|
||||
|
||||
// Draw metatile's top layer to the top background layer, which covers object event sprites.
|
||||
gBGTilemapBuffers2[offset] = metatiles[4];
|
||||
gBGTilemapBuffers2[offset + 1] = metatiles[5];
|
||||
gBGTilemapBuffers2[offset + 0x20] = metatiles[6];
|
||||
gBGTilemapBuffers2[offset + 0x21] = metatiles[7];
|
||||
break;
|
||||
}
|
||||
ScheduleBgCopyTilemapToVram(1);
|
||||
ScheduleBgCopyTilemapToVram(2);
|
||||
ScheduleBgCopyTilemapToVram(3);
|
||||
}
|
||||
|
||||
static s32 MapPosToBgTilemapOffset(struct FieldCameraOffset *cameraOffset, s32 x, s32 y)
|
||||
{
|
||||
x -= gSaveBlock1Ptr->pos.x;
|
||||
x *= 2;
|
||||
if (x >= 32 || x < 0)
|
||||
return -1;
|
||||
x = x + cameraOffset->xTileOffset;
|
||||
if (x >= 32)
|
||||
x -= 32;
|
||||
|
||||
y = (y - gSaveBlock1Ptr->pos.y) * 2;
|
||||
if (y >= 32 || y < 0)
|
||||
return -1;
|
||||
y = y + cameraOffset->yTileOffset;
|
||||
if (y >= 32)
|
||||
y -= 32;
|
||||
|
||||
return y * 32 + x;
|
||||
}
|
||||
|
||||
static void CameraUpdateCallback(struct CameraObject *fieldCamera)
|
||||
{
|
||||
if (fieldCamera->spriteId != 0)
|
||||
{
|
||||
fieldCamera->movementSpeedX = gSprites[fieldCamera->spriteId].data[2];
|
||||
fieldCamera->movementSpeedY = gSprites[fieldCamera->spriteId].data[3];
|
||||
}
|
||||
}
|
||||
|
||||
void ResetCameraUpdateInfo(void)
|
||||
{
|
||||
gFieldCamera.movementSpeedX = 0;
|
||||
gFieldCamera.movementSpeedY = 0;
|
||||
gFieldCamera.x = 0;
|
||||
gFieldCamera.y = 0;
|
||||
gFieldCamera.spriteId = 0;
|
||||
gFieldCamera.callback = NULL;
|
||||
}
|
||||
|
||||
u32 InitCameraUpdateCallback(u8 trackedSpriteId)
|
||||
{
|
||||
if (gFieldCamera.spriteId != 0)
|
||||
DestroySprite(&gSprites[gFieldCamera.spriteId]);
|
||||
gFieldCamera.spriteId = AddCameraObject(trackedSpriteId);
|
||||
gFieldCamera.callback = CameraUpdateCallback;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CameraUpdate(void)
|
||||
{
|
||||
int deltaX;
|
||||
int deltaY;
|
||||
int curMovementOffsetY;
|
||||
int curMovementOffsetX;
|
||||
int movementSpeedX;
|
||||
int movementSpeedY;
|
||||
|
||||
if (gFieldCamera.callback != NULL)
|
||||
gFieldCamera.callback(&gFieldCamera);
|
||||
movementSpeedX = gFieldCamera.movementSpeedX;
|
||||
movementSpeedY = gFieldCamera.movementSpeedY;
|
||||
deltaX = 0;
|
||||
deltaY = 0;
|
||||
curMovementOffsetX = gFieldCamera.x;
|
||||
curMovementOffsetY = gFieldCamera.y;
|
||||
|
||||
|
||||
if (curMovementOffsetX == 0 && movementSpeedX != 0)
|
||||
{
|
||||
if (movementSpeedX > 0)
|
||||
deltaX = 1;
|
||||
else
|
||||
deltaX = -1;
|
||||
}
|
||||
if (curMovementOffsetY == 0 && movementSpeedY != 0)
|
||||
{
|
||||
if (movementSpeedY > 0)
|
||||
deltaY = 1;
|
||||
else
|
||||
deltaY = -1;
|
||||
}
|
||||
if (curMovementOffsetX != 0 && curMovementOffsetX == -movementSpeedX)
|
||||
{
|
||||
if (movementSpeedX > 0)
|
||||
deltaX = 1;
|
||||
else
|
||||
deltaX = -1;
|
||||
}
|
||||
if (curMovementOffsetY != 0 && curMovementOffsetY == -movementSpeedY)
|
||||
{
|
||||
if (movementSpeedY > 0)
|
||||
deltaX = 1;
|
||||
else
|
||||
deltaX = -1;
|
||||
}
|
||||
|
||||
gFieldCamera.x += movementSpeedX;
|
||||
gFieldCamera.x = gFieldCamera.x - 16 * (gFieldCamera.x / 16);
|
||||
gFieldCamera.y += movementSpeedY;
|
||||
gFieldCamera.y = gFieldCamera.y - 16 * (gFieldCamera.y / 16);
|
||||
|
||||
if (deltaX != 0 || deltaY != 0)
|
||||
{
|
||||
CameraMove(deltaX, deltaY);
|
||||
UpdateObjectEventsForCameraUpdate(deltaX, deltaY);
|
||||
// RotatingGatePuzzleCameraUpdate(deltaX, deltaY);
|
||||
// ResetBerryTreeSparkleFlags();
|
||||
tilemap_move_something(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
|
||||
RedrawMapSlicesForCameraUpdate(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
|
||||
}
|
||||
|
||||
coords8_add(&sFieldCameraOffset, movementSpeedX, movementSpeedY);
|
||||
gTotalCameraPixelOffsetX -= movementSpeedX;
|
||||
gTotalCameraPixelOffsetY -= movementSpeedY;
|
||||
}
|
||||
|
||||
void MoveCameraAndRedrawMap(int deltaX, int deltaY) // unused
|
||||
{
|
||||
CameraMove(deltaX, deltaY);
|
||||
UpdateObjectEventsForCameraUpdate(deltaX, deltaY);
|
||||
DrawWholeMapView();
|
||||
gTotalCameraPixelOffsetX -= deltaX * 16;
|
||||
gTotalCameraPixelOffsetY -= deltaY * 16;
|
||||
}
|
||||
|
||||
void sub_805ACF0(void)
|
||||
{
|
||||
int deltaX;
|
||||
int deltaY;
|
||||
int curMovementOffsetY;
|
||||
int curMovementOffsetX;
|
||||
int movementSpeedX;
|
||||
int movementSpeedY;
|
||||
|
||||
if (gFieldCamera.callback != NULL)
|
||||
gFieldCamera.callback(&gFieldCamera);
|
||||
movementSpeedX = gFieldCamera.movementSpeedX;
|
||||
movementSpeedY = gFieldCamera.movementSpeedY;
|
||||
deltaX = 0;
|
||||
deltaY = 0;
|
||||
curMovementOffsetX = gFieldCamera.x;
|
||||
curMovementOffsetY = gFieldCamera.y;
|
||||
|
||||
|
||||
if (curMovementOffsetX == 0 && movementSpeedX != 0)
|
||||
{
|
||||
if (movementSpeedX > 0)
|
||||
deltaX = 1;
|
||||
else
|
||||
deltaX = -1;
|
||||
}
|
||||
if (curMovementOffsetY == 0 && movementSpeedY != 0)
|
||||
{
|
||||
if (movementSpeedY > 0)
|
||||
deltaY = 1;
|
||||
else
|
||||
deltaY = -1;
|
||||
}
|
||||
if (curMovementOffsetX != 0 && curMovementOffsetX == -movementSpeedX)
|
||||
{
|
||||
if (movementSpeedX > 0)
|
||||
deltaX = 1;
|
||||
else
|
||||
deltaX = -1;
|
||||
}
|
||||
if (curMovementOffsetY != 0 && curMovementOffsetY == -movementSpeedY)
|
||||
{
|
||||
if (movementSpeedY > 0)
|
||||
deltaX = 1;
|
||||
else
|
||||
deltaX = -1;
|
||||
}
|
||||
|
||||
gFieldCamera.x += movementSpeedX;
|
||||
gFieldCamera.x = gFieldCamera.x - 16 * (gFieldCamera.x / 16);
|
||||
gFieldCamera.y += movementSpeedY;
|
||||
gFieldCamera.y = gFieldCamera.y - 16 * (gFieldCamera.y / 16);
|
||||
|
||||
if (deltaX != 0 || deltaY != 0)
|
||||
{
|
||||
CameraMove(deltaX, deltaY);
|
||||
// UpdateObjectEventsForCameraUpdate(deltaX, deltaY);
|
||||
// RotatingGatePuzzleCameraUpdate(deltaX, deltaY);
|
||||
// ResetBerryTreeSparkleFlags();
|
||||
tilemap_move_something(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
|
||||
RedrawMapSlicesForCameraUpdate(&sFieldCameraOffset, deltaX * 2, deltaY * 2);
|
||||
}
|
||||
|
||||
coords8_add(&sFieldCameraOffset, movementSpeedX, movementSpeedY);
|
||||
// gTotalCameraPixelOffsetX -= movementSpeedX;
|
||||
// gTotalCameraPixelOffsetY -= movementSpeedY;
|
||||
}
|
||||
|
||||
void SetCameraPanningCallback(void (*a)(void))
|
||||
{
|
||||
sFieldCameraPanningCallback = a;
|
||||
}
|
||||
|
||||
void SetCameraPanning(s16 a, s16 b)
|
||||
{
|
||||
sHorizontalCameraPan = a;
|
||||
sVerticalCameraPan = b + 32;
|
||||
}
|
||||
|
||||
void InstallCameraPanAheadCallback(void)
|
||||
{
|
||||
sFieldCameraPanningCallback = CameraPanningCB_PanAhead;
|
||||
gUnknown_3000E9C = 0;
|
||||
sHorizontalCameraPan = 0;
|
||||
sVerticalCameraPan = 32;
|
||||
}
|
||||
|
||||
void UpdateCameraPanning(void)
|
||||
{
|
||||
if (sFieldCameraPanningCallback != NULL)
|
||||
sFieldCameraPanningCallback();
|
||||
// Update sprite offset of overworld objects
|
||||
gSpriteCoordOffsetX = gTotalCameraPixelOffsetX - sHorizontalCameraPan;
|
||||
gSpriteCoordOffsetY = gTotalCameraPixelOffsetY - sVerticalCameraPan - 8;
|
||||
}
|
||||
|
||||
static void CameraPanningCB_PanAhead(void)
|
||||
{
|
||||
u8 var;
|
||||
|
||||
if (gUnusedBikeCameraAheadPanback == FALSE)
|
||||
{
|
||||
InstallCameraPanAheadCallback();
|
||||
}
|
||||
else
|
||||
{
|
||||
// this code is never reached.
|
||||
if (gPlayerAvatar.tileTransitionState == 1)
|
||||
{
|
||||
gUnknown_3000E9C ^= 1;
|
||||
if (gUnknown_3000E9C == 0)
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_3000E9C = 0;
|
||||
}
|
||||
|
||||
var = GetPlayerMovementDirection();
|
||||
if (var == 2)
|
||||
{
|
||||
if (sVerticalCameraPan > -8)
|
||||
sVerticalCameraPan -= 2;
|
||||
}
|
||||
else if (var == 1)
|
||||
{
|
||||
if (sVerticalCameraPan < 72)
|
||||
sVerticalCameraPan += 2;
|
||||
}
|
||||
else if (sVerticalCameraPan < 32)
|
||||
{
|
||||
sVerticalCameraPan += 2;
|
||||
}
|
||||
else if (sVerticalCameraPan > 32)
|
||||
{
|
||||
sVerticalCameraPan -= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
+230
-280
@@ -4,6 +4,10 @@
|
||||
#include "fieldmap.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/metatile_labels.h"
|
||||
|
||||
#define DOOR_SOUND_NORMAL 0
|
||||
#define DOOR_SOUND_SLIDING 1
|
||||
|
||||
struct DoorAnimFrame
|
||||
{
|
||||
@@ -14,7 +18,7 @@ struct DoorAnimFrame
|
||||
struct DoorGraphics
|
||||
{
|
||||
u16 metatileId;
|
||||
s8 sliding;
|
||||
u8 sound;
|
||||
u8 size;
|
||||
const u8 * tiles;
|
||||
const u8 * palettes;
|
||||
@@ -26,204 +30,148 @@ static void SetDoorFramePalettes(const struct DoorGraphics * gfx, int x, int y,
|
||||
static void BufferDoorFrameTilesWithPalettes(u16 *a0, u16 a1, const u8 *a2);
|
||||
static bool32 PlayDoorAnimationFrame(const struct DoorGraphics * gfx, const struct DoorAnimFrame * frames, s16 *data);
|
||||
static const struct DoorAnimFrame * SeekToEndOfDoorAnim(const struct DoorAnimFrame * frames);
|
||||
static s8 GetDoorOpenType(const struct DoorGraphics * gfx, int x, int y);
|
||||
static s8 GetDoorSoundType(const struct DoorGraphics * gfx, int x, int y);
|
||||
|
||||
static const u8 gUnknown_8353088[] = INCBIN_U8("graphics/door_anims/frame_8353088_1.4bpp", "graphics/door_anims/frame_8353088_2.4bpp", "graphics/door_anims/frame_8353088_3.4bpp");
|
||||
static const u8 gUnknown_8353208[32] = {};
|
||||
static const u8 gUnknown_8353228[] = INCBIN_U8("graphics/door_anims/frame_8353228_1.4bpp", "graphics/door_anims/frame_8353228_2.4bpp", "graphics/door_anims/frame_8353228_3.4bpp");
|
||||
static const u8 gUnknown_83533A8[32] = {};
|
||||
static const u8 gUnknown_83533C8[] = INCBIN_U8("graphics/door_anims/frame_83533C8_1.4bpp", "graphics/door_anims/frame_83533C8_2.4bpp", "graphics/door_anims/frame_83533C8_3.4bpp");
|
||||
static const u8 gUnknown_8353548[32] = {};
|
||||
static const u8 gUnknown_8353568[] = INCBIN_U8("graphics/door_anims/frame_8353568_1.4bpp", "graphics/door_anims/frame_8353568_2.4bpp", "graphics/door_anims/frame_8353568_3.4bpp");
|
||||
static const u8 gUnknown_83536E8[32] = {};
|
||||
static const u8 gUnknown_8353708[] = INCBIN_U8("graphics/door_anims/frame_8353708_1.4bpp", "graphics/door_anims/frame_8353708_2.4bpp", "graphics/door_anims/frame_8353708_3.4bpp");
|
||||
static const u8 gUnknown_8353888[32] = {};
|
||||
static const u8 gUnknown_83538A8[] = INCBIN_U8("graphics/door_anims/frame_83538A8_1.4bpp", "graphics/door_anims/frame_83538A8_2.4bpp", "graphics/door_anims/frame_83538A8_3.4bpp");
|
||||
static const u8 gUnknown_8353A28[32] = {};
|
||||
static const u8 gUnknown_8353A48[] = INCBIN_U8("graphics/door_anims/frame_8353A48_1.4bpp", "graphics/door_anims/frame_8353A48_2.4bpp", "graphics/door_anims/frame_8353A48_3.4bpp");
|
||||
static const u8 gUnknown_8353BC8[32] = {};
|
||||
static const u8 gUnknown_8353BE8[] = INCBIN_U8("graphics/door_anims/frame_8353BE8_1.4bpp", "graphics/door_anims/frame_8353BE8_2.4bpp", "graphics/door_anims/frame_8353BE8_3.4bpp");
|
||||
static const u8 gUnknown_8353D68[32] = {};
|
||||
static const u8 gUnknown_8353D88[] = INCBIN_U8("graphics/door_anims/frame_8353D88_1.4bpp", "graphics/door_anims/frame_8353D88_2.4bpp", "graphics/door_anims/frame_8353D88_3.4bpp");
|
||||
static const u8 gUnknown_8353F08[32] = {};
|
||||
static const u8 gUnknown_8353F28[] = INCBIN_U8("graphics/door_anims/frame_8353F28_1.4bpp", "graphics/door_anims/frame_8353F28_2.4bpp", "graphics/door_anims/frame_8353F28_3.4bpp");
|
||||
static const u8 gUnknown_83540A8[32] = {};
|
||||
static const u8 gUnknown_83540C8[] = INCBIN_U8("graphics/door_anims/frame_83540C8_1.4bpp", "graphics/door_anims/frame_83540C8_2.4bpp", "graphics/door_anims/frame_83540C8_3.4bpp");
|
||||
static const u8 gUnknown_8354248[32] = {};
|
||||
static const u8 gUnknown_8354268[] = INCBIN_U8("graphics/door_anims/frame_8354268_1.4bpp", "graphics/door_anims/frame_8354268_2.4bpp", "graphics/door_anims/frame_8354268_3.4bpp");
|
||||
static const u8 gUnknown_83543E8[32] = {};
|
||||
static const u8 gUnknown_8354408[] = INCBIN_U8("graphics/door_anims/frame_8354408_1.4bpp", "graphics/door_anims/frame_8354408_2.4bpp", "graphics/door_anims/frame_8354408_3.4bpp");
|
||||
static const u8 gUnknown_8354588[32] = {};
|
||||
static const u8 gUnknown_83545A8[] = INCBIN_U8("graphics/door_anims/frame_83545A8_1.4bpp", "graphics/door_anims/frame_83545A8_2.4bpp", "graphics/door_anims/frame_83545A8_3.4bpp");
|
||||
static const u8 gUnknown_8354728[32] = {};
|
||||
static const u8 gUnknown_8354748[] = INCBIN_U8("graphics/door_anims/frame_8354748_1.4bpp", "graphics/door_anims/frame_8354748_2.4bpp", "graphics/door_anims/frame_8354748_3.4bpp");
|
||||
static const u8 gUnknown_83548C8[32] = {};
|
||||
static const u8 gUnknown_83548E8[] = INCBIN_U8("graphics/door_anims/frame_83548E8_1.4bpp", "graphics/door_anims/frame_83548E8_2.4bpp", "graphics/door_anims/frame_83548E8_3.4bpp");
|
||||
static const u8 gUnknown_8354A68[32] = {};
|
||||
static const u8 gUnknown_8354A88[] = INCBIN_U8("graphics/door_anims/frame_8354A88_1.4bpp", "graphics/door_anims/frame_8354A88_2.4bpp", "graphics/door_anims/frame_8354A88_3.4bpp");
|
||||
static const u8 gUnknown_8354C08[32] = {};
|
||||
static const u8 gUnknown_8354C28[] = INCBIN_U8("graphics/door_anims/frame_8354C28_1.4bpp", "graphics/door_anims/frame_8354C28_2.4bpp", "graphics/door_anims/frame_8354C28_3.4bpp");
|
||||
static const u8 gUnknown_8354F28[32] = {};
|
||||
static const u8 gUnknown_8354F48[] = INCBIN_U8("graphics/door_anims/frame_8354F48_1.4bpp", "graphics/door_anims/frame_8354F48_2.4bpp", "graphics/door_anims/frame_8354F48_3.4bpp");
|
||||
static const u8 gUnknown_8355248[32] = {};
|
||||
static const u8 gUnknown_8355268[] = INCBIN_U8("graphics/door_anims/frame_8355268_1.4bpp", "graphics/door_anims/frame_8355268_2.4bpp", "graphics/door_anims/frame_8355268_3.4bpp");
|
||||
static const u8 gUnknown_8355568[32] = {};
|
||||
static const u8 gUnknown_8355588[] = INCBIN_U8("graphics/door_anims/frame_8355588_1.4bpp", "graphics/door_anims/frame_8355588_2.4bpp", "graphics/door_anims/frame_8355588_3.4bpp");
|
||||
static const u8 gUnknown_8355888[32] = {};
|
||||
static const u8 gUnknown_83558A8[256] = {};
|
||||
static const u8 gUnknown_83559A8[256] = {};
|
||||
static const u8 gUnknown_8355AA8[256] = {};
|
||||
static const u8 gUnknown_8355BA8[32] = {};
|
||||
static const u8 gUnknown_8355BC8[256] = {};
|
||||
static const u8 gUnknown_8355CC8[256] = {};
|
||||
static const u8 gUnknown_8355DC8[256] = {};
|
||||
static const u8 gUnknown_8355EC8[32] = {};
|
||||
static const u8 gUnknown_8355EE8[256] = {};
|
||||
static const u8 gUnknown_8355FE8[256] = {};
|
||||
static const u8 gUnknown_83560E8[256] = {};
|
||||
static const u8 gUnknown_83561E8[32] = {};
|
||||
static const u8 gUnknown_8356208[256] = {};
|
||||
static const u8 gUnknown_8356308[256] = {};
|
||||
static const u8 gUnknown_8356408[256] = {};
|
||||
static const u8 gUnknown_8356508[32] = {};
|
||||
static const u8 gUnknown_8356528[256] = {};
|
||||
static const u8 gUnknown_8356628[256] = {};
|
||||
static const u8 gUnknown_8356728[256] = {};
|
||||
static const u8 gUnknown_8356828[32] = {};
|
||||
static const u8 gUnknown_8356848[256] = {};
|
||||
static const u8 gUnknown_8356948[256] = {};
|
||||
static const u8 gUnknown_8356A48[256] = {};
|
||||
static const u8 gUnknown_8356B48[32] = {};
|
||||
static const u8 gUnknown_8356B68[256] = {};
|
||||
static const u8 gUnknown_8356C68[256] = {};
|
||||
static const u8 gUnknown_8356D68[256] = {};
|
||||
static const u8 gUnknown_8356E68[32] = {};
|
||||
static const u8 gUnknown_8356E88[128] = {};
|
||||
static const u8 gUnknown_8356F08[128] = {};
|
||||
static const u8 gUnknown_8356F88[128] = {};
|
||||
static const u8 gUnknown_8357008[32] = {};
|
||||
static const u8 gUnknown_8357028[128] = {};
|
||||
static const u8 gUnknown_83570A8[128] = {};
|
||||
static const u8 gUnknown_8357128[128] = {};
|
||||
static const u8 gUnknown_83571A8[32] = {};
|
||||
static const u8 gUnknown_83571C8[128] = {};
|
||||
static const u8 gUnknown_8357248[128] = {};
|
||||
static const u8 gUnknown_83572C8[128] = {};
|
||||
static const u8 gUnknown_8357348[32] = {};
|
||||
static const u8 gUnknown_8357368[128] = {};
|
||||
static const u8 gUnknown_83573E8[128] = {};
|
||||
static const u8 gUnknown_8357468[128] = {};
|
||||
static const u8 gUnknown_83574E8[32] = {};
|
||||
static const u8 gUnknown_8357508[128] = {};
|
||||
static const u8 gUnknown_8357588[128] = {};
|
||||
static const u8 gUnknown_8357608[128] = {};
|
||||
static const u8 gUnknown_8357688[32] = {};
|
||||
static const u8 gUnknown_83576A8[128] = {};
|
||||
static const u8 gUnknown_8357728[128] = {};
|
||||
static const u8 gUnknown_83577A8[128] = {};
|
||||
static const u8 gUnknown_8357828[32] = {};
|
||||
static const u8 gUnknown_8357848[128] = {};
|
||||
static const u8 gUnknown_83578C8[128] = {};
|
||||
static const u8 gUnknown_8357948[128] = {};
|
||||
static const u8 gUnknown_83579C8[32] = {};
|
||||
static const u8 gUnknown_83579E8[128] = {};
|
||||
static const u8 gUnknown_8357A68[128] = {};
|
||||
static const u8 gUnknown_8357AE8[128] = {};
|
||||
static const u8 gUnknown_8357B68[32] = {};
|
||||
static const u8 gUnknown_8357B88[128] = {};
|
||||
static const u8 gUnknown_8357C08[128] = {};
|
||||
static const u8 gUnknown_8357C88[128] = {};
|
||||
static const u8 gUnknown_8357D08[32] = {};
|
||||
static const u8 gUnknown_8357D28[128] = {};
|
||||
static const u8 gUnknown_8357DA8[128] = {};
|
||||
static const u8 gUnknown_8357E28[128] = {};
|
||||
static const u8 gUnknown_8357EA8[32] = {};
|
||||
static const u8 gUnknown_8357EC8[128] = {};
|
||||
static const u8 gUnknown_8357F48[128] = {};
|
||||
static const u8 gUnknown_8357FC8[128] = {};
|
||||
static const u8 gUnknown_8358048[32] = {};
|
||||
static const u8 gUnknown_8358068[128] = {};
|
||||
static const u8 gUnknown_83580E8[128] = {};
|
||||
static const u8 gUnknown_8358168[128] = {};
|
||||
static const u8 gUnknown_83581E8[32] = {};
|
||||
static const u8 gUnknown_8358208[128] = {};
|
||||
static const u8 gUnknown_8358288[128] = {};
|
||||
static const u8 gUnknown_8358308[128] = {};
|
||||
static const u8 gUnknown_8358388[32] = {};
|
||||
static const u8 gUnknown_83583A8[128] = {};
|
||||
static const u8 gUnknown_8358428[128] = {};
|
||||
static const u8 gUnknown_83584A8[128] = {};
|
||||
static const u8 gUnknown_8358528[32] = {};
|
||||
static const u8 gUnknown_8358548[128] = {};
|
||||
static const u8 gUnknown_83585C8[128] = {};
|
||||
static const u8 gUnknown_8358648[128] = {};
|
||||
static const u8 gUnknown_83586C8[32] = {};
|
||||
static const u8 gUnknown_83586E8[128] = {};
|
||||
static const u8 gUnknown_8358768[128] = {};
|
||||
static const u8 gUnknown_83587E8[128] = {};
|
||||
static const u8 gUnknown_8358868[32] = {};
|
||||
static const u8 gUnknown_8358888[128] = {};
|
||||
static const u8 gUnknown_8358908[128] = {};
|
||||
static const u8 gUnknown_8358988[128] = {};
|
||||
static const u8 gUnknown_8358A08[32] = {};
|
||||
static const u8 gUnknown_8358A28[128] = {};
|
||||
static const u8 gUnknown_8358AA8[128] = {};
|
||||
static const u8 gUnknown_8358B28[128] = {};
|
||||
static const u8 gUnknown_8358BA8[32] = {};
|
||||
static const u8 gUnknown_8358BC8[128] = {};
|
||||
static const u8 gUnknown_8358C48[128] = {};
|
||||
static const u8 gUnknown_8358CC8[128] = {};
|
||||
static const u8 gUnknown_8358D48[32] = {};
|
||||
static const u8 gUnknown_8358D68[128] = {};
|
||||
static const u8 gUnknown_8358DE8[128] = {};
|
||||
static const u8 gUnknown_8358E68[128] = {};
|
||||
static const u8 gUnknown_8358EE8[32] = {};
|
||||
static const u8 gUnknown_8358F08[128] = {};
|
||||
static const u8 gUnknown_8358F88[128] = {};
|
||||
static const u8 gUnknown_8359008[128] = {};
|
||||
static const u8 gUnknown_8359088[32] = {};
|
||||
static const u8 gUnknown_83590A8[128] = {};
|
||||
static const u8 gUnknown_8359128[128] = {};
|
||||
static const u8 gUnknown_83591A8[128] = {};
|
||||
static const u8 gUnknown_8359228[32] = {};
|
||||
static const u8 gUnknown_8359248[128] = {};
|
||||
static const u8 gUnknown_83592C8[128] = {};
|
||||
static const u8 gUnknown_8359348[128] = {};
|
||||
static const u8 gUnknown_83593C8[32] = {};
|
||||
static const u8 gUnknown_83593E8[128] = {};
|
||||
static const u8 gUnknown_8359468[128] = {};
|
||||
static const u8 gUnknown_83594E8[128] = {};
|
||||
static const u8 gUnknown_8359568[32] = {};
|
||||
static const u8 gUnknown_8359588[] = INCBIN_U8("graphics/door_anims/frame_8359588_1.4bpp", "graphics/door_anims/frame_8359588_2.4bpp");
|
||||
static const u8 gUnknown_8359688[256] = {};
|
||||
static const u8 gUnknown_8359788[] = INCBIN_U8("graphics/door_anims/frame_8359788_1.4bpp", "graphics/door_anims/frame_8359788_2.4bpp", "graphics/door_anims/frame_8359788_3.4bpp", "graphics/door_anims/frame_8359788_4.4bpp");
|
||||
static const u8 gUnknown_8359888[256] = {};
|
||||
static const u8 gUnknown_8359988[] = INCBIN_U8("graphics/door_anims/frame_8359988_1.4bpp", "graphics/door_anims/frame_8359988_2.4bpp", "graphics/door_anims/frame_8359988_3.4bpp", "graphics/door_anims/frame_8359988_4.4bpp");
|
||||
static const u8 gUnknown_8359A88[256] = {};
|
||||
static const u8 gUnknown_8359B88[] = INCBIN_U8("graphics/door_anims/frame_8359B88_1.4bpp", "graphics/door_anims/frame_8359B88_2.4bpp", "graphics/door_anims/frame_8359B88_3.4bpp", "graphics/door_anims/frame_8359B88_4.4bpp");
|
||||
static const u8 gUnknown_8359C88[32] = {};
|
||||
static const u8 gUnknown_8359CA8[] = INCBIN_U8("graphics/door_anims/frame_8359CA8_1.4bpp", "graphics/door_anims/frame_8359CA8_2.4bpp", "graphics/door_anims/frame_8359CA8_3.4bpp");
|
||||
static const u8 gUnknown_8359FA8[32] = {};
|
||||
static const u8 gUnknown_8359FC8[] = INCBIN_U8("graphics/door_anims/frame_8359FC8_1.4bpp", "graphics/door_anims/frame_8359FC8_2.4bpp", "graphics/door_anims/frame_8359FC8_3.4bpp");
|
||||
static const u8 gUnknown_835A148[32] = {};
|
||||
static const u8 gUnknown_835A168[] = INCBIN_U8("graphics/door_anims/frame_835A168_1.4bpp", "graphics/door_anims/frame_835A168_2.4bpp", "graphics/door_anims/frame_835A168_3.4bpp");
|
||||
static const u8 gUnknown_835A2E8[32] = {};
|
||||
static const u8 gUnknown_835A308[] = INCBIN_U8("graphics/door_anims/frame_835A308_1.4bpp", "graphics/door_anims/frame_835A308_2.4bpp", "graphics/door_anims/frame_835A308_3.4bpp");
|
||||
static const u8 gUnknown_835A488[32] = {};
|
||||
static const u8 gUnknown_835A4A8[] = INCBIN_U8("graphics/door_anims/frame_835A4A8_1.4bpp", "graphics/door_anims/frame_835A4A8_2.4bpp", "graphics/door_anims/frame_835A4A8_3.4bpp");
|
||||
static const u8 gUnknown_835A628[32] = {};
|
||||
static const u8 gUnknown_835A648[] = INCBIN_U8("graphics/door_anims/frame_835A648_1.4bpp", "graphics/door_anims/frame_835A648_2.4bpp", "graphics/door_anims/frame_835A648_3.4bpp");
|
||||
static const u8 gUnknown_835A7C8[32] = {};
|
||||
static const u8 gUnknown_835A7E8[] = INCBIN_U8("graphics/door_anims/frame_835A7E8_1.4bpp", "graphics/door_anims/frame_835A7E8_2.4bpp", "graphics/door_anims/frame_835A7E8_3.4bpp");
|
||||
static const u8 gUnknown_835A968[32] = {};
|
||||
static const u8 gUnknown_835A988[] = INCBIN_U8("graphics/door_anims/frame_835A988_1.4bpp", "graphics/door_anims/frame_835A988_2.4bpp", "graphics/door_anims/frame_835A988_3.4bpp");
|
||||
static const u8 gUnknown_835AB08[32] = {};
|
||||
static const u8 gUnknown_835AB28[] = INCBIN_U8("graphics/door_anims/frame_835AB28_1.4bpp", "graphics/door_anims/frame_835AB28_2.4bpp", "graphics/door_anims/frame_835AB28_3.4bpp");
|
||||
static const u8 gUnknown_835AE28[32] = {};
|
||||
static const u8 gUnknown_835AE48[] = INCBIN_U8("graphics/door_anims/frame_835AE48_1.4bpp", "graphics/door_anims/frame_835AE48_2.4bpp", "graphics/door_anims/frame_835AE48_3.4bpp");
|
||||
static const u8 gUnknown_835B148[32] = {};
|
||||
static const u8 gUnknown_835B168[] = INCBIN_U8("graphics/door_anims/frame_835B168_1.4bpp", "graphics/door_anims/frame_835B168_2.4bpp", "graphics/door_anims/frame_835B168_3.4bpp");
|
||||
static const u8 gUnknown_835B468[32] = {};
|
||||
static const u8 sDoorAnimTiles_General[] = INCBIN_U8("graphics/door_anims/general.4bpp");
|
||||
static const u16 sDoorNullPalette1[16] = {};
|
||||
static const u8 sDoorAnimTiles_SlidingSingle[] = INCBIN_U8("graphics/door_anims/sliding_single.4bpp");
|
||||
static const u16 sDoorNullPalette2[16] = {};
|
||||
static const u8 sDoorAnimTiles_SlidingDouble[] = INCBIN_U8("graphics/door_anims/sliding_double.4bpp");
|
||||
static const u16 sDoorNullPalette3[16] = {};
|
||||
static const u8 sDoorAnimTiles_Pallet[] = INCBIN_U8("graphics/door_anims/pallet.4bpp");
|
||||
static const u16 sDoorNullPalette4[16] = {};
|
||||
static const u8 sDoorAnimTiles_OaksLab[] = INCBIN_U8("graphics/door_anims/oaks_lab.4bpp");
|
||||
static const u16 sDoorNullPalette5[16] = {};
|
||||
static const u8 sDoorAnimTiles_Viridian[] = INCBIN_U8("graphics/door_anims/viridian.4bpp");
|
||||
static const u16 sDoorNullPalette6[16] = {};
|
||||
static const u8 sDoorAnimTiles_Pewter[] = INCBIN_U8("graphics/door_anims/pewter.4bpp");
|
||||
static const u16 sDoorNullPalette7[16] = {};
|
||||
static const u8 sDoorAnimTiles_Saffron[] = INCBIN_U8("graphics/door_anims/saffron.4bpp");
|
||||
static const u16 sDoorNullPalette8[16] = {};
|
||||
static const u8 sDoorAnimTiles_SilphCo[] = INCBIN_U8("graphics/door_anims/silph_co.4bpp");
|
||||
static const u16 sDoorNullPalette9[16] = {};
|
||||
static const u8 sDoorAnimTiles_Cerulean[] = INCBIN_U8("graphics/door_anims/cerulean.4bpp");
|
||||
static const u16 sDoorNullPalette10[16] = {};
|
||||
static const u8 sDoorAnimTiles_Lavender[] = INCBIN_U8("graphics/door_anims/lavender.4bpp");
|
||||
static const u16 sDoorNullPalette11[16] = {};
|
||||
static const u8 sDoorAnimTiles_Vermilion[] = INCBIN_U8("graphics/door_anims/vermilion.4bpp");
|
||||
static const u16 sDoorNullPalette12[16] = {};
|
||||
static const u8 sDoorAnimTiles_PokemonFanClub[] = INCBIN_U8("graphics/door_anims/pokemon_fan_club.4bpp");
|
||||
static const u16 sDoorNullPalette13[16] = {};
|
||||
static const u8 sDoorAnimTiles_DeptStore[] = INCBIN_U8("graphics/door_anims/dept_store.4bpp");
|
||||
static const u16 sDoorNullPalette14[16] = {};
|
||||
static const u8 sDoorAnimTiles_Fuchsia[] = INCBIN_U8("graphics/door_anims/fuchsia.4bpp");
|
||||
static const u16 sDoorNullPalette15[16] = {};
|
||||
static const u8 sDoorAnimTiles_SafariZone[] = INCBIN_U8("graphics/door_anims/safari_zone.4bpp");
|
||||
static const u16 sDoorNullPalette16[16] = {};
|
||||
static const u8 sDoorAnimTiles_CinnabarLab[] = INCBIN_U8("graphics/door_anims/cinnabar_lab.4bpp");
|
||||
static const u16 sDoorNullPalette17[16] = {};
|
||||
static const u8 sDoorAnimTiles_DeptStoreElevator[] = INCBIN_U8("graphics/door_anims/dept_store_elevator.4bpp");
|
||||
static const u16 sDoorNullPalette18[16] = {};
|
||||
static const u8 sDoorAnimTiles_CableClub[] = INCBIN_U8("graphics/door_anims/cable_club.4bpp");
|
||||
static const u16 sDoorNullPalette19[16] = {};
|
||||
static const u8 sDoorAnimTiles_HideoutElevator[] = INCBIN_U8("graphics/door_anims/hideout_elevator.4bpp");
|
||||
static const u16 sDoorNullPalette20[16] = {};
|
||||
static const u8 sDoorAnimTiles_SSAnne[] = INCBIN_U8("graphics/door_anims/ss_anne.4bpp");
|
||||
static const u16 sDoorNullPalette21[16] = {};
|
||||
|
||||
// Doors from R/S dummied below
|
||||
static const u8 sDoorAnimTiles_Empty1[256 * 3] = {};
|
||||
static const u16 sDoorNullPalette22[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty2[256 * 3] = {};
|
||||
static const u16 sDoorNullPalette23[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty3[256 * 3] = {};
|
||||
static const u16 sDoorNullPalette24[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty4[256 * 3] = {};
|
||||
static const u16 sDoorNullPalette25[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty5[256 * 3] = {};
|
||||
static const u16 sDoorNullPalette26[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty6[256 * 3] = {};
|
||||
static const u16 sDoorNullPalette27[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty7[256 * 3] = {};
|
||||
static const u16 sDoorNullPalette28[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty8[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette29[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty9[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette30[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty10[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette31[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty11[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette32[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty12[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette33[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty13[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette34[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty14[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette35[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty15[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette36[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty16[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette37[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty17[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette38[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty18[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette39[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty19[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette40[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty20[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette41[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty21[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette42[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty22[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette43[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty23[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette44[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty24[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette45[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty25[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette46[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty26[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette47[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty27[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette48[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty28[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette49[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty29[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette50[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty30[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette51[16] = {};
|
||||
static const u8 sDoorAnimTiles_Empty31[128 * 3] = {};
|
||||
static const u16 sDoorNullPalette52[16] = {};
|
||||
|
||||
// Unused block of door tiles
|
||||
static const u8 sDoorAnimTiles_UnusedTop[] = INCBIN_U8("graphics/door_anims/unused_top.4bpp");
|
||||
static const u8 sDoorAnimTiles_Empty32[256] = {};
|
||||
static const u8 sDoorAnimTiles_UnusedMidTop[] = INCBIN_U8("graphics/door_anims/unused_midtop.4bpp");
|
||||
static const u8 sDoorAnimTiles_Empty33[256] = {};
|
||||
static const u8 sDoorAnimTiles_UnusedMidBottom[] = INCBIN_U8("graphics/door_anims/unused_midbottom.4bpp");
|
||||
static const u8 sDoorAnimTiles_Empty34[256] = {};
|
||||
static const u8 sDoorAnimTiles_UnusedBottom[] = INCBIN_U8("graphics/door_anims/unused_bottom.4bpp");
|
||||
static const u16 sDoorNullPalette53[16] = {};
|
||||
|
||||
// Used FRLG doors resume
|
||||
static const u8 sDoorAnimTiles_SilphCoElevator[] = INCBIN_U8("graphics/door_anims/silph_co_elevator.4bpp");
|
||||
static const u16 sDoorNullPalette54[16] = {};
|
||||
static const u8 sDoorAnimTiles_Sevii123[] = INCBIN_U8("graphics/door_anims/sevii_123.4bpp");
|
||||
static const u16 sDoorNullPalette55[16] = {};
|
||||
static const u8 sDoorAnimTiles_JoyfulGameCorner[] = INCBIN_U8("graphics/door_anims/joyful_game_corner.4bpp");
|
||||
static const u16 sDoorNullPalette56[16] = {};
|
||||
static const u8 sDoorAnimTiles_OneIslandPokeCenter[] = INCBIN_U8("graphics/door_anims/one_island_poke_center.4bpp");
|
||||
static const u16 sDoorNullPalette57[16] = {};
|
||||
static const u8 sDoorAnimTiles_Sevii45[] = INCBIN_U8("graphics/door_anims/sevii_45.4bpp");
|
||||
static const u16 sDoorNullPalette58[16] = {};
|
||||
static const u8 sDoorAnimTiles_FourIslandDayCare[] = INCBIN_U8("graphics/door_anims/four_island_day_care.4bpp");
|
||||
static const u16 sDoorNullPalette59[16] = {};
|
||||
static const u8 sDoorAnimTiles_RocketWarehouse[] = INCBIN_U8("graphics/door_anims/rocket_warehouse.4bpp");
|
||||
static const u16 sDoorNullPalette60[16] = {};
|
||||
static const u8 sDoorAnimTiles_Sevii67[] = INCBIN_U8("graphics/door_anims/sevii_67.4bpp");
|
||||
static const u16 sDoorNullPalette61[16] = {};
|
||||
static const u8 sDoorAnimTiles_Teleporter[] = INCBIN_U8("graphics/door_anims/teleporter.4bpp");
|
||||
static const u16 sDoorNullPalette62[16] = {};
|
||||
static const u8 sDoorAnimTiles_TrainerTowerLobbyElevator[] = INCBIN_U8("graphics/door_anims/trainer_tower_lobby_elevator.4bpp");
|
||||
static const u16 sDoorNullPalette63[16] = {};
|
||||
static const u8 sDoorAnimTiles_TrainerTowerRoofElevator[] = INCBIN_U8("graphics/door_anims/trainer_tower_roof_elevator.4bpp");
|
||||
static const u16 sDoorNullPalette64[16] = {};
|
||||
|
||||
static const struct DoorAnimFrame sDoorAnimFrames_OpenSmall[] = {
|
||||
{4, 0xFFFF},
|
||||
@@ -257,72 +205,72 @@ static const struct DoorAnimFrame sDoorAnimFrames_CloseLarge[] = {
|
||||
{}
|
||||
};
|
||||
|
||||
static const u8 gUnknown_835B4D8[] = {0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
|
||||
static const u8 gUnknown_835B4E0[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B4E8[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B4F0[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B4F8[] = {0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa};
|
||||
static const u8 gUnknown_835B500[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B508[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B510[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B518[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B520[] = {0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc, 0xc};
|
||||
static const u8 gUnknown_835B528[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
|
||||
static const u8 gUnknown_835B530[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
|
||||
static const u8 gUnknown_835B538[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
|
||||
static const u8 gUnknown_835B540[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B548[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B550[] = {0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9};
|
||||
static const u8 gUnknown_835B558[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B560[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B568[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B570[] = {0xc, 0xc, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
|
||||
static const u8 gUnknown_835B578[] = {0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7};
|
||||
static const u8 gUnknown_835B580[] = {0x8, 0x8, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
|
||||
static const u8 gUnknown_835B588[] = {0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5};
|
||||
static const u8 gUnknown_835B590[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B598[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B5A0[] = {0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5};
|
||||
static const u8 gUnknown_835B5A8[] = {0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3};
|
||||
static const u8 gUnknown_835B5B0[] = {0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa, 0xa};
|
||||
static const u8 gUnknown_835B5B8[] = {0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5};
|
||||
static const u8 gUnknown_835B5C0[] = {0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8};
|
||||
static const u8 gUnknown_835B5C8[] = {0x8, 0x8, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
|
||||
static const u8 gUnknown_835B5D0[] = {0xb, 0xb, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2};
|
||||
static const u8 sDoorAnimPalettes_General[] = {2, 2, 2, 2, 2, 2, 2, 2};
|
||||
static const u8 sDoorAnimPalettes_SlidingSingle[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_SlidingDouble[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_Pallet[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_OaksLab[] = {10, 10, 10, 10, 10, 10, 10, 10};
|
||||
static const u8 sDoorAnimPalettes_Viridian[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_Pewter[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_Saffron[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_SilphCo[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_Cerulean[] = {12, 12, 12, 12, 12, 12, 12, 12};
|
||||
static const u8 sDoorAnimPalettes_Lavender[] = {9, 9, 9, 9, 9, 9, 9, 9};
|
||||
static const u8 sDoorAnimPalettes_Vermilion[] = {9, 9, 9, 9, 9, 9, 9, 9};
|
||||
static const u8 sDoorAnimPalettes_PokemonFanClub[] = {9, 9, 9, 9, 9, 9, 9, 9};
|
||||
static const u8 sDoorAnimPalettes_DeptStore[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_Fuchsia[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_SafariZone[] = {9, 9, 9, 9, 9, 9, 9, 9};
|
||||
static const u8 sDoorAnimPalettes_CinnabarLab[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_DeptStoreElevator[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_CableClub[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_HideoutElevator[] = {12, 12, 2, 2, 2, 2, 2, 2};
|
||||
static const u8 sDoorAnimPalettes_SSAnne[] = {7, 7, 7, 7, 7, 7, 7, 7};
|
||||
static const u8 sDoorAnimPalettes_SilphCoElevator[] = {8, 8, 2, 2, 2, 2, 2, 2};
|
||||
static const u8 sDoorAnimPalettes_Sevii123[] = {5, 5, 5, 5, 5, 5, 5, 5};
|
||||
static const u8 sDoorAnimPalettes_JoyfulGameCorner[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_OneIslandPokeCenter[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_Sevii45[] = {5, 5, 5, 5, 5, 5, 5, 5};
|
||||
static const u8 sDoorAnimPalettes_FourIslandDayCare[] = {3, 3, 3, 3, 3, 3, 3, 3};
|
||||
static const u8 sDoorAnimPalettes_RocketWarehouse[] = {10, 10, 10, 10, 10, 10, 10, 10};
|
||||
static const u8 sDoorAnimPalettes_Sevii67[] = {5, 5, 5, 5, 5, 5, 5, 5};
|
||||
static const u8 sDoorAnimPalettes_Teleporter[] = {8, 8, 8, 8, 8, 8, 8, 8};
|
||||
static const u8 sDoorAnimPalettes_TrainerTowerLobbyElevator[] = {8, 8, 2, 2, 2, 2, 2, 2};
|
||||
static const u8 sDoorAnimPalettes_TrainerTowerRoofElevator[] = {11, 11, 2, 2, 2, 2, 2, 2};
|
||||
|
||||
static const struct DoorGraphics sDoorGraphics[] = {
|
||||
{0x03d, 0, 0, gUnknown_8353088, gUnknown_835B4D8},
|
||||
{0x062, 1, 0, gUnknown_8353228, gUnknown_835B4E0},
|
||||
{0x15b, 1, 0, gUnknown_83533C8, gUnknown_835B4E8},
|
||||
{0x2a3, 0, 0, gUnknown_8353568, gUnknown_835B4F0},
|
||||
{0x2ac, 0, 0, gUnknown_8353708, gUnknown_835B4F8},
|
||||
{0x299, 0, 0, gUnknown_83538A8, gUnknown_835B500},
|
||||
{0x2ce, 0, 0, gUnknown_8353A48, gUnknown_835B508},
|
||||
{0x284, 0, 0, gUnknown_8353BE8, gUnknown_835B510},
|
||||
{0x2bc, 1, 0, gUnknown_8353D88, gUnknown_835B518},
|
||||
{0x298, 0, 0, gUnknown_8353F28, gUnknown_835B520},
|
||||
{0x2a2, 0, 0, gUnknown_83540C8, gUnknown_835B528},
|
||||
{0x29e, 0, 0, gUnknown_8354268, gUnknown_835B530},
|
||||
{0x2e1, 0, 0, gUnknown_8354408, gUnknown_835B538},
|
||||
{0x294, 1, 0, gUnknown_83545A8, gUnknown_835B540},
|
||||
{0x2bf, 0, 0, gUnknown_8354748, gUnknown_835B548},
|
||||
{0x2d2, 1, 0, gUnknown_83548E8, gUnknown_835B550},
|
||||
{0x2ad, 0, 0, gUnknown_8354A88, gUnknown_835B558},
|
||||
{0x297, 0, 0, gUnknown_8359FC8, gUnknown_835B588},
|
||||
{0x29b, 1, 0, gUnknown_835A168, gUnknown_835B590},
|
||||
{0x2eb, 0, 0, gUnknown_835A308, gUnknown_835B598},
|
||||
{0x29a, 0, 0, gUnknown_835A4A8, gUnknown_835B5A0},
|
||||
{0x2b9, 0, 0, gUnknown_835A648, gUnknown_835B5A8},
|
||||
{0x2af, 0, 0, gUnknown_835A7E8, gUnknown_835B5B0},
|
||||
{0x30c, 0, 0, gUnknown_835A988, gUnknown_835B5B8},
|
||||
{0x28d, 1, 1, gUnknown_8354C28, gUnknown_835B560},
|
||||
{0x2de, 1, 1, gUnknown_8354F48, gUnknown_835B568},
|
||||
{0x2ab, 1, 1, gUnknown_8355268, gUnknown_835B570},
|
||||
{0x281, 0, 1, gUnknown_8355588, gUnknown_835B578},
|
||||
{0x2e2, 1, 1, gUnknown_8359CA8, gUnknown_835B580},
|
||||
{0x296, 1, 1, gUnknown_835AB28, gUnknown_835B5C0},
|
||||
{0x2c3, 1, 1, gUnknown_835AE48, gUnknown_835B5C8},
|
||||
{0x356, 1, 1, gUnknown_835B168, gUnknown_835B5D0},
|
||||
{METATILE_General_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_General, sDoorAnimPalettes_General},
|
||||
{METATILE_General_SlidingSingleDoor, DOOR_SOUND_SLIDING, 0, sDoorAnimTiles_SlidingSingle, sDoorAnimPalettes_SlidingSingle},
|
||||
{METATILE_General_SlidingDoubleDoor, DOOR_SOUND_SLIDING, 0, sDoorAnimTiles_SlidingDouble, sDoorAnimPalettes_SlidingDouble},
|
||||
{METATILE_PalletTown_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Pallet, sDoorAnimPalettes_Pallet},
|
||||
{METATILE_PalletTown_OaksLabDoor, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_OaksLab, sDoorAnimPalettes_OaksLab},
|
||||
{METATILE_ViridianCity_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Viridian, sDoorAnimPalettes_Viridian},
|
||||
{METATILE_PewterCity_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Pewter, sDoorAnimPalettes_Pewter},
|
||||
{METATILE_SaffronCity_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Saffron, sDoorAnimPalettes_Saffron},
|
||||
{METATILE_SaffronCity_SilphCoDoor, DOOR_SOUND_SLIDING, 0, sDoorAnimTiles_SilphCo, sDoorAnimPalettes_SilphCo},
|
||||
{METATILE_CeruleanCity_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Cerulean, sDoorAnimPalettes_Cerulean},
|
||||
{METATILE_LavenderTown_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Lavender, sDoorAnimPalettes_Lavender},
|
||||
{METATILE_VermilionCity_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Vermilion, sDoorAnimPalettes_Vermilion},
|
||||
{METATILE_VermilionCity_PokemonFanClubDoor, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_PokemonFanClub, sDoorAnimPalettes_PokemonFanClub},
|
||||
{METATILE_CeladonCity_DeptStoreDoor, DOOR_SOUND_SLIDING, 0, sDoorAnimTiles_DeptStore, sDoorAnimPalettes_DeptStore},
|
||||
{METATILE_FuchsiaCity_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Fuchsia, sDoorAnimPalettes_Fuchsia},
|
||||
{METATILE_FuchsiaCity_SafariZoneDoor, DOOR_SOUND_SLIDING, 0, sDoorAnimTiles_SafariZone, sDoorAnimPalettes_SafariZone},
|
||||
{METATILE_CinnabarIsland_LabDoor, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_CinnabarLab, sDoorAnimPalettes_CinnabarLab},
|
||||
{METATILE_SeviiIslands123_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Sevii123, sDoorAnimPalettes_Sevii123},
|
||||
{METATILE_SeviiIslands123_GameCornerDoor, DOOR_SOUND_SLIDING, 0, sDoorAnimTiles_JoyfulGameCorner, sDoorAnimPalettes_JoyfulGameCorner},
|
||||
{METATILE_SeviiIslands123_PokeCenterDoor, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_OneIslandPokeCenter, sDoorAnimPalettes_OneIslandPokeCenter},
|
||||
{METATILE_SeviiIslands45_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Sevii45, sDoorAnimPalettes_Sevii45},
|
||||
{METATILE_SeviiIslands45_DayCareDoor, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_FourIslandDayCare, sDoorAnimPalettes_FourIslandDayCare},
|
||||
{METATILE_SeviiIslands45_RocketWarehouseDoor_Unlocked, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_RocketWarehouse, sDoorAnimPalettes_RocketWarehouse},
|
||||
{METATILE_SeviiIslands67_Door, DOOR_SOUND_NORMAL, 0, sDoorAnimTiles_Sevii67, sDoorAnimPalettes_Sevii67},
|
||||
{METATILE_DepartmentStore_ElevatorDoor, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_DeptStoreElevator, sDoorAnimPalettes_DeptStoreElevator},
|
||||
{METATILE_PokemonCenter_CableClubDoor, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_CableClub, sDoorAnimPalettes_CableClub},
|
||||
{METATILE_SilphCo_HideoutElevatorDoor, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_HideoutElevator, sDoorAnimPalettes_HideoutElevator},
|
||||
{METATILE_SSAnne_Door, DOOR_SOUND_NORMAL, 1, sDoorAnimTiles_SSAnne, sDoorAnimPalettes_SSAnne},
|
||||
{METATILE_SilphCo_ElevatorDoor, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_SilphCoElevator, sDoorAnimPalettes_SilphCoElevator},
|
||||
{METATILE_SeaCottage_Teleporter_Door, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_Teleporter, sDoorAnimPalettes_Teleporter},
|
||||
{METATILE_TrainerTower_LobbyElevatorDoor, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_TrainerTowerLobbyElevator, sDoorAnimPalettes_TrainerTowerLobbyElevator},
|
||||
{METATILE_TrainerTower_RoofElevatorDoor, DOOR_SOUND_SLIDING, 1, sDoorAnimTiles_TrainerTowerRoofElevator, sDoorAnimPalettes_TrainerTowerRoofElevator},
|
||||
{}
|
||||
};
|
||||
|
||||
@@ -418,7 +366,7 @@ static bool32 PlayDoorAnimationFrame(const struct DoorGraphics * gfx, const stru
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static const struct DoorGraphics * door_find(const struct DoorGraphics * gfx, u16 id)
|
||||
static const struct DoorGraphics * GetDoorGraphics(const struct DoorGraphics * gfx, u16 id)
|
||||
{
|
||||
while (gfx->tiles != NULL)
|
||||
{
|
||||
@@ -429,16 +377,18 @@ static const struct DoorGraphics * door_find(const struct DoorGraphics * gfx, u1
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static s8 task_overworld_door_add_if_inactive(const struct DoorGraphics * gfx, const struct DoorAnimFrame * frames, int a2, int a3)
|
||||
static s8 StartDoorAnimationTask(const struct DoorGraphics * gfx, const struct DoorAnimFrame * frames, int x, int y)
|
||||
{
|
||||
u8 taskId;
|
||||
s16 *data;
|
||||
if (FuncIsActiveTask(Task_AnimateDoor) == TRUE)
|
||||
return -1;
|
||||
|
||||
taskId = CreateTask(Task_AnimateDoor, 80);
|
||||
data = gTasks[taskId].data;
|
||||
data[6] = a2;
|
||||
data[7] = a3;
|
||||
|
||||
data[6] = x;
|
||||
data[7] = y;
|
||||
data[1] = (uintptr_t)frames;
|
||||
data[0] = (uintptr_t)frames >> 16;
|
||||
data[3] = (uintptr_t)gfx;
|
||||
@@ -446,14 +396,14 @@ static s8 task_overworld_door_add_if_inactive(const struct DoorGraphics * gfx, c
|
||||
return taskId;
|
||||
}
|
||||
|
||||
static void DrawClosedDoor(const struct DoorGraphics * gfx, int a1, int a2)
|
||||
static void DrawClosedDoor(const struct DoorGraphics * gfx, int x, int y)
|
||||
{
|
||||
DrawDoorDefaultImage(gfx, a1, a2);
|
||||
DrawDoorDefaultImage(gfx, x, y);
|
||||
}
|
||||
|
||||
static void DrawOpenedDoor(const struct DoorGraphics * gfx, int x, int y)
|
||||
{
|
||||
gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
if (gfx != NULL)
|
||||
{
|
||||
UpdateDrawDoorFrame(gfx, SeekToEndOfDoorAnim(gfx->size == 0 ? sDoorAnimFrames_OpenSmall : sDoorAnimFrames_OpenLarge), x, y);
|
||||
@@ -469,24 +419,24 @@ static const struct DoorAnimFrame * SeekToEndOfDoorAnim(const struct DoorAnimFra
|
||||
|
||||
static s8 AnimateDoorOpenInternal(const struct DoorGraphics * gfx, int x, int y)
|
||||
{
|
||||
gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
if (gfx == NULL)
|
||||
return -1;
|
||||
else if (gfx->size == 0)
|
||||
return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_OpenSmall, x, y);
|
||||
return StartDoorAnimationTask(gfx, sDoorAnimFrames_OpenSmall, x, y);
|
||||
else
|
||||
return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_OpenLarge, x, y);
|
||||
return StartDoorAnimationTask(gfx, sDoorAnimFrames_OpenLarge, x, y);
|
||||
}
|
||||
|
||||
static s8 AnimateDoorCloseInternal(const struct DoorGraphics * gfx, int x, int y)
|
||||
{
|
||||
gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
if (gfx == NULL)
|
||||
return -1;
|
||||
else if (gfx->size == 0)
|
||||
return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_CloseSmall, x, y);
|
||||
return StartDoorAnimationTask(gfx, sDoorAnimFrames_CloseSmall, x, y);
|
||||
else
|
||||
return task_overworld_door_add_if_inactive(gfx, sDoorAnimFrames_CloseLarge, x, y);
|
||||
return StartDoorAnimationTask(gfx, sDoorAnimFrames_CloseLarge, x, y);
|
||||
}
|
||||
|
||||
void FieldSetDoorOpened(int x, int y)
|
||||
@@ -522,16 +472,16 @@ bool8 FieldIsDoorAnimationRunning(void)
|
||||
|
||||
u16 GetDoorSoundEffect(x, y)
|
||||
{
|
||||
if (!GetDoorOpenType(sDoorGraphics, x, y))
|
||||
if (GetDoorSoundType(sDoorGraphics, x, y) == DOOR_SOUND_NORMAL)
|
||||
return MUS_W_DOOR;
|
||||
else
|
||||
else // DOOR_SOUND_SLIDING
|
||||
return SE_JIDO_DOA;
|
||||
}
|
||||
|
||||
static s8 GetDoorOpenType(const struct DoorGraphics * gfx, int x, int y)
|
||||
static s8 GetDoorSoundType(const struct DoorGraphics * gfx, int x, int y)
|
||||
{
|
||||
gfx = door_find(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
|
||||
if (gfx == NULL)
|
||||
return -1;
|
||||
return gfx->sliding;
|
||||
return gfx->sound;
|
||||
}
|
||||
|
||||
+3909
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+67
-66
@@ -13,16 +13,17 @@
|
||||
#include "metatile_behavior.h"
|
||||
#include "quest_log.h"
|
||||
#include "link.h"
|
||||
#include "event_object_80688E4.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "sound.h"
|
||||
#include "field_door.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_screen_effect.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_specials.h"
|
||||
#include "event_object_lock.h"
|
||||
#include "start_menu.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/event_object_movement.h"
|
||||
#include "constants/field_weather.h"
|
||||
|
||||
static void sub_807DF4C(u8 a0);
|
||||
static void sub_807DFBC(u8 taskId);
|
||||
@@ -50,18 +51,18 @@ void palette_bg_faded_fill_black(void)
|
||||
CpuFastFill16(RGB_BLACK, gPlttBufferFaded, 0x400);
|
||||
}
|
||||
|
||||
void pal_fill_for_maplights(void)
|
||||
void WarpFadeInScreen(void)
|
||||
{
|
||||
switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
|
||||
switch (MapTransitionIsExit(GetLastUsedWarpMapType(), GetCurrentMapType()))
|
||||
{
|
||||
case 0:
|
||||
palette_bg_faded_fill_black();
|
||||
FadeScreen(0, 0);
|
||||
FadeScreen(FADE_FROM_BLACK, 0);
|
||||
palette_bg_faded_fill_black();
|
||||
break;
|
||||
case 1:
|
||||
palette_bg_faded_fill_white();
|
||||
FadeScreen(2, 0);
|
||||
FadeScreen(FADE_FROM_WHITE, 0);
|
||||
palette_bg_faded_fill_white();
|
||||
break;
|
||||
}
|
||||
@@ -69,42 +70,42 @@ void pal_fill_for_maplights(void)
|
||||
|
||||
static void sub_807DBAC(void)
|
||||
{
|
||||
switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
|
||||
switch (MapTransitionIsExit(GetLastUsedWarpMapType(), GetCurrentMapType()))
|
||||
{
|
||||
case 0:
|
||||
palette_bg_faded_fill_black();
|
||||
FadeScreen(0, 3);
|
||||
FadeScreen(FADE_FROM_BLACK, 3);
|
||||
palette_bg_faded_fill_black();
|
||||
break;
|
||||
case 1:
|
||||
palette_bg_faded_fill_white();
|
||||
FadeScreen(2, 3);
|
||||
FadeScreen(FADE_FROM_WHITE, 3);
|
||||
palette_bg_faded_fill_white();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807DC00(void)
|
||||
void FadeInFromBlack(void)
|
||||
{
|
||||
palette_bg_faded_fill_black();
|
||||
FadeScreen(0, 0);
|
||||
FadeScreen(FADE_FROM_BLACK, 0);
|
||||
palette_bg_faded_fill_black();
|
||||
}
|
||||
|
||||
void sub_807DC18(void)
|
||||
void WarpFadeOutScreen(void)
|
||||
{
|
||||
const struct MapHeader *header = warp1_get_mapheader();
|
||||
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE))
|
||||
FadeScreen(1, 0);
|
||||
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && MapHasPreviewScreen(header->regionMapSectionId, MPS_TYPE_CAVE))
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
else
|
||||
{
|
||||
switch (sub_80C9D7C(GetCurrentMapType(), header->mapType))
|
||||
switch (MapTransitionIsEnter(GetCurrentMapType(), header->mapType))
|
||||
{
|
||||
case 0:
|
||||
FadeScreen(1, 0);
|
||||
case FALSE:
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
break;
|
||||
case 1:
|
||||
FadeScreen(3, 0);
|
||||
case TRUE:
|
||||
FadeScreen(FADE_TO_WHITE, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -112,13 +113,13 @@ void sub_807DC18(void)
|
||||
|
||||
static void sub_807DC70(void)
|
||||
{
|
||||
switch (sub_80C9D7C(GetCurrentMapType(), warp1_get_mapheader()->mapType))
|
||||
switch (MapTransitionIsEnter(GetCurrentMapType(), warp1_get_mapheader()->mapType))
|
||||
{
|
||||
case 0:
|
||||
FadeScreen(1, 3);
|
||||
case FALSE:
|
||||
FadeScreen(FADE_TO_BLACK, 3);
|
||||
break;
|
||||
case 1:
|
||||
FadeScreen(3, 3);
|
||||
case TRUE:
|
||||
FadeScreen(FADE_TO_WHITE, 3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -138,7 +139,7 @@ void sub_807DCE4(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
CreateTask(task0A_nop_for_a_while, 10);
|
||||
}
|
||||
|
||||
@@ -155,14 +156,14 @@ void FieldCallback_ReturnToEventScript2(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
|
||||
}
|
||||
|
||||
void sub_807DD44(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
|
||||
}
|
||||
|
||||
@@ -172,13 +173,13 @@ static void task_mpl_807DD60(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
task->data[1] = sub_8081150();
|
||||
task->data[1] = CreateTask_ReestablishLinkInCableClubRoom();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (gTasks[task->data[1]].isActive != TRUE)
|
||||
{
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -192,7 +193,7 @@ static void task_mpl_807DD60(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807DDD0(void)
|
||||
void FieldCB_ReturnToFieldWiredLink(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
@@ -206,13 +207,13 @@ static void sub_807DDF0(u8 taskId)
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sub_800AB9C();
|
||||
PrepareSendLinkCmd2FFE_or_RfuCmd6600();
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -227,7 +228,7 @@ static void sub_807DDF0(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807DE58(void)
|
||||
void FieldCB_ReturnToFieldWirelessLink(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
@@ -246,7 +247,7 @@ static void sub_807DE78(bool8 a0)
|
||||
if (MetatileBehavior_IsWarpDoor_2(behavior) == TRUE)
|
||||
{
|
||||
func = sub_807DFBC;
|
||||
switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
|
||||
switch (MapTransitionIsExit(GetLastUsedWarpMapType(), GetCurrentMapType()))
|
||||
{
|
||||
case 0:
|
||||
palette_bg_faded_fill_black();
|
||||
@@ -278,9 +279,9 @@ static void sub_807DE78(bool8 a0)
|
||||
static void sub_807DF4C(bool8 a0)
|
||||
{
|
||||
if (!a0)
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
else
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
}
|
||||
|
||||
void sub_807DF64(void)
|
||||
@@ -302,7 +303,7 @@ void sub_807DF7C(void)
|
||||
static void sub_807DF94(void)
|
||||
{
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
sub_8111CF0();
|
||||
PlaySE(SE_TK_WARPOUT);
|
||||
CreateTask(sub_807E31C, 10);
|
||||
@@ -349,7 +350,7 @@ static void sub_807DFBC(u8 taskId)
|
||||
{
|
||||
PlayerGetDestCoords(&task->data[12], &task->data[13]);
|
||||
sub_807DCB0(TRUE);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
|
||||
task->data[0] = 8;
|
||||
}
|
||||
break;
|
||||
@@ -373,7 +374,7 @@ static void sub_807DFBC(u8 taskId)
|
||||
if (sub_807E418())
|
||||
{
|
||||
sub_807DCB0(TRUE);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 16);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_DOWN);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
@@ -485,7 +486,7 @@ static void Task_WaitFadeAndCreateStartMenuTask(u8 taskId)
|
||||
|
||||
void FadeTransition_FadeInOnReturnToStartMenu(void)
|
||||
{
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
@@ -510,7 +511,7 @@ void sub_807E3EC(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
CreateTask(task_mpl_807E3C8, 10);
|
||||
}
|
||||
|
||||
@@ -521,7 +522,7 @@ static bool32 sub_807E40C(void)
|
||||
|
||||
bool32 sub_807E418(void)
|
||||
{
|
||||
if (IsWeatherNotFadingIn() == TRUE && sub_80F83B0())
|
||||
if (IsWeatherNotFadingIn() == TRUE && ForestMapPreviewScreenIsRunning())
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
@@ -530,8 +531,8 @@ bool32 sub_807E418(void)
|
||||
void DoWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_8055F88();
|
||||
sub_807DC18();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
PlaySE(SE_KAIDAN);
|
||||
gFieldCallback = sub_807DF64;
|
||||
@@ -541,8 +542,8 @@ void DoWarp(void)
|
||||
void DoDiveWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_8055F88();
|
||||
sub_807DC18();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
gFieldCallback = sub_807DF64;
|
||||
CreateTask(sub_807E718, 10);
|
||||
@@ -580,31 +581,31 @@ void sub_807E524(void)
|
||||
void DoFallWarp(void)
|
||||
{
|
||||
DoDiveWarp();
|
||||
gFieldCallback = sub_8084454;
|
||||
gFieldCallback = FieldCB_FallWarpExit;
|
||||
}
|
||||
|
||||
void sub_807E560(u8 a0)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_8084784(a0, 10);
|
||||
StartEscalatorWarp(a0, 10);
|
||||
}
|
||||
|
||||
void sub_807E57C(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_8084F2C(10);
|
||||
StartLavaridgeGymB1FWarp(10);
|
||||
}
|
||||
|
||||
void sub_807E58C(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_80853CC(10);
|
||||
StartLavaridgeGym1FWarp(10);
|
||||
}
|
||||
|
||||
void sub_807E59C(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_8055F88();
|
||||
TryFadeOutOldMapMusic();
|
||||
CreateTask(sub_807E784, 10);
|
||||
gFieldCallback = sub_807DF94;
|
||||
}
|
||||
@@ -612,7 +613,7 @@ void sub_807E59C(void)
|
||||
void sub_807E5C4(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_807DC18();
|
||||
WarpFadeOutScreen();
|
||||
CreateTask(sub_807E718, 10);
|
||||
gFieldCallback = nullsub_60;
|
||||
}
|
||||
@@ -632,7 +633,7 @@ static void sub_807E5EC(u8 taskId)
|
||||
break;
|
||||
case 2:
|
||||
WarpIntoMap();
|
||||
SetMainCallback2(sub_8056788);
|
||||
SetMainCallback2(CB2_ReturnToFieldCableClub);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@@ -641,8 +642,8 @@ static void sub_807E5EC(u8 taskId)
|
||||
void DoCableClubWarp(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
sub_8055F88();
|
||||
sub_807DC18();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlaySE(SE_KAIDAN);
|
||||
CreateTask(sub_807E5EC, 10);
|
||||
}
|
||||
@@ -654,15 +655,15 @@ static void sub_807E678(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
ClearLinkCallback_2();
|
||||
FadeScreen(1, 0);
|
||||
sub_8055F88();
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
TryFadeOutOldMapMusic();
|
||||
PlaySE(SE_KAIDAN);
|
||||
data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!sub_807E40C() && BGMusicStopped())
|
||||
{
|
||||
sub_800AAC0();
|
||||
Link_TryStartSend5FFF();
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -719,7 +720,7 @@ static void sub_807E784(u8 taskId)
|
||||
case 1:
|
||||
if (!sub_805DAD0())
|
||||
{
|
||||
sub_807DC18();
|
||||
WarpFadeOutScreen();
|
||||
task->data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -753,7 +754,7 @@ static void sub_807E80C(u8 taskId)
|
||||
if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
|
||||
{
|
||||
ObjectEventClearHeldMovementIfActive(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], 17);
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)], MOVEMENT_ACTION_WALK_NORMAL_UP);
|
||||
task->data[0] = 2;
|
||||
}
|
||||
break;
|
||||
@@ -773,14 +774,14 @@ static void sub_807E80C(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sub_8055F88();
|
||||
sub_807DC18();
|
||||
TryFadeOutOldMapMusic();
|
||||
WarpFadeOutScreen();
|
||||
PlayRainStoppingSoundEffect();
|
||||
task->data[0] = 0;
|
||||
task->func = sub_807E718;
|
||||
break;
|
||||
case 5:
|
||||
sub_8055F88();
|
||||
TryFadeOutOldMapMusic();
|
||||
PlayRainStoppingSoundEffect();
|
||||
task->data[0] = 0;
|
||||
task->func = sub_807E718;
|
||||
@@ -808,7 +809,7 @@ static void sub_807E980(u8 taskId)
|
||||
data[15]--;
|
||||
else
|
||||
{
|
||||
sub_8055F88();
|
||||
TryFadeOutOldMapMusic();
|
||||
PlayRainStoppingSoundEffect();
|
||||
playerSpr->oam.priority = 1;
|
||||
sub_807EB64(data[1], &data[2], &data[3]);
|
||||
@@ -822,7 +823,7 @@ static void sub_807E980(u8 taskId)
|
||||
data[15]++;
|
||||
if (data[15] >= 12)
|
||||
{
|
||||
sub_807DC18();
|
||||
WarpFadeOutScreen();
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
@@ -906,7 +907,7 @@ static void sub_807EC34(u8 taskId)
|
||||
break;
|
||||
case 0:
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
pal_fill_for_maplights();
|
||||
WarpFadeInScreen();
|
||||
ScriptContext2_Enable();
|
||||
sub_807ECBC(&data[1], &data[2], &data[3], &data[4], &data[5]);
|
||||
data[0]++;
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "quest_log.h"
|
||||
#include "script.h"
|
||||
#include "text_window.h"
|
||||
|
||||
static EWRAM_DATA u8 sMessageBoxType = 0;
|
||||
|
||||
static void textbox_fdecode_auto_and_task_add(const u8 *str);
|
||||
static void textbox_auto_and_task_add(void);
|
||||
|
||||
void sub_8069348(void)
|
||||
{
|
||||
sMessageBoxType = 0;
|
||||
gTextFlags.canABSpeedUpPrint = FALSE;
|
||||
gTextFlags.useAlternateDownArrow = FALSE;
|
||||
gTextFlags.autoScroll = FALSE;
|
||||
}
|
||||
|
||||
static void Task_RunFieldMessageBoxPrinter(u8 taskId)
|
||||
{
|
||||
struct Task * task = &gTasks[taskId];
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
if (gQuestLogState == QL_STATE_2)
|
||||
{
|
||||
gTextFlags.autoScroll = TRUE;
|
||||
TextWindow_LoadTilesStdFrame1(0, 0x200);
|
||||
}
|
||||
else if (!IsMsgSignPost())
|
||||
{
|
||||
LoadStdWindowFrameGfx();
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadSignPostWindowFrameGfx();
|
||||
}
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
DrawDialogueFrame(0, TRUE);
|
||||
task->data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
if (RunTextPrinters_CheckPrinter0Active() != TRUE)
|
||||
{
|
||||
sMessageBoxType = 0;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void task_add_textbox(void)
|
||||
{
|
||||
CreateTask(Task_RunFieldMessageBoxPrinter, 80);
|
||||
}
|
||||
|
||||
static void task_del_textbox(void)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(Task_RunFieldMessageBoxPrinter);
|
||||
if (taskId != 0xFF)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
bool8 ShowFieldMessage(const u8 *str)
|
||||
{
|
||||
if (sMessageBoxType != 0)
|
||||
return FALSE;
|
||||
textbox_fdecode_auto_and_task_add(str);
|
||||
sMessageBoxType = 2;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 ShowFieldAutoScrollMessage(const u8 *str)
|
||||
{
|
||||
if (sMessageBoxType != 0)
|
||||
return FALSE;
|
||||
sMessageBoxType = 3;
|
||||
textbox_fdecode_auto_and_task_add(str);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_806948C(const u8 *str)
|
||||
{
|
||||
sMessageBoxType = 3;
|
||||
textbox_fdecode_auto_and_task_add(str);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_80694A4(const u8 *str)
|
||||
{
|
||||
if (sMessageBoxType != 0)
|
||||
return FALSE;
|
||||
sMessageBoxType = 2;
|
||||
textbox_auto_and_task_add();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void textbox_fdecode_auto_and_task_add(const u8 *str)
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, str);
|
||||
AddTextPrinterDiffStyle(TRUE);
|
||||
task_add_textbox();
|
||||
}
|
||||
|
||||
static void textbox_auto_and_task_add(void)
|
||||
{
|
||||
AddTextPrinterDiffStyle(TRUE);
|
||||
task_add_textbox();
|
||||
}
|
||||
|
||||
void HideFieldMessageBox(void)
|
||||
{
|
||||
task_del_textbox();
|
||||
ClearDialogWindowAndFrame(0, TRUE);
|
||||
sMessageBoxType = 0;
|
||||
}
|
||||
|
||||
u8 textbox_any_visible(void)
|
||||
{
|
||||
return sMessageBoxType;
|
||||
}
|
||||
|
||||
bool8 IsFieldMessageBoxHidden(void)
|
||||
{
|
||||
if (sMessageBoxType == 0)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_8069538(void)
|
||||
{
|
||||
task_del_textbox();
|
||||
DrawStdWindowFrame(0, TRUE);
|
||||
sMessageBoxType = 0;
|
||||
}
|
||||
+14
-11
@@ -48,42 +48,45 @@ static bool32 MonFaintedFromPoison(u8 partyIdx)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void Task_WhiteOut(u8 taskId)
|
||||
#define tState data[0]
|
||||
#define tPartyId data[1]
|
||||
|
||||
static void Task_TryFieldPoisonWhiteOut(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
switch (data[0])
|
||||
switch (tState)
|
||||
{
|
||||
case 0:
|
||||
for (; data[1] < PARTY_SIZE; data[1]++)
|
||||
for (; tPartyId < PARTY_SIZE; tPartyId++)
|
||||
{
|
||||
if (MonFaintedFromPoison(data[1]))
|
||||
if (MonFaintedFromPoison(tPartyId))
|
||||
{
|
||||
FaintFromFieldPoison(data[1]);
|
||||
FaintFromFieldPoison(tPartyId);
|
||||
ShowFieldMessage(gText_PkmnFainted3);
|
||||
data[0]++;
|
||||
return;
|
||||
}
|
||||
}
|
||||
data[0] = 2;
|
||||
tState = 2;
|
||||
break;
|
||||
case 1:
|
||||
if (IsFieldMessageBoxHidden())
|
||||
data[0]--;
|
||||
tState--;
|
||||
break;
|
||||
case 2:
|
||||
if (AllMonsFainted())
|
||||
gSpecialVar_Result = 1;
|
||||
gSpecialVar_Result = TRUE;
|
||||
else
|
||||
gSpecialVar_Result = 0;
|
||||
gSpecialVar_Result = FALSE;
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ExecuteWhiteOut(void)
|
||||
void TryFieldPoisonWhiteOut(void)
|
||||
{
|
||||
CreateTask(Task_WhiteOut, 80);
|
||||
CreateTask(Task_TryFieldPoisonWhiteOut, 80);
|
||||
ScriptContext1_Stop();
|
||||
}
|
||||
|
||||
|
||||
@@ -212,7 +212,7 @@ void WriteFlashScanlineEffectBuffer(u8 flashLevel)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_807F0B0(void)
|
||||
void Script_FadeOutMapMusic(void)
|
||||
{
|
||||
Overworld_FadeOutMapMusic();
|
||||
CreateTask(Task_EnableScriptAfterMusicFade, 80);
|
||||
@@ -430,7 +430,7 @@ static void sub_807F45C(u8 taskId)
|
||||
CopyWindowToVram(windowId, 1);
|
||||
RemoveWindow(windowId);
|
||||
palette_bg_faded_fill_black();
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
++gTasks[taskId].data[0];
|
||||
break;
|
||||
case 3:
|
||||
@@ -444,7 +444,7 @@ static void sub_807F45C(u8 taskId)
|
||||
if (sub_807E418() == TRUE)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
ScriptContext1_SetupScript(EventScript_MomHeal);
|
||||
ScriptContext1_SetupScript(EventScript_AfterWhiteOutMomHeal);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ void nullsub_60(void)
|
||||
{
|
||||
}
|
||||
|
||||
void nullsub_61(void)
|
||||
// From Hoenn's SS Tidal
|
||||
void LookThroughPorthole(void)
|
||||
{
|
||||
}
|
||||
|
||||
+196
-161
@@ -41,11 +41,12 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/object_events.h"
|
||||
#include "constants/maps.h"
|
||||
#include "constants/region_map.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/menu.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/metatile_labels.h"
|
||||
|
||||
static EWRAM_DATA u8 sElevatorCurrentFloorWindowId = 0;
|
||||
static EWRAM_DATA u16 sElevatorScroll = 0;
|
||||
@@ -76,12 +77,12 @@ static void Task_SuspendListMenu(u8 taskId);
|
||||
static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId);
|
||||
static void Task_CreateMenuRemoveScrollIndicatorArrowPair(u8 taskId);
|
||||
static void Task_ListMenuRemoveScrollIndicatorArrowPair(u8 taskId);
|
||||
static u16 GetStarterPokemon(u16 starterIdx);
|
||||
static u16 GetStarterSpeciesById(u16 starterIdx);
|
||||
static void ChangeBoxPokemonNickname_CB(void);
|
||||
static void ChangePokemonNickname_CB(void);
|
||||
static void Task_RunPokemonLeagueLightingEffect(u8 taskId);
|
||||
static void Task_CancelPokemonLeagueLightingEffect(u8 taskId);
|
||||
static void Task_DoDeoxysRockInteraction(u8 taskId);
|
||||
static void Task_DoDeoxysTriangleInteraction(u8 taskId);
|
||||
static void MoveDeoxysObject(u8 num);
|
||||
static void Task_WaitDeoxysFieldEffect(u8 taskId);
|
||||
static void Task_WingFlapSound(u8 taskId);
|
||||
@@ -92,14 +93,14 @@ static u8 *const sStringVarPtrs[] = {
|
||||
gStringVar3
|
||||
};
|
||||
|
||||
void Special_ShowDiploma(void)
|
||||
void ShowDiploma(void)
|
||||
{
|
||||
sub_8112364();
|
||||
SetMainCallback2(CB2_ShowDiploma);
|
||||
ScriptContext2_Enable();
|
||||
}
|
||||
|
||||
void Special_ForcePlayerOntoBike(void)
|
||||
void ForcePlayerOntoBike(void)
|
||||
{
|
||||
if (gPlayerAvatar.flags & 1)
|
||||
SetPlayerAvatarTransitionFlags(2);
|
||||
@@ -112,7 +113,7 @@ void nullsub_74(void)
|
||||
|
||||
}
|
||||
|
||||
u8 Special_GetPlayerAvatarBike(void)
|
||||
u8 GetPlayerAvatarBike(void)
|
||||
{
|
||||
if (TestPlayerAvatarFlags(4))
|
||||
return 1;
|
||||
@@ -122,24 +123,24 @@ u8 Special_GetPlayerAvatarBike(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Special_ShowStringVar4AsFieldMessage(void)
|
||||
void ShowFieldMessageStringVar4(void)
|
||||
{
|
||||
ShowFieldMessage(gStringVar4);
|
||||
}
|
||||
|
||||
void Special_GetPlayerXY(void)
|
||||
void GetPlayerXY(void)
|
||||
{
|
||||
gSpecialVar_0x8004 = gSaveBlock1Ptr->pos.x;
|
||||
gSpecialVar_0x8005 = gSaveBlock1Ptr->pos.y;
|
||||
}
|
||||
|
||||
u8 Special_GetPlayerTrainerIdOnesDigit(void)
|
||||
u8 GetPlayerTrainerIdOnesDigit(void)
|
||||
{
|
||||
u16 playerId = (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0];
|
||||
return playerId % 10;
|
||||
}
|
||||
|
||||
void Special_BufferBigGuyOrBigGirlString(void)
|
||||
void BufferBigGuyOrBigGirlString(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->playerGender == MALE)
|
||||
StringCopy(gStringVar1, gText_BigGuy);
|
||||
@@ -147,7 +148,7 @@ void Special_BufferBigGuyOrBigGirlString(void)
|
||||
StringCopy(gStringVar1, gText_BigGirl);
|
||||
}
|
||||
|
||||
void Special_BufferSonOrDaughterString(void)
|
||||
void BufferSonOrDaughterString(void)
|
||||
{
|
||||
if (gSaveBlock2Ptr->playerGender == MALE)
|
||||
StringCopy(gStringVar1, gText_Son);
|
||||
@@ -155,17 +156,17 @@ void Special_BufferSonOrDaughterString(void)
|
||||
StringCopy(gStringVar1, gText_Daughter);
|
||||
}
|
||||
|
||||
u8 Special_GetBattleOutcome(void)
|
||||
u8 GetBattleOutcome(void)
|
||||
{
|
||||
return gBattleOutcome;
|
||||
}
|
||||
|
||||
void Special_SetHiddenItemFlag(void)
|
||||
void SetHiddenItemFlag(void)
|
||||
{
|
||||
FlagSet(gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
u8 Special_GetLeadMonFriendship(void)
|
||||
u8 GetLeadMonFriendship(void)
|
||||
{
|
||||
struct Pokemon * pokemon = &gPlayerParty[GetLeadMonIndex()];
|
||||
if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255)
|
||||
@@ -184,13 +185,13 @@ u8 Special_GetLeadMonFriendship(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Special_TownMap(void)
|
||||
void ShowTownMap(void)
|
||||
{
|
||||
sub_8112364();
|
||||
sub_80BFF50(1, CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
}
|
||||
|
||||
bool8 Special_PlayerHasGrassPokemonInParty(void)
|
||||
bool8 PlayerHasGrassPokemonInParty(void)
|
||||
{
|
||||
u8 i;
|
||||
struct Pokemon * pokemon;
|
||||
@@ -211,34 +212,41 @@ bool8 Special_PlayerHasGrassPokemonInParty(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void Special_AnimatePcTurnOn(void)
|
||||
#define tState data[0]
|
||||
#define tTimer data[1]
|
||||
|
||||
void AnimatePcTurnOn(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
if (FuncIsActiveTask(Task_AnimatePcTurnOn) != TRUE)
|
||||
{
|
||||
taskId = CreateTask(Task_AnimatePcTurnOn, 8);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].tTimer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// PC flickers on and off while turning on
|
||||
static void Task_AnimatePcTurnOn(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
if (data[1] == 6)
|
||||
if (tTimer == 6)
|
||||
{
|
||||
PcTurnOnUpdateMetatileId(data[0] & 1);
|
||||
PcTurnOnUpdateMetatileId(tState & 1);
|
||||
DrawWholeMapView();
|
||||
data[1] = 0;
|
||||
data[0]++;
|
||||
if (data[0] == 5)
|
||||
tTimer = 0;
|
||||
tState++;
|
||||
if (tState == 5)
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
data[1]++;
|
||||
tTimer++;
|
||||
}
|
||||
|
||||
static void PcTurnOnUpdateMetatileId(bool16 a0)
|
||||
#undef tState
|
||||
#undef tTimer
|
||||
|
||||
static void PcTurnOnUpdateMetatileId(bool16 flickerOff)
|
||||
{
|
||||
u16 metatileId = 0;
|
||||
s8 deltaX = 0;
|
||||
@@ -260,28 +268,28 @@ static void PcTurnOnUpdateMetatileId(bool16 a0)
|
||||
deltaY = -1;
|
||||
break;
|
||||
}
|
||||
if (a0)
|
||||
if (flickerOff)
|
||||
{
|
||||
if (gSpecialVar_0x8004 == 0)
|
||||
metatileId = 0x62;
|
||||
metatileId = METATILE_Building_PCOff;
|
||||
else if (gSpecialVar_0x8004 == 1)
|
||||
metatileId = 0x28F;
|
||||
metatileId = METATILE_GenericBuilding1_PlayersPCOff;
|
||||
else if (gSpecialVar_0x8004 == 2)
|
||||
metatileId = 0x28F;
|
||||
metatileId = METATILE_GenericBuilding1_PlayersPCOff;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gSpecialVar_0x8004 == 0)
|
||||
metatileId = 0x63;
|
||||
metatileId = METATILE_Building_PCOn;
|
||||
else if (gSpecialVar_0x8004 == 1)
|
||||
metatileId = 0x28A;
|
||||
metatileId = METATILE_GenericBuilding1_PlayersPCOn;
|
||||
else if (gSpecialVar_0x8004 == 2)
|
||||
metatileId = 0x28A;
|
||||
metatileId = METATILE_GenericBuilding1_PlayersPCOn;
|
||||
}
|
||||
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + deltaX + 7, gSaveBlock1Ptr->pos.y + deltaY + 7, metatileId | 0xC00);
|
||||
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + deltaX + 7, gSaveBlock1Ptr->pos.y + deltaY + 7, metatileId | METATILE_COLLISION_MASK);
|
||||
}
|
||||
|
||||
void Special_AnimatePcTurnOff()
|
||||
void AnimatePcTurnOff()
|
||||
{
|
||||
u16 metatileId = 0;
|
||||
s8 deltaX = 0;
|
||||
@@ -304,18 +312,19 @@ void Special_AnimatePcTurnOff()
|
||||
break;
|
||||
}
|
||||
if (gSpecialVar_0x8004 == 0)
|
||||
metatileId = 0x62;
|
||||
metatileId = METATILE_Building_PCOff;
|
||||
else if (gSpecialVar_0x8004 == 1)
|
||||
metatileId = 0x28F;
|
||||
metatileId = METATILE_GenericBuilding1_PlayersPCOff;
|
||||
else if (gSpecialVar_0x8004 == 2)
|
||||
metatileId = 0x28F;
|
||||
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + deltaX + 7, gSaveBlock1Ptr->pos.y + deltaY + 7, metatileId | 0xC00);
|
||||
metatileId = METATILE_GenericBuilding1_PlayersPCOff;
|
||||
MapGridSetMetatileIdAt(gSaveBlock1Ptr->pos.x + deltaX + 7, gSaveBlock1Ptr->pos.y + deltaY + 7, metatileId | METATILE_COLLISION_MASK);
|
||||
DrawWholeMapView();
|
||||
}
|
||||
|
||||
void SpawnCameraObject(void)
|
||||
{
|
||||
u8 objectEventId = SpawnSpecialObjectEventParameterized(OBJECT_EVENT_GFX_YOUNGSTER, 8, 127, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
|
||||
|
||||
u8 objectEventId = SpawnSpecialObjectEventParameterized(OBJ_EVENT_GFX_YOUNGSTER, 8, OBJ_EVENT_ID_CAMERA, gSaveBlock1Ptr->pos.x + 7, gSaveBlock1Ptr->pos.y + 7, 3);
|
||||
gObjectEvents[objectEventId].invisible = TRUE;
|
||||
CameraObjectSetFollowedObjectId(gObjectEvents[objectEventId].spriteId);
|
||||
}
|
||||
@@ -326,7 +335,7 @@ void RemoveCameraObject(void)
|
||||
RemoveObjectEventByLocalIdAndMap(127, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
}
|
||||
|
||||
void Special_BufferEReaderTrainerName5(void)
|
||||
void BufferEReaderTrainerName(void)
|
||||
{
|
||||
CopyEReaderTrainerName5(gStringVar1);
|
||||
}
|
||||
@@ -381,7 +390,7 @@ static const u8 sSlotMachineIndices[] = {
|
||||
5
|
||||
};
|
||||
|
||||
u8 Special_GetRandomSlotMachine(void)
|
||||
u8 GetRandomSlotMachineId(void)
|
||||
{
|
||||
u16 rval = Random() % NELEMS(sSlotMachineIndices);
|
||||
return sSlotMachineIndices[rval];
|
||||
@@ -404,7 +413,7 @@ void GiveLeadMonEffortRibbon(void)
|
||||
SetMonData(&gPlayerParty[leadMonIdx], MON_DATA_EFFORT_RIBBON, ¶m);
|
||||
}
|
||||
|
||||
bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void)
|
||||
bool8 AreLeadMonEVsMaxedOut(void)
|
||||
{
|
||||
u8 leadMonIndex = GetLeadMonIndex();
|
||||
if (GetMonEVCount(&gPlayerParty[leadMonIndex]) >= 510)
|
||||
@@ -413,9 +422,9 @@ bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_IsStarterFirstStageInParty(void)
|
||||
bool8 IsStarterFirstStageInParty(void)
|
||||
{
|
||||
u16 species = GetStarterPokemon(VarGet(VAR_STARTER_MON));
|
||||
u16 species = GetStarterSpeciesById(VarGet(VAR_STARTER_MON));
|
||||
u8 partyCount = CalculatePlayerPartyCount();
|
||||
u8 i;
|
||||
for (i = 0; i < partyCount; i++)
|
||||
@@ -426,7 +435,7 @@ bool8 Special_IsStarterFirstStageInParty(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_IsThereRoomInAnyBoxForMorePokemon(void)
|
||||
bool8 IsThereRoomInAnyBoxForMorePokemon(void)
|
||||
{
|
||||
u16 i;
|
||||
u16 j;
|
||||
@@ -441,7 +450,7 @@ bool8 Special_IsThereRoomInAnyBoxForMorePokemon(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_CheckPartyPokerus(void)
|
||||
bool8 IsPokerusInParty(void)
|
||||
{
|
||||
if (!CheckPartyPokerus(gPlayerParty, 0x3F))
|
||||
return FALSE;
|
||||
@@ -455,7 +464,7 @@ bool8 Special_CheckPartyPokerus(void)
|
||||
#define tDuration data[3]
|
||||
#define tYtrans data[4]
|
||||
|
||||
void Special_ShakeScreen(void)
|
||||
void ShakeScreen(void)
|
||||
{
|
||||
/*
|
||||
* 0x8004 = x translation
|
||||
@@ -518,12 +527,12 @@ u8 GetLeadMonIndex(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
u16 Special_GetSpeciesOfPartySlot_x8004(void)
|
||||
u16 GetPartyMonSpecies(void)
|
||||
{
|
||||
return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL);
|
||||
}
|
||||
|
||||
bool8 Special_IsMonOTNameNotPlayers(void)
|
||||
bool8 IsMonOTNameNotPlayers(void)
|
||||
{
|
||||
GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_NAME, gStringVar1);
|
||||
|
||||
@@ -533,7 +542,8 @@ bool8 Special_IsMonOTNameNotPlayers(void)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void nullsub_75(void)
|
||||
// Used to nop all the unused specials from RS
|
||||
void NullFieldSpecial(void)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -545,7 +555,7 @@ void sub_80CADC4(void)
|
||||
sub_809D424();
|
||||
}
|
||||
|
||||
void Special_SetVermilionTrashCans(void)
|
||||
void SetVermilionTrashCans(void)
|
||||
{
|
||||
u16 idx = (Random() % 15) + 1;
|
||||
gSpecialVar_0x8004 = idx;
|
||||
@@ -672,10 +682,10 @@ void IncrementResortGorgeousStepCounter(void)
|
||||
}
|
||||
}
|
||||
|
||||
void Special_SampleResortGorgeousMonAndReward(void)
|
||||
void SampleResortGorgeousMonAndReward(void)
|
||||
{
|
||||
u16 var4036 = VarGet(VAR_RESORT_GORGEOUS_REQUESTED_MON);
|
||||
if (var4036 == SPECIES_NONE || var4036 == 0xFFFF)
|
||||
u16 requestedSpecies = VarGet(VAR_RESORT_GORGEOUS_REQUESTED_MON);
|
||||
if (requestedSpecies == SPECIES_NONE || requestedSpecies == 0xFFFF)
|
||||
{
|
||||
VarSet(VAR_RESORT_GORGEOUS_REQUESTED_MON, SampleResortGorgeousMon());
|
||||
VarSet(VAR_RESORT_GORGEOUS_REWARD, SampleResortGorgeousReward());
|
||||
@@ -712,7 +722,7 @@ static u16 SampleResortGorgeousReward(void)
|
||||
return sResortGorgeousDeluxeRewards[Random() % NELEMS(sResortGorgeousDeluxeRewards)];
|
||||
}
|
||||
|
||||
bool8 Special_CheckAddCoins(void)
|
||||
bool8 CheckAddCoins(void)
|
||||
{
|
||||
if (gSpecialVar_Result + gSpecialVar_0x8006 > 9999)
|
||||
return FALSE;
|
||||
@@ -769,15 +779,39 @@ static const u8 sUnused_83F5B84[] = {
|
||||
};
|
||||
|
||||
static const u16 sElevatorWindowMetatilesGoingUp[][3] = {
|
||||
{0x2e8, 0x2e9, 0x2ea},
|
||||
{0x2f0, 0x2f1, 0x2f2},
|
||||
{0x2f8, 0x2f9, 0x2fa}
|
||||
{
|
||||
METATILE_SilphCo_ElevatorWindow_Top0,
|
||||
METATILE_SilphCo_ElevatorWindow_Top1,
|
||||
METATILE_SilphCo_ElevatorWindow_Top2
|
||||
},
|
||||
{
|
||||
METATILE_SilphCo_ElevatorWindow_Mid0,
|
||||
METATILE_SilphCo_ElevatorWindow_Mid1,
|
||||
METATILE_SilphCo_ElevatorWindow_Mid2
|
||||
},
|
||||
{
|
||||
METATILE_SilphCo_ElevatorWindow_Bottom0,
|
||||
METATILE_SilphCo_ElevatorWindow_Bottom1,
|
||||
METATILE_SilphCo_ElevatorWindow_Bottom2
|
||||
}
|
||||
};
|
||||
|
||||
static const u16 sElevatorWindowMetatilesGoingDown[][3] = {
|
||||
{0x2e8, 0x2ea, 0x2e9},
|
||||
{0x2f0, 0x2f2, 0x2f1},
|
||||
{0x2f8, 0x2fa, 0x2f9}
|
||||
{
|
||||
METATILE_SilphCo_ElevatorWindow_Top0,
|
||||
METATILE_SilphCo_ElevatorWindow_Top2,
|
||||
METATILE_SilphCo_ElevatorWindow_Top1
|
||||
},
|
||||
{
|
||||
METATILE_SilphCo_ElevatorWindow_Mid0,
|
||||
METATILE_SilphCo_ElevatorWindow_Mid2,
|
||||
METATILE_SilphCo_ElevatorWindow_Mid1
|
||||
},
|
||||
{
|
||||
METATILE_SilphCo_ElevatorWindow_Bottom0,
|
||||
METATILE_SilphCo_ElevatorWindow_Bottom2,
|
||||
METATILE_SilphCo_ElevatorWindow_Bottom1
|
||||
}
|
||||
};
|
||||
|
||||
static const u8 sElevatorAnimationDuration[] = {
|
||||
@@ -804,7 +838,7 @@ static const u8 sElevatorWindowAnimDuration[] = {
|
||||
27
|
||||
};
|
||||
|
||||
void Special_GetElevatorFloor(void)
|
||||
void GetElevatorFloor(void)
|
||||
{
|
||||
u16 floor = 4;
|
||||
if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(ROCKET_HIDEOUT_B1F))
|
||||
@@ -876,22 +910,22 @@ void Special_GetElevatorFloor(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_1F))
|
||||
if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(TRAINER_TOWER_1F))
|
||||
{
|
||||
switch (gSaveBlock1Ptr->warp2.mapNum)
|
||||
{
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_1F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_2F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_3F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_4F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_5F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_6F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_7F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_8F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_ROOF):
|
||||
case MAP_NUM(TRAINER_TOWER_1F):
|
||||
case MAP_NUM(TRAINER_TOWER_2F):
|
||||
case MAP_NUM(TRAINER_TOWER_3F):
|
||||
case MAP_NUM(TRAINER_TOWER_4F):
|
||||
case MAP_NUM(TRAINER_TOWER_5F):
|
||||
case MAP_NUM(TRAINER_TOWER_6F):
|
||||
case MAP_NUM(TRAINER_TOWER_7F):
|
||||
case MAP_NUM(TRAINER_TOWER_8F):
|
||||
case MAP_NUM(TRAINER_TOWER_ROOF):
|
||||
floor = 15;
|
||||
break;
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY):
|
||||
case MAP_NUM(TRAINER_TOWER_LOBBY):
|
||||
floor = 3;
|
||||
break;
|
||||
}
|
||||
@@ -899,7 +933,7 @@ void Special_GetElevatorFloor(void)
|
||||
VarSet(VAR_ELEVATOR_FLOOR, floor);
|
||||
}
|
||||
|
||||
u16 Special_InitElevatorFloorSelectMenuPos(void)
|
||||
u16 InitElevatorFloorSelectMenuPos(void)
|
||||
{
|
||||
sElevatorScroll = 0;
|
||||
sElevatorCursorPos = 0;
|
||||
@@ -992,23 +1026,23 @@ u16 Special_InitElevatorFloorSelectMenuPos(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_1F))
|
||||
if (gSaveBlock1Ptr->warp2.mapGroup == MAP_GROUP(TRAINER_TOWER_1F))
|
||||
{
|
||||
switch (gSaveBlock1Ptr->warp2.mapNum)
|
||||
{
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_1F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_2F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_3F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_4F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_5F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_6F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_7F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_8F):
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_ROOF):
|
||||
case MAP_NUM(TRAINER_TOWER_1F):
|
||||
case MAP_NUM(TRAINER_TOWER_2F):
|
||||
case MAP_NUM(TRAINER_TOWER_3F):
|
||||
case MAP_NUM(TRAINER_TOWER_4F):
|
||||
case MAP_NUM(TRAINER_TOWER_5F):
|
||||
case MAP_NUM(TRAINER_TOWER_6F):
|
||||
case MAP_NUM(TRAINER_TOWER_7F):
|
||||
case MAP_NUM(TRAINER_TOWER_8F):
|
||||
case MAP_NUM(TRAINER_TOWER_ROOF):
|
||||
sElevatorScroll = 0;
|
||||
sElevatorCursorPos = 0;
|
||||
break;
|
||||
case MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY):
|
||||
case MAP_NUM(TRAINER_TOWER_LOBBY):
|
||||
sElevatorScroll = 0;
|
||||
sElevatorCursorPos = 1;
|
||||
break;
|
||||
@@ -1017,7 +1051,7 @@ u16 Special_InitElevatorFloorSelectMenuPos(void)
|
||||
return sElevatorCursorPos;
|
||||
}
|
||||
|
||||
void Special_AnimateElevator(void)
|
||||
void AnimateElevator(void)
|
||||
{
|
||||
u16 nfloors;
|
||||
s16 *data = gTasks[CreateTask(Task_ElevatorShake, 9)].data;
|
||||
@@ -1062,7 +1096,7 @@ static void Task_ElevatorShake(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void Special_DrawElevatorCurrentFloorWindow(void)
|
||||
void DrawElevatorCurrentFloorWindow(void)
|
||||
{
|
||||
const u8 *floorname;
|
||||
u32 strwidth;
|
||||
@@ -1080,7 +1114,7 @@ void Special_DrawElevatorCurrentFloorWindow(void)
|
||||
}
|
||||
}
|
||||
|
||||
void Special_CloseElevatorCurrentFloorWindow(void)
|
||||
void CloseElevatorCurrentFloorWindow(void)
|
||||
{
|
||||
ClearStdWindowAndFrameToTransparent(sElevatorCurrentFloorWindowId, TRUE);
|
||||
RemoveWindow(sElevatorCurrentFloorWindowId);
|
||||
@@ -1113,7 +1147,7 @@ static void Task_AnimateElevatorWindowView(u8 taskId)
|
||||
{
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
MapGridSetMetatileIdAt(j + 8, i + 7, sElevatorWindowMetatilesGoingUp[i][data[0] % 3] | 0xC00);
|
||||
MapGridSetMetatileIdAt(j + 8, i + 7, sElevatorWindowMetatilesGoingUp[i][data[0] % 3] | METATILE_COLLISION_MASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1123,7 +1157,7 @@ static void Task_AnimateElevatorWindowView(u8 taskId)
|
||||
{
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
MapGridSetMetatileIdAt(j + 8, i + 7, sElevatorWindowMetatilesGoingDown[i][data[0] % 3] | 0xC00);
|
||||
MapGridSetMetatileIdAt(j + 8, i + 7, sElevatorWindowMetatilesGoingDown[i][data[0] % 3] | METATILE_COLLISION_MASK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1135,7 +1169,7 @@ static void Task_AnimateElevatorWindowView(u8 taskId)
|
||||
data[1]++;
|
||||
}
|
||||
|
||||
void Special_ListMenu(void)
|
||||
void ListMenu(void)
|
||||
{
|
||||
u8 taskId;
|
||||
struct Task * task;
|
||||
@@ -1439,7 +1473,7 @@ static void Task_SuspendListMenu(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void Special_ReturnToListMenu(void)
|
||||
void ReturnToListMenu(void)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(Task_SuspendListMenu);
|
||||
if (taskId == 0xFF)
|
||||
@@ -1483,31 +1517,31 @@ static void Task_ListMenuRemoveScrollIndicatorArrowPair(u8 taskId)
|
||||
RemoveScrollIndicatorArrowPair(task->data[12]);
|
||||
}
|
||||
|
||||
void Special_ForcePlayerToStartSurfing(void)
|
||||
void ForcePlayerToStartSurfing(void)
|
||||
{
|
||||
HelpSystem_SetSomeVariable2(22);
|
||||
SetHelpContext(HELPCONTEXT_SURFING);
|
||||
SetPlayerAvatarTransitionFlags(8);
|
||||
}
|
||||
|
||||
static const u16 sStarterMon[] = {
|
||||
static const u16 sStarterSpecies[] = {
|
||||
SPECIES_BULBASAUR,
|
||||
SPECIES_SQUIRTLE,
|
||||
SPECIES_CHARMANDER
|
||||
};
|
||||
|
||||
static u16 GetStarterPokemon(u16 idx)
|
||||
static u16 GetStarterSpeciesById(u16 idx)
|
||||
{
|
||||
if (idx >= NELEMS(sStarterMon))
|
||||
if (idx >= NELEMS(sStarterSpecies))
|
||||
idx = 0;
|
||||
return sStarterMon[idx];
|
||||
return sStarterSpecies[idx];
|
||||
}
|
||||
|
||||
u16 ScrSpecial_GetStarter(void)
|
||||
u16 GetStarterSpecies(void)
|
||||
{
|
||||
return GetStarterPokemon(VarGet(VAR_STARTER_MON));
|
||||
return GetStarterSpeciesById(VarGet(VAR_STARTER_MON));
|
||||
}
|
||||
|
||||
void Special_SetSeenMon(void)
|
||||
void SetSeenMon(void)
|
||||
{
|
||||
GetSetPokedexFlag(SpeciesToNationalPokedexNum(gSpecialVar_0x8004), 2);
|
||||
}
|
||||
@@ -1528,8 +1562,8 @@ u8 ContextNpcGetTextColor(void)
|
||||
else
|
||||
{
|
||||
gfxId = gObjectEvents[gSelectedObjectEvent].graphicsId;
|
||||
if (gfxId >= OBJECT_EVENT_GFX_VAR_0)
|
||||
gfxId = VarGetObjectEventGraphicsId(gfxId - OBJECT_EVENT_GFX_VAR_0);
|
||||
if (gfxId >= OBJ_EVENT_GFX_VAR_0)
|
||||
gfxId = VarGetObjectEventGraphicsId(gfxId - OBJ_EVENT_GFX_VAR_0);
|
||||
return GetColorFromTextColorTable(gfxId);
|
||||
}
|
||||
}
|
||||
@@ -1548,7 +1582,7 @@ static bool8 HasMonBeenRenamed(u8 idx)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_HasLeadMonBeenRenamed(void)
|
||||
bool8 HasLeadMonBeenRenamed(void)
|
||||
{
|
||||
return HasMonBeenRenamed(GetLeadMonIndex());
|
||||
}
|
||||
@@ -1604,7 +1638,7 @@ void ChangeBoxPokemonNickname(void)
|
||||
species = GetBoxMonData(pokemon, MON_DATA_SPECIES, NULL);
|
||||
gender = GetBoxMonGender(pokemon);
|
||||
personality = GetBoxMonData(pokemon, MON_DATA_PERSONALITY, NULL);
|
||||
DoNamingScreen(3, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB);
|
||||
DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangeBoxPokemonNickname_CB);
|
||||
}
|
||||
|
||||
static void ChangeBoxPokemonNickname_CB(void)
|
||||
@@ -1624,7 +1658,7 @@ void ChangePokemonNickname(void)
|
||||
species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
|
||||
gender = GetMonGender(&gPlayerParty[gSpecialVar_0x8004]);
|
||||
personality = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL);
|
||||
DoNamingScreen(3, gStringVar2, species, gender, personality, ChangePokemonNickname_CB);
|
||||
DoNamingScreen(NAMING_SCREEN_NAME_RATER, gStringVar2, species, gender, personality, ChangePokemonNickname_CB);
|
||||
}
|
||||
|
||||
static void ChangePokemonNickname_CB(void)
|
||||
@@ -1633,13 +1667,13 @@ static void ChangePokemonNickname_CB(void)
|
||||
CB2_ReturnToFieldContinueScriptPlayMapMusic();
|
||||
}
|
||||
|
||||
void Special_GetMonNickname(void)
|
||||
void BufferMonNickname(void)
|
||||
{
|
||||
GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
|
||||
StringGetEnd10(gStringVar1);
|
||||
}
|
||||
|
||||
void Special_IsMonOTIDNotPlayers(void)
|
||||
void IsMonOTIDNotPlayers(void)
|
||||
{
|
||||
if (GetPlayerTrainerId() == GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_ID, NULL))
|
||||
gSpecialVar_Result = FALSE;
|
||||
@@ -1672,7 +1706,7 @@ u8 GetUnlockedSeviiAreas(void)
|
||||
return result;
|
||||
}
|
||||
|
||||
void Special_UpdateTrainerCardPhotoIcons(void)
|
||||
void UpdateTrainerCardPhotoIcons(void)
|
||||
{
|
||||
u16 species[PARTY_SIZE];
|
||||
u32 personality[PARTY_SIZE];
|
||||
@@ -1695,7 +1729,7 @@ void Special_UpdateTrainerCardPhotoIcons(void)
|
||||
VarSet(VAR_TRAINER_CARD_MON_ICON_TINT_IDX, gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
u16 Special_StickerLadyGetBragFlags(void)
|
||||
u16 StickerManGetBragFlags(void)
|
||||
{
|
||||
u16 result = 0;
|
||||
u32 numEggs;
|
||||
@@ -1729,7 +1763,7 @@ u16 GetHiddenItemAttr(u32 hiddenItem, u8 attr)
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool8 Special_PlayerPartyContainsSpecies(void)
|
||||
bool8 DoesPlayerPartyContainSpecies(void)
|
||||
{
|
||||
u8 partyCount = CalculatePlayerPartyCount();
|
||||
u8 i;
|
||||
@@ -1756,7 +1790,7 @@ static const u8 sMartMaps[][3] = {
|
||||
{MAP_GROUP(SIX_ISLAND_MART), MAP_NUM(SIX_ISLAND_MART), 1}
|
||||
};
|
||||
|
||||
u8 Special_GetMartClerkObjectId(void)
|
||||
u8 GetMartClerkObjectId(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < NELEMS(sMartMaps); i++)
|
||||
@@ -1915,20 +1949,20 @@ void sub_80CC59C(void)
|
||||
}
|
||||
}
|
||||
|
||||
u16 Special_BattleCardAction(void)
|
||||
u16 BattleCardAction(void)
|
||||
{
|
||||
switch (gSpecialVar_Result)
|
||||
{
|
||||
case 0:
|
||||
return sub_81445C0(3);
|
||||
return MEvent_GetBattleCardCount(3);
|
||||
case 1:
|
||||
return sub_81445C0(4);
|
||||
return MEvent_GetBattleCardCount(4);
|
||||
case 2:
|
||||
return sub_81445C0(0);
|
||||
return MEvent_GetBattleCardCount(0);
|
||||
case 3:
|
||||
return sub_81445C0(1);
|
||||
return MEvent_GetBattleCardCount(1);
|
||||
case 4:
|
||||
return sub_81445C0(2);
|
||||
return MEvent_GetBattleCardCount(2);
|
||||
default:
|
||||
AGB_ASSERT_EX(0, ABSPATH("scr_tool.c"), 3873);
|
||||
return 0;
|
||||
@@ -2016,7 +2050,7 @@ bool8 sub_80CC87C(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_ItemIsTM_GetMoveName(void)
|
||||
bool8 BufferTMHMMoveName(void)
|
||||
{
|
||||
// 8004 = item ID
|
||||
if (gSpecialVar_0x8004 >= ITEM_TM01 && gSpecialVar_0x8004 <= ITEM_HM08)
|
||||
@@ -2035,7 +2069,7 @@ void RunMassageCooldownStepCounter(void)
|
||||
VarSet(VAR_MASSAGE_COOLDOWN_STEP_COUNTER, count + 1);
|
||||
}
|
||||
|
||||
void Special_DaisyMassageServices(void)
|
||||
void DaisyMassageServices(void)
|
||||
{
|
||||
AdjustFriendship(&gPlayerParty[gSpecialVar_0x8004], 6);
|
||||
VarSet(VAR_MASSAGE_COOLDOWN_STEP_COUNTER, 0);
|
||||
@@ -2093,7 +2127,7 @@ static const u8 sChampionRoomLightingTimers[] = {
|
||||
8
|
||||
};
|
||||
|
||||
void Special_PokemonLeagueLightingEffect(void)
|
||||
void DoPokemonLeagueLightingEffect(void)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_RunPokemonLeagueLightingEffect, 8);
|
||||
s16 *data = gTasks[taskId].data;
|
||||
@@ -2183,36 +2217,36 @@ static const u8 sCapeBrinkCompatibleSpecies[] = {
|
||||
SPECIES_BLASTOISE
|
||||
};
|
||||
|
||||
bool8 Special_CapeBrinkGetMoveToTeachLeadPokemon(void)
|
||||
bool8 CapeBrinkGetMoveToTeachLeadPokemon(void)
|
||||
{
|
||||
// Returns:
|
||||
// 8005 = Move tutor index
|
||||
// 8006 = Num moves known by lead mon
|
||||
// 8007 = Index of lead mon
|
||||
// to specialvar = whether a move can be taught in the first place
|
||||
u8 r7 = 0;
|
||||
u8 r6 = 0;
|
||||
u8 r8 = GetLeadMonIndex();
|
||||
u8 r4;
|
||||
gSpecialVar_0x8007 = r8;
|
||||
for (r4 = 0; r4 < NELEMS(sCapeBrinkCompatibleSpecies); r4++)
|
||||
u8 tutorMonId = 0;
|
||||
u8 numMovesKnown = 0;
|
||||
u8 leadMonSlot = GetLeadMonIndex();
|
||||
u8 i;
|
||||
gSpecialVar_0x8007 = leadMonSlot;
|
||||
for (i = 0; i < NELEMS(sCapeBrinkCompatibleSpecies); i++)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_SPECIES2, NULL) == sCapeBrinkCompatibleSpecies[r4])
|
||||
if (GetMonData(&gPlayerParty[leadMonSlot], MON_DATA_SPECIES2, NULL) == sCapeBrinkCompatibleSpecies[i])
|
||||
{
|
||||
r7 = r4;
|
||||
tutorMonId = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (r4 == NELEMS(sCapeBrinkCompatibleSpecies) || GetMonData(&gPlayerParty[r8], MON_DATA_FRIENDSHIP) != 255)
|
||||
if (i == NELEMS(sCapeBrinkCompatibleSpecies) || GetMonData(&gPlayerParty[leadMonSlot], MON_DATA_FRIENDSHIP) != 255)
|
||||
return FALSE;
|
||||
if (r7 == 0)
|
||||
if (tutorMonId == 0)
|
||||
{
|
||||
StringCopy(gStringVar2, gMoveNames[MOVE_FRENZY_PLANT]);
|
||||
gSpecialVar_0x8005 = MOVETUTOR_FRENZY_PLANT;
|
||||
if (FlagGet(FLAG_TUTOR_FRENZY_PLANT) == TRUE)
|
||||
return FALSE;
|
||||
}
|
||||
else if (r7 == 1)
|
||||
else if (tutorMonId == 1)
|
||||
{
|
||||
StringCopy(gStringVar2, gMoveNames[MOVE_BLAST_BURN]);
|
||||
gSpecialVar_0x8005 = MOVETUTOR_BLAST_BURN;
|
||||
@@ -2226,21 +2260,21 @@ bool8 Special_CapeBrinkGetMoveToTeachLeadPokemon(void)
|
||||
if (FlagGet(FLAG_TUTOR_HYDRO_CANNON) == TRUE)
|
||||
return FALSE;
|
||||
}
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE1) != MOVE_NONE)
|
||||
r6++;
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE2) != MOVE_NONE)
|
||||
r6++;
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE3) != MOVE_NONE)
|
||||
r6++;
|
||||
if (GetMonData(&gPlayerParty[r8], MON_DATA_MOVE4) != MOVE_NONE)
|
||||
r6++;
|
||||
gSpecialVar_0x8006 = r6;
|
||||
if (GetMonData(&gPlayerParty[leadMonSlot], MON_DATA_MOVE1) != MOVE_NONE)
|
||||
numMovesKnown++;
|
||||
if (GetMonData(&gPlayerParty[leadMonSlot], MON_DATA_MOVE2) != MOVE_NONE)
|
||||
numMovesKnown++;
|
||||
if (GetMonData(&gPlayerParty[leadMonSlot], MON_DATA_MOVE3) != MOVE_NONE)
|
||||
numMovesKnown++;
|
||||
if (GetMonData(&gPlayerParty[leadMonSlot], MON_DATA_MOVE4) != MOVE_NONE)
|
||||
numMovesKnown++;
|
||||
gSpecialVar_0x8006 = numMovesKnown;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 Special_HasLearnedAllMovesFromCapeBrinkTutor(void)
|
||||
bool8 HasLearnedAllMovesFromCapeBrinkTutor(void)
|
||||
{
|
||||
// 8005 is set by Special_CapeBrinkGetMoveToTeachLeadPokemon
|
||||
// 8005 is set by CapeBrinkGetMoveToTeachLeadPokemon
|
||||
u8 r4 = 0;
|
||||
if (gSpecialVar_0x8005 == MOVETUTOR_FRENZY_PLANT)
|
||||
FlagSet(FLAG_TUTOR_FRENZY_PLANT);
|
||||
@@ -2276,7 +2310,7 @@ bool8 CutMoveRuinValleyCheck(void)
|
||||
|
||||
void CutMoveOpenDottedHoleDoor(void)
|
||||
{
|
||||
MapGridSetMetatileIdAt(31, 31, 0x358);
|
||||
MapGridSetMetatileIdAt(31, 31, METATILE_SeviiIslands67_DottedHoleDoor_Open);
|
||||
DrawWholeMapView();
|
||||
PlaySE(SE_BAN);
|
||||
FlagSet(FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE);
|
||||
@@ -2324,12 +2358,12 @@ static const u8 sDeoxysStepCaps[] = {
|
||||
3
|
||||
};
|
||||
|
||||
void DoDeoxysRockInteraction(void)
|
||||
void DoDeoxysTriangleInteraction(void)
|
||||
{
|
||||
CreateTask(Task_DoDeoxysRockInteraction, 8);
|
||||
CreateTask(Task_DoDeoxysTriangleInteraction, 8);
|
||||
}
|
||||
|
||||
static void Task_DoDeoxysRockInteraction(u8 taskId)
|
||||
static void Task_DoDeoxysTriangleInteraction(u8 taskId)
|
||||
{
|
||||
u16 r5;
|
||||
u16 r6;
|
||||
@@ -2389,13 +2423,13 @@ static void MoveDeoxysObject(u8 num)
|
||||
gFieldEffectArguments[5] = 60;
|
||||
else
|
||||
gFieldEffectArguments[5] = 5;
|
||||
FieldEffectStart(FLDEFF_UNK_43);
|
||||
FieldEffectStart(FLDEFF_MOVE_DEOXYS_ROCK);
|
||||
Overworld_SetMapObjTemplateCoords(1, sDeoxysCoords[num][0], sDeoxysCoords[num][1]);
|
||||
}
|
||||
|
||||
static void Task_WaitDeoxysFieldEffect(u8 taskId)
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_UNK_43))
|
||||
if (!FieldEffectActiveListContains(FLDEFF_MOVE_DEOXYS_ROCK))
|
||||
{
|
||||
EnableBothScriptContexts();
|
||||
DestroyTask(taskId);
|
||||
@@ -2415,14 +2449,14 @@ void BirthIslandDeoxysStepCounter(void)
|
||||
}
|
||||
}
|
||||
|
||||
void Special_SetDeoxysTriangleObjectPal(void)
|
||||
void SetDeoxysTrianglePalette(void)
|
||||
{
|
||||
u8 num = VarGet(VAR_DEOXYS_INTERACTION_NUM);
|
||||
LoadPalette(sDeoxysObjectPals[num], 0x1A0, 0x08);
|
||||
sub_8083598(10);
|
||||
}
|
||||
|
||||
bool8 Special_BadEggInParty(void)
|
||||
bool8 IsBadEggInParty(void)
|
||||
{
|
||||
u8 partyCount = CalculatePlayerPartyCount();
|
||||
u8 i;
|
||||
@@ -2434,15 +2468,15 @@ bool8 Special_BadEggInParty(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 Special_PlayerIsNotInTrainerTowerLobby(void)
|
||||
bool8 IsPlayerNotInTrainerTowerLobby(void)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_LOBBY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY))
|
||||
if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_TOWER_LOBBY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_TOWER_LOBBY))
|
||||
return FALSE;
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void Special_BrailleCursorToggle(void)
|
||||
void BrailleCursorToggle(void)
|
||||
{
|
||||
// 8004 = x - 27
|
||||
// 8005 = y
|
||||
@@ -2458,14 +2492,15 @@ void Special_BrailleCursorToggle(void)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 Special_PlayerPartyContainsSpeciesWithPlayerID(void)
|
||||
bool8 PlayerPartyContainsSpeciesWithPlayerID(void)
|
||||
{
|
||||
// 8004 = species
|
||||
u8 playerCount = CalculatePlayerPartyCount();
|
||||
u8 i;
|
||||
for (i = 0; i < playerCount; i++)
|
||||
{
|
||||
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == gSpecialVar_0x8004 && GetPlayerTrainerId() == GetMonData(&gPlayerParty[i], MON_DATA_OT_ID, NULL))
|
||||
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == gSpecialVar_0x8004
|
||||
&& GetPlayerTrainerId() == GetMonData(&gPlayerParty[i], MON_DATA_OT_ID, NULL))
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
@@ -2475,7 +2510,7 @@ bool8 Special_PlayerPartyContainsSpeciesWithPlayerID(void)
|
||||
* Determines which of Lorelei's doll collection to show
|
||||
* based on how many times you've entered the Hall of Fame.
|
||||
*/
|
||||
void Special_ComputeLoreleiDollCollection(void)
|
||||
void UpdateLoreleiDollCollection(void)
|
||||
{
|
||||
u32 numHofClears = GetGameStat(GAME_STAT_ENTERED_HOF);
|
||||
if (numHofClears >= 25)
|
||||
@@ -2498,7 +2533,7 @@ void Special_ComputeLoreleiDollCollection(void)
|
||||
}
|
||||
}
|
||||
|
||||
void Special_LoopWingFlapSound(void)
|
||||
void LoopWingFlapSound(void)
|
||||
{
|
||||
// 8004 = Num flaps
|
||||
// 8005 = Frame delay between flaps
|
||||
|
||||
+25
-21
@@ -11,10 +11,14 @@
|
||||
#include "script.h"
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "constants/field_tasks.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/metatile_labels.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/vars.h"
|
||||
|
||||
// TODO: Metatile IDs in this file
|
||||
|
||||
static void DummyPerStepCallback(u8 taskId);
|
||||
static void AshGrassPerStepCallback(u8 taskId);
|
||||
static void IcefallCaveIcePerStepCallback(u8 taskId);
|
||||
@@ -22,27 +26,27 @@ static void CrackedFloorPerStepCallback(u8 taskId);
|
||||
|
||||
static const TaskFunc sPerStepCallbacks[] =
|
||||
{
|
||||
DummyPerStepCallback,
|
||||
AshGrassPerStepCallback,
|
||||
DummyPerStepCallback,
|
||||
DummyPerStepCallback,
|
||||
IcefallCaveIcePerStepCallback,
|
||||
DummyPerStepCallback,
|
||||
DummyPerStepCallback,
|
||||
CrackedFloorPerStepCallback
|
||||
[STEP_CB_DUMMY] = DummyPerStepCallback,
|
||||
[STEP_CB_ASH] = AshGrassPerStepCallback,
|
||||
[STEP_CB_FORTREE_BRIDGE] = DummyPerStepCallback,
|
||||
[STEP_CB_PACIFIDLOG_BRIDGE] = DummyPerStepCallback,
|
||||
[STEP_CB_ICE] = IcefallCaveIcePerStepCallback,
|
||||
[STEP_CB_TRUCK] = DummyPerStepCallback,
|
||||
[STEP_CB_SECRET_BASE] = DummyPerStepCallback,
|
||||
[STEP_CB_CRACKED_FLOOR] = CrackedFloorPerStepCallback
|
||||
};
|
||||
|
||||
static const u8 sIcefallCaveIceTileCoords[][2] =
|
||||
{
|
||||
{ 0x08, 0x03 },
|
||||
{ 0x0a, 0x05 },
|
||||
{ 0x0f, 0x05 },
|
||||
{ 0x08, 0x09 },
|
||||
{ 0x09, 0x09 },
|
||||
{ 0x10, 0x09 },
|
||||
{ 0x08, 0x0a },
|
||||
{ 0x09, 0x0a },
|
||||
{ 0x08, 0x0e }
|
||||
{ 8, 3 },
|
||||
{ 10, 5 },
|
||||
{ 15, 5 },
|
||||
{ 8, 9 },
|
||||
{ 9, 9 },
|
||||
{ 16, 9 },
|
||||
{ 8, 10 },
|
||||
{ 9, 10 },
|
||||
{ 8, 14 }
|
||||
};
|
||||
|
||||
static void Task_RunPerStepCallback(u8 taskId)
|
||||
@@ -134,7 +138,7 @@ static void MarkIcefallCaveCoordVisited(s16 x, s16 y)
|
||||
}
|
||||
}
|
||||
|
||||
void Special_SetIcefallCaveCrackedIceMetatiles(void)
|
||||
void SetIcefallCaveCrackedIceMetatiles(void)
|
||||
{
|
||||
u8 i = 0;
|
||||
for (; i < NELEMS(sIcefallCaveIceTileCoords); ++i)
|
||||
@@ -143,7 +147,7 @@ void Special_SetIcefallCaveCrackedIceMetatiles(void)
|
||||
{
|
||||
int x = sIcefallCaveIceTileCoords[i][0] + 7;
|
||||
int y = sIcefallCaveIceTileCoords[i][1] + 7;
|
||||
MapGridSetMetatileIdAt(x, y, 0x35a);
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_SeafoamIslands_CrackedIce);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -196,7 +200,7 @@ static void IcefallCaveIcePerStepCallback(u8 taskId)
|
||||
x = data[4];
|
||||
y = data[5];
|
||||
PlaySE(SE_RU_BARI);
|
||||
MapGridSetMetatileIdAt(x, y, 0x35a);
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_SeafoamIslands_CrackedIce);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
data[1] = 1;
|
||||
}
|
||||
@@ -211,7 +215,7 @@ static void IcefallCaveIcePerStepCallback(u8 taskId)
|
||||
x = data[4];
|
||||
y = data[5];
|
||||
PlaySE(SE_RU_GASYAN);
|
||||
MapGridSetMetatileIdAt(x, y, 0x35b);
|
||||
MapGridSetMetatileIdAt(x, y, METATILE_SeafoamIslands_IceHole);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
VarSet(VAR_TEMP_1, 1);
|
||||
data[1] = 1;
|
||||
|
||||
+59
-59
@@ -3,7 +3,6 @@
|
||||
#include "palette.h"
|
||||
#include "overworld.h"
|
||||
#include "script.h"
|
||||
#include "menu.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "quest_log.h"
|
||||
#include "fieldmap.h"
|
||||
@@ -18,38 +17,39 @@ struct ConnectionFlags
|
||||
u8 east:1;
|
||||
};
|
||||
|
||||
void sub_8058A00(struct MapHeader *mapHeader);
|
||||
void map_copy_with_padding(u16 *map, u16 width, u16 height);
|
||||
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader);
|
||||
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
void LoadSavedMapView(void);
|
||||
struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y);
|
||||
bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection);
|
||||
bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset);
|
||||
static void InitMapLayoutData(struct MapHeader *mapHeader);
|
||||
static void map_copy_with_padding(u16 *map, u16 width, u16 height);
|
||||
static void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader);
|
||||
static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset);
|
||||
static void LoadSavedMapView(void);
|
||||
static struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y);
|
||||
static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection);
|
||||
static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset);
|
||||
|
||||
struct BackupMapLayout gBackupMapLayout;
|
||||
EWRAM_DATA u16 gBackupMapData[VIRTUAL_MAP_SIZE] = {};
|
||||
EWRAM_DATA struct MapHeader gMapHeader = {};
|
||||
EWRAM_DATA struct Camera gCamera = {};
|
||||
EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||
static EWRAM_DATA struct ConnectionFlags gMapConnectionFlags = {};
|
||||
EWRAM_DATA u8 gUnknown_2036E28 = 0;
|
||||
|
||||
const struct ConnectionFlags sDummyConnectionFlags = {};
|
||||
static const struct ConnectionFlags sDummyConnectionFlags = {};
|
||||
|
||||
const u32 gUnknown_8352EF0[] = {
|
||||
0x1ff,
|
||||
0x3e00,
|
||||
0x3c000,
|
||||
0xfc0000,
|
||||
0x7000000,
|
||||
static const u32 sMetatileAttrMasks[] = {
|
||||
0x000001ff,
|
||||
0x00003e00,
|
||||
0x0003c000,
|
||||
0x00fc0000,
|
||||
0x07000000,
|
||||
0x18000000,
|
||||
0x60000000,
|
||||
0x80000000
|
||||
};
|
||||
|
||||
const u8 gUnknown_8352F10[] = {
|
||||
static const u8 sMetatileAttrShifts[] = {
|
||||
0,
|
||||
9,
|
||||
14,
|
||||
@@ -65,20 +65,20 @@ const struct MapHeader * mapconnection_get_mapheader(struct MapConnection * conn
|
||||
return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum);
|
||||
}
|
||||
|
||||
void not_trainer_hill_battle_pyramid(void)
|
||||
void InitMap(void)
|
||||
{
|
||||
sub_8058A00(&gMapHeader);
|
||||
mapheader_run_script_with_tag_x1();
|
||||
InitMapLayoutData(&gMapHeader);
|
||||
RunOnLoadMapScript();
|
||||
}
|
||||
|
||||
void sub_80589E8(void)
|
||||
void InitMapFromSavedGame(void)
|
||||
{
|
||||
sub_8058A00(&gMapHeader);
|
||||
InitMapLayoutData(&gMapHeader);
|
||||
LoadSavedMapView();
|
||||
mapheader_run_script_with_tag_x1();
|
||||
RunOnLoadMapScript();
|
||||
}
|
||||
|
||||
void sub_8058A00(struct MapHeader * mapHeader)
|
||||
static void InitMapLayoutData(struct MapHeader * mapHeader)
|
||||
{
|
||||
const struct MapLayout * mapLayout = mapHeader->mapLayout;
|
||||
CpuFastFill(0x03FF03FF, gBackupMapData, sizeof(gBackupMapData));
|
||||
@@ -90,7 +90,7 @@ void sub_8058A00(struct MapHeader * mapHeader)
|
||||
mapheader_copy_mapdata_of_adjacent_maps(mapHeader);
|
||||
}
|
||||
|
||||
void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
static void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
{
|
||||
s32 y;
|
||||
u16 *dest = gBackupMapLayout.map;
|
||||
@@ -104,7 +104,7 @@ void map_copy_with_padding(u16 *map, u16 width, u16 height)
|
||||
}
|
||||
}
|
||||
|
||||
void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
static void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
{
|
||||
s32 count;
|
||||
struct MapConnection *connection;
|
||||
@@ -150,7 +150,7 @@ void mapheader_copy_mapdata_of_adjacent_maps(struct MapHeader *mapHeader)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height)
|
||||
static void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x2, s32 y2, s32 width, s32 height)
|
||||
{
|
||||
s32 i;
|
||||
u16 *src;
|
||||
@@ -169,7 +169,7 @@ void sub_8058B54(s32 x, s32 y, const struct MapHeader *connectedMapHeader, s32 x
|
||||
}
|
||||
}
|
||||
|
||||
void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 x2;
|
||||
@@ -216,7 +216,7 @@ void fillSouthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
}
|
||||
}
|
||||
|
||||
void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 x;
|
||||
s32 x2, y2;
|
||||
@@ -265,7 +265,7 @@ void fillNorthConnection(struct MapHeader const *mapHeader, struct MapHeader con
|
||||
}
|
||||
}
|
||||
|
||||
void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 y;
|
||||
s32 x2, y2;
|
||||
@@ -311,7 +311,7 @@ void fillWestConnection(struct MapHeader const *mapHeader, struct MapHeader cons
|
||||
}
|
||||
}
|
||||
|
||||
void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
static void fillEastConnection(struct MapHeader const *mapHeader, struct MapHeader const *connectedMapHeader, s32 offset)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 y2;
|
||||
@@ -446,28 +446,28 @@ u32 MapGridGetMetatileIdAt(s32 x, s32 y)
|
||||
return block & 0x3FF;
|
||||
}
|
||||
|
||||
u32 sub_8058F1C(u32 original, u8 bit)
|
||||
u32 GetMetatileAttributeFromRawMetatileBehavior(u32 original, u8 bit)
|
||||
{
|
||||
if (bit >= 8)
|
||||
return original;
|
||||
|
||||
return (original & gUnknown_8352EF0[bit]) >> gUnknown_8352F10[bit];
|
||||
return (original & sMetatileAttrMasks[bit]) >> sMetatileAttrShifts[bit];
|
||||
}
|
||||
|
||||
u32 sub_8058F48(s16 x, s16 y, u8 z)
|
||||
u32 MapGridGetMetatileAttributeAt(s16 x, s16 y, u8 attr)
|
||||
{
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, z);
|
||||
return GetBehaviorByMetatileIdAndMapLayout(gMapHeader.mapLayout, metatileId, attr);
|
||||
}
|
||||
|
||||
u32 MapGridGetMetatileBehaviorAt(s32 x, s32 y)
|
||||
{
|
||||
return sub_8058F48(x, y, 0);
|
||||
return MapGridGetMetatileAttributeAt(x, y, 0);
|
||||
}
|
||||
|
||||
u8 MapGridGetMetatileLayerTypeAt(s16 x, s16 y)
|
||||
{
|
||||
return sub_8058F48(x, y, 6);
|
||||
return MapGridGetMetatileAttributeAt(x, y, 6);
|
||||
}
|
||||
|
||||
void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatile)
|
||||
@@ -492,7 +492,7 @@ void MapGridSetMetatileEntryAt(s32 x, s32 y, u16 metatile)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8059024(s32 x, s32 y, bool32 arg2)
|
||||
void MapGridSetMetatileImpassabilityAt(s32 x, s32 y, bool32 arg2)
|
||||
{
|
||||
if (x >= 0 && x < gBackupMapLayout.Xsize
|
||||
&& y >= 0 && y < gBackupMapLayout.Ysize)
|
||||
@@ -515,12 +515,12 @@ u32 GetBehaviorByMetatileIdAndMapLayout(struct MapLayout *mapLayout, u16 metatil
|
||||
if (metatile < NUM_METATILES_IN_PRIMARY)
|
||||
{
|
||||
attributes = mapLayout->primaryTileset->metatileAttributes;
|
||||
return sub_8058F1C(attributes[metatile], attr);
|
||||
return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile], attr);
|
||||
}
|
||||
else if (metatile < 0x400)
|
||||
{
|
||||
attributes = mapLayout->secondaryTileset->metatileAttributes;
|
||||
return sub_8058F1C(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
|
||||
return GetMetatileAttributeFromRawMetatileBehavior(attributes[metatile - NUM_METATILES_IN_PRIMARY], attr);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -547,7 +547,7 @@ void save_serialize_map(void)
|
||||
}
|
||||
}
|
||||
|
||||
bool32 SavedMapViewIsEmpty(void)
|
||||
static bool32 SavedMapViewIsEmpty(void)
|
||||
{
|
||||
u16 i;
|
||||
u32 marker = 0;
|
||||
@@ -562,12 +562,12 @@ bool32 SavedMapViewIsEmpty(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void ClearSavedMapView(void)
|
||||
static void ClearSavedMapView(void)
|
||||
{
|
||||
CpuFill16(0, gSaveBlock2Ptr->mapView, sizeof(gSaveBlock2Ptr->mapView));
|
||||
}
|
||||
|
||||
void LoadSavedMapView(void)
|
||||
static void LoadSavedMapView(void)
|
||||
{
|
||||
s32 i, j;
|
||||
s32 x, y;
|
||||
@@ -591,7 +591,7 @@ void LoadSavedMapView(void)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8059250(u8 a1)
|
||||
static void sub_8059250(u8 a1)
|
||||
{
|
||||
s32 width;
|
||||
u16 *mapView;
|
||||
@@ -693,7 +693,7 @@ s32 GetMapBorderIdAt(s32 x, s32 y)
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 GetPostCameraMoveMapBorderId(s32 x, s32 y)
|
||||
static s32 GetPostCameraMoveMapBorderId(s32 x, s32 y)
|
||||
{
|
||||
return GetMapBorderIdAt(7 + gSaveBlock1Ptr->pos.x + x, 7 + gSaveBlock1Ptr->pos.y + y);
|
||||
}
|
||||
@@ -711,7 +711,7 @@ bool32 CanCameraMoveInDirection(s32 direction)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y)
|
||||
static void sub_80594AC(struct MapConnection *connection, int direction, s32 x, s32 y)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
@@ -782,7 +782,7 @@ struct MapConnection *sub_8059600(u8 direction, s32 x, s32 y)
|
||||
|
||||
}
|
||||
|
||||
bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection)
|
||||
static bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
@@ -798,7 +798,7 @@ bool8 sub_8059658(u8 direction, s32 x, s32 y, struct MapConnection *connection)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset)
|
||||
static bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset)
|
||||
{
|
||||
s32 offset2 = max(offset, 0);
|
||||
|
||||
@@ -811,7 +811,7 @@ bool8 sub_80596BC(s32 x, s32 src_width, s32 dest_width, s32 offset)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_80596E8(s32 x, s32 width)
|
||||
static bool32 sub_80596E8(s32 x, s32 width)
|
||||
{
|
||||
if (x >= 0 && x < width)
|
||||
return TRUE;
|
||||
@@ -819,7 +819,7 @@ bool32 sub_80596E8(s32 x, s32 width)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y)
|
||||
static s32 sub_80596FC(struct MapConnection *connection, s32 x, s32 y)
|
||||
{
|
||||
struct MapHeader const *mapHeader;
|
||||
mapHeader = mapconnection_get_mapheader(connection);
|
||||
@@ -881,7 +881,7 @@ void GetCameraFocusCoords(u16 *x, u16 *y)
|
||||
*y = gSaveBlock1Ptr->pos.y + 7;
|
||||
}
|
||||
|
||||
void SetCameraCoords(u16 x, u16 y)
|
||||
static void SetCameraCoords(u16 x, u16 y)
|
||||
{
|
||||
gSaveBlock1Ptr->pos.x = x;
|
||||
gSaveBlock1Ptr->pos.y = y;
|
||||
@@ -892,7 +892,7 @@ void GetCameraCoords(u16 *x, u16 *y)
|
||||
*x = gSaveBlock1Ptr->pos.x;
|
||||
*y = gSaveBlock1Ptr->pos.y;
|
||||
}
|
||||
void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
static void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
{
|
||||
if (tileset)
|
||||
{
|
||||
@@ -903,7 +903,7 @@ void copy_tileset_patterns_to_vram(struct Tileset const *tileset, u16 numTiles,
|
||||
}
|
||||
}
|
||||
|
||||
void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
static void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles, u16 offset)
|
||||
{
|
||||
if (tileset)
|
||||
{
|
||||
@@ -914,7 +914,7 @@ void copy_tileset_patterns_to_vram2(struct Tileset const *tileset, u16 numTiles,
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80598CC(u16 a0, u16 a1)
|
||||
static void sub_80598CC(u16 a0, u16 a1)
|
||||
{
|
||||
switch (gUnknown_2036E28)
|
||||
{
|
||||
@@ -958,7 +958,7 @@ void sub_8059948(u8 a0, u8 a1)
|
||||
CpuFastCopy(gPlttBufferUnfaded + a0 * 16, gPlttBufferFaded + a0 * 16, a1 * 16 * sizeof(u16));
|
||||
}
|
||||
|
||||
void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
|
||||
static void apply_map_tileset_palette(struct Tileset const *tileset, u16 destOffset, u16 size)
|
||||
{
|
||||
u16 black = RGB_BLACK;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
void nullsub_56(void)
|
||||
// From R/S, removed
|
||||
void DoWateringBerryTreeAnim(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,299 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "event_object_lock.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "event_scripts.h"
|
||||
#include "fieldmap.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_specials.h"
|
||||
#include "fldeff.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "overworld.h"
|
||||
#include "party_menu.h"
|
||||
#include "script.h"
|
||||
#include "trig.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/metatile_labels.h"
|
||||
|
||||
#define CUT_GRASS_SPRITE_COUNT 8
|
||||
|
||||
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;
|
||||
static EWRAM_DATA bool8 sScheduleOpenDottedHole = FALSE;
|
||||
|
||||
static void FieldCallback_CutGrass(void);
|
||||
static void FieldCallback_CutTree(void);
|
||||
static void FieldMoveCallback_CutGrass(void);
|
||||
static void SetCutGrassMetatileAt(s16 x, s16 y);
|
||||
static void SpriteCallback_CutGrass_Init(struct Sprite * sprite);
|
||||
static void SpriteCallback_CutGrass_Run(struct Sprite * sprite);
|
||||
static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite);
|
||||
static void FieldMoveCallback_CutTree(void);
|
||||
|
||||
static const u16 sCutGrassMetatileMapping[][2] = {
|
||||
{
|
||||
METATILE_ID(General, Plain_Grass),
|
||||
METATILE_ID(General, Plain_Mowed)
|
||||
}, {
|
||||
METATILE_ID(General, ThinTreeTop_Grass),
|
||||
METATILE_ID(General, ThinTreeTop_Mowed)
|
||||
}, {
|
||||
METATILE_ID(General, WideTreeTopLeft_Grass),
|
||||
METATILE_ID(General, WideTreeTopLeft_Mowed)
|
||||
}, {
|
||||
METATILE_ID(General, WideTreeTopRight_Grass),
|
||||
METATILE_ID(General, WideTreeTopRight_Mowed)
|
||||
}, {
|
||||
METATILE_ID(CeladonCity, CyclingRoad_Grass),
|
||||
METATILE_ID(CeladonCity, CyclingRoad_Mowed)
|
||||
}, {
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopLeft_Grass),
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopLeft_Mowed)
|
||||
}, {
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopMiddle_Grass),
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopMiddle_Mowed)
|
||||
}, {
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopRight_Grass),
|
||||
METATILE_ID(FuchsiaCity, SafariZoneTreeTopRight_Mowed)
|
||||
}, {
|
||||
METATILE_ID(ViridianForest, HugeTreeTopMiddle_Grass),
|
||||
METATILE_ID(ViridianForest, HugeTreeTopMiddle_Mowed)
|
||||
}, {
|
||||
0xffff,
|
||||
0xffff
|
||||
}
|
||||
};
|
||||
|
||||
static const struct OamData sOamData_FldEff_CutGrass = {
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = FALSE,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(8x8),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(8x8),
|
||||
.tileNum = 0x001,
|
||||
.priority = 1,
|
||||
.paletteNum = 0x1,
|
||||
.affineParam = 0
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_Fldeff_CutGrass_0[] = {
|
||||
ANIMCMD_FRAME(0, 30),
|
||||
ANIMCMD_JUMP(0)
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_FldEff_CutGrass[] = {
|
||||
sSpriteAnim_Fldeff_CutGrass_0
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sSpriteFrameImages_FldEff_CutGrass[] = {
|
||||
{gUnknown_8398648, 0x20}
|
||||
};
|
||||
|
||||
const struct SpritePalette gFldEffPalette_CutGrass[] = {
|
||||
gUnknown_8398688, 4096
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_FldEff_CutGrass = {
|
||||
.tileTag = 0xFFFF,
|
||||
.paletteTag = 4096,
|
||||
.oam = &sOamData_FldEff_CutGrass,
|
||||
.anims = sSpriteAnimTable_FldEff_CutGrass,
|
||||
.images = sSpriteFrameImages_FldEff_CutGrass,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallback_CutGrass_Init
|
||||
};
|
||||
|
||||
static u8 MetatileAtCoordsIsGrassTile(s16 x, s16 y)
|
||||
{
|
||||
return TestMetatileAttributeBit(MapGridGetMetatileAttributeAt(x, y, 1), 1);
|
||||
}
|
||||
|
||||
bool8 SetUpFieldMove_Cut(void)
|
||||
{
|
||||
s16 x, y;
|
||||
u8 i, j;
|
||||
sScheduleOpenDottedHole = FALSE;
|
||||
if (CutMoveRuinValleyCheck() == TRUE)
|
||||
{
|
||||
sScheduleOpenDottedHole = TRUE;
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_CUT_TREE) == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutTree;
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
// FIXME: this fakematch
|
||||
register s32 neg1 asm("r8");
|
||||
struct MapPosition *pos;
|
||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
|
||||
for (i = 0, pos = &gPlayerFacingPosition, neg1 = 0xFFFF; i < 3; i++)
|
||||
{
|
||||
|
||||
y = i + neg1 + pos->y;
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
x = j + neg1 + pos->x;
|
||||
if (MapGridGetZCoordAt(x, y) == pos->height)
|
||||
{
|
||||
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_CutGrass;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
static void FieldCallback_CutGrass(void)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
}
|
||||
|
||||
bool8 FldEff_UseCutOnGrass(void)
|
||||
{
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(FieldMoveCallback_CutGrass);
|
||||
IncrementGameStat(GAME_STAT_USED_CUT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void FieldCallback_CutTree(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
ScriptContext1_SetupScript(EventScript_FldEffCut);
|
||||
}
|
||||
|
||||
bool8 FldEff_UseCutOnTree(void)
|
||||
{
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(FieldMoveCallback_CutTree);
|
||||
IncrementGameStat(GAME_STAT_USED_CUT);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void FieldMoveCallback_CutGrass(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
|
||||
if (sScheduleOpenDottedHole == TRUE)
|
||||
CutMoveOpenDottedHoleDoor();
|
||||
else
|
||||
FieldEffectStart(FLDEFF_CUT_GRASS);
|
||||
}
|
||||
|
||||
bool8 FldEff_CutGrass(void)
|
||||
{
|
||||
u8 i, j;
|
||||
s16 x, y;
|
||||
// FIXME: this fakematch
|
||||
register s32 neg1 asm("r9");
|
||||
struct MapPosition *pos;
|
||||
|
||||
i = 0;
|
||||
PlaySE(SE_W015);
|
||||
PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
|
||||
for (i = 0, pos = &gPlayerFacingPosition, neg1 = 0xFFFF; i < 3; i++)
|
||||
{
|
||||
|
||||
y = i + neg1 + pos->y;
|
||||
for (j = 0; j < 3; j++)
|
||||
{
|
||||
x = j + neg1 + pos->x;
|
||||
if (MapGridGetZCoordAt(x, y) == pos->height)
|
||||
{
|
||||
if (MetatileAtCoordsIsGrassTile(x, y) == TRUE)
|
||||
{
|
||||
SetCutGrassMetatileAt(x, y);
|
||||
sub_805F378(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
DrawWholeMapView();
|
||||
sCutGrassSpriteArrayPtr = Alloc(CUT_GRASS_SPRITE_COUNT);
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
sCutGrassSpriteArrayPtr[i] = CreateSprite(&sSpriteTemplate_FldEff_CutGrass, gSprites[gPlayerAvatar.spriteId].oam.x + 8, gSprites[gPlayerAvatar.spriteId].oam.y + 20, 0);
|
||||
gSprites[sCutGrassSpriteArrayPtr[i]].data[2] = i * (0x100 / CUT_GRASS_SPRITE_COUNT);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void SetCutGrassMetatileAt(s16 x, s16 y)
|
||||
{
|
||||
u16 i = 0;
|
||||
u16 metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
while (1)
|
||||
{
|
||||
if (sCutGrassMetatileMapping[i][0] == 0xFFFF)
|
||||
return;
|
||||
if (sCutGrassMetatileMapping[i][0] == metatileId)
|
||||
{
|
||||
MapGridSetMetatileIdAt(x, y, sCutGrassMetatileMapping[i][1]);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCallback_CutGrass_Init(struct Sprite * sprite)
|
||||
{
|
||||
sprite->data[0] = 8;
|
||||
sprite->data[1] = 0;
|
||||
sprite->data[3] = 0;
|
||||
sprite->callback = SpriteCallback_CutGrass_Run;
|
||||
}
|
||||
|
||||
static void SpriteCallback_CutGrass_Run(struct Sprite * sprite)
|
||||
{
|
||||
sprite->pos2.x = Sin(sprite->data[2], sprite->data[0]);
|
||||
sprite->pos2.y = Cos(sprite->data[2], sprite->data[0]);
|
||||
sprite->data[2] += 8;
|
||||
sprite->data[2] &= 0xFF;
|
||||
sprite->data[0]++;
|
||||
sprite->data[0] += sprite->data[3] >> 2;
|
||||
sprite->data[3]++;
|
||||
if (sprite->data[1] != 28)
|
||||
sprite->data[1]++;
|
||||
else
|
||||
sprite->callback = SpriteCallback_CutGrass_Cleanup;
|
||||
}
|
||||
|
||||
static void SpriteCallback_CutGrass_Cleanup(struct Sprite * sprite)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 1; i < CUT_GRASS_SPRITE_COUNT; i++)
|
||||
{
|
||||
DestroySprite(&gSprites[sCutGrassSpriteArrayPtr[i]]);
|
||||
}
|
||||
FieldEffectStop(&gSprites[sCutGrassSpriteArrayPtr[0]], FLDEFF_CUT_GRASS);
|
||||
Free(sCutGrassSpriteArrayPtr);
|
||||
sub_80696C0();
|
||||
ScriptContext2_Disable();
|
||||
}
|
||||
|
||||
static void FieldMoveCallback_CutTree(void)
|
||||
{
|
||||
PlaySE(SE_W015);
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
+1
-3
@@ -5,8 +5,6 @@
|
||||
#include "item_use.h"
|
||||
#include "overworld.h"
|
||||
#include "party_menu.h"
|
||||
#include "sprite.h"
|
||||
#include "constants/object_events.h"
|
||||
|
||||
static void FieldCallback_Dig(void);
|
||||
static void sub_80C9AFC(void);
|
||||
@@ -31,7 +29,7 @@ static void FieldCallback_Dig(void)
|
||||
|
||||
bool8 FldEff_UseDig(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
|
||||
FLDEFF_SET_FUNC_TO_DATA(sub_80C9AFC);
|
||||
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
|
||||
@@ -0,0 +1,479 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "event_data.h"
|
||||
#include "event_scripts.h"
|
||||
#include "fldeff.h"
|
||||
#include "field_effect.h"
|
||||
#include "map_preview_screen.h"
|
||||
#include "overworld.h"
|
||||
#include "party_menu.h"
|
||||
#include "script.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/map_types.h"
|
||||
|
||||
struct FlashStruct
|
||||
{
|
||||
u8 fromType;
|
||||
u8 toType;
|
||||
bool8 isEnter;
|
||||
bool8 isExit;
|
||||
void (*func1)(void);
|
||||
void (*func2)(u8 mapSecId);
|
||||
};
|
||||
|
||||
static void FieldCallback_Flash(void);
|
||||
static void FldEff_UseFlash(void);
|
||||
static bool8 TryDoMapTransition(void);
|
||||
static void FlashTransition_Exit(void);
|
||||
static void Task_FlashTransition_Exit_0(u8 taskId);
|
||||
static void Task_FlashTransition_Exit_1(u8 taskId);
|
||||
static void Task_FlashTransition_Exit_2(u8 taskId);
|
||||
static void Task_FlashTransition_Exit_3(u8 taskId);
|
||||
static void Task_FlashTransition_Exit_4(u8 taskId);
|
||||
static void FlashTransition_Enter(void);
|
||||
static void Task_FlashTransition_Enter_0(u8 taskId);
|
||||
static void Task_FlashTransition_Enter_1(u8 taskId);
|
||||
static void Task_FlashTransition_Enter_2(u8 taskId);
|
||||
static void Task_FlashTransition_Enter_3(u8 taskId);
|
||||
static void RunMapPreviewScreen(u8 mapsecId);
|
||||
static void Task_MapPreviewScreen_0(u8 taskId);
|
||||
|
||||
static const struct FlashStruct sTransitionTypes[] = {
|
||||
{
|
||||
.fromType = MAP_TYPE_TOWN,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_CITY,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_ROUTE,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERWATER,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_OCEAN_ROUTE,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNKNOWN,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_INDOOR,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_SECRET_BASE,
|
||||
.toType = MAP_TYPE_UNDERGROUND,
|
||||
.isEnter = TRUE,
|
||||
.isExit = FALSE,
|
||||
.func1 = FlashTransition_Enter,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_TOWN,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_CITY,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_ROUTE,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_UNDERWATER,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_OCEAN_ROUTE,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_UNKNOWN,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_INDOOR,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {
|
||||
.fromType = MAP_TYPE_UNDERGROUND,
|
||||
.toType = MAP_TYPE_SECRET_BASE,
|
||||
.isEnter = FALSE,
|
||||
.isExit = TRUE,
|
||||
.func1 = FlashTransition_Exit,
|
||||
.func2 = RunMapPreviewScreen
|
||||
}, {0}
|
||||
};
|
||||
|
||||
static const u16 sCaveTransitionPalette_White[] = INCBIN_U16("graphics/field_effects/flash_white.gbapal");
|
||||
static const u16 sCaveTransitionPalette_Black[] = INCBIN_U16("graphics/field_effects/flash_black.gbapal");
|
||||
static const u16 sCaveTransitionPalette_Gradient[] = INCBIN_U16("graphics/field_effects/flash_gradient.gbapal");
|
||||
static const u32 sCaveTransitionTilemap[] = INCBIN_U32("graphics/field_effects/flash_effect_map.bin.lz");
|
||||
static const u32 sCaveTransitionTiles[] = INCBIN_U32("graphics/field_effects/flash_effect_tiles.4bpp.lz");
|
||||
|
||||
bool8 SetUpFieldMove_Flash(void)
|
||||
{
|
||||
if (gMapHeader.cave != TRUE)
|
||||
return FALSE;
|
||||
|
||||
if (FlagGet(FLAG_SYS_FLASH_ACTIVE))
|
||||
return FALSE;
|
||||
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_Flash;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void FieldCallback_Flash(void)
|
||||
{
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
gTasks[taskId].data[8] = ((uintptr_t)FldEff_UseFlash) >> 16;
|
||||
gTasks[taskId].data[9] = ((uintptr_t)FldEff_UseFlash);
|
||||
}
|
||||
|
||||
static void FldEff_UseFlash(void)
|
||||
{
|
||||
PlaySE(SE_W115);
|
||||
FlagSet(FLAG_SYS_FLASH_ACTIVE);
|
||||
ScriptContext1_SetupScript(EventScript_FldEffFlash);
|
||||
}
|
||||
|
||||
// Map transition animatics
|
||||
|
||||
static void CB2_ChangeMapMain(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
static void VBC_ChangeMapVBlank(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void CB2_DoChangeMap(void)
|
||||
{
|
||||
SetVBlankCallback(NULL);
|
||||
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
|
||||
DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
|
||||
DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
|
||||
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
|
||||
ResetPaletteFade();
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
EnableInterrupts(INTR_FLAG_VBLANK);
|
||||
SetVBlankCallback(VBC_ChangeMapVBlank);
|
||||
SetMainCallback2(CB2_ChangeMapMain);
|
||||
if (!TryDoMapTransition())
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
|
||||
static bool8 TryDoMapTransition(void)
|
||||
{
|
||||
u8 fromType = GetLastUsedWarpMapType();
|
||||
u8 toType = GetCurrentMapType();
|
||||
u8 i = 0;
|
||||
if (GetLastUsedWarpMapSectionId() != gMapHeader.regionMapSectionId && MapHasPreviewScreen_HandleQLState2(gMapHeader.regionMapSectionId, MPS_TYPE_CAVE) == TRUE)
|
||||
{
|
||||
RunMapPreviewScreen(gMapHeader.regionMapSectionId);
|
||||
return TRUE;
|
||||
}
|
||||
for (; sTransitionTypes[i].fromType != 0; i++)
|
||||
{
|
||||
if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType)
|
||||
{
|
||||
sTransitionTypes[i].func1();
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MapTransitionIsEnter(u8 _fromType, u8 _toType)
|
||||
{
|
||||
u8 fromType = _fromType;
|
||||
u8 toType = _toType;
|
||||
u8 i = 0;
|
||||
for (; sTransitionTypes[i].fromType != 0; i++)
|
||||
{
|
||||
if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType)
|
||||
{
|
||||
return sTransitionTypes[i].isEnter;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 MapTransitionIsExit(u8 _fromType, u8 _toType)
|
||||
{
|
||||
u8 fromType = _fromType;
|
||||
u8 toType = _toType;
|
||||
u8 i = 0;
|
||||
for (; sTransitionTypes[i].fromType != 0; i++)
|
||||
{
|
||||
if (sTransitionTypes[i].fromType == fromType && sTransitionTypes[i].toType == toType)
|
||||
{
|
||||
return sTransitionTypes[i].isExit;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void FlashTransition_Exit(void)
|
||||
{
|
||||
CreateTask(Task_FlashTransition_Exit_0, 0);
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Exit_0(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].func = Task_FlashTransition_Exit_1;
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Exit_1(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
LZ77UnCompVram(sCaveTransitionTiles, (void *)BG_CHAR_ADDR(3));
|
||||
LZ77UnCompVram(sCaveTransitionTilemap, (void *)BG_SCREEN_ADDR(31));
|
||||
LoadPalette(sCaveTransitionPalette_White, 0xE0, 0x20);
|
||||
LoadPalette(sCaveTransitionPalette_Gradient + 8, 0xE0, 0x10);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON);
|
||||
gTasks[taskId].func = Task_FlashTransition_Exit_2;
|
||||
gTasks[taskId].data[0] = 16;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Exit_2(u8 taskId)
|
||||
{
|
||||
u16 r4 = gTasks[taskId].data[1];
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + r4);
|
||||
if (r4 <= 16)
|
||||
{
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[2] = 0;
|
||||
gTasks[taskId].func = Task_FlashTransition_Exit_3;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Exit_3(u8 taskId)
|
||||
{
|
||||
u16 r4;
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + 16);
|
||||
r4 = gTasks[taskId].data[2];
|
||||
if (r4 < 8)
|
||||
{
|
||||
gTasks[taskId].data[2]++;
|
||||
LoadPalette(sCaveTransitionPalette_Gradient + 8 + r4, 0xE0, 0x10 - 2 * r4);
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadPalette(sCaveTransitionPalette_White, 0x00, 0x20);
|
||||
gTasks[taskId].func = Task_FlashTransition_Exit_4;
|
||||
gTasks[taskId].data[2] = 8;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Exit_4(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[2] != 0)
|
||||
gTasks[taskId].data[2]--;
|
||||
else
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
|
||||
static void FlashTransition_Enter(void)
|
||||
{
|
||||
CreateTask(Task_FlashTransition_Enter_0, 0);
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Enter_0(u8 taskId)
|
||||
{
|
||||
gTasks[taskId].func = Task_FlashTransition_Enter_1;
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Enter_1(u8 taskId)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
LZ77UnCompVram(sCaveTransitionTiles, (void *)BG_CHAR_ADDR(3));
|
||||
LZ77UnCompVram(sCaveTransitionTilemap, (void *)BG_SCREEN_ADDR(31));
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(31));
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON);
|
||||
LoadPalette(sCaveTransitionPalette_White, 0xE0, 0x20);
|
||||
LoadPalette(sCaveTransitionPalette_Black, 0, 0x20);
|
||||
gTasks[taskId].func = Task_FlashTransition_Enter_2;
|
||||
gTasks[taskId].data[0] = 16;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
gTasks[taskId].data[2] = 0;
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Enter_2(u8 taskId)
|
||||
{
|
||||
u16 r4;
|
||||
r4 = gTasks[taskId].data[2];
|
||||
if (r4 < 16)
|
||||
{
|
||||
gTasks[taskId].data[2]++;
|
||||
gTasks[taskId].data[2]++;
|
||||
LoadPalette(&sCaveTransitionPalette_Gradient[16 - (r4 + 1)], 0xE0, 2 * (r4 + 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + 16);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
|
||||
gTasks[taskId].func = Task_FlashTransition_Enter_3;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_FlashTransition_Enter_3(u8 taskId)
|
||||
{
|
||||
u16 r4 = 16 - gTasks[taskId].data[1];
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, (16 << 8) + r4);
|
||||
if (r4 != 0)
|
||||
{
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
LoadPalette(sCaveTransitionPalette_Black, 0x00, 0x20);
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
}
|
||||
|
||||
static void RunMapPreviewScreen(u8 mapSecId)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_MapPreviewScreen_0, 0);
|
||||
gTasks[taskId].data[3] = mapSecId;
|
||||
}
|
||||
|
||||
static void Task_MapPreviewScreen_0(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
switch (data[0])
|
||||
{
|
||||
case 0:
|
||||
SetWordTaskArg(taskId, 5, (uintptr_t)gMain.vblankCallback);
|
||||
SetVBlankCallback(NULL);
|
||||
MapPreview_InitBgs();
|
||||
MapPreview_LoadGfx(data[3]);
|
||||
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
|
||||
data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
if (!MapPreview_IsGfxLoadFinished())
|
||||
{
|
||||
data[4] = MapPreview_CreateMapNameWindow(data[3]);
|
||||
CopyWindowToVram(data[4], 3);
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!IsDma3ManagerBusyWithBgCopy())
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
|
||||
SetVBlankCallback((IntrCallback)GetWordTaskArg(taskId, 5));
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!UpdatePaletteFade())
|
||||
{
|
||||
data[2] = MapPreview_GetDuration(data[3]);
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
data[1]++;
|
||||
if (data[1] > data[2] || JOY_HELD(B_BUTTON))
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_WHITE);
|
||||
data[0]++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (!UpdatePaletteFade())
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
data[i] = 0;
|
||||
}
|
||||
MapPreview_Unload(data[4]);
|
||||
gTasks[taskId].func = Task_FlashTransition_Enter_1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
+28
-30
@@ -3,25 +3,22 @@
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_effect.h"
|
||||
#include "party_menu.h"
|
||||
#include "malloc.h"
|
||||
#include "event_data.h"
|
||||
#include "script.h"
|
||||
#include "fldeff.h"
|
||||
#include "event_scripts.h"
|
||||
#include "field_weather.h"
|
||||
#include "sound.h"
|
||||
#include "palette.h"
|
||||
#include "overworld.h"
|
||||
#include "wild_encounter.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/object_events.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/event_object_movement.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
static void task08_080C9820(u8 taskId);
|
||||
static void sub_80C98FC(u8 taskId);
|
||||
static void sub_80C98B0(u8 taskId);
|
||||
static void sub_80C99A0(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_Init(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_WaitFldeff(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_WaitPlayerAnim(u8 taskId);
|
||||
static void Task_FieldEffectShowMon_Cleanup(u8 taskId);
|
||||
static void sub_80C9A10(void);
|
||||
static void sub_80C9A60(void);
|
||||
|
||||
@@ -40,75 +37,76 @@ bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 oei_task_add(void)
|
||||
u8 CreateFieldEffectShowMon(void)
|
||||
{
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y);
|
||||
return CreateTask(task08_080C9820, 8);
|
||||
return CreateTask(Task_FieldEffectShowMon_Init, 8);
|
||||
}
|
||||
|
||||
static void task08_080C9820(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_Init(u8 taskId)
|
||||
{
|
||||
u8 mapObjId;
|
||||
|
||||
ScriptContext2_Enable();
|
||||
gPlayerAvatar.unk6 = TRUE;
|
||||
gPlayerAvatar.preventStep = TRUE;
|
||||
mapObjId = gPlayerAvatar.objectEventId;
|
||||
if (!ObjectEventIsMovementOverridden(&gObjectEvents[mapObjId])
|
||||
|| ObjectEventClearHeldMovementIfFinished(&gObjectEvents[mapObjId]))
|
||||
{
|
||||
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
|
||||
{
|
||||
// Leftover from RS, inhibits the player anim while underwater.
|
||||
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
|
||||
gTasks[taskId].func = sub_80C98FC;
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_WaitFldeff;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_805CB70();
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], 0x45);
|
||||
gTasks[taskId].func = sub_80C98B0;
|
||||
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_WaitPlayerAnim;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80C98B0(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_WaitPlayerAnim(u8 taskId)
|
||||
{
|
||||
if (ObjectEventCheckHeldMovementStatus(&gObjectEvents[gPlayerAvatar.objectEventId]) == TRUE)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
|
||||
gTasks[taskId].func = sub_80C98FC;
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_WaitFldeff;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80C98FC(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_WaitFldeff(u8 taskId)
|
||||
{
|
||||
if (!FieldEffectActiveListContains(FLDEFF_FIELD_MOVE_SHOW_MON))
|
||||
{
|
||||
gFieldEffectArguments[1] = GetPlayerFacingDirection();
|
||||
if (gFieldEffectArguments[1] == 1)
|
||||
if (gFieldEffectArguments[1] == DIR_SOUTH)
|
||||
gFieldEffectArguments[2] = 0;
|
||||
if (gFieldEffectArguments[1] == 2)
|
||||
if (gFieldEffectArguments[1] == DIR_NORTH)
|
||||
gFieldEffectArguments[2] = 1;
|
||||
if (gFieldEffectArguments[1] == 3)
|
||||
if (gFieldEffectArguments[1] == DIR_WEST)
|
||||
gFieldEffectArguments[2] = 2;
|
||||
if (gFieldEffectArguments[1] == 4)
|
||||
if (gFieldEffectArguments[1] == DIR_EAST)
|
||||
gFieldEffectArguments[2] = 3;
|
||||
ObjectEventSetGraphicsId(&gObjectEvents[gPlayerAvatar.objectEventId], GetPlayerAvatarGraphicsIdByCurrentState());
|
||||
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
|
||||
FieldEffectActiveListRemove(6);
|
||||
gTasks[taskId].func = sub_80C99A0;
|
||||
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON);
|
||||
gTasks[taskId].func = Task_FieldEffectShowMon_Cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_80C99A0(u8 taskId)
|
||||
static void Task_FieldEffectShowMon_Cleanup(u8 taskId)
|
||||
{
|
||||
FLDEFF_CALL_FUNC_IN_DATA();
|
||||
gPlayerAvatar.unk6 = FALSE;
|
||||
gPlayerAvatar.preventStep = FALSE;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
bool8 SetUpFieldMove_RockSmash(void)
|
||||
{
|
||||
if (CheckObjectGraphicsInFrontOfPlayer(OBJECT_EVENT_GFX_ROCK_SMASH_ROCK) == TRUE)
|
||||
if (CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_ROCK_SMASH_ROCK) == TRUE)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = sub_80C9A10;
|
||||
@@ -125,7 +123,7 @@ static void sub_80C9A10(void)
|
||||
|
||||
bool8 FldEff_UseRockSmash(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
|
||||
FLDEFF_SET_FUNC_TO_DATA(sub_80C9A60);
|
||||
IncrementGameStat(GAME_STAT_USED_ROCK_SMASH);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "menu.h"
|
||||
#include "new_menu_helpers.h"
|
||||
#include "constants/songs.h"
|
||||
#include "fldeff.h"
|
||||
|
||||
static void sub_80E57E8(u8 taskId);
|
||||
static void sub_80E583C(u8 taskId);
|
||||
|
||||
+10
-11
@@ -6,15 +6,14 @@
|
||||
#include "script.h"
|
||||
#include "fldeff.h"
|
||||
#include "event_scripts.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/object_events.h"
|
||||
#include "constants/event_objects.h"
|
||||
|
||||
static void FldEff_UseStrength(void);
|
||||
static void sub_80D08A8(void);
|
||||
static void FieldCB_UseStrength(void);
|
||||
static void ShowMonCB_UseStrength(void);
|
||||
|
||||
bool8 SetUpFieldMove_Strength(void)
|
||||
{
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || CheckObjectGraphicsInFrontOfPlayer(OBJECT_EVENT_GFX_STRENGTH_BOULDER) != TRUE)
|
||||
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING) || CheckObjectGraphicsInFrontOfPlayer(OBJ_EVENT_GFX_STRENGTH_BOULDER) != TRUE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -22,25 +21,25 @@ bool8 SetUpFieldMove_Strength(void)
|
||||
{
|
||||
gSpecialVar_Result = GetCursorSelectionMonId();
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FldEff_UseStrength;
|
||||
gPostMenuFieldCallback = FieldCB_UseStrength;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
static void FldEff_UseStrength(void)
|
||||
static void FieldCB_UseStrength(void)
|
||||
{
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
ScriptContext1_SetupScript(EventScript_FldEffStrength);
|
||||
}
|
||||
|
||||
bool8 sub_80D0860(void)
|
||||
bool8 FldEff_UseStrength(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
FLDEFF_SET_FUNC_TO_DATA(sub_80D08A8);
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(ShowMonCB_UseStrength);
|
||||
GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_80D08A8(void)
|
||||
static void ShowMonCB_UseStrength(void)
|
||||
{
|
||||
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
|
||||
EnableBothScriptContexts();
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "field_effect.h"
|
||||
#include "party_menu.h"
|
||||
#include "malloc.h"
|
||||
#include "event_data.h"
|
||||
#include "script.h"
|
||||
#include "fldeff.h"
|
||||
#include "event_scripts.h"
|
||||
@@ -44,7 +43,7 @@ bool8 FldEff_SweetScent(void)
|
||||
u8 taskId;
|
||||
|
||||
SetWeatherScreenFadeOut();
|
||||
taskId = oei_task_add();
|
||||
taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(StartSweetScentFieldEffect);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ static void FieldCallback_Teleport(void)
|
||||
|
||||
bool8 FldEff_UseTeleport(void)
|
||||
{
|
||||
u8 taskId = oei_task_add();
|
||||
u8 taskId = CreateFieldEffectShowMon();
|
||||
FLDEFF_SET_FUNC_TO_DATA(StartTeleportFieldEffect);
|
||||
SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
|
||||
return FALSE;
|
||||
|
||||
+1
-1
@@ -178,7 +178,7 @@ const struct SpriteTemplate gUnknown_83E6C00 =
|
||||
};
|
||||
|
||||
// not used
|
||||
static const u16 gUnknown_83E6C18[] = INCBIN_U16("graphics/battle_anims/sprites/unk_83E6C18.gbapal");
|
||||
static const u16 gUnknown_83E6C18[] = INCBIN_U16("graphics/battle_anims/unk_83E6C18.gbapal");
|
||||
|
||||
const struct SpriteTemplate gUnknown_83E6C38 =
|
||||
{
|
||||
|
||||
+1419
File diff suppressed because it is too large
Load Diff
+4
-4
@@ -124,13 +124,13 @@ void SetBlackoutRespawnWarpAndHealerNpc(struct WarpData * warp)
|
||||
|
||||
if (VarGet(VAR_MAP_SCENE_TRAINER_TOWER) == 1)
|
||||
{
|
||||
if (!gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx].unkA_2)
|
||||
if (!gSaveBlock1Ptr->trainerTower[gSaveBlock1Ptr->towerChallengeId].spokeToOwner)
|
||||
VarSet(VAR_MAP_SCENE_TRAINER_TOWER, 0);
|
||||
gSpecialVar_LastTalked = 1;
|
||||
warp->x = 4;
|
||||
warp->y = 11;
|
||||
warp->mapGroup = MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_LOBBY);
|
||||
warp->mapNum = MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY);
|
||||
warp->mapGroup = MAP_GROUP(TRAINER_TOWER_LOBBY);
|
||||
warp->mapNum = MAP_NUM(TRAINER_TOWER_LOBBY);
|
||||
warp->warpId = 0xFF;
|
||||
}
|
||||
else
|
||||
@@ -155,7 +155,7 @@ void SetBlackoutRespawnWarpAndHealerNpc(struct WarpData * warp)
|
||||
warp->x = 5;
|
||||
warp->y = 4;
|
||||
}
|
||||
else if (sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][0] == MAP_GROUP(SEVEN_ISLAND_TRAINER_TOWER_LOBBY) && sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][1] == MAP_NUM(SEVEN_ISLAND_TRAINER_TOWER_LOBBY))
|
||||
else if (sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][0] == MAP_GROUP(TRAINER_TOWER_LOBBY) && sBlackoutRespawnHealCenterMapIdxs[healLocationIdx - 1][1] == MAP_NUM(TRAINER_TOWER_LOBBY))
|
||||
{
|
||||
warp->x = 4;
|
||||
warp->y = 11;
|
||||
|
||||
+33
-35
@@ -10,9 +10,7 @@
|
||||
#include "strings.h"
|
||||
#include "text.h"
|
||||
#include "blit.h"
|
||||
#include "event_data.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/flags.h"
|
||||
|
||||
extern u8 gGlyphInfo[];
|
||||
|
||||
@@ -33,7 +31,7 @@ struct HelpSystemVideoState
|
||||
|
||||
static EWRAM_DATA u8 sMapTilesBackup[BG_CHAR_SIZE] = {0};
|
||||
EWRAM_DATA u8 gUnknown_203F174 = 0;
|
||||
EWRAM_DATA u8 gUnknown_203F175 = 0;
|
||||
EWRAM_DATA bool8 gHelpSystemToggleWithRButtonDisabled = FALSE;
|
||||
static EWRAM_DATA u8 sDelayTimer = 0;
|
||||
static EWRAM_DATA u8 sInHelpSystem = 0;
|
||||
static EWRAM_DATA struct HelpSystemVideoState sVideoState = {0};
|
||||
@@ -53,7 +51,7 @@ u8 RunHelpSystemCallback(void)
|
||||
sInHelpSystem = 0;
|
||||
if (gSaveBlock2Ptr->optionsButtonMode != OPTIONS_BUTTON_MODE_HELP)
|
||||
return 0;
|
||||
if (JOY_NEW(R_BUTTON) && gUnknown_203F175 == 1)
|
||||
if (JOY_NEW(R_BUTTON) && gHelpSystemToggleWithRButtonDisabled == TRUE)
|
||||
return 0;
|
||||
if (JOY_NEW(L_BUTTON | R_BUTTON))
|
||||
{
|
||||
@@ -92,10 +90,10 @@ u8 RunHelpSystemCallback(void)
|
||||
HelpSystem_FillPanel2();
|
||||
HelpSystem_PrintText_Row61(gString_Help);
|
||||
sub_813BD14(1);
|
||||
if (sub_812B40C() == TRUE)
|
||||
sub_812BC54(&gHelpSystemListMenu, gHelpSystemListMenuItems);
|
||||
if (HelpSystem_UpdateHasntSeenIntro() == TRUE)
|
||||
HelpSystemSubroutine_PrintWelcomeMessage(&gHelpSystemListMenu, gHelpSystemListMenuItems);
|
||||
else
|
||||
sub_812BCA8(&gHelpSystemListMenu, gHelpSystemListMenuItems);
|
||||
HelpSystemSubroutine_WelcomeEndGotoMenu(&gHelpSystemListMenu, gHelpSystemListMenuItems);
|
||||
sub_813BE78(1);
|
||||
sub_813BF50(1);
|
||||
CommitTilemap();
|
||||
@@ -110,7 +108,7 @@ u8 RunHelpSystemCallback(void)
|
||||
sVideoState.state = 5;
|
||||
break;
|
||||
case 5:
|
||||
if (!sub_812BB9C(&gHelpSystemListMenu, gHelpSystemListMenuItems))
|
||||
if (!RunHelpMenuSubroutine(&gHelpSystemListMenu, gHelpSystemListMenuItems))
|
||||
{
|
||||
PlaySE(SE_HELP_CL);
|
||||
sVideoState.state = 6;
|
||||
@@ -981,9 +979,9 @@ void HelpSystem_FillPanel1(void)
|
||||
void HelpSystem_InitListMenuController(struct HelpSystemListMenu * a0, u8 a1, u8 a2)
|
||||
{
|
||||
gHelpSystemListMenu.sub = a0->sub;
|
||||
gHelpSystemListMenu.field_0C = a1;
|
||||
gHelpSystemListMenu.field_0D = a2;
|
||||
gHelpSystemListMenu.field_0E = 0;
|
||||
gHelpSystemListMenu.itemsAbove = a1;
|
||||
gHelpSystemListMenu.cursorPos = a2;
|
||||
gHelpSystemListMenu.state = 0;
|
||||
if (gHelpSystemListMenu.sub.totalItems < gHelpSystemListMenu.sub.maxShowed)
|
||||
gHelpSystemListMenu.sub.maxShowed = gHelpSystemListMenu.sub.totalItems;
|
||||
sub_813BDA4(0);
|
||||
@@ -1007,7 +1005,7 @@ s32 HelpSystem_GetMenuInput(void)
|
||||
else if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
return gHelpSystemListMenu.sub.items[gHelpSystemListMenu.field_0C + gHelpSystemListMenu.field_0D].index;
|
||||
return gHelpSystemListMenu.sub.items[gHelpSystemListMenu.itemsAbove + gHelpSystemListMenu.cursorPos].index;
|
||||
}
|
||||
else if (JOY_NEW(B_BUTTON))
|
||||
{
|
||||
@@ -1051,15 +1049,15 @@ void sub_813C75C(void)
|
||||
u8 r6 = gHelpSystemListMenu.sub.totalItems - 7;
|
||||
if (gHelpSystemListMenu.sub.totalItems > 7)
|
||||
{
|
||||
s32 r4 = gHelpSystemListMenu.field_0C + gHelpSystemListMenu.field_0D;
|
||||
s32 r4 = gHelpSystemListMenu.itemsAbove + gHelpSystemListMenu.cursorPos;
|
||||
sub_813C004(0, 0);
|
||||
if (r4 == 0)
|
||||
sub_813C004(1, 1);
|
||||
else if (gHelpSystemListMenu.field_0C == 0 && gHelpSystemListMenu.field_0D != 0)
|
||||
else if (gHelpSystemListMenu.itemsAbove == 0 && gHelpSystemListMenu.cursorPos != 0)
|
||||
sub_813C004(1, 1);
|
||||
else if (gHelpSystemListMenu.field_0C == r6)
|
||||
else if (gHelpSystemListMenu.itemsAbove == r6)
|
||||
sub_813C004(0, 1);
|
||||
else if (gHelpSystemListMenu.field_0C != 0)
|
||||
else if (gHelpSystemListMenu.itemsAbove != 0)
|
||||
{
|
||||
sub_813C004(0, 1);
|
||||
sub_813C004(1, 1);
|
||||
@@ -1071,7 +1069,7 @@ void PrintListMenuItems(void)
|
||||
{
|
||||
u8 glyphHeight = GetFontAttribute(2, 1) + 1;
|
||||
s32 i;
|
||||
s32 r5 = gHelpSystemListMenu.field_0C;
|
||||
s32 r5 = gHelpSystemListMenu.itemsAbove;
|
||||
|
||||
for (i = 0; i < gHelpSystemListMenu.sub.maxShowed; i++)
|
||||
{
|
||||
@@ -1086,8 +1084,8 @@ void PlaceListMenuCursor(void)
|
||||
{
|
||||
u8 glyphHeight = GetFontAttribute(2, 1) + 1;
|
||||
u8 x = gHelpSystemListMenu.sub.left;
|
||||
u8 y = gHelpSystemListMenu.sub.top + glyphHeight * gHelpSystemListMenu.field_0D;
|
||||
HelpSystem_PrintTextAt(gFameCheckerText_ListMenuCursor, x, y);
|
||||
u8 y = gHelpSystemListMenu.sub.top + glyphHeight * gHelpSystemListMenu.cursorPos;
|
||||
HelpSystem_PrintTextAt(gText_SelectorArrow2, x, y);
|
||||
}
|
||||
|
||||
void sub_813C860(u8 i)
|
||||
@@ -1107,24 +1105,24 @@ u8 TryMoveCursor1(u8 dirn)
|
||||
r4 = 0;
|
||||
else
|
||||
r4 = gHelpSystemListMenu.sub.maxShowed - (gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1)) - 1;
|
||||
if (gHelpSystemListMenu.field_0C == 0)
|
||||
if (gHelpSystemListMenu.itemsAbove == 0)
|
||||
{
|
||||
if (gHelpSystemListMenu.field_0D != 0)
|
||||
if (gHelpSystemListMenu.cursorPos != 0)
|
||||
{
|
||||
gHelpSystemListMenu.field_0D--;
|
||||
gHelpSystemListMenu.cursorPos--;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
if (gHelpSystemListMenu.field_0D > r4)
|
||||
if (gHelpSystemListMenu.cursorPos > r4)
|
||||
{
|
||||
gHelpSystemListMenu.field_0D--;
|
||||
gHelpSystemListMenu.cursorPos--;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gHelpSystemListMenu.field_0C--;
|
||||
gHelpSystemListMenu.itemsAbove--;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
@@ -1134,24 +1132,24 @@ u8 TryMoveCursor1(u8 dirn)
|
||||
r4 = 0;
|
||||
else
|
||||
r4 = gHelpSystemListMenu.sub.maxShowed / 2 + (gHelpSystemListMenu.sub.maxShowed & 1);
|
||||
if (gHelpSystemListMenu.field_0C == gHelpSystemListMenu.sub.totalItems - gHelpSystemListMenu.sub.maxShowed)
|
||||
if (gHelpSystemListMenu.itemsAbove == gHelpSystemListMenu.sub.totalItems - gHelpSystemListMenu.sub.maxShowed)
|
||||
{
|
||||
if (gHelpSystemListMenu.field_0D < gHelpSystemListMenu.sub.maxShowed - 1)
|
||||
if (gHelpSystemListMenu.cursorPos < gHelpSystemListMenu.sub.maxShowed - 1)
|
||||
{
|
||||
gHelpSystemListMenu.field_0D++;
|
||||
gHelpSystemListMenu.cursorPos++;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else if (gHelpSystemListMenu.field_0D < r4)
|
||||
else if (gHelpSystemListMenu.cursorPos < r4)
|
||||
{
|
||||
gHelpSystemListMenu.field_0D++;
|
||||
gHelpSystemListMenu.cursorPos++;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gHelpSystemListMenu.field_0C++;
|
||||
gHelpSystemListMenu.itemsAbove++;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
@@ -1159,7 +1157,7 @@ u8 TryMoveCursor1(u8 dirn)
|
||||
|
||||
bool8 MoveCursor(u8 by, u8 dirn)
|
||||
{
|
||||
u8 r7 = gHelpSystemListMenu.field_0D;
|
||||
u8 r7 = gHelpSystemListMenu.cursorPos;
|
||||
u8 flags = 0;
|
||||
s32 i;
|
||||
for (i = 0; i < by; i++)
|
||||
@@ -1172,21 +1170,21 @@ bool8 MoveCursor(u8 by, u8 dirn)
|
||||
// neither changed
|
||||
return TRUE;
|
||||
case 1:
|
||||
// changed field_0D only
|
||||
// changed cursorPos only
|
||||
sub_813C860(r7);
|
||||
PlaceListMenuCursor();
|
||||
CommitTilemap();
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
// changed field_0C
|
||||
// changed itemsAbove
|
||||
if (sub_812BF88() == TRUE)
|
||||
{
|
||||
HelpSystem_SetInputDelay(2);
|
||||
HelpSystem_FillPanel1();
|
||||
PrintListMenuItems();
|
||||
PlaceListMenuCursor();
|
||||
sub_812BDEC();
|
||||
HelpSystem_PrintTopicLabel();
|
||||
sub_813C75C();
|
||||
}
|
||||
else
|
||||
|
||||
+2003
-1120
File diff suppressed because it is too large
Load Diff
+1
-2
@@ -5,7 +5,6 @@
|
||||
#include "script.h"
|
||||
#include "script_menu.h"
|
||||
#include "task.h"
|
||||
#include "hall_of_fame.h"
|
||||
#include "bg.h"
|
||||
#include "window.h"
|
||||
|
||||
@@ -40,7 +39,7 @@ static void ReshowPCMenuAfterHallOfFamePC(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
Overworld_PlaySpecialMapMusic();
|
||||
ScrSpecial_CreatePCMenu();
|
||||
CreatePCMenu();
|
||||
ScriptMenu_DisplayPCStartupPrompt();
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
|
||||
CreateTask(Task_WaitForPaletteFade, 10);
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
#include "global.h"
|
||||
#include "battle_anim.h"
|
||||
#include "bg.h"
|
||||
#include "field_weather.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "graphics.h"
|
||||
#include "main.h"
|
||||
#include "palette.h"
|
||||
#include "random.h"
|
||||
#include "sprite.h"
|
||||
|
||||
+2
-2
@@ -1431,7 +1431,7 @@ static void sub_80EDB70(struct IntroSequenceData * this)
|
||||
{
|
||||
this->field_0018->pos1.x += this->field_0018->pos2.x;
|
||||
this->field_0018->pos1.y += this->field_0018->pos2.y;
|
||||
sub_8007FFC(this->field_0018, 0, 0x2A);
|
||||
obj_pos2_update_enable(this->field_0018, 0, 0x2A);
|
||||
this->field_0018->callback = SpriteCallbackDummy;
|
||||
StartSpriteAffineAnim(this->field_0018, 1);
|
||||
}
|
||||
@@ -1448,7 +1448,7 @@ static void sub_80EDBAC(struct IntroSequenceData * this)
|
||||
{
|
||||
StartSpriteAffineAnim(this->field_0028[i], 1);
|
||||
this->field_0028[i]->callback = nullsub_83;
|
||||
sub_8007FFC(this->field_0028[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]);
|
||||
obj_pos2_update_enable(this->field_0028[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
#include "constants/items.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
EWRAM_DATA struct BagPocket gBagPockets[NUM_BAG_POCKETS] = {};
|
||||
|
||||
void SortAndCompactBagPocket(struct BagPocket * pocket);
|
||||
|
||||
// Item descriptions and data
|
||||
|
||||
+5
-5
@@ -5,7 +5,7 @@
|
||||
#include "berry_pouch.h"
|
||||
#include "decompress.h"
|
||||
#include "event_scripts.h"
|
||||
#include "event_object_80688E4.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "graphics.h"
|
||||
#include "help_system.h"
|
||||
@@ -496,9 +496,9 @@ static bool8 LoadBagMenuGraphics(void)
|
||||
break;
|
||||
case 19:
|
||||
if (gBagMenuState.location == ITEMMENULOCATION_ITEMPC)
|
||||
HelpSystem_SetSomeVariable2(29);
|
||||
SetHelpContext(HELPCONTEXT_PLAYERS_PC_ITEMS);
|
||||
else
|
||||
HelpSystem_SetSomeVariable2(9);
|
||||
SetHelpContext(HELPCONTEXT_BAG);
|
||||
gPaletteFade.bufferTransferDisabled = FALSE;
|
||||
gMain.state++;
|
||||
break;
|
||||
@@ -740,7 +740,7 @@ static void bag_menu_print_cursor(u8 y, u8 colorIdx)
|
||||
}
|
||||
else
|
||||
{
|
||||
BagPrintTextOnWindow(0, 2, gFameCheckerText_ListMenuCursor, 1, y, 0, 0, 0, colorIdx);
|
||||
BagPrintTextOnWindow(0, 2, gText_SelectorArrow2, 1, y, 0, 0, 0, colorIdx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1434,7 +1434,7 @@ static void OpenContextMenu(u8 taskId)
|
||||
Menu_InitCursor(r6, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, sContextMenuNumItems, 0);
|
||||
r4 = ShowBagWindow(6, 0);
|
||||
CopyItemName(gSpecialVar_ItemId, gStringVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
|
||||
BagPrintTextOnWindow(r4, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -361,7 +361,7 @@ static bool8 ItemPc_DoGfxSetup(void)
|
||||
gMain.state++;
|
||||
break;
|
||||
case 17:
|
||||
HelpSystem_SetSomeVariable2(29);
|
||||
SetHelpContext(HELPCONTEXT_PLAYERS_PC_ITEMS);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 18:
|
||||
@@ -577,7 +577,7 @@ static void ItemPc_PrintOrRemoveCursorAt(u8 y, u8 colorIdx)
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemPc_AddTextPrinterParameterized(0, 2, gFameCheckerText_ListMenuCursor, 0, y, 0, 0, 0, colorIdx);
|
||||
ItemPc_AddTextPrinterParameterized(0, 2, gText_SelectorArrow2, 0, y, 0, 0, 0, colorIdx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -848,7 +848,7 @@ static void Task_ItemPcSubmenuInit(u8 taskId)
|
||||
PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, sItemPcSubmenuOptions);
|
||||
Menu_InitCursor(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
|
||||
CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gText_Var1IsSelected);
|
||||
ItemPc_AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
|
||||
ScheduleBgCopyTilemapToVram(0);
|
||||
gTasks[taskId].func = Task_ItemPcSubmenuRun;
|
||||
|
||||
+9
-10
@@ -19,7 +19,6 @@
|
||||
#include "mail.h"
|
||||
#include "main.h"
|
||||
#include "malloc.h"
|
||||
#include "event_object_80688E4.h"
|
||||
#include "event_object_lock.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "new_menu_helpers.h"
|
||||
@@ -42,7 +41,7 @@
|
||||
#include "constants/maps.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/map_types.h"
|
||||
#include "constants/field_weather.h"
|
||||
|
||||
static EWRAM_DATA void (*sItemUseOnFieldCB)(u8 taskId) = NULL;
|
||||
|
||||
@@ -172,7 +171,7 @@ static void sub_80A103C(u8 taskId)
|
||||
|
||||
static void sub_80A1084(void)
|
||||
{
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
CreateTask(sub_80A109C, 8);
|
||||
}
|
||||
|
||||
@@ -225,7 +224,7 @@ static bool8 sub_80A1194(void)
|
||||
{
|
||||
FreezeObjectEvents();
|
||||
ScriptContext2_Enable();
|
||||
sub_807DC00();
|
||||
FadeInFromBlack();
|
||||
CreateTask(sub_80A11C0, 10);
|
||||
gUnknown_2031DE0 = 0;
|
||||
return TRUE;
|
||||
@@ -458,7 +457,7 @@ void FieldUseFunc_TmCase(u8 taskId)
|
||||
else
|
||||
{
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
FadeScreen(1, 0);
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gTasks[taskId].func = Task_InitTMCaseFromField;
|
||||
}
|
||||
}
|
||||
@@ -489,7 +488,7 @@ void FieldUseFunc_BerryPouch(u8 taskId)
|
||||
else
|
||||
{
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
FadeScreen(1, 0);
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gTasks[taskId].func = Task_InitBerryPouchFromField;
|
||||
}
|
||||
}
|
||||
@@ -532,7 +531,7 @@ void FieldUseFunc_TeachyTv(u8 taskId)
|
||||
else
|
||||
{
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
FadeScreen(1, 0);
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gTasks[taskId].func = Task_InitTeachyTvFromField;
|
||||
}
|
||||
}
|
||||
@@ -648,7 +647,7 @@ static void sub_80A1C08(u8 taskId)
|
||||
void sub_80A1C44(u8 taskId)
|
||||
{
|
||||
ResetInitialPlayerAvatarState();
|
||||
sub_8085620();
|
||||
StartEscapeRopeFieldEffect();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
|
||||
@@ -662,7 +661,7 @@ void FieldUseFunc_TownMap(u8 taskId)
|
||||
else
|
||||
{
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
FadeScreen(1, 0);
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gTasks[taskId].func = sub_80A1CC0;
|
||||
}
|
||||
}
|
||||
@@ -694,7 +693,7 @@ void FieldUseFunc_FameChecker(u8 taskId)
|
||||
else
|
||||
{
|
||||
StopPokemonLeagueLightingEffectTask();
|
||||
FadeScreen(1, 0);
|
||||
FadeScreen(FADE_TO_BLACK, 0);
|
||||
gTasks[taskId].func = sub_80A1D68;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_specials.h"
|
||||
#include "fieldmap.h"
|
||||
#include "itemfinder.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void Task_NoResponse_CleanUp(u8 taskId);
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
#include "global.h"
|
||||
|
||||
// easy_chat_3
|
||||
const u8 gUnknown_847A8D8[] = _("{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 26}others");
|
||||
const u8 gUnknown_847A8FA[] = _("{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L");
|
||||
const u8 gUnknown_847A913[] = _("{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} ");
|
||||
const u8 gUnknown_847A934[] = _("{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} ");
|
||||
|
||||
// naming_screen
|
||||
const u8 gText_NamingScreenKeyboard_abcdef[] = _("{CLEAR 11}a{CLEAR 6}b{CLEAR 6}c{CLEAR 26}d{CLEAR 6}e{CLEAR 6}f{CLEAR 6} {CLEAR 26}.");
|
||||
const u8 gText_NamingScreenKeyboard_ghijkl[] = _("{CLEAR 11}g{CLEAR 6}h{CLEAR 7}i{CLEAR 27}j{CLEAR 6}k{CLEAR 6}l{CLEAR 7} {CLEAR 26},");
|
||||
const u8 gText_NamingScreenKeyboard_mnopqrs[] = _("{CLEAR 11}m{CLEAR 6}n{CLEAR 7}o{CLEAR 26}p{CLEAR 6}q{CLEAR 7}r{CLEAR 6}s{CLEAR 27} ");
|
||||
const u8 gText_NamingScreenKeyboard_tuvwxyz[] = _("{CLEAR 12}t{CLEAR 6}u{CLEAR 6}v{CLEAR 26}w{CLEAR 6}x{CLEAR 6}y{CLEAR 6}z{CLEAR 26} ");
|
||||
const u8 gText_NamingScreenKeyboard_ABCDEF[] = _("{CLEAR 11}A{CLEAR 6}B{CLEAR 6}C{CLEAR 26}D{CLEAR 6}E{CLEAR 6}F{CLEAR 6} {CLEAR 26}.");
|
||||
const u8 gText_NamingScreenKeyboard_GHIJKL[] = _("{CLEAR 11}G{CLEAR 6}H{CLEAR 6}I{CLEAR 26}J{CLEAR 6}K{CLEAR 6}L{CLEAR 6} {CLEAR 26},");
|
||||
const u8 gText_NamingScreenKeyboard_MNOPQRS[] = _("{CLEAR 11}M{CLEAR 6}N{CLEAR 6}O{CLEAR 26}P{CLEAR 6}Q{CLEAR 6}R{CLEAR 6}S{CLEAR 26} ");
|
||||
const u8 gText_NamingScreenKeyboard_TUVWXYZ[] = _("{CLEAR 11}T{CLEAR 6}U{CLEAR 6}V{CLEAR 26}W{CLEAR 6}X{CLEAR 6}Y{CLEAR 6}Z{CLEAR 26} ");
|
||||
const u8 gText_NamingScreenKeyboard_01234[] = _("{CLEAR 11}0{CLEAR 16}1{CLEAR 16}2{CLEAR 16}3{CLEAR 16}4{CLEAR 16} ");
|
||||
const u8 gText_NamingScreenKeyboard_56789[] = _("{CLEAR 11}5{CLEAR 16}6{CLEAR 16}7{CLEAR 16}8{CLEAR 16}9{CLEAR 16} ");
|
||||
const u8 gText_NamingScreenKeyboard_Symbols1[] = _("{CLEAR 11}!{CLEAR 16}?{CLEAR 16}♂{CLEAR 16}♀{CLEAR 16}/{CLEAR 16}-");
|
||||
const u8 gText_NamingScreenKeyboard_Symbols2[] = _("{CLEAR 11}…{CLEAR 16}“{CLEAR 16}”{CLEAR 18}‘{CLEAR 18}'{CLEAR 18} ");
|
||||
|
||||
// union_room_chat
|
||||
const u8 gText_UnionRoomChatKeyboard_ABCDE[] = _("ABCDE");
|
||||
const u8 gText_UnionRoomChatKeyboard_FGHIJ[] = _("FGHIJ");
|
||||
const u8 gText_UnionRoomChatKeyboard_KLMNO[] = _("KLMNO");
|
||||
const u8 gText_UnionRoomChatKeyboard_PQRST[] = _("PQRST");
|
||||
const u8 gText_UnionRoomChatKeyboard_UVWXY[] = _("UVWXY");
|
||||
const u8 gText_UnionRoomChatKeyboard_Z[] = _("Z ");
|
||||
const u8 gText_UnionRoomChatKeyboard_01234Upper[] = _("01234");
|
||||
const u8 gText_UnionRoomChatKeyboard_56789Upper[] = _("56789");
|
||||
const u8 gText_UnionRoomChatKeyboard_PunctuationUpper[] = _(".,!? ");
|
||||
const u8 gText_UnionRoomChatKeyboard_SymbolsUpper[] = _("-/&… ");
|
||||
const u8 gText_UnionRoomChatKeyboard_abcde[] = _("abcde");
|
||||
const u8 gText_UnionRoomChatKeyboard_fghij[] = _("fghij");
|
||||
const u8 gText_UnionRoomChatKeyboard_klmno[] = _("klmno");
|
||||
const u8 gText_UnionRoomChatKeyboard_pqrst[] = _("pqrst");
|
||||
const u8 gText_UnionRoomChatKeyboard_uvwxy[] = _("uvwxy");
|
||||
const u8 gText_UnionRoomChatKeyboard_z[] = _("z ");
|
||||
const u8 gText_UnionRoomChatKeyboard_01234Lower[] = _("01234");
|
||||
const u8 gText_UnionRoomChatKeyboard_56789Lower[] = _("56789");
|
||||
const u8 gText_UnionRoomChatKeyboard_PunctuationLower[] = _(".,!? ");
|
||||
const u8 gText_UnionRoomChatKeyboard_SymbolsLower[] = _("-/&… ");
|
||||
const u8 gText_BlankString_847AB39[] = _("");
|
||||
const u8 gText_BlankString_847AB3A[] = _("");
|
||||
const u8 gText_BlankString_847AB3B[] = _("");
|
||||
const u8 gText_BlankString_847AB3C[] = _("");
|
||||
const u8 gText_BlankString_847AB3D[] = _("");
|
||||
const u8 gText_BlankString_847AB3E[] = _("");
|
||||
const u8 gText_BlankString_847AB3F[] = _("");
|
||||
const u8 gText_BlankString_847AB40[] = _("");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji1[] = _("{EXTRA 245}{EXTRA 246}{EXTRA 247}{EXTRA 248}{EXTRA 254}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji2[] = _("{EXTRA 249}{EXTRA 250}{EXTRA 252}{EXTRA 251}{EXTRA 253}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji3[] = _("{EXTRA 236}{EXTRA 237}{EXTRA 238}{EXTRA 235}{EXTRA 234}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji4[] = _("♂♀{EXTRA 212}{EXTRA 213}{EXTRA 211}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji5[] = _("{EXTRA 216}{EXTRA 217}{EXTRA 242}{EXTRA 243}{EXTRA 244}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji6[] = _("{EXTRA 218}{EXTRA 241}{EXTRA 224}{EXTRA 226}{EXTRA 227}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji7[] = _("{EXTRA 240}{EXTRA 239}{EXTRA 225}{EXTRA 214}{EXTRA 215}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji8[] = _("{EXTRA 228}{EXTRA 229}{EXTRA 230}{EXTRA 231}{EXTRA 232}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji9[] = _("{EXTRA 233}{EXTRA 220}{EXTRA 221}{EXTRA 222}{EXTRA 209}");
|
||||
const u8 gText_UnionRoomChatKeyboard_Emoji10[] = _("{EXTRA 210}{EXTRA 208}ょ: ");
|
||||
+1
-1
@@ -309,7 +309,7 @@ static void MoveRelearnerLoadBgGfx(void)
|
||||
FillBgTilemapBufferRect(0, 0x000, 0, 0, 30, 20, 0xF);
|
||||
SetBgTilemapBuffer(1, sMoveRelearner->bg1TilemapBuffer);
|
||||
TextWindow_SetUserSelectedFrame(0, 1, 0xE0);
|
||||
sub_8107D38(0xD0, 1);
|
||||
ListMenuLoadStdPalAt(0xD0, 1);
|
||||
LoadPalette(gUnknown_8E97DDC, 0x00, 0x20);
|
||||
DecompressAndLoadBgGfxUsingHeap(1, gUnknown_8E97DFC, 0, 0, 0);
|
||||
CopyToBgTilemapBuffer(1, gUnknown_8E97EC4, 0, 0);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user