mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-08-05 17:23:32 -04:00
Decompile __scHandleRDP
This commit is contained in:
+28
-59
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -3,6 +3,4 @@
|
||||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
u32 func00048c80(void);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user