Merge pull request #170 from Ryan-Myers/master

thread0_epc.h, thread30.h, unknown_0ABDF0.h, unknown_00BC20.h, unknown_05CEF9.h, unknown_06B2B0.h
This commit is contained in:
David Benepe
2021-09-14 16:17:31 -05:00
committed by GitHub
33 changed files with 627 additions and 428 deletions
+1
View File
@@ -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"
+8
View File
@@ -0,0 +1,8 @@
#ifndef _OSSPSETSTATUS_H_
#define _OSSPSETSTATUS_H_
#include "types.h"
void __osSpSetStatus(u32 status);
#endif
+2
View File
@@ -3,6 +3,8 @@
#include "camera.h"
#include "audio.h"
#include "unknown_00BC20.h"
#include "unknown_06B2B0.h"
extern u32 osTvType;
-6
View File
@@ -108,15 +108,9 @@ extern s32 D_A4000000;
extern s32 SP_IMEM;
//TODO: Remove from here once header files for below are created with these signatures.
s8* get_misc_asset(s32 arg0); //unknown_00BC20
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_8006C164(void); //unknown_00BC20
void func_8000E194(void); //unknown_00BC20
void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); //unknown_00BC20
void func_800705F8(s32, f32, f32, f32); //From unknown_070110
void func_8006ECFC(s32 arg0); //From unknown_06B2B0
f32 sqrtf(f32); //IDO?
+1
View File
@@ -3,6 +3,7 @@
#include "game_text.h"
#include "menu.h"
#include "unknown_00BC20.h"
/************ .data ************/
-1
View File
@@ -22,7 +22,6 @@ typedef struct unk8012A798 {
extern u32 osTvType;
void func_8005A3B0(void); //unknown_043920.c
s32 func_8000C8B4(s32 arg0); //unknown_00BC20.c
void func_800C29F0(void);
void func_800C2AB4(void);
+2
View File
@@ -2,6 +2,8 @@
/* RAM_POS: 0x80065D40 */
#include "main.h"
#include "thread0_epc.h"
#include "unknown_06B2B0.h"
/************ .rodata ************/
-2
View File
@@ -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
+1
View File
@@ -3,6 +3,7 @@
#include "memory.h"
#include "printf.h"
#include "thread0_epc.h"
/************ .rodata ************/
+16 -13
View File
@@ -19,6 +19,9 @@
#include "object_models.h"
#include "printf.h"
#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.
@@ -1455,12 +1458,12 @@ s16 D_800E1DC8[16] = {
1, -1, -1, -1, 1, 1, 1, -1
};
s16 D_800E1DE8[4] = {
0, 0, 0x78, -1
};
FadeTransition D_800E1DE8 = FADE_TRANSITION(0, FADE_COLOR_BLACK, 120, -1);
char gRareCopyrightString[24] = "(C) COPYRIGHT RARE 1997";
//Probably a FadeTransition, but that won't be certain
//FadeTransition D_800E1E08 = FADE_TRANSITION(0, FADE_COLOR_BLACK, 52, -1);
s16 D_800E1E08[4] = {
0, 0, 0x34, -1
};
@@ -2149,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];
}
}
@@ -3934,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);
@@ -5480,7 +5483,7 @@ void func_8009ABD8(s8 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) {
arg0++;
}
if ((phi_v1 == 0) && (get_misc_asset(0x19) == arg0)) {
if ((phi_v1 == 0) && (get_misc_asset(0x19) == (s32 *)arg0)) {
D_8012684C = 1;
} else {
D_8012684C = 0;
+3 -8
View File
@@ -4,6 +4,7 @@
#include "types.h"
#include "structs.h"
#include "PR/gbi.h"
#include "fade_transition.h"
#define TT_MENU_ROOT 0
#define TT_MENU_CONT_PAK_ERROR_1 1
@@ -625,10 +626,10 @@ extern s32 D_800E1DC4;
extern s16 D_800E1DC8[16];
extern s16 D_800E1DE8[4];
extern char gRareCopyrightString[24];
//Probably a FadeTransition
//extern FadeTransition D_800E1E08;
extern s16 D_800E1E08[4];
extern s32 *D_800E1E10;
@@ -645,15 +646,9 @@ extern s16 D_800E1E2C[10];
extern s16 D_800E1E40[10];
Settings *get_settings(void); //src/unknown_06B2B0.c
s8* get_misc_asset(s32 arg0); //unknown_00BC20
void render_textured_rectangle(Gfx **dlist, DrawTexture *arg1,
s32 arg2, s32 arg3, u8 red, u8 green, u8 blue, u8 alpha); // Non Matching src/unknown_078050.c
void load_level_for_menu(s32 levelId, s32 numberOfPlayers, s32 cutsceneId); //src/unknown_06B2B0.c
void func_80078D00(Gfx**, void *element, s32, s32, f32, f32, u32, s32); //Non Matching src/unknown_078050.c
s32 get_thread30_level_id_to_load(void); //src/thread30.c
void func_8001D5E0(f32 arg0, f32 arg1, f32 arg2); //unknown_00BC20
void gParticlePtrList_addObject(Object *object); //src/unknown_00BC20.c
s32 get_random_number_from_range(s32, s32); // Non Matching src/unknown_070110.c
void func_8007FF88(void);
+1
View File
@@ -5,6 +5,7 @@
#include "types.h"
#include "macros.h"
#include "f3ddkr.h"
#include "thread0_epc.h"
/************ .data ************/
+1 -1
View File
@@ -90,6 +90,6 @@ s32 func_8007C860(s32 spriteIndex); // Non Matching
s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut,
s32 *numFramesOut, s32 *formatOut, s32 *sizeOut); // Non Matching
void free_sprite(Sprite *sprite); // Non Matching
void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor);
void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor); // Non Matching
#endif
+5 -77
View File
@@ -1,12 +1,13 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800B6E50 */
#include "thread0_epc.h"
#include "types.h"
#include "macros.h"
#include "libultra_internal.h"
#include "menu.h"
#include "controller_pak.h"
#include "printf.h"
#include "unknown_00BC20.h"
/************ .rodata ************/
@@ -36,61 +37,6 @@ char *D_800E302C[3] = {
/************ .bss ************/
/* Size: 0x1B0 bytes */
typedef struct epcInfo {
/* 0x00 */ s32 unk0;
/* 0x04 */ s32 unk4;
/* 0x08 */ s32 unk8;
/* 0x0C */ s32 unkC;
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 thread;
/* 0x18 */ s32 unk18;
/* 0x1C */ s32 unk1C;
/* 0x20 */ s64 at;
/* 0x28 */ s64 v0;
/* 0x30 */ s64 v1;
/* 0x38 */ s64 a0;
/* 0x40 */ s64 a1;
/* 0x48 */ s64 a2;
/* 0x50 */ s64 a3;
/* 0x58 */ s64 t0;
/* 0x60 */ s64 t1;
/* 0x68 */ s64 t2;
/* 0x70 */ s64 t3;
/* 0x78 */ s64 t4;
/* 0x80 */ s64 t5;
/* 0x88 */ s64 t6;
/* 0x90 */ s64 t7;
/* 0x98 */ s64 s0;
/* 0xA0 */ s64 s1;
/* 0xA8 */ s64 s2;
/* 0xB0 */ s64 s3;
/* 0xB8 */ s64 s4;
/* 0xC0 */ s64 s5;
/* 0xC8 */ s64 s6;
/* 0xD0 */ s64 s7;
/* 0xD8 */ s64 t8;
/* 0xE0 */ s64 t9;
/* 0xE8 */ s64 gp;
/* 0xF0 */ s64 sp;
/* 0xF8 */ s64 s8;
/* 0x100 */ s64 ra;
/* 0x108 */ s32 unk108;
/* 0x10C */ s32 unk10C;
/* 0x110 */ s32 unk110;
/* 0x114 */ s32 unk114;
/* 0x118 */ s32 sr;
/* 0x11C */ s32 epc;
/* 0x120 */ s32 cause;
/* 0x124 */ s32 badvaddr;
/* 0x128 */ s32 unk128;
/* 0x12C */ s32 unk12C;
/* 0x130 */ f32 unk130;
/* 0x134 */ f32 unk134;
/* 0x138 */ f32 unk138;
/* 0x13C */ u8 pad13C[0x74];
} epcInfo;
epcInfo gEpcInfo;
s32 D_801299B0[64];
@@ -98,13 +44,6 @@ extern s32 D_80129BB0[256];
/******************************/
s16 *func_80024594(s32 *arg0, s32 *arg1);
void thread0(s32 arg0);
void func_800B70D0(void);
void func_800B7144(void);
void func_800B71B0(void);
extern OSThread D_801295E0;
extern OSMesgQueue D_80129790;
extern OSMesg D_801297A8;
@@ -139,8 +78,6 @@ void func_800B6E50(void) {
}
}
void func_800B6EE0(void) {
D_80127CAC = D_80127CBC;
D_80127CAE = D_80127CC4;
@@ -206,18 +143,8 @@ void thread0(s32 arg0) { // Has regalloc issues
GLOBAL_ASM("asm/non_matchings/thread0_epc/thread0.s")
#endif
/* Unknown Size, might be epcInfo? */
typedef struct unk800D2470 {
/* 0x00 */ OSThread *thread;
/* 0x04 */ s32 unk4;
/* 0x08 */ s32 unk8;
/* 0x0C */ struct unk800D2470 *next;
/* 0x10 */ u8 pad10[0x108];
/* 0x118 */ s32 unk118;
} unk800D2470;
void func_800B70D0(void) {
unk800D2470 *node = func_800D2470();
unk800D2470 *node = func_800D2470(); //Might be epcInfo?
while(node->unk4 != -1) {
if (node->unk4 == 0) {
node->unk118 &= 0xFFFF00FE;
@@ -246,7 +173,7 @@ GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B71B0.s")
#if 1
GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B7460.s")
#else
//Rename mask to colorTag?
void func_800B7460(s32 *epc, s32 size, s32 mask) {
epcInfo sp840;
s16 sp440[0x200];
@@ -287,6 +214,7 @@ void func_800B76B8(s32 arg0, s32 arg1) {
}
}
//Called as a check to see if render_epc_lock_up_display should be called.
s32 func_800B76DC(void) {
s32 fileNum;
u8 sp820[4]; // Unused?
+89
View File
@@ -0,0 +1,89 @@
#ifndef _THREAD0_EPC_H_
#define _THREAD0_EPC_H_
#include "types.h"
#include "libultra_internal.h"
/* Size: 0x1B0 bytes */
typedef struct epcInfo {
/* 0x00 */ s32 unk0;
/* 0x04 */ s32 unk4;
/* 0x08 */ s32 unk8;
/* 0x0C */ s32 unkC;
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 thread;
/* 0x18 */ s32 unk18;
/* 0x1C */ s32 unk1C;
/* 0x20 */ s64 at;
/* 0x28 */ s64 v0;
/* 0x30 */ s64 v1;
/* 0x38 */ s64 a0;
/* 0x40 */ s64 a1;
/* 0x48 */ s64 a2;
/* 0x50 */ s64 a3;
/* 0x58 */ s64 t0;
/* 0x60 */ s64 t1;
/* 0x68 */ s64 t2;
/* 0x70 */ s64 t3;
/* 0x78 */ s64 t4;
/* 0x80 */ s64 t5;
/* 0x88 */ s64 t6;
/* 0x90 */ s64 t7;
/* 0x98 */ s64 s0;
/* 0xA0 */ s64 s1;
/* 0xA8 */ s64 s2;
/* 0xB0 */ s64 s3;
/* 0xB8 */ s64 s4;
/* 0xC0 */ s64 s5;
/* 0xC8 */ s64 s6;
/* 0xD0 */ s64 s7;
/* 0xD8 */ s64 t8;
/* 0xE0 */ s64 t9;
/* 0xE8 */ s64 gp;
/* 0xF0 */ s64 sp;
/* 0xF8 */ s64 s8;
/* 0x100 */ s64 ra;
/* 0x108 */ s32 unk108;
/* 0x10C */ s32 unk10C;
/* 0x110 */ s32 unk110;
/* 0x114 */ s32 unk114;
/* 0x118 */ s32 sr;
/* 0x11C */ s32 epc;
/* 0x120 */ s32 cause;
/* 0x124 */ s32 badvaddr;
/* 0x128 */ s32 unk128;
/* 0x12C */ s32 unk12C;
/* 0x130 */ f32 unk130;
/* 0x134 */ f32 unk134;
/* 0x138 */ f32 unk138;
/* 0x13C */ u8 pad13C[0x74];
} epcInfo;
/* Unknown Size, might be epcInfo? */
typedef struct unk800D2470 {
/* 0x00 */ OSThread *thread;
/* 0x04 */ s32 unk4;
/* 0x08 */ s32 unk8;
/* 0x0C */ struct unk800D2470 *next;
/* 0x10 */ u8 pad10[0x108];
/* 0x118 */ s32 unk118;
} unk800D2470;
void func_800B6E50(void);
void func_800B6EE0(void);
void func_800B6F04(void);
void func_800B6F30(s32 arg0, s32 arg1, s32 arg2);
void func_800B6F40(s32 arg0, s32 arg1, s32 arg2);
void func_800B70D0(void);
void func_800B7144(void);
void func_800B76B8(s32 arg0, s32 arg1);
s32 func_800B76DC(void);
void func_800B77D4(s32 arg0);
void func_800B6F50(void); // Non Matching
void thread0(s32 arg0); // Non Matching
void func_800B7460(s32 *epc, s32 size, s32 mask); // Non Matching
void render_epc_lock_up_display(void); // Non Matching
void func_800B71B0(void); // Non Matching
#endif
+1 -3
View File
@@ -1,7 +1,7 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800C7350 */
#include "types.h"
#include "thread30.h"
#include "macros.h"
#include "libultra_internal.h"
@@ -31,8 +31,6 @@ extern void *gThread30Stack;
/*****************************/
void thread30(void *arg);
/**
* Initalizes and starts thread30()
*/
+14
View File
@@ -0,0 +1,14 @@
#ifndef _THREAD30_H_
#define _THREAD30_H_
#include "types.h"
void create_and_start_thread30(void);
void stop_thread30(void);
s32 get_thread30_level_id_to_load(void);
void tick_thread30(void);
s32 get_thread30_load_delay(void);
s32 set_level_to_load_in_background(s32 levelId, s32 cutsceneId);
void thread30(void *arg);
#endif
+3 -1
View File
@@ -82,4 +82,6 @@ extern unk800DC6BC* gAlSndPlayer;
extern s32 sfxVolumeSlider;
extern s32 D_800DC6C4;
#endif
void func_800049D8(void);
#endif
+36 -111
View File
@@ -7,9 +7,11 @@
#include "types.h"
#include "macros.h"
#include "structs.h"
#include "f3ddkr.h"
#include "asset_sections.h"
#include "asset_loading.h"
#include "thread0_epc.h"
#include "controller_pak.h"
#include "unknown_06B2B0.h"
/************ .data ************/
@@ -207,13 +209,6 @@ s32 gAssetsLvlObjTranslationTableLength;
s32 D_8011AEC0;
Object **gParticlePtrList;
s32 gParticleCount;
/* Size: 0x3C bytes */
typedef struct unknown8011AECC {
u8 unk00[0x3A];
s8 unk3A;
s8 unk3B;
} unknown8011AECC;
unknown8011AECC *D_8011AECC; // Array of structs, unknown number of members
s32 D_8011AED0;
s32 D_8011AED4;
@@ -239,21 +234,6 @@ s32 D_8011AF2C;
s32 D_8011AF30[12];
s32 D_8011AF60[2];
s32 D_8011AF68[32];
/* Size: 0x40 bytes */
typedef struct unk800179D0 {
s32 unk0;
u32 *unk04;
u32 *unk08;
f32 unk0C[12];
u32 unk3C;
} unk800179D0;
/* Unknown Size */
typedef struct unk800179D0_2 {
s32 unk04;
} unk800179D0_2;
s32 D_8011AFE8;
s16 D_8011AFEC;
s16 D_8011AFEE;
@@ -278,45 +258,18 @@ extern s16 D_8011D5AC;
/******************************/
extern s32 osTvType;
typedef struct unk8001D6E4_arg1_40 {
u8 pad0[0x71];
/* 0x71 */ u8 unk71;
} unk8001D6E4_arg1_40;
typedef struct unk8001D6E4_arg1 {
/* 0x00 */ s16 unk0;
/* 0x02 */ s16 unk2;
/* 0x04 */ s16 unk4;
u8 pad6[0x3A];
/* 0x40 */ unk8001D6E4_arg1_40 *unk40;
} unk8001D6E4_arg1;
void calc_dynamic_lighting_for_object_1(unk8001D6E4_arg1 *, ObjectModel *, s16, unk8001D6E4_arg1 *, f32, f32);
void calc_dynamic_lighting_for_object_2(unk8001D6E4_arg1 *, ObjectModel *, s16, f32);
void func_8000C460(void);
void gParticlePtrList_addObject(Object *);
void gParticlePtrList_flush(void);
void func_8001D258(f32, f32, s32, s32, s32);
extern void func_800245B4(s16);
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B020.s")
#if 1
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000B290.s")
#else
extern s32 D_800DC754;
extern Object *D_800DC75C;
extern Object *D_800DC764;
s32 *get_misc_asset(s32 arg0);
void func_8000B290(){
void func_8000B290() {
if(D_800DC754){
free_from_memory_pool();
@@ -357,38 +310,36 @@ u32 *func_8000BF44(s32 arg0) {
return D_8011B020[arg0];
}
void decrypt_magic_codes(u8 *arg0, s32 length);
void func_8000BF8C(void) {
s32 i;
func_8001D258(0.67f, 0.33f, 0, -0x2000, 0);
D_8011AE68 = (s32*)new_sub_memory_pool(0x15800, 0x200);
D_8011AE68 = (s32 *)new_sub_memory_pool(0x15800, 0x200);
gParticlePtrList = (Object **)allocate_from_main_pool_safe(0x320, COLOR_TAG_BLUE);
D_8011AE6C = (s32*)allocate_from_main_pool_safe(0x50, COLOR_TAG_BLUE);
D_8011AE74 = (s32*)allocate_from_main_pool_safe(0x200, COLOR_TAG_BLUE);
D_8011AECC = (unknown8011AECC*)allocate_from_main_pool_safe(0xE10, COLOR_TAG_BLUE);
D_8011AEDC = (s32*)allocate_from_main_pool_safe(0x50, COLOR_TAG_BLUE);
gObjectStructArrayPtr = (s32*)allocate_from_main_pool_safe(0x28, COLOR_TAG_BLUE);
D_8011AEEC = (s32*)allocate_from_main_pool_safe(0x28, COLOR_TAG_BLUE);
D_8011AEE8 = (s32*)allocate_from_main_pool_safe(0x28, COLOR_TAG_BLUE);
D_8011AF04 = (s32*)allocate_from_main_pool_safe(0x200, COLOR_TAG_BLUE);
D_8011ADCC = (s32*)allocate_from_main_pool_safe(8, COLOR_TAG_BLUE);
D_8011AFF4 = (s32*)allocate_from_main_pool_safe(0x400, COLOR_TAG_BLUE);
gAssetsLvlObjTranslationTable = (s32*)load_asset_section_from_rom(ASSET_LEVEL_OBJECT_TRANSLATION_TABLE);
D_8011AE6C = (s32 *)allocate_from_main_pool_safe(0x50, COLOR_TAG_BLUE);
D_8011AE74 = (s32 *)allocate_from_main_pool_safe(0x200, COLOR_TAG_BLUE);
D_8011AECC = (unknown8011AECC *)allocate_from_main_pool_safe(0xE10, COLOR_TAG_BLUE);
D_8011AEDC = (u32 *)allocate_from_main_pool_safe(0x50, COLOR_TAG_BLUE);
gObjectStructArrayPtr = (Object *)allocate_from_main_pool_safe(0x28, COLOR_TAG_BLUE);
D_8011AEEC = (s32 *)allocate_from_main_pool_safe(0x28, COLOR_TAG_BLUE);
D_8011AEE8 = (s32 *)allocate_from_main_pool_safe(0x28, COLOR_TAG_BLUE);
D_8011AF04 = (u32 *)allocate_from_main_pool_safe(0x200, COLOR_TAG_BLUE);
D_8011ADCC = (s8 *)allocate_from_main_pool_safe(8, COLOR_TAG_BLUE);
D_8011AFF4 = (unk800179D0 *)allocate_from_main_pool_safe(0x400, COLOR_TAG_BLUE);
gAssetsLvlObjTranslationTable = (s16 *)load_asset_section_from_rom(ASSET_LEVEL_OBJECT_TRANSLATION_TABLE);
gAssetsLvlObjTranslationTableLength = (get_size_of_asset_section(ASSET_LEVEL_OBJECT_TRANSLATION_TABLE) >> 1) - 1;
while (gAssetsLvlObjTranslationTable[gAssetsLvlObjTranslationTableLength] == 0) {
gAssetsLvlObjTranslationTableLength--;
}
D_8011AD58 = (s32*)allocate_from_main_pool_safe(0x800, COLOR_TAG_BLUE);
D_8011AD58 = (s32 *)allocate_from_main_pool_safe(0x800, COLOR_TAG_BLUE);
gAssetsObjectHeadersTable = load_asset_section_from_rom(ASSET_OBJECT_HEADERS_TABLE);
gAssetsObjectHeadersTableLength = 0;
while (-1 != gAssetsObjectHeadersTable[gAssetsObjectHeadersTableLength]) {
gAssetsObjectHeadersTableLength++;
}
gAssetsObjectHeadersTableLength--;
D_8011AE48 = (s32*)allocate_from_main_pool_safe(gAssetsObjectHeadersTableLength * 4, COLOR_TAG_WHITE);
D_8011AE4C = (s32*)allocate_from_main_pool_safe(gAssetsObjectHeadersTableLength, COLOR_TAG_WHITE);
D_8011AE48 = (s32 *)allocate_from_main_pool_safe(gAssetsObjectHeadersTableLength * 4, COLOR_TAG_WHITE);
D_8011AE4C = (u8 *)allocate_from_main_pool_safe(gAssetsObjectHeadersTableLength, COLOR_TAG_WHITE);
for (i = 0; i < gAssetsObjectHeadersTableLength; i++) {
(*D_8011AE4C)[i] = 0;
@@ -402,7 +353,7 @@ void func_8000BF8C(void) {
}
decrypt_magic_codes(&gAssetsMiscSection[gAssetsMiscTable[65]], (gAssetsMiscTable[66] - gAssetsMiscTable[65]) * 4);
gObjPtrList = (Object**)allocate_from_main_pool_safe(0x800, COLOR_TAG_BLUE);
gObjPtrList = (Object **)allocate_from_main_pool_safe(0x800, COLOR_TAG_BLUE);
D_8011ADC4 = 0;
gTimeTrialEnabled = 0;
D_8011AEF5 = 0;
@@ -665,7 +616,7 @@ u8 is_time_trial_enabled() {
return gTimeTrialEnabled;
}
u8 func_8000E4D8(void){
u8 func_8000E4D8(void) {
return D_8011AEF5;
}
@@ -699,7 +650,7 @@ s32 func_8000E9C0(void) {
return D_8011AE64;
}
void func_8000E9D0(Object *arg0){
void func_8000E9D0(Object *arg0) {
arg0->unk6 |= 0x8000;
func_800245B4(arg0->unk2C | 0xC000);
gObjPtrList[objCount++] = arg0;
@@ -716,30 +667,12 @@ GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000FAC4.s")
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000FBCC.s")
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8000FC6C.s")
/* Unknown Size */
typedef struct unk8000FD20_2 {
u8 unk00[0x13];
u8 unk13;
} unk8000FD20_2;
/* Unknown Size */
typedef struct unk8000FD20 {
u8 unk00[0x4C];
unk8000FD20_2 *unk4C;
} unk8000FD20;
s32 func_8000FD20(unk8000FD20 *arg0, unk8000FD20_2 *arg1) {
arg0->unk4C = arg1;
arg1->unk13 = 0xFF;
return 0x28;
}
/* Unknown Size. This might just be unk8000FD20. */
typedef struct unk8000FD34 {
u8 unk00[0x5C];
s32 unk5C;
} unk8000FD34;
s32 func_8000FD34(unk8000FD34 *arg0, s32 arg1) {
arg0->unk5C = arg1;
func_80016BC4();
@@ -755,11 +688,11 @@ void gParticlePtrList_addObject(Object *object) {
gParticleCount++;
}
s32 func_80010018(void){
s32 func_80010018(void) {
return gAssetsLvlObjTranslationTableLength;
}
s32 func_80010028(s32 arg0){
s32 func_80010028(s32 arg0) {
return (gAssetsLvlObjTranslationTable[arg0] < gAssetsObjectHeadersTableLength);
}
@@ -768,7 +701,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_00BC20/gParticlePtrList_flush.s")
#else
//bad regalloc; swap s2 = s3
/*removes objects in particleList from gObjPtrList and frees*/
void gParticlePtrList_flush(void){
void gParticlePtrList_flush(void) {
s32 j, i, search_indx, tmp;
Object *searchObj;
@@ -828,7 +761,7 @@ void func_80011560(void) {
}
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011570.s")
void func_80011960(Object*, s32, u32, Object_64*, u32, u32, u32, u32, f32);
#if 1
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011960.s")
#else
@@ -844,7 +777,7 @@ void func_80011960(Object *arg0, s32 arg2, u32 arg3, Object_64 *arg4
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80011AD0.s")
#else
extern f32 D_800E5550;
void func_80011AD0(Object *this){
void func_80011AD0(Object *this) {
f32 tmp_f0;
u32 offset;
switch(this->unk48){
@@ -897,7 +830,7 @@ void func_80012C30(void) {
D_8011ADA4 = 0;
}
void func_80012C3C(Gfx** dlist){
void func_80012C3C(Gfx** dlist) {
s32 i;
Gfx *tmp;
for(i = 0; i<D_8011ADA4; i++){
@@ -920,9 +853,7 @@ void func_80012CE8(Gfx **dlist) {
}
}
void render_object(Object *);
func_80012D5C(u32 *arg0, u32 *arg1, u32 *arg2, Object *object){
void func_80012D5C(u32 *arg0, u32 *arg1, u32 *arg2, Object *object) {
f32 scale;
u32 tmp2;
u32 tmp3;
@@ -941,11 +872,10 @@ func_80012D5C(u32 *arg0, u32 *arg1, u32 *arg2, Object *object){
func_800B76B8(2, -1);
}
extern f32 func_800707F8(s16);
#if 1
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80012E28.s")
#else
void func_80012E28(Object *this){
void func_80012E28(Object *this) {
s32 unused1;
Object_64 *sp_20;
f32 tmp_f2;
@@ -979,7 +909,6 @@ void func_80012E28(Object *this){
}
#endif
void func_80012F30(Object *arg0) {
if (arg0->unk48 == 1) {
Object_64 *object_64 = arg0->unk64;
@@ -992,10 +921,7 @@ void func_80012F30(Object *arg0) {
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80012F94.s")
void func_80013548(Object *arg0);
void render_object(Object *this){
void render_object(Object *this) {
func_80012F94(this);
if(this->unk6 & 0x8000){
func_800B3740(this, &D_8011AE8C, &D_8011AE90, &D_8011AE94, 32768);
@@ -1025,7 +951,7 @@ GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80013A0C.s")
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80013DCC.s")
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80014090.s")
void func_800142B8(void){
void func_800142B8(void) {
s32 i = D_8011AE60;
s32 j;
Object *currObj;
@@ -1087,7 +1013,7 @@ s16 func_80017E88(void) {
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_80017E98.s")
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_800185E4.s")
Object * func_80018C6C(void){
Object *func_80018C6C(void) {
s32 i;
Object *current_obj;
for(i=D_8011AE60; i < objCount; i++){
@@ -1133,7 +1059,6 @@ s32 func_8001B288(void) {
}
}
s32 func_8001B2E0() {
return D_8011AD34;
}
@@ -1157,8 +1082,8 @@ s32 func_8001B650(void) {
GLOBAL_ASM("asm/non_matchings/unknown_00BC20/func_8001B668.s")
void func_8001B738(s32 arg0) {
func_80059B7C(arg0, func_800599A8(), D_800DC728, D_800DC72C, D_800DC724);
s32 func_8001B738(s32 arg0) {
return func_80059B7C(arg0, func_800599A8(), D_800DC728, D_800DC72C, D_800DC724);
}
u8 func_8001B780() {
@@ -1340,7 +1265,7 @@ void func_8001E344(s32 arg0) {
}
}
void func_8001E36C(s32 arg0, f32 *arg1, f32 *arg2, f32 *arg3){
void func_8001E36C(s32 arg0, f32 *arg1, f32 *arg2, f32 *arg3) {
s32 i;
Object *current_obj;
*arg1 = -32000.0f;
+168 -2
View File
@@ -2,17 +2,71 @@
#define _UNKNOWN_00BC20_H_
#include "types.h"
#include "structs.h"
#include "f3ddkr.h"
/* Size: 0x8 bytes */
typedef struct unknown800DC6F0 {
union {
s8 unk00;
s32 dummy_force_alignment; // Not sure of a better way to do this.
};
} unk00_a;
u16 unk04;
u16 unk06;
} unknown800DC6F0;
/* Size: 0x3C bytes */
typedef struct unknown8011AECC {
u8 unk00[0x3A];
s8 unk3A;
s8 unk3B;
} unknown8011AECC;
/* Size: 0x40 bytes */
typedef struct unk800179D0 {
s32 unk0;
u32 *unk04;
u32 *unk08;
f32 unk0C[12];
u32 unk3C;
} unk800179D0;
/* Unknown Size */
typedef struct unk800179D0_2 {
s32 unk04;
} unk800179D0_2;
typedef struct unk8001D6E4_arg1_40 {
u8 pad0[0x71];
/* 0x71 */ u8 unk71;
} unk8001D6E4_arg1_40;
typedef struct unk8001D6E4_arg1 {
/* 0x00 */ s16 unk0;
/* 0x02 */ s16 unk2;
/* 0x04 */ s16 unk4;
u8 pad6[0x3A];
/* 0x40 */ unk8001D6E4_arg1_40 *unk40;
} unk8001D6E4_arg1;
/* Unknown Size */
typedef struct unk8000FD20_2 {
u8 unk00[0x13];
u8 unk13;
} unk8000FD20_2;
/* Unknown Size */
typedef struct unk8000FD20 {
u8 unk00[0x4C];
unk8000FD20_2 *unk4C;
} unk8000FD20;
/* Unknown Size. This might just be unk8000FD20. */
typedef struct unk8000FD34 {
u8 unk00[0x5C];
s32 unk5C;
} unk8000FD34;
extern unknown800DC6F0 D_800DC6F0;
extern unknown800DC6F0 D_800DC6F8;
@@ -62,4 +116,116 @@ extern s32 D_800DC85C;
extern u8 D_800DC860;
extern u16 D_800DC864;
#endif
void free_tt_ghost_data(void); //unknown_043920.c
f32 func_800707F8(s16); //?
u32 *func_8000BF44(s32 arg0);
void func_8000BF8C(void);
void func_8000C460(void);
void func_8000C604(void);
s32 func_8000C8B4(s32 arg0);
void func_8000CBC0(void);
s32 func_8000CC20(u32 *arg0);
u32 func_8000E0B0(void);
void func_8000E128(void);
s8 func_8000E138();
s8 func_8000E148();
s8 func_8000E158(void);
s8 func_8000E184();
void func_8000E194(void);
void func_8000E1B8(void);
s8 func_8000E1CC(void);
s8 func_8000E1DC();
void func_8000E1EC(Object *object, s32 arg1);
void set_time_trial_enabled(s32 arg0);
u8 is_time_trial_enabled();
u8 func_8000E4D8(void);
Object *get_object(s32 index);
Object **func_8000E988(s32 *arg0, s32 *cnt);
s32 getObjectCount(void);
s32 func_8000E9C0(void);
void func_8000E9D0(Object *arg0);
void gParticlePtrList_addObject(Object *object);
s32 func_80010018(void);
s32 func_80010028(s32 arg0);
void func_80011390(void);
s32 func_8001139C();
s32 func_800113AC();
s32 func_800113BC();
void func_80011560(void);
void func_80012C30(void);
void func_80012C3C(Gfx** dlist);
void func_80012C98(Gfx **dlist);
void func_80012CE8(Gfx **dlist);
void func_80012D5C(u32 *arg0, u32 *arg1, u32 *arg2, Object *object);
void func_80012F30(Object *arg0);
void render_object(Object *this);
void func_80013548(Object *arg0);
void func_800142B8(void);
u32 func_800179D0(void);
void func_80017E74(s32 arg0);
s16 func_80017E88(void);
Object *func_80018C6C(void);
void func_8001A8D4(s32 arg0);
s16 func_8001AE44();
s32 func_8001AE54();
s32 func_8001B288(void);
s32 func_8001B2E0();
s32 func_8001B3AC(s32 arg0);
s32 func_8001B640();
s32 func_8001B650(void);
s32 func_8001B738(s32 arg0);
u8 func_8001B780();
void func_8001B790(void);
unknown8011AECC *func_8001BA00(s32 arg0);
unknown8011AECC *func_8001BA1C(s32 arg0, s32 arg1);
s32 func_8001BA64();
Object **get_object_struct_array(s32 *cnt);
s32 *func_8001BA90(s32 *arg0);
s32 *func_8001BAAC(s32 *arg0);
Object *get_object_struct(s32 indx);
void func_8001BC40(s32 arg0, s32 arg1, s32 arg2, s32 arg3);
u32 func_8001BD94(s32 arg0);
void func_8001D1AC(void);
void func_8001D1BC(s32 arg0);
u32 func_8001D1E4(s32 *arg0);
u32 func_8001D214(s32 arg0);
void func_8001D23C(s32 arg0, s32 arg1, s32 arg2);
void calc_dyn_light_and_env_map_for_object(ObjectModel *model, Object *object, s32 arg2, f32 arg3);
s32 *get_misc_asset(s32 index);
s32 func_8001E2EC(s32 arg0);
void func_8001E344(s32 arg0);
void func_8001E36C(s32 arg0, f32 *arg1, f32 *arg2, f32 *arg3);
s16 func_8001E440();
void func_8001E450(s32 arg0);
void func_8001E45C(s32 arg0);
s32 func_8001E4B4(void);
s8 func_8001F3B8(void);
void func_8001F3C8(s32 arg0);
void func_8001F450(void);
s32 func_800210CC(s8 arg0);
s8 func_800214C4(void);
f32 lerp(f32 *arg0, u32 arg1, f32 arg2);
void func_800228DC(s32 arg0, s32 arg1, s32 arg2);
void func_800228EC(s32 arg0);
s8 func_8002341C(void);
s32 func_80023568(void);
s8 func_800235C0(void);
void func_800238BC(Object *arg0);
void run_object_loop_func(Object *obj, s32 arg1);
void func_8002458C(s32 arg0);
s16 *func_80024594(s32 *arg0, s32 *arg1);
void func_800245B4(s16 arg0);
//Non Matching
void calc_dynamic_lighting_for_object_1(unk8001D6E4_arg1 *, ObjectModel *, s16, unk8001D6E4_arg1 *, f32, f32);
void calc_dynamic_lighting_for_object_2(unk8001D6E4_arg1 *, ObjectModel *, s16, f32);
void gParticlePtrList_flush(void);
void func_8001D258(f32, f32, s32, s32, s32);
void decrypt_magic_codes(u8 *arg0, s32 length);
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);
#endif

Some files were not shown because too many files have changed in this diff Show More