From 0469c71bb60e14902c54cd529b0e5705240609a8 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 21 Jan 2020 22:59:05 +1000 Subject: [PATCH] Improve explosion types and smoke types data --- src/game/game_129900.c | 80 ++++++++++----------- src/include/constants.h | 11 +++ src/include/setup/setup_020df0.h | 4 +- src/include/types.h | 30 ++++++++ src/setup/setup_020df0.c | 116 +++++++++++++++---------------- 5 files changed, 141 insertions(+), 100 deletions(-) diff --git a/src/game/game_129900.c b/src/game/game_129900.c index 23ee99495..e2ebff3d0 100644 --- a/src/game/game_129900.c +++ b/src/game/game_129900.c @@ -921,8 +921,8 @@ glabel func0f129940 /* f129a44: 030fc023 */ subu $t8,$t8,$t7 /* f129a48: 0018c080 */ sll $t8,$t8,0x2 /* f129a4c: 030fc023 */ subu $t8,$t8,$t7 -/* f129a50: 3c198008 */ lui $t9,%hi(var8007e4b8) -/* f129a54: 2739e4b8 */ addiu $t9,$t9,%lo(var8007e4b8) +/* f129a50: 3c198008 */ lui $t9,%hi(g_ExplosionTypes) +/* f129a54: 2739e4b8 */ addiu $t9,$t9,%lo(g_ExplosionTypes) /* f129a58: 0018c080 */ sll $t8,$t8,0x2 /* f129a5c: 03191021 */ addu $v0,$t8,$t9 /* f129a60: 8449001c */ lh $t1,0x1c($v0) @@ -975,8 +975,8 @@ glabel func0f129940 GLOBAL_ASM( glabel func0f129b08 /* f129b08: 808303cc */ lb $v1,0x3cc($a0) -/* f129b0c: 3c0f8008 */ lui $t7,%hi(var8007e4b8) -/* f129b10: 25efe4b8 */ addiu $t7,$t7,%lo(var8007e4b8) +/* f129b0c: 3c0f8008 */ lui $t7,%hi(g_ExplosionTypes) +/* f129b10: 25efe4b8 */ addiu $t7,$t7,%lo(g_ExplosionTypes) /* f129b14: 00037080 */ sll $t6,$v1,0x2 /* f129b18: 01c37023 */ subu $t6,$t6,$v1 /* f129b1c: 000e7080 */ sll $t6,$t6,0x2 @@ -1021,8 +1021,8 @@ glabel func0f129b08 GLOBAL_ASM( glabel func0f129ba4 /* f129ba4: 808303cc */ lb $v1,0x3cc($a0) -/* f129ba8: 3c0f8008 */ lui $t7,%hi(var8007e4b8) -/* f129bac: 25efe4b8 */ addiu $t7,$t7,%lo(var8007e4b8) +/* f129ba8: 3c0f8008 */ lui $t7,%hi(g_ExplosionTypes) +/* f129bac: 25efe4b8 */ addiu $t7,$t7,%lo(g_ExplosionTypes) /* f129bb0: 00037080 */ sll $t6,$v1,0x2 /* f129bb4: 01c37023 */ subu $t6,$t6,$v1 /* f129bb8: 000e7080 */ sll $t6,$t6,0x2 @@ -1056,8 +1056,8 @@ glabel func0f129c08 /* f129c14: afa5002c */ sw $a1,0x2c($sp) /* f129c18: afa60030 */ sw $a2,0x30($sp) /* f129c1c: 8ce40004 */ lw $a0,0x4($a3) -/* f129c20: 3c188008 */ lui $t8,%hi(var8007e4b8) -/* f129c24: 2718e4b8 */ addiu $t8,$t8,%lo(var8007e4b8) +/* f129c20: 3c188008 */ lui $t8,%hi(g_ExplosionTypes) +/* f129c24: 2718e4b8 */ addiu $t8,$t8,%lo(g_ExplosionTypes) /* f129c28: 808e03cc */ lb $t6,0x3cc($a0) /* f129c2c: afa70034 */ sw $a3,0x34($sp) /* f129c30: 00c02825 */ or $a1,$a2,$zero @@ -1242,9 +1242,9 @@ glabel func0f129cfc /* f129ed0: 3c014270 */ lui $at,0x4270 /* f129ed4: 44811000 */ mtc1 $at,$f2 /* f129ed8: 3c0142a0 */ lui $at,0x42a0 -/* f129edc: 3c028008 */ lui $v0,%hi(var8007e4b8) +/* f129edc: 3c028008 */ lui $v0,%hi(g_ExplosionTypes) /* f129ee0: 44810000 */ mtc1 $at,$f0 -/* f129ee4: 2442e4b8 */ addiu $v0,$v0,%lo(var8007e4b8) +/* f129ee4: 2442e4b8 */ addiu $v0,$v0,%lo(g_ExplosionTypes) /* f129ee8: 24040019 */ addiu $a0,$zero,0x19 .L0f129eec: /* f129eec: 24630001 */ addiu $v1,$v1,0x1 @@ -1472,10 +1472,10 @@ glabel func0f129f54 /* f12a21c: 0337c823 */ subu $t9,$t9,$s7 /* f12a220: 0019c880 */ sll $t9,$t9,0x2 /* f12a224: 0337c823 */ subu $t9,$t9,$s7 -/* f12a228: 3c0c8008 */ lui $t4,%hi(var8007e4b8) +/* f12a228: 3c0c8008 */ lui $t4,%hi(g_ExplosionTypes) /* f12a22c: 00111040 */ sll $v0,$s1,0x1 /* f12a230: 02828021 */ addu $s0,$s4,$v0 -/* f12a234: 258ce4b8 */ addiu $t4,$t4,%lo(var8007e4b8) +/* f12a234: 258ce4b8 */ addiu $t4,$t4,%lo(g_ExplosionTypes) /* f12a238: 0019c880 */ sll $t9,$t9,0x2 /* f12a23c: 032c1821 */ addu $v1,$t9,$t4 /* f12a240: 86130000 */ lh $s3,0x0($s0) @@ -1507,9 +1507,9 @@ glabel func0f129f54 /* f12a2a0: 0018c080 */ sll $t8,$t8,0x2 /* f12a2a4: 00117040 */ sll $t6,$s1,0x1 /* f12a2a8: 0317c023 */ subu $t8,$t8,$s7 -/* f12a2ac: 3c198008 */ lui $t9,%hi(var8007e4b8) +/* f12a2ac: 3c198008 */ lui $t9,%hi(g_ExplosionTypes) /* f12a2b0: 02ae7821 */ addu $t7,$s5,$t6 -/* f12a2b4: 2739e4b8 */ addiu $t9,$t9,%lo(var8007e4b8) +/* f12a2b4: 2739e4b8 */ addiu $t9,$t9,%lo(g_ExplosionTypes) /* f12a2b8: 0018c080 */ sll $t8,$t8,0x2 /* f12a2bc: a5f60028 */ sh $s6,0x28($t7) /* f12a2c0: 03196021 */ addu $t4,$t8,$t9 @@ -2268,8 +2268,8 @@ glabel func0f12acec /* f12add8: e7aa0050 */ swc1 $f10,0x50($sp) /* f12addc: 4481d000 */ mtc1 $at,$f26 /* f12ade0: 3c017f1b */ lui $at,%hi(var7f1b558c) -/* f12ade4: 3c138008 */ lui $s3,%hi(var8007e4b8) -/* f12ade8: 2673e4b8 */ addiu $s3,$s3,%lo(var8007e4b8) +/* f12ade4: 3c138008 */ lui $s3,%hi(g_ExplosionTypes) +/* f12ade8: 2673e4b8 */ addiu $s3,$s3,%lo(g_ExplosionTypes) /* f12adec: c438558c */ lwc1 $f24,%lo(var7f1b558c)($at) /* f12adf0: 8c423430 */ lw $v0,0x3430($v0) .L0f12adf4: @@ -2499,8 +2499,8 @@ glabel func0f12b0e0 /* f12b11c: f7b60028 */ sdc1 $f22,0x28($sp) /* f12b120: f7b40020 */ sdc1 $f20,0x20($sp) /* f12b124: 8c8e0004 */ lw $t6,0x4($a0) -/* f12b128: 3c088008 */ lui $t0,%hi(var8007e4b8) -/* f12b12c: 2508e4b8 */ addiu $t0,$t0,%lo(var8007e4b8) +/* f12b128: 3c088008 */ lui $t0,%hi(g_ExplosionTypes) +/* f12b12c: 2508e4b8 */ addiu $t0,$t0,%lo(g_ExplosionTypes) /* f12b130: afae03a0 */ sw $t6,0x3a0($sp) /* f12b134: 81d803cc */ lb $t8,0x3cc($t6) /* f12b138: 3c1e800a */ lui $s8,%hi(g_Vars) @@ -3253,10 +3253,10 @@ glabel func0f12bbdc /* f12bc08: f7b40050 */ sdc1 $f20,0x50($sp) /* f12bc0c: 8c910004 */ lw $s1,0x4($a0) /* f12bc10: 3c15800a */ lui $s5,%hi(g_Vars) -/* f12bc14: 3c188008 */ lui $t8,%hi(var8007e4b8) +/* f12bc14: 3c188008 */ lui $t8,%hi(g_ExplosionTypes) /* f12bc18: 822e03cc */ lb $t6,0x3cc($s1) /* f12bc1c: 26b59fc0 */ addiu $s5,$s5,%lo(g_Vars) -/* f12bc20: 2718e4b8 */ addiu $t8,$t8,%lo(var8007e4b8) +/* f12bc20: 2718e4b8 */ addiu $t8,$t8,%lo(g_ExplosionTypes) /* f12bc24: 000e7880 */ sll $t7,$t6,0x2 /* f12bc28: 01ee7823 */ subu $t7,$t7,$t6 /* f12bc2c: 000f7880 */ sll $t7,$t7,0x2 @@ -4320,9 +4320,9 @@ glabel func0f12c654 /* f12cb50: 26b50008 */ addiu $s5,$s5,0x8 /* f12cb54: 0c012d20 */ jal func0004b480 /* f12cb58: 02202025 */ or $a0,$s1,$zero -/* f12cb5c: 3c138008 */ lui $s3,%hi(var8007e4b8) +/* f12cb5c: 3c138008 */ lui $s3,%hi(g_ExplosionTypes) /* f12cb60: ae020004 */ sw $v0,0x4($s0) -/* f12cb64: 2673e4b8 */ addiu $s3,$s3,%lo(var8007e4b8) +/* f12cb64: 2673e4b8 */ addiu $s3,$s3,%lo(g_ExplosionTypes) /* f12cb68: 2412000e */ addiu $s2,$zero,0xe /* f12cb6c: 24170070 */ addiu $s7,$zero,0x70 /* f12cb70: 2414002c */ addiu $s4,$zero,0x2c @@ -5101,8 +5101,8 @@ glabel func0f12d3f0 /* f12d6d8: 46064300 */ add.s $f12,$f8,$f6 /* f12d6dc: 3c017f1b */ lui $at,%hi(var7f1b55d0) /* f12d6e0: c42455d0 */ lwc1 $f4,%lo(var7f1b55d0)($at) -/* f12d6e4: 3c068008 */ lui $a2,%hi(smoketable) -/* f12d6e8: 24c6e940 */ addiu $a2,$a2,%lo(smoketable) +/* f12d6e4: 3c068008 */ lui $a2,%hi(g_SmokeTypes) +/* f12d6e8: 24c6e940 */ addiu $a2,$a2,%lo(g_SmokeTypes) /* f12d6ec: 4600203c */ c.lt.s $f4,$f0 /* f12d6f0: 8fa300ac */ lw $v1,0xac($sp) /* f12d6f4: 8fa500b4 */ lw $a1,0xb4($sp) @@ -5460,8 +5460,8 @@ glabel func0f12d3f0 /* f12dc24: 44823000 */ mtc1 $v0,$f6 /* f12dc28: 3c013f80 */ lui $at,0x3f80 /* f12dc2c: 44816000 */ mtc1 $at,$f12 -/* f12dc30: 3c068008 */ lui $a2,%hi(smoketable) -/* f12dc34: 24c6e940 */ addiu $a2,$a2,%lo(smoketable) +/* f12dc30: 3c068008 */ lui $a2,%hi(g_SmokeTypes) +/* f12dc34: 24c6e940 */ addiu $a2,$a2,%lo(g_SmokeTypes) /* f12dc38: 8fa500b4 */ lw $a1,0xb4($sp) /* f12dc3c: 24070024 */ addiu $a3,$zero,0x24 /* f12dc40: 8fa900c4 */ lw $t1,0xc4($sp) @@ -5880,7 +5880,7 @@ glabel func0f12e1c0 /* f12e24c: 27ff3440 */ addiu $ra,$ra,0x3440 /* f12e250: 240c0024 */ addiu $t4,$zero,0x24 /* f12e254: 11c00003 */ beqz $t6,.L0f12e264 -/* f12e258: 3c0b8008 */ lui $t3,%hi(smoketable) +/* f12e258: 3c0b8008 */ lui $t3,%hi(g_SmokeTypes) /* f12e25c: 10000001 */ beqz $zero,.L0f12e264 /* f12e260: 240d0001 */ addiu $t5,$zero,0x1 .L0f12e264: @@ -5888,7 +5888,7 @@ glabel func0f12e1c0 /* f12e268: 00004825 */ or $t1,$zero,$zero /* f12e26c: 00003825 */ or $a3,$zero,$zero /* f12e270: 1900003b */ blez $t0,.L0f12e360 -/* f12e274: 256be940 */ addiu $t3,$t3,%lo(smoketable) +/* f12e274: 256be940 */ addiu $t3,$t3,%lo(g_SmokeTypes) /* f12e278: 240a0007 */ addiu $t2,$zero,0x7 .L0f12e27c: /* f12e27c: 8fe50000 */ lw $a1,0x0($ra) @@ -6036,9 +6036,9 @@ glabel func0f12e454 /* f12e47c: 00004025 */ or $t0,$zero,$zero /* f12e480: 3c09800a */ lui $t1,0x800a /* f12e484: 8d293440 */ lw $t1,0x3440($t1) -/* f12e488: 3c0a8008 */ lui $t2,%hi(smoketable) +/* f12e488: 3c0a8008 */ lui $t2,%hi(g_SmokeTypes) /* f12e48c: 44800000 */ mtc1 $zero,$f0 -/* f12e490: 254ae940 */ addiu $t2,$t2,%lo(smoketable) +/* f12e490: 254ae940 */ addiu $t2,$t2,%lo(g_SmokeTypes) /* f12e494: 240b0024 */ addiu $t3,$zero,0x24 /* f12e498: 24050190 */ addiu $a1,$zero,0x190 /* f12e49c: 01203025 */ or $a2,$t1,$zero @@ -6142,9 +6142,9 @@ glabel func0f12e5b0 /* f12e5f4: 19200032 */ blez $t1,.L0f12e6c0 /* f12e5f8: 240c0024 */ addiu $t4,$zero,0x24 /* f12e5fc: 8d4a3440 */ lw $t2,0x3440($t2) -/* f12e600: 3c0b8008 */ lui $t3,%hi(smoketable) +/* f12e600: 3c0b8008 */ lui $t3,%hi(g_SmokeTypes) /* f12e604: 44800000 */ mtc1 $zero,$f0 -/* f12e608: 256be940 */ addiu $t3,$t3,%lo(smoketable) +/* f12e608: 256be940 */ addiu $t3,$t3,%lo(g_SmokeTypes) /* f12e60c: 24050190 */ addiu $a1,$zero,0x190 /* f12e610: 01403025 */ or $a2,$t2,$zero .L0f12e614: @@ -6261,10 +6261,10 @@ glabel func0f12e77c /* f12e788: 00002025 */ or $a0,$zero,$zero /* f12e78c: 18600022 */ blez $v1,.L0f12e818 /* f12e790: 00001025 */ or $v0,$zero,$zero -/* f12e794: 3c088008 */ lui $t0,%hi(smoketable) +/* f12e794: 3c088008 */ lui $t0,%hi(g_SmokeTypes) /* f12e798: 3c07800a */ lui $a3,%hi(var800a3440) /* f12e79c: 24e73440 */ addiu $a3,$a3,%lo(var800a3440) -/* f12e7a0: 2508e940 */ addiu $t0,$t0,%lo(smoketable) +/* f12e7a0: 2508e940 */ addiu $t0,$t0,%lo(g_SmokeTypes) /* f12e7a4: 24090024 */ addiu $t1,$zero,0x24 .L0f12e7a8: /* f12e7a8: 8cee0000 */ lw $t6,0x0($a3) @@ -6369,7 +6369,7 @@ glabel func0f12e848 /* f12e900: 0000b825 */ or $s7,$zero,$zero /* f12e904: 3c013f00 */ lui $at,0x3f00 /* f12e908: 194001a4 */ blez $t2,.L0f12ef9c -/* f12e90c: 3c138008 */ lui $s3,%hi(smoketable) +/* f12e90c: 3c138008 */ lui $s3,%hi(g_SmokeTypes) /* f12e910: 4481f000 */ mtc1 $at,$f30 /* f12e914: 3c014080 */ lui $at,0x4080 /* f12e918: 4481e000 */ mtc1 $at,$f28 @@ -6382,7 +6382,7 @@ glabel func0f12e848 /* f12e934: 4480a000 */ mtc1 $zero,$f20 /* f12e938: afab0090 */ sw $t3,0x90($sp) /* f12e93c: 241e07a4 */ addiu $s8,$zero,0x7a4 -/* f12e940: 2673e940 */ addiu $s3,$s3,%lo(smoketable) +/* f12e940: 2673e940 */ addiu $s3,$s3,%lo(g_SmokeTypes) /* f12e944: 864c0004 */ lh $t4,0x4($s2) .L0f12e948: /* f12e948: 00008825 */ or $s1,$zero,$zero @@ -6825,11 +6825,11 @@ glabel func0f12e848 /* f12efa0: 44819000 */ mtc1 $at,$f18 /* f12efa4: c6d00008 */ lwc1 $f16,0x8($s6) /* f12efa8: 44814000 */ mtc1 $at,$f8 -/* f12efac: 3c138008 */ lui $s3,%hi(smoketable) +/* f12efac: 3c138008 */ lui $s3,%hi(g_SmokeTypes) /* f12efb0: 46128281 */ sub.s $f10,$f16,$f18 /* f12efb4: 44819000 */ mtc1 $at,$f18 /* f12efb8: 4480a000 */ mtc1 $zero,$f20 -/* f12efbc: 2673e940 */ addiu $s3,$s3,%lo(smoketable) +/* f12efbc: 2673e940 */ addiu $s3,$s3,%lo(g_SmokeTypes) /* f12efc0: e7aa00ac */ swc1 $f10,0xac($sp) /* f12efc4: c6c6000c */ lwc1 $f6,0xc($s6) /* f12efc8: 24140024 */ addiu $s4,$zero,0x24 @@ -7273,10 +7273,10 @@ glabel func0f12f5f8 /* f12f608: afb00008 */ sw $s0,0x8($sp) /* f12f60c: 18600026 */ blez $v1,.L0f12f6a8 /* f12f610: 00001025 */ or $v0,$zero,$zero -/* f12f614: 3c108008 */ lui $s0,%hi(smoketable) +/* f12f614: 3c108008 */ lui $s0,%hi(g_SmokeTypes) /* f12f618: 3c09800a */ lui $t1,%hi(var800a3440) /* f12f61c: 25293440 */ addiu $t1,$t1,%lo(var800a3440) -/* f12f620: 2610e940 */ addiu $s0,$s0,%lo(smoketable) +/* f12f620: 2610e940 */ addiu $s0,$s0,%lo(g_SmokeTypes) /* f12f624: 00002825 */ or $a1,$zero,$zero /* f12f628: 24110024 */ addiu $s1,$zero,0x24 /* f12f62c: 240d0009 */ addiu $t5,$zero,0x9 diff --git a/src/include/constants.h b/src/include/constants.h index da73559b0..ba22b7362 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -584,6 +584,7 @@ #define NUM_AICOMMANDS 481 #define NUM_CHALLENGES 30 #define NUM_CHEATS 42 +#define NUM_EXPLOSIONTYPES 26 #define NUM_FIRESLOTS 20 #define NUM_MPBEAUHEADS 5 #define NUM_MPBOTCOMMANDS 14 @@ -591,6 +592,7 @@ #define NUM_MPHEADS 75 #define NUM_MPPRESETS 14 #define NUM_MPTRACKS 42 +#define NUM_SMOKETYPES 23 #define NUM_SOLONORMALSTAGES 17 #define NUM_SOLOSTAGES 21 #define NUM_STAGES 90 @@ -867,6 +869,15 @@ #define SCREENSPLIT_HORIZONTAL 0 #define SCREENSPLIT_VERTICAL 1 +#define SMOKETYPE_0 0 +#define SMOKETYPE_1 1 +#define SMOKETYPE_2 2 +#define SMOKETYPE_3 3 +#define SMOKETYPE_4 4 +#define SMOKETYPE_5 5 +#define SMOKETYPE_6 6 +#define SMOKETYPE_7 7 + #define SOLOSTAGEINDEX_DEFECTION 0 #define SOLOSTAGEINDEX_INVESTIGATION 1 #define SOLOSTAGEINDEX_EXTRACTION 2 diff --git a/src/include/setup/setup_020df0.h b/src/include/setup/setup_020df0.h index aaf522f52..a095158b4 100644 --- a/src/include/setup/setup_020df0.h +++ b/src/include/setup/setup_020df0.h @@ -67,8 +67,8 @@ extern u32 var8007dc10; extern u32 var8007e3d0; extern u32 var8007e4a0; extern u32 var8007e4a4; -extern u32 var8007e4b8; -extern u32 smoketable[]; +extern struct explosiontype g_ExplosionTypes[NUM_EXPLOSIONTYPES]; +extern struct smoketype g_SmokeTypes[NUM_SMOKETYPES]; extern u32 sparktable[]; extern u32 var8007f0b8; extern u32 var8007f0c0; diff --git a/src/include/types.h b/src/include/types.h index 124ef3662..2ebbc7967 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -4687,4 +4687,34 @@ struct mppreset { u8 challenges[16]; }; +struct explosiontype { + f32 rangeh; + f32 rangev; + f32 changerateh; + f32 changeratev; + f32 innersize; + f32 blastradius; + f32 damageradius; + u16 duration; + u16 propagationrate; + f32 flarespeed; + u8 smoketype; + u16 sound; + f32 damage; +}; + +struct smoketype { + u16 duration; + u16 fadespeed; + u16 spreadspeed; + u16 size; + f32 bgrotatespeed; + u32 colour; + f32 fgrotatespeed; + u16 numclouds; + f32 unk18; + f32 unk1c; + f32 unk20; +}; + #endif diff --git a/src/setup/setup_020df0.c b/src/setup/setup_020df0.c index b80ef87e4..8dcd475b8 100644 --- a/src/setup/setup_020df0.c +++ b/src/setup/setup_020df0.c @@ -6261,69 +6261,69 @@ u32 var8007e4a8 = 0x3f800000; u32 var8007e4ac = 0x0000004b; u32 var8007e4b0 = 0x000001e0; u32 var8007e4b4 = 0x000000a8; -u32 var8007e4b8 = 0x3dcccccd; -u32 var8007e4bc = 0x3dcccccd; -u32 var8007e4c0 = 0x00000000; -u32 var8007e4c4 = 0x00000000; -// 244e8 -u32 explosiontable[] = { - /*0x00*/ 0x3dcccccd, 0x00000000, 0x00000000, 0x00010001, 0x3f800000, 0x00000000, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, - /*0x01*/ 0x3f800000, 0x00000000, 0x00000000, 0x001e0001, 0x3f800000, 0x07000000, 0x00000000, 0x41a00000, 0x41a00000, 0x00000000, 0x00000000, - /*0x02*/ 0x41f00000, 0x42480000, 0x42480000, 0x00280001, 0x40400000, 0x02008099, 0x3e000000, 0x42480000, 0x42480000, 0x00000000, 0x00000000, - /*0x03*/ 0x42480000, 0x42c80000, 0x42c80000, 0x002d0001, 0x40800000, 0x0200809a, 0x3f000000, 0x42700000, 0x42a00000, 0x40000000, 0x3f19999a, - /*0x04*/ 0x42c80000, 0x43020000, 0x43700000, 0x003c0002, 0x40a00000, 0x0100809e, 0x3f800000, 0x42700000, 0x42f00000, 0x40000000, 0x3f19999a, - /*0x05*/ 0x43160000, 0x43200000, 0x438c0000, 0x003c0002, 0x40a00000, 0x0100809e, 0x40000000, 0x41a00000, 0x41a00000, 0x00000000, 0x00000000, - /*0x06*/ 0x41b00000, 0x42200000, 0x42200000, 0x003c0001, 0x40400000, 0x02008099, 0x3f000000, 0x420c0000, 0x42200000, 0x00000000, 0x00000000, - /*0x07*/ 0x420c0000, 0x428c0000, 0x428c0000, 0x003c0001, 0x40800000, 0x0200809a, 0x3f800000, 0x42480000, 0x42a00000, 0x40000000, 0x3f19999a, - /*0x08*/ 0x42480000, 0x42c80000, 0x43200000, 0x003c0002, 0x40a00000, 0x0100809e, 0x40000000, 0x42700000, 0x42f00000, 0x40000000, 0x3f19999a, - /*0x09*/ 0x42480000, 0x43020000, 0x43340000, 0x003c0002, 0x40a00000, 0x0100809e, 0x40000000, 0x42200000, 0x42200000, 0x3f4ccccd, 0x3f000000, - /*0x0a*/ 0x428c0000, 0x42a00000, 0x43200000, 0x00500004, 0x40a00000, 0x040080a0, 0x3f800000, 0x42480000, 0x42480000, 0x3f99999a, 0x3f4ccccd, - /*0x0b*/ 0x42c80000, 0x42c80000, 0x43480000, 0x005a0001, 0x40800000, 0x0400809e, 0x40000000, 0x428c0000, 0x42700000, 0x40000000, 0x3f99999a, - /*0x0c*/ 0x43160000, 0x430c0000, 0x438c0000, 0x005a0002, 0x40a00000, 0x0500809e, 0x40800000, 0x42a00000, 0x42700000, 0x40800000, 0x3fb33333, - /*0x0d*/ 0x43480000, 0x43480000, 0x43c80000, 0x005a0002, 0x40a00000, 0x0600809f, 0x40800000, 0x42480000, 0x42480000, 0x00000000, 0x00000000, - /*0x0e*/ 0x42f00000, 0x43160000, 0x43960000, 0x00960004, 0x40800000, 0x0400809f, 0x40800000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, - /*0x0f*/ 0x3f800000, 0x00000000, 0x00000000, 0x00010001, 0x3f800000, 0x0700809c, 0x00000000, 0x3f800000, 0x3f800000, 0x00000000, 0x00000000, - /*0x10*/ 0x3f800000, 0x00000000, 0x00000000, 0x00010001, 0x3f800000, 0x0700809c, 0x00000000, 0x42a00000, 0x42700000, 0x41200000, 0x40a00000, - /*0x11*/ 0x44bb8000, 0x45098000, 0x45610000, 0x01f40001, 0x40000000, 0x000080a5, 0x40800000, 0x42a00000, 0x42700000, 0x40400000, 0x3f800000, - /*0x12*/ 0x43960000, 0x43e10000, 0x44200000, 0x003c0001, 0x40000000, 0x0000809f, 0x40800000, 0x42b40000, 0x42960000, 0x40200000, 0x3f5eb852, - /*0x13*/ 0x437a0000, 0x43bb8000, 0x44160000, 0x00b40002, 0x40a00000, 0x0600809f, 0x40800000, 0x43200000, 0x42f00000, 0x40c00000, 0x40000000, - /*0x14*/ 0x44160000, 0x43e10000, 0x44200000, 0x003c0001, 0x40000000, 0x0000809f, 0x40800000, 0x42200000, 0x41f00000, 0x40000000, 0x3f333333, - /*0x15*/ 0x42c80000, 0x430c0000, 0x43870000, 0x002d0002, 0x40a00000, 0x0400809f, 0x40600000, 0x41a00000, 0x41a00000, 0x00000000, 0x00000000, - /*0x16*/ 0x41f00000, 0x42c80000, 0x43480000, 0x00280001, 0x40400000, 0x02008099, 0x3e800000, 0x42c80000, 0x42a00000, 0x40800000, 0x3fb33333, - /*0x17*/ 0x43520000, 0x435c0000, 0x43fa0000, 0x005a0002, 0x40a00000, 0x0600809f, 0x40800000, 0x42a00000, 0x42700000, 0x40800000, 0x3fb33333, - /*0x18*/ 0x43fa0000, 0x43480000, 0x43c80000, 0x005a0002, 0x40a00000, 0x0600809f, 0x40800000, 0x44200000, 0x43f00000, 0x42000000, 0x41333333, - /*0x19*/ 0x44c80000, 0x447a0000, 0x447a0000, 0x00b40002, 0x40a00000, 0x000080a4, 0x40800000, 0x00000000, 0x00000000, 0x00000000, 0xffffffff, +struct explosiontype g_ExplosionTypes[NUM_EXPLOSIONTYPES] = { + /*00*/ { 0.1, 0.1, 0, 0, 0.1, 0, 0, 1, 1, 1, SMOKETYPE_0, 0x0000, 0 }, + /*01*/ { 1, 1, 0, 0, 1, 0, 0, 30, 1, 1, SMOKETYPE_7, 0x0000, 0 }, + /*02*/ { 20, 20, 0, 0, 30, 50, 50, 40, 1, 3, SMOKETYPE_2, 0x8099, 0.125 }, + /*03*/ { 50, 50, 0, 0, 50, 100, 100, 45, 1, 4, SMOKETYPE_2, 0x809a, 0.5 }, + /*04*/ { 60, 80, 2, 0.6, 100, 130, 240, 60, 2, 5, SMOKETYPE_1, 0x809e, 1 }, + /*05*/ { 60, 120, 2, 0.6, 150, 160, 280, 60, 2, 5, SMOKETYPE_1, 0x809e, 2 }, + /*06*/ { 20, 20, 0, 0, 22, 40, 40, 60, 1, 3, SMOKETYPE_2, 0x8099, 0.5 }, + /*07*/ { 35, 40, 0, 0, 35, 70, 70, 60, 1, 4, SMOKETYPE_2, 0x809a, 1 }, + /*08*/ { 50, 80, 2, 0.6, 50, 100, 160, 60, 2, 5, SMOKETYPE_1, 0x809e, 2 }, + /*09*/ { 60, 120, 2, 0.6, 50, 130, 180, 60, 2, 5, SMOKETYPE_1, 0x809e, 2 }, + /*10*/ { 40, 40, 0.8, 0.5, 70, 80, 160, 80, 4, 5, SMOKETYPE_4, 0x80a0, 1 }, + /*11*/ { 50, 50, 1.2, 0.8, 100, 100, 200, 90, 1, 4, SMOKETYPE_4, 0x809e, 2 }, + /*12*/ { 70, 60, 2, 1.2, 150, 140, 280, 90, 2, 5, SMOKETYPE_5, 0x809e, 4 }, + /*13*/ { 80, 60, 4, 1.4, 200, 200, 400, 90, 2, 5, SMOKETYPE_6, 0x809f, 4 }, + /*14*/ { 50, 50, 0, 0, 120, 150, 300, 150, 4, 4, SMOKETYPE_4, 0x809f, 4 }, + /*15*/ { 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, SMOKETYPE_7, 0x809c, 0 }, + /*16*/ { 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, SMOKETYPE_7, 0x809c, 0 }, + /*17*/ { 80, 60, 10, 5, 1500, 2200, 3600, 500, 1, 2, SMOKETYPE_0, 0x80a5, 4 }, + /*18*/ { 80, 60, 3, 1, 300, 450, 640, 60, 1, 2, SMOKETYPE_0, 0x809f, 4 }, + /*19*/ { 90, 75, 2.5, 0.87, 250, 375, 600, 180, 2, 5, SMOKETYPE_6, 0x809f, 4 }, + /*20*/ { 160, 120, 6, 2, 600, 450, 640, 60, 1, 2, SMOKETYPE_0, 0x809f, 4 }, + /*21*/ { 40, 30, 2, 0.7, 100, 140, 270, 45, 2, 5, SMOKETYPE_4, 0x809f, 3.5 }, + /*22*/ { 20, 20, 0, 0, 30, 100, 200, 40, 1, 3, SMOKETYPE_2, 0x8099, 0.25 }, + /*23*/ { 100, 80, 4, 1.4, 210, 220, 500, 90, 2, 5, SMOKETYPE_6, 0x809f, 4 }, + /*24*/ { 80, 60, 4, 1.4, 500, 200, 400, 90, 2, 5, SMOKETYPE_6, 0x809f, 4 }, + /*25*/ { 640, 480, 32, 11.2, 1600, 1000, 1000, 180, 2, 5, SMOKETYPE_0, 0x80a4, 4 }, }; -// 24960 -u32 smoketable[] = { - /*0x00*/ 0x0001003c, 0x00630000, 0x00000000, 0x80808000, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x01*/ 0x00dc003c, 0x002d003c, 0x3ca3d70a, 0x50506000, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x02*/ 0x00dc003c, 0x00320014, 0x3c23d70a, 0x80808000, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x03*/ 0x0118003c, 0x00780064, 0x3c23d70a, 0xc0c0c000, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x04*/ 0x0118003c, 0x003c0050, 0x3ca3d70a, 0x40404000, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x05*/ 0x0154003c, 0x003200be, 0x3c75c28f, 0x40404000, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x06*/ 0x017c003c, 0x0046012c, 0x3c23d70a, 0x40404000, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x07*/ 0x003c003c, 0x0008000f, 0x3cf5c28f, 0xffffff00, 0x3e99999a, 0x00780000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x08*/ 0x00140001, 0x0006001e, 0x3cf5c28f, 0xffffff00, 0x40000000, 0x001e0000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x09*/ 0x00190001, 0x00070010, 0x3cf5c28f, 0xe0e0e000, 0x40400000, 0x001e0000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x0a*/ 0x0384003c, 0x00460384, 0x3c23d70a, 0x40404000, 0x3e99999a, 0x00b40000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x0b*/ 0x00140001, 0x0006001e, 0x3cf5c28f, 0x18204000, 0x40000000, 0x001e0000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x0c*/ 0x00320019, 0x00070002, 0x3cf5c28f, 0xffffbf00, 0x3e99999a, 0x00960000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x0d*/ 0x000c000f, 0x00070005, 0x3cf5c28f, 0x66404000, 0x3f800000, 0x00120000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x0e*/ 0x000c000f, 0x00070005, 0x3cf5c28f, 0x66660000, 0x3f800000, 0x00120000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x0f*/ 0x00320005, 0x00050003, 0x3cf5c28f, 0xffffff00, 0x3e99999a, 0x00960000, 0x00000000, 0x3ee66666, 0x00000000, - /*0x10*/ 0x00320005, 0x00060003, 0x3cf5c28f, 0xafffaf00, 0x3e99999a, 0x00960000, 0x3db851ec, 0x3e99999a, 0x00000000, - /*0x11*/ 0x00320005, 0x00030003, 0x3cf5c28f, 0xffffff00, 0x3e99999a, 0x00960000, 0x00000000, 0x3eb33333, 0x00000000, - /*0x12*/ 0x00320005, 0x00030003, 0x3cf5c28f, 0xaf8f6f00, 0x3e99999a, 0x00960000, 0x3dcccccd, 0x3e99999a, 0x00000000, - /*0x13*/ 0x00320001, 0x00020010, 0x3cf5c28f, 0xffff8000, 0x40400000, 0x001e0000, 0x3e19999a, 0x3e99999a, 0x3f800000, - /*0x14*/ 0x00b4000a, 0x00080012, 0x3d75c28f, 0xffffff00, 0x3e99999a, 0x00000000, 0x3e428f5c, 0x3d8f5c29, 0x3f800000, - /*0x15*/ 0x00dc0028, 0x002d003c, 0x3ca3d70a, 0x20202000, 0x3e99999a, 0x001e0000, 0x3fc00000, 0x3fe66666, 0x40c00000, - /*0x16*/ 0x00dc0005, 0x0008003c, 0x3cf5c28f, 0xaf8f6f00, 0x3e99999a, 0x001e0000, 0x3fc00000, 0x3e99999a, 0x3f800000, - /*0x17*/ 0x00000000, +u32 var8007e930 = 0x00000000; +u32 var8007e934 = 0x00000000; +u32 var8007e938 = 0x00000000; +u32 var8007e93c = 0xffffffff; + +struct smoketype g_SmokeTypes[NUM_SMOKETYPES] = { + /*00*/ { 1, 60, 99, 0, 0, 0x80808000, 0.3, 120, 0.15, 0.3, 1 }, + /*01*/ { 220, 60, 45, 60, 0.02, 0x50506000, 0.3, 120, 0.15, 0.3, 1 }, + /*02*/ { 220, 60, 50, 20, 0.01, 0x80808000, 0.3, 120, 0.15, 0.3, 1 }, + /*03*/ { 280, 60, 120, 100, 0.01, 0xc0c0c000, 0.3, 120, 0.15, 0.3, 1 }, + /*04*/ { 280, 60, 60, 80, 0.02, 0x40404000, 0.3, 120, 0.15, 0.3, 1 }, + /*05*/ { 340, 60, 50, 190, 0.015, 0x40404000, 0.3, 120, 0.15, 0.3, 1 }, + /*06*/ { 380, 60, 70, 300, 0.01, 0x40404000, 0.3, 120, 0.15, 0.3, 1 }, + /*07*/ { 60, 60, 8, 15, 0.03, 0xffffff00, 0.3, 120, 0.15, 0.3, 1 }, + /*08*/ { 20, 1, 6, 30, 0.03, 0xffffff00, 2, 30, 0.15, 0.3, 1 }, + /*09*/ { 25, 1, 7, 16, 0.03, 0xe0e0e000, 3, 30, 0.15, 0.3, 1 }, + /*10*/ { 900, 60, 70, 900, 0.01, 0x40404000, 0.3, 180, 0.15, 0.3, 1 }, + /*11*/ { 20, 1, 6, 30, 0.03, 0x18204000, 2, 30, 0.15, 0.3, 1 }, + /*12*/ { 50, 25, 7, 2, 0.03, 0xffffbf00, 0.3, 150, 0.15, 0.3, 1 }, + /*13*/ { 12, 15, 7, 5, 0.03, 0x66404000, 1, 18, 0.15, 0.3, 1 }, + /*14*/ { 12, 15, 7, 5, 0.03, 0x66660000, 1, 18, 0.15, 0.3, 1 }, + /*15*/ { 50, 5, 5, 3, 0.03, 0xffffff00, 0.3, 150, 0, 0.45, 0 }, + /*16*/ { 50, 5, 6, 3, 0.03, 0xafffaf00, 0.3, 150, 0.09, 0.3, 0 }, + /*17*/ { 50, 5, 3, 3, 0.03, 0xffffff00, 0.3, 150, 0, 0.35, 0 }, + /*18*/ { 50, 5, 3, 3, 0.03, 0xaf8f6f00, 0.3, 150, 0.1, 0.3, 0 }, + /*19*/ { 50, 1, 2, 16, 0.03, 0xffff8000, 3, 30, 0.15, 0.3, 1 }, + /*20*/ { 180, 10, 8, 18, 0.06, 0xffffff00, 0.3, 0, 0.19, 0.07, 1 }, + /*21*/ { 220, 40, 45, 60, 0.02, 0x20202000, 0.3, 30, 1.5, 1.8, 6 }, + /*22*/ { 220, 5, 8, 60, 0.03, 0xaf8f6f00, 0.3, 30, 1.5, 0.3, 1 }, }; +u32 var8007ec7c = 0x00000000; + // 24ca0 u32 sparktable[] = { /*0x00*/ 0x0064001c, 0x00640001, 0x00000000, 0x40000000, 0x003c003c, 0x000f0000, 0x00000001, 0xffff80ff, 0xffffffff, 0x3ca3d70a,