Decompile func0f191448

This commit is contained in:
Ryan Dwyer 2021-02-25 12:22:14 +10:00
parent 0b19266e78
commit 1158f12839
3 changed files with 42 additions and 110 deletions

View File

@ -1246,114 +1246,46 @@ s32 chrGuessCrouchPos(struct chrdata *chr)
return crouchpos;
}
GLOBAL_ASM(
glabel func0f191448
.late_rodata
glabel var7f1b8eac
.word 0x40c907a9
glabel var7f1b8eb0
.word 0x40c907a9
glabel var7f1b8eb4
.word 0x40c907a9
.text
/* f191448: 27bdffb0 */ addiu $sp,$sp,-80
/* f19144c: afb10038 */ sw $s1,0x38($sp)
/* f191450: 00808825 */ or $s1,$a0,$zero
/* f191454: afbf003c */ sw $ra,0x3c($sp)
/* f191458: afb00034 */ sw $s0,0x34($sp)
/* f19145c: f7b60028 */ sdc1 $f22,0x28($sp)
/* f191460: 10800004 */ beqz $a0,.L0f191474
/* f191464: f7b40020 */ sdc1 $f20,0x20($sp)
/* f191468: 8c8202d4 */ lw $v0,0x2d4($a0)
/* f19146c: 14400003 */ bnez $v0,.L0f19147c
/* f191470: 00408025 */ or $s0,$v0,$zero
.L0f191474:
/* f191474: 10000048 */ b .L0f191598
/* f191478: 00001025 */ or $v0,$zero,$zero
.L0f19147c:
/* f19147c: 0fc0f917 */ jal chrGetInverseTheta
/* f191480: 02202025 */ or $a0,$s1,$zero
/* f191484: 46000506 */ mov.s $f20,$f0
/* f191488: 0fc0f95e */ jal func0f03e578
/* f19148c: 02202025 */ or $a0,$s1,$zero
/* f191490: 4600a03c */ c.lt.s $f20,$f0
/* f191494: 4600a081 */ sub.s $f2,$f20,$f0
/* f191498: 45000004 */ bc1f .L0f1914ac
/* f19149c: 46001586 */ mov.s $f22,$f2
/* f1914a0: 3c017f1c */ lui $at,%hi(var7f1b8eac)
/* f1914a4: c4248eac */ lwc1 $f4,%lo(var7f1b8eac)($at)
/* f1914a8: 46041580 */ add.s $f22,$f2,$f4
.L0f1914ac:
/* f1914ac: 0c0068f4 */ jal cosf
/* f1914b0: 4600b306 */ mov.s $f12,$f22
/* f1914b4: 46000506 */ mov.s $f20,$f0
/* f1914b8: 0c0068f7 */ jal sinf
/* f1914bc: 4600b306 */ mov.s $f12,$f22
/* f1914c0: c606006c */ lwc1 $f6,0x6c($s0)
/* f1914c4: c60a0070 */ lwc1 $f10,0x70($s0)
/* f1914c8: 4600b306 */ mov.s $f12,$f22
/* f1914cc: 46143202 */ mul.s $f8,$f6,$f20
/* f1914d0: 00000000 */ nop
/* f1914d4: 460a0402 */ mul.s $f16,$f0,$f10
/* f1914d8: 46104481 */ sub.s $f18,$f8,$f16
/* f1914dc: 0c0068f7 */ jal sinf
/* f1914e0: e7b20044 */ swc1 $f18,0x44($sp)
/* f1914e4: 46000506 */ mov.s $f20,$f0
/* f1914e8: 0c0068f4 */ jal cosf
/* f1914ec: 4600b306 */ mov.s $f12,$f22
/* f1914f0: c6040070 */ lwc1 $f4,0x70($s0)
/* f1914f4: c60a006c */ lwc1 $f10,0x6c($s0)
/* f1914f8: 02202025 */ or $a0,$s1,$zero
/* f1914fc: 46040182 */ mul.s $f6,$f0,$f4
/* f191500: 00000000 */ nop
/* f191504: 46145202 */ mul.s $f8,$f10,$f20
/* f191508: 0fc644fe */ jal chrGuessCrouchPos
/* f19150c: 46083580 */ add.s $f22,$f6,$f8
/* f191510: c61000ac */ lwc1 $f16,0xac($s0)
/* f191514: 4406b000 */ mfc1 $a2,$f22
/* f191518: 260e00a8 */ addiu $t6,$s0,0xa8
/* f19151c: 260f0068 */ addiu $t7,$s0,0x68
/* f191520: afaf0018 */ sw $t7,0x18($sp)
/* f191524: afae0014 */ sw $t6,0x14($sp)
/* f191528: 02202025 */ or $a0,$s1,$zero
/* f19152c: 00402825 */ or $a1,$v0,$zero
/* f191530: 8fa70044 */ lw $a3,0x44($sp)
/* f191534: 0fc30a96 */ jal func0f0c2a58
/* f191538: e7b00010 */ swc1 $f16,0x10($sp)
/* f19153c: 0fc0f917 */ jal chrGetInverseTheta
/* f191540: 02202025 */ or $a0,$s1,$zero
/* f191544: c61200a8 */ lwc1 $f18,0xa8($s0)
/* f191548: 44802000 */ mtc1 $zero,$f4
/* f19154c: 3c017f1c */ lui $at,%hi(var7f1b8eb0)
/* f191550: 46120081 */ sub.s $f2,$f0,$f18
/* f191554: 4604103c */ c.lt.s $f2,$f4
/* f191558: 00000000 */ nop
/* f19155c: 45000003 */ bc1f .L0f19156c
/* f191560: 00000000 */ nop
/* f191564: c4208eb0 */ lwc1 $f0,%lo(var7f1b8eb0)($at)
/* f191568: 46001080 */ add.s $f2,$f2,$f0
.L0f19156c:
/* f19156c: 3c017f1c */ lui $at,%hi(var7f1b8eb4)
/* f191570: c4208eb4 */ lwc1 $f0,%lo(var7f1b8eb4)($at)
/* f191574: 4602003e */ c.le.s $f0,$f2
/* f191578: 00000000 */ nop
/* f19157c: 45020003 */ bc1fl .L0f19158c
/* f191580: 44051000 */ mfc1 $a1,$f2
/* f191584: 46001081 */ sub.s $f2,$f2,$f0
/* f191588: 44051000 */ mfc1 $a1,$f2
.L0f19158c:
/* f19158c: 0c006ba4 */ jal func0001ae90
/* f191590: 8e240020 */ lw $a0,0x20($s1)
/* f191594: 24020001 */ addiu $v0,$zero,0x1
.L0f191598:
/* f191598: 8fbf003c */ lw $ra,0x3c($sp)
/* f19159c: d7b40020 */ ldc1 $f20,0x20($sp)
/* f1915a0: d7b60028 */ ldc1 $f22,0x28($sp)
/* f1915a4: 8fb00034 */ lw $s0,0x34($sp)
/* f1915a8: 8fb10038 */ lw $s1,0x38($sp)
/* f1915ac: 03e00008 */ jr $ra
/* f1915b0: 27bd0050 */ addiu $sp,$sp,0x50
);
bool func0f191448(struct chrdata *chr)
{
struct aibot *aibot;
u32 stack;
f32 a;
f32 b;
f32 angle;
f32 angle2;
if (!chr || !chr->aibot) {
return false;
}
aibot = chr->aibot;
angle = chrGetInverseTheta(chr) - func0f03e578(chr);
if (angle < 0) {
angle += M_BADTAU;
}
a = aibot->unk06c * cosf(angle) - sinf(angle) * aibot->unk070;
b = aibot->unk06c * sinf(angle) + cosf(angle) * aibot->unk070;
func0f0c2a58(chr, chrGuessCrouchPos(chr), b, a, aibot->unk0ac, &aibot->unk0a8, &aibot->unk068);
angle2 = chrGetInverseTheta(chr) - aibot->unk0a8;
if (angle2 < 0) {
angle2 += M_BADTAU;
}
if (angle2 >= M_BADTAU) {
angle2 -= M_BADTAU;
}
func0001ae90(chr->model, angle2);
return true;
}
s32 mpchrGetWeaponNum(struct chrdata *chr)
{

View File

@ -77,7 +77,7 @@ void currentPlayerSetShieldFrac(f32 shield);
s32 getMissionTime(void);
s32 func0f0c228c(struct prop *prop);
u32 func0f0c2364(void);
u32 func0f0c2a58(void);
void func0f0c2a58(struct chrdata *chr, s32 crouchpos, f32 arg2, f32 arg3, f32 arg4, f32 *arg5, struct act_attackamount_2c **arg6);
Gfx *playerRender(struct prop *prop, Gfx *gdl, bool withalpha);
Gfx *currentPlayerLoadMatrix(Gfx *gdl);
u32 func0f0c3320(void);

View File

@ -13,7 +13,7 @@ u32 propobjHandlePickupByAibot(struct prop *prop, struct chrdata *chr);
u32 func0f190be4(void);
void func0f19124c(struct chrdata *chr);
s32 chrGuessCrouchPos(struct chrdata *chr);
void func0f191448(struct chrdata *chr);
bool func0f191448(struct chrdata *chr);
bool func0f191638(struct chrdata *chr, bool arg1);
bool aibotTick(struct prop *prop);
f32 aibotCalculateMaxSpeed(struct chrdata *chr);