mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
MAtch contreaddata funcs
This commit is contained in:
@@ -1,67 +0,0 @@
|
||||
glabel __osPackReadData
|
||||
/* 0CDD4C 800CD14C 27BDFFF0 */ addiu $sp, $sp, -0x10
|
||||
/* 0CDD50 800CD150 3C0E8013 */ lui $t6, %hi(__osContPifRam) # $t6, 0x8013
|
||||
/* 0CDD54 800CD154 25CECD50 */ addiu $t6, %lo(__osContPifRam) # addiu $t6, $t6, -0x32b0
|
||||
/* 0CDD58 800CD158 AFAE000C */ sw $t6, 0xc($sp)
|
||||
/* 0CDD5C 800CD15C AFA00000 */ sw $zero, ($sp)
|
||||
.L800CD160:
|
||||
/* 0CDD60 800CD160 8FAF0000 */ lw $t7, ($sp)
|
||||
/* 0CDD64 800CD164 8FB90000 */ lw $t9, ($sp)
|
||||
/* 0CDD68 800CD168 3C018013 */ lui $at, %hi(__osContPifRam) # $at, 0x8013
|
||||
/* 0CDD6C 800CD16C 000FC080 */ sll $t8, $t7, 2
|
||||
/* 0CDD70 800CD170 00380821 */ addu $at, $at, $t8
|
||||
/* 0CDD74 800CD174 AC20CD50 */ sw $zero, %lo(__osContPifRam)($at)
|
||||
/* 0CDD78 800CD178 27280001 */ addiu $t0, $t9, 1
|
||||
/* 0CDD7C 800CD17C 29010010 */ slti $at, $t0, 0x10
|
||||
/* 0CDD80 800CD180 1420FFF7 */ bnez $at, .L800CD160
|
||||
/* 0CDD84 800CD184 AFA80000 */ sw $t0, ($sp)
|
||||
/* 0CDD88 800CD188 3C198013 */ lui $t9, %hi(__osMaxControllers) # $t9, 0x8013
|
||||
/* 0CDD8C 800CD18C 9339CD91 */ lbu $t9, %lo(__osMaxControllers)($t9)
|
||||
/* 0CDD90 800CD190 24090001 */ li $t1, 1
|
||||
/* 0CDD94 800CD194 3C018013 */ lui $at, %hi(__osContPifRam) # $at, 0x8013
|
||||
/* 0CDD98 800CD198 240A00FF */ li $t2, 255
|
||||
/* 0CDD9C 800CD19C 240B0001 */ li $t3, 1
|
||||
/* 0CDDA0 800CD1A0 240C0004 */ li $t4, 4
|
||||
/* 0CDDA4 800CD1A4 240D0001 */ li $t5, 1
|
||||
/* 0CDDA8 800CD1A8 340EFFFF */ li $t6, 65535
|
||||
/* 0CDDAC 800CD1AC 240FFFFF */ li $t7, -1
|
||||
/* 0CDDB0 800CD1B0 2418FFFF */ li $t8, -1
|
||||
/* 0CDDB4 800CD1B4 AC29CD8C */ sw $t1, %lo(__osContPifRam+60)($at)
|
||||
/* 0CDDB8 800CD1B8 A3AA0004 */ sb $t2, 4($sp)
|
||||
/* 0CDDBC 800CD1BC A3AB0005 */ sb $t3, 5($sp)
|
||||
/* 0CDDC0 800CD1C0 A3AC0006 */ sb $t4, 6($sp)
|
||||
/* 0CDDC4 800CD1C4 A3AD0007 */ sb $t5, 7($sp)
|
||||
/* 0CDDC8 800CD1C8 A7AE0008 */ sh $t6, 8($sp)
|
||||
/* 0CDDCC 800CD1CC A3AF000A */ sb $t7, 0xa($sp)
|
||||
/* 0CDDD0 800CD1D0 A3B8000B */ sb $t8, 0xb($sp)
|
||||
/* 0CDDD4 800CD1D4 1B200013 */ blez $t9, .L800CD224
|
||||
/* 0CDDD8 800CD1D8 AFA00000 */ sw $zero, ($sp)
|
||||
.L800CD1DC:
|
||||
/* 0CDDDC 800CD1DC 27A90004 */ addiu $t1, $sp, 4
|
||||
/* 0CDDE0 800CD1E0 8D210000 */ lw $at, ($t1)
|
||||
/* 0CDDE4 800CD1E4 8FA8000C */ lw $t0, 0xc($sp)
|
||||
/* 0CDDE8 800CD1E8 3C188013 */ lui $t8, %hi(__osMaxControllers) # $t8, 0x8013
|
||||
/* 0CDDEC 800CD1EC A9010000 */ swl $at, ($t0)
|
||||
/* 0CDDF0 800CD1F0 B9010003 */ swr $at, 3($t0)
|
||||
/* 0CDDF4 800CD1F4 8D2B0004 */ lw $t3, 4($t1)
|
||||
/* 0CDDF8 800CD1F8 A90B0004 */ swl $t3, 4($t0)
|
||||
/* 0CDDFC 800CD1FC B90B0007 */ swr $t3, 7($t0)
|
||||
/* 0CDE00 800CD200 8FAE0000 */ lw $t6, ($sp)
|
||||
/* 0CDE04 800CD204 9318CD91 */ lbu $t8, %lo(__osMaxControllers)($t8)
|
||||
/* 0CDE08 800CD208 8FAC000C */ lw $t4, 0xc($sp)
|
||||
/* 0CDE0C 800CD20C 25CF0001 */ addiu $t7, $t6, 1
|
||||
/* 0CDE10 800CD210 01F8082A */ slt $at, $t7, $t8
|
||||
/* 0CDE14 800CD214 258D0008 */ addiu $t5, $t4, 8
|
||||
/* 0CDE18 800CD218 AFAF0000 */ sw $t7, ($sp)
|
||||
/* 0CDE1C 800CD21C 1420FFEF */ bnez $at, .L800CD1DC
|
||||
/* 0CDE20 800CD220 AFAD000C */ sw $t5, 0xc($sp)
|
||||
.L800CD224:
|
||||
/* 0CDE24 800CD224 8FAA000C */ lw $t2, 0xc($sp)
|
||||
/* 0CDE28 800CD228 241900FE */ li $t9, 254
|
||||
/* 0CDE2C 800CD22C 27BD0010 */ addiu $sp, $sp, 0x10
|
||||
/* 0CDE30 800CD230 03E00008 */ jr $ra
|
||||
/* 0CDE34 800CD234 A1590000 */ sb $t9, ($t2)
|
||||
|
||||
/* 0CDE38 800CD238 00000000 */ nop
|
||||
/* 0CDE3C 800CD23C 00000000 */ nop
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
glabel osContGetReadData
|
||||
/* 0CDCA4 800CD0A4 3C0F8013 */ lui $t7, %hi(__osMaxControllers) # $t7, 0x8013
|
||||
/* 0CDCA8 800CD0A8 91EFCD91 */ lbu $t7, %lo(__osMaxControllers)($t7)
|
||||
/* 0CDCAC 800CD0AC 3C0E8013 */ lui $t6, %hi(__osContPifRam) # $t6, 0x8013
|
||||
/* 0CDCB0 800CD0B0 27BDFFF0 */ addiu $sp, $sp, -0x10
|
||||
/* 0CDCB4 800CD0B4 25CECD50 */ addiu $t6, %lo(__osContPifRam) # addiu $t6, $t6, -0x32b0
|
||||
/* 0CDCB8 800CD0B8 AFAE000C */ sw $t6, 0xc($sp)
|
||||
/* 0CDCBC 800CD0BC 19E00021 */ blez $t7, .L800CD144
|
||||
/* 0CDCC0 800CD0C0 AFA00000 */ sw $zero, ($sp)
|
||||
.L800CD0C4:
|
||||
/* 0CDCC4 800CD0C4 8FB9000C */ lw $t9, 0xc($sp)
|
||||
/* 0CDCC8 800CD0C8 27B80004 */ addiu $t8, $sp, 4
|
||||
/* 0CDCCC 800CD0CC 8B210000 */ lwl $at, ($t9)
|
||||
/* 0CDCD0 800CD0D0 9B210003 */ lwr $at, 3($t9)
|
||||
/* 0CDCD4 800CD0D4 AF010000 */ sw $at, ($t8)
|
||||
/* 0CDCD8 800CD0D8 8B290004 */ lwl $t1, 4($t9)
|
||||
/* 0CDCDC 800CD0DC 9B290007 */ lwr $t1, 7($t9)
|
||||
/* 0CDCE0 800CD0E0 AF090004 */ sw $t1, 4($t8)
|
||||
/* 0CDCE4 800CD0E4 93AA0006 */ lbu $t2, 6($sp)
|
||||
/* 0CDCE8 800CD0E8 314B00C0 */ andi $t3, $t2, 0xc0
|
||||
/* 0CDCEC 800CD0EC 000B6103 */ sra $t4, $t3, 4
|
||||
/* 0CDCF0 800CD0F0 A08C0004 */ sb $t4, 4($a0)
|
||||
/* 0CDCF4 800CD0F4 908D0004 */ lbu $t5, 4($a0)
|
||||
/* 0CDCF8 800CD0F8 15A00007 */ bnez $t5, .L800CD118
|
||||
/* 0CDCFC 800CD0FC 00000000 */ nop
|
||||
/* 0CDD00 800CD100 97AE0008 */ lhu $t6, 8($sp)
|
||||
/* 0CDD04 800CD104 A48E0000 */ sh $t6, ($a0)
|
||||
/* 0CDD08 800CD108 83AF000A */ lb $t7, 0xa($sp)
|
||||
/* 0CDD0C 800CD10C A08F0002 */ sb $t7, 2($a0)
|
||||
/* 0CDD10 800CD110 83A8000B */ lb $t0, 0xb($sp)
|
||||
/* 0CDD14 800CD114 A0880003 */ sb $t0, 3($a0)
|
||||
.L800CD118:
|
||||
/* 0CDD18 800CD118 8FB80000 */ lw $t8, ($sp)
|
||||
/* 0CDD1C 800CD11C 3C0B8013 */ lui $t3, %hi(__osMaxControllers) # $t3, 0x8013
|
||||
/* 0CDD20 800CD120 916BCD91 */ lbu $t3, %lo(__osMaxControllers)($t3)
|
||||
/* 0CDD24 800CD124 8FA9000C */ lw $t1, 0xc($sp)
|
||||
/* 0CDD28 800CD128 27190001 */ addiu $t9, $t8, 1
|
||||
/* 0CDD2C 800CD12C 032B082A */ slt $at, $t9, $t3
|
||||
/* 0CDD30 800CD130 252A0008 */ addiu $t2, $t1, 8
|
||||
/* 0CDD34 800CD134 AFAA000C */ sw $t2, 0xc($sp)
|
||||
/* 0CDD38 800CD138 AFB90000 */ sw $t9, ($sp)
|
||||
/* 0CDD3C 800CD13C 1420FFE1 */ bnez $at, .L800CD0C4
|
||||
/* 0CDD40 800CD140 24840006 */ addiu $a0, $a0, 6
|
||||
.L800CD144:
|
||||
/* 0CDD44 800CD144 03E00008 */ jr $ra
|
||||
/* 0CDD48 800CD148 27BD0010 */ addiu $sp, $sp, 0x10
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
glabel osContStartReadData
|
||||
/* 0CDBE0 800CCFE0 27BDFFE0 */ addiu $sp, $sp, -0x20
|
||||
/* 0CDBE4 800CCFE4 AFBF0014 */ sw $ra, 0x14($sp)
|
||||
/* 0CDBE8 800CCFE8 AFA40020 */ sw $a0, 0x20($sp)
|
||||
/* 0CDBEC 800CCFEC 0C033594 */ jal __osSiGetAccess
|
||||
/* 0CDBF0 800CCFF0 AFA0001C */ sw $zero, 0x1c($sp)
|
||||
/* 0CDBF4 800CCFF4 3C0E8013 */ lui $t6, %hi(__osContLastCmd) # $t6, 0x8013
|
||||
/* 0CDBF8 800CCFF8 91CECD90 */ lbu $t6, %lo(__osContLastCmd)($t6)
|
||||
/* 0CDBFC 800CCFFC 24010001 */ li $at, 1
|
||||
/* 0CDC00 800CD000 11C1000C */ beq $t6, $at, .L800CD034
|
||||
/* 0CDC04 800CD004 00000000 */ nop
|
||||
/* 0CDC08 800CD008 0C033453 */ jal __osPackReadData
|
||||
/* 0CDC0C 800CD00C 00000000 */ nop
|
||||
/* 0CDC10 800CD010 3C058013 */ lui $a1, %hi(__osContPifRam) # $a1, 0x8013
|
||||
/* 0CDC14 800CD014 24A5CD50 */ addiu $a1, %lo(__osContPifRam) # addiu $a1, $a1, -0x32b0
|
||||
/* 0CDC18 800CD018 0C0335B0 */ jal __osSiRawStartDma
|
||||
/* 0CDC1C 800CD01C 24040001 */ li $a0, 1
|
||||
/* 0CDC20 800CD020 AFA2001C */ sw $v0, 0x1c($sp)
|
||||
/* 0CDC24 800CD024 8FA40020 */ lw $a0, 0x20($sp)
|
||||
/* 0CDC28 800CD028 00002825 */ move $a1, $zero
|
||||
/* 0CDC2C 800CD02C 0C0322EC */ jal osRecvMesg
|
||||
/* 0CDC30 800CD030 24060001 */ li $a2, 1
|
||||
.L800CD034:
|
||||
/* 0CDC34 800CD034 AFA00018 */ sw $zero, 0x18($sp)
|
||||
.L800CD038:
|
||||
/* 0CDC38 800CD038 8FB80018 */ lw $t8, 0x18($sp)
|
||||
/* 0CDC3C 800CD03C 8FA80018 */ lw $t0, 0x18($sp)
|
||||
/* 0CDC40 800CD040 3C018013 */ lui $at, %hi(__osContPifRam) # $at, 0x8013
|
||||
/* 0CDC44 800CD044 0018C880 */ sll $t9, $t8, 2
|
||||
/* 0CDC48 800CD048 00390821 */ addu $at, $at, $t9
|
||||
/* 0CDC4C 800CD04C 240F00FF */ li $t7, 255
|
||||
/* 0CDC50 800CD050 AC2FCD50 */ sw $t7, %lo(__osContPifRam)($at)
|
||||
/* 0CDC54 800CD054 25090001 */ addiu $t1, $t0, 1
|
||||
/* 0CDC58 800CD058 29210010 */ slti $at, $t1, 0x10
|
||||
/* 0CDC5C 800CD05C 1420FFF6 */ bnez $at, .L800CD038
|
||||
/* 0CDC60 800CD060 AFA90018 */ sw $t1, 0x18($sp)
|
||||
/* 0CDC64 800CD064 3C018013 */ lui $at, %hi(__osContPifRam) # $at, 0x8013
|
||||
/* 0CDC68 800CD068 3C058013 */ lui $a1, %hi(__osContPifRam) # $a1, 0x8013
|
||||
/* 0CDC6C 800CD06C AC20CD8C */ sw $zero, %lo(__osContPifRam+60)($at)
|
||||
/* 0CDC70 800CD070 24A5CD50 */ addiu $a1, %lo(__osContPifRam) # addiu $a1, $a1, -0x32b0
|
||||
/* 0CDC74 800CD074 0C0335B0 */ jal __osSiRawStartDma
|
||||
/* 0CDC78 800CD078 00002025 */ move $a0, $zero
|
||||
/* 0CDC7C 800CD07C 240A0001 */ li $t2, 1
|
||||
/* 0CDC80 800CD080 3C018013 */ lui $at, %hi(__osContLastCmd) # $at, 0x8013
|
||||
/* 0CDC84 800CD084 AFA2001C */ sw $v0, 0x1c($sp)
|
||||
/* 0CDC88 800CD088 0C0335A5 */ jal __osSiRelAccess
|
||||
/* 0CDC8C 800CD08C A02ACD90 */ sb $t2, %lo(__osContLastCmd)($at)
|
||||
/* 0CDC90 800CD090 8FBF0014 */ lw $ra, 0x14($sp)
|
||||
/* 0CDC94 800CD094 8FA2001C */ lw $v0, 0x1c($sp)
|
||||
/* 0CDC98 800CD098 27BD0020 */ addiu $sp, $sp, 0x20
|
||||
/* 0CDC9C 800CD09C 03E00008 */ jr $ra
|
||||
/* 0CDCA0 800CD0A0 00000000 */ nop
|
||||
|
||||
@@ -24,7 +24,7 @@ s32 __osContRamRead(OSMesgQueue *mq, int channel, u16 address, u8 *buffer) {
|
||||
for (i = 0; i < ARRLEN(__osPfsPifRam.ramarray) + 1; i++) { // also clear pifstatus
|
||||
__osPfsPifRam.ramarray[i] = 0xFFU;
|
||||
}
|
||||
__osPfsPifRam.pifstatus = 0;
|
||||
__osPfsPifRam.pifstatus = CONT_CMD_REQUEST_STATUS;
|
||||
ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);
|
||||
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
|
||||
ptr = (u8 *)&__osPfsPifRam;
|
||||
|
||||
@@ -28,7 +28,7 @@ s32 __osContRamWrite(OSMesgQueue *mq, int channel, u16 address, u8 *buffer, int
|
||||
for (i = 0; i < ARRLEN(__osPfsPifRam.ramarray) + 1; i++) { // also clear pifstatus
|
||||
__osPfsPifRam.ramarray[i] = 0xFFU;
|
||||
}
|
||||
__osPfsPifRam.pifstatus = 0;
|
||||
__osPfsPifRam.pifstatus = CONT_CMD_REQUEST_STATUS;
|
||||
ret = __osSiRawStartDma(OS_READ, &__osPfsPifRam);
|
||||
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
|
||||
ptr = (u8 *)&__osPfsPifRam;
|
||||
|
||||
@@ -6,6 +6,68 @@
|
||||
#include "libultra_internal.h"
|
||||
#include "controller.h"
|
||||
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CD820/osContStartReadData.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CD820/osContGetReadData.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0CD820/__osPackReadData.s")
|
||||
static void __osPackReadData(void);
|
||||
s32 osContStartReadData(OSMesgQueue *mq) {
|
||||
s32 ret;
|
||||
int i;
|
||||
|
||||
ret = 0;
|
||||
__osSiGetAccess();
|
||||
|
||||
if (__osContLastCmd != CONT_CMD_READ_BUTTON) {
|
||||
__osPackReadData();
|
||||
ret = __osSiRawStartDma(OS_WRITE, &__osContPifRam);
|
||||
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
for (i = 0; i <= ARRLEN(__osContPifRam.ramarray); i++) {
|
||||
__osContPifRam.ramarray[i] = 255;
|
||||
}
|
||||
|
||||
__osContPifRam.pifstatus = CONT_CMD_REQUEST_STATUS;
|
||||
ret = __osSiRawStartDma(OS_READ, &__osContPifRam);
|
||||
|
||||
__osContLastCmd = CONT_CMD_READ_BUTTON;
|
||||
__osSiRelAccess();
|
||||
return ret;
|
||||
}
|
||||
|
||||
void osContGetReadData(OSContPad *data) {
|
||||
u8 *ptr;
|
||||
__OSContReadFormat readformat;
|
||||
int i;
|
||||
ptr = (u8 *)&__osContPifRam.ramarray;
|
||||
for (i = 0; i < __osMaxControllers; i++, ptr += sizeof(__OSContReadFormat), data++) {
|
||||
readformat = *(__OSContReadFormat *)ptr;
|
||||
data->errno = CHNL_ERR(readformat);
|
||||
if (data->errno == 0) {
|
||||
data->button = readformat.button;
|
||||
data->stick_x = readformat.stick_x;
|
||||
data->stick_y = readformat.stick_y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void __osPackReadData(void) {
|
||||
u8 *ptr;
|
||||
__OSContReadFormat readformat;
|
||||
int i;
|
||||
|
||||
ptr = (u8*)&__osContPifRam.ramarray;
|
||||
for (i = 0; i <= ARRLEN(__osContPifRam.ramarray); i++) {
|
||||
__osContPifRam.ramarray[i] = 0;
|
||||
}
|
||||
__osContPifRam.pifstatus = CONT_CMD_EXE;
|
||||
readformat.dummy = CONT_CMD_NOP;
|
||||
readformat.txsize = CONT_CMD_READ_BUTTON_TX;
|
||||
readformat.rxsize = CONT_CMD_READ_BUTTON_RX;
|
||||
readformat.cmd = CONT_CMD_READ_BUTTON;
|
||||
readformat.button = -1;
|
||||
readformat.stick_x = -1;
|
||||
readformat.stick_y = -1;
|
||||
for(i=0; i < __osMaxControllers; i++) {
|
||||
*(__OSContReadFormat*)ptr = readformat;
|
||||
ptr += sizeof(__OSContReadFormat);
|
||||
}
|
||||
*ptr = CONT_CMD_END;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ s32 osEepromRead(OSMesgQueue *mq, u8 address, u8 *buffer) {
|
||||
__osEepPifRam.ramarray[i] = CONT_CMD_NOP;
|
||||
}
|
||||
|
||||
__osEepPifRam.pifstatus = 0;
|
||||
__osEepPifRam.pifstatus = CONT_CMD_REQUEST_STATUS;
|
||||
|
||||
ret = __osSiRawStartDma(OS_READ, __osEepPifRam.ramarray);
|
||||
|
||||
|
||||
@@ -36,11 +36,11 @@ s32 osEepromWrite(OSMesgQueue *mq, u8 address, u8 *buffer) {
|
||||
ret = __osSiRawStartDma(OS_WRITE, &__osEepPifRam); //send command to pif
|
||||
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
|
||||
|
||||
for (i = 0; i < 0x10; i++) {
|
||||
for (i = 0; i <= ARRLEN(__osEepPifRam.ramarray); i++) {
|
||||
__osEepPifRam.ramarray[i] = 255;
|
||||
}
|
||||
|
||||
__osEepPifRam.pifstatus = 0;
|
||||
__osEepPifRam.pifstatus = CONT_CMD_REQUEST_STATUS;
|
||||
ret = __osSiRawStartDma(OS_READ, &__osEepPifRam); //recv response
|
||||
__osContLastCmd = CONT_CMD_WRITE_EEPROM;
|
||||
osRecvMesg(mq, NULL, OS_MESG_BLOCK);
|
||||
|
||||
Reference in New Issue
Block a user