#ifndef GUARD_DECORATION_H #define GUARD_DECORATION_H #include "task.h" #include "menu.h" #include "menu_helpers.h" enum DecorPerm { /* * The nomenclature here describes collision and placement permissions, in that order. */ DECORPERM_SOLID_FLOOR, DECORPERM_PASS_FLOOR, DECORPERM_BEHIND_FLOOR, DECORPERM_NA_WALL, DECORPERM_SOLID_MAT }; enum DecorShape { /* * Width-x-height */ DECORSHAPE_1x1, DECORSHAPE_2x1, DECORSHAPE_3x1, // unused DECORSHAPE_4x2, DECORSHAPE_2x2, DECORSHAPE_1x2, DECORSHAPE_1x3, // unused DECORSHAPE_2x4, DECORSHAPE_3x3, DECORSHAPE_3x2 }; enum DecoCat { /* * In which category you can find the decoration in the PC. */ /*0*/ DECORCAT_DESK, /*1*/ DECORCAT_CHAIR, /*2*/ DECORCAT_PLANT, /*3*/ DECORCAT_ORNAMENT, /*4*/ DECORCAT_MAT, /*5*/ DECORCAT_POSTER, /*6*/ DECORCAT_DOLL, /*7*/ DECORCAT_CUSHION }; struct Decoration { /*0x00*/ u8 id; /*0x01*/ u8 name[16]; /*0x11*/ u8 permission; /*0x12*/ u8 shape; /*0x13*/ u8 category; /*0x14*/ u16 price; /*0x18*/ const u8 *description; /*0x1c*/ const u16 *tiles; }; struct DecoPCPointers { /* 0x00 */ u8 *items; /* 0x04 */ u8 *pos; /* 0x08 */ u8 size; /* 0x09 */ u8 isPlayerRoom; }; struct DecorationInventory { u8 *items; u8 size; }; struct UnkStruct_803EC860 { const u8 *tiles; const u8 *y; const u8 *x; u8 size; }; extern const struct UnkStruct_803EC860 gUnknown_083EC860[]; struct UnkStruct_02038900 { /*0x000; 0x02038900*/ const struct Decoration *decoration; /*0x004; 0x02038904*/ u16 tiles[0x40]; /*0x084; 0x02038984*/ u8 image[0x800]; /*0x884; 0x02039184*/ u16 palette[16]; }; struct UnkStruct_083EC900 { u8 shape; u8 size; u8 x; u8 y; }; struct UnkStruct_020391B4 { u8 decorId; u8 width; u8 height; u16 flagId; }; extern const struct UnkStruct_083EC900 gUnknown_083EC900[]; extern const struct SpritePalette gUnknown_083EC954; extern const struct SpritePalette gUnknown_083ECA5C; extern const struct SpritePalette gUnknown_083ECA64; extern const struct SpriteTemplate gSpriteTemplate_83EC93C; extern const struct SpriteTemplate gSpriteTemplate_83ECA88; extern const struct Decoration gDecorations[]; extern struct UnkStruct_02038900 gUnknown_02038900; extern u8 *gUnknown_020388D0; extern u8 gUnknown_081A2F7B[]; extern u8 gUnknown_081A2F8A[]; extern struct OamData gUnknown_020391AC; extern u8 gUnknown_020388D4; extern u8 gUnknown_020388D5; extern u8 gUnknown_020388F2; extern u8 gUnknown_020388F3; extern u8 gUnknown_020388F4; extern u8 gUnknown_020388F5; extern u8 gUnknown_020388F6; extern u8 gUnknown_020388D6[16]; extern u8 gUnknown_020388E6[12]; extern u16 gUnknown_020391A4; extern u16 gUnknown_020391A6; extern u8 gUnknown_020391A8; extern u8 gUnknown_020391A9; extern u8 gUnknown_020391AA; extern u8 gUnknown_02039234; extern const struct YesNoFuncTable gUnknown_083EC96C[]; extern struct UnkStruct_020391B4 gUnknown_020391B4[16]; extern const u16 gUnknown_083EC654[3]; extern const struct DecorationInventory gDecorationInventories[]; extern const u8 *const gUnknown_083EC5E4[]; extern const u8 *const gUnknown_083EC624[]; extern u8 gUnknown_020388F7[]; extern const struct MenuAction2 gUnknown_083EC604[]; extern const struct YesNoFuncTable gUnknown_083EC634[]; extern const u8 gUnknown_083EC65A[]; extern const u8 gUnknown_083EC97C[]; extern const u8 gUnknown_083EC984[]; extern const struct YesNoFuncTable gUnknown_083EC95C; extern const struct YesNoFuncTable gUnknown_083EC964; extern const struct YesNoFuncTable gUnknown_083EC9CC; extern const struct YesNoFuncTable gUnknown_083EC9D4; extern const struct YesNoFuncTable gUnknown_083ECAA0; extern void sub_8109DAC(u8); // src/trader extern void ReshowPlayerPC(u8); // src/player_pc void Task_SecretBasePC_Decoration(u8); void Task_SecretBasePC_Decoration(u8 taskId); void sub_80FE2B4(void); void Task_DecorationPCProcessMenuInput(u8); void sub_80FE394(void); void gpu_pal_decompress_alloc_tag_and_upload(u8); void sub_80FE5AC(u8); void sub_80FE604(u8); void sub_80FE728(u8); void sub_80FE758(u8); void sub_80FE7A8(u8); void sub_80FE7D4(u8 *, u8); void sub_80FE868(u8); void sub_80FE948(u8); void sub_80FEABC(u8, u8); void sub_80FEC94(u8); void sub_80FECB8(u8); #ifdef GERMAN int sub_80FECE0(u8); #else void sub_80FECE0(u8); #endif void sub_80FEF50(u8); bool8 sub_80FEFA4(void); void sub_80FF394(u16, u16, u16); void sub_80FF6AC(u8); void sub_80FF960(u8); void AddDecorationIconObjectFromObjectEvent(struct UnkStruct_02038900 *, u8); void SetUpPlacingDecorationPlayerAvatar(u8, struct UnkStruct_02038900 *); void sub_8100038(u8); void sub_81000A0(u8); void sub_8100174(u8); void sub_8100248(u8); void sub_810028C(u8); void c1_overworld_prev_quest(u8); void sub_8100364(void); void sub_810045C(void); void sub_810065C(u8); void sub_81006A8(u8); void sub_81006D0(struct UnkStruct_02038900 *); void sub_810070C(u16 *, u16); void sub_8100874(struct UnkStruct_02038900 *); void sub_81008BC(struct UnkStruct_02038900 *); void sub_8100930(u8); void sub_81009A8(struct Sprite *); void sub_81009C0(struct Sprite *); bool8 sub_8100D38(u8); void sub_8100E70(u8); void sub_8100EEC(u8); void sub_8101024(u8); void sub_81010F0(u8); void sub_8101460(u8); void sub_8101518(u8); void sub_81015B0(u8); void sub_81015E0(u8); void sub_810156C(u8); void sub_8101678(void); void sub_8101698(struct Sprite *); void sub_81016C8(void); void sub_81016F4(void); void sub_8101824(u8); void sub_8109A30(u8); void sub_80FF160(u8); void sub_80FF5BC(u8); void sub_80FF058(u8); void sub_8100A0C(u8); void sub_8101700(u8); void sub_81017A0(u8); void sub_8109D04(u8); void sub_80FED3C(u8); void sub_80FFAB0(u8); void sub_80FFB08(u8); void sub_81000C4(u8); void sub_810026C(u8); void sub_8100F88(u8); void sub_8100FB4(u8); void sub_810153C(u8); void sub_8101590(u8); void sub_8101848(u8); void DoPlayerPCDecoration(u8); #endif // GUARD_DECORATION_H