diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2018-12-19 22:47:27 +0100 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2018-12-19 22:47:27 +0100 |
commit | 128239d65edefc9d290a642c269adcc5b859a6f4 (patch) | |
tree | cd4bf663a4cc614f95de569f9e415359a1277065 /src | |
parent | 9ffd0c73829e5a0aded23518887007da9c3fc44c (diff) |
Almost there
Diffstat (limited to 'src')
-rw-r--r-- | src/egg_hatch.c | 9 | ||||
-rw-r--r-- | src/pokemon_storage_system.c | 1417 | ||||
-rw-r--r-- | src/tv.c | 2 | ||||
-rw-r--r-- | src/walda_phrase.c | 11 |
4 files changed, 1173 insertions, 266 deletions
diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 561987315..97c264d49 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -31,6 +31,7 @@ #include "international_string_util.h" #include "naming_screen.h" #include "field_screen.h" +#include "pokemon_storage_system.h" #include "battle.h" // to get rid of later struct EggHatchData @@ -61,8 +62,6 @@ extern const u8 gText_HatchedFromEgg[]; extern const u8 gText_NickHatchPrompt[]; extern void play_some_sound(void); -extern u16 sub_80D22D0(void); -extern u8 CountPartyAliveNonEggMonsExcept(u8); static void Task_EggHatch(u8 taskID); static void CB2_EggHatch_0(void); @@ -888,7 +887,7 @@ u8 GetEggStepsToSubtract(void) u16 sub_80722E0(void) { - u16 value = sub_80D22D0(); - value += CountPartyAliveNonEggMonsExcept(6); - return value; + u16 aliveNonEggMonsCount = CountStorageNonEggMons(); + aliveNonEggMonsCount += CountPartyAliveNonEggMonsExcept(6); + return aliveNonEggMonsCount; } diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index d9bc818ae..faa7573d6 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -12,6 +12,7 @@ #include "graphics.h" #include "international_string_util.h" #include "item.h" +#include "item_icon.h" #include "item_menu.h" #include "mail.h" #include "main.h" @@ -20,6 +21,7 @@ #include "naming_screen.h" #include "overworld.h" #include "palette.h" +#include "pc_screen_effect.h" #include "pokemon.h" #include "pokemon_icon.h" #include "pokemon_summary_screen.h" @@ -46,6 +48,12 @@ struct WallpaperTable const u16 *palettes; }; +struct PokemonStorageSystemFunc +{ + u8 (*func)(void); + s8 unk4; +}; + struct Struct_02039D80 { u8 field_0; @@ -66,6 +74,248 @@ struct Struct_02039D80 struct BoxPokemon boxMons[IN_BOX_COUNT]; }; +struct StorageAction +{ + const u8 *text; + u8 format; +}; + +struct StorageMenu +{ + const u8 *text; + int textId; +}; + +struct PSS_MenuStringPtrs +{ + const u8 *text; + const u8 *desc; +}; + +struct UnkStruct_2000028 +{ + const u8 *unk_00; + u8 *unk_04; + u16 unk_08; + u16 unk_0a; + void (*unk_0c)(struct UnkStruct_2000028 *data); +}; + +struct UnkStruct_2000020 +{ + struct UnkStruct_2000028 *unk_00; + u8 unk_04; + u8 unk_05; +}; + +struct UnkPSSStruct_2002370 +{ + struct Sprite *unk_0000; + struct Sprite *unk_0004[4]; + u32 unk_0014[3]; + struct Sprite *unk_0020[2]; + u8 filler_0028[0x214]; + u32 unk_023c; + u16 unk_0240; + u16 unk_0242; + u8 curBox; + u8 unk_0245; + u8 unk_0246; +}; + +struct UnkStorageStruct +{ + struct Sprite *sprite; + u8 *tiles; + u16 palIndex; + u8 unk8; + u8 unk9; + u8 unk10; +}; + +struct PokemonStorageSystemData +{ + u8 state; + u8 boxOption; + u8 screenChangeType; + bool8 isReshowingPSS; + u8 taskId; + struct UnkStruct_2000020 unk_0020; + struct UnkStruct_2000028 unk_0028[8]; + u16 field_90[16]; + u16 field_B0[528 / 2]; + u16 field_2C0; + u16 field_2C2; + u8 field_2C4; + u8 field_2C5; + u8 showPartyMenuState; + u8 unk_02C7; + u8 unk_02C8; + bool8 unk_02C9; + s16 newCurrBoxId; + u16 bg2_X; + s16 field_2CE; + u16 field_2D0; + u8 field_2D2; + u8 field_2D3; + u8 field_2D4; + u8 field_2D5; + u16 field_2D6; + s16 field_2D8; + u16 field_2DA; + u16 field_2DC; + u16 field_2DE; + u16 field_2E0; + u8 field_2E2; + u8 field_2E3; + u8 field_2E4[20]; + u8 field_2F8[1024]; + u8 field_6F8; + u8 field_6F9; + u8 field_6FA; + s8 field_6FB; + u16 field_6FC[16]; + u16 field_71C; + u16 field_71E; + struct Sprite *field_720[2]; + struct Sprite *field_728[2]; + struct Sprite *field_730[2]; + u32 field_738; + u8 field_73C[80]; + u16 field_78C; + s16 wallpaperSetId; + s16 wallpaperId; + u16 field_792[360]; + u8 wallpaperChangeState; + u8 field_A63; + u8 field_A64; + s8 field_A65; + u8 field_A66; + u8 field_A67; + u8 *wallpaperTiles; + struct Sprite *movingMonSprite; + struct Sprite *partySprites[PARTY_SIZE]; + struct Sprite *boxMonsSprites[IN_BOX_COUNT]; + struct Sprite **field_B00; + struct Sprite **field_B04; + u16 field_B08[40]; + u16 field_B58[40]; + u16 boxSpecies[IN_BOX_COUNT]; + u32 boxPersonalities[IN_BOX_COUNT]; + u8 field_C5C; + u8 field_C5D; + u8 field_C5E; + u8 field_C5F; + u16 field_C60; + s16 field_C62; + s16 field_C64; + u16 field_C66; + u8 field_C68; + s8 field_C69; + u8 field_C6A; + u8 field_C6B; + struct WindowTemplate menuWindow; + struct StorageMenu menuItems[7]; + u8 menuItemsCount; + u8 menuWidth; + u8 field_CAE; + u8 field_CAF; + u16 field_CB0; + u8 field_CB2; + u8 field_CB3; + struct Sprite *field_CB4; + struct Sprite *field_CB8; + s32 field_CBC; + s32 field_CC0; + u32 field_CC4; + u32 field_CC8; + s16 field_CCC; + s16 field_CCE; + u16 field_CD0; + s8 field_CD2; + s8 field_CD3; + u8 field_CD4; + u8 field_CD5; + u8 field_CD6; + u8 field_CD7; + u8 field_CD8[2]; + u8 field_CDA; + u8 field_CDB; + const u32 *cursorMonPalette; + u32 cursorMonPersonality; + u16 cursorMonSpecies; + u16 cursorMonItem; + u16 field_CE8; + u8 field_CEA; + u8 cursorMonMarkings; + u8 cursorMonLevel; + bool8 cursorMonIsEgg; + u8 cursorMonNick[POKEMON_NAME_LENGTH + 1]; + u8 cursorMonNickText[36]; + u8 cursorMonSpeciesName[36]; + u8 cursorMonGenderLvlText[36]; + u8 cursorMonItemName[36]; + bool8 (*monPlaceChangeFunc)(void); + u8 monPlaceChangeState; + u8 field_D91; + struct Sprite *field_D94; + struct Sprite *field_D98[2]; + u16 *field_DA0; + struct PokemonMarkMenu field_DA4; + struct UnkPSSStruct_2002370 field_1E5C; + struct Pokemon movingMon; + struct Pokemon field_2108; + s8 field_216C; + u8 field_216D; + s8 field_216E; + s8 field_216F; + s8 field_2170; + s8 field_2171; + u16 field_2172; + u16 field_2174; + u16 field_2176[5]; + u8 field_2180; + u8 field_2181; + u8 field_2182; + u8 field_2183; + u8 field_2184; + u8 field_2185; + u8 field_2186; + u8 field_2187; + u8 field_2188; + union + { + struct Pokemon *mon; + struct BoxPokemon *box; + } field_218C; + u8 field_2190[40]; + u8 field_21B8[40]; + u8 field_21E0[POKEMON_NAME_LENGTH + 1]; + u8 field_21EB[15]; // TODO: ITEM NAME LENGTH + 1 + u8 field_21FA; + u8 field_21FB; + u8 field_21FC; + u8 field_21FD; + u8 field_21FE; + u8 inBoxMovingMode; + u16 field_2200; + struct UnkStorageStruct field_2204[3]; + u16 movingItem; + u16 field_2236; + u8 field_2238; + u8 field_2239; + u16 field_223A; + u16 *field_223C; + struct Sprite *cursorMonSprite; + u16 field_2244[16]; + u8 field_2264[96]; + u8 field_22C4[0x800]; + u8 field_2AC4[6144]; + u8 field_42C4[0x800]; + u8 field_4AC4[0x1000]; + u8 field_5AC4[0x800]; +}; + enum { BOX_OPTION_WITHDRAW, @@ -156,6 +406,28 @@ enum WALLPAPER_MACHINE, WALLPAPER_PLAIN, WALLPAPER_FRIENDS, // The one received as a gift from Walda's parents. + WALLPAPERS_COUNT +}; + +enum +{ + FRIENDS_ZIGZAGOON, + FRIENDS_SCREEN, + FRIENDS_HORIZONTAL, + FRIENDS_DIAGONAL, + FRIENDS_BLOCK, + FRIENDS_RIBBON, + FRIENDS_POKECENTER2, + FRIENDS_FRAME, + FRIENDS_BLANK, + FRIENDS_CIRCLES, + FRIENDS_AZUMARILL, + FRIENDS_PIKACHU, + FRIENDS_LEGENDARY, + FRIENDS_DUSCLOPS, + FRIENDS_LUDICOLO, + FRIENDS_WHISCASH, + FRIENDS_WALLPAPERS_COUNT }; enum @@ -200,11 +472,14 @@ extern u8 gUnknown_02039D0F; extern u16 gUnknown_02039D12; extern struct Pokemon gUnknown_02039D14; extern struct Struct_02039D80 *gUnknown_02039D80; +extern struct UnkPSSStruct_2002370 *gUnknown_02039D04; +extern struct PokemonStorageSystemData *gUnknown_02039D08; extern void sub_80F9BCC(u16, u16, u8); extern void sub_80F9BF4(u16, u16, u8); extern bool8 sub_80F9C1C(void); extern bool8 sub_80F9C30(void); +extern void sub_80C6D80(u8 *arg0, void *arg1, u8 arg2, u8 arg3, s32 arg4); extern const struct CompressedSpriteSheet gMonFrontPicTable[]; @@ -213,38 +488,34 @@ extern const u8 gText_Box[]; extern const u8 gText_JustOnePkmn[]; // This file's functions. -void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr); -void Cb2_EnterPSS(u8 boxOption); -u8 GetCurrentBoxOption(void); +static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr); +static void Cb2_EnterPSS(u8 boxOption); +static u8 GetCurrentBoxOption(void); static u8 HandleInput(void); -u8 sub_80CDC2C(void); -u8 sub_80CB9BC(void); -void LoadWallpaperGfx(u8 boxId, s8 direction); +static u8 sub_80CDC2C(void); +static u8 sub_80CB9BC(void); +static void LoadWallpaperGfx(u8 boxId, s8 direction); static void sub_80CCCFC(u8 boxId, s8 direction); static void sub_80CD0B8(s8 direction); -void SetBoxWallpaper(u8 boxId, u8 wallpaperId); -void SetCurrentBox(u8 boxId); +static void SetCurrentBox(u8 boxId); static void sub_80CC32C(u8 boxId); -void ZeroBoxMonAt(u8 boxId, u8 boxPos); static void sub_80C7958(u8 curBox); static void sub_80CCAE0(void *arg0); -void ResetWaldaWallpaper(void); static void sub_80C7B14(void); static void sub_80C7BB4(void); -void ScrollBackground(void); +static void ScrollBackground(void); static void sub_80C7B80(void); -void sub_80D2AA4(void); static void sub_80C7BE4(void); static void sub_80CAA14(void); static void sub_80CFDC4(void); static void sub_80CE790(void); static void sub_80CE8E4(void); -void GiveChosenBagItem(void); +static void GiveChosenBagItem(void); static void SetUpHidePartyMenu(void); static void DestroyAllPartyMonIcons(void); -void sub_80D11CC(void); -void LoadPSSMenuGfx(void); -void LoadWaveformSpritePalette(void); +static void sub_80D11CC(void); +static void LoadPSSMenuGfx(void); +static void LoadWaveformSpritePalette(void); static void sub_80CDC18(void); static void sub_80CD36C(void); static void sub_80CD3EC(void); @@ -253,84 +524,84 @@ static void sub_80CEBDC(void); static void SetScrollingBackground(void); static void sub_80CABE0(void); static void sub_80CAEAC(void); -void sub_80D0C60(void); -void sub_80CFEA8(void); +static void sub_80D0C60(void); +static void sub_80CFEA8(void); static void sub_80CDC0C(void); static void sub_80CAF04(void); static void sub_80CA0D8(void); static void AddMenu(void); static void sub_80CE250(void); -void InitCanRelaseMonVars(void); -void sub_80D01B8(void); -void ReleaseMon(void); -void sub_80D25F0(void); -void RefreshCursorMonData(void); -void LoadCursorMonSprite(void); +static void InitCanRelaseMonVars(void); +static void sub_80D01B8(void); +static void ReleaseMon(void); +static void RefreshCursorMonData(void); +static void LoadCursorMonSprite(void); static void sub_80CA154(void); static void sub_80CA1C4(void); static void sub_80CC064(void); static void sub_80CE324(void); -void ClearBottomWindow(void); +static void ClearBottomWindow(void); static void sub_80CA704(void); -void sub_80D013C(void); +static void sub_80D013C(void); static void sub_80CE00C(void); -void sub_80D1194(void); +static void sub_80D1194(void); static void PrintCursorMonInfo(void); static void sub_80CA65C(void); static void AddWallpaperSetsMenu(void); static void sub_80CD02C(void); static void InitMenu(void); static void sub_80CD158(void); -void sub_80CFC14(void); +static void sub_80CFC14(void); static void sub_80CEB40(void); static void sub_80CCEE0(void); -void sub_80D1818(void); +static void sub_80D1818(void); +static void sub_80D19B4(u32 arg0); static void sub_80CAA74(void); -void sub_80D17B4(void); +static void PrintItemDescription(void); static void sub_80CE760(void); static void sub_80CDBA0(void); static void sub_80CE7E8(void); -void sub_80CFECC(void); +static void sub_80CFECC(void); static void sub_80CA9EC(void); -void FreePSSData(void); +static void FreePSSData(void); static void AddBoxMenu(void); static void sub_80CCF9C(void); -void MoveMon(void); -void PlaceMon(void); +static void MoveMon(void); +static void PlaceMon(void); static void sub_80CAB20(void); static void sub_80CE22C(void); static void sub_80CDA68(void); static void sub_80CB950(void); static void sub_80CA9C0(void); static void SetUpDoShowPartyMenu(void); -void BoxSetMosaic(void); +static void BoxSetMosaic(void); static void sub_80C7CF4(struct Sprite *sprite); static void sub_80CC100(struct Sprite *sprite); static void sub_80CB278(struct Sprite *sprite); static void sub_80CD210(struct Sprite *sprite); -bool32 WaitForWallpaperGfxLoad(void); -bool8 InitPSSWindows(void); +static bool32 WaitForWallpaperGfxLoad(void); +static bool8 InitPSSWindows(void); static bool8 sub_80CC0A0(void); static bool8 sub_80CE2A8(void); -bool8 sub_80D0164(void); +static bool8 sub_80D0164(void); static bool8 sub_80CC35C(void); -bool8 sub_80D01E4(void); +static bool8 sub_80D01E4(void); static bool8 sub_80CDED4(void); static bool8 sub_80CDF08(void); -bool8 sub_80D184C(void); -bool8 sub_80D18E4(void); +static bool8 sub_80D184C(void); +static bool8 sub_80D18E4(void); static bool8 DoShowPartyMenu(void); -bool8 sub_80D1218(void); -bool8 ScrollToBox(void); -bool8 sub_80CD554(void); +static bool8 sub_80D1218(void); +static bool8 ScrollToBox(void); +static bool8 sub_80CD554(void); static bool8 HidePartyMenu(void); -bool8 sub_80D127C(void); -bool8 sub_80D0580(u8 arg0); -bool8 sub_80D0BC0(void); +static bool8 IsActiveItemMoving(void); +static bool8 sub_80D0580(u8 arg0); +static bool8 sub_80D0BC0(void); static bool8 sub_80CA2B8(void); static bool8 DoWallpaperGfxChange(void); -bool8 DoMonPlaceChange(void); -bool8 sub_80D00A8(void); +static bool8 DoMonPlaceChange(void); +static bool8 sub_80D00A8(void); static bool8 CanMovePartyMon(void); static bool8 CanShifMon(void); static bool8 IsCursorOnCloseBox(void); @@ -369,110 +640,100 @@ static void Cb_HandleWallpapers(u8 taskId); static void Cb_NameBox(u8 taskId); static void Cb_PrintCantStoreMail(u8 taskId); static void Cb_HandleMovingMonFromParty(u8 taskId); -void sub_80D2A90(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2); -void sub_80D259C(u8 arg0); static void SetUpScrollToBox(u8 boxId); -void sub_80CFE54(u8 animNum); -void sub_80D2918(u8 arg0); +static void sub_80CFE54(u8 animNum); static void SetMovingMonPriority(u8 priority); -void InitMonPlaceChange(u8 arg0); +static void InitMonPlaceChange(u8 arg0); static void SetMonMarkings(u8 markings); -void ShowYesNoWindow(s8 cursorPos); +static void ShowYesNoWindow(s8 cursorPos); static void sub_80CDBF8(u8 cursorBoxPosition); -void sub_80D01D0(u8 arg0); +static void sub_80D01D0(u8 arg0); static void sub_80CD1A8(bool8 arg0); static void sub_80CA984(bool8 arg0); -void CreatePartyMonsSprites(bool8 arg0); -void sub_80D2644(u8 arg0, u16 arg1, const void *arg2, u16 arg3, u16 arg4); -void sub_80D2770(u8 arg0, u16 arg1, u16 arg2); -void PrintStorageActionText(u8 id); -s16 sub_80D00AC(void); -s8 RunCanReleaseMon(void); -u8 GetBoxCursorPosition(void); +static void CreatePartyMonsSprites(bool8 arg0); +static void PrintStorageActionText(u8 id); +static s16 sub_80D00AC(void); +static s8 RunCanReleaseMon(void); +static u8 GetBoxCursorPosition(void); static void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos); static void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos); static void Item_TakeMons(u8 cursorArea, u8 cursorPos); static void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos); -struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); +static struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); static void SetWallpaperForCurrentBox(u8 wallpaperId); static void AddWallpapersMenu(u8 wallpaperSet); -u16 GetMovingItem(void); -void SetCurrentBoxMonData(u8 monId, s32 request, const void *value); -s32 GetCurrentBoxMonData(u8 boxPosition, s32 request); -void LoadCursorMonGfx(u16 species, u32 pid); +static u16 GetMovingItem(void); +static void LoadCursorMonGfx(u16 species, u32 pid); static void sub_80CA2D0(struct Sprite *sprite); static void sub_80CCF64(struct Sprite *sprite); static void sub_80CBA3C(struct Sprite *sprite); static void sub_80CCF30(struct Sprite *sprite); -void sub_80D27AC(u8 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); -void sub_80D27F4(u8 arg0, u8 arg1, s8 arg2); static void sub_80CBAF0(s16 yDelta); static void sub_80CAAA8(u8 arg0, bool8 isPartyMon); -const u8 *GetMovingItemName(void); -bool32 IsWaldaWallpaperUnlocked(void); +static const u8 *GetMovingItemName(void); static void SetMenuText(u8 textId); -void sub_80D0D8C(u8 cursorArea, u8 cursorPos); -void sub_80D0E50(u8 cursorArea, u8 cursorPos); -void sub_80D0F38(u16 item); +static void sub_80D0D8C(u8 cursorArea, u8 cursorPos); +static void sub_80D0E50(u8 cursorArea, u8 cursorPos); +static void sub_80D0F38(u16 item); static struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority); static void DestroyBoxMonIcon(struct Sprite *sprite); static void SetBoxSpeciesAndPersonalities(u8 boxId); static void sub_80CB9D0(struct Sprite *sprite, u16 partyId); static void sub_80CC370(u8 taskId); static void sub_80CCB50(u8 boxId); -s8 sub_80CC644(u8 boxId); -u8 GetBoxWallpaper(u8 boxId); -u32 GetWaldaWallpaperPatternId(void); -u32 GetWaldaWallpaperIconId(void); +static s8 sub_80CC644(u8 boxId); static void sub_80CCA3C(const void *tilemap, s8 direction, u8 arg2); -u16 *GetWaldaWallpaperColorsPtr(void); -void sub_80C6D80(u8 *arg0, void *arg1, u8 arg2, u8 arg3, s32 arg4); static s16 sub_80CD00C(const u8 *string); static bool8 MonPlaceChange_Shift(void); static bool8 MonPlaceChange_Move(void); static bool8 MonPlaceChange_Place(void); static bool8 sub_80CDEC4(void); static bool8 sub_80CDEB4(void); -void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y); +static void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y); static void SetShiftedMonData(u8 boxId, u8 position); static void SetMovedMonData(u8 boxId, u8 position); static void SetPlacedMonData(u8 boxId, u8 position); -void PurgeMonOrBoxMon(u8 boxId, u8 position); -void BoxMonAtToMon(u8 boxId, u8 position, struct Pokemon *dst); -void SetBoxMonAt(u8 boxId, u8 position, struct BoxPokemon *src); +static void PurgeMonOrBoxMon(u8 boxId, u8 position); static void SetCursorMonData(void *pokemon, u8 mode); -bool32 AtLeastThreeUsableMons(void); -bool32 CheckBoxedMonSanity(s32 boxId, s32 boxPosition); -s32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst); +static bool32 AtLeastThreeUsableMons(void); static u8 InBoxInput_Normal(void); static u8 InBoxInput_MovingMultiple(void); static u8 InBoxInput_GrabbingMultiple(void); -s8 sub_80CFF98(u8 arg0); -u8 sub_80CFA5C(void); -u8 sub_80D0BA4(void); +static s8 sub_80CFF98(u8 arg0); +static u8 sub_80CFA5C(void); +static u8 sub_80D0BA4(void); static bool8 sub_80CFA84(void); static bool8 sub_80CFB44(void); -bool8 sub_80D024C(void); -bool8 sub_80D0344(void); -bool8 sub_80D03B0(void); -bool8 sub_80D0420(void); -bool8 sub_80D04A0(void); -bool8 sub_80D04C8(void); +static bool8 sub_80D024C(void); +static bool8 sub_80D0344(void); +static bool8 sub_80D03B0(void); +static bool8 sub_80D0420(void); +static bool8 sub_80D04A0(void); +static bool8 sub_80D04C8(void); +static void sub_80D07B0(u8 arg0, u8 arg1); +static void sub_80D0834(u8 arg0, u8 arg1); +static void sub_80D0B5C(void); +static void sub_80D062C(void); +static void sub_80D0884(u16 arg0, u16 arg1, u16 arg2); +static void sub_80D08CC(void); +static void sub_80D09A4(void); +static void sub_80D0A1C(void); +static void sub_80D0AAC(void); +static u8 sub_80D0894(void); +static void sub_80D0778(u8 arg0, u8 arg1, u8 arg2); +static void sub_80D0708(u8 arg0, u8 arg1, u8 arg2); +static void sub_80D06D0(u8 arg0, u8 arg1, u8 arg2); +static void sub_80D0740(u8 arg0, u8 arg1, u8 arg2); void sub_80D304C(u16 palIndex); -void sub_80D07B0(u8 arg0, u8 arg1); -void sub_80D0834(u8 arg0, u8 arg1); -void sub_80D0B5C(void); -void sub_80D062C(void); -void sub_80D0884(u16 arg0, u16 arg1, u16 arg2); -void sub_80D08CC(void); -void sub_80D09A4(void); -void sub_80D0A1C(void); -void sub_80D0AAC(void); -u8 sub_80D0894(void); -void sub_80D0778(u8 arg0, u8 arg1, u8 arg2); -void sub_80D0708(u8 arg0, u8 arg1, u8 arg2); -void sub_80D06D0(u8 arg0, u8 arg1, u8 arg2); -void sub_80D0740(u8 arg0, u8 arg1, u8 arg2); +void sub_80D27AC(u8 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4); +void sub_80D27F4(u8 arg0, u8 arg1, s8 arg2); +void sub_80D2644(u8 arg0, u16 arg1, const void *arg2, u16 arg3, u16 arg4); +void sub_80D2770(u8 arg0, u16 arg1, u16 arg2); +void sub_80D2A90(struct UnkStruct_2000020 *arg0, struct UnkStruct_2000028 *arg1, u32 arg2); +void sub_80D259C(u8 arg0); +void sub_80D25F0(void); +void sub_80D2AA4(void); +void sub_80D2918(u8 arg0); // static const rom data static const struct PSS_MenuStringPtrs gUnknown_085716C0[] = @@ -1294,9 +1555,9 @@ static const struct SpriteTemplate gUnknown_0857B0E0 = sub_80CD210 }; -const u16 gHandCursorPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor.gbapal"); -const u8 gHandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp"); -const u8 gHandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp"); +static const u16 gHandCursorPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor.gbapal"); +static const u8 gHandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp"); +static const u8 gHandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp"); // code u8 CountMonsInBox(u8 boxId) @@ -1436,7 +1697,7 @@ static void sub_80C71A4(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 h Dma3FillLarge16_(0, dest, width); } -void Task_PokemonStorageSystemPC(u8 taskId) +static void Task_PokemonStorageSystemPC(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1553,7 +1814,7 @@ void ShowPokemonStorageSystemPC(void) ScriptContext2_Enable(); } -void FieldCb_ReturnToPcMenu(void) +static void FieldCb_ReturnToPcMenu(void) { u8 taskId; MainCallback vblankCb = gMain.vblankCallback; @@ -1567,7 +1828,7 @@ void FieldCb_ReturnToPcMenu(void) pal_fill_black(); } -void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr) +static void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr) { s16 windowId; struct WindowTemplate winTemplate = gUnknown_085716E8; @@ -1580,14 +1841,14 @@ void CreatePCMenu(u8 whichMenu, s16 *windowIdPtr) *windowIdPtr = windowId; } -void Cb2_ExitPSS(void) +static void Cb2_ExitPSS(void) { sPreviousBoxOption = GetCurrentBoxOption(); gFieldCallback = FieldCb_ReturnToPcMenu; SetMainCallback2(CB2_ReturnToField); } -s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode) +static s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode) { s16 i; s16 direction; @@ -1682,7 +1943,7 @@ static void sub_80C78E4(void) sub_80C7B14(); } -u8 sub_80C78F0(void) +static u8 sub_80C78F0(void) { if (gMain.newKeys & B_BUTTON) { @@ -1842,7 +2103,7 @@ static void sub_80C7CF4(struct Sprite *sprite) } } -void VblankCb_PSS(void) +static void VblankCb_PSS(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -1851,7 +2112,7 @@ void VblankCb_PSS(void) SetGpuReg(REG_OFFSET_BG2HOFS, gUnknown_02039D08->bg2_X); } -void Cb2_PSS(void) +static void Cb2_PSS(void) { RunTasks(); do_scheduled_bg_tilemap_copies_to_vram(); @@ -1861,7 +2122,7 @@ void Cb2_PSS(void) BuildOamBuffer(); } -void Cb2_EnterPSS(u8 boxOption) +static void Cb2_EnterPSS(u8 boxOption) { ResetTasks(); sCurrentBoxOption = boxOption; @@ -1882,7 +2143,7 @@ void Cb2_EnterPSS(u8 boxOption) } } -void Cb2_ReturnToPSS(void) +static void Cb2_ReturnToPSS(void) { ResetTasks(); gUnknown_02039D08 = Alloc(sizeof(*gUnknown_02039D08)); @@ -1900,7 +2161,7 @@ void Cb2_ReturnToPSS(void) } } -void ResetAllBgCoords(void) +static void ResetAllBgCoords(void) { SetGpuReg(REG_OFFSET_BG0HOFS, 0); SetGpuReg(REG_OFFSET_BG0VOFS, 0); @@ -2428,7 +2689,7 @@ static void Cb_OnSelectedMon(u8 taskId) PlaySE(SE_SELECT); if (gUnknown_02039D08->boxOption != BOX_OPTION_MOVE_ITEMS) PrintStorageActionText(PC_TEXT_IS_SELECTED); - else if (sub_80D127C() || gUnknown_02039D08->cursorMonItem != 0) + else if (IsActiveItemMoving() || gUnknown_02039D08->cursorMonItem != 0) PrintStorageActionText(PC_TEXT_IS_SELECTED2); else PrintStorageActionText(PC_TEXT_GIVE_TO_MON); @@ -3079,7 +3340,7 @@ static void Cb_ShowItemInfo(u8 taskId) if (!IsDma3ManagerBusyWithBgCopy()) { PlaySE(SE_WIN_OPEN); - sub_80D17B4(); + PrintItemDescription(); sub_80D1818(); gUnknown_02039D08->state++; } @@ -3451,7 +3712,7 @@ static void Cb_OnCloseBoxPressed(u8 taskId) PrintStorageActionText(PC_TEXT_HOLDING_POKE); gUnknown_02039D08->state = 1; } - else if (sub_80D127C()) + else if (IsActiveItemMoving()) { SetPSSCallback(Cb_CloseBoxWhileHoldingItem); } @@ -3512,7 +3773,7 @@ static void Cb_OnBPressed(u8 taskId) PrintStorageActionText(PC_TEXT_HOLDING_POKE); gUnknown_02039D08->state = 1; } - else if (sub_80D127C()) + else if (IsActiveItemMoving()) { SetPSSCallback(Cb_CloseBoxWhileHoldingItem); } @@ -3568,7 +3829,7 @@ static void Cb_ChangeScreen(u8 taskId) u8 mode, monIndex, maxMonIndex; u8 screenChangeType = gUnknown_02039D08->screenChangeType; - if (gUnknown_02039D08->boxOption == BOX_OPTION_MOVE_ITEMS && sub_80D127C() == TRUE) + if (gUnknown_02039D08->boxOption == BOX_OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE) gUnknown_02039D12 = GetMovingItem(); else gUnknown_02039D12 = 0; @@ -3604,7 +3865,7 @@ static void Cb_ChangeScreen(u8 taskId) DestroyTask(taskId); } -void GiveChosenBagItem(void) +static void GiveChosenBagItem(void) { u16 item = gSpecialVar_ItemId; @@ -3621,7 +3882,7 @@ void GiveChosenBagItem(void) } } -void FreePSSData(void) +static void FreePSSData(void) { sub_80D25F0(); sub_80D01B8(); @@ -3636,13 +3897,13 @@ static void SetScrollingBackground(void) LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, (void *)VRAM + 0xF800); } -void ScrollBackground(void) +static void ScrollBackground(void) { ChangeBgX(3, 128, 1); ChangeBgY(3, 128, 2); } -void LoadPSSMenuGfx(void) +static void LoadPSSMenuGfx(void) { InitBgsFromTemplates(0, gUnknown_08572734, ARRAY_COUNT(gUnknown_08572734)); DecompressAndLoadBgGfxUsingHeap(1, gPSSMenu_Gfx, 0, 0, 0); @@ -3652,7 +3913,7 @@ void LoadPSSMenuGfx(void) schedule_bg_copy_tilemap_to_vram(1); } -bool8 InitPSSWindows(void) +static bool8 InitPSSWindows(void) { if (!InitWindows(gUnknown_08572714)) { @@ -3665,7 +3926,7 @@ bool8 InitPSSWindows(void) } } -void LoadWaveformSpritePalette(void) +static void LoadWaveformSpritePalette(void) { LoadSpritePalette(&gWaveformSpritePalette); } @@ -3710,7 +3971,7 @@ static void sub_80CA1C4(void) } } -void RefreshCursorMonData(void) +static void RefreshCursorMonData(void) { LoadCursorMonGfx(gUnknown_02039D08->cursorMonSpecies, gUnknown_02039D08->cursorMonPersonality); PrintCursorMonInfo(); @@ -3718,7 +3979,7 @@ void RefreshCursorMonData(void) schedule_bg_copy_tilemap_to_vram(0); } -void BoxSetMosaic(void) +static void BoxSetMosaic(void) { RefreshCursorMonData(); if (gUnknown_02039D08->cursorMonSprite) @@ -3731,7 +3992,7 @@ void BoxSetMosaic(void) } } -u8 sub_80CA2B8(void) +static u8 sub_80CA2B8(void) { return gUnknown_02039D08->cursorMonSprite->oam.mosaic; } @@ -3749,7 +4010,7 @@ static void sub_80CA2D0(struct Sprite *sprite) } } -void LoadCursorMonSprite(void) +static void LoadCursorMonSprite(void) { u16 i; u16 tileStart; @@ -3792,7 +4053,7 @@ void LoadCursorMonSprite(void) } } -void LoadCursorMonGfx(u16 species, u32 pid) +static void LoadCursorMonGfx(u16 species, u32 pid) { if (gUnknown_02039D08->cursorMonSprite == NULL) return; @@ -4088,7 +4349,7 @@ static void sub_80CAC1C(void) CopyBgTilemapBufferToVram(0); } -void PrintStorageActionText(u8 id) +static void PrintStorageActionText(u8 id) { u8 *txtPtr; @@ -4108,7 +4369,7 @@ void PrintStorageActionText(u8 id) DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_02039D08->field_21E0); break; case PC_TEXT_FMT_ITEM_NAME: - if (sub_80D127C()) + if (IsActiveItemMoving()) txtPtr = StringCopy(gUnknown_02039D08->field_21EB, GetMovingItemName()); else txtPtr = StringCopy(gUnknown_02039D08->field_21EB, gUnknown_02039D08->cursorMonItemName); @@ -4130,13 +4391,13 @@ void PrintStorageActionText(u8 id) schedule_bg_copy_tilemap_to_vram(0); } -void ShowYesNoWindow(s8 cursorPos) +static void ShowYesNoWindow(s8 cursorPos) { CreateYesNoMenu(&sYesNoWindowTemplate, 11, 14, 0); Menu_MoveCursorNoWrapAround(cursorPos); } -void ClearBottomWindow(void) +static void ClearBottomWindow(void) { sub_8198070(1, FALSE); schedule_bg_copy_tilemap_to_vram(0); @@ -4187,7 +4448,7 @@ static void AddWallpapersMenu(u8 wallpaperSet) AddMenu(); } -u8 GetCurrentBoxOption(void) +static u8 GetCurrentBoxOption(void) { return sCurrentBoxOption; } @@ -4227,12 +4488,12 @@ static void sub_80CAF04(void) gUnknown_02039D08->field_78C = 0; } -u8 sub_80CAFAC(void) +static u8 sub_80CAFAC(void) { return (IsCursorInBox() ? 2 : 1); } -void CreateMovingMonIcon(void) +static void CreateMovingMonIcon(void) { u32 personality = GetMonData(&gUnknown_02039D08->movingMon, MON_DATA_PERSONALITY); u16 species = GetMonData(&gUnknown_02039D08->movingMon, MON_DATA_SPECIES2); @@ -4280,7 +4541,7 @@ static void sub_80CB028(u8 boxId) } } -void sub_80CB140(u8 boxPosition) +static void sub_80CB140(u8 boxPosition) { u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES2); @@ -4357,7 +4618,7 @@ static void DestroyAllIconsInRow(u8 row) } } -u8 sub_80CB2F8(u8 row, u16 times, s16 xDelta) +static u8 sub_80CB2F8(u8 row, u16 times, s16 xDelta) { s32 i; u16 y = 44; @@ -4498,7 +4759,7 @@ static void SetBoxSpeciesAndPersonalities(u8 boxId) gUnknown_02039D08->field_C5C = boxId; } -void DestroyBoxMonIconAtPosition(u8 boxPosition) +static void DestroyBoxMonIconAtPosition(u8 boxPosition) { if (gUnknown_02039D08->boxMonsSprites[boxPosition] != NULL) { @@ -4507,7 +4768,7 @@ void DestroyBoxMonIconAtPosition(u8 boxPosition) } } -void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode) +static void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode) { if (gUnknown_02039D08->boxMonsSprites[boxPosition] != NULL) { @@ -4515,7 +4776,7 @@ void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode) } } -void CreatePartyMonsSprites(bool8 arg0) +static void CreatePartyMonsSprites(bool8 arg0) { u16 i, count; u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2); @@ -4577,7 +4838,7 @@ static void sub_80CB950(void) } } -u8 sub_80CB9BC(void) +static u8 sub_80CB9BC(void) { return gUnknown_02039D08->field_C5E; } @@ -4679,7 +4940,7 @@ static void DestroyAllPartyMonIcons(void) } } -void SetPartyMonIconObjMode(u8 partyId, u8 objMode) +static void SetPartyMonIconObjMode(u8 partyId, u8 objMode) { if (gUnknown_02039D08->partySprites[partyId] != NULL) { @@ -4998,7 +5259,7 @@ static void SetUpScrollToBox(u8 boxId) gUnknown_02039D08->field_A63 = 0; } -bool8 ScrollToBox(void) +static bool8 ScrollToBox(void) { bool8 var; @@ -5032,7 +5293,7 @@ bool8 ScrollToBox(void) return TRUE; } -s8 sub_80CC644(u8 boxId) +static s8 sub_80CC644(u8 boxId) { u8 i; u8 currentBox = StorageGetCurrentBox(); @@ -5089,7 +5350,7 @@ static bool8 DoWallpaperGfxChange(void) return TRUE; } -void LoadWallpaperGfx(u8 boxId, s8 direction) +static void LoadWallpaperGfx(u8 boxId, s8 direction) { u8 wallpaperId; const struct WallpaperTable *wallpaperGfx; @@ -5145,7 +5406,7 @@ void LoadWallpaperGfx(u8 boxId, s8 direction) CopyBgTilemapBufferToVram(2); } -bool32 WaitForWallpaperGfxLoad(void) +static bool32 WaitForWallpaperGfxLoad(void) { if (IsDma3ManagerBusyWithBgCopy()) return FALSE; @@ -5456,7 +5717,7 @@ static void sub_80CD210(struct Sprite *sprite) } } -struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority) +static struct Sprite *sub_80CD2E8(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority) { u8 spriteId = CreateSprite(&gUnknown_0857B0E0, x, y, subpriority); if (spriteId == MAX_SPRITES) @@ -5501,7 +5762,7 @@ static void sub_80CD3EC(void) } } -void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) +static void sub_80CD444(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) { switch (cursorArea) { @@ -5554,7 +5815,7 @@ static u16 sub_80CD504(void) } } -bool8 sub_80CD554(void) +static bool8 sub_80CD554(void) { s16 tmp; @@ -5672,7 +5933,7 @@ static void sub_80CD894(u8 newCurosrArea, u8 newCursorPosition) } else { - if (!sub_80D127C()) + if (!IsActiveItemMoving()) StartSpriteAnim(gUnknown_02039D08->field_CB4, 1); } @@ -5731,7 +5992,7 @@ static void sub_80CDA68(void) } else { - if (!sub_80D127C()) + if (!IsActiveItemMoving()) StartSpriteAnim(gUnknown_02039D08->field_CB4, 0); } @@ -5795,12 +6056,12 @@ static void sub_80CDC18(void) gUnknown_02039D7E = sBoxCursorPosition; } -u8 sub_80CDC2C(void) +static u8 sub_80CDC2C(void) { return gUnknown_02039D7E; } -void InitMonPlaceChange(u8 a0) +static void InitMonPlaceChange(u8 a0) { static bool8 (*const placeChangeFuncs[])(void) = { @@ -5813,7 +6074,7 @@ void InitMonPlaceChange(u8 a0) gUnknown_02039D08->monPlaceChangeState = 0; } -void sub_80CDC64(bool8 arg0) +static void sub_80CDC64(bool8 arg0) { if (!arg0) gUnknown_02039D08->monPlaceChangeFunc = sub_80CDEB4; @@ -5823,7 +6084,7 @@ void sub_80CDC64(bool8 arg0) gUnknown_02039D08->monPlaceChangeState = 0; } -bool8 DoMonPlaceChange(void) +static bool8 DoMonPlaceChange(void) { return gUnknown_02039D08->monPlaceChangeFunc(); } @@ -5959,7 +6220,7 @@ static bool8 sub_80CDF08(void) return TRUE; } -void MoveMon(void) +static void MoveMon(void) { switch (sBoxCursorArea) { @@ -5981,7 +6242,7 @@ void MoveMon(void) sIsMonBeingMoved = TRUE; } -void PlaceMon(void) +static void PlaceMon(void) { u8 boxId; @@ -6033,7 +6294,7 @@ static void SetPlacedMonData(u8 boxId, u8 position) } } -void PurgeMonOrBoxMon(u8 boxId, u8 position) +static void PurgeMonOrBoxMon(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) ZeroMonData(&gPlayerParty[position]); @@ -6115,7 +6376,7 @@ static bool8 sub_80CE2A8(void) } } -void ReleaseMon(void) +static void ReleaseMon(void) { u8 boxId; @@ -6174,7 +6435,7 @@ static void sub_80CE350(u16 *moves) *moves = MOVES_COUNT; } -void InitCanRelaseMonVars(void) +static void InitCanRelaseMonVars(void) { if (!AtLeastThreeUsableMons()) { @@ -6219,7 +6480,7 @@ void InitCanRelaseMonVars(void) gUnknown_02039D08->field_2172 = 0; } -bool32 AtLeastThreeUsableMons(void) +static bool32 AtLeastThreeUsableMons(void) { s32 i, j, count; @@ -6248,7 +6509,7 @@ bool32 AtLeastThreeUsableMons(void) return FALSE; } -s8 RunCanReleaseMon(void) +static s8 RunCanReleaseMon(void) { u16 i; u16 knownMoves; @@ -8048,7 +8309,7 @@ static u8 HandleInput(void) return 0; } -void AddBoxMenu(void) +static void AddBoxMenu(void) { InitMenu(); SetMenuText(9); @@ -8057,7 +8318,7 @@ void AddBoxMenu(void) SetMenuText(0); } -u8 sub_80CFA5C(void) +static u8 sub_80CFA5C(void) { InitMenu(); if (gUnknown_02039D08->boxOption != BOX_OPTION_MOVE_ITEMS) @@ -8125,7 +8386,7 @@ static bool8 sub_80CFB44(void) if (gUnknown_02039D08->cursorMonSpecies == SPECIES_EGG) return FALSE; - if (!sub_80D127C()) + if (!IsActiveItemMoving()) { if (gUnknown_02039D08->cursorMonItem == 0) { @@ -8166,13 +8427,13 @@ static bool8 sub_80CFB44(void) return TRUE; } -void sub_80CFBF4(struct Sprite *sprite) +static void sub_80CFBF4(struct Sprite *sprite) { sprite->pos1.x = gUnknown_02039D08->field_CB4->pos1.x; sprite->pos1.y = gUnknown_02039D08->field_CB4->pos1.y + 20; } -void sub_80CFC14(void) +static void sub_80CFC14(void) { u16 x, y; u8 spriteId; @@ -8298,18 +8559,18 @@ static const struct SpriteTemplate gSpriteTemplate_857BA68 = } } -void sub_80CFDC4(void) +static void sub_80CFDC4(void) { sCanOnlyMove = !sCanOnlyMove; gUnknown_02039D08->field_CB4->oam.paletteNum = gUnknown_02039D08->field_CD8[sCanOnlyMove]; } -u8 GetBoxCursorPosition(void) +static u8 GetBoxCursorPosition(void) { return sBoxCursorPosition; } -void sub_80CFE14(u8 *arg0, u8 *arg1) +static void sub_80CFE14(u8 *arg0, u8 *arg1) { if (sBoxCursorArea == CURSOR_AREA_IN_BOX) { @@ -8323,28 +8584,28 @@ void sub_80CFE14(u8 *arg0, u8 *arg1) } } -void sub_80CFE54(u8 animNum) +static void sub_80CFE54(u8 animNum) { StartSpriteAnim(gUnknown_02039D08->field_CB4, animNum); } -u8 sub_80CFE78(void) +static u8 sub_80CFE78(void) { return sMovingMonOrigBoxId; } -void sub_80CFE84(void) +static void sub_80CFE84(void) { gUnknown_02039D08->field_CB4->oam.priority = 1; } -void sub_80CFEA8(void) +static void sub_80CFEA8(void) { if (sBoxCursorArea == CURSOR_AREA_IN_BOX) sub_80D0E50(CURSOR_AREA_IN_BOX, sBoxCursorPosition); } -void sub_80CFECC(void) +static void sub_80CFECC(void) { if (sBoxCursorArea == CURSOR_AREA_IN_BOX) sub_80D0D8C(CURSOR_AREA_IN_BOX, sBoxCursorPosition); @@ -8419,7 +8680,7 @@ static void SetMenuText(u8 textId) } } -s8 sub_80CFF98(u8 arg0) +static s8 sub_80CFF98(u8 arg0) { if (arg0 >= gUnknown_02039D08->menuItemsCount) return -1; @@ -8442,12 +8703,12 @@ static void AddMenu(void) gUnknown_02039D08->field_CAE = 0; } -bool8 sub_80D00A8(void) +static bool8 sub_80D00A8(void) { return 0; } -s16 sub_80D00AC(void) +static s16 sub_80D00AC(void) { s32 textId = -2; @@ -8487,7 +8748,7 @@ s16 sub_80D00AC(void) return textId; } -void sub_80D013C(void) +static void sub_80D013C(void) { sub_8198070(gUnknown_02039D08->field_CB0, TRUE); RemoveWindow(gUnknown_02039D08->field_CB0); @@ -8497,7 +8758,7 @@ void sub_80D013C(void) // The icons are converted to background 0 which coordinates are changed while moving mons. // There is also a bit of math involved in determining how many column/rows of mons to grab/move. -const struct WindowTemplate gUnknown_0857BB1C = +static const struct WindowTemplate gUnknown_0857BB1C = { .bg = 0, .tilemapLeft = 10, @@ -8508,7 +8769,7 @@ const struct WindowTemplate gUnknown_0857BB1C = .baseBlock = 0xA, }; -bool8 sub_80D0164(void) +static bool8 sub_80D0164(void) { gUnknown_02039D80 = Alloc(sizeof(*gUnknown_02039D80)); if (gUnknown_02039D80 != NULL) @@ -8524,19 +8785,19 @@ bool8 sub_80D0164(void) return FALSE; } -void sub_80D01B8(void) +static void sub_80D01B8(void) { if (gUnknown_02039D80 != NULL) Free(gUnknown_02039D80); } -void sub_80D01D0(u8 arg0) +static void sub_80D01D0(u8 arg0) { gUnknown_02039D80->field_0 = arg0; gUnknown_02039D80->state = 0; } -bool8 sub_80D01E4(void) +static bool8 sub_80D01E4(void) { switch (gUnknown_02039D80->field_0) { @@ -8557,7 +8818,7 @@ bool8 sub_80D01E4(void) return FALSE; } -bool8 sub_80D024C(void) +static bool8 sub_80D024C(void) { switch (gUnknown_02039D80->state) { @@ -8595,7 +8856,7 @@ bool8 sub_80D024C(void) return TRUE; } -bool8 sub_80D0344(void) +static bool8 sub_80D0344(void) { switch (gUnknown_02039D80->state) { @@ -8622,7 +8883,7 @@ bool8 sub_80D0344(void) return TRUE; } -bool8 sub_80D03B0(void) +static bool8 sub_80D03B0(void) { switch (gUnknown_02039D80->state) { @@ -8644,7 +8905,7 @@ bool8 sub_80D03B0(void) return TRUE; } -bool8 sub_80D0420(void) +static bool8 sub_80D0420(void) { u8 var1, var2; @@ -8676,7 +8937,7 @@ bool8 sub_80D0420(void) return TRUE; } -bool8 sub_80D04A0(void) +static bool8 sub_80D04A0(void) { u8 var1 = sub_80CD554(); u8 var2 = sub_80D0894(); @@ -8687,7 +8948,7 @@ bool8 sub_80D04A0(void) return TRUE; } -bool8 sub_80D04C8(void) +static bool8 sub_80D04C8(void) { switch (gUnknown_02039D80->state) { @@ -8729,7 +8990,7 @@ bool8 sub_80D04C8(void) return TRUE; } -bool8 sub_80D0580(u8 arg0) +static bool8 sub_80D0580(u8 arg0) { switch (arg0) { @@ -8762,7 +9023,7 @@ bool8 sub_80D0580(u8 arg0) return TRUE; } -void sub_80D062C(void) +static void sub_80D062C(void) { s16 var = (abs(gUnknown_02039D80->fromRow - gUnknown_02039D80->field_6)) - (abs(gUnknown_02039D80->fromRow - gUnknown_02039D80->toRow)); s16 var2 = (abs(gUnknown_02039D80->fromColumn - gUnknown_02039D80->field_7)) - (abs(gUnknown_02039D80->fromColumn - gUnknown_02039D80->toColumn)); @@ -8786,7 +9047,7 @@ void sub_80D062C(void) } } -void sub_80D06D0(u8 arg0, u8 arg1, u8 arg2) +static void sub_80D06D0(u8 arg0, u8 arg1, u8 arg2) { u8 var1 = arg1; @@ -8800,7 +9061,7 @@ void sub_80D06D0(u8 arg0, u8 arg1, u8 arg2) sub_80D07B0(arg0, arg1++); } -void sub_80D0708(u8 arg0, u8 arg1, u8 arg2) +static void sub_80D0708(u8 arg0, u8 arg1, u8 arg2) { u8 var1 = arg1; @@ -8814,7 +9075,7 @@ void sub_80D0708(u8 arg0, u8 arg1, u8 arg2) sub_80D07B0(arg1++, arg0); } -void sub_80D0740(u8 arg0, u8 arg1, u8 arg2) +static void sub_80D0740(u8 arg0, u8 arg1, u8 arg2) { u8 var1 = arg1; @@ -8828,7 +9089,7 @@ void sub_80D0740(u8 arg0, u8 arg1, u8 arg2) sub_80D0834(arg0, arg1++); } -void sub_80D0778(u8 arg0, u8 arg1, u8 arg2) +static void sub_80D0778(u8 arg0, u8 arg1, u8 arg2) { u8 var1 = arg1; @@ -8842,7 +9103,7 @@ void sub_80D0778(u8 arg0, u8 arg1, u8 arg2) sub_80D0834(arg1++, arg0); } -void sub_80D07B0(u8 arg0, u8 arg1) +static void sub_80D07B0(u8 arg0, u8 arg1) { u8 position = arg0 + (6 * arg1); u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); @@ -8867,7 +9128,7 @@ void sub_80D07B0(u8 arg0, u8 arg1) } } -void sub_80D0834(u8 arg0, u8 arg1) +static void sub_80D0834(u8 arg0, u8 arg1) { u8 position = arg0 + (6 * arg1); u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); @@ -8883,14 +9144,14 @@ void sub_80D0834(u8 arg0, u8 arg1) } } -void sub_80D0884(u16 arg0, u16 arg1, u16 arg2) +static void sub_80D0884(u16 arg0, u16 arg1, u16 arg2) { gUnknown_02039D80->bgX = arg0; gUnknown_02039D80->bgY = arg1; gUnknown_02039D80->field_10 = arg2; } -u8 sub_80D0894(void) +static u8 sub_80D0894(void) { if (gUnknown_02039D80->field_10 != 0) { @@ -8902,7 +9163,7 @@ u8 sub_80D0894(void) return gUnknown_02039D80->field_10; } -void sub_80D08CC(void) +static void sub_80D08CC(void) { s32 i, j, r8, r9; s32 rowCount, columnCount; @@ -8931,7 +9192,7 @@ void sub_80D08CC(void) } } -void sub_80D09A4(void) +static void sub_80D09A4(void) { s32 i, j; s32 rowCount = gUnknown_02039D80->minRow + gUnknown_02039D80->rowsTotal; @@ -8950,7 +9211,7 @@ void sub_80D09A4(void) } } -void sub_80D0A1C(void) +static void sub_80D0A1C(void) { s32 i, j; s32 rowCount = gUnknown_02039D80->minRow + gUnknown_02039D80->rowsTotal; @@ -8970,7 +9231,7 @@ void sub_80D0A1C(void) } } -void sub_80D0AAC(void) +static void sub_80D0AAC(void) { s32 i, j; s32 rowCount = gUnknown_02039D80->minRow + gUnknown_02039D80->rowsTotal; @@ -8991,7 +9252,7 @@ void sub_80D0AAC(void) } } -void sub_80D0B5C(void) +static void sub_80D0B5C(void) { ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -9001,12 +9262,12 @@ void sub_80D0B5C(void) CopyBgTilemapBufferToVram(0); } -u8 sub_80D0BA4(void) +static u8 sub_80D0BA4(void) { return (IN_BOX_ROWS * gUnknown_02039D80->fromColumn) + gUnknown_02039D80->fromRow; } -bool8 sub_80D0BC0(void) +static bool8 sub_80D0BC0(void) { s32 i, j; s32 rowCount = gUnknown_02039D80->minRow + gUnknown_02039D80->rowsTotal; @@ -9030,7 +9291,7 @@ bool8 sub_80D0BC0(void) return TRUE; } -const u32 gUnknown_0857BB24[] = INCBIN_U32("graphics/pokemon_storage/unknown_frame.4bpp"); +static const u32 gUnknown_0857BB24[] = INCBIN_U32("graphics/pokemon_storage/unknown_frame.4bpp"); static const struct OamData sOamData_857BBA4 = { @@ -9109,7 +9370,7 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_857BC44[] = sSpriteAffineAnim_857BC44 }; -const struct SpriteTemplate gSpriteTemplate_857BC70 = +static const struct SpriteTemplate gSpriteTemplate_857BC70 = { .tileTag = 7, .paletteTag = 0xdacb, @@ -9120,7 +9381,7 @@ const struct SpriteTemplate gSpriteTemplate_857BC70 = .callback = SpriteCallbackDummy, }; -void sub_80D0C60(void) +static void sub_80D0C60(void) { s32 i; u8 spriteId; @@ -9153,20 +9414,25 @@ void sub_80D0C60(void) } // The functions below handle new features of MOVE_ITEMS box option. - -bool32 sub_80D1324(u8 cursorArea, u8 cursorPos); -const u32 *GetItemIconPic(u16 itemId); -const u16 *GetItemIconPalette(u16 itemId); -u8 sub_80D12E8(void); -void sub_80D140C(u8 id, u8 cursorArea, u8 cursorPos); -void sub_80D1524(u8 id, const u32 *itemTiles, const u16 *itemPal); -void sub_80D15D4(u8 id, u8 animNum); -void sub_80D1740(u8 id, bool8 arg1); -u8 sub_80D1370(u8 cursorArea, u8 cursorPos); -void sub_80D1604(u8 id, u8 arg1, u8 cursorArea, u8 cursorPos); -void sub_80D1AD8(struct Sprite *sprite); - -void sub_80D0D8C(u8 cursorArea, u8 cursorPos) +static bool32 sub_80D1324(u8 cursorArea, u8 cursorPos); +static const u32 *GetItemIconPic(u16 itemId); +static const u32 *GetItemIconPalette(u16 itemId); +static u8 sub_80D12E8(void); +static void sub_80D140C(u8 id, u8 cursorArea, u8 cursorPos); +static void sub_80D1524(u8 id, const u32 *itemTiles, const u32 *itemPal); +static void sub_80D15D4(u8 id, u8 animNum); +static void sub_80D1740(u8 id, bool8 arg1); +static u8 sub_80D1370(u8 cursorArea, u8 cursorPos); +static void sub_80D1604(u8 id, u8 arg1, u8 arg2, u8 arg3); +static void sub_80D1AD8(struct Sprite *sprite); +static void sub_80D1A48(struct Sprite *sprite); +static void sub_80D1A74(struct Sprite *sprite); +static void sub_80D1B14(struct Sprite *sprite); +static void sub_80D1B94(struct Sprite *sprite); +static void sub_80D1CCC(struct Sprite *sprite); +static void sub_80D1C30(struct Sprite *sprite); + +static void sub_80D0D8C(u8 cursorArea, u8 cursorPos) { u16 heldItem; @@ -9194,7 +9460,7 @@ void sub_80D0D8C(u8 cursorArea, u8 cursorPos) if (heldItem != 0) { const u32 *tiles = GetItemIconPic(heldItem); - const u16 *pal = GetItemIconPalette(heldItem); + const u32 *pal = GetItemIconPalette(heldItem); u8 id = sub_80D12E8(); sub_80D140C(id, cursorArea, cursorPos); @@ -9204,7 +9470,7 @@ void sub_80D0D8C(u8 cursorArea, u8 cursorPos) } } -void sub_80D0E50(u8 cursorArea, u8 cursorPos) +static void sub_80D0E50(u8 cursorArea, u8 cursorPos) { u8 id; @@ -9243,10 +9509,10 @@ static void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) gUnknown_02039D08->movingItem = gUnknown_02039D08->cursorMonItem; } -void sub_80D0F38(u16 item) +static void sub_80D0F38(u16 item) { const u32 *tiles = GetItemIconPic(item); - const u16 *pal = GetItemIconPalette(item); + const u32 *pal = GetItemIconPalette(item); u8 id = sub_80D12E8(); sub_80D1524(id, tiles, pal); @@ -9332,7 +9598,7 @@ static void Item_TakeMons(u8 cursorArea, u8 cursorPos) } } -void sub_80D1194(void) +static void sub_80D1194(void) { if (gUnknown_02039D08->boxOption == BOX_OPTION_MOVE_ITEMS) { @@ -9342,7 +9608,7 @@ void sub_80D1194(void) } } -void sub_80D11CC(void) +static void sub_80D11CC(void) { s32 i; @@ -9356,7 +9622,7 @@ void sub_80D11CC(void) } } -bool8 sub_80D1218(void) +static bool8 sub_80D1218(void) { s32 i; @@ -9374,7 +9640,7 @@ bool8 sub_80D1218(void) return FALSE; } -bool8 sub_80D127C(void) +static bool8 IsActiveItemMoving(void) { s32 i; @@ -9390,17 +9656,17 @@ bool8 sub_80D127C(void) return FALSE; } -const u8 *GetMovingItemName(void) +static const u8 *GetMovingItemName(void) { return ItemId_GetName(gUnknown_02039D08->movingItem); } -u16 GetMovingItem(void) +static u16 GetMovingItem(void) { return gUnknown_02039D08->movingItem; } -u8 sub_80D12E8(void) +static u8 sub_80D12E8(void) { u8 i; @@ -9416,7 +9682,7 @@ u8 sub_80D12E8(void) return 3; } -bool32 sub_80D1324(u8 cursorArea, u8 cursorPos) +static bool32 sub_80D1324(u8 cursorArea, u8 cursorPos) { s32 i; @@ -9431,7 +9697,7 @@ bool32 sub_80D1324(u8 cursorArea, u8 cursorPos) return FALSE; } -u8 sub_80D1370(u8 cursorArea, u8 cursorPos) +static u8 sub_80D1370(u8 cursorArea, u8 cursorPos) { u8 i; @@ -9446,7 +9712,7 @@ u8 sub_80D1370(u8 cursorArea, u8 cursorPos) return 3; } -u8 sub_80D13C4(struct Sprite *sprite) +static u8 sub_80D13C4(struct Sprite *sprite) { u8 i; @@ -9459,3 +9725,652 @@ u8 sub_80D13C4(struct Sprite *sprite) return 3; } + +static void sub_80D140C(u8 id, u8 cursorArea, u8 cursorPos) +{ + u8 row, column; + + if (id >= 3) + return; + + switch (cursorArea) + { + case CURSOR_AREA_IN_BOX: + row = cursorPos % IN_BOX_ROWS; + column = cursorPos / IN_BOX_ROWS; + gUnknown_02039D08->field_2204[id].sprite->pos1.x = (24 * row) + 112; + gUnknown_02039D08->field_2204[id].sprite->pos1.y = (24 * column) + 56; + gUnknown_02039D08->field_2204[id].sprite->oam.priority = 2; + break; + case CURSOR_AREA_IN_PARTY: + if (cursorPos == 0) + { + gUnknown_02039D08->field_2204[id].sprite->pos1.x = 116; + gUnknown_02039D08->field_2204[id].sprite->pos1.y = 76; + } + else + { + gUnknown_02039D08->field_2204[id].sprite->pos1.x = 164; + gUnknown_02039D08->field_2204[id].sprite->pos1.y = 24 * (cursorPos - 1) + 28; + } + gUnknown_02039D08->field_2204[id].sprite->oam.priority = 1; + break; + } + + gUnknown_02039D08->field_2204[id].unk8 = cursorArea; + gUnknown_02039D08->field_2204[id].unk9 = cursorPos; +} + +static void sub_80D1524(u8 id, const u32 *itemTiles, const u32 *itemPal) +{ + s32 i; + + if (id >= 3) + return; + + CpuFastFill(0, gUnknown_02039D08->field_42C4, 0x200); + LZ77UnCompWram(itemTiles, gUnknown_02039D08->field_22C4); + for (i = 0; i < 3; i++) + CpuFastCopy(gUnknown_02039D08->field_22C4 + (i * 0x60), gUnknown_02039D08->field_42C4 + (i * 0x80), 0x60); + + CpuFastCopy(gUnknown_02039D08->field_42C4, gUnknown_02039D08->field_2204[id].tiles, 0x200); + LZ77UnCompWram(itemPal, gUnknown_02039D08->field_42C4); + LoadPalette(gUnknown_02039D08->field_42C4, gUnknown_02039D08->field_2204[id].palIndex, 0x20); +} + +static void sub_80D15D4(u8 id, u8 animNum) +{ + if (id >= 3) + return; + + StartSpriteAffineAnim(gUnknown_02039D08->field_2204[id].sprite, animNum); +} + +static void sub_80D1604(u8 id, u8 arg1, u8 arg2, u8 arg3) +{ + if (id >= 3) + return; + + switch (arg1) + { + case 0: + gUnknown_02039D08->field_2204[id].sprite->data[0] = id; + gUnknown_02039D08->field_2204[id].sprite->callback = sub_80D1A48; + break; + case 1: + gUnknown_02039D08->field_2204[id].sprite->data[0] = 0; + gUnknown_02039D08->field_2204[id].sprite->callback = sub_80D1A74; + break; + case 2: + gUnknown_02039D08->field_2204[id].sprite->data[0] = 0; + gUnknown_02039D08->field_2204[id].sprite->data[6] = arg2; + gUnknown_02039D08->field_2204[id].sprite->data[7] = arg3; + gUnknown_02039D08->field_2204[id].sprite->callback = sub_80D1B14; + break; + case 3: + gUnknown_02039D08->field_2204[id].sprite->data[0] = 0; + gUnknown_02039D08->field_2204[id].sprite->callback = sub_80D1B94; + gUnknown_02039D08->field_2204[id].sprite->data[6] = arg2; + gUnknown_02039D08->field_2204[id].sprite->data[7] = arg3; + break; + case 4: + gUnknown_02039D08->field_2204[id].sprite->data[0] = 0; + gUnknown_02039D08->field_2204[id].sprite->data[6] = arg2; + gUnknown_02039D08->field_2204[id].sprite->data[7] = arg3; + gUnknown_02039D08->field_2204[id].sprite->callback = sub_80D1C30; + break; + case 7: + gUnknown_02039D08->field_2204[id].sprite->callback = sub_80D1CCC; + break; + } +} + +static void sub_80D1740(u8 id, bool8 arg1) +{ + if (id >= 3) + return; + + gUnknown_02039D08->field_2204[id].unk10 = arg1; + gUnknown_02039D08->field_2204[id].sprite->invisible = (arg1 == FALSE); +} + +static const u32 *GetItemIconPic(u16 itemId) +{ + return GetItemIconPicOrPalette(itemId, 0); +} + +static const u32 *GetItemIconPalette(u16 itemId) +{ + return GetItemIconPicOrPalette(itemId, 1); +} + +static void PrintItemDescription(void) +{ + const u8 *description; + + if (IsActiveItemMoving()) + description = ItemId_GetDescription(gUnknown_02039D08->movingItem); + else + description = ItemId_GetDescription(gUnknown_02039D08->cursorMonItem); + + FillWindowPixelBuffer(2, 0x11); + AddTextPrinterParameterized5(2, 1, description, 4, 0, 0, NULL, 0, 1); +} + +static void sub_80D1818(void) +{ + gUnknown_02039D08->field_2236 = 0x15; + LoadBgTiles(0, gUnknown_0857BB24, 0x80, 0x13A); + sub_80D19B4(0); +} + +static bool8 sub_80D184C(void) +{ + s32 i, var; + + if (gUnknown_02039D08->field_2236 == 0) + return FALSE; + + gUnknown_02039D08->field_2236--; + var = 0x15 - gUnknown_02039D08->field_2236; + for (i = 0; i < var; i++) + { + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, 10) + 0x14 + gUnknown_02039D08->field_2236 + i, i, 13, 1, 7, 15, 21); + } + + sub_80D19B4(var); + return (gUnknown_02039D08->field_2236 != 0); +} + +static bool8 sub_80D18E4(void) +{ + s32 i, var; + + if (gUnknown_02039D08->field_2236 == 0x16) + return FALSE; + + if (gUnknown_02039D08->field_2236 == 0) + FillBgTilemapBufferRect(0, 0, 21, 12, 1, 9, 17); + + gUnknown_02039D08->field_2236++; + var = 0x15 - gUnknown_02039D08->field_2236; + for (i = 0; i < var; i++) + { + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, 10) + 0x14 + gUnknown_02039D08->field_2236 + i, i, 13, 1, 7, 15, 21); + } + + if (var >= 0) + sub_80D19B4(var); + + FillBgTilemapBufferRect(0, 0, var + 1, 12, 1, 9, 0x11); + schedule_bg_copy_tilemap_to_vram(0); + return TRUE; +} + +static void sub_80D19B4(u32 arg0) +{ + if (arg0 != 0) + { + FillBgTilemapBufferRect(0, 0x13A, 0, 0xC, arg0, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x93A, 0, 0x14, arg0, 1, 0xFu); + } + FillBgTilemapBufferRect(0, 0x13B, arg0, 0xD, 1, 7, 0xFu); + FillBgTilemapBufferRect(0, 0x13C, arg0, 0xC, 1, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x13D, arg0, 0x14, 1, 1, 0xFu); + schedule_bg_copy_tilemap_to_vram(0); +} + +static void sub_80D1A48(struct Sprite *sprite) +{ + if (sprite->affineAnimEnded) + { + sub_80D1740(sprite->data[0], FALSE); + sprite->callback = SpriteCallbackDummy; + } +} + +static void sub_80D1A74(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] -= sprite->data[3]; + sprite->data[2] -= sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + if (++sprite->data[5] > 11) + sprite->callback = sub_80D1AD8; + break; + } +} + +static void sub_80D1AD8(struct Sprite *sprite) +{ + sprite->pos1.x = gUnknown_02039D08->field_CB4->pos1.x + 4; + sprite->pos1.y = gUnknown_02039D08->field_CB4->pos1.y + gUnknown_02039D08->field_CB4->pos2.y + 8; + sprite->oam.priority = gUnknown_02039D08->field_CB4->oam.priority; +} + +static void sub_80D1B14(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + if (++sprite->data[5] > 11) + { + sub_80D140C(sub_80D13C4(sprite), sprite->data[6], sprite->data[7]); + sprite->callback = SpriteCallbackDummy; + } + break; + } +} + +static void sub_80D1B94(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] -= sprite->data[3]; + sprite->data[2] -= sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + sprite->pos2.x = gSineTable[sprite->data[5] * 8] >> 4; + if (++sprite->data[5] > 11) + { + sub_80D140C(sub_80D13C4(sprite), sprite->data[6], sprite->data[7]); + sprite->pos2.x = 0; + sprite->callback = sub_80D1AD8; + } + break; + } +} + +static void sub_80D1C30(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1] = sprite->pos1.x << 4; + sprite->data[2] = sprite->pos1.y << 4; + sprite->data[3] = 10; + sprite->data[4] = 21; + sprite->data[5] = 0; + sprite->data[0]++; + case 1: + sprite->data[1] += sprite->data[3]; + sprite->data[2] += sprite->data[4]; + sprite->pos1.x = sprite->data[1] >> 4; + sprite->pos1.y = sprite->data[2] >> 4; + sprite->pos2.x = -(gSineTable[sprite->data[5] * 8] >> 4); + if (++sprite->data[5] > 11) + { + sub_80D140C(sub_80D13C4(sprite), sprite->data[6], sprite->data[7]); + sprite->callback = SpriteCallbackDummy; + sprite->pos2.x = 0; + } + break; + } +} + +static void sub_80D1CCC(struct Sprite *sprite) +{ + sprite->pos1.y -= 8; + if (sprite->pos1.y + sprite->pos2.y < -16) + { + sprite->callback = SpriteCallbackDummy; + sub_80D1740(sub_80D13C4(sprite), FALSE); + } +} + +void nullsub_pss(void) +{ + +} + +void nullsub_98(void) +{ + +} + +// Functions here are general utility functions. +u8 StorageGetCurrentBox(void) +{ + return gPokemonStoragePtr->currentBox; +} + +static void SetCurrentBox(u8 boxId) +{ + if (boxId < TOTAL_BOXES_COUNT) + gPokemonStoragePtr->currentBox = boxId; +} + +u32 GetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + return GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request); + else + return 0; +} + +void SetBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, const void *value) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + SetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request, value); +} + +u32 GetCurrentBoxMonData(u8 boxPosition, s32 request) +{ + return GetBoxMonDataAt(gPokemonStoragePtr->currentBox, boxPosition, request); +} + +void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value) +{ + SetBoxMonDataAt(gPokemonStoragePtr->currentBox, boxPosition, request, value); +} + +void GetBoxMonNickAt(u8 boxId, u8 boxPosition, u8 *dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_NICKNAME, dst); + else + *dst = EOS; +} + +u32 GetBoxMonLevelAt(u8 boxId, u8 boxPosition) +{ + u32 lvl; + + // LMAO. Obvious bug there. + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT && GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES)) + lvl = GetLevelFromBoxMonExp(&gPokemonStoragePtr->boxes[boxId][boxPosition]); + // else + lvl = 0; + + return lvl; +} + +void SetBoxMonNickAt(u8 boxId, u8 boxPosition, const u8 *nick) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + SetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_NICKNAME, nick); +} + +u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + return GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], request, dst); + else + return 0; +} + +void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon *src) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + gPokemonStoragePtr->boxes[boxId][boxPosition] = *src; +} + +void CopyBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon *dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + *dst = gPokemonStoragePtr->boxes[boxId][boxPosition]; +} + +void CreateBoxMonAt(u8 boxId, u8 boxPosition, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 personality, u8 otIDType, u32 otID) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + { + CreateBoxMon(&gPokemonStoragePtr->boxes[boxId][boxPosition], + species, + level, + fixedIV, + hasFixedPersonality, personality, + otIDType, otID); + } +} + +void ZeroBoxMonAt(u8 boxId, u8 boxPosition) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + ZeroBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition]); +} + +void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon *dst) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + BoxMonToMon(&gPokemonStoragePtr->boxes[boxId][boxPosition], dst); +} + +struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition) +{ + if (boxId < TOTAL_BOXES_COUNT && boxPosition < IN_BOX_COUNT) + return &gPokemonStoragePtr->boxes[boxId][boxPosition]; + else + return NULL; +} + +u8 *GetBoxNamePtr(u8 boxId) +{ + if (boxId < TOTAL_BOXES_COUNT) + return gPokemonStoragePtr->boxNames[boxId]; + else + return NULL; +} + +u8 GetBoxWallpaper(u8 boxId) +{ + if (boxId < TOTAL_BOXES_COUNT) + return gPokemonStoragePtr->boxWallpapers[boxId]; + else + return 0; +} + +void SetBoxWallpaper(u8 boxId, u8 wallpaperId) +{ + if (boxId < TOTAL_BOXES_COUNT && wallpaperId < WALLPAPERS_COUNT) + gPokemonStoragePtr->boxWallpapers[boxId] = wallpaperId; +} + +s16 sub_80D214C(struct BoxPokemon *boxMons, s8 currIndex, u8 maxIndex, u8 arg3) +{ + s16 i; + s16 adder = -1; + + if (arg3 < 2) + adder = 1; + + if (arg3 == 1 || arg3 == 3) + { + for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder) + { + if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE) + return i; + } + } + else + { + for (i = currIndex + adder; i >= 0 && i <= maxIndex; i += adder) + { + if (GetBoxMonData(&boxMons[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetBoxMonData(&boxMons[i], MON_DATA_IS_EGG)) + return i; + } + } + + return -1; +} + +bool8 CheckFreePokemonStorageSpace(void) +{ + s32 i, j; + + for (i = 0; i < TOTAL_BOXES_COUNT; i++) + { + for (j = 0; j < IN_BOX_COUNT; j++) + { + if (!GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_HAS_SPECIES)) + return TRUE; + } + } + + return FALSE; +} + +bool32 CheckBoxedMonSanity(u32 boxId, u32 boxPosition) +{ + if (boxId < TOTAL_BOXES_COUNT + && boxPosition < IN_BOX_COUNT + && GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_HAS_SPECIES) + && !GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_IS_EGG) + && !GetBoxMonData(&gPokemonStoragePtr->boxes[boxId][boxPosition], MON_DATA_SANITY_IS_BAD_EGG)) + return TRUE; + else + return FALSE; +} + +u32 CountStorageNonEggMons(void) +{ + s32 i, j; + u32 count = 0; + + for (i = 0; i < TOTAL_BOXES_COUNT; i++) + { + for (j = 0; j < IN_BOX_COUNT; j++) + { + if (GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_HAS_SPECIES) + && !GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_IS_EGG)) + count++; + } + } + + return count; +} + +u32 CountAllStorageMons(void) +{ + s32 i, j; + u32 count = 0; + + for (i = 0; i < TOTAL_BOXES_COUNT; i++) + { + for (j = 0; j < IN_BOX_COUNT; j++) + { + if (GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_HAS_SPECIES) + || GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_IS_EGG)) + count++; + } + } + + return count; +} + +bool32 AnyStorageMonWithMove(u16 moveId) +{ + u16 moves[] = {moveId, MOVES_COUNT}; + s32 i, j; + + for (i = 0; i < TOTAL_BOXES_COUNT; i++) + { + for (j = 0; j < IN_BOX_COUNT; j++) + { + if (GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_HAS_SPECIES) + && !GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_SANITY_IS_EGG) + && GetBoxMonData(&gPokemonStoragePtr->boxes[i][j], MON_DATA_KNOWN_MOVES, moves)) + return TRUE; + } + } + + return FALSE; +} + +void ResetWaldaWallpaper(void) +{ + gSaveBlock1Ptr->waldaPhrase.iconId = 0; + gSaveBlock1Ptr->waldaPhrase.patternId = 0; + gSaveBlock1Ptr->waldaPhrase.patternUnlocked = FALSE; + gSaveBlock1Ptr->waldaPhrase.colors[0] = 0x7B35; + gSaveBlock1Ptr->waldaPhrase.colors[1] = 0x6186; + gSaveBlock1Ptr->waldaPhrase.text[0] = EOS; +} + +void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked) +{ + gSaveBlock1Ptr->waldaPhrase.patternUnlocked = unlocked; +} + +bool32 IsWaldaWallpaperUnlocked(void) +{ + return gSaveBlock1Ptr->waldaPhrase.patternUnlocked; +} + +u32 GetWaldaWallpaperPatternId(void) +{ + return gSaveBlock1Ptr->waldaPhrase.patternId; +} + +void SetWaldaWallpaperPatternId(u8 id) +{ + if (id < FRIENDS_WALLPAPERS_COUNT) + gSaveBlock1Ptr->waldaPhrase.patternId = id; +} + +u32 GetWaldaWallpaperIconId(void) +{ + return gSaveBlock1Ptr->waldaPhrase.iconId; +} + +void SetWaldaWallpaperIconId(u8 id) +{ + if (id < 30) + gSaveBlock1Ptr->waldaPhrase.iconId = id; +} + +u16 *GetWaldaWallpaperColorsPtr(void) +{ + return gSaveBlock1Ptr->waldaPhrase.colors; +} + +void SetWaldaWallpaperColors(u16 color1, u16 color2) +{ + gSaveBlock1Ptr->waldaPhrase.colors[0] = color1; + gSaveBlock1Ptr->waldaPhrase.colors[1] = color2; +} + +u8 *GetWaldaPhrasePtr(void) +{ + return gSaveBlock1Ptr->waldaPhrase.text; +} + +void SetWaldaPhrase(const u8 *src) +{ + StringCopy(gSaveBlock1Ptr->waldaPhrase.text, src); +} + +bool32 IsWaldaPhraseEmpty(void) +{ + return (gSaveBlock1Ptr->waldaPhrase.text[0] == EOS); +} @@ -3469,7 +3469,7 @@ void ChangeBoxPokemonNickname(void) void ChangeBoxPokemonNickname_CB(void) { - SetBoxMonNickFromAnyBox(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2); + SetBoxMonNickAt(gSpecialVar_MonBoxId, gSpecialVar_MonBoxPos, gStringVar2); CB2_ReturnToFieldContinueScriptPlayMapMusic(); } diff --git a/src/walda_phrase.c b/src/walda_phrase.c index ff2ee7399..10a899583 100644 --- a/src/walda_phrase.c +++ b/src/walda_phrase.c @@ -7,18 +7,11 @@ #include "text.h" #include "new_game.h" #include "overworld.h" +#include "pokemon_storage_system.h" +#include "field_screen.h" extern const u8 gText_Peekaboo[]; -extern u8 *GetWaldaPhrasePtr(void); -extern bool32 IsWaldaPhraseEmpty(void); -extern void sub_80AF168(void); -extern void SetWaldaPhrase(const u8 *src); -extern void SetWaldaWallpaperPatternId(u8 patternId); -extern void SetWaldaWallpaperIconId(u8 iconId); -extern void SetWaldaWallpaperColors(u16 backgroundColor, u16 foregroundColor); -extern void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked); - // this file's functions static void CB2_HandleGivenWaldaPhrase(void); static u32 GetWaldaPhraseInputCase(u8 *inputPtr); |