pmd-red/include/structs/str_text.h
2025-06-02 20:18:14 +02:00

88 lines
2.3 KiB
C

#ifndef GUARD_STR_TEXT_H
#define GUARD_STR_TEXT_H
#include "structs/str_position.h"
// size: 0xC
typedef struct unkChar
{
const u16 *unk0;
u16 unk4;
s16 width;
u8 unk8;
u8 fill9;
u8 unkA;
u8 fillB;
} unkChar;
// size: 0x48
typedef struct Window
{
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
/* 0x4 */ s16 width;
/* 0x6 */ s16 height;
/* 0x8 */ s16 unk8;
/* 0xC */ s32 type;
/* 0x10 */ u32 unk10;
/* 0x14 */ u32 unk14;
/* 0x18 */ u32 *unk18;
/* 0x1C */ u32 *unk1C;
/* 0x20 */ s32 unk20;
/* 0x24 */ s32 unk24;
/* 0x28 */ u32 *unk28; // Somewhere in VRAM
/* 0x2C */ s32 unk2C;
/* 0x30 */ u32 *unk30; // Somewhere in VRAM?
/* 0x34 */ u32 *unk34;
/* 0x38 */ s32 unk38;
/* 0x3C */ u32 *unk3C;
/* 0x40 */ u32 *unk40;
/* 0x44 */ u8 unk44;
/* 0x45 */ bool8 unk45;
/* 0x46 */ u8 unk46;
} Window;
// size: 0x4
typedef struct WindowHeader
{
/* 0x0 */ u8 count; // How many headers there are, it's used for windows which can be scrolled left/right
/* 0x1 */ u8 currId; // Id of the current header
/* 0x2 */ u8 width;
/* 0x3 */ u8 f3;
} WindowHeader;
// size: 0x18
typedef struct WindowTemplate
{
u8 unk0;
/* 0x4 */ s32 type;
/* 0x8 */ DungeonPos pos;
/* 0xC */ s16 width;
/* 0xE */ s16 height;
s16 unk10; // In most cases it's the same as height. If it's smaller than height, the window may look glitchy. Maybe something with tile allocation/how the window is filled?
s16 unk12;
const WindowHeader *header;
} WindowTemplate;
#define WINDOW_TYPE_0 0
#define WINDOW_TYPE_WITHOUT_BORDER 1
#define WINDOW_TYPE_2 2
#define WINDOW_TYPE_NORMAL 3
#define WINDOW_TYPE_4 4
#define WINDOW_TYPE_FILL_TRANSPARENT 5
#define WINDOW_TYPE_WITH_HEADER 6
#define WINDOW_TYPE_7 7
#define MAX_WINDOWS 4
// All fields are zeroed out except for type which is set to WINDOW_TYPE_NORMAL.
#define WIN_TEMPLATE_DUMMY (WindowTemplate) { .unk0 = 0, .type = WINDOW_TYPE_NORMAL, .pos = { .x = 0, .y = 0 }, .width = 0, .height = 0, .unk10 = 0, .unk12 = 0, .header = NULL }
// size: 0x60
typedef struct WindowTemplates
{
/* 0x0 */ WindowTemplate id[MAX_WINDOWS];
} WindowTemplates;
#endif // GUARD_STR_TEXT_H