From 25b44f166307e950d150c55902cbe3707c251bca Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 23 Dec 2020 23:24:52 +1000 Subject: [PATCH] Decompile gfxAllocate --- src/game/chr/chr.c | 6 +++--- src/game/dlights.c | 2 +- src/game/game_006bd0.c | 2 +- src/game/game_097ba0.c | 4 ++-- src/game/game_0abe70.c | 2 +- src/game/game_0d4690.c | 2 +- src/game/game_0f09f0.c | 2 +- src/game/game_1531a0.c | 2 +- src/game/game_166e40.c | 20 ++++++++------------ src/game/propobj.c | 8 ++++---- src/game/title.c | 14 +++++++------- src/include/game/game_166e40.h | 2 +- 12 files changed, 31 insertions(+), 35 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index ff743d011..3c3168902 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -202,7 +202,7 @@ void chrRemoveFromChrsC(s32 chrnum) void func0f01e760(s32 arg0) { - func0f1679f4(arg0 * 12); + gfxAllocate(arg0 * 12); } void setVar8006297c(u32 arg0) @@ -3839,7 +3839,7 @@ glabel var7f1a87a8 /* f0223c8: 8d8b0008 */ lw $t3,0x8($t4) /* f0223cc: 8564000e */ lh $a0,0xe($t3) /* f0223d0: 00046980 */ sll $t5,$a0,0x6 -/* f0223d4: 0fc59e7d */ jal func0f1679f4 +/* f0223d4: 0fc59e7d */ jal gfxAllocate /* f0223d8: 01a02025 */ or $a0,$t5,$zero /* f0223dc: afa200d4 */ sw $v0,0xd4($sp) /* f0223e0: 27a400c4 */ addiu $a0,$sp,0xc4 @@ -5441,7 +5441,7 @@ glabel var7f1a87d8 /* f023f78: 8dac0008 */ lw $t4,0x8($t5) /* f023f7c: 8584000e */ lh $a0,0xe($t4) /* f023f80: 0004c180 */ sll $t8,$a0,0x6 -/* f023f84: 0fc59e7d */ jal func0f1679f4 +/* f023f84: 0fc59e7d */ jal gfxAllocate /* f023f88: 03002025 */ or $a0,$t8,$zero /* f023f8c: 8fab01f0 */ lw $t3,0x1f0($sp) /* f023f90: afa20220 */ sw $v0,0x220($sp) diff --git a/src/game/dlights.c b/src/game/dlights.c index 072288280..e800aee16 100644 --- a/src/game/dlights.c +++ b/src/game/dlights.c @@ -327,7 +327,7 @@ glabel var7f1a7d8c /* f001140: 00808025 */ or $s0,$a0,$zero /* f001144: afbf001c */ sw $ra,0x1c($sp) /* f001148: afa50044 */ sw $a1,0x44($sp) -/* f00114c: 0fc59e7d */ jal func0f1679f4 +/* f00114c: 0fc59e7d */ jal gfxAllocate /* f001150: 24040018 */ addiu $a0,$zero,0x18 /* f001154: 87a40046 */ lh $a0,0x46($sp) /* f001158: 0fc00284 */ jal func0f000a10 diff --git a/src/game/game_006bd0.c b/src/game/game_006bd0.c index bb34c95c6..1d365a9bb 100644 --- a/src/game/game_006bd0.c +++ b/src/game/game_006bd0.c @@ -2875,7 +2875,7 @@ glabel func0f009504 .L0f009608: /* f009608: a439cb00 */ sh $t9,%lo(var8009cb00)($at) /* f00960c: 8c440000 */ lw $a0,0x0($v0) -/* f009610: 0fc59e7d */ jal func0f1679f4 +/* f009610: 0fc59e7d */ jal gfxAllocate /* f009614: afa2002c */ sw $v0,0x2c($sp) /* f009618: 3c05800b */ lui $a1,%hi(var800ab5a8) /* f00961c: 8ca5b5a8 */ lw $a1,%lo(var800ab5a8)($a1) diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index 948516e8c..a1c8e65f1 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -9890,7 +9890,7 @@ glabel func0f09f848 .L0f09f90c: /* f09f90c: 8504000e */ lh $a0,0xe($t0) /* f09f910: 00044980 */ sll $t1,$a0,0x6 -/* f09f914: 0fc59e7d */ jal func0f1679f4 +/* f09f914: 0fc59e7d */ jal gfxAllocate /* f09f918: 01202025 */ or $a0,$t1,$zero /* f09f91c: ae62000c */ sw $v0,0xc($s3) /* f09f920: 26240620 */ addiu $a0,$s1,0x620 @@ -17023,7 +17023,7 @@ glabel var7f1aca70 /* f0a5c88: 8444000e */ lh $a0,0xe($v0) /* f0a5c8c: afa20280 */ sw $v0,0x280($sp) /* f0a5c90: 00045980 */ sll $t3,$a0,0x6 -/* f0a5c94: 0fc59e7d */ jal func0f1679f4 +/* f0a5c94: 0fc59e7d */ jal gfxAllocate /* f0a5c98: 01602025 */ or $a0,$t3,$zero /* f0a5c9c: afa20304 */ sw $v0,0x304($sp) /* f0a5ca0: 8fa401c4 */ lw $a0,0x1c4($sp) diff --git a/src/game/game_0abe70.c b/src/game/game_0abe70.c index 48cf4d952..074fdd3ec 100644 --- a/src/game/game_0abe70.c +++ b/src/game/game_0abe70.c @@ -3056,7 +3056,7 @@ glabel var7f1acd6c /* f0ae98c: 8444000e */ lh $a0,0xe($v0) /* f0ae990: afa200f0 */ sw $v0,0xf0($sp) /* f0ae994: 0004c180 */ sll $t8,$a0,0x6 -/* f0ae998: 0fc59e7d */ jal func0f1679f4 +/* f0ae998: 0fc59e7d */ jal gfxAllocate /* f0ae99c: 03002025 */ or $a0,$t8,$zero /* f0ae9a0: 3c098007 */ lui $t1,%hi(var80070534) /* f0ae9a4: 25290534 */ addiu $t1,$t1,%lo(var80070534) diff --git a/src/game/game_0d4690.c b/src/game/game_0d4690.c index 344d986e1..4e2e98173 100644 --- a/src/game/game_0d4690.c +++ b/src/game/game_0d4690.c @@ -213,7 +213,7 @@ glabel func0f0d479c /* f0d48fc: 3c0f0380 */ lui $t7,0x380 /* f0d4900: 0fc5db69 */ jal align16 /* f0d4904: 24040010 */ addiu $a0,$zero,0x10 -/* f0d4908: 0fc59e7d */ jal func0f1679f4 +/* f0d4908: 0fc59e7d */ jal gfxAllocate /* f0d490c: 00402025 */ or $a0,$v0,$zero /* f0d4910: 1040001c */ beqz $v0,.L0f0d4984 /* f0d4914: ae020000 */ sw $v0,0x0($s0) diff --git a/src/game/game_0f09f0.c b/src/game/game_0f09f0.c index 0b71a7975..916a882a6 100644 --- a/src/game/game_0f09f0.c +++ b/src/game/game_0f09f0.c @@ -4233,7 +4233,7 @@ glabel var7f1b2948 .L0f0f4908: /* f0f4908: 8544000e */ lh $a0,0xe($t2) /* f0f490c: 00045980 */ sll $t3,$a0,0x6 -/* f0f4910: 0fc59e7d */ jal func0f1679f4 +/* f0f4910: 0fc59e7d */ jal gfxAllocate /* f0f4914: 01602025 */ or $a0,$t3,$zero /* f0f4918: afa203b4 */ sw $v0,0x3b4($sp) /* f0f491c: 8e0e0054 */ lw $t6,0x54($s0) diff --git a/src/game/game_1531a0.c b/src/game/game_1531a0.c index 0d69f007f..ffd6a857b 100644 --- a/src/game/game_1531a0.c +++ b/src/game/game_1531a0.c @@ -432,7 +432,7 @@ glabel func0f153ab0 /* f153ac0: 240e0001 */ addiu $t6,$zero,0x1 /* f153ac4: 3c018008 */ lui $at,%hi(var8007fb9c) /* f153ac8: ac2efb9c */ sw $t6,%lo(var8007fb9c)($at) -/* f153acc: 0fc59e7d */ jal func0f1679f4 +/* f153acc: 0fc59e7d */ jal gfxAllocate /* f153ad0: 24041090 */ addiu $a0,$zero,0x1090 /* f153ad4: 3c05800a */ lui $a1,%hi(var800a4634) /* f153ad8: 24a54634 */ addiu $a1,$a1,%lo(var800a4634) diff --git a/src/game/game_166e40.c b/src/game/game_166e40.c index 18a69ee06..994e68ea8 100644 --- a/src/game/game_166e40.c +++ b/src/game/game_166e40.c @@ -528,18 +528,14 @@ u32 *gfxAllocateColours(s32 count) return ptr; } -GLOBAL_ASM( -glabel func0f1679f4 -/* f1679f4: 3c06800b */ lui $a2,%hi(g_GfxMemPos) -/* f1679f8: 24c6a59c */ addiu $a2,$a2,%lo(g_GfxMemPos) -/* f1679fc: 8cc20000 */ lw $v0,0x0($a2) -/* f167a00: 2484000f */ addiu $a0,$a0,0xf -/* f167a04: 348e000f */ ori $t6,$a0,0xf -/* f167a08: 39cf000f */ xori $t7,$t6,0xf -/* f167a0c: 004fc021 */ addu $t8,$v0,$t7 -/* f167a10: 03e00008 */ jr $ra -/* f167a14: acd80000 */ sw $t8,0x0($a2) -); +void *gfxAllocate(u32 size) +{ + void *ptr = g_GfxMemPos; + size = ALIGN16(size); + g_GfxMemPos += size; + + return ptr; +} GLOBAL_ASM( glabel func0f167a18 diff --git a/src/game/propobj.c b/src/game/propobj.c index 00c61728e..8949afefb 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -12177,7 +12177,7 @@ glabel func0f07079c /* f070874: 8dcf0008 */ lw $t7,0x8($t6) /* f070878: 85e4000e */ lh $a0,0xe($t7) /* f07087c: 0004c180 */ sll $t8,$a0,0x6 -/* f070880: 0fc59e7d */ jal func0f1679f4 +/* f070880: 0fc59e7d */ jal gfxAllocate /* f070884: 03002025 */ or $a0,$t8,$zero /* f070888: 27aa0030 */ addiu $t2,$sp,0x30 /* f07088c: afa20084 */ sw $v0,0x84($sp) @@ -28374,7 +28374,7 @@ s32 objTick(struct prop *prop) } sp556 = true; - sp476.model0c = func0f1679f4(model->unk08->unk0e * 64); + sp476.model0c = gfxAllocate(model->unk08->unk0e * 64); sp476.matrix = currentPlayerGetMatrix1740(); func0001cebc(&sp476, model); @@ -28472,7 +28472,7 @@ s32 objTick(struct prop *prop) func00015a00(currentPlayerGetMatrix1740(), &sp248, &sp152); sp556 = true; - sp312.model0c = func0f1679f4(model->unk08->unk0e * 64); + sp312.model0c = gfxAllocate(model->unk08->unk0e * 64); sp312.matrix = &sp152; func0001cebc(&sp312, model); @@ -28625,7 +28625,7 @@ s32 objTick(struct prop *prop) } if (sp556 == false) { - model->unk0c = func0f1679f4(model->unk08->unk0e * 64); + model->unk0c = gfxAllocate(model->unk08->unk0e * 64); func0f07e2cc(prop); func0001cb0c(model, model->unk08->rootnode); } diff --git a/src/game/title.c b/src/game/title.c index 0d018a59b..e08c3e9f8 100644 --- a/src/game/title.c +++ b/src/game/title.c @@ -1853,7 +1853,7 @@ glabel func0f017248 /* f017890: 85c4000e */ lh $a0,0xe($t6) /* f017894: afa30150 */ sw $v1,0x150($sp) /* f017898: 00047980 */ sll $t7,$a0,0x6 -/* f01789c: 0fc59e7d */ jal func0f1679f4 +/* f01789c: 0fc59e7d */ jal gfxAllocate /* f0178a0: 01e02025 */ or $a0,$t7,$zero /* f0178a4: afa20120 */ sw $v0,0x120($sp) /* f0178a8: 02002025 */ or $a0,$s0,$zero @@ -2849,7 +2849,7 @@ glabel var7f1a8468 /* f018728: 0c006a87 */ jal modelGetNodeData /* f01872c: afae00d8 */ sw $t6,0xd8($sp) /* f018730: afa20160 */ sw $v0,0x160($sp) -/* f018734: 0fc59e7d */ jal func0f1679f4 +/* f018734: 0fc59e7d */ jal gfxAllocate /* f018738: 24040028 */ addiu $a0,$zero,0x28 /* f01873c: 8fb80160 */ lw $t8,0x160($sp) /* f018740: 8fa60164 */ lw $a2,0x164($sp) @@ -2898,7 +2898,7 @@ glabel var7f1a8468 /* f0187e8: 0c006a87 */ jal modelGetNodeData /* f0187ec: afb900d8 */ sw $t9,0xd8($sp) /* f0187f0: afa20160 */ sw $v0,0x160($sp) -/* f0187f4: 0fc59e7d */ jal func0f1679f4 +/* f0187f4: 0fc59e7d */ jal gfxAllocate /* f0187f8: 24040028 */ addiu $a0,$zero,0x28 /* f0187fc: 8faf0160 */ lw $t7,0x160($sp) /* f018800: 8fa60164 */ lw $a2,0x164($sp) @@ -2960,7 +2960,7 @@ glabel var7f1a8468 /* f0188d8: 0c006a87 */ jal modelGetNodeData /* f0188dc: afb800d8 */ sw $t8,0xd8($sp) /* f0188e0: afa20160 */ sw $v0,0x160($sp) -/* f0188e4: 0fc59e7d */ jal func0f1679f4 +/* f0188e4: 0fc59e7d */ jal gfxAllocate /* f0188e8: 24040028 */ addiu $a0,$zero,0x28 /* f0188ec: 8fb90160 */ lw $t9,0x160($sp) /* f0188f0: 8fa60164 */ lw $a2,0x164($sp) @@ -3022,7 +3022,7 @@ glabel var7f1a8468 /* f0189c8: 0c006a87 */ jal modelGetNodeData /* f0189cc: afae00d8 */ sw $t6,0xd8($sp) /* f0189d0: afa20160 */ sw $v0,0x160($sp) -/* f0189d4: 0fc59e7d */ jal func0f1679f4 +/* f0189d4: 0fc59e7d */ jal gfxAllocate /* f0189d8: 24040028 */ addiu $a0,$zero,0x28 /* f0189dc: 8fb80160 */ lw $t8,0x160($sp) /* f0189e0: 8fa60164 */ lw $a2,0x164($sp) @@ -3828,7 +3828,7 @@ glabel var7f1a84a0 /* f019994: 8d4d0008 */ lw $t5,0x8($t2) /* f019998: 85a4000e */ lh $a0,0xe($t5) /* f01999c: 0004c180 */ sll $t8,$a0,0x6 -/* f0199a0: 0fc59e7d */ jal func0f1679f4 +/* f0199a0: 0fc59e7d */ jal gfxAllocate /* f0199a4: 03002025 */ or $a0,$t8,$zero /* f0199a8: afa20160 */ sw $v0,0x160($sp) /* f0199ac: 02002025 */ or $a0,$s0,$zero @@ -4242,7 +4242,7 @@ glabel var7f1a84bc /* f01a0c0: 8d2a0008 */ lw $t2,0x8($t1) /* f01a0c4: 8544000e */ lh $a0,0xe($t2) /* f01a0c8: 00046180 */ sll $t4,$a0,0x6 -/* f01a0cc: 0fc59e7d */ jal func0f1679f4 +/* f01a0cc: 0fc59e7d */ jal gfxAllocate /* f01a0d0: 01802025 */ or $a0,$t4,$zero /* f01a0d4: afa20170 */ sw $v0,0x170($sp) /* f01a0d8: 02002025 */ or $a0,$s0,$zero diff --git a/src/include/game/game_166e40.h b/src/include/game/game_166e40.h index 84b810011..d633d663b 100644 --- a/src/include/game/game_166e40.h +++ b/src/include/game/game_166e40.h @@ -24,7 +24,7 @@ struct gfxvtx *gfxAllocateVertices(s32 count); void *gfxAllocateMatrix(void); void *gfxAllocate4Words(s32 count); u32 *gfxAllocateColours(s32 count); -struct model0c *func0f1679f4(s32 arg0); +void *gfxAllocate(u32 size); void func0f167a18(void); #endif