Decompile __f_to_ll, __ull_to_d and __ull_to_f
This commit is contained in:
parent
18364b4e90
commit
d951c64c1a
7
Makefile
7
Makefile
|
|
@ -58,6 +58,7 @@ endif
|
|||
|
||||
MIPSISET := -mips2 -32
|
||||
|
||||
$(B_DIR)/lib/libc/llcvt.o: MIPSISET := -mips3 -o32
|
||||
$(B_DIR)/lib/libc/ll.o: MIPSISET := -mips3 -o32
|
||||
|
||||
CFLAGS = -DVERSION=$(VERSION) \
|
||||
|
|
@ -351,6 +352,12 @@ $(B_DIR)/boot/%.o: src/boot/%.c
|
|||
/usr/bin/env python3 tools/asmpreproc/asm-processor.py -O2 $< | $(IDOCC) -c $(CFLAGS) tools/asmpreproc/include-stdin.c -o $@ -O2
|
||||
/usr/bin/env python3 tools/asmpreproc/asm-processor.py -O2 $< --post-process $@ --assembler "$(TOOLCHAIN)-as -march=vr4300 -mabi=32" --asm-prelude tools/asmpreproc/prelude.s
|
||||
|
||||
$(B_DIR)/lib/libc/llcvt.o: src/lib/libc/llcvt.c
|
||||
@mkdir -p $(dir $@)
|
||||
/usr/bin/env python3 tools/asmpreproc/asm-processor.py -O2 $< | $(IDOCC) -c $(CFLAGS) tools/asmpreproc/include-stdin.c -o $@ -O1
|
||||
/usr/bin/env python3 tools/asmpreproc/asm-processor.py -O2 $< --post-process $@ --assembler "$(TOOLCHAIN)-as -march=vr4300 -mabi=32" --asm-prelude tools/asmpreproc/prelude.s
|
||||
tools/patchmips3 $@ || rm $@
|
||||
|
||||
$(B_DIR)/lib/libc/ll.o: src/lib/libc/ll.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(IDOCC) -c $(CFLAGS) $< -o $@ -O1
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
build/ROMID/lib/lib_04840.o (section); \
|
||||
build/ROMID/lib/lib_04a80.o (section); \
|
||||
build/ROMID/lib/ultra/io/pfsisplug.o (section); \
|
||||
build/ROMID/lib/lib_05a60.o (section); \
|
||||
build/ROMID/lib/libc/llcvt.o (section); \
|
||||
build/ROMID/lib/ultra/os/initialize.o (section); \
|
||||
build/ROMID/lib/lib_05dc0.o (section); \
|
||||
build/ROMID/lib/lib_05e40.o (section); \
|
||||
|
|
|
|||
|
|
@ -4927,7 +4927,7 @@ glabel func0f14dac0
|
|||
/* f14dbac: 461a6302 */ mul.s $f12,$f12,$f26
|
||||
/* f14dbb0: 52c0000a */ beqzl $s6,.L0f14dbdc
|
||||
/* f14dbb4: 26b50001 */ addiu $s5,$s5,0x1
|
||||
/* f14dbb8: 0c00169f */ jal func00005a7c
|
||||
/* f14dbb8: 0c00169f */ jal __f_to_ull
|
||||
/* f14dbbc: 0117a023 */ subu $s4,$t0,$s7
|
||||
/* f14dbc0: 02c02025 */ or $a0,$s6,$zero
|
||||
/* f14dbc4: 02802825 */ or $a1,$s4,$zero
|
||||
|
|
|
|||
|
|
@ -26390,7 +26390,7 @@ glabel func0f04ba34
|
|||
/* f04bdb4: 4502000d */ bc1fl .L0f04bdec
|
||||
/* f04bdb8: 8fae0078 */ lw $t6,0x78($sp)
|
||||
.L0f04bdbc:
|
||||
/* f04bdbc: 0c00169f */ jal func00005a7c
|
||||
/* f04bdbc: 0c00169f */ jal __f_to_ull
|
||||
/* f04bdc0: afa40050 */ sw $a0,0x50($sp)
|
||||
/* f04bdc4: 8fa40050 */ lw $a0,0x50($sp)
|
||||
/* f04bdc8: 8e4a0000 */ lw $t2,0x0($s2)
|
||||
|
|
|
|||
|
|
@ -10905,8 +10905,7 @@ bool aiRemoveWeaponFromInventory(void)
|
|||
*/
|
||||
bool ai01dd(void)
|
||||
{
|
||||
u64 value = (u64)osGetCount() * 64;
|
||||
func00005b30(value / 3000);
|
||||
f32 value = (u64)osGetCount() * 64 / 3000;
|
||||
|
||||
if (var800840c4) {
|
||||
g_Vars.aioffset += 4;
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
#ifndef _IN_LIB_LIB_05A60_H
|
||||
#define _IN_LIB_LIB_05A60_H
|
||||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
u32 func00005a60(void);
|
||||
u32 func00005a7c(void);
|
||||
u32 func00005b18(void);
|
||||
void func00005b30(u64 arg0);
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef _IN_LIB_LIBC_LLCVT_H
|
||||
#define _IN_LIB_LIBC_LLCVT_H
|
||||
|
||||
long long __f_to_ll(float f);
|
||||
unsigned long long __f_to_ull(float f);
|
||||
double __ll_to_d(long long s);
|
||||
float __ull_to_f(unsigned long long u);
|
||||
|
||||
#endif
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
#include <ultra64.h>
|
||||
#include "boot/boot.h"
|
||||
#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_04790.h"
|
||||
#include "lib/lib_04a80.h"
|
||||
#include "lib/lib_16110.h"
|
||||
#include "lib/lib_48150.h"
|
||||
#include "lib/lib_4a360.h"
|
||||
#include "lib/lib_4a5e0.h"
|
||||
#include "lib/lib_4a680.h"
|
||||
#include "lib/libc/ll.h"
|
||||
#include "types.h"
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func00005a60
|
||||
/* 5a60: 46006109 */ trunc.l.s $f4,$f12
|
||||
/* 5a64: 44222000 */ dmfc1 $v0,$f4
|
||||
/* 5a68: 00000000 */ nop
|
||||
/* 5a6c: 0002183c */ dsll32 $v1,$v0,0x0
|
||||
/* 5a70: 0003183f */ dsra32 $v1,$v1,0x0
|
||||
/* 5a74: 03e00008 */ jr $ra
|
||||
/* 5a78: 0002103f */ dsra32 $v0,$v0,0x0
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func00005a7c
|
||||
/* 5a7c: 444ef800 */ cfc1 $t6,$31
|
||||
/* 5a80: 24020001 */ addiu $v0,$zero,0x1
|
||||
/* 5a84: 44c2f800 */ ctc1 $v0,$31
|
||||
/* 5a88: 00000000 */ nop
|
||||
/* 5a8c: 46006125 */ cvt.l.s $f4,$f12
|
||||
/* 5a90: 4442f800 */ cfc1 $v0,$31
|
||||
/* 5a94: 00000000 */ nop
|
||||
/* 5a98: 30410004 */ andi $at,$v0,0x4
|
||||
/* 5a9c: 30420078 */ andi $v0,$v0,0x78
|
||||
/* 5aa0: 10400014 */ beqz $v0,.L00005af4
|
||||
/* 5aa4: 3c015f00 */ lui $at,0x5f00
|
||||
/* 5aa8: 44812000 */ mtc1 $at,$f4
|
||||
/* 5aac: 24020001 */ addiu $v0,$zero,0x1
|
||||
/* 5ab0: 46046101 */ sub.s $f4,$f12,$f4
|
||||
/* 5ab4: 44c2f800 */ ctc1 $v0,$31
|
||||
/* 5ab8: 00000000 */ nop
|
||||
/* 5abc: 46002125 */ cvt.l.s $f4,$f4
|
||||
/* 5ac0: 4442f800 */ cfc1 $v0,$31
|
||||
/* 5ac4: 00000000 */ nop
|
||||
/* 5ac8: 30410004 */ andi $at,$v0,0x4
|
||||
/* 5acc: 30420078 */ andi $v0,$v0,0x78
|
||||
/* 5ad0: 14400006 */ bnez $v0,.L00005aec
|
||||
/* 5ad4: 00000000 */ nop
|
||||
/* 5ad8: 3c0f8000 */ lui $t7,0x8000
|
||||
/* 5adc: 000f783c */ dsll32 $t7,$t7,0x0
|
||||
/* 5ae0: 44222000 */ dmfc1 $v0,$f4
|
||||
/* 5ae4: 10000007 */ b .L00005b04
|
||||
/* 5ae8: 004f1025 */ or $v0,$v0,$t7
|
||||
.L00005aec:
|
||||
/* 5aec: 10000005 */ b .L00005b04
|
||||
/* 5af0: 2402ffff */ addiu $v0,$zero,-1
|
||||
.L00005af4:
|
||||
/* 5af4: 44222000 */ dmfc1 $v0,$f4
|
||||
/* 5af8: 00000000 */ nop
|
||||
/* 5afc: 0440fffb */ bltz $v0,.L00005aec
|
||||
/* 5b00: 00000000 */ nop
|
||||
.L00005b04:
|
||||
/* 5b04: 44cef800 */ ctc1 $t6,$31
|
||||
/* 5b08: 0002183c */ dsll32 $v1,$v0,0x0
|
||||
/* 5b0c: 0003183f */ dsra32 $v1,$v1,0x0
|
||||
/* 5b10: 03e00008 */ jr $ra
|
||||
/* 5b14: 0002103f */ dsra32 $v0,$v0,0x0
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func00005b18
|
||||
/* 5b18: afa40000 */ sw $a0,0x0($sp)
|
||||
/* 5b1c: afa50004 */ sw $a1,0x4($sp)
|
||||
/* 5b20: dfae0000 */ ld $t6,0x0($sp)
|
||||
/* 5b24: 44ae2000 */ dmtc1 $t6,$f4
|
||||
/* 5b28: 03e00008 */ jr $ra
|
||||
/* 5b2c: 46a02021 */ cvt.d.l $f0,$f4
|
||||
);
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func00005b30
|
||||
/* 5b30: afa40000 */ sw $a0,0x0($sp)
|
||||
/* 5b34: afa50004 */ sw $a1,0x4($sp)
|
||||
/* 5b38: dfae0000 */ ld $t6,0x0($sp)
|
||||
/* 5b3c: 44ae2000 */ dmtc1 $t6,$f4
|
||||
/* 5b40: 05c10005 */ bgez $t6,.L00005b58
|
||||
/* 5b44: 46a02020 */ cvt.s.l $f0,$f4
|
||||
/* 5b48: 3c014f80 */ lui $at,0x4f80
|
||||
/* 5b4c: 44813000 */ mtc1 $at,$f6
|
||||
/* 5b50: 00000000 */ nop
|
||||
/* 5b54: 46060000 */ add.s $f0,$f0,$f6
|
||||
.L00005b58:
|
||||
/* 5b58: 03e00008 */ jr $ra
|
||||
/* 5b5c: 00000000 */ nop
|
||||
);
|
||||
|
|
@ -2995,7 +2995,7 @@ glabel func00025c74
|
|||
/* 25d94: 46085282 */ mul.s $f10,$f10,$f8
|
||||
/* 25d98: e7a80078 */ swc1 $f8,0x78($sp)
|
||||
/* 25d9c: 46062202 */ mul.s $f8,$f4,$f6
|
||||
/* 25da0: 0c001698 */ jal func00005a60
|
||||
/* 25da0: 0c001698 */ jal __f_to_ll
|
||||
/* 25da4: 46085301 */ sub.s $f12,$f10,$f8
|
||||
/* 25da8: c7a40084 */ lwc1 $f4,0x84($sp)
|
||||
/* 25dac: c7a60070 */ lwc1 $f6,0x70($sp)
|
||||
|
|
@ -3005,7 +3005,7 @@ glabel func00025c74
|
|||
/* 25dbc: c7a4007c */ lwc1 $f4,0x7c($sp)
|
||||
/* 25dc0: afa3005c */ sw $v1,0x5c($sp)
|
||||
/* 25dc4: 46044182 */ mul.s $f6,$f8,$f4
|
||||
/* 25dc8: 0c001698 */ jal func00005a60
|
||||
/* 25dc8: 0c001698 */ jal __f_to_ll
|
||||
/* 25dcc: 46065301 */ sub.s $f12,$f10,$f6
|
||||
/* 25dd0: c7a8007c */ lwc1 $f8,0x7c($sp)
|
||||
/* 25dd4: c7a40074 */ lwc1 $f4,0x74($sp)
|
||||
|
|
@ -3015,7 +3015,7 @@ glabel func00025c74
|
|||
/* 25de4: c7a80080 */ lwc1 $f8,0x80($sp)
|
||||
/* 25de8: afa30064 */ sw $v1,0x64($sp)
|
||||
/* 25dec: 46083102 */ mul.s $f4,$f6,$f8
|
||||
/* 25df0: 0c001698 */ jal func00005a60
|
||||
/* 25df0: 0c001698 */ jal __f_to_ll
|
||||
/* 25df4: 46045301 */ sub.s $f12,$f10,$f4
|
||||
/* 25df8: afa20068 */ sw $v0,0x68($sp)
|
||||
/* 25dfc: afa3006c */ sw $v1,0x6c($sp)
|
||||
|
|
@ -3066,19 +3066,19 @@ glabel func00025c74
|
|||
.L00025eb0:
|
||||
/* 25eb0: 8fa40068 */ lw $a0,0x68($sp)
|
||||
.L00025eb4:
|
||||
/* 25eb4: 0c0016c6 */ jal func00005b18
|
||||
/* 25eb4: 0c0016c6 */ jal __ll_to_d
|
||||
/* 25eb8: 8fa5006c */ lw $a1,0x6c($sp)
|
||||
/* 25ebc: f7a00020 */ sdc1 $f0,0x20($sp)
|
||||
/* 25ec0: 8fa40058 */ lw $a0,0x58($sp)
|
||||
/* 25ec4: 0c0016c6 */ jal func00005b18
|
||||
/* 25ec4: 0c0016c6 */ jal __ll_to_d
|
||||
/* 25ec8: 8fa5005c */ lw $a1,0x5c($sp)
|
||||
/* 25ecc: 8fa40050 */ lw $a0,0x50($sp)
|
||||
/* 25ed0: 8fa50054 */ lw $a1,0x54($sp)
|
||||
/* 25ed4: 0c0016c6 */ jal func00005b18
|
||||
/* 25ed4: 0c0016c6 */ jal __ll_to_d
|
||||
/* 25ed8: f7a00028 */ sdc1 $f0,0x28($sp)
|
||||
/* 25edc: 8fa40060 */ lw $a0,0x60($sp)
|
||||
/* 25ee0: 8fa50064 */ lw $a1,0x64($sp)
|
||||
/* 25ee4: 0c0016c6 */ jal func00005b18
|
||||
/* 25ee4: 0c0016c6 */ jal __ll_to_d
|
||||
/* 25ee8: f7a00030 */ sdc1 $f0,0x30($sp)
|
||||
/* 25eec: c7a80090 */ lwc1 $f8,0x90($sp)
|
||||
/* 25ef0: d7a40020 */ ldc1 $f4,0x20($sp)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,67 @@
|
|||
long long __f_to_ll(float f)
|
||||
{
|
||||
return f;
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel __f_to_ull
|
||||
/* 5a7c: 444ef800 */ cfc1 $t6,$31
|
||||
/* 5a80: 24020001 */ addiu $v0,$zero,0x1
|
||||
/* 5a84: 44c2f800 */ ctc1 $v0,$31
|
||||
/* 5a88: 00000000 */ nop
|
||||
/* 5a8c: 46006125 */ cvt.l.s $f4,$f12
|
||||
/* 5a90: 4442f800 */ cfc1 $v0,$31
|
||||
/* 5a94: 00000000 */ nop
|
||||
/* 5a98: 30410004 */ andi $at,$v0,0x4
|
||||
/* 5a9c: 30420078 */ andi $v0,$v0,0x78
|
||||
/* 5aa0: 10400014 */ beqz $v0,.L00005af4
|
||||
/* 5aa4: 3c015f00 */ lui $at,0x5f00
|
||||
/* 5aa8: 44812000 */ mtc1 $at,$f4
|
||||
/* 5aac: 24020001 */ addiu $v0,$zero,0x1
|
||||
/* 5ab0: 46046101 */ sub.s $f4,$f12,$f4
|
||||
/* 5ab4: 44c2f800 */ ctc1 $v0,$31
|
||||
/* 5ab8: 00000000 */ nop
|
||||
/* 5abc: 46002125 */ cvt.l.s $f4,$f4
|
||||
/* 5ac0: 4442f800 */ cfc1 $v0,$31
|
||||
/* 5ac4: 00000000 */ nop
|
||||
/* 5ac8: 30410004 */ andi $at,$v0,0x4
|
||||
/* 5acc: 30420078 */ andi $v0,$v0,0x78
|
||||
/* 5ad0: 14400006 */ bnez $v0,.L00005aec
|
||||
/* 5ad4: 00000000 */ nop
|
||||
/* 5ad8: 3c0f8000 */ lui $t7,0x8000
|
||||
/* 5adc: 000f783c */ dsll32 $t7,$t7,0x0
|
||||
/* 5ae0: 44222000 */ dmfc1 $v0,$f4
|
||||
/* 5ae4: 10000007 */ b .L00005b04
|
||||
/* 5ae8: 004f1025 */ or $v0,$v0,$t7
|
||||
.L00005aec:
|
||||
/* 5aec: 10000005 */ b .L00005b04
|
||||
/* 5af0: 2402ffff */ addiu $v0,$zero,-1
|
||||
.L00005af4:
|
||||
/* 5af4: 44222000 */ dmfc1 $v0,$f4
|
||||
/* 5af8: 00000000 */ nop
|
||||
/* 5afc: 0440fffb */ bltz $v0,.L00005aec
|
||||
/* 5b00: 00000000 */ nop
|
||||
.L00005b04:
|
||||
/* 5b04: 44cef800 */ ctc1 $t6,$31
|
||||
/* 5b08: 0002183c */ dsll32 $v1,$v0,0x0
|
||||
/* 5b0c: 0003183f */ dsra32 $v1,$v1,0x0
|
||||
/* 5b10: 03e00008 */ jr $ra
|
||||
/* 5b14: 0002103f */ dsra32 $v0,$v0,0x0
|
||||
);
|
||||
|
||||
// Mismatch: Goal loads 0x80000000 then shifts it left by 32,
|
||||
// while the below stores it in .rodata and loads it.
|
||||
//unsigned long long __f_to_ull(float f)
|
||||
//{
|
||||
// return f;
|
||||
//}
|
||||
|
||||
double __ll_to_d(long long s)
|
||||
{
|
||||
return s;
|
||||
}
|
||||
|
||||
float __ull_to_f(unsigned long long u)
|
||||
{
|
||||
return u;
|
||||
}
|
||||
Loading…
Reference in New Issue