Decompile __scHandleRDP

This commit is contained in:
Ryan Dwyer
2021-01-25 17:21:21 +10:00
parent 98ffa1d95c
commit c43f87d766
5 changed files with 34 additions and 62 deletions
+28 -59
View File
@@ -1968,65 +1968,34 @@ glabel func00002580
/* 2628: 00000000 */ nop
);
GLOBAL_ASM(
glabel __scHandleRDP
/* 262c: 27bdffd0 */ addiu $sp,$sp,-48
/* 2630: afbf001c */ sw $ra,0x1c($sp)
/* 2634: afb00018 */ sw $s0,0x18($sp)
/* 2638: afa00028 */ sw $zero,0x28($sp)
/* 263c: afa00024 */ sw $zero,0x24($sp)
/* 2640: 8c8e00cc */ lw $t6,0xcc($a0)
/* 2644: 00808025 */ or $s0,$a0,$zero
/* 2648: 51c0002a */ beqzl $t6,.L000026f4
/* 264c: 8fbf001c */ lw $ra,0x1c($sp)
/* 2650: 0c000960 */ jal func00002580
/* 2654: 00000000 */ nop
/* 2658: 3c0f8006 */ lui $t7,%hi(var8005dd18)
/* 265c: 8defdd18 */ lw $t7,%lo(var8005dd18)($t7)
/* 2660: 55e00004 */ bnezl $t7,.L00002674
/* 2664: 3c040001 */ lui $a0,0x1
/* 2668: 0c000b64 */ jal func00002d90
/* 266c: 00000000 */ nop
/* 2670: 3c040001 */ lui $a0,0x1
.L00002674:
/* 2674: 0c0026a8 */ jal func00009aa0
/* 2678: 34840002 */ ori $a0,$a0,0x2
/* 267c: 3c048009 */ lui $a0,%hi(var8008de38)
/* 2680: 0c012320 */ jal func00048c80
/* 2684: 2484de38 */ addiu $a0,$a0,%lo(var8008de38)
/* 2688: 8e0500cc */ lw $a1,0xcc($s0)
/* 268c: ae0000cc */ sw $zero,0xcc($s0)
/* 2690: 2401fffe */ addiu $at,$zero,-2
/* 2694: 8cb80004 */ lw $t8,0x4($a1)
/* 2698: 02002025 */ or $a0,$s0,$zero
/* 269c: 0301c824 */ and $t9,$t8,$at
/* 26a0: 0c0009da */ jal __scTaskComplete
/* 26a4: acb90004 */ sw $t9,0x4($a1)
/* 26a8: 8e0800c8 */ lw $t0,0xc8($s0)
/* 26ac: 8e0b00cc */ lw $t3,0xcc($s0)
/* 26b0: 02002025 */ or $a0,$s0,$zero
/* 26b4: 2d090001 */ sltiu $t1,$t0,0x1
/* 26b8: 00095040 */ sll $t2,$t1,0x1
/* 26bc: 2d6c0001 */ sltiu $t4,$t3,0x1
/* 26c0: 014c3825 */ or $a3,$t2,$t4
/* 26c4: afa70020 */ sw $a3,0x20($sp)
/* 26c8: 27a50028 */ addiu $a1,$sp,0x28
/* 26cc: 0c000aeb */ jal __scSchedule
/* 26d0: 27a60024 */ addiu $a2,$sp,0x24
/* 26d4: 8fa70020 */ lw $a3,0x20($sp)
/* 26d8: 02002025 */ or $a0,$s0,$zero
/* 26dc: 8fa50028 */ lw $a1,0x28($sp)
/* 26e0: 50470004 */ beql $v0,$a3,.L000026f4
/* 26e4: 8fbf001c */ lw $ra,0x1c($sp)
/* 26e8: 0c000aa1 */ jal __scExec
/* 26ec: 8fa60024 */ lw $a2,0x24($sp)
/* 26f0: 8fbf001c */ lw $ra,0x1c($sp)
.L000026f4:
/* 26f4: 8fb00018 */ lw $s0,0x18($sp)
/* 26f8: 27bd0030 */ addiu $sp,$sp,0x30
/* 26fc: 03e00008 */ jr $ra
/* 2700: 00000000 */ nop
);
void __scHandleRDP(OSSched *sc)
{
OSScTask *t, *sp = NULL, *dp = NULL;
s32 state;
if (sc->curRDPTask != NULL) {
func00002580();
if (var8005dd18 == 0) {
func00002d90();
}
func00009aa0(0x10002);
osDpGetCounters(&var8008de38);
t = sc->curRDPTask;
sc->curRDPTask = NULL;
t->state &= ~OS_SC_NEEDS_RDP;
__scTaskComplete(sc, t);
state = ((sc->curRSPTask == 0) << 1) | (sc->curRDPTask == 0);
if (__scSchedule(sc, &sp, &dp, state) != state) {
__scExec(sc, sp, dp);
}
}
}
GLOBAL_ASM(
glabel func00002704
+3
View File
@@ -13,6 +13,7 @@ s32 func00001e30(void);
s32 func00001fa8(void);
s32 func00002078(OSSched *sc);
void __scHandleRSP(OSSched *sc);
void __scHandleRDP(OSSched *sc);
void __scHandleRetrace(OSSched *sc);
void __scAppendList(OSSched *sc, OSScTask *t);
void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp);
@@ -21,5 +22,7 @@ struct bootbufferthing *func0000244c(void);
void func00002400(void);
void func000024e8(void);
void func00002510(void);
void func00002580(void);
void func00002d90(void);
#endif
-2
View File
@@ -3,6 +3,4 @@
#include <ultra64.h>
#include "types.h"
u32 func00048c80(void);
#endif
+2
View File
@@ -3,6 +3,8 @@
#include <ultra64.h>
#include "types.h"
extern s32 var8005dd18;
void mainInit(void);
void mainEntry(void);
void func0000db30(char *string, u32 *ptr);
+1 -1
View File
@@ -51,7 +51,7 @@ glabel osSpTaskYielded
);
GLOBAL_ASM(
glabel func00048c80
glabel osDpGetCounters
/* 48c80: 3c0ea410 */ lui $t6,0xa410
/* 48c84: 8dcf0010 */ lw $t7,0x10($t6)
/* 48c88: 3c18a410 */ lui $t8,0xa410