c: osScAddClient, osScRemoveClient

This commit is contained in:
Mittenz
2020-08-19 01:04:43 -05:00
parent 7c5a37f6ae
commit c9327232c2
6 changed files with 44 additions and 39 deletions
@@ -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
@@ -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)
@@ -1,30 +1,4 @@
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
glabel osScRemoveClient
/* 07A0E4 800794E4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 07A0E8 800794E8 AFBF0014 */ sw $ra, 0x14($sp)
/* 07A0EC 800794EC AFA40020 */ sw $a0, 0x20($sp)
@@ -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
+2 -2
View File
@@ -1437,7 +1437,7 @@ extern s32 D_80123544;
extern s32 D_801234E8;
void osCreateScheduler(u16*, s32*, s32, u8, s32);
void func_80079480(u16*, u8*, s32**, s32);
void osScAddClient(u16*, u8*, s32**, s32);
void func_8006C3E0(void) {
s32 sp24;
@@ -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;
+38 -7
View File
@@ -5,9 +5,6 @@
#include "macros.h"
#include "libultra_internal.h"
#if 0
GLOBAL_ASM("asm/non_matchings/unknown_079F50/osCreateScheduler.s")
#else
#define OS_SC_RETRACE_MSG 1
#define OS_SC_PRE_NMI_MSG 4
#define OS_SC_MAX_MESGS 8
@@ -34,6 +31,7 @@ typedef struct OSScTask_s {
typedef struct SCClient_s {
u8 unk0;
struct SCClient_s *next; /* next client in the list */
OSMesgQueue *msgQ; /* where to send the frame msg */
} OSScClient;
@@ -79,8 +77,6 @@ void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 num
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
*/
@@ -101,9 +97,44 @@ void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 num
osCreateThread(&sc->thread, 5, __scMain, (void *)sc, stack, priority);
osStartThread(&sc->thread);
}
#endif
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079480.s")
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);
}
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/__scMain.s")