From 04daf458214d83adf7137577b8dbc9ab0bceaf35 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 21 Feb 2022 18:04:56 +1000 Subject: [PATCH] Decompile quaternionToTransformMtx --- src/game/game_096ca0.c | 32 ++++++++------------------------ src/include/game/game_096ca0.h | 2 +- src/lib/model.c | 12 ++++++------ 3 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/game/game_096ca0.c b/src/game/game_096ca0.c index 60d3229e9..cd46d9e71 100644 --- a/src/game/game_096ca0.c +++ b/src/game/game_096ca0.c @@ -246,30 +246,14 @@ glabel func0f097044 /* f097260: 00000000 */ nop ); -GLOBAL_ASM( -glabel func0f097264 -/* f097264: 27bdffe8 */ addiu $sp,$sp,-24 -/* f097268: 00803825 */ or $a3,$a0,$zero -/* f09726c: afbf0014 */ sw $ra,0x14($sp) -/* f097270: afa5001c */ sw $a1,0x1c($sp) -/* f097274: 00a02025 */ or $a0,$a1,$zero -/* f097278: 00c02825 */ or $a1,$a2,$zero -/* f09727c: afa70018 */ sw $a3,0x18($sp) -/* f097280: 0fc25bb5 */ jal quaternionToMtx -/* f097284: afa60020 */ sw $a2,0x20($sp) -/* f097288: 8fa70018 */ lw $a3,0x18($sp) -/* f09728c: 8fa60020 */ lw $a2,0x20($sp) -/* f097290: c4e40000 */ lwc1 $f4,0x0($a3) -/* f097294: e4c40030 */ swc1 $f4,0x30($a2) -/* f097298: c4e60004 */ lwc1 $f6,0x4($a3) -/* f09729c: e4c60034 */ swc1 $f6,0x34($a2) -/* f0972a0: c4e80008 */ lwc1 $f8,0x8($a3) -/* f0972a4: e4c80038 */ swc1 $f8,0x38($a2) -/* f0972a8: 8fbf0014 */ lw $ra,0x14($sp) -/* f0972ac: 27bd0018 */ addiu $sp,$sp,0x18 -/* f0972b0: 03e00008 */ jr $ra -/* f0972b4: 00000000 */ nop -); +void quaternionToTransformMtx(struct coord *pos, f32 rot[4], Mtxf *mtx) +{ + quaternionToMtx(rot, mtx); + + mtx->m[3][0] = pos->x; + mtx->m[3][1] = pos->y; + mtx->m[3][2] = pos->z; +} GLOBAL_ASM( glabel func0f0972b8 diff --git a/src/include/game/game_096ca0.h b/src/include/game/game_096ca0.h index d4de8886e..56eecde53 100644 --- a/src/include/game/game_096ca0.h +++ b/src/include/game/game_096ca0.h @@ -7,7 +7,7 @@ void quaternion0f096ca0(struct coord *arg0, f32 quat[4]); void quaternionToMtx(f32 *arg0, Mtxf *arg1); void func0f097044(Mtxf *matrix, f32 arg1[4]); -u32 func0f097264(void); +void quaternionToTransformMtx(struct coord *pos, f32 rot[4], Mtxf *matrix); void func0f0972b8(f32 arg0[4], f32 arg1[4], f32 arg2, f32 *arg3); u32 func0f097518(void); void func0f0976c0(f32 arg0[4], f32 arg1[4]); diff --git a/src/lib/model.c b/src/lib/model.c index 7f105c055..c5357497c 100644 --- a/src/lib/model.c +++ b/src/lib/model.c @@ -953,7 +953,7 @@ glabel var70054308 /* 1ba88: 1180000d */ beqz $t4,.L0001bac0 /* 1ba8c: 0018c980 */ sll $t9,$t8,0x6 /* 1ba90: 8fa400c8 */ lw $a0,0xc8($sp) -/* 1ba94: 0fc25c99 */ jal func0f097264 +/* 1ba94: 0fc25c99 */ jal quaternionToTransformMtx /* 1ba98: 27a60068 */ addiu $a2,$sp,0x68 /* 1ba9c: 8fad0060 */ lw $t5,0x60($sp) /* 1baa0: 8faf0058 */ lw $t7,0x58($sp) @@ -967,7 +967,7 @@ glabel var70054308 .L0001bac0: /* 1bac0: 8fa90058 */ lw $t1,0x58($sp) /* 1bac4: 8fa400c8 */ lw $a0,0xc8($sp) -/* 1bac8: 0fc25c99 */ jal func0f097264 +/* 1bac8: 0fc25c99 */ jal quaternionToTransformMtx /* 1bacc: 03293021 */ addu $a2,$t9,$t1 /* 1bad0: 8faa00b4 */ lw $t2,0xb4($sp) .L0001bad4: @@ -1113,7 +1113,7 @@ glabel var70054320 /* 1bc8c: 8fac0048 */ lw $t4,0x48($sp) /* 1bc90: 8fa400b8 */ lw $a0,0xb8($sp) /* 1bc94: 8fa500b4 */ lw $a1,0xb4($sp) -/* 1bc98: 0fc25c99 */ jal func0f097264 +/* 1bc98: 0fc25c99 */ jal quaternionToTransformMtx /* 1bc9c: 27a60058 */ addiu $a2,$sp,0x58 /* 1bca0: 8fae00bc */ lw $t6,0xbc($sp) /* 1bca4: 3c013f80 */ lui $at,0x3f80 @@ -1169,7 +1169,7 @@ glabel var70054320 /* 1bd5c: 00085980 */ sll $t3,$t0,0x6 /* 1bd60: 016c3021 */ addu $a2,$t3,$t4 /* 1bd64: afa6001c */ sw $a2,0x1c($sp) -/* 1bd68: 0fc25c99 */ jal func0f097264 +/* 1bd68: 0fc25c99 */ jal quaternionToTransformMtx /* 1bd6c: 8fa500b4 */ lw $a1,0xb4($sp) /* 1bd70: 8fad00bc */ lw $t5,0xbc($sp) /* 1bd74: 3c013f80 */ lui $at,0x3f80 @@ -1218,7 +1218,7 @@ glabel var70054320 /* 1be14: 1120000d */ beqz $t1,.L0001be4c /* 1be18: 000c6980 */ sll $t5,$t4,0x6 /* 1be1c: 8fa400b8 */ lw $a0,0xb8($sp) -/* 1be20: 0fc25c99 */ jal func0f097264 +/* 1be20: 0fc25c99 */ jal quaternionToTransformMtx /* 1be24: 27a60058 */ addiu $a2,$sp,0x58 /* 1be28: 8faa0050 */ lw $t2,0x50($sp) /* 1be2c: 8fab0048 */ lw $t3,0x48($sp) @@ -1232,7 +1232,7 @@ glabel var70054320 .L0001be4c: /* 1be4c: 8fae0048 */ lw $t6,0x48($sp) /* 1be50: 8fa400b8 */ lw $a0,0xb8($sp) -/* 1be54: 0fc25c99 */ jal func0f097264 +/* 1be54: 0fc25c99 */ jal quaternionToTransformMtx /* 1be58: 01ae3021 */ addu $a2,$t5,$t6 /* 1be5c: 8faf00a4 */ lw $t7,0xa4($sp) .L0001be60: