diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 523c06847..563338b38 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -6358,7 +6358,7 @@ u32 sparktable[] = { u32 var8007f0b8 = 0x00000000; u32 var8007f0bc = 0x00000000; -u32 var8007f0c0 = 0x00000000; +struct weatherdata *g_WeatherData = NULL; u32 var8007f0c4 = 0x000080b7; u32 var8007f0c8 = 0x000080b6; u32 var8007f0cc = 0x000080b8; diff --git a/src/game/game_0132a0.c b/src/game/game_0132a0.c index 27cc846bd..4322b3f2f 100644 --- a/src/game/game_0132a0.c +++ b/src/game/game_0132a0.c @@ -32,9 +32,9 @@ GLOBAL_ASM( glabel func0f0132a0 -/* f0132a0: 3c038008 */ lui $v1,%hi(var8007f0c0) +/* f0132a0: 3c038008 */ lui $v1,%hi(g_WeatherData) /* f0132a4: 3c018006 */ lui $at,%hi(var800623f0) -/* f0132a8: 2463f0c0 */ addiu $v1,$v1,%lo(var8007f0c0) +/* f0132a8: 2463f0c0 */ addiu $v1,$v1,%lo(g_WeatherData) /* f0132ac: ac2023f0 */ sw $zero,%lo(var800623f0)($at) /* f0132b0: ac600000 */ sw $zero,0x0($v1) /* f0132b4: 3c048008 */ lui $a0,%hi(g_StageIndex) @@ -87,12 +87,12 @@ glabel func0f0132a0 /* f01335c: 24040100 */ addiu $a0,$zero,0x100 /* f013360: 0c0048f2 */ jal malloc /* f013364: 24050004 */ addiu $a1,$zero,0x4 -/* f013368: 3c038008 */ lui $v1,%hi(var8007f0c0) -/* f01336c: 2463f0c0 */ addiu $v1,$v1,%lo(var8007f0c0) +/* f013368: 3c038008 */ lui $v1,%hi(g_WeatherData) +/* f01336c: 2463f0c0 */ addiu $v1,$v1,%lo(g_WeatherData) /* f013370: 0fc4c4cd */ jal func0f131334 /* f013374: ac620000 */ sw $v0,0x0($v1) -/* f013378: 3c038008 */ lui $v1,%hi(var8007f0c0) -/* f01337c: 2463f0c0 */ addiu $v1,$v1,%lo(var8007f0c0) +/* f013378: 3c038008 */ lui $v1,%hi(g_WeatherData) +/* f01337c: 2463f0c0 */ addiu $v1,$v1,%lo(g_WeatherData) /* f013380: 8c6b0000 */ lw $t3,0x0($v1) /* f013384: 2406ffff */ addiu $a2,$zero,-1 /* f013388: 44800000 */ mtc1 $zero,$f0 diff --git a/src/game/game_01d770.c b/src/game/game_01d770.c index ef4868095..7ff86ec82 100644 --- a/src/game/game_01d770.c +++ b/src/game/game_01d770.c @@ -12,79 +12,25 @@ #include "lib/lib_0d520.h" #include "types.h" -const char var7f1a8640[] = "wettick"; -const char var7f1a8648[] = "windspeed"; +void weatherTick(void) +{ + if (!g_WeatherData + || (g_StageIndex == STAGEINDEX_AIRBASE && g_Vars.currentplayer->cam_pos.z < -2000.0f) + || (g_StageIndex == STAGEINDEX_G5BUILDING && g_Vars.tickmode != TICKMODE_6)) { + return; + } -const u32 var7f1a8654[] = {0x00000000}; -const u32 var7f1a8658[] = {0x00000000}; -const u32 var7f1a865c[] = {0x00000000}; + func0000db30("wettick", &var80062954); + func0000db30("windspeed", &var80062950); -GLOBAL_ASM( -glabel func0f01d770 -/* f01d770: 3c0e8008 */ lui $t6,%hi(var8007f0c0) -/* f01d774: 8dcef0c0 */ lw $t6,%lo(var8007f0c0)($t6) -/* f01d778: 27bdffe8 */ addiu $sp,$sp,-24 -/* f01d77c: afbf0014 */ sw $ra,0x14($sp) -/* f01d780: 11c00031 */ beqz $t6,.L0f01d848 -/* f01d784: 3c028008 */ lui $v0,%hi(g_StageIndex) -/* f01d788: 8c42fc00 */ lw $v0,%lo(g_StageIndex)($v0) -/* f01d78c: 24010013 */ addiu $at,$zero,0x13 -/* f01d790: 3c0f800a */ lui $t7,%hi(g_Vars+0x284) -/* f01d794: 54410009 */ bnel $v0,$at,.L0f01d7bc -/* f01d798: 2401000a */ addiu $at,$zero,0xa -/* f01d79c: 8defa244 */ lw $t7,%lo(g_Vars+0x284)($t7) -/* f01d7a0: 3c01c4fa */ lui $at,0xc4fa -/* f01d7a4: 44813000 */ mtc1 $at,$f6 -/* f01d7a8: c5e41bb8 */ lwc1 $f4,0x1bb8($t7) -/* f01d7ac: 4606203c */ c.lt.s $f4,$f6 -/* f01d7b0: 00000000 */ sll $zero,$zero,0x0 -/* f01d7b4: 45010024 */ bc1t .L0f01d848 -/* f01d7b8: 2401000a */ addiu $at,$zero,0xa -.L0f01d7bc: -/* f01d7bc: 14410004 */ bne $v0,$at,.L0f01d7d0 -/* f01d7c0: 3c18800a */ lui $t8,%hi(g_Vars+0x2ac) -/* f01d7c4: 8f18a26c */ lw $t8,%lo(g_Vars+0x2ac)($t8) -/* f01d7c8: 24010006 */ addiu $at,$zero,0x6 -/* f01d7cc: 1701001e */ bne $t8,$at,.L0f01d848 -.L0f01d7d0: -/* f01d7d0: 3c047f1b */ lui $a0,%hi(var7f1a8640) -/* f01d7d4: 3c058006 */ lui $a1,%hi(var80062954) -/* f01d7d8: 24a52954 */ addiu $a1,$a1,%lo(var80062954) -/* f01d7dc: 0c0036cc */ jal func0000db30 -/* f01d7e0: 24848640 */ addiu $a0,$a0,%lo(var7f1a8640) -/* f01d7e4: 3c047f1b */ lui $a0,%hi(var7f1a8648) -/* f01d7e8: 3c058006 */ lui $a1,%hi(var80062950) -/* f01d7ec: 24a52950 */ addiu $a1,$a1,%lo(var80062950) -/* f01d7f0: 0c0036cc */ jal func0000db30 -/* f01d7f4: 24848648 */ addiu $a0,$a0,%lo(var7f1a8648) -/* f01d7f8: 3c198006 */ lui $t9,%hi(var80062954) -/* f01d7fc: 8f392954 */ lw $t9,%lo(var80062954)($t9) -/* f01d800: 3c048008 */ lui $a0,%hi(var8007f0c0) -/* f01d804: 53200011 */ beqzl $t9,.L0f01d84c -/* f01d808: 8fbf0014 */ lw $ra,0x14($sp) -/* f01d80c: 8c84f0c0 */ lw $a0,%lo(var8007f0c0)($a0) -/* f01d810: 24010001 */ addiu $at,$zero,0x1 -/* f01d814: 8c820020 */ lw $v0,0x20($a0) -/* f01d818: 10400005 */ beqz $v0,.L0f01d830 -/* f01d81c: 00000000 */ sll $zero,$zero,0x0 -/* f01d820: 10410007 */ beq $v0,$at,.L0f01d840 -/* f01d824: 00000000 */ sll $zero,$zero,0x0 -/* f01d828: 10000008 */ beqz $zero,.L0f01d84c -/* f01d82c: 8fbf0014 */ lw $ra,0x14($sp) -.L0f01d830: -/* f01d830: 0fc4c68c */ jal func0f131a30 -/* f01d834: 00000000 */ sll $zero,$zero,0x0 -/* f01d838: 10000004 */ beqz $zero,.L0f01d84c -/* f01d83c: 8fbf0014 */ lw $ra,0x14($sp) -.L0f01d840: -/* f01d840: 0fc4c874 */ jal func0f1321d0 -/* f01d844: 00000000 */ sll $zero,$zero,0x0 -.L0f01d848: -/* f01d848: 8fbf0014 */ lw $ra,0x14($sp) -.L0f01d84c: -/* f01d84c: 27bd0018 */ addiu $sp,$sp,0x18 -/* f01d850: 03e00008 */ jr $ra -/* f01d854: 00000000 */ sll $zero,$zero,0x0 -/* f01d858: 00000000 */ sll $zero,$zero,0x0 -/* f01d85c: 00000000 */ sll $zero,$zero,0x0 -); + if (var80062954) { + switch (g_WeatherData->unk20) { + case 0: + func0f131a30(g_WeatherData); + break; + case 1: + func0f1321d0(g_WeatherData); + break; + } + } +} diff --git a/src/game/game_131060.c b/src/game/game_131060.c index bf04105bd..9ca390f13 100644 --- a/src/game/game_131060.c +++ b/src/game/game_131060.c @@ -45,8 +45,8 @@ const char var7f1b56c0[] = "snowcol2"; GLOBAL_ASM( glabel func0f131060 -/* f131060: 3c058008 */ lui $a1,%hi(var8007f0c0) -/* f131064: 8ca5f0c0 */ lw $a1,%lo(var8007f0c0)($a1) +/* f131060: 3c058008 */ lui $a1,%hi(g_WeatherData) +/* f131064: 8ca5f0c0 */ lw $a1,%lo(g_WeatherData)($a1) /* f131068: 27bdffd0 */ addiu $sp,$sp,-48 /* f13106c: afbf0024 */ sw $ra,0x24($sp) /* f131070: 14a00003 */ bnez $a1,.L0f131080 @@ -480,10 +480,10 @@ glabel func0f131678 /* f131678: 24830001 */ addiu $v1,$a0,0x1 /* f13167c: 18600025 */ blez $v1,.L0f131714 /* f131680: 00001025 */ or $v0,$zero,$zero -/* f131684: 3c078008 */ lui $a3,%hi(var8007f0c0) +/* f131684: 3c078008 */ lui $a3,%hi(g_WeatherData) /* f131688: 44801000 */ mtc1 $zero,$f2 /* f13168c: 44800000 */ mtc1 $zero,$f0 -/* f131690: 24e7f0c0 */ addiu $a3,$a3,%lo(var8007f0c0) +/* f131690: 24e7f0c0 */ addiu $a3,$a3,%lo(g_WeatherData) /* f131694: 00002025 */ or $a0,$zero,$zero /* f131698: 24080064 */ addiu $t0,$zero,0x64 .L0f13169c: @@ -535,8 +535,8 @@ glabel var7f1b56d4 glabel var7f1b56d8 .word 0x3cf5c28f .text -/* f13171c: 3c078008 */ lui $a3,%hi(var8007f0c0) -/* f131720: 24e7f0c0 */ addiu $a3,$a3,%lo(var8007f0c0) +/* f13171c: 3c078008 */ lui $a3,%hi(g_WeatherData) +/* f131720: 24e7f0c0 */ addiu $a3,$a3,%lo(g_WeatherData) /* f131724: 8ce60000 */ lw $a2,0x0($a3) /* f131728: 27bdffe0 */ addiu $sp,$sp,-32 /* f13172c: afbf0014 */ sw $ra,0x14($sp) @@ -560,8 +560,8 @@ glabel var7f1b56d8 /* f131770: 00c02025 */ or $a0,$a2,$zero /* f131774: 0fc4c584 */ jal func0f131610 /* f131778: afaa0018 */ sw $t2,0x18($sp) -/* f13177c: 3c078008 */ lui $a3,%hi(var8007f0c0) -/* f131780: 24e7f0c0 */ addiu $a3,$a3,%lo(var8007f0c0) +/* f13177c: 3c078008 */ lui $a3,%hi(g_WeatherData) +/* f131780: 24e7f0c0 */ addiu $a3,$a3,%lo(g_WeatherData) /* f131784: 8ce60000 */ lw $a2,0x0($a3) /* f131788: 8faa0018 */ lw $t2,0x18($sp) .L0f13178c: @@ -743,8 +743,8 @@ glabel var7f1b56d8 /* f131a04: 04810004 */ bgez $a0,.L0f131a18 /* f131a08: 00046823 */ negu $t5,$a0 /* f131a0c: ac6d0060 */ sw $t5,0x60($v1) -/* f131a10: 3c068008 */ lui $a2,%hi(var8007f0c0) -/* f131a14: 8cc6f0c0 */ lw $a2,%lo(var8007f0c0)($a2) +/* f131a10: 3c068008 */ lui $a2,%hi(g_WeatherData) +/* f131a14: 8cc6f0c0 */ lw $a2,%lo(g_WeatherData)($a2) .L0f131a18: /* f131a18: 8fae0020 */ lw $t6,0x20($sp) /* f131a1c: acce00cc */ sw $t6,0xcc($a2) @@ -1089,8 +1089,8 @@ glabel var7f1b56f4 /* f131ec4: 0003c023 */ negu $t8,$v1 /* f131ec8: ae580010 */ sw $t8,0x10($s2) .L0f131ecc: -/* f131ecc: 3c198008 */ lui $t9,%hi(var8007f0c0) -/* f131ed0: 8f39f0c0 */ lw $t9,%lo(var8007f0c0)($t9) +/* f131ecc: 3c198008 */ lui $t9,%hi(g_WeatherData) +/* f131ed0: 8f39f0c0 */ lw $t9,%lo(g_WeatherData)($t9) /* f131ed4: 4480b000 */ mtc1 $zero,$f22 /* f131ed8: 00009825 */ or $s3,$zero,$zero /* f131edc: 8f310024 */ lw $s1,0x24($t9) @@ -1485,8 +1485,8 @@ glabel var7f1b5734 /* f1323fc: 3c017f1b */ lui $at,%hi(var7f1b5718) /* f132400: c42c5718 */ lwc1 $f12,%lo(var7f1b5718)($at) /* f132404: c6b00044 */ lwc1 $f16,0x44($s5) -/* f132408: 3c098008 */ lui $t1,%hi(var8007f0c0) -/* f13240c: 8d29f0c0 */ lw $t1,%lo(var8007f0c0)($t1) +/* f132408: 3c098008 */ lui $t1,%hi(g_WeatherData) +/* f13240c: 8d29f0c0 */ lw $t1,%lo(g_WeatherData)($t1) /* f132410: 46106202 */ mul.s $f8,$f12,$f16 /* f132414: 4480a000 */ mtc1 $zero,$f20 /* f132418: 8d310024 */ lw $s1,0x24($t1) @@ -1884,8 +1884,8 @@ glabel var7f1b5734 GLOBAL_ASM( glabel rainConfigure -/* f1329bc: 3c028008 */ lui $v0,%hi(var8007f0c0) -/* f1329c0: 8c42f0c0 */ lw $v0,%lo(var8007f0c0)($v0) +/* f1329bc: 3c028008 */ lui $v0,%hi(g_WeatherData) +/* f1329c0: 8c42f0c0 */ lw $v0,%lo(g_WeatherData)($v0) /* f1329c4: 27bdffe8 */ addiu $sp,$sp,-24 /* f1329c8: afbf0014 */ sw $ra,0x14($sp) /* f1329cc: 50400004 */ beqzl $v0,.L0f1329e0 @@ -1901,8 +1901,8 @@ glabel rainConfigure GLOBAL_ASM( glabel snowConfigure -/* f1329ec: 3c028008 */ lui $v0,%hi(var8007f0c0) -/* f1329f0: 8c42f0c0 */ lw $v0,%lo(var8007f0c0)($v0) +/* f1329ec: 3c028008 */ lui $v0,%hi(g_WeatherData) +/* f1329f0: 8c42f0c0 */ lw $v0,%lo(g_WeatherData)($v0) /* f1329f4: 27bdffe8 */ addiu $sp,$sp,-24 /* f1329f8: afbf0014 */ sw $ra,0x14($sp) /* f1329fc: 10400003 */ beqz $v0,.L0f132a0c @@ -5350,8 +5350,8 @@ glabel var7f1b5790 GLOBAL_ASM( glabel func0f135bd8 -/* f135bd8: 3c028008 */ lui $v0,%hi(var8007f0c0) -/* f135bdc: 8c42f0c0 */ lw $v0,%lo(var8007f0c0)($v0) +/* f135bd8: 3c028008 */ lui $v0,%hi(g_WeatherData) +/* f135bdc: 8c42f0c0 */ lw $v0,%lo(g_WeatherData)($v0) /* f135be0: 27bdffe8 */ addiu $sp,$sp,-24 /* f135be4: afbf0014 */ sw $ra,0x14($sp) /* f135be8: 5040001e */ beqzl $v0,.L0f135c64 @@ -5361,24 +5361,24 @@ glabel func0f135bd8 /* f135bf8: 8c440038 */ lw $a0,0x38($v0) /* f135bfc: 0c00cec9 */ jal func00033b24 /* f135c00: 00000000 */ sll $zero,$zero,0x0 -/* f135c04: 3c028008 */ lui $v0,%hi(var8007f0c0) -/* f135c08: 8c42f0c0 */ lw $v0,%lo(var8007f0c0)($v0) +/* f135c04: 3c028008 */ lui $v0,%hi(g_WeatherData) +/* f135c08: 8c42f0c0 */ lw $v0,%lo(g_WeatherData)($v0) /* f135c0c: 8c440038 */ lw $a0,0x38($v0) .L0f135c10: /* f135c10: 50800006 */ beqzl $a0,.L0f135c2c /* f135c14: 8c44003c */ lw $a0,0x3c($v0) /* f135c18: 0c00cec9 */ jal func00033b24 /* f135c1c: 00000000 */ sll $zero,$zero,0x0 -/* f135c20: 3c028008 */ lui $v0,%hi(var8007f0c0) -/* f135c24: 8c42f0c0 */ lw $v0,%lo(var8007f0c0)($v0) +/* f135c20: 3c028008 */ lui $v0,%hi(g_WeatherData) +/* f135c24: 8c42f0c0 */ lw $v0,%lo(g_WeatherData)($v0) /* f135c28: 8c44003c */ lw $a0,0x3c($v0) .L0f135c2c: /* f135c2c: 50800006 */ beqzl $a0,.L0f135c48 /* f135c30: 8c440040 */ lw $a0,0x40($v0) /* f135c34: 0c00cec9 */ jal func00033b24 /* f135c38: 00000000 */ sll $zero,$zero,0x0 -/* f135c3c: 3c028008 */ lui $v0,%hi(var8007f0c0) -/* f135c40: 8c42f0c0 */ lw $v0,%lo(var8007f0c0)($v0) +/* f135c3c: 3c028008 */ lui $v0,%hi(g_WeatherData) +/* f135c40: 8c42f0c0 */ lw $v0,%lo(g_WeatherData)($v0) /* f135c44: 8c440040 */ lw $a0,0x40($v0) .L0f135c48: /* f135c48: 10800003 */ beqz $a0,.L0f135c58 @@ -5386,8 +5386,8 @@ glabel func0f135bd8 /* f135c50: 0c00cec9 */ jal func00033b24 /* f135c54: 00000000 */ sll $zero,$zero,0x0 .L0f135c58: -/* f135c58: 3c018008 */ lui $at,%hi(var8007f0c0) -/* f135c5c: ac20f0c0 */ sw $zero,%lo(var8007f0c0)($at) +/* f135c58: 3c018008 */ lui $at,%hi(g_WeatherData) +/* f135c5c: ac20f0c0 */ sw $zero,%lo(g_WeatherData)($at) /* f135c60: 8fbf0014 */ lw $ra,0x14($sp) .L0f135c64: /* f135c64: 27bd0018 */ addiu $sp,$sp,0x18 diff --git a/src/game/game_167ae0.c b/src/game/game_167ae0.c index 29bdccfea..d9a154176 100644 --- a/src/game/game_167ae0.c +++ b/src/game/game_167ae0.c @@ -5396,7 +5396,7 @@ glabel func0f16b96c /* f16c9b4: 8dce23f0 */ lw $t6,%lo(var800623f0)($t6) /* f16c9b8: 11c00003 */ beqz $t6,.L0f16c9c8 /* f16c9bc: 00000000 */ sll $zero,$zero,0x0 -/* f16c9c0: 0fc075dc */ jal func0f01d770 +/* f16c9c0: 0fc075dc */ jal weatherTick /* f16c9c4: 00000000 */ sll $zero,$zero,0x0 .L0f16c9c8: /* f16c9c8: 3c0f8006 */ lui $t7,%hi(var80061640) @@ -5807,7 +5807,7 @@ glabel func0f16b96c // func0f149864(); // // if (var800623f0) { -// func0f01d770(); +// weatherTick(); // } // // if (var80061640) { diff --git a/src/include/game/data/data_020df0.h b/src/include/game/data/data_020df0.h index b8eda5fe6..bc02626a7 100644 --- a/src/include/game/data/data_020df0.h +++ b/src/include/game/data/data_020df0.h @@ -133,7 +133,7 @@ extern struct explosiontype g_ExplosionTypes[NUM_EXPLOSIONTYPES]; extern struct smoketype g_SmokeTypes[NUM_SMOKETYPES]; extern u32 sparktable[]; extern u32 var8007f0b8; -extern u32 var8007f0c0; +extern struct weatherdata *g_WeatherData; extern u32 var8007f0c4; extern u32 var8007f0d4; extern u32 var8007f0d8; diff --git a/src/include/game/game_01d770.h b/src/include/game/game_01d770.h index 81ebbbfe3..fd17d40f7 100644 --- a/src/include/game/game_01d770.h +++ b/src/include/game/game_01d770.h @@ -3,6 +3,6 @@ #include #include "types.h" -void func0f01d770(void); +void weatherTick(void); #endif diff --git a/src/include/game/game_131060.h b/src/include/game/game_131060.h index 98da6a355..bd9b4deb3 100644 --- a/src/include/game/game_131060.h +++ b/src/include/game/game_131060.h @@ -9,8 +9,8 @@ u32 func0f131334(void); u32 func0f131610(void); u32 func0f131678(void); u32 func0f13171c(void); -u32 func0f131a30(void); -u32 func0f1321d0(void); +void func0f131a30(struct weatherdata *weather); +void func0f1321d0(struct weatherdata *weather); void rainConfigure(u32 arg0); void snowConfigure(u32 arg0); u32 func0f132a1c(void); diff --git a/src/include/types.h b/src/include/types.h index 5d63baed5..e3ccdaaab 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -5780,4 +5780,16 @@ struct ammotype { f32 unk08; }; +struct weatherdata { + u32 unk00; + u32 unk04; + u32 unk08; + u32 unk0c; + u32 unk10; + u32 unk14; + u32 unk18; + u32 unk1c; + u32 unk20; +}; + #endif