diff --git a/asm/non_matchings/unknown_003260/func_80002A98.s b/asm/non_matchings/unknown_003260/func_80002A98.s index 4e61c54f..c6732fd4 100644 --- a/asm/non_matchings/unknown_003260/func_80002A98.s +++ b/asm/non_matchings/unknown_003260/func_80002A98.s @@ -20,7 +20,7 @@ glabel func_80002A98 /* 0036E0 80002AE0 AFA00044 */ sw $zero, 0x44($sp) /* 0036E4 80002AE4 24C66160 */ addiu $a2, %lo(OSMesgQueue_80116160) # addiu $a2, $a2, 0x6160 /* 0036E8 80002AE8 24A56220 */ addiu $a1, %lo(D_80116220) # addiu $a1, $a1, 0x6220 -/* 0036EC 80002AEC 0C01E520 */ jal func_80079480 +/* 0036EC 80002AEC 0C01E520 */ jal osScAddClient /* 0036F0 80002AF0 24070001 */ li $a3, 1 /* 0036F4 80002AF4 3C1E8011 */ lui $fp, %hi(D_80116198) # $fp, 0x8011 /* 0036F8 80002AF8 3C16800E */ lui $s6, %hi(D_800DC680) # $s6, 0x800e diff --git a/asm/non_matchings/unknown_003260/func_80002C00.s b/asm/non_matchings/unknown_003260/func_80002C00.s index 4bceb066..92e7924a 100644 --- a/asm/non_matchings/unknown_003260/func_80002C00.s +++ b/asm/non_matchings/unknown_003260/func_80002C00.s @@ -112,7 +112,7 @@ glabel func_80002C00 /* 0039B0 80002DB0 AE0C0074 */ sw $t4, 0x74($s0) /* 0039B4 80002DB4 3C048011 */ lui $a0, %hi(D_80115F90) # $a0, 0x8011 /* 0039B8 80002DB8 8C845F90 */ lw $a0, %lo(D_80115F90)($a0) -/* 0039BC 80002DBC 0C01E55D */ jal func_80079574 +/* 0039BC 80002DBC 0C01E55D */ jal osScGetCmdQ /* 0039C0 80002DC0 00000000 */ nop /* 0039C4 80002DC4 00402025 */ move $a0, $v0 /* 0039C8 80002DC8 26050008 */ addiu $a1, $s0, 8 diff --git a/asm/non_matchings/unknown_066AA0/func_8006C3E0.s b/asm/non_matchings/unknown_066AA0/func_8006C3E0.s index de3f95a4..4fc0fab2 100644 --- a/asm/non_matchings/unknown_066AA0/func_8006C3E0.s +++ b/asm/non_matchings/unknown_066AA0/func_8006C3E0.s @@ -42,7 +42,7 @@ glabel func_8006C3E0 /* 06D070 8006C470 AFB90010 */ sw $t9, 0x10($sp) /* 06D074 8006C474 24A534E8 */ addiu $a1, %lo(D_801234E8) # addiu $a1, $a1, 0x34e8 /* 06D078 8006C478 24841260 */ addiu $a0, %lo(D_80121260) # addiu $a0, $a0, 0x1260 -/* 06D07C 8006C47C 0C01E4D4 */ jal func_80079350 +/* 06D07C 8006C47C 0C01E4D4 */ jal osCreateScheduler /* 06D080 8006C480 2406000D */ li $a2, 13 /* 06D084 8006C484 3C01800E */ lui $at, %hi(D_800DD3A0) # $at, 0x800e /* 06D088 8006C488 0C01BBEE */ jal func_8006EFB8 @@ -107,7 +107,7 @@ glabel func_8006C3E0 /* 06D170 8006C570 24C63548 */ addiu $a2, %lo(D_80123548) # addiu $a2, $a2, 0x3548 /* 06D174 8006C574 24A53538 */ addiu $a1, %lo(D_80123538) # addiu $a1, $a1, 0x3538 /* 06D178 8006C578 24841260 */ addiu $a0, %lo(D_80121260) # addiu $a0, $a0, 0x1260 -/* 06D17C 8006C57C 0C01E520 */ jal func_80079480 +/* 06D17C 8006C57C 0C01E520 */ jal osScAddClient /* 06D180 8006C580 24070003 */ li $a3, 3 /* 06D184 8006C584 3C018012 */ lui $at, %hi(D_80123560) # $at, 0x8012 /* 06D188 8006C588 AC203560 */ sw $zero, %lo(D_80123560)($at) diff --git a/asm/non_matchings/unknown_078050/func_80077B34.s b/asm/non_matchings/unknown_078050/func_80077B34.s deleted file mode 100644 index 133d2aac..00000000 --- a/asm/non_matchings/unknown_078050/func_80077B34.s +++ /dev/null @@ -1,12 +0,0 @@ -glabel func_80077B34 -/* 078734 80077B34 3C01800E */ lui $at, %hi(D_800DE4B0) # $at, 0x800e -/* 078738 80077B38 A024E4B0 */ sb $a0, %lo(D_800DE4B0)($at) -/* 07873C 80077B3C 3C01800E */ lui $at, %hi(D_800DE4B4) # $at, 0x800e -/* 078740 80077B40 A025E4B4 */ sb $a1, %lo(D_800DE4B4)($at) -/* 078744 80077B44 3C01800E */ lui $at, 0x800e -/* 078748 80077B48 AFA40000 */ sw $a0, ($sp) -/* 07874C 80077B4C AFA50004 */ sw $a1, 4($sp) -/* 078750 80077B50 AFA60008 */ sw $a2, 8($sp) -/* 078754 80077B54 03E00008 */ jr $ra -/* 078758 80077B58 A026E4B8 */ sb $a2, -0x1b48($at) - diff --git a/asm/non_matchings/unknown_078050/func_80078100.s b/asm/non_matchings/unknown_078050/func_80078100.s deleted file mode 100644 index 463aa2a3..00000000 --- a/asm/non_matchings/unknown_078050/func_80078100.s +++ /dev/null @@ -1,30 +0,0 @@ -glabel func_80078100 -/* 078D00 80078100 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 078D04 80078104 AFBF0014 */ sw $ra, 0x14($sp) -/* 078D08 80078108 0C01E55F */ jal func_8007957C -/* 078D0C 8007810C 00000000 */ nop -/* 078D10 80078110 3C018012 */ lui $at, %hi(D_80126100) # $at, 0x8012 -/* 078D14 80078114 3C048012 */ lui $a0, %hi(D_80125EA0) # $a0, 0x8012 -/* 078D18 80078118 3C058012 */ lui $a1, %hi(D_80125EB8) # $a1, 0x8012 -/* 078D1C 8007811C AC226100 */ sw $v0, %lo(D_80126100)($at) -/* 078D20 80078120 24A55EB8 */ addiu $a1, %lo(D_80125EB8) # addiu $a1, $a1, 0x5eb8 -/* 078D24 80078124 24845EA0 */ addiu $a0, %lo(D_80125EA0) # addiu $a0, $a0, 0x5ea0 -/* 078D28 80078128 0C032208 */ jal osCreateMesgQueue -/* 078D2C 8007812C 24060001 */ li $a2, 1 -/* 078D30 80078130 3C048012 */ lui $a0, %hi(D_80125EC0) # $a0, 0x8012 -/* 078D34 80078134 3C058012 */ lui $a1, %hi(D_80125EF0) # $a1, 0x8012 -/* 078D38 80078138 24A55EF0 */ addiu $a1, %lo(D_80125EF0) # addiu $a1, $a1, 0x5ef0 -/* 078D3C 8007813C 24845EC0 */ addiu $a0, %lo(D_80125EC0) # addiu $a0, $a0, 0x5ec0 -/* 078D40 80078140 0C032208 */ jal osCreateMesgQueue -/* 078D44 80078144 24060008 */ li $a2, 8 -/* 078D48 80078148 3C048012 */ lui $a0, %hi(D_80125ED8) # $a0, 0x8012 -/* 078D4C 8007814C 3C058012 */ lui $a1, %hi(D_80125F10) # $a1, 0x8012 -/* 078D50 80078150 24A55F10 */ addiu $a1, %lo(D_80125F10) # addiu $a1, $a1, 0x5f10 -/* 078D54 80078154 24845ED8 */ addiu $a0, %lo(D_80125ED8) # addiu $a0, $a0, 0x5ed8 -/* 078D58 80078158 0C032208 */ jal osCreateMesgQueue -/* 078D5C 8007815C 24060008 */ li $a2, 8 -/* 078D60 80078160 8FBF0014 */ lw $ra, 0x14($sp) -/* 078D64 80078164 27BD0018 */ addiu $sp, $sp, 0x18 -/* 078D68 80078168 03E00008 */ jr $ra -/* 078D6C 8007816C 00000000 */ nop - diff --git a/asm/non_matchings/unknown_078050/func_80078170.s b/asm/non_matchings/unknown_078050/func_80078170.s deleted file mode 100644 index 2b53abd7..00000000 --- a/asm/non_matchings/unknown_078050/func_80078170.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_80078170 -/* 078D70 80078170 3C01800E */ lui $at, %hi(D_800DE4C4) # $at, 0x800e -/* 078D74 80078174 AC24E4C4 */ sw $a0, %lo(D_800DE4C4)($at) -/* 078D78 80078178 3C01800E */ lui $at, %hi(D_800DE4C8) # $at, 0x800e -/* 078D7C 8007817C AC25E4C8 */ sw $a1, %lo(D_800DE4C8)($at) -/* 078D80 80078180 3C01800E */ lui $at, 0x800e -/* 078D84 80078184 00067080 */ sll $t6, $a2, 2 -/* 078D88 80078188 03E00008 */ jr $ra -/* 078D8C 8007818C AC2EE4C0 */ sw $t6, -0x1b40($at) - diff --git a/asm/non_matchings/unknown_078050/func_80078AAC.s b/asm/non_matchings/unknown_078050/func_80078AAC.s deleted file mode 100644 index a6be530c..00000000 --- a/asm/non_matchings/unknown_078050/func_80078AAC.s +++ /dev/null @@ -1,5 +0,0 @@ -glabel func_80078AAC -/* 0796AC 80078AAC 3C01800E */ lui $at, 0x800e -/* 0796B0 80078AB0 03E00008 */ jr $ra -/* 0796B4 80078AB4 AC24E4D0 */ sw $a0, -0x1b30($at) - diff --git a/asm/non_matchings/unknown_079F50/D_800795AC.s b/asm/non_matchings/unknown_079F50/__scMain.s similarity index 98% rename from asm/non_matchings/unknown_079F50/D_800795AC.s rename to asm/non_matchings/unknown_079F50/__scMain.s index 8676224a..e5407ca5 100644 --- a/asm/non_matchings/unknown_079F50/D_800795AC.s +++ b/asm/non_matchings/unknown_079F50/__scMain.s @@ -1,4 +1,4 @@ -glabel D_800795AC +glabel __scMain /* 07A1AC 800795AC 27BDFF98 */ addiu $sp, $sp, -0x68 /* 07A1B0 800795B0 AFBE0038 */ sw $fp, 0x38($sp) /* 07A1B4 800795B4 AFB70034 */ sw $s7, 0x34($sp) @@ -94,7 +94,7 @@ glabel D_800795AC /* 07A2FC 800796FC 02602025 */ move $a0, $s3 /* 07A300 80079700 8FA50054 */ lw $a1, 0x54($sp) /* 07A304 80079704 8FA60050 */ lw $a2, 0x50($sp) -/* 07A308 80079708 0C01E7EA */ jal func_80079FA8 +/* 07A308 80079708 0C01E7EA */ jal __scExec /* 07A30C 8007970C 02402025 */ move $a0, $s2 /* 07A310 80079710 1000FFBC */ b .L80079604 /* 07A314 80079714 02602025 */ move $a0, $s3 diff --git a/asm/non_matchings/unknown_079F50/func_80079350.s b/asm/non_matchings/unknown_079F50/func_80079350.s deleted file mode 100644 index 2d3fa628..00000000 --- a/asm/non_matchings/unknown_079F50/func_80079350.s +++ /dev/null @@ -1,78 +0,0 @@ -glabel func_80079350 -/* 079F50 80079350 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 079F54 80079354 AFB0001C */ sw $s0, 0x1c($sp) -/* 079F58 80079358 AFBF0024 */ sw $ra, 0x24($sp) -/* 079F5C 8007935C AFB10020 */ sw $s1, 0x20($sp) -/* 079F60 80079360 AFA5002C */ sw $a1, 0x2c($sp) -/* 079F64 80079364 AFA60030 */ sw $a2, 0x30($sp) -/* 079F68 80079368 AFA70034 */ sw $a3, 0x34($sp) -/* 079F6C 8007936C 240E0001 */ li $t6, 1 -/* 079F70 80079370 240F0004 */ li $t7, 4 -/* 079F74 80079374 00808025 */ move $s0, $a0 -/* 079F78 80079378 AC800274 */ sw $zero, 0x274($a0) -/* 079F7C 8007937C AC800278 */ sw $zero, 0x278($a0) -/* 079F80 80079380 AC800260 */ sw $zero, 0x260($a0) -/* 079F84 80079384 AC800264 */ sw $zero, 0x264($a0) -/* 079F88 80079388 AC800268 */ sw $zero, 0x268($a0) -/* 079F8C 8007938C AC80026C */ sw $zero, 0x26c($a0) -/* 079F90 80079390 AC800270 */ sw $zero, 0x270($a0) -/* 079F94 80079394 AC800280 */ sw $zero, 0x280($a0) -/* 079F98 80079398 AC80027C */ sw $zero, 0x27c($a0) -/* 079F9C 8007939C A48E0000 */ sh $t6, ($a0) -/* 079FA0 800793A0 A48F0020 */ sh $t7, 0x20($a0) -/* 079FA4 800793A4 30F100FF */ andi $s1, $a3, 0xff -/* 079FA8 800793A8 0C034664 */ jal osCreateViManager -/* 079FAC 800793AC 240400FE */ li $a0, 254 -/* 079FB0 800793B0 0011C080 */ sll $t8, $s1, 2 -/* 079FB4 800793B4 0311C021 */ addu $t8, $t8, $s1 -/* 079FB8 800793B8 3C19800E */ lui $t9, %hi(D_800E3900) # $t9, 0x800e -/* 079FBC 800793BC 27393900 */ addiu $t9, %lo(D_800E3900) # addiu $t9, $t9, 0x3900 -/* 079FC0 800793C0 0018C100 */ sll $t8, $t8, 4 -/* 079FC4 800793C4 0C034728 */ jal func_800D1CA0 -/* 079FC8 800793C8 03192021 */ addu $a0, $t8, $t9 -/* 079FCC 800793CC 0C034744 */ jal osViBlack -/* 079FD0 800793D0 24040001 */ li $a0, 1 -/* 079FD4 800793D4 26110040 */ addiu $s1, $s0, 0x40 -/* 079FD8 800793D8 02202025 */ move $a0, $s1 -/* 079FDC 800793DC 26050058 */ addiu $a1, $s0, 0x58 -/* 079FE0 800793E0 0C032208 */ jal osCreateMesgQueue -/* 079FE4 800793E4 24060008 */ li $a2, 8 -/* 079FE8 800793E8 26040078 */ addiu $a0, $s0, 0x78 -/* 079FEC 800793EC 26050090 */ addiu $a1, $s0, 0x90 -/* 079FF0 800793F0 0C032208 */ jal osCreateMesgQueue -/* 079FF4 800793F4 24060008 */ li $a2, 8 -/* 079FF8 800793F8 24040004 */ li $a0, 4 -/* 079FFC 800793FC 02202825 */ move $a1, $s1 -/* 07A000 80079400 0C0332EC */ jal osSetEventMesg -/* 07A004 80079404 2406029B */ li $a2, 667 -/* 07A008 80079408 24040009 */ li $a0, 9 -/* 07A00C 8007940C 02202825 */ move $a1, $s1 -/* 07A010 80079410 0C0332EC */ jal osSetEventMesg -/* 07A014 80079414 2406029C */ li $a2, 668 -/* 07A018 80079418 2404000E */ li $a0, 14 -/* 07A01C 8007941C 02202825 */ move $a1, $s1 -/* 07A020 80079420 0C0332EC */ jal osSetEventMesg -/* 07A024 80079424 2406029D */ li $a2, 669 -/* 07A028 80079428 93A6003B */ lbu $a2, 0x3b($sp) -/* 07A02C 8007942C 02202025 */ move $a0, $s1 -/* 07A030 80079430 0C034760 */ jal osViSetEventMsg -/* 07A034 80079434 2405029A */ li $a1, 666 -/* 07A038 80079438 8FA8002C */ lw $t0, 0x2c($sp) -/* 07A03C 8007943C 8FA90030 */ lw $t1, 0x30($sp) -/* 07A040 80079440 261100B0 */ addiu $s1, $s0, 0xb0 -/* 07A044 80079444 3C068008 */ lui $a2, %hi(D_800795AC) # $a2, 0x8008 -/* 07A048 80079448 24C695AC */ addiu $a2, %lo(D_800795AC) # addiu $a2, $a2, -0x6a54 -/* 07A04C 8007944C 02202025 */ move $a0, $s1 -/* 07A050 80079450 24050005 */ li $a1, 5 -/* 07A054 80079454 02003825 */ move $a3, $s0 -/* 07A058 80079458 AFA80010 */ sw $t0, 0x10($sp) -/* 07A05C 8007945C 0C032214 */ jal osCreateThread -/* 07A060 80079460 AFA90014 */ sw $t1, 0x14($sp) -/* 07A064 80079464 0C032268 */ jal osStartThread -/* 07A068 80079468 02202025 */ move $a0, $s1 -/* 07A06C 8007946C 8FBF0024 */ lw $ra, 0x24($sp) -/* 07A070 80079470 8FB0001C */ lw $s0, 0x1c($sp) -/* 07A074 80079474 8FB10020 */ lw $s1, 0x20($sp) -/* 07A078 80079478 03E00008 */ jr $ra -/* 07A07C 8007947C 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_079F50/func_80079480.s b/asm/non_matchings/unknown_079F50/func_80079480.s deleted file mode 100644 index ef94a751..00000000 --- a/asm/non_matchings/unknown_079F50/func_80079480.s +++ /dev/null @@ -1,68 +0,0 @@ -glabel func_80079480 -/* 07A080 80079480 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 07A084 80079484 AFBF0014 */ sw $ra, 0x14($sp) -/* 07A088 80079488 AFA40018 */ sw $a0, 0x18($sp) -/* 07A08C 8007948C AFA60020 */ sw $a2, 0x20($sp) -/* 07A090 80079490 AFA70024 */ sw $a3, 0x24($sp) -/* 07A094 80079494 24040001 */ li $a0, 1 -/* 07A098 80079498 0C03268C */ jal osSetIntMask -/* 07A09C 8007949C AFA5001C */ sw $a1, 0x1c($sp) -/* 07A0A0 800794A0 8FA30018 */ lw $v1, 0x18($sp) -/* 07A0A4 800794A4 8FA5001C */ lw $a1, 0x1c($sp) -/* 07A0A8 800794A8 8FAE0020 */ lw $t6, 0x20($sp) -/* 07A0AC 800794AC 00402025 */ move $a0, $v0 -/* 07A0B0 800794B0 ACAE0008 */ sw $t6, 8($a1) -/* 07A0B4 800794B4 8C6F0260 */ lw $t7, 0x260($v1) -/* 07A0B8 800794B8 00000000 */ nop -/* 07A0BC 800794BC ACAF0004 */ sw $t7, 4($a1) -/* 07A0C0 800794C0 93B80027 */ lbu $t8, 0x27($sp) -/* 07A0C4 800794C4 00000000 */ nop -/* 07A0C8 800794C8 A0B80000 */ sb $t8, ($a1) -/* 07A0CC 800794CC 0C03268C */ jal osSetIntMask -/* 07A0D0 800794D0 AC650260 */ sw $a1, 0x260($v1) -/* 07A0D4 800794D4 8FBF0014 */ lw $ra, 0x14($sp) -/* 07A0D8 800794D8 27BD0018 */ addiu $sp, $sp, 0x18 -/* 07A0DC 800794DC 03E00008 */ jr $ra -/* 07A0E0 800794E0 00000000 */ nop - -/* 07A0E4 800794E4 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* 07A0E8 800794E8 AFBF0014 */ sw $ra, 0x14($sp) -/* 07A0EC 800794EC AFA40020 */ sw $a0, 0x20($sp) -/* 07A0F0 800794F0 8C830260 */ lw $v1, 0x260($a0) -/* 07A0F4 800794F4 AFA00018 */ sw $zero, 0x18($sp) -/* 07A0F8 800794F8 AFA50024 */ sw $a1, 0x24($sp) -/* 07A0FC 800794FC 24040001 */ li $a0, 1 -/* 07A100 80079500 0C03268C */ jal osSetIntMask -/* 07A104 80079504 AFA3001C */ sw $v1, 0x1c($sp) -/* 07A108 80079508 8FA3001C */ lw $v1, 0x1c($sp) -/* 07A10C 8007950C 8FA50024 */ lw $a1, 0x24($sp) -/* 07A110 80079510 8FA60018 */ lw $a2, 0x18($sp) -/* 07A114 80079514 10600011 */ beqz $v1, .L8007955C -/* 07A118 80079518 00402025 */ move $a0, $v0 -.L8007951C: -/* 07A11C 8007951C 1465000A */ bne $v1, $a1, .L80079548 -/* 07A120 80079520 00000000 */ nop -/* 07A124 80079524 10C00004 */ beqz $a2, .L80079538 -/* 07A128 80079528 00000000 */ nop -/* 07A12C 8007952C 8CAF0004 */ lw $t7, 4($a1) -/* 07A130 80079530 1000000A */ b .L8007955C -/* 07A134 80079534 ACCF0004 */ sw $t7, 4($a2) -.L80079538: -/* 07A138 80079538 8CB80004 */ lw $t8, 4($a1) -/* 07A13C 8007953C 8FB90020 */ lw $t9, 0x20($sp) -/* 07A140 80079540 10000006 */ b .L8007955C -/* 07A144 80079544 AF380260 */ sw $t8, 0x260($t9) -.L80079548: -/* 07A148 80079548 00603025 */ move $a2, $v1 -/* 07A14C 8007954C 8C630004 */ lw $v1, 4($v1) -/* 07A150 80079550 00000000 */ nop -/* 07A154 80079554 1460FFF1 */ bnez $v1, .L8007951C -/* 07A158 80079558 00000000 */ nop -.L8007955C: -/* 07A15C 8007955C 0C03268C */ jal osSetIntMask -/* 07A160 80079560 00000000 */ nop -/* 07A164 80079564 8FBF0014 */ lw $ra, 0x14($sp) -/* 07A168 80079568 27BD0020 */ addiu $sp, $sp, 0x20 -/* 07A16C 8007956C 03E00008 */ jr $ra -/* 07A170 80079570 00000000 */ nop - diff --git a/asm/non_matchings/unknown_079F50/func_80079574.s b/asm/non_matchings/unknown_079F50/func_80079574.s deleted file mode 100644 index 22dbf03f..00000000 --- a/asm/non_matchings/unknown_079F50/func_80079574.s +++ /dev/null @@ -1,4 +0,0 @@ -glabel func_80079574 -/* 07A174 80079574 03E00008 */ jr $ra -/* 07A178 80079578 24820078 */ addiu $v0, $a0, 0x78 - diff --git a/asm/non_matchings/unknown_079F50/func_80079760.s b/asm/non_matchings/unknown_079F50/func_80079760.s index 43500e2b..4da59d4d 100644 --- a/asm/non_matchings/unknown_079F50/func_80079760.s +++ b/asm/non_matchings/unknown_079F50/func_80079760.s @@ -37,7 +37,7 @@ glabel func_80079760 /* 07A3E4 800797E4 8FBF0014 */ lw $ra, 0x14($sp) /* 07A3E8 800797E8 8FA50020 */ lw $a1, 0x20($sp) /* 07A3EC 800797EC 8FA6001C */ lw $a2, 0x1c($sp) -/* 07A3F0 800797F0 0C01E7EA */ jal func_80079FA8 +/* 07A3F0 800797F0 0C01E7EA */ jal __scExec /* 07A3F4 800797F4 00000000 */ nop /* 07A3F8 800797F8 8FBF0014 */ lw $ra, 0x14($sp) .L800797FC: diff --git a/asm/non_matchings/unknown_079F50/func_80079818.s b/asm/non_matchings/unknown_079F50/func_80079818.s index 56520bba..2d1108b3 100644 --- a/asm/non_matchings/unknown_079F50/func_80079818.s +++ b/asm/non_matchings/unknown_079F50/func_80079818.s @@ -122,7 +122,7 @@ glabel func_80079818 /* 07A5CC 800799CC 00000000 */ nop /* 07A5D0 800799D0 8FA50038 */ lw $a1, 0x38($sp) /* 07A5D4 800799D4 8FA60034 */ lw $a2, 0x34($sp) -/* 07A5D8 800799D8 0C01E7EA */ jal func_80079FA8 +/* 07A5D8 800799D8 0C01E7EA */ jal __scExec /* 07A5DC 800799DC 02202025 */ move $a0, $s1 .L800799E0: /* 07A5E0 800799E0 3C0D800E */ lui $t5, %hi(D_800DE764) # $t5, 0x800e diff --git a/asm/non_matchings/unknown_079F50/func_80079B44.s b/asm/non_matchings/unknown_079F50/func_80079B44.s index 90efdd27..3d7fa1c4 100644 --- a/asm/non_matchings/unknown_079F50/func_80079B44.s +++ b/asm/non_matchings/unknown_079F50/func_80079B44.s @@ -137,7 +137,7 @@ glabel func_80079B44 /* 07A938 80079D38 10470005 */ beq $v0, $a3, .L80079D50 /* 07A93C 80079D3C 8FBF001C */ lw $ra, 0x1c($sp) /* 07A940 80079D40 8FA6002C */ lw $a2, 0x2c($sp) -/* 07A944 80079D44 0C01E7EA */ jal func_80079FA8 +/* 07A944 80079D44 0C01E7EA */ jal __scExec /* 07A948 80079D48 02002025 */ move $a0, $s0 /* 07A94C 80079D4C 8FBF001C */ lw $ra, 0x1c($sp) .L80079D50: diff --git a/asm/non_matchings/unknown_079F50/func_80079D5C.s b/asm/non_matchings/unknown_079F50/func_80079D5C.s index 64de9d95..16eb86c2 100644 --- a/asm/non_matchings/unknown_079F50/func_80079D5C.s +++ b/asm/non_matchings/unknown_079F50/func_80079D5C.s @@ -28,7 +28,7 @@ glabel func_80079D5C /* 07A9C4 80079DC4 8FBF0014 */ lw $ra, 0x14($sp) /* 07A9C8 80079DC8 8FA50020 */ lw $a1, 0x20($sp) /* 07A9CC 80079DCC 8FA6001C */ lw $a2, 0x1c($sp) -/* 07A9D0 80079DD0 0C01E7EA */ jal func_80079FA8 +/* 07A9D0 80079DD0 0C01E7EA */ jal __scExec /* 07A9D4 80079DD4 00000000 */ nop /* 07A9D8 80079DD8 8FBF0014 */ lw $ra, 0x14($sp) .L80079DDC: diff --git a/asm/non_matchings/unknown_079F50/func_80079FA8.s b/asm/non_matchings/unknown_079F50/func_80079FA8.s deleted file mode 100644 index e1cbbbff..00000000 --- a/asm/non_matchings/unknown_079F50/func_80079FA8.s +++ /dev/null @@ -1,59 +0,0 @@ -glabel func_80079FA8 -/* 07ABA8 80079FA8 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 07ABAC 80079FAC AFB10018 */ sw $s1, 0x18($sp) -/* 07ABB0 80079FB0 AFB00014 */ sw $s0, 0x14($sp) -/* 07ABB4 80079FB4 00A08025 */ move $s0, $a1 -/* 07ABB8 80079FB8 00C08825 */ move $s1, $a2 -/* 07ABBC 80079FBC AFBF001C */ sw $ra, 0x1c($sp) -/* 07ABC0 80079FC0 10A0001D */ beqz $a1, .L8007A038 -/* 07ABC4 80079FC4 AFA40028 */ sw $a0, 0x28($sp) -/* 07ABC8 80079FC8 8CAE0010 */ lw $t6, 0x10($a1) -/* 07ABCC 80079FCC 24010002 */ li $at, 2 -/* 07ABD0 80079FD0 15C10007 */ bne $t6, $at, .L80079FF0 -/* 07ABD4 80079FD4 00000000 */ nop -/* 07ABD8 80079FD8 0C034628 */ jal osWritebackDCacheAll -/* 07ABDC 80079FDC 00000000 */ nop -/* 07ABE0 80079FE0 0C031E34 */ jal osGetCount -/* 07ABE4 80079FE4 00000000 */ nop -/* 07ABE8 80079FE8 3C018012 */ lui $at, %hi(D_80126120) # $at, 0x8012 -/* 07ABEC 80079FEC AC226120 */ sw $v0, %lo(D_80126120)($at) -.L80079FF0: -/* 07ABF0 80079FF0 8E0F0004 */ lw $t7, 4($s0) -/* 07ABF4 80079FF4 2401FFCF */ li $at, -49 -/* 07ABF8 80079FF8 01E1C024 */ and $t8, $t7, $at -/* 07ABFC 80079FFC AE180004 */ sw $t8, 4($s0) -/* 07AC00 8007A000 26040010 */ addiu $a0, $s0, 0x10 -/* 07AC04 8007A004 0C034803 */ jal osSpTaskLoad -/* 07AC08 8007A008 AFA40024 */ sw $a0, 0x24($sp) -/* 07AC0C 8007A00C 8FA40024 */ lw $a0, 0x24($sp) -/* 07AC10 8007A010 0C03485B */ jal osSpTaskStartGo -/* 07AC14 8007A014 00000000 */ nop -/* 07AC18 8007A018 3C01800E */ lui $at, %hi(D_800DE754) # $at, 0x800e -/* 07AC1C 8007A01C AC20E754 */ sw $zero, %lo(D_800DE754)($at) -/* 07AC20 8007A020 8FB90028 */ lw $t9, 0x28($sp) -/* 07AC24 8007A024 3C01800E */ lui $at, %hi(D_800DE758) # $at, 0x800e -/* 07AC28 8007A028 AC20E758 */ sw $zero, %lo(D_800DE758)($at) -/* 07AC2C 8007A02C 16110002 */ bne $s0, $s1, .L8007A038 -/* 07AC30 8007A030 AF300274 */ sw $s0, 0x274($t9) -/* 07AC34 8007A034 AF310278 */ sw $s1, 0x278($t9) -.L8007A038: -/* 07AC38 8007A038 1220000D */ beqz $s1, .L8007A070 -/* 07AC3C 8007A03C 8FBF001C */ lw $ra, 0x1c($sp) -/* 07AC40 8007A040 1230000B */ beq $s1, $s0, .L8007A070 -/* 07AC44 8007A044 8FBF001C */ lw $ra, 0x1c($sp) -/* 07AC48 8007A048 8E28003C */ lw $t0, 0x3c($s1) -/* 07AC4C 8007A04C 8E240038 */ lw $a0, 0x38($s1) -/* 07AC50 8007A050 8D060000 */ lw $a2, ($t0) -/* 07AC54 8007A054 8D070004 */ lw $a3, 4($t0) -/* 07AC58 8007A058 0C034638 */ jal osDpSetNextBuffer -/* 07AC5C 8007A05C 00000000 */ nop -/* 07AC60 8007A060 8FA90028 */ lw $t1, 0x28($sp) -/* 07AC64 8007A064 00000000 */ nop -/* 07AC68 8007A068 AD310278 */ sw $s1, 0x278($t1) -/* 07AC6C 8007A06C 8FBF001C */ lw $ra, 0x1c($sp) -.L8007A070: -/* 07AC70 8007A070 8FB00014 */ lw $s0, 0x14($sp) -/* 07AC74 8007A074 8FB10018 */ lw $s1, 0x18($sp) -/* 07AC78 8007A078 03E00008 */ jr $ra -/* 07AC7C 8007A07C 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/asm/non_matchings/unknown_07AF10/func_8007A310.s b/asm/non_matchings/unknown_07AF10/func_8007A310.s index f2b4c3e2..01b7a56a 100644 --- a/asm/non_matchings/unknown_07AF10/func_8007A310.s +++ b/asm/non_matchings/unknown_07AF10/func_8007A310.s @@ -95,7 +95,7 @@ glabel func_8007A310 /* 07B070 8007A470 3C068012 */ lui $a2, %hi(D_801261A0) # $a2, 0x8012 /* 07B074 8007A474 24C661A0 */ addiu $a2, %lo(D_801261A0) # addiu $a2, $a2, 0x61a0 /* 07B078 8007A478 24A56310 */ addiu $a1, %lo(D_80126310) # addiu $a1, $a1, 0x6310 -/* 07B07C 8007A47C 0C01E520 */ jal func_80079480 +/* 07B07C 8007A47C 0C01E520 */ jal osScAddClient /* 07B080 8007A480 24070002 */ li $a3, 2 /* 07B084 8007A484 0C01E954 */ jal func_8007A550 /* 07B088 8007A488 00000000 */ nop diff --git a/asm/non_matchings/unknown_07AF10/func_8007A550.s b/asm/non_matchings/unknown_07AF10/func_8007A550.s index befc96bf..318983e8 100644 --- a/asm/non_matchings/unknown_07AF10/func_8007A550.s +++ b/asm/non_matchings/unknown_07AF10/func_8007A550.s @@ -29,7 +29,7 @@ glabel func_8007A550 /* 07B1B4 8007A5B4 3C19800E */ lui $t9, %hi(D_800E3900) # $t9, 0x800e /* 07B1B8 8007A5B8 27393900 */ addiu $t9, %lo(D_800E3900) # addiu $t9, $t9, 0x3900 /* 07B1BC 8007A5BC 0018C100 */ sll $t8, $t8, 4 -/* 07B1C0 8007A5C0 0C034728 */ jal func_800D1CA0 +/* 07B1C0 8007A5C0 0C034728 */ jal osViSetMode /* 07B1C4 8007A5C4 03192021 */ addu $a0, $t8, $t9 /* 07B1C8 8007A5C8 1000007D */ b .L8007A7C0 /* 07B1CC 8007A5CC 00000000 */ nop @@ -66,7 +66,7 @@ glabel func_8007A550 /* 07B240 8007A640 ACAE0030 */ sw $t6, 0x30($a1) /* 07B244 8007A644 ACB80044 */ sw $t8, 0x44($a1) .L8007A648: -/* 07B248 8007A648 0C034728 */ jal func_800D1CA0 +/* 07B248 8007A648 0C034728 */ jal osViSetMode /* 07B24C 8007A64C 00A02025 */ move $a0, $a1 /* 07B250 8007A650 1000005B */ b .L8007A7C0 /* 07B254 8007A654 00000000 */ nop @@ -94,7 +94,7 @@ glabel func_8007A550 /* 07B2A4 8007A6A4 AC990008 */ sw $t9, 8($a0) /* 07B2A8 8007A6A8 AC880020 */ sw $t0, 0x20($a0) /* 07B2AC 8007A6AC AC820028 */ sw $v0, 0x28($a0) -/* 07B2B0 8007A6B0 0C034728 */ jal func_800D1CA0 +/* 07B2B0 8007A6B0 0C034728 */ jal osViSetMode /* 07B2B4 8007A6B4 AC82003C */ sw $v0, 0x3c($a0) /* 07B2B8 8007A6B8 10000041 */ b .L8007A7C0 /* 07B2BC 8007A6BC 00000000 */ nop @@ -122,7 +122,7 @@ glabel func_8007A550 /* 07B30C 8007A70C AC890008 */ sw $t1, 8($a0) /* 07B310 8007A710 AC8A0020 */ sw $t2, 0x20($a0) /* 07B314 8007A714 AC820028 */ sw $v0, 0x28($a0) -/* 07B318 8007A718 0C034728 */ jal func_800D1CA0 +/* 07B318 8007A718 0C034728 */ jal osViSetMode /* 07B31C 8007A71C AC82003C */ sw $v0, 0x3c($a0) /* 07B320 8007A720 10000027 */ b .L8007A7C0 /* 07B324 8007A724 00000000 */ nop @@ -132,7 +132,7 @@ glabel func_8007A550 /* 07B334 8007A734 3C0D800E */ lui $t5, %hi(D_800E3900) # $t5, 0x800e /* 07B338 8007A738 25AD3900 */ addiu $t5, %lo(D_800E3900) # addiu $t5, $t5, 0x3900 /* 07B33C 8007A73C 256C0280 */ addiu $t4, $t3, 0x280 -/* 07B340 8007A740 0C034728 */ jal func_800D1CA0 +/* 07B340 8007A740 0C034728 */ jal osViSetMode /* 07B344 8007A744 018D2021 */ addu $a0, $t4, $t5 /* 07B348 8007A748 1000001D */ b .L8007A7C0 /* 07B34C 8007A74C 00000000 */ nop @@ -142,7 +142,7 @@ glabel func_8007A550 /* 07B35C 8007A75C 3C18800E */ lui $t8, %hi(D_800E3900) # $t8, 0x800e /* 07B360 8007A760 27183900 */ addiu $t8, %lo(D_800E3900) # addiu $t8, $t8, 0x3900 /* 07B364 8007A764 25CF0320 */ addiu $t7, $t6, 0x320 -/* 07B368 8007A768 0C034728 */ jal func_800D1CA0 +/* 07B368 8007A768 0C034728 */ jal osViSetMode /* 07B36C 8007A76C 01F82021 */ addu $a0, $t7, $t8 /* 07B370 8007A770 10000013 */ b .L8007A7C0 /* 07B374 8007A774 00000000 */ nop @@ -152,7 +152,7 @@ glabel func_8007A550 /* 07B384 8007A784 3C09800E */ lui $t1, %hi(D_800E3900) # $t1, 0x800e /* 07B388 8007A788 25293900 */ addiu $t1, %lo(D_800E3900) # addiu $t1, $t1, 0x3900 /* 07B38C 8007A78C 272802D0 */ addiu $t0, $t9, 0x2d0 -/* 07B390 8007A790 0C034728 */ jal func_800D1CA0 +/* 07B390 8007A790 0C034728 */ jal osViSetMode /* 07B394 8007A794 01092021 */ addu $a0, $t0, $t1 /* 07B398 8007A798 10000009 */ b .L8007A7C0 /* 07B39C 8007A79C 00000000 */ nop @@ -162,7 +162,7 @@ glabel func_8007A550 /* 07B3AC 8007A7AC 3C0C800E */ lui $t4, %hi(D_800E3900) # $t4, 0x800e /* 07B3B0 8007A7B0 258C3900 */ addiu $t4, %lo(D_800E3900) # addiu $t4, $t4, 0x3900 /* 07B3B4 8007A7B4 254B0370 */ addiu $t3, $t2, 0x370 -/* 07B3B8 8007A7B8 0C034728 */ jal func_800D1CA0 +/* 07B3B8 8007A7B8 0C034728 */ jal osViSetMode /* 07B3BC 8007A7BC 016C2021 */ addu $a0, $t3, $t4 .L8007A7C0: /* 07B3C0 8007A7C0 0C034898 */ jal osViSetSpecialFeatures diff --git a/lib/asm/non_matchings/unknown_0D28A0/func_800D1CA0.s b/lib/asm/non_matchings/unknown_0D28A0/osViSetMode.s similarity index 98% rename from lib/asm/non_matchings/unknown_0D28A0/func_800D1CA0.s rename to lib/asm/non_matchings/unknown_0D28A0/osViSetMode.s index b0c9e81f..dbafd106 100644 --- a/lib/asm/non_matchings/unknown_0D28A0/func_800D1CA0.s +++ b/lib/asm/non_matchings/unknown_0D28A0/osViSetMode.s @@ -1,4 +1,4 @@ -glabel func_800D1CA0 +glabel osViSetMode /* 0D28A0 800D1CA0 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 0D28A4 800D1CA4 AFBF001C */ sw $ra, 0x1c($sp) /* 0D28A8 800D1CA8 AFA40028 */ sw $a0, 0x28($sp) diff --git a/lib/src/unknown_0D28A0.c b/lib/src/unknown_0D28A0.c index 1376a235..2a38ff5d 100644 --- a/lib/src/unknown_0D28A0.c +++ b/lib/src/unknown_0D28A0.c @@ -4,4 +4,4 @@ #include "types.h" #include "macros.h" -GLOBAL_ASM("lib/asm/non_matchings/unknown_0D28A0/func_800D1CA0.s") +GLOBAL_ASM("lib/asm/non_matchings/unknown_0D28A0/osViSetMode.s") diff --git a/src/unknown_003260.c b/src/unknown_003260.c index 840a9c49..dc60353b 100644 --- a/src/unknown_003260.c +++ b/src/unknown_003260.c @@ -6,6 +6,16 @@ #include "audio_internal.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) + extern void func_80002A98(void*); extern u32 D_80003008; @@ -37,6 +47,7 @@ typedef struct unk800DC6BC { s32 unk48; s32 frameTime; ALMicroTime nextDelta; + ALMicroTime curTime; } unk800DC6BC; //ALSndPlayer typedef struct unk80119240 @@ -211,8 +222,39 @@ void alSndPNew(audioMgrConfig* c){ gAlSndPlayer->nextDelta = alEvtqNextEvent(&(gAlSndPlayer->evtq), &(gAlSndPlayer->nextEvent)); } +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_003260/_sndpVoiceHandler.s") +#else +ALMicroTime _sndpVoiceHandler(void *node){ + unk800DC6BC *sndp = (unk800DC6BC *) node; + ALSndpEvent evt; + + do { + switch (sndp->nextEvent.type) { + case (AL_SNDP_API_EVT): + //TODO cannot get this const to load into reg t7 + evt.snd_event.type = AL_SNDP_API_EVT; + alEvtqPostEvent(&sndp->evtq, (ALEvent *)&evt, sndp->frameTime); + break; + + default: + _handleEvent(sndp, (ALSndpEvent *)&sndp->nextEvent); + break; + } + sndp->nextDelta = alEvtqNextEvent(&sndp->evtq, &sndp->nextEvent); + + } while (sndp->nextDelta == 0); + sndp->curTime += sndp->nextDelta; + return sndp->nextDelta; +} +#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") diff --git a/src/unknown_066AA0.c b/src/unknown_066AA0.c index 81f4f63f..47c7bc7e 100644 --- a/src/unknown_066AA0.c +++ b/src/unknown_066AA0.c @@ -1436,8 +1436,8 @@ extern u8 D_80123538; extern s32 D_80123544; extern s32 D_801234E8; -void func_80079350(u16*, s32*, s32, u8, s32); -void func_80079480(u16*, u8*, s32**, s32); +void osCreateScheduler(u16*, s32*, s32, u8, s32); +void osScAddClient(u16*, u8*, s32**, s32); void func_8006C3E0(void) { s32 sp24; @@ -1459,7 +1459,7 @@ void func_8006C3E0(void) { sp24 = 0x1C; } - func_80079350(&D_80121260, &D_801234E8, 0xD, sp24, 1); + osCreateScheduler(&D_80121260, &D_801234E8, 0xD, sp24, 1); D_800DD3A0 = 0; if (func_8006EFB8() == 0) { D_800DD3A0 = 1; @@ -1484,7 +1484,7 @@ void func_8006C3E0(void) { func_80081218(); func_800C7350(); osCreateMesgQueue(&D_80123548, &D_80123544, 1); - func_80079480(&D_80121260, &D_80123538, &D_80123548, 3); + osScAddClient(&D_80121260, &D_80123538, &D_80123548, 3); D_80123560 = 0; D_80123504 = 0; D_80123508 = 0; diff --git a/src/unknown_078050.c b/src/unknown_078050.c index 4c3fff8b..9f97ae9f 100644 --- a/src/unknown_078050.c +++ b/src/unknown_078050.c @@ -3,18 +3,85 @@ #include "types.h" #include "macros.h" +#include "libultra_internal.h" + +extern u8 D_800DE4B0; +extern u8 D_800DE4B4; +extern u8 D_800DE4B8; + +extern u32 D_800DE4C0; +extern u32 D_800DE4C4; +extern u32 D_800DE4C8; + +extern u32 D_800DE4D0; + +extern u32 D_800DE4E0; + +extern OSMesgQueue D_80125EA0; +extern OSMesg D_80125EB8; +extern OSMesgQueue D_80125EC0; +extern OSMesgQueue D_80125ED8; +extern OSMesg D_80125EF0; +extern OSMesg D_80125F10; + +extern u32 D_80126100; GLOBAL_ASM("asm/non_matchings/unknown_078050/setupOSTasks.s") GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80077A54.s") -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80077B34.s") + +void func_80077B34(u8 arg0, u8 arg1, u8 arg2){ + D_800DE4B0 = arg0; + D_800DE4B4 = arg1; + D_800DE4B8 = arg2; +} + GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80077B5C.s") GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80077B9C.s") GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078054.s") + + + +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_078050/func_800780DC.s") -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078100.s") -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078170.s") +#else +typedef struct{ + u32 unk00; + u32* unk04; +} struct_800780DC_a0; + +void func_800780DC(struct_800780DC_a0** arg0){ + u32* tmp2= &D_800DE4E0; + struct_800780DC_a0* tmp = *arg0; + + + *arg0 = *arg0 + 1; + tmp->unk00 = 0x6000000; + tmp->unk04 = tmp2; +} +#endif + + +void func_80078100(void){ + D_80126100 = func_8007957C(); + osCreateMesgQueue(&D_80125EA0, &D_80125EB8,1); + osCreateMesgQueue(&D_80125EC0, &D_80125EF0,8); + osCreateMesgQueue(&D_80125ED8, &D_80125F10,8); + +} + +void func_80078170(u32 arg0, u32 arg1, u32 arg2){ + D_800DE4C4 = arg0; + D_800DE4C8 = arg1; + D_800DE4C0 = arg2 << 2; +} + + GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078190.s") GLOBAL_ASM("asm/non_matchings/unknown_078050/func_800787FC.s") -GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078AAC.s") + +void func_80078AAC(u32 arg0){ + D_800DE4D0 = arg0; +} + GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078AB8.s") GLOBAL_ASM("asm/non_matchings/unknown_078050/func_80078D00.s") diff --git a/src/unknown_079F50.c b/src/unknown_079F50.c index 3583a059..981de577 100644 --- a/src/unknown_079F50.c +++ b/src/unknown_079F50.c @@ -3,12 +3,147 @@ #include "types.h" #include "macros.h" +#include "libultra_internal.h" + +#define OS_SC_RETRACE_MSG 1 +#define OS_SC_PRE_NMI_MSG 4 +#define OS_SC_MAX_MESGS 8 + +typedef struct { + short type; + char misc[30]; +} OSScMsg; + +typedef struct OSScTask_s { + struct OSScTask_s *next; /* note: this must be first */ + u32 state; + u32 flags; + void *framebuffer; /* used by graphics tasks */ + + OSTask list; + OSMesgQueue *msgQ; + OSMesg msg; +#ifndef _FINALROM /* all #ifdef items should */ + OSTime startTime; /* remain at the end!!, or */ + OSTime totalTime; /* possible conflict if */ +#endif /* FINALROM library used with */ +} OSScTask; /* non FINALROM code */ + + +typedef struct SCClient_s { + u8 unk0; + struct SCClient_s *next; /* next client in the list */ + OSMesgQueue *msgQ; /* where to send the frame msg */ +} OSScClient; + +typedef struct { + OSScMsg retraceMsg; + OSScMsg prenmiMsg; + OSMesgQueue interruptQ; + OSMesg intBuf[OS_SC_MAX_MESGS]; + OSMesgQueue cmdQ; + OSMesg cmdMsgBuf[OS_SC_MAX_MESGS]; + OSThread thread; + OSScClient *clientList; + OSScTask *audioListHead; + OSScTask *gfxListHead; + OSScTask *audioListTail; + OSScTask *gfxListTail; + OSScTask *curRSPTask; + OSScTask *curRDPTask; + u32 frameCount; + s32 doAudio; +} OSSched; + +typedef struct{ + u8 pad00[0x50]; +}unk800E3900; + +extern u32 D_800DE754; +extern u32 D_800DE758; +extern OSViMode D_800E3900[];//osViModeTable; + +extern s32 D_80126120; + +void __scMain(void); + +void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 numFields){ + sc->curRSPTask = 0; + sc->curRDPTask = 0; + sc->clientList = 0; + + sc->audioListHead = 0; + sc->gfxListHead = 0; + sc->audioListTail = 0; + sc->gfxListTail = 0; + sc->doAudio = 0; + sc->frameCount = 0; + sc->retraceMsg.type = OS_SC_RETRACE_MSG; /* sent to apps */ + sc->prenmiMsg.type = OS_SC_PRE_NMI_MSG; + + /* + * Set up video manager, listen for Video, RSP, and RDP interrupts + */ + osCreateViManager(OS_PRIORITY_VIMGR); + osViSetMode(&D_800E3900[mode]); + osViBlack(TRUE); + + osCreateMesgQueue(&sc->interruptQ, sc->intBuf, OS_SC_MAX_MESGS); + osCreateMesgQueue(&sc->cmdQ, sc->cmdMsgBuf, OS_SC_MAX_MESGS); + + osSetEventMesg(OS_EVENT_SP, &sc->interruptQ, (OSMesg)667); + osSetEventMesg(OS_EVENT_DP, &sc->interruptQ, (OSMesg)668); + osSetEventMesg(OS_EVENT_PRENMI, &sc->interruptQ, (OSMesg)669); + + osViSetEventMsg(&sc->interruptQ, (OSMesg)666, numFields); + + + osCreateThread(&sc->thread, 5, __scMain, (void *)sc, stack, priority); + osStartThread(&sc->thread); +} + +void osScAddClient(OSSched *sc, OSScClient *c, OSMesgQueue *msgQ, u8 arg3){ + OSIntMask mask; + + mask = osSetIntMask(OS_IM_NONE); + + c->msgQ = msgQ; + c->next = sc->clientList; + c->unk0 = arg3; + sc->clientList = c; + + osSetIntMask(mask); +} + +void osScRemoveClient(OSSched *sc, OSScClient *c) +{ + OSScClient *client = sc->clientList; + OSScClient *prev = 0; + OSIntMask mask; + + mask = osSetIntMask(OS_IM_NONE); + + while (client != 0) { + if (client == c) { + if(prev) + prev->next = c->next; + else + sc->clientList = c->next; + break; + } + prev = client; + client = client->next; + } + + osSetIntMask(mask); +} + +OSMesgQueue *osScGetCmdQ(OSSched *sc){ + return &sc->cmdQ; +} -GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079350.s") -GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079480.s") -GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079574.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_8007957C.s") -GLOBAL_ASM("asm/non_matchings/unknown_079F50/D_800795AC.s") +GLOBAL_ASM("asm/non_matchings/unknown_079F50/__scMain.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079760.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079818.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079B44.s") @@ -16,7 +151,49 @@ GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079D5C.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079DE8.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079E40.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079F40.s") -GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079FA8.s") + +void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp) +{ + + if (sp) { + if (sp->list.t.type == M_AUDTASK) { + osWritebackDCacheAll(); /* flush the cache */ + D_80126120 = osGetCount(); + } + + //sp->state &= ~(OS_SC_YIELD | OS_SC_YIELDED); + sp->state &= -49; + osSpTaskLoad(&sp->list); + osSpTaskStartGo(&sp->list); + D_800DE754 = 0; + D_800DE758 = 0; + sc->curRSPTask = sp; + + if (sp == dp) + sc->curRDPTask = dp; + } + + if (dp && (dp != sp)) { + osDpSetNextBuffer(dp->list.t.output_buff, + *dp->list.t.output_buff_size); + sc->curRDPTask = dp; + } +} + +#if 1 GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_8007A080.s") +#else +extern OSTime D_80126118; +void func_8007A080(OSSched *sc) +{ + if (sc->curRSPTask->list.t.type == M_GFXTASK) { + + //sc->curRSPTask->state |= OS_SC_YIELD; + sc->curRSPTask->state |= 0x10; + D_80126118 = osGetTime(); //TODO extra lui + osSpTaskYield(); + } +} +#endif GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_8007A0D4.s") GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_8007A2D0.s") diff --git a/undefined_syms.txt b/undefined_syms.txt index 842860ec..81e1aa7c 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -42,7 +42,7 @@ alAuxBusParam = 0x800659D4; D_80065D40 = 0x80065D40; D_80065D98 = 0x80065D98; D_8006C330 = 0x8006C330; -D_800795AC = 0x800795AC; +__scMain = 0x800795AC; D_8008F618 = 0x8008F618; D_800B6FC4 = 0x800B6FC4; func_800C7340 = 0x800C7340;