diff options
Diffstat (limited to 'src/layoutlib.h')
-rw-r--r-- | src/layoutlib.h | 298 |
1 files changed, 149 insertions, 149 deletions
diff --git a/src/layoutlib.h b/src/layoutlib.h index 6b7d275..55a3027 100644 --- a/src/layoutlib.h +++ b/src/layoutlib.h @@ -1,149 +1,149 @@ -#ifndef __NEWER_LAYOUTLIB_H
-#define __NEWER_LAYOUTLIB_H
-
-/* Treeki's LayoutLib for New Super Mario Bros Wii */
-#include <common.h>
-
-typedef float MTX[3][4];
-
-struct nw4r__lyt__Layout {
- void *vtable;
- void *field_04;
- void *field_08;
- void *field_0C;
- void *rootPane;
- void *field_14;
- void *field_18;
- void *field_1C;
-};
-
-struct nw4r__lyt__DrawInfo {
- // 0x00
- void *vtable;
- MTX matrix;
-
- // 0x34
- float left;
- float top;
- float right;
-
- // 0x40
- float bottom;
- float scale_x;
- float scale_y;
- float opacity;
-
- // 0x50
- unsigned char widescreenFlag;
-};
-
-struct FrameCtrl_c {
-
-};
-
-struct Anm_c {
- FrameCtrl_c *fc_ptr;
- void *brlanHandler;
- void *field_08;
- char field_0C;
- char pad[3];
- FrameCtrl_c fc;
-};
-
-struct Layout {
- void *field_00;
- void *field_04;
- void *vtable;
- unsigned char drawOrder; // 0x0C
- char pad1[3];
-
- // offset 0x10
- nw4r__lyt__Layout layout; // Actually m2d::Layout_c, but the struct is the same
-
- // offset 0x30
- nw4r__lyt__DrawInfo drawInfo;
-
- // offset 0x84
- //LayoutHelper *field_84;
- void *field_84;
- float posX; // 0x88
- float posY; // 0x8C
- float clipX; // 0x90
- float clipY; // 0x94
- float clipWidth; // 0x98
- float clipHeight; // 0x9C
- unsigned char clipEnabled; // 0xA0
- char pad2[3];
- unsigned int animEnabled; // 0xA4
- void *field_A8;
-
- // offset 0xAC
- //LayoutHelper lh; // actually a m2d::ResAccLoader_c
- char lh[0xD4]; // don't feel like figuring this one out -_-
-
- // offset 0x180
- //BrlanHandler *brlanHandlers; // 0x180, points to brlan handlers
- void *brlanHandlers;
- //GrpHandler *grpHandlers; // 0x184
- void *grpHandlers;
- char *field_188; // char array, probably "anim enabled"
- int brlanCount; // 0x18C
- int grpCount; // 0x190
- int field_194; // no idea
-};
-
-
-void EmbeddedLayout_ctor(Layout *self); // 0x800C89A0
-void EmbeddedLayout_dtor(Layout *self, bool del); // 0x800C89F0
-void EmbeddedLayout_Free(Layout *self); // 0x800C9A20
-bool EmbeddedLayout_LoadArcOld(Layout *self, const char *path, bool isLangSpecific); // 0x800C8D00
-
-extern "C" {
-bool EmbeddedLayout_LoadArc(Layout *self, const char *path); // custom
-bool EmbeddedLayout_FreeArc(Layout *self); // custom
-};
-
-void EmbeddedLayout_LoadBrlans(Layout *self, const char **names, int count); // 0x800C90A0
-void EmbeddedLayout_LoadGroups(Layout *self, const char **names, int *brlanLinkIDs, int count); // 0x800C91E0
-
-void EmbeddedLayout_AddToDrawList(Layout *self); // 0x80163990
-
-void *EmbeddedLayout_FindPaneByName(Layout *self, const char *name);
-void *EmbeddedLayout_FindTextBoxByName(Layout *self, const char *name);
-void *EmbeddedLayout_FindPictureByName(Layout *self, const char *name);
-void *EmbeddedLayout_FindWindowByName(Layout *self, const char *name);
-
-void EmbeddedLayout_EnableNonLoopAnim(Layout *self, int animNum, bool pointlessShit); // 0x800C93E0
-void EmbeddedLayout_EnableLoopAnim(Layout *self, int animNum); // 0x800C9470
-void EmbeddedLayout_ResetAnimToInitialState(Layout *self, int animNum, bool isLoop_maybe); // 0x800C94C0
-void EmbeddedLayout_DisableAnim(Layout *self, int animNum); // 0x800C9580
-void EmbeddedLayout_DisableAllAnims(Layout *self); // 0x800C95F0
-void EmbeddedLayout_Process(Layout *self); // 0x800C9650
-bool EmbeddedLayout_CheckIfAnimationIsOn(Layout *self, int animNum); // 0x800C9700
-bool EmbeddedLayout_CheckIfAnyAnimationsAreOn(Layout *self); // 0x800C9730
-
-
-typedef bool (*__EmbeddedLayout_Build_type)(Layout*, const char*, void*);
-inline bool EmbeddedLayout_Build(Layout *self, const char *brlytName, void *lh) {
- VF_BEGIN(__EmbeddedLayout_Build_type, self, 5, 8)
- return VF_CALL(self, brlytName, lh);
- VF_END;
-}
-
-typedef void (*__EmbeddedLayout_UpdateMatrix_type)(Layout*);
-inline void EmbeddedLayout_UpdateMatrix(Layout *self) {
- VF_BEGIN(__EmbeddedLayout_UpdateMatrix_type, self, 4, 8)
- VF_CALL(self);
- VF_END;
-}
-
-typedef void (*__TextBox_SetString_type)(void*, unsigned short const *, unsigned short);
-inline void TextBox_SetString(void *self, unsigned short const *str, unsigned short unk) {
- VF_BEGIN(__TextBox_SetString_type, self, 31, 0)
- VF_CALL(self, str, unk);
- VF_END;
-}
-
-#define PANE_FLAGS(pane) (*((u8*)(((u32)(pane))+0xBB)))
-
-#endif
+#ifndef __NEWER_LAYOUTLIB_H +#define __NEWER_LAYOUTLIB_H + +/* Treeki's LayoutLib for New Super Mario Bros Wii */ +#include <common.h> + +typedef float MTX[3][4]; + +struct nw4r__lyt__Layout { + void *vtable; + void *field_04; + void *field_08; + void *field_0C; + void *rootPane; + void *field_14; + void *field_18; + void *field_1C; +}; + +struct nw4r__lyt__DrawInfo { + // 0x00 + void *vtable; + MTX matrix; + + // 0x34 + float left; + float top; + float right; + + // 0x40 + float bottom; + float scale_x; + float scale_y; + float opacity; + + // 0x50 + unsigned char widescreenFlag; +}; + +struct FrameCtrl_c { + +}; + +struct Anm_c { + FrameCtrl_c *fc_ptr; + void *brlanHandler; + void *field_08; + char field_0C; + char pad[3]; + FrameCtrl_c fc; +}; + +struct Layout { + void *field_00; + void *field_04; + void *vtable; + unsigned char drawOrder; // 0x0C + char pad1[3]; + + // offset 0x10 + nw4r__lyt__Layout layout; // Actually m2d::Layout_c, but the struct is the same + + // offset 0x30 + nw4r__lyt__DrawInfo drawInfo; + + // offset 0x84 + //LayoutHelper *field_84; + void *field_84; + float posX; // 0x88 + float posY; // 0x8C + float clipX; // 0x90 + float clipY; // 0x94 + float clipWidth; // 0x98 + float clipHeight; // 0x9C + unsigned char clipEnabled; // 0xA0 + char pad2[3]; + unsigned int animEnabled; // 0xA4 + void *field_A8; + + // offset 0xAC + //LayoutHelper lh; // actually a m2d::ResAccLoader_c + char lh[0xD4]; // don't feel like figuring this one out -_- + + // offset 0x180 + //BrlanHandler *brlanHandlers; // 0x180, points to brlan handlers + void *brlanHandlers; + //GrpHandler *grpHandlers; // 0x184 + void *grpHandlers; + char *field_188; // char array, probably "anim enabled" + int brlanCount; // 0x18C + int grpCount; // 0x190 + int field_194; // no idea +}; + + +void EmbeddedLayout_ctor(Layout *self); // 0x800C89A0 +void EmbeddedLayout_dtor(Layout *self, bool del); // 0x800C89F0 +void EmbeddedLayout_Free(Layout *self); // 0x800C9A20 +bool EmbeddedLayout_LoadArcOld(Layout *self, const char *path, bool isLangSpecific); // 0x800C8D00 + +extern "C" { +bool EmbeddedLayout_LoadArc(Layout *self, const char *path); // custom +bool EmbeddedLayout_FreeArc(Layout *self); // custom +}; + +void EmbeddedLayout_LoadBrlans(Layout *self, const char **names, int count); // 0x800C90A0 +void EmbeddedLayout_LoadGroups(Layout *self, const char **names, int *brlanLinkIDs, int count); // 0x800C91E0 + +void EmbeddedLayout_AddToDrawList(Layout *self); // 0x80163990 + +void *EmbeddedLayout_FindPaneByName(Layout *self, const char *name); +void *EmbeddedLayout_FindTextBoxByName(Layout *self, const char *name); +void *EmbeddedLayout_FindPictureByName(Layout *self, const char *name); +void *EmbeddedLayout_FindWindowByName(Layout *self, const char *name); + +void EmbeddedLayout_EnableNonLoopAnim(Layout *self, int animNum, bool pointlessShit); // 0x800C93E0 +void EmbeddedLayout_EnableLoopAnim(Layout *self, int animNum); // 0x800C9470 +void EmbeddedLayout_ResetAnimToInitialState(Layout *self, int animNum, bool isLoop_maybe); // 0x800C94C0 +void EmbeddedLayout_DisableAnim(Layout *self, int animNum); // 0x800C9580 +void EmbeddedLayout_DisableAllAnims(Layout *self); // 0x800C95F0 +void EmbeddedLayout_Process(Layout *self); // 0x800C9650 +bool EmbeddedLayout_CheckIfAnimationIsOn(Layout *self, int animNum); // 0x800C9700 +bool EmbeddedLayout_CheckIfAnyAnimationsAreOn(Layout *self); // 0x800C9730 + + +typedef bool (*__EmbeddedLayout_Build_type)(Layout*, const char*, void*); +inline bool EmbeddedLayout_Build(Layout *self, const char *brlytName, void *lh) { + VF_BEGIN(__EmbeddedLayout_Build_type, self, 5, 8) + return VF_CALL(self, brlytName, lh); + VF_END; +} + +typedef void (*__EmbeddedLayout_UpdateMatrix_type)(Layout*); +inline void EmbeddedLayout_UpdateMatrix(Layout *self) { + VF_BEGIN(__EmbeddedLayout_UpdateMatrix_type, self, 4, 8) + VF_CALL(self); + VF_END; +} + +typedef void (*__TextBox_SetString_type)(void*, unsigned short const *, unsigned short); +inline void TextBox_SetString(void *self, unsigned short const *str, unsigned short unk) { + VF_BEGIN(__TextBox_SetString_type, self, 31, 0) + VF_CALL(self, str, unk); + VF_END; +} + +#define PANE_FLAGS(pane) (*((u8*)(((u32)(pane))+0xBB))) + +#endif |