From 66a8cc8391fec9e73dd458f0732d47fca2e8afb2 Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Tue, 14 Sep 2021 13:14:28 -0400 Subject: [PATCH] unknown_06B2B0.h step 2 --- lib/src/os/__osSpSetStatus.c | 1 + src/camera.c | 1 + src/camera.h | 2 -- src/main.c | 1 + src/main.h | 2 -- src/menu.c | 19 ++++++----- src/unknown_003260.h | 4 ++- src/unknown_00BC20.c | 1 + src/unknown_032760.h | 4 ++- src/unknown_06B2B0.c | 25 +++++--------- src/unknown_06B2B0.h | 66 ++++++++++++++++++++++++++---------- src/unknown_078050.c | 3 +- src/unknown_078050.h | 3 ++ src/video.h | 2 ++ 14 files changed, 83 insertions(+), 51 deletions(-) diff --git a/lib/src/os/__osSpSetStatus.c b/lib/src/os/__osSpSetStatus.c index ad25861f..2f255a15 100644 --- a/lib/src/os/__osSpSetStatus.c +++ b/lib/src/os/__osSpSetStatus.c @@ -1,6 +1,7 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x800CD240 */ +#include "__osSpSetStatus.h" #include "types.h" #include "macros.h" #include "hardware.h" diff --git a/src/camera.c b/src/camera.c index 9c3ada2f..7605331a 100644 --- a/src/camera.c +++ b/src/camera.c @@ -4,6 +4,7 @@ #include "camera.h" #include "audio.h" #include "unknown_00BC20.h" +#include "unknown_06B2B0.h" extern u32 osTvType; diff --git a/src/camera.h b/src/camera.h index 6cbd0fdb..1d13c845 100644 --- a/src/camera.h +++ b/src/camera.h @@ -110,9 +110,7 @@ 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 load_level_2(s32 arg0, s32 arg1, s32 arg2, s32 arg3); //unknown_06B2B0 void func_800705F8(s32, f32, f32, f32); //From unknown_070110 - void func_8006ECFC(s32 arg0); //From unknown_06B2B0 f32 sqrtf(f32); //IDO? diff --git a/src/main.c b/src/main.c index d65a8de2..6d4ce606 100644 --- a/src/main.c +++ b/src/main.c @@ -3,6 +3,7 @@ #include "main.h" #include "thread0_epc.h" +#include "unknown_06B2B0.h" /************ .rodata ************/ diff --git a/src/main.h b/src/main.h index 340ad3f4..ebd6a653 100644 --- a/src/main.h +++ b/src/main.h @@ -5,8 +5,6 @@ #include "macros.h" #include "libultra_internal.h" -void thread3_main(s32 arg0); //unknown_06B2B0.c - void main(void); void func_80065D98(s32 arg0); //Non Matching diff --git a/src/menu.c b/src/menu.c index af4b3a8a..93652362 100644 --- a/src/menu.c +++ b/src/menu.c @@ -21,6 +21,7 @@ #include "textures_sprites.h" #include "thread30.h" #include "unknown_00BC20.h" +#include "unknown_06B2B0.h" /** * @file Contains all the code used for every menu in the game. @@ -2151,17 +2152,17 @@ GLOBAL_ASM("asm/non_matchings/menu/draw_menu_elements.s") void func_800828B8(void) { s32 i; - s32 j; - s32 num; + s32 numWorlds; + s32 numLevels; Settings *settings; settings = get_settings(); - get_number_of_levels_and_worlds(&num, &j); + get_number_of_levels_and_worlds(&numLevels, &numWorlds); - for(i = 0; i < num; i++) { + for(i = 0; i < numLevels; i++) { settings->courseFlagsPtr[i] = 0; - for(j = 0; j < 3; j++) { - settings->courseFlagsPtr[i] |= D_80126530[j]->courseFlagsPtr[i]; + for(numWorlds = 0; numWorlds < 3; numWorlds++) { + settings->courseFlagsPtr[i] |= D_80126530[numWorlds]->courseFlagsPtr[i]; } } @@ -3936,10 +3937,10 @@ void func_8008CACC(void) { void menu_file_select_init(void) { s32 i; - s32 sp38; - s32 sp34; + s32 numLevels; + s32 numWorlds; - get_number_of_levels_and_worlds(&sp38, &sp34); + get_number_of_levels_and_worlds(&numLevels, &numWorlds); func_8009C674(D_800E0398); func_8009C8A4(D_800E03A4); func_8007FFEC(6); diff --git a/src/unknown_003260.h b/src/unknown_003260.h index b8d346e3..4d7bf3d4 100644 --- a/src/unknown_003260.h +++ b/src/unknown_003260.h @@ -82,4 +82,6 @@ extern unk800DC6BC* gAlSndPlayer; extern s32 sfxVolumeSlider; extern s32 D_800DC6C4; -#endif \ No newline at end of file +void func_800049D8(void); + +#endif diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index 68627c78..ac85796f 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -11,6 +11,7 @@ #include "asset_loading.h" #include "thread0_epc.h" #include "controller_pak.h" +#include "unknown_06B2B0.h" /************ .data ************/ diff --git a/src/unknown_032760.h b/src/unknown_032760.h index bedf8787..6bdcf848 100644 --- a/src/unknown_032760.h +++ b/src/unknown_032760.h @@ -81,4 +81,6 @@ typedef struct unk800DC964 { extern unk800DC950 **D_800DC950; -#endif \ No newline at end of file +void func_80031B60(void); + +#endif diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index 73eca5f4..649dd1eb 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -25,6 +25,13 @@ #include "unknown_00BC20.h" #include "camera.h" #include "controller_pak.h" +#include "unknown_078050.h" +#include "unknown_003260.h" +#include "unknown_032760.h" +#include "textures_sprites.h" +#include "lib/src/os/__osSpSetStatus.h" +#include "printf.h" +#include "fade_transition.h" /************ .rodata ************/ @@ -95,9 +102,7 @@ s16 D_800DD3F4[8] = { }; s32 D_800DD404 = 12; -unknown800DD408 D_800DD408 = { - 0, 255, 255, 255, 30, 0xFFFF -}; +FadeTransition D_800DD408 = { 0, 255, 255, 255, 30, 0xFFFF }; // Unused? char *D_800DD410[3] = { @@ -179,12 +184,7 @@ s32 D_80123560[8]; /******************************/ -extern s32 gVideoCurrFramebuffer; -extern s32 gVideoLastFramebuffer; -extern s32 gVideoLastDepthBuffer; - #ifdef NON_MATCHING - void func_8006A6B0(void) { s32 i, count, checksumCount; s32 temp; @@ -869,8 +869,6 @@ void func_8006C3E0(void) { osSetTime(0); } -void func_8006CCF0(s32 arg0); - void render(void) { s32 phi_v0; s32 phi_v0_2; @@ -1032,13 +1030,6 @@ void func_8006CC14(void) { } #ifdef NON_MATCHING - -void func_8006EC48(s32 arg0); -void func_8006F398(void); -void func_8006F42C(void); -void func_8006D8F0(s32 arg0); -void load_menu_with_level_background(s32 menuId, s32 levelId, s32 cutsceneId); - // Almost matching except for a couple minor issues. void func_8006CCF0(s32 arg0) { s32 i, buttonHeldInputs, sp40, sp3C, buttonPressedInputs, phi_v1_2; diff --git a/src/unknown_06B2B0.h b/src/unknown_06B2B0.h index 7280c5d1..5f27348e 100644 --- a/src/unknown_06B2B0.h +++ b/src/unknown_06B2B0.h @@ -3,15 +3,7 @@ #include "types.h" #include "structs.h" - -typedef struct unknown800DD408 { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u16 unk4; - u16 unk6; -} unknown800DD408; +#include "fade_transition.h" /* Size: 6 bytes */ typedef struct unk8012117C { @@ -85,7 +77,7 @@ extern s32 D_800DD3AC; extern s8 D_800DD3F0; extern s16 D_800DD3F4[8]; -extern unknown800DD408 D_800DD408; +extern FadeTransition D_800DD408; extern s32 D_800DD40C; // Unused? @@ -96,28 +88,66 @@ extern s32 D_800DD41C[2]; extern s32 D_800DD424[2]; +extern s32 gVideoCurrFramebuffer; +extern s32 gVideoLastFramebuffer; +extern s32 gVideoLastDepthBuffer; + void func_8006F870(Matrix, Matrix); //unknown_070110 void func_800705F8(s32, f32, f32, f32); //From unknown_070110 f32 sqrtf(f32); //IDO? -void func_8006F43C(void); -void load_level_2(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId); +s16 func_8006ABB4(s32 arg0); +s32 func_8006B018(s8 arg0); +s32 func_8006B054(s8 arg0); +s32 func_8006B0AC(s32 arg0); +s32 func_8006B0F8(s32 arg0); +s8 func_8006B14C(s32 arg0); +s8 func_8006B190(s32 arg0); +s32 func_8006B1D4(s32 arg0); +void get_number_of_levels_and_worlds(s32 *outLevelCount, s32 *outWorldCount); +s32 func_8006B240(void); +void func_8006BD10(f32 arg0); +s32 func_8006BD88(void); +u8 get_current_level_race_type(void); +LevelHeader *get_current_level_header(void); +u8 func_8006BDC0(void); +u8 *func_8006BDDC(s32 arg0); +void func_8006BEFC(void); +void func_8006BFC8(s8 *arg0); void func_8006C164(void); -void load_level_3(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId, s32 cutsceneId); -void render(void); -void func_8006C3E0(void); -Settings *get_settings(void); +s32 func_8006C18C(void); +s8 func_8006C19C(void); void func_8006C1AC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_8006C22C(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3); +void func_8006C2E4(void); +s16 func_8006C2F0(void); +s32 func_8006C300(void); +void thread3_main(s32 arg0); +void func_8006C3E0(void); +void render(void); +void func_8006CAE4(s32 arg0, s32 arg1, s32 arg2); +void load_level_2(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId); +void func_8006CC14(void); +void func_8006D8A4(void); + +void func_8006F43C(void); +void load_level_3(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId, s32 cutsceneId); +Settings *get_settings(void); void func_8006C2E4(void); s16 func_8006C2F0(void); void func_8006DB20(s32 vehicleId); -void func_8006BFC8(s8 *arg0); void func_8006EC48(s32 arg0); void calc_and_alloc_heap_for_settings(void); +void func_8006F398(void); +void func_8006F42C(void); +void func_8006D8F0(s32 arg0); +void load_menu_with_level_background(s32 menuId, s32 levelId, s32 cutsceneId); //Non Matching -void func_8006ECFC(s32 arg0); +void func_8006ECFC(s32 numberOfPlayers); void func_8006DCF8(s32 arg0); void func_8006EFDC(void); +void load_level(s32 levelId, s32 numberOfPlayers, s32 entranceId, s32 vehicleId, s32 cutsceneId); +void func_8006CCF0(s32 arg0); #endif diff --git a/src/unknown_078050.c b/src/unknown_078050.c index b9f7b6f0..21b51b62 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -194,7 +194,8 @@ void func_80077AAC(void *bufPtr, s32 arg1, s32 arg2) { while (func_800D18D0() & 0x100) {} } -void func_80077B34(u8 arg0, u8 arg1, u8 arg2){ +//Probable red, green, blue +void func_80077B34(u8 arg0, u8 arg1, u8 arg2) { D_800DE4B0 = arg0; D_800DE4B4 = arg1; D_800DE4B8 = arg2; diff --git a/src/unknown_078050.h b/src/unknown_078050.h index 5f9a1a6d..f6c946dd 100644 --- a/src/unknown_078050.h +++ b/src/unknown_078050.h @@ -21,4 +21,7 @@ extern s32 D_800DE4D4; extern s32 D_800DE4D8; extern s32 D_800DE4DC; +void func_80077B34(u8 arg0, u8 arg1, u8 arg2); +s32 func_80077A54(void); + #endif diff --git a/src/video.h b/src/video.h index d247d215..8d84e039 100644 --- a/src/video.h +++ b/src/video.h @@ -48,4 +48,6 @@ extern VideoModeResolution gVideoModeResolutions[8]; extern s32 D_800DE7BC; +s32 func_8007A98C(s32 arg0); + #endif