Merge pull request #137 from DavidSM64/doc

Documented and renamed unknown_0C7F50 as thread30
This commit is contained in:
David Benepe
2021-07-13 12:42:42 -05:00
committed by GitHub
22 changed files with 155 additions and 128 deletions
+1 -1
View File
@@ -342,7 +342,7 @@ glabel func_800890AC
/* 08A180 80089580 24040001 */ li $a0, 1
/* 08A184 80089584 24040015 */ li $a0, 21
/* 08A188 80089588 2405FFFF */ li $a1, -1
/* 08A18C 8008958C 0C01B8BA */ jal func_8006E2E8
/* 08A18C 8008958C 0C01B8BA */ jal load_level_for_menu
/* 08A190 80089590 00003025 */ move $a2, $zero
.L80089594:
/* 08A194 80089594 8FBF0014 */ lw $ra, 0x14($sp)
+3 -3
View File
@@ -8,7 +8,7 @@ glabel D_800E84E8
glabel func_800904E8
/* 0910E8 800904E8 27BDFFB8 */ addiu $sp, $sp, -0x48
/* 0910EC 800904EC AFBF001C */ sw $ra, 0x1c($sp)
/* 0910F0 800904F0 0C031CFC */ jal func_800C73F0
/* 0910F0 800904F0 0C031CFC */ jal tick_thread30
/* 0910F4 800904F4 AFA40048 */ sw $a0, 0x48($sp)
/* 0910F8 800904F8 8FA50048 */ lw $a1, 0x48($sp)
/* 0910FC 800904FC 00001025 */ move $v0, $zero
@@ -154,7 +154,7 @@ glabel func_800904E8
/* 091318 80090718 250869E4 */ addiu $t0, %lo(D_801269E4) # addiu $t0, $t0, 0x69e4
/* 09131C 8009071C 15C10034 */ bne $t6, $at, .L800907F0
/* 091320 80090720 246369DC */ addiu $v1, %lo(D_801269DC) # addiu $v1, $v1, 0x69dc
/* 091324 80090724 0C031CF8 */ jal func_800C73E0
/* 091324 80090724 0C031CF8 */ jal get_thread30_level_id_to_load
/* 091328 80090728 00000000 */ nop
/* 09132C 8009072C 3C038012 */ lui $v1, %hi(D_801269DC) # $v1, 0x8012
/* 091330 80090730 3C088012 */ lui $t0, %hi(D_801269E4) # $t0, 0x8012
@@ -180,7 +180,7 @@ glabel func_800904E8
/* 09137C 8009077C 2401FFFF */ li $at, -1
/* 091380 80090780 1081001B */ beq $a0, $at, .L800907F0
/* 091384 80090784 00000000 */ nop
/* 091388 80090788 0C031D16 */ jal func_800C7458
/* 091388 80090788 0C031D16 */ jal set_level_to_load_in_background
/* 09138C 8009078C 24050001 */ li $a1, 1
/* 091390 80090790 3C038012 */ lui $v1, %hi(D_801269DC) # $v1, 0x8012
/* 091394 80090794 3C088012 */ lui $t0, %hi(D_801269E4) # $t0, 0x8012
+1 -1
View File
@@ -150,7 +150,7 @@ glabel func_80090918
/* 09174C 80090B4C 00002025 */ move $a0, $zero
/* 091750 80090B50 0C019A06 */ jal func_80066818
/* 091754 80090B54 00002825 */ move $a1, $zero
/* 091758 80090B58 0C031CF8 */ jal func_800C73E0
/* 091758 80090B58 0C031CF8 */ jal get_thread30_level_id_to_load
/* 09175C 80090B5C 00000000 */ nop
/* 091760 80090B60 14400051 */ bnez $v0, .L80090CA8
/* 091764 80090B64 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e
+1 -1
View File
@@ -43,7 +43,7 @@ glabel menu_23_loop
/* 09B998 8009AD98 00000000 */ nop
/* 09B99C 8009AD9C 81050001 */ lb $a1, 1($t0)
/* 09B9A0 8009ADA0 81060002 */ lb $a2, 2($t0)
/* 09B9A4 8009ADA4 0C01B8BA */ jal func_8006E2E8
/* 09B9A4 8009ADA4 0C01B8BA */ jal load_level_for_menu
/* 09B9A8 8009ADA8 00000000 */ nop
/* 09B9AC 8009ADAC 1000000D */ b .L8009ADE4
/* 09B9B0 8009ADB0 00000000 */ nop
+1 -1
View File
@@ -118,7 +118,7 @@ glabel menu_5_init
/* 093A44 80092E44 24040002 */ li $a0, 2
/* 093A48 80092E48 02002025 */ move $a0, $s0
/* 093A4C 80092E4C 2405FFFF */ li $a1, -1
/* 093A50 80092E50 0C01B8BA */ jal func_8006E2E8
/* 093A50 80092E50 0C01B8BA */ jal load_level_for_menu
/* 093A54 80092E54 24060001 */ li $a2, 1
.L80092E58:
/* 093A58 80092E58 0C031525 */ jal func_800C5494
@@ -132,7 +132,7 @@ glabel menu_character_select_loop
/* 08CB10 8008BF10 00000000 */ nop
/* 08CB14 8008BF14 24040027 */ li $a0, 39
/* 08CB18 8008BF18 2405FFFF */ li $a1, -1
/* 08CB1C 8008BF1C 0C01B8BA */ jal func_8006E2E8
/* 08CB1C 8008BF1C 0C01B8BA */ jal load_level_for_menu
/* 08CB20 8008BF20 00003025 */ move $a2, $zero
/* 08CB24 8008BF24 3C18800E */ lui $t8, %hi(gNumberOfActivePlayers) # $t8, 0x800e
/* 08CB28 8008BF28 8F18F4BC */ lw $t8, %lo(gNumberOfActivePlayers)($t8)
+5 -5
View File
@@ -24,7 +24,7 @@ glabel menu_credits_loop
/* 09BF70 8009B370 AFA2005C */ sw $v0, 0x5c($sp)
/* 09BF74 8009B374 0C0078A7 */ jal get_misc_asset
/* 09BF78 8009B378 24040045 */ li $a0, 69
/* 09BF7C 8009B37C 0C031CFC */ jal func_800C73F0
/* 09BF7C 8009B37C 0C031CFC */ jal tick_thread30
/* 09BF80 8009B380 AFA20060 */ sw $v0, 0x60($sp)
/* 09BF84 8009B384 3C0E800E */ lui $t6, %hi(gMenuDelay) # $t6, 0x800e
/* 09BF88 8009B388 8DCEF47C */ lw $t6, %lo(gMenuDelay)($t6)
@@ -529,7 +529,7 @@ glabel L8009BA98
/* 09C6AC 8009BAAC 016D1021 */ addu $v0, $t3, $t5
/* 09C6B0 8009BAB0 80440000 */ lb $a0, ($v0)
/* 09C6B4 8009BAB4 80450002 */ lb $a1, 2($v0)
/* 09C6B8 8009BAB8 0C031D16 */ jal func_800C7458
/* 09C6B8 8009BAB8 0C031D16 */ jal set_level_to_load_in_background
/* 09C6BC 8009BABC 00000000 */ nop
/* 09C6C0 8009BAC0 240E0001 */ li $t6, 1
/* 09C6C4 8009BAC4 AE0E0000 */ sw $t6, ($s0)
@@ -538,7 +538,7 @@ glabel L8009BA98
/* 09C6D0 8009BAD0 1000004C */ b .L8009BC04
/* 09C6D4 8009BAD4 AC2F63D8 */ sw $t7, %lo(D_801263D8)($at)
glabel L8009BAD8
/* 09C6D8 8009BAD8 0C031CF8 */ jal func_800C73E0
/* 09C6D8 8009BAD8 0C031CF8 */ jal get_thread30_level_id_to_load
/* 09C6DC 8009BADC 00000000 */ nop
/* 09C6E0 8009BAE0 14400048 */ bnez $v0, .L8009BC04
/* 09C6E4 8009BAE4 3C038012 */ lui $v1, %hi(D_801263BC) # $v1, 0x8012
@@ -648,7 +648,7 @@ glabel L8009BB9C
/* 09C85C 8009BC5C 18400015 */ blez $v0, .L8009BCB4
/* 09C860 8009BC60 004FC021 */ addu $t8, $v0, $t7
/* 09C864 8009BC64 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e
/* 09C868 8009BC68 0C031CF8 */ jal func_800C73E0
/* 09C868 8009BC68 0C031CF8 */ jal get_thread30_level_id_to_load
/* 09C86C 8009BC6C AC38F47C */ sw $t8, %lo(gMenuDelay)($at)
/* 09C870 8009BC70 14400010 */ bnez $v0, .L8009BCB4
/* 09C874 8009BC74 3C19800E */ lui $t9, %hi(gMenuDelay) # $t9, 0x800e
@@ -663,7 +663,7 @@ glabel L8009BB9C
/* 09C898 8009BC98 00000000 */ nop
/* 09C89C 8009BC9C 24040015 */ li $a0, 21
/* 09C8A0 8009BCA0 2405FFFF */ li $a1, -1
/* 09C8A4 8009BCA4 0C01B8BA */ jal func_8006E2E8
/* 09C8A4 8009BCA4 0C01B8BA */ jal load_level_for_menu
/* 09C8A8 8009BCA8 00003025 */ move $a2, $zero
/* 09C8AC 8009BCAC 0C0204F4 */ jal menu_init
/* 09C8B0 8009BCB0 24040001 */ li $a0, 1
@@ -62,7 +62,7 @@ glabel menu_game_select_loop
/* 08D49C 8008C89C AC2CF4B8 */ sw $t4, %lo(gIsInTracksMode)($at)
/* 08D4A0 8008C8A0 2404FFFF */ li $a0, -1
/* 08D4A4 8008C8A4 2405FFFF */ li $a1, -1
/* 08D4A8 8008C8A8 0C01B8BA */ jal func_8006E2E8
/* 08D4A8 8008C8A8 0C01B8BA */ jal load_level_for_menu
/* 08D4AC 8008C8AC 00003025 */ move $a2, $zero
/* 08D4B0 8008C8B0 0C0204F4 */ jal menu_init
/* 08D4B4 8008C8B4 2404000F */ li $a0, 15
@@ -100,7 +100,7 @@ glabel menu_game_select_loop
/* 08D528 8008C928 38CD0003 */ xori $t5, $a2, 3
/* 08D52C 8008C92C 01A03025 */ move $a2, $t5
.L8008C930:
/* 08D530 8008C930 0C01B8BA */ jal func_8006E2E8
/* 08D530 8008C930 0C01B8BA */ jal load_level_for_menu
/* 08D534 8008C934 2405FFFF */ li $a1, -1
/* 08D538 8008C938 00002025 */ move $a0, $zero
/* 08D53C 8008C93C 0C022BAD */ jal func_8008AEB4
+1 -1
View File
@@ -270,7 +270,7 @@ glabel menu_results_loop
/* 098284 80097684 2404FFFF */ li $a0, -1
/* 098288 80097688 144E0007 */ bne $v0, $t6, .L800976A8
/* 09828C 8009768C 2405FFFF */ li $a1, -1
/* 098290 80097690 0C01B8BA */ jal func_8006E2E8
/* 098290 80097690 0C01B8BA */ jal load_level_for_menu
/* 098294 80097694 00003025 */ move $a2, $zero
/* 098298 80097698 0C0204F4 */ jal menu_init
/* 09829C 8009769C 2404000F */ li $a0, 15
@@ -129,7 +129,7 @@ glabel menu_title_screen_init
.L8008372C:
/* 08432C 8008372C 80640000 */ lb $a0, ($v1)
/* 084330 80083730 80660002 */ lb $a2, 2($v1)
/* 084334 80083734 0C01B8BA */ jal func_8006E2E8
/* 084334 80083734 0C01B8BA */ jal load_level_for_menu
/* 084338 80083738 00000000 */ nop
/* 08433C 8008373C 44803000 */ mtc1 $zero, $f6
/* 084340 80083740 3C018012 */ lui $at, %hi(D_801268D8) # $at, 0x8012
@@ -160,7 +160,7 @@ glabel menu_title_screen_loop
.L80083C14:
/* 084814 80083C14 80640000 */ lb $a0, ($v1)
/* 084818 80083C18 80660002 */ lb $a2, 2($v1)
/* 08481C 80083C1C 0C01B8BA */ jal func_8006E2E8
/* 08481C 80083C1C 0C01B8BA */ jal load_level_for_menu
/* 084820 80083C20 00000000 */ nop
/* 084824 80083C24 3C088012 */ lui $t0, %hi(D_80126864) # $t0, 0x8012
/* 084828 80083C28 25086864 */ addiu $t0, %lo(D_80126864) # addiu $t0, $t0, 0x6864
@@ -474,7 +474,7 @@ glabel menu_title_screen_loop
/* 084CB4 800840B4 38C90003 */ xori $t1, $a2, 3
/* 084CB8 800840B8 01203025 */ move $a2, $t1
.L800840BC:
/* 084CBC 800840BC 0C01B8BA */ jal func_8006E2E8
/* 084CBC 800840BC 0C01B8BA */ jal load_level_for_menu
/* 084CC0 800840C0 2405FFFF */ li $a1, -1
/* 084CC4 800840C4 00002025 */ move $a0, $zero
/* 084CC8 800840C8 0C022BAD */ jal func_8008AEB4
@@ -486,7 +486,7 @@ glabel menu_title_screen_loop
.L800840E0:
/* 084CE0 800840E0 AC20F460 */ sw $zero, %lo(D_800DF460)($at)
/* 084CE4 800840E4 2405FFFF */ li $a1, -1
/* 084CE8 800840E8 0C01B8BA */ jal func_8006E2E8
/* 084CE8 800840E8 0C01B8BA */ jal load_level_for_menu
/* 084CEC 800840EC 00003025 */ move $a2, $zero
/* 084CF0 800840F0 0C0204F4 */ jal menu_init
/* 084CF4 800840F4 2404000C */ li $a0, 12
@@ -505,7 +505,7 @@ glabel menu_track_select_init
/* 08FB30 8008EF30 244263D0 */ addiu $v0, %lo(D_801263D0) # addiu $v0, $v0, 0x63d0
/* 08FB34 8008EF34 2405FFFF */ li $a1, -1
/* 08FB38 8008EF38 24060001 */ li $a2, 1
/* 08FB3C 8008EF3C 0C01B8BA */ jal func_8006E2E8
/* 08FB3C 8008EF3C 0C01B8BA */ jal load_level_for_menu
/* 08FB40 8008EF40 AC440000 */ sw $a0, ($v0)
/* 08FB44 8008EF44 240A0001 */ li $t2, 1
/* 08FB48 8008EF48 AE0A0000 */ sw $t2, ($s0)
@@ -10,7 +10,7 @@ glabel menu_track_select_loop
/* 08FE54 8008F254 AFA20018 */ sw $v0, 0x18($sp)
/* 08FE58 8008F258 01CFC021 */ addu $t8, $t6, $t7
/* 08FE5C 8008F25C 3319003F */ andi $t9, $t8, 0x3f
/* 08FE60 8008F260 0C031CF8 */ jal func_800C73E0
/* 08FE60 8008F260 0C031CF8 */ jal get_thread30_level_id_to_load
/* 08FE64 8008F264 AC790000 */ sw $t9, ($v1)
/* 08FE68 8008F268 14400011 */ bnez $v0, .L8008F2B0
/* 08FE6C 8008F26C 3C03800E */ lui $v1, %hi(gMenuDelay) # $v1, 0x800e
@@ -134,7 +134,7 @@ glabel menu_track_select_loop
/* 09001C 8008F41C 38CB0003 */ xori $t3, $a2, 3
/* 090020 8008F420 01603025 */ move $a2, $t3
.L8008F424:
/* 090024 8008F424 0C01B8BA */ jal func_8006E2E8
/* 090024 8008F424 0C01B8BA */ jal load_level_for_menu
/* 090028 8008F428 2405FFFF */ li $a1, -1
/* 09002C 8008F42C 00002025 */ move $a0, $zero
/* 090030 8008F430 0C022BAD */ jal func_8008AEB4
@@ -147,7 +147,7 @@ glabel menu_track_select_loop
/* 090048 8008F448 24040027 */ li $a0, 39
.L8008F44C:
/* 09004C 8008F44C 2405FFFF */ li $a1, -1
/* 090050 8008F450 0C01B8BA */ jal func_8006E2E8
/* 090050 8008F450 0C01B8BA */ jal load_level_for_menu
/* 090054 8008F454 00003025 */ move $a2, $zero
/* 090058 8008F458 0C0204F4 */ jal menu_init
/* 09005C 8008F45C 24040013 */ li $a0, 19
@@ -68,7 +68,7 @@ glabel menu_trophy_race_round_init
/* 098F5C 8009835C 00402025 */ move $a0, $v0
/* 098F60 80098360 02002025 */ move $a0, $s0
/* 098F64 80098364 2405FFFF */ li $a1, -1
/* 098F68 80098368 0C01B8BA */ jal func_8006E2E8
/* 098F68 80098368 0C01B8BA */ jal load_level_for_menu
/* 098F6C 8009836C 24060001 */ li $a2, 1
/* 098F70 80098370 3C01800E */ lui $at, %hi(gMenuDelay) # $at, 0x800e
/* 098F74 80098374 AC20F47C */ sw $zero, %lo(gMenuDelay)($at)
@@ -93,7 +93,7 @@ glabel func_8006C3E0
/* 06D138 8006C538 00000000 */ nop
/* 06D13C 8006C53C 0C020486 */ jal func_80081218
/* 06D140 8006C540 00000000 */ nop
/* 06D144 8006C544 0C031CD4 */ jal func_800C7350
/* 06D144 8006C544 0C031CD4 */ jal create_and_start_thread30
/* 06D148 8006C548 00000000 */ nop
/* 06D14C 8006C54C 3C048012 */ lui $a0, %hi(D_80123548) # $a0, 0x8012
/* 06D150 8006C550 3C058012 */ lui $a1, %hi(D_80123544) # $a1, 0x8012
@@ -23,7 +23,7 @@ glabel thread3_main
/* 06CF80 8006C380 00000000 */ nop
/* 06CF84 8006C384 0C000A9D */ jal audioStopThread
/* 06CF88 8006C388 00000000 */ nop
/* 06CF8C 8006C38C 0C031CEF */ jal func_800C73BC
/* 06CF8C 8006C38C 0C031CEF */ jal stop_thread30
/* 06CF90 8006C390 00000000 */ nop
/* 06CF94 8006C394 3C0400AA */ lui $a0, (0x00AAAA82 >> 16) # lui $a0, 0xaa
/* 06CF98 8006C398 0C033490 */ jal __osSpSetStatus
@@ -2,11 +2,11 @@ glabel osInitialize
/* 0CD1A0 800CC5A0 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0CD1A4 800CC5A4 AFBF001C */ sw $ra, 0x1c($sp)
/* 0CD1A8 800CC5A8 240E0001 */ li $t6, 1
/* 0CD1AC 800CC5AC 3C018013 */ lui $at, %hi(D_8012CCC0) # $at, 0x8013
/* 0CD1AC 800CC5AC 3C018013 */ lui $at, %hi(gThread30Stack) # $at, 0x8013
/* 0CD1B0 800CC5B0 AFB00018 */ sw $s0, 0x18($sp)
/* 0CD1B4 800CC5B4 AFA00038 */ sw $zero, 0x38($sp)
/* 0CD1B8 800CC5B8 0C03515C */ jal __osGetSR
/* 0CD1BC 800CC5BC AC2ECCC0 */ sw $t6, %lo(D_8012CCC0)($at)
/* 0CD1BC 800CC5BC AC2ECCC0 */ sw $t6, %lo(gThread30Stack)($at)
/* 0CD1C0 800CC5C0 00408025 */ move $s0, $v0
/* 0CD1C4 800CC5C4 3C012000 */ lui $at, 0x2000
/* 0CD1C8 800CC5C8 0C035158 */ jal __osSetSR
+1 -1
View File
@@ -15,7 +15,7 @@ OSDevMgr __osViDevMgr = {0};
#define OS_VIM_STACKSIZE 4096
u8 viThreadStack[2960]; // viThreadStack[OS_VIM_STACKSIZE];
s32 D_8012CCC0;
s32 gThread30Stack;
extern OSThread viThread;
extern OSMesgQueue viEventQueue;
+8 -8
View File
@@ -2947,7 +2947,7 @@ s32 menu_character_select_loop(s32 arg0) {
gIsInTracksMode = 1;
if (phi_t3 >= gNumberOfActivePlayers) {
func_80000B18();
func_8006E2E8(0x27, -1, 0);
load_level_for_menu(0x27, -1, 0);
if (gNumberOfActivePlayers == 1 && !gPlayerHasSeenCautionMenu) {
menu_init(MENU_CAUTION);
} else {
@@ -3314,7 +3314,7 @@ void func_80090ED8(s32 arg0);
void func_80090F30(s32 arg0);
void func_80092188(s32 arg0);
void func_8008E4EC(void);
s32 func_800C73E0(void);
s32 get_thread30_level_id_to_load(void);
void set_relative_volume_for_music(u8 arg0);
s32 menu_track_select_loop(s32 arg0) {
@@ -3324,7 +3324,7 @@ s32 menu_track_select_loop(s32 arg0) {
settings = get_settings();
D_801263BC = (D_801263BC + arg0) & 0x3F;
if (func_800C73E0() == 0 && gMenuDelay != 0) {
if (get_thread30_level_id_to_load() == 0 && gMenuDelay != 0) {
if (gMenuDelay < 0) {
gMenuDelay -= arg0;
} else {
@@ -3368,12 +3368,12 @@ s32 menu_track_select_loop(s32 arg0) {
if (is_tt_unlocked()) {
phi_a2 ^= 3;
}
func_8006E2E8(0x16, -1, phi_a2);
load_level_for_menu(0x16, -1, phi_a2);
func_8008AEB4(0, NULL);
menu_init(MENU_CHARACTER_SELECT);
return 0;
}
func_8006E2E8(0x27, -1, 0);
load_level_for_menu(0x27, -1, 0);
menu_init(MENU_GAME_SELECT);
return 0;
}
@@ -3525,7 +3525,7 @@ block_7:
gMenuDelay = 0;
D_800E0980 = 0x1E;
func_800C4170(2);
func_8006E2E8(temp_s0, -1, 1);
load_level_for_menu(temp_s0, -1, 1);
}
} else {
goto block_7;
@@ -3836,7 +3836,7 @@ void menu_trophy_race_round_init(void) {
}
func_8006DB14(func_8006B0AC(temp));
func_8006E2E8(temp, -1, 1);
load_level_for_menu(temp, -1, 1);
gMenuDelay = 0;
D_800E0980 = 10;
@@ -3969,7 +3969,7 @@ void menu_23_init(void) {
func_8009C674(D_800E1768);
func_80094604();
}
func_8006E2E8(D_801267EC[0], D_801267EC[1], D_801267EC[2]);
load_level_for_menu(D_801267EC[0], D_801267EC[1], D_801267EC[2]);
gMenuDelay = 0;
D_801263E0 = 0;
}
+110
View File
@@ -0,0 +1,110 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800C7350 */
#include "types.h"
#include "macros.h"
#include "libultra_internal.h"
/************ .data ************/
s32 gThread30NeedToLoadLevel = FALSE;
s32 gThread30LevelIdToLoad = -1;
s32 gThread30CutsceneIdToLoad = -1;
s32 gThread30LoadDelay = 0;
/*******************************/
/************ .bss ************/
// Used for __osException, but .bss file order is weird. Need to fix later.
s32 D_8012AAE0[4];
OSThread gThread30;
OSMesgQueue gThread30MesgQueue;
OSMesg gThread30Messages[2];
s32 D_8012ACC0[1305]; // Unused? Might be another stack.
// Currently defined in osViMgr.c
// There are a few stacks defined next to each other. Maybe they are in their own separate file?
extern void *gThread30Stack;
/*****************************/
void thread30(void *arg);
/**
* Initalizes and starts thread30()
*/
void create_and_start_thread30(void) {
osCreateMesgQueue(&gThread30MesgQueue, &gThread30Messages, 2);
osCreateThread(&gThread30, 30, &thread30, NULL, &gThread30Stack, 8);
osStartThread(&gThread30);
}
/**
* Stop thread30()
*/
void stop_thread30(void) {
osStopThread(&gThread30);
}
/**
* Returns the value in gThread30NeedToLoadLevel.
*/
s32 get_thread30_level_id_to_load(void) {
return gThread30NeedToLoadLevel;
}
/**
* If gThread30NeedToLoadLevel is set, then decrement gThread30LoadDelay. If gThread30LoadDelay is 0,
* then signal thread30 to load a level.
* Unused.
*/
void tick_thread30(void) {
if (gThread30NeedToLoadLevel && gThread30LoadDelay > 0) {
gThread30LoadDelay--;
if (gThread30LoadDelay == 0) {
// Signal thread30 that the level needs to load.
osSendMesg(&gThread30MesgQueue, OS_MESG_TYPE_LOOPBACK, 0);
}
}
}
/**
* Returns the value in gThread30LoadDelay.
* Unused.
*/
s32 get_thread30_load_delay(void) {
return gThread30LoadDelay;
}
/**
* Sets a level id and cutscene id to be loaded. Used in the tracks menu & credits menu.
* Returns 1 if successful, or 0 if gThread30NeedToLoadLevel was already set.
*/
s32 set_level_to_load_in_background(s32 levelId, s32 cutsceneId) {
if (!gThread30NeedToLoadLevel) {
gThread30LoadDelay = 4;
gThread30LevelIdToLoad = levelId;
gThread30CutsceneIdToLoad = cutsceneId;
gThread30NeedToLoadLevel = TRUE;
return TRUE;
}
return FALSE;
}
/**
* Waits for a signal from the main thread to load a level asynchronously.
*/
void thread30(void *arg) {
OSMesg mesg = 0;
while(TRUE){
// Wait for a signal from the main thread
do {
osRecvMesg(&gThread30MesgQueue, &mesg, 1);
} while(mesg != (OSMesg)OS_MESG_TYPE_LOOPBACK);
load_level_for_menu(gThread30LevelIdToLoad, -1, gThread30CutsceneIdToLoad); // -1 means there won't be any racers loaded.
gThread30NeedToLoadLevel = FALSE;
}
}

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