diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 9c65da398..1427792c8 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -6326,37 +6326,41 @@ struct smoketype g_SmokeTypes[NUM_SMOKETYPES] = { u32 var8007ec7c = 0x00000000; // 24ca0 -u32 sparktable[] = { - /*0x00*/ 0x0064001c, 0x00640001, 0x00000000, 0x40000000, 0x003c003c, 0x000f0000, 0x00000001, 0xffff80ff, 0xffffffff, 0x3ca3d70a, - /*0x01*/ 0x0064001c, 0x00640001, 0x00000000, 0x40000000, 0x003c003c, 0x000f0000, 0x00000001, 0x80ffffff, 0xffffffff, 0x3ca3d70a, - /*0x02*/ 0x0028ffff, 0x001e001e, 0x00000000, 0x40000000, 0x00230023, 0x00050000, 0x00000001, 0x301010ff, 0x401010ff, 0x3ca3d70a, - /*0x03*/ 0x0028ffff, 0x012c00c8, 0x00000000, 0x3e19999a, 0x00050005, 0x00040000, 0x00000001, 0xffffff40, 0x560011a0, 0x3ca3d70a, - /*0x04*/ 0x000a0001, 0x04b00190, 0x00000000, 0x3e19999a, 0x00050005, 0x00050000, 0x00000001, 0xa0a0e000, 0xffffffff, 0x3ca3d70a, - /*0x05*/ 0x0028000a, 0x000a000a, 0x00000000, 0x40400000, 0x00b4005a, 0x00050000, 0x00000001, 0x00ff6aff, 0xffffffff, 0x3ca3d70a, - /*0x06*/ 0x000f000a, 0x00140014, 0x00000000, 0x3f266666, 0x00b4005a, 0x00050000, 0x00000001, 0xa0a0e0ff, 0xffffffff, 0x3ca3d70a, - /*0x07*/ 0x00010001, 0x00780002, 0x00000000, 0x00000000, 0x003c003c, 0x00050000, 0x00000001, 0xffff80ff, 0xffffffff, 0x3ca3d70a, - /*0x08*/ 0x00010001, 0x012c0032, 0x00000000, 0x00000000, 0x00050005, 0x00050000, 0x00000001, 0xffff8000, 0xffffffff, 0x3ca3d70a, - /*0x09*/ 0x00010001, 0x01900064, 0x00000000, 0x00000000, 0x000a000a, 0x00050000, 0x00000001, 0xffff8000, 0xffffffff, 0x3ca3d70a, - /*0x0a*/ 0x004b0064, 0x00640001, 0x00000000, 0x40000000, 0x003c003c, 0x000f0000, 0x00000001, 0xffff80ff, 0xffffffff, 0x3ca3d70a, - /*0x0b*/ 0x004b0064, 0x00140005, 0x00000000, 0x3fc00000, 0x003c003c, 0x00140000, 0x00000001, 0xa0a0e0ff, 0xffffffff, 0x3ca3d70a, - /*0x0c*/ 0x0014000a, 0x00640001, 0x00000000, 0x40000000, 0x003c003c, 0x000f0000, 0x00000001, 0xffff80ff, 0xffffffff, 0x3ca3d70a, - /*0x0d*/ 0x0014000a, 0x00140005, 0x00000000, 0x3fc00000, 0x003c003c, 0x00140000, 0x00000001, 0xa0a0e0ff, 0xffffffff, 0x3ca3d70a, - /*0x0e*/ 0x00010000, 0x00500001, 0x001e0005, 0x00000000, 0x0078005a, 0x000f0000, 0x00000000, 0x0808f000, 0xffffffff, 0x3ca3d70a, - /*0x0f*/ 0x00460000, 0x0096000f, 0x00000000, 0x40c00000, 0x0028000a, 0x00030000, 0x00000000, 0x11112880, 0xaaaaaa40, 0x3ca3d70a, - /*0x10*/ 0x0032001c, 0x00640001, 0x00000000, 0x3f800000, 0x003c001e, 0x000a0000, 0x00000001, 0xffff80ff, 0xffffffff, 0x3ca3d70a, - /*0x11*/ 0x012c0064, 0x00640002, 0x00000000, 0x3e99999a, 0x001e0001, 0x00280000, 0x00000002, 0xffff80ff, 0xffffffff, 0x3dcccccd, - /*0x12*/ 0x00aa0050, 0x003c0005, 0x00000000, 0x3ecccccd, 0x001e0005, 0x000a0000, 0x00000003, 0xa0a0e0ff, 0xffffffff, 0x3dcccccd, - /*0x13*/ 0x00780028, 0x001e0007, 0x00000000, 0x3e4ccccd, 0x003c0005, 0x000f0000, 0x00000003, 0xffff80ff, 0xffffffff, 0x3dcccccd, - /*0x14*/ 0x0050000a, 0x000a0009, 0x00000000, 0x3dcccccd, 0x001e0005, 0x00140000, 0x00000003, 0xa0a0e0ff, 0xffffffff, 0x3dcccccd, - /*0x15*/ 0x00640001, 0x00640032, 0x00000000, 0x40000000, 0x001e0014, 0x000f0000, 0x00000001, 0xffff80ff, 0xffffffff, 0x3ca3d70a, - /*0x16*/ 0x0064001c, 0x00640001, 0x00000000, 0x40000000, 0x00780078, 0x001e0000, 0x00000001, 0xff8080ff, 0xffff80ff, 0x3ca3d70a, - /*0x17*/ 0x0064001c, 0x00640001, 0x00000000, 0x40000000, 0x003c003c, 0x000f0000, 0x00000001, 0x4fff4fff, 0xffffffff, 0x3ca3d70a, - /*0x18*/ 0x0064001c, 0x00640001, 0x00000000, 0x40000000, 0x003c003c, 0x000f0000, 0x00000001, 0xffff7f7f, 0xffffffff, 0x3ca3d70a, - /*0x19*/ 0x0028ffff, 0x001e000a, 0x00000000, 0x40000000, 0x00320023, 0x000a0000, 0x00000001, 0x301010ff, 0x401010ff, 0x3ca3d70a, - /*0x1a*/ 0x00460000, 0x0096000f, 0x00000000, 0x40c00000, 0x0028000a, 0x00030000, 0x00000000, 0x1111a880, 0xaaaaff40, 0x3ca3d70a, +struct sparktype g_SparkTypes[] = { + // weight + // | max age + // | | decel + // | | | + /*0x00*/ { 100, 28, 100, 1, 0, 0, 2, 60, 60, 15, 1, 0xffff80ff, 0xffffffff, 0.02 }, + /*0x01*/ { 100, 28, 100, 1, 0, 0, 2, 60, 60, 15, 1, 0x80ffffff, 0xffffffff, 0.02 }, + /*0x02*/ { 40, -1, 30, 30, 0, 0, 2, 35, 35, 5, 1, 0x301010ff, 0x401010ff, 0.02 }, + /*0x03*/ { 40, -1, 300, 200, 0, 0, 0.15, 5, 5, 4, 1, 0xffffff40, 0x560011a0, 0.02 }, + /*0x04*/ { 10, 1, 1200, 400, 0, 0, 0.15, 5, 5, 5, 1, 0xa0a0e000, 0xffffffff, 0.02 }, + /*0x05*/ { 40, 10, 10, 10, 0, 0, 3, 180, 90, 5, 1, 0x00ff6aff, 0xffffffff, 0.02 }, + /*0x06*/ { 15, 10, 20, 20, 0, 0, 0.65, 180, 90, 5, 1, 0xa0a0e0ff, 0xffffffff, 0.02 }, + /*0x07*/ { 1, 1, 120, 2, 0, 0, 0, 60, 60, 5, 1, 0xffff80ff, 0xffffffff, 0.02 }, + /*0x08*/ { 1, 1, 300, 50, 0, 0, 0, 5, 5, 5, 1, 0xffff8000, 0xffffffff, 0.02 }, + /*0x09*/ { 1, 1, 400, 100, 0, 0, 0, 10, 10, 5, 1, 0xffff8000, 0xffffffff, 0.02 }, + /*0x0a*/ { 75, 100, 100, 1, 0, 0, 2, 60, 60, 15, 1, 0xffff80ff, 0xffffffff, 0.02 }, + /*0x0b*/ { 75, 100, 20, 5, 0, 0, 1.5, 60, 60, 20, 1, 0xa0a0e0ff, 0xffffffff, 0.02 }, + /*0x0c*/ { 20, 10, 100, 1, 0, 0, 2, 60, 60, 15, 1, 0xffff80ff, 0xffffffff, 0.02 }, + /*0x0d*/ { 20, 10, 20, 5, 0, 0, 1.5, 60, 60, 20, 1, 0xa0a0e0ff, 0xffffffff, 0.02 }, + /*0x0e*/ { 1, 0, 80, 1, 30, 5, 0, 120, 90, 15, 0, 0x0808f000, 0xffffffff, 0.02 }, + /*0x0f*/ { 70, 0, 150, 15, 0, 0, 6, 40, 10, 3, 0, 0x11112880, 0xaaaaaa40, 0.02 }, + /*0x10*/ { 50, 28, 100, 1, 0, 0, 1, 60, 30, 10, 1, 0xffff80ff, 0xffffffff, 0.02 }, + /*0x11*/ { 300, 100, 100, 2, 0, 0, 0.3, 30, 1, 40, 2, 0xffff80ff, 0xffffffff, 0.1 }, + /*0x12*/ { 170, 80, 60, 5, 0, 0, 0.4, 30, 5, 10, 3, 0xa0a0e0ff, 0xffffffff, 0.1 }, + /*0x13*/ { 120, 40, 30, 7, 0, 0, 0.2, 60, 5, 15, 3, 0xffff80ff, 0xffffffff, 0.1 }, + /*0x14*/ { 80, 10, 10, 9, 0, 0, 0.1, 30, 5, 20, 3, 0xa0a0e0ff, 0xffffffff, 0.1 }, + /*0x15*/ { 100, 1, 100, 50, 0, 0, 2, 30, 20, 15, 1, 0xffff80ff, 0xffffffff, 0.02 }, + /*0x16*/ { 100, 28, 100, 1, 0, 0, 2, 120, 120, 30, 1, 0xff8080ff, 0xffff80ff, 0.02 }, + /*0x17*/ { 100, 28, 100, 1, 0, 0, 2, 60, 60, 15, 1, 0x4fff4fff, 0xffffffff, 0.02 }, + /*0x18*/ { 100, 28, 100, 1, 0, 0, 2, 60, 60, 15, 1, 0xffff7f7f, 0xffffffff, 0.02 }, + /*0x19*/ { 40, -1, 30, 10, 0, 0, 2, 50, 35, 10, 1, 0x301010ff, 0x401010ff, 0.02 }, + /*0x1a*/ { 70, 0, 150, 15, 0, 0, 6, 40, 10, 3, 0, 0x1111a880, 0xaaaaff40, 0.02 }, }; -u32 var8007f0b8 = 0x00000000; +s32 g_SparksAreActive = false; u32 var8007f0bc = 0x00000000; struct weatherdata *g_WeatherData = NULL; diff --git a/src/game/game_013260.c b/src/game/game_013260.c index 17e53a99c..23352c2fc 100644 --- a/src/game/game_013260.c +++ b/src/game/game_013260.c @@ -13,20 +13,20 @@ GLOBAL_ASM( glabel func0f013260 /* f013260: 3c01800a */ lui $at,%hi(var800a3fc0) -/* f013264: 3c03800a */ lui $v1,%hi(var800a3fc8) +/* f013264: 3c03800a */ lui $v1,%hi(g_SparkGroups) /* f013268: 3c02800a */ lui $v0,%hi(var800a4130) /* f01326c: ac203fc0 */ sw $zero,%lo(var800a3fc0)($at) /* f013270: 24424130 */ addiu $v0,$v0,%lo(var800a4130) -/* f013274: 24633fc8 */ addiu $v1,$v1,%lo(var800a3fc8) +/* f013274: 24633fc8 */ addiu $v1,$v1,%lo(g_SparkGroups) .L0f013278: /* f013278: 24630024 */ addiu $v1,$v1,0x24 /* f01327c: 1462fffe */ bne $v1,$v0,.L0f013278 /* f013280: ac60ffe4 */ sw $zero,-0x1c($v1) /* f013284: 3c01800a */ lui $at,%hi(var800a4130) /* f013288: ac204130 */ sw $zero,%lo(var800a4130)($at) -/* f01328c: 3c018008 */ lui $at,%hi(var8007f0b8) +/* f01328c: 3c018008 */ lui $at,%hi(g_SparksAreActive) /* f013290: 03e00008 */ jr $ra -/* f013294: ac20f0b8 */ sw $zero,%lo(var8007f0b8)($at) +/* f013294: ac20f0b8 */ sw $zero,%lo(g_SparksAreActive)($at) /* f013298: 00000000 */ sll $zero,$zero,0x0 /* f01329c: 00000000 */ sll $zero,$zero,0x0 ); @@ -34,17 +34,17 @@ glabel func0f013260 // Mismatch because the lui %hi instructions are swapped //void func0f013260(void) //{ -// struct gvars800a3fc8 *current; -// struct gvars800a3fc8 *end; +// struct sparkgroup *group; +// struct sparkgroup *end; // var800a3fc0 = 0; -// end = &var800a3fc8[10]; -// current = &var800a3fc8[0]; +// end = &g_SparkGroups[10]; +// group = &g_SparkGroups[0]; // -// while (current != end) { -// current->unk08 = 0; -// current++; +// while (group != end) { +// group->age = 0; +// group++; // } // // var800a4130 = 0; -// var8007f0b8 = 0; +// g_SparksAreActive = 0; //} diff --git a/src/game/game_12f6c0.c b/src/game/game_12f6c0.c index 26985e899..be813366e 100644 --- a/src/game/game_12f6c0.c +++ b/src/game/game_12f6c0.c @@ -40,11 +40,11 @@ glabel func0f12f6c0 /* f12f6d8: 0301001a */ div $zero,$t8,$at /* f12f6dc: 000270c0 */ sll $t6,$v0,0x3 /* f12f6e0: 44800000 */ mtc1 $zero,$f0 -/* f12f6e4: 3c0f800a */ lui $t7,%hi(var800a34d0) +/* f12f6e4: 3c0f800a */ lui $t7,%hi(g_Sparks) /* f12f6e8: 01c27023 */ subu $t6,$t6,$v0 /* f12f6ec: afb00014 */ sw $s0,0x14($sp) /* f12f6f0: 000e7080 */ sll $t6,$t6,0x2 -/* f12f6f4: 25ef34d0 */ addiu $t7,$t7,%lo(var800a34d0) +/* f12f6f4: 25ef34d0 */ addiu $t7,$t7,%lo(g_Sparks) /* f12f6f8: 0000c810 */ mfhi $t9 /* f12f6fc: afbf001c */ sw $ra,0x1c($sp) /* f12f700: afb10018 */ sw $s1,0x18($sp) @@ -214,12 +214,12 @@ glabel func0f12f6c0 GLOBAL_ASM( glabel func0f12f95c -/* f12f95c: 3c03800a */ lui $v1,%hi(var800a3fc8) +/* f12f95c: 3c03800a */ lui $v1,%hi(g_SparkGroups) /* f12f960: 3c07800a */ lui $a3,%hi(var800a4130) /* f12f964: 3c05800a */ lui $a1,%hi(var800a3fc0) /* f12f968: 24a53fc0 */ addiu $a1,$a1,%lo(var800a3fc0) /* f12f96c: 24e74130 */ addiu $a3,$a3,%lo(var800a4130) -/* f12f970: 24633fc8 */ addiu $v1,$v1,%lo(var800a3fc8) +/* f12f970: 24633fc8 */ addiu $v1,$v1,%lo(g_SparkGroups) /* f12f974: 24060064 */ addiu $a2,$zero,0x64 .L0f12f978: /* f12f978: 50830019 */ beql $a0,$v1,.L0f12f9e0 @@ -266,17 +266,17 @@ glabel func0f12f9f0 /* f12f9fc: 24634130 */ addiu $v1,$v1,%lo(var800a4130) /* f12fa00: 8c6e0000 */ lw $t6,0x0($v1) /* f12fa04: 00194080 */ sll $t0,$t9,0x2 -/* f12fa08: 3c098008 */ lui $t1,%hi(sparktable) +/* f12fa08: 3c098008 */ lui $t1,%hi(g_SparkTypes) /* f12fa0c: 01194021 */ addu $t0,$t0,$t9 /* f12fa10: 000e78c0 */ sll $t7,$t6,0x3 /* f12fa14: afb00014 */ sw $s0,0x14($sp) -/* f12fa18: 3c18800a */ lui $t8,%hi(var800a3fc8) +/* f12fa18: 3c18800a */ lui $t8,%hi(g_SparkGroups) /* f12fa1c: 000840c0 */ sll $t0,$t0,0x3 -/* f12fa20: 2529ec80 */ addiu $t1,$t1,%lo(sparktable) +/* f12fa20: 2529ec80 */ addiu $t1,$t1,%lo(g_SparkTypes) /* f12fa24: 01ee7821 */ addu $t7,$t7,$t6 /* f12fa28: afb10018 */ sw $s1,0x18($sp) /* f12fa2c: 000f7880 */ sll $t7,$t7,0x2 -/* f12fa30: 27183fc8 */ addiu $t8,$t8,%lo(var800a3fc8) +/* f12fa30: 27183fc8 */ addiu $t8,$t8,%lo(g_SparkGroups) /* f12fa34: 01098021 */ addu $s0,$t0,$t1 /* f12fa38: 24010002 */ addiu $at,$zero,0x2 /* f12fa3c: afbf001c */ sw $ra,0x1c($sp) @@ -436,8 +436,8 @@ glabel func0f12f9f0 /* f12fc68: 00001825 */ or $v1,$zero,$zero /* f12fc6c: 11e00016 */ beqz $t7,.L0f12fcc8 /* f12fc70: 00004140 */ sll $t0,$zero,0x5 -/* f12fc74: 3c0d800a */ lui $t5,%hi(var800a3fc8) -/* f12fc78: 25ad3fc8 */ addiu $t5,$t5,%lo(var800a3fc8) +/* f12fc74: 3c0d800a */ lui $t5,%hi(g_SparkGroups) +/* f12fc78: 25ad3fc8 */ addiu $t5,$t5,%lo(g_SparkGroups) /* f12fc7c: 010d1021 */ addu $v0,$t0,$t5 /* f12fc80: 8c580008 */ lw $t8,0x8($v0) .L0f12fc84: @@ -456,8 +456,8 @@ glabel func0f12f9f0 /* f12fcac: 108100e0 */ beq $a0,$at,.L0f130030 /* f12fcb0: 000448c0 */ sll $t1,$a0,0x3 /* f12fcb4: 01244821 */ addu $t1,$t1,$a0 -/* f12fcb8: 3c19800a */ lui $t9,%hi(var800a3fc8) -/* f12fcbc: 27393fc8 */ addiu $t9,$t9,%lo(var800a3fc8) +/* f12fcb8: 3c19800a */ lui $t9,%hi(g_SparkGroups) +/* f12fcbc: 27393fc8 */ addiu $t9,$t9,%lo(g_SparkGroups) /* f12fcc0: 00094880 */ sll $t1,$t1,0x2 /* f12fcc4: 01398821 */ addu $s1,$t1,$t9 .L0f12fcc8: @@ -690,8 +690,8 @@ glabel func0f12f9f0 .L0f130024: /* f130024: 240e0001 */ addiu $t6,$zero,0x1 .L0f130028: -/* f130028: 3c018008 */ lui $at,%hi(var8007f0b8) -/* f13002c: ac2ef0b8 */ sw $t6,%lo(var8007f0b8)($at) +/* f130028: 3c018008 */ lui $at,%hi(g_SparksAreActive) +/* f13002c: ac2ef0b8 */ sw $t6,%lo(g_SparksAreActive)($at) .L0f130030: /* f130030: 8fbf001c */ lw $ra,0x1c($sp) /* f130034: 8fb00014 */ lw $s0,0x14($sp) @@ -703,8 +703,8 @@ glabel func0f12f9f0 GLOBAL_ASM( glabel func0f130044 /* f130044: 27bdfe90 */ addiu $sp,$sp,-368 -/* f130048: 3c0e8008 */ lui $t6,%hi(var8007f0b8) -/* f13004c: 8dcef0b8 */ lw $t6,%lo(var8007f0b8)($t6) +/* f130048: 3c0e8008 */ lui $t6,%hi(g_SparksAreActive) +/* f13004c: 8dcef0b8 */ lw $t6,%lo(g_SparksAreActive)($t6) /* f130050: afbf0074 */ sw $ra,0x74($sp) /* f130054: afbe0070 */ sw $s8,0x70($sp) /* f130058: afb7006c */ sw $s7,0x6c($sp) @@ -867,9 +867,9 @@ glabel func0f130044 /* f1302a8: ad0a0000 */ sw $t2,0x0($t0) /* f1302ac: c43c5608 */ lwc1 $f28,%lo(var7f1b5608)($at) /* f1302b0: 3c013f80 */ lui $at,0x3f80 -/* f1302b4: 3c13800a */ lui $s3,%hi(var800a3fc8) +/* f1302b4: 3c13800a */ lui $s3,%hi(g_SparkGroups) /* f1302b8: 4481c000 */ mtc1 $at,$f24 -/* f1302bc: 26733fc8 */ addiu $s3,$s3,%lo(var800a3fc8) +/* f1302bc: 26733fc8 */ addiu $s3,$s3,%lo(g_SparkGroups) /* f1302c0: c7b60120 */ lwc1 $f22,0x120($sp) /* f1302c4: c7ba013c */ lwc1 $f26,0x13c($sp) /* f1302c8: 241e01f0 */ addiu $s8,$zero,0x1f0 @@ -992,9 +992,9 @@ glabel func0f130044 /* f130480: 00008825 */ or $s1,$zero,$zero .L0f130484: /* f130484: 122002db */ beqz $s1,.L0f130ff4 -/* f130488: 3c0d8008 */ lui $t5,%hi(sparktable) +/* f130488: 3c0d8008 */ lui $t5,%hi(g_SparkTypes) /* f13048c: 8e6b0000 */ lw $t3,0x0($s3) -/* f130490: 25adec80 */ addiu $t5,$t5,%lo(sparktable) +/* f130490: 25adec80 */ addiu $t5,$t5,%lo(g_SparkTypes) /* f130494: 24040002 */ addiu $a0,$zero,0x2 /* f130498: 000b6080 */ sll $t4,$t3,0x2 /* f13049c: 018b6021 */ addu $t4,$t4,$t3 @@ -1421,8 +1421,8 @@ glabel func0f130044 /* f130ab0: 0015c8c0 */ sll $t9,$s5,0x3 .L0f130ab4: /* f130ab4: 0335c823 */ subu $t9,$t9,$s5 -/* f130ab8: 3c0e800a */ lui $t6,%hi(var800a34d0) -/* f130abc: 25ce34d0 */ addiu $t6,$t6,%lo(var800a34d0) +/* f130ab8: 3c0e800a */ lui $t6,%hi(g_Sparks) +/* f130abc: 25ce34d0 */ addiu $t6,$t6,%lo(g_Sparks) /* f130ac0: 0019c880 */ sll $t9,$t9,0x2 /* f130ac4: 032e8821 */ addu $s1,$t9,$t6 /* f130ac8: 8e2f0018 */ lw $t7,0x18($s1) diff --git a/src/game/sparkstick.c b/src/game/sparkstick.c index ec64a8f71..65c06cb69 100644 --- a/src/game/sparkstick.c +++ b/src/game/sparkstick.c @@ -11,15 +11,12 @@ #include "types.h" const u32 var7f1a8680[] = {0xb8d1b717}; -const u32 var7f1a8684[] = {0x00000000}; -const u32 var7f1a8688[] = {0x00000000}; -const u32 var7f1a868c[] = {0x00000000}; GLOBAL_ASM( glabel sparksTick /* f01e050: 27bdffe0 */ addiu $sp,$sp,-32 -/* f01e054: 3c0b8008 */ lui $t3,%hi(var8007f0b8) -/* f01e058: 256bf0b8 */ addiu $t3,$t3,%lo(var8007f0b8) +/* f01e054: 3c0b8008 */ lui $t3,%hi(g_SparksAreActive) +/* f01e058: 256bf0b8 */ addiu $t3,$t3,%lo(g_SparksAreActive) /* f01e05c: 8d6e0000 */ lw $t6,0x0($t3) /* f01e060: afb5001c */ sw $s5,0x1c($sp) /* f01e064: afb40018 */ sw $s4,0x18($sp) @@ -29,16 +26,16 @@ glabel sparksTick /* f01e074: 11c0006d */ beqz $t6,.L0f01e22c /* f01e078: afb00008 */ sw $s0,0x8($sp) /* f01e07c: ad600000 */ sw $zero,0x0($t3) -/* f01e080: 3c02800a */ lui $v0,%hi(var800a3fc8) +/* f01e080: 3c02800a */ lui $v0,%hi(g_SparkGroups) /* f01e084: 3c017f1b */ lui $at,%hi(var7f1a8680) /* f01e088: 3c15800a */ lui $s5,%hi(g_Vars) /* f01e08c: 3c14800a */ lui $s4,%hi(var800a3fc0) -/* f01e090: 3c12800a */ lui $s2,%hi(var800a34d0) -/* f01e094: 3c0c8008 */ lui $t4,%hi(sparktable) +/* f01e090: 3c12800a */ lui $s2,%hi(g_Sparks) +/* f01e094: 3c0c8008 */ lui $t4,%hi(g_SparkTypes) /* f01e098: 44807000 */ mtc1 $zero,$f14 -/* f01e09c: 24423fc8 */ addiu $v0,$v0,%lo(var800a3fc8) -/* f01e0a0: 258cec80 */ addiu $t4,$t4,%lo(sparktable) -/* f01e0a4: 265234d0 */ addiu $s2,$s2,%lo(var800a34d0) +/* f01e09c: 24423fc8 */ addiu $v0,$v0,%lo(g_SparkGroups) +/* f01e0a0: 258cec80 */ addiu $t4,$t4,%lo(g_SparkTypes) +/* f01e0a4: 265234d0 */ addiu $s2,$s2,%lo(g_Sparks) /* f01e0a8: 26943fc0 */ addiu $s4,$s4,%lo(var800a3fc0) /* f01e0ac: 26b59fc0 */ addiu $s5,$s5,%lo(g_Vars) /* f01e0b0: c4308680 */ lwc1 $f16,%lo(var7f1a8680)($at) @@ -158,3 +155,83 @@ glabel sparksTick /* f01e248: 27bd0020 */ addiu $sp,$sp,0x20 /* f01e24c: 00000000 */ sll $zero,$zero,0x0 ); + +// Mismatch due to regalloc near group->startindex +//void sparksTick(void) +//{ +// struct sparkgroup *group; +// struct sparktype *type; +// s32 i; +// s32 j; +// s32 k; +// +// // 074 +// if (g_SparksAreActive) { +// g_SparksAreActive = false; +// group = &g_SparkGroups[0]; +// +// // Iterate spark groups +// for (i = 0; i != 10; i++) { +// type = &g_SparkTypes[group->type]; +// +// // 0e8 +// if (group->age >= type->maxage) { +// group->age = 0; +// } else /*0f8*/ if (group->age) { +// // 10c +// if (g_SparksAreActive == false) { +// g_SparksAreActive = true; +// } +// +// // 118 +// // Iterate the lvupdate multiplier +// for (j = 0; j < g_Vars.lvupdate240_60; j++) { +// // 120 +// struct spark *spark = &g_Sparks[group->startindex]; +// struct spark *next = &g_Sparks[group->startindex]; +// group->age++; +// +// // 144 +// // Iterate sparks in this group +// for (k = 0; k < group->numsparks; k++) { +// // 14c +// // Update this spark if active +// if (spark->ttl) { +// spark->speed.x -= spark->speed.x * type->decel; +// spark->speed.y = (spark->speed.y - spark->speed.y * type->decel) - type->weight; +// spark->speed.z -= spark->speed.z * type->decel; +// +// if (spark->speed.y == 0) { +// spark->speed.y = -0.0001f; +// } +// +// spark->pos.x += spark->speed.x; +// spark->pos.y += spark->speed.y; +// spark->pos.z += spark->speed.z; +// +// spark->ttl--; +// } +// +// // 1f4 +// // If reached the end of the array, jump back to start +// if (++next == &g_Sparks[100]) { +// // @dangerous: `next` is not reset here, so this +// // condition will only pass once per group. +// // If a group contains more than 100 sparks, it +// // could cause spark to overflow the array and write +// // over whatever's after it. +// spark = &g_Sparks[0]; +// } else { +// spark++; +// } +// +// // 208 +// } +// } +// } +// +// // 224 +// group++; +// } +// } +//} diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index 1907d3051..06765b276 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -16615,709 +16615,10 @@ u32 var800a34c0 = 0; u32 var800a34c4 = 0; u32 var800a34c8 = 0; u32 var800a34cc = 0; -u32 var800a34d0 = 0; -u32 var800a34d4 = 0; -u32 var800a34d8 = 0; -u32 var800a34dc = 0; -u32 var800a34e0 = 0; -u32 var800a34e4 = 0; -u32 var800a34e8 = 0; -u32 var800a34ec = 0; -u32 var800a34f0 = 0; -u32 var800a34f4 = 0; -u32 var800a34f8 = 0; -u32 var800a34fc = 0; -u32 var800a3500 = 0; -u32 var800a3504 = 0; -u32 var800a3508 = 0; -u32 var800a350c = 0; -u32 var800a3510 = 0; -u32 var800a3514 = 0; -u32 var800a3518 = 0; -u32 var800a351c = 0; -u32 var800a3520 = 0; -u32 var800a3524 = 0; -u32 var800a3528 = 0; -u32 var800a352c = 0; -u32 var800a3530 = 0; -u32 var800a3534 = 0; -u32 var800a3538 = 0; -u32 var800a353c = 0; -u32 var800a3540 = 0; -u32 var800a3544 = 0; -u32 var800a3548 = 0; -u32 var800a354c = 0; -u32 var800a3550 = 0; -u32 var800a3554 = 0; -u32 var800a3558 = 0; -u32 var800a355c = 0; -u32 var800a3560 = 0; -u32 var800a3564 = 0; -u32 var800a3568 = 0; -u32 var800a356c = 0; -u32 var800a3570 = 0; -u32 var800a3574 = 0; -u32 var800a3578 = 0; -u32 var800a357c = 0; -u32 var800a3580 = 0; -u32 var800a3584 = 0; -u32 var800a3588 = 0; -u32 var800a358c = 0; -u32 var800a3590 = 0; -u32 var800a3594 = 0; -u32 var800a3598 = 0; -u32 var800a359c = 0; -u32 var800a35a0 = 0; -u32 var800a35a4 = 0; -u32 var800a35a8 = 0; -u32 var800a35ac = 0; -u32 var800a35b0 = 0; -u32 var800a35b4 = 0; -u32 var800a35b8 = 0; -u32 var800a35bc = 0; -u32 var800a35c0 = 0; -u32 var800a35c4 = 0; -u32 var800a35c8 = 0; -u32 var800a35cc = 0; -u32 var800a35d0 = 0; -u32 var800a35d4 = 0; -u32 var800a35d8 = 0; -u32 var800a35dc = 0; -u32 var800a35e0 = 0; -u32 var800a35e4 = 0; -u32 var800a35e8 = 0; -u32 var800a35ec = 0; -u32 var800a35f0 = 0; -u32 var800a35f4 = 0; -u32 var800a35f8 = 0; -u32 var800a35fc = 0; -u32 var800a3600 = 0; -u32 var800a3604 = 0; -u32 var800a3608 = 0; -u32 var800a360c = 0; -u32 var800a3610 = 0; -u32 var800a3614 = 0; -u32 var800a3618 = 0; -u32 var800a361c = 0; -u32 var800a3620 = 0; -u32 var800a3624 = 0; -u32 var800a3628 = 0; -u32 var800a362c = 0; -u32 var800a3630 = 0; -u32 var800a3634 = 0; -u32 var800a3638 = 0; -u32 var800a363c = 0; -u32 var800a3640 = 0; -u32 var800a3644 = 0; -u32 var800a3648 = 0; -u32 var800a364c = 0; -u32 var800a3650 = 0; -u32 var800a3654 = 0; -u32 var800a3658 = 0; -u32 var800a365c = 0; -u32 var800a3660 = 0; -u32 var800a3664 = 0; -u32 var800a3668 = 0; -u32 var800a366c = 0; -u32 var800a3670 = 0; -u32 var800a3674 = 0; -u32 var800a3678 = 0; -u32 var800a367c = 0; -u32 var800a3680 = 0; -u32 var800a3684 = 0; -u32 var800a3688 = 0; -u32 var800a368c = 0; -u32 var800a3690 = 0; -u32 var800a3694 = 0; -u32 var800a3698 = 0; -u32 var800a369c = 0; -u32 var800a36a0 = 0; -u32 var800a36a4 = 0; -u32 var800a36a8 = 0; -u32 var800a36ac = 0; -u32 var800a36b0 = 0; -u32 var800a36b4 = 0; -u32 var800a36b8 = 0; -u32 var800a36bc = 0; -u32 var800a36c0 = 0; -u32 var800a36c4 = 0; -u32 var800a36c8 = 0; -u32 var800a36cc = 0; -u32 var800a36d0 = 0; -u32 var800a36d4 = 0; -u32 var800a36d8 = 0; -u32 var800a36dc = 0; -u32 var800a36e0 = 0; -u32 var800a36e4 = 0; -u32 var800a36e8 = 0; -u32 var800a36ec = 0; -u32 var800a36f0 = 0; -u32 var800a36f4 = 0; -u32 var800a36f8 = 0; -u32 var800a36fc = 0; -u32 var800a3700 = 0; -u32 var800a3704 = 0; -u32 var800a3708 = 0; -u32 var800a370c = 0; -u32 var800a3710 = 0; -u32 var800a3714 = 0; -u32 var800a3718 = 0; -u32 var800a371c = 0; -u32 var800a3720 = 0; -u32 var800a3724 = 0; -u32 var800a3728 = 0; -u32 var800a372c = 0; -u32 var800a3730 = 0; -u32 var800a3734 = 0; -u32 var800a3738 = 0; -u32 var800a373c = 0; -u32 var800a3740 = 0; -u32 var800a3744 = 0; -u32 var800a3748 = 0; -u32 var800a374c = 0; -u32 var800a3750 = 0; -u32 var800a3754 = 0; -u32 var800a3758 = 0; -u32 var800a375c = 0; -u32 var800a3760 = 0; -u32 var800a3764 = 0; -u32 var800a3768 = 0; -u32 var800a376c = 0; -u32 var800a3770 = 0; -u32 var800a3774 = 0; -u32 var800a3778 = 0; -u32 var800a377c = 0; -u32 var800a3780 = 0; -u32 var800a3784 = 0; -u32 var800a3788 = 0; -u32 var800a378c = 0; -u32 var800a3790 = 0; -u32 var800a3794 = 0; -u32 var800a3798 = 0; -u32 var800a379c = 0; -u32 var800a37a0 = 0; -u32 var800a37a4 = 0; -u32 var800a37a8 = 0; -u32 var800a37ac = 0; -u32 var800a37b0 = 0; -u32 var800a37b4 = 0; -u32 var800a37b8 = 0; -u32 var800a37bc = 0; -u32 var800a37c0 = 0; -u32 var800a37c4 = 0; -u32 var800a37c8 = 0; -u32 var800a37cc = 0; -u32 var800a37d0 = 0; -u32 var800a37d4 = 0; -u32 var800a37d8 = 0; -u32 var800a37dc = 0; -u32 var800a37e0 = 0; -u32 var800a37e4 = 0; -u32 var800a37e8 = 0; -u32 var800a37ec = 0; -u32 var800a37f0 = 0; -u32 var800a37f4 = 0; -u32 var800a37f8 = 0; -u32 var800a37fc = 0; -u32 var800a3800 = 0; -u32 var800a3804 = 0; -u32 var800a3808 = 0; -u32 var800a380c = 0; -u32 var800a3810 = 0; -u32 var800a3814 = 0; -u32 var800a3818 = 0; -u32 var800a381c = 0; -u32 var800a3820 = 0; -u32 var800a3824 = 0; -u32 var800a3828 = 0; -u32 var800a382c = 0; -u32 var800a3830 = 0; -u32 var800a3834 = 0; -u32 var800a3838 = 0; -u32 var800a383c = 0; -u32 var800a3840 = 0; -u32 var800a3844 = 0; -u32 var800a3848 = 0; -u32 var800a384c = 0; -u32 var800a3850 = 0; -u32 var800a3854 = 0; -u32 var800a3858 = 0; -u32 var800a385c = 0; -u32 var800a3860 = 0; -u32 var800a3864 = 0; -u32 var800a3868 = 0; -u32 var800a386c = 0; -u32 var800a3870 = 0; -u32 var800a3874 = 0; -u32 var800a3878 = 0; -u32 var800a387c = 0; -u32 var800a3880 = 0; -u32 var800a3884 = 0; -u32 var800a3888 = 0; -u32 var800a388c = 0; -u32 var800a3890 = 0; -u32 var800a3894 = 0; -u32 var800a3898 = 0; -u32 var800a389c = 0; -u32 var800a38a0 = 0; -u32 var800a38a4 = 0; -u32 var800a38a8 = 0; -u32 var800a38ac = 0; -u32 var800a38b0 = 0; -u32 var800a38b4 = 0; -u32 var800a38b8 = 0; -u32 var800a38bc = 0; -u32 var800a38c0 = 0; -u32 var800a38c4 = 0; -u32 var800a38c8 = 0; -u32 var800a38cc = 0; -u32 var800a38d0 = 0; -u32 var800a38d4 = 0; -u32 var800a38d8 = 0; -u32 var800a38dc = 0; -u32 var800a38e0 = 0; -u32 var800a38e4 = 0; -u32 var800a38e8 = 0; -u32 var800a38ec = 0; -u32 var800a38f0 = 0; -u32 var800a38f4 = 0; -u32 var800a38f8 = 0; -u32 var800a38fc = 0; -u32 var800a3900 = 0; -u32 var800a3904 = 0; -u32 var800a3908 = 0; -u32 var800a390c = 0; -u32 var800a3910 = 0; -u32 var800a3914 = 0; -u32 var800a3918 = 0; -u32 var800a391c = 0; -u32 var800a3920 = 0; -u32 var800a3924 = 0; -u32 var800a3928 = 0; -u32 var800a392c = 0; -u32 var800a3930 = 0; -u32 var800a3934 = 0; -u32 var800a3938 = 0; -u32 var800a393c = 0; -u32 var800a3940 = 0; -u32 var800a3944 = 0; -u32 var800a3948 = 0; -u32 var800a394c = 0; -u32 var800a3950 = 0; -u32 var800a3954 = 0; -u32 var800a3958 = 0; -u32 var800a395c = 0; -u32 var800a3960 = 0; -u32 var800a3964 = 0; -u32 var800a3968 = 0; -u32 var800a396c = 0; -u32 var800a3970 = 0; -u32 var800a3974 = 0; -u32 var800a3978 = 0; -u32 var800a397c = 0; -u32 var800a3980 = 0; -u32 var800a3984 = 0; -u32 var800a3988 = 0; -u32 var800a398c = 0; -u32 var800a3990 = 0; -u32 var800a3994 = 0; -u32 var800a3998 = 0; -u32 var800a399c = 0; -u32 var800a39a0 = 0; -u32 var800a39a4 = 0; -u32 var800a39a8 = 0; -u32 var800a39ac = 0; -u32 var800a39b0 = 0; -u32 var800a39b4 = 0; -u32 var800a39b8 = 0; -u32 var800a39bc = 0; -u32 var800a39c0 = 0; -u32 var800a39c4 = 0; -u32 var800a39c8 = 0; -u32 var800a39cc = 0; -u32 var800a39d0 = 0; -u32 var800a39d4 = 0; -u32 var800a39d8 = 0; -u32 var800a39dc = 0; -u32 var800a39e0 = 0; -u32 var800a39e4 = 0; -u32 var800a39e8 = 0; -u32 var800a39ec = 0; -u32 var800a39f0 = 0; -u32 var800a39f4 = 0; -u32 var800a39f8 = 0; -u32 var800a39fc = 0; -u32 var800a3a00 = 0; -u32 var800a3a04 = 0; -u32 var800a3a08 = 0; -u32 var800a3a0c = 0; -u32 var800a3a10 = 0; -u32 var800a3a14 = 0; -u32 var800a3a18 = 0; -u32 var800a3a1c = 0; -u32 var800a3a20 = 0; -u32 var800a3a24 = 0; -u32 var800a3a28 = 0; -u32 var800a3a2c = 0; -u32 var800a3a30 = 0; -u32 var800a3a34 = 0; -u32 var800a3a38 = 0; -u32 var800a3a3c = 0; -u32 var800a3a40 = 0; -u32 var800a3a44 = 0; -u32 var800a3a48 = 0; -u32 var800a3a4c = 0; -u32 var800a3a50 = 0; -u32 var800a3a54 = 0; -u32 var800a3a58 = 0; -u32 var800a3a5c = 0; -u32 var800a3a60 = 0; -u32 var800a3a64 = 0; -u32 var800a3a68 = 0; -u32 var800a3a6c = 0; -u32 var800a3a70 = 0; -u32 var800a3a74 = 0; -u32 var800a3a78 = 0; -u32 var800a3a7c = 0; -u32 var800a3a80 = 0; -u32 var800a3a84 = 0; -u32 var800a3a88 = 0; -u32 var800a3a8c = 0; -u32 var800a3a90 = 0; -u32 var800a3a94 = 0; -u32 var800a3a98 = 0; -u32 var800a3a9c = 0; -u32 var800a3aa0 = 0; -u32 var800a3aa4 = 0; -u32 var800a3aa8 = 0; -u32 var800a3aac = 0; -u32 var800a3ab0 = 0; -u32 var800a3ab4 = 0; -u32 var800a3ab8 = 0; -u32 var800a3abc = 0; -u32 var800a3ac0 = 0; -u32 var800a3ac4 = 0; -u32 var800a3ac8 = 0; -u32 var800a3acc = 0; -u32 var800a3ad0 = 0; -u32 var800a3ad4 = 0; -u32 var800a3ad8 = 0; -u32 var800a3adc = 0; -u32 var800a3ae0 = 0; -u32 var800a3ae4 = 0; -u32 var800a3ae8 = 0; -u32 var800a3aec = 0; -u32 var800a3af0 = 0; -u32 var800a3af4 = 0; -u32 var800a3af8 = 0; -u32 var800a3afc = 0; -u32 var800a3b00 = 0; -u32 var800a3b04 = 0; -u32 var800a3b08 = 0; -u32 var800a3b0c = 0; -u32 var800a3b10 = 0; -u32 var800a3b14 = 0; -u32 var800a3b18 = 0; -u32 var800a3b1c = 0; -u32 var800a3b20 = 0; -u32 var800a3b24 = 0; -u32 var800a3b28 = 0; -u32 var800a3b2c = 0; -u32 var800a3b30 = 0; -u32 var800a3b34 = 0; -u32 var800a3b38 = 0; -u32 var800a3b3c = 0; -u32 var800a3b40 = 0; -u32 var800a3b44 = 0; -u32 var800a3b48 = 0; -u32 var800a3b4c = 0; -u32 var800a3b50 = 0; -u32 var800a3b54 = 0; -u32 var800a3b58 = 0; -u32 var800a3b5c = 0; -u32 var800a3b60 = 0; -u32 var800a3b64 = 0; -u32 var800a3b68 = 0; -u32 var800a3b6c = 0; -u32 var800a3b70 = 0; -u32 var800a3b74 = 0; -u32 var800a3b78 = 0; -u32 var800a3b7c = 0; -u32 var800a3b80 = 0; -u32 var800a3b84 = 0; -u32 var800a3b88 = 0; -u32 var800a3b8c = 0; -u32 var800a3b90 = 0; -u32 var800a3b94 = 0; -u32 var800a3b98 = 0; -u32 var800a3b9c = 0; -u32 var800a3ba0 = 0; -u32 var800a3ba4 = 0; -u32 var800a3ba8 = 0; -u32 var800a3bac = 0; -u32 var800a3bb0 = 0; -u32 var800a3bb4 = 0; -u32 var800a3bb8 = 0; -u32 var800a3bbc = 0; -u32 var800a3bc0 = 0; -u32 var800a3bc4 = 0; -u32 var800a3bc8 = 0; -u32 var800a3bcc = 0; -u32 var800a3bd0 = 0; -u32 var800a3bd4 = 0; -u32 var800a3bd8 = 0; -u32 var800a3bdc = 0; -u32 var800a3be0 = 0; -u32 var800a3be4 = 0; -u32 var800a3be8 = 0; -u32 var800a3bec = 0; -u32 var800a3bf0 = 0; -u32 var800a3bf4 = 0; -u32 var800a3bf8 = 0; -u32 var800a3bfc = 0; -u32 var800a3c00 = 0; -u32 var800a3c04 = 0; -u32 var800a3c08 = 0; -u32 var800a3c0c = 0; -u32 var800a3c10 = 0; -u32 var800a3c14 = 0; -u32 var800a3c18 = 0; -u32 var800a3c1c = 0; -u32 var800a3c20 = 0; -u32 var800a3c24 = 0; -u32 var800a3c28 = 0; -u32 var800a3c2c = 0; -u32 var800a3c30 = 0; -u32 var800a3c34 = 0; -u32 var800a3c38 = 0; -u32 var800a3c3c = 0; -u32 var800a3c40 = 0; -u32 var800a3c44 = 0; -u32 var800a3c48 = 0; -u32 var800a3c4c = 0; -u32 var800a3c50 = 0; -u32 var800a3c54 = 0; -u32 var800a3c58 = 0; -u32 var800a3c5c = 0; -u32 var800a3c60 = 0; -u32 var800a3c64 = 0; -u32 var800a3c68 = 0; -u32 var800a3c6c = 0; -u32 var800a3c70 = 0; -u32 var800a3c74 = 0; -u32 var800a3c78 = 0; -u32 var800a3c7c = 0; -u32 var800a3c80 = 0; -u32 var800a3c84 = 0; -u32 var800a3c88 = 0; -u32 var800a3c8c = 0; -u32 var800a3c90 = 0; -u32 var800a3c94 = 0; -u32 var800a3c98 = 0; -u32 var800a3c9c = 0; -u32 var800a3ca0 = 0; -u32 var800a3ca4 = 0; -u32 var800a3ca8 = 0; -u32 var800a3cac = 0; -u32 var800a3cb0 = 0; -u32 var800a3cb4 = 0; -u32 var800a3cb8 = 0; -u32 var800a3cbc = 0; -u32 var800a3cc0 = 0; -u32 var800a3cc4 = 0; -u32 var800a3cc8 = 0; -u32 var800a3ccc = 0; -u32 var800a3cd0 = 0; -u32 var800a3cd4 = 0; -u32 var800a3cd8 = 0; -u32 var800a3cdc = 0; -u32 var800a3ce0 = 0; -u32 var800a3ce4 = 0; -u32 var800a3ce8 = 0; -u32 var800a3cec = 0; -u32 var800a3cf0 = 0; -u32 var800a3cf4 = 0; -u32 var800a3cf8 = 0; -u32 var800a3cfc = 0; -u32 var800a3d00 = 0; -u32 var800a3d04 = 0; -u32 var800a3d08 = 0; -u32 var800a3d0c = 0; -u32 var800a3d10 = 0; -u32 var800a3d14 = 0; -u32 var800a3d18 = 0; -u32 var800a3d1c = 0; -u32 var800a3d20 = 0; -u32 var800a3d24 = 0; -u32 var800a3d28 = 0; -u32 var800a3d2c = 0; -u32 var800a3d30 = 0; -u32 var800a3d34 = 0; -u32 var800a3d38 = 0; -u32 var800a3d3c = 0; -u32 var800a3d40 = 0; -u32 var800a3d44 = 0; -u32 var800a3d48 = 0; -u32 var800a3d4c = 0; -u32 var800a3d50 = 0; -u32 var800a3d54 = 0; -u32 var800a3d58 = 0; -u32 var800a3d5c = 0; -u32 var800a3d60 = 0; -u32 var800a3d64 = 0; -u32 var800a3d68 = 0; -u32 var800a3d6c = 0; -u32 var800a3d70 = 0; -u32 var800a3d74 = 0; -u32 var800a3d78 = 0; -u32 var800a3d7c = 0; -u32 var800a3d80 = 0; -u32 var800a3d84 = 0; -u32 var800a3d88 = 0; -u32 var800a3d8c = 0; -u32 var800a3d90 = 0; -u32 var800a3d94 = 0; -u32 var800a3d98 = 0; -u32 var800a3d9c = 0; -u32 var800a3da0 = 0; -u32 var800a3da4 = 0; -u32 var800a3da8 = 0; -u32 var800a3dac = 0; -u32 var800a3db0 = 0; -u32 var800a3db4 = 0; -u32 var800a3db8 = 0; -u32 var800a3dbc = 0; -u32 var800a3dc0 = 0; -u32 var800a3dc4 = 0; -u32 var800a3dc8 = 0; -u32 var800a3dcc = 0; -u32 var800a3dd0 = 0; -u32 var800a3dd4 = 0; -u32 var800a3dd8 = 0; -u32 var800a3ddc = 0; -u32 var800a3de0 = 0; -u32 var800a3de4 = 0; -u32 var800a3de8 = 0; -u32 var800a3dec = 0; -u32 var800a3df0 = 0; -u32 var800a3df4 = 0; -u32 var800a3df8 = 0; -u32 var800a3dfc = 0; -u32 var800a3e00 = 0; -u32 var800a3e04 = 0; -u32 var800a3e08 = 0; -u32 var800a3e0c = 0; -u32 var800a3e10 = 0; -u32 var800a3e14 = 0; -u32 var800a3e18 = 0; -u32 var800a3e1c = 0; -u32 var800a3e20 = 0; -u32 var800a3e24 = 0; -u32 var800a3e28 = 0; -u32 var800a3e2c = 0; -u32 var800a3e30 = 0; -u32 var800a3e34 = 0; -u32 var800a3e38 = 0; -u32 var800a3e3c = 0; -u32 var800a3e40 = 0; -u32 var800a3e44 = 0; -u32 var800a3e48 = 0; -u32 var800a3e4c = 0; -u32 var800a3e50 = 0; -u32 var800a3e54 = 0; -u32 var800a3e58 = 0; -u32 var800a3e5c = 0; -u32 var800a3e60 = 0; -u32 var800a3e64 = 0; -u32 var800a3e68 = 0; -u32 var800a3e6c = 0; -u32 var800a3e70 = 0; -u32 var800a3e74 = 0; -u32 var800a3e78 = 0; -u32 var800a3e7c = 0; -u32 var800a3e80 = 0; -u32 var800a3e84 = 0; -u32 var800a3e88 = 0; -u32 var800a3e8c = 0; -u32 var800a3e90 = 0; -u32 var800a3e94 = 0; -u32 var800a3e98 = 0; -u32 var800a3e9c = 0; -u32 var800a3ea0 = 0; -u32 var800a3ea4 = 0; -u32 var800a3ea8 = 0; -u32 var800a3eac = 0; -u32 var800a3eb0 = 0; -u32 var800a3eb4 = 0; -u32 var800a3eb8 = 0; -u32 var800a3ebc = 0; -u32 var800a3ec0 = 0; -u32 var800a3ec4 = 0; -u32 var800a3ec8 = 0; -u32 var800a3ecc = 0; -u32 var800a3ed0 = 0; -u32 var800a3ed4 = 0; -u32 var800a3ed8 = 0; -u32 var800a3edc = 0; -u32 var800a3ee0 = 0; -u32 var800a3ee4 = 0; -u32 var800a3ee8 = 0; -u32 var800a3eec = 0; -u32 var800a3ef0 = 0; -u32 var800a3ef4 = 0; -u32 var800a3ef8 = 0; -u32 var800a3efc = 0; -u32 var800a3f00 = 0; -u32 var800a3f04 = 0; -u32 var800a3f08 = 0; -u32 var800a3f0c = 0; -u32 var800a3f10 = 0; -u32 var800a3f14 = 0; -u32 var800a3f18 = 0; -u32 var800a3f1c = 0; -u32 var800a3f20 = 0; -u32 var800a3f24 = 0; -u32 var800a3f28 = 0; -u32 var800a3f2c = 0; -u32 var800a3f30 = 0; -u32 var800a3f34 = 0; -u32 var800a3f38 = 0; -u32 var800a3f3c = 0; -u32 var800a3f40 = 0; -u32 var800a3f44 = 0; -u32 var800a3f48 = 0; -u32 var800a3f4c = 0; -u32 var800a3f50 = 0; -u32 var800a3f54 = 0; -u32 var800a3f58 = 0; -u32 var800a3f5c = 0; -u32 var800a3f60 = 0; -u32 var800a3f64 = 0; -u32 var800a3f68 = 0; -u32 var800a3f6c = 0; -u32 var800a3f70 = 0; -u32 var800a3f74 = 0; -u32 var800a3f78 = 0; -u32 var800a3f7c = 0; -u32 var800a3f80 = 0; -u32 var800a3f84 = 0; -u32 var800a3f88 = 0; -u32 var800a3f8c = 0; -u32 var800a3f90 = 0; -u32 var800a3f94 = 0; -u32 var800a3f98 = 0; -u32 var800a3f9c = 0; -u32 var800a3fa0 = 0; -u32 var800a3fa4 = 0; -u32 var800a3fa8 = 0; -u32 var800a3fac = 0; -u32 var800a3fb0 = 0; -u32 var800a3fb4 = 0; -u32 var800a3fb8 = 0; -u32 var800a3fbc = 0; +struct spark g_Sparks[100] = {0}; u32 var800a3fc0 = 0; u32 var800a3fc4 = 0; -struct gvars800a3fc8 var800a3fc8[10] = {0}; +struct sparkgroup g_SparkGroups[10] = {0}; u32 var800a4130 = 0; u32 var800a4134 = 0; u32 var800a4138 = 0; diff --git a/src/include/game/data/data_020df0.h b/src/include/game/data/data_020df0.h index 0b8b59821..faec58aef 100644 --- a/src/include/game/data/data_020df0.h +++ b/src/include/game/data/data_020df0.h @@ -131,8 +131,8 @@ extern u32 var8007e4a0; extern u32 var8007e4a4; extern struct explosiontype g_ExplosionTypes[NUM_EXPLOSIONTYPES]; extern struct smoketype g_SmokeTypes[NUM_SMOKETYPES]; -extern u32 sparktable[]; -extern u32 var8007f0b8; +extern struct sparktype g_SparkTypes[]; +extern s32 g_SparksAreActive; extern struct weatherdata *g_WeatherData; extern s32 var8007f0c4[4]; extern u32 g_RainSpeedExtra; diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 2c7c595cc..f88b68703 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -689,11 +689,9 @@ extern u32 var800a3440; extern u32 var800a3444; extern u32 var800a3448; extern u32 var800a3488; -extern u32 var800a34d0; - -extern u32 var800a3fc0; // likely a count of 800a3fc8 -extern struct gvars800a3fc8 var800a3fc8[]; - +extern struct spark g_Sparks[100]; +extern u32 var800a3fc0; // likely a count of g_SparkGroups +extern struct sparkgroup g_SparkGroups[]; extern u32 var800a4130; extern u32 var800a4154; extern u32 var800a4158; diff --git a/src/include/types.h b/src/include/types.h index 955a9a386..e8dc89554 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -3101,11 +3101,28 @@ struct credit { u16 text2; }; -struct gvars800a3fc8 { - u32 unk00; - u32 unk04; - u32 unk08; - u32 unk0c; +struct sparktype { + u16 unk00; + s16 unk02; + u16 unk04; + u16 unk06; + u16 unk08; + u16 unk0a; + f32 weight; + u16 maxage; + u16 unk12; + u16 unk14; + u32 unk18; + u32 unk1c; + u32 unk20; + f32 decel; +}; + +struct sparkgroup { + s32 type; + s32 numsparks; + s32 age; + s32 startindex; // index into g_Sparks u32 unk10; u32 unk14; u32 unk18; @@ -3113,6 +3130,12 @@ struct gvars800a3fc8 { u32 unk20; }; +struct spark { + struct coord pos; + struct coord speed; + s32 ttl; // time to live (number of ticks remaining) +}; + struct roombitfield { u8 a : 4; u8 b : 4;