Sync pokemon_storage_system_8.c
This commit is contained in:
@@ -373,9 +373,9 @@ struct PokemonStorageSystemData
|
|||||||
/* 21db */ u8 itemName[20];
|
/* 21db */ u8 itemName[20];
|
||||||
/* 21ef */ u8 inBoxMovingMode;
|
/* 21ef */ u8 inBoxMovingMode;
|
||||||
/* 21f0 */ u16 field_2200;
|
/* 21f0 */ u16 field_2200;
|
||||||
/* 21f4 */ struct PSS_ItemIconSprite itemIconSprites[MAX_ITEM_ICONS];
|
/* 21f4 */ struct PSS_ItemIconSprite itemIcons[MAX_ITEM_ICONS];
|
||||||
/* 2224 */ u16 movingItem;
|
/* 2224 */ u16 movingItemId;
|
||||||
/* 2226 */ u16 field_2236;
|
/* 2226 */ u16 itemInfoWindowOffset;
|
||||||
/* 2228 */ struct PssQuestLogBuffer qlogBuffer;
|
/* 2228 */ struct PssQuestLogBuffer qlogBuffer;
|
||||||
/* 2230 */ u16 field_2238;
|
/* 2230 */ u16 field_2238;
|
||||||
/* 2232 */ u16 field_223A;
|
/* 2232 */ u16 field_223A;
|
||||||
@@ -384,7 +384,7 @@ struct PokemonStorageSystemData
|
|||||||
/* 223c */ u16 field_2244[0x40];
|
/* 223c */ u16 field_2244[0x40];
|
||||||
/* 22bc */ u8 field_22C4[0x800];
|
/* 22bc */ u8 field_22C4[0x800];
|
||||||
/* 2abc */ u8 field_2AC4[0x1800];
|
/* 2abc */ u8 field_2AC4[0x1800];
|
||||||
/* 42bc */ u8 field_42C4[0x800];
|
/* 42bc */ u8 itemIconBuffer[0x800];
|
||||||
/* 4abc */ u8 field_4AC4[0x1000];
|
/* 4abc */ u8 field_4AC4[0x1000];
|
||||||
/* 5abc */ u8 field_5AC4[0x800];
|
/* 5abc */ u8 field_5AC4[0x800];
|
||||||
}; // size=62bc
|
}; // size=62bc
|
||||||
@@ -442,9 +442,9 @@ void sub_8096088(void);
|
|||||||
void sub_80960C0(void);
|
void sub_80960C0(void);
|
||||||
bool8 sub_809610C(void);
|
bool8 sub_809610C(void);
|
||||||
const u8 *GetMovingItemName(void);
|
const u8 *GetMovingItemName(void);
|
||||||
void sub_80966F4(void);
|
void InitItemInfoWindow(void);
|
||||||
bool8 sub_8096728(void);
|
bool8 UpdateItemInfoWindowSlideIn(void);
|
||||||
bool8 sub_80967C0(void);
|
bool8 UpdateItemInfoWindowSlideOut(void);
|
||||||
void sub_8096BE4(struct UnkUtil *arg0, struct UnkUtilData *arg1, u32 arg2);
|
void sub_8096BE4(struct UnkUtil *arg0, struct UnkUtilData *arg1, u32 arg2);
|
||||||
void sub_8096BF8(void);
|
void sub_8096BF8(void);
|
||||||
void AddMenu(void);
|
void AddMenu(void);
|
||||||
|
|||||||
@@ -1568,12 +1568,12 @@ static void Cb_ShowItemInfo(u8 taskId)
|
|||||||
{
|
{
|
||||||
PlaySE(SE_WIN_OPEN);
|
PlaySE(SE_WIN_OPEN);
|
||||||
PrintItemDescription();
|
PrintItemDescription();
|
||||||
sub_80966F4();
|
InitItemInfoWindow();
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (!sub_8096728())
|
if (!UpdateItemInfoWindowSlideIn())
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
@@ -1588,7 +1588,7 @@ static void Cb_ShowItemInfo(u8 taskId)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (!sub_80967C0())
|
if (!UpdateItemInfoWindowSlideOut())
|
||||||
gPSSData->state++;
|
gPSSData->state++;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
@@ -1617,7 +1617,7 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId)
|
|||||||
SetPSSCallback(Cb_MainPSS);
|
SetPSSCallback(Cb_MainPSS);
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
if (AddBagItem(gPSSData->movingItem, 1) == TRUE)
|
if (AddBagItem(gPSSData->movingItemId, 1) == TRUE)
|
||||||
{
|
{
|
||||||
ClearBottomWindow();
|
ClearBottomWindow();
|
||||||
gPSSData->state = 3;
|
gPSSData->state = 3;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ static void sub_8091E84(struct Sprite *sprite);
|
|||||||
static void sub_8091EB8(struct Sprite *sprite);
|
static void sub_8091EB8(struct Sprite *sprite);
|
||||||
static s16 GetBoxTitleBaseX(const u8 *boxName);
|
static s16 GetBoxTitleBaseX(const u8 *boxName);
|
||||||
static void sub_8091E34(void);
|
static void sub_8091E34(void);
|
||||||
static void sub_8091EF0(void);
|
static void CycleBoxTitleColor(void);
|
||||||
static void CreateBoxScrollArrows(void);
|
static void CreateBoxScrollArrows(void);
|
||||||
static void StartBoxScrollArrowsSlide(s8 direction);
|
static void StartBoxScrollArrowsSlide(s8 direction);
|
||||||
static void StopBoxScrollArrowsSlide(void);
|
static void StopBoxScrollArrowsSlide(void);
|
||||||
@@ -128,7 +128,7 @@ static const u32 gUnknown_83D2654[] = INCBIN_U32("graphics/interface/pss_unk_83D
|
|||||||
static const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz");
|
static const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz");
|
||||||
static const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin");
|
static const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin");
|
||||||
|
|
||||||
static const u16 gUnknown_83D29D0[][2] = {
|
static const u16 sBoxTitleColors[][2] = {
|
||||||
{RGB( 7, 7, 7), RGB(31, 31, 31)},
|
{RGB( 7, 7, 7), RGB(31, 31, 31)},
|
||||||
{RGB( 7, 7, 7), RGB(31, 31, 31)},
|
{RGB( 7, 7, 7), RGB(31, 31, 31)},
|
||||||
{RGB( 7, 7, 7), RGB(31, 31, 31)},
|
{RGB( 7, 7, 7), RGB(31, 31, 31)},
|
||||||
@@ -1119,7 +1119,7 @@ bool8 DoWallpaperGfxChange(void)
|
|||||||
case 2:
|
case 2:
|
||||||
if (WaitForWallpaperGfxLoad() == TRUE)
|
if (WaitForWallpaperGfxLoad() == TRUE)
|
||||||
{
|
{
|
||||||
sub_8091EF0();
|
CycleBoxTitleColor();
|
||||||
BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA);
|
BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA);
|
||||||
gPSSData->wallpaperChangeState++;
|
gPSSData->wallpaperChangeState++;
|
||||||
}
|
}
|
||||||
@@ -1227,8 +1227,8 @@ static void sub_8091A94(u8 boxId)
|
|||||||
|
|
||||||
u16 wallpaperId = GetBoxWallpaper(boxId);
|
u16 wallpaperId = GetBoxWallpaper(boxId);
|
||||||
|
|
||||||
gPSSData->boxTitlePal[14] = gUnknown_83D29D0[wallpaperId][0];
|
gPSSData->boxTitlePal[14] = sBoxTitleColors[wallpaperId][0];
|
||||||
gPSSData->boxTitlePal[15] = gUnknown_83D29D0[wallpaperId][1];
|
gPSSData->boxTitlePal[15] = sBoxTitleColors[wallpaperId][1];
|
||||||
LoadSpritePalettes(palettes);
|
LoadSpritePalettes(palettes);
|
||||||
gPSSData->wallpaperPalBits = 0x3f0;
|
gPSSData->wallpaperPalBits = 0x3f0;
|
||||||
|
|
||||||
@@ -1279,7 +1279,7 @@ static void sub_8091C48(u8 boxId, s8 direction)
|
|||||||
StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
|
StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
|
||||||
DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2);
|
DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2);
|
||||||
LoadSpriteSheet(&spriteSheet);
|
LoadSpriteSheet(&spriteSheet);
|
||||||
LoadPalette(gUnknown_83D29D0[GetBoxWallpaper(boxId)], r8, 4);
|
LoadPalette(sBoxTitleColors[GetBoxWallpaper(boxId)], r8, 4);
|
||||||
x = GetBoxTitleBaseX(GetBoxNamePtr(boxId));
|
x = GetBoxTitleBaseX(GetBoxNamePtr(boxId));
|
||||||
x2 = x;
|
x2 = x;
|
||||||
x2 += direction * 192;
|
x2 += direction * 192;
|
||||||
@@ -1335,14 +1335,14 @@ static void sub_8091EB8(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8091EF0(void)
|
static void CycleBoxTitleColor(void)
|
||||||
{
|
{
|
||||||
u8 boxId = StorageGetCurrentBox();
|
u8 boxId = StorageGetCurrentBox();
|
||||||
u8 wallpaperId = GetBoxWallpaper(boxId);
|
u8 wallpaperId = GetBoxWallpaper(boxId);
|
||||||
if (gPSSData->boxTitleCycleId == 0)
|
if (gPSSData->boxTitleCycleId == 0)
|
||||||
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitlePalOffset, 4);
|
CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitlePalOffset, 4);
|
||||||
else
|
else
|
||||||
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitleAltPalOffset, 4);
|
CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitleAltPalOffset, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
static s16 GetBoxTitleBaseX(const u8 *string)
|
static s16 GetBoxTitleBaseX(const u8 *string)
|
||||||
|
|||||||
+202
-177
@@ -9,26 +9,38 @@
|
|||||||
#include "trig.h"
|
#include "trig.h"
|
||||||
#include "constants/items.h"
|
#include "constants/items.h"
|
||||||
|
|
||||||
static u8 sub_80961D8(void);
|
// IDs for the item icon sprite callbacks
|
||||||
static bool32 sub_8096210(u8 cursorArea, u8 cursorPos);
|
enum {
|
||||||
static u8 sub_8096258(u8 cursorArea, u8 cursorPos);
|
ITEM_CB_WAIT_ANIM,
|
||||||
static void sub_80962F0(u8 id, u8 cursorArea, u8 cursorPos);
|
ITEM_CB_TO_HAND,
|
||||||
static void sub_8096408(u8 id, const u32 * tiles, const u32 * pal);
|
ITEM_CB_TO_MON,
|
||||||
static void sub_80964B8(u8 id, u8 affineAnimNo);
|
ITEM_CB_SWAP_TO_HAND,
|
||||||
static void sub_80964E8(u8 id, u8 command, u8 cursorArea, u8 cursorPos);
|
ITEM_CB_SWAP_TO_MON,
|
||||||
static void sub_8096624(u8 id, bool8 show);
|
ITEM_CB_UNUSED_1,
|
||||||
|
ITEM_CB_UNUSED_2,
|
||||||
|
ITEM_CB_HIDE_PARTY,
|
||||||
|
};
|
||||||
|
|
||||||
|
static u8 GetNewItemIconIdx(void);
|
||||||
|
static bool32 IsItemIconAtPosition(u8 cursorArea, u8 cursorPos);
|
||||||
|
static u8 GetItemIconIdxByPosition(u8 cursorArea, u8 cursorPos);
|
||||||
|
static void SetItemIconPosition(u8 id, u8 cursorArea, u8 cursorPos);
|
||||||
|
static void LoadItemIconGfx(u8 id, const u32 * tiles, const u32 * pal);
|
||||||
|
static void SetItemIconAffineAnim(u8 id, u8 affineAnimNo);
|
||||||
|
static void SetItemIconCallback(u8 id, u8 command, u8 cursorArea, u8 cursorPos);
|
||||||
|
static void SetItemIconActive(u8 id, bool8 show);
|
||||||
static const u32 *GetItemIconPic(u16 itemId);
|
static const u32 *GetItemIconPic(u16 itemId);
|
||||||
static const u32 *GetItemIconPalette(u16 itemId);
|
static const u32 *GetItemIconPalette(u16 itemId);
|
||||||
static void sub_8096898(u32 x);
|
static void DrawItemInfoWindow(u32 x);
|
||||||
static void sub_809692C(struct Sprite *sprite);
|
static void SpriteCB_ItemIcon_WaitAnim(struct Sprite *sprite);
|
||||||
static void sub_8096958(struct Sprite *sprite);
|
static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite);
|
||||||
static void sub_80969BC(struct Sprite *sprite);
|
static void SpriteCB_ItemIcon_SetPosToCursor(struct Sprite *sprite);
|
||||||
static void sub_80969F4(struct Sprite *sprite);
|
static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite);
|
||||||
static void sub_8096A74(struct Sprite *sprite);
|
static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite);
|
||||||
static void sub_8096B10(struct Sprite *sprite);
|
static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite);
|
||||||
static void sub_8096BAC(struct Sprite *sprite);
|
static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite);
|
||||||
|
|
||||||
static const u32 gUnknown_83D35DC[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp");
|
static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp");
|
||||||
|
|
||||||
static const struct OamData gUnknown_83D365C = {
|
static const struct OamData gUnknown_83D365C = {
|
||||||
.y = 0,
|
.y = 0,
|
||||||
@@ -126,19 +138,19 @@ void sub_8095B5C(void)
|
|||||||
{
|
{
|
||||||
spriteSheet.tag = TAG_TILE_7 + i;
|
spriteSheet.tag = TAG_TILE_7 + i;
|
||||||
LoadCompressedSpriteSheet(&spriteSheet);
|
LoadCompressedSpriteSheet(&spriteSheet);
|
||||||
gPSSData->itemIconSprites[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * 32 + (void *)(OBJ_VRAM0);
|
gPSSData->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * 32 + (void *)(OBJ_VRAM0);
|
||||||
gPSSData->itemIconSprites[i].palIndex = AllocSpritePalette(TAG_PAL_DACB + i);
|
gPSSData->itemIcons[i].palIndex = AllocSpritePalette(TAG_PAL_DACB + i);
|
||||||
gPSSData->itemIconSprites[i].palIndex *= 16;
|
gPSSData->itemIcons[i].palIndex *= 16;
|
||||||
gPSSData->itemIconSprites[i].palIndex += 0x100;
|
gPSSData->itemIcons[i].palIndex += 0x100;
|
||||||
spriteTemplate.tileTag = TAG_TILE_7 + i;
|
spriteTemplate.tileTag = TAG_TILE_7 + i;
|
||||||
spriteTemplate.paletteTag = TAG_PAL_DACB + i;
|
spriteTemplate.paletteTag = TAG_PAL_DACB + i;
|
||||||
spriteId = CreateSprite(&spriteTemplate, 0, 0, 11);
|
spriteId = CreateSprite(&spriteTemplate, 0, 0, 11);
|
||||||
gPSSData->itemIconSprites[i].sprite = &gSprites[spriteId];
|
gPSSData->itemIcons[i].sprite = &gSprites[spriteId];
|
||||||
gPSSData->itemIconSprites[i].sprite->invisible = TRUE;
|
gPSSData->itemIcons[i].sprite->invisible = TRUE;
|
||||||
gPSSData->itemIconSprites[i].active = 0;
|
gPSSData->itemIcons[i].active = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gPSSData->movingItem = ITEM_NONE;
|
gPSSData->movingItemId = ITEM_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8095C84(u8 cursorArea, u8 cursorPos)
|
void sub_8095C84(u8 cursorArea, u8 cursorPos)
|
||||||
@@ -147,7 +159,7 @@ void sub_8095C84(u8 cursorArea, u8 cursorPos)
|
|||||||
|
|
||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
return;
|
return;
|
||||||
if (sub_8096210(cursorArea, cursorPos))
|
if (IsItemIconAtPosition(cursorArea, cursorPos))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (cursorArea)
|
switch (cursorArea)
|
||||||
@@ -170,12 +182,12 @@ void sub_8095C84(u8 cursorArea, u8 cursorPos)
|
|||||||
{
|
{
|
||||||
const u32 *tiles = GetItemIconPic(heldItem);
|
const u32 *tiles = GetItemIconPic(heldItem);
|
||||||
const u32 *pal = GetItemIconPalette(heldItem);
|
const u32 *pal = GetItemIconPalette(heldItem);
|
||||||
u8 id = sub_80961D8();
|
u8 id = GetNewItemIconIdx();
|
||||||
|
|
||||||
sub_80962F0(id, cursorArea, cursorPos);
|
SetItemIconPosition(id, cursorArea, cursorPos);
|
||||||
sub_8096408(id, tiles, pal);
|
LoadItemIconGfx(id, tiles, pal);
|
||||||
sub_80964B8(id, 1);
|
SetItemIconAffineAnim(id, 1);
|
||||||
sub_8096624(id, TRUE);
|
SetItemIconActive(id, TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -186,9 +198,9 @@ void sub_8095D44(u8 cursorArea, u8 cursorPos)
|
|||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
id = sub_8096258(cursorArea, cursorPos);
|
id = GetItemIconIdxByPosition(cursorArea, cursorPos);
|
||||||
sub_80964B8(id, 2);
|
SetItemIconAffineAnim(id, 2);
|
||||||
sub_80964E8(id, 0, cursorArea, cursorPos);
|
SetItemIconCallback(id, 0, cursorArea, cursorPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
|
void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
|
||||||
@@ -199,11 +211,11 @@ void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
|
|||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
id = sub_8096258(cursorArea, cursorPos);
|
id = GetItemIconIdxByPosition(cursorArea, cursorPos);
|
||||||
item = 0;
|
item = 0;
|
||||||
sub_80964B8(id, 3);
|
SetItemIconAffineAnim(id, 3);
|
||||||
sub_80964E8(id, 1, cursorArea, cursorPos);
|
SetItemIconCallback(id, 1, cursorArea, cursorPos);
|
||||||
sub_80962F0(id, 2, 0);
|
SetItemIconPosition(id, 2, 0);
|
||||||
if (cursorArea == CURSOR_AREA_IN_BOX)
|
if (cursorArea == CURSOR_AREA_IN_BOX)
|
||||||
{
|
{
|
||||||
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
|
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
|
||||||
@@ -215,21 +227,21 @@ void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos)
|
|||||||
SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
|
SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
gPSSData->movingItem = gPSSData->displayMonItemId;
|
gPSSData->movingItemId = gPSSData->displayMonItemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_8095E2C(u16 item)
|
void sub_8095E2C(u16 item)
|
||||||
{
|
{
|
||||||
const u32 *tiles = GetItemIconPic(item);
|
const u32 *tiles = GetItemIconPic(item);
|
||||||
const u32 *pal = GetItemIconPalette(item);
|
const u32 *pal = GetItemIconPalette(item);
|
||||||
u8 id = sub_80961D8();
|
u8 id = GetNewItemIconIdx();
|
||||||
|
|
||||||
sub_8096408(id, tiles, pal);
|
LoadItemIconGfx(id, tiles, pal);
|
||||||
sub_80964B8(id, 6);
|
SetItemIconAffineAnim(id, 6);
|
||||||
sub_80964E8(id, 1, CURSOR_AREA_IN_BOX, 0);
|
SetItemIconCallback(id, 1, CURSOR_AREA_IN_BOX, 0);
|
||||||
sub_80962F0(id, CURSOR_AREA_BOX, 0);
|
SetItemIconPosition(id, CURSOR_AREA_BOX, 0);
|
||||||
sub_8096624(id, TRUE);
|
SetItemIconActive(id, TRUE);
|
||||||
gPSSData->movingItem = item;
|
gPSSData->movingItemId = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos)
|
void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos)
|
||||||
@@ -240,25 +252,25 @@ void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos)
|
|||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
id = sub_8096258(cursorArea, cursorPos);
|
id = GetItemIconIdxByPosition(cursorArea, cursorPos);
|
||||||
sub_80964B8(id, 3);
|
SetItemIconAffineAnim(id, 3);
|
||||||
sub_80964E8(id, 3, CURSOR_AREA_BOX, 0);
|
SetItemIconCallback(id, 3, CURSOR_AREA_BOX, 0);
|
||||||
if (cursorArea == CURSOR_AREA_IN_BOX)
|
if (cursorArea == CURSOR_AREA_IN_BOX)
|
||||||
{
|
{
|
||||||
item = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM);
|
item = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM);
|
||||||
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItem);
|
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItemId);
|
||||||
gPSSData->movingItem = item;
|
gPSSData->movingItemId = item;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
item = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM);
|
item = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM);
|
||||||
SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItem);
|
SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItemId);
|
||||||
gPSSData->movingItem = item;
|
gPSSData->movingItemId = item;
|
||||||
}
|
}
|
||||||
|
|
||||||
id = sub_8096258(2, 0);
|
id = GetItemIconIdxByPosition(2, 0);
|
||||||
sub_80964B8(id, 4);
|
SetItemIconAffineAnim(id, 4);
|
||||||
sub_80964E8(id, 4, cursorArea, cursorPos);
|
SetItemIconCallback(id, 4, cursorArea, cursorPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos)
|
void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos)
|
||||||
@@ -268,17 +280,17 @@ void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos)
|
|||||||
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
id = sub_8096258(2, 0);
|
id = GetItemIconIdxByPosition(2, 0);
|
||||||
sub_80964B8(id, 4);
|
SetItemIconAffineAnim(id, 4);
|
||||||
sub_80964E8(id, 2, cursorArea, cursorPos);
|
SetItemIconCallback(id, 2, cursorArea, cursorPos);
|
||||||
if (cursorArea == CURSOR_AREA_IN_BOX)
|
if (cursorArea == CURSOR_AREA_IN_BOX)
|
||||||
{
|
{
|
||||||
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItem);
|
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItemId);
|
||||||
SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL);
|
SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItem);
|
SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItemId);
|
||||||
SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL);
|
SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -292,9 +304,9 @@ void Item_TakeMons(u8 cursorArea, u8 cursorPos)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
item = 0;
|
item = 0;
|
||||||
id = sub_8096258(cursorArea, cursorPos);
|
id = GetItemIconIdxByPosition(cursorArea, cursorPos);
|
||||||
sub_80964B8(id, 2);
|
SetItemIconAffineAnim(id, 2);
|
||||||
sub_80964E8(id, 0, cursorArea, cursorPos);
|
SetItemIconCallback(id, 0, cursorArea, cursorPos);
|
||||||
if (cursorArea == CURSOR_AREA_IN_BOX)
|
if (cursorArea == CURSOR_AREA_IN_BOX)
|
||||||
{
|
{
|
||||||
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
|
SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item);
|
||||||
@@ -311,9 +323,9 @@ void sub_8096088(void)
|
|||||||
{
|
{
|
||||||
if (gPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
|
if (gPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
|
||||||
{
|
{
|
||||||
u8 id = sub_8096258(2, 0);
|
u8 id = GetItemIconIdxByPosition(2, 0);
|
||||||
sub_80964B8(id, 5);
|
SetItemIconAffineAnim(id, 5);
|
||||||
sub_80964E8(id, 0, CURSOR_AREA_BOX, 0);
|
SetItemIconCallback(id, 0, CURSOR_AREA_BOX, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -326,8 +338,8 @@ void sub_80960C0(void)
|
|||||||
|
|
||||||
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->itemIconSprites[i].active && gPSSData->itemIconSprites[i].cursorArea == CURSOR_AREA_IN_PARTY)
|
if (gPSSData->itemIcons[i].active && gPSSData->itemIcons[i].cursorArea == CURSOR_AREA_IN_PARTY)
|
||||||
sub_80964E8(i, 7, CURSOR_AREA_BOX, 0);
|
SetItemIconCallback(i, 7, CURSOR_AREA_BOX, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,11 +349,11 @@ bool8 sub_809610C(void)
|
|||||||
|
|
||||||
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->itemIconSprites[i].active)
|
if (gPSSData->itemIcons[i].active)
|
||||||
{
|
{
|
||||||
if (!gPSSData->itemIconSprites[i].sprite->affineAnimEnded && gPSSData->itemIconSprites[i].sprite->affineAnimBeginning)
|
if (!gPSSData->itemIcons[i].sprite->affineAnimEnded && gPSSData->itemIcons[i].sprite->affineAnimBeginning)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
if (gPSSData->itemIconSprites[i].sprite->callback != SpriteCallbackDummy && gPSSData->itemIconSprites[i].sprite->callback != sub_80969BC)
|
if (gPSSData->itemIcons[i].sprite->callback != SpriteCallbackDummy && gPSSData->itemIcons[i].sprite->callback != SpriteCB_ItemIcon_SetPosToCursor)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -357,7 +369,7 @@ bool8 IsActiveItemMoving(void)
|
|||||||
{
|
{
|
||||||
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->itemIconSprites[i].active && gPSSData->itemIconSprites[i].cursorArea == CURSOR_AREA_BOX)
|
if (gPSSData->itemIcons[i].active && gPSSData->itemIcons[i].cursorArea == CURSOR_AREA_BOX)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -367,23 +379,23 @@ bool8 IsActiveItemMoving(void)
|
|||||||
|
|
||||||
const u8 *GetMovingItemName(void)
|
const u8 *GetMovingItemName(void)
|
||||||
{
|
{
|
||||||
return ItemId_GetName(gPSSData->movingItem);
|
return ItemId_GetName(gPSSData->movingItemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
u16 GetMovingItem(void)
|
u16 GetMovingItem(void)
|
||||||
{
|
{
|
||||||
return gPSSData->movingItem;
|
return gPSSData->movingItemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 sub_80961D8(void)
|
static u8 GetNewItemIconIdx(void)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (!gPSSData->itemIconSprites[i].active)
|
if (!gPSSData->itemIcons[i].active)
|
||||||
{
|
{
|
||||||
gPSSData->itemIconSprites[i].active = TRUE;
|
gPSSData->itemIcons[i].active = TRUE;
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -391,51 +403,51 @@ static u8 sub_80961D8(void)
|
|||||||
return MAX_ITEM_ICONS;
|
return MAX_ITEM_ICONS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool32 sub_8096210(u8 cursorArea, u8 cursorPos)
|
static bool32 IsItemIconAtPosition(u8 cursorArea, u8 cursorPos)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->itemIconSprites[i].active
|
if (gPSSData->itemIcons[i].active
|
||||||
&& gPSSData->itemIconSprites[i].cursorArea == cursorArea
|
&& gPSSData->itemIcons[i].cursorArea == cursorArea
|
||||||
&& gPSSData->itemIconSprites[i].cursorPos == cursorPos)
|
&& gPSSData->itemIcons[i].cursorPos == cursorPos)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 sub_8096258(u8 cursorArea, u8 cursorPos)
|
static u8 GetItemIconIdxByPosition(u8 cursorArea, u8 cursorPos)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->itemIconSprites[i].active
|
if (gPSSData->itemIcons[i].active
|
||||||
&& gPSSData->itemIconSprites[i].cursorArea == cursorArea
|
&& gPSSData->itemIcons[i].cursorArea == cursorArea
|
||||||
&& gPSSData->itemIconSprites[i].cursorPos == cursorPos)
|
&& gPSSData->itemIcons[i].cursorPos == cursorPos)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MAX_ITEM_ICONS;
|
return MAX_ITEM_ICONS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 sub_80962A8(struct Sprite *sprite)
|
static u8 GetItemIconIdxBySprite(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
u8 i;
|
u8 i;
|
||||||
|
|
||||||
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
for (i = 0; i < MAX_ITEM_ICONS; i++)
|
||||||
{
|
{
|
||||||
if (gPSSData->itemIconSprites[i].active
|
if (gPSSData->itemIcons[i].active
|
||||||
&& gPSSData->itemIconSprites[i].sprite == sprite)
|
&& gPSSData->itemIcons[i].sprite == sprite)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MAX_ITEM_ICONS;
|
return MAX_ITEM_ICONS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80962F0(u8 id, u8 cursorArea, u8 cursorPos)
|
static void SetItemIconPosition(u8 id, u8 cursorArea, u8 cursorPos)
|
||||||
{
|
{
|
||||||
u8 row, column;
|
u8 row, column;
|
||||||
|
|
||||||
@@ -447,100 +459,108 @@ static void sub_80962F0(u8 id, u8 cursorArea, u8 cursorPos)
|
|||||||
case CURSOR_AREA_IN_BOX:
|
case CURSOR_AREA_IN_BOX:
|
||||||
row = cursorPos % IN_BOX_ROWS;
|
row = cursorPos % IN_BOX_ROWS;
|
||||||
column = cursorPos / IN_BOX_ROWS;
|
column = cursorPos / IN_BOX_ROWS;
|
||||||
gPSSData->itemIconSprites[id].sprite->x = (24 * row) + 112;
|
gPSSData->itemIcons[id].sprite->x = (24 * row) + 112;
|
||||||
gPSSData->itemIconSprites[id].sprite->y = (24 * column) + 56;
|
gPSSData->itemIcons[id].sprite->y = (24 * column) + 56;
|
||||||
gPSSData->itemIconSprites[id].sprite->oam.priority = 2;
|
gPSSData->itemIcons[id].sprite->oam.priority = 2;
|
||||||
break;
|
break;
|
||||||
case CURSOR_AREA_IN_PARTY:
|
case CURSOR_AREA_IN_PARTY:
|
||||||
if (cursorPos == 0)
|
if (cursorPos == 0)
|
||||||
{
|
{
|
||||||
gPSSData->itemIconSprites[id].sprite->x = 116;
|
gPSSData->itemIcons[id].sprite->x = 116;
|
||||||
gPSSData->itemIconSprites[id].sprite->y = 76;
|
gPSSData->itemIcons[id].sprite->y = 76;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gPSSData->itemIconSprites[id].sprite->x = 164;
|
gPSSData->itemIcons[id].sprite->x = 164;
|
||||||
gPSSData->itemIconSprites[id].sprite->y = 24 * (cursorPos - 1) + 28;
|
gPSSData->itemIcons[id].sprite->y = 24 * (cursorPos - 1) + 28;
|
||||||
}
|
}
|
||||||
gPSSData->itemIconSprites[id].sprite->oam.priority = 1;
|
gPSSData->itemIcons[id].sprite->oam.priority = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
gPSSData->itemIconSprites[id].cursorArea = cursorArea;
|
gPSSData->itemIcons[id].cursorArea = cursorArea;
|
||||||
gPSSData->itemIconSprites[id].cursorPos = cursorPos;
|
gPSSData->itemIcons[id].cursorPos = cursorPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096408(u8 id, const u32 *itemTiles, const u32 *itemPal)
|
static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal)
|
||||||
{
|
{
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
if (id >= MAX_ITEM_ICONS)
|
if (id >= MAX_ITEM_ICONS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
CpuFastFill(0, gPSSData->field_42C4, 0x200);
|
CpuFastFill(0, gPSSData->itemIconBuffer, 0x200);
|
||||||
LZ77UnCompWram(itemTiles, gPSSData->field_22C4);
|
LZ77UnCompWram(itemTiles, gPSSData->field_22C4);
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
CpuFastCopy(gPSSData->field_22C4 + (i * 0x60), gPSSData->field_42C4 + (i * 0x80), 0x60);
|
CpuFastCopy(gPSSData->field_22C4 + (i * 0x60), gPSSData->itemIconBuffer + (i * 0x80), 0x60);
|
||||||
|
|
||||||
CpuFastCopy(gPSSData->field_42C4, gPSSData->itemIconSprites[id].tiles, 0x200);
|
CpuFastCopy(gPSSData->itemIconBuffer, gPSSData->itemIcons[id].tiles, 0x200);
|
||||||
LZ77UnCompWram(itemPal, gPSSData->field_42C4);
|
LZ77UnCompWram(itemPal, gPSSData->itemIconBuffer);
|
||||||
LoadPalette(gPSSData->field_42C4, gPSSData->itemIconSprites[id].palIndex, 0x20);
|
LoadPalette(gPSSData->itemIconBuffer, gPSSData->itemIcons[id].palIndex, 0x20);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80964B8(u8 id, u8 animNum)
|
static void SetItemIconAffineAnim(u8 id, u8 animNum)
|
||||||
{
|
{
|
||||||
if (id >= MAX_ITEM_ICONS)
|
if (id >= MAX_ITEM_ICONS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
StartSpriteAffineAnim(gPSSData->itemIconSprites[id].sprite, animNum);
|
StartSpriteAffineAnim(gPSSData->itemIcons[id].sprite, animNum);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80964E8(u8 id, u8 command, u8 cursorArea, u8 cursorPos)
|
#define sItemIconId data[0]
|
||||||
|
#define sState data[0]
|
||||||
|
#define sCursorArea data[6]
|
||||||
|
#define sCursorPos data[7]
|
||||||
|
|
||||||
|
static void SetItemIconCallback(u8 id, u8 callbackId, u8 cursorArea, u8 cursorPos)
|
||||||
{
|
{
|
||||||
if (id >= MAX_ITEM_ICONS)
|
if (id >= MAX_ITEM_ICONS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (command)
|
switch (callbackId)
|
||||||
{
|
{
|
||||||
case 0:
|
case ITEM_CB_WAIT_ANIM:
|
||||||
gPSSData->itemIconSprites[id].sprite->data[0] = id;
|
gPSSData->itemIcons[id].sprite->sItemIconId = id;
|
||||||
gPSSData->itemIconSprites[id].sprite->callback = sub_809692C;
|
gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_WaitAnim;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case ITEM_CB_TO_HAND:
|
||||||
gPSSData->itemIconSprites[id].sprite->data[0] = 0;
|
gPSSData->itemIcons[id].sprite->sState = 0;
|
||||||
gPSSData->itemIconSprites[id].sprite->callback = sub_8096958;
|
gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToHand;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case ITEM_CB_TO_MON:
|
||||||
gPSSData->itemIconSprites[id].sprite->data[0] = 0;
|
gPSSData->itemIcons[id].sprite->sState = 0;
|
||||||
gPSSData->itemIconSprites[id].sprite->data[6] = cursorArea;
|
gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea;
|
||||||
gPSSData->itemIconSprites[id].sprite->data[7] = cursorPos;
|
gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos;
|
||||||
gPSSData->itemIconSprites[id].sprite->callback = sub_80969F4;
|
gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToMon;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case ITEM_CB_SWAP_TO_HAND:
|
||||||
gPSSData->itemIconSprites[id].sprite->data[0] = 0;
|
gPSSData->itemIcons[id].sprite->sState = 0;
|
||||||
gPSSData->itemIconSprites[id].sprite->callback = sub_8096A74;
|
gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToHand;
|
||||||
gPSSData->itemIconSprites[id].sprite->data[6] = cursorArea;
|
gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea;
|
||||||
gPSSData->itemIconSprites[id].sprite->data[7] = cursorPos;
|
gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case ITEM_CB_SWAP_TO_MON:
|
||||||
gPSSData->itemIconSprites[id].sprite->data[0] = 0;
|
gPSSData->itemIcons[id].sprite->sState = 0;
|
||||||
gPSSData->itemIconSprites[id].sprite->data[6] = cursorArea;
|
gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea;
|
||||||
gPSSData->itemIconSprites[id].sprite->data[7] = cursorPos;
|
gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos;
|
||||||
gPSSData->itemIconSprites[id].sprite->callback = sub_8096B10;
|
gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToMon;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case ITEM_CB_HIDE_PARTY:
|
||||||
gPSSData->itemIconSprites[id].sprite->callback = sub_8096BAC;
|
// If cursor is on a Pokémon with a held item and
|
||||||
|
// the player closes the party menu, have the held
|
||||||
|
// item follow the Pokémon as the menu slides out
|
||||||
|
gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_HideParty;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096624(u8 id, bool8 show)
|
static void SetItemIconActive(u8 id, bool8 show)
|
||||||
{
|
{
|
||||||
if (id >= MAX_ITEM_ICONS)
|
if (id >= MAX_ITEM_ICONS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gPSSData->itemIconSprites[id].active = show;
|
gPSSData->itemIcons[id].active = show;
|
||||||
gPSSData->itemIconSprites[id].sprite->invisible = (show == FALSE);
|
gPSSData->itemIcons[id].sprite->invisible = (show == FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const u32 *GetItemIconPic(u16 itemId)
|
static const u32 *GetItemIconPic(u16 itemId)
|
||||||
@@ -558,7 +578,7 @@ void PrintItemDescription(void)
|
|||||||
const u8 *description;
|
const u8 *description;
|
||||||
|
|
||||||
if (IsActiveItemMoving())
|
if (IsActiveItemMoving())
|
||||||
description = ItemId_GetDescription(gPSSData->movingItem);
|
description = ItemId_GetDescription(gPSSData->movingItemId);
|
||||||
else
|
else
|
||||||
description = ItemId_GetDescription(gPSSData->displayMonItemId);
|
description = ItemId_GetDescription(gPSSData->displayMonItemId);
|
||||||
|
|
||||||
@@ -566,77 +586,77 @@ void PrintItemDescription(void)
|
|||||||
AddTextPrinterParameterized5(2, FONT_2, description, 2, 0, 0, NULL, 0, 0);
|
AddTextPrinterParameterized5(2, FONT_2, description, 2, 0, 0, NULL, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sub_80966F4(void)
|
void InitItemInfoWindow(void)
|
||||||
{
|
{
|
||||||
gPSSData->field_2236 = 25;
|
gPSSData->itemInfoWindowOffset = 25;
|
||||||
LoadBgTiles(0, gUnknown_83D35DC, 0x80, 0x1A4);
|
LoadBgTiles(0, sItemInfoFrame_Gfx, 0x80, 0x1A4);
|
||||||
sub_8096898(0);
|
DrawItemInfoWindow(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_8096728(void)
|
bool8 UpdateItemInfoWindowSlideIn(void)
|
||||||
{
|
{
|
||||||
s32 i, var;
|
s32 i, var;
|
||||||
|
|
||||||
if (gPSSData->field_2236 == 0)
|
if (gPSSData->itemInfoWindowOffset == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
gPSSData->field_2236--;
|
gPSSData->itemInfoWindowOffset--;
|
||||||
var = 25 - gPSSData->field_2236;
|
var = 25 - gPSSData->itemInfoWindowOffset;
|
||||||
for (i = 0; i < var; i++)
|
for (i = 0; i < var; i++)
|
||||||
{
|
{
|
||||||
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->field_2236 + i, i, 12, 1, 8, 15, 25);
|
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub_8096898(var);
|
DrawItemInfoWindow(var);
|
||||||
return (gPSSData->field_2236 != 0);
|
return (gPSSData->itemInfoWindowOffset != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool8 sub_80967C0(void)
|
bool8 UpdateItemInfoWindowSlideOut(void)
|
||||||
{
|
{
|
||||||
s32 i, var;
|
s32 i, var;
|
||||||
|
|
||||||
if (gPSSData->field_2236 == 25)
|
if (gPSSData->itemInfoWindowOffset == 25)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (gPSSData->field_2236 == 0)
|
if (gPSSData->itemInfoWindowOffset == 0)
|
||||||
FillBgTilemapBufferRect(0, 0, 25, 11, 1, 10, 17);
|
FillBgTilemapBufferRect(0, 0, 25, 11, 1, 10, 17);
|
||||||
|
|
||||||
gPSSData->field_2236++;
|
gPSSData->itemInfoWindowOffset++;
|
||||||
var = 25 - gPSSData->field_2236;
|
var = 25 - gPSSData->itemInfoWindowOffset;
|
||||||
for (i = 0; i < var; i++)
|
for (i = 0; i < var; i++)
|
||||||
{
|
{
|
||||||
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->field_2236 + i, i, 12, 1, 8, 15, 25);
|
WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub_8096898(var);
|
DrawItemInfoWindow(var);
|
||||||
|
|
||||||
FillBgTilemapBufferRect(0, 0, var, 11, 1, 10, 0x11);
|
FillBgTilemapBufferRect(0, 0, var, 11, 1, 10, 0x11);
|
||||||
return (gPSSData->field_2236 != 25);
|
return (gPSSData->itemInfoWindowOffset != 25);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096898(u32 x)
|
static void DrawItemInfoWindow(u32 pos)
|
||||||
{
|
{
|
||||||
if (x != 0)
|
if (pos != 0)
|
||||||
{
|
{
|
||||||
FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, x, 1, 0xFu);
|
FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, pos, 1, 0xFu);
|
||||||
FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, x, 1, 0xFu);
|
FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, pos, 1, 0xFu);
|
||||||
}
|
}
|
||||||
FillBgTilemapBufferRect(0, 0x1A5, x, 0xC, 1, 8, 0xFu);
|
FillBgTilemapBufferRect(0, 0x1A5, pos, 0xC, 1, 8, 0xFu);
|
||||||
FillBgTilemapBufferRect(0, 0x1A6, x, 0xB, 1, 1, 0xFu);
|
FillBgTilemapBufferRect(0, 0x1A6, pos, 0xB, 1, 1, 0xFu);
|
||||||
FillBgTilemapBufferRect(0, 0x1A7, x, 0x14, 1, 1, 0xFu);
|
FillBgTilemapBufferRect(0, 0x1A7, pos, 0x14, 1, 1, 0xFu);
|
||||||
ScheduleBgCopyTilemapToVram(0);
|
ScheduleBgCopyTilemapToVram(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_809692C(struct Sprite *sprite)
|
static void SpriteCB_ItemIcon_WaitAnim(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
if (sprite->affineAnimEnded)
|
if (sprite->affineAnimEnded)
|
||||||
{
|
{
|
||||||
sub_8096624(sprite->data[0], FALSE);
|
SetItemIconActive(sprite->data[0], FALSE);
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096958(struct Sprite *sprite)
|
static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
switch (sprite->data[0])
|
switch (sprite->data[0])
|
||||||
{
|
{
|
||||||
@@ -653,19 +673,19 @@ static void sub_8096958(struct Sprite *sprite)
|
|||||||
sprite->x = sprite->data[1] >> 4;
|
sprite->x = sprite->data[1] >> 4;
|
||||||
sprite->y = sprite->data[2] >> 4;
|
sprite->y = sprite->data[2] >> 4;
|
||||||
if (++sprite->data[5] > 11)
|
if (++sprite->data[5] > 11)
|
||||||
sprite->callback = sub_80969BC;
|
sprite->callback = SpriteCB_ItemIcon_SetPosToCursor;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80969BC(struct Sprite *sprite)
|
static void SpriteCB_ItemIcon_SetPosToCursor(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->x = gPSSData->cursorSprite->x + 4;
|
sprite->x = gPSSData->cursorSprite->x + 4;
|
||||||
sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 8;
|
sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 8;
|
||||||
sprite->oam.priority = gPSSData->cursorSprite->oam.priority;
|
sprite->oam.priority = gPSSData->cursorSprite->oam.priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_80969F4(struct Sprite *sprite)
|
static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
switch (sprite->data[0])
|
switch (sprite->data[0])
|
||||||
{
|
{
|
||||||
@@ -683,14 +703,14 @@ static void sub_80969F4(struct Sprite *sprite)
|
|||||||
sprite->y = sprite->data[2] >> 4;
|
sprite->y = sprite->data[2] >> 4;
|
||||||
if (++sprite->data[5] > 11)
|
if (++sprite->data[5] > 11)
|
||||||
{
|
{
|
||||||
sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]);
|
SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]);
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096A74(struct Sprite *sprite)
|
static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
switch (sprite->data[0])
|
switch (sprite->data[0])
|
||||||
{
|
{
|
||||||
@@ -709,15 +729,15 @@ static void sub_8096A74(struct Sprite *sprite)
|
|||||||
sprite->x2 = gSineTable[sprite->data[5] * 8] >> 4;
|
sprite->x2 = gSineTable[sprite->data[5] * 8] >> 4;
|
||||||
if (++sprite->data[5] > 11)
|
if (++sprite->data[5] > 11)
|
||||||
{
|
{
|
||||||
sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]);
|
SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]);
|
||||||
sprite->x2 = 0;
|
sprite->x2 = 0;
|
||||||
sprite->callback = sub_80969BC;
|
sprite->callback = SpriteCB_ItemIcon_SetPosToCursor;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096B10(struct Sprite *sprite)
|
static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
switch (sprite->data[0])
|
switch (sprite->data[0])
|
||||||
{
|
{
|
||||||
@@ -736,7 +756,7 @@ static void sub_8096B10(struct Sprite *sprite)
|
|||||||
sprite->x2 = -(gSineTable[sprite->data[5] * 8] >> 4);
|
sprite->x2 = -(gSineTable[sprite->data[5] * 8] >> 4);
|
||||||
if (++sprite->data[5] > 11)
|
if (++sprite->data[5] > 11)
|
||||||
{
|
{
|
||||||
sub_80962F0(sub_80962A8(sprite), sprite->data[6], sprite->data[7]);
|
SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]);
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
sprite->x2 = 0;
|
sprite->x2 = 0;
|
||||||
}
|
}
|
||||||
@@ -744,12 +764,17 @@ static void sub_8096B10(struct Sprite *sprite)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8096BAC(struct Sprite *sprite)
|
static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite)
|
||||||
{
|
{
|
||||||
sprite->y -= 8;
|
sprite->y -= 8;
|
||||||
if (sprite->y + sprite->y2 < -16)
|
if (sprite->y + sprite->y2 < -16)
|
||||||
{
|
{
|
||||||
sprite->callback = SpriteCallbackDummy;
|
sprite->callback = SpriteCallbackDummy;
|
||||||
sub_8096624(sub_80962A8(sprite), FALSE);
|
SetItemIconActive(GetItemIconIdxBySprite(sprite), FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef sState
|
||||||
|
#undef sItemIconId
|
||||||
|
#undef sCursorArea
|
||||||
|
#undef sCursorPos
|
||||||
|
|||||||
Reference in New Issue
Block a user