diff --git a/src/game/game_129900.c b/src/game/game_129900.c index 8b85df216..0b40e5644 100644 --- a/src/game/game_129900.c +++ b/src/game/game_129900.c @@ -54,29 +54,6 @@ const char var7f1b5568[] = ""; const char var7f1b556c[] = ""; const char var7f1b5570[] = "ecol"; -const u32 var7f1b5578[] = {0x44bb8000}; -const u32 var7f1b557c[] = {0x481c4000}; -const u32 var7f1b5580[] = {0x497423fe}; -const u32 var7f1b5584[] = {0x40c907a9}; -const u32 var7f1b5588[] = {0x3f4ccccd}; -const u32 var7f1b558c[] = {0x38d1b717}; -const u32 var7f1b5590[] = {0x3f333333}; -const u32 var7f1b5594[] = {0x3e99999a}; -const u32 var7f1b5598[] = {0x3d4ccccd}; -const u32 var7f1b559c[] = {0x3d4ccccd}; -const u32 var7f1b55a0[] = {0x40c907a9}; -const u32 var7f1b55a4[] = {0x3e4ccccd}; -const u32 var7f1b55a8[] = {0x3f4ccccd}; -const u32 var7f1b55ac[] = {0x3f333333}; -const u32 var7f1b55b0[] = {0x3f266666}; -const u32 var7f1b55b4[] = {0x3f4ccccd}; -const u32 var7f1b55b8[] = {0x3f16db6e}; -const u32 var7f1b55bc[] = {0x3f324925}; -const u32 var7f1b55c0[] = {0x3f524925}; -const u32 var7f1b55c4[] = {0x3f76db6e}; -const u32 var7f1b55c8[] = {0x00000000}; -const u32 var7f1b55cc[] = {0x00000000}; - GLOBAL_ASM( glabel func0f129900 /* f129900: 27bdffd0 */ addiu $sp,$sp,-48 @@ -362,171 +339,72 @@ glabel func0f129c08 /* f129cf8: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f129cfc -/* f129cfc: 27bdff78 */ addiu $sp,$sp,-136 -/* f129d00: afb5004c */ sw $s5,0x4c($sp) -/* f129d04: 3c158006 */ lui $s5,%hi(g_NumChrsA) -/* f129d08: 26b5298c */ addiu $s5,$s5,%lo(g_NumChrsA) -/* f129d0c: 8eaf0000 */ lw $t7,0x0($s5) -/* f129d10: afbe0058 */ sw $s8,0x58($sp) -/* f129d14: 3c0e7f08 */ lui $t6,%hi(func0f084e58) -/* f129d18: afb40048 */ sw $s4,0x48($sp) -/* f129d1c: afb30044 */ sw $s3,0x44($sp) -/* f129d20: afb20040 */ sw $s2,0x40($sp) -/* f129d24: 25de4e58 */ addiu $s8,$t6,%lo(func0f084e58) -/* f129d28: 00a09825 */ or $s3,$a1,$zero -/* f129d2c: 0080a025 */ or $s4,$a0,$zero -/* f129d30: afbf005c */ sw $ra,0x5c($sp) -/* f129d34: afb70054 */ sw $s7,0x54($sp) -/* f129d38: afb60050 */ sw $s6,0x50($sp) -/* f129d3c: afb1003c */ sw $s1,0x3c($sp) -/* f129d40: afb00038 */ sw $s0,0x38($sp) -/* f129d44: f7ba0030 */ sdc1 $f26,0x30($sp) -/* f129d48: f7b80028 */ sdc1 $f24,0x28($sp) -/* f129d4c: f7b60020 */ sdc1 $f22,0x20($sp) -/* f129d50: f7b40018 */ sdc1 $f20,0x18($sp) -/* f129d54: afbe0060 */ sw $s8,0x60($sp) -/* f129d58: 19e00042 */ blez $t7,.L0f129e64 -/* f129d5c: 00009025 */ or $s2,$zero,$zero -/* f129d60: 3c014120 */ lui $at,0x4120 -/* f129d64: 4481d000 */ mtc1 $at,$f26 -/* f129d68: 3c013f80 */ lui $at,0x3f80 -/* f129d6c: 4481c000 */ mtc1 $at,$f24 -/* f129d70: 3c014000 */ lui $at,0x4000 -/* f129d74: 3c16800a */ lui $s6,%hi(g_Vars) -/* f129d78: 3c118006 */ lui $s1,%hi(g_ChrsA) -/* f129d7c: 4481b000 */ mtc1 $at,$f22 -/* f129d80: 4480a000 */ mtc1 $zero,$f20 -/* f129d84: 26312988 */ addiu $s1,$s1,%lo(g_ChrsA) -/* f129d88: 26d69fc0 */ addiu $s6,$s6,%lo(g_Vars) -/* f129d8c: 00008025 */ or $s0,$zero,$zero -/* f129d90: 24170003 */ addiu $s7,$zero,0x3 -/* f129d94: 8e220000 */ lw $v0,0x0($s1) -.L0f129d98: -/* f129d98: 0050c021 */ addu $t8,$v0,$s0 -/* f129d9c: 8f190020 */ lw $t9,0x20($t8) -/* f129da0: 5320002b */ beqzl $t9,.L0f129e50 -/* f129da4: 8eb90000 */ lw $t9,0x0($s5) -/* f129da8: 0fc0a221 */ jal chrGetTargetProp -/* f129dac: 02022021 */ addu $a0,$s0,$v0 -/* f129db0: 8ec80284 */ lw $t0,0x284($s6) -/* f129db4: 8d0900bc */ lw $t1,0xbc($t0) -/* f129db8: 54490025 */ bnel $v0,$t1,.L0f129e50 -/* f129dbc: 8eb90000 */ lw $t9,0x0($s5) -/* f129dc0: 8e220000 */ lw $v0,0x0($s1) -/* f129dc4: 00505021 */ addu $t2,$v0,$s0 -/* f129dc8: 8d43001c */ lw $v1,0x1c($t2) -/* f129dcc: 50600020 */ beqzl $v1,.L0f129e50 -/* f129dd0: 8eb90000 */ lw $t9,0x0($s5) -/* f129dd4: 906b0000 */ lbu $t3,0x0($v1) -/* f129dd8: 56eb001d */ bnel $s7,$t3,.L0f129e50 -/* f129ddc: 8eb90000 */ lw $t9,0x0($s5) -/* f129de0: 906c0001 */ lbu $t4,0x1($v1) -/* f129de4: 02022021 */ addu $a0,$s0,$v0 -/* f129de8: 318d0004 */ andi $t5,$t4,0x4 -/* f129dec: 51a00018 */ beqzl $t5,.L0f129e50 -/* f129df0: 8eb90000 */ lw $t9,0x0($s5) -/* f129df4: 0fc1250e */ jal chrGetDistanceToCoord -/* f129df8: 02602825 */ or $a1,$s3,$zero -/* f129dfc: 46140032 */ c.eq.s $f0,$f20 -/* f129e00: 00000000 */ sll $zero,$zero,0x0 -/* f129e04: 45020004 */ bc1fl .L0f129e18 -/* f129e08: c6860000 */ lwc1 $f6,0x0($s4) -/* f129e0c: 10000008 */ beqz $zero,.L0f129e30 -/* f129e10: 4600b086 */ mov.s $f2,$f22 -/* f129e14: c6860000 */ lwc1 $f6,0x0($s4) -.L0f129e18: -/* f129e18: 8e2e0000 */ lw $t6,0x0($s1) -/* f129e1c: 4606d202 */ mul.s $f8,$f26,$f6 -/* f129e20: 01d07821 */ addu $t7,$t6,$s0 -/* f129e24: c5e400f0 */ lwc1 $f4,0xf0($t7) -/* f129e28: 46082282 */ mul.s $f10,$f4,$f8 -/* f129e2c: 46005083 */ div.s $f2,$f10,$f0 -.L0f129e30: -/* f129e30: 4602c03c */ c.lt.s $f24,$f2 -/* f129e34: 00000000 */ sll $zero,$zero,0x0 -/* f129e38: 45020005 */ bc1fl .L0f129e50 -/* f129e3c: 8eb90000 */ lw $t9,0x0($s5) -/* f129e40: 8e380000 */ lw $t8,0x0($s1) -/* f129e44: 0fc0e56f */ jal chrRecordLastHearTargetTime -/* f129e48: 02182021 */ addu $a0,$s0,$t8 -/* f129e4c: 8eb90000 */ lw $t9,0x0($s5) -.L0f129e50: -/* f129e50: 26520001 */ addiu $s2,$s2,0x1 -/* f129e54: 26100368 */ addiu $s0,$s0,0x368 -/* f129e58: 0259082a */ slt $at,$s2,$t9 -/* f129e5c: 5420ffce */ bnezl $at,.L0f129d98 -/* f129e60: 8e220000 */ lw $v0,0x0($s1) -.L0f129e64: -/* f129e64: 8fa80060 */ lw $t0,0x60($sp) -/* f129e68: 3c047f08 */ lui $a0,%hi(func0f084cf0) -/* f129e6c: 24834cf0 */ addiu $v1,$a0,%lo(func0f084cf0) -/* f129e70: 0068082b */ sltu $at,$v1,$t0 -/* f129e74: 10200008 */ beqz $at,.L0f129e98 -/* f129e78: 00001025 */ or $v0,$zero,$zero -.L0f129e7c: -/* f129e7c: 8c690000 */ lw $t1,0x0($v1) -/* f129e80: 24630004 */ addiu $v1,$v1,0x4 -/* f129e84: 007e082b */ sltu $at,$v1,$s8 -/* f129e88: 00491026 */ xor $v0,$v0,$t1 -/* f129e8c: 00025040 */ sll $t2,$v0,0x1 -/* f129e90: 1420fffa */ bnez $at,.L0f129e7c -/* f129e94: 01401025 */ or $v0,$t2,$zero -.L0f129e98: -/* f129e98: 3c01a17a */ lui $at,0xa17a -/* f129e9c: 34214ca0 */ ori $at,$at,0x4ca0 -/* f129ea0: 1041001c */ beq $v0,$at,.L0f129f14 -/* f129ea4: 00001825 */ or $v1,$zero,$zero -/* f129ea8: 3c014561 */ lui $at,0x4561 -/* f129eac: 4481a000 */ mtc1 $at,$f20 -/* f129eb0: 3c014348 */ lui $at,0x4348 -/* f129eb4: 44819000 */ mtc1 $at,$f18 -/* f129eb8: 3c017f1b */ lui $at,%hi(var7f1b5578) -/* f129ebc: c4305578 */ lwc1 $f16,%lo(var7f1b5578)($at) -/* f129ec0: 3c0140a0 */ lui $at,0x40a0 -/* f129ec4: 44817000 */ mtc1 $at,$f14 -/* f129ec8: 3c014170 */ lui $at,0x4170 -/* f129ecc: 44816000 */ mtc1 $at,$f12 -/* f129ed0: 3c014270 */ lui $at,0x4270 -/* f129ed4: 44811000 */ mtc1 $at,$f2 -/* f129ed8: 3c0142a0 */ lui $at,0x42a0 -/* f129edc: 3c028008 */ lui $v0,%hi(g_ExplosionTypes) -/* f129ee0: 44810000 */ mtc1 $at,$f0 -/* f129ee4: 2442e4b8 */ addiu $v0,$v0,%lo(g_ExplosionTypes) -/* f129ee8: 24040019 */ addiu $a0,$zero,0x19 -.L0f129eec: -/* f129eec: 24630001 */ addiu $v1,$v1,0x1 -/* f129ef0: e4400000 */ swc1 $f0,0x0($v0) -/* f129ef4: e4420004 */ swc1 $f2,0x4($v0) -/* f129ef8: e44c0008 */ swc1 $f12,0x8($v0) -/* f129efc: e44e000c */ swc1 $f14,0xc($v0) -/* f129f00: e4500010 */ swc1 $f16,0x10($v0) -/* f129f04: e4520014 */ swc1 $f18,0x14($v0) -/* f129f08: e4540018 */ swc1 $f20,0x18($v0) -/* f129f0c: 1464fff7 */ bne $v1,$a0,.L0f129eec -/* f129f10: 2442002c */ addiu $v0,$v0,0x2c -.L0f129f14: -/* f129f14: 8fbf005c */ lw $ra,0x5c($sp) -/* f129f18: d7b40018 */ ldc1 $f20,0x18($sp) -/* f129f1c: d7b60020 */ ldc1 $f22,0x20($sp) -/* f129f20: d7b80028 */ ldc1 $f24,0x28($sp) -/* f129f24: d7ba0030 */ ldc1 $f26,0x30($sp) -/* f129f28: 8fb00038 */ lw $s0,0x38($sp) -/* f129f2c: 8fb1003c */ lw $s1,0x3c($sp) -/* f129f30: 8fb20040 */ lw $s2,0x40($sp) -/* f129f34: 8fb30044 */ lw $s3,0x44($sp) -/* f129f38: 8fb40048 */ lw $s4,0x48($sp) -/* f129f3c: 8fb5004c */ lw $s5,0x4c($sp) -/* f129f40: 8fb60050 */ lw $s6,0x50($sp) -/* f129f44: 8fb70054 */ lw $s7,0x54($sp) -/* f129f48: 8fbe0058 */ lw $s8,0x58($sp) -/* f129f4c: 03e00008 */ jr $ra -/* f129f50: 27bd0088 */ addiu $sp,$sp,0x88 -); +void alertNearbyChrsToNoise(f32 *radius, struct coord *noisepos) +{ + u32 stack[2]; + s32 *end = (s32 *)&func0f084e58; + s32 i; + + for (i = 0; i < g_NumChrsA; i++) { + if (g_ChrsA[i].animdata + && chrGetTargetProp(&g_ChrsA[i]) == g_Vars.currentplayer->prop + && g_ChrsA[i].prop + && g_ChrsA[i].prop->type == PROPTYPE_CHR + && (g_ChrsA[i].prop->flags & 4)) { + f32 distance = chrGetDistanceToCoord(&g_ChrsA[i], noisepos); + + if (distance == 0) { + distance = 2; + } else { + distance = (10.0f * *radius * g_ChrsA[i].hearingscale) / distance; + } + + if (distance > 1) { + chrRecordLastHearTargetTime(&g_ChrsA[i]); + } + } + } + +#if PIRACYCHECKS + { + u32 checksum = 0; + s32 *ptr = (s32 *)&func0f084cf0; + + while (ptr < end) { + checksum ^= *ptr; + checksum <<= 1; + ptr++; + } + + if (checksum != 0xa17a4ca0) { + struct explosiontype *type = &g_ExplosionTypes[0]; + s32 i; + + for (i = 0; i != NUM_EXPLOSIONTYPES - 1; i++) { + type->rangeh = 80; + type->rangev = 60; + type->changerateh = 15; + type->changeratev = 5; + type->innersize = 1500; + type->blastradius = 200; + type->damageradius = 3600; + type++; + } + } + } +#endif +} GLOBAL_ASM( glabel func0f129f54 +.late_rodata +glabel var7f1b557c +.word 0x481c4000 +glabel var7f1b5580 +.word 0x497423fe +glabel var7f1b5584 +.word 0x40c907a9 +.text /* f129f54: 27bdfea0 */ addiu $sp,$sp,-352 /* f129f58: afb7004c */ sw $s7,0x4c($sp) /* f129f5c: 0007bc00 */ sll $s7,$a3,0x10 @@ -1423,7 +1301,7 @@ glabel func0f129f54 /* f12ac80: 8fa4009c */ lw $a0,0x9c($sp) .L0f12ac84: /* f12ac84: 8fa50164 */ lw $a1,0x164($sp) -/* f12ac88: 0fc4a73f */ jal func0f129cfc +/* f12ac88: 0fc4a73f */ jal alertNearbyChrsToNoise /* f12ac8c: afaa0158 */ sw $t2,0x158($sp) /* f12ac90: 8faa0158 */ lw $t2,0x158($sp) .L0f12ac94: @@ -1454,6 +1332,12 @@ glabel func0f129f54 GLOBAL_ASM( glabel func0f12acec +.late_rodata +glabel var7f1b5588 +.word 0x3f4ccccd +glabel var7f1b558c +.word 0x38d1b717 +.text /* f12acec: 27bdff98 */ addiu $sp,$sp,-104 /* f12acf0: 3c0e8008 */ lui $t6,%hi(var8007e4a0) /* f12acf4: 8dcee4a0 */ lw $t6,%lo(var8007e4a0)($t6) @@ -1730,6 +1614,16 @@ glabel func0f12af5c GLOBAL_ASM( glabel func0f12b0e0 +.late_rodata +glabel var7f1b5590 +.word 0x3f333333 +glabel var7f1b5594 +.word 0x3e99999a +glabel var7f1b5598 +.word 0x3d4ccccd +glabel var7f1b559c +.word 0x3d4ccccd +.text /* f12b0e0: 27bdfc58 */ addiu $sp,$sp,-936 /* f12b0e4: afbf0074 */ sw $ra,0x74($sp) /* f12b0e8: afbe0070 */ sw $s8,0x70($sp) @@ -2488,6 +2382,14 @@ glabel func0f12b0e0 GLOBAL_ASM( glabel func0f12bbdc +.late_rodata +glabel var7f1b55a0 +.word 0x40c907a9 +glabel var7f1b55a4 +.word 0x3e4ccccd +glabel var7f1b55a8 +.word 0x3f4ccccd +.text /* f12bbdc: 27bdfe98 */ addiu $sp,$sp,-360 /* f12bbe0: afbf0084 */ sw $ra,0x84($sp) /* f12bbe4: afb70080 */ sw $s7,0x80($sp) @@ -3709,6 +3611,22 @@ glabel func0f12c654 GLOBAL_ASM( glabel func0f12cd64 +.late_rodata +glabel var7f1b55ac +.word 0x3f333333 +glabel var7f1b55b0 +.word 0x3f266666 +glabel var7f1b55b4 +.word 0x3f4ccccd +glabel var7f1b55b8 +.word 0x3f16db6e +glabel var7f1b55bc +.word 0x3f324925 +glabel var7f1b55c0 +.word 0x3f524925 +glabel var7f1b55c4 +.word 0x3f76db6e +.text /* f12cd64: 27bdff30 */ addiu $sp,$sp,-208 /* f12cd68: afbf0034 */ sw $ra,0x34($sp) /* f12cd6c: afb10030 */ sw $s1,0x30($sp) diff --git a/src/include/game/game_129900.h b/src/include/game/game_129900.h index 646a7a23f..f67a8adb0 100644 --- a/src/include/game/game_129900.h +++ b/src/include/game/game_129900.h @@ -8,7 +8,7 @@ u32 func0f129940(void); u32 func0f129b08(void); u32 func0f129ba4(void); u32 func0f129c08(void); -u32 func0f129cfc(void); +void alertNearbyChrsToNoise(f32 *radius, struct coord *noisepos); u32 func0f129f54(void); u32 func0f12acec(void); u32 func0f12af5c(void);