tmc/include/manager.h

197 lines
4.1 KiB
C

#ifndef MANAGER_H
#define MANAGER_H
#include "global.h"
#include "entity.h"
union SplitSHWord {
s16 SHWORD;
struct {
u8 LO, HI;
} PACKED HALF;
} PACKED;
typedef struct Manager {
/*0x00*/ struct Manager* previous;
/*0x00*/ struct Manager* next;
/*0x08*/ u8 type;
/*0x09*/ u8 subtype;
/*0x0a*/ u8 unk_0a;
/*0x0b*/ u8 unk_0b;
/*0x0c*/ u8 action;
/*0x0d*/ u8 unk_0d;
/*0x0e*/ u8 unk_0e;
/*0x0f*/ u8 unk_0f;
/*0x10*/ u8 unk_10;
/*0x11*/ u8 unk_11[3];
/*0x14*/ struct Manager* parent;
/*0x18*/ u8 unk_18[0x8];
// union SplitHWord unk_20;
// u16 unk_22;
// u16 unk_24;
// u16 unk_26;
// u8 unk_28[0x0D];
// u8 unk_35;
// u16 unk_36;
// union SplitSHWord unk_38;
// union SplitSHWord unk_3a;
// u16 unk_3c;
// u16 unk_3e;
} Manager;
typedef struct {
u16 posX;
u16 posY;
u8 width;
u8 height;
u8 unk_06;
union {
u8 all;
struct {
u8 layer : 2;
u8 unk1 : 2;
u8 unk2 : 1;
u8 unk3 : 3;
} PACKED b;
} PACKED unk_07;
} Manager6WarpData;
typedef struct {
Manager manager;
Manager6WarpData* warpList;
} Manager6;
typedef struct {
Manager manager;
u16 unk_20;
u16 unk_22;
u16 unk_24;
u16 unk_26;
u8 unk_28[0x0D];
u8 unk_35;
u16 unk_36;
u8 unk_38;
u8 unk_39;
u8 unk_3a;
u8 unk_3b;
u16 unk_3c;
u16 unk_3e;
} ManagerA;
typedef struct {
Manager manager;
u8 unk_20;
u8 unk_21[0x14];
u8 unk_35;
u8 unk_36[0x4];
u16 unk_3a;
u16 unk_3c;
u16 unk_3e;
} ManagerB;
typedef struct {
Manager manager;
Entity* enemies[8];
} ManagerBHelper;
typedef struct {
Manager manager;
u8 unk_20[0x18];
s16 unk_38;
s16 unk_3a;
u16 unk_3c;
u16 unk_3e;
} ManagerE;
typedef struct {
u16 unk_00;
u8 source_roomID;
u8 unk_03;
u8 target_areaID;
u8 target_roomID;
u16 unk_06;
} DiggingCaveEntrance;
extern struct {
DiggingCaveEntrance* unk_00;
u16 unk_04;
u16 unk_06;
u8 unk_08;
u8 unk_09;
u8 unk_0a;
u8 unk_0b;
} gUnk_03004030;
extern DiggingCaveEntrance* gUnk_08107DC0[];
typedef struct {
u8 unk_00;
u8 unk_01;
u8 unk_02;
u8 unk_03;
u16 unk_04;
u16 unk_06;
} UnkManager26HelperStruct;
extern void Manager1();
extern void Manager2();
extern void sub_080576C0();
extern void sub_08057854();
extern void sub_08057AD0();
extern void sub_08057CB4();
extern void Manager7_Main();
extern void sub_08057ED0();
extern void sub_080581D8();
extern void sub_08058380();
extern void sub_080585F0();
extern void sub_0805884C();
extern void sub_08058DD0(Entity*);
extern void sub_08058E60();
extern void sub_08058ECC(Entity*);
extern void sub_08059570(Entity*);
extern void sub_080599B8(Entity*);
extern void sub_080599EC(Entity*);
extern void sub_08059DAC(Entity*);
extern void sub_08059E58(Entity*);
extern void sub_0805A280();
extern void sub_0805AB4C(Entity*);
extern void sub_0805AD48(Entity*);
extern void sub_0805ADD8();
extern void sub_0805AF60(Entity*);
extern void sub_0805B030();
extern void sub_0805B3B4(Entity*);
extern void sub_0805B53C(Entity*);
extern void sub_0805B5C8(Entity*);
extern void Manager1E_Handler();
extern void sub_0805B6F4(Entity*);
extern void sub_0805B7A0();
extern void sub_0805B820(Entity*);
extern void sub_0805B8EC(Entity*);
extern void sub_0805BC74(Entity*);
extern void sub_0805BF18(Entity*);
extern void sub_0805C61C(Entity*);
extern void sub_0805C6B8();
extern void Manager27();
extern void Manager28_Entry();
extern void sub_0805CB90(Entity*);
extern void sub_0805CFC0(Entity*);
extern void sub_0805D014(Entity*);
extern void sub_0805D174(Entity*);
extern void sub_0805D1FC(Entity*);
extern void sub_0805D250();
extern void sub_0805D3C8();
extern void Manager30_Main();
extern void sub_0805D630(Entity*);
extern void sub_0805D7A4(Entity*);
extern void sub_0805DAE8(Entity*);
extern void sub_0805DB94(Entity*);
extern void sub_0805DC84(Entity*);
extern void sub_0805DDB4(Entity*);
extern void sub_0805DE38(Entity*);
extern void sub_0805E0A8(Entity*);
extern void sub_0805E0FC();
void (*const gManagerFunctions[58])();
#endif