Decompile osContStartReadData

This commit is contained in:
Ryan Dwyer 2020-10-02 23:34:37 +10:00
parent 162cdd51ce
commit ce14f586db
12 changed files with 141 additions and 109 deletions

View File

@ -14624,7 +14624,7 @@ u32 var8009c7d0 = 0;
u32 var8009c7d4 = 0;
u32 var8009c7d8 = 0;
u32 var8009c7dc = 0;
u32 var8009c7e0 = 0;
u32 __osContPifRam = 0;
u32 var8009c7e4 = 0;
u32 var8009c7e8 = 0;
u32 var8009c7ec = 0;
@ -14640,7 +14640,7 @@ u32 var8009c810 = 0;
u32 var8009c814 = 0;
u32 var8009c818 = 0;
u32 var8009c81c = 0;
u32 var8009c820 = 0;
u8 __osContLastCmd = 0;
u32 var8009c824 = 0;
u32 var8009c828 = 0;
u32 var8009c82c = 0;

View File

@ -508,9 +508,9 @@ extern u32 var8009c7a0;
extern u32 var8009c7a8;
extern u32 var8009c7c0;
extern u32 var8009c7c8;
extern u32 var8009c7e0;
extern u32 __osContPifRam;
extern u32 var8009c81c;
extern u32 var8009c820;
extern u8 __osContLastCmd;
extern u32 var8009c828;
extern u32 var8009c848;
extern u32 var8009c860;

View File

@ -3,9 +3,4 @@
#include <ultra64.h>
#include "types.h"
u32 __osSiCreateAccessQueue(void);
u32 __osSiGetAccess(void);
u32 __osSiRelAccess(void);
u32 __osSiRawStartDma(void);
#endif

View File

@ -0,0 +1,51 @@
#ifndef _LIBULTRA_INTERNAL_H_
#define _LIBULTRA_INTERNAL_H_
#include <ultra64.h>
typedef struct
{
u32 initialized; //probably something like initialized?
OSThread *mgrThread;
OSMesgQueue *unk08;
OSMesgQueue *unk0c;
OSMesgQueue *unk10;
s32 (*dma_func)(s32,u32,void*,size_t);
u64 force_align;
} OSMgrArgs;
s32 __osDisableInt();
void __osRestoreInt(s32);
void __osEnqueueAndYield(OSThread**);
void __osDequeueThread(OSThread**, OSThread*);
void __osEnqueueThread(OSThread**, OSThread*);
OSThread* __osPopThread(OSThread**);
s32 __osSiRawStartDma(s32, void*);
void __osSiCreateAccessQueue();
void __osSiGetAccess();
void __osSiRelAccess();
u32 __osProbeTLB(void*);
void __osPiCreateAccessQueue();
void __osPiGetAccess();
void __osSetSR(u32);
u32 __osGetSR();
void __osSetFpcCsr(u32);
s32 __osSiRawReadIo(void*, u32*);
s32 __osSiRawWriteIo(void*, u32);
s32 osPiRawReadIo(u32 a0, u32 *a1);
void __osSpSetStatus(u32);
u32 __osSpGetStatus();
s32 __osSpSetPc(void*);
s32 __osSpDeviceBusy();
s32 __osSiDeviceBusy();
s32 __osSpRawStartDma(u32 dir, void *sp_ptr, void *dram_ptr, size_t size);
void __osViInit();
OSViContext * __osViGetCurrentContext();
void __osViSwapContext();
void __osSetTimerIntr(u64);
u64 __osInsertTimer(OSTimer *);
void __osSetCompare(u32);
s32 __osAiDeviceBusy();
void __osDispatchThread();
u32 __osGetCause();
s32 __osAtomicDec(u32*);
#endif

View File

@ -1010,10 +1010,10 @@ glabel func00005770
/* 57a4: 0000a825 */ or $s5,$zero,$zero
/* 57a8: 0c012a18 */ jal __osSiGetAccess
/* 57ac: 24110001 */ addiu $s1,$zero,0x1
/* 57b0: 3c1e800a */ lui $s8,%hi(var8009c820+0x1)
/* 57b0: 3c1e800a */ lui $s8,%hi(__osContLastCmd+0x1)
/* 57b4: 3c138009 */ lui $s3,%hi(var80090a20)
/* 57b8: 26730a20 */ addiu $s3,$s3,%lo(var80090a20)
/* 57bc: 27dec821 */ addiu $s8,$s8,%lo(var8009c820+0x1)
/* 57bc: 27dec821 */ addiu $s8,$s8,%lo(__osContLastCmd+0x1)
/* 57c0: 00008025 */ or $s0,$zero,$zero
/* 57c4: 27b70054 */ addiu $s7,$sp,0x54
/* 57c8: 27b60067 */ addiu $s6,$sp,0x67
@ -1108,14 +1108,14 @@ GLOBAL_ASM(
glabel func000058fc
/* 58fc: 27bdfff0 */ addiu $sp,$sp,-16
/* 5900: 3c058009 */ lui $a1,%hi(var80090a20)
/* 5904: 3c01800a */ lui $at,%hi(var8009c820)
/* 5904: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 5908: 24a20a20 */ addiu $v0,$a1,%lo(var80090a20)
/* 590c: afa40010 */ sw $a0,0x10($sp)
/* 5910: a024c820 */ sb $a0,%lo(var8009c820)($at)
/* 5910: a024c820 */ sb $a0,%lo(__osContLastCmd)($at)
/* 5914: 240f0001 */ addiu $t7,$zero,0x1
/* 5918: ac4f003c */ sw $t7,0x3c($v0)
/* 591c: 3c06800a */ lui $a2,%hi(var8009c820+0x1)
/* 5920: 24c6c821 */ addiu $a2,$a2,%lo(var8009c820+0x1)
/* 591c: 3c06800a */ lui $a2,%hi(__osContLastCmd+0x1)
/* 5920: 24c6c821 */ addiu $a2,$a2,%lo(__osContLastCmd+0x1)
/* 5924: 90cd0000 */ lbu $t5,0x0($a2)
/* 5928: 241800ff */ addiu $t8,$zero,0xff
/* 592c: 24190001 */ addiu $t9,$zero,0x1
@ -1157,8 +1157,8 @@ glabel func000058fc
GLOBAL_ASM(
glabel func000059b0
/* 59b0: 3c07800a */ lui $a3,%hi(var8009c820+0x1)
/* 59b4: 24e7c821 */ addiu $a3,$a3,%lo(var8009c820+0x1)
/* 59b0: 3c07800a */ lui $a3,%hi(__osContLastCmd+0x1)
/* 59b4: 24e7c821 */ addiu $a3,$a3,%lo(__osContLastCmd+0x1)
/* 59b8: 90ee0000 */ lbu $t6,0x0($a3)
/* 59bc: 3c038009 */ lui $v1,%hi(var80090a20)
/* 59c0: 27bdffe8 */ addiu $sp,$sp,-24

View File

@ -73,12 +73,12 @@ glabel func0004a980
/* 4aa4c: 24060001 */ addiu $a2,$zero,0x1
.L0004aa50:
/* 4aa50: 24180004 */ addiu $t8,$zero,0x4
/* 4aa54: 3c01800a */ lui $at,%hi(var8009c820+0x1)
/* 4aa58: a038c821 */ sb $t8,%lo(var8009c820+0x1)($at)
/* 4aa54: 3c01800a */ lui $at,%hi(__osContLastCmd+0x1)
/* 4aa58: a038c821 */ sb $t8,%lo(__osContLastCmd+0x1)($at)
/* 4aa5c: 0c012af0 */ jal func0004abc0
/* 4aa60: 00002025 */ or $a0,$zero,$zero
/* 4aa64: 3c05800a */ lui $a1,%hi(var8009c7e0)
/* 4aa68: 24a5c7e0 */ addiu $a1,$a1,%lo(var8009c7e0)
/* 4aa64: 3c05800a */ lui $a1,%hi(__osContPifRam)
/* 4aa68: 24a5c7e0 */ addiu $a1,$a1,%lo(__osContPifRam)
/* 4aa6c: 0c012a34 */ jal __osSiRawStartDma
/* 4aa70: 24040001 */ addiu $a0,$zero,0x1
/* 4aa74: afa20068 */ sw $v0,0x68($sp)
@ -86,8 +86,8 @@ glabel func0004a980
/* 4aa7c: 27a5006c */ addiu $a1,$sp,0x6c
/* 4aa80: 0c0121bc */ jal osRecvMesg
/* 4aa84: 24060001 */ addiu $a2,$zero,0x1
/* 4aa88: 3c05800a */ lui $a1,%hi(var8009c7e0)
/* 4aa8c: 24a5c7e0 */ addiu $a1,$a1,%lo(var8009c7e0)
/* 4aa88: 3c05800a */ lui $a1,%hi(__osContPifRam)
/* 4aa8c: 24a5c7e0 */ addiu $a1,$a1,%lo(__osContPifRam)
/* 4aa90: 0c012a34 */ jal __osSiRawStartDma
/* 4aa94: 00002025 */ or $a0,$zero,$zero
/* 4aa98: afa20068 */ sw $v0,0x68($sp)
@ -98,9 +98,9 @@ glabel func0004a980
/* 4aaac: 8fa40074 */ lw $a0,0x74($sp)
/* 4aab0: 0c012abc */ jal func0004aaf0
/* 4aab4: 8fa50078 */ lw $a1,0x78($sp)
/* 4aab8: 3c01800a */ lui $at,%hi(var8009c820)
/* 4aab8: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 4aabc: 0c012a04 */ jal __osSiCreateAccessQueue
/* 4aac0: a020c820 */ sb $zero,%lo(var8009c820)($at)
/* 4aac0: a020c820 */ sb $zero,%lo(__osContLastCmd)($at)
/* 4aac4: 3c04800a */ lui $a0,%hi(var8009c848)
/* 4aac8: 3c05800a */ lui $a1,%hi(var8009c860)
/* 4aacc: 24a5c860 */ addiu $a1,$a1,%lo(var8009c860)
@ -117,11 +117,11 @@ glabel func0004a980
GLOBAL_ASM(
glabel func0004aaf0
/* 4aaf0: 3c0f800a */ lui $t7,%hi(var8009c820+0x1)
/* 4aaf4: 91efc821 */ lbu $t7,%lo(var8009c820+0x1)($t7)
/* 4aaf0: 3c0f800a */ lui $t7,%hi(__osContLastCmd+0x1)
/* 4aaf4: 91efc821 */ lbu $t7,%lo(__osContLastCmd+0x1)($t7)
/* 4aaf8: 27bdffe8 */ addiu $sp,$sp,-24
/* 4aafc: 3c0e800a */ lui $t6,%hi(var8009c7e0)
/* 4ab00: 25cec7e0 */ addiu $t6,$t6,%lo(var8009c7e0)
/* 4aafc: 3c0e800a */ lui $t6,%hi(__osContPifRam)
/* 4ab00: 25cec7e0 */ addiu $t6,$t6,%lo(__osContPifRam)
/* 4ab04: a3a00007 */ sb $zero,0x7($sp)
/* 4ab08: afae0014 */ sw $t6,0x14($sp)
/* 4ab0c: 19e00028 */ blez $t7,.L0004abb0
@ -157,8 +157,8 @@ glabel func0004aaf0
/* 4ab80: a3ad0007 */ sb $t5,0x7($sp)
.L0004ab84:
/* 4ab84: 8fae0008 */ lw $t6,0x8($sp)
/* 4ab88: 3c19800a */ lui $t9,%hi(var8009c820+0x1)
/* 4ab8c: 9339c821 */ lbu $t9,%lo(var8009c820+0x1)($t9)
/* 4ab88: 3c19800a */ lui $t9,%hi(__osContLastCmd+0x1)
/* 4ab8c: 9339c821 */ lbu $t9,%lo(__osContLastCmd+0x1)($t9)
/* 4ab90: 8fa80014 */ lw $t0,0x14($sp)
/* 4ab94: 25cf0001 */ addiu $t7,$t6,0x1
/* 4ab98: 01f9082a */ slt $at,$t7,$t9
@ -182,20 +182,20 @@ glabel func0004abc0
.L0004abcc:
/* 4abcc: 8fae0000 */ lw $t6,0x0($sp)
/* 4abd0: 8fb80000 */ lw $t8,0x0($sp)
/* 4abd4: 3c01800a */ lui $at,%hi(var8009c7e0)
/* 4abd4: 3c01800a */ lui $at,%hi(__osContPifRam)
/* 4abd8: 000e7880 */ sll $t7,$t6,0x2
/* 4abdc: 002f0821 */ addu $at,$at,$t7
/* 4abe0: ac20c7e0 */ sw $zero,%lo(var8009c7e0)($at)
/* 4abe0: ac20c7e0 */ sw $zero,%lo(__osContPifRam)($at)
/* 4abe4: 27190001 */ addiu $t9,$t8,0x1
/* 4abe8: 2b21000f */ slti $at,$t9,0xf
/* 4abec: 1420fff7 */ bnez $at,.L0004abcc
/* 4abf0: afb90000 */ sw $t9,0x0($sp)
/* 4abf4: 3c19800a */ lui $t9,%hi(var8009c820+0x1)
/* 4abf8: 9339c821 */ lbu $t9,%lo(var8009c820+0x1)($t9)
/* 4abfc: 3c09800a */ lui $t1,%hi(var8009c7e0)
/* 4abf4: 3c19800a */ lui $t9,%hi(__osContLastCmd+0x1)
/* 4abf8: 9339c821 */ lbu $t9,%lo(__osContLastCmd+0x1)($t9)
/* 4abfc: 3c09800a */ lui $t1,%hi(__osContPifRam)
/* 4ac00: 24080001 */ addiu $t0,$zero,0x1
/* 4ac04: 3c01800a */ lui $at,%hi(var8009c81c)
/* 4ac08: 2529c7e0 */ addiu $t1,$t1,%lo(var8009c7e0)
/* 4ac08: 2529c7e0 */ addiu $t1,$t1,%lo(__osContPifRam)
/* 4ac0c: 240a00ff */ addiu $t2,$zero,0xff
/* 4ac10: 240b0001 */ addiu $t3,$zero,0x1
/* 4ac14: 240c0003 */ addiu $t4,$zero,0x3
@ -219,14 +219,14 @@ glabel func0004abc0
/* 4ac58: 27a90004 */ addiu $t1,$sp,0x4
/* 4ac5c: 8d210000 */ lw $at,0x0($t1)
/* 4ac60: 8fa8000c */ lw $t0,0xc($sp)
/* 4ac64: 3c18800a */ lui $t8,%hi(var8009c820+0x1)
/* 4ac64: 3c18800a */ lui $t8,%hi(__osContLastCmd+0x1)
/* 4ac68: a9010000 */ swl $at,0x0($t0)
/* 4ac6c: b9010003 */ swr $at,0x3($t0)
/* 4ac70: 8d2b0004 */ lw $t3,0x4($t1)
/* 4ac74: a90b0004 */ swl $t3,0x4($t0)
/* 4ac78: b90b0007 */ swr $t3,0x7($t0)
/* 4ac7c: 8fae0000 */ lw $t6,0x0($sp)
/* 4ac80: 9318c821 */ lbu $t8,%lo(var8009c820+0x1)($t8)
/* 4ac80: 9318c821 */ lbu $t8,%lo(__osContLastCmd+0x1)($t8)
/* 4ac84: 8fac000c */ lw $t4,0xc($sp)
/* 4ac88: 25cf0001 */ addiu $t7,$t6,0x1
/* 4ac8c: 01f8082a */ slt $at,$t7,$t8

View File

@ -71,10 +71,10 @@ glabel __osContRamWrite
/* 4b68c: 0010c0c3 */ sra $t8,$s0,0x3
/* 4b690: 0010c940 */ sll $t9,$s0,0x5
/* 4b694: 3c178006 */ lui $s7,%hi(var80060970)
/* 4b698: 3c16800a */ lui $s6,%hi(var8009c820)
/* 4b698: 3c16800a */ lui $s6,%hi(__osContLastCmd)
/* 4b69c: 3c138009 */ lui $s3,%hi(var80090a20)
/* 4b6a0: 26730a20 */ addiu $s3,$s3,%lo(var80090a20)
/* 4b6a4: 26d6c820 */ addiu $s6,$s6,%lo(var8009c820)
/* 4b6a4: 26d6c820 */ addiu $s6,$s6,%lo(__osContLastCmd)
/* 4b6a8: 26f70970 */ addiu $s7,$s7,%lo(var80060970)
/* 4b6ac: afb90040 */ sw $t9,0x40($sp)
/* 4b6b0: afb80044 */ sw $t8,0x44($sp)
@ -218,14 +218,14 @@ glabel __osContRamRead
/* 4b8a0: 24150002 */ addiu $s5,$zero,0x2
/* 4b8a4: 97a5006a */ lhu $a1,0x6a($sp)
/* 4b8a8: 3c1e8006 */ lui $s8,%hi(var80060970)
/* 4b8ac: 3c17800a */ lui $s7,%hi(var8009c820)
/* 4b8ac: 3c17800a */ lui $s7,%hi(__osContLastCmd)
/* 4b8b0: 3c148009 */ lui $s4,%hi(var80090a20)
/* 4b8b4: 000570c3 */ sra $t6,$a1,0x3
/* 4b8b8: 00057940 */ sll $t7,$a1,0x5
/* 4b8bc: afaf0040 */ sw $t7,0x40($sp)
/* 4b8c0: afae0044 */ sw $t6,0x44($sp)
/* 4b8c4: 26940a20 */ addiu $s4,$s4,%lo(var80090a20)
/* 4b8c8: 26f7c820 */ addiu $s7,$s7,%lo(var8009c820)
/* 4b8c8: 26f7c820 */ addiu $s7,$s7,%lo(__osContLastCmd)
/* 4b8cc: 27de0970 */ addiu $s8,$s8,%lo(var80060970)
.L0004b8d0:
/* 4b8d0: 92f80000 */ lbu $t8,0x0($s7)

View File

@ -78,10 +78,10 @@ glabel __osPfsRequestOneChannel
/* 4bb60: 27bdffe8 */ addiu $sp,$sp,-24
/* 4bb64: 3c068009 */ lui $a2,%hi(var80090a20)
/* 4bb68: 240700fe */ addiu $a3,$zero,0xfe
/* 4bb6c: 3c01800a */ lui $at,%hi(var8009c820)
/* 4bb6c: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 4bb70: 24c20a20 */ addiu $v0,$a2,%lo(var80090a20)
/* 4bb74: afa5001c */ sw $a1,0x1c($sp)
/* 4bb78: a027c820 */ sb $a3,%lo(var8009c820)($at)
/* 4bb78: a027c820 */ sb $a3,%lo(__osContLastCmd)($at)
/* 4bb7c: 240f0001 */ addiu $t7,$zero,0x1
/* 4bb80: ac4f003c */ sw $t7,0x3c($v0)
/* 4bb84: 24180001 */ addiu $t8,$zero,0x1
@ -249,8 +249,8 @@ glabel osEepromWrite
/* 4bdb8: 0c012a34 */ jal __osSiRawStartDma
/* 4bdbc: 00002025 */ or $a0,$zero,$zero
/* 4bdc0: 240c0005 */ addiu $t4,$zero,0x5
/* 4bdc4: 3c01800a */ lui $at,%hi(var8009c820)
/* 4bdc8: a02cc820 */ sb $t4,%lo(var8009c820)($at)
/* 4bdc4: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 4bdc8: a02cc820 */ sb $t4,%lo(__osContLastCmd)($at)
/* 4bdcc: 02202025 */ or $a0,$s1,$zero
/* 4bdd0: 00002825 */ or $a1,$zero,$zero
/* 4bdd4: 0c0121bc */ jal osRecvMesg
@ -388,9 +388,9 @@ glabel __osEepStatus
/* 4bfb4: 0c0121bc */ jal osRecvMesg
/* 4bfb8: 24060001 */ addiu $a2,$zero,0x1
/* 4bfbc: 241900fe */ addiu $t9,$zero,0xfe
/* 4bfc0: 3c01800a */ lui $at,%hi(var8009c820)
/* 4bfc0: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 4bfc4: 3c05800a */ lui $a1,%hi(var8009ca80)
/* 4bfc8: a039c820 */ sb $t9,%lo(var8009c820)($at)
/* 4bfc8: a039c820 */ sb $t9,%lo(__osContLastCmd)($at)
/* 4bfcc: 24a5ca80 */ addiu $a1,$a1,%lo(var8009ca80)
/* 4bfd0: 0c012a34 */ jal __osSiRawStartDma
/* 4bfd4: 00002025 */ or $a0,$zero,$zero

View File

@ -20,14 +20,14 @@ glabel func0004f350
/* 4f358: afa40020 */ sw $a0,0x20($sp)
/* 4f35c: 0c012a18 */ jal __osSiGetAccess
/* 4f360: afa0001c */ sw $zero,0x1c($sp)
/* 4f364: 3c0e800a */ lui $t6,%hi(var8009c820)
/* 4f368: 91cec820 */ lbu $t6,%lo(var8009c820)($t6)
/* 4f364: 3c0e800a */ lui $t6,%hi(__osContLastCmd)
/* 4f368: 91cec820 */ lbu $t6,%lo(__osContLastCmd)($t6)
/* 4f36c: 11c0000c */ beqz $t6,.L0004f3a0
/* 4f370: 00000000 */ nop
/* 4f374: 0c012af0 */ jal func0004abc0
/* 4f378: 00002025 */ or $a0,$zero,$zero
/* 4f37c: 3c05800a */ lui $a1,%hi(var8009c7e0)
/* 4f380: 24a5c7e0 */ addiu $a1,$a1,%lo(var8009c7e0)
/* 4f37c: 3c05800a */ lui $a1,%hi(__osContPifRam)
/* 4f380: 24a5c7e0 */ addiu $a1,$a1,%lo(__osContPifRam)
/* 4f384: 0c012a34 */ jal __osSiRawStartDma
/* 4f388: 24040001 */ addiu $a0,$zero,0x1
/* 4f38c: afa2001c */ sw $v0,0x1c($sp)
@ -36,14 +36,14 @@ glabel func0004f350
/* 4f398: 0c0121bc */ jal osRecvMesg
/* 4f39c: 24060001 */ addiu $a2,$zero,0x1
.L0004f3a0:
/* 4f3a0: 3c05800a */ lui $a1,%hi(var8009c7e0)
/* 4f3a4: 24a5c7e0 */ addiu $a1,$a1,%lo(var8009c7e0)
/* 4f3a0: 3c05800a */ lui $a1,%hi(__osContPifRam)
/* 4f3a4: 24a5c7e0 */ addiu $a1,$a1,%lo(__osContPifRam)
/* 4f3a8: 0c012a34 */ jal __osSiRawStartDma
/* 4f3ac: 00002025 */ or $a0,$zero,$zero
/* 4f3b0: 3c01800a */ lui $at,%hi(var8009c820)
/* 4f3b0: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 4f3b4: afa2001c */ sw $v0,0x1c($sp)
/* 4f3b8: 0c012a29 */ jal __osSiRelAccess
/* 4f3bc: a020c820 */ sb $zero,%lo(var8009c820)($at)
/* 4f3bc: a020c820 */ sb $zero,%lo(__osContLastCmd)($at)
/* 4f3c0: 8fbf0014 */ lw $ra,0x14($sp)
/* 4f3c4: 8fa2001c */ lw $v0,0x1c($sp)
/* 4f3c8: 27bd0020 */ addiu $sp,$sp,0x20

View File

@ -1,4 +1,5 @@
#include <ultra64.h>
#include <libultra_internal.h>
#include "constants.h"
#include "game/data/data_000000.h"
#include "game/data/data_0083d0.h"
@ -12,52 +13,37 @@
#include "lib/lib_4a810.h"
#include "types.h"
GLOBAL_ASM(
glabel osContStartReadData
/* 4f400: 27bdffe0 */ addiu $sp,$sp,-32
/* 4f404: afbf0014 */ sw $ra,0x14($sp)
/* 4f408: 0c012a18 */ jal __osSiGetAccess
/* 4f40c: afa40020 */ sw $a0,0x20($sp)
/* 4f410: 3c0e800a */ lui $t6,%hi(var8009c820)
/* 4f414: 91cec820 */ lbu $t6,%lo(var8009c820)($t6)
/* 4f418: 24010001 */ addiu $at,$zero,0x1
/* 4f41c: 11c1000b */ beq $t6,$at,.L0004f44c
/* 4f420: 00000000 */ nop
/* 4f424: 0c013d44 */ jal __osPackReadData
/* 4f428: 00000000 */ nop
/* 4f42c: 3c05800a */ lui $a1,%hi(var8009c7e0)
/* 4f430: 24a5c7e0 */ addiu $a1,$a1,%lo(var8009c7e0)
/* 4f434: 0c012a34 */ jal __osSiRawStartDma
/* 4f438: 24040001 */ addiu $a0,$zero,0x1
/* 4f43c: 8fa40020 */ lw $a0,0x20($sp)
/* 4f440: 00002825 */ or $a1,$zero,$zero
/* 4f444: 0c0121bc */ jal osRecvMesg
/* 4f448: 24060001 */ addiu $a2,$zero,0x1
.L0004f44c:
/* 4f44c: 3c05800a */ lui $a1,%hi(var8009c7e0)
/* 4f450: 24a5c7e0 */ addiu $a1,$a1,%lo(var8009c7e0)
/* 4f454: 0c012a34 */ jal __osSiRawStartDma
/* 4f458: 00002025 */ or $a0,$zero,$zero
/* 4f45c: 240f0001 */ addiu $t7,$zero,0x1
/* 4f460: 3c01800a */ lui $at,%hi(var8009c820)
/* 4f464: afa2001c */ sw $v0,0x1c($sp)
/* 4f468: 0c012a29 */ jal __osSiRelAccess
/* 4f46c: a02fc820 */ sb $t7,%lo(var8009c820)($at)
/* 4f470: 8fbf0014 */ lw $ra,0x14($sp)
/* 4f474: 8fa2001c */ lw $v0,0x1c($sp)
/* 4f478: 27bd0020 */ addiu $sp,$sp,0x20
/* 4f47c: 03e00008 */ jr $ra
/* 4f480: 00000000 */ nop
);
void __osPackReadData(void);
s32 osContStartReadData(OSMesgQueue *mq)
{
s32 ret = 0;
s32 i;
__osSiGetAccess();
if (__osContLastCmd != 1) {
__osPackReadData();
ret = __osSiRawStartDma(OS_WRITE, &__osContPifRam);
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
}
ret = __osSiRawStartDma(OS_READ, &__osContPifRam);
__osContLastCmd = 1;
__osSiRelAccess();
return ret;
}
GLOBAL_ASM(
glabel osContGetReadData
/* 4f484: 3c05800a */ lui $a1,%hi(var8009c820+0x1)
/* 4f488: 24a5c821 */ addiu $a1,$a1,%lo(var8009c820+0x1)
/* 4f484: 3c05800a */ lui $a1,%hi(__osContLastCmd+0x1)
/* 4f488: 24a5c821 */ addiu $a1,$a1,%lo(__osContLastCmd+0x1)
/* 4f48c: 90ae0000 */ lbu $t6,0x0($a1)
/* 4f490: 3c02800a */ lui $v0,%hi(var8009c7e0)
/* 4f490: 3c02800a */ lui $v0,%hi(__osContPifRam)
/* 4f494: 27bdfff0 */ addiu $sp,$sp,-16
/* 4f498: 2442c7e0 */ addiu $v0,$v0,%lo(var8009c7e0)
/* 4f498: 2442c7e0 */ addiu $v0,$v0,%lo(__osContPifRam)
/* 4f49c: 19c0001a */ blez $t6,.L0004f508
/* 4f4a0: 00001825 */ or $v1,$zero,$zero
/* 4f4a4: 27a60004 */ addiu $a2,$sp,0x4
@ -94,21 +80,21 @@ glabel osContGetReadData
GLOBAL_ASM(
glabel __osPackReadData
/* 4f510: 3c05800a */ lui $a1,%hi(var8009c7e0)
/* 4f514: 24a5c7e0 */ addiu $a1,$a1,%lo(var8009c7e0)
/* 4f518: 3c04800a */ lui $a0,%hi(var8009c7e0)
/* 4f510: 3c05800a */ lui $a1,%hi(__osContPifRam)
/* 4f514: 24a5c7e0 */ addiu $a1,$a1,%lo(__osContPifRam)
/* 4f518: 3c04800a */ lui $a0,%hi(__osContPifRam)
/* 4f51c: 3c03800a */ lui $v1,%hi(var8009c81c)
/* 4f520: 27bdffe8 */ addiu $sp,$sp,-24
/* 4f524: 00a01025 */ or $v0,$a1,$zero
/* 4f528: 2463c81c */ addiu $v1,$v1,%lo(var8009c81c)
/* 4f52c: 2484c7e0 */ addiu $a0,$a0,%lo(var8009c7e0)
/* 4f52c: 2484c7e0 */ addiu $a0,$a0,%lo(__osContPifRam)
.L0004f530:
/* 4f530: 24840004 */ addiu $a0,$a0,0x4
/* 4f534: 0083082b */ sltu $at,$a0,$v1
/* 4f538: 1420fffd */ bnez $at,.L0004f530
/* 4f53c: ac80fffc */ sw $zero,-0x4($a0)
/* 4f540: 3c04800a */ lui $a0,%hi(var8009c820+0x1)
/* 4f544: 2484c821 */ addiu $a0,$a0,%lo(var8009c820+0x1)
/* 4f540: 3c04800a */ lui $a0,%hi(__osContLastCmd+0x1)
/* 4f544: 2484c821 */ addiu $a0,$a0,%lo(__osContLastCmd+0x1)
/* 4f548: 908c0000 */ lbu $t4,0x0($a0)
/* 4f54c: 240e0001 */ addiu $t6,$zero,0x1
/* 4f550: 240f00ff */ addiu $t7,$zero,0xff
@ -149,4 +135,4 @@ glabel __osPackReadData
/* 4f5d4: 27bd0018 */ addiu $sp,$sp,0x18
/* 4f5d8: 00000000 */ nop
/* 4f5dc: 00000000 */ nop
);
);

View File

@ -63,8 +63,8 @@ glabel func0004f5e0
/* 4f674: 1464fffa */ bne $v1,$a0,.L0004f660
/* 4f678: a0470002 */ sb $a3,0x2($v0)
/* 4f67c: 240f00fe */ addiu $t7,$zero,0xfe
/* 4f680: 3c01800a */ lui $at,%hi(var8009c820)
/* 4f684: a02fc820 */ sb $t7,%lo(var8009c820)($at)
/* 4f680: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 4f684: a02fc820 */ sb $t7,%lo(__osContLastCmd)($at)
/* 4f688: 8e180008 */ lw $t8,0x8($s0)
/* 4f68c: afa80024 */ sw $t0,0x24($sp)
/* 4f690: afa70034 */ sw $a3,0x34($sp)

View File

@ -123,8 +123,8 @@ glabel func000501a0
/* 5029c: 0c012a34 */ jal __osSiRawStartDma
/* 502a0: 00002025 */ or $a0,$zero,$zero
/* 502a4: 240c0004 */ addiu $t4,$zero,0x4
/* 502a8: 3c01800a */ lui $at,%hi(var8009c820)
/* 502ac: a02cc820 */ sb $t4,%lo(var8009c820)($at)
/* 502a8: 3c01800a */ lui $at,%hi(__osContLastCmd)
/* 502ac: a02cc820 */ sb $t4,%lo(__osContLastCmd)($at)
/* 502b0: 02402025 */ or $a0,$s2,$zero
/* 502b4: 00002825 */ or $a1,$zero,$zero
/* 502b8: 0c0121bc */ jal osRecvMesg