diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-07-03 12:40:04 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-07-07 01:46:05 +0800 |
commit | 503086bc7df2a832f49da321287e6b12b8e138fa (patch) | |
tree | 6f66f51376a6067e186f156ca7da60169606855e /include | |
parent | d97925df0edcac9212ba827b31ff75c7968703f3 (diff) |
finished menu_indicators
Diffstat (limited to 'include')
-rw-r--r-- | include/field_poison.h | 2 | ||||
-rw-r--r-- | include/graphics.h | 16 | ||||
-rw-r--r-- | include/list_menu.h | 30 | ||||
-rw-r--r-- | include/menu_indicators.h | 53 | ||||
-rw-r--r-- | include/pokemon.h | 4 | ||||
-rw-r--r-- | include/sprite.h | 28 |
6 files changed, 107 insertions, 26 deletions
diff --git a/include/field_poison.h b/include/field_poison.h index 4887fa27a..97d5f59ed 100644 --- a/include/field_poison.h +++ b/include/field_poison.h @@ -6,7 +6,7 @@ enum { FLDPSN_NONE, FLDPSN_PSN, - FLDPSN_FNT + FLDPSN_FNT, }; void ExecuteWhiteOut(void); diff --git a/include/graphics.h b/include/graphics.h index 1b2913164..e12a6755b 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -202,11 +202,11 @@ extern const u8 gItemPcBgPals[]; extern const u8 gItemPcTilemap[]; // item_menu_icons -extern const u8 gUnknown_8E8362C[]; -extern const u8 gUnknown_8E83DBC[]; -extern const u8 gUnknown_8E84560[]; -extern const u8 gFile_graphics_interface_bag_swap_sheet[]; -extern const u8 gFile_graphics_interface_bag_swap_palette[]; +extern const u32 gUnknown_8E8362C[]; +extern const u32 gUnknown_8E83DBC[]; +extern const u32 gUnknown_8E84560[]; +extern const u32 gFile_graphics_interface_bag_swap_sheet[]; +extern const u32 gFile_graphics_interface_bag_swap_palette[]; extern const u8 gFile_graphics_items_icons_question_mark_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[]; extern const u8 gFile_graphics_items_icons_master_ball_sheet[]; @@ -266,12 +266,10 @@ extern const u8 gFile_graphics_items_icon_palettes_soda_pop_palette[]; extern const u8 gFile_graphics_items_icons_lemonade_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[]; extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[]; -extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[]; -extern const u8 gFile_graphics_items_icons_powder_sheet[]; +extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];; extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[]; extern const u8 gFile_graphics_items_icons_energy_root_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[]; -extern const u8 gFile_graphics_items_icons_powder_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_heal_powder_palette[]; extern const u8 gFile_graphics_items_icons_revival_herb_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_revival_herb_palette[]; @@ -299,7 +297,7 @@ extern const u8 gFile_graphics_items_icons_berry_juice_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_berry_juice_palette[]; extern const u8 gFile_graphics_items_icons_sacred_ash_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_sacred_ash_palette[]; -extern const u8 gFile_graphics_items_icons_powder_sheet[]; +extern const u32 gFile_graphics_items_icons_powder_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_shoal_salt_palette[]; extern const u8 gFile_graphics_items_icons_shoal_shell_sheet[]; extern const u8 gFile_graphics_items_icon_palettes_shell_palette[]; diff --git a/include/list_menu.h b/include/list_menu.h index 290b1d925..5614580eb 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -4,9 +4,21 @@ #include "global.h" #include "window.h" -// Exported type declarations +#define LIST_NOTHING_CHOSEN -1 +#define LIST_CANCEL -2 +#define LIST_HEADER -3 -// Exported RAM declarations +#define LIST_NO_MULTIPLE_SCROLL 0 +#define LIST_MULTIPLE_SCROLL_DPAD 1 +#define LIST_MULTIPLE_SCROLL_L_R 2 + +enum +{ + SCROLL_ARROW_LEFT, + SCROLL_ARROW_RIGHT, + SCROLL_ARROW_UP, + SCROLL_ARROW_DOWN, +}; struct ListMenuItem { @@ -38,8 +50,9 @@ struct ListMenuTemplate u8 cursorKind:2; // x40, x80 }; -struct ListMenu { - struct ListMenuTemplate _template; +struct ListMenu +{ + struct ListMenuTemplate template; u16 scrollOffset; u16 selectedRow; u8 unk_1C; @@ -48,6 +61,15 @@ struct ListMenu { u8 unk_1F; }; +struct ListMenuWindowRect +{ + u8 x; + u8 y; + u8 width; + u8 height; + u8 palNum; +}; + extern struct ListMenuTemplate gUnknown_03006310; extern struct ListMenuTemplate gMultiuseListMenuTemplate; diff --git a/include/menu_indicators.h b/include/menu_indicators.h index 76f25224c..fb6b65ecc 100644 --- a/include/menu_indicators.h +++ b/include/menu_indicators.h @@ -7,6 +7,18 @@ // Exported RAM declarations +struct ScrollIndicatorPair +{ + u8 field_0; + u16 *scrollOffset; + u16 fullyUpThreshold; + u16 fullyDownThreshold; + u8 topSpriteId; + u8 bottomSpriteId; + u16 tileTag; + u16 palTag; +}; + struct ScrollArrowsTemplate { u8 firstArrowType; @@ -22,9 +34,48 @@ struct ScrollArrowsTemplate u8 palNum; }; +struct ScrollIndicatorTemplate +{ + u8 animNum:4; + u8 bounceDir:4; + u8 multiplier; + s16 frequency; +}; + +struct CursorStruct +{ + u8 left; + u8 top; + u16 rowWidth; + u16 rowHeight; + u16 tileTag; + u16 palTag; + u8 palNum; +}; + +struct RedOutlineCursor +{ + struct SubspriteTable subspriteTable; + struct Subsprite *subspritesPtr; + u8 spriteId; + u16 tileTag; + u16 palTag; +}; + +struct RedArrowCursor +{ + u8 spriteId; + u16 tileTag; + u16 palTag; +}; + // Exported ROM declarations -u8 AddScrollIndicatorArrowPairParameterized(u8, u8, u8, u8, s32, u16, u16, u16 *); +u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset); u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate * template, u16 * a1); void RemoveScrollIndicatorArrowPair(u8); +u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind); +u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor); +void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y); +void ListMenuRemoveRedOutlineCursorObject(u8 taskId); #endif //GUARD_MENU_INDICATORS_H diff --git a/include/pokemon.h b/include/pokemon.h index ed0108159..558eedc67 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -625,8 +625,8 @@ u32 CanMonLearnTMHM(struct Pokemon *, u8); u32 CanSpeciesLearnTMHM(u16 species, u8 tm); u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); void ClearBattleMonForms(void); -const u8 *GetMonFrontSpritePal(struct Pokemon *mon); -const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32); +const u32 *GetMonFrontSpritePal(struct Pokemon *mon); +const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32); const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32); bool8 IsOtherTrainer(u32, u8 *); void SetWildMonHeldItem(void); diff --git a/include/sprite.h b/include/sprite.h index 5fa85ee21..27e5dc852 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -4,28 +4,30 @@ #include "global.h" #define MAX_SPRITES 64 +#define SPRITE_INVALID_TAG 0xFFFF struct SpriteSheet { - const u8 *data; // Raw uncompressed pixel data + const void *data; // Raw uncompressed pixel data u16 size; u16 tag; }; struct CompressedSpriteSheet { - const u8 *data; // LZ77 compressed pixel data + const u32 *data; // LZ77 compressed pixel data u16 size; // Uncompressed size of pixel data u16 tag; }; struct SpriteFrameImage { - const u8 *data; + const void *data; u16 size; }; #define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr} +#define overworld_frame(ptr, width, height, frame) {.data = (u8 *)ptr + (width * height * frame * 64)/2, .size = (width * height * 64)/2} struct SpritePalette { @@ -35,7 +37,7 @@ struct SpritePalette struct CompressedSpritePalette { - const u8 *data; // LZ77 compressed palette data + const u32 *data; // LZ77 compressed palette data u16 tag; }; @@ -102,6 +104,12 @@ struct AffineAnimJumpCmd u16 target; }; +struct AffineAnimEndCmdAlt +{ + s16 type; + u16 val; +}; + union AffineAnimCmd { s16 type; @@ -126,6 +134,8 @@ union AffineAnimCmd {.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}} #define AFFINEANIMCMD_JUMP(_target) \ {.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}} +#define AFFINEANIMCMD_END_ALT(_val) \ + {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}} struct AffineAnimState { @@ -163,6 +173,8 @@ struct SubspriteTable struct Sprite; +typedef void (*SpriteCallback)(struct Sprite *); + struct SpriteTemplate { u16 tileTag; @@ -171,7 +183,7 @@ struct SpriteTemplate const union AnimCmd *const *anims; const struct SpriteFrameImage *images; const union AffineAnimCmd *const *affineAnims; - void (*callback)(struct Sprite *); + SpriteCallback callback; }; struct Sprite @@ -182,7 +194,7 @@ struct Sprite /*0x10*/ const union AffineAnimCmd *const *affineAnims; /*0x14*/ const struct SpriteTemplate *template; /*0x18*/ const struct SubspriteTable *subspriteTables; - /*0x1C*/ void (*callback)(struct Sprite *); + /*0x1C*/ SpriteCallback callback; /*0x20*/ struct Coords16 pos1; /*0x24*/ struct Coords16 pos2; @@ -232,14 +244,12 @@ struct OamMatrix s16 d; }; -typedef void (*SpriteCallback)(struct Sprite *); - extern const struct OamData gDummyOamData; extern const union AnimCmd *const gDummySpriteAnimTable[]; extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[]; extern s16 gSpriteCoordOffsetX; extern s16 gSpriteCoordOffsetY; - +extern const struct SpriteTemplate gDummySpriteTemplate; extern struct Sprite gSprites[]; void ResetSpriteData(void); |