mirror of https://github.com/zeldaret/tmc.git
229 lines
4.2 KiB
C
229 lines
4.2 KiB
C
#ifndef MESSAGE_H
|
|
#define MESSAGE_H
|
|
|
|
#include "global.h"
|
|
#include "entity.h"
|
|
#include "structures.h"
|
|
|
|
#define MESSAGE_ACTIVE 0x7f
|
|
|
|
typedef struct {
|
|
u8 state;
|
|
u8 unk;
|
|
u8 textSpeed;
|
|
u8 unk3; // HI?
|
|
u8 textWindowWidth;
|
|
u8 textWindowHeight;
|
|
u8 textWindowPosX;
|
|
u8 textWindowPosY;
|
|
u16 textIndex;
|
|
u16 unk2; // HI?
|
|
u32 flags;
|
|
u32 rupees; // item price, shells, minigame timer
|
|
u32 field_0x14; // number of cuccos
|
|
u32 field_0x18; // unused
|
|
u32 field_0x1c; // unused
|
|
} Message;
|
|
extern Message gMessage;
|
|
|
|
typedef struct {
|
|
u8 unk00 : 1;
|
|
u8 unk01 : 4;
|
|
u8 unk05 : 2;
|
|
u8 unk06 : 1;
|
|
u8 code; // first byte read
|
|
u16 param; // second byte read
|
|
u16 extended; // ascii adjusted for jp chars
|
|
u16 _6;
|
|
u16 textIndex;
|
|
void* _c;
|
|
const u8* buf[8];
|
|
} Token;
|
|
|
|
typedef struct {
|
|
Message message;
|
|
Token curToken;
|
|
WStruct _50;
|
|
char player_name[10];
|
|
u8 _66[0x10];
|
|
u8 _76;
|
|
u8 _77[0x11];
|
|
u8 msgStatus;
|
|
u8 renderStatus;
|
|
u8 newlineDelay;
|
|
u8 _8b;
|
|
u8 _8c;
|
|
u8 _8d;
|
|
u8 _8e;
|
|
u8 _8f;
|
|
u8 _90;
|
|
u8 _91;
|
|
s8 typeSpeed;
|
|
u8 _93;
|
|
u8 _94;
|
|
u8 delay;
|
|
u8 _96;
|
|
u8 _97;
|
|
union {
|
|
u32 word;
|
|
struct {
|
|
u8 lineNo;
|
|
u8 b1;
|
|
u8 b2;
|
|
s8 sizeScale;
|
|
} bytes;
|
|
} _98;
|
|
u8 _9c;
|
|
u8 updateDraw;
|
|
u16 beginTiles[4];
|
|
u16 _a6;
|
|
} TextRender;
|
|
extern TextRender gTextRender;
|
|
static_assert(sizeof(TextRender) == 0xa8);
|
|
|
|
/**
|
|
* @brief Initialize the message system.
|
|
*/
|
|
void MessageInitialize(void);
|
|
|
|
/**
|
|
* @brief Update the message system.
|
|
*
|
|
*/
|
|
void MessageMain(void);
|
|
|
|
/**
|
|
* @brief Show a message on screen.
|
|
*
|
|
* @param index u32 Message index
|
|
*/
|
|
void MessageRequest(u32 index);
|
|
|
|
/**
|
|
* @brief Show a message at screen posiiton.
|
|
*
|
|
* @param index u32 Message index
|
|
* @param x u32 Screen x
|
|
* @param y u32 Screen y
|
|
*/
|
|
void MessageAtPos(u32 index, u32 x, u32 y);
|
|
|
|
/**
|
|
* @brief Show a message that attempts not to obscure the entity.
|
|
*
|
|
* @param index u32 Message index
|
|
* @param entity Entity* Your important entity
|
|
*/
|
|
void MessageNoOverlap(u32 index, Entity* entity);
|
|
|
|
/**
|
|
* @brief Show a message that attempts not to obscure the camera target.
|
|
*
|
|
* @param index u32 Message index
|
|
*/
|
|
void MessageFromTarget(u32 index);
|
|
|
|
/**
|
|
* @brief Display message at y position.
|
|
*
|
|
* @param index u32 Message index
|
|
* @param y u32 Screen y
|
|
*/
|
|
void MessageAtHeight(u32 index, u32 y);
|
|
|
|
/**
|
|
* @brief Close message.
|
|
*/
|
|
void MessageClose(void);
|
|
|
|
void DispMessageFrame(u16*, s32, s32, u32);
|
|
|
|
void sub_08057044(u32, struct_020227E8*, u32);
|
|
|
|
typedef enum {
|
|
TEXT_SAVE,
|
|
TEXT_CREDITS,
|
|
TEXT_NAMES,
|
|
TEXT_NEWSLETTER,
|
|
TEXT_ITEMS,
|
|
TEXT_ITEM_GET,
|
|
TEXT_LOCATIONS,
|
|
TEXT_WINDCRESTS,
|
|
TEXT_FIGURINE_NAMES,
|
|
TEXT_FIGURINE_DESCRIPTIONS,
|
|
TEXT_EMPTY,
|
|
TEXT_EZLO,
|
|
TEXT_EZLO2,
|
|
TEXT_MINISH,
|
|
TEXT_KINSTONE,
|
|
TEXT_PICORI,
|
|
TEXT_PROLOGUE,
|
|
TEXT_FINDING_EZLO,
|
|
TEXT_MINISH2,
|
|
TEXT_VAATI,
|
|
TEXT_GUSTAF,
|
|
TEXT_PANEL_TUTORIAL,
|
|
TEXT_VAATI2,
|
|
TEXT_GUSTAF2,
|
|
TEXT_EMPTY2,
|
|
TEXT_EMPTY3,
|
|
TEXT_FARMERS,
|
|
TEXT_CARPENTERS,
|
|
TEXT_EZLO_ELEMENTS_DONE,
|
|
TEXT_GORONS,
|
|
TEXT_EMPTY4,
|
|
TEXT_BELARI,
|
|
TEXT_LON_LON,
|
|
TEXT_FOREST_MINISH,
|
|
TEXT_EZLO_PORTAL,
|
|
TEXT_PERCY,
|
|
TEXT_BREAK_VAATI_CURSE,
|
|
TEXT_FESTIVAL,
|
|
TEXT_EMPTY5,
|
|
TEXT_TREASURE_GUARDIAN,
|
|
TEXT_DAMPE,
|
|
TEXT_BUSINESS_SCRUB,
|
|
TEXT_EMPTY6,
|
|
TEXT_PICOLYTE,
|
|
TEXT_STOCKWELL,
|
|
TEXT_SYRUP,
|
|
TEXT_ITEM_PRICES,
|
|
TEXT_WIND_TRIBE,
|
|
TEXT_ANJU,
|
|
TEXT_GORMAN_ORACLES,
|
|
TEXT_SMITH,
|
|
TEXT_PHONOGRAPH,
|
|
TEXT_TOWN,
|
|
TEXT_TOWN2,
|
|
TEXT_TOWN3,
|
|
TEXT_TOWN4,
|
|
TEXT_TOWN5,
|
|
TEXT_TOWN6,
|
|
TEXT_TOWN7,
|
|
TEXT_MILK,
|
|
TEXT_BAKERY,
|
|
TEXT_SIMON,
|
|
TEXT_SCHOOL,
|
|
TEXT_TINGLE,
|
|
TEXT_POST,
|
|
TEXT_MUTOH,
|
|
TEXT_BURLOV,
|
|
TEXT_CARLOV,
|
|
TEXT_REM,
|
|
TEXT_HAPPY_HEARTH,
|
|
TEXT_BLADE_MASTERS,
|
|
TEXT_ANSWER_HOUSE,
|
|
TEXT_UNK_WISE,
|
|
TEXT_LIBRARY,
|
|
TEXT_TOWN_MINISH1,
|
|
TEXT_TOWN_MINISH2,
|
|
TEXT_HAGEN,
|
|
TEXT_DR_LEFT,
|
|
TEXT_TOWN8,
|
|
TEXT_CAFE,
|
|
} TextCategory;
|
|
|
|
#define TEXT_INDEX(category, index) ((category << 8) | index)
|
|
|
|
#endif // MESSAGE_H
|