mirror of https://github.com/zeldaret/tmc.git
204 lines
4.4 KiB
C
204 lines
4.4 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 y;
|
|
// 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 Manager11 {
|
|
Manager manager;
|
|
u8 unk_20[0x1C];
|
|
u16 unk_3c;
|
|
u16 unk_3e;
|
|
} Manager11;
|
|
|
|
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* diggingCaveEntrances[];
|
|
|
|
typedef struct {
|
|
u8 unk_00;
|
|
u8 unk_01;
|
|
u8 unk_02;
|
|
u8 unk_03;
|
|
u16 unk_04;
|
|
u16 unk_06;
|
|
} UnkManager26HelperStruct;
|
|
|
|
extern void Manager1_Main();
|
|
extern void Manager2_Main();
|
|
extern void Manager3_Main();
|
|
extern void Manager4_Main();
|
|
extern void Manager5_Main();
|
|
extern void Manager6_Main();
|
|
extern void Manager7_Main();
|
|
extern void Manager8_Main();
|
|
extern void Manager9_Main();
|
|
extern void ManagerA_Main();
|
|
extern void ManagerB_Main();
|
|
extern void ManagerC_Main();
|
|
extern void ManagerD_Main(Entity*);
|
|
extern void ManagerE_Main();
|
|
extern void ManagerF_Main(Entity*);
|
|
extern void Manager10_Main(Entity*);
|
|
extern void Manager11_Main(Manager11*);
|
|
extern void Manager12_Main(Entity*);
|
|
extern void Manager13_Main(Entity*);
|
|
extern void Manager14_Main(Entity*);
|
|
extern void Manager15_Main();
|
|
extern void Manager16_Main(Entity*);
|
|
extern void Manager17_Main(Entity*);
|
|
extern void Manager18_Main();
|
|
extern void Manager19_Main(Entity*);
|
|
extern void Manager1A_Main();
|
|
extern void Manager1B_Main(Entity*);
|
|
extern void Manager1C_Main(Manager*);
|
|
extern void Manager1D_Main(Entity*);
|
|
extern void Manager1E_Main();
|
|
extern void Manager1F_Main(Entity*);
|
|
extern void Manager20_Main();
|
|
extern void Manager21_Main(Entity*);
|
|
extern void Manager22_Main(Entity*);
|
|
extern void Manager23_Main(Entity*);
|
|
extern void Manager24_Main(Entity*);
|
|
extern void Manager25_Main(Entity*);
|
|
extern void Manager26_Main();
|
|
extern void Manager27_Main();
|
|
extern void Manager28_Main();
|
|
extern void Manager29_Main(Entity*);
|
|
extern void Manager2A_Main(Manager*);
|
|
extern void Manager2B_Main(Entity*);
|
|
extern void Manager2C_Main();
|
|
extern void Manager2D_Main(Entity*);
|
|
extern void Manager2E_Main();
|
|
extern void Manager2F_Main();
|
|
extern void Manager30_Main();
|
|
extern void Manager31_Main(Entity*);
|
|
extern void Manager32_Main(Entity*);
|
|
extern void Manager33_Main(Entity*);
|
|
extern void Manager34_Main(Entity*);
|
|
extern void Manager35_Main(Entity*);
|
|
extern void Manager36_Main(Manager*);
|
|
extern void Manager37_Main(Entity*);
|
|
extern void Manager38_Main(Entity*);
|
|
extern void Manager39_Main();
|
|
|
|
extern void (*const gManagerFunctions[58])();
|
|
|
|
#endif
|