Decompile osSpTaskYeilded

This commit is contained in:
Ryan Dwyer 2021-01-26 19:58:32 +10:00
parent a15686b075
commit cc9df2b186
10 changed files with 26 additions and 63 deletions

View File

@ -68,6 +68,7 @@ $(B_DIR)/lib/libc/llcvt.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/io/dpctr.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/io/sp.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/io/spsetpc.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/io/sptaskyielded.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/io/vigetcurrframebuf.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/io/vigetnextframebuf.o: OPT_LVL := -O1

View File

@ -99,7 +99,7 @@
build/ROMID/lib/ultra/os/sendmesg.o (section); \
build/ROMID/lib/ultra/os/stoptimer.o (section); \
build/ROMID/lib/ultra/os/settimer.o (section); \
build/ROMID/lib/lib_48c00.o (section); \
build/ROMID/lib/ultra/io/sptaskyielded.o (section); \
build/ROMID/lib/ultra/io/dpctr.o (section); \
build/ROMID/lib/lib_48cd0.o (section); \
build/ROMID/lib/lib_48dc0.o (section); \

View File

@ -27,7 +27,6 @@
#include "lib/lib_48150.h"
#include "lib/lib_481d0.h"
#include "lib/lib_485e0.h"
#include "lib/lib_48c00.h"
#include "lib/lib_48cd0.h"
#include "lib/lib_48dc0.h"
#include "lib/lib_48ef0.h"

View File

@ -28,7 +28,6 @@
#include "lib/lib_48150.h"
#include "lib/lib_481d0.h"
#include "lib/lib_485e0.h"
#include "lib/lib_48c00.h"
#include "lib/lib_48cd0.h"
#include "lib/lib_48dc0.h"
#include "lib/lib_48ef0.h"

View File

@ -28,7 +28,6 @@
#include "lib/lib_48150.h"
#include "lib/lib_481d0.h"
#include "lib/lib_485e0.h"
#include "lib/lib_48c00.h"
#include "lib/lib_48cd0.h"
#include "lib/lib_48dc0.h"
#include "lib/lib_48ef0.h"

View File

@ -1,6 +0,0 @@
#ifndef _IN_LIB_LIB_48C00_H
#define _IN_LIB_LIB_48C00_H
#include <ultra64.h>
#include "types.h"
#endif

View File

@ -3,6 +3,6 @@
#include <ultra64.h>
#include "types.h"
u32 func00051890(void);
u32 __osSpGetStatus(void);
#endif

View File

@ -1,51 +0,0 @@
#include <ultra64.h>
#include "constants.h"
#include "game/data/data_000000.h"
#include "game/data/data_0083d0.h"
#include "game/data/data_00e460.h"
#include "game/data/data_0160b0.h"
#include "game/data/data_01a3a0.h"
#include "game/data/data_020df0.h"
#include "game/data/data_02da90.h"
#include "gvars/gvars.h"
#include "lib/lib_51890.h"
#include "types.h"
GLOBAL_ASM(
glabel osSpTaskYielded
/* 48c00: 27bdffe0 */ addiu $sp,$sp,-32
/* 48c04: afbf0014 */ sw $ra,0x14($sp)
/* 48c08: 0c014624 */ jal func00051890
/* 48c0c: afa40020 */ sw $a0,0x20($sp)
/* 48c10: afa2001c */ sw $v0,0x1c($sp)
/* 48c14: 8fae001c */ lw $t6,0x1c($sp)
/* 48c18: 31cf0100 */ andi $t7,$t6,0x100
/* 48c1c: 11e00004 */ beqz $t7,.L00048c30
/* 48c20: 00000000 */ nop
/* 48c24: 24180001 */ addiu $t8,$zero,0x1
/* 48c28: 10000002 */ b .L00048c34
/* 48c2c: afb80018 */ sw $t8,0x18($sp)
.L00048c30:
/* 48c30: afa00018 */ sw $zero,0x18($sp)
.L00048c34:
/* 48c34: 8fb9001c */ lw $t9,0x1c($sp)
/* 48c38: 33280080 */ andi $t0,$t9,0x80
/* 48c3c: 1100000b */ beqz $t0,.L00048c6c
/* 48c40: 00000000 */ nop
/* 48c44: 8fa90020 */ lw $t1,0x20($sp)
/* 48c48: 8fab0018 */ lw $t3,0x18($sp)
/* 48c4c: 2401fffd */ addiu $at,$zero,-3
/* 48c50: 8d2a0004 */ lw $t2,0x4($t1)
/* 48c54: 014b6025 */ or $t4,$t2,$t3
/* 48c58: ad2c0004 */ sw $t4,0x4($t1)
/* 48c5c: 8fad0020 */ lw $t5,0x20($sp)
/* 48c60: 8dae0004 */ lw $t6,0x4($t5)
/* 48c64: 01c17824 */ and $t7,$t6,$at
/* 48c68: adaf0004 */ sw $t7,0x4($t5)
.L00048c6c:
/* 48c6c: 8fbf0014 */ lw $ra,0x14($sp)
/* 48c70: 8fa20018 */ lw $v0,0x18($sp)
/* 48c74: 27bd0020 */ addiu $sp,$sp,0x20
/* 48c78: 03e00008 */ jr $ra
/* 48c7c: 00000000 */ nop
);

View File

@ -11,7 +11,7 @@
#include "types.h"
GLOBAL_ASM(
glabel func00051890
glabel __osSpGetStatus
/* 51890: 3c0ea404 */ lui $t6,0xa404
/* 51894: 03e00008 */ jr $ra
/* 51898: 8dc20010 */ lw $v0,0x10($t6)

View File

@ -0,0 +1,22 @@
#include "libultra_internal.h"
OSYieldResult osSpTaskYielded(OSTask *tp)
{
u32 status;
OSYieldResult result;
status = __osSpGetStatus();
if (status & SP_STATUS_YIELDED) {
result = OS_TASK_YIELDED;
} else {
result = 0;
}
if (status & SP_STATUS_YIELD) {
tp->t.flags |= result;
tp->t.flags &= ~(OS_TASK_DP_WAIT);
}
return result;
}