Decompile filelistsTick

This commit is contained in:
Ryan Dwyer 2021-09-14 22:53:36 +10:00
parent 99600c3943
commit a665b351a4
7 changed files with 86 additions and 268 deletions

View File

@ -980,7 +980,7 @@ glabel var7f1a863c
/* f01cc5c: 91ce2614 */ lbu $t6,0x2614($t6)
/* f01cc60: 11c0000b */ beqz $t6,.PF0f01cc90
/* f01cc64: 00000000 */ nop
/* f01cc68: 0fc44622 */ jal func0f110da8
/* f01cc68: 0fc44622 */ jal filelistsTick
/* f01cc6c: 00000000 */ nop
/* f01cc70: 10000007 */ b .PF0f01cc90
/* f01cc74: 00000000 */ nop
@ -2757,7 +2757,7 @@ glabel var7f1a863c
/* f01cb8c: 93182944 */ lbu $t8,%lo(var80062944)($t8)
/* f01cb90: 1300000b */ beqz $t8,.L0f01cbc0
/* f01cb94: 00000000 */ nop
/* f01cb98: 0fc4436a */ jal func0f110da8
/* f01cb98: 0fc4436a */ jal filelistsTick
/* f01cb9c: 00000000 */ nop
/* f01cba0: 10000007 */ b .L0f01cbc0
/* f01cba4: 00000000 */ nop
@ -4525,7 +4525,7 @@ glabel var7f1a863c
/* f01c86c: 93184e54 */ lbu $t8,0x4e54($t8)
/* f01c870: 1300000b */ beqz $t8,.NB0f01c8a0
/* f01c874: 00000000 */ sll $zero,$zero,0x0
/* f01c878: 0fc42c80 */ jal func0f110da8
/* f01c878: 0fc42c80 */ jal filelistsTick
/* f01c87c: 00000000 */ sll $zero,$zero,0x0
/* f01c880: 10000007 */ beqz $zero,.NB0f01c8a0
/* f01c884: 00000000 */ sll $zero,$zero,0x0
@ -5810,7 +5810,7 @@ glabel var7f1a863c
// }
//
// if (var80062944) {
// func0f110da8();
// filelistsTick();
// }
// } else {
// // cba8

View File

@ -592,7 +592,7 @@ void filemgrEraseCorruptFile(void)
for (i = 0; i < 4; i++) {
if (g_FileLists[i]) {
g_FileLists[i]->outdated = true;
g_FileLists[i]->timeuntilupdate = 1;
}
}
@ -1103,7 +1103,7 @@ void filemgrDeleteCurrentFile(void)
error = true;
}
g_FileLists[g_Menus[g_MpPlayerNum].listnum]->outdated = true;
g_FileLists[g_Menus[g_MpPlayerNum].listnum]->timeuntilupdate = 1;
if (error) {
g_Menus[g_MpPlayerNum].unke3c = index;
@ -1895,7 +1895,7 @@ void filemgrPushSelectLocationDialog(s32 arg0, u32 filetype)
g_Menus[g_MpPlayerNum].listnum = func0f110cf8(filetype);
#if VERSION >= VERSION_NTSC_1_0
func0f110da8();
filelistsTick();
#endif
menuPushDialog(&g_FilemgrSelectLocationMenuDialog);
@ -2612,7 +2612,7 @@ s32 filemgrChooseAgentListMenuHandler(s32 operation, struct menuitem *item, unio
g_Menus[g_MpPlayerNum].data.filemgr.unke2c = 0;
}
if (g_FileLists[0]->unk30e) {
if (g_FileLists[0]->updatedthisframe) {
pass = true;
}
} else {
@ -2812,7 +2812,7 @@ s32 filemgrMainMenuDialog(s32 operation, struct menudialog *dialog, union handle
break;
#if VERSION < VERSION_NTSC_1_0
case MENUOP_TICK:
func0f110da8();
filelistsTick();
break;
#endif
}

View File

@ -25,26 +25,15 @@
u8 var800a22d0[0x5b];
s8 g_AltTitleUnlocked;
u8 g_AltTitleEnabled;
s32 var800a2330[1];
u32 var800a2334;
u32 var800a2338;
u32 var800a233c;
u32 var800a2340;
s32 var800a2330[5];
u32 var800a2344;
u32 var800a2348;
u32 var800a234c;
struct filelist *g_FileLists[] = { NULL, NULL, NULL, NULL };
bool var80075bd0[] = { true, true, true, true };
u32 var80075be0 = 0;
u32 var80075be4 = 0;
u32 var80075be8 = 0;
u32 var80075bec = 0;
u32 var80075bf0 = 0;
u32 var80075bf4 = 0;
u32 var80075bf8 = 0;
u32 var80075bfc = 0;
bool var80075be0[] = { false, false, false, false };
u32 var80075bf0 = false;
void bossfileSetDefaults2(void)
{
@ -271,7 +260,7 @@ void func0f110c5c(s32 listnum, u8 filetype)
g_FileLists[listnum] = func00012ab0(align16(sizeof(struct filelist)));
}
g_FileLists[listnum]->outdated = true;
g_FileLists[listnum]->timeuntilupdate = 1;
g_FileLists[listnum]->filetype = filetype;
if (var80062944 == 0) {
@ -313,247 +302,75 @@ void func0f110d90(s32 index)
}
#endif
void filelistsTick(void)
{
u32 updateall;
u32 update;
s32 i;
static bool var80075bf4 = false;
if (!var80075bf4) {
for (i = 0; i < 5; i++) {
var800a2330[i] = -1;
}
var80075bf4 = true;
}
i = 0;
updateall = false;
for (; i < 5; i++) {
#if VERSION >= VERSION_NTSC_1_0
GLOBAL_ASM(
glabel func0f110da8
/* f110da8: 27bdffd0 */ addiu $sp,$sp,-48
/* f110dac: 3c0e8007 */ lui $t6,%hi(var80075bf4)
/* f110db0: 8dce5bf4 */ lw $t6,%lo(var80075bf4)($t6)
/* f110db4: afbf002c */ sw $ra,0x2c($sp)
/* f110db8: afb40028 */ sw $s4,0x28($sp)
/* f110dbc: afb30024 */ sw $s3,0x24($sp)
/* f110dc0: afb20020 */ sw $s2,0x20($sp)
/* f110dc4: afb1001c */ sw $s1,0x1c($sp)
/* f110dc8: 15c0000c */ bnez $t6,.L0f110dfc
/* f110dcc: afb00018 */ sw $s0,0x18($sp)
/* f110dd0: 3c10800a */ lui $s0,%hi(var800a2330)
/* f110dd4: 3c03800a */ lui $v1,%hi(var800a2344)
/* f110dd8: 24632344 */ addiu $v1,$v1,%lo(var800a2344)
/* f110ddc: 26102330 */ addiu $s0,$s0,%lo(var800a2330)
/* f110de0: 2402ffff */ addiu $v0,$zero,-1
.L0f110de4:
/* f110de4: 26100004 */ addiu $s0,$s0,0x4
/* f110de8: 1603fffe */ bne $s0,$v1,.L0f110de4
/* f110dec: ae02fffc */ sw $v0,-0x4($s0)
/* f110df0: 240f0001 */ addiu $t7,$zero,0x1
/* f110df4: 3c018007 */ lui $at,%hi(var80075bf4)
/* f110df8: ac2f5bf4 */ sw $t7,%lo(var80075bf4)($at)
.L0f110dfc:
/* f110dfc: 00009025 */ or $s2,$zero,$zero
/* f110e00: 00009825 */ or $s3,$zero,$zero
/* f110e04: 00128e00 */ sll $s1,$s2,0x18
.L0f110e08:
/* f110e08: 0011c603 */ sra $t8,$s1,0x18
/* f110e0c: 00182600 */ sll $a0,$t8,0x18
/* f110e10: 0004ce03 */ sra $t9,$a0,0x18
/* f110e14: 03202025 */ or $a0,$t9,$zero
/* f110e18: 0fc459f6 */ jal func0f1167d8
/* f110e1c: 03008825 */ or $s1,$t8,$zero
/* f110e20: 10400010 */ beqz $v0,.L0f110e64
/* f110e24: 00112600 */ sll $a0,$s1,0x18
/* f110e28: 3c0a800a */ lui $t2,%hi(var800a2330)
/* f110e2c: 254a2330 */ addiu $t2,$t2,%lo(var800a2330)
/* f110e30: 00044603 */ sra $t0,$a0,0x18
/* f110e34: 00124880 */ sll $t1,$s2,0x2
/* f110e38: 012a8021 */ addu $s0,$t1,$t2
/* f110e3c: 0fc45c0b */ jal func0f11702c
/* f110e40: 01002025 */ or $a0,$t0,$zero
/* f110e44: 8e0b0000 */ lw $t3,0x0($s0)
/* f110e48: 00112600 */ sll $a0,$s1,0x18
/* f110e4c: 00046603 */ sra $t4,$a0,0x18
/* f110e50: 104b0004 */ beq $v0,$t3,.L0f110e64
/* f110e54: 01802025 */ or $a0,$t4,$zero
/* f110e58: 0fc45c0b */ jal func0f11702c
/* f110e5c: 24130001 */ addiu $s3,$zero,0x1
/* f110e60: ae020000 */ sw $v0,0x0($s0)
.L0f110e64:
/* f110e64: 26520001 */ addiu $s2,$s2,0x1
/* f110e68: 2a410005 */ slti $at,$s2,0x5
/* f110e6c: 5420ffe6 */ bnezl $at,.L0f110e08
/* f110e70: 00128e00 */ sll $s1,$s2,0x18
/* f110e74: 3c108007 */ lui $s0,%hi(g_FileLists)
/* f110e78: 3c148007 */ lui $s4,%hi(g_FileLists+0x10)
/* f110e7c: 3c118007 */ lui $s1,%hi(g_FileLists+0x10)
/* f110e80: 26315bd0 */ addiu $s1,$s1,%lo(g_FileLists+0x10)
/* f110e84: 26945bd0 */ addiu $s4,$s4,%lo(g_FileLists+0x10)
/* f110e88: 26105bc0 */ addiu $s0,$s0,%lo(g_FileLists)
/* f110e8c: 24120001 */ addiu $s2,$zero,0x1
/* f110e90: 8e040000 */ lw $a0,0x0($s0)
.L0f110e94:
/* f110e94: 5080001b */ beqzl $a0,.L0f110f04
/* f110e98: 26100004 */ addiu $s0,$s0,0x4
/* f110e9c: a080030e */ sb $zero,0x30e($a0)
/* f110ea0: 8e040000 */ lw $a0,0x0($s0)
/* f110ea4: 02601825 */ or $v1,$s3,$zero
/* f110ea8: 9082030c */ lbu $v0,0x30c($a0)
/* f110eac: 18400007 */ blez $v0,.L0f110ecc
/* f110eb0: 244dffff */ addiu $t5,$v0,-1
/* f110eb4: a08d030c */ sb $t5,0x30c($a0)
/* f110eb8: 8e040000 */ lw $a0,0x0($s0)
/* f110ebc: 908e030c */ lbu $t6,0x30c($a0)
/* f110ec0: 55c00003 */ bnezl $t6,.L0f110ed0
/* f110ec4: 908f030b */ lbu $t7,0x30b($a0)
/* f110ec8: 02401825 */ or $v1,$s2,$zero
.L0f110ecc:
/* f110ecc: 908f030b */ lbu $t7,0x30b($a0)
.L0f110ed0:
/* f110ed0: 000fc080 */ sll $t8,$t7,0x2
/* f110ed4: 0238c821 */ addu $t9,$s1,$t8
/* f110ed8: 8f280000 */ lw $t0,0x0($t9)
/* f110edc: 11000002 */ beqz $t0,.L0f110ee8
/* f110ee0: 00000000 */ nop
/* f110ee4: 02401825 */ or $v1,$s2,$zero
.L0f110ee8:
/* f110ee8: 50600006 */ beqzl $v1,.L0f110f04
/* f110eec: 26100004 */ addiu $s0,$s0,0x4
/* f110ef0: 0fc443d3 */ jal func0f110f4c
/* f110ef4: 00000000 */ nop
/* f110ef8: 8e090000 */ lw $t1,0x0($s0)
/* f110efc: a132030e */ sb $s2,0x30e($t1)
/* f110f00: 26100004 */ addiu $s0,$s0,0x4
.L0f110f04:
/* f110f04: 0214082b */ sltu $at,$s0,$s4
/* f110f08: 5420ffe2 */ bnezl $at,.L0f110e94
/* f110f0c: 8e040000 */ lw $a0,0x0($s0)
/* f110f10: 3c028007 */ lui $v0,%hi(g_FileLists+0x10)
/* f110f14: 3c038007 */ lui $v1,%hi(var80075be0)
/* f110f18: 24635be0 */ addiu $v1,$v1,%lo(var80075be0)
/* f110f1c: 24425bd0 */ addiu $v0,$v0,%lo(g_FileLists+0x10)
.L0f110f20:
/* f110f20: 24420004 */ addiu $v0,$v0,0x4
/* f110f24: 1443fffe */ bne $v0,$v1,.L0f110f20
/* f110f28: ac40fffc */ sw $zero,-0x4($v0)
/* f110f2c: 8fbf002c */ lw $ra,0x2c($sp)
/* f110f30: 8fb00018 */ lw $s0,0x18($sp)
/* f110f34: 8fb1001c */ lw $s1,0x1c($sp)
/* f110f38: 8fb20020 */ lw $s2,0x20($sp)
/* f110f3c: 8fb30024 */ lw $s3,0x24($sp)
/* f110f40: 8fb40028 */ lw $s4,0x28($sp)
/* f110f44: 03e00008 */ jr $ra
/* f110f48: 27bd0030 */ addiu $sp,$sp,0x30
);
if (func0f1167d8(i) && var800a2330[i] != func0f11702c(i)) {
updateall = true;
var800a2330[i] = func0f11702c(i);
}
#else
GLOBAL_ASM(
glabel func0f110da8
/* f10b200: 27bdffd0 */ addiu $sp,$sp,-48
/* f10b204: 3c0e8007 */ lui $t6,0x8007
/* f10b208: 8dce7f94 */ lw $t6,0x7f94($t6)
/* f10b20c: afbf002c */ sw $ra,0x2c($sp)
/* f10b210: afb40028 */ sw $s4,0x28($sp)
/* f10b214: afb30024 */ sw $s3,0x24($sp)
/* f10b218: afb20020 */ sw $s2,0x20($sp)
/* f10b21c: afb1001c */ sw $s1,0x1c($sp)
/* f10b220: 15c0000c */ bnez $t6,.NB0f10b254
/* f10b224: afb00018 */ sw $s0,0x18($sp)
/* f10b228: 3c10800a */ lui $s0,0x800a
/* f10b22c: 3c03800a */ lui $v1,0x800a
/* f10b230: 24636834 */ addiu $v1,$v1,0x6834
/* f10b234: 26106820 */ addiu $s0,$s0,0x6820
/* f10b238: 2402ffff */ addiu $v0,$zero,-1
.NB0f10b23c:
/* f10b23c: 26100004 */ addiu $s0,$s0,0x4
/* f10b240: 1603fffe */ bne $s0,$v1,.NB0f10b23c
/* f10b244: ae02fffc */ sw $v0,-0x4($s0)
/* f10b248: 240f0001 */ addiu $t7,$zero,0x1
/* f10b24c: 3c018007 */ lui $at,0x8007
/* f10b250: ac2f7f94 */ sw $t7,0x7f94($at)
.NB0f10b254:
/* f10b254: 3c10800a */ lui $s0,0x800a
/* f10b258: 26106820 */ addiu $s0,$s0,0x6820
/* f10b25c: 00009825 */ or $s3,$zero,$zero
/* f10b260: 0000a025 */ or $s4,$zero,$zero
.NB0f10b264:
/* f10b264: 00138e00 */ sll $s1,$s3,0x18
/* f10b268: 0011c603 */ sra $t8,$s1,0x18
/* f10b26c: 00182600 */ sll $a0,$t8,0x18
/* f10b270: 0004ce03 */ sra $t9,$a0,0x18
/* f10b274: 03202025 */ or $a0,$t9,$zero
/* f10b278: 0fc444e1 */ jal func0f11702c
/* f10b27c: 03008825 */ or $s1,$t8,$zero
/* f10b280: 00112600 */ sll $a0,$s1,0x18
/* f10b284: 00044603 */ sra $t0,$a0,0x18
/* f10b288: 00409025 */ or $s2,$v0,$zero
/* f10b28c: 0fc44354 */ jal func0f11698c
/* f10b290: 01002025 */ or $a0,$t0,$zero
/* f10b294: 00112600 */ sll $a0,$s1,0x18
/* f10b298: 00044e03 */ sra $t1,$a0,0x18
/* f10b29c: 0fc442e7 */ jal func0f1167d8
/* f10b2a0: 01202025 */ or $a0,$t1,$zero
/* f10b2a4: 10400002 */ beqz $v0,.NB0f10b2b0
/* f10b2a8: 26730001 */ addiu $s3,$s3,0x1
/* f10b2ac: 00009025 */ or $s2,$zero,$zero
.NB0f10b2b0:
/* f10b2b0: 8e0a0000 */ lw $t2,0x0($s0)
/* f10b2b4: 2a610005 */ slti $at,$s3,0x5
/* f10b2b8: 124a0003 */ beq $s2,$t2,.NB0f10b2c8
/* f10b2bc: 00000000 */ sll $zero,$zero,0x0
/* f10b2c0: 24140001 */ addiu $s4,$zero,0x1
/* f10b2c4: ae120000 */ sw $s2,0x0($s0)
.NB0f10b2c8:
/* f10b2c8: 1420ffe6 */ bnez $at,.NB0f10b264
/* f10b2cc: 26100004 */ addiu $s0,$s0,0x4
/* f10b2d0: 3c108007 */ lui $s0,0x8007
/* f10b2d4: 3c138007 */ lui $s3,0x8007
/* f10b2d8: 3c118007 */ lui $s1,0x8007
/* f10b2dc: 26317f70 */ addiu $s1,$s1,0x7f70
/* f10b2e0: 26737f70 */ addiu $s3,$s3,0x7f70
/* f10b2e4: 26107f60 */ addiu $s0,$s0,0x7f60
/* f10b2e8: 24120001 */ addiu $s2,$zero,0x1
/* f10b2ec: 8e040000 */ lw $a0,0x0($s0)
.NB0f10b2f0:
/* f10b2f0: 5080001b */ beqzl $a0,.NB0f10b360
/* f10b2f4: 26100004 */ addiu $s0,$s0,0x4
/* f10b2f8: a080030e */ sb $zero,0x30e($a0)
/* f10b2fc: 8e040000 */ lw $a0,0x0($s0)
/* f10b300: 02801825 */ or $v1,$s4,$zero
/* f10b304: 9082030c */ lbu $v0,0x30c($a0)
/* f10b308: 18400007 */ blez $v0,.NB0f10b328
/* f10b30c: 244bffff */ addiu $t3,$v0,-1
/* f10b310: a08b030c */ sb $t3,0x30c($a0)
/* f10b314: 8e040000 */ lw $a0,0x0($s0)
/* f10b318: 908c030c */ lbu $t4,0x30c($a0)
/* f10b31c: 55800003 */ bnezl $t4,.NB0f10b32c
/* f10b320: 908d030b */ lbu $t5,0x30b($a0)
/* f10b324: 02401825 */ or $v1,$s2,$zero
.NB0f10b328:
/* f10b328: 908d030b */ lbu $t5,0x30b($a0)
.NB0f10b32c:
/* f10b32c: 000d7080 */ sll $t6,$t5,0x2
/* f10b330: 022e7821 */ addu $t7,$s1,$t6
/* f10b334: 8df80000 */ lw $t8,0x0($t7)
/* f10b338: 13000002 */ beqz $t8,.NB0f10b344
/* f10b33c: 00000000 */ sll $zero,$zero,0x0
/* f10b340: 02401825 */ or $v1,$s2,$zero
.NB0f10b344:
/* f10b344: 50600006 */ beqzl $v1,.NB0f10b360
/* f10b348: 26100004 */ addiu $s0,$s0,0x4
/* f10b34c: 0fc42cea */ jal func0f110f4c
/* f10b350: 00000000 */ sll $zero,$zero,0x0
/* f10b354: 8e190000 */ lw $t9,0x0($s0)
/* f10b358: a332030e */ sb $s2,0x30e($t9)
/* f10b35c: 26100004 */ addiu $s0,$s0,0x4
.NB0f10b360:
/* f10b360: 0213082b */ sltu $at,$s0,$s3
/* f10b364: 5420ffe2 */ bnezl $at,.NB0f10b2f0
/* f10b368: 8e040000 */ lw $a0,0x0($s0)
/* f10b36c: 3c028007 */ lui $v0,0x8007
/* f10b370: 3c038007 */ lui $v1,0x8007
/* f10b374: 24637f80 */ addiu $v1,$v1,0x7f80
/* f10b378: 24427f70 */ addiu $v0,$v0,0x7f70
.NB0f10b37c:
/* f10b37c: 24420004 */ addiu $v0,$v0,0x4
/* f10b380: 1443fffe */ bne $v0,$v1,.NB0f10b37c
/* f10b384: ac40fffc */ sw $zero,-0x4($v0)
/* f10b388: 8fbf002c */ lw $ra,0x2c($sp)
/* f10b38c: 8fb00018 */ lw $s0,0x18($sp)
/* f10b390: 8fb1001c */ lw $s1,0x1c($sp)
/* f10b394: 8fb20020 */ lw $s2,0x20($sp)
/* f10b398: 8fb30024 */ lw $s3,0x24($sp)
/* f10b39c: 8fb40028 */ lw $s4,0x28($sp)
/* f10b3a0: 03e00008 */ jr $ra
/* f10b3a4: 27bd0030 */ addiu $sp,$sp,0x30
);
s32 tmp = func0f11702c(i);
func0f11698c(i);
if (func0f1167d8(i)) {
tmp = 0;
}
if (var800a2330[i] != tmp) {
updateall = true;
var800a2330[i] = tmp;
}
#endif
}
for (i = 0; i < 4; i++) {
if (g_FileLists[i] != NULL) {
g_FileLists[i]->updatedthisframe = false;
update = updateall;
if (g_FileLists[i]->timeuntilupdate > 0) {
g_FileLists[i]->timeuntilupdate--;
if (g_FileLists[i]->timeuntilupdate == 0) {
update = true;
}
}
if (var80075bd0[g_FileLists[i]->filetype]) {
update = true;
}
if (update) {
filelistUpdate(g_FileLists[i]);
g_FileLists[i]->updatedthisframe = true;
}
}
}
for (i = 0; i < 4; i++) {
var80075bd0[i] = false;
}
}
const char var7f1b39c8[] = "";
const char var7f1b39cc[] = "";
@ -572,7 +389,7 @@ const char var7f1b3a08[] = "tc != NULL";
const char var7f1b3a14[] = "gamefile.c";
GLOBAL_ASM(
glabel func0f110f4c
glabel filelistUpdate
/* f110f4c: 27bdc568 */ addiu $sp,$sp,-15000
/* f110f50: 3c0e7f1b */ lui $t6,%hi(var7f1b39e8)
/* f110f54: afbf003c */ sw $ra,0x3c($sp)

View File

@ -294,7 +294,7 @@ void func0f116984(s8 arg0, u8 *arg1, u8 *arg2)
func0f116bdc(arg0, arg1, arg2);
}
void func0f11698c(u32 arg0)
void func0f11698c(s8 device)
{
// empty
}

View File

@ -14,8 +14,8 @@ void func0f110bf8(void);
void func0f110c5c(s32 listnum, u8 filetype);
s32 func0f110cf8(u8 filetype);
void func0f110d90(s32 index);
void func0f110da8(void);
u32 func0f110f4c(void);
void filelistsTick(void);
void filelistUpdate(struct filelist *list);
struct textureconfig *func0f111460(s32 playernum, s32 arg1, s32 arg2);
#endif

View File

@ -19,6 +19,7 @@ s32 pakDeleteGameNote(s8 device, u16 company_code, u32 game_code, char *game_nam
s32 func0f1168c4(s8 device, struct pakdata **arg1);
u32 func0f116914(s8 device);
s32 func0f11693c(s8 device);
void func0f11698c(s8 device);
void func0f116994(void);
void func0f1169c8(s8 device, s32 arg1);
bool func0f116aec(s8 device);

View File

@ -4692,9 +4692,9 @@ struct filelist {
/*0x309*/ u8 unk309;
/*0x30a*/ u8 unk30a;
/*0x30b*/ u8 filetype;
/*0x30c*/ u8 outdated;
/*0x30c*/ u8 timeuntilupdate;
/*0x30d*/ u8 unk30d;
/*0x30e*/ u8 unk30e;
/*0x30e*/ u8 updatedthisframe;
};
struct challenge {