#ifndef __COMMON_H__ #define __COMMON_H__ #include #include "segment_symbols.h" #include "assert.h" #include "include_asm.h" typedef u8 qu08_t; typedef u16 qu016_t; typedef s16 qs48_t; typedef s16 qs510_t; typedef u16 qu510_t; typedef u16 qs102_t; typedef u16 qu102_t; typedef s16 qs105_t; typedef u16 qu105_t; typedef s16 qs132_t; typedef s16 qs142_t; typedef s32 qs1516_t; typedef s32 qs1616_t; typedef s32 qs205_t; #define qu08(n) ((qu08_t)((n)*0x100)) #define qu016(n) ((qu016_t)((n)*0x10000)) #define qs48(n) ((qs48_t)((n)*0x0100)) #define qs510(n) ((qs510_t)((n)*0x0400)) #define qu510(n) ((qu510_t)((n)*0x0400)) #define qs102(n) ((qs102_t)((n)*0x0004)) #define qu102(n) ((qu102_t)((n)*0x0004)) #define qs105(n) ((qs105_t)((n)*0x0020)) #define qu105(n) ((qu105_t)((n)*0x0020)) #define qs132(n) ((qs132_t)((n)*0x0004)) #define qs142(n) ((qs142_t)((n)*0x0004)) #define qs1516(n) ((qs1516_t)((n)*0x00010000)) #define qs1616(n) ((qs1616_t)((n)*0x00010000)) #define qs205(n) ((qs205_t)((n)*0x00000020)) extern OSDevMgr __osPiDevMgr; extern OSPiHandle *__osCurrentHandle[2]; extern OSMesgQueue piEventQueue; extern OSMesg piEventBuf[1]; extern u32 __osGetCause(void); extern void __osSetCause(u32); extern u32 __osGetCompare(void); extern void __osSetCompare(u32); extern u32 __osGetConfig(void); extern void __osSetConfig(u32); extern void __osSetCount(u32); extern u32 __osGetSR(void); extern void __osSetSR(u32); extern u32 __osDisableInt(void); extern void __osRestoreInt(u32); #include "libmus.h" typedef u8 bool; #define false 0 #define true 1 #define OS_TV_TYPE_PAL 0 #define OS_TV_TYPE_NTSC 1 #define OS_TV_TYPE_MPAL 2 #define MAX_BYTES_TO_READ 512 #define ARRAY_LENGTH(x) ((sizeof(x)) / (sizeof(x[0]))) #define SCREEN_WIDTH_MIN 320 #define SCREEN_HEIGHT_MIN 240 #define SCREEN_WIDTH_MAX 640 #define SCREEN_HEIGHT_MAX 480 #define DECLARE_STACK(name, size) u64 name[size / sizeof(u64)] // Stacks grow backwards (towards smaller addresses) #define STACK_START(stack) ((u8*)(&stack) + sizeof(stack)) #include "character.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 */ musHandle handle; /* 0x28 */ s32 field_0x28; /* 0x2C */ s32 index; /* 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_800EB0B0; extern SomethingMusic __MAYBE_SONG_800EB100; extern SomethingMusic __MAYBE_SONG_800EB150; extern SomethingMusic __MAYBE_SONG_800EB1A0; extern SomethingMusic __MAYBE_SONG_800EB1F0; extern SomethingMusic __MAYBE_SONG_800EB240; extern SomethingMusic __MAYBE_SONG_800EB290; extern SomethingMusic* __MAYBE_SONG_ARRAY_800A8218[7]; extern void* musCurrentPtrBank; extern void* D_800B1828; extern s32 D_800E8B14; extern s32 D_A9EF0; extern OSPiHandle* CART_HANDLE; extern OSMesgQueue MQ_800E7988; extern OSContPad obContData[MAXCONTROLLERS]; extern void (*SWAP_BUFFER_FUNC_800A9E8C)(void** buffers); extern void* D_800AA41C; extern u8 D_594284; extern Stack__dma_load_loop *D_800E9178[0]; extern u8 nuScPreNMIFlag; extern OSMesgQueue MQ_800B9C40; extern s8 D_800E918D; extern void romCopy(u32 devAddr, void* dramAddr, u32 size, s32 direction); extern void __calls_romCopy_8009DA50(void* src, void* dst, u32 len); extern void __calls_osViBlack(bool black); extern void __osViSwapBuffer_3(void** buffers); extern void func_8008350C(); extern void obSetViMode(s32); typedef struct { /* 0x00 */ u32 vram_start; /* 0x04 */ u32 vram_end; /* 0x08 */ u32 src_start; /* 0x0c */ u32 src_end; /* 0x10 */ u32 bss_start; /* 0x14 */ u32 bss_end; /* 0x18 */ u32 text_start; /* 0x1c */ u32 text_end; /* 0x20 */ u32 data_start; /* 0x24 */ u32 data_end; } OverlayEntry; // size:0x28 ASSERT_SIZE(OverlayEntry, 0x28); extern u8* __SOME_OVERLAY_ID_ARRAY[]; extern OverlayEntry __SOME_OVERLAY_TABLE[]; typedef struct { /* 0x00 */ void (*setup)(void); /* 0x04 */ void* field_0x4; /* 0x08 */ void* field_0x8; /* 0x0c */ void* field_0xc; /* 0x10 */ u32 field_0x10; } OverlaySomething; // size:0x14 ASSERT_SIZE(OverlaySomething, 0x14); extern OverlaySomething* (*D_800AF028[])(void); extern OverlaySomething* D_800E8294; extern OverlaySomething __OVERLAY_INFO_79730_65C50; extern OverlaySomething __OVERLAY_INFO_87200_65C64; extern OverlaySomething __OVERLAY_INFO_87200_65C78; extern OverlaySomething __OVERLAY_INFO_71280_65C8C; extern OverlaySomething __OVERLAY_INFO_71280_65CA0; extern OverlaySomething *__get_overlay_info_71280_65C8C(void); extern void __setup_overlay_79730(void); extern void __setup_overlay_87200(void); extern void __setup_overlay_71280_51674(void); extern void __setup_overlay_71280_51940(void); extern OverlaySomething* 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 u16 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)(u32, void*, u32, s32); /* 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 Arg_800712C4* 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_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 nuBoot(void); extern void obMain(void*); extern OverlaySomething __OVERLAY_INFO_resets_menu_timer; extern void* D_8018FB0C[]; extern OverlaySomething __OVERLAY_INFO_8018FAF8; extern OverlaySomething __OVERLAY_INFO_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 OverlaySomething D_800A872C; extern CharacterSlot CHARACTER_SLOT[0x64]; #define RANK_NONE 0 #define RANK_UNIT_LEADER 1 #define RANK_LEGION_LEADER 2 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 struct { /* 0x00 */ char battalion_name[0x14]; /* 0x14 */ s32 field_0x14; /* 0x18 */ s16 field_0x18; /* 0x1a */ u16 field_0x1a; /* 0x1c */ u8 field_0x1c; /* 0x1d */ u8 field_0x1d; /* 0x1e */ u8 field_0x1e; /* 0x1f */ u8 field_0x1f; /* 0x20 */ u8 field_0x20; /* 0x21*/ u8 field_0x21; /* 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 */ u8 field_0x2e; /* 0x2f */ u8 field_0x2f; /* 0x30 */ u8 field_0x30; /* 0x31 */ u8 field_0x31; /* 0x32 */ u8 field_0x32; /* 0x33 */ u8 field_0x33; /* 0x34 */ u8 field_0x34; /* 0x35 */ u8 field_0x35; /* 0x36 */ u8 field_0x36; /* 0x37 */ u8 field_0x37; /* 0x38 */ u8 field_0x38; /* 0x39 */ u8 field_0x39; /* 0x3a */ u8 field_0x3a; /* 0x3b */ u8 field_0x3b; /* 0x3c */ u8 field_0x3c; /* 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 */ s16 field_0x44; /* 0x46 */ s16 field_0x46; /* 0x48 */ s16 field_0x48; /* 0x4a */ s16 field_0x4a; /* 0x4b */ u8 field_0x4b; /* 0x4c */ s8 field_0x4c; /* 0x4d */ s8 field_0x4d; /* 0x4e */ s8 field_0x4e; /* 0x4f */ u8 field_0x4f; /* 0x50 */ u8 field_0x50; /* 0x51 */ u8 field_0x51; /* 0x52 */ u8 field_0x52; /* 0x53 */ u8 field_0x53; /* 0x54 */ u8 field_0x54; /* 0x55 */ u8 field_0x55; /* 0x56 */ u8 field_0x56; /* 0x57 */ u8 field_0x57; /* 0x58 */ u8 field_0x58; /* 0x59 */ u8 field_0x59; /* 0x5a */ u8 field_0x5a; /* 0x5b */ u8 field_0x5b; /* 0x5c */ u8 field_0x5c; /* 0x5d */ u8 field_0x5d; /* 0x5e */ u8 field_0x5e; /* 0x5f */ u8 field_0x5f; /* 0x60 */ u8 field_0x60; /* 0x61 */ u8 field_0x61; /* 0x62 */ u8 field_0x62; /* 0x63 */ u8 field_0x63; /* 0x64 */ u8 field_0x64; /* 0x65 */ u8 field_0x65; /* 0x66 */ u8 field_0x66; /* 0x67 */ u8 field_0x67; /* 0x68 */ u8 field_0x68; /* 0x69 */ u8 field_0x69; /* 0x6a */ u8 field_0x6a; /* 0x6b */ u8 field_0x6b; /* 0x6c */ u8 field_0x6c; /* 0x6d */ u8 field_0x6d; /* 0x6e */ u8 field_0x6e; /* 0x6f */ u8 field_0x6f; /* 0x70 */ u8 field_0x70; /* 0x71 */ u8 field_0x71; /* 0x72 */ u8 field_0x72; /* 0x73 */ u8 field_0x73; /* 0x74 */ u8 field_0x74; /* 0x75 */ u8 field_0x75; /* 0x76 */ u8 field_0x76; /* 0x77 */ u8 field_0x77; /* 0x78 */ u8 field_0x78; /* 0x79 */ u8 field_0x79; /* 0x7a */ u8 field_0x7a; /* 0x7b */ u8 field_0x7b; /* 0x7c */ u8 field_0x7c; /* 0x7d */ u8 field_0x7d; /* 0x7e */ u8 field_0x7e; /* 0x7f */ u8 field_0x7f; /* 0x80 */ u8 field_0x80; /* 0x81 */ u8 field_0x81; /* 0x82 */ u8 field_0x82; /* 0x83 */ u8 field_0x83; /* 0x84 */ u8 field_0x84; /* 0x85 */ u8 field_0x85; /* 0x86 */ u8 field_0x86; /* 0x87 */ u8 field_0x87; /* 0x88 */ u8 field_0x88; /* 0x89 */ u8 field_0x89; /* 0x8a */ u8 field_0x8a; /* 0x8b */ u8 field_0x8b; /* 0x8c */ u8 field_0x8c; /* 0x8d */ u8 field_0x8d; /* 0x8e */ u8 field_0x8e; /* 0x8f */ u8 field_0x8f; /* 0x91 */ s8 field_0x91; /* 0x92 */ u8 field_0x92; /* 0x93 */ u8 field_0x93; } __CONTAINS_BATTALION_NAME; // size:0x94 extern char DEFAULT_BATTALION_NAME[]; extern musConfig __MUS_CONFIG_8010A710; extern OSIoMesg __MUS_MEM_800B186C[]; extern void *__virtual_mem_alloc(u32); extern void *__MusIntMemMalloc(s32 size); extern ALHeap audio_heap; extern void __character_initialise(CharacterSlot *arg0, u8 level); extern u16 character_get_item(CharacterSlot* character, u8 slot); extern void __character_handle_levelup(CharacterSlot *slot); typedef struct { /* 0x0 */ char *name; /* 0x4 */ u8 field_0x4; /* 0x5 */ u8 field_0x5; /* 0x6 */ u16 buy_price; /* 0x8 */ u8 field_0x8; /* 0x9 */ u8 field_0x9; /* 0xa */ u8 field_0xa; /* 0xb */ u8 field_0xb; } ItemData; // size:0xc extern ItemData obItemData[45]; extern char *obItemGetName(u16 arg0); extern u8 item_get_field_0x4(u16 arg0); extern u8 item_get_field_0x5(u16 arg0); extern u8 item_get_field_0x8(u16 arg0); extern u8 item_get_field_0x9(u16 arg0); extern void func_80179354(); extern Gfx* obPtrDisplayList; extern Gfx** obPtrPtrDisplayList; extern Gfx DISPLAY_LIST_80186BD0[]; extern Gfx DISPLAY_LIST_80186D90[]; extern Gfx DISPLAY_LIST_8018FC80[]; extern Gfx DISPLAY_LIST_80186E70[]; extern Gfx DISPLAY_LIST_801869C8[]; extern Gfx DISPLAY_LIST_801FCF70[]; extern Gfx DISPLAY_LIST_801FCF98[]; extern Gfx DISPLAY_LIST_800A96C8[]; extern Vp obVpMinResolution; extern Vp obVpMaxResolution; extern Gfx obDlSetupMinResolution[]; extern Gfx obDlSetupMaxResolution[]; extern Lights2 LIGHTS_801869A0; extern SomethingMusic __MAYBE_SONG_800EB0B0; extern SomethingMusic __MAYBE_SONG_800EB100; extern SomethingMusic __MAYBE_SONG_800EB150; extern SomethingMusic __MAYBE_SONG_800EB240; extern SomethingMusic __MAYBE_SONG_800EB290; extern char *obStrategyName[]; extern char *obGetStrategyName(u8 index); extern s16 D_800AEE90; extern s16 D_800AEF10; extern s8 D_800A8210; extern s8 D_800A8211; extern s8 D_800A8212; extern u8 D_800A8213; extern u8 __get_compared_osTvType(); extern u8 __reset_compared_osTvType(); extern void func_8016CD50(u8 arg0); extern void __inc_compared_osTvType(u8 arg0); extern s32 func_80173B60(s32); extern s32 D_800AF0B0; extern void Unpack(u8* buffer, u32 size); typedef struct { /* 0x00 */ s32 field_0x0; /* 0x04 */ OSMesgQueue* queue; /* 0x08 */ u8 format; /* 0x09 */ u8 field_0x9[3]; /* 0x0C */ s32 size; /* 0x10 */ u8* buffer; } OBUnpackMesg; extern u32 obCurrentTime; extern void obSetCurrentTime(u32 time); extern u32 obGetCurrentTime(); extern f32 obGetCurrentTimeF(); extern void _some_camera_setup(float fovY, float aspect); #endif