#ifndef __COMMON_H__ #define __COMMON_H__ #include "include_asm.h" #include #include "libmus.h" typedef u8 bool; #define false 0 #define true 1 #define MAX_BYTES_TO_READ 512 #define ARRAY_LENGTH(x) ((sizeof(x)) / (sizeof(x[0]))) #include "character.h" #include "item.h" typedef struct { /* 0x00 */ s32 field_0x0; /* 0x04 */ s32 field_0x4; /* 0x08 */ s32 field_0x8; /* 0x0c */ s32 field_0xc; /* 0x10 */ s32 field_0x10; /* 0x14 */ s32 field_0x14; /* 0x18 */ s32 field_0x18; /* 0x1C */ s32 field_0x1c; /* 0x20 */ s32 field_0x20; /* 0x24 */ unsigned long handle; /* 0x28 */ s32 field_0x28; /* 0x2C */ s32 field_0x2c; /* 0x30 */ s32 field_0x30; /* 0x34 */ s32 field_0x34; /* 0x38 */ s32 field_0x38; /* 0x3C */ s32 field_0x3c; /* 0x40 */ s32 field_0x40; /* 0x44 */ s32 field_0x44; /* 0x48 */ void* dst_addr; /* 0x4C */ s32 field_0x4c; } SomethingMusic; // size:0x50 typedef struct { /* 0x0 */ void* next; /* 0x4 */ OSMesgQueue* mq; /* 0x8 */ s16 flags; /* 0xa */ s16 field_0xa; /* 0xc */ s32 field_0xc; } Stack__dma_load_loop; // size:0x10 typedef struct { /* 0x00 */ OSMesgQueue field_0x0; /* 0x30 */ u8 field_0x30[0x58]; /* 0x88 */ OSMesgQueue field_0x70; /* 0x74 */ u8 field_0x74[0x20]; /* 0xa8 */ OSMesgQueue field_0xa8; } Unk0; extern SomethingMusic* __MAYBE_SONG_ARRAY_800A8218[7]; extern void* musCurrentPtrBank; extern void* D_800B1828; extern s32 D_800E8B14; extern Unk0 MQ_800E8B4C; extern s32 __SCREEN_IS_NOT_BLACK; extern s32 D_800A9EB0; extern s32 D_800A9EE0; extern s32 D_800C4B20; extern void* D_800C4CE0; extern s32 D_A9EF0; extern s32 D_800C4B30; extern OSPiHandle* CART_HANDLE; extern OSMesgQueue MQ_800BE030; extern OSMesg OSMESG_800BE048[0x32]; extern OSThread THREAD_CONTROLLER; extern s32 __SCREEN_IS_NOT_BLACK; extern OSMesg D_800BBE60[8]; extern OSMesgQueue MQ_CONTROLLER; extern OSMesgQueue MQ_800E7988; extern OSThread THREAD_CONTROLLER; extern OSPiHandle* PTR_CART_ROM_HANDLE; extern s32 D_800C4B30; extern OSMesgQueue MQ_CONTROLLER; extern OSMesgQueue MQ_800E9BF0; extern u8 D_800A9FF8; extern OSContStatus __GLOBAL_CONT_STATUS[MAXCONTROLLERS]; extern OSMesgQueue MQ_CONTROLLER; extern void (*D_800A9FE0)(s16); extern OSMesgQueue MQ_800C4A00; extern OSContPad __GLOBAL_CONTROLLER_DATA; extern u8 D_800AA040; extern void (*SWAP_BUFFER_FUNC_800A9E8C)(void** buffers); extern void (*D_800AA090)(s32); extern void (*D_800AA094)(); extern s32 D_800E79A4; extern OSMesgQueue MQ_800C4C28; extern OSMesg OSMESG_800BE1A0[8]; extern u8 SP_THREAD_800BE1C0[1]; extern OSThread THREAD_800BE1C0; extern void* D_800AA41C; extern u8 D_594284; extern void (*SWAP_BUFFER_FUNC)(void** buffers); extern Stack__dma_load_loop *D_800E9178[0]; extern u8 __MAIN_NOT_NULL_INF_LOOP; extern OSMesgQueue MQ_800B9C40; extern s8 D_800E918D; extern void romCopy(const void* src, void* dst, u32 len); extern void __calls_romCopy_8009DA50(u8* src, u8* dst, u32 len); extern void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* arg1, s16 flags); extern void Stack__dma_load_loop_delete(Stack__dma_load_loop* arg0); extern void obInitializePi(); extern void __set_black(); extern void __calls_osViBlack(bool black); extern void __start_thread_800B9C88(); extern void __start_thread_800BE1C0(); extern void func_80089804(s32*, s32, s32, s32); extern void func_80089A10(); extern void func_80089AB0(s32*, s32); extern void __osViSwapBuffer_3(void** buffers); extern void set_swap_buffer_func(void (*arg0)(void**)); extern s32 func_80089CF8(s16 arg0, s32 arg1); extern void __controller_thread_80089D9C(void*); extern void __start_copy_global_controller_data(void); extern void __end_copy_global_controller_data(void); extern s32 __read_controller(OSContPad* data, u32 flags); extern s32 __real_read_controller(void); extern s32 __calls_read_controller_0(s16* arg0); extern void func_8008A354(); extern void func_8008A37C(); extern void func_8008B130(u8*); extern void func_8008B1D0(u8*); extern void __start_thread_800BE1C0(void); extern void __thread_8008AFE0(void*); extern void func_8008949C(void** buffers); extern void func_8008350C(); extern void func_8008B1D0(u8*); typedef struct { /* 0x00 */ u8* dst; /* 0x04 */ u8* field_0x4; /* 0x08 */ u8* src_start; /* 0x0c */ u8* src_end; /* 0x10 */ u8* bss_start; /* 0x14 */ u8* bss_end; /* 0x18 */ u8* text_start; /* 0x1c */ u8* text_end; /* 0x20 */ u8* data_start; /* 0x24 */ u8* data_end; } OverlayEntry; // size:0x28 extern u8* __SOME_OVERLAY_ID_ARRAY[11]; extern OverlayEntry __SOME_OVERLAY_TABLE[11]; extern u8* func_80076188(void); extern void func_80076194(void); extern void func_800761A4(void); extern void __loads_overlay_array(s32 arg0); extern u8 __get_overlay_index(s32 arg0); extern void func_80076324(s32 arg0); extern void func_800E9C20(void); extern s8 D_800AEE72; extern s16 D_800C4A18; extern s16 D_800C4AD8; extern s16 D_800C4BCA; extern s16 D_800C4C08; extern s16 D_800E7A1C; extern s16 D_800E7D68; extern void func_80073164(u8 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6); extern s8 D_800A81F0; typedef struct { /* 0x00 */ void* field_0x0; /* 0x04 */ void* field_0x4; /* 0x08 */ u32 field_0x8; /* 0x0c */ u32 field_0xc; /* 0x10 */ u32 field_0x10; /* 0x14 */ u32 field_0x14; /* 0x18 */ u32 field_0x18; /* 0x1c */ u32 field_0x1c; /* 0x20 */ u32 field_0x20; } Arg_800712C4; typedef struct { /* 0x00 */ Arg_800712C4* field_0x0; /* 0x04 */ Arg_800712C4* field_0x4; /* 0x08 */ Arg_800712C4* field_0x8; /* 0x0c */ Arg_800712C4* field_0xc; /* 0x10 */ Arg_800712C4* field_0x10; /* 0x14 */ Arg_800712C4* field_0x14; } Unk_800A81C0; // size:0x18 extern Unk_800A81C0 D_800A81C0[2]; extern void func_800712C4(Arg_800712C4*); extern u8 D_80197168[0x10]; extern s32 D_80196F58; extern u8 D_801951A1; extern u8 D_80197AE7[8]; extern void func_80186160(void); extern void func_80186178(void); extern void func_80186190(s32 arg0, s32 arg1); extern s32 func_80186210(s32 arg0); extern s32 func_80186240(s32 arg0); extern void func_80186284(s32 arg0); extern void func_80186290(void); extern void func_801862A8(void); extern const char STR_CREATING_NEW_DATA[]; extern const char STR_CREATING_A_NEW_FILE[]; extern const char STR_ADDING_NEW_DATA[]; extern const char STR_buSave_SAVING[]; extern const char STR_UNUSEDMALLOCNO_INSUFFICIENT_MEMORY[]; extern const char STR_LHa___s_s__s[]; extern const char STR_Error[]; extern const char STR_Fatal_error[]; extern const char STR_Invalid_header_LHarc_file_[]; extern const char STR_rb[]; extern const char STR_wb[]; extern const char STR_Unknown_method_skiped[]; extern const char STR_EMPTY[]; extern void AddHeap(void* start, u32 length); extern void __some_logging(const char* format, ...); extern void main_(void*); extern void __idle_start_4_threads(s32, s32); extern void (*D_800E7A18)(); extern void boot(void); extern void idle(void* arg); extern OSThread THREAD_FIRST_DMA_LOAD; extern u8 SP_THREAD_FIRST_DMA_LOAD[]; extern OSThread THREAD_IDLE; extern u8 SP_THREAD_IDLE[]; extern void* __GLOBAL_WITH__inc_menu_timer[]; extern void* D_8018FB0C[]; extern void* D_8018FAF8[]; extern void* D_8018FAE4[]; extern s32 __inc_menu_timer(); extern void func_801707F4(); extern void func_8017223C(s32); extern void func_80172368(); extern void func_80172394(); extern void __resets_menu_timer(void); extern u16 D_800C4C26; extern u16 D_8018F1A2; extern s32 D_8018FB34; extern void func_801D0840(void); extern void func_80198080(s32); extern void func_80173610(void); extern void func_801B00B0(void); extern void func_8016C814(void); extern void func_801C889C(s32 arg0); extern void func_8007337C(void); extern void func_801C8864(void); extern u8 D_800A872C; extern CharacterSlot CHARACTER_SLOT[]; typedef struct { /* 0x00 */ char* name; /* 0x04 */ u8 field_0x0; /* 0x05 */ Element element; /* 0x06 */ u8 field_0x2; /* 0x07 */ u8 field_0x3; /* 0x08 */ u8 field_0x4; /* 0x09 */ u8 field_0x5; /* 0x0a */ u8 field_0x6; /* 0x0b */ u8 field_0x7; /* 0x0c */ u8 field_0x8; /* 0x0d */ u8 field_0x9; /* 0x0e */ u8 field_0xa; /* 0x0f */ u8 field_0xb; } AbilityData; // size:0x10 extern AbilityData ABILITY_DATA[]; extern char* ability_get_name(u8 index); extern Element ability_get_element(u8 index, u16 arg1, u16 arg2, s32 arg3, u16 arg4); extern u16 func_8016FA34(u16, u16, u16, u16); extern u16 func_8016FB50(u16, u16, u16, u16); #define RANK_NONE 0 #define RANK_UNIT_LEADER 1 #define RANK_LEGION_LEADER 2 typedef struct { /* 0x00 */ char* name; /* 0x04 */ u8 field_0x4; /* 0x05 */ u8 gender; /* 0x06 */ u8 leadership_rank; /* 0x07 */ u8 field_0x7; /* 0x08 */ u16 field_0x8; /* 0x0a */ u8 field_0xa; /* 0x0b */ u8 field_0xb; /* 0x0c */ u16 field_0xc; /* 0x0e */ u8 field_0xe; /* 0x0f */ u8 field_0xf; /* 0x10 */ u16 field_0x10; /* 0x12 */ u8 field_0x12; /* 0x13 */ u8 field_0x13; /* 0x14 */ u16 field_0x14; /* 0x16 */ u8 field_0x16; /* 0x17 */ u8 field_0x17; /* 0x18 */ u16 field_0x18; /* 0x1a */ u8 field_0x1a; /* 0x1b */ u8 field_0x1b; /* 0x1c */ u16 field_0x1c; /* 0x1e */ u8 field_0x1e; /* 0x1f */ u8 field_0x1f; /* 0x20 */ u16 field_0x20; /* 0x22 */ u8 field_0x22; /* 0x23 */ u8 field_0x23; /* 0x24 */ u8 field_0x24; /* 0x25 */ u8 field_0x25; /* 0x26 */ u8 field_0x26; /* 0x27 */ u8 field_0x27; /* 0x28 */ u8 field_0x28; /* 0x29 */ u8 field_0x29; /* 0x2a */ u8 field_0x2a; /* 0x2b */ u8 field_0x2b; /* 0x2c */ u8 field_0x2c; /* 0x2d */ u8 field_0x2d; /* 0x2e */ u16 item_upper_left; /* 0x30 */ u16 item_upper_right; /* 0x32 */ u16 item_lower_left; /* 0x34 */ u16 item_lower_right; /* 0x36 */ u8 field_0x36; // The ability which is used when the unit is placed in the front row. /* 0x37 */ u8 ability_front; // The amount of hits the unit performs when placed in the front row. /* 0x38 */ u8 ability_front_hitcount; // The ability which is used when the unit is placed in the middle row. /* 0x39 */ u8 ability_middle; // The amount of hits the unit performs when placed in the middle row. /* 0x3a */ u8 ability_middle_hitcount; // The ability which is used when the unit is placed in the back row. /* 0x3b */ u8 ability_back; // The amount of hits the unit performs when placed in the back row. /* 0x3c */ u8 ability_back_hitcount; /* 0x3d */ u8 field_0x3d; /* 0x3e */ u8 field_0x3e; /* 0x3f */ u8 field_0x3f; /* 0x40 */ u8 field_0x40; /* 0x41 */ u8 field_0x41; /* 0x42 */ u8 field_0x42; /* 0x43 */ u8 field_0x43; /* 0x44 */ u8 field_0x44; /* 0x45 */ u8 field_0x45; /* 0x46 */ u8 field_0x46; /* 0x47 */ u8 max_items; } ClassData; // size:0x48 extern ClassData CLASS_DATA[]; extern ItemId class_get_item_lower_right(u8 arg0, u8 arg1); extern char* class_get_ability_front_name(u8 arg0, u8 arg1); extern char* class_get_ability_middle_name(u8 arg0, u8 arg1); extern char* class_get_ability_back_name(u8 arg0, u8 arg1); extern char* class_get_name(u8 arg0, u8 arg1); extern struct { /* 0x0 */ u8 field_0x0; /* 0x1 */ u8 field_0x1; /* 0x2 */ u8 field_0x2; /* 0x3 */ u8 field_0x3; /* 0x4 */ u8 field_0x4; /* 0x5 */ u8 field_0x5; } D_8018ECE4[]; // size:0x6 extern musConfig __MUS_CONFIG_8010A710; #endif