mirror of https://github.com/zeldaret/tmc.git
				
				
				
			
		
			
				
	
	
		
			227 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
#ifndef MESSAGE_H
 | 
						|
#define MESSAGE_H
 | 
						|
 | 
						|
#include "global.h"
 | 
						|
#include "entity.h"
 | 
						|
#include "structures.h"
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    u8 doTextBox;
 | 
						|
    u8 unk;
 | 
						|
    u8 textSpeed;
 | 
						|
    u8 unk3; // HI?
 | 
						|
    u8 textWindowWidth;
 | 
						|
    u8 textWindowHeight;
 | 
						|
    u8 textWindowPosX;
 | 
						|
    u8 textWindowPosY;
 | 
						|
    u16 textIndex;
 | 
						|
    u16 unk2; // HI?
 | 
						|
    u32 field_0xc;
 | 
						|
    u32 rupees;
 | 
						|
    u32 field_0x14;
 | 
						|
    u32 field_0x18;
 | 
						|
    u32 field_0x1c;
 | 
						|
} 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
 |