From d1adc6eee46f1ef5e9fef46bd0772b1c4a4089c5 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 23 Dec 2019 21:56:18 +1000 Subject: [PATCH] Decompile freeFireslot --- src/game/chr/chr.c | 12 +- src/game/game_0109d0.c | 4 +- src/game/game_066310.c | 4 +- src/game/game_097a50.c | 28 ++-- src/game/game_0abe70.c | 8 +- src/game/game_0b28d0.c | 8 +- src/gvars/gvars.c | 241 +-------------------------------- src/include/game/game_097a50.h | 2 +- src/include/gvars/gvars.h | 2 +- src/include/types.h | 15 ++ 10 files changed, 46 insertions(+), 278 deletions(-) diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index b2db37064..30e436e0f 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -6504,8 +6504,8 @@ glabel func0f022fe0 /* f022fe0: 27bdffe0 */ addiu $sp,$sp,-32 /* f022fe4: afbf0014 */ sw $ra,0x14($sp) /* f022fe8: 8c830004 */ lw $v1,0x4($a0) -/* f022fec: 3c18800a */ lui $t8,%hi(var8009d150) -/* f022ff0: 2718d150 */ addiu $t8,$t8,%lo(var8009d150) +/* f022fec: 3c18800a */ lui $t8,%hi(g_Fireslots) +/* f022ff0: 2718d150 */ addiu $t8,$t8,%lo(g_Fireslots) /* f022ff4: 8062017c */ lb $v0,0x17c($v1) /* f022ff8: 04400008 */ bltz $v0,.L0f02301c /* f022ffc: 00027080 */ sll $t6,$v0,0x2 @@ -6518,8 +6518,8 @@ glabel func0f022fe0 /* f023018: 8fa3001c */ lw $v1,0x1c($sp) .L0f02301c: /* f02301c: 8062017d */ lb $v0,0x17d($v1) -/* f023020: 3c09800a */ lui $t1,%hi(var8009d150) -/* f023024: 2529d150 */ addiu $t1,$t1,%lo(var8009d150) +/* f023020: 3c09800a */ lui $t1,%hi(g_Fireslots) +/* f023024: 2529d150 */ addiu $t1,$t1,%lo(g_Fireslots) /* f023028: 04400008 */ bltz $v0,.L0f02304c /* f02302c: 0002c880 */ sll $t9,$v0,0x2 /* f023030: 0322c823 */ subu $t9,$t9,$v0 @@ -36779,8 +36779,8 @@ glabel func0f03e29c /* f03e328: 0003c080 */ sll $t8,$v1,0x2 /* f03e32c: 8fab0070 */ lw $t3,0x70($sp) /* f03e330: 0303c023 */ subu $t8,$t8,$v1 -/* f03e334: 3c19800a */ lui $t9,%hi(var8009d150) -/* f03e338: 2739d150 */ addiu $t9,$t9,%lo(var8009d150) +/* f03e334: 3c19800a */ lui $t9,%hi(g_Fireslots) +/* f03e338: 2739d150 */ addiu $t9,$t9,%lo(g_Fireslots) /* f03e33c: 0018c100 */ sll $t8,$t8,0x4 /* f03e340: 11600013 */ beqz $t3,.L0f03e390 /* f03e344: 03194021 */ addu $t0,$t8,$t9 diff --git a/src/game/game_0109d0.c b/src/game/game_0109d0.c index 68f683151..1d0df2af0 100644 --- a/src/game/game_0109d0.c +++ b/src/game/game_0109d0.c @@ -155,11 +155,11 @@ glabel func0f010b20 /* f010b6c: 1420fffd */ bnez $at,.L0f010b64 /* f010b70: ac60fffc */ sw $zero,-0x4($v1) /* f010b74: 3c018007 */ lui $at,0x8007 -/* f010b78: 3c03800a */ lui $v1,%hi(var8009d150) +/* f010b78: 3c03800a */ lui $v1,%hi(g_Fireslots) /* f010b7c: 3c04800a */ lui $a0,%hi(var8009d510) /* f010b80: ac200524 */ sw $zero,0x524($at) /* f010b84: 2484d510 */ addiu $a0,$a0,%lo(var8009d510) -/* f010b88: 2463d150 */ addiu $v1,$v1,%lo(var8009d150) +/* f010b88: 2463d150 */ addiu $v1,$v1,%lo(g_Fireslots) /* f010b8c: 2402ffff */ addiu $v0,$zero,-1 .L0f010b90: /* f010b90: 24630030 */ addiu $v1,$v1,0x30 diff --git a/src/game/game_066310.c b/src/game/game_066310.c index 658f699f4..f759b00f3 100644 --- a/src/game/game_066310.c +++ b/src/game/game_066310.c @@ -29700,8 +29700,8 @@ glabel func0f07f6d0 /* f07f704: afb30024 */ sw $s3,0x24($sp) /* f07f708: 12400076 */ beqz $s2,.L0f07f8e4 /* f07f70c: afb00018 */ sw $s0,0x18($sp) -/* f07f710: 3c13800a */ lui $s3,%hi(var8009d150) -/* f07f714: 2673d150 */ addiu $s3,$s3,%lo(var8009d150) +/* f07f710: 3c13800a */ lui $s3,%hi(g_Fireslots) +/* f07f714: 2673d150 */ addiu $s3,$s3,%lo(g_Fireslots) /* f07f718: 241e0001 */ addiu $s8,$zero,0x1 /* f07f71c: 24170004 */ addiu $s7,$zero,0x4 /* f07f720: 24160003 */ addiu $s6,$zero,0x3 diff --git a/src/game/game_097a50.c b/src/game/game_097a50.c index adfc3c617..4d6d2678c 100644 --- a/src/game/game_097a50.c +++ b/src/game/game_097a50.c @@ -18224,28 +18224,20 @@ glabel func0f0a70a8 /* f0a70c4: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel freeFireslot -/* f0a70c8: 04800009 */ bltz $a0,.L0f0a70f0 -/* f0a70cc: 28810014 */ slti $at,$a0,0x14 -/* f0a70d0: 10200007 */ beqz $at,.L0f0a70f0 -/* f0a70d4: 240effff */ addiu $t6,$zero,-1 -/* f0a70d8: 00047880 */ sll $t7,$a0,0x2 -/* f0a70dc: 01e47823 */ subu $t7,$t7,$a0 -/* f0a70e0: 000f7900 */ sll $t7,$t7,0x4 -/* f0a70e4: 3c01800a */ lui $at,0x800a -/* f0a70e8: 002f0821 */ addu $at,$at,$t7 -/* f0a70ec: ac2ed150 */ sw $t6,-0x2eb0($at) -.L0f0a70f0: -/* f0a70f0: 03e00008 */ jr $ra -/* f0a70f4: 2402ffff */ addiu $v0,$zero,-1 -); +s8 freeFireslot(s32 fireslot_id) +{ + if (fireslot_id >= 0 && fireslot_id < 20) { + g_Fireslots[fireslot_id].unk00 = -1; + } + + return -1; +} GLOBAL_ASM( glabel func0f0a70f8 -/* f0a70f8: 3c04800a */ lui $a0,%hi(var8009d150) +/* f0a70f8: 3c04800a */ lui $a0,%hi(g_Fireslots) /* f0a70fc: 2403ffff */ addiu $v1,$zero,-1 -/* f0a7100: 2484d150 */ addiu $a0,$a0,%lo(var8009d150) +/* f0a7100: 2484d150 */ addiu $a0,$a0,%lo(g_Fireslots) /* f0a7104: 00001025 */ or $v0,$zero,$zero /* f0a7108: 24050014 */ addiu $a1,$zero,0x14 .L0f0a710c: diff --git a/src/game/game_0abe70.c b/src/game/game_0abe70.c index 58906e8e8..323f5ccbd 100644 --- a/src/game/game_0abe70.c +++ b/src/game/game_0abe70.c @@ -507,12 +507,12 @@ glabel func0f0ac138 /* f0ac3f4: 46105300 */ add.s $f12,$f10,$f16 /* f0ac3f8: 3c017f1b */ lui $at,%hi(var7f1acc48) /* f0ac3fc: c428cc48 */ lwc1 $f8,%lo(var7f1acc48)($at) -/* f0ac400: 3c0a800a */ lui $t2,%hi(var8009d150) +/* f0ac400: 3c0a800a */ lui $t2,%hi(g_Fireslots) /* f0ac404: 8fa20024 */ lw $v0,0x24($sp) /* f0ac408: 4600403c */ c.lt.s $f8,$f0 /* f0ac40c: 2401fffe */ addiu $at,$zero,-2 /* f0ac410: 8faf0060 */ lw $t7,0x60($sp) -/* f0ac414: 254ad150 */ addiu $t2,$t2,%lo(var8009d150) +/* f0ac414: 254ad150 */ addiu $t2,$t2,%lo(g_Fireslots) /* f0ac418: 45000003 */ bc1f .L0f0ac428 /* f0ac41c: 8fae0020 */ lw $t6,0x20($sp) /* f0ac420: 55e10022 */ bnel $t7,$at,.L0f0ac4ac @@ -529,8 +529,8 @@ glabel func0f0ac138 /* f0ac448: 0fc2af9c */ jal func0f0abe70 /* f0ac44c: 8fa70018 */ lw $a3,0x18($sp) /* f0ac450: 8fac0020 */ lw $t4,0x20($sp) -/* f0ac454: 3c0f800a */ lui $t7,%hi(var8009d150) -/* f0ac458: 25efd150 */ addiu $t7,$t7,%lo(var8009d150) +/* f0ac454: 3c0f800a */ lui $t7,%hi(g_Fireslots) +/* f0ac458: 25efd150 */ addiu $t7,$t7,%lo(g_Fireslots) /* f0ac45c: 818b017c */ lb $t3,0x17c($t4) /* f0ac460: 8fb80074 */ lw $t8,0x74($sp) /* f0ac464: 8fb9002c */ lw $t9,0x2c($sp) diff --git a/src/game/game_0b28d0.c b/src/game/game_0b28d0.c index 54e65e3f2..c55e2d81e 100644 --- a/src/game/game_0b28d0.c +++ b/src/game/game_0b28d0.c @@ -17881,21 +17881,21 @@ glabel func0f0c228c /* f0c22f0: 8fbf0014 */ lw $ra,0x14($sp) /* f0c22f4: 8045017c */ lb $a1,0x17c($v0) /* f0c22f8: 00401825 */ or $v1,$v0,$zero -/* f0c22fc: 3c0a800a */ lui $t2,%hi(var8009d150) +/* f0c22fc: 3c0a800a */ lui $t2,%hi(g_Fireslots) /* f0c2300: 04a00009 */ bltz $a1,.L0f0c2328 /* f0c2304: 00054080 */ sll $t0,$a1,0x2 /* f0c2308: 01054023 */ subu $t0,$t0,$a1 /* f0c230c: 00084100 */ sll $t0,$t0,0x4 /* f0c2310: 25090004 */ addiu $t1,$t0,0x4 -/* f0c2314: 254ad150 */ addiu $t2,$t2,%lo(var8009d150) +/* f0c2314: 254ad150 */ addiu $t2,$t2,%lo(g_Fireslots) /* f0c2318: 012a2021 */ addu $a0,$t1,$t2 /* f0c231c: 0fc2b6ef */ jal func0f0adbbc /* f0c2320: afa2001c */ sw $v0,0x1c($sp) /* f0c2324: 8fa3001c */ lw $v1,0x1c($sp) .L0f0c2328: /* f0c2328: 8062017d */ lb $v0,0x17d($v1) -/* f0c232c: 3c0d800a */ lui $t5,%hi(var8009d150) -/* f0c2330: 25add150 */ addiu $t5,$t5,%lo(var8009d150) +/* f0c232c: 3c0d800a */ lui $t5,%hi(g_Fireslots) +/* f0c2330: 25add150 */ addiu $t5,$t5,%lo(g_Fireslots) /* f0c2334: 04400006 */ bltz $v0,.L0f0c2350 /* f0c2338: 00025880 */ sll $t3,$v0,0x2 /* f0c233c: 01625823 */ subu $t3,$t3,$v0 diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index da5e81c9a..f8108cbb3 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16387,246 +16387,7 @@ u32 var8009d140 = 0; u32 var8009d144 = 0; u32 var8009d148 = 0; u32 var8009d14c = 0; -u32 var8009d150 = 0; -u32 var8009d154 = 0; -u32 var8009d158 = 0; -u32 var8009d15c = 0; -u32 var8009d160 = 0; -u32 var8009d164 = 0; -u32 var8009d168 = 0; -u32 var8009d16c = 0; -u32 var8009d170 = 0; -u32 var8009d174 = 0; -u32 var8009d178 = 0; -u32 var8009d17c = 0; -u32 var8009d180 = 0; -u32 var8009d184 = 0; -u32 var8009d188 = 0; -u32 var8009d18c = 0; -u32 var8009d190 = 0; -u32 var8009d194 = 0; -u32 var8009d198 = 0; -u32 var8009d19c = 0; -u32 var8009d1a0 = 0; -u32 var8009d1a4 = 0; -u32 var8009d1a8 = 0; -u32 var8009d1ac = 0; -u32 var8009d1b0 = 0; -u32 var8009d1b4 = 0; -u32 var8009d1b8 = 0; -u32 var8009d1bc = 0; -u32 var8009d1c0 = 0; -u32 var8009d1c4 = 0; -u32 var8009d1c8 = 0; -u32 var8009d1cc = 0; -u32 var8009d1d0 = 0; -u32 var8009d1d4 = 0; -u32 var8009d1d8 = 0; -u32 var8009d1dc = 0; -u32 var8009d1e0 = 0; -u32 var8009d1e4 = 0; -u32 var8009d1e8 = 0; -u32 var8009d1ec = 0; -u32 var8009d1f0 = 0; -u32 var8009d1f4 = 0; -u32 var8009d1f8 = 0; -u32 var8009d1fc = 0; -u32 var8009d200 = 0; -u32 var8009d204 = 0; -u32 var8009d208 = 0; -u32 var8009d20c = 0; -u32 var8009d210 = 0; -u32 var8009d214 = 0; -u32 var8009d218 = 0; -u32 var8009d21c = 0; -u32 var8009d220 = 0; -u32 var8009d224 = 0; -u32 var8009d228 = 0; -u32 var8009d22c = 0; -u32 var8009d230 = 0; -u32 var8009d234 = 0; -u32 var8009d238 = 0; -u32 var8009d23c = 0; -u32 var8009d240 = 0; -u32 var8009d244 = 0; -u32 var8009d248 = 0; -u32 var8009d24c = 0; -u32 var8009d250 = 0; -u32 var8009d254 = 0; -u32 var8009d258 = 0; -u32 var8009d25c = 0; -u32 var8009d260 = 0; -u32 var8009d264 = 0; -u32 var8009d268 = 0; -u32 var8009d26c = 0; -u32 var8009d270 = 0; -u32 var8009d274 = 0; -u32 var8009d278 = 0; -u32 var8009d27c = 0; -u32 var8009d280 = 0; -u32 var8009d284 = 0; -u32 var8009d288 = 0; -u32 var8009d28c = 0; -u32 var8009d290 = 0; -u32 var8009d294 = 0; -u32 var8009d298 = 0; -u32 var8009d29c = 0; -u32 var8009d2a0 = 0; -u32 var8009d2a4 = 0; -u32 var8009d2a8 = 0; -u32 var8009d2ac = 0; -u32 var8009d2b0 = 0; -u32 var8009d2b4 = 0; -u32 var8009d2b8 = 0; -u32 var8009d2bc = 0; -u32 var8009d2c0 = 0; -u32 var8009d2c4 = 0; -u32 var8009d2c8 = 0; -u32 var8009d2cc = 0; -u32 var8009d2d0 = 0; -u32 var8009d2d4 = 0; -u32 var8009d2d8 = 0; -u32 var8009d2dc = 0; -u32 var8009d2e0 = 0; -u32 var8009d2e4 = 0; -u32 var8009d2e8 = 0; -u32 var8009d2ec = 0; -u32 var8009d2f0 = 0; -u32 var8009d2f4 = 0; -u32 var8009d2f8 = 0; -u32 var8009d2fc = 0; -u32 var8009d300 = 0; -u32 var8009d304 = 0; -u32 var8009d308 = 0; -u32 var8009d30c = 0; -u32 var8009d310 = 0; -u32 var8009d314 = 0; -u32 var8009d318 = 0; -u32 var8009d31c = 0; -u32 var8009d320 = 0; -u32 var8009d324 = 0; -u32 var8009d328 = 0; -u32 var8009d32c = 0; -u32 var8009d330 = 0; -u32 var8009d334 = 0; -u32 var8009d338 = 0; -u32 var8009d33c = 0; -u32 var8009d340 = 0; -u32 var8009d344 = 0; -u32 var8009d348 = 0; -u32 var8009d34c = 0; -u32 var8009d350 = 0; -u32 var8009d354 = 0; -u32 var8009d358 = 0; -u32 var8009d35c = 0; -u32 var8009d360 = 0; -u32 var8009d364 = 0; -u32 var8009d368 = 0; -u32 var8009d36c = 0; -u32 var8009d370 = 0; -u32 var8009d374 = 0; -u32 var8009d378 = 0; -u32 var8009d37c = 0; -u32 var8009d380 = 0; -u32 var8009d384 = 0; -u32 var8009d388 = 0; -u32 var8009d38c = 0; -u32 var8009d390 = 0; -u32 var8009d394 = 0; -u32 var8009d398 = 0; -u32 var8009d39c = 0; -u32 var8009d3a0 = 0; -u32 var8009d3a4 = 0; -u32 var8009d3a8 = 0; -u32 var8009d3ac = 0; -u32 var8009d3b0 = 0; -u32 var8009d3b4 = 0; -u32 var8009d3b8 = 0; -u32 var8009d3bc = 0; -u32 var8009d3c0 = 0; -u32 var8009d3c4 = 0; -u32 var8009d3c8 = 0; -u32 var8009d3cc = 0; -u32 var8009d3d0 = 0; -u32 var8009d3d4 = 0; -u32 var8009d3d8 = 0; -u32 var8009d3dc = 0; -u32 var8009d3e0 = 0; -u32 var8009d3e4 = 0; -u32 var8009d3e8 = 0; -u32 var8009d3ec = 0; -u32 var8009d3f0 = 0; -u32 var8009d3f4 = 0; -u32 var8009d3f8 = 0; -u32 var8009d3fc = 0; -u32 var8009d400 = 0; -u32 var8009d404 = 0; -u32 var8009d408 = 0; -u32 var8009d40c = 0; -u32 var8009d410 = 0; -u32 var8009d414 = 0; -u32 var8009d418 = 0; -u32 var8009d41c = 0; -u32 var8009d420 = 0; -u32 var8009d424 = 0; -u32 var8009d428 = 0; -u32 var8009d42c = 0; -u32 var8009d430 = 0; -u32 var8009d434 = 0; -u32 var8009d438 = 0; -u32 var8009d43c = 0; -u32 var8009d440 = 0; -u32 var8009d444 = 0; -u32 var8009d448 = 0; -u32 var8009d44c = 0; -u32 var8009d450 = 0; -u32 var8009d454 = 0; -u32 var8009d458 = 0; -u32 var8009d45c = 0; -u32 var8009d460 = 0; -u32 var8009d464 = 0; -u32 var8009d468 = 0; -u32 var8009d46c = 0; -u32 var8009d470 = 0; -u32 var8009d474 = 0; -u32 var8009d478 = 0; -u32 var8009d47c = 0; -u32 var8009d480 = 0; -u32 var8009d484 = 0; -u32 var8009d488 = 0; -u32 var8009d48c = 0; -u32 var8009d490 = 0; -u32 var8009d494 = 0; -u32 var8009d498 = 0; -u32 var8009d49c = 0; -u32 var8009d4a0 = 0; -u32 var8009d4a4 = 0; -u32 var8009d4a8 = 0; -u32 var8009d4ac = 0; -u32 var8009d4b0 = 0; -u32 var8009d4b4 = 0; -u32 var8009d4b8 = 0; -u32 var8009d4bc = 0; -u32 var8009d4c0 = 0; -u32 var8009d4c4 = 0; -u32 var8009d4c8 = 0; -u32 var8009d4cc = 0; -u32 var8009d4d0 = 0; -u32 var8009d4d4 = 0; -u32 var8009d4d8 = 0; -u32 var8009d4dc = 0; -u32 var8009d4e0 = 0; -u32 var8009d4e4 = 0; -u32 var8009d4e8 = 0; -u32 var8009d4ec = 0; -u32 var8009d4f0 = 0; -u32 var8009d4f4 = 0; -u32 var8009d4f8 = 0; -u32 var8009d4fc = 0; -u32 var8009d500 = 0; -u32 var8009d504 = 0; -u32 var8009d508 = 0; -u32 var8009d50c = 0; +struct fireslot g_Fireslots[20] = {0}; u32 var8009d510 = 0; u32 var8009d514 = 0; u32 var8009d518 = 0; diff --git a/src/include/game/game_097a50.h b/src/include/game/game_097a50.h index 4c74d36b5..6880d360a 100644 --- a/src/include/game/game_097a50.h +++ b/src/include/game/game_097a50.h @@ -139,7 +139,7 @@ u32 func0f0a5550(void); u32 func0f0a695c(void); u32 func0f0a6c30(void); u32 func0f0a70a8(void); -s8 freeFireslot(s8 fireslot); +s8 freeFireslot(s32 fireslot); u32 func0f0a70f8(void); u32 func0f0a7138(void); u32 func0f0a7d5c(void); diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 4f381e4a6..9a608bd93 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -601,7 +601,7 @@ extern u32 var8009d0d8; extern u32 var8009d0e0; extern u32 var8009d0f0; extern u32 var8009d144; -extern u32 var8009d150; +extern struct fireslot g_Fireslots[]; extern u32 var8009d510; extern u32 var8009da60; extern u32 var8009dbe0; diff --git a/src/include/types.h b/src/include/types.h index ff00cfd91..5f8fc12c3 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2811,4 +2811,19 @@ struct room { /*0x88*/ u32 unk88; }; +struct fireslot { + /*0x00*/ s32 unk00; + /*0x04*/ u32 unk04; + /*0x08*/ u32 unk08; + /*0x0c*/ u32 unk0c; + /*0x10*/ u32 unk10; + /*0x14*/ u32 unk14; + /*0x18*/ u32 unk18; + /*0x1c*/ u32 unk1c; + /*0x20*/ u32 unk20; + /*0x24*/ u32 unk24; + /*0x28*/ u32 unk28; + /*0x2c*/ u32 unk2c; +}; + #endif