Match osPfsDeleteFile from libreultra

This commit is contained in:
Ryan Myers
2021-10-21 07:59:35 -04:00
parent c0f4b74883
commit 8eabd39ad6
5 changed files with 134 additions and 432 deletions
@@ -1,69 +0,0 @@
glabel __osBlockSum
/* 0D1988 800D0D88 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 0D198C 800D0D8C AFA40040 */ sw $a0, 0x40($sp)
/* 0D1990 800D0D90 AFA7004C */ sw $a3, 0x4c($sp)
/* 0D1994 800D0D94 93AE004F */ lbu $t6, 0x4f($sp)
/* 0D1998 800D0D98 8FAF0040 */ lw $t7, 0x40($sp)
/* 0D199C 800D0D9C AFBF0014 */ sw $ra, 0x14($sp)
/* 0D19A0 800D0DA0 AFA50044 */ sw $a1, 0x44($sp)
/* 0D19A4 800D0DA4 AFA60048 */ sw $a2, 0x48($sp)
/* 0D19A8 800D0DA8 AFA00038 */ sw $zero, 0x38($sp)
/* 0D19AC 800D0DAC A1EE0065 */ sb $t6, 0x65($t7)
/* 0D19B0 800D0DB0 0C0357F7 */ jal __osPfsSelectBank
/* 0D19B4 800D0DB4 8FA40040 */ lw $a0, 0x40($sp)
/* 0D19B8 800D0DB8 AFA20038 */ sw $v0, 0x38($sp)
/* 0D19BC 800D0DBC 8FB80038 */ lw $t8, 0x38($sp)
/* 0D19C0 800D0DC0 13000003 */ beqz $t8, .L800D0DD0
/* 0D19C4 800D0DC4 00000000 */ nop
/* 0D19C8 800D0DC8 10000027 */ b .L800D0E68
/* 0D19CC 800D0DCC 03001025 */ move $v0, $t8
.L800D0DD0:
/* 0D19D0 800D0DD0 AFA0003C */ sw $zero, 0x3c($sp)
.L800D0DD4:
/* 0D19D4 800D0DD4 93A80047 */ lbu $t0, 0x47($sp)
/* 0D19D8 800D0DD8 8FB90040 */ lw $t9, 0x40($sp)
/* 0D19DC 800D0DDC 8FAA003C */ lw $t2, 0x3c($sp)
/* 0D19E0 800D0DE0 000848C0 */ sll $t1, $t0, 3
/* 0D19E4 800D0DE4 27A70018 */ addiu $a3, $sp, 0x18
/* 0D19E8 800D0DE8 8F240004 */ lw $a0, 4($t9)
/* 0D19EC 800D0DEC 8F250008 */ lw $a1, 8($t9)
/* 0D19F0 800D0DF0 0C033728 */ jal __osContRamRead
/* 0D19F4 800D0DF4 012A3021 */ addu $a2, $t1, $t2
/* 0D19F8 800D0DF8 AFA20038 */ sw $v0, 0x38($sp)
/* 0D19FC 800D0DFC 8FAB0038 */ lw $t3, 0x38($sp)
/* 0D1A00 800D0E00 11600007 */ beqz $t3, .L800D0E20
/* 0D1A04 800D0E04 00000000 */ nop
/* 0D1A08 800D0E08 8FAC0040 */ lw $t4, 0x40($sp)
/* 0D1A0C 800D0E0C A1800065 */ sb $zero, 0x65($t4)
/* 0D1A10 800D0E10 0C0357F7 */ jal __osPfsSelectBank
/* 0D1A14 800D0E14 8FA40040 */ lw $a0, 0x40($sp)
/* 0D1A18 800D0E18 10000013 */ b .L800D0E68
/* 0D1A1C 800D0E1C 8FA20038 */ lw $v0, 0x38($sp)
.L800D0E20:
/* 0D1A20 800D0E20 27A40018 */ addiu $a0, $sp, 0x18
/* 0D1A24 800D0E24 0C0354BC */ jal __osSumcalc
/* 0D1A28 800D0E28 24050020 */ li $a1, 32
/* 0D1A2C 800D0E2C 8FAD0048 */ lw $t5, 0x48($sp)
/* 0D1A30 800D0E30 95AE0000 */ lhu $t6, ($t5)
/* 0D1A34 800D0E34 004E7821 */ addu $t7, $v0, $t6
/* 0D1A38 800D0E38 A5AF0000 */ sh $t7, ($t5)
/* 0D1A3C 800D0E3C 8FB8003C */ lw $t8, 0x3c($sp)
/* 0D1A40 800D0E40 27190001 */ addiu $t9, $t8, 1
/* 0D1A44 800D0E44 2B210008 */ slti $at, $t9, 8
/* 0D1A48 800D0E48 1420FFE2 */ bnez $at, .L800D0DD4
/* 0D1A4C 800D0E4C AFB9003C */ sw $t9, 0x3c($sp)
/* 0D1A50 800D0E50 8FA80040 */ lw $t0, 0x40($sp)
/* 0D1A54 800D0E54 A1000065 */ sb $zero, 0x65($t0)
/* 0D1A58 800D0E58 0C0357F7 */ jal __osPfsSelectBank
/* 0D1A5C 800D0E5C 8FA40040 */ lw $a0, 0x40($sp)
/* 0D1A60 800D0E60 AFA20038 */ sw $v0, 0x38($sp)
/* 0D1A64 800D0E64 8FA20038 */ lw $v0, 0x38($sp)
.L800D0E68:
/* 0D1A68 800D0E68 8FBF0014 */ lw $ra, 0x14($sp)
/* 0D1A6C 800D0E6C 27BD0040 */ addiu $sp, $sp, 0x40
/* 0D1A70 800D0E70 03E00008 */ jr $ra
/* 0D1A74 800D0E74 00000000 */ nop
/* 0D1A78 800D0E78 00000000 */ nop
/* 0D1A7C 800D0E7C 00000000 */ nop
@@ -1,157 +0,0 @@
glabel __osPfsReleasePages
/* 0D1750 800D0B50 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 0D1754 800D0B54 AFA60030 */ sw $a2, 0x30($sp)
/* 0D1758 800D0B58 93B80033 */ lbu $t8, 0x33($sp)
/* 0D175C 800D0B5C AFA5002C */ sw $a1, 0x2c($sp)
/* 0D1760 800D0B60 8FAF002C */ lw $t7, 0x2c($sp)
/* 0D1764 800D0B64 0018C840 */ sll $t9, $t8, 1
/* 0D1768 800D0B68 AFBF0014 */ sw $ra, 0x14($sp)
/* 0D176C 800D0B6C AFA40028 */ sw $a0, 0x28($sp)
/* 0D1770 800D0B70 AFA70034 */ sw $a3, 0x34($sp)
/* 0D1774 800D0B74 AFA0001C */ sw $zero, 0x1c($sp)
/* 0D1778 800D0B78 01F94021 */ addu $t0, $t7, $t9
/* 0D177C 800D0B7C 95010000 */ lhu $at, ($t0)
/* 0D1780 800D0B80 27AE0024 */ addiu $t6, $sp, 0x24
/* 0D1784 800D0B84 A5C10000 */ sh $at, ($t6)
/* 0D1788 800D0B88 97AC0024 */ lhu $t4, 0x24($sp)
/* 0D178C 800D0B8C 24010001 */ li $at, 1
/* 0D1790 800D0B90 1181000B */ beq $t4, $at, .L800D0BC0
/* 0D1794 800D0B94 00000000 */ nop
/* 0D1798 800D0B98 93AD0024 */ lbu $t5, 0x24($sp)
/* 0D179C 800D0B9C 19A00004 */ blez $t5, .L800D0BB0
/* 0D17A0 800D0BA0 00000000 */ nop
/* 0D17A4 800D0BA4 24180001 */ li $t8, 1
/* 0D17A8 800D0BA8 1000000E */ b .L800D0BE4
/* 0D17AC 800D0BAC AFB80018 */ sw $t8, 0x18($sp)
.L800D0BB0:
/* 0D17B0 800D0BB0 8FAF0028 */ lw $t7, 0x28($sp)
/* 0D17B4 800D0BB4 8DF90060 */ lw $t9, 0x60($t7)
/* 0D17B8 800D0BB8 1000000A */ b .L800D0BE4
/* 0D17BC 800D0BBC AFB90018 */ sw $t9, 0x18($sp)
.L800D0BC0:
/* 0D17C0 800D0BC0 93AA003B */ lbu $t2, 0x3b($sp)
/* 0D17C4 800D0BC4 19400004 */ blez $t2, .L800D0BD8
/* 0D17C8 800D0BC8 00000000 */ nop
/* 0D17CC 800D0BCC 24090001 */ li $t1, 1
/* 0D17D0 800D0BD0 10000004 */ b .L800D0BE4
/* 0D17D4 800D0BD4 AFA90018 */ sw $t1, 0x18($sp)
.L800D0BD8:
/* 0D17D8 800D0BD8 8FAE0028 */ lw $t6, 0x28($sp)
/* 0D17DC 800D0BDC 8DC80060 */ lw $t0, 0x60($t6)
/* 0D17E0 800D0BE0 AFA80018 */ sw $t0, 0x18($sp)
.L800D0BE4:
/* 0D17E4 800D0BE4 93AB0025 */ lbu $t3, 0x25($sp)
/* 0D17E8 800D0BE8 8FAC0018 */ lw $t4, 0x18($sp)
/* 0D17EC 800D0BEC 016C082A */ slt $at, $t3, $t4
/* 0D17F0 800D0BF0 10200007 */ beqz $at, .L800D0C10
/* 0D17F4 800D0BF4 00000000 */ nop
/* 0D17F8 800D0BF8 97AD0024 */ lhu $t5, 0x24($sp)
/* 0D17FC 800D0BFC 24010001 */ li $at, 1
/* 0D1800 800D0C00 11A10003 */ beq $t5, $at, .L800D0C10
/* 0D1804 800D0C04 00000000 */ nop
/* 0D1808 800D0C08 1000005B */ b .L800D0D78
/* 0D180C 800D0C0C 24020003 */ li $v0, 3
.L800D0C10:
/* 0D1810 800D0C10 27AF0024 */ addiu $t7, $sp, 0x24
/* 0D1814 800D0C14 95E10000 */ lhu $at, ($t7)
/* 0D1818 800D0C18 8FB8003C */ lw $t8, 0x3c($sp)
/* 0D181C 800D0C1C A7010000 */ sh $at, ($t8)
/* 0D1820 800D0C20 8FA90040 */ lw $t1, 0x40($sp)
/* 0D1824 800D0C24 24010001 */ li $at, 1
/* 0D1828 800D0C28 15210007 */ bne $t1, $at, .L800D0C48
/* 0D182C 800D0C2C 00000000 */ nop
/* 0D1830 800D0C30 93AB0033 */ lbu $t3, 0x33($sp)
/* 0D1834 800D0C34 8FA8002C */ lw $t0, 0x2c($sp)
/* 0D1838 800D0C38 240E0003 */ li $t6, 3
/* 0D183C 800D0C3C 000B6040 */ sll $t4, $t3, 1
/* 0D1840 800D0C40 010C6821 */ addu $t5, $t0, $t4
/* 0D1844 800D0C44 A5AE0000 */ sh $t6, ($t5)
.L800D0C48:
/* 0D1848 800D0C48 8FA40028 */ lw $a0, 0x28($sp)
/* 0D184C 800D0C4C 93A50033 */ lbu $a1, 0x33($sp)
/* 0D1850 800D0C50 8FA60034 */ lw $a2, 0x34($sp)
/* 0D1854 800D0C54 0C034362 */ jal __osBlockSum
/* 0D1858 800D0C58 93A7003B */ lbu $a3, 0x3b($sp)
/* 0D185C 800D0C5C AFA2001C */ sw $v0, 0x1c($sp)
/* 0D1860 800D0C60 8FB9001C */ lw $t9, 0x1c($sp)
/* 0D1864 800D0C64 13200003 */ beqz $t9, .L800D0C74
/* 0D1868 800D0C68 00000000 */ nop
/* 0D186C 800D0C6C 10000042 */ b .L800D0D78
/* 0D1870 800D0C70 03201025 */ move $v0, $t9
.L800D0C74:
/* 0D1874 800D0C74 97B80024 */ lhu $t8, 0x24($sp)
/* 0D1878 800D0C78 24010001 */ li $at, 1
/* 0D187C 800D0C7C 17010003 */ bne $t8, $at, .L800D0C8C
/* 0D1880 800D0C80 00000000 */ nop
/* 0D1884 800D0C84 1000003C */ b .L800D0D78
/* 0D1888 800D0C88 00001025 */ move $v0, $zero
.L800D0C8C:
/* 0D188C 800D0C8C 8FAA0028 */ lw $t2, 0x28($sp)
/* 0D1890 800D0C90 97AF0024 */ lhu $t7, 0x24($sp)
/* 0D1894 800D0C94 8D490060 */ lw $t1, 0x60($t2)
/* 0D1898 800D0C98 01E9082A */ slt $at, $t7, $t1
/* 0D189C 800D0C9C 14200025 */ bnez $at, .L800D0D34
/* 0D18A0 800D0CA0 00000000 */ nop
.L800D0CA4:
/* 0D18A4 800D0CA4 93AE0025 */ lbu $t6, 0x25($sp)
/* 0D18A8 800D0CA8 97AB0024 */ lhu $t3, 0x24($sp)
/* 0D18AC 800D0CAC 8FAC002C */ lw $t4, 0x2c($sp)
/* 0D18B0 800D0CB0 000E6840 */ sll $t5, $t6, 1
/* 0D18B4 800D0CB4 A7AB0020 */ sh $t3, 0x20($sp)
/* 0D18B8 800D0CB8 018DC821 */ addu $t9, $t4, $t5
/* 0D18BC 800D0CBC 97210000 */ lhu $at, ($t9)
/* 0D18C0 800D0CC0 27A80024 */ addiu $t0, $sp, 0x24
/* 0D18C4 800D0CC4 240F0003 */ li $t7, 3
/* 0D18C8 800D0CC8 A5010000 */ sh $at, ($t0)
/* 0D18CC 800D0CCC 93AB0021 */ lbu $t3, 0x21($sp)
/* 0D18D0 800D0CD0 8FA9002C */ lw $t1, 0x2c($sp)
/* 0D18D4 800D0CD4 000B7040 */ sll $t6, $t3, 1
/* 0D18D8 800D0CD8 012E6021 */ addu $t4, $t1, $t6
/* 0D18DC 800D0CDC A58F0000 */ sh $t7, ($t4)
/* 0D18E0 800D0CE0 93A7003B */ lbu $a3, 0x3b($sp)
/* 0D18E4 800D0CE4 8FA60034 */ lw $a2, 0x34($sp)
/* 0D18E8 800D0CE8 93A50021 */ lbu $a1, 0x21($sp)
/* 0D18EC 800D0CEC 0C034362 */ jal __osBlockSum
/* 0D18F0 800D0CF0 8FA40028 */ lw $a0, 0x28($sp)
/* 0D18F4 800D0CF4 AFA2001C */ sw $v0, 0x1c($sp)
/* 0D18F8 800D0CF8 8FAD001C */ lw $t5, 0x1c($sp)
/* 0D18FC 800D0CFC 11A00003 */ beqz $t5, .L800D0D0C
/* 0D1900 800D0D00 00000000 */ nop
/* 0D1904 800D0D04 1000001C */ b .L800D0D78
/* 0D1908 800D0D08 01A01025 */ move $v0, $t5
.L800D0D0C:
/* 0D190C 800D0D0C 93B80024 */ lbu $t8, 0x24($sp)
/* 0D1910 800D0D10 93A8003B */ lbu $t0, 0x3b($sp)
/* 0D1914 800D0D14 17080007 */ bne $t8, $t0, .L800D0D34
/* 0D1918 800D0D18 00000000 */ nop
/* 0D191C 800D0D1C 8FAA0028 */ lw $t2, 0x28($sp)
/* 0D1920 800D0D20 97B90024 */ lhu $t9, 0x24($sp)
/* 0D1924 800D0D24 8D4B0060 */ lw $t3, 0x60($t2)
/* 0D1928 800D0D28 032B082A */ slt $at, $t9, $t3
/* 0D192C 800D0D2C 1020FFDD */ beqz $at, .L800D0CA4
/* 0D1930 800D0D30 00000000 */ nop
.L800D0D34:
/* 0D1934 800D0D34 8FAE0028 */ lw $t6, 0x28($sp)
/* 0D1938 800D0D38 97A90024 */ lhu $t1, 0x24($sp)
/* 0D193C 800D0D3C 8DCF0060 */ lw $t7, 0x60($t6)
/* 0D1940 800D0D40 012F082A */ slt $at, $t1, $t7
/* 0D1944 800D0D44 14200007 */ bnez $at, .L800D0D64
/* 0D1948 800D0D48 00000000 */ nop
/* 0D194C 800D0D4C 93B80025 */ lbu $t8, 0x25($sp)
/* 0D1950 800D0D50 8FAD002C */ lw $t5, 0x2c($sp)
/* 0D1954 800D0D54 240C0003 */ li $t4, 3
/* 0D1958 800D0D58 00184040 */ sll $t0, $t8, 1
/* 0D195C 800D0D5C 01A85021 */ addu $t2, $t5, $t0
/* 0D1960 800D0D60 A54C0000 */ sh $t4, ($t2)
.L800D0D64:
/* 0D1964 800D0D64 27AB0024 */ addiu $t3, $sp, 0x24
/* 0D1968 800D0D68 95610000 */ lhu $at, ($t3)
/* 0D196C 800D0D6C 8FB9003C */ lw $t9, 0x3c($sp)
/* 0D1970 800D0D70 00001025 */ move $v0, $zero
/* 0D1974 800D0D74 A7210000 */ sh $at, ($t9)
.L800D0D78:
/* 0D1978 800D0D78 8FBF0014 */ lw $ra, 0x14($sp)
/* 0D197C 800D0D7C 27BD0028 */ addiu $sp, $sp, 0x28
/* 0D1980 800D0D80 03E00008 */ jr $ra
/* 0D1984 800D0D84 00000000 */ nop
@@ -1,203 +0,0 @@
glabel osPfsDeleteFile
/* 0D1470 800D0870 27BDFEA0 */ addiu $sp, $sp, -0x160
/* 0D1474 800D0874 AFA50164 */ sw $a1, 0x164($sp)
/* 0D1478 800D0878 97AE0166 */ lhu $t6, 0x166($sp)
/* 0D147C 800D087C AFBF0024 */ sw $ra, 0x24($sp)
/* 0D1480 800D0880 AFA40160 */ sw $a0, 0x160($sp)
/* 0D1484 800D0884 AFA60168 */ sw $a2, 0x168($sp)
/* 0D1488 800D0888 AFA7016C */ sw $a3, 0x16c($sp)
/* 0D148C 800D088C 11C00004 */ beqz $t6, .L800D08A0
/* 0D1490 800D0890 A7A00032 */ sh $zero, 0x32($sp)
/* 0D1494 800D0894 8FAF0168 */ lw $t7, 0x168($sp)
/* 0D1498 800D0898 15E00003 */ bnez $t7, .L800D08A8
/* 0D149C 800D089C 00000000 */ nop
.L800D08A0:
/* 0D14A0 800D08A0 100000A7 */ b .L800D0B40
/* 0D14A4 800D08A4 24020005 */ li $v0, 5
.L800D08A8:
/* 0D14A8 800D08A8 8FB80160 */ lw $t8, 0x160($sp)
/* 0D14AC 800D08AC 8F190000 */ lw $t9, ($t8)
/* 0D14B0 800D08B0 33280001 */ andi $t0, $t9, 1
/* 0D14B4 800D08B4 15000003 */ bnez $t0, .L800D08C4
/* 0D14B8 800D08B8 00000000 */ nop
/* 0D14BC 800D08BC 100000A0 */ b .L800D0B40
/* 0D14C0 800D08C0 24020005 */ li $v0, 5
.L800D08C4:
/* 0D14C4 800D08C4 0C0356F0 */ jal __osCheckId
/* 0D14C8 800D08C8 8FA40160 */ lw $a0, 0x160($sp)
/* 0D14CC 800D08CC 24010002 */ li $at, 2
/* 0D14D0 800D08D0 14410003 */ bne $v0, $at, .L800D08E0
/* 0D14D4 800D08D4 00000000 */ nop
/* 0D14D8 800D08D8 10000099 */ b .L800D0B40
/* 0D14DC 800D08DC 24020002 */ li $v0, 2
.L800D08E0:
/* 0D14E0 800D08E0 8FA90160 */ lw $t1, 0x160($sp)
/* 0D14E4 800D08E4 912A0065 */ lbu $t2, 0x65($t1)
/* 0D14E8 800D08E8 1140000A */ beqz $t2, .L800D0914
/* 0D14EC 800D08EC 00000000 */ nop
/* 0D14F0 800D08F0 A1200065 */ sb $zero, 0x65($t1)
/* 0D14F4 800D08F4 0C0357F7 */ jal __osPfsSelectBank
/* 0D14F8 800D08F8 8FA40160 */ lw $a0, 0x160($sp)
/* 0D14FC 800D08FC AFA20154 */ sw $v0, 0x154($sp)
/* 0D1500 800D0900 8FAB0154 */ lw $t3, 0x154($sp)
/* 0D1504 800D0904 11600003 */ beqz $t3, .L800D0914
/* 0D1508 800D0908 00000000 */ nop
/* 0D150C 800D090C 1000008C */ b .L800D0B40
/* 0D1510 800D0910 01601025 */ move $v0, $t3
.L800D0914:
/* 0D1514 800D0914 8FAC0170 */ lw $t4, 0x170($sp)
/* 0D1518 800D0918 27AD015C */ addiu $t5, $sp, 0x15c
/* 0D151C 800D091C AFAD0014 */ sw $t5, 0x14($sp)
/* 0D1520 800D0920 8FA40160 */ lw $a0, 0x160($sp)
/* 0D1524 800D0924 97A50166 */ lhu $a1, 0x166($sp)
/* 0D1528 800D0928 8FA60168 */ lw $a2, 0x168($sp)
/* 0D152C 800D092C 8FA7016C */ lw $a3, 0x16c($sp)
/* 0D1530 800D0930 0C0343A0 */ jal osPfsFindFile
/* 0D1534 800D0934 AFAC0010 */ sw $t4, 0x10($sp)
/* 0D1538 800D0938 AFA20154 */ sw $v0, 0x154($sp)
/* 0D153C 800D093C 8FAE0154 */ lw $t6, 0x154($sp)
/* 0D1540 800D0940 11C00003 */ beqz $t6, .L800D0950
/* 0D1544 800D0944 00000000 */ nop
/* 0D1548 800D0948 1000007D */ b .L800D0B40
/* 0D154C 800D094C 01C01025 */ move $v0, $t6
.L800D0950:
/* 0D1550 800D0950 8FAF015C */ lw $t7, 0x15c($sp)
/* 0D1554 800D0954 2401FFFF */ li $at, -1
/* 0D1558 800D0958 15E10003 */ bne $t7, $at, .L800D0968
/* 0D155C 800D095C 00000000 */ nop
/* 0D1560 800D0960 10000077 */ b .L800D0B40
/* 0D1564 800D0964 24020005 */ li $v0, 5
.L800D0968:
/* 0D1568 800D0968 8FB80160 */ lw $t8, 0x160($sp)
/* 0D156C 800D096C 8FA8015C */ lw $t0, 0x15c($sp)
/* 0D1570 800D0970 27A70034 */ addiu $a3, $sp, 0x34
/* 0D1574 800D0974 8F19005C */ lw $t9, 0x5c($t8)
/* 0D1578 800D0978 8F040004 */ lw $a0, 4($t8)
/* 0D157C 800D097C 8F050008 */ lw $a1, 8($t8)
/* 0D1580 800D0980 0C033728 */ jal __osContRamRead
/* 0D1584 800D0984 03283021 */ addu $a2, $t9, $t0
/* 0D1588 800D0988 AFA20154 */ sw $v0, 0x154($sp)
/* 0D158C 800D098C 8FAA0154 */ lw $t2, 0x154($sp)
/* 0D1590 800D0990 11400003 */ beqz $t2, .L800D09A0
/* 0D1594 800D0994 00000000 */ nop
/* 0D1598 800D0998 10000069 */ b .L800D0B40
/* 0D159C 800D099C 01401025 */ move $v0, $t2
.L800D09A0:
/* 0D15A0 800D09A0 93A9003B */ lbu $t1, 0x3b($sp)
/* 0D15A4 800D09A4 93AB003A */ lbu $t3, 0x3a($sp)
/* 0D15A8 800D09A8 8FAC0160 */ lw $t4, 0x160($sp)
/* 0D15AC 800D09AC A3A9002F */ sb $t1, 0x2f($sp)
/* 0D15B0 800D09B0 A3AB002E */ sb $t3, 0x2e($sp)
/* 0D15B4 800D09B4 918D0064 */ lbu $t5, 0x64($t4)
/* 0D15B8 800D09B8 016D082A */ slt $at, $t3, $t5
/* 0D15BC 800D09BC 10200036 */ beqz $at, .L800D0A98
/* 0D15C0 800D09C0 00000000 */ nop
.L800D09C4:
/* 0D15C4 800D09C4 8FA40160 */ lw $a0, 0x160($sp)
/* 0D15C8 800D09C8 27A50054 */ addiu $a1, $sp, 0x54
/* 0D15CC 800D09CC 00003025 */ move $a2, $zero
/* 0D15D0 800D09D0 0C03572F */ jal __osPfsRWInode
/* 0D15D4 800D09D4 93A7002E */ lbu $a3, 0x2e($sp)
/* 0D15D8 800D09D8 AFA20154 */ sw $v0, 0x154($sp)
/* 0D15DC 800D09DC 8FAE0154 */ lw $t6, 0x154($sp)
/* 0D15E0 800D09E0 11C00003 */ beqz $t6, .L800D09F0
/* 0D15E4 800D09E4 00000000 */ nop
/* 0D15E8 800D09E8 10000055 */ b .L800D0B40
/* 0D15EC 800D09EC 01C01025 */ move $v0, $t6
.L800D09F0:
/* 0D15F0 800D09F0 93AF002E */ lbu $t7, 0x2e($sp)
/* 0D15F4 800D09F4 27B80030 */ addiu $t8, $sp, 0x30
/* 0D15F8 800D09F8 24190001 */ li $t9, 1
/* 0D15FC 800D09FC AFB90018 */ sw $t9, 0x18($sp)
/* 0D1600 800D0A00 AFB80014 */ sw $t8, 0x14($sp)
/* 0D1604 800D0A04 8FA40160 */ lw $a0, 0x160($sp)
/* 0D1608 800D0A08 27A50054 */ addiu $a1, $sp, 0x54
/* 0D160C 800D0A0C 93A6002F */ lbu $a2, 0x2f($sp)
/* 0D1610 800D0A10 27A70032 */ addiu $a3, $sp, 0x32
/* 0D1614 800D0A14 0C0342D4 */ jal __osPfsReleasePages
/* 0D1618 800D0A18 AFAF0010 */ sw $t7, 0x10($sp)
/* 0D161C 800D0A1C AFA20154 */ sw $v0, 0x154($sp)
/* 0D1620 800D0A20 8FA80154 */ lw $t0, 0x154($sp)
/* 0D1624 800D0A24 11000003 */ beqz $t0, .L800D0A34
/* 0D1628 800D0A28 00000000 */ nop
/* 0D162C 800D0A2C 10000044 */ b .L800D0B40
/* 0D1630 800D0A30 01001025 */ move $v0, $t0
.L800D0A34:
/* 0D1634 800D0A34 8FA40160 */ lw $a0, 0x160($sp)
/* 0D1638 800D0A38 27A50054 */ addiu $a1, $sp, 0x54
/* 0D163C 800D0A3C 24060001 */ li $a2, 1
/* 0D1640 800D0A40 0C03572F */ jal __osPfsRWInode
/* 0D1644 800D0A44 93A7002E */ lbu $a3, 0x2e($sp)
/* 0D1648 800D0A48 AFA20154 */ sw $v0, 0x154($sp)
/* 0D164C 800D0A4C 8FAA0154 */ lw $t2, 0x154($sp)
/* 0D1650 800D0A50 11400003 */ beqz $t2, .L800D0A60
/* 0D1654 800D0A54 00000000 */ nop
/* 0D1658 800D0A58 10000039 */ b .L800D0B40
/* 0D165C 800D0A5C 01401025 */ move $v0, $t2
.L800D0A60:
/* 0D1660 800D0A60 97A90030 */ lhu $t1, 0x30($sp)
/* 0D1664 800D0A64 24010001 */ li $at, 1
/* 0D1668 800D0A68 1121000B */ beq $t1, $at, .L800D0A98
/* 0D166C 800D0A6C 00000000 */ nop
/* 0D1670 800D0A70 93AC0030 */ lbu $t4, 0x30($sp)
/* 0D1674 800D0A74 93AB0031 */ lbu $t3, 0x31($sp)
/* 0D1678 800D0A78 8FAE0160 */ lw $t6, 0x160($sp)
/* 0D167C 800D0A7C A3AC002E */ sb $t4, 0x2e($sp)
/* 0D1680 800D0A80 A3AB002F */ sb $t3, 0x2f($sp)
/* 0D1684 800D0A84 93AD002E */ lbu $t5, 0x2e($sp)
/* 0D1688 800D0A88 91CF0064 */ lbu $t7, 0x64($t6)
/* 0D168C 800D0A8C 01AF082A */ slt $at, $t5, $t7
/* 0D1690 800D0A90 1420FFCC */ bnez $at, .L800D09C4
/* 0D1694 800D0A94 00000000 */ nop
.L800D0A98:
/* 0D1698 800D0A98 8FB90160 */ lw $t9, 0x160($sp)
/* 0D169C 800D0A9C 93B8002E */ lbu $t8, 0x2e($sp)
/* 0D16A0 800D0AA0 93280064 */ lbu $t0, 0x64($t9)
/* 0D16A4 800D0AA4 0308082A */ slt $at, $t8, $t0
/* 0D16A8 800D0AA8 14200003 */ bnez $at, .L800D0AB8
/* 0D16AC 800D0AAC 00000000 */ nop
/* 0D16B0 800D0AB0 10000023 */ b .L800D0B40
/* 0D16B4 800D0AB4 24020003 */ li $v0, 3
.L800D0AB8:
/* 0D16B8 800D0AB8 AFA00034 */ sw $zero, 0x34($sp)
/* 0D16BC 800D0ABC A7A00038 */ sh $zero, 0x38($sp)
/* 0D16C0 800D0AC0 A7A0003A */ sh $zero, 0x3a($sp)
/* 0D16C4 800D0AC4 A7A0003E */ sh $zero, 0x3e($sp)
/* 0D16C8 800D0AC8 AFA00158 */ sw $zero, 0x158($sp)
.L800D0ACC:
/* 0D16CC 800D0ACC 8FAA0158 */ lw $t2, 0x158($sp)
/* 0D16D0 800D0AD0 03AA4821 */ addu $t1, $sp, $t2
/* 0D16D4 800D0AD4 A1200044 */ sb $zero, 0x44($t1)
/* 0D16D8 800D0AD8 8FAC0158 */ lw $t4, 0x158($sp)
/* 0D16DC 800D0ADC 258B0001 */ addiu $t3, $t4, 1
/* 0D16E0 800D0AE0 29610010 */ slti $at, $t3, 0x10
/* 0D16E4 800D0AE4 1420FFF9 */ bnez $at, .L800D0ACC
/* 0D16E8 800D0AE8 AFAB0158 */ sw $t3, 0x158($sp)
/* 0D16EC 800D0AEC AFA00158 */ sw $zero, 0x158($sp)
.L800D0AF0:
/* 0D16F0 800D0AF0 8FAE0158 */ lw $t6, 0x158($sp)
/* 0D16F4 800D0AF4 03AE6821 */ addu $t5, $sp, $t6
/* 0D16F8 800D0AF8 A1A00040 */ sb $zero, 0x40($t5)
/* 0D16FC 800D0AFC 8FAF0158 */ lw $t7, 0x158($sp)
/* 0D1700 800D0B00 25F90001 */ addiu $t9, $t7, 1
/* 0D1704 800D0B04 2B210004 */ slti $at, $t9, 4
/* 0D1708 800D0B08 1420FFF9 */ bnez $at, .L800D0AF0
/* 0D170C 800D0B0C AFB90158 */ sw $t9, 0x158($sp)
/* 0D1710 800D0B10 8FB80160 */ lw $t8, 0x160($sp)
/* 0D1714 800D0B14 A3A0003C */ sb $zero, 0x3c($sp)
/* 0D1718 800D0B18 8FAA015C */ lw $t2, 0x15c($sp)
/* 0D171C 800D0B1C 8F08005C */ lw $t0, 0x5c($t8)
/* 0D1720 800D0B20 8F050008 */ lw $a1, 8($t8)
/* 0D1724 800D0B24 8F040004 */ lw $a0, 4($t8)
/* 0D1728 800D0B28 AFA00010 */ sw $zero, 0x10($sp)
/* 0D172C 800D0B2C 27A70034 */ addiu $a3, $sp, 0x34
/* 0D1730 800D0B30 0C03363C */ jal __osContRamWrite
/* 0D1734 800D0B34 010A3021 */ addu $a2, $t0, $t2
/* 0D1738 800D0B38 AFA20154 */ sw $v0, 0x154($sp)
/* 0D173C 800D0B3C 8FA20154 */ lw $v0, 0x154($sp)
.L800D0B40:
/* 0D1740 800D0B40 8FBF0024 */ lw $ra, 0x24($sp)
/* 0D1744 800D0B44 27BD0160 */ addiu $sp, $sp, 0x160
/* 0D1748 800D0B48 03E00008 */ jr $ra
/* 0D174C 800D0B4C 00000000 */ nop
+134
View File
@@ -0,0 +1,134 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800D0870 */
#include "libultra_internal.h"
#include "controller.h"
s32 osPfsDeleteFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name,
u8 *ext_name)
{
s32 file_no;
int k;
s32 ret;
__OSInode inode;
__OSDir dir;
u16 sum;
__OSInodeUnit last_page;
u8 startpage;
u8 bank;
sum = 0;
if (company_code == 0 || game_code == 0)
return PFS_ERR_INVALID;
PFS_CHECK_STATUS;
PFS_CHECK_ID;
SET_ACTIVEBANK_TO_ZERO;
ERRCK(osPfsFindFile(pfs, company_code, game_code, game_name, ext_name, &file_no));
if (file_no == -1)
return PFS_ERR_INVALID;
ERRCK(__osContRamRead(pfs->queue, pfs->channel, pfs->dir_table + file_no, (u8*)&dir));
startpage = dir.start_page.inode_t.page;
for (bank = dir.start_page.inode_t.bank; bank < pfs->banks;)
{
ERRCK(__osPfsRWInode(pfs, &inode, OS_READ, bank));
ERRCK(__osPfsReleasePages(pfs, &inode, startpage, &sum, bank, &last_page, 1)); //TODO: magic constant
ERRCK(__osPfsRWInode(pfs, &inode, OS_WRITE, bank));
if (last_page.ipage == 1)
break;
bank = last_page.inode_t.bank;
startpage = last_page.inode_t.page;
}
if (bank >= pfs->banks)
return PFS_ERR_INCONSISTENT;
dir.game_code = 0;
dir.company_code = 0;
dir.start_page.ipage = 0;
dir.data_sum = 0;
for (k = 0; k < ARRLEN(dir.game_name); k++)
{
dir.game_name[k] = 0;
}
for (k = 0; k < ARRLEN(dir.ext_name); k++)
{
dir.ext_name[k] = 0;
}
dir.status = DIR_STATUS_EMPTY;
ret = __osContRamWrite(pfs->queue, pfs->channel, pfs->dir_table + file_no, (u8*)&dir, FALSE);
return ret;
}
s32 __osPfsReleasePages(OSPfs *pfs, __OSInode *inode, u8 start_page, u16 *sum, u8 bank, __OSInodeUnit *last_page, int flag)
{
__OSInodeUnit next_page;
__OSInodeUnit old_page;
s32 ret;
int offset;
ret = 0;
next_page = inode->inode_page[start_page];
if (next_page.ipage != 1)
{
if (next_page.inode_t.bank > 0)
offset = 1;
else
offset = pfs->inode_start_page;
}
else
{
if (bank > 0)
offset = 1;
else
offset = pfs->inode_start_page;
}
if (next_page.inode_t.page < offset && next_page.ipage != 1)
return PFS_ERR_INCONSISTENT;
*last_page = next_page;
if (flag == 1) //TODO: magic number
inode->inode_page[start_page].ipage = PFS_PAGE_NOT_USED;
ERRCK(__osBlockSum(pfs, start_page, sum, bank));
if (next_page.ipage == 1)
return 0;
while (next_page.ipage >= pfs->inode_start_page)
{
old_page = next_page;
next_page = inode->inode_page[next_page.inode_t.page];
inode->inode_page[old_page.inode_t.page].ipage = PFS_PAGE_NOT_USED;
ERRCK(__osBlockSum(pfs, old_page.inode_t.page, sum, bank));
if (next_page.inode_t.bank != bank)
break;
}
//Removed the second check from libreultra to match
if (next_page.ipage >= pfs->inode_start_page /* && next_page.inode_t.bank == bank */)
inode->inode_page[next_page.inode_t.page].ipage = PFS_PAGE_NOT_USED;
*last_page = next_page;
return 0;
}
s32 __osBlockSum(OSPfs *pfs, u8 page_no, u16 *sum, u8 bank)
{
int i;
s32 ret;
u8 data[32];
ret = 0;
pfs->activebank = bank;
ERRCK(__osPfsSelectBank(pfs));
for (i = 0; i < PFS_ONE_PAGE; i++)
{
ret = __osContRamRead(pfs->queue, pfs->channel, page_no * PFS_ONE_PAGE + i, data);
if (ret != 0)
{
pfs->activebank = 0;
__osPfsSelectBank(pfs);
return ret;
}
*sum = *sum + __osSumcalc(data, sizeof(data));
}
pfs->activebank = 0;
ret = __osPfsSelectBank(pfs);
return ret;
}
@@ -61,6 +61,3 @@ s32 osPfsFileState(OSPfs *pfs, s32 file_no, OSPfsState *state)
state->ext_name[j] = dir.ext_name[j];
return 0;
}
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D1180/osPfsDeleteFile.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D1180/__osPfsReleasePages.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D1180/__osBlockSum.s")