through sub_809223C
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -6,219 +6,6 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_83CEC40:: @ 83CEC40
|
||||
.incbin "graphics/interface/pss_unk_83CEC40.gbapal"
|
||||
|
||||
gUnknown_83CEC80:: @ 83CEC80
|
||||
.incbin "graphics/interface/pss_unk_83CEC80.4bpp.lz"
|
||||
|
||||
gUnknown_83CF050:: @ 83CF050
|
||||
.incbin "graphics/interface/pss_unk_83CF050.bin.lz"
|
||||
|
||||
gUnknown_83CF12C:: @ 83CF12C
|
||||
.incbin "graphics/interface/pss_unk_83CF12C.gbapal"
|
||||
|
||||
gUnknown_83CF16C:: @ 83CF16C
|
||||
.incbin "graphics/interface/pss_unk_83CF16C.4bpp.lz"
|
||||
|
||||
gUnknown_83CF374:: @ 83CF374
|
||||
.incbin "graphics/interface/pss_unk_83CF374.bin.lz"
|
||||
|
||||
gUnknown_83CF424:: @ 83CF424
|
||||
.incbin "graphics/interface/pss_unk_83CF424.gbapal"
|
||||
|
||||
gUnknown_83CF464:: @ 83CF464
|
||||
.incbin "graphics/interface/pss_unk_83CF464.4bpp.lz"
|
||||
|
||||
gUnknown_83CF750:: @ 83CF750
|
||||
.incbin "graphics/interface/pss_unk_83CF750.bin.lz"
|
||||
|
||||
gUnknown_83CF834:: @ 83CF834
|
||||
.incbin "graphics/interface/pss_unk_83CF834.gbapal"
|
||||
|
||||
gUnknown_83CF874:: @ 83CF874
|
||||
.incbin "graphics/interface/pss_unk_83CF874.4bpp.lz"
|
||||
|
||||
gUnknown_83CFA94:: @ 83CFA94
|
||||
.incbin "graphics/interface/pss_unk_83CFA94.bin.lz"
|
||||
|
||||
gUnknown_83CFB60:: @ 83CFB60
|
||||
.incbin "graphics/interface/pss_unk_83CFB60.gbapal"
|
||||
|
||||
gUnknown_83CFBA0:: @ 83CFBA0
|
||||
.incbin "graphics/interface/pss_unk_83CFBA0.4bpp.lz"
|
||||
|
||||
gUnknown_83CFEF0:: @ 83CFEF0
|
||||
.incbin "graphics/interface/pss_unk_83CFEF0.bin.lz"
|
||||
|
||||
gUnknown_83CFFC8:: @ 83CFFC8
|
||||
.incbin "graphics/interface/pss_unk_83CFFC8.gbapal"
|
||||
|
||||
gUnknown_83D0008:: @ 83D0008
|
||||
.incbin "graphics/interface/pss_unk_83D0008.4bpp.lz"
|
||||
.space 4
|
||||
|
||||
gUnknown_83D033C:: @ 83D033C
|
||||
.incbin "graphics/interface/pss_unk_83D033C.bin.lz"
|
||||
|
||||
gUnknown_83D0414:: @ 83D0414
|
||||
.incbin "graphics/interface/pss_unk_83D0414.gbapal"
|
||||
|
||||
gUnknown_83D0454:: @ 83D0454
|
||||
.incbin "graphics/interface/pss_unk_83D0454.4bpp.lz"
|
||||
|
||||
gUnknown_83D070C:: @ 83D070C
|
||||
.incbin "graphics/interface/pss_unk_83D070C.bin.lz"
|
||||
|
||||
gUnknown_83D07D8:: @ 83D07D8
|
||||
.incbin "graphics/interface/pss_unk_83D07D8.gbapal"
|
||||
|
||||
gUnknown_83D0818:: @ 83D0818
|
||||
.incbin "graphics/interface/pss_unk_83D0818.4bpp.lz"
|
||||
|
||||
gUnknown_83D0B5C:: @ 83D0B5C
|
||||
.incbin "graphics/interface/pss_unk_83D0B5C.bin.lz"
|
||||
|
||||
gUnknown_83D0C38:: @ 83D0C38
|
||||
.incbin "graphics/interface/pss_unk_83D0C38.gbapal"
|
||||
|
||||
gUnknown_83D0C78:: @ 83D0C78
|
||||
.incbin "graphics/interface/pss_unk_83D0C78.4bpp.lz"
|
||||
|
||||
gUnknown_83D0FFC:: @ 83D0FFC
|
||||
.incbin "graphics/interface/pss_unk_83D0FFC.bin.lz"
|
||||
|
||||
gUnknown_83D10E4:: @ 83D10E4
|
||||
.incbin "graphics/interface/pss_unk_83D10E4.gbapal"
|
||||
|
||||
gUnknown_83D1124:: @ 83D1124
|
||||
.incbin "graphics/interface/pss_unk_83D1124.4bpp.lz"
|
||||
|
||||
gUnknown_83D13D8:: @ 83D13D8
|
||||
.incbin "graphics/interface/pss_unk_83D13D8.bin.lz"
|
||||
|
||||
gUnknown_83D14B4:: @ 83D14B4
|
||||
.incbin "graphics/interface/pss_unk_83D14B4.gbapal"
|
||||
|
||||
gUnknown_83D14F4:: @ 83D14F4
|
||||
.incbin "graphics/interface/pss_unk_83D14F4.4bpp.lz"
|
||||
|
||||
gUnknown_83D1788:: @ 83D1788
|
||||
.incbin "graphics/interface/pss_unk_83D1788.bin.lz"
|
||||
|
||||
gUnknown_83D1874:: @ 83D1874
|
||||
.incbin "graphics/interface/pss_unk_83D1874.gbapal"
|
||||
|
||||
gUnknown_83D18B4:: @ 83D18B4
|
||||
.incbin "graphics/interface/pss_unk_83D18B4.4bpp.lz"
|
||||
|
||||
gUnknown_83D1B4C:: @ 83D1B4C
|
||||
.incbin "graphics/interface/pss_unk_83D1B4C.bin.lz"
|
||||
|
||||
gUnknown_83D1C2C:: @ 83D1C2C
|
||||
.incbin "graphics/interface/pss_unk_83D1C2C.gbapal"
|
||||
|
||||
.space 32
|
||||
|
||||
gUnknown_83D1C8C:: @ 83D1C8C
|
||||
.incbin "graphics/interface/pss_unk_83D1C8C.4bpp.lz"
|
||||
|
||||
gUnknown_83D1EC4:: @ 83D1EC4
|
||||
.incbin "graphics/interface/pss_unk_83D1EC4.bin.lz"
|
||||
|
||||
gUnknown_83D1F94:: @ 83D1F94
|
||||
.incbin "graphics/interface/pss_unk_83D1F94.gbapal"
|
||||
|
||||
gUnknown_83D1FD4:: @ 83D1FD4
|
||||
.incbin "graphics/interface/pss_unk_83D1FD4.4bpp.lz"
|
||||
|
||||
gUnknown_83D22B8:: @ 83D22B8
|
||||
.incbin "graphics/interface/pss_unk_83D22B8.bin.lz"
|
||||
|
||||
gUnknown_83D239C:: @ 83D239C
|
||||
.incbin "graphics/interface/pss_unk_83D239C.gbapal"
|
||||
|
||||
gUnknown_83D23DC:: @ 83D23DC
|
||||
.incbin "graphics/interface/pss_unk_83D23DC.4bpp.lz"
|
||||
|
||||
gUnknown_83D256C:: @ 83D256C
|
||||
.incbin "graphics/interface/pss_unk_83D256C.bin.lz"
|
||||
|
||||
gUnknown_83D2614:: @ 83D2614
|
||||
.incbin "graphics/interface/pss_unk_83D2614.gbapal"
|
||||
|
||||
gUnknown_83D2654:: @ 83D2654
|
||||
.incbin "graphics/interface/pss_unk_83D2654.4bpp.lz"
|
||||
|
||||
gUnknown_83D277C:: @ 83D277C
|
||||
.incbin "graphics/interface/pss_unk_83D277C.bin.lz"
|
||||
|
||||
.incbin "graphics/interface/pss_unk_83D2820.bin"
|
||||
|
||||
gUnknown_83D29D0:: @ 83D29D0
|
||||
.incbin "graphics/interface/pss_unk_83D29D0.gbapal"
|
||||
|
||||
gUnknown_83D2A10:: @ 83D2A10
|
||||
.4byte gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40
|
||||
.4byte gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C
|
||||
.4byte gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424
|
||||
.4byte gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834
|
||||
.4byte gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60
|
||||
.4byte gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8
|
||||
.4byte gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414
|
||||
.4byte gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8
|
||||
.4byte gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38
|
||||
.4byte gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4
|
||||
.4byte gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4
|
||||
.4byte gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874
|
||||
.4byte gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C
|
||||
.4byte gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94
|
||||
.4byte gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C
|
||||
.4byte gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614
|
||||
|
||||
gUnknown_83D2AD0::
|
||||
.incbin "graphics/interface/pss_unk_83D2AD0.4bpp"
|
||||
.4byte 0x000023ba
|
||||
|
||||
gUnknown_83D2B54:: @ 83D2B54
|
||||
obj_tiles gUnknown_83D2AD0, 0x0080, 6
|
||||
|
||||
gUnknown_83D2B5C::
|
||||
.4byte 0x80004000, 0x00000800
|
||||
|
||||
gUnknown_83D2B64::
|
||||
obj_image_anim_frame 0x0000, 5
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_83D2B6C::
|
||||
obj_image_anim_frame 0x0008, 5
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_83D2B74::
|
||||
.4byte gUnknown_83D2B64
|
||||
.4byte gUnknown_83D2B6C
|
||||
|
||||
gUnknown_83D2B7C:: @ 83D2B7C
|
||||
spr_template 3, 56009, gUnknown_83D2B5C, gUnknown_83D2B74, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
gUnknown_83D2B94::
|
||||
.4byte 0x00008000, 0x00000800
|
||||
|
||||
gUnknown_83D2B9C::
|
||||
obj_image_anim_frame 0x0000, 5
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_83D2BA4::
|
||||
obj_image_anim_frame 0x0002, 5
|
||||
obj_image_anim_end
|
||||
|
||||
gUnknown_83D2BAC::
|
||||
.4byte gUnknown_83D2B9C
|
||||
.4byte gUnknown_83D2BA4
|
||||
|
||||
gUnknown_83D2BB4:: @ 83D2BB4
|
||||
spr_template 6, 56010, gUnknown_83D2B94, gUnknown_83D2BAC, NULL, gDummySpriteAffineAnimTable, sub_8092164
|
||||
|
||||
gUnknown_83D2BCC::
|
||||
.incbin "graphics/interface/pss_unk_83D2BCC.gbapal"
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "global.h"
|
||||
|
||||
extern const u16 gMonIconPalettes[][16];
|
||||
extern const u8 gMonIconPaletteIndices[];
|
||||
|
||||
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
|
||||
const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra);
|
||||
@@ -26,5 +27,6 @@ void LoadMonIconPalette(u16 iconId);
|
||||
void FreeMonIconPalette(u16 iconId);
|
||||
void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum);
|
||||
u8 GetMonIconPaletteIndexFromSpecies(u16 species);
|
||||
u16 GetIconSpecies(u16 species, u32 personality);
|
||||
|
||||
#endif // GUARD_POKEMON_ICON_H
|
||||
|
||||
@@ -36,7 +36,7 @@ void ZeroBoxMonAt(u8 boxId, u8 monPosition);
|
||||
void Cb2_ReturnToPSS(void);
|
||||
void ResetPokemonStorageSystem(void);
|
||||
u8 StorageGetCurrentBox(void);
|
||||
void DrawTextWindowAndBufferTiles(const u8 *name, void *a1, u8 a2, u8 a3, u8 *buffer, s32 a5);
|
||||
void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer);
|
||||
void SetCurrentBox(u8 boxId);
|
||||
void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
|
||||
struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#define IN_BOX_COLUMNS 5
|
||||
#define IN_BOX_ROWS 6
|
||||
|
||||
#define MAX_MON_ICONS 40
|
||||
|
||||
enum
|
||||
{
|
||||
MODE_PARTY,
|
||||
@@ -106,6 +108,14 @@ enum
|
||||
#define TAG_TILE_7 0x7
|
||||
#define TAG_TILE_0 0x0
|
||||
#define TAG_TILE_1 0x1
|
||||
#define TAG_TILE_6 0x6
|
||||
|
||||
struct WallpaperTable
|
||||
{
|
||||
const u32 *tiles;
|
||||
const u32 *tileMap;
|
||||
const u16 *palettes;
|
||||
};
|
||||
|
||||
struct StorageAction
|
||||
{
|
||||
@@ -202,7 +212,8 @@ struct PokemonStorageSystemData
|
||||
u16 field_2DE;
|
||||
u16 field_2E0;
|
||||
u8 filler[22];
|
||||
u8 field_2F8[1024];
|
||||
u8 field_2F8[512];
|
||||
u8 field_4F8[512];
|
||||
u8 field_6F8;
|
||||
u8 field_6F9;
|
||||
u8 field_6FA;
|
||||
@@ -229,8 +240,8 @@ struct PokemonStorageSystemData
|
||||
/* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT];
|
||||
/* 0afc */ struct Sprite **field_B00;
|
||||
/* 0b00 */ struct Sprite **field_B04;
|
||||
/* 0b04 */ u16 field_B08[40];
|
||||
/* 0b54 */ u16 field_B58[40];
|
||||
/* 0b04 */ u16 field_B08[MAX_MON_ICONS];
|
||||
/* 0b54 */ u16 field_B58[MAX_MON_ICONS];
|
||||
/* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT];
|
||||
/* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT];
|
||||
/* 0c58 */ u8 field_C5C;
|
||||
@@ -406,5 +417,8 @@ void InitMenu(void);
|
||||
void SetMenuText(u8 textId);
|
||||
void sub_8095C84(u8 cursorArea, u8 cursorPos);
|
||||
void sub_8095E2C(u16 itemId);
|
||||
u8 GetBoxWallpaper(u8 boxId);
|
||||
bool8 IsCursorOnBox(void);
|
||||
bool8 IsCursorInBox(void);
|
||||
|
||||
#endif //GUARD_POKEMON_STORAGE_SYSTEM_INTERNAL_H
|
||||
|
||||
@@ -100,6 +100,7 @@ void sub_808FB68(void);
|
||||
void PrintStorageActionText(u8 textId);
|
||||
void ShowYesNoWindow(s8 species);
|
||||
void ClearBottomWindow(void);
|
||||
|
||||
void AddWallpaperSetsMenu(void);
|
||||
void AddWallpapersMenu(u8 wallpaperSet);
|
||||
void sub_808FDFC(void);
|
||||
@@ -120,12 +121,28 @@ void DestroyAllPartyMonIcons(void);
|
||||
void sub_8091114(void);
|
||||
bool8 sub_8091150(void);
|
||||
void DestroyBoxMonIcon(struct Sprite * sprite);
|
||||
bool8 IsCursorOnBox(void);
|
||||
bool8 IsCursorInBox(void);
|
||||
void sub_80911B0(struct Sprite * sprite);
|
||||
void sub_80913DC(u8 box);
|
||||
|
||||
void sub_8091420(u8 taskId);
|
||||
bool8 sub_809140C(void);
|
||||
s8 sub_80916F4(u8 boxId);
|
||||
void LoadWallpaperGfx(u8 wallpaperId, s8 direction);
|
||||
bool32 WaitForWallpaperGfxLoad(void);
|
||||
void sub_8091984(void *buffer, const void *buffer2, s8 direction, u8 baseBlock);
|
||||
void sub_8091A24(void *buffer);
|
||||
void sub_8091A94(u8 wallpaperId);
|
||||
void sub_8091C48(u8 wallpaperId, s8 direction);
|
||||
void sub_8091E84(struct Sprite * sprite);
|
||||
void sub_8091EB8(struct Sprite * sprite);
|
||||
s16 sub_8091F60(const u8 *boxName);
|
||||
void sub_8091E34(void);
|
||||
void sub_8091EF0(void);
|
||||
void sub_8091F80(void);
|
||||
void sub_809200C(s8 direction);
|
||||
void sub_80920AC(void);
|
||||
void sub_80920FC(bool8 species);
|
||||
void sub_8092164(struct Sprite * sprite);
|
||||
|
||||
const u32 gPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/interface/pss_unk_83CE438.4bpp.lz");
|
||||
const u32 gPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE4D0.bin.lz");
|
||||
@@ -2841,14 +2858,18 @@ void sub_808FF70(void)
|
||||
}
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// Mon icons
|
||||
// ******************************************************************
|
||||
|
||||
void sub_808FFAC(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
LoadMonIconPalettes();
|
||||
for (i = 0; i < 40; i++)
|
||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||
sPSSData->field_B08[i] = 0;
|
||||
for (i = 0; i < 40; i++)
|
||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||
sPSSData->field_B58[i] = 0;
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
sPSSData->partySprites[i] = NULL;
|
||||
@@ -2859,10 +2880,6 @@ void sub_808FFAC(void)
|
||||
sPSSData->field_78C = 0;
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// Mon icons
|
||||
// ******************************************************************
|
||||
|
||||
u8 sub_8090058(void)
|
||||
{
|
||||
return (IsCursorInBox() ? 2 : 1);
|
||||
@@ -3434,3 +3451,826 @@ void sub_8090FC4(u8 mode, u8 position)
|
||||
StartSpriteAffineAnim(*sPSSData->field_B04, 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8091084(void)
|
||||
{
|
||||
if (*sPSSData->field_B04 == NULL || (*sPSSData->field_B04)->invisible)
|
||||
return FALSE;
|
||||
|
||||
if ((*sPSSData->field_B04)->affineAnimEnded)
|
||||
(*sPSSData->field_B04)->invisible = TRUE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_80910CC(void)
|
||||
{
|
||||
if (*sPSSData->field_B04 != NULL)
|
||||
{
|
||||
FreeOamMatrix((*sPSSData->field_B04)->oam.matrixNum);
|
||||
DestroyBoxMonIcon(*sPSSData->field_B04);
|
||||
*sPSSData->field_B04 = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8091114(void)
|
||||
{
|
||||
if (*sPSSData->field_B04 != NULL)
|
||||
{
|
||||
(*sPSSData->field_B04)->invisible = FALSE;
|
||||
StartSpriteAffineAnim(*sPSSData->field_B04, 1);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_8091150(void)
|
||||
{
|
||||
if (sPSSData->field_B04 == NULL)
|
||||
return FALSE;
|
||||
|
||||
if ((*sPSSData->field_B04)->affineAnimEnded)
|
||||
sPSSData->field_B04 = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void SetMovingMonPriority(u8 priority)
|
||||
{
|
||||
sPSSData->movingMonSprite->oam.priority = priority;
|
||||
}
|
||||
|
||||
void sub_80911B0(struct Sprite *sprite)
|
||||
{
|
||||
sprite->pos1.x = sPSSData->field_CB4->pos1.x;
|
||||
sprite->pos1.y = sPSSData->field_CB4->pos1.y + sPSSData->field_CB4->pos2.y + 4;
|
||||
}
|
||||
|
||||
u16 sub_80911D4(u16 species)
|
||||
{
|
||||
u16 i, var;
|
||||
|
||||
// Find the currently-allocated slot
|
||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||
{
|
||||
if (sPSSData->field_B58[i] == species)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == MAX_MON_ICONS)
|
||||
{
|
||||
// Find the first empty slot
|
||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||
{
|
||||
if (sPSSData->field_B58[i] == SPECIES_NONE)
|
||||
break;
|
||||
}
|
||||
if (i == MAX_MON_ICONS)
|
||||
return 0xFFFF;
|
||||
}
|
||||
|
||||
sPSSData->field_B58[i] = species;
|
||||
sPSSData->field_B08[i]++;
|
||||
var = 16 * i;
|
||||
CpuCopy32(GetMonIconTiles(species, TRUE), (void*)(OBJ_VRAM0) + var * 32, 0x200);
|
||||
|
||||
return var;
|
||||
}
|
||||
|
||||
void sub_8091290(u16 species)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < MAX_MON_ICONS; i++)
|
||||
{
|
||||
if (sPSSData->field_B58[i] == species)
|
||||
{
|
||||
if (--sPSSData->field_B08[i] == 0)
|
||||
sPSSData->field_B58[i] = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 oamPriority, u8 subpriority)
|
||||
{
|
||||
u16 tileNum;
|
||||
u8 spriteId;
|
||||
struct SpriteTemplate template = gUnknown_83CEBF0;
|
||||
|
||||
species = GetIconSpecies(species, personality);
|
||||
template.paletteTag = 0xDAC0 + gMonIconPaletteIndices[species];
|
||||
tileNum = sub_80911D4(species);
|
||||
if (tileNum == 0xFFFF)
|
||||
return NULL;
|
||||
|
||||
spriteId = CreateSprite(&template, x, y, subpriority);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
{
|
||||
sub_8091290(species);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gSprites[spriteId].oam.tileNum = tileNum;
|
||||
gSprites[spriteId].oam.priority = oamPriority;
|
||||
gSprites[spriteId].data[0] = species;
|
||||
return &gSprites[spriteId];
|
||||
}
|
||||
|
||||
void DestroyBoxMonIcon(struct Sprite *sprite)
|
||||
{
|
||||
sub_8091290(sprite->data[0]);
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
// ******************************************************************
|
||||
// Load wallpaper
|
||||
// ******************************************************************
|
||||
|
||||
const u16 gUnknown_83CEC40[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal");
|
||||
const u32 gUnknown_83CEC80[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz");
|
||||
const u32 gUnknown_83CF050[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz");
|
||||
const u16 gUnknown_83CF12C[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal");
|
||||
const u32 gUnknown_83CF16C[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz");
|
||||
const u32 gUnknown_83CF374[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz");
|
||||
const u16 gUnknown_83CF424[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal");
|
||||
const u32 gUnknown_83CF464[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz");
|
||||
const u32 gUnknown_83CF750[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz");
|
||||
const u16 gUnknown_83CF834[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal");
|
||||
const u32 gUnknown_83CF874[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz");
|
||||
const u32 gUnknown_83CFA94[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz");
|
||||
const u16 gUnknown_83CFB60[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal");
|
||||
const u32 gUnknown_83CFBA0[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz");
|
||||
const u32 gUnknown_83CFEF0[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz");
|
||||
const u16 gUnknown_83CFFC8[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal");
|
||||
const u32 gUnknown_83D0008[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz");
|
||||
const u8 sSpace_83D0338[4] = {};
|
||||
const u32 gUnknown_83D033C[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz");
|
||||
const u16 gUnknown_83D0414[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal");
|
||||
const u32 gUnknown_83D0454[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz");
|
||||
const u32 gUnknown_83D070C[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz");
|
||||
const u16 gUnknown_83D07D8[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal");
|
||||
const u32 gUnknown_83D0818[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz");
|
||||
const u32 gUnknown_83D0B5C[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz");
|
||||
const u16 gUnknown_83D0C38[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal");
|
||||
const u32 gUnknown_83D0C78[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz");
|
||||
const u32 gUnknown_83D0FFC[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz");
|
||||
const u16 gUnknown_83D10E4[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal");
|
||||
const u32 gUnknown_83D1124[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz");
|
||||
const u32 gUnknown_83D13D8[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz");
|
||||
const u16 gUnknown_83D14B4[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal");
|
||||
const u32 gUnknown_83D14F4[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz");
|
||||
const u32 gUnknown_83D1788[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz");
|
||||
const u16 gUnknown_83D1874[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal");
|
||||
const u32 gUnknown_83D18B4[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz");
|
||||
const u32 gUnknown_83D1B4C[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz");
|
||||
const u16 gUnknown_83D1C2C[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal");
|
||||
const u8 sSpace_83D1C6C[32] = {};
|
||||
const u32 gUnknown_83D1C8C[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz");
|
||||
const u32 gUnknown_83D1EC4[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz");
|
||||
const u16 gUnknown_83D1F94[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal");
|
||||
const u32 gUnknown_83D1FD4[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz");
|
||||
const u32 gUnknown_83D22B8[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz");
|
||||
const u16 gUnknown_83D239C[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal");
|
||||
const u32 gUnknown_83D23DC[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz");
|
||||
const u32 gUnknown_83D256C[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz");
|
||||
const u16 gUnknown_83D2614[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal");
|
||||
const u32 gUnknown_83D2654[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz");
|
||||
const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz");
|
||||
const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin");
|
||||
|
||||
const u16 gUnknown_83D29D0[][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)},
|
||||
{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)},
|
||||
{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)}
|
||||
};
|
||||
|
||||
const struct WallpaperTable gWallpaperTable[] = {
|
||||
{gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40},
|
||||
{gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C},
|
||||
{gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424},
|
||||
{gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834},
|
||||
{gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60},
|
||||
{gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8},
|
||||
{gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414},
|
||||
{gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8},
|
||||
{gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38},
|
||||
{gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4},
|
||||
{gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4},
|
||||
{gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874},
|
||||
{gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C},
|
||||
{gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94},
|
||||
{gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C},
|
||||
{gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614},
|
||||
};
|
||||
|
||||
const u16 gUnknown_83D2AD0[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp");
|
||||
const u8 sUnref_83D2B50[] = {0xba, 0x23};
|
||||
|
||||
const struct SpriteSheet gUnknown_83D2B54 = {
|
||||
gUnknown_83D2AD0, 0x0080, TAG_TILE_6
|
||||
};
|
||||
|
||||
const struct OamData gUnknown_83D2B5C = {
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = FALSE,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(32x16),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(32x16),
|
||||
.tileNum = 0,
|
||||
.priority = 2,
|
||||
.paletteNum = 0
|
||||
};
|
||||
|
||||
const union AnimCmd gUnknown_83D2B64[] = {
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd gUnknown_83D2B6C[] = {
|
||||
ANIMCMD_FRAME(8, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd *const gUnknown_83D2B74[] = {
|
||||
gUnknown_83D2B64,
|
||||
gUnknown_83D2B6C
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83D2B7C = {
|
||||
.tileTag = TAG_TILE_3,
|
||||
.paletteTag = TAG_PAL_DAC9,
|
||||
.oam = &gUnknown_83D2B5C,
|
||||
.anims = gUnknown_83D2B74,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy
|
||||
};
|
||||
|
||||
const struct OamData gUnknown_83D2B94 = {
|
||||
.y = 0,
|
||||
.affineMode = ST_OAM_AFFINE_OFF,
|
||||
.objMode = ST_OAM_OBJ_NORMAL,
|
||||
.mosaic = FALSE,
|
||||
.bpp = ST_OAM_4BPP,
|
||||
.shape = SPRITE_SHAPE(8x16),
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = SPRITE_SIZE(8x16),
|
||||
.tileNum = 0x000,
|
||||
.priority = 2,
|
||||
.paletteNum = 0
|
||||
};
|
||||
|
||||
const union AnimCmd gUnknown_83D2B9C[] = {
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd gUnknown_83D2BA4[] = {
|
||||
ANIMCMD_FRAME(2, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
const union AnimCmd *const gUnknown_83D2BAC[] = {
|
||||
gUnknown_83D2B9C,
|
||||
gUnknown_83D2BA4
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_83D2BB4 = {
|
||||
.tileTag = TAG_TILE_6,
|
||||
.paletteTag = TAG_PAL_WAVEFORM,
|
||||
.oam = &gUnknown_83D2B94,
|
||||
.anims = gUnknown_83D2BAC,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = sub_8092164
|
||||
};
|
||||
|
||||
void sub_80913DC(u8 boxId)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_8091420, 2);
|
||||
|
||||
gTasks[taskId].data[2] = boxId;
|
||||
}
|
||||
|
||||
bool8 sub_809140C(void)
|
||||
{
|
||||
return FuncIsActiveTask(sub_8091420);
|
||||
}
|
||||
|
||||
void sub_8091420(u8 taskId)
|
||||
{
|
||||
struct Task *task = &gTasks[taskId];
|
||||
|
||||
switch (task->data[0])
|
||||
{
|
||||
case 0:
|
||||
sPSSData->field_2D2 = 0;
|
||||
sPSSData->bg2_X = 0;
|
||||
task->data[1] = RequestDma3Fill(0, sPSSData->field_4AC4, 0x1000, 1);
|
||||
break;
|
||||
case 1:
|
||||
if (CheckForSpaceForDma3Request(task->data[1]) == -1)
|
||||
return;
|
||||
|
||||
SetBgTilemapBuffer(2, sPSSData->field_4AC4);
|
||||
ShowBg(2);
|
||||
break;
|
||||
case 2:
|
||||
LoadWallpaperGfx(task->data[2], 0);
|
||||
break;
|
||||
case 3:
|
||||
if (!WaitForWallpaperGfxLoad())
|
||||
return;
|
||||
|
||||
sub_8091A94(task->data[2]);
|
||||
sub_8091F80();
|
||||
sub_80900D4(task->data[2]);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(27) | BGCNT_TXT512x256);
|
||||
break;
|
||||
case 4:
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
default:
|
||||
task->data[0] = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
task->data[0]++;
|
||||
}
|
||||
|
||||
void SetUpScrollToBox(u8 boxId)
|
||||
{
|
||||
s8 direction = sub_80916F4(boxId);
|
||||
|
||||
sPSSData->field_2CE = (direction > 0) ? 6 : -6;
|
||||
sPSSData->field_2D3 = (direction > 0) ? 1 : 2;
|
||||
sPSSData->field_2D0 = 32;
|
||||
sPSSData->field_2D4 = boxId;
|
||||
sPSSData->field_2D6 = (direction <= 0) ? 5 : 0;
|
||||
sPSSData->field_2D8 = direction;
|
||||
sPSSData->field_2DA = (direction > 0) ? 264 : 56;
|
||||
sPSSData->field_2DC = (direction <= 0) ? 5 : 0;
|
||||
sPSSData->field_2DE = 0;
|
||||
sPSSData->field_2E0 = 2;
|
||||
sPSSData->field_A64 = boxId;
|
||||
sPSSData->field_A65 = direction;
|
||||
sPSSData->field_A63 = 0;
|
||||
}
|
||||
|
||||
bool8 ScrollToBox(void)
|
||||
{
|
||||
bool8 var;
|
||||
|
||||
switch (sPSSData->field_A63)
|
||||
{
|
||||
case 0:
|
||||
LoadWallpaperGfx(sPSSData->field_A64, sPSSData->field_A65);
|
||||
sPSSData->field_A63++;
|
||||
case 1:
|
||||
if (!WaitForWallpaperGfxLoad())
|
||||
return TRUE;
|
||||
|
||||
sub_8090574(sPSSData->field_A64, sPSSData->field_A65);
|
||||
sub_8091C48(sPSSData->field_A64, sPSSData->field_A65);
|
||||
sub_809200C(sPSSData->field_A65);
|
||||
break;
|
||||
case 2:
|
||||
var = sub_809062C();
|
||||
if (sPSSData->field_2D0 != 0)
|
||||
{
|
||||
sPSSData->bg2_X += sPSSData->field_2CE;
|
||||
if (--sPSSData->field_2D0 != 0)
|
||||
return TRUE;
|
||||
sub_8091E34();
|
||||
sub_80920AC();
|
||||
}
|
||||
return var;
|
||||
}
|
||||
|
||||
sPSSData->field_A63++;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
s8 sub_80916F4(u8 boxId)
|
||||
{
|
||||
u8 i;
|
||||
u8 currentBox = StorageGetCurrentBox();
|
||||
|
||||
for (i = 0; currentBox != boxId; i++)
|
||||
{
|
||||
currentBox++;
|
||||
if (currentBox >= TOTAL_BOXES_COUNT)
|
||||
currentBox = 0;
|
||||
}
|
||||
|
||||
return (i < TOTAL_BOXES_COUNT / 2) ? 1 : -1;
|
||||
}
|
||||
|
||||
void SetWallpaperForCurrentBox(u8 wallpaperId)
|
||||
{
|
||||
u8 boxId = StorageGetCurrentBox();
|
||||
SetBoxWallpaper(boxId, wallpaperId);
|
||||
sPSSData->wallpaperChangeState = 0;
|
||||
}
|
||||
|
||||
bool8 DoWallpaperGfxChange(void)
|
||||
{
|
||||
switch (sPSSData->wallpaperChangeState)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(sPSSData->field_738, 1, 0, 16, RGB_WHITEALPHA);
|
||||
sPSSData->wallpaperChangeState++;
|
||||
break;
|
||||
case 1:
|
||||
if (!UpdatePaletteFade())
|
||||
{
|
||||
u8 curBox = StorageGetCurrentBox();
|
||||
LoadWallpaperGfx(curBox, 0);
|
||||
sPSSData->wallpaperChangeState++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (WaitForWallpaperGfxLoad() == TRUE)
|
||||
{
|
||||
sub_8091EF0();
|
||||
BeginNormalPaletteFade(sPSSData->field_738, 1, 16, 0, RGB_WHITEALPHA);
|
||||
sPSSData->wallpaperChangeState++;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!UpdatePaletteFade())
|
||||
sPSSData->wallpaperChangeState++;
|
||||
break;
|
||||
case 4:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LoadWallpaperGfx(u8 boxId, s8 direction)
|
||||
{
|
||||
u8 wallpaperId;
|
||||
const struct WallpaperTable *wallpaperGfx;
|
||||
void *iconGfx;
|
||||
u32 size1, size2;
|
||||
|
||||
sPSSData->field_6F9 = 0;
|
||||
sPSSData->field_6FA = boxId;
|
||||
sPSSData->field_6FB = direction;
|
||||
if (sPSSData->field_6FB != 0)
|
||||
{
|
||||
sPSSData->field_2D2 = (sPSSData->field_2D2 == 0);
|
||||
sub_8091A24(sPSSData->field_4AC4);
|
||||
}
|
||||
|
||||
wallpaperId = GetBoxWallpaper(sPSSData->field_6FA);
|
||||
wallpaperGfx = &gWallpaperTable[wallpaperId];
|
||||
LZ77UnCompWram(wallpaperGfx->tileMap, sPSSData->field_792);
|
||||
sub_8091984(sPSSData->field_4AC4, sPSSData->field_792, sPSSData->field_6FB, sPSSData->field_2D2);
|
||||
|
||||
if (sPSSData->field_6FB != 0)
|
||||
LoadPalette(wallpaperGfx->palettes, (sPSSData->field_2D2 * 32) + 0x40, 0x40);
|
||||
else
|
||||
CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(sPSSData->field_2D2 * 32) + 0x40], 0x40);
|
||||
|
||||
DecompressAndLoadBgGfxUsingHeap(2, wallpaperGfx->tiles, 0, 256 * sPSSData->field_2D2, 0);
|
||||
|
||||
CopyBgTilemapBufferToVram(2);
|
||||
}
|
||||
|
||||
bool32 WaitForWallpaperGfxLoad(void)
|
||||
{
|
||||
if (IsDma3ManagerBusyWithBgCopy() == TRUE)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_8091984(void *buffer, const void *tilemap, s8 direction, u8 arg2)
|
||||
{
|
||||
s16 var = (arg2 * 2) + 3;
|
||||
s16 x = ((sPSSData->bg2_X / 8 + 10) + (direction * 24)) & 0x3F;
|
||||
|
||||
CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 0x14, 0x12, x, 2, 0x14, 0x12, 0x11, arg2 << 8, var);
|
||||
|
||||
if (direction == 0)
|
||||
return;
|
||||
else if (direction > 0)
|
||||
x *= 1, x += 0x14; // x * 1 is needed to match, but can be safely removed as it makes no functional difference
|
||||
else
|
||||
x -= 4;
|
||||
|
||||
FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 0x11);
|
||||
}
|
||||
|
||||
void sub_8091A24(void *arg0)
|
||||
{
|
||||
u16 i;
|
||||
u16 *dest = arg0;
|
||||
s16 r3 = ((sPSSData->bg2_X / 8) + 30) & 0x3F;
|
||||
|
||||
if (r3 <= 31)
|
||||
dest += r3 + 0x260;
|
||||
else
|
||||
dest += r3 + 0x640;
|
||||
|
||||
for (i = 0; i < 0x2C; i++)
|
||||
{
|
||||
*dest++ = 0;
|
||||
r3 = (r3 + 1) & 0x3F;
|
||||
if (r3 == 0)
|
||||
dest -= 0x420;
|
||||
if (r3 == 0x20)
|
||||
dest += 0x3e0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8091A94(u8 boxId)
|
||||
{
|
||||
u8 tagIndex;
|
||||
s16 r6;
|
||||
u16 i;
|
||||
|
||||
struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3};
|
||||
struct SpritePalette palettes[] = {
|
||||
{sPSSData->field_6FC, TAG_PAL_DAC9},
|
||||
{}
|
||||
};
|
||||
|
||||
u16 wallpaperId = GetBoxWallpaper(boxId);
|
||||
|
||||
sPSSData->field_6FC[14] = gUnknown_83D29D0[wallpaperId][0];
|
||||
sPSSData->field_6FC[15] = gUnknown_83D29D0[wallpaperId][1];
|
||||
LoadSpritePalettes(palettes);
|
||||
sPSSData->field_738 = 0x3f0;
|
||||
|
||||
tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
|
||||
sPSSData->field_71C = 0x10e + 16 * tagIndex;
|
||||
sPSSData->field_738 |= 0x10000 << tagIndex;
|
||||
|
||||
tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9);
|
||||
sPSSData->field_71E = 0x10e + 16 * tagIndex;
|
||||
sPSSData->field_738 |= 0x10000 << tagIndex;
|
||||
|
||||
StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
|
||||
DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, sPSSData->field_4F8, 2);
|
||||
LoadSpriteSheet(&spriteSheet);
|
||||
r6 = sub_8091F60(GetBoxNamePtr(boxId));
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_83D2B7C, r6 + i * 32, 28, 24);
|
||||
sPSSData->field_720[i] = &gSprites[spriteId];
|
||||
StartSpriteAnim(sPSSData->field_720[i], i);
|
||||
}
|
||||
sPSSData->field_6F8 = 0;
|
||||
}
|
||||
|
||||
void sub_8091C48(u8 boxId, s8 direction)
|
||||
{
|
||||
u16 r8;
|
||||
s16 x, x2;
|
||||
u16 i;
|
||||
struct SpriteSheet spriteSheet = {sPSSData->field_2F8, 0x200, TAG_TILE_3};
|
||||
struct SpriteTemplate template = gUnknown_83D2B7C;
|
||||
|
||||
sPSSData->field_6F8 = (sPSSData->field_6F8 == 0);
|
||||
if (sPSSData->field_6F8 == 0)
|
||||
{
|
||||
spriteSheet.tag = TAG_TILE_3;
|
||||
r8 = sPSSData->field_71C;
|
||||
}
|
||||
else
|
||||
{
|
||||
spriteSheet.tag = TAG_TILE_4;
|
||||
r8 = sPSSData->field_71C;
|
||||
template.tileTag = TAG_TILE_4;
|
||||
template.paletteTag = TAG_PAL_DAC9;
|
||||
}
|
||||
|
||||
StringCopyPadded(sPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8);
|
||||
DrawTextWindowAndBufferTiles(sPSSData->field_21B8, sPSSData->field_2F8, 0, 0, sPSSData->field_4F8, 2);
|
||||
LoadSpriteSheet(&spriteSheet);
|
||||
LoadPalette(gUnknown_83D29D0[GetBoxWallpaper(boxId)], r8, 4);
|
||||
x = sub_8091F60(GetBoxNamePtr(boxId));
|
||||
x2 = x;
|
||||
x2 += direction * 192;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24);
|
||||
|
||||
sPSSData->field_728[i] = &gSprites[spriteId];
|
||||
sPSSData->field_728[i]->data[0] = (-direction) * 6;
|
||||
sPSSData->field_728[i]->data[1] = i * 32 + x;
|
||||
sPSSData->field_728[i]->data[2] = 0;
|
||||
sPSSData->field_728[i]->callback = sub_8091E84;
|
||||
StartSpriteAnim(sPSSData->field_728[i], i);
|
||||
|
||||
sPSSData->field_720[i]->data[0] = (-direction) * 6;
|
||||
sPSSData->field_720[i]->data[1] = 1;
|
||||
sPSSData->field_720[i]->callback = sub_8091EB8;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8091E34(void)
|
||||
{
|
||||
if (sPSSData->field_6F8 == 0)
|
||||
FreeSpriteTilesByTag(TAG_TILE_4);
|
||||
else
|
||||
FreeSpriteTilesByTag(TAG_TILE_3);
|
||||
|
||||
sPSSData->field_720[0] = sPSSData->field_728[0];
|
||||
sPSSData->field_720[1] = sPSSData->field_728[1];
|
||||
}
|
||||
|
||||
void sub_8091E84(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[2] != 0)
|
||||
sprite->data[2]--;
|
||||
else if ((sprite->pos1.x += sprite->data[0]) == sprite->data[1])
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
|
||||
void sub_8091EB8(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[1] != 0)
|
||||
{
|
||||
sprite->data[1]--;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos1.x += sprite->data[0];
|
||||
sprite->data[2] = sprite->pos1.x + sprite->pos2.x;
|
||||
if (sprite->data[2] < 0x40 || sprite->data[2] > 0x100)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8091EF0(void)
|
||||
{
|
||||
u8 boxId = StorageGetCurrentBox();
|
||||
u8 wallpaperId = GetBoxWallpaper(boxId);
|
||||
if (sPSSData->field_6F8 == 0)
|
||||
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71C, 4);
|
||||
else
|
||||
CpuCopy16(gUnknown_83D29D0[wallpaperId], gPlttBufferUnfaded + sPSSData->field_71E, 4);
|
||||
}
|
||||
|
||||
s16 sub_8091F60(const u8 *string)
|
||||
{
|
||||
return 0xB0 - GetStringWidth(1, string, 0) / 2;
|
||||
}
|
||||
|
||||
void sub_8091F80(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
LoadSpriteSheet(&gUnknown_83D2B54);
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_83D2BB4, 0x5c + i * 0x88, 28, 22);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
struct Sprite *sprite = &gSprites[spriteId];
|
||||
StartSpriteAnim(sprite, i);
|
||||
sprite->data[3] = (i == 0) ? -1 : 1;
|
||||
sPSSData->field_730[i] = sprite;
|
||||
}
|
||||
}
|
||||
if (IsCursorOnBox())
|
||||
sub_80920FC(TRUE);
|
||||
}
|
||||
|
||||
void sub_809200C(s8 direction)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
sPSSData->field_730[i]->pos2.x = 0;
|
||||
sPSSData->field_730[i]->data[0] = 2;
|
||||
}
|
||||
if (direction < 0)
|
||||
{
|
||||
sPSSData->field_730[0]->data[1] = 29;
|
||||
sPSSData->field_730[1]->data[1] = 5;
|
||||
sPSSData->field_730[0]->data[2] = 0x48;
|
||||
sPSSData->field_730[1]->data[2] = 0x48;
|
||||
}
|
||||
else
|
||||
{
|
||||
sPSSData->field_730[0]->data[1] = 5;
|
||||
sPSSData->field_730[1]->data[1] = 29;
|
||||
sPSSData->field_730[0]->data[2] = 0xF8;
|
||||
sPSSData->field_730[1]->data[2] = 0xF8;
|
||||
}
|
||||
sPSSData->field_730[0]->data[7] = 0;
|
||||
sPSSData->field_730[1]->data[7] = 1;
|
||||
}
|
||||
|
||||
void sub_80920AC(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
sPSSData->field_730[i]->pos1.x = 0x88 * i + 0x5c;
|
||||
sPSSData->field_730[i]->pos2.x = 0;
|
||||
sPSSData->field_730[i]->invisible = FALSE;
|
||||
}
|
||||
sub_80920FC(TRUE);
|
||||
}
|
||||
|
||||
void sub_80920FC(bool8 a0)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
if (a0)
|
||||
{
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
sPSSData->field_730[i]->data[0] = 1;
|
||||
sPSSData->field_730[i]->data[1] = 0;
|
||||
sPSSData->field_730[i]->data[2] = 0;
|
||||
sPSSData->field_730[i]->data[4] = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
sPSSData->field_730[i]->data[0] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8092164(struct Sprite *sprite)
|
||||
{
|
||||
switch (sprite->data[0])
|
||||
{
|
||||
case 0:
|
||||
sprite->pos2.x = 0;
|
||||
break;
|
||||
case 1:
|
||||
if (++sprite->data[1] > 3)
|
||||
{
|
||||
sprite->data[1] = 0;
|
||||
sprite->pos2.x += sprite->data[3];
|
||||
if (++sprite->data[2] > 5)
|
||||
{
|
||||
sprite->data[2] = 0;
|
||||
sprite->pos2.x = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sprite->data[0] = 3;
|
||||
break;
|
||||
case 3:
|
||||
sprite->pos1.x -= sPSSData->field_2CE;
|
||||
if (sprite->pos1.x < 73 || sprite->pos1.x > 247)
|
||||
sprite->invisible = TRUE;
|
||||
if (--sprite->data[1] == 0)
|
||||
{
|
||||
sprite->pos1.x = sprite->data[2];
|
||||
sprite->invisible = FALSE;
|
||||
sprite->data[0] = 4;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
sprite->pos1.x -= sPSSData->field_2CE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
struct Sprite *sub_809223C(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority)
|
||||
{
|
||||
u8 spriteId = CreateSprite(&gUnknown_83D2BB4, x, y, subpriority);
|
||||
if (spriteId == MAX_SPRITES)
|
||||
return NULL;
|
||||
|
||||
animId %= 2;
|
||||
StartSpriteAnim(&gSprites[spriteId], animId);
|
||||
gSprites[spriteId].oam.priority = priority;
|
||||
gSprites[spriteId].callback = SpriteCallbackDummy;
|
||||
return &gSprites[spriteId];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user