From 9b11a4758a333330d977166ece88c87d68b041a1 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 29 Jan 2021 08:24:42 +1000 Subject: [PATCH] Decompile guMtxIdentF --- Makefile | 5 +++- ld/libfiles.inc | 1 + src/lib/lib_4a360.c | 65 ++++++++++------------------------------ src/lib/ultra/gu/sqrtf.c | 20 +++++++++++++ 4 files changed, 41 insertions(+), 50 deletions(-) create mode 100644 src/lib/ultra/gu/sqrtf.c diff --git a/Makefile b/Makefile index e225efe1f..0af89f58c 100644 --- a/Makefile +++ b/Makefile @@ -59,6 +59,9 @@ endif MIPSISET := -mips2 -32 OPT_LVL := -O2 +LOOPUNROLL := -Wo,-loopunroll,0 + +$(B_DIR)/lib/lib_4a360.o: LOOPUNROLL := $(B_DIR)/lib/libc/ll.o: MIPSISET := -mips3 -o32 $(B_DIR)/lib/libc/llcvt.o: MIPSISET := -mips3 -o32 @@ -87,7 +90,7 @@ CFLAGS = -DVERSION=$(VERSION) \ -DPAL=$(PAL) \ -DJPN=$(JPN) \ -DPIRACYCHECKS=$(PIRACYCHECKS) \ - -Wo,-loopunroll,0 \ + $(LOOPUNROLL) \ -Wab,-r4300_mul \ -non_shared \ -G 0 \ diff --git a/ld/libfiles.inc b/ld/libfiles.inc index a33cbde1e..a81501a23 100644 --- a/ld/libfiles.inc +++ b/ld/libfiles.inc @@ -118,6 +118,7 @@ build/ROMID/lib/ultra/os/thread.o (section); \ build/ROMID/lib/ultra/os/destroythread.o (section); \ build/ROMID/lib/lib_4a360.o (section); \ + build/ROMID/lib/ultra/gu/sqrtf.o (section); \ build/ROMID/lib/lib_4a5e0.o (section); \ build/ROMID/lib/libc/ldiv.o (section); \ build/ROMID/lib/ultra/io/siacs.o (section); \ diff --git a/src/lib/lib_4a360.c b/src/lib/lib_4a360.c index d8de4b8af..52be06206 100644 --- a/src/lib/lib_4a360.c +++ b/src/lib/lib_4a360.c @@ -82,47 +82,19 @@ glabel guMtxF2L /* 4a45c: 00000000 */ nop ); +void guMtxIdentF(float mf[4][4]) +{ + int i, j; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + mf[i][j] = i == j ? 1 : 0; + } + } +} + GLOBAL_ASM( -glabel guMtxIdentF -/* 4a460: 3c013f80 */ lui $at,0x3f80 -/* 4a464: 00801825 */ or $v1,$a0,$zero -/* 4a468: 44810000 */ mtc1 $at,$f0 -/* 4a46c: 44801000 */ mtc1 $zero,$f2 -/* 4a470: 24040001 */ addiu $a0,$zero,0x1 -/* 4a474: 00001025 */ or $v0,$zero,$zero -/* 4a478: 24070004 */ addiu $a3,$zero,0x4 -/* 4a47c: 24060003 */ addiu $a2,$zero,0x3 -/* 4a480: 24050002 */ addiu $a1,$zero,0x2 -.L0004a484: -/* 4a484: 54400004 */ bnezl $v0,.L0004a498 -/* 4a488: e4620000 */ swc1 $f2,0x0($v1) -/* 4a48c: 10000002 */ b .L0004a498 -/* 4a490: e4600000 */ swc1 $f0,0x0($v1) -/* 4a494: e4620000 */ swc1 $f2,0x0($v1) -.L0004a498: -/* 4a498: 54440004 */ bnel $v0,$a0,.L0004a4ac -/* 4a49c: e4620004 */ swc1 $f2,0x4($v1) -/* 4a4a0: 10000002 */ b .L0004a4ac -/* 4a4a4: e4600004 */ swc1 $f0,0x4($v1) -/* 4a4a8: e4620004 */ swc1 $f2,0x4($v1) -.L0004a4ac: -/* 4a4ac: 54450004 */ bnel $v0,$a1,.L0004a4c0 -/* 4a4b0: e4620008 */ swc1 $f2,0x8($v1) -/* 4a4b4: 10000002 */ b .L0004a4c0 -/* 4a4b8: e4600008 */ swc1 $f0,0x8($v1) -/* 4a4bc: e4620008 */ swc1 $f2,0x8($v1) -.L0004a4c0: -/* 4a4c0: 54460004 */ bnel $v0,$a2,.L0004a4d4 -/* 4a4c4: e462000c */ swc1 $f2,0xc($v1) -/* 4a4c8: 10000002 */ b .L0004a4d4 -/* 4a4cc: e460000c */ swc1 $f0,0xc($v1) -/* 4a4d0: e462000c */ swc1 $f2,0xc($v1) -.L0004a4d4: -/* 4a4d4: 24420001 */ addiu $v0,$v0,0x1 -/* 4a4d8: 1447ffea */ bne $v0,$a3,.L0004a484 -/* 4a4dc: 24630010 */ addiu $v1,$v1,0x10 -/* 4a4e0: 03e00008 */ jr $ra -/* 4a4e4: 00000000 */ nop +glabel func0004a4e8 /* 4a4e8: 27bdffa8 */ addiu $sp,$sp,-88 /* 4a4ec: afbf0014 */ sw $ra,0x14($sp) /* 4a4f0: afa40058 */ sw $a0,0x58($sp) @@ -135,6 +107,10 @@ glabel guMtxIdentF /* 4a50c: 27bd0058 */ addiu $sp,$sp,0x58 /* 4a510: 03e00008 */ jr $ra /* 4a514: 00000000 */ nop +); + +GLOBAL_ASM( +glabel func0004a518 /* 4a518: 3c013780 */ lui $at,0x3780 /* 4a51c: 44810000 */ mtc1 $at,$f0 /* 4a520: 27bdfff0 */ addiu $sp,$sp,-16 @@ -184,12 +160,3 @@ glabel guMtxIdentF /* 4a5c8: 27bd0010 */ addiu $sp,$sp,0x10 /* 4a5cc: 00000000 */ nop ); - -// func0004a5d0 -GLOBAL_ASM( -glabel sqrtf -/* 4a5d0: 03e00008 */ jr $ra -/* 4a5d4: 46006004 */ sqrt.s $f0,$f12 -/* 4a5d8: 00000000 */ nop -/* 4a5dc: 00000000 */ nop -); \ No newline at end of file diff --git a/src/lib/ultra/gu/sqrtf.c b/src/lib/ultra/gu/sqrtf.c new file mode 100644 index 000000000..c7c0542d5 --- /dev/null +++ b/src/lib/ultra/gu/sqrtf.c @@ -0,0 +1,20 @@ +#include +#include "constants.h" +#include "game/data/data_000000.h" +#include "game/data/data_0083d0.h" +#include "game/data/data_00e460.h" +#include "game/data/data_0160b0.h" +#include "game/data/data_01a3a0.h" +#include "game/data/data_020df0.h" +#include "game/data/data_02da90.h" +#include "gvars/gvars.h" +#include "lib/lib_4a360.h" +#include "types.h" + +GLOBAL_ASM( +glabel sqrtf +/* 4a5d0: 03e00008 */ jr $ra +/* 4a5d4: 46006004 */ sqrt.s $f0,$f12 +/* 4a5d8: 00000000 */ nop +/* 4a5dc: 00000000 */ nop +);