421 lines
12 KiB
C
421 lines
12 KiB
C
#ifndef __COMMON_H__
|
|
#define __COMMON_H__
|
|
|
|
#include "include_asm.h"
|
|
|
|
#include <ultra64.h>
|
|
#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 |