From b0f4af068f44954f5cdccc73a127628d373fd991 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 19 Apr 2022 20:35:13 +1000 Subject: [PATCH] Decompile chr0f04c874 --- src/game/chraction.c | 1442 +++------------------------------- src/game/chraicommands.c | 4 +- src/include/commands.h | 4 +- src/include/game/chraction.h | 2 +- 4 files changed, 120 insertions(+), 1332 deletions(-) diff --git a/src/game/chraction.c b/src/game/chraction.c index 636fd48ef..35b4d4fe4 100644 --- a/src/game/chraction.c +++ b/src/game/chraction.c @@ -26921,1341 +26921,129 @@ f32 func0f04c784(struct chrdata *chr) return result; } -#if VERSION >= VERSION_PAL_FINAL -const char var7f1a8ce4[] = "chr/chraction.c"; -#else -const char var7f1a8ce4[] = "chraction.c"; -#endif +bool chr0f04c874(struct chrdata *chr, u32 angle360, struct coord *pos, u8 arg3, u8 arg4) +{ + struct prop *target = chrGetTargetProp(chr); + f32 sqdist = 0; + f32 f24 = func0f04c784(chr); + f32 cosine; + f32 sine; + struct coord chrpos; + f32 xdiff; + f32 ydiff; + f32 zdiff; + f32 scale; + bool again; + struct coord saved; + s32 result; + f32 ymax; + f32 ymin; + f32 width; + + chrpos.x = chr->prop->pos.x; + chrpos.y = chr->prop->pos.y; + chrpos.z = chr->prop->pos.z; + + do { + f32 angle360f = angle360; + + if (angle360f > 180) { + angle360f -= 360; + } + + angle360f -= f24; + angle360f *= 0.017450513318181f; + + cosine = cosf(angle360f); + sine = sinf(angle360f); + xdiff = chrpos.x - target->pos.x; + zdiff = chrpos.z - target->pos.z; + + pos->x = target->pos.x + (xdiff * cosine - zdiff * sine); + pos->y = chrpos.y; + pos->z = target->pos.z + (xdiff * sine + zdiff * cosine); + + chrGetBbox(chr->prop, &width, &ymax, &ymin); + + result = cd0002d7c0(&chrpos, chr->prop->rooms, pos, + CDTYPE_BG | CDTYPE_OBJS | CDTYPE_DOORS, 1, + ymax - chrpos.f[1], + ymin - chrpos.f[1]); + + if (result == CDRESULT_COLLISION) { + f32 xdiff; + f32 zdiff; + f32 tmp; #if VERSION >= VERSION_JPN_FINAL -GLOBAL_ASM( -glabel func0f04c874 -.late_rodata -glabel var7f1a942c -.word 0x3c8ef461 -.text -/* f04c874: 27bdff18 */ addiu $sp,$sp,-232 -/* f04c878: afbf007c */ sw $ra,0x7c($sp) -/* f04c87c: afb40068 */ sw $s4,0x68($sp) -/* f04c880: afb30064 */ sw $s3,0x64($sp) -/* f04c884: afb20060 */ sw $s2,0x60($sp) -/* f04c888: afb00058 */ sw $s0,0x58($sp) -/* f04c88c: 00c08025 */ or $s0,$a2,$zero -/* f04c890: 00a09025 */ or $s2,$a1,$zero -/* f04c894: 00809825 */ or $s3,$a0,$zero -/* f04c898: 30f400ff */ andi $s4,$a3,0xff -/* f04c89c: afbe0078 */ sw $s8,0x78($sp) -/* f04c8a0: afb70074 */ sw $s7,0x74($sp) -/* f04c8a4: afb60070 */ sw $s6,0x70($sp) -/* f04c8a8: afb5006c */ sw $s5,0x6c($sp) -/* f04c8ac: afb1005c */ sw $s1,0x5c($sp) -/* f04c8b0: f7be0050 */ sdc1 $f30,0x50($sp) -/* f04c8b4: f7bc0048 */ sdc1 $f28,0x48($sp) -/* f04c8b8: f7ba0040 */ sdc1 $f26,0x40($sp) -/* f04c8bc: f7b80038 */ sdc1 $f24,0x38($sp) -/* f04c8c0: f7b60030 */ sdc1 $f22,0x30($sp) -/* f04c8c4: f7b40028 */ sdc1 $f20,0x28($sp) -/* f04c8c8: 0fc0a221 */ jal chrGetTargetProp -/* f04c8cc: afa700f4 */ sw $a3,0xf4($sp) -/* f04c8d0: 4480d000 */ mtc1 $zero,$f26 -/* f04c8d4: 00408825 */ or $s1,$v0,$zero -/* f04c8d8: 0fc131e1 */ jal func0f04c784 -/* f04c8dc: 02602025 */ or $a0,$s3,$zero -/* f04c8e0: 8e6e001c */ lw $t6,0x1c($s3) -/* f04c8e4: 3c0143b4 */ lui $at,0x43b4 -/* f04c8e8: 4481f000 */ mtc1 $at,$f30 -/* f04c8ec: c5c40008 */ lwc1 $f4,0x8($t6) -/* f04c8f0: 3c014334 */ lui $at,0x4334 -/* f04c8f4: 4481e000 */ mtc1 $at,$f28 -/* f04c8f8: e7a400c8 */ swc1 $f4,0xc8($sp) -/* f04c8fc: 8e6f001c */ lw $t7,0x1c($s3) -/* f04c900: 46000606 */ mov.s $f24,$f0 -/* f04c904: 27be00c8 */ addiu $s8,$sp,0xc8 -/* f04c908: c5e6000c */ lwc1 $f6,0xc($t7) -/* f04c90c: 27b7009c */ addiu $s7,$sp,0x9c -/* f04c910: 27b600a0 */ addiu $s6,$sp,0xa0 -/* f04c914: e7a600cc */ swc1 $f6,0xcc($sp) -/* f04c918: 8e78001c */ lw $t8,0x1c($s3) -/* f04c91c: 27b50098 */ addiu $s5,$sp,0x98 -/* f04c920: c7080010 */ lwc1 $f8,0x10($t8) -/* f04c924: e7a800d0 */ swc1 $f8,0xd0($sp) -/* f04c928: 44925000 */ mtc1 $s2,$f10 -.L0f04c92c: -/* f04c92c: 3c014f80 */ lui $at,0x4f80 -/* f04c930: 06410004 */ bgez $s2,.L0f04c944 -/* f04c934: 46805020 */ cvt.s.w $f0,$f10 -/* f04c938: 44818000 */ mtc1 $at,$f16 -/* f04c93c: 00000000 */ nop -/* f04c940: 46100000 */ add.s $f0,$f0,$f16 -.L0f04c944: -/* f04c944: 4600e03c */ c.lt.s $f28,$f0 -/* f04c948: 46000506 */ mov.s $f20,$f0 -/* f04c94c: 3c017f1b */ lui $at,%hi(var7f1a942c) -/* f04c950: 45020003 */ bc1fl .L0f04c960 -/* f04c954: 4618a501 */ sub.s $f20,$f20,$f24 -/* f04c958: 461e0501 */ sub.s $f20,$f0,$f30 -/* f04c95c: 4618a501 */ sub.s $f20,$f20,$f24 -.L0f04c960: -/* f04c960: c432942c */ lwc1 $f18,%lo(var7f1a942c)($at) -/* f04c964: 4612a502 */ mul.s $f20,$f20,$f18 -/* f04c968: 0c0068f4 */ jal cosf -/* f04c96c: 4600a306 */ mov.s $f12,$f20 -/* f04c970: 46000586 */ mov.s $f22,$f0 -/* f04c974: 0c0068f7 */ jal sinf -/* f04c978: 4600a306 */ mov.s $f12,$f20 -/* f04c97c: c62e0008 */ lwc1 $f14,0x8($s1) -/* f04c980: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04c984: c7a600d0 */ lwc1 $f6,0xd0($sp) -/* f04c988: c6280010 */ lwc1 $f8,0x10($s1) -/* f04c98c: 460e2081 */ sub.s $f2,$f4,$f14 -/* f04c990: 02a02825 */ or $a1,$s5,$zero -/* f04c994: 02c03025 */ or $a2,$s6,$zero -/* f04c998: 46083301 */ sub.s $f12,$f6,$f8 -/* f04c99c: 46161282 */ mul.s $f10,$f2,$f22 -/* f04c9a0: 02e03825 */ or $a3,$s7,$zero -/* f04c9a4: 46006402 */ mul.s $f16,$f12,$f0 -/* f04c9a8: 46105481 */ sub.s $f18,$f10,$f16 -/* f04c9ac: 46001202 */ mul.s $f8,$f2,$f0 -/* f04c9b0: 00000000 */ nop -/* f04c9b4: 46166282 */ mul.s $f10,$f12,$f22 -/* f04c9b8: 46127100 */ add.s $f4,$f14,$f18 -/* f04c9bc: e6040000 */ swc1 $f4,0x0($s0) -/* f04c9c0: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04c9c4: 460a4400 */ add.s $f16,$f8,$f10 -/* f04c9c8: e6060004 */ swc1 $f6,0x4($s0) -/* f04c9cc: c6320010 */ lwc1 $f18,0x10($s1) -/* f04c9d0: 46109100 */ add.s $f4,$f18,$f16 -/* f04c9d4: e6040008 */ swc1 $f4,0x8($s0) -/* f04c9d8: 0fc0a277 */ jal chrGetBbox -/* f04c9dc: 8e64001c */ lw $a0,0x1c($s3) -/* f04c9e0: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04c9e4: c7a600a0 */ lwc1 $f6,0xa0($sp) -/* f04c9e8: c7b2009c */ lwc1 $f18,0x9c($sp) -/* f04c9ec: 8e65001c */ lw $a1,0x1c($s3) -/* f04c9f0: 46083281 */ sub.s $f10,$f6,$f8 -/* f04c9f4: 24190001 */ addiu $t9,$zero,0x1 -/* f04c9f8: afb90010 */ sw $t9,0x10($sp) -/* f04c9fc: 46089401 */ sub.s $f16,$f18,$f8 -/* f04ca00: e7aa0014 */ swc1 $f10,0x14($sp) -/* f04ca04: 03c02025 */ or $a0,$s8,$zero -/* f04ca08: 02003025 */ or $a2,$s0,$zero -/* f04ca0c: e7b00018 */ swc1 $f16,0x18($sp) -/* f04ca10: 24070023 */ addiu $a3,$zero,0x23 -/* f04ca14: 0c00b5f0 */ jal cd0002d7c0 -/* f04ca18: 24a50028 */ addiu $a1,$a1,0x28 -/* f04ca1c: 1440002a */ bnez $v0,.L0f04cac8 -/* f04ca20: 02002025 */ or $a0,$s0,$zero -/* f04ca24: 3c067f1b */ lui $a2,%hi(var7f1a8ce4) -/* f04ca28: 24c68ce4 */ addiu $a2,$a2,%lo(var7f1a8ce4) -/* f04ca2c: 0c0093af */ jal cdGetPos -/* f04ca30: 240548fe */ addiu $a1,$zero,0x492b -/* f04ca34: c6040000 */ lwc1 $f4,0x0($s0) -/* f04ca38: c7a600c8 */ lwc1 $f6,0xc8($sp) -/* f04ca3c: c60a0008 */ lwc1 $f10,0x8($s0) -/* f04ca40: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04ca44: 46062501 */ sub.s $f20,$f4,$f6 -/* f04ca48: 46125581 */ sub.s $f22,$f10,$f18 -/* f04ca4c: 4614a202 */ mul.s $f8,$f20,$f20 -/* f04ca50: 00000000 */ nop -/* f04ca54: 4616b402 */ mul.s $f16,$f22,$f22 -/* f04ca58: 0c012974 */ jal sqrtf -/* f04ca5c: 46104300 */ add.s $f12,$f8,$f16 -/* f04ca60: 3c014248 */ lui $at,0x4248 -/* f04ca64: 44812000 */ mtc1 $at,$f4 -/* f04ca68: 44805000 */ mtc1 $zero,$f10 -/* f04ca6c: c7b200c8 */ lwc1 $f18,0xc8($sp) -/* f04ca70: 46040181 */ sub.s $f6,$f0,$f4 -/* f04ca74: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04ca78: 46003083 */ div.s $f2,$f6,$f0 -/* f04ca7c: 460a103c */ c.lt.s $f2,$f10 -/* f04ca80: 00000000 */ nop -/* f04ca84: 45000007 */ bc1f .L0f04caa4 -/* f04ca88: 00000000 */ nop -/* f04ca8c: e6120000 */ swc1 $f18,0x0($s0) -/* f04ca90: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04ca94: e6080004 */ swc1 $f8,0x4($s0) -/* f04ca98: c7b000d0 */ lwc1 $f16,0xd0($sp) -/* f04ca9c: 1000000a */ b .L0f04cac8 -/* f04caa0: e6100008 */ swc1 $f16,0x8($s0) -.L0f04caa4: -/* f04caa4: 4602a502 */ mul.s $f20,$f20,$f2 -/* f04caa8: 46142180 */ add.s $f6,$f4,$f20 -/* f04caac: 4602b582 */ mul.s $f22,$f22,$f2 -/* f04cab0: e6060000 */ swc1 $f6,0x0($s0) -/* f04cab4: c7aa00cc */ lwc1 $f10,0xcc($sp) -/* f04cab8: e60a0004 */ swc1 $f10,0x4($s0) -/* f04cabc: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cac0: 46169200 */ add.s $f8,$f18,$f22 -/* f04cac4: e6080008 */ swc1 $f8,0x8($s0) -.L0f04cac8: -/* f04cac8: 12800019 */ beqz $s4,.L0f04cb30 -/* f04cacc: 00001025 */ or $v0,$zero,$zero -/* f04cad0: c6000000 */ lwc1 $f0,0x0($s0) -/* f04cad4: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cad8: c7a400cc */ lwc1 $f4,0xcc($sp) -/* f04cadc: c6060004 */ lwc1 $f6,0x4($s0) -/* f04cae0: 46008081 */ sub.s $f2,$f16,$f0 -/* f04cae4: c7aa00d0 */ lwc1 $f10,0xd0($sp) -/* f04cae8: c6120008 */ lwc1 $f18,0x8($s0) -/* f04caec: 46062381 */ sub.s $f14,$f4,$f6 -/* f04caf0: 46021202 */ mul.s $f8,$f2,$f2 -/* f04caf4: e7a000a8 */ swc1 $f0,0xa8($sp) -/* f04caf8: 46125301 */ sub.s $f12,$f10,$f18 -/* f04cafc: 460e7402 */ mul.s $f16,$f14,$f14 -/* f04cb00: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb04: 24080168 */ addiu $t0,$zero,0x168 -/* f04cb08: 460c6182 */ mul.s $f6,$f12,$f12 -/* f04cb0c: e7aa00ac */ swc1 $f10,0xac($sp) -/* f04cb10: c6120008 */ lwc1 $f18,0x8($s0) -/* f04cb14: 01129023 */ subu $s2,$t0,$s2 -/* f04cb18: 24020001 */ addiu $v0,$zero,0x1 -/* f04cb1c: 46104100 */ add.s $f4,$f8,$f16 -/* f04cb20: 0000a025 */ or $s4,$zero,$zero -/* f04cb24: e7b200b0 */ swc1 $f18,0xb0($sp) -/* f04cb28: 10000001 */ b .L0f04cb30 -/* f04cb2c: 46062680 */ add.s $f26,$f4,$f6 -.L0f04cb30: -/* f04cb30: 5440ff7e */ bnezl $v0,.L0f04c92c -/* f04cb34: 44925000 */ mtc1 $s2,$f10 -/* f04cb38: 44804000 */ mtc1 $zero,$f8 -/* f04cb3c: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cb40: 02602025 */ or $a0,$s3,$zero -/* f04cb44: 4608d032 */ c.eq.s $f26,$f8 -/* f04cb48: 02002825 */ or $a1,$s0,$zero -/* f04cb4c: 45010018 */ bc1t .L0f04cbb0 -/* f04cb50: 00000000 */ nop -/* f04cb54: c6040000 */ lwc1 $f4,0x0($s0) -/* f04cb58: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04cb5c: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb60: 46048081 */ sub.s $f2,$f16,$f4 -/* f04cb64: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cb68: c6080008 */ lwc1 $f8,0x8($s0) -/* f04cb6c: 460a3381 */ sub.s $f14,$f6,$f10 -/* f04cb70: 46021402 */ mul.s $f16,$f2,$f2 -/* f04cb74: 46089301 */ sub.s $f12,$f18,$f8 -/* f04cb78: 460e7102 */ mul.s $f4,$f14,$f14 -/* f04cb7c: c7a800a8 */ lwc1 $f8,0xa8($sp) -/* f04cb80: 460c6282 */ mul.s $f10,$f12,$f12 -/* f04cb84: 46048180 */ add.s $f6,$f16,$f4 -/* f04cb88: 460a3480 */ add.s $f18,$f6,$f10 -/* f04cb8c: 461a903c */ c.lt.s $f18,$f26 -/* f04cb90: 00000000 */ nop -/* f04cb94: 45000006 */ bc1f .L0f04cbb0 -/* f04cb98: 00000000 */ nop -/* f04cb9c: e6080000 */ swc1 $f8,0x0($s0) -/* f04cba0: c7b000ac */ lwc1 $f16,0xac($sp) -/* f04cba4: e6100004 */ swc1 $f16,0x4($s0) -/* f04cba8: c7a400b0 */ lwc1 $f4,0xb0($sp) -/* f04cbac: e6040008 */ swc1 $f4,0x8($s0) -.L0f04cbb0: -/* f04cbb0: 0fc0eaf4 */ jal func0f03abd0 -/* f04cbb4: 93a600fb */ lbu $a2,0xfb($sp) -/* f04cbb8: 8fbf007c */ lw $ra,0x7c($sp) -/* f04cbbc: d7b40028 */ ldc1 $f20,0x28($sp) -/* f04cbc0: d7b60030 */ ldc1 $f22,0x30($sp) -/* f04cbc4: d7b80038 */ ldc1 $f24,0x38($sp) -/* f04cbc8: d7ba0040 */ ldc1 $f26,0x40($sp) -/* f04cbcc: d7bc0048 */ ldc1 $f28,0x48($sp) -/* f04cbd0: d7be0050 */ ldc1 $f30,0x50($sp) -/* f04cbd4: 8fb00058 */ lw $s0,0x58($sp) -/* f04cbd8: 8fb1005c */ lw $s1,0x5c($sp) -/* f04cbdc: 8fb20060 */ lw $s2,0x60($sp) -/* f04cbe0: 8fb30064 */ lw $s3,0x64($sp) -/* f04cbe4: 8fb40068 */ lw $s4,0x68($sp) -/* f04cbe8: 8fb5006c */ lw $s5,0x6c($sp) -/* f04cbec: 8fb60070 */ lw $s6,0x70($sp) -/* f04cbf0: 8fb70074 */ lw $s7,0x74($sp) -/* f04cbf4: 8fbe0078 */ lw $s8,0x78($sp) -/* f04cbf8: 27bd00e8 */ addiu $sp,$sp,0xe8 -/* f04cbfc: 03e00008 */ jr $ra -/* f04cc00: 24020001 */ addiu $v0,$zero,0x1 -); + cdGetPos(pos, 18731, "chr/chraction.c"); #elif VERSION >= VERSION_PAL_FINAL -GLOBAL_ASM( -glabel func0f04c874 -.late_rodata -glabel var7f1a942c -.word 0x3c8ef461 -.text -/* f04c874: 27bdff18 */ addiu $sp,$sp,-232 -/* f04c878: afbf007c */ sw $ra,0x7c($sp) -/* f04c87c: afb40068 */ sw $s4,0x68($sp) -/* f04c880: afb30064 */ sw $s3,0x64($sp) -/* f04c884: afb20060 */ sw $s2,0x60($sp) -/* f04c888: afb00058 */ sw $s0,0x58($sp) -/* f04c88c: 00c08025 */ or $s0,$a2,$zero -/* f04c890: 00a09025 */ or $s2,$a1,$zero -/* f04c894: 00809825 */ or $s3,$a0,$zero -/* f04c898: 30f400ff */ andi $s4,$a3,0xff -/* f04c89c: afbe0078 */ sw $s8,0x78($sp) -/* f04c8a0: afb70074 */ sw $s7,0x74($sp) -/* f04c8a4: afb60070 */ sw $s6,0x70($sp) -/* f04c8a8: afb5006c */ sw $s5,0x6c($sp) -/* f04c8ac: afb1005c */ sw $s1,0x5c($sp) -/* f04c8b0: f7be0050 */ sdc1 $f30,0x50($sp) -/* f04c8b4: f7bc0048 */ sdc1 $f28,0x48($sp) -/* f04c8b8: f7ba0040 */ sdc1 $f26,0x40($sp) -/* f04c8bc: f7b80038 */ sdc1 $f24,0x38($sp) -/* f04c8c0: f7b60030 */ sdc1 $f22,0x30($sp) -/* f04c8c4: f7b40028 */ sdc1 $f20,0x28($sp) -/* f04c8c8: 0fc0a221 */ jal chrGetTargetProp -/* f04c8cc: afa700f4 */ sw $a3,0xf4($sp) -/* f04c8d0: 4480d000 */ mtc1 $zero,$f26 -/* f04c8d4: 00408825 */ or $s1,$v0,$zero -/* f04c8d8: 0fc131e1 */ jal func0f04c784 -/* f04c8dc: 02602025 */ or $a0,$s3,$zero -/* f04c8e0: 8e6e001c */ lw $t6,0x1c($s3) -/* f04c8e4: 3c0143b4 */ lui $at,0x43b4 -/* f04c8e8: 4481f000 */ mtc1 $at,$f30 -/* f04c8ec: c5c40008 */ lwc1 $f4,0x8($t6) -/* f04c8f0: 3c014334 */ lui $at,0x4334 -/* f04c8f4: 4481e000 */ mtc1 $at,$f28 -/* f04c8f8: e7a400c8 */ swc1 $f4,0xc8($sp) -/* f04c8fc: 8e6f001c */ lw $t7,0x1c($s3) -/* f04c900: 46000606 */ mov.s $f24,$f0 -/* f04c904: 27be00c8 */ addiu $s8,$sp,0xc8 -/* f04c908: c5e6000c */ lwc1 $f6,0xc($t7) -/* f04c90c: 27b7009c */ addiu $s7,$sp,0x9c -/* f04c910: 27b600a0 */ addiu $s6,$sp,0xa0 -/* f04c914: e7a600cc */ swc1 $f6,0xcc($sp) -/* f04c918: 8e78001c */ lw $t8,0x1c($s3) -/* f04c91c: 27b50098 */ addiu $s5,$sp,0x98 -/* f04c920: c7080010 */ lwc1 $f8,0x10($t8) -/* f04c924: e7a800d0 */ swc1 $f8,0xd0($sp) -/* f04c928: 44925000 */ mtc1 $s2,$f10 -.L0f04c92c: -/* f04c92c: 3c014f80 */ lui $at,0x4f80 -/* f04c930: 06410004 */ bgez $s2,.L0f04c944 -/* f04c934: 46805020 */ cvt.s.w $f0,$f10 -/* f04c938: 44818000 */ mtc1 $at,$f16 -/* f04c93c: 00000000 */ nop -/* f04c940: 46100000 */ add.s $f0,$f0,$f16 -.L0f04c944: -/* f04c944: 4600e03c */ c.lt.s $f28,$f0 -/* f04c948: 46000506 */ mov.s $f20,$f0 -/* f04c94c: 3c017f1b */ lui $at,%hi(var7f1a942c) -/* f04c950: 45020003 */ bc1fl .L0f04c960 -/* f04c954: 4618a501 */ sub.s $f20,$f20,$f24 -/* f04c958: 461e0501 */ sub.s $f20,$f0,$f30 -/* f04c95c: 4618a501 */ sub.s $f20,$f20,$f24 -.L0f04c960: -/* f04c960: c432942c */ lwc1 $f18,%lo(var7f1a942c)($at) -/* f04c964: 4612a502 */ mul.s $f20,$f20,$f18 -/* f04c968: 0c0068f4 */ jal cosf -/* f04c96c: 4600a306 */ mov.s $f12,$f20 -/* f04c970: 46000586 */ mov.s $f22,$f0 -/* f04c974: 0c0068f7 */ jal sinf -/* f04c978: 4600a306 */ mov.s $f12,$f20 -/* f04c97c: c62e0008 */ lwc1 $f14,0x8($s1) -/* f04c980: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04c984: c7a600d0 */ lwc1 $f6,0xd0($sp) -/* f04c988: c6280010 */ lwc1 $f8,0x10($s1) -/* f04c98c: 460e2081 */ sub.s $f2,$f4,$f14 -/* f04c990: 02a02825 */ or $a1,$s5,$zero -/* f04c994: 02c03025 */ or $a2,$s6,$zero -/* f04c998: 46083301 */ sub.s $f12,$f6,$f8 -/* f04c99c: 46161282 */ mul.s $f10,$f2,$f22 -/* f04c9a0: 02e03825 */ or $a3,$s7,$zero -/* f04c9a4: 46006402 */ mul.s $f16,$f12,$f0 -/* f04c9a8: 46105481 */ sub.s $f18,$f10,$f16 -/* f04c9ac: 46001202 */ mul.s $f8,$f2,$f0 -/* f04c9b0: 00000000 */ nop -/* f04c9b4: 46166282 */ mul.s $f10,$f12,$f22 -/* f04c9b8: 46127100 */ add.s $f4,$f14,$f18 -/* f04c9bc: e6040000 */ swc1 $f4,0x0($s0) -/* f04c9c0: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04c9c4: 460a4400 */ add.s $f16,$f8,$f10 -/* f04c9c8: e6060004 */ swc1 $f6,0x4($s0) -/* f04c9cc: c6320010 */ lwc1 $f18,0x10($s1) -/* f04c9d0: 46109100 */ add.s $f4,$f18,$f16 -/* f04c9d4: e6040008 */ swc1 $f4,0x8($s0) -/* f04c9d8: 0fc0a277 */ jal chrGetBbox -/* f04c9dc: 8e64001c */ lw $a0,0x1c($s3) -/* f04c9e0: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04c9e4: c7a600a0 */ lwc1 $f6,0xa0($sp) -/* f04c9e8: c7b2009c */ lwc1 $f18,0x9c($sp) -/* f04c9ec: 8e65001c */ lw $a1,0x1c($s3) -/* f04c9f0: 46083281 */ sub.s $f10,$f6,$f8 -/* f04c9f4: 24190001 */ addiu $t9,$zero,0x1 -/* f04c9f8: afb90010 */ sw $t9,0x10($sp) -/* f04c9fc: 46089401 */ sub.s $f16,$f18,$f8 -/* f04ca00: e7aa0014 */ swc1 $f10,0x14($sp) -/* f04ca04: 03c02025 */ or $a0,$s8,$zero -/* f04ca08: 02003025 */ or $a2,$s0,$zero -/* f04ca0c: e7b00018 */ swc1 $f16,0x18($sp) -/* f04ca10: 24070023 */ addiu $a3,$zero,0x23 -/* f04ca14: 0c00b5f0 */ jal cd0002d7c0 -/* f04ca18: 24a50028 */ addiu $a1,$a1,0x28 -/* f04ca1c: 1440002a */ bnez $v0,.L0f04cac8 -/* f04ca20: 02002025 */ or $a0,$s0,$zero -/* f04ca24: 3c067f1b */ lui $a2,%hi(var7f1a8ce4) -/* f04ca28: 24c68ce4 */ addiu $a2,$a2,%lo(var7f1a8ce4) -/* f04ca2c: 0c0093af */ jal cdGetPos -/* f04ca30: 240548fe */ addiu $a1,$zero,0x4906 -/* f04ca34: c6040000 */ lwc1 $f4,0x0($s0) -/* f04ca38: c7a600c8 */ lwc1 $f6,0xc8($sp) -/* f04ca3c: c60a0008 */ lwc1 $f10,0x8($s0) -/* f04ca40: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04ca44: 46062501 */ sub.s $f20,$f4,$f6 -/* f04ca48: 46125581 */ sub.s $f22,$f10,$f18 -/* f04ca4c: 4614a202 */ mul.s $f8,$f20,$f20 -/* f04ca50: 00000000 */ nop -/* f04ca54: 4616b402 */ mul.s $f16,$f22,$f22 -/* f04ca58: 0c012974 */ jal sqrtf -/* f04ca5c: 46104300 */ add.s $f12,$f8,$f16 -/* f04ca60: 3c014248 */ lui $at,0x4248 -/* f04ca64: 44812000 */ mtc1 $at,$f4 -/* f04ca68: 44805000 */ mtc1 $zero,$f10 -/* f04ca6c: c7b200c8 */ lwc1 $f18,0xc8($sp) -/* f04ca70: 46040181 */ sub.s $f6,$f0,$f4 -/* f04ca74: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04ca78: 46003083 */ div.s $f2,$f6,$f0 -/* f04ca7c: 460a103c */ c.lt.s $f2,$f10 -/* f04ca80: 00000000 */ nop -/* f04ca84: 45000007 */ bc1f .L0f04caa4 -/* f04ca88: 00000000 */ nop -/* f04ca8c: e6120000 */ swc1 $f18,0x0($s0) -/* f04ca90: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04ca94: e6080004 */ swc1 $f8,0x4($s0) -/* f04ca98: c7b000d0 */ lwc1 $f16,0xd0($sp) -/* f04ca9c: 1000000a */ b .L0f04cac8 -/* f04caa0: e6100008 */ swc1 $f16,0x8($s0) -.L0f04caa4: -/* f04caa4: 4602a502 */ mul.s $f20,$f20,$f2 -/* f04caa8: 46142180 */ add.s $f6,$f4,$f20 -/* f04caac: 4602b582 */ mul.s $f22,$f22,$f2 -/* f04cab0: e6060000 */ swc1 $f6,0x0($s0) -/* f04cab4: c7aa00cc */ lwc1 $f10,0xcc($sp) -/* f04cab8: e60a0004 */ swc1 $f10,0x4($s0) -/* f04cabc: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cac0: 46169200 */ add.s $f8,$f18,$f22 -/* f04cac4: e6080008 */ swc1 $f8,0x8($s0) -.L0f04cac8: -/* f04cac8: 12800019 */ beqz $s4,.L0f04cb30 -/* f04cacc: 00001025 */ or $v0,$zero,$zero -/* f04cad0: c6000000 */ lwc1 $f0,0x0($s0) -/* f04cad4: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cad8: c7a400cc */ lwc1 $f4,0xcc($sp) -/* f04cadc: c6060004 */ lwc1 $f6,0x4($s0) -/* f04cae0: 46008081 */ sub.s $f2,$f16,$f0 -/* f04cae4: c7aa00d0 */ lwc1 $f10,0xd0($sp) -/* f04cae8: c6120008 */ lwc1 $f18,0x8($s0) -/* f04caec: 46062381 */ sub.s $f14,$f4,$f6 -/* f04caf0: 46021202 */ mul.s $f8,$f2,$f2 -/* f04caf4: e7a000a8 */ swc1 $f0,0xa8($sp) -/* f04caf8: 46125301 */ sub.s $f12,$f10,$f18 -/* f04cafc: 460e7402 */ mul.s $f16,$f14,$f14 -/* f04cb00: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb04: 24080168 */ addiu $t0,$zero,0x168 -/* f04cb08: 460c6182 */ mul.s $f6,$f12,$f12 -/* f04cb0c: e7aa00ac */ swc1 $f10,0xac($sp) -/* f04cb10: c6120008 */ lwc1 $f18,0x8($s0) -/* f04cb14: 01129023 */ subu $s2,$t0,$s2 -/* f04cb18: 24020001 */ addiu $v0,$zero,0x1 -/* f04cb1c: 46104100 */ add.s $f4,$f8,$f16 -/* f04cb20: 0000a025 */ or $s4,$zero,$zero -/* f04cb24: e7b200b0 */ swc1 $f18,0xb0($sp) -/* f04cb28: 10000001 */ b .L0f04cb30 -/* f04cb2c: 46062680 */ add.s $f26,$f4,$f6 -.L0f04cb30: -/* f04cb30: 5440ff7e */ bnezl $v0,.L0f04c92c -/* f04cb34: 44925000 */ mtc1 $s2,$f10 -/* f04cb38: 44804000 */ mtc1 $zero,$f8 -/* f04cb3c: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cb40: 02602025 */ or $a0,$s3,$zero -/* f04cb44: 4608d032 */ c.eq.s $f26,$f8 -/* f04cb48: 02002825 */ or $a1,$s0,$zero -/* f04cb4c: 45010018 */ bc1t .L0f04cbb0 -/* f04cb50: 00000000 */ nop -/* f04cb54: c6040000 */ lwc1 $f4,0x0($s0) -/* f04cb58: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04cb5c: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb60: 46048081 */ sub.s $f2,$f16,$f4 -/* f04cb64: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cb68: c6080008 */ lwc1 $f8,0x8($s0) -/* f04cb6c: 460a3381 */ sub.s $f14,$f6,$f10 -/* f04cb70: 46021402 */ mul.s $f16,$f2,$f2 -/* f04cb74: 46089301 */ sub.s $f12,$f18,$f8 -/* f04cb78: 460e7102 */ mul.s $f4,$f14,$f14 -/* f04cb7c: c7a800a8 */ lwc1 $f8,0xa8($sp) -/* f04cb80: 460c6282 */ mul.s $f10,$f12,$f12 -/* f04cb84: 46048180 */ add.s $f6,$f16,$f4 -/* f04cb88: 460a3480 */ add.s $f18,$f6,$f10 -/* f04cb8c: 461a903c */ c.lt.s $f18,$f26 -/* f04cb90: 00000000 */ nop -/* f04cb94: 45000006 */ bc1f .L0f04cbb0 -/* f04cb98: 00000000 */ nop -/* f04cb9c: e6080000 */ swc1 $f8,0x0($s0) -/* f04cba0: c7b000ac */ lwc1 $f16,0xac($sp) -/* f04cba4: e6100004 */ swc1 $f16,0x4($s0) -/* f04cba8: c7a400b0 */ lwc1 $f4,0xb0($sp) -/* f04cbac: e6040008 */ swc1 $f4,0x8($s0) -.L0f04cbb0: -/* f04cbb0: 0fc0eaf4 */ jal func0f03abd0 -/* f04cbb4: 93a600fb */ lbu $a2,0xfb($sp) -/* f04cbb8: 8fbf007c */ lw $ra,0x7c($sp) -/* f04cbbc: d7b40028 */ ldc1 $f20,0x28($sp) -/* f04cbc0: d7b60030 */ ldc1 $f22,0x30($sp) -/* f04cbc4: d7b80038 */ ldc1 $f24,0x38($sp) -/* f04cbc8: d7ba0040 */ ldc1 $f26,0x40($sp) -/* f04cbcc: d7bc0048 */ ldc1 $f28,0x48($sp) -/* f04cbd0: d7be0050 */ ldc1 $f30,0x50($sp) -/* f04cbd4: 8fb00058 */ lw $s0,0x58($sp) -/* f04cbd8: 8fb1005c */ lw $s1,0x5c($sp) -/* f04cbdc: 8fb20060 */ lw $s2,0x60($sp) -/* f04cbe0: 8fb30064 */ lw $s3,0x64($sp) -/* f04cbe4: 8fb40068 */ lw $s4,0x68($sp) -/* f04cbe8: 8fb5006c */ lw $s5,0x6c($sp) -/* f04cbec: 8fb60070 */ lw $s6,0x70($sp) -/* f04cbf0: 8fb70074 */ lw $s7,0x74($sp) -/* f04cbf4: 8fbe0078 */ lw $s8,0x78($sp) -/* f04cbf8: 27bd00e8 */ addiu $sp,$sp,0xe8 -/* f04cbfc: 03e00008 */ jr $ra -/* f04cc00: 24020001 */ addiu $v0,$zero,0x1 -); + cdGetPos(pos, 18694, "chr/chraction.c"); #elif VERSION >= VERSION_PAL_BETA -GLOBAL_ASM( -glabel func0f04c874 -.late_rodata -glabel var7f1a942c -.word 0x3c8ef461 -.text -/* f04c998: 27bdff18 */ addiu $sp,$sp,-232 -/* f04c99c: afbf007c */ sw $ra,0x7c($sp) -/* f04c9a0: afb40068 */ sw $s4,0x68($sp) -/* f04c9a4: afb30064 */ sw $s3,0x64($sp) -/* f04c9a8: afb20060 */ sw $s2,0x60($sp) -/* f04c9ac: afb00058 */ sw $s0,0x58($sp) -/* f04c9b0: 00c08025 */ move $s0,$a2 -/* f04c9b4: 00a09025 */ move $s2,$a1 -/* f04c9b8: 00809825 */ move $s3,$a0 -/* f04c9bc: 30f400ff */ andi $s4,$a3,0xff -/* f04c9c0: afbe0078 */ sw $s8,0x78($sp) -/* f04c9c4: afb70074 */ sw $s7,0x74($sp) -/* f04c9c8: afb60070 */ sw $s6,0x70($sp) -/* f04c9cc: afb5006c */ sw $s5,0x6c($sp) -/* f04c9d0: afb1005c */ sw $s1,0x5c($sp) -/* f04c9d4: f7be0050 */ sdc1 $f30,0x50($sp) -/* f04c9d8: f7bc0048 */ sdc1 $f28,0x48($sp) -/* f04c9dc: f7ba0040 */ sdc1 $f26,0x40($sp) -/* f04c9e0: f7b80038 */ sdc1 $f24,0x38($sp) -/* f04c9e4: f7b60030 */ sdc1 $f22,0x30($sp) -/* f04c9e8: f7b40028 */ sdc1 $f20,0x28($sp) -/* f04c9ec: 0fc0a255 */ jal chrGetTargetProp -/* f04c9f0: afa700f4 */ sw $a3,0xf4($sp) -/* f04c9f4: 4480d000 */ mtc1 $zero,$f26 -/* f04c9f8: 00408825 */ move $s1,$v0 -/* f04c9fc: 0fc1322a */ jal func0f04c784 -/* f04ca00: 02602025 */ move $a0,$s3 -/* f04ca04: 8e6e001c */ lw $t6,0x1c($s3) -/* f04ca08: 3c0143b4 */ lui $at,0x43b4 -/* f04ca0c: 4481f000 */ mtc1 $at,$f30 -/* f04ca10: c5c40008 */ lwc1 $f4,0x8($t6) -/* f04ca14: 3c014334 */ lui $at,0x4334 -/* f04ca18: 4481e000 */ mtc1 $at,$f28 -/* f04ca1c: e7a400c8 */ swc1 $f4,0xc8($sp) -/* f04ca20: 8e6f001c */ lw $t7,0x1c($s3) -/* f04ca24: 46000606 */ mov.s $f24,$f0 -/* f04ca28: 27be00c8 */ addiu $s8,$sp,0xc8 -/* f04ca2c: c5e6000c */ lwc1 $f6,0xc($t7) -/* f04ca30: 27b7009c */ addiu $s7,$sp,0x9c -/* f04ca34: 27b600a0 */ addiu $s6,$sp,0xa0 -/* f04ca38: e7a600cc */ swc1 $f6,0xcc($sp) -/* f04ca3c: 8e78001c */ lw $t8,0x1c($s3) -/* f04ca40: 27b50098 */ addiu $s5,$sp,0x98 -/* f04ca44: c7080010 */ lwc1 $f8,0x10($t8) -/* f04ca48: e7a800d0 */ swc1 $f8,0xd0($sp) -/* f04ca4c: 44925000 */ mtc1 $s2,$f10 -.PB0f04ca50: -/* f04ca50: 3c014f80 */ lui $at,0x4f80 -/* f04ca54: 06410004 */ bgez $s2,.PB0f04ca68 -/* f04ca58: 46805020 */ cvt.s.w $f0,$f10 -/* f04ca5c: 44818000 */ mtc1 $at,$f16 -/* f04ca60: 00000000 */ nop -/* f04ca64: 46100000 */ add.s $f0,$f0,$f16 -.PB0f04ca68: -/* f04ca68: 4600e03c */ c.lt.s $f28,$f0 -/* f04ca6c: 46000506 */ mov.s $f20,$f0 -/* f04ca70: 3c017f1b */ lui $at,0x7f1b -/* f04ca74: 45020003 */ bc1fl .PB0f04ca84 -/* f04ca78: 4618a501 */ sub.s $f20,$f20,$f24 -/* f04ca7c: 461e0501 */ sub.s $f20,$f0,$f30 -/* f04ca80: 4618a501 */ sub.s $f20,$f20,$f24 -.PB0f04ca84: -/* f04ca84: c432b118 */ lwc1 $f18,-0x4ee8($at) -/* f04ca88: 4612a502 */ mul.s $f20,$f20,$f18 -/* f04ca8c: 0c006b88 */ jal cosf -/* f04ca90: 4600a306 */ mov.s $f12,$f20 -/* f04ca94: 46000586 */ mov.s $f22,$f0 -/* f04ca98: 0c006b8b */ jal sinf -/* f04ca9c: 4600a306 */ mov.s $f12,$f20 -/* f04caa0: c62e0008 */ lwc1 $f14,0x8($s1) -/* f04caa4: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04caa8: c7a600d0 */ lwc1 $f6,0xd0($sp) -/* f04caac: c6280010 */ lwc1 $f8,0x10($s1) -/* f04cab0: 460e2081 */ sub.s $f2,$f4,$f14 -/* f04cab4: 02a02825 */ move $a1,$s5 -/* f04cab8: 02c03025 */ move $a2,$s6 -/* f04cabc: 46083301 */ sub.s $f12,$f6,$f8 -/* f04cac0: 46161282 */ mul.s $f10,$f2,$f22 -/* f04cac4: 02e03825 */ move $a3,$s7 -/* f04cac8: 46006402 */ mul.s $f16,$f12,$f0 -/* f04cacc: 46105481 */ sub.s $f18,$f10,$f16 -/* f04cad0: 46001202 */ mul.s $f8,$f2,$f0 -/* f04cad4: 00000000 */ nop -/* f04cad8: 46166282 */ mul.s $f10,$f12,$f22 -/* f04cadc: 46127100 */ add.s $f4,$f14,$f18 -/* f04cae0: e6040000 */ swc1 $f4,0x0($s0) -/* f04cae4: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04cae8: 460a4400 */ add.s $f16,$f8,$f10 -/* f04caec: e6060004 */ swc1 $f6,0x4($s0) -/* f04caf0: c6320010 */ lwc1 $f18,0x10($s1) -/* f04caf4: 46109100 */ add.s $f4,$f18,$f16 -/* f04caf8: e6040008 */ swc1 $f4,0x8($s0) -/* f04cafc: 0fc0a2ab */ jal chrGetBbox -/* f04cb00: 8e64001c */ lw $a0,0x1c($s3) -/* f04cb04: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04cb08: c7a600a0 */ lwc1 $f6,0xa0($sp) -/* f04cb0c: c7b2009c */ lwc1 $f18,0x9c($sp) -/* f04cb10: 8e65001c */ lw $a1,0x1c($s3) -/* f04cb14: 46083281 */ sub.s $f10,$f6,$f8 -/* f04cb18: 24190001 */ li $t9,0x1 -/* f04cb1c: afb90010 */ sw $t9,0x10($sp) -/* f04cb20: 46089401 */ sub.s $f16,$f18,$f8 -/* f04cb24: e7aa0014 */ swc1 $f10,0x14($sp) -/* f04cb28: 03c02025 */ move $a0,$s8 -/* f04cb2c: 02003025 */ move $a2,$s0 -/* f04cb30: e7b00018 */ swc1 $f16,0x18($sp) -/* f04cb34: 24070023 */ li $a3,0x23 -/* f04cb38: 0c00b760 */ jal cd0002d7c0 -/* f04cb3c: 24a50028 */ addiu $a1,$a1,0x28 -/* f04cb40: 1440002a */ bnez $v0,.PB0f04cbec -/* f04cb44: 02002025 */ move $a0,$s0 -/* f04cb48: 3c067f1b */ lui $a2,0x7f1b -/* f04cb4c: 24c6a9b4 */ addiu $a2,$a2,-22092 -/* f04cb50: 0c00951f */ jal cdGetPos -/* f04cb54: 24054901 */ li $a1,0x4901 -/* f04cb58: c6040000 */ lwc1 $f4,0x0($s0) -/* f04cb5c: c7a600c8 */ lwc1 $f6,0xc8($sp) -/* f04cb60: c60a0008 */ lwc1 $f10,0x8($s0) -/* f04cb64: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cb68: 46062501 */ sub.s $f20,$f4,$f6 -/* f04cb6c: 46125581 */ sub.s $f22,$f10,$f18 -/* f04cb70: 4614a202 */ mul.s $f8,$f20,$f20 -/* f04cb74: 00000000 */ nop -/* f04cb78: 4616b402 */ mul.s $f16,$f22,$f22 -/* f04cb7c: 0c012ae4 */ jal sqrtf -/* f04cb80: 46104300 */ add.s $f12,$f8,$f16 -/* f04cb84: 3c014248 */ lui $at,0x4248 -/* f04cb88: 44812000 */ mtc1 $at,$f4 -/* f04cb8c: 44805000 */ mtc1 $zero,$f10 -/* f04cb90: c7b200c8 */ lwc1 $f18,0xc8($sp) -/* f04cb94: 46040181 */ sub.s $f6,$f0,$f4 -/* f04cb98: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04cb9c: 46003083 */ div.s $f2,$f6,$f0 -/* f04cba0: 460a103c */ c.lt.s $f2,$f10 -/* f04cba4: 00000000 */ nop -/* f04cba8: 45000007 */ bc1f .PB0f04cbc8 -/* f04cbac: 00000000 */ nop -/* f04cbb0: e6120000 */ swc1 $f18,0x0($s0) -/* f04cbb4: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04cbb8: e6080004 */ swc1 $f8,0x4($s0) -/* f04cbbc: c7b000d0 */ lwc1 $f16,0xd0($sp) -/* f04cbc0: 1000000a */ b .PB0f04cbec -/* f04cbc4: e6100008 */ swc1 $f16,0x8($s0) -.PB0f04cbc8: -/* f04cbc8: 4602a502 */ mul.s $f20,$f20,$f2 -/* f04cbcc: 46142180 */ add.s $f6,$f4,$f20 -/* f04cbd0: 4602b582 */ mul.s $f22,$f22,$f2 -/* f04cbd4: e6060000 */ swc1 $f6,0x0($s0) -/* f04cbd8: c7aa00cc */ lwc1 $f10,0xcc($sp) -/* f04cbdc: e60a0004 */ swc1 $f10,0x4($s0) -/* f04cbe0: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cbe4: 46169200 */ add.s $f8,$f18,$f22 -/* f04cbe8: e6080008 */ swc1 $f8,0x8($s0) -.PB0f04cbec: -/* f04cbec: 12800019 */ beqz $s4,.PB0f04cc54 -/* f04cbf0: 00001025 */ move $v0,$zero -/* f04cbf4: c6000000 */ lwc1 $f0,0x0($s0) -/* f04cbf8: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cbfc: c7a400cc */ lwc1 $f4,0xcc($sp) -/* f04cc00: c6060004 */ lwc1 $f6,0x4($s0) -/* f04cc04: 46008081 */ sub.s $f2,$f16,$f0 -/* f04cc08: c7aa00d0 */ lwc1 $f10,0xd0($sp) -/* f04cc0c: c6120008 */ lwc1 $f18,0x8($s0) -/* f04cc10: 46062381 */ sub.s $f14,$f4,$f6 -/* f04cc14: 46021202 */ mul.s $f8,$f2,$f2 -/* f04cc18: e7a000a8 */ swc1 $f0,0xa8($sp) -/* f04cc1c: 46125301 */ sub.s $f12,$f10,$f18 -/* f04cc20: 460e7402 */ mul.s $f16,$f14,$f14 -/* f04cc24: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cc28: 24080168 */ li $t0,0x168 -/* f04cc2c: 460c6182 */ mul.s $f6,$f12,$f12 -/* f04cc30: e7aa00ac */ swc1 $f10,0xac($sp) -/* f04cc34: c6120008 */ lwc1 $f18,0x8($s0) -/* f04cc38: 01129023 */ subu $s2,$t0,$s2 -/* f04cc3c: 24020001 */ li $v0,0x1 -/* f04cc40: 46104100 */ add.s $f4,$f8,$f16 -/* f04cc44: 0000a025 */ move $s4,$zero -/* f04cc48: e7b200b0 */ swc1 $f18,0xb0($sp) -/* f04cc4c: 10000001 */ b .PB0f04cc54 -/* f04cc50: 46062680 */ add.s $f26,$f4,$f6 -.PB0f04cc54: -/* f04cc54: 5440ff7e */ bnezl $v0,.PB0f04ca50 -/* f04cc58: 44925000 */ mtc1 $s2,$f10 -/* f04cc5c: 44804000 */ mtc1 $zero,$f8 -/* f04cc60: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cc64: 02602025 */ move $a0,$s3 -/* f04cc68: 4608d032 */ c.eq.s $f26,$f8 -/* f04cc6c: 02002825 */ move $a1,$s0 -/* f04cc70: 45010018 */ bc1t .PB0f04ccd4 -/* f04cc74: 00000000 */ nop -/* f04cc78: c6040000 */ lwc1 $f4,0x0($s0) -/* f04cc7c: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04cc80: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cc84: 46048081 */ sub.s $f2,$f16,$f4 -/* f04cc88: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cc8c: c6080008 */ lwc1 $f8,0x8($s0) -/* f04cc90: 460a3381 */ sub.s $f14,$f6,$f10 -/* f04cc94: 46021402 */ mul.s $f16,$f2,$f2 -/* f04cc98: 46089301 */ sub.s $f12,$f18,$f8 -/* f04cc9c: 460e7102 */ mul.s $f4,$f14,$f14 -/* f04cca0: c7a800a8 */ lwc1 $f8,0xa8($sp) -/* f04cca4: 460c6282 */ mul.s $f10,$f12,$f12 -/* f04cca8: 46048180 */ add.s $f6,$f16,$f4 -/* f04ccac: 460a3480 */ add.s $f18,$f6,$f10 -/* f04ccb0: 461a903c */ c.lt.s $f18,$f26 -/* f04ccb4: 00000000 */ nop -/* f04ccb8: 45000006 */ bc1f .PB0f04ccd4 -/* f04ccbc: 00000000 */ nop -/* f04ccc0: e6080000 */ swc1 $f8,0x0($s0) -/* f04ccc4: c7b000ac */ lwc1 $f16,0xac($sp) -/* f04ccc8: e6100004 */ swc1 $f16,0x4($s0) -/* f04cccc: c7a400b0 */ lwc1 $f4,0xb0($sp) -/* f04ccd0: e6040008 */ swc1 $f4,0x8($s0) -.PB0f04ccd4: -/* f04ccd4: 0fc0eb38 */ jal func0f03abd0 -/* f04ccd8: 93a600fb */ lbu $a2,0xfb($sp) -/* f04ccdc: 8fbf007c */ lw $ra,0x7c($sp) -/* f04cce0: d7b40028 */ ldc1 $f20,0x28($sp) -/* f04cce4: d7b60030 */ ldc1 $f22,0x30($sp) -/* f04cce8: d7b80038 */ ldc1 $f24,0x38($sp) -/* f04ccec: d7ba0040 */ ldc1 $f26,0x40($sp) -/* f04ccf0: d7bc0048 */ ldc1 $f28,0x48($sp) -/* f04ccf4: d7be0050 */ ldc1 $f30,0x50($sp) -/* f04ccf8: 8fb00058 */ lw $s0,0x58($sp) -/* f04ccfc: 8fb1005c */ lw $s1,0x5c($sp) -/* f04cd00: 8fb20060 */ lw $s2,0x60($sp) -/* f04cd04: 8fb30064 */ lw $s3,0x64($sp) -/* f04cd08: 8fb40068 */ lw $s4,0x68($sp) -/* f04cd0c: 8fb5006c */ lw $s5,0x6c($sp) -/* f04cd10: 8fb60070 */ lw $s6,0x70($sp) -/* f04cd14: 8fb70074 */ lw $s7,0x74($sp) -/* f04cd18: 8fbe0078 */ lw $s8,0x78($sp) -/* f04cd1c: 27bd00e8 */ addiu $sp,$sp,0xe8 -/* f04cd20: 03e00008 */ jr $ra -/* f04cd24: 24020001 */ li $v0,0x1 -); + cdGetPos(pos, 18689, "chraction.c"); #elif VERSION >= VERSION_NTSC_1_0 -GLOBAL_ASM( -glabel func0f04c874 -.late_rodata -glabel var7f1a942c -.word 0x3c8ef461 -.text -/* f04c874: 27bdff18 */ addiu $sp,$sp,-232 -/* f04c878: afbf007c */ sw $ra,0x7c($sp) -/* f04c87c: afb40068 */ sw $s4,0x68($sp) -/* f04c880: afb30064 */ sw $s3,0x64($sp) -/* f04c884: afb20060 */ sw $s2,0x60($sp) -/* f04c888: afb00058 */ sw $s0,0x58($sp) -/* f04c88c: 00c08025 */ or $s0,$a2,$zero -/* f04c890: 00a09025 */ or $s2,$a1,$zero -/* f04c894: 00809825 */ or $s3,$a0,$zero -/* f04c898: 30f400ff */ andi $s4,$a3,0xff -/* f04c89c: afbe0078 */ sw $s8,0x78($sp) -/* f04c8a0: afb70074 */ sw $s7,0x74($sp) -/* f04c8a4: afb60070 */ sw $s6,0x70($sp) -/* f04c8a8: afb5006c */ sw $s5,0x6c($sp) -/* f04c8ac: afb1005c */ sw $s1,0x5c($sp) -/* f04c8b0: f7be0050 */ sdc1 $f30,0x50($sp) -/* f04c8b4: f7bc0048 */ sdc1 $f28,0x48($sp) -/* f04c8b8: f7ba0040 */ sdc1 $f26,0x40($sp) -/* f04c8bc: f7b80038 */ sdc1 $f24,0x38($sp) -/* f04c8c0: f7b60030 */ sdc1 $f22,0x30($sp) -/* f04c8c4: f7b40028 */ sdc1 $f20,0x28($sp) -/* f04c8c8: 0fc0a221 */ jal chrGetTargetProp -/* f04c8cc: afa700f4 */ sw $a3,0xf4($sp) -/* f04c8d0: 4480d000 */ mtc1 $zero,$f26 -/* f04c8d4: 00408825 */ or $s1,$v0,$zero -/* f04c8d8: 0fc131e1 */ jal func0f04c784 -/* f04c8dc: 02602025 */ or $a0,$s3,$zero -/* f04c8e0: 8e6e001c */ lw $t6,0x1c($s3) -/* f04c8e4: 3c0143b4 */ lui $at,0x43b4 -/* f04c8e8: 4481f000 */ mtc1 $at,$f30 -/* f04c8ec: c5c40008 */ lwc1 $f4,0x8($t6) -/* f04c8f0: 3c014334 */ lui $at,0x4334 -/* f04c8f4: 4481e000 */ mtc1 $at,$f28 -/* f04c8f8: e7a400c8 */ swc1 $f4,0xc8($sp) -/* f04c8fc: 8e6f001c */ lw $t7,0x1c($s3) -/* f04c900: 46000606 */ mov.s $f24,$f0 -/* f04c904: 27be00c8 */ addiu $s8,$sp,0xc8 -/* f04c908: c5e6000c */ lwc1 $f6,0xc($t7) -/* f04c90c: 27b7009c */ addiu $s7,$sp,0x9c -/* f04c910: 27b600a0 */ addiu $s6,$sp,0xa0 -/* f04c914: e7a600cc */ swc1 $f6,0xcc($sp) -/* f04c918: 8e78001c */ lw $t8,0x1c($s3) -/* f04c91c: 27b50098 */ addiu $s5,$sp,0x98 -/* f04c920: c7080010 */ lwc1 $f8,0x10($t8) -/* f04c924: e7a800d0 */ swc1 $f8,0xd0($sp) -/* f04c928: 44925000 */ mtc1 $s2,$f10 -.L0f04c92c: -/* f04c92c: 3c014f80 */ lui $at,0x4f80 -/* f04c930: 06410004 */ bgez $s2,.L0f04c944 -/* f04c934: 46805020 */ cvt.s.w $f0,$f10 -/* f04c938: 44818000 */ mtc1 $at,$f16 -/* f04c93c: 00000000 */ nop -/* f04c940: 46100000 */ add.s $f0,$f0,$f16 -.L0f04c944: -/* f04c944: 4600e03c */ c.lt.s $f28,$f0 -/* f04c948: 46000506 */ mov.s $f20,$f0 -/* f04c94c: 3c017f1b */ lui $at,%hi(var7f1a942c) -/* f04c950: 45020003 */ bc1fl .L0f04c960 -/* f04c954: 4618a501 */ sub.s $f20,$f20,$f24 -/* f04c958: 461e0501 */ sub.s $f20,$f0,$f30 -/* f04c95c: 4618a501 */ sub.s $f20,$f20,$f24 -.L0f04c960: -/* f04c960: c432942c */ lwc1 $f18,%lo(var7f1a942c)($at) -/* f04c964: 4612a502 */ mul.s $f20,$f20,$f18 -/* f04c968: 0c0068f4 */ jal cosf -/* f04c96c: 4600a306 */ mov.s $f12,$f20 -/* f04c970: 46000586 */ mov.s $f22,$f0 -/* f04c974: 0c0068f7 */ jal sinf -/* f04c978: 4600a306 */ mov.s $f12,$f20 -/* f04c97c: c62e0008 */ lwc1 $f14,0x8($s1) -/* f04c980: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04c984: c7a600d0 */ lwc1 $f6,0xd0($sp) -/* f04c988: c6280010 */ lwc1 $f8,0x10($s1) -/* f04c98c: 460e2081 */ sub.s $f2,$f4,$f14 -/* f04c990: 02a02825 */ or $a1,$s5,$zero -/* f04c994: 02c03025 */ or $a2,$s6,$zero -/* f04c998: 46083301 */ sub.s $f12,$f6,$f8 -/* f04c99c: 46161282 */ mul.s $f10,$f2,$f22 -/* f04c9a0: 02e03825 */ or $a3,$s7,$zero -/* f04c9a4: 46006402 */ mul.s $f16,$f12,$f0 -/* f04c9a8: 46105481 */ sub.s $f18,$f10,$f16 -/* f04c9ac: 46001202 */ mul.s $f8,$f2,$f0 -/* f04c9b0: 00000000 */ nop -/* f04c9b4: 46166282 */ mul.s $f10,$f12,$f22 -/* f04c9b8: 46127100 */ add.s $f4,$f14,$f18 -/* f04c9bc: e6040000 */ swc1 $f4,0x0($s0) -/* f04c9c0: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04c9c4: 460a4400 */ add.s $f16,$f8,$f10 -/* f04c9c8: e6060004 */ swc1 $f6,0x4($s0) -/* f04c9cc: c6320010 */ lwc1 $f18,0x10($s1) -/* f04c9d0: 46109100 */ add.s $f4,$f18,$f16 -/* f04c9d4: e6040008 */ swc1 $f4,0x8($s0) -/* f04c9d8: 0fc0a277 */ jal chrGetBbox -/* f04c9dc: 8e64001c */ lw $a0,0x1c($s3) -/* f04c9e0: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04c9e4: c7a600a0 */ lwc1 $f6,0xa0($sp) -/* f04c9e8: c7b2009c */ lwc1 $f18,0x9c($sp) -/* f04c9ec: 8e65001c */ lw $a1,0x1c($s3) -/* f04c9f0: 46083281 */ sub.s $f10,$f6,$f8 -/* f04c9f4: 24190001 */ addiu $t9,$zero,0x1 -/* f04c9f8: afb90010 */ sw $t9,0x10($sp) -/* f04c9fc: 46089401 */ sub.s $f16,$f18,$f8 -/* f04ca00: e7aa0014 */ swc1 $f10,0x14($sp) -/* f04ca04: 03c02025 */ or $a0,$s8,$zero -/* f04ca08: 02003025 */ or $a2,$s0,$zero -/* f04ca0c: e7b00018 */ swc1 $f16,0x18($sp) -/* f04ca10: 24070023 */ addiu $a3,$zero,0x23 -/* f04ca14: 0c00b5f0 */ jal cd0002d7c0 -/* f04ca18: 24a50028 */ addiu $a1,$a1,0x28 -/* f04ca1c: 1440002a */ bnez $v0,.L0f04cac8 -/* f04ca20: 02002025 */ or $a0,$s0,$zero -/* f04ca24: 3c067f1b */ lui $a2,%hi(var7f1a8ce4) -/* f04ca28: 24c68ce4 */ addiu $a2,$a2,%lo(var7f1a8ce4) -/* f04ca2c: 0c0093af */ jal cdGetPos -/* f04ca30: 240548fe */ addiu $a1,$zero,0x48fe -/* f04ca34: c6040000 */ lwc1 $f4,0x0($s0) -/* f04ca38: c7a600c8 */ lwc1 $f6,0xc8($sp) -/* f04ca3c: c60a0008 */ lwc1 $f10,0x8($s0) -/* f04ca40: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04ca44: 46062501 */ sub.s $f20,$f4,$f6 -/* f04ca48: 46125581 */ sub.s $f22,$f10,$f18 -/* f04ca4c: 4614a202 */ mul.s $f8,$f20,$f20 -/* f04ca50: 00000000 */ nop -/* f04ca54: 4616b402 */ mul.s $f16,$f22,$f22 -/* f04ca58: 0c012974 */ jal sqrtf -/* f04ca5c: 46104300 */ add.s $f12,$f8,$f16 -/* f04ca60: 3c014248 */ lui $at,0x4248 -/* f04ca64: 44812000 */ mtc1 $at,$f4 -/* f04ca68: 44805000 */ mtc1 $zero,$f10 -/* f04ca6c: c7b200c8 */ lwc1 $f18,0xc8($sp) -/* f04ca70: 46040181 */ sub.s $f6,$f0,$f4 -/* f04ca74: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04ca78: 46003083 */ div.s $f2,$f6,$f0 -/* f04ca7c: 460a103c */ c.lt.s $f2,$f10 -/* f04ca80: 00000000 */ nop -/* f04ca84: 45000007 */ bc1f .L0f04caa4 -/* f04ca88: 00000000 */ nop -/* f04ca8c: e6120000 */ swc1 $f18,0x0($s0) -/* f04ca90: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04ca94: e6080004 */ swc1 $f8,0x4($s0) -/* f04ca98: c7b000d0 */ lwc1 $f16,0xd0($sp) -/* f04ca9c: 1000000a */ b .L0f04cac8 -/* f04caa0: e6100008 */ swc1 $f16,0x8($s0) -.L0f04caa4: -/* f04caa4: 4602a502 */ mul.s $f20,$f20,$f2 -/* f04caa8: 46142180 */ add.s $f6,$f4,$f20 -/* f04caac: 4602b582 */ mul.s $f22,$f22,$f2 -/* f04cab0: e6060000 */ swc1 $f6,0x0($s0) -/* f04cab4: c7aa00cc */ lwc1 $f10,0xcc($sp) -/* f04cab8: e60a0004 */ swc1 $f10,0x4($s0) -/* f04cabc: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cac0: 46169200 */ add.s $f8,$f18,$f22 -/* f04cac4: e6080008 */ swc1 $f8,0x8($s0) -.L0f04cac8: -/* f04cac8: 12800019 */ beqz $s4,.L0f04cb30 -/* f04cacc: 00001025 */ or $v0,$zero,$zero -/* f04cad0: c6000000 */ lwc1 $f0,0x0($s0) -/* f04cad4: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cad8: c7a400cc */ lwc1 $f4,0xcc($sp) -/* f04cadc: c6060004 */ lwc1 $f6,0x4($s0) -/* f04cae0: 46008081 */ sub.s $f2,$f16,$f0 -/* f04cae4: c7aa00d0 */ lwc1 $f10,0xd0($sp) -/* f04cae8: c6120008 */ lwc1 $f18,0x8($s0) -/* f04caec: 46062381 */ sub.s $f14,$f4,$f6 -/* f04caf0: 46021202 */ mul.s $f8,$f2,$f2 -/* f04caf4: e7a000a8 */ swc1 $f0,0xa8($sp) -/* f04caf8: 46125301 */ sub.s $f12,$f10,$f18 -/* f04cafc: 460e7402 */ mul.s $f16,$f14,$f14 -/* f04cb00: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb04: 24080168 */ addiu $t0,$zero,0x168 -/* f04cb08: 460c6182 */ mul.s $f6,$f12,$f12 -/* f04cb0c: e7aa00ac */ swc1 $f10,0xac($sp) -/* f04cb10: c6120008 */ lwc1 $f18,0x8($s0) -/* f04cb14: 01129023 */ subu $s2,$t0,$s2 -/* f04cb18: 24020001 */ addiu $v0,$zero,0x1 -/* f04cb1c: 46104100 */ add.s $f4,$f8,$f16 -/* f04cb20: 0000a025 */ or $s4,$zero,$zero -/* f04cb24: e7b200b0 */ swc1 $f18,0xb0($sp) -/* f04cb28: 10000001 */ b .L0f04cb30 -/* f04cb2c: 46062680 */ add.s $f26,$f4,$f6 -.L0f04cb30: -/* f04cb30: 5440ff7e */ bnezl $v0,.L0f04c92c -/* f04cb34: 44925000 */ mtc1 $s2,$f10 -/* f04cb38: 44804000 */ mtc1 $zero,$f8 -/* f04cb3c: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cb40: 02602025 */ or $a0,$s3,$zero -/* f04cb44: 4608d032 */ c.eq.s $f26,$f8 -/* f04cb48: 02002825 */ or $a1,$s0,$zero -/* f04cb4c: 45010018 */ bc1t .L0f04cbb0 -/* f04cb50: 00000000 */ nop -/* f04cb54: c6040000 */ lwc1 $f4,0x0($s0) -/* f04cb58: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04cb5c: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb60: 46048081 */ sub.s $f2,$f16,$f4 -/* f04cb64: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cb68: c6080008 */ lwc1 $f8,0x8($s0) -/* f04cb6c: 460a3381 */ sub.s $f14,$f6,$f10 -/* f04cb70: 46021402 */ mul.s $f16,$f2,$f2 -/* f04cb74: 46089301 */ sub.s $f12,$f18,$f8 -/* f04cb78: 460e7102 */ mul.s $f4,$f14,$f14 -/* f04cb7c: c7a800a8 */ lwc1 $f8,0xa8($sp) -/* f04cb80: 460c6282 */ mul.s $f10,$f12,$f12 -/* f04cb84: 46048180 */ add.s $f6,$f16,$f4 -/* f04cb88: 460a3480 */ add.s $f18,$f6,$f10 -/* f04cb8c: 461a903c */ c.lt.s $f18,$f26 -/* f04cb90: 00000000 */ nop -/* f04cb94: 45000006 */ bc1f .L0f04cbb0 -/* f04cb98: 00000000 */ nop -/* f04cb9c: e6080000 */ swc1 $f8,0x0($s0) -/* f04cba0: c7b000ac */ lwc1 $f16,0xac($sp) -/* f04cba4: e6100004 */ swc1 $f16,0x4($s0) -/* f04cba8: c7a400b0 */ lwc1 $f4,0xb0($sp) -/* f04cbac: e6040008 */ swc1 $f4,0x8($s0) -.L0f04cbb0: -/* f04cbb0: 0fc0eaf4 */ jal func0f03abd0 -/* f04cbb4: 93a600fb */ lbu $a2,0xfb($sp) -/* f04cbb8: 8fbf007c */ lw $ra,0x7c($sp) -/* f04cbbc: d7b40028 */ ldc1 $f20,0x28($sp) -/* f04cbc0: d7b60030 */ ldc1 $f22,0x30($sp) -/* f04cbc4: d7b80038 */ ldc1 $f24,0x38($sp) -/* f04cbc8: d7ba0040 */ ldc1 $f26,0x40($sp) -/* f04cbcc: d7bc0048 */ ldc1 $f28,0x48($sp) -/* f04cbd0: d7be0050 */ ldc1 $f30,0x50($sp) -/* f04cbd4: 8fb00058 */ lw $s0,0x58($sp) -/* f04cbd8: 8fb1005c */ lw $s1,0x5c($sp) -/* f04cbdc: 8fb20060 */ lw $s2,0x60($sp) -/* f04cbe0: 8fb30064 */ lw $s3,0x64($sp) -/* f04cbe4: 8fb40068 */ lw $s4,0x68($sp) -/* f04cbe8: 8fb5006c */ lw $s5,0x6c($sp) -/* f04cbec: 8fb60070 */ lw $s6,0x70($sp) -/* f04cbf0: 8fb70074 */ lw $s7,0x74($sp) -/* f04cbf4: 8fbe0078 */ lw $s8,0x78($sp) -/* f04cbf8: 27bd00e8 */ addiu $sp,$sp,0xe8 -/* f04cbfc: 03e00008 */ jr $ra -/* f04cc00: 24020001 */ addiu $v0,$zero,0x1 -); + cdGetPos(pos, 18686, "chraction.c"); #else -GLOBAL_ASM( -glabel func0f04c874 -.late_rodata -glabel var7f1a942c -.word 0x3c8ef461 -.text -/* f04c874: 27bdff18 */ addiu $sp,$sp,-232 -/* f04c878: afbf007c */ sw $ra,0x7c($sp) -/* f04c87c: afb40068 */ sw $s4,0x68($sp) -/* f04c880: afb30064 */ sw $s3,0x64($sp) -/* f04c884: afb20060 */ sw $s2,0x60($sp) -/* f04c888: afb00058 */ sw $s0,0x58($sp) -/* f04c88c: 00c08025 */ or $s0,$a2,$zero -/* f04c890: 00a09025 */ or $s2,$a1,$zero -/* f04c894: 00809825 */ or $s3,$a0,$zero -/* f04c898: 30f400ff */ andi $s4,$a3,0xff -/* f04c89c: afbe0078 */ sw $s8,0x78($sp) -/* f04c8a0: afb70074 */ sw $s7,0x74($sp) -/* f04c8a4: afb60070 */ sw $s6,0x70($sp) -/* f04c8a8: afb5006c */ sw $s5,0x6c($sp) -/* f04c8ac: afb1005c */ sw $s1,0x5c($sp) -/* f04c8b0: f7be0050 */ sdc1 $f30,0x50($sp) -/* f04c8b4: f7bc0048 */ sdc1 $f28,0x48($sp) -/* f04c8b8: f7ba0040 */ sdc1 $f26,0x40($sp) -/* f04c8bc: f7b80038 */ sdc1 $f24,0x38($sp) -/* f04c8c0: f7b60030 */ sdc1 $f22,0x30($sp) -/* f04c8c4: f7b40028 */ sdc1 $f20,0x28($sp) -/* f04c8c8: 0fc0a221 */ jal chrGetTargetProp -/* f04c8cc: afa700f4 */ sw $a3,0xf4($sp) -/* f04c8d0: 4480d000 */ mtc1 $zero,$f26 -/* f04c8d4: 00408825 */ or $s1,$v0,$zero -/* f04c8d8: 0fc131e1 */ jal func0f04c784 -/* f04c8dc: 02602025 */ or $a0,$s3,$zero -/* f04c8e0: 8e6e001c */ lw $t6,0x1c($s3) -/* f04c8e4: 3c0143b4 */ lui $at,0x43b4 -/* f04c8e8: 4481f000 */ mtc1 $at,$f30 -/* f04c8ec: c5c40008 */ lwc1 $f4,0x8($t6) -/* f04c8f0: 3c014334 */ lui $at,0x4334 -/* f04c8f4: 4481e000 */ mtc1 $at,$f28 -/* f04c8f8: e7a400c8 */ swc1 $f4,0xc8($sp) -/* f04c8fc: 8e6f001c */ lw $t7,0x1c($s3) -/* f04c900: 46000606 */ mov.s $f24,$f0 -/* f04c904: 27be00c8 */ addiu $s8,$sp,0xc8 -/* f04c908: c5e6000c */ lwc1 $f6,0xc($t7) -/* f04c90c: 27b7009c */ addiu $s7,$sp,0x9c -/* f04c910: 27b600a0 */ addiu $s6,$sp,0xa0 -/* f04c914: e7a600cc */ swc1 $f6,0xcc($sp) -/* f04c918: 8e78001c */ lw $t8,0x1c($s3) -/* f04c91c: 27b50098 */ addiu $s5,$sp,0x98 -/* f04c920: c7080010 */ lwc1 $f8,0x10($t8) -/* f04c924: e7a800d0 */ swc1 $f8,0xd0($sp) -/* f04c928: 44925000 */ mtc1 $s2,$f10 -.L0f04c92c: -/* f04c92c: 3c014f80 */ lui $at,0x4f80 -/* f04c930: 06410004 */ bgez $s2,.L0f04c944 -/* f04c934: 46805020 */ cvt.s.w $f0,$f10 -/* f04c938: 44818000 */ mtc1 $at,$f16 -/* f04c93c: 00000000 */ nop -/* f04c940: 46100000 */ add.s $f0,$f0,$f16 -.L0f04c944: -/* f04c944: 4600e03c */ c.lt.s $f28,$f0 -/* f04c948: 46000506 */ mov.s $f20,$f0 -/* f04c94c: 3c017f1b */ lui $at,%hi(var7f1a942c) -/* f04c950: 45020003 */ bc1fl .L0f04c960 -/* f04c954: 4618a501 */ sub.s $f20,$f20,$f24 -/* f04c958: 461e0501 */ sub.s $f20,$f0,$f30 -/* f04c95c: 4618a501 */ sub.s $f20,$f20,$f24 -.L0f04c960: -/* f04c960: c432942c */ lwc1 $f18,%lo(var7f1a942c)($at) -/* f04c964: 4612a502 */ mul.s $f20,$f20,$f18 -/* f04c968: 0c0068f4 */ jal cosf -/* f04c96c: 4600a306 */ mov.s $f12,$f20 -/* f04c970: 46000586 */ mov.s $f22,$f0 -/* f04c974: 0c0068f7 */ jal sinf -/* f04c978: 4600a306 */ mov.s $f12,$f20 -/* f04c97c: c62e0008 */ lwc1 $f14,0x8($s1) -/* f04c980: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04c984: c7a600d0 */ lwc1 $f6,0xd0($sp) -/* f04c988: c6280010 */ lwc1 $f8,0x10($s1) -/* f04c98c: 460e2081 */ sub.s $f2,$f4,$f14 -/* f04c990: 02a02825 */ or $a1,$s5,$zero -/* f04c994: 02c03025 */ or $a2,$s6,$zero -/* f04c998: 46083301 */ sub.s $f12,$f6,$f8 -/* f04c99c: 46161282 */ mul.s $f10,$f2,$f22 -/* f04c9a0: 02e03825 */ or $a3,$s7,$zero -/* f04c9a4: 46006402 */ mul.s $f16,$f12,$f0 -/* f04c9a8: 46105481 */ sub.s $f18,$f10,$f16 -/* f04c9ac: 46001202 */ mul.s $f8,$f2,$f0 -/* f04c9b0: 00000000 */ nop -/* f04c9b4: 46166282 */ mul.s $f10,$f12,$f22 -/* f04c9b8: 46127100 */ add.s $f4,$f14,$f18 -/* f04c9bc: e6040000 */ swc1 $f4,0x0($s0) -/* f04c9c0: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04c9c4: 460a4400 */ add.s $f16,$f8,$f10 -/* f04c9c8: e6060004 */ swc1 $f6,0x4($s0) -/* f04c9cc: c6320010 */ lwc1 $f18,0x10($s1) -/* f04c9d0: 46109100 */ add.s $f4,$f18,$f16 -/* f04c9d4: e6040008 */ swc1 $f4,0x8($s0) -/* f04c9d8: 0fc0a277 */ jal chrGetBbox -/* f04c9dc: 8e64001c */ lw $a0,0x1c($s3) -/* f04c9e0: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04c9e4: c7a600a0 */ lwc1 $f6,0xa0($sp) -/* f04c9e8: c7b2009c */ lwc1 $f18,0x9c($sp) -/* f04c9ec: 8e65001c */ lw $a1,0x1c($s3) -/* f04c9f0: 46083281 */ sub.s $f10,$f6,$f8 -/* f04c9f4: 24190001 */ addiu $t9,$zero,0x1 -/* f04c9f8: afb90010 */ sw $t9,0x10($sp) -/* f04c9fc: 46089401 */ sub.s $f16,$f18,$f8 -/* f04ca00: e7aa0014 */ swc1 $f10,0x14($sp) -/* f04ca04: 03c02025 */ or $a0,$s8,$zero -/* f04ca08: 02003025 */ or $a2,$s0,$zero -/* f04ca0c: e7b00018 */ swc1 $f16,0x18($sp) -/* f04ca10: 24070023 */ addiu $a3,$zero,0x23 -/* f04ca14: 0c00b5f0 */ jal cd0002d7c0 -/* f04ca18: 24a50028 */ addiu $a1,$a1,0x28 -/* f04ca1c: 1440002a */ bnez $v0,.L0f04cac8 -/* f04ca20: 02002025 */ or $a0,$s0,$zero -/* f04ca24: 3c067f1b */ lui $a2,%hi(var7f1a8ce4) -/* f04ca28: 24c68ce4 */ addiu $a2,$a2,%lo(var7f1a8ce4) -/* f04ca2c: 0c0093af */ jal cdGetPos -/* f04ca30: 240548fe */ addiu $a1,$zero,0x47f0 -/* f04ca34: c6040000 */ lwc1 $f4,0x0($s0) -/* f04ca38: c7a600c8 */ lwc1 $f6,0xc8($sp) -/* f04ca3c: c60a0008 */ lwc1 $f10,0x8($s0) -/* f04ca40: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04ca44: 46062501 */ sub.s $f20,$f4,$f6 -/* f04ca48: 46125581 */ sub.s $f22,$f10,$f18 -/* f04ca4c: 4614a202 */ mul.s $f8,$f20,$f20 -/* f04ca50: 00000000 */ nop -/* f04ca54: 4616b402 */ mul.s $f16,$f22,$f22 -/* f04ca58: 0c012974 */ jal sqrtf -/* f04ca5c: 46104300 */ add.s $f12,$f8,$f16 -/* f04ca60: 3c014248 */ lui $at,0x4248 -/* f04ca64: 44812000 */ mtc1 $at,$f4 -/* f04ca68: 44805000 */ mtc1 $zero,$f10 -/* f04ca6c: c7b200c8 */ lwc1 $f18,0xc8($sp) -/* f04ca70: 46040181 */ sub.s $f6,$f0,$f4 -/* f04ca74: c7a400c8 */ lwc1 $f4,0xc8($sp) -/* f04ca78: 46003083 */ div.s $f2,$f6,$f0 -/* f04ca7c: 460a103c */ c.lt.s $f2,$f10 -/* f04ca80: 00000000 */ nop -/* f04ca84: 45000007 */ bc1f .L0f04caa4 -/* f04ca88: 00000000 */ nop -/* f04ca8c: e6120000 */ swc1 $f18,0x0($s0) -/* f04ca90: c7a800cc */ lwc1 $f8,0xcc($sp) -/* f04ca94: e6080004 */ swc1 $f8,0x4($s0) -/* f04ca98: c7b000d0 */ lwc1 $f16,0xd0($sp) -/* f04ca9c: 1000000a */ b .L0f04cac8 -/* f04caa0: e6100008 */ swc1 $f16,0x8($s0) -.L0f04caa4: -/* f04caa4: 4602a502 */ mul.s $f20,$f20,$f2 -/* f04caa8: 46142180 */ add.s $f6,$f4,$f20 -/* f04caac: 4602b582 */ mul.s $f22,$f22,$f2 -/* f04cab0: e6060000 */ swc1 $f6,0x0($s0) -/* f04cab4: c7aa00cc */ lwc1 $f10,0xcc($sp) -/* f04cab8: e60a0004 */ swc1 $f10,0x4($s0) -/* f04cabc: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cac0: 46169200 */ add.s $f8,$f18,$f22 -/* f04cac4: e6080008 */ swc1 $f8,0x8($s0) -.L0f04cac8: -/* f04cac8: 12800019 */ beqz $s4,.L0f04cb30 -/* f04cacc: 00001025 */ or $v0,$zero,$zero -/* f04cad0: c6000000 */ lwc1 $f0,0x0($s0) -/* f04cad4: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cad8: c7a400cc */ lwc1 $f4,0xcc($sp) -/* f04cadc: c6060004 */ lwc1 $f6,0x4($s0) -/* f04cae0: 46008081 */ sub.s $f2,$f16,$f0 -/* f04cae4: c7aa00d0 */ lwc1 $f10,0xd0($sp) -/* f04cae8: c6120008 */ lwc1 $f18,0x8($s0) -/* f04caec: 46062381 */ sub.s $f14,$f4,$f6 -/* f04caf0: 46021202 */ mul.s $f8,$f2,$f2 -/* f04caf4: e7a000a8 */ swc1 $f0,0xa8($sp) -/* f04caf8: 46125301 */ sub.s $f12,$f10,$f18 -/* f04cafc: 460e7402 */ mul.s $f16,$f14,$f14 -/* f04cb00: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb04: 24080168 */ addiu $t0,$zero,0x168 -/* f04cb08: 460c6182 */ mul.s $f6,$f12,$f12 -/* f04cb0c: e7aa00ac */ swc1 $f10,0xac($sp) -/* f04cb10: c6120008 */ lwc1 $f18,0x8($s0) -/* f04cb14: 01129023 */ subu $s2,$t0,$s2 -/* f04cb18: 24020001 */ addiu $v0,$zero,0x1 -/* f04cb1c: 46104100 */ add.s $f4,$f8,$f16 -/* f04cb20: 0000a025 */ or $s4,$zero,$zero -/* f04cb24: e7b200b0 */ swc1 $f18,0xb0($sp) -/* f04cb28: 10000001 */ b .L0f04cb30 -/* f04cb2c: 46062680 */ add.s $f26,$f4,$f6 -.L0f04cb30: -/* f04cb30: 5440ff7e */ bnezl $v0,.L0f04c92c -/* f04cb34: 44925000 */ mtc1 $s2,$f10 -/* f04cb38: 44804000 */ mtc1 $zero,$f8 -/* f04cb3c: c7b000c8 */ lwc1 $f16,0xc8($sp) -/* f04cb40: 02602025 */ or $a0,$s3,$zero -/* f04cb44: 4608d032 */ c.eq.s $f26,$f8 -/* f04cb48: 02002825 */ or $a1,$s0,$zero -/* f04cb4c: 45010018 */ bc1t .L0f04cbb0 -/* f04cb50: 00000000 */ nop -/* f04cb54: c6040000 */ lwc1 $f4,0x0($s0) -/* f04cb58: c7a600cc */ lwc1 $f6,0xcc($sp) -/* f04cb5c: c60a0004 */ lwc1 $f10,0x4($s0) -/* f04cb60: 46048081 */ sub.s $f2,$f16,$f4 -/* f04cb64: c7b200d0 */ lwc1 $f18,0xd0($sp) -/* f04cb68: c6080008 */ lwc1 $f8,0x8($s0) -/* f04cb6c: 460a3381 */ sub.s $f14,$f6,$f10 -/* f04cb70: 46021402 */ mul.s $f16,$f2,$f2 -/* f04cb74: 46089301 */ sub.s $f12,$f18,$f8 -/* f04cb78: 460e7102 */ mul.s $f4,$f14,$f14 -/* f04cb7c: c7a800a8 */ lwc1 $f8,0xa8($sp) -/* f04cb80: 460c6282 */ mul.s $f10,$f12,$f12 -/* f04cb84: 46048180 */ add.s $f6,$f16,$f4 -/* f04cb88: 460a3480 */ add.s $f18,$f6,$f10 -/* f04cb8c: 461a903c */ c.lt.s $f18,$f26 -/* f04cb90: 00000000 */ nop -/* f04cb94: 45000006 */ bc1f .L0f04cbb0 -/* f04cb98: 00000000 */ nop -/* f04cb9c: e6080000 */ swc1 $f8,0x0($s0) -/* f04cba0: c7b000ac */ lwc1 $f16,0xac($sp) -/* f04cba4: e6100004 */ swc1 $f16,0x4($s0) -/* f04cba8: c7a400b0 */ lwc1 $f4,0xb0($sp) -/* f04cbac: e6040008 */ swc1 $f4,0x8($s0) -.L0f04cbb0: -/* f04cbb0: 0fc0eaf4 */ jal func0f03abd0 -/* f04cbb4: 93a600fb */ lbu $a2,0xfb($sp) -/* f04cbb8: 8fbf007c */ lw $ra,0x7c($sp) -/* f04cbbc: d7b40028 */ ldc1 $f20,0x28($sp) -/* f04cbc0: d7b60030 */ ldc1 $f22,0x30($sp) -/* f04cbc4: d7b80038 */ ldc1 $f24,0x38($sp) -/* f04cbc8: d7ba0040 */ ldc1 $f26,0x40($sp) -/* f04cbcc: d7bc0048 */ ldc1 $f28,0x48($sp) -/* f04cbd0: d7be0050 */ ldc1 $f30,0x50($sp) -/* f04cbd4: 8fb00058 */ lw $s0,0x58($sp) -/* f04cbd8: 8fb1005c */ lw $s1,0x5c($sp) -/* f04cbdc: 8fb20060 */ lw $s2,0x60($sp) -/* f04cbe0: 8fb30064 */ lw $s3,0x64($sp) -/* f04cbe4: 8fb40068 */ lw $s4,0x68($sp) -/* f04cbe8: 8fb5006c */ lw $s5,0x6c($sp) -/* f04cbec: 8fb60070 */ lw $s6,0x70($sp) -/* f04cbf0: 8fb70074 */ lw $s7,0x74($sp) -/* f04cbf4: 8fbe0078 */ lw $s8,0x78($sp) -/* f04cbf8: 27bd00e8 */ addiu $sp,$sp,0xe8 -/* f04cbfc: 03e00008 */ jr $ra -/* f04cc00: 24020001 */ addiu $v0,$zero,0x1 -); + cdGetPos(pos, 18416, "chraction.c"); #endif -// Mismatch: Probably due to variable reuse. -//bool func0f04c874(struct chrdata *chr, u32 angle360, struct coord *pos, u8 arg3, u8 arg4) -//{ -// struct prop *target = chrGetTargetProp(chr); -// f32 fVar7 = 0; -// f32 uVar9 = func0f04c784(chr); -// struct coord chrpos; // c8, cc, d0 -// struct coord saved; // a8, ac, b0 -// f32 ymax; // a0 -// f32 ymin; // 9c -// f32 width; // 98 -// f32 cosine; -// f32 sine; -// f32 xdiff; -// f32 ydiff; -// f32 zdiff; -// f32 xdiff2; -// f32 ydiff2; -// f32 zdiff2; -// f32 scale; -// bool again; -// -// chrpos.x = chr->prop->pos.x; -// chrpos.y = chr->prop->pos.y; -// chrpos.z = chr->prop->pos.z; -// -// do { -// s32 result; -// f32 angle360f = angle360; -// -// if (angle360f > 180) { -// angle360f -= 360; -// } -// -// cosine = cosf((angle360f - uVar9) * 0.017450513318181f); -// sine = sinf((angle360f - uVar9) * 0.017450513318181f); -// xdiff = chrpos.x - target->pos.x; -// zdiff = chrpos.z - target->pos.z; -// -// pos->x = target->pos.x + (xdiff * cosine - zdiff * sine); -// pos->y = chrpos.y; -// pos->z = target->pos.z + (xdiff * sine + zdiff * cosine); -// -// chrGetBbox(chr->prop, &width, &ymax, &ymin); -// -// // a14 -// result = cd0002d7c0(&chrpos, chr->prop->rooms, pos, -// CDTYPE_BG | CDTYPE_OBJS | CDTYPE_DOORS, 1, -// ymax - chrpos.y, -// ymin - chrpos.y); -// -// if (result == CDRESULT_COLLISION) { -// f32 xdiff; -// f32 zdiff; -// f32 tmp; -// cdGetPos(pos, 18686, "chraction.c"); -// -// xdiff = pos->x - chrpos.x; -// zdiff = pos->z - chrpos.z; -// tmp = sqrtf(xdiff * xdiff + zdiff * zdiff); -// scale = (tmp - 50.0f) / tmp; -// -// if (scale < 0) { -// pos->x = chrpos.x; -// pos->y = chrpos.y; -// pos->z = chrpos.z; -// } else { -// pos->x = chrpos.x + xdiff * scale; -// pos->y = chrpos.y; -// pos->z = chrpos.z + zdiff * scale; -// } -// } -// -// // ac8 -// if (arg3) { -// xdiff2 = chrpos.x - pos->x; -// ydiff2 = chrpos.y - pos->y; -// zdiff2 = chrpos.z - pos->z; -// -// saved.x = pos->x; -// saved.y = pos->y; -// saved.z = pos->z; -// -// fVar7 = xdiff2 * xdiff2 + ydiff2 * ydiff2 + zdiff2 * zdiff2; -// -// angle360 = 360 - angle360; -// again = true; -// arg3 = 0; -// } else { -// again = false; -// } -// } while (again); -// -// if (fVar7 != 0) { -// f32 tmp; -// xdiff2 = chrpos.x - pos->x; -// ydiff2 = chrpos.y - pos->y; -// zdiff2 = chrpos.z - pos->z; -// -// tmp = xdiff2 * xdiff2 + ydiff2 * ydiff2 + zdiff2 * zdiff2; -// -// if (tmp < fVar7) { -// pos->x = saved.x; -// pos->y = saved.y; -// pos->z = saved.z; -// } -// } -// -// func0f03abd0(chr, pos, arg4); -// -// return true; -//} + xdiff = pos->x - chrpos.x; + zdiff = pos->z - chrpos.z; + tmp = sqrtf(xdiff * xdiff + zdiff * zdiff); + scale = (tmp - 50.0f) / tmp; + + if (scale < 0) { + pos->x = chrpos.x; + pos->y = chrpos.y; + pos->z = chrpos.z; + } else { + xdiff *= scale; + zdiff *= scale; + + pos->x = chrpos.x + xdiff; + pos->y = chrpos.y; + pos->z = chrpos.z + zdiff; + } + } + + if (arg3) { + xdiff = chrpos.x - pos->x; + ydiff = chrpos.y - pos->y; + zdiff = chrpos.z - pos->z; + + sqdist = xdiff * xdiff + ydiff * ydiff + zdiff * zdiff; + + saved.x = pos->x; + saved.y = pos->y; + saved.z = pos->z; + + angle360 = 360 - angle360; + again = true; + arg3 = 0; + } else { + again = false; + } + } while (again); + + if (sqdist != 0) { + f32 sqdist2; + xdiff = chrpos.x - pos->x; + ydiff = chrpos.y - pos->y; + zdiff = chrpos.z - pos->z; + + sqdist2 = xdiff * xdiff + ydiff * ydiff + zdiff * zdiff; + + if (sqdist2 < sqdist) { + pos->x = saved.f[0]; + pos->y = saved.f[1]; + pos->z = saved.f[2]; + } + } + + func0f03abd0(chr, pos, arg4); + + return true; +} /** * Chrs are assigned to teams, and they can be assigned to more than one. diff --git a/src/game/chraicommands.c b/src/game/chraicommands.c index 38efd0986..6ca60121b 100644 --- a/src/game/chraicommands.c +++ b/src/game/chraicommands.c @@ -10466,10 +10466,10 @@ bool aiIfChrInSquadronDoingAction(void) bool ai0139(void) { u8 *cmd = g_Vars.ailist + g_Vars.aioffset; - u32 flags = (cmd[3] << 16) | (cmd[4] << 8) | cmd[5] | (cmd[2] << 24); + u32 angle = (cmd[3] << 16) | (cmd[4] << 8) | cmd[5] | (cmd[2] << 24); struct coord pos; - func0f04c874(g_Vars.chrdata, flags, &pos, cmd[7], cmd[6]); + chr0f04c874(g_Vars.chrdata, angle, &pos, cmd[7], cmd[6]); g_Vars.aioffset += 8; diff --git a/src/include/commands.h b/src/include/commands.h index c3990f836..1e66e4d39 100644 --- a/src/include/commands.h +++ b/src/include/commands.h @@ -2948,9 +2948,9 @@ // I think this is related to flanking, where the value arg is the angle // relative to the player's direction. 335 is the same as 25 degress to the // right (360 - 25). -#define cmd0139(value, u1, bool) \ +#define cmd0139(angle, u1, bool) \ mkshort(0x0139), \ - mkword(value), \ + mkword(angle), \ u1, \ bool, diff --git a/src/include/game/chraction.h b/src/include/game/chraction.h index b398b29bd..e86eadc21 100644 --- a/src/include/game/chraction.h +++ b/src/include/game/chraction.h @@ -219,7 +219,7 @@ s32 chrAssignCoverByCriteria(struct chrdata *chr, u16 arg1, s32 arg2); s32 chrAssignCoverAwayFromDanger(struct chrdata *chr, s32 mindist, s32 maxdist); bool chrRunFromPos(struct chrdata *chr, u32 speed, f32 distance, struct coord *frompos); f32 func0f04c784(struct chrdata *chr); -bool func0f04c874(struct chrdata *chr, u32 angle360, struct coord *pos, u8 arg3, u8 arg4); +bool chr0f04c874(struct chrdata *chr, u32 angle360, struct coord *pos, u8 arg3, u8 arg4); void rebuildTeams(void); void rebuildSquadrons(void); void chrAvoid(struct chrdata *chr);