Sync pokemon_storage_system_8.c

This commit is contained in:
Eduardo Quezada
2022-07-31 21:41:39 -04:00
parent 95dd979f09
commit 2d2d17dde3
4 changed files with 222 additions and 197 deletions
+7 -7
View File
@@ -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);
+4 -4
View File
@@ -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;
+9 -9
View File
@@ -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
View File
@@ -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