From 7c8649f5aac24f3ee5a3ad0b0d7391bc975adca2 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 9 Oct 2020 17:18:03 +1000 Subject: [PATCH] Decompile func0f167350 --- src/game/data/data_020df0.c | 22 +- src/game/game_0b3350.c | 8 +- src/game/game_166e40.c | 527 ++++------------------------ src/gvars/gvars.c | 12 +- src/include/game/data/data_020df0.h | 2 + src/include/game/game_166e40.h | 2 +- src/include/gvars/gvars.h | 9 +- src/include/lib/lib_12dc0.h | 2 +- src/include/lib/lib_13130.h | 2 +- src/include/types.h | 4 +- 10 files changed, 102 insertions(+), 488 deletions(-) diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 6f8b2ef1d..4531f55d1 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -9572,16 +9572,22 @@ void *filetable[] = { /*0x07dc*/ &_file_Acarrbye02M, /*0x07dd*/ &_file_Asaucerexp1M, /*0x07de*/ &_filenamesSegmentRomStart, - /*0x07df*/ NULL, }; -u32 var80083fe0 = 0x00010000; -u32 var80083fe4 = 0x00018000; -u32 var80083fe8 = 0x00020000; -u32 var80083fec = 0x00028000; -u32 var80083ff0 = 0x00010000; -u32 var80083ff4 = 0x00018000; -u32 var80083ff8 = 0x00020000; +u32 g_GfxSizesByPlayerCount[] = { + 0x00000000, + 0x00010000, + 0x00018000, + 0x00020000, +}; + +u32 g_VtxSizesByPlayerCount[] = { + 0x00028000, + 0x00010000, + 0x00018000, + 0x00020000, +}; + u32 var80083ffc = 0x00028000; u32 var80084000 = 0x00000000; u32 var80084004 = 0x00000001; diff --git a/src/game/game_0b3350.c b/src/game/game_0b3350.c index 0b1a700ea..0c8b01c8c 100644 --- a/src/game/game_0b3350.c +++ b/src/game/game_0b3350.c @@ -1879,8 +1879,8 @@ GLOBAL_ASM( glabel func0f0b5050 /* f0b5050: 3c02800b */ lui $v0,%hi(var800aa5a0) /* f0b5054: 9042a5a0 */ lbu $v0,%lo(var800aa5a0)($v0) -/* f0b5058: 3c03800b */ lui $v1,%hi(var800aa590) -/* f0b505c: 2463a590 */ addiu $v1,$v1,%lo(var800aa590) +/* f0b5058: 3c03800b */ lui $v1,%hi(g_VtxBuffers) +/* f0b505c: 2463a590 */ addiu $v1,$v1,%lo(g_VtxBuffers) /* f0b5060: 00027080 */ sll $t6,$v0,0x2 /* f0b5064: 27bdffb0 */ addiu $sp,$sp,-80 /* f0b5068: 006e7821 */ addu $t7,$v1,$t6 @@ -2122,8 +2122,8 @@ GLOBAL_ASM( glabel func0f0b53a4 /* f0b53a4: 3c02800b */ lui $v0,%hi(var800aa5a0) /* f0b53a8: 9042a5a0 */ lbu $v0,%lo(var800aa5a0)($v0) -/* f0b53ac: 3c03800b */ lui $v1,%hi(var800aa590) -/* f0b53b0: 2463a590 */ addiu $v1,$v1,%lo(var800aa590) +/* f0b53ac: 3c03800b */ lui $v1,%hi(g_VtxBuffers) +/* f0b53b0: 2463a590 */ addiu $v1,$v1,%lo(g_VtxBuffers) /* f0b53b4: 00027080 */ sll $t6,$v0,0x2 /* f0b53b8: 27bdffb0 */ addiu $sp,$sp,-80 /* f0b53bc: 006e7821 */ addu $t7,$v1,$t6 diff --git a/src/game/game_166e40.c b/src/game/game_166e40.c index 4d20aba24..d13401dc6 100644 --- a/src/game/game_166e40.c +++ b/src/game/game_166e40.c @@ -17,21 +17,6 @@ #include "lib/lib_13130.h" #include "types.h" -const char var7f1b76f0[] = "-mgfx"; -const char var7f1b76f8[] = "-mgfx"; -const char var7f1b7700[] = "-mgfxtra"; -const char var7f1b770c[] = "-mgfxtra"; -const char var7f1b7718[] = "-mvtx"; -const char var7f1b7720[] = "-mvtx"; -const char var7f1b7728[] = ""; -const char var7f1b772c[] = ""; -const char var7f1b7730[] = "fr: %d\n"; -const char var7f1b7738[] = "cutsceneframe: %d\n"; -const char var7f1b774c[] = "pos:%s%s %.2f %.2f %.2f\n"; - -const u32 var7f1b7768[] = {0x00000000}; -const u32 var7f1b776c[] = {0x00000000}; - void *fileGetRomAddress(s32 filenum) { return filetable[filenum]; @@ -434,455 +419,79 @@ void func0f167330(void) func0f1672f0(5); } -GLOBAL_ASM( -glabel func0f167350 -/* f167350: 27bdffc8 */ addiu $sp,$sp,-56 -/* f167354: afbf0014 */ sw $ra,0x14($sp) -/* f167358: 3c057f1b */ lui $a1,%hi(var7f1b76f0) -/* f16735c: 24a576f0 */ addiu $a1,$a1,%lo(var7f1b76f0) -/* f167360: 0c004c04 */ jal func00013010 -/* f167364: 24040001 */ addiu $a0,$zero,0x1 -/* f167368: 10400061 */ beqz $v0,.L0f1674f0 -/* f16736c: 3c057f1b */ lui $a1,%hi(var7f1b76f8) -/* f167370: afa0002c */ sw $zero,0x2c($sp) -/* f167374: 24a576f8 */ addiu $a1,$a1,%lo(var7f1b76f8) -/* f167378: 0c004c04 */ jal func00013010 -/* f16737c: 24040001 */ addiu $a0,$zero,0x1 -/* f167380: 00402025 */ or $a0,$v0,$zero -/* f167384: 00002825 */ or $a1,$zero,$zero -/* f167388: 0c004d02 */ jal func00013408 -/* f16738c: 00003025 */ or $a2,$zero,$zero -/* f167390: 00027280 */ sll $t6,$v0,0xa -/* f167394: 3c057f1b */ lui $a1,%hi(var7f1b7700) -/* f167398: afae0030 */ sw $t6,0x30($sp) -/* f16739c: 24a57700 */ addiu $a1,$a1,%lo(var7f1b7700) -/* f1673a0: 0c004c04 */ jal func00013010 -/* f1673a4: 24040001 */ addiu $a0,$zero,0x1 -/* f1673a8: 1040002e */ beqz $v0,.L0f167464 -/* f1673ac: 3c0a800a */ lui $t2,%hi(g_Vars) -/* f1673b0: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) -/* f1673b4: 8d4f0298 */ lw $t7,0x298($t2) -/* f1673b8: 24010002 */ addiu $at,$zero,0x2 -/* f1673bc: 05e30005 */ bgezl $t7,.L0f1673d4 -/* f1673c0: 8d59006c */ lw $t9,0x6c($t2) -/* f1673c4: 8d58029c */ lw $t8,0x29c($t2) -/* f1673c8: 07000026 */ bltz $t8,.L0f167464 -/* f1673cc: 00000000 */ nop -/* f1673d0: 8d59006c */ lw $t9,0x6c($t2) -.L0f1673d4: -/* f1673d4: 00004025 */ or $t0,$zero,$zero -/* f1673d8: 00003825 */ or $a3,$zero,$zero -/* f1673dc: 13200003 */ beqz $t9,.L0f1673ec -/* f1673e0: 00001825 */ or $v1,$zero,$zero -/* f1673e4: 10000001 */ b .L0f1673ec -/* f1673e8: 24080001 */ addiu $t0,$zero,0x1 -.L0f1673ec: -/* f1673ec: 8d4d0068 */ lw $t5,0x68($t2) -/* f1673f0: 00001025 */ or $v0,$zero,$zero -/* f1673f4: 24040001 */ addiu $a0,$zero,0x1 -/* f1673f8: 11a00003 */ beqz $t5,.L0f167408 -/* f1673fc: 3c057f1b */ lui $a1,%hi(var7f1b770c) -/* f167400: 10000001 */ b .L0f167408 -/* f167404: 24070001 */ addiu $a3,$zero,0x1 -.L0f167408: -/* f167408: 8d4e0064 */ lw $t6,0x64($t2) -/* f16740c: 11c00003 */ beqz $t6,.L0f16741c -/* f167410: 00000000 */ nop -/* f167414: 10000001 */ b .L0f16741c -/* f167418: 24030001 */ addiu $v1,$zero,0x1 -.L0f16741c: -/* f16741c: 8d4f0070 */ lw $t7,0x70($t2) -/* f167420: 11e00003 */ beqz $t7,.L0f167430 -/* f167424: 00000000 */ nop -/* f167428: 10000001 */ b .L0f167430 -/* f16742c: 24020001 */ addiu $v0,$zero,0x1 -.L0f167430: -/* f167430: 0043c021 */ addu $t8,$v0,$v1 -/* f167434: 0307c821 */ addu $t9,$t8,$a3 -/* f167438: 03286821 */ addu $t5,$t9,$t0 -/* f16743c: 15a10009 */ bne $t5,$at,.L0f167464 -/* f167440: 00000000 */ nop -/* f167444: 0c004c04 */ jal func00013010 -/* f167448: 24a5770c */ addiu $a1,$a1,%lo(var7f1b770c) -/* f16744c: 00402025 */ or $a0,$v0,$zero -/* f167450: 00002825 */ or $a1,$zero,$zero -/* f167454: 0c004d02 */ jal func00013408 -/* f167458: 00003025 */ or $a2,$zero,$zero -/* f16745c: 00027280 */ sll $t6,$v0,0xa -/* f167460: afae002c */ sw $t6,0x2c($sp) -.L0f167464: -/* f167464: 3c0a800a */ lui $t2,%hi(g_Vars) -/* f167468: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) -/* f16746c: 8d4f0070 */ lw $t7,0x70($t2) -/* f167470: 8d44006c */ lw $a0,0x6c($t2) -/* f167474: 8d450068 */ lw $a1,0x68($t2) -/* f167478: 11e00003 */ beqz $t7,.L0f167488 -/* f16747c: 8d490064 */ lw $t1,0x64($t2) -/* f167480: 10000002 */ b .L0f16748c -/* f167484: 24080001 */ addiu $t0,$zero,0x1 -.L0f167488: -/* f167488: 00004025 */ or $t0,$zero,$zero -.L0f16748c: -/* f16748c: 10800003 */ beqz $a0,.L0f16749c -/* f167490: 8fb80030 */ lw $t8,0x30($sp) -/* f167494: 10000002 */ b .L0f1674a0 -/* f167498: 24070001 */ addiu $a3,$zero,0x1 -.L0f16749c: -/* f16749c: 00003825 */ or $a3,$zero,$zero -.L0f1674a0: -/* f1674a0: 10a00003 */ beqz $a1,.L0f1674b0 -/* f1674a4: 8fb9002c */ lw $t9,0x2c($sp) -/* f1674a8: 10000002 */ b .L0f1674b4 -/* f1674ac: 24030001 */ addiu $v1,$zero,0x1 -.L0f1674b0: -/* f1674b0: 00001825 */ or $v1,$zero,$zero -.L0f1674b4: -/* f1674b4: 11200003 */ beqz $t1,.L0f1674c4 -/* f1674b8: 03196821 */ addu $t5,$t8,$t9 -/* f1674bc: 10000002 */ b .L0f1674c8 -/* f1674c0: 24020001 */ addiu $v0,$zero,0x1 -.L0f1674c4: -/* f1674c4: 00001025 */ or $v0,$zero,$zero -.L0f1674c8: -/* f1674c8: 00027080 */ sll $t6,$v0,0x2 -/* f1674cc: 00037880 */ sll $t7,$v1,0x2 -/* f1674d0: 01cfc021 */ addu $t8,$t6,$t7 -/* f1674d4: 0007c880 */ sll $t9,$a3,0x2 -/* f1674d8: 03197021 */ addu $t6,$t8,$t9 -/* f1674dc: 00087880 */ sll $t7,$t0,0x2 -/* f1674e0: 01cfc021 */ addu $t8,$t6,$t7 -/* f1674e4: 3c018008 */ lui $at,%hi(filetable+0x1f7c) -/* f1674e8: 00380821 */ addu $at,$at,$t8 -/* f1674ec: ac2d3fdc */ sw $t5,%lo(filetable+0x1f7c)($at) -.L0f1674f0: -/* f1674f0: 3c057f1b */ lui $a1,%hi(var7f1b7718) -/* f1674f4: 24a57718 */ addiu $a1,$a1,%lo(var7f1b7718) -/* f1674f8: 0c004c04 */ jal func00013010 -/* f1674fc: 24040001 */ addiu $a0,$zero,0x1 -/* f167500: 3c0a800a */ lui $t2,%hi(g_Vars) -/* f167504: 10400034 */ beqz $v0,.L0f1675d8 -/* f167508: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) -/* f16750c: 8d590070 */ lw $t9,0x70($t2) -/* f167510: 3c057f1b */ lui $a1,%hi(var7f1b7720) -/* f167514: 24a57720 */ addiu $a1,$a1,%lo(var7f1b7720) -/* f167518: 13200003 */ beqz $t9,.L0f167528 -/* f16751c: 24040001 */ addiu $a0,$zero,0x1 -/* f167520: 10000002 */ b .L0f16752c -/* f167524: 24090001 */ addiu $t1,$zero,0x1 -.L0f167528: -/* f167528: 00004825 */ or $t1,$zero,$zero -.L0f16752c: -/* f16752c: 8d4e006c */ lw $t6,0x6c($t2) -/* f167530: 00004025 */ or $t0,$zero,$zero -/* f167534: 00003825 */ or $a3,$zero,$zero -/* f167538: 11c00003 */ beqz $t6,.L0f167548 -/* f16753c: 00001825 */ or $v1,$zero,$zero -/* f167540: 10000001 */ b .L0f167548 -/* f167544: 24080001 */ addiu $t0,$zero,0x1 -.L0f167548: -/* f167548: 8d4f0068 */ lw $t7,0x68($t2) -/* f16754c: 11e00003 */ beqz $t7,.L0f16755c -/* f167550: 00000000 */ nop -/* f167554: 10000001 */ b .L0f16755c -/* f167558: 24070001 */ addiu $a3,$zero,0x1 -.L0f16755c: -/* f16755c: 8d4d0064 */ lw $t5,0x64($t2) -/* f167560: 11a00003 */ beqz $t5,.L0f167570 -/* f167564: 00000000 */ nop -/* f167568: 10000001 */ b .L0f167570 -/* f16756c: 24030001 */ addiu $v1,$zero,0x1 -.L0f167570: -/* f167570: afa30024 */ sw $v1,0x24($sp) -/* f167574: afa70020 */ sw $a3,0x20($sp) -/* f167578: afa8001c */ sw $t0,0x1c($sp) -/* f16757c: 0c004c04 */ jal func00013010 -/* f167580: afa90018 */ sw $t1,0x18($sp) -/* f167584: 00402025 */ or $a0,$v0,$zero -/* f167588: 00002825 */ or $a1,$zero,$zero -/* f16758c: 0c004d02 */ jal func00013408 -/* f167590: 00003025 */ or $a2,$zero,$zero -/* f167594: 8fa30024 */ lw $v1,0x24($sp) -/* f167598: 8fa70020 */ lw $a3,0x20($sp) -/* f16759c: 8fa8001c */ lw $t0,0x1c($sp) -/* f1675a0: 8fa90018 */ lw $t1,0x18($sp) -/* f1675a4: 0003c880 */ sll $t9,$v1,0x2 -/* f1675a8: 00077080 */ sll $t6,$a3,0x2 -/* f1675ac: 032e7821 */ addu $t7,$t9,$t6 -/* f1675b0: 00086880 */ sll $t5,$t0,0x2 -/* f1675b4: 01edc821 */ addu $t9,$t7,$t5 -/* f1675b8: 00097080 */ sll $t6,$t1,0x2 -/* f1675bc: 032e7821 */ addu $t7,$t9,$t6 -/* f1675c0: 3c018008 */ lui $at,%hi(var80083fec) -/* f1675c4: 002f0821 */ addu $at,$at,$t7 -/* f1675c8: 3c0a800a */ lui $t2,%hi(g_Vars) -/* f1675cc: 0002c280 */ sll $t8,$v0,0xa -/* f1675d0: ac383fec */ sw $t8,%lo(var80083fec)($at) -/* f1675d4: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) -.L0f1675d8: -/* f1675d8: 8d4d006c */ lw $t5,0x6c($t2) -/* f1675dc: 3c048008 */ lui $a0,%hi(filetable+0x1f7c) -/* f1675e0: 51a00004 */ beqzl $t5,.L0f1675f4 -/* f1675e4: 00004025 */ or $t0,$zero,$zero -/* f1675e8: 10000002 */ b .L0f1675f4 -/* f1675ec: 24080001 */ addiu $t0,$zero,0x1 -/* f1675f0: 00004025 */ or $t0,$zero,$zero -.L0f1675f4: -/* f1675f4: 8d590068 */ lw $t9,0x68($t2) -/* f1675f8: 53200004 */ beqzl $t9,.L0f16760c -/* f1675fc: 00003825 */ or $a3,$zero,$zero -/* f167600: 10000002 */ b .L0f16760c -/* f167604: 24070001 */ addiu $a3,$zero,0x1 -/* f167608: 00003825 */ or $a3,$zero,$zero -.L0f16760c: -/* f16760c: 8d4e0064 */ lw $t6,0x64($t2) -/* f167610: 51c00004 */ beqzl $t6,.L0f167624 -/* f167614: 00001825 */ or $v1,$zero,$zero -/* f167618: 10000002 */ b .L0f167624 -/* f16761c: 24030001 */ addiu $v1,$zero,0x1 -/* f167620: 00001825 */ or $v1,$zero,$zero -.L0f167624: -/* f167624: 8d580070 */ lw $t8,0x70($t2) -/* f167628: 00036880 */ sll $t5,$v1,0x2 -/* f16762c: 00077080 */ sll $t6,$a3,0x2 -/* f167630: 53000004 */ beqzl $t8,.L0f167644 -/* f167634: 00001025 */ or $v0,$zero,$zero -/* f167638: 10000002 */ b .L0f167644 -/* f16763c: 24020001 */ addiu $v0,$zero,0x1 -/* f167640: 00001025 */ or $v0,$zero,$zero -.L0f167644: -/* f167644: 00027880 */ sll $t7,$v0,0x2 -/* f167648: 01edc821 */ addu $t9,$t7,$t5 -/* f16764c: 032ec021 */ addu $t8,$t9,$t6 -/* f167650: 00087880 */ sll $t7,$t0,0x2 -/* f167654: 030f6821 */ addu $t5,$t8,$t7 -/* f167658: 008d2021 */ addu $a0,$a0,$t5 -/* f16765c: 8c843fdc */ lw $a0,%lo(filetable+0x1f7c)($a0) -/* f167660: 24050004 */ addiu $a1,$zero,0x4 -/* f167664: 0004c840 */ sll $t9,$a0,0x1 -/* f167668: 0c0048f2 */ jal malloc -/* f16766c: 03202025 */ or $a0,$t9,$zero -/* f167670: 3c0a800a */ lui $t2,%hi(g_Vars) -/* f167674: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) -/* f167678: 8d44006c */ lw $a0,0x6c($t2) -/* f16767c: 3c06800b */ lui $a2,%hi(var800aa580) -/* f167680: 24c6a580 */ addiu $a2,$a2,%lo(var800aa580) -/* f167684: 10800003 */ beqz $a0,.L0f167694 -/* f167688: acc20000 */ sw $v0,0x0($a2) -/* f16768c: 10000002 */ b .L0f167698 -/* f167690: 24080001 */ addiu $t0,$zero,0x1 -.L0f167694: -/* f167694: 00004025 */ or $t0,$zero,$zero -.L0f167698: -/* f167698: 8d450068 */ lw $a1,0x68($t2) -/* f16769c: 50a00004 */ beqzl $a1,.L0f1676b0 -/* f1676a0: 00003825 */ or $a3,$zero,$zero -/* f1676a4: 10000002 */ b .L0f1676b0 -/* f1676a8: 24070001 */ addiu $a3,$zero,0x1 -/* f1676ac: 00003825 */ or $a3,$zero,$zero -.L0f1676b0: -/* f1676b0: 8d490064 */ lw $t1,0x64($t2) -/* f1676b4: 00076880 */ sll $t5,$a3,0x2 -/* f1676b8: 51200004 */ beqzl $t1,.L0f1676cc -/* f1676bc: 00001825 */ or $v1,$zero,$zero -/* f1676c0: 10000002 */ b .L0f1676cc -/* f1676c4: 24030001 */ addiu $v1,$zero,0x1 -/* f1676c8: 00001825 */ or $v1,$zero,$zero -.L0f1676cc: -/* f1676cc: 8d4b0070 */ lw $t3,0x70($t2) -/* f1676d0: 0003c080 */ sll $t8,$v1,0x2 -/* f1676d4: 51600004 */ beqzl $t3,.L0f1676e8 -/* f1676d8: 00001025 */ or $v0,$zero,$zero -/* f1676dc: 10000002 */ b .L0f1676e8 -/* f1676e0: 24020001 */ addiu $v0,$zero,0x1 -/* f1676e4: 00001025 */ or $v0,$zero,$zero -.L0f1676e8: -/* f1676e8: 00027080 */ sll $t6,$v0,0x2 -/* f1676ec: 01d87821 */ addu $t7,$t6,$t8 -/* f1676f0: 01edc821 */ addu $t9,$t7,$t5 -/* f1676f4: 00087080 */ sll $t6,$t0,0x2 -/* f1676f8: 032ec021 */ addu $t8,$t9,$t6 -/* f1676fc: 3c0f8008 */ lui $t7,%hi(filetable+0x1f7c) -/* f167700: 01f87821 */ addu $t7,$t7,$t8 -/* f167704: 8def3fdc */ lw $t7,%lo(filetable+0x1f7c)($t7) -/* f167708: 8ccd0000 */ lw $t5,0x0($a2) -/* f16770c: 01edc821 */ addu $t9,$t7,$t5 -/* f167710: 10800003 */ beqz $a0,.L0f167720 -/* f167714: acd90004 */ sw $t9,0x4($a2) -/* f167718: 10000002 */ b .L0f167724 -/* f16771c: 24080001 */ addiu $t0,$zero,0x1 -.L0f167720: -/* f167720: 00004025 */ or $t0,$zero,$zero -.L0f167724: -/* f167724: 50a00004 */ beqzl $a1,.L0f167738 -/* f167728: 00003825 */ or $a3,$zero,$zero -/* f16772c: 10000002 */ b .L0f167738 -/* f167730: 24070001 */ addiu $a3,$zero,0x1 -/* f167734: 00003825 */ or $a3,$zero,$zero -.L0f167738: -/* f167738: 11200003 */ beqz $t1,.L0f167748 -/* f16773c: 00076880 */ sll $t5,$a3,0x2 -/* f167740: 10000002 */ b .L0f16774c -/* f167744: 24030001 */ addiu $v1,$zero,0x1 -.L0f167748: -/* f167748: 00001825 */ or $v1,$zero,$zero -.L0f16774c: -/* f16774c: 11600003 */ beqz $t3,.L0f16775c -/* f167750: 0003c080 */ sll $t8,$v1,0x2 -/* f167754: 10000002 */ b .L0f167760 -/* f167758: 24020001 */ addiu $v0,$zero,0x1 -.L0f16775c: -/* f16775c: 00001025 */ or $v0,$zero,$zero -.L0f167760: -/* f167760: 00027080 */ sll $t6,$v0,0x2 -/* f167764: 01d87821 */ addu $t7,$t6,$t8 -/* f167768: 01edc821 */ addu $t9,$t7,$t5 -/* f16776c: 00087080 */ sll $t6,$t0,0x2 -/* f167770: 032ec021 */ addu $t8,$t9,$t6 -/* f167774: 3c0f8008 */ lui $t7,%hi(filetable+0x1f7c) -/* f167778: 01f87821 */ addu $t7,$t7,$t8 -/* f16777c: 8def3fdc */ lw $t7,%lo(filetable+0x1f7c)($t7) -/* f167780: 8ccd0004 */ lw $t5,0x4($a2) -/* f167784: 01edc821 */ addu $t9,$t7,$t5 -/* f167788: 10800003 */ beqz $a0,.L0f167798 -/* f16778c: acd90008 */ sw $t9,0x8($a2) -/* f167790: 10000002 */ b .L0f16779c -/* f167794: 24080001 */ addiu $t0,$zero,0x1 -.L0f167798: -/* f167798: 00004025 */ or $t0,$zero,$zero -.L0f16779c: -/* f16779c: 10a00003 */ beqz $a1,.L0f1677ac -/* f1677a0: 3c048008 */ lui $a0,%hi(var80083fec) -/* f1677a4: 10000002 */ b .L0f1677b0 -/* f1677a8: 24070001 */ addiu $a3,$zero,0x1 -.L0f1677ac: -/* f1677ac: 00003825 */ or $a3,$zero,$zero -.L0f1677b0: -/* f1677b0: 11200003 */ beqz $t1,.L0f1677c0 -/* f1677b4: 00076880 */ sll $t5,$a3,0x2 -/* f1677b8: 10000002 */ b .L0f1677c4 -/* f1677bc: 24030001 */ addiu $v1,$zero,0x1 -.L0f1677c0: -/* f1677c0: 00001825 */ or $v1,$zero,$zero -.L0f1677c4: -/* f1677c4: 11600003 */ beqz $t3,.L0f1677d4 -/* f1677c8: 0003c080 */ sll $t8,$v1,0x2 -/* f1677cc: 10000002 */ b .L0f1677d8 -/* f1677d0: 24020001 */ addiu $v0,$zero,0x1 -.L0f1677d4: -/* f1677d4: 00001025 */ or $v0,$zero,$zero -.L0f1677d8: -/* f1677d8: 00027080 */ sll $t6,$v0,0x2 -/* f1677dc: 01d87821 */ addu $t7,$t6,$t8 -/* f1677e0: 01edc821 */ addu $t9,$t7,$t5 -/* f1677e4: 00087080 */ sll $t6,$t0,0x2 -/* f1677e8: 032ec021 */ addu $t8,$t9,$t6 -/* f1677ec: 00982021 */ addu $a0,$a0,$t8 -/* f1677f0: 8c843fec */ lw $a0,%lo(var80083fec)($a0) -/* f1677f4: 24050004 */ addiu $a1,$zero,0x4 -/* f1677f8: 00047840 */ sll $t7,$a0,0x1 -/* f1677fc: 0c0048f2 */ jal malloc -/* f167800: 01e02025 */ or $a0,$t7,$zero -/* f167804: 3c0a800a */ lui $t2,%hi(g_Vars) -/* f167808: 254a9fc0 */ addiu $t2,$t2,%lo(g_Vars) -/* f16780c: 8d44006c */ lw $a0,0x6c($t2) -/* f167810: 3c0c800b */ lui $t4,%hi(var800aa590) -/* f167814: 258ca590 */ addiu $t4,$t4,%lo(var800aa590) -/* f167818: 10800003 */ beqz $a0,.L0f167828 -/* f16781c: ad820000 */ sw $v0,0x0($t4) -/* f167820: 10000002 */ b .L0f16782c -/* f167824: 24080001 */ addiu $t0,$zero,0x1 -.L0f167828: -/* f167828: 00004025 */ or $t0,$zero,$zero -.L0f16782c: -/* f16782c: 8d450068 */ lw $a1,0x68($t2) -/* f167830: 00003825 */ or $a3,$zero,$zero -/* f167834: 00001825 */ or $v1,$zero,$zero -/* f167838: 10a00003 */ beqz $a1,.L0f167848 -/* f16783c: 3c01800b */ lui $at,%hi(var800aa5a0) -/* f167840: 10000001 */ b .L0f167848 -/* f167844: 24070001 */ addiu $a3,$zero,0x1 -.L0f167848: -/* f167848: 8d490064 */ lw $t1,0x64($t2) -/* f16784c: 0007c080 */ sll $t8,$a3,0x2 -/* f167850: 00001025 */ or $v0,$zero,$zero -/* f167854: 11200003 */ beqz $t1,.L0f167864 -/* f167858: 00000000 */ nop -/* f16785c: 10000001 */ b .L0f167864 -/* f167860: 24030001 */ addiu $v1,$zero,0x1 -.L0f167864: -/* f167864: 8d4b0070 */ lw $t3,0x70($t2) -/* f167868: 0003c880 */ sll $t9,$v1,0x2 -/* f16786c: 00003825 */ or $a3,$zero,$zero -/* f167870: 11600003 */ beqz $t3,.L0f167880 -/* f167874: 00000000 */ nop -/* f167878: 10000001 */ b .L0f167880 -/* f16787c: 24020001 */ addiu $v0,$zero,0x1 -.L0f167880: -/* f167880: 00026880 */ sll $t5,$v0,0x2 -/* f167884: 01b97021 */ addu $t6,$t5,$t9 -/* f167888: 01d87821 */ addu $t7,$t6,$t8 -/* f16788c: 00086880 */ sll $t5,$t0,0x2 -/* f167890: 01edc821 */ addu $t9,$t7,$t5 -/* f167894: 3c0e8008 */ lui $t6,%hi(var80083fec) -/* f167898: 01d97021 */ addu $t6,$t6,$t9 -/* f16789c: 8dce3fec */ lw $t6,%lo(var80083fec)($t6) -/* f1678a0: 8d860000 */ lw $a2,0x0($t4) -/* f1678a4: 00004025 */ or $t0,$zero,$zero -/* f1678a8: 00001825 */ or $v1,$zero,$zero -/* f1678ac: 01c6c021 */ addu $t8,$t6,$a2 -/* f1678b0: 10800003 */ beqz $a0,.L0f1678c0 -/* f1678b4: ad980004 */ sw $t8,0x4($t4) -/* f1678b8: 10000001 */ b .L0f1678c0 -/* f1678bc: 24080001 */ addiu $t0,$zero,0x1 -.L0f1678c0: -/* f1678c0: 10a00003 */ beqz $a1,.L0f1678d0 -/* f1678c4: 00001025 */ or $v0,$zero,$zero -/* f1678c8: 10000001 */ b .L0f1678d0 -/* f1678cc: 24070001 */ addiu $a3,$zero,0x1 -.L0f1678d0: -/* f1678d0: 11200003 */ beqz $t1,.L0f1678e0 -/* f1678d4: 00077080 */ sll $t6,$a3,0x2 -/* f1678d8: 10000001 */ b .L0f1678e0 -/* f1678dc: 24030001 */ addiu $v1,$zero,0x1 -.L0f1678e0: -/* f1678e0: 11600003 */ beqz $t3,.L0f1678f0 -/* f1678e4: 00036880 */ sll $t5,$v1,0x2 -/* f1678e8: 10000001 */ b .L0f1678f0 -/* f1678ec: 24020001 */ addiu $v0,$zero,0x1 -.L0f1678f0: -/* f1678f0: 00027880 */ sll $t7,$v0,0x2 -/* f1678f4: 01edc821 */ addu $t9,$t7,$t5 -/* f1678f8: 032ec021 */ addu $t8,$t9,$t6 -/* f1678fc: 00087880 */ sll $t7,$t0,0x2 -/* f167900: 030f6821 */ addu $t5,$t8,$t7 -/* f167904: 3c198008 */ lui $t9,%hi(var80083fec) -/* f167908: 032dc821 */ addu $t9,$t9,$t5 -/* f16790c: 8f393fec */ lw $t9,%lo(var80083fec)($t9) -/* f167910: 8d8e0004 */ lw $t6,0x4($t4) -/* f167914: 8fbf0014 */ lw $ra,0x14($sp) -/* f167918: 27bd0038 */ addiu $sp,$sp,0x38 -/* f16791c: 032ec021 */ addu $t8,$t9,$t6 -/* f167920: ad980008 */ sw $t8,0x8($t4) -/* f167924: a020a5a0 */ sb $zero,%lo(var800aa5a0)($at) -/* f167928: 3c01800b */ lui $at,%hi(var800aa5a4) -/* f16792c: ac20a5a4 */ sw $zero,%lo(var800aa5a4)($at) -/* f167930: 3c01800b */ lui $at,%hi(var800aa59c) -/* f167934: 03e00008 */ jr $ra -/* f167938: ac26a59c */ sw $a2,%lo(var800aa59c)($at) -); +/** + * Comments in this function are strings that appear in an XBLA debug build. + * They were likely in the N64 version but ifdeffed out. + */ +void func0f167350(void) +{ + s32 stack; + + if (func00013010(1, "-mgfx")) { + // Argument specified master_dl_size\n + s32 gfx; + s32 gfxtra = 0; + + gfx = func00013408(func00013010(1, "-mgfx"), NULL, 0) * 1024; + + if (func00013010(1, "-mgfxtra")) { + // ******** Extra specified but are we in the correct game mode I wonder???\n + if ((g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) && PLAYERCOUNT() == 2) { + // ******** Extra Display List Memeory Required\n + // ******** Shall steal from video buffer\n + // ******** If you try and run hi-res then\n + // ******** you're gonna shafted up the arse\n + // ******** so don't blame me\n + gfxtra = func00013408(func00013010(1, "-mgfxtra"), NULL, 0) * 1024; + } else { + // ******** No we're not so there\n + } + } + + // ******** Original Amount required = %dK ber buffer\n + // ******** Extra Amount required = %dK ber buffer\n + // ******** Total of %dK (Double Buffered)\n + g_GfxSizesByPlayerCount[PLAYERCOUNT()] = gfx + gfxtra; + } + + if (func00013010(1, "-mvtx")) { + // Argument specified mtxvtx_size\n + g_VtxSizesByPlayerCount[PLAYERCOUNT()] = func00013408(func00013010(1, "-mvtx"), NULL, 0) * 1024; + } + + // %d Players : Allocating %d bytes for master dl's\n + g_GfxBuffers[0] = malloc(g_GfxSizesByPlayerCount[PLAYERCOUNT()] * 2, 4); + g_GfxBuffers[1] = g_GfxBuffers[0] + g_GfxSizesByPlayerCount[PLAYERCOUNT()]; + g_GfxBuffers[2] = g_GfxBuffers[1] + g_GfxSizesByPlayerCount[PLAYERCOUNT()]; + + // Allocating %d bytes for mtxvtx space\n + g_VtxBuffers[0] = malloc(g_VtxSizesByPlayerCount[PLAYERCOUNT()] * 2, 4); + g_VtxBuffers[1] = g_VtxBuffers[0] + g_VtxSizesByPlayerCount[PLAYERCOUNT()]; + g_VtxBuffers[2] = g_VtxBuffers[1] + g_VtxSizesByPlayerCount[PLAYERCOUNT()]; + + var800aa5a0 = 0; + var800aa5a4 = 0; + var800aa59c = g_VtxBuffers[0]; +} + +const char var7f1b7728[] = ""; +const char var7f1b772c[] = ""; +const char var7f1b7730[] = "fr: %d\n"; +const char var7f1b7738[] = "cutsceneframe: %d\n"; +const char var7f1b774c[] = "pos:%s%s %.2f %.2f %.2f\n"; GLOBAL_ASM( glabel func0f16793c /* f16793c: 3c0f800b */ lui $t7,%hi(var800aa5a0) /* f167940: 91efa5a0 */ lbu $t7,%lo(var800aa5a0)($t7) -/* f167944: 3c02800b */ lui $v0,%hi(var800aa580) +/* f167944: 3c02800b */ lui $v0,%hi(g_GfxBuffers) /* f167948: 240e0001 */ addiu $t6,$zero,0x1 /* f16794c: 000fc080 */ sll $t8,$t7,0x2 /* f167950: 3c01800b */ lui $at,%hi(var800aa5a4) /* f167954: 00581021 */ addu $v0,$v0,$t8 /* f167958: ac2ea5a4 */ sw $t6,%lo(var800aa5a4)($at) /* f16795c: 03e00008 */ jr $ra -/* f167960: 8c42a580 */ lw $v0,%lo(var800aa580)($v0) +/* f167960: 8c42a580 */ lw $v0,%lo(g_GfxBuffers)($v0) ); GLOBAL_ASM( @@ -956,7 +565,7 @@ glabel func0f167a18 /* f167a1c: 2484a5a0 */ addiu $a0,$a0,%lo(var800aa5a0) /* f167a20: 908e0000 */ lbu $t6,0x0($a0) /* f167a24: 3c01800b */ lui $at,%hi(var800aa5a4) -/* f167a28: 3c19800b */ lui $t9,%hi(var800aa590) +/* f167a28: 3c19800b */ lui $t9,%hi(g_VtxBuffers) /* f167a2c: 39cf0001 */ xori $t7,$t6,0x1 /* f167a30: a08f0000 */ sb $t7,0x0($a0) /* f167a34: ac20a5a4 */ sw $zero,%lo(var800aa5a4)($at) @@ -965,7 +574,7 @@ glabel func0f167a18 /* f167a40: 3c01800b */ lui $at,%hi(var800aa59c) /* f167a44: 0002c080 */ sll $t8,$v0,0x2 /* f167a48: 0338c821 */ addu $t9,$t9,$t8 -/* f167a4c: 8f39a590 */ lw $t9,%lo(var800aa590)($t9) +/* f167a4c: 8f39a590 */ lw $t9,%lo(g_VtxBuffers)($t9) /* f167a50: 24a54008 */ addiu $a1,$a1,%lo(var80084008) /* f167a54: 240a0002 */ addiu $t2,$zero,0x2 /* f167a58: ac39a59c */ sw $t9,%lo(var800aa59c)($at) @@ -983,21 +592,21 @@ glabel func0f167a18 /* f167a84: 00000000 */ nop /* f167a88: 3c0e800b */ lui $t6,%hi(var800aa5a0) /* f167a8c: 91cea5a0 */ lbu $t6,%lo(var800aa5a0)($t6) -/* f167a90: 3c18800b */ lui $t8,%hi(var800aa584) +/* f167a90: 3c18800b */ lui $t8,%hi(g_GfxBuffers+0x4) /* f167a94: 000e7880 */ sll $t7,$t6,0x2 /* f167a98: 030fc021 */ addu $t8,$t8,$t7 -/* f167a9c: 8f18a584 */ lw $t8,%lo(var800aa584)($t8) +/* f167a9c: 8f18a584 */ lw $t8,%lo(g_GfxBuffers+0x4)($t8) /* f167aa0: 03041023 */ subu $v0,$t8,$a0 /* f167aa4: 0002c8c3 */ sra $t9,$v0,0x3 /* f167aa8: 03e00008 */ jr $ra /* f167aac: 03201025 */ or $v0,$t9,$zero /* f167ab0: 3c0e800b */ lui $t6,%hi(var800aa5a0) /* f167ab4: 91cea5a0 */ lbu $t6,%lo(var800aa5a0)($t6) -/* f167ab8: 3c18800b */ lui $t8,%hi(var800aa594) +/* f167ab8: 3c18800b */ lui $t8,%hi(g_VtxBuffers+0x4) /* f167abc: 3c19800b */ lui $t9,%hi(var800aa59c) /* f167ac0: 000e7880 */ sll $t7,$t6,0x2 /* f167ac4: 030fc021 */ addu $t8,$t8,$t7 -/* f167ac8: 8f18a594 */ lw $t8,%lo(var800aa594)($t8) +/* f167ac8: 8f18a594 */ lw $t8,%lo(g_VtxBuffers+0x4)($t8) /* f167acc: 8f39a59c */ lw $t9,%lo(var800aa59c)($t9) /* f167ad0: 03e00008 */ jr $ra /* f167ad4: 03191023 */ subu $v0,$t8,$t9 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index cee8f84f4..1205fe7c1 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16403,15 +16403,11 @@ u32 var800aa570 = 0; u32 var800aa574 = 0; u32 var800aa578 = 0; u32 var800aa57c = 0; -u32 var800aa580 = 0; -u32 var800aa584 = 0; -u32 var800aa588 = 0; +u8 *g_GfxBuffers[3] = {NULL}; u32 var800aa58c = 0; -u32 var800aa590 = 0; -u32 var800aa594 = 0; -u32 var800aa598 = 0; -u32 var800aa59c = 0; -u32 var800aa5a0 = 0; +u8 *g_VtxBuffers[3] = {NULL}; +u8 *var800aa59c = NULL; +u8 var800aa5a0 = 0; u32 var800aa5a4 = 0; u32 var800aa5a8 = 0; u32 var800aa5ac = 0; diff --git a/src/include/game/data/data_020df0.h b/src/include/game/data/data_020df0.h index 079c28196..f07f398f6 100644 --- a/src/include/game/data/data_020df0.h +++ b/src/include/game/data/data_020df0.h @@ -287,6 +287,8 @@ extern u32 var80081058; extern struct smallsky smallskies[]; extern s32 var80082050; extern void *filetable[]; +extern u32 g_GfxSizesByPlayerCount[]; +extern u32 g_VtxSizesByPlayerCount[]; extern u32 var80084008; extern u32 var80084010; extern bool var80084014; diff --git a/src/include/game/game_166e40.h b/src/include/game/game_166e40.h index c81c6662a..0e3747df8 100644 --- a/src/include/game/game_166e40.h +++ b/src/include/game/game_166e40.h @@ -18,7 +18,7 @@ u32 fileGetUnk04(s32 filenum); u32 func0f1672a8(void); void func0f1672f0(u8 arg0); void func0f167330(void); -u32 func0f167350(void); +void func0f167350(void); Gfx *func0f16793c(void); u32 func0f167964(void); u32 func0f167998(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 93b676c81..5aac1e38d 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -756,10 +756,11 @@ extern u8 *var800a6660; extern s16 *var800a6668; extern u32 var800a666c; extern struct fileinfo g_FileInfo[NUM_FILES]; -extern u32 var800aa580; -extern u32 var800aa590; -extern u32 var800aa59c; -extern u32 var800aa5a0; +extern u8 *g_GfxBuffers[3]; +extern u8 *g_VtxBuffers[3]; +extern u8 *var800aa59c; +extern u8 var800aa5a0; +extern u32 var800aa5a4; extern struct audiohandle *g_BoostAndSlayerAudioHandles[3]; extern s32 g_BoostAndSlayerActiveTypes[3]; extern u32 var800aa5cc; diff --git a/src/include/lib/lib_12dc0.h b/src/include/lib/lib_12dc0.h index 4bd42b3f0..151f9095f 100644 --- a/src/include/lib/lib_12dc0.h +++ b/src/include/lib/lib_12dc0.h @@ -8,7 +8,7 @@ u32 func00012e1c(void); u32 func00012e60(void); u32 func00012efc(void); s32 func00012f30(void); -u32 func00013010(void); +char *func00013010(s32 arg0, char *string); u32 func000130d4(void); u32 random(void); diff --git a/src/include/lib/lib_13130.h b/src/include/lib/lib_13130.h index 610bd7521..f0c3ea8f1 100644 --- a/src/include/lib/lib_13130.h +++ b/src/include/lib/lib_13130.h @@ -13,7 +13,7 @@ u32 func00013320(void); u32 func00013358(void); u32 func00013378(void); u32 func000133b4(void); -u32 func00013408(void); +s32 func00013408(char *arg0, s32 *arg1, s32 arg2); int sprintf(char *dest, const char *format, ...); #endif diff --git a/src/include/types.h b/src/include/types.h index 065e1134d..edab75e2c 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2206,8 +2206,8 @@ struct player { /*0x0458*/ s32 standcnt; /*0x045c*/ struct model model; /*0x0480*/ struct eyespy *eyespy; - /*0x0484*/ u32 unk0484; - /*0x0488*/ u32 unk0488; + /*0x0484*/ u8 *unk0484; // pointer to vtx buffer? + /*0x0488*/ u8 *unk0488; // pointer to vtx buffer? /*0x048c*/ bool aborted; /*0x0490*/ u32 unk0490; /*0x0494*/ u32 unk0494;