diff --git a/include/structs.h b/include/structs.h index e78ad9e3..6832d6b9 100644 --- a/include/structs.h +++ b/include/structs.h @@ -905,4 +905,36 @@ typedef struct Object { u32 unk378[174]; // Not an array. Unknown values. } Object; +/* Size: 0x44 bytes, might just be Object? */ +typedef struct unk80120AC0 { + s16 unk0; + s16 unk2; + s16 unk4; + u8 pad6[6]; + f32 x_position; + f32 y_position; + f32 z_position; + f32 pad18; + f32 unk1C; + f32 pad20; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + s16 unk34; + s16 pad36; + s16 unk38; + s8 pad3A; + s8 unk3B; + u8 pad3C[8]; +} unk80120AC0; + +typedef struct unk80027FC4 { + u8 unk0; + u8 unk1; + s16 unk2; + s16 unk4; + s16 unk6; +} unk80027FC4; + #endif diff --git a/lib/src/unknown_0C9C90.c b/lib/src/unknown_0C9C90.c index e7c1e684..c98ef888 100644 --- a/lib/src/unknown_0C9C90.c +++ b/lib/src/unknown_0C9C90.c @@ -143,7 +143,7 @@ ALMicroTime alEvtqNextEvent(ALEventQueue *evtq, ALEvent *evt) { } -void alEvtqNew(ALEventQueue *evtq, ALEventListItem *items, s32 itemCount){ +void alEvtqNew(ALEventQueue *evtq, ALEventListItem *items, s32 itemCount) { s32 i; evtq->eventCount = 0; diff --git a/src/audio.c b/src/audio.c index b3a3ffdf..05f2cf7b 100644 --- a/src/audio.c +++ b/src/audio.c @@ -9,7 +9,7 @@ #include "asset_sections.h" #include "asset_loading.h" #include "audio_internal.h" - +#include "unknown_003260.h" /* Size: 0x08 bytes */ typedef struct unk80115D48 { @@ -100,14 +100,6 @@ u32 D_80115F88; /******************************/ -typedef struct audioMgrConfig_s{ - u32 unk00; - u32 unk04; - u32 maxChannels; - ALHeap *hp; - u16 unk10; -} audioMgrConfig; - void audio_init(u32 arg0) { s32 iCnt; ALSynConfig synth_config; diff --git a/src/camera.c b/src/camera.c index 7605331a..35b45e72 100644 --- a/src/camera.c +++ b/src/camera.c @@ -5,6 +5,7 @@ #include "audio.h" #include "unknown_00BC20.h" #include "unknown_06B2B0.h" +#include "unknown_0255E0.h" extern u32 osTvType; diff --git a/src/camera.h b/src/camera.h index 1d13c845..00d03bd8 100644 --- a/src/camera.h +++ b/src/camera.h @@ -59,30 +59,6 @@ typedef struct unk80121110 { s8 unk6; } unk80121110; -/* Size: 0x44 bytes, might just be Object? */ -typedef struct unk80120AC0 { - s16 unk0; - s16 unk2; - s16 unk4; - u8 pad6[6]; - f32 x_position; - f32 y_position; - f32 z_position; - f32 pad18; - f32 unk1C; - f32 pad20; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; - s16 unk34; - s16 pad36; - s16 unk38; - s8 pad3A; - s8 unk3B; - u8 pad3C[8]; -} unk80120AC0; - extern ScreenViewport gScreenViewports[4]; // Not sure about the typing here @@ -109,7 +85,6 @@ extern s32 SP_IMEM; //TODO: Remove from here once header files for below are created with these signatures. void func_8006F870(Matrix, Matrix); //unknown_070110 - s16 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos); //unknown_0255E0 void func_800705F8(s32, f32, f32, f32); //From unknown_070110 f32 sqrtf(f32); //IDO? diff --git a/src/particles.h b/src/particles.h index 3fe1092b..d95201b2 100644 --- a/src/particles.h +++ b/src/particles.h @@ -129,5 +129,6 @@ void func_800B2260(unk800B2260 *arg0); void func_800AF134(unk800B2260 *arg0, s32 arg1, s32 arg2, s16 arg3, s16 arg4, s16 arg5); // Non Matching void func_800AF404(s32 arg0); // Non Matching void func_800B263C(unk800B2260_C *arg0); // Non Matching +void func_800AFC3C(Object *, s32); // Non Matching #endif diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 9a28838d..eddc08b2 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -4,19 +4,6 @@ #include "unknown_003260.h" #include "memory.h" -#define AL_SNDP_PLAY_EVT (1 << 0) -#define AL_SNDP_STOP_EVT (1 << 1) -#define AL_SNDP_PAN_EVT (1 << 2) -#define AL_SNDP_VOL_EVT (1 << 3) -#define AL_SNDP_PITCH_EVT (1 << 4) -#define AL_SNDP_API_EVT (1 << 5) -#define AL_SNDP_DECAY_EVT (1 << 6) -#define AL_SNDP_END_EVT (1 << 7) -#define AL_SNDP_FX_EVT (1 << 8) - -extern void func_80002A98(void*); -extern u32 func_80003008; - /************ .bss ************/ // All of these are defined in unknown_003260_bss.c @@ -45,7 +32,6 @@ extern OSMesgQueue D_80119AF0; extern OSMesg D_80119B08[50]; extern unk800DC6BC D_80119BD0; extern u16 *D_80119C28; - extern f32 gVideoRefreshRate; /******************************/ @@ -92,12 +78,10 @@ const char D_800E4B80[] = "WARNING: Attempt to stop NULL sound aborted\n"; /*********************************/ -void *alHeapDBAlloc(u8 *, s32, ALHeap *, s32, s32); - #if 1 GLOBAL_ASM("asm/non_matchings/unknown_003260/audioNewThread.s") #else -void audioNewThread(ALSynConfig *c, OSPri p, s32 arg2){ +void audioNewThread(ALSynConfig *c, OSPri p, s32 arg2) { u32 *reg_v0; void *reg_s0; u32 tmp_size; @@ -178,11 +162,7 @@ void func_8000318C(s32 arg0) { } } - - -ALMicroTime _sndpVoiceHandler(void *node); - -void alSndPNew(audioMgrConfig *c){ +void alSndPNew(audioMgrConfig *c) { u32 i; unk800DC6BC_40 *tmp1; ALEvent sp_38; @@ -220,7 +200,7 @@ void alSndPNew(audioMgrConfig *c){ #if 1 GLOBAL_ASM("asm/non_matchings/unknown_003260/_sndpVoiceHandler.s") #else -ALMicroTime _sndpVoiceHandler(void *node){ +ALMicroTime _sndpVoiceHandler(void *node) { unk800DC6BC *sndp = (unk800DC6BC *) node; ALSndpEvent evt; @@ -244,29 +224,20 @@ ALMicroTime _sndpVoiceHandler(void *node){ } #endif -#if 1 GLOBAL_ASM("asm/non_matchings/unknown_003260/_handleEvent.s") -#else - -#endif - GLOBAL_ASM("asm/non_matchings/unknown_003260/func_8000410C.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_8000418C.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800041FC.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_800042CC.s") GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004384.s") - - - GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004520.s") - -void func_80004604(u8 *arg0, u8 arg1){ +void func_80004604(u8 *arg0, u8 arg1) { if (arg0) arg0[0x36]=arg1; } -u8 func_8000461C(u8 *arg0){ +u8 func_8000461C(u8 *arg0) { if (arg0) return arg0[0x3F]; return 0; @@ -276,16 +247,15 @@ void func_80004638(ALBank *bnk, s16 sndIndx, s32 arg2) { func_80004668(bnk, sndIndx, 0, arg2); } - #if 1 GLOBAL_ASM("asm/non_matchings/unknown_003260/func_80004668.s") #else -void func_80004668(ALBank *bnk, s16 sndIndx, u8, s32){ +void func_80004668(ALBank *bnk, s16 sndIndx, u8, s32) { } #endif //input typing not right (some type of struct) -void func_8000488C(u8 *arg0){ +void func_8000488C(u8 *arg0) { ALEvent sp_18; sp_18.type = 1024; ((u32*)(&sp_18))[1] = (u32) arg0; @@ -300,7 +270,7 @@ void func_800049D8(void) { func_800048D8(3); } -void func_800049F8(void * sndState,s16 type, u32 arg2){ +void func_800049F8(void * sndState,s16 type, u32 arg2) { ALSndpEvent sndEvt; sndEvt.snd_event.type = type; sndEvt.snd_event.state = sndState; diff --git a/src/unknown_003260.h b/src/unknown_003260.h index 4d7bf3d4..286df90a 100644 --- a/src/unknown_003260.h +++ b/src/unknown_003260.h @@ -7,6 +7,16 @@ #include "asset_sections.h" #include "libultra_internal.h" +#define AL_SNDP_PLAY_EVT (1 << 0) +#define AL_SNDP_STOP_EVT (1 << 1) +#define AL_SNDP_PAN_EVT (1 << 2) +#define AL_SNDP_VOL_EVT (1 << 3) +#define AL_SNDP_PITCH_EVT (1 << 4) +#define AL_SNDP_API_EVT (1 << 5) +#define AL_SNDP_DECAY_EVT (1 << 6) +#define AL_SNDP_END_EVT (1 << 7) +#define AL_SNDP_FX_EVT (1 << 8) + typedef struct unk800DC6BC_40 { ALLink node; u8 pad0C[0x38]; @@ -82,6 +92,33 @@ extern unk800DC6BC* gAlSndPlayer; extern s32 sfxVolumeSlider; extern s32 D_800DC6C4; +extern void func_80002A98(void*); +extern u32 func_80003008; +void *alHeapDBAlloc(u8 *file, s32 line, ALHeap *hp, s32 num, s32 size); //lib/src/al +void alEvtqNew(ALEventQueue *evtq, ALEventListItem *items, s32 itemCount); //lib/src/unknown_0C9C90.c +ALMicroTime alEvtqNextEvent(ALEventQueue *evtq, ALEvent *evt); //lib/src/unknown_0C9C90.c +void alSynAddPlayer(ALSynth *drvr, ALPlayer *client); //lib/src/unknown_0C9C90.c +void alEvtqPostEvent(ALEventQueue *evtq, ALEvent *evt, ALMicroTime delta); //lib/src/unknown_0C9C90.c Non Matching + +void audioStartThread(void); +void audioStopThread(void); +void set_sfx_volume_slider(u32 arg0); +s32 sfxGetVolumeSlider(void); +void func_8000318C(s32 arg0); +void alSndPNew(audioMgrConfig *c); +void func_80004604(u8 *arg0, u8 arg1); +u8 func_8000461C(u8 *arg0); +void func_80004638(ALBank *bnk, s16 sndIndx, s32 arg2); +//Causes issues with its type +//void func_8000488C(u8 *arg0); void func_800049D8(void); +void func_800049F8(void * sndState,s16 type, u32 arg2); +u16 func_80004A3C(u8 arg0); + + +// Non Matching +ALMicroTime _sndpVoiceHandler(void *node); +void func_80004668(ALBank *bnk, s16 sndIndx, u8, s32); +void audioNewThread(ALSynConfig *c, OSPri p, s32 arg2); #endif diff --git a/src/unknown_008C40.c b/src/unknown_008C40.c index a746e82c..eb349e09 100644 --- a/src/unknown_008C40.c +++ b/src/unknown_008C40.c @@ -1,6 +1,7 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x80008040 */ +#include "unknown_008C40.h" #include "types.h" #include "macros.h" #include "audio_internal.h" diff --git a/src/unknown_008C40.h b/src/unknown_008C40.h new file mode 100644 index 00000000..ebf0de86 --- /dev/null +++ b/src/unknown_008C40.h @@ -0,0 +1,12 @@ +#ifndef _UNKNOWN_008C40_H_ +#define _UNKNOWN_008C40_H_ + +#include "types.h" + +void func_80008168(void); + +void func_80009558(u16, f32 x, f32 y, f32 z, s32, s32 *); // Non Matching +void func_80009968(f32, f32, f32, u8, u8, s32); // Non Matching +void func_800096D8(s32, f32, f32, f32); // Non Matching + +#endif diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index ac85796f..cb6b1678 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -245,7 +245,7 @@ s32 D_8011B000; s32 D_8011B004; s32 D_8011B008; s32 D_8011B010[4]; -u32 *D_8011B020[10]; +Object *D_8011B020[10]; s32 D_8011B048[4]; s32 D_8011B058[4]; s32 D_8011B068[4]; @@ -300,7 +300,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B38C.s") GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B750.s") GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000BADC.s") -u32 *func_8000BF44(s32 arg0) { +Object *func_8000BF44(s32 arg0) { if (arg0 == -1) { arg0 = D_800DC760; } @@ -1868,7 +1868,7 @@ void run_object_loop_func(Object *obj, s32 arg1) { func_80039330(obj, arg1); break; case 64: - obj_loop_world_key(obj, arg1); + obj_loop_world_key(obj, arg1); //arg1=speed break; case 65: func_8003D3FC(obj, arg1); diff --git a/src/unknown_00BC20.h b/src/unknown_00BC20.h index 7a9cc638..126eafe3 100644 --- a/src/unknown_00BC20.h +++ b/src/unknown_00BC20.h @@ -119,7 +119,7 @@ extern u16 D_800DC864; void free_tt_ghost_data(void); //unknown_043920.c f32 func_800707F8(s16); //? -u32 *func_8000BF44(s32 arg0); +Object *func_8000BF44(s32 arg0); void func_8000BF8C(void); void func_8000C460(void); void func_8000C604(void); @@ -211,6 +211,7 @@ void func_800228EC(s32 arg0); s8 func_8002341C(void); s32 func_80023568(void); s8 func_800235C0(void); +void func_800235D0(s32 arg0); void func_800238BC(Object *arg0); void run_object_loop_func(Object *obj, s32 arg1); void func_8002458C(s32 arg0); @@ -227,5 +228,9 @@ void func_80011960(Object*, s32, u32, Object_64*, u32, u32, u32, u32, f32); void func_80011AD0(Object *this); void func_80012E28(Object *this); void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); +s32 func_80014814(s32 *); +void func_80015348(s32, s32); +Object *func_8000EA54(unk80027FC4*, s32); +s32 func_8001F460(Object*, s32, Object*); #endif diff --git a/src/unknown_0255E0.c b/src/unknown_0255E0.c index 274b3aa8..5187f279 100644 --- a/src/unknown_0255E0.c +++ b/src/unknown_0255E0.c @@ -8,30 +8,12 @@ #include "structs.h" #include "f3ddkr.h" #include "PR/gu.h" - -/* Size: 0x44 bytes */ -typedef struct unk80120AC0 { - s16 unk0; - s16 unk2; - s16 unk4; - u8 pad6[6]; - f32 x_position; - f32 y_position; - f32 z_position; - f32 pad18; - f32 unk1C; - f32 pad20; - f32 unk24; - f32 unk28; - f32 unk2C; - f32 unk30; - s16 unk34; - s16 pad36; - s16 unk38; - s8 pad3A; - s8 unk3B; - u8 pad3C[8]; -} unk80120AC0; +#include "textures_sprites.h" +#include "unknown_00BC20.h" +#include "unknown_06B2B0.h" +#include "memory.h" +#include "unknown_043920.h" +#include "camera.h" /************ .data ************/ @@ -141,17 +123,7 @@ s32 D_8011D0E8; s32 D_8011D0EC; s32 D_8011D0F0; s32 D_8011D0F4; - -/* Size: 0x10 bytes */ -typedef struct unk8011D0F8 { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; -} unk8011D0F8; - unk8011D0F8 D_8011D0F8[3]; - s32 D_8011D128[15]; s32 D_8011D164; s32 D_8011D168[84]; @@ -163,37 +135,13 @@ s32 D_8011D314; s32 D_8011D318; s32 D_8011D31C; s32 D_8011D320[4]; - - -/* Size: 0x10 bytes */ -typedef struct unk8011D330 { - u8 pad0[0x10]; -} unk8011D330; - unk8011D330 *D_8011D330; s32 D_8011D334; - s32 D_8011D338[4]; - -/* Size: 0xA bytes */ -typedef struct unk8011D348 { - u8 pad0[0x9]; - u8 unk9; -} unk8011D348; unk8011D348 *D_8011D348; - s32 D_8011D34C; s32 D_8011D350[4]; - -/* Size: 0x8 bytes */ -typedef struct unk8011D360 { - u8 pad0[4]; - s16 unk4; - s16 unk6; -} unk8011D360; - unk8011D360 *D_8011D360; - s32 D_8011D364; s32 D_8011D368; s32 D_8011D36C; @@ -203,36 +151,8 @@ s32 D_8011D378; s32 D_8011D37C; f32 D_8011D380; u32 D_8011D384; - -/* Size: 0x38 bytes */ -typedef struct unk8011D388 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - s32 unk20; - s32 unk24; - u8 unk28; - u8 unk29; - u8 unk2A; - s16 unk2C; - s16 unk2E; - s32 unk30; - s32 unk34; -} unk8011D388; unk8011D388 D_8011D388[4]; - -typedef struct { - /* 0x00 */ s32 x; - /* 0x04 */ s32 y; - /* 0x08 */ s32 z; -} unk8011D468; unk8011D468 D_8011D468; - s32 D_8011D474; s32 D_8011D478; s32 D_8011D47C; @@ -256,16 +176,6 @@ s32 D_8011D4BC; /******************************/ -f32 func_800BB2F4(s32, f32, f32, f32*); -void func_8007B3D0(Gfx**); -Object *get_object(s32); -Settings *get_settings(); -void traverse_segments_bsp_tree(s32 nodeIndex, s32 segmentIndex, s32 segmentIndex2, u8 *segmentsOrder, u32 *segmentsOrderIndex); -s32 func_80014814(s32*); -void func_80015348(s32, s32); -void render_level_segment(s32 segmentId, s32 nonOpaque); - - s32 func_800249E0(s32 arg0) { D_8011D37C = arg0; return 0; @@ -274,7 +184,7 @@ s32 func_800249E0(s32 arg0) { #if 1 GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800249F0.s") #else -void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6){ +void func_800249F0(u32 arg0, u32 arg1, s32 arg2, u32 arg3, u32 arg4, u32 arg5, u32 arg6) { s32 i; s32 tmp_a2; @@ -370,17 +280,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027568.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_800278E8.s") GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80027E24.s") -typedef struct unk80027FC4 { - u8 unk0; - u8 unk1; - s16 unk2; - s16 unk4; - s16 unk6; -} unk80027FC4; - -void func_8005A3D0(void); -Object * func_8000EA54(unk80027FC4*, s32); - void func_80027FC4(s32 arg0) { unk80027FC4 sp20; @@ -424,7 +323,7 @@ void func_800289B8(void){ } #endif -void render_skydome(void){ +void render_skydome(void) { unk80120AC0 * v0_some_struct; if(D_8011B0B8 == NULL) return; @@ -720,9 +619,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/render_level_segment.s") #endif #ifdef NON_MATCHING - -void add_segment_to_order(s32 segmentIndex, u32 *segmentsOrderIndex, u8 *segmentsOrder); - // Regalloc issues. void traverse_segments_bsp_tree(s32 nodeIndex, s32 segmentIndex, s32 segmentIndex2, u8 *segmentsOrder, u32 *segmentsOrderIndex) { BspTreeNode *curNode; @@ -811,7 +707,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_80029DE0.s") #endif #ifdef NON_MATCHING - // Has regalloc issues. s32 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos) { LevelModelSegmentBoundingBox *bb; @@ -843,13 +738,12 @@ s32 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos) { return result; } - #else GLOBAL_ASM("asm/non_matchings/unknown_0255E0/get_level_segment_index_from_position.s") #endif -s32 func_8002A05C(s32 arg0, s32 arg1, s32 *arg2){ +s32 func_8002A05C(s32 arg0, s32 arg1, s32 *arg2) { s32 i; s32 cnt = 0; LevelModelSegmentBoundingBox * a0; @@ -895,14 +789,14 @@ s32 func_8002A134(s32 *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s return phi_v1; } -LevelModelSegment *func_8002A2C8(s32 arg0){ +LevelModelSegment *func_8002A2C8(s32 arg0) { if(arg0 < 0 || gCurrentLevelModel->numberOfSegments < arg0) return NULL; return gCurrentLevelModel->segments + arg0; } -LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0){ +LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0) { if(arg0 < 0 || gCurrentLevelModel->numberOfSegments < arg0) return NULL; @@ -912,8 +806,6 @@ LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0){ GLOBAL_ASM("asm/non_matchings/unknown_0255E0/func_8002A31C.s") #ifdef NON_MATCHING -f32 func_80066348(f32, f32, f32); - // Has some minor issues, but should be functionally equivalent. s32 func_8002A5F8(LevelModelSegmentBoundingBox *bb) { s64 sp48; @@ -1210,4 +1102,4 @@ void func_80031018(void) { D_8011D468.x = (s32) x; D_8011D468.y = (s32) y; D_8011D468.z = (s32) z; -} \ No newline at end of file +} diff --git a/src/unknown_0255E0.h b/src/unknown_0255E0.h index 3ff57731..35ffec1d 100644 --- a/src/unknown_0255E0.h +++ b/src/unknown_0255E0.h @@ -14,6 +14,59 @@ typedef struct unknown800DC874 { s16 unk06; } unknown800DC874; +/* Size: 0x10 bytes */ +typedef struct unk8011D0F8 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; +} unk8011D0F8; + +/* Size: 0x10 bytes */ +typedef struct unk8011D330 { + u8 pad0[0x10]; +} unk8011D330; + +/* Size: 0xA bytes */ +typedef struct unk8011D348 { + u8 pad0[0x9]; + u8 unk9; +} unk8011D348; + +/* Size: 0x8 bytes */ +typedef struct unk8011D360 { + u8 pad0[4]; + s16 unk4; + s16 unk6; +} unk8011D360; + +/* Size: 0x38 bytes */ +typedef struct unk8011D388 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + u8 unk28; + u8 unk29; + u8 unk2A; + s16 unk2C; + s16 unk2E; + s32 unk30; + s32 unk34; +} unk8011D388; + +typedef struct { + /* 0x00 */ s32 x; + /* 0x04 */ s32 y; + /* 0x08 */ s32 z; +} unk8011D468; + extern s32 D_800DC870; extern unknown800DC874 D_800DC874; extern unknown800DC874 D_800DC87C; @@ -31,4 +84,38 @@ extern s32 D_800DC928; extern s8 D_800DC92C[24]; +f32 func_800BB2F4(s32, f32, f32, f32*); //waves.c //Non Matching + +s32 func_800249E0(s32 arg0); +void func_800257D0(void); +void func_80027FC4(s32 arg0); +void func_80028044(s32 arg0); +void render_skydome(void); +void func_80028FA0(s32 arg0); +void add_segment_to_order(s32 segmentIndex, u32 *segmentsOrderIndex, u8 *segmentsOrder); +s32 func_8002A05C(s32 arg0, s32 arg1, s32 *arg2); +s32 func_8002A134(s32 *arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6); +LevelModelSegment *func_8002A2C8(s32 arg0); +LevelModelSegmentBoundingBox *func_8002A2DC(s32 arg0); +void func_8002ACC8(s32 arg0); +s32 func_8002ACD4(f32 *arg0, f32 *arg1, f32 *arg2); +s32 func_8002B9BC(Object *obj, f32 *arg1, f32 *arg2, s32 arg3); +void func_8002C71C(LevelModelSegment *segment); +LevelModel *func_8002C7C4(void); +void func_80030750(s32 arg0, s16 *arg1, s16 *arg2, s8 *arg3, s8 *arg4, s8 *arg5); +void func_800307BC(s32 arg0); +void func_80030838(s32 arg0, s32 arg1); +void func_8003093C(s32 arg0); +void func_80031018(void); + +//Non Matching +void traverse_segments_bsp_tree(s32 nodeIndex, s32 segmentIndex, s32 segmentIndex2, + u8 *segmentsOrder, u32 *segmentsOrderIndex); +void render_level_segment(s32 segmentId, s32 nonOpaque); +void render_level_geometry_and_objects(void); +s32 func_80029DE0(Object *obj, s32 segmentIndex); +s32 get_level_segment_index_from_position(f32 xPos, f32 yPos, f32 zPos); +s32 func_8002A5F8(LevelModelSegmentBoundingBox *bb); +void func_80030664(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 arg5); + #endif diff --git a/src/unknown_0348C0.c b/src/unknown_0348C0.c index cb2d500b..926c4f8a 100644 --- a/src/unknown_0348C0.c +++ b/src/unknown_0348C0.c @@ -12,6 +12,17 @@ #include "menu.h" // For cheats #include "unknown_0ABDF0.h" #include "unknown_043920.h" +#include "unknown_06B2B0.h" +#include "audio.h" +#include "unknown_008C40.h" +#include "unknown_00BC20.h" +#include "particles.h" +#include "unknown_0255E0.h" +#include "font.h" +#include "unknown_032760.h" +#include "unknown_09F8F0.h" +#include "waves.h" +#include "unknown_003260.h" /************ .data ************/ @@ -121,19 +132,7 @@ s16 D_8011D4E2; /******************************/ -extern u32 osTvType; - -Settings *get_settings(); -Object_64 *func_800BE654(s16, f32, f32); -void func_80000FDC(s32, s32, f32); -void func_80009558(u16, f32 x, f32 y, f32 z, s32, s32 *); //unknown_008C40 -void func_80009968(f32, f32, f32, u8, u8, s32); -s32 func_8001F460(Object*, s32, Object*); -f32 func_800707C4(s16); -f32 func_800707F8(s16); - #ifdef NON_MATCHING - typedef struct LevelObjectEntry80033CC0 { LevelObjectEntryCommon common; u8 unk8; @@ -186,16 +185,6 @@ void func_80033F44(Object *arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80033F60.s") -typedef struct unk80034530 { - u8 pad0[0x8]; - u8 unk8; - u8 unk9; - s8 unkA; - s8 unkB; - u8 unkC; - u8 unkD; -} unk80034530; - void func_80034530(Object *arg0, unk80034530 *arg1) { Object_64 *temp; arg0->unk4C->unk14 = 0x22; @@ -230,13 +219,6 @@ void func_80034AF0(Object *arg0, u8 *arg1) { arg0->unk78 = arg1[8]; } -typedef struct unk80034B4C { - u8 pad0[0x18]; - s16 unk18; - u8 pad1A[0x5E]; - s32 unk78; -} unk80034B4C; - void func_80034B4C(unk80034B4C *arg0, s32 arg1) { arg0->unk18 += arg0->unk78 * arg1; } @@ -268,19 +250,6 @@ void func_80035640(s32 arg0, s32 arg1) { } -typedef struct unk8003564C { - s8 unk0; - s8 unk1; - s16 unk2; - s16 unk4; - s16 unk6; -} unk8003564C; - -typedef struct Object_64_8003564C { - u8 pad0[4]; - Object *unk4; -} Object_64_8003564C; - void func_8003564C(Object *arg0, s32 arg1) { unk8003564C sp20; Object *someObj; @@ -301,14 +270,6 @@ void func_8003564C(Object *arg0, s32 arg1) { } } -/* Size: 12 bytes */ -typedef struct LevelObjectEntry8003572C { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8003572C; - void func_8003572C(Object *arg0, LevelObjectEntry8003572C *arg1) { f32 phi_f0 = arg1->unk9 & 0xFF; if (phi_f0 < 10) { @@ -344,14 +305,6 @@ void func_800357D4(Object *obj, s32 arg1) { obj->unk4C->unk13 = 0xFF; } -/* Size: 12 bytes */ -typedef struct LevelObjectEntry8003588C { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8003588C; - void func_8003588C(Object *arg0, LevelObjectEntry8003588C *arg1) { Object_40 *obj40; f32 phi_f0; @@ -380,24 +333,11 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003596C.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80035AE8.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80035C50.s") -typedef struct unk80035E20 { - u8 pad0[0x40]; - s32 unk40; - u8 pad44[0x34]; - s32 unk78; - s32 unk7C; -} unk80035E20; - void func_80035E20(unk80035E20 *arg0, s32 arg1) { arg0->unk78 = 0; arg0->unk7C = arg0->unk40; } -typedef struct Object_64_80035E34 { - u8 pad0[0x1D6]; - s8 unk1D6; -} Object_64_80035E34; - void func_80035E34(Object *obj, s32 arg1) { Object *someObj; Object *someOtherObj; @@ -425,13 +365,6 @@ void func_80035E34(Object *obj, s32 arg1) { } } -typedef struct unk80035EF8 { - u8 pad0[0xA]; - s16 unkA; - s16 unkC; - s16 unkE; -} unk80035EF8; - void func_80035EF8(Object *arg0, unk80035EF8 *arg1) { f32 phi_f0; arg0->unk78 = (s32) arg1->unkE; @@ -445,24 +378,6 @@ void func_80035EF8(Object *arg0, unk80035EF8 *arg1) { arg0->scale = (f32) (arg0->descriptor_ptr->unkC * phi_f0); } -typedef struct Object_64_80035F6C { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - s16 *unk20; - u8 *unk24; -} Object_64_80035F6C; - -typedef struct Object_64_80035F6C_2 { - u8 pad0[3]; - s8 unk3; -} Object_64_80035F6C_2; - void func_80035F6C(Object *obj, s32 arg1) { s32 temp_t4; s32 temp_t5; @@ -513,7 +428,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800361E0.s") void func_80036BCC(u16 arg0, s32 arg1) { if ((D_8011D4D8 != 0) && (arg1 & 1)) { - func_8000488C(D_8011D4D8); + func_8000488C(D_8011D4D8); //This is likely wrong and will need to be fixed D_8011D4D8 = 0; } if (D_8011D4D8 == 0) { @@ -524,12 +439,6 @@ void func_80036BCC(u16 arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80036C30.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800370D4.s") -typedef struct unk80037578 { - u8 pad0[0x78]; - s32 unk78; - s32 unk7C; -} unk80037578; - void func_80037578(unk80037578 *arg0, u8 *arg1) { arg0->unk78 = arg1[9] * 2; arg0->unk7C = arg1[8]; @@ -554,38 +463,12 @@ void func_80037594(Object *obj, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80037594.s") #endif -typedef struct unk80037624 { - u8 pad0[6]; - s16 unk6; -} unk80037624; - void func_80037624(unk80037624 *arg0, s32 arg1) { arg0->unk6 |= 0x4000; } GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003763C.s") -void func_800377E4(Object*, s32); - -/* Size: 12 bytes */ -typedef struct LevelObjectEntry800376E0 { - LevelObjectEntryCommon common; - s8 unk8; - s8 unk9; - s8 unkA; -} LevelObjectEntry800376E0; - -typedef struct Object_64_800376E0 { - s16 segmentId; - s16 unk2; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; -} Object_64_800376E0; - -s16 get_level_segment_index_from_position(f32, f32, f32); - void func_800376E0(Object *arg0, LevelObjectEntry800376E0 *arg1, s32 arg2) { Object_64_800376E0 *obj64; LevelModel *levelModel; @@ -620,16 +503,6 @@ void func_80037CE8(s32 arg0, s32 arg1) { func_8001F460(arg0, arg1, arg0); } -typedef struct unk80037D08_arg0_64 { - u8 pad0[0x2A]; - s16 unk2A; -} unk80037D08_arg0_64; - -typedef struct unk80037D08_arg0 { - u8 pad0[0x64]; - unk80037D08_arg0_64 *unk64; -} unk80037D08_arg0; - void func_80037D08(unk80037D08_arg0 *arg0, s32 arg1) { s32 phi_a0; unk80037D08_arg0_64 *sp18; @@ -658,15 +531,6 @@ void func_80037D6C(s32 arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80037D78.s") #ifdef NON_MATCHING - -// Not sure if Object_60 differs between objects yet. -typedef struct Object_60_800380F8 { - s32 unk0; - Object *unk4; - s32 pad8; - Object *unkC; -} Object_60_800380F8; - // Regalloc issues void func_800380F8(Object *obj, s32 arg1) { Object_60_800380F8 *obj60; @@ -729,17 +593,6 @@ void func_80038248(Object *arg0, s32 arg1) { } #ifdef NON_MATCHING - -void func_800096D8(s32, f32, f32, f32); - -typedef struct Object_64_8003827C { - u8 pad0[0x20]; - s32 unk20; - s16 unk24; - u8 pad28[0x12]; - s8 unk38; -} Object_64_8003827C; - // Regalloc issues void func_8003827C(Object *obj, s32 arg1) { Object_64_8003827C *obj64 = obj->unk64; @@ -768,15 +621,6 @@ void func_80038330(Object *obj, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003833C.s") -typedef struct Object_64_80038710 { - u8 pad0[0x30]; - s8 unk30; - u8 pad31[0x13]; - s8 unk44; -} Object_64_80038710; - -void func_80066488(s32, f32, f32, f32, s16, s16, s16); - void func_80038710(Object *obj, s32 arg1) { s32 temp_v0; s32 phi_v1; @@ -801,11 +645,6 @@ void func_80038710(Object *obj, s32 arg1) { void func_800387C0(Object *obj, s32 arg1) { } -typedef struct Object_64_800387CC { - u8 pad0[0x148]; - Object *unk148; -} Object_64_800387CC; - void func_800387CC(Object *obj, s32 arg1) { Object *someObj; s32 temp_v0; @@ -836,10 +675,6 @@ void func_80038854(Object *arg0, u8 *arg1) { arg0->y_rotation = arg1[11] << 10; // Not sure about the values here. } -typedef struct Object_64_800388D4 { - s16 unk0; -} Object_64_800388D4; - void func_800388D4(Object *arg0, s32 arg1) { s16 temp_a0; Object_4C *obj4C; @@ -915,12 +750,6 @@ void func_80038AD4(Object *arg0, s32 arg1) { } #ifdef NON_MATCHING - -typedef struct unk80038B74 { - u8 pad0[8]; - s8 unk8; -} unk80038B74; - // regalloc issues void func_80038B74(Object *obj, unk80038B74 *arg1) { s32 temp; @@ -952,41 +781,18 @@ void func_80038D58(Object *arg0, s32 arg1) { } } -typedef struct Object_3C_80038DC4 { - u8 pad0[8]; - s8 unk8; -} Object_3C_80038DC4; - void func_80038DC4(Object *arg0, s32 arg1) { if (arg0->unk78 != 0) { Object_3C_80038DC4 *temp = arg0->unk3C_a.unk3C; if(arg0->unk4C->unk13 < 0x78) { func_8006F338(temp->unk8); arg0->unk78 = 0; - func_80001D04(0x30, 0, arg0); + func_80001D04(0x30, 0); func_80000FDC(0x12A, 0, 1.0f); } } } -typedef struct LevelObjectEntry80038E3C { - LevelObjectEntryCommon common; - u8 pad8[8]; - u8 unk10; - u8 unk11; - u8 pad12[6]; - s8 unk18; -} LevelObjectEntry80038E3C; - -typedef struct Object_64_80038E3C { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; - s32 unk10; - s8 unk14; -} Object_64_80038E3C; - void func_80038E3C(Object *obj, LevelObjectEntry80038E3C *arg1) { f32 phi_f0; Object_64_80038E3C *obj64; @@ -1014,11 +820,6 @@ void func_80038E3C(Object *obj, LevelObjectEntry80038E3C *arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80038F58.s") -typedef struct unk80039160 { - u8 pad0[0x78]; - s32 unk78; -} unk80039160; - void func_80039160(unk80039160 *arg0, s8 *arg1) { arg0->unk78 = arg1[8]; func_80011390(); @@ -1028,13 +829,6 @@ void func_80039184(s32 arg0, s32 arg1) { } -typedef struct unk80039190 { - u16 unk0; - u8 pad2[0x76]; - s32 unk78; - s32 unk7C; -} unk80039190; - void func_80039190(unk80039190 *arg0, u8 *arg1) { s32 temp; arg0->unk78 = arg1[8]; @@ -1129,22 +923,6 @@ void func_8003AD28(s32 arg0, s32 arg1) { } -typedef struct LevelObjectEntry8003AD34 { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8003AD34; - -typedef struct Object_64_8003AD34 { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; - s32 unk10; - s8 unk14; -} Object_64_8003AD34; - void func_8003AD34(Object *obj, LevelObjectEntry8003AD34 *arg1) { f32 phi_f0; Object_64_8003AD34 *obj64; @@ -1200,28 +978,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003B4BC.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003B7CC.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003B988.s") -typedef struct LevelObjectEntry8003C1E0 { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; - u8 unkB; - u8 unkC; - u8 padD; - s8 unkE; -} LevelObjectEntry8003C1E0; - -typedef struct Object_64_8003C1E0 { - f32 unk0; - u8 pad4[4]; - s32 unk8; - u8 padC[3]; - s8 unkF; - u8 pad10[2]; - u8 unk12; - u8 unk13; -} Object_64_8003C1E0; - void func_8003C1E0(Object *obj, LevelObjectEntry8003C1E0 *arg1) { f32 temp_f0; Object_64_8003C1E0 *obj64; @@ -1283,7 +1039,7 @@ void func_8003CE64(Object *arg0, u8 *arg1) { void func_8003CEA0(Object *arg0, s32 arg1) { if (arg0->unk4C->unk13 < 0x2D) { - func_8001E344(arg0->unk78, arg0); + func_8001E344(arg0->unk78); } arg0->unk4C->unk13 = (u8)0xFF; } @@ -1296,11 +1052,6 @@ void func_8003CF0C(s32 arg0, s32 arg1) { } -typedef struct unk8003CF18 { - u8 pad1A[0x78]; - f32 unk78; -} unk8003CF18; - void func_8003CF18(unk8003CF18 *arg0, u8 *arg1) { f32 temp_f0; temp_f0 = arg1[8] * 8.0f; @@ -1326,7 +1077,7 @@ void func_8003CFE0(s32 arg0, u8 *arg1) { if (arg1[9] == 0xFF) { arg1[9] = func_8001C48C(arg0) & 0xFF; } - func_8001D1BC(arg1[9], arg1); + func_8001D1BC(arg1[9]); func_8001D1AC(); } @@ -1334,13 +1085,6 @@ void func_8003D02C(s32 arg0, s32 arg1) { } -typedef struct unk8003D038 { - u8 pad0[0x18]; - s16 unk18; - u8 pad1A[0x5E]; - s32 unk78; -} unk8003D038; - void func_8003D038(unk8003D038 *arg0, s8 *arg1) { arg0->unk18 = 0x78; arg0->unk78 = (arg1[8] - 1) & 3; @@ -1354,11 +1098,6 @@ void func_8003D2AC(s32 arg0, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003D2B8.s") -typedef struct unk8003D3EC { - u8 pad0[0x18]; - u16 unk18; -} unk8003D3EC; - void func_8003D3EC(unk8003D3EC *arg0, s32 arg1) { arg0->unk18 = 0x64; } @@ -1418,11 +1157,6 @@ void func_8003DC5C(Object *obj, s32 arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003DD14.s") -typedef struct unk8003DE74 { - u8 pad0[8]; - u8 unk8; -} unk8003DE74; - void func_8003DE74(Object *obj, unk8003DE74 *arg1) { Settings *settings; obj->unk4C->unk14 = 2; @@ -1437,13 +1171,6 @@ void func_8003DE74(Object *obj, unk8003DE74 *arg1) { gParticlePtrList_addObject(obj); } -#define WORLD_KEY_GRAB_CHECK_RADIUS 50 -#define SOUND_WORLD_KEY_GRAB 54 - -typedef struct Object_64_8003DF08 { - s16 unk0; -} Object_64_8003DF08; - /** * Rotates the key and checks to see if the player grabbed it. */ @@ -1491,7 +1218,7 @@ void func_8003E5C8(Object *arg0, s32 arg1) { arg0->unk4C->unk11 = 0; arg0->unk4C->unk10 = 0x18; arg0->unk4C->unk12 = 0; - arg0->unk78 = func_8000C8B4(0x1E0, arg0); + arg0->unk78 = func_8000C8B4(0x1E0); arg0->unk7C.word = 0; } @@ -1528,16 +1255,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003F0F8.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003F2E8.s") #ifdef NON_MATCHING - -typedef struct unk8003FC44 { - s8 unk0; - s8 unk1; - s16 unk2; - s16 unk4; - s16 unk6; - s8 unk7; -} unk8003FC44; - // Regalloc issues void func_8003FC44(f32 arg0, f32 arg1, f32 arg2, s32 arg3, s32 arg4, f32 arg5, s32 arg6) { Object *someObj; @@ -1567,46 +1284,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003FC44.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_8003FD68.s") -void func_800098A4(s32, s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32); - -typedef struct Object_64_8003FEF4 { - u8 unk0; - u8 pad1; - u16 unk2; - u16 unk4; - u16 unk6; - union { - struct { - u8 unk8; - u8 unk9; - u8 unkA; - u8 padB; - }; - s32 unk8_word; - }; - u8 unkC; - u8 unkD; - u8 unkE; - u8 unkF; - u8 unk10; - u8 unk11; - u8 unk12; -} Object_64_8003FEF4; - -typedef struct LevelObjectEntry8003FEF4 { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u16 unkA; - u8 unkC; - u8 unkD; - u16 unkE; - u8 unk10; - u8 unk11; - u8 unk12; - u8 unk13; -} LevelObjectEntry8003FEF4; - void func_8003FEF4(Object *arg0, LevelObjectEntry8003FEF4 *arg1) { Object_64_8003FEF4 *obj64; @@ -1628,20 +1305,6 @@ void func_8003FEF4(Object *arg0, LevelObjectEntry8003FEF4 *arg1) { gParticlePtrList_addObject(arg0); } -typedef struct LevelObjectEntry8004001C { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8004001C; - -typedef struct Object_64_8004001C { - u16 pad0; - s16 unk2; - u8 unk4; - u8 unk5; -} Object_64_8004001C; - void func_8004001C(Object *arg0, LevelObjectEntry8004001C *entry) { s32 temp; Object_64_8004001C *obj64 = (Object_64_8004001C*)arg0->unk64; @@ -1653,23 +1316,6 @@ void func_8004001C(Object *arg0, LevelObjectEntry8004001C *entry) { gParticlePtrList_addObject(arg0); } -/* Size: 12 bytes */ -typedef struct LevelObjectEntry800400A4 { - LevelObjectEntryCommon common; - s16 unk8; - s8 unkA; - s8 unkB; -} LevelObjectEntry800400A4; - -typedef struct Object_64_800400A4 { - s16 unk0; - s16 pad2; - s16 unk4; - s16 unk6; - s16 unk8; - s16 unkA; -} Object_64_800400A4; - void func_800400A4(Object *obj, LevelObjectEntry800400A4 *arg1, s32 arg2) { Object_64_800400A4 *obj64; LevelModel *levelModel; @@ -1695,12 +1341,7 @@ void func_800400A4(Object *obj, LevelObjectEntry800400A4 *arg1, s32 arg2) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80040148.s") -typedef struct unk800403A8 { - u8 pad0[0x64]; - s32 unk64; -} unk800403A8; - -void func_800403A8(unk800403A8 *arg0, s32 arg1, s32 arg2) { +void func_800403A8(Object *arg0, s32 arg1, s32 arg2) { arg0->unk64 = func_80031CAC(arg0, arg1); } @@ -1712,8 +1353,6 @@ void func_800403D8(Object *arg0, s32 arg1, s32 arg2) { arg0->unk4C->unk12 = 0; } -f32 func_800BEEB4(Object_64*); - void func_80040448(Object *arg0, s32 arg1) { if (arg0->unk64 != NULL) { arg0->y_position = func_800BEEB4(arg0->unk64); @@ -1721,14 +1360,6 @@ void func_80040448(Object *arg0, s32 arg1) { arg0->unk18 += arg1 * 8; } -/* Size: 12 bytes */ -typedef struct LevelObjectEntry8004049C { - LevelObjectEntryCommon common; - u8 unk8; - u8 unk9; - u8 unkA; -} LevelObjectEntry8004049C; - void func_8004049C(Object *arg0, LevelObjectEntry8004049C *arg1, s32 arg2) { f32 phi_f0; arg0->unk64 = func_800BE654(arg0->unk2E, arg0->x_position, arg0->z_position); @@ -1747,11 +1378,6 @@ void func_8004049C(Object *arg0, LevelObjectEntry8004049C *arg1, s32 arg2) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80040570.s") -typedef struct unk80040800 { - u8 pad0[0x78]; - f32 unk78; -} unk80040800; - void func_80040800(unk80040800 *arg0, s16 *arg1) { f32 temp = arg1[4]; temp *= temp; @@ -1771,7 +1397,7 @@ void func_8004094C(Object *arg0, s16 *arg1, s32 arg2) { } void func_800409A4(s32 arg0, s32 arg1, s32 arg2) { - func_800BF524(arg0); + func_800BF524(arg0); //waves.c } GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800409C8.s") @@ -1779,24 +1405,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80040C54.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80041A90.s") GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80041E80.s") -typedef struct unk80042014_arg0_64 { - u16 unk0; - u8 unk2; - u8 unk3; -} unk80042014_arg0_64; - -typedef struct unk80042014_arg0 { - u8 pad0[0x64]; - unk80042014_arg0_64 *unk64; -} unk80042014_arg0; - -typedef struct unk80042014_arg1 { - u8 pad0[8]; - u16 unk8; - u8 unkA; - u8 unkB; -} unk80042014_arg1; - void func_80042014(unk80042014_arg0 *arg0, unk80042014_arg1 *arg1) { unk80042014_arg0_64 *temp = arg0->unk64; temp->unk0 = arg1->unk8; @@ -1804,13 +1412,6 @@ void func_80042014(unk80042014_arg0 *arg0, unk80042014_arg1 *arg1) { temp->unk3 = arg1->unkB; } -typedef struct unk8004203C_arg1 { - u8 pad0[0x8]; - u8 unk8; - u8 unk9; - u16 unkA; -} unk8004203C_arg1; - void func_8004203C(Object *arg0, unk8004203C_arg1 *arg1) { func_800AF134(arg0->unk6C, arg1->unk9, arg1->unk8, 0, 0, 0); arg0->unk78 = arg1->unkA; @@ -1827,15 +1428,8 @@ void func_80042090(Object *arg0, s32 arg1) { } } -typedef struct unk8004210C { - u8 pad0[0x3C]; - s32 unk3C; - u8 pad40[0x24]; - s32 unk64; -} unk8004210C; - void func_8004210C(unk8004210C *arg0, s8 *arg1) { - arg0->unk64 = get_misc_asset(0x14) + (arg1[8] << 7); + arg0->unk64 = (s32)get_misc_asset(0x14) + (arg1[8] << 7); arg0->unk3C = 0; } @@ -1851,18 +1445,6 @@ void func_8004216C(s32 arg0, s32 arg1) { } -typedef struct unk80042178 { - u8 pad0[0x20]; -} unk80042178; - -s32 func_80016DE8(f32, f32, f32, f32, s32, unk80042178*); - -typedef struct Object_3C_80042178 { - u8 pad0[8]; - u16 unk8; - u16 unkA; -} Object_3C_80042178; - void func_80042178(Object *obj, s32 arg1) { s32 temp; Object_3C_80042178 *obj3C; @@ -1877,30 +1459,6 @@ void func_80042178(Object *obj, s32 arg1) { func_800AFC3C(obj, arg1); } -/* Size: 12 bytes */ -typedef struct LevelObjectEntry80042210 { - LevelObjectEntryCommon common; - s16 unk8; - u8 unkA; -} LevelObjectEntry80042210; - -typedef struct Object_64_80042210 { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; - f32 unk10; - u8 unk14; - u8 unk15; - u8 pad16[3]; - u8 unk19; - u8 pad1A[6]; - f32 unk20; - f32 unk24; - u8 pad28[8]; - f32 unk30; -} Object_64_80042210; - void func_80042210(Object *obj, LevelObjectEntry80042210 *arg1) { Object_64_80042210 *obj64; @@ -1929,15 +1487,6 @@ void func_80042210(Object *obj, LevelObjectEntry80042210 *arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_800422F0.s") -typedef struct Object_64_80042998 { - u8 pad0[0x70]; - u8 unk70; - u8 pad71; - u8 unk72; - u8 pad73; - f32 unk74; -} Object_64_80042998; - void func_80042998(s32 arg0, s32 arg1) { Object *obj; Object_64_80042998 *obj64; @@ -1957,13 +1506,6 @@ void func_80042998(s32 arg0, s32 arg1) { } } -typedef struct unk80042A1C { - u8 pad0[0x78]; - f32 unk78; - s16 unk7C; - s16 unk7E; -} unk80042A1C; - void func_80042A1C(unk80042A1C *arg0, s8 *arg1) { arg0->unk78 = arg1[9] * 8.0f; arg0->unk78 *= arg0->unk78; @@ -1977,11 +1519,6 @@ void func_80042A1C(unk80042A1C *arg0, s8 *arg1) { GLOBAL_ASM("asm/non_matchings/unknown_032760/func_80042A90.s") -typedef struct unk80042CD0 { - u8 pad0[0x18]; - s16 unk18; -} unk80042CD0; - void func_80042CD0(unk80042CD0 *arg0, s32 arg1) { func_8001F460(arg0, arg1, arg0); arg0->unk18 = (arg0->unk18 + (arg1 * 8)) & 0xFF; diff --git a/src/unknown_0348C0.h b/src/unknown_0348C0.h index 8851df86..12b317cc 100644 --- a/src/unknown_0348C0.h +++ b/src/unknown_0348C0.h @@ -2,6 +2,447 @@ #define _UNKNOWN_0348C0_H_ #include "types.h" +#include "structs.h" + +#define WORLD_KEY_GRAB_CHECK_RADIUS 50 +#define SOUND_WORLD_KEY_GRAB 54 + +typedef struct unk80034530 { + u8 pad0[0x8]; + u8 unk8; + u8 unk9; + s8 unkA; + s8 unkB; + u8 unkC; + u8 unkD; +} unk80034530; + +typedef struct unk80034B4C { + u8 pad0[0x18]; + s16 unk18; + u8 pad1A[0x5E]; + s32 unk78; +} unk80034B4C; + +typedef struct unk8003564C { + s8 unk0; + s8 unk1; + s16 unk2; + s16 unk4; + s16 unk6; +} unk8003564C; + +typedef struct Object_64_8003564C { + u8 pad0[4]; + Object *unk4; +} Object_64_8003564C; + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry8003572C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8003572C; + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry8003588C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8003588C; + +typedef struct unk80035E20 { + u8 pad0[0x40]; + s32 unk40; + u8 pad44[0x34]; + s32 unk78; + s32 unk7C; +} unk80035E20; + +typedef struct Object_64_80035E34 { + u8 pad0[0x1D6]; + s8 unk1D6; +} Object_64_80035E34; + +typedef struct unk80035EF8 { + u8 pad0[0xA]; + s16 unkA; + s16 unkC; + s16 unkE; +} unk80035EF8; + +typedef struct Object_64_80035F6C { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s16 *unk20; + u8 *unk24; +} Object_64_80035F6C; + +typedef struct Object_64_80035F6C_2 { + u8 pad0[3]; + s8 unk3; +} Object_64_80035F6C_2; + +typedef struct unk80037578 { + u8 pad0[0x78]; + s32 unk78; + s32 unk7C; +} unk80037578; + +typedef struct unk80037624 { + u8 pad0[6]; + s16 unk6; +} unk80037624; + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry800376E0 { + LevelObjectEntryCommon common; + s8 unk8; + s8 unk9; + s8 unkA; +} LevelObjectEntry800376E0; + +typedef struct Object_64_800376E0 { + s16 segmentId; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; +} Object_64_800376E0; + +typedef struct unk80037D08_arg0_64 { + u8 pad0[0x2A]; + s16 unk2A; +} unk80037D08_arg0_64; + +typedef struct unk80037D08_arg0 { + u8 pad0[0x64]; + unk80037D08_arg0_64 *unk64; +} unk80037D08_arg0; + +// Not sure if Object_60 differs between objects yet. +typedef struct Object_60_800380F8 { + s32 unk0; + Object *unk4; + s32 pad8; + Object *unkC; +} Object_60_800380F8; + +typedef struct Object_64_8003827C { + u8 pad0[0x20]; + s32 unk20; + s16 unk24; + u8 pad28[0x12]; + s8 unk38; +} Object_64_8003827C; + +typedef struct Object_64_80038710 { + u8 pad0[0x30]; + s8 unk30; + u8 pad31[0x13]; + s8 unk44; +} Object_64_80038710; + +typedef struct Object_64_800387CC { + u8 pad0[0x148]; + Object *unk148; +} Object_64_800387CC; + +typedef struct Object_64_800388D4 { + s16 unk0; +} Object_64_800388D4; + +typedef struct unk80038B74 { + u8 pad0[8]; + s8 unk8; +} unk80038B74; + +typedef struct Object_3C_80038DC4 { + u8 pad0[8]; + s8 unk8; +} Object_3C_80038DC4; + +typedef struct LevelObjectEntry80038E3C { + LevelObjectEntryCommon common; + u8 pad8[8]; + u8 unk10; + u8 unk11; + u8 pad12[6]; + s8 unk18; +} LevelObjectEntry80038E3C; + +typedef struct Object_64_80038E3C { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + s32 unk10; + s8 unk14; +} Object_64_80038E3C; + +typedef struct unk80039160 { + u8 pad0[0x78]; + s32 unk78; +} unk80039160; + +typedef struct unk80039190 { + u16 unk0; + u8 pad2[0x76]; + s32 unk78; + s32 unk7C; +} unk80039190; + +typedef struct LevelObjectEntry8003AD34 { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8003AD34; + +typedef struct Object_64_8003AD34 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + s32 unk10; + s8 unk14; +} Object_64_8003AD34; + +typedef struct LevelObjectEntry8003C1E0 { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; + u8 unkB; + u8 unkC; + u8 padD; + s8 unkE; +} LevelObjectEntry8003C1E0; + +typedef struct Object_64_8003C1E0 { + f32 unk0; + u8 pad4[4]; + s32 unk8; + u8 padC[3]; + s8 unkF; + u8 pad10[2]; + u8 unk12; + u8 unk13; +} Object_64_8003C1E0; + +typedef struct unk8003CF18 { + u8 pad1A[0x78]; + f32 unk78; +} unk8003CF18; + +typedef struct unk8003D038 { + u8 pad0[0x18]; + s16 unk18; + u8 pad1A[0x5E]; + s32 unk78; +} unk8003D038; + +typedef struct unk8003D3EC { + u8 pad0[0x18]; + u16 unk18; +} unk8003D3EC; + +typedef struct unk8003DE74 { + u8 pad0[8]; + u8 unk8; +} unk8003DE74; + +typedef struct Object_64_8003DF08 { + s16 unk0; +} Object_64_8003DF08; + +typedef struct unk8003FC44 { + s8 unk0; + s8 unk1; + s16 unk2; + s16 unk4; + s16 unk6; + s8 unk7; +} unk8003FC44; + + +typedef struct Object_64_8003FEF4 { + u8 unk0; + u8 pad1; + u16 unk2; + u16 unk4; + u16 unk6; + union { + struct { + u8 unk8; + u8 unk9; + u8 unkA; + u8 padB; + }; + s32 unk8_word; + }; + u8 unkC; + u8 unkD; + u8 unkE; + u8 unkF; + u8 unk10; + u8 unk11; + u8 unk12; +} Object_64_8003FEF4; + +typedef struct LevelObjectEntry8003FEF4 { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u16 unkA; + u8 unkC; + u8 unkD; + u16 unkE; + u8 unk10; + u8 unk11; + u8 unk12; + u8 unk13; +} LevelObjectEntry8003FEF4; + +typedef struct LevelObjectEntry8004001C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8004001C; + +typedef struct Object_64_8004001C { + u16 pad0; + s16 unk2; + u8 unk4; + u8 unk5; +} Object_64_8004001C; + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry800400A4 { + LevelObjectEntryCommon common; + s16 unk8; + s8 unkA; + s8 unkB; +} LevelObjectEntry800400A4; + +typedef struct Object_64_800400A4 { + s16 unk0; + s16 pad2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; +} Object_64_800400A4; + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry8004049C { + LevelObjectEntryCommon common; + u8 unk8; + u8 unk9; + u8 unkA; +} LevelObjectEntry8004049C; + +typedef struct unk80040800 { + u8 pad0[0x78]; + f32 unk78; +} unk80040800; + +typedef struct unk80042014_arg0_64 { + u16 unk0; + u8 unk2; + u8 unk3; +} unk80042014_arg0_64; + +typedef struct unk80042014_arg0 { + u8 pad0[0x64]; + unk80042014_arg0_64 *unk64; +} unk80042014_arg0; + +typedef struct unk80042014_arg1 { + u8 pad0[8]; + u16 unk8; + u8 unkA; + u8 unkB; +} unk80042014_arg1; + +typedef struct unk8004210C { + u8 pad0[0x3C]; + s32 unk3C; + u8 pad40[0x24]; + s32 unk64; +} unk8004210C; + +typedef struct unk80042178 { + u8 pad0[0x20]; +} unk80042178; + +typedef struct Object_3C_80042178 { + u8 pad0[8]; + u16 unk8; + u16 unkA; +} Object_3C_80042178; + +typedef struct unk8004203C_arg1 { + u8 pad0[0x8]; + u8 unk8; + u8 unk9; + u16 unkA; +} unk8004203C_arg1; + +/* Size: 12 bytes */ +typedef struct LevelObjectEntry80042210 { + LevelObjectEntryCommon common; + s16 unk8; + u8 unkA; +} LevelObjectEntry80042210; + +typedef struct Object_64_80042210 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + u8 unk14; + u8 unk15; + u8 pad16[3]; + u8 unk19; + u8 pad1A[6]; + f32 unk20; + f32 unk24; + u8 pad28[8]; + f32 unk30; +} Object_64_80042210; + +typedef struct Object_64_80042998 { + u8 pad0[0x70]; + u8 unk70; + u8 pad71; + u8 unk72; + u8 pad73; + f32 unk74; +} Object_64_80042998; + +typedef struct unk80042A1C { + u8 pad0[0x78]; + f32 unk78; + s16 unk7C; + s16 unk7E; +} unk80042A1C; + +typedef struct unk80042CD0 { + u8 pad0[0x18]; + s16 unk18; +} unk80042CD0; // Unsure about the signed/unsigned with these arrays. extern u16 D_800DC970[4]; @@ -19,5 +460,128 @@ extern s8 D_800DCA94[8]; extern s8 D_800DCA9C[12]; extern u16 D_800DCAA8[64]; extern u16 D_800DCB28[20]; +extern u32 osTvType; -#endif \ No newline at end of file +f32 func_800707C4(s16); // No idea where it's located +f32 func_800707F8(s16); // No idea where it's located +s32 get_random_number_from_range(s32, s32); // Non Matching src/unknown_070110.c +s32 func_8007066C(s32, s32); // Non Matching src/unknown_070110.c +s32 func_80016DE8(f32, f32, f32, f32, s32, unk80042178*); //unknown_00BC20.c Non Matching +// Yeah this one seems excessive, and it's Non Matching from src/unknown_008C40.c +void func_800098A4(s32, s32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32); + +void func_80033F44(Object *arg0, s32 arg1); +void func_80034530(Object *arg0, unk80034530 *arg1); +void func_80034844(Object *arg0, s32 arg1); +void func_80034AF0(Object *arg0, u8 *arg1); +void func_80034B4C(unk80034B4C *arg0, s32 arg1); +void func_80034B68(s32 arg0, s32 arg1); +void func_80034E70(Object *arg0, u8 *arg1); +void func_8003522C(Object *arg0, s32 arg1); +void func_80035640(s32 arg0, s32 arg1); +void func_8003564C(Object *arg0, s32 arg1); +void func_8003572C(Object *arg0, LevelObjectEntry8003572C *arg1); +void func_800357D4(Object *obj, s32 arg1); +void func_8003588C(Object *arg0, LevelObjectEntry8003588C *arg1); +void func_80035E20(unk80035E20 *arg0, s32 arg1); +void func_80035E34(Object *obj, s32 arg1); +void func_80035EF8(Object *arg0, unk80035EF8 *arg1); +void func_80035F6C(Object *obj, s32 arg1); +void func_80036194(Object *arg0, s32 arg1); +void func_80036BCC(u16 arg0, s32 arg1); +void func_80037578(unk80037578 *arg0, u8 *arg1); +void func_80037624(unk80037624 *arg0, s32 arg1); +void func_800376E0(Object *arg0, LevelObjectEntry800376E0 *arg1, s32 arg2); +void func_80037CE8(s32 arg0, s32 arg1); +void func_80037D08(unk80037D08_arg0 *arg0, s32 arg1); +void func_80037D54(s32 arg0, s32 arg1); +void func_80037D60(s32 arg0, s32 arg1); +void func_80037D6C(s32 arg0, s32 arg1); +void func_8003818C(Object *arg0, s32 arg1); +void func_800381C0(s32 arg0, s32 arg1); +void func_800381E0(Object *arg0, s32 arg1); +void func_80038214(Object *arg0, s32 arg1); +void func_80038248(Object *arg0, s32 arg1); +void func_80038330(Object *obj, s32 arg1); +void func_80038710(Object *obj, s32 arg1); +void func_800387C0(Object *obj, s32 arg1); +void func_800387CC(Object *obj, s32 arg1); +void func_80038854(Object *arg0, u8 *arg1); +void func_800388D4(Object *arg0, s32 arg1); +void func_800389AC(s32 arg0, s32 arg1); +void func_800389B8(Object *obj, s32 arg1); +void func_80038A6C(s32 arg0, s32 arg1); +void func_80038A78(Object *arg0, s32 arg1); +void func_80038AC8(s32 arg0, s32 arg1); +void func_80038AD4(Object *arg0, s32 arg1); +void func_80038D58(Object *arg0, s32 arg1); +void func_80038DC4(Object *arg0, s32 arg1); +void func_80038E3C(Object *obj, LevelObjectEntry80038E3C *arg1); +void func_80039160(unk80039160 *arg0, s8 *arg1); +void func_80039184(s32 arg0, s32 arg1); +void func_80039190(unk80039190 *arg0, u8 *arg1); +void func_800391BC(s32 arg0, s32 arg1); +void func_800391C8(Object *arg0, s32 arg1); +void func_800391FC(Object *obj, s32 arg1); +void func_800392B8(Object *arg0, s32 arg1); +void func_80039320(s16 arg0); +void func_8003AC3C(u16 arg0, s32 arg1); +void func_8003ACA0(s32 arg0, s32 arg1); +f32 func_8003ACAC(void); +void func_8003ACBC(Object *arg0, u8 *arg1, s32 arg2); +void func_8003AD28(s32 arg0, s32 arg1); +void func_8003AD34(Object *obj, LevelObjectEntry8003AD34 *arg1); +void func_8003B058(Object *obj, LevelObjectEntry8003AD34 *arg1); +void func_8003C1E0(Object *obj, LevelObjectEntry8003C1E0 *arg1); +void func_8003C9EC(Object *arg0, u8 *arg1); +void func_8003CE64(Object *arg0, u8 *arg1); +void func_8003CEA0(Object *arg0, s32 arg1); +void func_8003CF00(s32 arg0, s32 arg1); +void func_8003CF0C(s32 arg0, s32 arg1); +void func_8003CF18(unk8003CF18 *arg0, u8 *arg1); +void func_8003CF58(Object *arg0, u8 *arg1); +void func_8003CF98(Object *arg0, s32 arg1); +void func_8003CFE0(s32 arg0, u8 *arg1); +void func_8003D02C(s32 arg0, s32 arg1); +void func_8003D038(unk8003D038 *arg0, s8 *arg1); +void func_8003D2AC(s32 arg0, s32 arg1); +void func_8003D3EC(unk8003D3EC *arg0, s32 arg1); +void func_8003D534(Object *arg0, s32 arg1); +void func_8003DBA0(Object *obj, s32 arg1); +void func_8003DC5C(Object *obj, s32 arg1); +void func_8003DE74(Object *obj, unk8003DE74 *arg1); +void obj_loop_world_key(Object *worldKeyObj, s32 speed); +void func_8003E5B0(s32 arg0, s32 arg1); +void func_8003E5BC(s32 arg0, s32 arg1); +void func_8003E5C8(Object *arg0, s32 arg1); +void func_8003E630(Object *arg0); +void func_8003F0D0(void); +void func_8003F0DC(void); +void func_8003FEF4(Object *arg0, LevelObjectEntry8003FEF4 *arg1); +void func_8004001C(Object *arg0, LevelObjectEntry8004001C *entry); +void func_800400A4(Object *obj, LevelObjectEntry800400A4 *arg1, s32 arg2); +void func_800403A8(Object *arg0, s32 arg1, s32 arg2); +void func_800403D8(Object *arg0, s32 arg1, s32 arg2); +void func_80040448(Object *arg0, s32 arg1); +void func_8004049C(Object *arg0, LevelObjectEntry8004049C *arg1, s32 arg2); +void func_800409A4(s32 arg0, s32 arg1, s32 arg2); +void func_80042014(unk80042014_arg0 *arg0, unk80042014_arg1 *arg1); +void func_8004203C(Object *arg0, unk8004203C_arg1 *arg1); +void func_80042090(Object *arg0, s32 arg1); +void func_8004210C(unk8004210C *arg0, s8 *arg1); +void func_80042150(s32 arg0, s32 arg1, s32 arg2); +void func_80042160(s32 arg0, s32 arg1); +void func_8004216C(s32 arg0, s32 arg1); +void func_80042178(Object *obj, s32 arg1); +void func_80042210(Object *obj, LevelObjectEntry80042210 *arg1); +void func_80042998(s32 arg0, s32 arg1); +void func_80042A1C(unk80042A1C *arg0, s8 *arg1); +void func_80042CD0(unk80042CD0 *arg0, s32 arg1); + +//Non Matching +void func_80037594(Object *obj, s32 arg1); +void func_800377E4(Object *obj, s32 arg1); +void func_800380F8(Object *obj, s32 arg1); +void func_8003827C(Object *obj, s32 arg1); + +#endif diff --git a/src/unknown_043920.c b/src/unknown_043920.c index 07d2d5c1..8eb4767d 100644 --- a/src/unknown_043920.c +++ b/src/unknown_043920.c @@ -11,6 +11,7 @@ #include "structs.h" #include "asset_sections.h" //#include "controller_pak.h" +#include "unknown_008C40.h" /* Size: 8 bytes */ typedef struct GhostHeader { @@ -741,9 +742,6 @@ void func_800570A4(Object *arg0, s32 arg1, s32 arg2) { } #ifdef NON_MATCHING - -void func_80009558(u16, f32 x, f32 y, f32 z, s32, s32 *); //unknown_008C40 - typedef struct Object_64_800570B8 { u8 pad0[3]; s8 unk3; @@ -882,10 +880,6 @@ GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80058B84.s") GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80058D5C.s") #ifdef NON_MATCHING - -s32 func_8007066C(s32, s32); -s16 get_level_segment_index_from_position(f32, f32, f32); - void func_80058F44(f32 arg0, Object *arg1, Object *arg2) { s32 temp0, temp1; temp0 = (s32)arg0; @@ -894,7 +888,6 @@ void func_80058F44(f32 arg0, Object *arg1, Object *arg2) { gCameraObject->z_rotation -= (gCameraObject->z_rotation * temp0) >> 4; gCameraObject->unk34 = get_level_segment_index_from_position(gCameraObject->x_position, arg2->unk3C_a.unk3C_f, gCameraObject->z_position); } - #else GLOBAL_ASM("asm/non_matchings/unknown_043920/func_80058F44.s") #endif diff --git a/src/unknown_043920.h b/src/unknown_043920.h index 5ef25cf3..0991889e 100644 --- a/src/unknown_043920.h +++ b/src/unknown_043920.h @@ -2,6 +2,7 @@ #define _UNKNOWN_043920_H_ #include "types.h" +#include "structs.h" extern s32 D_800DCB50; extern s16 D_800DCB54; @@ -46,5 +47,8 @@ extern s32 D_800DCDD0; extern s16 D_800DCDD4[4]; s32 func_80059B7C(s32 arg0, s32 arg1, s16 arg2, s16 arg3, s16 arg4); +void func_8005A3D0(void); + +void set_ghost_position_and_rotation(Object *obj); // Non Matching #endif diff --git a/src/unknown_05CEF0.c b/src/unknown_05CEF0.c index fe2ab85e..0c424f8c 100644 --- a/src/unknown_05CEF0.c +++ b/src/unknown_05CEF0.c @@ -9,6 +9,7 @@ #include "audio.h" #include "unknown_00BC20.h" #include "unknown_005740.h" +#include "unknown_008C40.h" /************ .data ************/ diff --git a/src/unknown_05CEF0.h b/src/unknown_05CEF0.h index e8b8895b..60cda2b1 100644 --- a/src/unknown_05CEF0.h +++ b/src/unknown_05CEF0.h @@ -20,7 +20,6 @@ typedef struct unk8005D048 { extern s16 D_800DCDE0[16]; -void func_80009558(u16, f32 x, f32 y, f32 z, s32, s32 *); //unknown_008C40 s32 get_random_number_from_range(s32, s32); //? void func_8005C2F0(Object *object, unk8005C2F0 *arg1); diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index b7200de1..8d91bd7a 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -32,6 +32,7 @@ #include "lib/src/os/__osSpSetStatus.h" #include "printf.h" #include "fade_transition.h" +#include "unknown_077C50.h" /************ .rodata ************/ diff --git a/src/unknown_077C50.h b/src/unknown_077C50.h index 1bde59c4..b5877f84 100644 --- a/src/unknown_077C50.h +++ b/src/unknown_077C50.h @@ -1,4 +1,11 @@ #ifndef _UNKNOWN_077C50_H_ #define _UNKNOWN_077C50_H_ +#include "types.h" +#include "f3ddkr.h" + +// Non Matching +void render_borders_for_multiplayer(Gfx **dlist); +void func_80077268(Gfx **dlist); + #endif diff --git a/src/unknown_09F8F0.c b/src/unknown_09F8F0.c index 7deb7aa5..f67a0df0 100644 --- a/src/unknown_09F8F0.c +++ b/src/unknown_09F8F0.c @@ -1,22 +1,12 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x8009ECF0 */ +#include "unknown_09F8F0.h" #include "types.h" #include "macros.h" #include "structs.h" #include "f3ddkr.h" - -typedef struct { - u8 unk0[0x4C4]; - u16 unk4C4; - u8 unk4C6[0x1B4]; - s8 unk67A; -} unk80126CDC; - -typedef struct { - u8 unk0[0x4C]; - s8 unk4C; -} unk80126D60; +#include "camera.h" extern u32 osTvType; @@ -25,17 +15,6 @@ extern u32 osTvType; // Unused? s32 D_800E1E60 = 0; -typedef struct unk800E1E64 { - s32 unk0; - s32 unk4; - f32 unk8; - f32 unkC; - f32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; -} unk800E1E64; - unk800E1E64 D_800E1E64[59] = { { 0, 0, 1.0f, 53.0f, 16.0f, 0, 127, 0 }, { 0, 3, 1.0f, 54.0f, 18.0f, 0, 0, 0 }, @@ -131,17 +110,6 @@ u16 D_800E2684[118] = { 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000 }; -/* Size: 0x10 bytes */ -typedef struct unk800E2770 { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - s32 unk4; - s32 unk8; - s32 unkC; -} unk800E2770; - unk800E2770 D_800E2770[2] = { { 0, 0xFD, 0, 0, 0, 0, 0 }, { 0, 0xFF, 0, 0, 0, 0, 0 }, @@ -277,22 +245,6 @@ s32 D_801271B0[640]; /******************************/ -typedef struct { - u8 unk0[0x1D8]; - s8 unk1D8; -} unk800A0DC0_2; - -typedef struct { - u8 unk0[0x64]; - unk800A0DC0_2 *unk64; -} unk800A0DC0; - -void func_80068508(s32); -void func_800A14F0(unk800A0DC0 *, s32); -void func_800A3CE4(s32, s32); -void func_800A7520(unk800A0DC0 *, s32); - - GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_8009ECF0.s") GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_8009F034.s") GLOBAL_ASM("asm/non_matchings/unknown_09F8F0/func_800A003C.s") diff --git a/src/unknown_09F8F0.h b/src/unknown_09F8F0.h new file mode 100644 index 00000000..8c1c60c1 --- /dev/null +++ b/src/unknown_09F8F0.h @@ -0,0 +1,75 @@ +#ifndef _UNKNOWN_09F8F0_H_ +#define _UNKNOWN_09F8F0_H_ + +#include "types.h" +#include "structs.h" + +typedef struct { + u8 unk0[0x4C4]; + u16 unk4C4; + u8 unk4C6[0x1B4]; + s8 unk67A; +} unk80126CDC; + +typedef struct { + u8 unk0[0x4C]; + s8 unk4C; +} unk80126D60; + +typedef struct unk800E1E64 { + s32 unk0; + s32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; +} unk800E1E64; + +/* Size: 0x10 bytes */ +typedef struct unk800E2770 { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + s32 unk4; + s32 unk8; + s32 unkC; +} unk800E2770; + +typedef struct { + u8 unk0[0x1D8]; + s8 unk1D8; +} unk800A0DC0_2; + +//Probably Object +typedef struct { + u8 unk0[0x64]; + unk800A0DC0_2 *unk64; +} unk800A0DC0; + + +u8 func_800A0190(void); +void func_800A0B74(void); +void func_800A0DC0(s32 arg0, unk800A0DC0 *arg1, s32 arg2); +void func_800A1428(s32 arg0, unk800A0DC0 *arg1, s32 arg2); +void func_800A258C(s32 arg0, unk800A0DC0 *arg1, s32 arg2); +void func_800A263C(s32 arg0, unk800A0DC0 *arg1, s32 arg2); +void func_800A3870(void); +void func_800A6DB4(s16 *arg0); +void func_800A7484(u16 arg0, f32 arg1, s32 arg2); +void func_800A74EC(u16 arg0, s32 arg1); +void func_800A83B4(LevelModel *model); +s8 func_800A8458(void); +void func_800AB194(s32 arg0); +void func_800AB1AC(s32 arg0); +void func_800AB1C8(void); +void func_800AB1D4(u8 arg0); + +// Non Matching +void func_800A14F0(unk800A0DC0 *, s32); +void func_800A3CE4(s32, s32); +void func_800A7520(unk800A0DC0 *, s32); + +#endif diff --git a/src/waves.c b/src/waves.c index fcd34060..088e9ac2 100644 --- a/src/waves.c +++ b/src/waves.c @@ -1,6 +1,7 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x800B7D20 */ +#include "waves.h" #include "types.h" #include "macros.h" #include "libultra_internal.h" diff --git a/src/waves.h b/src/waves.h new file mode 100644 index 00000000..2c8060a0 --- /dev/null +++ b/src/waves.h @@ -0,0 +1,10 @@ +#ifndef _WAVES_H_ +#define _WAVES_H_ + +#include "types.h" +#include "structs.h" + +Object_64 *func_800BE654(s16, f32, f32); // Non Matching +f32 func_800BEEB4(Object_64 *); // Non Matching + +#endif