diff --git a/asm/non_matchings/unknown_0B8920/func_800C6000.s b/asm/non_matchings/unknown_0B8920/func_800C6000.s index d0ac521f..f8f20825 100644 --- a/asm/non_matchings/unknown_0B8920/func_800C6000.s +++ b/asm/non_matchings/unknown_0B8920/func_800C6000.s @@ -13,24 +13,24 @@ glabel osCreatePiManager /* 0C6C2C 800C602C 00C02825 */ move $a1, $a2 /* 0C6C30 800C6030 0C032208 */ jal osCreateMesgQueue /* 0C6C34 800C6034 00E03025 */ move $a2, $a3 -/* 0C6C38 800C6038 3C048013 */ lui $a0, %hi(D_8012AAB0) # $a0, 0x8013 -/* 0C6C3C 800C603C 3C058013 */ lui $a1, %hi(D_8012AAC8) # $a1, 0x8013 -/* 0C6C40 800C6040 24A5AAC8 */ addiu $a1, %lo(D_8012AAC8) # addiu $a1, $a1, -0x5538 -/* 0C6C44 800C6044 2484AAB0 */ addiu $a0, %lo(D_8012AAB0) # addiu $a0, $a0, -0x5550 +/* 0C6C38 800C6038 3C048013 */ lui $a0, %hi(piEventQueue) # $a0, 0x8013 +/* 0C6C3C 800C603C 3C058013 */ lui $a1, %hi(piEventBuf) # $a1, 0x8013 +/* 0C6C40 800C6040 24A5AAC8 */ addiu $a1, %lo(piEventBuf) # addiu $a1, $a1, -0x5538 +/* 0C6C44 800C6044 2484AAB0 */ addiu $a0, %lo(piEventQueue) # addiu $a0, $a0, -0x5550 /* 0C6C48 800C6048 0C032208 */ jal osCreateMesgQueue /* 0C6C4C 800C604C 24060001 */ li $a2, 1 -/* 0C6C50 800C6050 3C0F800E */ lui $t7, %hi(D_800E4800) # $t7, 0x800e -/* 0C6C54 800C6054 8DEF4800 */ lw $t7, %lo(D_800E4800)($t7) +/* 0C6C50 800C6050 3C0F800E */ lui $t7, %hi(__osPiAccessQueueEnabled) # $t7, 0x800e +/* 0C6C54 800C6054 8DEF4800 */ lw $t7, %lo(__osPiAccessQueueEnabled)($t7) /* 0C6C58 800C6058 00000000 */ nop /* 0C6C5C 800C605C 15E00003 */ bnez $t7, .L800C606C /* 0C6C60 800C6060 00000000 */ nop /* 0C6C64 800C6064 0C034920 */ jal __osPiCreateAccessQueue /* 0C6C68 800C6068 00000000 */ nop .L800C606C: -/* 0C6C6C 800C606C 3C058013 */ lui $a1, %hi(D_8012AAB0) # $a1, 0x8013 +/* 0C6C6C 800C606C 3C058013 */ lui $a1, %hi(piEventQueue) # $a1, 0x8013 /* 0C6C70 800C6070 3C062222 */ lui $a2, (0x22222222 >> 16) # lui $a2, 0x2222 /* 0C6C74 800C6074 34C62222 */ ori $a2, (0x22222222 & 0xFFFF) # ori $a2, $a2, 0x2222 -/* 0C6C78 800C6078 24A5AAB0 */ addiu $a1, %lo(D_8012AAB0) # addiu $a1, $a1, -0x5550 +/* 0C6C78 800C6078 24A5AAB0 */ addiu $a1, %lo(piEventQueue) # addiu $a1, $a1, -0x5550 /* 0C6C7C 800C607C 0C0332EC */ jal osSetEventMesg /* 0C6C80 800C6080 24040008 */ li $a0, 8 /* 0C6C84 800C6084 2418FFFF */ li $t8, -1 @@ -49,20 +49,20 @@ glabel osCreatePiManager /* 0C6CB4 800C60B4 00000000 */ nop /* 0C6CB8 800C60B8 8FA90034 */ lw $t1, 0x34($sp) /* 0C6CBC 800C60BC 8FAF0030 */ lw $t7, 0x30($sp) -/* 0C6CC0 800C60C0 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013 -/* 0C6CC4 800C60C4 3C0A8013 */ lui $t2, %hi(D_8012AAB0) # $t2, 0x8013 -/* 0C6CC8 800C60C8 3C0B8013 */ lui $t3, %hi(D_8012D1E8) # $t3, 0x8013 -/* 0C6CCC 800C60CC 3C0C800D */ lui $t4, %hi(D_800D25A0) # $t4, 0x800d -/* 0C6CD0 800C60D0 3C0D800D */ lui $t5, %hi(D_800D2680) # $t5, 0x800d -/* 0C6CD4 800C60D4 3C0E8013 */ lui $t6, %hi(D_8012AAB0) # $t6, 0x8013 -/* 0C6CD8 800C60D8 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800 +/* 0C6CC0 800C60C0 3C048013 */ lui $a0, %hi(piThread) # $a0, 0x8013 +/* 0C6CC4 800C60C4 3C0A8013 */ lui $t2, %hi(piEventQueue) # $t2, 0x8013 +/* 0C6CC8 800C60C8 3C0B8013 */ lui $t3, %hi(piAccessQueue) # $t3, 0x8013 +/* 0C6CCC 800C60CC 3C0C800D */ lui $t4, %hi(osPiRawStartDma) # $t4, 0x800d +/* 0C6CD0 800C60D0 3C0D800D */ lui $t5, %hi(osEPiRawStartDma) # $t5, 0x800d +/* 0C6CD4 800C60D4 3C0E8013 */ lui $t6, %hi(piEventQueue) # $t6, 0x8013 +/* 0C6CD8 800C60D8 2484A800 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, -0x5800 /* 0C6CDC 800C60DC 24080001 */ li $t0, 1 -/* 0C6CE0 800C60E0 254AAAB0 */ addiu $t2, %lo(D_8012AAB0) # addiu $t2, $t2, -0x5550 -/* 0C6CE4 800C60E4 256BD1E8 */ addiu $t3, %lo(D_8012D1E8) # addiu $t3, $t3, -0x2e18 -/* 0C6CE8 800C60E8 258C25A0 */ addiu $t4, %lo(D_800D25A0) # addiu $t4, $t4, 0x25a0 -/* 0C6CEC 800C60EC 25AD2680 */ addiu $t5, %lo(D_800D2680) # addiu $t5, $t5, 0x2680 -/* 0C6CF0 800C60F0 25CEAAB0 */ addiu $t6, %lo(D_8012AAB0) # addiu $t6, $t6, -0x5550 -/* 0C6CF4 800C60F4 3C06800D */ lui $a2, %hi(D_800D2760) # $a2, 0x800d +/* 0C6CE0 800C60E0 254AAAB0 */ addiu $t2, %lo(piEventQueue) # addiu $t2, $t2, -0x5550 +/* 0C6CE4 800C60E4 256BD1E8 */ addiu $t3, %lo(piAccessQueue) # addiu $t3, $t3, -0x2e18 +/* 0C6CE8 800C60E8 258C25A0 */ addiu $t4, %lo(osPiRawStartDma) # addiu $t4, $t4, 0x25a0 +/* 0C6CEC 800C60EC 25AD2680 */ addiu $t5, %lo(osEPiRawStartDma) # addiu $t5, $t5, 0x2680 +/* 0C6CF0 800C60F0 25CEAAB0 */ addiu $t6, %lo(piEventQueue) # addiu $t6, $t6, -0x5550 +/* 0C6CF4 800C60F4 3C06800D */ lui $a2, %hi(__osDevMgrMain) # $a2, 0x800d /* 0C6CF8 800C60F8 AFA2002C */ sw $v0, 0x2c($sp) /* 0C6CFC 800C60FC AE080000 */ sw $t0, ($s0) /* 0C6D00 800C6100 AE040004 */ sw $a0, 4($s0) @@ -70,16 +70,16 @@ glabel osCreatePiManager /* 0C6D08 800C6108 AE0B0010 */ sw $t3, 0x10($s0) /* 0C6D0C 800C610C AE0C0014 */ sw $t4, 0x14($s0) /* 0C6D10 800C6110 AE0D0018 */ sw $t5, 0x18($s0) -/* 0C6D14 800C6114 24C62760 */ addiu $a2, %lo(D_800D2760) # addiu $a2, $a2, 0x2760 +/* 0C6D14 800C6114 24C62760 */ addiu $a2, %lo(__osDevMgrMain) # addiu $a2, $a2, 0x2760 /* 0C6D18 800C6118 AFAE0010 */ sw $t6, 0x10($sp) /* 0C6D1C 800C611C 00002825 */ move $a1, $zero /* 0C6D20 800C6120 02003825 */ move $a3, $s0 /* 0C6D24 800C6124 AE090008 */ sw $t1, 8($s0) /* 0C6D28 800C6128 0C032214 */ jal osCreateThread /* 0C6D2C 800C612C AFAF0014 */ sw $t7, 0x14($sp) -/* 0C6D30 800C6130 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013 +/* 0C6D30 800C6130 3C048013 */ lui $a0, %hi(piThread) # $a0, 0x8013 /* 0C6D34 800C6134 0C032268 */ jal osStartThread -/* 0C6D38 800C6138 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800 +/* 0C6D38 800C6138 2484A800 */ addiu $a0, %lo(piThread) # addiu $a0, $a0, -0x5800 /* 0C6D3C 800C613C 8FA4002C */ lw $a0, 0x2c($sp) /* 0C6D40 800C6140 0C034960 */ jal __osRestoreInt /* 0C6D44 800C6144 00000000 */ nop diff --git a/asm/non_matchings/unknown_0B8920/osCreatePiManager.s b/asm/non_matchings/unknown_0B8920/osCreatePiManager.s deleted file mode 100644 index d0ac521f..00000000 --- a/asm/non_matchings/unknown_0B8920/osCreatePiManager.s +++ /dev/null @@ -1,97 +0,0 @@ -glabel osCreatePiManager -/* 0C6C00 800C6000 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 0C6C04 800C6004 AFB00020 */ sw $s0, 0x20($sp) -/* 0C6C08 800C6008 3C10800E */ lui $s0, %hi(__osPiDevMgr) # $s0, 0x800e -/* 0C6C0C 800C600C 26103740 */ addiu $s0, %lo(__osPiDevMgr) # addiu $s0, $s0, 0x3740 -/* 0C6C10 800C6010 8E0E0000 */ lw $t6, ($s0) -/* 0C6C14 800C6014 AFBF0024 */ sw $ra, 0x24($sp) -/* 0C6C18 800C6018 AFA40030 */ sw $a0, 0x30($sp) -/* 0C6C1C 800C601C AFA50034 */ sw $a1, 0x34($sp) -/* 0C6C20 800C6020 15C0004F */ bnez $t6, .L800C6160 -/* 0C6C24 800C6024 AFA60038 */ sw $a2, 0x38($sp) -/* 0C6C28 800C6028 00A02025 */ move $a0, $a1 -/* 0C6C2C 800C602C 00C02825 */ move $a1, $a2 -/* 0C6C30 800C6030 0C032208 */ jal osCreateMesgQueue -/* 0C6C34 800C6034 00E03025 */ move $a2, $a3 -/* 0C6C38 800C6038 3C048013 */ lui $a0, %hi(D_8012AAB0) # $a0, 0x8013 -/* 0C6C3C 800C603C 3C058013 */ lui $a1, %hi(D_8012AAC8) # $a1, 0x8013 -/* 0C6C40 800C6040 24A5AAC8 */ addiu $a1, %lo(D_8012AAC8) # addiu $a1, $a1, -0x5538 -/* 0C6C44 800C6044 2484AAB0 */ addiu $a0, %lo(D_8012AAB0) # addiu $a0, $a0, -0x5550 -/* 0C6C48 800C6048 0C032208 */ jal osCreateMesgQueue -/* 0C6C4C 800C604C 24060001 */ li $a2, 1 -/* 0C6C50 800C6050 3C0F800E */ lui $t7, %hi(D_800E4800) # $t7, 0x800e -/* 0C6C54 800C6054 8DEF4800 */ lw $t7, %lo(D_800E4800)($t7) -/* 0C6C58 800C6058 00000000 */ nop -/* 0C6C5C 800C605C 15E00003 */ bnez $t7, .L800C606C -/* 0C6C60 800C6060 00000000 */ nop -/* 0C6C64 800C6064 0C034920 */ jal __osPiCreateAccessQueue -/* 0C6C68 800C6068 00000000 */ nop -.L800C606C: -/* 0C6C6C 800C606C 3C058013 */ lui $a1, %hi(D_8012AAB0) # $a1, 0x8013 -/* 0C6C70 800C6070 3C062222 */ lui $a2, (0x22222222 >> 16) # lui $a2, 0x2222 -/* 0C6C74 800C6074 34C62222 */ ori $a2, (0x22222222 & 0xFFFF) # ori $a2, $a2, 0x2222 -/* 0C6C78 800C6078 24A5AAB0 */ addiu $a1, %lo(D_8012AAB0) # addiu $a1, $a1, -0x5550 -/* 0C6C7C 800C607C 0C0332EC */ jal osSetEventMesg -/* 0C6C80 800C6080 24040008 */ li $a0, 8 -/* 0C6C84 800C6084 2418FFFF */ li $t8, -1 -/* 0C6C88 800C6088 AFB80028 */ sw $t8, 0x28($sp) -/* 0C6C8C 800C608C 0C034950 */ jal osGetThreadPri -/* 0C6C90 800C6090 00002025 */ move $a0, $zero -/* 0C6C94 800C6094 8FB90030 */ lw $t9, 0x30($sp) -/* 0C6C98 800C6098 00002025 */ move $a0, $zero -/* 0C6C9C 800C609C 0059082A */ slt $at, $v0, $t9 -/* 0C6CA0 800C60A0 10200003 */ beqz $at, .L800C60B0 -/* 0C6CA4 800C60A4 03202825 */ move $a1, $t9 -/* 0C6CA8 800C60A8 0C033210 */ jal osSetThreadPri -/* 0C6CAC 800C60AC AFA20028 */ sw $v0, 0x28($sp) -.L800C60B0: -/* 0C6CB0 800C60B0 0C034958 */ jal __osDisableInt -/* 0C6CB4 800C60B4 00000000 */ nop -/* 0C6CB8 800C60B8 8FA90034 */ lw $t1, 0x34($sp) -/* 0C6CBC 800C60BC 8FAF0030 */ lw $t7, 0x30($sp) -/* 0C6CC0 800C60C0 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013 -/* 0C6CC4 800C60C4 3C0A8013 */ lui $t2, %hi(D_8012AAB0) # $t2, 0x8013 -/* 0C6CC8 800C60C8 3C0B8013 */ lui $t3, %hi(D_8012D1E8) # $t3, 0x8013 -/* 0C6CCC 800C60CC 3C0C800D */ lui $t4, %hi(D_800D25A0) # $t4, 0x800d -/* 0C6CD0 800C60D0 3C0D800D */ lui $t5, %hi(D_800D2680) # $t5, 0x800d -/* 0C6CD4 800C60D4 3C0E8013 */ lui $t6, %hi(D_8012AAB0) # $t6, 0x8013 -/* 0C6CD8 800C60D8 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800 -/* 0C6CDC 800C60DC 24080001 */ li $t0, 1 -/* 0C6CE0 800C60E0 254AAAB0 */ addiu $t2, %lo(D_8012AAB0) # addiu $t2, $t2, -0x5550 -/* 0C6CE4 800C60E4 256BD1E8 */ addiu $t3, %lo(D_8012D1E8) # addiu $t3, $t3, -0x2e18 -/* 0C6CE8 800C60E8 258C25A0 */ addiu $t4, %lo(D_800D25A0) # addiu $t4, $t4, 0x25a0 -/* 0C6CEC 800C60EC 25AD2680 */ addiu $t5, %lo(D_800D2680) # addiu $t5, $t5, 0x2680 -/* 0C6CF0 800C60F0 25CEAAB0 */ addiu $t6, %lo(D_8012AAB0) # addiu $t6, $t6, -0x5550 -/* 0C6CF4 800C60F4 3C06800D */ lui $a2, %hi(D_800D2760) # $a2, 0x800d -/* 0C6CF8 800C60F8 AFA2002C */ sw $v0, 0x2c($sp) -/* 0C6CFC 800C60FC AE080000 */ sw $t0, ($s0) -/* 0C6D00 800C6100 AE040004 */ sw $a0, 4($s0) -/* 0C6D04 800C6104 AE0A000C */ sw $t2, 0xc($s0) -/* 0C6D08 800C6108 AE0B0010 */ sw $t3, 0x10($s0) -/* 0C6D0C 800C610C AE0C0014 */ sw $t4, 0x14($s0) -/* 0C6D10 800C6110 AE0D0018 */ sw $t5, 0x18($s0) -/* 0C6D14 800C6114 24C62760 */ addiu $a2, %lo(D_800D2760) # addiu $a2, $a2, 0x2760 -/* 0C6D18 800C6118 AFAE0010 */ sw $t6, 0x10($sp) -/* 0C6D1C 800C611C 00002825 */ move $a1, $zero -/* 0C6D20 800C6120 02003825 */ move $a3, $s0 -/* 0C6D24 800C6124 AE090008 */ sw $t1, 8($s0) -/* 0C6D28 800C6128 0C032214 */ jal osCreateThread -/* 0C6D2C 800C612C AFAF0014 */ sw $t7, 0x14($sp) -/* 0C6D30 800C6130 3C048013 */ lui $a0, %hi(D_8012A800) # $a0, 0x8013 -/* 0C6D34 800C6134 0C032268 */ jal osStartThread -/* 0C6D38 800C6138 2484A800 */ addiu $a0, %lo(D_8012A800) # addiu $a0, $a0, -0x5800 -/* 0C6D3C 800C613C 8FA4002C */ lw $a0, 0x2c($sp) -/* 0C6D40 800C6140 0C034960 */ jal __osRestoreInt -/* 0C6D44 800C6144 00000000 */ nop -/* 0C6D48 800C6148 8FB80028 */ lw $t8, 0x28($sp) -/* 0C6D4C 800C614C 2401FFFF */ li $at, -1 -/* 0C6D50 800C6150 13010003 */ beq $t8, $at, .L800C6160 -/* 0C6D54 800C6154 00002025 */ move $a0, $zero -/* 0C6D58 800C6158 0C033210 */ jal osSetThreadPri -/* 0C6D5C 800C615C 03002825 */ move $a1, $t8 -.L800C6160: -/* 0C6D60 800C6160 8FBF0024 */ lw $ra, 0x24($sp) -/* 0C6D64 800C6164 8FB00020 */ lw $s0, 0x20($sp) -/* 0C6D68 800C6168 03E00008 */ jr $ra -/* 0C6D6C 800C616C 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/data/dkr.data.s b/data/dkr.data.s index 4b21f122..b7d1503d 100644 --- a/data/dkr.data.s +++ b/data/dkr.data.s @@ -9210,7 +9210,7 @@ glabel D_800E47B0 .word 0x000E0204 .word 0x00000002 -glabel D_800E4800 +glabel __osPiAccessQueueEnabled .word 0x00000000 .word 0x00000000 .word 0x00000000 diff --git a/find_sym.sh b/find_sym.sh new file mode 100755 index 00000000..0d1b4c80 --- /dev/null +++ b/find_sym.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +shopt -s globstar + +if [ "$#" -ne "1" ]; +then + echo "usage: $0 name" + exit 1 +fi + +#echo "Replace $1 with $2?" +#read +grep -r "$1" asm/**/*.s src/**/*.c lib/**/*.{c,s} include/*.h data/dkr.data.s undefined_syms.txt \ No newline at end of file diff --git a/lib/asm/non_matchings/unknown_0D3160/D_800D25A0.s b/lib/asm/non_matchings/unknown_0D3160/D_800D25A0.s deleted file mode 100644 index e8ab3292..00000000 --- a/lib/asm/non_matchings/unknown_0D3160/D_800D25A0.s +++ /dev/null @@ -1,65 +0,0 @@ -glabel D_800D25A0 -/* 0D31A0 800D25A0 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 0D31A4 800D25A4 AFBF001C */ sw $ra, 0x1c($sp) -/* 0D31A8 800D25A8 AFA40028 */ sw $a0, 0x28($sp) -/* 0D31AC 800D25AC AFA5002C */ sw $a1, 0x2c($sp) -/* 0D31B0 800D25B0 AFA60030 */ sw $a2, 0x30($sp) -/* 0D31B4 800D25B4 AFA70034 */ sw $a3, 0x34($sp) -/* 0D31B8 800D25B8 AFB10018 */ sw $s1, 0x18($sp) -/* 0D31BC 800D25BC AFB00014 */ sw $s0, 0x14($sp) -/* 0D31C0 800D25C0 3C0EA460 */ lui $t6, %hi(D_A4600010) # $t6, 0xa460 -/* 0D31C4 800D25C4 8DD00010 */ lw $s0, %lo(D_A4600010)($t6) -/* 0D31C8 800D25C8 320F0003 */ andi $t7, $s0, 3 -/* 0D31CC 800D25CC 11E00006 */ beqz $t7, .L800D25E8 -/* 0D31D0 800D25D0 00000000 */ nop -.L800D25D4: -/* 0D31D4 800D25D4 3C18A460 */ lui $t8, %hi(D_A4600010) # $t8, 0xa460 -/* 0D31D8 800D25D8 8F100010 */ lw $s0, %lo(D_A4600010)($t8) -/* 0D31DC 800D25DC 32190003 */ andi $t9, $s0, 3 -/* 0D31E0 800D25E0 1720FFFC */ bnez $t9, .L800D25D4 -/* 0D31E4 800D25E4 00000000 */ nop -.L800D25E8: -/* 0D31E8 800D25E8 0C03233C */ jal osVirtualToPhysical -/* 0D31EC 800D25EC 8FA40030 */ lw $a0, 0x30($sp) -/* 0D31F0 800D25F0 3C08A460 */ lui $t0, 0xa460 -/* 0D31F4 800D25F4 AD020000 */ sw $v0, ($t0) -/* 0D31F8 800D25F8 3C098000 */ lui $t1, %hi(osRomBase) # $t1, 0x8000 -/* 0D31FC 800D25FC 8D290308 */ lw $t1, %lo(osRomBase)($t1) -/* 0D3200 800D2600 8FAA002C */ lw $t2, 0x2c($sp) -/* 0D3204 800D2604 3C011FFF */ lui $at, (0x1FFFFFFF >> 16) # lui $at, 0x1fff -/* 0D3208 800D2608 3421FFFF */ ori $at, (0x1FFFFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0D320C 800D260C 012A5825 */ or $t3, $t1, $t2 -/* 0D3210 800D2610 01616024 */ and $t4, $t3, $at -/* 0D3214 800D2614 3C0DA460 */ lui $t5, %hi(D_A4600004) # $t5, 0xa460 -/* 0D3218 800D2618 ADAC0004 */ sw $t4, %lo(D_A4600004)($t5) -/* 0D321C 800D261C 8FB10028 */ lw $s1, 0x28($sp) -/* 0D3220 800D2620 12200005 */ beqz $s1, .L800D2638 -/* 0D3224 800D2624 24010001 */ li $at, 1 -/* 0D3228 800D2628 12210008 */ beq $s1, $at, .L800D264C -/* 0D322C 800D262C 00000000 */ nop -/* 0D3230 800D2630 1000000B */ b .L800D2660 -/* 0D3234 800D2634 00000000 */ nop -.L800D2638: -/* 0D3238 800D2638 8FAE0034 */ lw $t6, 0x34($sp) -/* 0D323C 800D263C 3C18A460 */ lui $t8, %hi(D_A460000C) # $t8, 0xa460 -/* 0D3240 800D2640 25CFFFFF */ addiu $t7, $t6, -1 -/* 0D3244 800D2644 10000008 */ b .L800D2668 -/* 0D3248 800D2648 AF0F000C */ sw $t7, %lo(D_A460000C)($t8) -.L800D264C: -/* 0D324C 800D264C 8FB90034 */ lw $t9, 0x34($sp) -/* 0D3250 800D2650 3C09A460 */ lui $t1, %hi(D_A4600008) # $t1, 0xa460 -/* 0D3254 800D2654 2728FFFF */ addiu $t0, $t9, -1 -/* 0D3258 800D2658 10000003 */ b .L800D2668 -/* 0D325C 800D265C AD280008 */ sw $t0, %lo(D_A4600008)($t1) -.L800D2660: -/* 0D3260 800D2660 10000002 */ b .L800D266C -/* 0D3264 800D2664 2402FFFF */ li $v0, -1 -.L800D2668: -/* 0D3268 800D2668 00001025 */ move $v0, $zero -.L800D266C: -/* 0D326C 800D266C 8FBF001C */ lw $ra, 0x1c($sp) -/* 0D3270 800D2670 8FB00014 */ lw $s0, 0x14($sp) -/* 0D3274 800D2674 8FB10018 */ lw $s1, 0x18($sp) -/* 0D3278 800D2678 03E00008 */ jr $ra -/* 0D327C 800D267C 27BD0028 */ addiu $sp, $sp, 0x28 - diff --git a/lib/asm/non_matchings/unknown_0D3160/D_800D2760.s b/lib/asm/non_matchings/unknown_0D3160/__osDevMgrMain.s similarity index 99% rename from lib/asm/non_matchings/unknown_0D3160/D_800D2760.s rename to lib/asm/non_matchings/unknown_0D3160/__osDevMgrMain.s index ad5c61a0..665b2cf6 100644 --- a/lib/asm/non_matchings/unknown_0D3160/D_800D2760.s +++ b/lib/asm/non_matchings/unknown_0D3160/__osDevMgrMain.s @@ -1,4 +1,4 @@ -glabel D_800D2760 +glabel __osDevMgrMain /* 0D3360 800D2760 27BDFFC0 */ addiu $sp, $sp, -0x40 /* 0D3364 800D2764 AFA40040 */ sw $a0, 0x40($sp) /* 0D3368 800D2768 8FAE0040 */ lw $t6, 0x40($sp) diff --git a/lib/asm/non_matchings/unknown_0D3160/D_800D2680.s b/lib/asm/non_matchings/unknown_0D3160/osEPiRawStartDma.s similarity index 99% rename from lib/asm/non_matchings/unknown_0D3160/D_800D2680.s rename to lib/asm/non_matchings/unknown_0D3160/osEPiRawStartDma.s index 2303577a..5cd21a7c 100644 --- a/lib/asm/non_matchings/unknown_0D3160/D_800D2680.s +++ b/lib/asm/non_matchings/unknown_0D3160/osEPiRawStartDma.s @@ -1,4 +1,4 @@ -glabel D_800D2680 +glabel osEPiRawStartDma /* 0D3280 800D2680 27BDFFD8 */ addiu $sp, $sp, -0x28 /* 0D3284 800D2684 AFBF001C */ sw $ra, 0x1c($sp) /* 0D3288 800D2688 AFA40028 */ sw $a0, 0x28($sp) diff --git a/lib/src/unknown_0D3020.c b/lib/src/unknown_0D3020.c index 8ec1b3ad..6cc413d8 100644 --- a/lib/src/unknown_0D3020.c +++ b/lib/src/unknown_0D3020.c @@ -8,26 +8,26 @@ GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/func_800D2470.s") #define PI_Q_BUF_LEN 1 -extern u32 D_800E4800;//__osPiAccessQueueEnabled +extern u32 __osPiAccessQueueEnabled;//__osPiAccessQueueEnabled extern OSMesg D_8012D1E0[PI_Q_BUF_LEN];//piAccessBuf -extern OSMesgQueue D_8012D1E8; //__osPiAccessQueue +extern OSMesgQueue piAccessQueue; //__osPiAccessQueue void __osPiCreateAccessQueue(void) { - D_800E4800 = 1; - osCreateMesgQueue(&D_8012D1E8, D_8012D1E0, PI_Q_BUF_LEN); - osSendMesg(&D_8012D1E8, NULL, OS_MESG_NOBLOCK); + __osPiAccessQueueEnabled = 1; + osCreateMesgQueue(&piAccessQueue, D_8012D1E0, PI_Q_BUF_LEN); + osSendMesg(&piAccessQueue, NULL, OS_MESG_NOBLOCK); } void __osPiGetAccess(void) { OSMesg dummyMesg; - if (!D_800E4800) + if (!__osPiAccessQueueEnabled) __osPiCreateAccessQueue(); - osRecvMesg(&D_8012D1E8, &dummyMesg, OS_MESG_BLOCK); + osRecvMesg(&piAccessQueue, &dummyMesg, OS_MESG_BLOCK); } void __osPiRelAccess(void) { - osSendMesg(&D_8012D1E8, NULL, OS_MESG_NOBLOCK); + osSendMesg(&piAccessQueue, NULL, OS_MESG_NOBLOCK); } \ No newline at end of file diff --git a/lib/src/unknown_0D3160.c b/lib/src/unknown_0D3160.c index 1144b763..b9db571d 100644 --- a/lib/src/unknown_0D3160.c +++ b/lib/src/unknown_0D3160.c @@ -4,12 +4,39 @@ #include "types.h" #include "macros.h" #include "libultra_internal.h" +#include "hardware.h" GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osDisableInt.s") GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osRestoreInt.s") -GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/D_800D25A0.s") -GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/D_800D2680.s") -GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/D_800D2760.s") + +s32 osPiRawStartDma(s32 direction, u32 devAddr, void *dramAddr, u32 size) +{ + register int status; + status = HW_REG(PI_STATUS_REG, u32); + while (status & (PI_STATUS_BUSY | PI_STATUS_IOBUSY | PI_STATUS_ERROR)) { + status = HW_REG(PI_STATUS_REG, u32); + } + + HW_REG(PI_DRAM_ADDR_REG, void *) = (void *) osVirtualToPhysical(dramAddr); + + HW_REG(PI_CART_ADDR_REG, void *) = (void *) (((uintptr_t) osRomBase | devAddr) & 0x1fffffff); + + switch (direction) { + case OS_READ: + HW_REG(PI_WR_LEN_REG, u32) = size - 1; + break; + case OS_WRITE: + HW_REG(PI_RD_LEN_REG, u32) = size - 1; + break; + default: + return -1; + break; + } + return 0; +} + +GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/osEPiRawStartDma.s") +GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osDevMgrMain.s") GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/__osViInit.s") GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3160/func_800D2C60.s") diff --git a/src/unknown_0B8920.c b/src/unknown_0B8920.c index 0c3d4ab4..00d6d051 100644 --- a/src/unknown_0B8920.c +++ b/src/unknown_0B8920.c @@ -3,6 +3,18 @@ #include "types.h" #include "macros.h" +#include "libultra_internal.h" + +#define OS_PIM_STACKSIZE 4096 + +extern u32 __osPiAccessQueueEnabled; //__osPiAccessQueueEnabled +extern OSDevMgr __osPiDevMgr; +extern u8 piThreadStack[OS_PIM_STACKSIZE];//piThreadStack +extern OSThread piThread; //piThread +extern OSMesgQueue piEventQueue; //piEventQueue +extern OSMesg piEventBuf[1]; //piEventBuf +extern OSMesgQueue piAccessQueue; //piAccessQueue +void __osDevMgrMain(void); extern s32* D_800E3040; extern s32* D_800E3044; @@ -233,7 +245,44 @@ GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C5AA0.s") GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C5B58.s") GLOBAL_ASM("asm/non_matchings/unknown_0B8920/func_800C5F60.s") -GLOBAL_ASM("asm/non_matchings/unknown_0B8920/osCreatePiManager.s") +void osCreatePiManager(OSPri pri, OSMesgQueue *cmdQ, OSMesg *cmdBuf, s32 cmdMsgCnt) +{ + u32 savedMask; + OSPri oldPri; + OSPri myPri; + if (!__osPiDevMgr.active) + { + osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt); + osCreateMesgQueue(&piEventQueue, (OSMesg*)&piEventBuf, 1); + if (!__osPiAccessQueueEnabled) + __osPiCreateAccessQueue(); + osSetEventMesg(OS_EVENT_PI, &piEventQueue, (OSMesg)0x22222222); + oldPri = -1; + myPri = osGetThreadPri(NULL); + if (myPri < pri) + { + oldPri = myPri; + osSetThreadPri(NULL, pri); + } + savedMask = __osDisableInt(); + __osPiDevMgr.active = 1; + __osPiDevMgr.thread = &piThread; + __osPiDevMgr.cmdQueue = cmdQ; + __osPiDevMgr.evtQueue = &piEventQueue; + __osPiDevMgr.acsQueue = &piAccessQueue; + __osPiDevMgr.dma = osPiRawStartDma; + __osPiDevMgr.edma = osEPiRawStartDma; + + osCreateThread(&piThread, 0, __osDevMgrMain, &__osPiDevMgr, &piThreadStack[OS_PIM_STACKSIZE], pri); + osStartThread(&piThread); + __osRestoreInt(savedMask); + if (oldPri != -1) + { + osSetThreadPri(NULL, oldPri); + } + } +} + void func_800C6170(void) { D_800E3760 = func_80070C9C(0x2800, 0xFF); diff --git a/undefined_syms.txt b/undefined_syms.txt index 183b9c87..c02ecb5b 100755 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -60,9 +60,9 @@ D_800CC3C0 = 0x800CC3C0; D_800CC4E0 = 0x800CC4E0; D_800CC514 = 0x800CC514; viMgrMain = 0x800D1B08; -D_800D25A0 = 0x800D25A0; -D_800D2680 = 0x800D2680; -D_800D2760 = 0x800D2760; +osPiRawStartDma = 0x800D25A0; +osEPiRawStartDma = 0x800D2680; +__osDevMgrMain = 0x800D2760; __osExceptionPreamble = 0x800D2CB0; __osException = 0x800D2CC0; __osCleanupThread = 0x800D35A0; @@ -780,7 +780,7 @@ D_800E46C0 = 0x800E46C0; D_800E4710 = 0x800E4710; D_800E4760 = 0x800E4760; D_800E47B0 = 0x800E47B0; -D_800E4800 = 0x800E4800; +__osPiAccessQueueEnabled = 0x800E4800; D_800E4810 = 0x800E4810; D_800E4870 = 0x800E4870; D_800E4874 = 0x800E4874; @@ -2692,6 +2692,7 @@ D_8012991C = 0x8012991C; D_80129920 = 0x80129920; D_80129924 = 0x80129924; D_801299B0 = 0x801299B0; +piThreadStack = 0x80129AB0; D_80129BB0 = 0x80129BB0; D_80129FB0 = 0x80129FB0; D_80129FBC = 0x80129FBC; @@ -2799,9 +2800,9 @@ D_8012A7E8 = 0x8012A7E8; D_8012A7EC = 0x8012A7EC; D_8012A7F0 = 0x8012A7F0; D_8012A7F4 = 0x8012A7F4; -D_8012A800 = 0x8012A800; -D_8012AAB0 = 0x8012AAB0; -D_8012AAC8 = 0x8012AAC8; +piThread = 0x8012A800; +piEventQueue = 0x8012AAB0; +piEventBuf = 0x8012AAC8; gzip_bit_buffer = 0x8012AAD0; gzip_num_bits = 0x8012AAD4; D_8012AAD8 = 0x8012AAD8; @@ -2832,7 +2833,7 @@ viCounterMsg = 0x8012D178; D_8012D190 = 0x8012D190; D_8012D1A0 = 0x8012D1A0; D_8012D1E0 = 0x8012D1E0; -D_8012D1E8 = 0x8012D1E8; +piAccessQueue = 0x8012D1E8; __osCurrentTime = 0x8012D220; D_8012D224 = 0x8012D224; __osBaseCounter = 0x8012D228;