Decompile mempakPrepare
This commit is contained in:
parent
e12ac3d0e0
commit
ad28d219d1
18
ld/pd.ld
18
ld/pd.ld
|
|
@ -102,37 +102,19 @@ OUTPUT_ARCH (mips)
|
|||
SECTIONS
|
||||
{
|
||||
#if VERSION >= VERSION_JPN_FINAL
|
||||
_gamecode = 0x444a;
|
||||
_jpndata1 = 0x17fc40;
|
||||
_jpndata2 = 0x18b340;
|
||||
#elif VERSION >= VERSION_PAL_BETA
|
||||
_gamecode = 0x4450;
|
||||
_jpndata1 = 0x17fc40;
|
||||
_jpndata2 = 0x18b340;
|
||||
#elif VERSION >= VERSION_NTSC_1_0
|
||||
_gamecode = 0x4445;
|
||||
_jpndata1 = 0x194440;
|
||||
_jpndata2 = 0x19fb40;
|
||||
#else
|
||||
_gamecode = 0x4445;
|
||||
_jpndata1 = 0x148c40;
|
||||
_jpndata2 = 0x154340;
|
||||
#endif
|
||||
|
||||
#if VERSION >= VERSION_JPN_FINAL
|
||||
_val7f11aa14 = 0x0e52;
|
||||
_val7f11aae4 = 0x0e60;
|
||||
#elif VERSION >= VERSION_PAL_BETA
|
||||
_val7f11aa14 = 0x0e4d;
|
||||
_val7f11aae4 = 0x0e5b;
|
||||
#elif VERSION >= VERSION_NTSC_FINAL
|
||||
_val7f11aa14 = 0x0e46;
|
||||
_val7f11aae4 = 0x0e54;
|
||||
#else
|
||||
_val7f11aa14 = 0x0d83;
|
||||
_val7f11aae4 = 0x0d91;
|
||||
#endif
|
||||
|
||||
osTvType = 0x80000300;
|
||||
osRomType = 0x80000304;
|
||||
osRomBase = 0x80000308;
|
||||
|
|
|
|||
792
src/game/pak.c
792
src/game/pak.c
|
|
@ -111,6 +111,8 @@
|
|||
#define LINE_3486 3498
|
||||
#define LINE_3495 3507
|
||||
#define LINE_3599 3611
|
||||
#define LINE_3654 3666
|
||||
#define LINE_3668 3680
|
||||
#define LINE_3829 3841
|
||||
#define LINE_3865 3877
|
||||
#define LINE_3889 3901
|
||||
|
|
@ -127,6 +129,8 @@
|
|||
#define LINE_3486 3493
|
||||
#define LINE_3495 3502
|
||||
#define LINE_3599 3606
|
||||
#define LINE_3654 3661
|
||||
#define LINE_3668 3675
|
||||
#define LINE_3829 3836
|
||||
#define LINE_3865 3872
|
||||
#define LINE_3889 3896
|
||||
|
|
@ -143,6 +147,8 @@
|
|||
#define LINE_3486 3486
|
||||
#define LINE_3495 3495
|
||||
#define LINE_3599 3599
|
||||
#define LINE_3654 3654
|
||||
#define LINE_3668 3668
|
||||
#define LINE_3829 3829
|
||||
#define LINE_3865 3865
|
||||
#define LINE_3889 3889
|
||||
|
|
@ -159,6 +165,8 @@
|
|||
#define LINE_3486 3290
|
||||
#define LINE_3495 3299
|
||||
#define LINE_3599 3403
|
||||
#define LINE_3654 3459
|
||||
#define LINE_3668 3473
|
||||
#define LINE_3829 3634
|
||||
#define LINE_3865 3670
|
||||
#define LINE_3889 3694
|
||||
|
|
@ -175,6 +183,8 @@
|
|||
#define LINE_3486 3133
|
||||
#define LINE_3495 3142
|
||||
#define LINE_3599 3246
|
||||
#define LINE_3654 3328
|
||||
#define LINE_3668 3342
|
||||
#define LINE_3829 3829
|
||||
#define LINE_3865 3865
|
||||
#define LINE_3889 3889
|
||||
|
|
@ -2947,507 +2957,163 @@ bool pak0f1147b8nb(s8 device)
|
|||
}
|
||||
#endif
|
||||
|
||||
#if VERSION >= VERSION_NTSC_FINAL
|
||||
GLOBAL_ASM(
|
||||
glabel mempakPrepare
|
||||
/* f11a8f4: 27bdefa0 */ addiu $sp,$sp,-4192
|
||||
/* f11a8f8: afb10028 */ sw $s1,0x28($sp)
|
||||
/* f11a8fc: 00048e00 */ sll $s1,$a0,0x18
|
||||
/* f11a900: 00117603 */ sra $t6,$s1,0x18
|
||||
/* f11a904: 000e7880 */ sll $t7,$t6,0x2
|
||||
/* f11a908: 01ee7823 */ subu $t7,$t7,$t6
|
||||
/* f11a90c: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a910: 01ee7823 */ subu $t7,$t7,$t6
|
||||
/* f11a914: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a918: 01ee7821 */ addu $t7,$t7,$t6
|
||||
/* f11a91c: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a920: 01ee7823 */ subu $t7,$t7,$t6
|
||||
/* f11a924: 3c18800a */ lui $t8,%hi(g_Paks)
|
||||
/* f11a928: afb00024 */ sw $s0,0x24($sp)
|
||||
/* f11a92c: 27182380 */ addiu $t8,$t8,%lo(g_Paks)
|
||||
/* f11a930: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a934: 01f88021 */ addu $s0,$t7,$t8
|
||||
/* f11a938: 920902b8 */ lbu $t1,0x2b8($s0)
|
||||
/* f11a93c: afa41060 */ sw $a0,0x1060($sp)
|
||||
/* f11a940: 000e2600 */ sll $a0,$t6,0x18
|
||||
/* f11a944: afbf002c */ sw $ra,0x2c($sp)
|
||||
/* f11a948: 24190002 */ addiu $t9,$zero,0x2
|
||||
/* f11a94c: 00045e03 */ sra $t3,$a0,0x18
|
||||
/* f11a950: 352a0040 */ ori $t2,$t1,0x40
|
||||
/* f11a954: 01c08825 */ or $s1,$t6,$zero
|
||||
/* f11a958: afa01054 */ sw $zero,0x1054($sp)
|
||||
/* f11a95c: afa01050 */ sw $zero,0x1050($sp)
|
||||
/* f11a960: ae190000 */ sw $t9,0x0($s0)
|
||||
/* f11a964: a20a02b8 */ sb $t2,0x2b8($s0)
|
||||
/* f11a968: 0fc4695d */ jal pakQueryTotalUsage
|
||||
/* f11a96c: 01602025 */ or $a0,$t3,$zero
|
||||
/* f11a970: 8e0c0010 */ lw $t4,0x10($s0)
|
||||
/* f11a974: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f11a978: 15810003 */ bne $t4,$at,.L0f11a988
|
||||
/* f11a97c: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f11a980: 100000b9 */ beqz $zero,.L0f11ac68
|
||||
/* f11a984: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f11a988:
|
||||
/* f11a988: 0c00543a */ jal joyDisableCyclicPolling
|
||||
/* f11a98c: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f11a990: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11a994: 16210003 */ bne $s1,$at,.L0f11a9a4
|
||||
/* f11a998: 24053459 */ addiu $a1,$zero,0x3459
|
||||
/* f11a99c: 10000009 */ beqz $zero,.L0f11a9c4
|
||||
/* f11a9a0: 00002025 */ or $a0,$zero,$zero
|
||||
.L0f11a9a4:
|
||||
/* f11a9a4: 00116880 */ sll $t5,$s1,0x2
|
||||
/* f11a9a8: 01b16823 */ subu $t5,$t5,$s1
|
||||
/* f11a9ac: 000d6880 */ sll $t5,$t5,0x2
|
||||
/* f11a9b0: 01b16821 */ addu $t5,$t5,$s1
|
||||
/* f11a9b4: 3c0e800a */ lui $t6,%hi(g_Pfses)
|
||||
/* f11a9b8: 25ce3180 */ addiu $t6,$t6,%lo(g_Pfses)
|
||||
/* f11a9bc: 000d68c0 */ sll $t5,$t5,0x3
|
||||
/* f11a9c0: 01ae2021 */ addu $a0,$t5,$t6
|
||||
.L0f11a9c4:
|
||||
/* f11a9c4: 3c0f8007 */ lui $t7,%hi(g_PakNoteExtName)
|
||||
/* f11a9c8: 25ef5d08 */ addiu $t7,$t7,%lo(g_PakNoteExtName)
|
||||
/* f11a9cc: 3c064e50 */ lui $a2,0x4e50
|
||||
/* f11a9d0: 3c078007 */ lui $a3,%hi(g_PakNoteGameName)
|
||||
/* f11a9d4: 2602029c */ addiu $v0,$s0,0x29c
|
||||
/* f11a9d8: afa20014 */ sw $v0,0x14($sp)
|
||||
/* f11a9dc: afa20030 */ sw $v0,0x30($sp)
|
||||
/* f11a9e0: 24e75cf8 */ addiu $a3,$a3,%lo(g_PakNoteGameName)
|
||||
/* f11a9e4: 34c64445 */ ori $a2,$a2,_gamecode
|
||||
/* f11a9e8: 0fc45f96 */ jal pakFindNote
|
||||
/* f11a9ec: afaf0010 */ sw $t7,0x10($sp)
|
||||
/* f11a9f0: 0c005451 */ jal joyEnableCyclicPolling
|
||||
/* f11a9f4: afa20048 */ sw $v0,0x48($sp)
|
||||
/* f11a9f8: 8fa40048 */ lw $a0,0x48($sp)
|
||||
/* f11a9fc: 00112e00 */ sll $a1,$s1,0x18
|
||||
/* f11aa00: 0005c603 */ sra $t8,$a1,0x18
|
||||
/* f11aa04: 1080003e */ beqz $a0,.L0f11ab00
|
||||
/* f11aa08: 03002825 */ or $a1,$t8,$zero
|
||||
/* f11aa0c: 00003025 */ or $a2,$zero,$zero
|
||||
/* f11aa10: 0fc470e7 */ jal pakHandleResult
|
||||
/* f11aa14: 24070e46 */ addiu $a3,$zero,_val7f11aa14
|
||||
/* f11aa18: 9619025a */ lhu $t9,0x25a($s0)
|
||||
/* f11aa1c: 24090001 */ addiu $t1,$zero,0x1
|
||||
/* f11aa20: 24080002 */ addiu $t0,$zero,0x2
|
||||
/* f11aa24: 2b210081 */ slti $at,$t9,0x81
|
||||
/* f11aa28: 54200004 */ bnezl $at,.L0f11aa3c
|
||||
/* f11aa2c: a20902bc */ sb $t1,0x2bc($s0)
|
||||
/* f11aa30: 10000002 */ beqz $zero,.L0f11aa3c
|
||||
/* f11aa34: a20802bc */ sb $t0,0x2bc($s0)
|
||||
/* f11aa38: a20902bc */ sb $t1,0x2bc($s0)
|
||||
.L0f11aa3c:
|
||||
/* f11aa3c: 920a02bc */ lbu $t2,0x2bc($s0)
|
||||
/* f11aa40: 000a58c0 */ sll $t3,$t2,0x3
|
||||
/* f11aa44: 016a5823 */ subu $t3,$t3,$t2
|
||||
/* f11aa48: 000b5a80 */ sll $t3,$t3,0xa
|
||||
/* f11aa4c: 0c00543a */ jal joyDisableCyclicPolling
|
||||
/* f11aa50: afab0044 */ sw $t3,0x44($sp)
|
||||
/* f11aa54: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11aa58: 16210003 */ bne $s1,$at,.L0f11aa68
|
||||
/* f11aa5c: 24053459 */ addiu $a1,$zero,0x3459
|
||||
/* f11aa60: 10000009 */ beqz $zero,.L0f11aa88
|
||||
/* f11aa64: 00002025 */ or $a0,$zero,$zero
|
||||
.L0f11aa68:
|
||||
/* f11aa68: 00116080 */ sll $t4,$s1,0x2
|
||||
/* f11aa6c: 01916023 */ subu $t4,$t4,$s1
|
||||
/* f11aa70: 000c6080 */ sll $t4,$t4,0x2
|
||||
/* f11aa74: 01916021 */ addu $t4,$t4,$s1
|
||||
/* f11aa78: 3c0d800a */ lui $t5,%hi(g_Pfses)
|
||||
/* f11aa7c: 25ad3180 */ addiu $t5,$t5,%lo(g_Pfses)
|
||||
/* f11aa80: 000c60c0 */ sll $t4,$t4,0x3
|
||||
/* f11aa84: 018d2021 */ addu $a0,$t4,$t5
|
||||
.L0f11aa88:
|
||||
/* f11aa88: 8faf0044 */ lw $t7,0x44($sp)
|
||||
/* f11aa8c: 8fb80030 */ lw $t8,0x30($sp)
|
||||
/* f11aa90: 3c0e8007 */ lui $t6,%hi(g_PakNoteExtName)
|
||||
/* f11aa94: 25ce5d08 */ addiu $t6,$t6,%lo(g_PakNoteExtName)
|
||||
/* f11aa98: 3c064e50 */ lui $a2,0x4e50
|
||||
/* f11aa9c: 3c078007 */ lui $a3,%hi(g_PakNoteGameName)
|
||||
/* f11aaa0: 24e75cf8 */ addiu $a3,$a3,%lo(g_PakNoteGameName)
|
||||
/* f11aaa4: 34c64445 */ ori $a2,$a2,_gamecode
|
||||
/* f11aaa8: afae0010 */ sw $t6,0x10($sp)
|
||||
/* f11aaac: afaf0014 */ sw $t7,0x14($sp)
|
||||
/* f11aab0: 0fc45f64 */ jal pakAllocateNote
|
||||
/* f11aab4: afb80018 */ sw $t8,0x18($sp)
|
||||
/* f11aab8: 0c005451 */ jal joyEnableCyclicPolling
|
||||
/* f11aabc: afa20048 */ sw $v0,0x48($sp)
|
||||
/* f11aac0: 920802b8 */ lbu $t0,0x2b8($s0)
|
||||
/* f11aac4: 00112e00 */ sll $a1,$s1,0x18
|
||||
/* f11aac8: 8fa40048 */ lw $a0,0x48($sp)
|
||||
/* f11aacc: 00055603 */ sra $t2,$a1,0x18
|
||||
/* f11aad0: 35090040 */ ori $t1,$t0,0x40
|
||||
/* f11aad4: a20902b8 */ sb $t1,0x2b8($s0)
|
||||
/* f11aad8: 01402825 */ or $a1,$t2,$zero
|
||||
/* f11aadc: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* f11aae0: 0fc470e7 */ jal pakHandleResult
|
||||
/* f11aae4: 24070e54 */ addiu $a3,$zero,_val7f11aae4
|
||||
/* f11aae8: 10400003 */ beqz $v0,.L0f11aaf8
|
||||
/* f11aaec: 240b0001 */ addiu $t3,$zero,0x1
|
||||
/* f11aaf0: 10000003 */ beqz $zero,.L0f11ab00
|
||||
/* f11aaf4: afab1054 */ sw $t3,0x1054($sp)
|
||||
.L0f11aaf8:
|
||||
/* f11aaf8: 1000005b */ beqz $zero,.L0f11ac68
|
||||
/* f11aafc: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f11ab00:
|
||||
/* f11ab00: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11ab04: 00046603 */ sra $t4,$a0,0x18
|
||||
/* f11ab08: 0fc4695d */ jal pakQueryTotalUsage
|
||||
/* f11ab0c: 01802025 */ or $a0,$t4,$zero
|
||||
/* f11ab10: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11ab14: 00046e03 */ sra $t5,$a0,0x18
|
||||
/* f11ab18: 0fc469f7 */ jal pakQueryPdSize
|
||||
/* f11ab1c: 01a02025 */ or $a0,$t5,$zero
|
||||
/* f11ab20: 920e02b8 */ lbu $t6,0x2b8($s0)
|
||||
/* f11ab24: 2418000b */ addiu $t8,$zero,0xb
|
||||
/* f11ab28: a20002be */ sb $zero,0x2be($s0)
|
||||
/* f11ab2c: 31cffffd */ andi $t7,$t6,0xfffd
|
||||
/* f11ab30: a20f02b8 */ sb $t7,0x2b8($s0)
|
||||
/* f11ab34: ae180010 */ sw $t8,0x10($s0)
|
||||
/* f11ab38: 8fb91054 */ lw $t9,0x1054($sp)
|
||||
/* f11ab3c: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11ab40: 00044603 */ sra $t0,$a0,0x18
|
||||
/* f11ab44: 5320000a */ beqzl $t9,.L0f11ab70
|
||||
/* f11ab48: 8faa1050 */ lw $t2,0x1050($sp)
|
||||
/* f11ab4c: 0fc46d52 */ jal pakCreateFilesystem
|
||||
/* f11ab50: 01002025 */ or $a0,$t0,$zero
|
||||
/* f11ab54: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11ab58: 10410003 */ beq $v0,$at,.L0f11ab68
|
||||
/* f11ab5c: 24090001 */ addiu $t1,$zero,0x1
|
||||
/* f11ab60: 10000002 */ beqz $zero,.L0f11ab6c
|
||||
/* f11ab64: ae020260 */ sw $v0,0x260($s0)
|
||||
.L0f11ab68:
|
||||
/* f11ab68: afa91050 */ sw $t1,0x1050($sp)
|
||||
.L0f11ab6c:
|
||||
/* f11ab6c: 8faa1050 */ lw $t2,0x1050($sp)
|
||||
.L0f11ab70:
|
||||
/* f11ab70: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11ab74: 00045e03 */ sra $t3,$a0,0x18
|
||||
/* f11ab78: 55400016 */ bnezl $t2,.L0f11abd4
|
||||
/* f11ab7c: 8fb91050 */ lw $t9,0x1050($sp)
|
||||
/* f11ab80: 0fc465c3 */ jal pakRepairFilesystem
|
||||
/* f11ab84: 01602025 */ or $a0,$t3,$zero
|
||||
/* f11ab88: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11ab8c: 14410010 */ bne $v0,$at,.L0f11abd0
|
||||
/* f11ab90: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11ab94: 00046603 */ sra $t4,$a0,0x18
|
||||
/* f11ab98: 0fc46d52 */ jal pakCreateFilesystem
|
||||
/* f11ab9c: 01802025 */ or $a0,$t4,$zero
|
||||
/* f11aba0: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11aba4: 10410003 */ beq $v0,$at,.L0f11abb4
|
||||
/* f11aba8: 240d0001 */ addiu $t5,$zero,0x1
|
||||
/* f11abac: 10000002 */ beqz $zero,.L0f11abb8
|
||||
/* f11abb0: ae020260 */ sw $v0,0x260($s0)
|
||||
.L0f11abb4:
|
||||
/* f11abb4: afad1050 */ sw $t5,0x1050($sp)
|
||||
.L0f11abb8:
|
||||
/* f11abb8: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11abbc: 52210005 */ beql $s1,$at,.L0f11abd4
|
||||
/* f11abc0: 8fb91050 */ lw $t9,0x1050($sp)
|
||||
/* f11abc4: 920f02b8 */ lbu $t7,0x2b8($s0)
|
||||
/* f11abc8: 35f80002 */ ori $t8,$t7,0x2
|
||||
/* f11abcc: a21802b8 */ sb $t8,0x2b8($s0)
|
||||
.L0f11abd0:
|
||||
/* f11abd0: 8fb91050 */ lw $t9,0x1050($sp)
|
||||
.L0f11abd4:
|
||||
/* f11abd4: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11abd8: 00044603 */ sra $t0,$a0,0x18
|
||||
/* f11abdc: 5720001e */ bnezl $t9,.L0f11ac58
|
||||
/* f11abe0: 240d0016 */ addiu $t5,$zero,0x16
|
||||
/* f11abe4: 0fc4683a */ jal pakFindMaxFileId
|
||||
/* f11abe8: 01002025 */ or $a0,$t0,$zero
|
||||
/* f11abec: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11abf0: 10410018 */ beq $v0,$at,.L0f11ac54
|
||||
/* f11abf4: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11abf8: 00044e03 */ sra $t1,$a0,0x18
|
||||
/* f11abfc: ae02025c */ sw $v0,0x25c($s0)
|
||||
/* f11ac00: 01202025 */ or $a0,$t1,$zero
|
||||
/* f11ac04: 24050004 */ addiu $a1,$zero,0x4
|
||||
/* f11ac08: 0fc459ec */ jal pakGetFileIdsByType
|
||||
/* f11ac0c: 27a60050 */ addiu $a2,$sp,0x50
|
||||
/* f11ac10: 14400010 */ bnez $v0,.L0f11ac54
|
||||
/* f11ac14: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11ac18: 00045603 */ sra $t2,$a0,0x18
|
||||
/* f11ac1c: 0fc467a3 */ jal pakCreateInitialFiles
|
||||
/* f11ac20: 01402025 */ or $a0,$t2,$zero
|
||||
/* f11ac24: 1040000b */ beqz $v0,.L0f11ac54
|
||||
/* f11ac28: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11ac2c: 16210004 */ bne $s1,$at,.L0f11ac40
|
||||
/* f11ac30: 240c0006 */ addiu $t4,$zero,0x6
|
||||
/* f11ac34: 240b000b */ addiu $t3,$zero,0xb
|
||||
/* f11ac38: 10000002 */ beqz $zero,.L0f11ac44
|
||||
/* f11ac3c: ae0b0010 */ sw $t3,0x10($s0)
|
||||
.L0f11ac40:
|
||||
/* f11ac40: ae0c0010 */ sw $t4,0x10($s0)
|
||||
.L0f11ac44:
|
||||
/* f11ac44: 0fc44364 */ jal func0f110d90
|
||||
/* f11ac48: 02202025 */ or $a0,$s1,$zero
|
||||
/* f11ac4c: 10000006 */ beqz $zero,.L0f11ac68
|
||||
/* f11ac50: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f11ac54:
|
||||
/* f11ac54: 240d0016 */ addiu $t5,$zero,0x16
|
||||
.L0f11ac58:
|
||||
/* f11ac58: ae0d0010 */ sw $t5,0x10($s0)
|
||||
/* f11ac5c: 0fc44364 */ jal func0f110d90
|
||||
/* f11ac60: 02202025 */ or $a0,$s1,$zero
|
||||
/* f11ac64: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f11ac68:
|
||||
/* f11ac68: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
/* f11ac6c: 8fb00024 */ lw $s0,0x24($sp)
|
||||
/* f11ac70: 8fb10028 */ lw $s1,0x28($sp)
|
||||
/* f11ac74: 03e00008 */ jr $ra
|
||||
/* f11ac78: 27bd1060 */ addiu $sp,$sp,0x1060
|
||||
);
|
||||
#elif VERSION >= VERSION_NTSC_1_0
|
||||
GLOBAL_ASM(
|
||||
glabel mempakPrepare
|
||||
/* f11a674: 27bdef98 */ addiu $sp,$sp,-4200
|
||||
/* f11a678: afb10028 */ sw $s1,0x28($sp)
|
||||
/* f11a67c: 00048e00 */ sll $s1,$a0,0x18
|
||||
/* f11a680: 00117603 */ sra $t6,$s1,0x18
|
||||
/* f11a684: 000e7880 */ sll $t7,$t6,0x2
|
||||
/* f11a688: 01ee7823 */ subu $t7,$t7,$t6
|
||||
/* f11a68c: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a690: 01ee7823 */ subu $t7,$t7,$t6
|
||||
/* f11a694: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a698: 01ee7821 */ addu $t7,$t7,$t6
|
||||
/* f11a69c: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a6a0: 01ee7823 */ subu $t7,$t7,$t6
|
||||
/* f11a6a4: 3c18800a */ lui $t8,%hi(g_Paks)
|
||||
/* f11a6a8: afb00024 */ sw $s0,0x24($sp)
|
||||
/* f11a6ac: 27182380 */ addiu $t8,$t8,%lo(g_Paks)
|
||||
/* f11a6b0: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f11a6b4: 01f88021 */ addu $s0,$t7,$t8
|
||||
/* f11a6b8: 920902b8 */ lbu $t1,0x2b8($s0)
|
||||
/* f11a6bc: afa41068 */ sw $a0,0x1068($sp)
|
||||
/* f11a6c0: 000e2600 */ sll $a0,$t6,0x18
|
||||
/* f11a6c4: afbf002c */ sw $ra,0x2c($sp)
|
||||
/* f11a6c8: 24190002 */ addiu $t9,$zero,0x2
|
||||
/* f11a6cc: 00045e03 */ sra $t3,$a0,0x18
|
||||
/* f11a6d0: 352a0040 */ ori $t2,$t1,0x40
|
||||
/* f11a6d4: 01c08825 */ or $s1,$t6,$zero
|
||||
/* f11a6d8: afa0105c */ sw $zero,0x105c($sp)
|
||||
/* f11a6dc: afa01058 */ sw $zero,0x1058($sp)
|
||||
/* f11a6e0: ae190000 */ sw $t9,0x0($s0)
|
||||
/* f11a6e4: a20a02b8 */ sb $t2,0x2b8($s0)
|
||||
/* f11a6e8: 0fc468bd */ jal pakQueryTotalUsage
|
||||
/* f11a6ec: 01602025 */ or $a0,$t3,$zero
|
||||
/* f11a6f0: 8e0c0010 */ lw $t4,0x10($s0)
|
||||
/* f11a6f4: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f11a6f8: 15810003 */ bne $t4,$at,.L0f11a708_2
|
||||
/* f11a6fc: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f11a700: 100000b9 */ beqz $zero,.L0f11a9e8_2
|
||||
/* f11a704: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f11a708_2:
|
||||
/* f11a708: 0c00543a */ jal joyDisableCyclicPolling
|
||||
/* f11a70c: 00000000 */ sll $zero,$zero,0x0
|
||||
/* f11a710: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11a714: 16210003 */ bne $s1,$at,.L0f11a724_2
|
||||
/* f11a718: 24053459 */ addiu $a1,$zero,0x3459
|
||||
/* f11a71c: 10000009 */ beqz $zero,.L0f11a744_2
|
||||
/* f11a720: 00002025 */ or $a0,$zero,$zero
|
||||
.L0f11a724_2:
|
||||
/* f11a724: 00116880 */ sll $t5,$s1,0x2
|
||||
/* f11a728: 01b16823 */ subu $t5,$t5,$s1
|
||||
/* f11a72c: 000d6880 */ sll $t5,$t5,0x2
|
||||
/* f11a730: 01b16821 */ addu $t5,$t5,$s1
|
||||
/* f11a734: 3c0e800a */ lui $t6,%hi(g_Pfses)
|
||||
/* f11a738: 25ce3180 */ addiu $t6,$t6,%lo(g_Pfses)
|
||||
/* f11a73c: 000d68c0 */ sll $t5,$t5,0x3
|
||||
/* f11a740: 01ae2021 */ addu $a0,$t5,$t6
|
||||
.L0f11a744_2:
|
||||
/* f11a744: 3c0f8007 */ lui $t7,%hi(g_PakNoteExtName)
|
||||
/* f11a748: 25ef5d08 */ addiu $t7,$t7,%lo(g_PakNoteExtName)
|
||||
/* f11a74c: 3c064e50 */ lui $a2,0x4e50
|
||||
/* f11a750: 3c078007 */ lui $a3,%hi(g_PakNoteGameName)
|
||||
/* f11a754: 2602029c */ addiu $v0,$s0,0x29c
|
||||
/* f11a758: afa20014 */ sw $v0,0x14($sp)
|
||||
/* f11a75c: afa20034 */ sw $v0,0x34($sp)
|
||||
/* f11a760: 24e75cf8 */ addiu $a3,$a3,%lo(g_PakNoteGameName)
|
||||
/* f11a764: 34c64445 */ ori $a2,$a2,_gamecode
|
||||
/* f11a768: 0fc45f76 */ jal pakFindNote
|
||||
/* f11a76c: afaf0010 */ sw $t7,0x10($sp)
|
||||
/* f11a770: 0c005451 */ jal joyEnableCyclicPolling
|
||||
/* f11a774: afa2004c */ sw $v0,0x4c($sp)
|
||||
/* f11a778: 8fa4004c */ lw $a0,0x4c($sp)
|
||||
/* f11a77c: 00112e00 */ sll $a1,$s1,0x18
|
||||
/* f11a780: 0005c603 */ sra $t8,$a1,0x18
|
||||
/* f11a784: 1080003e */ beqz $a0,.L0f11a880_2
|
||||
/* f11a788: 03002825 */ or $a1,$t8,$zero
|
||||
/* f11a78c: 00003025 */ or $a2,$zero,$zero
|
||||
/* f11a790: 0fc47047 */ jal pakHandleResult
|
||||
/* f11a794: 24070d83 */ addiu $a3,$zero,0xd83
|
||||
/* f11a798: 9619025a */ lhu $t9,0x25a($s0)
|
||||
/* f11a79c: 24090001 */ addiu $t1,$zero,0x1
|
||||
/* f11a7a0: 24080002 */ addiu $t0,$zero,0x2
|
||||
/* f11a7a4: 2b210081 */ slti $at,$t9,0x81
|
||||
/* f11a7a8: 54200004 */ bnezl $at,.L0f11a7bc_2
|
||||
/* f11a7ac: a20902bc */ sb $t1,0x2bc($s0)
|
||||
/* f11a7b0: 10000002 */ beqz $zero,.L0f11a7bc_2
|
||||
/* f11a7b4: a20802bc */ sb $t0,0x2bc($s0)
|
||||
/* f11a7b8: a20902bc */ sb $t1,0x2bc($s0)
|
||||
.L0f11a7bc_2:
|
||||
/* f11a7bc: 920a02bc */ lbu $t2,0x2bc($s0)
|
||||
/* f11a7c0: 000a58c0 */ sll $t3,$t2,0x3
|
||||
/* f11a7c4: 016a5823 */ subu $t3,$t3,$t2
|
||||
/* f11a7c8: 000b5a80 */ sll $t3,$t3,0xa
|
||||
/* f11a7cc: 0c00543a */ jal joyDisableCyclicPolling
|
||||
/* f11a7d0: afab0048 */ sw $t3,0x48($sp)
|
||||
/* f11a7d4: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11a7d8: 16210003 */ bne $s1,$at,.L0f11a7e8_2
|
||||
/* f11a7dc: 24053459 */ addiu $a1,$zero,0x3459
|
||||
/* f11a7e0: 10000009 */ beqz $zero,.L0f11a808_2
|
||||
/* f11a7e4: 00002025 */ or $a0,$zero,$zero
|
||||
.L0f11a7e8_2:
|
||||
/* f11a7e8: 00116080 */ sll $t4,$s1,0x2
|
||||
/* f11a7ec: 01916023 */ subu $t4,$t4,$s1
|
||||
/* f11a7f0: 000c6080 */ sll $t4,$t4,0x2
|
||||
/* f11a7f4: 01916021 */ addu $t4,$t4,$s1
|
||||
/* f11a7f8: 3c0d800a */ lui $t5,%hi(g_Pfses)
|
||||
/* f11a7fc: 25ad3180 */ addiu $t5,$t5,%lo(g_Pfses)
|
||||
/* f11a800: 000c60c0 */ sll $t4,$t4,0x3
|
||||
/* f11a804: 018d2021 */ addu $a0,$t4,$t5
|
||||
.L0f11a808_2:
|
||||
/* f11a808: 8faf0048 */ lw $t7,0x48($sp)
|
||||
/* f11a80c: 8fb80034 */ lw $t8,0x34($sp)
|
||||
/* f11a810: 3c0e8007 */ lui $t6,%hi(g_PakNoteExtName)
|
||||
/* f11a814: 25ce5d08 */ addiu $t6,$t6,%lo(g_PakNoteExtName)
|
||||
/* f11a818: 3c064e50 */ lui $a2,0x4e50
|
||||
/* f11a81c: 3c078007 */ lui $a3,%hi(g_PakNoteGameName)
|
||||
/* f11a820: 24e75cf8 */ addiu $a3,$a3,%lo(g_PakNoteGameName)
|
||||
/* f11a824: 34c64445 */ ori $a2,$a2,_gamecode
|
||||
/* f11a828: afae0010 */ sw $t6,0x10($sp)
|
||||
/* f11a82c: afaf0014 */ sw $t7,0x14($sp)
|
||||
/* f11a830: 0fc45f44 */ jal pakAllocateNote
|
||||
/* f11a834: afb80018 */ sw $t8,0x18($sp)
|
||||
/* f11a838: 0c005451 */ jal joyEnableCyclicPolling
|
||||
/* f11a83c: afa2004c */ sw $v0,0x4c($sp)
|
||||
/* f11a840: 920802b8 */ lbu $t0,0x2b8($s0)
|
||||
/* f11a844: 00112e00 */ sll $a1,$s1,0x18
|
||||
/* f11a848: 8fa4004c */ lw $a0,0x4c($sp)
|
||||
/* f11a84c: 00055603 */ sra $t2,$a1,0x18
|
||||
/* f11a850: 35090040 */ ori $t1,$t0,0x40
|
||||
/* f11a854: a20902b8 */ sb $t1,0x2b8($s0)
|
||||
/* f11a858: 01402825 */ or $a1,$t2,$zero
|
||||
/* f11a85c: 24060001 */ addiu $a2,$zero,0x1
|
||||
/* f11a860: 0fc47047 */ jal pakHandleResult
|
||||
/* f11a864: 24070d91 */ addiu $a3,$zero,0xd91
|
||||
/* f11a868: 10400003 */ beqz $v0,.L0f11a878_2
|
||||
/* f11a86c: 240b0001 */ addiu $t3,$zero,0x1
|
||||
/* f11a870: 10000003 */ beqz $zero,.L0f11a880_2
|
||||
/* f11a874: afab105c */ sw $t3,0x105c($sp)
|
||||
.L0f11a878_2:
|
||||
/* f11a878: 1000005b */ beqz $zero,.L0f11a9e8_2
|
||||
/* f11a87c: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f11a880_2:
|
||||
/* f11a880: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a884: 00046603 */ sra $t4,$a0,0x18
|
||||
/* f11a888: 0fc468bd */ jal pakQueryTotalUsage
|
||||
/* f11a88c: 01802025 */ or $a0,$t4,$zero
|
||||
/* f11a890: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a894: 00046e03 */ sra $t5,$a0,0x18
|
||||
/* f11a898: 0fc46957 */ jal pakQueryPdSize
|
||||
/* f11a89c: 01a02025 */ or $a0,$t5,$zero
|
||||
/* f11a8a0: 920e02b8 */ lbu $t6,0x2b8($s0)
|
||||
/* f11a8a4: 2418000b */ addiu $t8,$zero,0xb
|
||||
/* f11a8a8: a20002be */ sb $zero,0x2be($s0)
|
||||
/* f11a8ac: 31cffffd */ andi $t7,$t6,0xfffd
|
||||
/* f11a8b0: a20f02b8 */ sb $t7,0x2b8($s0)
|
||||
/* f11a8b4: ae180010 */ sw $t8,0x10($s0)
|
||||
/* f11a8b8: 8fb9105c */ lw $t9,0x105c($sp)
|
||||
/* f11a8bc: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a8c0: 00044603 */ sra $t0,$a0,0x18
|
||||
/* f11a8c4: 5320000a */ beqzl $t9,.L0f11a8f0_2
|
||||
/* f11a8c8: 8faa1058 */ lw $t2,0x1058($sp)
|
||||
/* f11a8cc: 0fc46cb2 */ jal pakCreateFilesystem
|
||||
/* f11a8d0: 01002025 */ or $a0,$t0,$zero
|
||||
/* f11a8d4: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11a8d8: 10410003 */ beq $v0,$at,.L0f11a8e8_2
|
||||
/* f11a8dc: 24090001 */ addiu $t1,$zero,0x1
|
||||
/* f11a8e0: 10000002 */ beqz $zero,.L0f11a8ec_2
|
||||
/* f11a8e4: ae020260 */ sw $v0,0x260($s0)
|
||||
.L0f11a8e8_2:
|
||||
/* f11a8e8: afa91058 */ sw $t1,0x1058($sp)
|
||||
.L0f11a8ec_2:
|
||||
/* f11a8ec: 8faa1058 */ lw $t2,0x1058($sp)
|
||||
.L0f11a8f0_2:
|
||||
/* f11a8f0: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a8f4: 00045e03 */ sra $t3,$a0,0x18
|
||||
/* f11a8f8: 55400016 */ bnezl $t2,.L0f11a954_2
|
||||
/* f11a8fc: 8fb91058 */ lw $t9,0x1058($sp)
|
||||
/* f11a900: 0fc46579 */ jal pakRepairFilesystem
|
||||
/* f11a904: 01602025 */ or $a0,$t3,$zero
|
||||
/* f11a908: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11a90c: 14410010 */ bne $v0,$at,.L0f11a950_2
|
||||
/* f11a910: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a914: 00046603 */ sra $t4,$a0,0x18
|
||||
/* f11a918: 0fc46cb2 */ jal pakCreateFilesystem
|
||||
/* f11a91c: 01802025 */ or $a0,$t4,$zero
|
||||
/* f11a920: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11a924: 10410003 */ beq $v0,$at,.L0f11a934_2
|
||||
/* f11a928: 240d0001 */ addiu $t5,$zero,0x1
|
||||
/* f11a92c: 10000002 */ beqz $zero,.L0f11a938_2
|
||||
/* f11a930: ae020260 */ sw $v0,0x260($s0)
|
||||
.L0f11a934_2:
|
||||
/* f11a934: afad1058 */ sw $t5,0x1058($sp)
|
||||
.L0f11a938_2:
|
||||
/* f11a938: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11a93c: 52210005 */ beql $s1,$at,.L0f11a954_2
|
||||
/* f11a940: 8fb91058 */ lw $t9,0x1058($sp)
|
||||
/* f11a944: 920f02b8 */ lbu $t7,0x2b8($s0)
|
||||
/* f11a948: 35f80002 */ ori $t8,$t7,0x2
|
||||
/* f11a94c: a21802b8 */ sb $t8,0x2b8($s0)
|
||||
.L0f11a950_2:
|
||||
/* f11a950: 8fb91058 */ lw $t9,0x1058($sp)
|
||||
.L0f11a954_2:
|
||||
/* f11a954: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a958: 00044603 */ sra $t0,$a0,0x18
|
||||
/* f11a95c: 5720001e */ bnezl $t9,.L0f11a9d8_2
|
||||
/* f11a960: 240d0016 */ addiu $t5,$zero,0x16
|
||||
/* f11a964: 0fc4679a */ jal pakFindMaxFileId
|
||||
/* f11a968: 01002025 */ or $a0,$t0,$zero
|
||||
/* f11a96c: 2401ffff */ addiu $at,$zero,-1
|
||||
/* f11a970: 10410018 */ beq $v0,$at,.L0f11a9d4_2
|
||||
/* f11a974: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a978: 00044e03 */ sra $t1,$a0,0x18
|
||||
/* f11a97c: ae02025c */ sw $v0,0x25c($s0)
|
||||
/* f11a980: 01202025 */ or $a0,$t1,$zero
|
||||
/* f11a984: 24050004 */ addiu $a1,$zero,0x4
|
||||
/* f11a988: 0fc459cc */ jal pakGetFileIdsByType
|
||||
/* f11a98c: 27a60054 */ addiu $a2,$sp,0x54
|
||||
/* f11a990: 14400010 */ bnez $v0,.L0f11a9d4_2
|
||||
/* f11a994: 00112600 */ sll $a0,$s1,0x18
|
||||
/* f11a998: 00045603 */ sra $t2,$a0,0x18
|
||||
/* f11a99c: 0fc46703 */ jal pakCreateInitialFiles
|
||||
/* f11a9a0: 01402025 */ or $a0,$t2,$zero
|
||||
/* f11a9a4: 1040000b */ beqz $v0,.L0f11a9d4_2
|
||||
/* f11a9a8: 24010004 */ addiu $at,$zero,0x4
|
||||
/* f11a9ac: 16210004 */ bne $s1,$at,.L0f11a9c0_2
|
||||
/* f11a9b0: 240c0006 */ addiu $t4,$zero,0x6
|
||||
/* f11a9b4: 240b000b */ addiu $t3,$zero,0xb
|
||||
/* f11a9b8: 10000002 */ beqz $zero,.L0f11a9c4_2
|
||||
/* f11a9bc: ae0b0010 */ sw $t3,0x10($s0)
|
||||
.L0f11a9c0_2:
|
||||
/* f11a9c0: ae0c0010 */ sw $t4,0x10($s0)
|
||||
.L0f11a9c4_2:
|
||||
/* f11a9c4: 0fc44344 */ jal func0f110d90
|
||||
/* f11a9c8: 02202025 */ or $a0,$s1,$zero
|
||||
/* f11a9cc: 10000006 */ beqz $zero,.L0f11a9e8_2
|
||||
/* f11a9d0: 24020001 */ addiu $v0,$zero,0x1
|
||||
.L0f11a9d4_2:
|
||||
/* f11a9d4: 240d0016 */ addiu $t5,$zero,0x16
|
||||
.L0f11a9d8_2:
|
||||
/* f11a9d8: ae0d0010 */ sw $t5,0x10($s0)
|
||||
/* f11a9dc: 0fc44344 */ jal func0f110d90
|
||||
/* f11a9e0: 02202025 */ or $a0,$s1,$zero
|
||||
/* f11a9e4: 00001025 */ or $v0,$zero,$zero
|
||||
.L0f11a9e8_2:
|
||||
/* f11a9e8: 8fbf002c */ lw $ra,0x2c($sp)
|
||||
/* f11a9ec: 8fb00024 */ lw $s0,0x24($sp)
|
||||
/* f11a9f0: 8fb10028 */ lw $s1,0x28($sp)
|
||||
/* f11a9f4: 03e00008 */ jr $ra
|
||||
/* f11a9f8: 27bd1068 */ addiu $sp,$sp,0x1068
|
||||
);
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
const char var7f1b44bc[] = "Pak %d -> Searching for the game file\n";
|
||||
#else
|
||||
const char var7f1b44bc[] = "Pak %d -> Searching for the game file";
|
||||
#endif
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
/**
|
||||
* Prepare a controller pak for use by making sure a note is allocated and that
|
||||
* the filesystem is good, among other things.
|
||||
*/
|
||||
bool mempakPrepare(s8 device)
|
||||
{
|
||||
u32 stack[2];
|
||||
bool isnewnote = false;
|
||||
bool error = false;
|
||||
#if VERSION < VERSION_NTSC_FINAL
|
||||
u32 stack2;
|
||||
#endif
|
||||
u32 fileids[1024];
|
||||
s32 serial;
|
||||
s32 sp48;
|
||||
s32 notesize;
|
||||
s32 maxfileid;
|
||||
|
||||
g_Paks[device].type = PAKTYPE_MEMORY;
|
||||
g_Paks[device].unk2b8_02 = true;
|
||||
|
||||
pakQueryTotalUsage(device);
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
if (g_Paks[device].unk010 == PAK010_01) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Find the PD note if it exists
|
||||
joyDisableCyclicPolling(JOYARGS(3319));
|
||||
sp48 = pakFindNote(PFS(device), ROM_COMPANYCODE, ROM_GAMECODE, g_PakNoteGameName, g_PakNoteExtName, &g_Paks[device].pdnoteindex);
|
||||
joyEnableCyclicPolling(JOYARGS(3321));
|
||||
|
||||
// If it doesn't exist, allocate it
|
||||
if (sp48 != PAK_ERR1_OK) {
|
||||
struct pak *pak = &g_Paks[device];
|
||||
|
||||
pakHandleResult(sp48, device, false, LINE_3654);
|
||||
|
||||
g_Paks[device].pdnumnotes = (pak->pakdata.pagesfree > 128) ? 2 : 1;
|
||||
|
||||
notesize = g_Paks[device].pdnumnotes * (256 * NUM_PAGES);
|
||||
|
||||
joyDisableCyclicPolling(JOYARGS(3336));
|
||||
sp48 = pakAllocateNote(PFS(device), ROM_COMPANYCODE, ROM_GAMECODE, g_PakNoteGameName, g_PakNoteExtName, notesize, &g_Paks[device].pdnoteindex);
|
||||
joyEnableCyclicPolling(JOYARGS(3338));
|
||||
|
||||
g_Paks[device].unk2b8_02 = true;
|
||||
|
||||
if (pakHandleResult(sp48, device, true, LINE_3668)) {
|
||||
isnewnote = true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
pakQueryTotalUsage(device);
|
||||
pakQueryPdSize(device);
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
g_Paks[device].unk2b8_07 = false;
|
||||
#endif
|
||||
|
||||
g_Paks[device].headercachecount = 0;
|
||||
g_Paks[device].unk010 = PAK010_11;
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
if (device && device && device);
|
||||
|
||||
// If it's a new note, create the filesystem
|
||||
if (isnewnote) {
|
||||
serial = pakCreateFilesystem(device);
|
||||
|
||||
if (serial != -1) {
|
||||
g_Paks[device].serial = serial;
|
||||
} else {
|
||||
error = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Check the filesystem for errors and try to recreate it if broken
|
||||
if (!error) {
|
||||
if (pakRepairFilesystem(device) == -1) {
|
||||
serial = pakCreateFilesystem(device);
|
||||
|
||||
if (serial != -1) {
|
||||
g_Paks[device].serial = serial;
|
||||
} else {
|
||||
error = true;
|
||||
}
|
||||
|
||||
if (device != SAVEDEVICE_GAMEPAK) {
|
||||
g_Paks[device].unk2b8_07 = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!error) {
|
||||
maxfileid = pakFindMaxFileId(device);
|
||||
|
||||
if (maxfileid != -1) {
|
||||
g_Paks[device].maxfileid = maxfileid;
|
||||
|
||||
if (pakGetFileIdsByType(device, PAKFILETYPE_TERMINATOR, fileids) == 0 && pakCreateInitialFiles(device)) {
|
||||
g_Paks[device].unk010 = (device == SAVEDEVICE_GAMEPAK) ? PAK010_11 : PAK010_06;
|
||||
|
||||
func0f110d90(device);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g_Paks[device].unk010 = PAK010_22;
|
||||
|
||||
func0f110d90(device);
|
||||
|
||||
return false;
|
||||
#else
|
||||
if (!isnewnote) {
|
||||
if (!pakRepairFilesystem(device)) {
|
||||
isnewnote = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (argFindByPrefix(1, "-forcewipe")) {
|
||||
pakWipe(device, 0, g_Paks[device].pdnumblocks);
|
||||
} else if (isnewnote || argFindByPrefix(1, "-forcescrub")) {
|
||||
g_Paks[device].serial = pakCreateFilesystem(device);
|
||||
}
|
||||
|
||||
g_Paks[device].maxfileid = pakFindMaxFileId(device);
|
||||
|
||||
pakGetFileIdsByType(device, PAKFILETYPE_TERMINATOR, fileids);
|
||||
pakCreateInitialFiles(device);
|
||||
|
||||
g_Paks[device].unk010 = (device == SAVEDEVICE_GAMEPAK) ? PAK010_11 : PAK010_06;
|
||||
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
const char var7f1ae3d4nb[] = "pak.c";
|
||||
const char var7f1ae3dcnb[] = "pak.c";
|
||||
const char var7f1ae3e4nb[] = "pak.c";
|
||||
const char var7f1ae3ecnb[] = "pak.c";
|
||||
const char var7f1ae3f4nb[] = "-forcewipe";
|
||||
const char var7f1ae400nb[] = "-forcescrub";
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel mempakPrepare
|
||||
/* f1148c8: 27bdefb0 */ addiu $sp,$sp,-4176
|
||||
|
|
@ -3676,133 +3342,7 @@ glabel mempakPrepare
|
|||
);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Prepare a controller pak for use by making sure a note is allocated and that
|
||||
* the filesystem is good, among other things.
|
||||
*/
|
||||
// Mismatch: Swapped instructions. Seems related to sp48. Splitting the two uses
|
||||
// of sp48 into separate variables helps, but both variables are saved to sp48.
|
||||
//bool mempakPrepare(s8 device)
|
||||
//{
|
||||
// u32 stack[2];
|
||||
// bool isnewnote = false; // 1054
|
||||
// bool error = false; // 1050
|
||||
// u32 fileids[1024]; // 50
|
||||
// s32 serial;
|
||||
// s32 sp48; // 48
|
||||
// s32 notesize; // 44
|
||||
// s32 maxfileid;
|
||||
//
|
||||
// g_Paks[device].type = PAKTYPE_MEMORY;
|
||||
// g_Paks[device].unk2b8_02 = true;
|
||||
//
|
||||
// pakQueryTotalUsage(device);
|
||||
//
|
||||
// if (g_Paks[device].unk010 == PAK010_01) {
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// // Find the PD note if it exists
|
||||
// joyDisableCyclicPolling();
|
||||
// sp48 = pakFindNote(PFS(device), ROM_COMPANYCODE, ROM_GAMECODE, g_PakNoteGameName, g_PakNoteExtName, &g_Paks[device].pdnoteindex);
|
||||
// joyEnableCyclicPolling();
|
||||
//
|
||||
// // If it doesn't exist, allocate it
|
||||
// if (sp48 != PAK_ERR1_OK) {
|
||||
// pakHandleResult(sp48, device, false, 3654);
|
||||
//
|
||||
// g_Paks[device].pdnumnotes = (g_Paks[device].pakdata.pagesfree > 128) ? 2 : 1;
|
||||
//
|
||||
// notesize = g_Paks[device].pdnumnotes * (256 * NUM_PAGES);
|
||||
//
|
||||
// joyDisableCyclicPolling();
|
||||
// sp48 = pakAllocateNote(PFS(device), ROM_COMPANYCODE, ROM_GAMECODE, g_PakNoteGameName, g_PakNoteExtName, notesize, &g_Paks[device].pdnoteindex);
|
||||
// joyEnableCyclicPolling();
|
||||
//
|
||||
// g_Paks[device].unk2b8_02 = true;
|
||||
//
|
||||
// if (pakHandleResult(sp48, device, true, 3668)) {
|
||||
// isnewnote = true;
|
||||
// } else {
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// pakQueryTotalUsage(device);
|
||||
// pakQueryPdSize(device);
|
||||
//
|
||||
// g_Paks[device].unk2b8_07 = false;
|
||||
// g_Paks[device].headercachecount = 0;
|
||||
// g_Paks[device].unk010 = PAK010_11;
|
||||
//
|
||||
// // If it's a new note, create the filesystem
|
||||
// if (isnewnote) {
|
||||
// serial = pakCreateFilesystem(device);
|
||||
//
|
||||
// if (serial != -1) {
|
||||
// g_Paks[device].serial = serial;
|
||||
// } else {
|
||||
// error = true;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // Maybe check the filesystem for correctness and recreate it if needed?
|
||||
// if (!error) {
|
||||
// if (pakRepairFilesystem(device) == -1) {
|
||||
// serial = pakCreateFilesystem(device);
|
||||
//
|
||||
// if (serial != -1) {
|
||||
// g_Paks[device].serial = serial;
|
||||
// } else {
|
||||
// error = true;
|
||||
// }
|
||||
//
|
||||
// if (device != SAVEDEVICE_GAMEPAK) {
|
||||
// g_Paks[device].unk2b8_06 = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (!error) {
|
||||
// maxfileid = pakFindMaxFileId(device);
|
||||
//
|
||||
// if (maxfileid != -1) {
|
||||
// g_Paks[device].maxfileid = maxfileid;
|
||||
//
|
||||
// if (pakGetFileIdsByType(device, PAKFILETYPE_TERMINATOR, fileids) == 0 && pakCreateInitialFiles(device)) {
|
||||
// if (device == SAVEDEVICE_GAMEPAK) {
|
||||
// g_Paks[device].unk010 = PAK010_11;
|
||||
// } else {
|
||||
// g_Paks[device].unk010 = PAK010_06;
|
||||
// }
|
||||
//
|
||||
// func0f110d90(device);
|
||||
//
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// g_Paks[device].unk010 = PAK010_22;
|
||||
//
|
||||
// func0f110d90(device);
|
||||
//
|
||||
// return false;
|
||||
//}
|
||||
|
||||
#if VERSION >= VERSION_NTSC_1_0
|
||||
const char var7f1b44bc[] = "Pak %d -> Searching for the game file\n";
|
||||
#else
|
||||
const char var7f1b44bc[] = "Pak %d -> Searching for the game file";
|
||||
#endif
|
||||
|
||||
#if VERSION < VERSION_NTSC_1_0
|
||||
const char var7f1ae3d4nb[] = "pak.c";
|
||||
const char var7f1ae3dcnb[] = "pak.c";
|
||||
const char var7f1ae3e4nb[] = "pak.c";
|
||||
const char var7f1ae3ecnb[] = "pak.c";
|
||||
const char var7f1ae3f4nb[] = "-forcewipe";
|
||||
const char var7f1ae400nb[] = "-forcescrub";
|
||||
const char var7f1ae40cnb[] = "Pak %d -> Initialisation - No swap file";
|
||||
const char var7f1ae434nb[] = "Pak %d -> Initialisation - Found a swap file";
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue