Decompile smokeCreateAtPropIfNecessary

This commit is contained in:
Ryan Dwyer 2020-06-12 23:02:21 +10:00
parent 193f360551
commit df511f3278
8 changed files with 128 additions and 164 deletions

View File

@ -100,21 +100,21 @@ glabel func0f013130
/* f01313c: 24010001 */ addiu $at,$zero,0x1
/* f013140: 15c10006 */ bne $t6,$at,.L0f01315c
/* f013144: afbf0014 */ sw $ra,0x14($sp)
/* f013148: 3c08800a */ lui $t0,%hi(var800a3444)
/* f01314c: 25083444 */ addiu $t0,$t0,%lo(var800a3444)
/* f013148: 3c08800a */ lui $t0,%hi(g_NumSmokes)
/* f01314c: 25083444 */ addiu $t0,$t0,%lo(g_NumSmokes)
/* f013150: 240f000a */ addiu $t7,$zero,0xa
/* f013154: 10000005 */ beqz $zero,.L0f01316c
/* f013158: ad0f0000 */ sw $t7,0x0($t0)
.L0f01315c:
/* f01315c: 3c08800a */ lui $t0,%hi(var800a3444)
/* f013160: 25083444 */ addiu $t0,$t0,%lo(var800a3444)
/* f01315c: 3c08800a */ lui $t0,%hi(g_NumSmokes)
/* f013160: 25083444 */ addiu $t0,$t0,%lo(g_NumSmokes)
/* f013164: 24180014 */ addiu $t8,$zero,0x14
/* f013168: ad180000 */ sw $t8,0x0($t0)
.L0f01316c:
/* f01316c: 3c19800a */ lui $t9,%hi(g_Vars+0x4b4)
/* f013170: 8f39a474 */ lw $t9,%lo(g_Vars+0x4b4)($t9)
/* f013174: 3c05800a */ lui $a1,%hi(var800a3440)
/* f013178: 24a53440 */ addiu $a1,$a1,%lo(var800a3440)
/* f013174: 3c05800a */ lui $a1,%hi(g_Smokes)
/* f013178: 24a53440 */ addiu $a1,$a1,%lo(g_Smokes)
/* f01317c: 2b21005a */ slti $at,$t9,0x5a
/* f013180: 54200003 */ bnezl $at,.L0f013190
/* f013184: 8d020000 */ lw $v0,0x0($t0)
@ -135,11 +135,11 @@ glabel func0f013130
/* f0131b8: 00042080 */ sll $a0,$a0,0x2
/* f0131bc: 0c0048f2 */ jal malloc
/* f0131c0: 24050004 */ addiu $a1,$zero,0x4
/* f0131c4: 3c08800a */ lui $t0,%hi(var800a3444)
/* f0131c8: 25083444 */ addiu $t0,$t0,%lo(var800a3444)
/* f0131c4: 3c08800a */ lui $t0,%hi(g_NumSmokes)
/* f0131c8: 25083444 */ addiu $t0,$t0,%lo(g_NumSmokes)
/* f0131cc: 8d090000 */ lw $t1,0x0($t0)
/* f0131d0: 3c05800a */ lui $a1,%hi(var800a3440)
/* f0131d4: 24a53440 */ addiu $a1,$a1,%lo(var800a3440)
/* f0131d0: 3c05800a */ lui $a1,%hi(g_Smokes)
/* f0131d4: 24a53440 */ addiu $a1,$a1,%lo(g_Smokes)
/* f0131d8: aca20000 */ sw $v0,0x0($a1)
/* f0131dc: 1920001b */ blez $t1,.L0f01324c
/* f0131e0: 00002025 */ or $a0,$zero,$zero

View File

@ -15,15 +15,15 @@ GLOBAL_ASM(
glabel func0f015330
/* f015330: 27bdffd8 */ addiu $sp,$sp,-40
/* f015334: afb1001c */ sw $s1,0x1c($sp)
/* f015338: 3c11800a */ lui $s1,%hi(var800a3440)
/* f01533c: 26313440 */ addiu $s1,$s1,%lo(var800a3440)
/* f015338: 3c11800a */ lui $s1,%hi(g_Smokes)
/* f01533c: 26313440 */ addiu $s1,$s1,%lo(g_Smokes)
/* f015340: 8e2e0000 */ lw $t6,0x0($s1)
/* f015344: afbf0024 */ sw $ra,0x24($sp)
/* f015348: afb20020 */ sw $s2,0x20($sp)
/* f01534c: 11c0001f */ beqz $t6,.L0f0153cc
/* f015350: afb00018 */ sw $s0,0x18($sp)
/* f015354: 3c02800a */ lui $v0,%hi(var800a3444)
/* f015358: 8c423444 */ lw $v0,%lo(var800a3444)($v0)
/* f015354: 3c02800a */ lui $v0,%hi(g_NumSmokes)
/* f015358: 8c423444 */ lw $v0,%lo(g_NumSmokes)($v0)
/* f01535c: 00009025 */ or $s2,$zero,$zero
/* f015360: 00008025 */ or $s0,$zero,$zero
/* f015364: 5840001a */ blezl $v0,.L0f0153d0
@ -45,10 +45,10 @@ glabel func0f015330
/* f0153a0: 0fc1810e */ jal propFree
/* f0153a4: 8d440000 */ lw $a0,0x0($t2)
/* f0153a8: 8e2b0000 */ lw $t3,0x0($s1)
/* f0153ac: 3c02800a */ lui $v0,%hi(var800a3444)
/* f0153ac: 3c02800a */ lui $v0,%hi(g_NumSmokes)
/* f0153b0: 01706021 */ addu $t4,$t3,$s0
/* f0153b4: ad800000 */ sw $zero,0x0($t4)
/* f0153b8: 8c423444 */ lw $v0,%lo(var800a3444)($v0)
/* f0153b8: 8c423444 */ lw $v0,%lo(g_NumSmokes)($v0)
/* f0153bc: 26520001 */ addiu $s2,$s2,0x1
.L0f0153c0:
/* f0153c0: 0242082a */ slt $at,$s2,$v0

View File

@ -2330,16 +2330,16 @@ glabel func0f19ecdc
/* f19efb4: 8c6f0000 */ lw $t7,0x0($v1)
/* f19efb8: 00008825 */ or $s1,$zero,$zero
.L0f19efbc:
/* f19efbc: 3c08800a */ lui $t0,%hi(var800a3444)
/* f19efc0: 25083444 */ addiu $t0,$t0,%lo(var800a3444)
/* f19efbc: 3c08800a */ lui $t0,%hi(g_NumSmokes)
/* f19efc0: 25083444 */ addiu $t0,$t0,%lo(g_NumSmokes)
/* f19efc4: 8d0d0000 */ lw $t5,0x0($t0)
/* f19efc8: 24070100 */ addiu $a3,$zero,0x100
/* f19efcc: 00002825 */ or $a1,$zero,$zero
/* f19efd0: 19a0001b */ blez $t5,.L0f19f040
/* f19efd4: 24040190 */ addiu $a0,$zero,0x190
/* f19efd8: 3c03800a */ lui $v1,%hi(var800a3440)
/* f19efd8: 3c03800a */ lui $v1,%hi(g_Smokes)
/* f19efdc: 44800000 */ mtc1 $zero,$f0
/* f19efe0: 24633440 */ addiu $v1,$v1,%lo(var800a3440)
/* f19efe0: 24633440 */ addiu $v1,$v1,%lo(g_Smokes)
/* f19efe4: 8c6e0000 */ lw $t6,0x0($v1)
.L0f19efe8:
/* f19efe8: 00001025 */ or $v0,$zero,$zero

View File

@ -997,7 +997,7 @@ glabel smokeCreate
/* f12e214: 00008825 */ or $s1,$zero,$zero
/* f12e218: 00009025 */ or $s2,$zero,$zero
/* f12e21c: 13000003 */ beqz $t8,.L0f12e22c
/* f12e220: 3c08800a */ lui $t0,%hi(var800a3444)
/* f12e220: 3c08800a */ lui $t0,%hi(g_NumSmokes)
/* f12e224: 10000001 */ beqz $zero,.L0f12e22c
/* f12e228: 24110001 */ addiu $s1,$zero,0x1
.L0f12e22c:
@ -1005,19 +1005,19 @@ glabel smokeCreate
/* f12e230: 00006825 */ or $t5,$zero,$zero
/* f12e234: 00003025 */ or $a2,$zero,$zero
/* f12e238: 13200003 */ beqz $t9,.L0f12e248
/* f12e23c: 3c1f800a */ lui $ra,%hi(var800a3440)
/* f12e23c: 3c1f800a */ lui $ra,%hi(g_Smokes)
/* f12e240: 10000001 */ beqz $zero,.L0f12e248
/* f12e244: 24120001 */ addiu $s2,$zero,0x1
.L0f12e248:
/* f12e248: 8c4e0070 */ lw $t6,0x70($v0)
/* f12e24c: 27ff3440 */ addiu $ra,$ra,%lo(var800a3440)
/* f12e24c: 27ff3440 */ addiu $ra,$ra,%lo(g_Smokes)
/* f12e250: 240c0024 */ addiu $t4,$zero,0x24
/* f12e254: 11c00003 */ beqz $t6,.L0f12e264
/* f12e258: 3c0b8008 */ lui $t3,%hi(g_SmokeTypes)
/* f12e25c: 10000001 */ beqz $zero,.L0f12e264
/* f12e260: 240d0001 */ addiu $t5,$zero,0x1
.L0f12e264:
/* f12e264: 8d083444 */ lw $t0,%lo(var800a3444)($t0)
/* f12e264: 8d083444 */ lw $t0,%lo(g_NumSmokes)($t0)
/* f12e268: 00004825 */ or $t1,$zero,$zero
/* f12e26c: 00003825 */ or $a3,$zero,$zero
/* f12e270: 1900003b */ blez $t0,.L0f12e360
@ -1052,13 +1052,13 @@ glabel smokeCreate
/* f12e2dc: 5321001e */ beql $t9,$at,.L0f12e358
/* f12e2e0: 00e8082a */ slt $at,$a3,$t0
/* f12e2e4: 032c0019 */ multu $t9,$t4
/* f12e2e8: 3c08800a */ lui $t0,%hi(var800a3444)
/* f12e2e8: 3c08800a */ lui $t0,%hi(g_NumSmokes)
/* f12e2ec: 00007012 */ mflo $t6
/* f12e2f0: 016e7821 */ addu $t7,$t3,$t6
/* f12e2f4: 85f80000 */ lh $t8,0x0($t7)
/* f12e2f8: a4780004 */ sh $t8,0x4($v1)
/* f12e2fc: 10000015 */ beqz $zero,.L0f12e354
/* f12e300: 8d083444 */ lw $t0,%lo(var800a3444)($t0)
/* f12e300: 8d083444 */ lw $t0,%lo(g_NumSmokes)($t0)
/* f12e304: 2a01000f */ slti $at,$s0,0xf
.L0f12e308:
/* f12e308: 14200012 */ bnez $at,.L0f12e354
@ -1073,12 +1073,12 @@ glabel smokeCreate
/* f12e32c: 55210009 */ bnel $t1,$at,.L0f12e354
/* f12e330: 25290001 */ addiu $t1,$t1,0x1
/* f12e334: 032c0019 */ multu $t9,$t4
/* f12e338: 3c08800a */ lui $t0,%hi(var800a3444)
/* f12e338: 3c08800a */ lui $t0,%hi(g_NumSmokes)
/* f12e33c: 00007012 */ mflo $t6
/* f12e340: 016e7821 */ addu $t7,$t3,$t6
/* f12e344: 85f80000 */ lh $t8,0x0($t7)
/* f12e348: a4580004 */ sh $t8,0x4($v0)
/* f12e34c: 8d083444 */ lw $t0,%lo(var800a3444)($t0)
/* f12e34c: 8d083444 */ lw $t0,%lo(g_NumSmokes)($t0)
/* f12e350: 25290001 */ addiu $t1,$t1,0x1
.L0f12e354:
/* f12e354: 00e8082a */ slt $at,$a3,$t0
@ -1157,8 +1157,8 @@ glabel smokeCreate
GLOBAL_ASM(
glabel func0f12e454
/* f12e454: 27bdffe0 */ addiu $sp,$sp,-32
/* f12e458: 3c0c800a */ lui $t4,%hi(var800a3444)
/* f12e45c: 8d8c3444 */ lw $t4,%lo(var800a3444)($t4)
/* f12e458: 3c0c800a */ lui $t4,%hi(g_NumSmokes)
/* f12e45c: 8d8c3444 */ lw $t4,%lo(g_NumSmokes)($t4)
/* f12e460: afb00018 */ sw $s0,0x18($sp)
/* f12e464: 00e08025 */ or $s0,$a3,$zero
/* f12e468: afbf001c */ sw $ra,0x1c($sp)
@ -1167,8 +1167,8 @@ glabel func0f12e454
/* f12e474: afa60028 */ sw $a2,0x28($sp)
/* f12e478: 1980003a */ blez $t4,.L0f12e564
/* f12e47c: 00004025 */ or $t0,$zero,$zero
/* f12e480: 3c09800a */ lui $t1,%hi(var800a3440)
/* f12e484: 8d293440 */ lw $t1,%lo(var800a3440)($t1)
/* f12e480: 3c09800a */ lui $t1,%hi(g_Smokes)
/* f12e484: 8d293440 */ lw $t1,%lo(g_Smokes)($t1)
/* f12e488: 3c0a8008 */ lui $t2,%hi(g_SmokeTypes)
/* f12e48c: 44800000 */ mtc1 $zero,$f0
/* f12e490: 254ae940 */ addiu $t2,$t2,%lo(g_SmokeTypes)
@ -1252,127 +1252,74 @@ glabel func0f12e454
/* f12e5ac: 00000000 */ sll $zero,$zero,0x0
);
GLOBAL_ASM(
glabel func0f12e5b0
/* f12e5b0: 27bdffe0 */ addiu $sp,$sp,-32
/* f12e5b4: afa7002c */ sw $a3,0x2c($sp)
/* f12e5b8: 87ae002e */ lh $t6,0x2e($sp)
/* f12e5bc: afb00018 */ sw $s0,0x18($sp)
/* f12e5c0: 24010016 */ addiu $at,$zero,0x16
/* f12e5c4: 00808025 */ or $s0,$a0,$zero
/* f12e5c8: afbf001c */ sw $ra,0x1c($sp)
/* f12e5cc: afa50024 */ sw $a1,0x24($sp)
/* f12e5d0: afa60028 */ sw $a2,0x28($sp)
/* f12e5d4: 15c10002 */ bne $t6,$at,.L0f12e5e0
/* f12e5d8: 24020001 */ addiu $v0,$zero,0x1
/* f12e5dc: 00001025 */ or $v0,$zero,$zero
.L0f12e5e0:
/* f12e5e0: 10400037 */ beqz $v0,.L0f12e6c0
/* f12e5e4: 3c09800a */ lui $t1,%hi(var800a3444)
/* f12e5e8: 8d293444 */ lw $t1,%lo(var800a3444)($t1)
/* f12e5ec: 00003825 */ or $a3,$zero,$zero
/* f12e5f0: 3c0a800a */ lui $t2,%hi(var800a3440)
/* f12e5f4: 19200032 */ blez $t1,.L0f12e6c0
/* f12e5f8: 240c0024 */ addiu $t4,$zero,0x24
/* f12e5fc: 8d4a3440 */ lw $t2,%lo(var800a3440)($t2)
/* f12e600: 3c0b8008 */ lui $t3,%hi(g_SmokeTypes)
/* f12e604: 44800000 */ mtc1 $zero,$f0
/* f12e608: 256be940 */ addiu $t3,$t3,%lo(g_SmokeTypes)
/* f12e60c: 24050190 */ addiu $a1,$zero,0x190
/* f12e610: 01403025 */ or $a2,$t2,$zero
.L0f12e614:
/* f12e614: 8ccf0000 */ lw $t7,0x0($a2)
/* f12e618: 51e00026 */ beqzl $t7,.L0f12e6b4
/* f12e61c: 24e70001 */ addiu $a3,$a3,0x1
/* f12e620: 8cd80198 */ lw $t8,0x198($a2)
/* f12e624: 56180023 */ bnel $s0,$t8,.L0f12e6b4
/* f12e628: 24e70001 */ addiu $a3,$a3,0x1
/* f12e62c: 94cd0006 */ lhu $t5,0x6($a2)
/* f12e630: 84d90004 */ lh $t9,0x4($a2)
/* f12e634: 00002025 */ or $a0,$zero,$zero
/* f12e638: 000d7242 */ srl $t6,$t5,0x9
/* f12e63c: 01cc0019 */ multu $t6,$t4
/* f12e640: 00077080 */ sll $t6,$a3,0x2
/* f12e644: 01c77023 */ subu $t6,$t6,$a3
/* f12e648: 000e7080 */ sll $t6,$t6,0x2
/* f12e64c: 01c77021 */ addu $t6,$t6,$a3
/* f12e650: 000e70c0 */ sll $t6,$t6,0x3
/* f12e654: 01c77023 */ subu $t6,$t6,$a3
/* f12e658: 000e7080 */ sll $t6,$t6,0x2
/* f12e65c: 014e1821 */ addu $v1,$t2,$t6
/* f12e660: 00001025 */ or $v0,$zero,$zero
/* f12e664: 00007812 */ mflo $t7
/* f12e668: 016fc021 */ addu $t8,$t3,$t7
/* f12e66c: 870d0000 */ lh $t5,0x0($t8)
/* f12e670: 032d082a */ slt $at,$t9,$t5
/* f12e674: 5020000f */ beqzl $at,.L0f12e6b4
/* f12e678: 24e70001 */ addiu $a3,$a3,0x1
.L0f12e67c:
/* f12e67c: c4640014 */ lwc1 $f4,0x14($v1)
/* f12e680: 24420028 */ addiu $v0,$v0,0x28
/* f12e684: 46040032 */ c.eq.s $f0,$f4
/* f12e688: 00000000 */ sll $zero,$zero,0x0
/* f12e68c: 45000002 */ bc1f .L0f12e698
/* f12e690: 00000000 */ sll $zero,$zero,0x0
/* f12e694: 24040001 */ addiu $a0,$zero,0x1
.L0f12e698:
/* f12e698: 1445fff8 */ bne $v0,$a1,.L0f12e67c
/* f12e69c: 24630028 */ addiu $v1,$v1,0x28
/* f12e6a0: 50800004 */ beqzl $a0,.L0f12e6b4
/* f12e6a4: 24e70001 */ addiu $a3,$a3,0x1
/* f12e6a8: 10000015 */ beqz $zero,.L0f12e700
/* f12e6ac: 00001025 */ or $v0,$zero,$zero
/* f12e6b0: 24e70001 */ addiu $a3,$a3,0x1
.L0f12e6b4:
/* f12e6b4: 00e9082a */ slt $at,$a3,$t1
/* f12e6b8: 1420ffd6 */ bnez $at,.L0f12e614
/* f12e6bc: 24c6019c */ addiu $a2,$a2,0x19c
.L0f12e6c0:
/* f12e6c0: 8fa40024 */ lw $a0,0x24($sp)
/* f12e6c4: 8fa50028 */ lw $a1,0x28($sp)
/* f12e6c8: 0fc4b870 */ jal smokeCreate
/* f12e6cc: 87a6002e */ lh $a2,0x2e($sp)
/* f12e6d0: 5040000b */ beqzl $v0,.L0f12e700
/* f12e6d4: 00001025 */ or $v0,$zero,$zero
/* f12e6d8: ac500198 */ sw $s0,0x198($v0)
/* f12e6dc: 8fb80030 */ lw $t8,0x30($sp)
/* f12e6e0: 904d0006 */ lbu $t5,0x6($v0)
/* f12e6e4: 33190001 */ andi $t9,$t8,0x1
/* f12e6e8: 31aefffe */ andi $t6,$t5,0xfffe
/* f12e6ec: 032e7825 */ or $t7,$t9,$t6
/* f12e6f0: a04f0006 */ sb $t7,0x6($v0)
/* f12e6f4: 10000002 */ beqz $zero,.L0f12e700
/* f12e6f8: 24020001 */ addiu $v0,$zero,0x1
/* f12e6fc: 00001025 */ or $v0,$zero,$zero
.L0f12e700:
/* f12e700: 8fbf001c */ lw $ra,0x1c($sp)
/* f12e704: 8fb00018 */ lw $s0,0x18($sp)
/* f12e708: 27bd0020 */ addiu $sp,$sp,0x20
/* f12e70c: 03e00008 */ jr $ra
/* f12e710: 00000000 */ sll $zero,$zero,0x0
);
/**
* Creates smoke, unless there is already smoke for this prop and any of the
* smokebits have a size of zero. Perhaps the caller is supposed to check if
* this function returns false and reuse the zero-sized smokebits if so?
*/
bool smokeCreateAtPropIfNecessary(struct prop *prop, struct coord *pos, s16 *rooms, s16 type, u32 arg4)
{
struct smoke *smoke;
s32 i;
s32 j;
bool checksmokes = true;
if (type == SMOKETYPE_22) {
checksmokes = false;
}
if (checksmokes) {
for (i = 0; i < g_NumSmokes; i++) {
if (g_Smokes[i].active && g_Smokes[i].prop == prop) {
bool fail = false;
if (g_Smokes[i].age < g_SmokeTypes[g_Smokes[i].type].duration) {
for (j = 0; j < 10; j++) {
if (g_Smokes[i].smokebits[j].size == 0) {
fail = true;
}
}
if (fail) {
return false;
}
}
}
}
}
smoke = smokeCreate(pos, rooms, type);
if (smoke) {
smoke->prop = prop;
smoke->unk06_07 = arg4;
return true;
}
return false;
}
void smokeCreateAtProp(struct prop *prop, s16 type)
{
func0f12e5b0(prop, &prop->pos, prop->rooms, type, false);
smokeCreateAtPropIfNecessary(prop, &prop->pos, prop->rooms, type, false);
}
void func0f12e74c(struct prop *prop, struct coord *pos, s16 *rooms, s16 type, bool arg4)
void func0f12e74c(struct prop *prop, struct coord *pos, s16 *rooms, s16 type, u32 arg4)
{
func0f12e5b0(prop, pos, rooms, type, true);
smokeCreateAtPropIfNecessary(prop, pos, rooms, type, true);
}
GLOBAL_ASM(
glabel func0f12e77c
/* f12e77c: 3c03800a */ lui $v1,%hi(var800a3444)
/* f12e780: 8c633444 */ lw $v1,%lo(var800a3444)($v1)
/* f12e77c: 3c03800a */ lui $v1,%hi(g_NumSmokes)
/* f12e780: 8c633444 */ lw $v1,%lo(g_NumSmokes)($v1)
/* f12e784: 00803025 */ or $a2,$a0,$zero
/* f12e788: 00002025 */ or $a0,$zero,$zero
/* f12e78c: 18600022 */ blez $v1,.L0f12e818
/* f12e790: 00001025 */ or $v0,$zero,$zero
/* f12e794: 3c088008 */ lui $t0,%hi(g_SmokeTypes)
/* f12e798: 3c07800a */ lui $a3,%hi(var800a3440)
/* f12e79c: 24e73440 */ addiu $a3,$a3,%lo(var800a3440)
/* f12e798: 3c07800a */ lui $a3,%hi(g_Smokes)
/* f12e79c: 24e73440 */ addiu $a3,$a3,%lo(g_Smokes)
/* f12e7a0: 2508e940 */ addiu $t0,$t0,%lo(g_SmokeTypes)
/* f12e7a4: 24090024 */ addiu $t1,$zero,0x24
.L0f12e7a8:
@ -1390,7 +1337,7 @@ glabel func0f12e77c
/* f12e7d4: 5540000e */ bnezl $t2,.L0f12e810
/* f12e7d8: 0043082a */ slt $at,$v0,$v1
/* f12e7dc: 94ab0006 */ lhu $t3,0x6($a1)
/* f12e7e0: 3c03800a */ lui $v1,%hi(var800a3444)
/* f12e7e0: 3c03800a */ lui $v1,%hi(g_NumSmokes)
/* f12e7e4: 000b6242 */ srl $t4,$t3,0x9
/* f12e7e8: 01890019 */ multu $t4,$t1
/* f12e7ec: 00006812 */ mflo $t5
@ -1400,7 +1347,7 @@ glabel func0f12e77c
/* f12e7fc: 8cf80000 */ lw $t8,0x0($a3)
/* f12e800: 0304c821 */ addu $t9,$t8,$a0
/* f12e804: af200198 */ sw $zero,0x198($t9)
/* f12e808: 8c633444 */ lw $v1,%lo(var800a3444)($v1)
/* f12e808: 8c633444 */ lw $v1,%lo(g_NumSmokes)($v1)
/* f12e80c: 0043082a */ slt $at,$v0,$v1
.L0f12e810:
/* f12e810: 1420ffe5 */ bnez $at,.L0f12e7a8
@ -2334,16 +2281,16 @@ glabel func0f12f230
GLOBAL_ASM(
glabel func0f12f5f8
/* f12f5f8: 3c03800a */ lui $v1,%hi(var800a3444)
/* f12f5fc: 8c633444 */ lw $v1,%lo(var800a3444)($v1)
/* f12f5f8: 3c03800a */ lui $v1,%hi(g_NumSmokes)
/* f12f5fc: 8c633444 */ lw $v1,%lo(g_NumSmokes)($v1)
/* f12f600: 27bdfff0 */ addiu $sp,$sp,-16
/* f12f604: afb1000c */ sw $s1,0xc($sp)
/* f12f608: afb00008 */ sw $s0,0x8($sp)
/* f12f60c: 18600026 */ blez $v1,.L0f12f6a8
/* f12f610: 00001025 */ or $v0,$zero,$zero
/* f12f614: 3c108008 */ lui $s0,%hi(g_SmokeTypes)
/* f12f618: 3c09800a */ lui $t1,%hi(var800a3440)
/* f12f61c: 25293440 */ addiu $t1,$t1,%lo(var800a3440)
/* f12f618: 3c09800a */ lui $t1,%hi(g_Smokes)
/* f12f61c: 25293440 */ addiu $t1,$t1,%lo(g_Smokes)
/* f12f620: 2610e940 */ addiu $s0,$s0,%lo(g_SmokeTypes)
/* f12f624: 00002825 */ or $a1,$zero,$zero
/* f12f628: 24110024 */ addiu $s1,$zero,0x24
@ -2370,12 +2317,12 @@ glabel func0f12f5f8
/* f12f678: 51b80009 */ beql $t5,$t8,.L0f12f6a0
/* f12f67c: 0043082a */ slt $at,$v0,$v1
/* f12f680: 03110019 */ multu $t8,$s1
/* f12f684: 3c03800a */ lui $v1,%hi(var800a3444)
/* f12f684: 3c03800a */ lui $v1,%hi(g_NumSmokes)
/* f12f688: 0000c812 */ mflo $t9
/* f12f68c: 02197021 */ addu $t6,$s0,$t9
/* f12f690: 85cf0000 */ lh $t7,0x0($t6)
/* f12f694: a4cf0004 */ sh $t7,0x4($a2)
/* f12f698: 8c633444 */ lw $v1,%lo(var800a3444)($v1)
/* f12f698: 8c633444 */ lw $v1,%lo(g_NumSmokes)($v1)
/* f12f69c: 0043082a */ slt $at,$v0,$v1
.L0f12f6a0:
/* f12f6a0: 1420ffe6 */ bnez $at,.L0f12f63c

View File

@ -16579,8 +16579,8 @@ u32 var800a3430 = 0;
u32 var800a3434 = 0;
u32 var800a3438 = 0;
u32 var800a343c = 0;
u32 var800a3440 = 0;
u32 var800a3444 = 0;
struct smoke *g_Smokes = NULL;
s32 g_NumSmokes = 0;
u32 var800a3448 = 0;
u32 var800a344c = 0;
u32 var800a3450 = 0;

View File

@ -6,9 +6,9 @@
u32 func0f12d3f0(void);
struct smoke *smokeCreate(struct coord *pos, s16 *rooms, s16 type);
u32 func0f12e454(void);
bool func0f12e5b0(struct prop *prop, struct coord *pos, s16 *rooms, s16 type, bool arg4);
bool smokeCreateAtPropIfNecessary(struct prop *prop, struct coord *pos, s16 *rooms, s16 type, u32 arg4);
void smokeCreateAtProp(struct prop *prop, s16 type);
void func0f12e74c(struct prop *prop, struct coord *pos, s16 *rooms, s16 type, bool arg4);
void func0f12e74c(struct prop *prop, struct coord *pos, s16 *rooms, s16 type, u32 arg4);
u32 func0f12e77c(void);
struct smoke *smokeCreateSimple(struct coord *pos, s16 *rooms, s16 type);
u32 func0f12e848(void);

View File

@ -685,8 +685,8 @@ extern u32 var800a3410;
extern u32 var800a3420;
extern u32 var800a3430;
extern u32 var800a3434;
extern u32 var800a3440;
extern u32 var800a3444;
extern struct smoke *g_Smokes;
extern s32 g_NumSmokes;
extern u32 var800a3448;
extern u32 var800a3488;
extern struct spark g_Sparks[100];

View File

@ -4555,21 +4555,38 @@ struct explosion {
};
struct smoketype {
u16 duration;
u16 fadespeed;
u16 spreadspeed;
u16 size;
f32 bgrotatespeed;
u32 colour;
f32 fgrotatespeed;
u16 numclouds;
f32 unk18;
f32 unk1c;
f32 unk20;
/*0x00*/ s16 duration;
/*0x02*/ u16 fadespeed;
/*0x04*/ u16 spreadspeed;
/*0x06*/ u16 size;
/*0x08*/ f32 bgrotatespeed;
/*0x0c*/ u32 colour;
/*0x10*/ f32 fgrotatespeed;
/*0x14*/ u16 numclouds;
/*0x18*/ f32 unk18;
/*0x1c*/ f32 unk1c;
/*0x20*/ f32 unk20;
};
struct smokebit {
/*0x00*/ struct coord pos;
/*0x0c*/ f32 size;
/*0x10*/ u32 rot;
/*0x14*/ u32 deltarot;
/*0x18*/ u32 offset1;
/*0x1c*/ u32 offset2;
/*0x20*/ u32 alpha;
/*0x24*/ u16 count;
};
struct smoke {
u32 unk00;
/*0x000*/ u32 active;
/*0x004*/ s16 age;
/*0x006*/ u16 type : 7;
/*0x006*/ u16 unk06_07 : 1;
/*0x007*/ u16 unk06_08 : 8;
/*0x008*/ struct smokebit smokebits[10];
/*0x198*/ struct prop *prop;
};
struct textoverride {