Decompile osSetTimer

This commit is contained in:
Ryan Dwyer 2021-01-31 12:47:42 +10:00
parent 4c54f30cc1
commit 12ae6574e5
3 changed files with 27 additions and 64 deletions

View File

@ -102,6 +102,7 @@ $(B_DIR)/lib/ultra/os/resetglobalintmask.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/os/sendmesg.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/os/seteventmesg.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/os/setthreadpri.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/os/settimer.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/os/startthread.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/os/stopthread.o: OPT_LVL := -O1
$(B_DIR)/lib/ultra/os/stoptimer.o: OPT_LVL := -O1

View File

@ -20,6 +20,6 @@ typedef u64 OSTime;
OSTime osGetTime(void);
void osSetTime(OSTime time);
u32 osSetTimer(OSTimer *, OSTime, u64, OSMesgQueue *, OSMesg);
int osSetTimer(OSTimer *t, OSTime value, OSTime interval, OSMesgQueue *mq, OSMesg msg);
#endif

View File

@ -1,65 +1,27 @@
#include <libultra_internal.h>
#include "game/data/data_000000.h"
GLOBAL_ASM(
glabel osSetTimer
/* 48b20: 27bdffe0 */ addiu $sp,$sp,-32
/* 48b24: afa40020 */ sw $a0,0x20($sp)
/* 48b28: 8fae0020 */ lw $t6,0x20($sp)
/* 48b2c: afbf0014 */ sw $ra,0x14($sp)
/* 48b30: afa60028 */ sw $a2,0x28($sp)
/* 48b34: afa7002c */ sw $a3,0x2c($sp)
/* 48b38: adc00000 */ sw $zero,0x0($t6)
/* 48b3c: 8faf0020 */ lw $t7,0x20($sp)
/* 48b40: ade00004 */ sw $zero,0x4($t7)
/* 48b44: 8fa80020 */ lw $t0,0x20($sp)
/* 48b48: 8fb90034 */ lw $t9,0x34($sp)
/* 48b4c: 8fb80030 */ lw $t8,0x30($sp)
/* 48b50: ad19000c */ sw $t9,0xc($t0)
/* 48b54: ad180008 */ sw $t8,0x8($t0)
/* 48b58: 8faa0028 */ lw $t2,0x28($sp)
/* 48b5c: 8fab002c */ lw $t3,0x2c($sp)
/* 48b60: 15400003 */ bnez $t2,.L00048b70
/* 48b64: 00000000 */ nop
/* 48b68: 11600005 */ beqz $t3,.L00048b80
/* 48b6c: 00000000 */ nop
.L00048b70:
/* 48b70: 8fa90020 */ lw $t1,0x20($sp)
/* 48b74: ad2a0010 */ sw $t2,0x10($t1)
/* 48b78: 10000006 */ b .L00048b94
/* 48b7c: ad2b0014 */ sw $t3,0x14($t1)
.L00048b80:
/* 48b80: 8fae0020 */ lw $t6,0x20($sp)
/* 48b84: 8fac0030 */ lw $t4,0x30($sp)
/* 48b88: 8fad0034 */ lw $t5,0x34($sp)
/* 48b8c: adcc0010 */ sw $t4,0x10($t6)
/* 48b90: adcd0014 */ sw $t5,0x14($t6)
.L00048b94:
/* 48b94: 8faf0038 */ lw $t7,0x38($sp)
/* 48b98: 8fb80020 */ lw $t8,0x20($sp)
/* 48b9c: af0f0018 */ sw $t7,0x18($t8)
/* 48ba0: 8fa80020 */ lw $t0,0x20($sp)
/* 48ba4: 8fb9003c */ lw $t9,0x3c($sp)
/* 48ba8: ad19001c */ sw $t9,0x1c($t0)
/* 48bac: 0c01250a */ jal __osInsertTimer
/* 48bb0: 8fa40020 */ lw $a0,0x20($sp)
/* 48bb4: 3c0a8006 */ lui $t2,%hi(__osTimerList)
/* 48bb8: 8d4a08a0 */ lw $t2,%lo(__osTimerList)($t2)
/* 48bbc: afa20018 */ sw $v0,0x18($sp)
/* 48bc0: afa3001c */ sw $v1,0x1c($sp)
/* 48bc4: 8fa90020 */ lw $t1,0x20($sp)
/* 48bc8: 8d4b0000 */ lw $t3,0x0($t2)
/* 48bcc: 15690004 */ bne $t3,$t1,.L00048be0
/* 48bd0: 00000000 */ nop
/* 48bd4: 8fa40018 */ lw $a0,0x18($sp)
/* 48bd8: 0c0124ed */ jal __osSetTimerIntr
/* 48bdc: 8fa5001c */ lw $a1,0x1c($sp)
.L00048be0:
/* 48be0: 8fbf0014 */ lw $ra,0x14($sp)
/* 48be4: 27bd0020 */ addiu $sp,$sp,0x20
/* 48be8: 00001025 */ or $v0,$zero,$zero
/* 48bec: 03e00008 */ jr $ra
/* 48bf0: 00000000 */ nop
/* 48bf4: 00000000 */ nop
/* 48bf8: 00000000 */ nop
/* 48bfc: 00000000 */ nop
);
int osSetTimer(OSTimer *t, OSTime value, OSTime interval, OSMesgQueue *mq, OSMesg msg)
{
OSTime time;
t->next = NULL;
t->prev = NULL;
t->interval = interval;
if (value != 0) {
t->remaining = value;
} else {
t->remaining = interval;
}
t->mq = mq;
t->msg = msg;
time = __osInsertTimer(t);
if (__osTimerList->next == t) {
__osSetTimerIntr(time);
}
return 0;
}