Merge branch 'master' into event_object_movement

This commit is contained in:
ultima-soul
2020-03-13 00:32:04 -07:00
3241 changed files with 80742 additions and 133435 deletions
File diff suppressed because it is too large Load Diff
-2
View File
@@ -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");
-6
View File
@@ -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"
-1
View File
@@ -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"
+2 -2
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+4 -11
View File
@@ -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);
-8
View File
@@ -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"
-8
View File
@@ -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"
+2 -4
View File
@@ -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
+54 -56
View File
@@ -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];
}
}
-4
View File
@@ -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"
+2 -2
View File
@@ -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])
+1 -3
View File
@@ -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)
-1
View File
@@ -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
View File
@@ -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
View File
@@ -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: // ?
+4 -4
View File
@@ -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);
}
}
+1 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+3 -3
View File
@@ -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;
-1
View File
@@ -5,7 +5,6 @@
#include "pokemon.h"
#include "malloc.h"
#include "trainer_tower.h"
#include "battle_util2.h"
void AllocateBattleResources(void)
{
+228
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+1386
View File
File diff suppressed because it is too large Load Diff
-5
View File
@@ -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
View File
@@ -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
View File
@@ -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))
+964
View File
@@ -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
View File
@@ -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;
}
+224
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+247
View File
@@ -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
+30
View File
@@ -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");
+37
View File
@@ -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");
+672
View File
@@ -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");
+38
View File
@@ -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
+456
View File
@@ -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");
+8 -8
View File
@@ -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,
+2 -1
View File
@@ -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),
+125
View File
@@ -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");
+198
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+3 -4
View File
@@ -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:
-1
View File
@@ -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[];
+452
View File
@@ -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];
}
-2
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+241
View File
@@ -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;
}
+79 -7
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+2298
View File
File diff suppressed because it is too large Load Diff
+84 -75
View File
@@ -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
View File
@@ -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;
}
+653
View File
@@ -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 -5
View File
@@ -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
View File
@@ -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;
}
-2
View File
@@ -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
View File
@@ -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);
}
+572
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+67 -66
View File
@@ -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]++;
+140
View File
@@ -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
View File
@@ -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();
}
+3 -3
View File
@@ -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;
}
+2 -1
View File
@@ -21,6 +21,7 @@ void nullsub_60(void)
{
}
void nullsub_61(void)
// From Hoenn's SS Tidal
void LookThroughPorthole(void)
{
}
+196 -161
View File
@@ -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, &param);
}
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
View File
@@ -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
View File
@@ -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;
+2 -2
View File
@@ -1,4 +1,4 @@
void nullsub_56(void)
// From R/S, removed
void DoWateringBerryTreeAnim(void)
{
}
+299
View File
@@ -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
View File
@@ -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);
+479
View File
@@ -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
View File
@@ -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);
-1
View File
@@ -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
View File
@@ -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();
+1 -2
View File
@@ -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;
}
+1 -1
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+4 -4
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -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);
-2
View File
@@ -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
View File
@@ -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]);
}
}
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
}
-1
View File
@@ -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);
+61
View File
@@ -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
View File
@@ -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