diff --git a/ld/libfiles.ntsc-beta.inc b/ld/libfiles.ntsc-beta.inc index 67e1f8bcd..880d9ced0 100644 --- a/ld/libfiles.ntsc-beta.inc +++ b/ld/libfiles.ntsc-beta.inc @@ -21,7 +21,7 @@ build/ROMID/lib/ultra/libc/llcvt.o (section); \ build/ROMID/lib/ultra/os/initialize.o (section); \ build/ROMID/lib/ultra/io/sptask.o (section); \ - build/ROMID/lib/lib_06100.o (section); \ + build/ROMID/lib/ultra/io/gbpakinit.o (section); \ build/ROMID/lib/ultra/io/gbpakpower.o (section); \ build/ROMID/lib/ultra/io/conteeplongwrite.o (section); \ build/ROMID/lib/ultra/io/pfsresizefile.o (section); \ diff --git a/ld/libfiles.ntsc-final.inc b/ld/libfiles.ntsc-final.inc index 890e5703d..c60c02068 100644 --- a/ld/libfiles.ntsc-final.inc +++ b/ld/libfiles.ntsc-final.inc @@ -20,7 +20,7 @@ build/ROMID/lib/ultra/libc/llcvt.o (section); \ build/ROMID/lib/ultra/os/initialize.o (section); \ build/ROMID/lib/ultra/io/sptask.o (section); \ - build/ROMID/lib/lib_06100.o (section); \ + build/ROMID/lib/ultra/io/gbpakinit.o (section); \ build/ROMID/lib/ultra/io/gbpakpower.o (section); \ build/ROMID/lib/ultra/io/conteeplongwrite.o (section); \ build/ROMID/lib/ultra/io/pfsresizefile.o (section); \ diff --git a/ld/libfiles.pal-final.inc b/ld/libfiles.pal-final.inc index 5290187d1..c189ab420 100644 --- a/ld/libfiles.pal-final.inc +++ b/ld/libfiles.pal-final.inc @@ -20,7 +20,7 @@ build/ROMID/lib/ultra/libc/llcvt.o (section); \ build/ROMID/lib/ultra/os/initialize.o (section); \ build/ROMID/lib/ultra/io/sptask.o (section); \ - build/ROMID/lib/lib_06100.o (section); \ + build/ROMID/lib/ultra/io/gbpakinit.o (section); \ build/ROMID/lib/ultra/io/gbpakpower.o (section); \ build/ROMID/lib/ultra/io/conteeplongwrite.o (section); \ build/ROMID/lib/ultra/io/pfsresizefile.o (section); \ diff --git a/ld/pd.ld b/ld/pd.ld index eba249817..bdbaf4794 100644 --- a/ld/pd.ld +++ b/ld/pd.ld @@ -106,9 +106,6 @@ SECTIONS _val7f11a6c8 = 0x0dae; _val7f11aa14 = 0x0e4d; _val7f11aae4 = 0x0e5b; - _val7f11ad0c = 0x0efc; - _val7f11ae0c = 0x0f20; - _val7f11aef4 = 0x0f38; _val7f11c1d0 = 0x128d; #elif VERSION >= VERSION_NTSC_FINAL _val7f116f34 = 0x0339; @@ -118,9 +115,6 @@ SECTIONS _val7f11a6c8 = 0x0da7; _val7f11aa14 = 0x0e46; _val7f11aae4 = 0x0e54; - _val7f11ad0c = 0x0ef5; - _val7f11ae0c = 0x0f19; - _val7f11aef4 = 0x0f31; _val7f11c1d0 = 0x1286; #else _val7f116f34 = 0x0336; @@ -130,9 +124,6 @@ SECTIONS _val7f11a6c8 = 0x0ce3; _val7f11aa14 = 0x0d83; _val7f11aae4 = 0x0d91; - _val7f11ad0c = 0x0e32; - _val7f11ae0c = 0x0e56; - _val7f11aef4 = 0x0e6e; _val7f11c1d0 = 0x11c3; #endif diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index c3b3bb0fd..d4760521d 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -10,7 +10,6 @@ #include "bss.h" #include "lib/args.h" #include "lib/joy.h" -#include "lib/lib_06100.h" #include "lib/lib_06440.h" #include "lib/main.h" #include "lib/memory.h" @@ -5210,363 +5209,139 @@ glabel mempakPrepare // return false; //} -#if VERSION >= VERSION_NTSC_1_0 -GLOBAL_ASM( -glabel pak0f11ac7c -/* f11ac7c: 27bdffd0 */ addiu $sp,$sp,-48 -/* f11ac80: afb00018 */ sw $s0,0x18($sp) -/* f11ac84: 00048600 */ sll $s0,$a0,0x18 -/* f11ac88: 00107603 */ sra $t6,$s0,0x18 -/* f11ac8c: afbf001c */ sw $ra,0x1c($sp) -/* f11ac90: 01c08025 */ or $s0,$t6,$zero -/* f11ac94: afa40030 */ sw $a0,0x30($sp) -/* f11ac98: afa0002c */ sw $zero,0x2c($sp) -/* f11ac9c: 0c00543a */ jal joyDisableCyclicPolling -/* f11aca0: afa00024 */ sw $zero,0x24($sp) -/* f11aca4: 24010004 */ addiu $at,$zero,0x4 -/* f11aca8: 16010003 */ bne $s0,$at,.L0f11acb8 -/* f11acac: 8fa30024 */ lw $v1,0x24($sp) -/* f11acb0: 10000009 */ beqz $zero,.L0f11acd8 -/* f11acb4: 00002825 */ or $a1,$zero,$zero -.L0f11acb8: -/* f11acb8: 00107880 */ sll $t7,$s0,0x2 -/* f11acbc: 01f07823 */ subu $t7,$t7,$s0 -/* f11acc0: 000f7880 */ sll $t7,$t7,0x2 -/* f11acc4: 01f07821 */ addu $t7,$t7,$s0 -/* f11acc8: 3c18800a */ lui $t8,%hi(g_Pfses) -/* f11accc: 27183180 */ addiu $t8,$t8,%lo(g_Pfses) -/* f11acd0: 000f78c0 */ sll $t7,$t7,0x3 -/* f11acd4: 01f82821 */ addu $a1,$t7,$t8 -.L0f11acd8: -/* f11acd8: 3c04800a */ lui $a0,%hi(var80099e78) -/* f11acdc: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) -/* f11ace0: 02003025 */ or $a2,$s0,$zero -/* f11ace4: 00003825 */ or $a3,$zero,$zero -/* f11ace8: 0fc45ec1 */ jal pakInitPak -/* f11acec: afa30024 */ sw $v1,0x24($sp) -/* f11acf0: 00102e00 */ sll $a1,$s0,0x18 -/* f11acf4: 0005ce03 */ sra $t9,$a1,0x18 -/* f11acf8: afa20028 */ sw $v0,0x28($sp) -/* f11acfc: 03202825 */ or $a1,$t9,$zero -/* f11ad00: 00402025 */ or $a0,$v0,$zero -/* f11ad04: 24060001 */ addiu $a2,$zero,0x1 -/* f11ad08: 0fc470e7 */ jal pakHandleResult -/* f11ad0c: 24070ef5 */ addiu $a3,$zero,_val7f11ad0c -/* f11ad10: 1040001b */ beqz $v0,.L0f11ad80 -/* f11ad14: 8fa30024 */ lw $v1,0x24($sp) -/* f11ad18: 00104880 */ sll $t1,$s0,0x2 -/* f11ad1c: 01304823 */ subu $t1,$t1,$s0 -/* f11ad20: 00094880 */ sll $t1,$t1,0x2 -/* f11ad24: 01304823 */ subu $t1,$t1,$s0 -/* f11ad28: 00094880 */ sll $t1,$t1,0x2 -/* f11ad2c: 01304821 */ addu $t1,$t1,$s0 -/* f11ad30: 00094880 */ sll $t1,$t1,0x2 -/* f11ad34: 01304823 */ subu $t1,$t1,$s0 -/* f11ad38: 00094880 */ sll $t1,$t1,0x2 -/* f11ad3c: 3c01800a */ lui $at,%hi(g_Paks+0x10) -/* f11ad40: 00290821 */ addu $at,$at,$t1 -/* f11ad44: 24080003 */ addiu $t0,$zero,0x3 -/* f11ad48: ac282390 */ sw $t0,%lo(g_Paks+0x10)($at) -/* f11ad4c: 24010004 */ addiu $at,$zero,0x4 -/* f11ad50: 56010008 */ bnel $s0,$at,.L0f11ad74 -/* f11ad54: 240a0001 */ addiu $t2,$zero,0x1 -/* f11ad58: 0fc471e8 */ jal pakExecuteDebugOperations -/* f11ad5c: 00000000 */ sll $zero,$zero,0x0 -/* f11ad60: 0fc471e8 */ jal pakExecuteDebugOperations -/* f11ad64: 00000000 */ sll $zero,$zero,0x0 -/* f11ad68: 0fc471e8 */ jal pakExecuteDebugOperations -/* f11ad6c: 00000000 */ sll $zero,$zero,0x0 -/* f11ad70: 240a0001 */ addiu $t2,$zero,0x1 -.L0f11ad74: -/* f11ad74: afaa002c */ sw $t2,0x2c($sp) -/* f11ad78: 10000006 */ beqz $zero,.L0f11ad94 -/* f11ad7c: 24030001 */ addiu $v1,$zero,0x1 -.L0f11ad80: -/* f11ad80: 8fab0028 */ lw $t3,0x28($sp) -/* f11ad84: 24010001 */ addiu $at,$zero,0x1 -/* f11ad88: 15610002 */ bne $t3,$at,.L0f11ad94 -/* f11ad8c: 00000000 */ sll $zero,$zero,0x0 -/* f11ad90: 24030001 */ addiu $v1,$zero,0x1 -.L0f11ad94: -/* f11ad94: 1460007f */ bnez $v1,.L0f11af94 -/* f11ad98: 24010004 */ addiu $at,$zero,0x4 -/* f11ad9c: 16010003 */ bne $s0,$at,.L0f11adac -/* f11ada0: 3c04800a */ lui $a0,%hi(var80099e78) -/* f11ada4: afa0002c */ sw $zero,0x2c($sp) -/* f11ada8: 24030001 */ addiu $v1,$zero,0x1 -.L0f11adac: -/* f11adac: 14600079 */ bnez $v1,.L0f11af94 -/* f11adb0: 24010004 */ addiu $at,$zero,0x4 -/* f11adb4: 16010003 */ bne $s0,$at,.L0f11adc4 -/* f11adb8: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) -/* f11adbc: 10000009 */ beqz $zero,.L0f11ade4 -/* f11adc0: 00002825 */ or $a1,$zero,$zero -.L0f11adc4: -/* f11adc4: 00106080 */ sll $t4,$s0,0x2 -/* f11adc8: 01906023 */ subu $t4,$t4,$s0 -/* f11adcc: 000c6080 */ sll $t4,$t4,0x2 -/* f11add0: 01906021 */ addu $t4,$t4,$s0 -/* f11add4: 3c0d800a */ lui $t5,%hi(g_Pfses) -/* f11add8: 25ad3180 */ addiu $t5,$t5,%lo(g_Pfses) -/* f11addc: 000c60c0 */ sll $t4,$t4,0x3 -/* f11ade0: 018d2821 */ addu $a1,$t4,$t5 -.L0f11ade4: -/* f11ade4: 02003025 */ or $a2,$s0,$zero -/* f11ade8: 0c013e15 */ jal osMotorProbe -/* f11adec: afa30024 */ sw $v1,0x24($sp) -/* f11adf0: 00102e00 */ sll $a1,$s0,0x18 -/* f11adf4: 00057603 */ sra $t6,$a1,0x18 -/* f11adf8: afa20028 */ sw $v0,0x28($sp) -/* f11adfc: 01c02825 */ or $a1,$t6,$zero -/* f11ae00: 00402025 */ or $a0,$v0,$zero -/* f11ae04: 00003025 */ or $a2,$zero,$zero -/* f11ae08: 0fc470e7 */ jal pakHandleResult -/* f11ae0c: 24070f19 */ addiu $a3,$zero,_val7f11ae0c -/* f11ae10: 1040001a */ beqz $v0,.L0f11ae7c -/* f11ae14: 8fa30024 */ lw $v1,0x24($sp) -/* f11ae18: 00107880 */ sll $t7,$s0,0x2 -/* f11ae1c: 01f07823 */ subu $t7,$t7,$s0 -/* f11ae20: 000f7880 */ sll $t7,$t7,0x2 -/* f11ae24: 01f07823 */ subu $t7,$t7,$s0 -/* f11ae28: 000f7880 */ sll $t7,$t7,0x2 -/* f11ae2c: 01f07821 */ addu $t7,$t7,$s0 -/* f11ae30: 000f7880 */ sll $t7,$t7,0x2 -/* f11ae34: 01f07823 */ subu $t7,$t7,$s0 -/* f11ae38: 3c18800a */ lui $t8,%hi(g_Paks) -/* f11ae3c: 27182380 */ addiu $t8,$t8,%lo(g_Paks) -/* f11ae40: 000f7880 */ sll $t7,$t7,0x2 -/* f11ae44: 01f81021 */ addu $v0,$t7,$t8 -/* f11ae48: 8c4a0264 */ lw $t2,0x264($v0) -/* f11ae4c: 24190001 */ addiu $t9,$zero,0x1 -/* f11ae50: 2408000b */ addiu $t0,$zero,0xb -/* f11ae54: 24090001 */ addiu $t1,$zero,0x1 -/* f11ae58: 240c0001 */ addiu $t4,$zero,0x1 -/* f11ae5c: 254b0001 */ addiu $t3,$t2,0x1 -/* f11ae60: ac590000 */ sw $t9,0x0($v0) -/* f11ae64: ac480010 */ sw $t0,0x10($v0) -/* f11ae68: ac490004 */ sw $t1,0x4($v0) -/* f11ae6c: ac4b0264 */ sw $t3,0x264($v0) -/* f11ae70: afac002c */ sw $t4,0x2c($sp) -/* f11ae74: 10000007 */ beqz $zero,.L0f11ae94 -/* f11ae78: 24030001 */ addiu $v1,$zero,0x1 -.L0f11ae7c: -/* f11ae7c: 8fad0028 */ lw $t5,0x28($sp) -/* f11ae80: 24010001 */ addiu $at,$zero,0x1 -/* f11ae84: 15a10003 */ bne $t5,$at,.L0f11ae94 -/* f11ae88: 00000000 */ sll $zero,$zero,0x0 -/* f11ae8c: afa0002c */ sw $zero,0x2c($sp) -/* f11ae90: 24030001 */ addiu $v1,$zero,0x1 -.L0f11ae94: -/* f11ae94: 1460003f */ bnez $v1,.L0f11af94 -/* f11ae98: 24010004 */ addiu $at,$zero,0x4 -/* f11ae9c: 16010003 */ bne $s0,$at,.L0f11aeac -/* f11aea0: 3c04800a */ lui $a0,%hi(var80099e78) -/* f11aea4: 10000009 */ beqz $zero,.L0f11aecc -/* f11aea8: 00002825 */ or $a1,$zero,$zero -.L0f11aeac: -/* f11aeac: 00107080 */ sll $t6,$s0,0x2 -/* f11aeb0: 01d07023 */ subu $t6,$t6,$s0 -/* f11aeb4: 000e7080 */ sll $t6,$t6,0x2 -/* f11aeb8: 01d07021 */ addu $t6,$t6,$s0 -/* f11aebc: 3c0f800a */ lui $t7,%hi(g_Pfses) -/* f11aec0: 25ef3180 */ addiu $t7,$t7,%lo(g_Pfses) -/* f11aec4: 000e70c0 */ sll $t6,$t6,0x3 -/* f11aec8: 01cf2821 */ addu $a1,$t6,$t7 -.L0f11aecc: -/* f11aecc: 24849e78 */ addiu $a0,$a0,%lo(var80099e78) -/* f11aed0: 0c001840 */ jal func00006100 -/* f11aed4: 02003025 */ or $a2,$s0,$zero -/* f11aed8: 00102e00 */ sll $a1,$s0,0x18 -/* f11aedc: 0005c603 */ sra $t8,$a1,0x18 -/* f11aee0: afa20028 */ sw $v0,0x28($sp) -/* f11aee4: 03002825 */ or $a1,$t8,$zero -/* f11aee8: 00402025 */ or $a0,$v0,$zero -/* f11aeec: 00003025 */ or $a2,$zero,$zero -/* f11aef0: 0fc470e7 */ jal pakHandleResult -/* f11aef4: 24070f31 */ addiu $a3,$zero,_val7f11aef4 -/* f11aef8: 10400022 */ beqz $v0,.L0f11af84 -/* f11aefc: 8fa80028 */ lw $t0,0x28($sp) -/* f11af00: 0010c880 */ sll $t9,$s0,0x2 -/* f11af04: 0330c823 */ subu $t9,$t9,$s0 -/* f11af08: 0019c880 */ sll $t9,$t9,0x2 -/* f11af0c: 0330c823 */ subu $t9,$t9,$s0 -/* f11af10: 0019c880 */ sll $t9,$t9,0x2 -/* f11af14: 0330c821 */ addu $t9,$t9,$s0 -/* f11af18: 3c0a8009 */ lui $t2,%hi(g_Is4Mb) -/* f11af1c: 914a0af0 */ lbu $t2,%lo(g_Is4Mb)($t2) -/* f11af20: 0019c880 */ sll $t9,$t9,0x2 -/* f11af24: 0330c823 */ subu $t9,$t9,$s0 -/* f11af28: 3c08800a */ lui $t0,%hi(g_Paks) -/* f11af2c: 25082380 */ addiu $t0,$t0,%lo(g_Paks) -/* f11af30: 0019c880 */ sll $t9,$t9,0x2 -/* f11af34: 24090001 */ addiu $t1,$zero,0x1 -/* f11af38: 24010001 */ addiu $at,$zero,0x1 -/* f11af3c: afa9002c */ sw $t1,0x2c($sp) -/* f11af40: 15410005 */ bne $t2,$at,.L0f11af58 -/* f11af44: 03281021 */ addu $v0,$t9,$t0 -/* f11af48: 240b0016 */ addiu $t3,$zero,0x16 -/* f11af4c: ac400000 */ sw $zero,0x0($v0) -/* f11af50: 10000010 */ beqz $zero,.L0f11af94 -/* f11af54: ac4b0010 */ sw $t3,0x10($v0) -.L0f11af58: -/* f11af58: 904e02b8 */ lbu $t6,0x2b8($v0) -/* f11af5c: 8c580264 */ lw $t8,0x264($v0) -/* f11af60: 240c0003 */ addiu $t4,$zero,0x3 -/* f11af64: 240d0008 */ addiu $t5,$zero,0x8 -/* f11af68: 31cfff7f */ andi $t7,$t6,0xff7f -/* f11af6c: 27190001 */ addiu $t9,$t8,0x1 -/* f11af70: ac4c0000 */ sw $t4,0x0($v0) -/* f11af74: ac4d0010 */ sw $t5,0x10($v0) -/* f11af78: a04f02b8 */ sb $t7,0x2b8($v0) -/* f11af7c: 10000005 */ beqz $zero,.L0f11af94 -/* f11af80: ac590264 */ sw $t9,0x264($v0) -.L0f11af84: -/* f11af84: 24010001 */ addiu $at,$zero,0x1 -/* f11af88: 15010002 */ bne $t0,$at,.L0f11af94 -/* f11af8c: 00000000 */ sll $zero,$zero,0x0 -/* f11af90: afa0002c */ sw $zero,0x2c($sp) -.L0f11af94: -/* f11af94: 0c005451 */ jal joyEnableCyclicPolling -/* f11af98: 00000000 */ sll $zero,$zero,0x0 -/* f11af9c: 8fbf001c */ lw $ra,0x1c($sp) -/* f11afa0: 8fa2002c */ lw $v0,0x2c($sp) -/* f11afa4: 8fb00018 */ lw $s0,0x18($sp) -/* f11afa8: 03e00008 */ jr $ra -/* f11afac: 27bd0030 */ addiu $sp,$sp,0x30 -); -#endif +bool pakProbe(s8 device) +{ + bool plugged = false; + s32 ret; + bool done = false; -#if VERSION < VERSION_NTSC_1_0 -GLOBAL_ASM( -glabel pak0f114c08nb -/* f114c08: 27bdffe0 */ addiu $sp,$sp,-32 -/* f114c0c: afb00018 */ sw $s0,0x18($sp) -/* f114c10: 00048600 */ sll $s0,$a0,0x18 -/* f114c14: 00107603 */ sra $t6,$s0,0x18 -/* f114c18: 24010004 */ addiu $at,$zero,0x4 -/* f114c1c: 01c08025 */ or $s0,$t6,$zero -/* f114c20: afbf001c */ sw $ra,0x1c($sp) -/* f114c24: 15c10003 */ bne $t6,$at,.NB0f114c34 -/* f114c28: afa40020 */ sw $a0,0x20($sp) -/* f114c2c: 10000064 */ beqz $zero,.NB0f114dc0 -/* f114c30: 24020001 */ addiu $v0,$zero,0x1 -.NB0f114c34: -/* f114c34: 3c057f1b */ lui $a1,0x7f1b -/* f114c38: 24a5e464 */ addiu $a1,$a1,-7068 -/* f114c3c: 0c00581b */ jal joyDisableCyclicPolling -/* f114c40: 24040d6a */ addiu $a0,$zero,0xd6a -/* f114c44: 24010004 */ addiu $at,$zero,0x4 -/* f114c48: 16010003 */ bne $s0,$at,.NB0f114c58 -/* f114c4c: 3c04800a */ lui $a0,0x800a -/* f114c50: 10000009 */ beqz $zero,.NB0f114c78 -/* f114c54: 00002825 */ or $a1,$zero,$zero -.NB0f114c58: -/* f114c58: 00107880 */ sll $t7,$s0,0x2 -/* f114c5c: 01f07823 */ subu $t7,$t7,$s0 -/* f114c60: 000f7880 */ sll $t7,$t7,0x2 -/* f114c64: 01f07821 */ addu $t7,$t7,$s0 -/* f114c68: 3c18800a */ lui $t8,0x800a -/* f114c6c: 27187658 */ addiu $t8,$t8,0x7658 -/* f114c70: 000f78c0 */ sll $t7,$t7,0x3 -/* f114c74: 01f82821 */ addu $a1,$t7,$t8 -.NB0f114c78: -/* f114c78: 2484e5d8 */ addiu $a0,$a0,-6696 -/* f114c7c: 0fc4478e */ jal pakInitPak -/* f114c80: 02003025 */ or $a2,$s0,$zero -/* f114c84: 00102e00 */ sll $a1,$s0,0x18 -/* f114c88: 0005ce03 */ sra $t9,$a1,0x18 -/* f114c8c: 03202825 */ or $a1,$t9,$zero -/* f114c90: 00402025 */ or $a0,$v0,$zero -/* f114c94: 24060001 */ addiu $a2,$zero,0x1 -/* f114c98: 0fc458cb */ jal pakHandleResult -/* f114c9c: 24070d6d */ addiu $a3,$zero,0xd6d -/* f114ca0: 10400007 */ beqz $v0,.NB0f114cc0 -/* f114ca4: 24010004 */ addiu $at,$zero,0x4 -/* f114ca8: 3c057f1b */ lui $a1,0x7f1b -/* f114cac: 24a5e46c */ addiu $a1,$a1,-7060 -/* f114cb0: 0c005834 */ jal joyEnableCyclicPolling -/* f114cb4: 24040d6f */ addiu $a0,$zero,0xd6f -/* f114cb8: 10000041 */ beqz $zero,.NB0f114dc0 -/* f114cbc: 24020001 */ addiu $v0,$zero,0x1 -.NB0f114cc0: -/* f114cc0: 16010003 */ bne $s0,$at,.NB0f114cd0 -/* f114cc4: 3c04800a */ lui $a0,0x800a -/* f114cc8: 10000009 */ beqz $zero,.NB0f114cf0 -/* f114ccc: 00002825 */ or $a1,$zero,$zero -.NB0f114cd0: -/* f114cd0: 00104080 */ sll $t0,$s0,0x2 -/* f114cd4: 01104023 */ subu $t0,$t0,$s0 -/* f114cd8: 00084080 */ sll $t0,$t0,0x2 -/* f114cdc: 01104021 */ addu $t0,$t0,$s0 -/* f114ce0: 3c09800a */ lui $t1,0x800a -/* f114ce4: 25297658 */ addiu $t1,$t1,0x7658 -/* f114ce8: 000840c0 */ sll $t0,$t0,0x3 -/* f114cec: 01092821 */ addu $a1,$t0,$t1 -.NB0f114cf0: -/* f114cf0: 2484e5d8 */ addiu $a0,$a0,-6696 -/* f114cf4: 0c01440d */ jal osMotorProbe -/* f114cf8: 02003025 */ or $a2,$s0,$zero -/* f114cfc: 00102e00 */ sll $a1,$s0,0x18 -/* f114d00: 00055603 */ sra $t2,$a1,0x18 -/* f114d04: 01402825 */ or $a1,$t2,$zero -/* f114d08: 00402025 */ or $a0,$v0,$zero -/* f114d0c: 00003025 */ or $a2,$zero,$zero -/* f114d10: 0fc458cb */ jal pakHandleResult -/* f114d14: 24070d76 */ addiu $a3,$zero,0xd76 -/* f114d18: 10400007 */ beqz $v0,.NB0f114d38 -/* f114d1c: 24010004 */ addiu $at,$zero,0x4 -/* f114d20: 3c057f1b */ lui $a1,0x7f1b -/* f114d24: 24a5e474 */ addiu $a1,$a1,-7052 -/* f114d28: 0c005834 */ jal joyEnableCyclicPolling -/* f114d2c: 24040d78 */ addiu $a0,$zero,0xd78 -/* f114d30: 10000023 */ beqz $zero,.NB0f114dc0 -/* f114d34: 24020001 */ addiu $v0,$zero,0x1 -.NB0f114d38: -/* f114d38: 16010003 */ bne $s0,$at,.NB0f114d48 -/* f114d3c: 3c04800a */ lui $a0,0x800a -/* f114d40: 10000009 */ beqz $zero,.NB0f114d68 -/* f114d44: 00002825 */ or $a1,$zero,$zero -.NB0f114d48: -/* f114d48: 00105880 */ sll $t3,$s0,0x2 -/* f114d4c: 01705823 */ subu $t3,$t3,$s0 -/* f114d50: 000b5880 */ sll $t3,$t3,0x2 -/* f114d54: 01705821 */ addu $t3,$t3,$s0 -/* f114d58: 3c0c800a */ lui $t4,0x800a -/* f114d5c: 258c7658 */ addiu $t4,$t4,0x7658 -/* f114d60: 000b58c0 */ sll $t3,$t3,0x3 -/* f114d64: 016c2821 */ addu $a1,$t3,$t4 -.NB0f114d68: -/* f114d68: 2484e5d8 */ addiu $a0,$a0,-6696 -/* f114d6c: 0c001890 */ jal func00006100 -/* f114d70: 02003025 */ or $a2,$s0,$zero -/* f114d74: 00102e00 */ sll $a1,$s0,0x18 -/* f114d78: 00056e03 */ sra $t5,$a1,0x18 -/* f114d7c: 01a02825 */ or $a1,$t5,$zero -/* f114d80: 00402025 */ or $a0,$v0,$zero -/* f114d84: 00003025 */ or $a2,$zero,$zero -/* f114d88: 0fc458cb */ jal pakHandleResult -/* f114d8c: 24070d7f */ addiu $a3,$zero,0xd7f -/* f114d90: 10400007 */ beqz $v0,.NB0f114db0 -/* f114d94: 24040d86 */ addiu $a0,$zero,0xd86 -/* f114d98: 3c057f1b */ lui $a1,0x7f1b -/* f114d9c: 24a5e47c */ addiu $a1,$a1,-7044 -/* f114da0: 0c005834 */ jal joyEnableCyclicPolling -/* f114da4: 24040d81 */ addiu $a0,$zero,0xd81 -/* f114da8: 10000005 */ beqz $zero,.NB0f114dc0 -/* f114dac: 24020001 */ addiu $v0,$zero,0x1 -.NB0f114db0: -/* f114db0: 3c057f1b */ lui $a1,0x7f1b -/* f114db4: 0c005834 */ jal joyEnableCyclicPolling -/* f114db8: 24a5e484 */ addiu $a1,$a1,-7036 -/* f114dbc: 00001025 */ or $v0,$zero,$zero -.NB0f114dc0: -/* f114dc0: 8fbf001c */ lw $ra,0x1c($sp) -/* f114dc4: 8fb00018 */ lw $s0,0x18($sp) -/* f114dc8: 27bd0020 */ addiu $sp,$sp,0x20 -/* f114dcc: 03e00008 */ jr $ra -/* f114dd0: 00000000 */ sll $zero,$zero,0x0 -); +#if VERSION >= VERSION_NTSC_1_0 + joyDisableCyclicPolling(); + + // Try memory pak + ret = pakInitPak(&var80099e78, PFS(device), device, NULL); + +#if VERSION >= VERSION_PAL_FINAL + if (pakHandleResult(ret, device, true, 3836)) +#elif VERSION >= VERSION_NTSC_FINAL + if (pakHandleResult(ret, device, true, 3829)) +#else + if (pakHandleResult(ret, device, true, 3634)) #endif + { + g_Paks[device].unk010 = PAK010_03; + + if (device == SAVEDEVICE_GAMEPAK) { + pakExecuteDebugOperations(); + pakExecuteDebugOperations(); + pakExecuteDebugOperations(); + } + + plugged = true; + done = true; + } else if (ret == PAK_ERR1_NOPAK) { + done = true; + } + + if (!done) { + if (device == SAVEDEVICE_GAMEPAK) { + plugged = false; + done = true; + } + + if (!done) { + // Try rumble pak + ret = osMotorProbe(&var80099e78, PFS(device), device); + +#if VERSION >= VERSION_PAL_FINAL + if (pakHandleResult(ret, device, false, 3872)) +#elif VERSION >= VERSION_NTSC_FINAL + if (pakHandleResult(ret, device, false, 3865)) +#else + if (pakHandleResult(ret, device, false, 3670)) +#endif + { + g_Paks[device].type = PAKTYPE_RUMBLE; + g_Paks[device].unk010 = PAK010_11; + g_Paks[device].rumblestate = RUMBLESTATE_1; + g_Paks[device].unk264++; + + plugged = true; + done = true; + } else if (ret == PAK_ERR1_NOPAK) { + plugged = false; + done = true; + } + + if (!done) { + // Try game boy pak + ret = osGbpakInit(&var80099e78, PFS(device), device); + +#if VERSION >= VERSION_PAL_FINAL + if (pakHandleResult(ret, device, false, 3896)) +#elif VERSION >= VERSION_NTSC_FINAL + if (pakHandleResult(ret, device, false, 3889)) +#else + if (pakHandleResult(ret, device, false, 3694)) +#endif + { + if (IS4MB()) { + g_Paks[device].type = PAKTYPE_NONE; + g_Paks[device].unk010 = PAK010_22; + } else { + g_Paks[device].type = PAKTYPE_GAMEBOY; + g_Paks[device].unk010 = PAK010_08; + g_Paks[device].unk2b8_01 = false; + g_Paks[device].unk264++; + } + + plugged = true; + } else if (ret == PAK_ERR1_NOPAK) { + plugged = false; + } + } + } + } + + joyEnableCyclicPolling(); + + return plugged; +#else + if (device == SAVEDEVICE_GAMEPAK) { + return true; + } + + joyDisableCyclicPolling(3434, "pak.c"); + + // Try memory pak + ret = pakInitPak(&var80099e78, PFS(device), device); + + if (pakHandleResult(ret, device, 1, 3437)) { + joyEnableCyclicPolling(3439, "pak.c"); + return true; + } + + // Try rumble pak + ret = osMotorProbe(&var80099e78, PFS(device), device); + + if (pakHandleResult(ret, device, 0, 3446)) { + joyEnableCyclicPolling(3448, "pak.c"); + return true; + } + + // Try game boy pak + ret = osGbpakInit(&var80099e78, PFS(device), device); + + if (pakHandleResult(ret, device, 0, 3455)) { + joyEnableCyclicPolling(3457, "pak.c"); + return true; + } + + joyEnableCyclicPolling(3462, "pak.c"); + + return false; +#endif +} #if VERSION < VERSION_NTSC_1_0 GLOBAL_ASM( @@ -5602,7 +5377,7 @@ glabel pak0f114dd4nb /* f114e44: ae020008 */ sw $v0,0x8($s0) /* f114e48: ae020004 */ sw $v0,0x4($s0) /* f114e4c: ae0a000c */ sw $t2,0xc($s0) -/* f114e50: 0fc45302 */ jal pak0f114c08nb +/* f114e50: 0fc45302 */ jal pakProbe /* f114e54: 01602025 */ or $a0,$t3,$zero /* f114e58: 50400049 */ beqzl $v0,.NB0f114f80 /* f114e5c: 8fbf001c */ lw $ra,0x1c($sp) @@ -9108,7 +8883,7 @@ void pak0f11df94(s8 device) func0f0f0ca0(-1, true); } - pak0f11ac7c(device); + pakProbe(device); func0f14aed0(device); break; case PAK010_03: @@ -9367,7 +9142,7 @@ glabel var7f1b4fd8 /* f11de30: 0fc3c320 */ jal func0f0f0ca0 /* f11de34: 24050001 */ addiu $a1,$zero,0x1 .L0f11de38: -/* f11de38: 0fc46a7f */ jal pak0f11ac7c +/* f11de38: 0fc46a7f */ jal pakProbe /* f11de3c: 83a40023 */ lb $a0,0x23($sp) /* f11de40: 0fc52b28 */ jal func0f14aed0 /* f11de44: 83a40023 */ lb $a0,0x23($sp) @@ -9783,7 +9558,7 @@ glabel var7f1af164nb /* f117d90: 018d2821 */ addu $a1,$t4,$t5 .NB0f117d94: /* f117d94: 2484e5d8 */ addiu $a0,$a0,-6696 -/* f117d98: 0c001890 */ jal func00006100 +/* f117d98: 0c001890 */ jal osGbpakInit /* f117d9c: afa3001c */ sw $v1,0x1c($sp) /* f117da0: 3c057f1b */ lui $a1,0x7f1b /* f117da4: 24a5ecec */ addiu $a1,$a1,-4884 diff --git a/src/include/PR/os_pfs.h b/src/include/PR/os_pfs.h index 309052e6f..cb8607d71 100644 --- a/src/include/PR/os_pfs.h +++ b/src/include/PR/os_pfs.h @@ -198,6 +198,7 @@ s32 osMotorProbe(OSMesgQueue *mq, OSPfs *pfs, s32 channel); s32 osGbpakCheckConnector(OSPfs *pfs, u8 *status); s32 osGbpakGetStatus(OSPfs *pfs, u8 *status); +s32 osGbpakInit(OSMesgQueue *siMessegeQ, OSPfs *pfs, s32 channel); s32 osGbpakPower(OSPfs *pfs, s32 flag); s32 osGbpakReadId(OSPfs *pfs, OSGbpakId *id, u8 *status); s32 osGbpakReadWrite(OSPfs *pfs, u16 flag, u16 address, u8 *buffer, u16 size); diff --git a/src/include/game/pak/pak.h b/src/include/game/pak/pak.h index d81732303..5bb7ec93b 100644 --- a/src/include/game/pak/pak.h +++ b/src/include/game/pak/pak.h @@ -90,7 +90,7 @@ PakErr1 pakReadWriteBlock(s8 device, OSPfs *pfs, s32 file_no, u8 flag, u32 addre s32 pak0f11a574(s8 device); void pakUpdateSize(s8 device); bool mempakPrepare(s8 device); -void pak0f11ac7c(s8 device); +bool pakProbe(s8 device); void pakWipe(s8 device, u32 blocknumstart, u32 blocknumend); void pakSaveHeaderToCache(s8 device, s32 blocknum, struct pakfileheader *header); bool pakRetrieveHeaderFromCache(s8 device, s32 blocknum, struct pakfileheader *header); diff --git a/src/include/lib/lib_06100.h b/src/include/lib/lib_06100.h deleted file mode 100644 index b675ed748..000000000 --- a/src/include/lib/lib_06100.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef _IN_LIB_LIB_06100_H -#define _IN_LIB_LIB_06100_H -#include -#include "data.h" -#include "types.h" - -u32 func00006100(void); - -#endif diff --git a/src/lib/lib_52360.c b/src/lib/lib_52360.c index ef7a120f7..7a63da27e 100644 --- a/src/lib/lib_52360.c +++ b/src/lib/lib_52360.c @@ -1,7 +1,6 @@ #include #include "constants.h" #include "bss.h" -#include "lib/lib_06100.h" #include "data.h" #include "types.h" @@ -39,7 +38,7 @@ glabel func00052360 /* 523cc: 00401825 */ or $v1,$v0,$zero /* 523d0: 8e240004 */ lw $a0,0x4($s1) /* 523d4: 02202825 */ or $a1,$s1,$zero -/* 523d8: 0c001840 */ jal func00006100 +/* 523d8: 0c001840 */ jal osGbpakInit /* 523dc: 8e260008 */ lw $a2,0x8($s1) /* 523e0: 1440000b */ bnez $v0,.L00052410 /* 523e4: 00401825 */ or $v1,$v0,$zero diff --git a/src/lib/ultra/io/gbpakgetstatus.c b/src/lib/ultra/io/gbpakgetstatus.c index ee876646c..3f906e47a 100644 --- a/src/lib/ultra/io/gbpakgetstatus.c +++ b/src/lib/ultra/io/gbpakgetstatus.c @@ -2,7 +2,6 @@ #include "libultra_internal.h" #include "constants.h" #include "bss.h" -#include "lib/lib_06100.h" #include "lib/lib_4b170.h" #include "lib/lib_4e090.h" #include "data.h" @@ -31,7 +30,7 @@ glabel osGbpakGetStatus .L00050c28: /* 50c28: 8e240004 */ lw $a0,0x4($s1) /* 50c2c: 02202825 */ or $a1,$s1,$zero -/* 50c30: 0c001840 */ jal func00006100 +/* 50c30: 0c001840 */ jal osGbpakInit /* 50c34: 8e260008 */ lw $a2,0x8($s1) /* 50c38: 10400003 */ beqz $v0,.L00050c48 /* 50c3c: 27a70028 */ addiu $a3,$sp,0x28 diff --git a/src/lib/lib_06100.c b/src/lib/ultra/io/gbpakinit.c similarity index 99% rename from src/lib/lib_06100.c rename to src/lib/ultra/io/gbpakinit.c index 71f444a2e..03ece3608 100644 --- a/src/lib/lib_06100.c +++ b/src/lib/ultra/io/gbpakinit.c @@ -22,7 +22,7 @@ u32 var80090ae8; u32 var80090aec; GLOBAL_ASM( -glabel func00006100 +glabel osGbpakInit /* 6100: 27bdffa8 */ addiu $sp,$sp,-88 /* 6104: afa40058 */ sw $a0,0x58($sp) /* 6108: afbf0024 */ sw $ra,0x24($sp) diff --git a/src/lib/ultra/io/gbpakpower.c b/src/lib/ultra/io/gbpakpower.c index 554c32397..db310da55 100644 --- a/src/lib/ultra/io/gbpakpower.c +++ b/src/lib/ultra/io/gbpakpower.c @@ -1,7 +1,6 @@ #include #include "constants.h" #include "bss.h" -#include "lib/lib_06100.h" #include "data.h" #include "types.h" @@ -30,7 +29,7 @@ glabel osGbpakPower /* 637c: 00401825 */ or $v1,$v0,$zero /* 6380: 8e240004 */ lw $a0,0x4($s1) /* 6384: 02202825 */ or $a1,$s1,$zero -/* 6388: 0c001840 */ jal func00006100 +/* 6388: 0c001840 */ jal osGbpakInit /* 638c: 8e260008 */ lw $a2,0x8($s1) /* 6390: 1440000b */ bnez $v0,.L000063c0 /* 6394: 00401825 */ or $v1,$v0,$zero diff --git a/src/lib/ultra/io/gbpakreadid.c b/src/lib/ultra/io/gbpakreadid.c index 4493f374d..cc2a73710 100644 --- a/src/lib/ultra/io/gbpakreadid.c +++ b/src/lib/ultra/io/gbpakreadid.c @@ -2,7 +2,6 @@ #include "libultra_internal.h" #include "constants.h" #include "bss.h" -#include "lib/lib_06100.h" #include "lib/lib_4b170.h" #include "lib/lib_4e090.h" #include "data.h" diff --git a/src/lib/ultra/io/pfsfilestate.c b/src/lib/ultra/io/pfsfilestate.c index 8c9059d42..8ebe8df34 100644 --- a/src/lib/ultra/io/pfsfilestate.c +++ b/src/lib/ultra/io/pfsfilestate.c @@ -2,7 +2,6 @@ #include "libultra_internal.h" #include "constants.h" #include "bss.h" -#include "lib/lib_06100.h" #include "lib/lib_4b170.h" #include "lib/lib_4e090.h" #include "data.h"