From ead0e527654798bf52f356a73472819cefe006d4 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 4 Jan 2021 09:40:32 +1000 Subject: [PATCH] Decompile func0f00c390 --- src/game/game_00c240.c | 91 +++++++++------------------------------ src/gvars/gvars.c | 4 +- src/include/gvars/gvars.h | 4 +- src/include/types.h | 4 ++ 4 files changed, 28 insertions(+), 75 deletions(-) diff --git a/src/game/game_00c240.c b/src/game/game_00c240.c index 5bc64d725..e4b01f7f4 100644 --- a/src/game/game_00c240.c +++ b/src/game/game_00c240.c @@ -59,74 +59,23 @@ void gvarsInitProps(void) } } -GLOBAL_ASM( -glabel func0f00c390 -/* f00c390: 3c07800a */ lui $a3,%hi(g_Vars) -/* f00c394: 24e79fc0 */ addiu $a3,$a3,%lo(g_Vars) -/* f00c398: 8ce402bc */ lw $a0,0x2bc($a3) -/* f00c39c: 27bdffe8 */ addiu $sp,$sp,-24 -/* f00c3a0: afbf0014 */ sw $ra,0x14($sp) -/* f00c3a4: 00047040 */ sll $t6,$a0,0x1 -/* f00c3a8: 25c4000f */ addiu $a0,$t6,0xf -/* f00c3ac: 348f000f */ ori $t7,$a0,0xf -/* f00c3b0: 39e4000f */ xori $a0,$t7,0xf -/* f00c3b4: 0c0048f2 */ jal malloc -/* f00c3b8: 24050004 */ addiu $a1,$zero,0x4 -/* f00c3bc: 3c08800a */ lui $t0,%hi(var8009cda0) -/* f00c3c0: 2508cda0 */ addiu $t0,$t0,%lo(var8009cda0) -/* f00c3c4: ad020000 */ sw $v0,0x0($t0) -/* f00c3c8: 24041000 */ addiu $a0,$zero,0x1000 -/* f00c3cc: 0c0048f2 */ jal malloc -/* f00c3d0: 24050004 */ addiu $a1,$zero,0x4 -/* f00c3d4: 3c07800a */ lui $a3,%hi(g_Vars) -/* f00c3d8: 24e79fc0 */ addiu $a3,$a3,%lo(g_Vars) -/* f00c3dc: 8cf902bc */ lw $t9,0x2bc($a3) -/* f00c3e0: 3c05800a */ lui $a1,%hi(var8009cda4) -/* f00c3e4: 24a5cda4 */ addiu $a1,$a1,%lo(var8009cda4) -/* f00c3e8: 3c08800a */ lui $t0,%hi(var8009cda0) -/* f00c3ec: 2508cda0 */ addiu $t0,$t0,%lo(var8009cda0) -/* f00c3f0: aca20000 */ sw $v0,0x0($a1) -/* f00c3f4: 1b20000d */ blez $t9,.L0f00c42c -/* f00c3f8: 00001825 */ or $v1,$zero,$zero -/* f00c3fc: 00001025 */ or $v0,$zero,$zero -/* f00c400: 2406ffff */ addiu $a2,$zero,-1 -/* f00c404: 8d0b0000 */ lw $t3,0x0($t0) -.L0f00c408: -/* f00c408: 24630001 */ addiu $v1,$v1,0x1 -/* f00c40c: 01626021 */ addu $t4,$t3,$v0 -/* f00c410: a5860000 */ sh $a2,0x0($t4) -/* f00c414: 8ced02bc */ lw $t5,0x2bc($a3) -/* f00c418: 24420002 */ addiu $v0,$v0,0x2 -/* f00c41c: 006d082a */ slt $at,$v1,$t5 -/* f00c420: 5420fff9 */ bnezl $at,.L0f00c408 -/* f00c424: 8d0b0000 */ lw $t3,0x0($t0) -/* f00c428: 00001825 */ or $v1,$zero,$zero -.L0f00c42c: -/* f00c42c: 2406ffff */ addiu $a2,$zero,-1 -/* f00c430: 00003825 */ or $a3,$zero,$zero -/* f00c434: 240a0100 */ addiu $t2,$zero,0x100 -/* f00c438: 2409fffe */ addiu $t1,$zero,-2 -/* f00c43c: 24040010 */ addiu $a0,$zero,0x10 -.L0f00c440: -/* f00c440: 8cae0000 */ lw $t6,0x0($a1) -/* f00c444: 24020002 */ addiu $v0,$zero,0x2 -/* f00c448: 01c77821 */ addu $t7,$t6,$a3 -/* f00c44c: a5e90000 */ sh $t1,0x0($t7) -.L0f00c450: -/* f00c450: 8cb80000 */ lw $t8,0x0($a1) -/* f00c454: 0003c900 */ sll $t9,$v1,0x4 -/* f00c458: 03195821 */ addu $t3,$t8,$t9 -/* f00c45c: 01626021 */ addu $t4,$t3,$v0 -/* f00c460: 24420002 */ addiu $v0,$v0,0x2 -/* f00c464: 1444fffa */ bne $v0,$a0,.L0f00c450 -/* f00c468: a5860000 */ sh $a2,0x0($t4) -/* f00c46c: 24630001 */ addiu $v1,$v1,0x1 -/* f00c470: 146afff3 */ bne $v1,$t2,.L0f00c440 -/* f00c474: 24e70010 */ addiu $a3,$a3,0x10 -/* f00c478: 8fbf0014 */ lw $ra,0x14($sp) -/* f00c47c: 27bd0018 */ addiu $sp,$sp,0x18 -/* f00c480: 03e00008 */ jr $ra -/* f00c484: 00000000 */ nop -/* f00c488: 00000000 */ nop -/* f00c48c: 00000000 */ nop -); +void func0f00c390(void) +{ + s32 i; + s32 j; + + var8009cda0 = malloc(ALIGN16(g_Vars.roomcount * 2), 4); + var8009cda4 = malloc(256 * sizeof(struct var8009cda4), 4); + + for (i = 0; i < g_Vars.roomcount; i++) { + var8009cda0[i] = -1; + } + + for (i = 0; i < 256; i++) { + var8009cda4[i].unk00[0] = -2; + + for (j = 1; j < ARRAYCOUNT(var8009cda4[i].unk00); j++) { + var8009cda4[i].unk00[j] = -1; + } + } +} diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index b7af15281..a4a2a7869 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -14630,8 +14630,8 @@ u32 var8009cd90 = 0; u32 var8009cd94 = 0; u8 g_RecentQuipsIndex = 0; u32 var8009cd9c = 0; -u32 var8009cda0 = 0; -u32 var8009cda4 = 0; +s16 *var8009cda0 = NULL; +struct var8009cda4 *var8009cda4 = NULL; u32 var8009cda8 = 0; u32 var8009cdac = 0; u32 var8009cdb0 = 0; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 340541d3e..63f15bcff 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -529,8 +529,8 @@ extern u32 g_ActiveMaleHeads[8]; extern u32 g_ActiveFemaleHeads[8]; extern s32 g_RecentQuipsPlayed[5]; extern u8 g_RecentQuipsIndex; -extern u32 var8009cda0; -extern u32 var8009cda4; +extern s16 *var8009cda0; +extern struct var8009cda4 *var8009cda4; extern u32 var8009cdac; extern u32 var8009cdb0; extern struct weaponobj *g_ProxyMines[30]; diff --git a/src/include/types.h b/src/include/types.h index c9f3f89fc..5e4fcaa4e 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6749,4 +6749,8 @@ struct var800a41b0 { /*0x78*/ u32 unk78; }; +struct var8009cda4 { + s16 unk00[8]; +}; + #endif