diff options
Diffstat (limited to 'include/easy_chat.h')
-rw-r--r-- | include/easy_chat.h | 130 |
1 files changed, 125 insertions, 5 deletions
diff --git a/include/easy_chat.h b/include/easy_chat.h index 23fd9ed83..84ac15422 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -2,18 +2,138 @@ #define GUARD_EASYCHAT_H #include "main.h" +#include "constants/easy_chat.h" + +struct EasyChatScreenTemplate +{ + u8 type; + u8 numColumns; + u8 numRows; + u8 frameId:7; + u8 fourFooterOptions:1; + const u8 *titleText; + const u8 *instructionsText1; + const u8 *instructionsText2; + const u8 *confirmText1; + const u8 *confirmText2; +}; + +struct EasyChatScreen +{ + /*0x00*/ u8 type; + /*0x01*/ u8 templateId; + /*0x02*/ u8 numColumns; + /*0x03*/ u8 numRows; + /*0x04*/ u8 state; + /*0x05*/ s8 mainCursorColumn; + /*0x06*/ s8 mainCursorRow; + /*0x07*/ u8 unk_07; + /*0x08*/ u8 stateBackup; + /*0x09*/ u8 unk_09; + /*0x0A*/ s8 unk_0a; + /*0x0B*/ s8 unk_0b; + /*0x0C*/ u8 unk_0c; + /*0x0D*/ u8 unk_0d; + /*0x0E*/ u8 unk_0e; + /*0x0F*/ u8 unk_0f; + /*0x10*/ s8 unk_10; + /*0x11*/ s8 unk_11; + /*0x12*/ u8 displayedPersonType; + /*0x13*/ u8 unk_13; + /*0x14*/ u8 unk_14[0x20]; + /*0x34*/ const u8 *titleText; + /*0x38*/ u16 *words; + /*0x3C*/ u16 ecWordBuffer[9]; +}; + +struct Unk203A11C +{ + u16 unk0; + u16 windowId; + u16 unk4; + u8 unk6; + u8 unk7; + s8 unk8; + u8 unk9; + u8 unkA; + u8 unkB[0xC1]; + u8 unkCC[0x202]; + u16 unk2CE; + int unk2D0; + int unk2D4; + struct Sprite *unk2D8; + struct Sprite *unk2DC; + struct Sprite *unk2E0; + struct Sprite *unk2E4; + struct Sprite *unk2E8; + struct Sprite *unk2EC; + struct Sprite *unk2F0; + struct Sprite *unk2F4; + struct Sprite *unk2F8; + struct Sprite *unk2FC; + u16 unk300[BG_SCREEN_SIZE / 2]; + u16 unkB00[BG_SCREEN_SIZE / 2]; +}; + +struct EasyChatPhraseFrameDimensions +{ + u8 left:5; + u8 top:3; + u8 width; + u8 height; + u8 footerId; +}; + +struct EasyChatWordInfo +{ + const u8 *text; + int alphabeticalOrder; + int enabled; +}; + +typedef union +{ + const u16 *valueList; + const struct EasyChatWordInfo *words; +} EasyChatGroupWordData; + +struct EasyChatGroup +{ + EasyChatGroupWordData wordData; + u16 numWords; + u16 numEnabledWords; +}; + +struct Unk203A120 +{ + u16 unk0; + u16 unk2[EC_NUM_GROUPS]; + u16 unk2E[27]; + u16 unk64[27][270]; + u8 filler3958[0x2C]; + u16 unk3984[0x10E]; + u16 unk3BA0; +}; /*size = 0x3BA4*/ + +struct EasyChatWordsByLetter +{ + const u16 *words; + int numWords; +}; void InitEasyChatPhrases(void); -void easy_chat_input_maybe(void); +void ShowEasyChatScreen(void); u8 * CopyEasyChatWord(u8 *dest, u16 word); -bool32 sub_811F8D8(u16 word); +bool32 sub_811F8D8(int word); void InitializeEasyChatWordArray(u16 *words, u16 length); -void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2); +u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows); bool8 ECWord_CheckIfOutsideOfValidRange(u16 word); u16 sub_811EE38(u16 group); u16 sub_811F01C(void); -bool16 EasyChat_GetNumWordsInGroup(u8); +u16 EasyChat_GetNumWordsInGroup(u8); u16 sub_811EE90(u16); -void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam); +void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType); +void sub_811F8BC(void); +void sub_811EFC0(u8 additionalPhraseId); #endif // GUARD_EASYCHAT_H |