1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-02 17:44:25 +00:00

Decompile a bunch of small files (#160)

* Decompile a bunch of small files

* Rename dacrate to dacRate

* Run format.sh

* Minor fixes in PR #160
This commit is contained in:
Random 2020-05-25 23:18:14 +02:00 committed by GitHub
parent 13b1dc03bb
commit 3d050f2861
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
54 changed files with 412 additions and 1029 deletions

View file

@ -103,12 +103,19 @@ build/src/code/code_801068B0.o: OPTFLAGS := -g
build/src/code/code_80106860.o: OPTFLAGS := -g
build/src/code/code_801067F0.o: OPTFLAGS := -g
# Todo: split libultra_code into libultra_code_O1, etc..
build/src/libultra_code/sqrt.o: OPTFLAGS := -O2 -g3
build/src/libultra_code/absf.o: OPTFLAGS := -O2 -g3
build/src/libultra_code/osSetTimer.o: OPTFLAGS := -O1
build/src/libultra_code/osStopTimer.o: OPTFLAGS := -O1
build/src/libultra_boot_O1/%.o: CC := $(CC_OLD)
build/src/libultra_boot_O2/%.o: CC := $(CC_OLD)
build/src/libultra_code/%.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
build/src/code/jpegutils.o: CC := python3 tools/asm_processor/build.py $(CC_OLD) -- $(AS) $(ASFLAGS) --
build/src/boot/%.o: CC := python3 tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
build/src/code/%.o: CC := python3 tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
build/src/overlays/actors/%.o: CC := python3 tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --

View file

@ -2099,7 +2099,7 @@ glabel L800D990C
/* B50B64 800D99C4 29010002 */ slti $at, $t0, 2
/* B50B68 800D99C8 14200498 */ bnez $at, .L800DAC2C
/* B50B6C 800D99CC 27A40290 */ addiu $a0, $sp, 0x290
/* B50B70 800D99D0 0C03F096 */ jal func_800FC258
/* B50B70 800D99D0 0C03F096 */ jal MtxConv_L2F
/* B50B74 800D99D4 02802825 */ move $a1, $s4
/* B50B78 800D99D8 8E6800BC */ lw $t0, 0xbc($s3)
/* B50B7C 800D99DC 11000004 */ beqz $t0, .L800D99F0

View file

@ -2201,7 +2201,7 @@ glabel func_800DFBF8
/* B56DEC 800DFC4C 8C590000 */ lw $t9, ($v0)
/* B56DF0 800DFC50 AFA20068 */ sw $v0, 0x68($sp)
/* B56DF4 800DFC54 A6D9284A */ sh $t9, 0x284a($s6)
/* B56DF8 800DFC58 0C040FFC */ jal func_80103FF0
/* B56DF8 800DFC58 0C040FFC */ jal osAiSetFrequency
/* B56DFC 800DFC5C 3324FFFF */ andi $a0, $t9, 0xffff
/* B56E00 800DFC60 96C3284A */ lhu $v1, 0x284a($s6)
/* B56E04 800DFC64 8EC92964 */ lw $t1, 0x2964($s6)

View file

@ -1,175 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel func_800FCB50
/* B73CF0 800FCB50 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B73CF4 800FCB54 AFBF0014 */ sw $ra, 0x14($sp)
/* B73CF8 800FCB58 0C001114 */ jal bzero
/* B73CFC 800FCB5C 24050018 */ li $a1, 24
/* B73D00 800FCB60 8FBF0014 */ lw $ra, 0x14($sp)
/* B73D04 800FCB64 27BD0018 */ addiu $sp, $sp, 0x18
/* B73D08 800FCB68 03E00008 */ jr $ra
/* B73D0C 800FCB6C 00000000 */ nop
glabel func_800FCB70
/* B73D10 800FCB70 03E00008 */ jr $ra
/* B73D14 800FCB74 00000000 */ nop
glabel func_800FCB78
/* B73D18 800FCB78 A480000C */ sh $zero, 0xc($a0)
/* B73D1C 800FCB7C 03E00008 */ jr $ra
/* B73D20 800FCB80 A4800012 */ sh $zero, 0x12($a0)
glabel func_800FCB84
/* B73D24 800FCB84 AFA50004 */ sw $a1, 4($sp)
/* B73D28 800FCB88 948E0000 */ lhu $t6, ($a0)
/* B73D2C 800FCB8C 30A5FFFF */ andi $a1, $a1, 0xffff
/* B73D30 800FCB90 01C51026 */ xor $v0, $t6, $a1
/* B73D34 800FCB94 03E00008 */ jr $ra
/* B73D38 800FCB98 2C420001 */ sltiu $v0, $v0, 1
glabel func_800FCB9C
/* B73D3C 800FCB9C AFA50004 */ sw $a1, 4($sp)
/* B73D40 800FCBA0 948E0000 */ lhu $t6, ($a0)
/* B73D44 800FCBA4 30A5FFFF */ andi $a1, $a1, 0xffff
/* B73D48 800FCBA8 01C57824 */ and $t7, $t6, $a1
/* B73D4C 800FCBAC 01E51026 */ xor $v0, $t7, $a1
/* B73D50 800FCBB0 03E00008 */ jr $ra
/* B73D54 800FCBB4 2C420001 */ sltiu $v0, $v0, 1
glabel func_800FCBB8
/* B73D58 800FCBB8 AFA50004 */ sw $a1, 4($sp)
/* B73D5C 800FCBBC 948E000C */ lhu $t6, 0xc($a0)
/* B73D60 800FCBC0 30A5FFFF */ andi $a1, $a1, 0xffff
/* B73D64 800FCBC4 01C57824 */ and $t7, $t6, $a1
/* B73D68 800FCBC8 01E51026 */ xor $v0, $t7, $a1
/* B73D6C 800FCBCC 03E00008 */ jr $ra
/* B73D70 800FCBD0 2C420001 */ sltiu $v0, $v0, 1
glabel func_800FCBD4
/* B73D74 800FCBD4 AFA50004 */ sw $a1, 4($sp)
/* B73D78 800FCBD8 948E0012 */ lhu $t6, 0x12($a0)
/* B73D7C 800FCBDC 30A5FFFF */ andi $a1, $a1, 0xffff
/* B73D80 800FCBE0 01C57824 */ and $t7, $t6, $a1
/* B73D84 800FCBE4 01E51026 */ xor $v0, $t7, $a1
/* B73D88 800FCBE8 03E00008 */ jr $ra
/* B73D8C 800FCBEC 2C420001 */ sltiu $v0, $v0, 1
glabel func_800FCBF0
/* B73D90 800FCBF0 03E00008 */ jr $ra
/* B73D94 800FCBF4 94820000 */ lhu $v0, ($a0)
glabel func_800FCBF8
/* B73D98 800FCBF8 03E00008 */ jr $ra
/* B73D9C 800FCBFC 9482000C */ lhu $v0, 0xc($a0)
glabel func_800FCC00
/* B73DA0 800FCC00 03E00008 */ jr $ra
/* B73DA4 800FCC04 80820002 */ lb $v0, 2($a0)
glabel func_800FCC08
/* B73DA8 800FCC08 03E00008 */ jr $ra
/* B73DAC 800FCC0C 80820003 */ lb $v0, 3($a0)
glabel func_800FCC10
/* B73DB0 800FCC10 A0850014 */ sb $a1, 0x14($a0)
/* B73DB4 800FCC14 03E00008 */ jr $ra
/* B73DB8 800FCC18 A0860015 */ sb $a2, 0x15($a0)
glabel func_800FCC1C
/* B73DBC 800FCC1C 03E00008 */ jr $ra
/* B73DC0 800FCC20 80820014 */ lb $v0, 0x14($a0)
glabel func_800FCC24
/* B73DC4 800FCC24 03E00008 */ jr $ra
/* B73DC8 800FCC28 80820015 */ lb $v0, 0x15($a0)
glabel func_800FCC2C
/* B73DCC 800FCC2C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B73DD0 800FCC30 AFBF0014 */ sw $ra, 0x14($sp)
/* B73DD4 800FCC34 0C03F307 */ jal func_800FCC1C
/* B73DD8 800FCC38 00000000 */ nop
/* B73DDC 800FCC3C 8FBF0014 */ lw $ra, 0x14($sp)
/* B73DE0 800FCC40 27BD0018 */ addiu $sp, $sp, 0x18
/* B73DE4 800FCC44 03E00008 */ jr $ra
/* B73DE8 800FCC48 00000000 */ nop
glabel func_800FCC4C
/* B73DEC 800FCC4C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B73DF0 800FCC50 AFBF0014 */ sw $ra, 0x14($sp)
/* B73DF4 800FCC54 0C03F309 */ jal func_800FCC24
/* B73DF8 800FCC58 00000000 */ nop
/* B73DFC 800FCC5C 8FBF0014 */ lw $ra, 0x14($sp)
/* B73E00 800FCC60 27BD0018 */ addiu $sp, $sp, 0x18
/* B73E04 800FCC64 03E00008 */ jr $ra
/* B73E08 800FCC68 00000000 */ nop
glabel func_800FCC6C
/* B73E0C 800FCC6C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B73E10 800FCC70 AFBF0014 */ sw $ra, 0x14($sp)
/* B73E14 800FCC74 0C03F300 */ jal func_800FCC00
/* B73E18 800FCC78 AFA40020 */ sw $a0, 0x20($sp)
/* B73E1C 800FCC7C 8FA40020 */ lw $a0, 0x20($sp)
/* B73E20 800FCC80 0C03F302 */ jal func_800FCC08
/* B73E24 800FCC84 AFA2001C */ sw $v0, 0x1c($sp)
/* B73E28 800FCC88 8FA3001C */ lw $v1, 0x1c($sp)
/* B73E2C 800FCC8C 28610008 */ slti $at, $v1, 8
/* B73E30 800FCC90 14200007 */ bnez $at, .L800FCCB0
/* B73E34 800FCC94 28610043 */ slti $at, $v1, 0x43
/* B73E38 800FCC98 10200003 */ beqz $at, .L800FCCA8
/* B73E3C 800FCC9C 00000000 */ nop
/* B73E40 800FCCA0 1000000D */ b .L800FCCD8
/* B73E44 800FCCA4 2465FFF9 */ addiu $a1, $v1, -7
.L800FCCA8:
/* B73E48 800FCCA8 1000000B */ b .L800FCCD8
/* B73E4C 800FCCAC 2405003C */ li $a1, 60
.L800FCCB0:
/* B73E50 800FCCB0 2861FFF9 */ slti $at, $v1, -7
/* B73E54 800FCCB4 10200008 */ beqz $at, .L800FCCD8
/* B73E58 800FCCB8 00002825 */ move $a1, $zero
/* B73E5C 800FCCBC 2861FFBE */ slti $at, $v1, -0x42
/* B73E60 800FCCC0 14200003 */ bnez $at, .L800FCCD0
/* B73E64 800FCCC4 00000000 */ nop
/* B73E68 800FCCC8 10000003 */ b .L800FCCD8
/* B73E6C 800FCCCC 24650007 */ addiu $a1, $v1, 7
.L800FCCD0:
/* B73E70 800FCCD0 10000001 */ b .L800FCCD8
/* B73E74 800FCCD4 2405FFC4 */ li $a1, -60
.L800FCCD8:
/* B73E78 800FCCD8 28410008 */ slti $at, $v0, 8
/* B73E7C 800FCCDC 14200007 */ bnez $at, .L800FCCFC
/* B73E80 800FCCE0 28410043 */ slti $at, $v0, 0x43
/* B73E84 800FCCE4 10200003 */ beqz $at, .L800FCCF4
/* B73E88 800FCCE8 00000000 */ nop
/* B73E8C 800FCCEC 1000000D */ b .L800FCD24
/* B73E90 800FCCF0 2446FFF9 */ addiu $a2, $v0, -7
.L800FCCF4:
/* B73E94 800FCCF4 1000000B */ b .L800FCD24
/* B73E98 800FCCF8 2406003C */ li $a2, 60
.L800FCCFC:
/* B73E9C 800FCCFC 2841FFF9 */ slti $at, $v0, -7
/* B73EA0 800FCD00 10200008 */ beqz $at, .L800FCD24
/* B73EA4 800FCD04 00003025 */ move $a2, $zero
/* B73EA8 800FCD08 2841FFBE */ slti $at, $v0, -0x42
/* B73EAC 800FCD0C 14200003 */ bnez $at, .L800FCD1C
/* B73EB0 800FCD10 00000000 */ nop
/* B73EB4 800FCD14 10000003 */ b .L800FCD24
/* B73EB8 800FCD18 24460007 */ addiu $a2, $v0, 7
.L800FCD1C:
/* B73EBC 800FCD1C 10000001 */ b .L800FCD24
/* B73EC0 800FCD20 2406FFC4 */ li $a2, -60
.L800FCD24:
/* B73EC4 800FCD24 0C03F304 */ jal func_800FCC10
/* B73EC8 800FCD28 8FA40020 */ lw $a0, 0x20($sp)
/* B73ECC 800FCD2C 8FBF0014 */ lw $ra, 0x14($sp)
/* B73ED0 800FCD30 27BD0020 */ addiu $sp, $sp, 0x20
/* B73ED4 800FCD34 03E00008 */ jr $ra
/* B73ED8 800FCD38 00000000 */ nop

View file

@ -9,16 +9,6 @@
.align 4
glabel osSpTaskYield
/* B78640 801014A0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B78644 801014A4 AFBF0014 */ sw $ra, 0x14($sp)
/* B78648 801014A8 0C041920 */ jal __osSpSetStatus
/* B7864C 801014AC 24040400 */ li $a0, 1024
/* B78650 801014B0 8FBF0014 */ lw $ra, 0x14($sp)
/* B78654 801014B4 27BD0018 */ addiu $sp, $sp, 0x18
/* B78658 801014B8 03E00008 */ jr $ra
/* B7865C 801014BC 00000000 */ nop
glabel func_801014C0
/* B78660 801014C0 27BDFFE0 */ addiu $sp, $sp, -0x20
/* B78664 801014C4 AFBF001C */ sw $ra, 0x1c($sp)

View file

@ -1,74 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel osStopTimer
/* B794D0 80102330 27BDFFD0 */ addiu $sp, $sp, -0x30
/* B794D4 80102334 AFA40030 */ sw $a0, 0x30($sp)
/* B794D8 80102338 8FAE0030 */ lw $t6, 0x30($sp)
/* B794DC 8010233C AFBF001C */ sw $ra, 0x1c($sp)
/* B794E0 80102340 AFB00018 */ sw $s0, 0x18($sp)
/* B794E4 80102344 8DCF0000 */ lw $t7, ($t6)
/* B794E8 80102348 15E00003 */ bnez $t7, .L80102358
/* B794EC 8010234C 00000000 */ nop
/* B794F0 80102350 1000002C */ b .L80102404
/* B794F4 80102354 2402FFFF */ li $v0, -1
.L80102358:
/* B794F8 80102358 0C001CA0 */ jal __osDisableInt
/* B794FC 8010235C 00000000 */ nop
/* B79500 80102360 8FB80030 */ lw $t8, 0x30($sp)
/* B79504 80102364 3C088001 */ lui $t0, %hi(__osTimerList) # $t0, 0x8001
/* B79508 80102368 8D08ADF0 */ lw $t0, %lo(__osTimerList)($t0)
/* B7950C 8010236C 8F190000 */ lw $t9, ($t8)
/* B79510 80102370 00408025 */ move $s0, $v0
/* B79514 80102374 1328000D */ beq $t9, $t0, .L801023AC
/* B79518 80102378 AFB90028 */ sw $t9, 0x28($sp)
/* B7951C 8010237C 27290010 */ addiu $t1, $t9, 0x10
/* B79520 80102380 AFA90024 */ sw $t1, 0x24($sp)
/* B79524 80102384 8D2B0004 */ lw $t3, 4($t1)
/* B79528 80102388 8F0D0014 */ lw $t5, 0x14($t8)
/* B7952C 8010238C 8D2A0000 */ lw $t2, ($t1)
/* B79530 80102390 8F0C0010 */ lw $t4, 0x10($t8)
/* B79534 80102394 016D7821 */ addu $t7, $t3, $t5
/* B79538 80102398 01ED082B */ sltu $at, $t7, $t5
/* B7953C 8010239C 002A7021 */ addu $t6, $at, $t2
/* B79540 801023A0 01CC7021 */ addu $t6, $t6, $t4
/* B79544 801023A4 AD2E0000 */ sw $t6, ($t1)
/* B79548 801023A8 AD2F0004 */ sw $t7, 4($t1)
.L801023AC:
/* B7954C 801023AC 8FA80030 */ lw $t0, 0x30($sp)
/* B79550 801023B0 3C0F8001 */ lui $t7, %hi(__osTimerList) # $t7, 0x8001
/* B79554 801023B4 8D190000 */ lw $t9, ($t0)
/* B79558 801023B8 8D180004 */ lw $t8, 4($t0)
/* B7955C 801023BC AF190000 */ sw $t9, ($t8)
/* B79560 801023C0 8FAA0030 */ lw $t2, 0x30($sp)
/* B79564 801023C4 8D4B0004 */ lw $t3, 4($t2)
/* B79568 801023C8 8D4C0000 */ lw $t4, ($t2)
/* B7956C 801023CC AD8B0004 */ sw $t3, 4($t4)
/* B79570 801023D0 8FAD0030 */ lw $t5, 0x30($sp)
/* B79574 801023D4 ADA00000 */ sw $zero, ($t5)
/* B79578 801023D8 8FAE0030 */ lw $t6, 0x30($sp)
/* B7957C 801023DC ADC00004 */ sw $zero, 4($t6)
/* B79580 801023E0 8DEFADF0 */ lw $t7, %lo(__osTimerList)($t7)
/* B79584 801023E4 8DE90000 */ lw $t1, ($t7)
/* B79588 801023E8 152F0003 */ bne $t1, $t7, .L801023F8
/* B7958C 801023EC 00000000 */ nop
/* B79590 801023F0 0C001BC0 */ jal __osSetCompare
/* B79594 801023F4 00002025 */ move $a0, $zero
.L801023F8:
/* B79598 801023F8 0C001CBC */ jal __osRestoreInt
/* B7959C 801023FC 02002025 */ move $a0, $s0
/* B795A0 80102400 00001025 */ move $v0, $zero
.L80102404:
/* B795A4 80102404 8FBF001C */ lw $ra, 0x1c($sp)
/* B795A8 80102408 8FB00018 */ lw $s0, 0x18($sp)
/* B795AC 8010240C 27BD0030 */ addiu $sp, $sp, 0x30
/* B795B0 80102410 03E00008 */ jr $ra
/* B795B4 80102414 00000000 */ nop

View file

@ -1,251 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel func_80103DC0
/* B7AF60 80103DC0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B7AF64 80103DC4 AFBF0014 */ sw $ra, 0x14($sp)
/* B7AF68 80103DC8 0C04191C */ jal __osSpGetStatus
/* B7AF6C 80103DCC AFA40018 */ sw $a0, 0x18($sp)
/* B7AF70 80103DD0 304E0100 */ andi $t6, $v0, 0x100
/* B7AF74 80103DD4 11C00003 */ beqz $t6, .L80103DE4
/* B7AF78 80103DD8 8FA40018 */ lw $a0, 0x18($sp)
/* B7AF7C 80103DDC 10000002 */ b .L80103DE8
/* B7AF80 80103DE0 24030001 */ li $v1, 1
.L80103DE4:
/* B7AF84 80103DE4 00001825 */ move $v1, $zero
.L80103DE8:
/* B7AF88 80103DE8 304F0080 */ andi $t7, $v0, 0x80
/* B7AF8C 80103DEC 51E00008 */ beql $t7, $zero, .L80103E10
/* B7AF90 80103DF0 8FBF0014 */ lw $ra, 0x14($sp)
/* B7AF94 80103DF4 8C980004 */ lw $t8, 4($a0)
/* B7AF98 80103DF8 2401FFFD */ li $at, -3
/* B7AF9C 80103DFC 0303C825 */ or $t9, $t8, $v1
/* B7AFA0 80103E00 AC990004 */ sw $t9, 4($a0)
/* B7AFA4 80103E04 03214824 */ and $t1, $t9, $at
/* B7AFA8 80103E08 AC890004 */ sw $t1, 4($a0)
/* B7AFAC 80103E0C 8FBF0014 */ lw $ra, 0x14($sp)
.L80103E10:
/* B7AFB0 80103E10 27BD0018 */ addiu $sp, $sp, 0x18
/* B7AFB4 80103E14 00601025 */ move $v0, $v1
/* B7AFB8 80103E18 03E00008 */ jr $ra
/* B7AFBC 80103E1C 00000000 */ nop
glabel func_80103E20
/* B7AFC0 80103E20 27BDFFB8 */ addiu $sp, $sp, -0x48
/* B7AFC4 80103E24 AFB00018 */ sw $s0, 0x18($sp)
/* B7AFC8 80103E28 00808025 */ move $s0, $a0
/* B7AFCC 80103E2C AFBF001C */ sw $ra, 0x1c($sp)
/* B7AFD0 80103E30 AFA5004C */ sw $a1, 0x4c($sp)
/* B7AFD4 80103E34 AFA60050 */ sw $a2, 0x50($sp)
/* B7AFD8 80103E38 AFA70054 */ sw $a3, 0x54($sp)
/* B7AFDC 80103E3C 27A60058 */ addiu $a2, $sp, 0x58
/* B7AFE0 80103E40 27A50054 */ addiu $a1, $sp, 0x54
/* B7AFE4 80103E44 0C041058 */ jal func_80104160
/* B7AFE8 80103E48 27A40050 */ addiu $a0, $sp, 0x50
/* B7AFEC 80103E4C 3C018013 */ lui $at, %hi(D_80134D10)
/* B7AFF0 80103E50 C7AC004C */ lwc1 $f12, 0x4c($sp)
/* B7AFF4 80103E54 C4244D10 */ lwc1 $f4, %lo(D_80134D10)($at)
/* B7AFF8 80103E58 46046302 */ mul.s $f12, $f12, $f4
/* B7AFFC 80103E5C 0C0400A4 */ jal sinf
/* B7B000 80103E60 E7AC004C */ swc1 $f12, 0x4c($sp)
/* B7B004 80103E64 C7AC004C */ lwc1 $f12, 0x4c($sp)
/* B7B008 80103E68 0C041184 */ jal cosf
/* B7B00C 80103E6C E7A00044 */ swc1 $f0, 0x44($sp)
/* B7B010 80103E70 C7AC0050 */ lwc1 $f12, 0x50($sp)
/* B7B014 80103E74 C7A80054 */ lwc1 $f8, 0x54($sp)
/* B7B018 80103E78 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B7B01C 80103E7C 44813000 */ mtc1 $at, $f6
/* B7B020 80103E80 46086282 */ mul.s $f10, $f12, $f8
/* B7B024 80103E84 C7A40058 */ lwc1 $f4, 0x58($sp)
/* B7B028 80103E88 46003081 */ sub.s $f2, $f6, $f0
/* B7B02C 80103E8C 02002025 */ move $a0, $s0
/* B7B030 80103E90 E7A00040 */ swc1 $f0, 0x40($sp)
/* B7B034 80103E94 46025482 */ mul.s $f18, $f10, $f2
/* B7B038 80103E98 00000000 */ nop
/* B7B03C 80103E9C 46044182 */ mul.s $f6, $f8, $f4
/* B7B040 80103EA0 E7B2003C */ swc1 $f18, 0x3c($sp)
/* B7B044 80103EA4 46023282 */ mul.s $f10, $f6, $f2
/* B7B048 80103EA8 00000000 */ nop
/* B7B04C 80103EAC 460C2202 */ mul.s $f8, $f4, $f12
/* B7B050 80103EB0 E7AA0038 */ swc1 $f10, 0x38($sp)
/* B7B054 80103EB4 46024182 */ mul.s $f6, $f8, $f2
/* B7B058 80103EB8 0C0406D0 */ jal guMtxIdentF
/* B7B05C 80103EBC E7A60034 */ swc1 $f6, 0x34($sp)
/* B7B060 80103EC0 C7AE0044 */ lwc1 $f14, 0x44($sp)
/* B7B064 80103EC4 C7AA0050 */ lwc1 $f10, 0x50($sp)
/* B7B068 80103EC8 C7A40054 */ lwc1 $f4, 0x54($sp)
/* B7B06C 80103ECC C7A60058 */ lwc1 $f6, 0x58($sp)
/* B7B070 80103ED0 460E5002 */ mul.s $f0, $f10, $f14
/* B7B074 80103ED4 3C013F80 */ li $at, 0x3F800000 # 0.000000
/* B7B078 80103ED8 C7B00040 */ lwc1 $f16, 0x40($sp)
/* B7B07C 80103EDC 460E2202 */ mul.s $f8, $f4, $f14
/* B7B080 80103EE0 C7B2003C */ lwc1 $f18, 0x3c($sp)
/* B7B084 80103EE4 460E3102 */ mul.s $f4, $f6, $f14
/* B7B088 80103EE8 00000000 */ nop
/* B7B08C 80103EEC 460A5082 */ mul.s $f2, $f10, $f10
/* B7B090 80103EF0 E7A80028 */ swc1 $f8, 0x28($sp)
/* B7B094 80103EF4 44814000 */ mtc1 $at, $f8
/* B7B098 80103EF8 E7A40024 */ swc1 $f4, 0x24($sp)
/* B7B09C 80103EFC 46024181 */ sub.s $f6, $f8, $f2
/* B7B0A0 80103F00 46103102 */ mul.s $f4, $f6, $f16
/* B7B0A4 80103F04 46022280 */ add.s $f10, $f4, $f2
/* B7B0A8 80103F08 E60A0000 */ swc1 $f10, ($s0)
/* B7B0AC 80103F0C C7A80038 */ lwc1 $f8, 0x38($sp)
/* B7B0B0 80103F10 46004181 */ sub.s $f6, $f8, $f0
/* B7B0B4 80103F14 E6060024 */ swc1 $f6, 0x24($s0)
/* B7B0B8 80103F18 C7A40038 */ lwc1 $f4, 0x38($sp)
/* B7B0BC 80103F1C 44813000 */ mtc1 $at, $f6
/* B7B0C0 80103F20 46002280 */ add.s $f10, $f4, $f0
/* B7B0C4 80103F24 E60A0018 */ swc1 $f10, 0x18($s0)
/* B7B0C8 80103F28 C7A80054 */ lwc1 $f8, 0x54($sp)
/* B7B0CC 80103F2C 46084302 */ mul.s $f12, $f8, $f8
/* B7B0D0 80103F30 460C3101 */ sub.s $f4, $f6, $f12
/* B7B0D4 80103F34 46102282 */ mul.s $f10, $f4, $f16
/* B7B0D8 80103F38 460C5200 */ add.s $f8, $f10, $f12
/* B7B0DC 80103F3C E6080014 */ swc1 $f8, 0x14($s0)
/* B7B0E0 80103F40 C7A20034 */ lwc1 $f2, 0x34($sp)
/* B7B0E4 80103F44 C7A60028 */ lwc1 $f6, 0x28($sp)
/* B7B0E8 80103F48 46061100 */ add.s $f4, $f2, $f6
/* B7B0EC 80103F4C E6040020 */ swc1 $f4, 0x20($s0)
/* B7B0F0 80103F50 C7AA0028 */ lwc1 $f10, 0x28($sp)
/* B7B0F4 80103F54 44812000 */ mtc1 $at, $f4
/* B7B0F8 80103F58 460A1201 */ sub.s $f8, $f2, $f10
/* B7B0FC 80103F5C E6080008 */ swc1 $f8, 8($s0)
/* B7B100 80103F60 C7A60058 */ lwc1 $f6, 0x58($sp)
/* B7B104 80103F64 46063002 */ mul.s $f0, $f6, $f6
/* B7B108 80103F68 46002281 */ sub.s $f10, $f4, $f0
/* B7B10C 80103F6C 46105202 */ mul.s $f8, $f10, $f16
/* B7B110 80103F70 46004180 */ add.s $f6, $f8, $f0
/* B7B114 80103F74 E6060028 */ swc1 $f6, 0x28($s0)
/* B7B118 80103F78 C7A40024 */ lwc1 $f4, 0x24($sp)
/* B7B11C 80103F7C 46049281 */ sub.s $f10, $f18, $f4
/* B7B120 80103F80 E60A0010 */ swc1 $f10, 0x10($s0)
/* B7B124 80103F84 C7A80024 */ lwc1 $f8, 0x24($sp)
/* B7B128 80103F88 46089180 */ add.s $f6, $f18, $f8
/* B7B12C 80103F8C E6060004 */ swc1 $f6, 4($s0)
/* B7B130 80103F90 8FBF001C */ lw $ra, 0x1c($sp)
/* B7B134 80103F94 8FB00018 */ lw $s0, 0x18($sp)
/* B7B138 80103F98 27BD0048 */ addiu $sp, $sp, 0x48
/* B7B13C 80103F9C 03E00008 */ jr $ra
/* B7B140 80103FA0 00000000 */ nop
glabel guRotate
/* B7B144 80103FA4 27BDFFA0 */ addiu $sp, $sp, -0x60
/* B7B148 80103FA8 44856000 */ mtc1 $a1, $f12
/* B7B14C 80103FAC 44867000 */ mtc1 $a2, $f14
/* B7B150 80103FB0 C7A40070 */ lwc1 $f4, 0x70($sp)
/* B7B154 80103FB4 AFBF001C */ sw $ra, 0x1c($sp)
/* B7B158 80103FB8 AFA40060 */ sw $a0, 0x60($sp)
/* B7B15C 80103FBC 44056000 */ mfc1 $a1, $f12
/* B7B160 80103FC0 44067000 */ mfc1 $a2, $f14
/* B7B164 80103FC4 AFA7006C */ sw $a3, 0x6c($sp)
/* B7B168 80103FC8 27A40020 */ addiu $a0, $sp, 0x20
/* B7B16C 80103FCC 0C040F88 */ jal func_80103E20
/* B7B170 80103FD0 E7A40010 */ swc1 $f4, 0x10($sp)
/* B7B174 80103FD4 27A40020 */ addiu $a0, $sp, 0x20
/* B7B178 80103FD8 0C041938 */ jal func_801064E0
/* B7B17C 80103FDC 8FA50060 */ lw $a1, 0x60($sp)
/* B7B180 80103FE0 8FBF001C */ lw $ra, 0x1c($sp)
/* B7B184 80103FE4 27BD0060 */ addiu $sp, $sp, 0x60
/* B7B188 80103FE8 03E00008 */ jr $ra
/* B7B18C 80103FEC 00000000 */ nop
glabel func_80103FF0
/* B7B190 80103FF0 3C058001 */ lui $a1, %hi(osViClock)
/* B7B194 80103FF4 24A5ACF8 */ addiu $a1, %lo(osViClock) # addiu $a1, $a1, -0x5308
/* B7B198 80103FF8 8CAE0000 */ lw $t6, ($a1)
/* B7B19C 80103FFC 44844000 */ mtc1 $a0, $f8
/* B7B1A0 80104000 3C014F80 */ li $at, 0x4F800000 # 0.000000
/* B7B1A4 80104004 448E2000 */ mtc1 $t6, $f4
/* B7B1A8 80104008 468042A0 */ cvt.s.w $f10, $f8
/* B7B1AC 8010400C 04810004 */ bgez $a0, .L80104020
/* B7B1B0 80104010 468021A0 */ cvt.s.w $f6, $f4
/* B7B1B4 80104014 44818000 */ mtc1 $at, $f16
/* B7B1B8 80104018 00000000 */ nop
/* B7B1BC 8010401C 46105280 */ add.s $f10, $f10, $f16
.L80104020:
/* B7B1C0 80104020 460A3483 */ div.s $f18, $f6, $f10
/* B7B1C4 80104024 3C013F00 */ li $at, 0x3F000000 # 0.000000
/* B7B1C8 80104028 44812000 */ mtc1 $at, $f4
/* B7B1CC 8010402C 24030001 */ li $v1, 1
/* B7B1D0 80104030 3C014F00 */ lui $at, 0x4f00
/* B7B1D4 80104034 3C08A450 */ lui $t0, 0xa450
/* B7B1D8 80104038 3C0AA450 */ li $t2, 0xA4500000 # 0.000000
/* B7B1DC 8010403C 46049000 */ add.s $f0, $f18, $f4
/* B7B1E0 80104040 444FF800 */ cfc1 $t7, $31
/* B7B1E4 80104044 44C3F800 */ ctc1 $v1, $31
/* B7B1E8 80104048 00000000 */ nop
/* B7B1EC 8010404C 46000224 */ cvt.w.s $f8, $f0
/* B7B1F0 80104050 4443F800 */ cfc1 $v1, $31
/* B7B1F4 80104054 00000000 */ nop
/* B7B1F8 80104058 30630078 */ andi $v1, $v1, 0x78
/* B7B1FC 8010405C 50600013 */ beql $v1, $zero, .L801040AC
/* B7B200 80104060 44034000 */ mfc1 $v1, $f8
/* B7B204 80104064 44814000 */ mtc1 $at, $f8
/* B7B208 80104068 24030001 */ li $v1, 1
/* B7B20C 8010406C 46080201 */ sub.s $f8, $f0, $f8
/* B7B210 80104070 44C3F800 */ ctc1 $v1, $31
/* B7B214 80104074 00000000 */ nop
/* B7B218 80104078 46004224 */ cvt.w.s $f8, $f8
/* B7B21C 8010407C 4443F800 */ cfc1 $v1, $31
/* B7B220 80104080 00000000 */ nop
/* B7B224 80104084 30630078 */ andi $v1, $v1, 0x78
/* B7B228 80104088 14600005 */ bnez $v1, .L801040A0
/* B7B22C 8010408C 00000000 */ nop
/* B7B230 80104090 44034000 */ mfc1 $v1, $f8
/* B7B234 80104094 3C018000 */ lui $at, 0x8000
/* B7B238 80104098 10000007 */ b .L801040B8
/* B7B23C 8010409C 00611825 */ or $v1, $v1, $at
.L801040A0:
/* B7B240 801040A0 10000005 */ b .L801040B8
/* B7B244 801040A4 2403FFFF */ li $v1, -1
/* B7B248 801040A8 44034000 */ mfc1 $v1, $f8
.L801040AC:
/* B7B24C 801040AC 00000000 */ nop
/* B7B250 801040B0 0460FFFB */ bltz $v1, .L801040A0
/* B7B254 801040B4 00000000 */ nop
.L801040B8:
/* B7B258 801040B8 44CFF800 */ ctc1 $t7, $31
/* B7B25C 801040BC 2C610084 */ sltiu $at, $v1, 0x84
/* B7B260 801040C0 10200003 */ beqz $at, .L801040D0
/* B7B264 801040C4 2479FFFF */ addiu $t9, $v1, -1
/* B7B268 801040C8 03E00008 */ jr $ra
/* B7B26C 801040CC 2402FFFF */ li $v0, -1
.L801040D0:
/* B7B270 801040D0 24010042 */ li $at, 66
/* B7B274 801040D4 0061001B */ divu $zero, $v1, $at
/* B7B278 801040D8 00001012 */ mflo $v0
/* B7B27C 801040DC 305800FF */ andi $t8, $v0, 0xff
/* B7B280 801040E0 2B010011 */ slti $at, $t8, 0x11
/* B7B284 801040E4 14200002 */ bnez $at, .L801040F0
/* B7B288 801040E8 304400FF */ andi $a0, $v0, 0xff
/* B7B28C 801040EC 24040010 */ li $a0, 16
.L801040F0:
/* B7B290 801040F0 AD190010 */ sw $t9, 0x10($t0)
/* B7B294 801040F4 2489FFFF */ addiu $t1, $a0, -1
/* B7B298 801040F8 AD490014 */ sw $t1, 0x14($t2)
/* B7B29C 801040FC 8CAB0000 */ lw $t3, ($a1)
/* B7B2A0 80104100 0163001A */ div $zero, $t3, $v1
/* B7B2A4 80104104 00001012 */ mflo $v0
/* B7B2A8 80104108 14600002 */ bnez $v1, .L80104114
/* B7B2AC 8010410C 00000000 */ nop
/* B7B2B0 80104110 0007000D */ break 7
.L80104114:
/* B7B2B4 80104114 2401FFFF */ li $at, -1
/* B7B2B8 80104118 14610004 */ bne $v1, $at, .L8010412C
/* B7B2BC 8010411C 3C018000 */ lui $at, 0x8000
/* B7B2C0 80104120 15610002 */ bne $t3, $at, .L8010412C
/* B7B2C4 80104124 00000000 */ nop
/* B7B2C8 80104128 0006000D */ break 6
.L8010412C:
/* B7B2CC 8010412C 03E00008 */ jr $ra
/* B7B2D0 80104130 00000000 */ nop

View file

@ -118,7 +118,7 @@ glabel func_801045A4
/* B7B784 801045E4 0C041114 */ jal func_80104450
/* B7B788 801045E8 E7AA001C */ swc1 $f10, 0x1c($sp)
/* B7B78C 801045EC 27A40028 */ addiu $a0, $sp, 0x28
/* B7B790 801045F0 0C041938 */ jal func_801064E0
/* B7B790 801045F0 0C041938 */ jal guMtxF2L
/* B7B794 801045F4 8FA50068 */ lw $a1, 0x68($sp)
/* B7B798 801045F8 8FBF0024 */ lw $ra, 0x24($sp)
/* B7B79C 801045FC 27BD0068 */ addiu $sp, $sp, 0x68

View file

@ -1,114 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel func_80104B00
/* B7BCA0 80104B00 908E0016 */ lbu $t6, 0x16($a0)
/* B7BCA4 80104B04 24010002 */ li $at, 2
/* B7BCA8 80104B08 24020200 */ li $v0, 512
/* B7BCAC 80104B0C 15C10003 */ bne $t6, $at, .L80104B1C
/* B7BCB0 80104B10 24180006 */ li $t8, 6
/* B7BCB4 80104B14 10000001 */ b .L80104B1C
/* B7BCB8 80104B18 24020100 */ li $v0, 256
.L80104B1C:
/* B7BCBC 80104B1C 908F0017 */ lbu $t7, 0x17($a0)
/* B7BCC0 80104B20 94880014 */ lhu $t0, 0x14($a0)
/* B7BCC4 80104B24 24010033 */ li $at, 51
/* B7BCC8 80104B28 030F1823 */ subu $v1, $t8, $t7
/* B7BCCC 80104B2C 3079FFFF */ andi $t9, $v1, 0xffff
/* B7BCD0 80104B30 1501002D */ bne $t0, $at, .L80104BE8
/* B7BCD4 80104B34 03201825 */ move $v1, $t9
/* B7BCD8 80104B38 94890002 */ lhu $t1, 2($a0)
/* B7BCDC 80104B3C 00695007 */ srav $t2, $t1, $v1
/* B7BCE0 80104B40 3145FFFF */ andi $a1, $t2, 0xffff
/* B7BCE4 80104B44 0045001A */ div $zero, $v0, $a1
/* B7BCE8 80104B48 00005812 */ mflo $t3
/* B7BCEC 80104B4C 000B6080 */ sll $t4, $t3, 2
/* B7BCF0 80104B50 00056840 */ sll $t5, $a1, 1
/* B7BCF4 80104B54 31B8FFFF */ andi $t8, $t5, 0xffff
/* B7BCF8 80104B58 318EFFFF */ andi $t6, $t4, 0xffff
/* B7BCFC 80104B5C 01D80019 */ multu $t6, $t8
/* B7BD00 80104B60 A48A001C */ sh $t2, 0x1c($a0)
/* B7BD04 80104B64 240A07FF */ li $t2, 2047
/* B7BD08 80104B68 14A00002 */ bnez $a1, .L80104B74
/* B7BD0C 80104B6C 00000000 */ nop
/* B7BD10 80104B70 0007000D */ break 7
.L80104B74:
/* B7BD14 80104B74 2401FFFF */ li $at, -1
/* B7BD18 80104B78 14A10004 */ bne $a1, $at, .L80104B8C
/* B7BD1C 80104B7C 3C018000 */ lui $at, 0x8000
/* B7BD20 80104B80 14410002 */ bne $v0, $at, .L80104B8C
/* B7BD24 80104B84 00000000 */ nop
/* B7BD28 80104B88 0006000D */ break 6
.L80104B8C:
/* B7BD2C 80104B8C 00007812 */ mflo $t7
/* B7BD30 80104B90 31F9FFFF */ andi $t9, $t7, 0xffff
/* B7BD34 80104B94 A48C001E */ sh $t4, 0x1e($a0)
/* B7BD38 80104B98 0145001A */ div $zero, $t2, $a1
/* B7BD3C 80104B9C 00194043 */ sra $t0, $t9, 1
/* B7BD40 80104BA0 00005812 */ mflo $t3
/* B7BD44 80104BA4 2509FFFF */ addiu $t1, $t0, -1
/* B7BD48 80104BA8 256C0001 */ addiu $t4, $t3, 1
/* B7BD4C 80104BAC A48D0024 */ sh $t5, 0x24($a0)
/* B7BD50 80104BB0 A48F0026 */ sh $t7, 0x26($a0)
/* B7BD54 80104BB4 A4890020 */ sh $t1, 0x20($a0)
/* B7BD58 80104BB8 14A00002 */ bnez $a1, .L80104BC4
/* B7BD5C 80104BBC 00000000 */ nop
/* B7BD60 80104BC0 0007000D */ break 7
.L80104BC4:
/* B7BD64 80104BC4 2401FFFF */ li $at, -1
/* B7BD68 80104BC8 14A10004 */ bne $a1, $at, .L80104BDC
/* B7BD6C 80104BCC 3C018000 */ lui $at, 0x8000
/* B7BD70 80104BD0 15410002 */ bne $t2, $at, .L80104BDC
/* B7BD74 80104BD4 00000000 */ nop
/* B7BD78 80104BD8 0006000D */ break 6
.L80104BDC:
/* B7BD7C 80104BDC A48C0022 */ sh $t4, 0x22($a0)
/* B7BD80 80104BE0 03E00008 */ jr $ra
/* B7BD84 80104BE4 00000000 */ nop
.L80104BE8:
/* B7BD88 80104BE8 948D0006 */ lhu $t5, 6($a0)
/* B7BD8C 80104BEC 94890002 */ lhu $t1, 2($a0)
/* B7BD90 80104BF0 00602825 */ move $a1, $v1
/* B7BD94 80104BF4 006D7007 */ srav $t6, $t5, $v1
/* B7BD98 80104BF8 25D80003 */ addiu $t8, $t6, 3
/* B7BD9C 80104BFC 330FFFFF */ andi $t7, $t8, 0xffff
/* B7BDA0 80104C00 004F001A */ div $zero, $v0, $t7
/* B7BDA4 80104C04 0000C812 */ mflo $t9
/* B7BDA8 80104C08 00A95007 */ srav $t2, $t1, $a1
/* B7BDAC 80104C0C 00194080 */ sll $t0, $t9, 2
/* B7BDB0 80104C10 000A5840 */ sll $t3, $t2, 1
/* B7BDB4 80104C14 316CFFFF */ andi $t4, $t3, 0xffff
/* B7BDB8 80104C18 3106FFFF */ andi $a2, $t0, 0xffff
/* B7BDBC 80104C1C 00CC0019 */ multu $a2, $t4
/* B7BDC0 80104C20 A498001C */ sh $t8, 0x1c($a0)
/* B7BDC4 80104C24 24D8FFFF */ addiu $t8, $a2, -1
/* B7BDC8 80104C28 15E00002 */ bnez $t7, .L80104C34
/* B7BDCC 80104C2C 00000000 */ nop
/* B7BDD0 80104C30 0007000D */ break 7
.L80104C34:
/* B7BDD4 80104C34 2401FFFF */ li $at, -1
/* B7BDD8 80104C38 15E10004 */ bne $t7, $at, .L80104C4C
/* B7BDDC 80104C3C 3C018000 */ lui $at, 0x8000
/* B7BDE0 80104C40 14410002 */ bne $v0, $at, .L80104C4C
/* B7BDE4 80104C44 00000000 */ nop
/* B7BDE8 80104C48 0006000D */ break 6
.L80104C4C:
/* B7BDEC 80104C4C 00003812 */ mflo $a3
/* B7BDF0 80104C50 00076C02 */ srl $t5, $a3, 0x10
/* B7BDF4 80104C54 30EEFFFF */ andi $t6, $a3, 0xffff
/* B7BDF8 80104C58 A488001E */ sh $t0, 0x1e($a0)
/* B7BDFC 80104C5C A48B0024 */ sh $t3, 0x24($a0)
/* B7BE00 80104C60 A48D0026 */ sh $t5, 0x26($a0)
/* B7BE04 80104C64 A48E0020 */ sh $t6, 0x20($a0)
/* B7BE08 80104C68 A4980022 */ sh $t8, 0x22($a0)
/* B7BE0C 80104C6C 03E00008 */ jr $ra
/* B7BE10 80104C70 00000000 */ nop

View file

@ -1,15 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel func_801067D0
/* B7D970 801067D0 46206004 */ sqrt.d $f0, $f12
/* B7D974 801067D4 03E00008 */ jr $ra
/* B7D978 801067D8 00000000 */ nop

View file

@ -1,15 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel absf
/* B7D980 801067E0 46006005 */ abs.s $f0, $f12
/* B7D984 801067E4 03E00008 */ jr $ra
/* B7D988 801067E8 00000000 */ nop

View file

@ -13,7 +13,7 @@
/* B7D674 801064D4 00000000 */ nop
/* B7D678 801064D8 00000000 */ nop
/* B7D67C 801064DC 00000000 */ nop
glabel func_801064E0
glabel guMtxF2L
/* B7D680 801064E0 3C014780 */ li $at, 0x47800000 # 0.000000
/* B7D684 801064E4 44810000 */ mtc1 $at, $f0
/* B7D688 801064E8 3C19FFFF */ lui $t9, 0xffff

View file

@ -9,7 +9,7 @@
.align 4
glabel func_80103B60
glabel guMtxIdent
/* B7AD00 80103B60 20080001 */ addi $t0, $zero, 1
/* B7AD04 80103B64 00084C00 */ sll $t1, $t0, 0x10
/* B7AD08 80103B68 AC890000 */ sw $t1, ($a0)

View file

@ -13,7 +13,7 @@
/* B7B2F4 80104154 00000000 */ nop
/* B7B2F8 80104158 00000000 */ nop
/* B7B2FC 8010415C 00000000 */ nop
glabel func_80104160
glabel guNormalize
/* B7B300 80104160 C4840000 */ lwc1 $f4, ($a0)
/* B7B304 80104164 C4A60000 */ lwc1 $f6, ($a1)
/* B7B308 80104168 C4C80000 */ lwc1 $f8, ($a2)

View file

@ -1,143 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel func_800FC0C0
/* B73260 800FC0C0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B73264 800FC0C4 AFA40018 */ sw $a0, 0x18($sp)
/* B73268 800FC0C8 AFBF0014 */ sw $ra, 0x14($sp)
/* B7326C 800FC0CC AFA5001C */ sw $a1, 0x1c($sp)
/* B73270 800FC0D0 3C048015 */ lui $a0, %hi(D_8014A8B0) # $a0, 0x8015
/* B73274 800FC0D4 3C068015 */ lui $a2, %hi(D_8014A8B4) # $a2, 0x8015
/* B73278 800FC0D8 24C6A8B4 */ addiu $a2, %lo(D_8014A8B4) # addiu $a2, $a2, -0x574c
/* B7327C 800FC0DC 2484A8B0 */ addiu $a0, %lo(D_8014A8B0) # addiu $a0, $a0, -0x5750
/* B73280 800FC0E0 8FA50018 */ lw $a1, 0x18($sp)
/* B73284 800FC0E4 0C000B58 */ jal LogUtils_CheckNullPointer
/* B73288 800FC0E8 2407001F */ li $a3, 31
/* B7328C 800FC0EC 3C048015 */ lui $a0, %hi(D_8014A8C4) # $a0, 0x8015
/* B73290 800FC0F0 3C068015 */ lui $a2, %hi(D_8014A8C8) # $a2, 0x8015
/* B73294 800FC0F4 24C6A8C8 */ addiu $a2, %lo(D_8014A8C8) # addiu $a2, $a2, -0x5738
/* B73298 800FC0F8 2484A8C4 */ addiu $a0, %lo(D_8014A8C4) # addiu $a0, $a0, -0x573c
/* B7329C 800FC0FC 8FA5001C */ lw $a1, 0x1c($sp)
/* B732A0 800FC100 0C000B58 */ jal LogUtils_CheckNullPointer
/* B732A4 800FC104 24070020 */ li $a3, 32
/* B732A8 800FC108 3C014780 */ li $at, 0x47800000 # 0.000000
/* B732AC 800FC10C 44810000 */ mtc1 $at, $f0
/* B732B0 800FC110 00002825 */ move $a1, $zero
/* B732B4 800FC114 8FA4001C */ lw $a0, 0x1c($sp)
/* B732B8 800FC118 8FA30018 */ lw $v1, 0x18($sp)
/* B732BC 800FC11C 24060004 */ li $a2, 4
/* B732C0 800FC120 C4900000 */ lwc1 $f16, ($a0)
/* B732C4 800FC124 24A50001 */ addiu $a1, $a1, 1
/* B732C8 800FC128 46008482 */ mul.s $f18, $f16, $f0
/* B732CC 800FC12C 50A60027 */ beql $a1, $a2, .L800FC1CC
/* B732D0 800FC130 4600940D */ trunc.w.s $f16, $f18
/* B732D4 800FC134 4600940D */ trunc.w.s $f16, $f18
.L800FC138:
/* B732D8 800FC138 24840010 */ addiu $a0, $a0, 0x10
/* B732DC 800FC13C 24A50001 */ addiu $a1, $a1, 1
/* B732E0 800FC140 24630008 */ addiu $v1, $v1, 8
/* B732E4 800FC144 44028000 */ mfc1 $v0, $f16
/* B732E8 800FC148 00000000 */ nop
/* B732EC 800FC14C 00027C03 */ sra $t7, $v0, 0x10
/* B732F0 800FC150 A46FFFF8 */ sh $t7, -8($v1)
/* B732F4 800FC154 A4620018 */ sh $v0, 0x18($v1)
/* B732F8 800FC158 C490FFF4 */ lwc1 $f16, -0xc($a0)
/* B732FC 800FC15C 46008402 */ mul.s $f16, $f16, $f0
/* B73300 800FC160 4600840D */ trunc.w.s $f16, $f16
/* B73304 800FC164 44028000 */ mfc1 $v0, $f16
/* B73308 800FC168 00000000 */ nop
/* B7330C 800FC16C 0002CC03 */ sra $t9, $v0, 0x10
/* B73310 800FC170 A479FFFA */ sh $t9, -6($v1)
/* B73314 800FC174 A462001A */ sh $v0, 0x1a($v1)
/* B73318 800FC178 C490FFF8 */ lwc1 $f16, -8($a0)
/* B7331C 800FC17C 46008402 */ mul.s $f16, $f16, $f0
/* B73320 800FC180 4600840D */ trunc.w.s $f16, $f16
/* B73324 800FC184 44028000 */ mfc1 $v0, $f16
/* B73328 800FC188 00000000 */ nop
/* B7332C 800FC18C 00024C03 */ sra $t1, $v0, 0x10
/* B73330 800FC190 A469FFFC */ sh $t1, -4($v1)
/* B73334 800FC194 A462001C */ sh $v0, 0x1c($v1)
/* B73338 800FC198 C490FFFC */ lwc1 $f16, -4($a0)
/* B7333C 800FC19C 46008402 */ mul.s $f16, $f16, $f0
/* B73340 800FC1A0 4600840D */ trunc.w.s $f16, $f16
/* B73344 800FC1A4 44028000 */ mfc1 $v0, $f16
/* B73348 800FC1A8 00000000 */ nop
/* B7334C 800FC1AC 00025C03 */ sra $t3, $v0, 0x10
/* B73350 800FC1B0 A46BFFFE */ sh $t3, -2($v1)
/* B73354 800FC1B4 A462001E */ sh $v0, 0x1e($v1)
/* B73358 800FC1B8 C4900000 */ lwc1 $f16, ($a0)
/* B7335C 800FC1BC 46008482 */ mul.s $f18, $f16, $f0
/* B73360 800FC1C0 54A6FFDD */ bnel $a1, $a2, .L800FC138
/* B73364 800FC1C4 4600940D */ trunc.w.s $f16, $f18
/* B73368 800FC1C8 4600940D */ trunc.w.s $f16, $f18
.L800FC1CC:
/* B7336C 800FC1CC 24840010 */ addiu $a0, $a0, 0x10
/* B73370 800FC1D0 24630008 */ addiu $v1, $v1, 8
/* B73374 800FC1D4 44028000 */ mfc1 $v0, $f16
/* B73378 800FC1D8 00000000 */ nop
/* B7337C 800FC1DC 00027C03 */ sra $t7, $v0, 0x10
/* B73380 800FC1E0 A46FFFF8 */ sh $t7, -8($v1)
/* B73384 800FC1E4 A4620018 */ sh $v0, 0x18($v1)
/* B73388 800FC1E8 C490FFF4 */ lwc1 $f16, -0xc($a0)
/* B7338C 800FC1EC 46008402 */ mul.s $f16, $f16, $f0
/* B73390 800FC1F0 4600840D */ trunc.w.s $f16, $f16
/* B73394 800FC1F4 44028000 */ mfc1 $v0, $f16
/* B73398 800FC1F8 00000000 */ nop
/* B7339C 800FC1FC 0002CC03 */ sra $t9, $v0, 0x10
/* B733A0 800FC200 A479FFFA */ sh $t9, -6($v1)
/* B733A4 800FC204 A462001A */ sh $v0, 0x1a($v1)
/* B733A8 800FC208 C490FFF8 */ lwc1 $f16, -8($a0)
/* B733AC 800FC20C 46008402 */ mul.s $f16, $f16, $f0
/* B733B0 800FC210 4600840D */ trunc.w.s $f16, $f16
/* B733B4 800FC214 44028000 */ mfc1 $v0, $f16
/* B733B8 800FC218 00000000 */ nop
/* B733BC 800FC21C 00024C03 */ sra $t1, $v0, 0x10
/* B733C0 800FC220 A469FFFC */ sh $t1, -4($v1)
/* B733C4 800FC224 A462001C */ sh $v0, 0x1c($v1)
/* B733C8 800FC228 C490FFFC */ lwc1 $f16, -4($a0)
/* B733CC 800FC22C 46008402 */ mul.s $f16, $f16, $f0
/* B733D0 800FC230 4600840D */ trunc.w.s $f16, $f16
/* B733D4 800FC234 44028000 */ mfc1 $v0, $f16
/* B733D8 800FC238 00000000 */ nop
/* B733DC 800FC23C 00025C03 */ sra $t3, $v0, 0x10
/* B733E0 800FC240 A46BFFFE */ sh $t3, -2($v1)
/* B733E4 800FC244 A462001E */ sh $v0, 0x1e($v1)
/* B733E8 800FC248 8FBF0014 */ lw $ra, 0x14($sp)
/* B733EC 800FC24C 27BD0018 */ addiu $sp, $sp, 0x18
/* B733F0 800FC250 03E00008 */ jr $ra
/* B733F4 800FC254 00000000 */ nop
glabel func_800FC258
/* B733F8 800FC258 27BDFFE8 */ addiu $sp, $sp, -0x18
/* B733FC 800FC25C AFA40018 */ sw $a0, 0x18($sp)
/* B73400 800FC260 AFBF0014 */ sw $ra, 0x14($sp)
/* B73404 800FC264 AFA5001C */ sw $a1, 0x1c($sp)
/* B73408 800FC268 3C048015 */ lui $a0, %hi(D_8014A8D8) # $a0, 0x8015
/* B7340C 800FC26C 3C068015 */ lui $a2, %hi(D_8014A8DC) # $a2, 0x8015
/* B73410 800FC270 24C6A8DC */ addiu $a2, %lo(D_8014A8DC) # addiu $a2, $a2, -0x5724
/* B73414 800FC274 2484A8D8 */ addiu $a0, %lo(D_8014A8D8) # addiu $a0, $a0, -0x5728
/* B73418 800FC278 8FA50018 */ lw $a1, 0x18($sp)
/* B7341C 800FC27C 0C000B58 */ jal LogUtils_CheckNullPointer
/* B73420 800FC280 24070037 */ li $a3, 55
/* B73424 800FC284 3C048015 */ lui $a0, %hi(D_8014A8EC) # $a0, 0x8015
/* B73428 800FC288 3C068015 */ lui $a2, %hi(D_8014A8F0) # $a2, 0x8015
/* B7342C 800FC28C 24C6A8F0 */ addiu $a2, %lo(D_8014A8F0) # addiu $a2, $a2, -0x5710
/* B73430 800FC290 2484A8EC */ addiu $a0, %lo(D_8014A8EC) # addiu $a0, $a0, -0x5714
/* B73434 800FC294 8FA5001C */ lw $a1, 0x1c($sp)
/* B73438 800FC298 0C000B58 */ jal LogUtils_CheckNullPointer
/* B7343C 800FC29C 24070038 */ li $a3, 56
/* B73440 800FC2A0 8FA40018 */ lw $a0, 0x18($sp)
/* B73444 800FC2A4 0C040BE8 */ jal func_80102FA0
/* B73448 800FC2A8 8FA5001C */ lw $a1, 0x1c($sp)
/* B7344C 800FC2AC 8FBF0014 */ lw $ra, 0x14($sp)
/* B73450 800FC2B0 27BD0018 */ addiu $sp, $sp, 0x18
/* B73454 800FC2B4 03E00008 */ jr $ra
/* B73458 800FC2B8 00000000 */ nop

View file

@ -22,7 +22,7 @@ glabel guLookAt
/* B79024 80101E84 0C0406E4 */ jal guLookAtF
/* B79028 80101E88 E7B20024 */ swc1 $f18, 0x24($sp)
/* B7902C 80101E8C 27A40030 */ addiu $a0, $sp, 0x30
/* B79030 80101E90 0C041938 */ jal func_801064E0
/* B79030 80101E90 0C041938 */ jal guMtxF2L
/* B79034 80101E94 8FA50070 */ lw $a1, 0x70($sp)
/* B79038 80101E98 8FBF002C */ lw $ra, 0x2c($sp)
/* B7903C 80101E9C 27BD0070 */ addiu $sp, $sp, 0x70

View file

@ -222,7 +222,7 @@ glabel PadMgr_ProcessInputs
/* B3ED30 800C7B90 014C6825 */ or $t5, $t2, $t4
/* B3ED34 800C7B94 A609000C */ sh $t1, 0xc($s0)
/* B3ED38 800C7B98 A60D0012 */ sh $t5, 0x12($s0)
/* B3ED3C 800C7B9C 0C03F31B */ jal func_800FCC6C
/* B3ED3C 800C7B9C 0C03F31B */ jal PadUtils_UpdateRelXY
/* B3ED40 800C7BA0 02002025 */ move $a0, $s0
/* B3ED44 800C7BA4 820E0002 */ lb $t6, 2($s0)
/* B3ED48 800C7BA8 820F0008 */ lb $t7, 8($s0)

View file

@ -67,7 +67,7 @@ glabel PadMgr_RequestPadData
/* B3F0A4 800C7F04 00A25024 */ and $t2, $a1, $v0
/* B3F0A8 800C7F08 A60A000C */ sh $t2, 0xc($s0)
/* B3F0AC 800C7F0C A60B0012 */ sh $t3, 0x12($s0)
/* B3F0B0 800C7F10 0C03F31B */ jal func_800FCC6C
/* B3F0B0 800C7F10 0C03F31B */ jal PadUtils_UpdateRelXY
/* B3F0B4 800C7F14 A6090004 */ sh $t1, 4($s0)
/* B3F0B8 800C7F18 820C0002 */ lb $t4, 2($s0)
/* B3F0BC 800C7F1C 820D0008 */ lb $t5, 8($s0)

View file

@ -127,7 +127,7 @@ glabel func_800C91BC
/* B404D8 800C9338 24E40010 */ addiu $a0, $a3, 0x10
/* B404DC 800C933C 51C0000C */ beql $t6, $zero, .L800C9370
/* B404E0 800C9340 8CEF0004 */ lw $t7, 4($a3)
/* B404E4 800C9344 0C040F70 */ jal func_80103DC0
/* B404E4 800C9344 0C040F70 */ jal osSpTaskYielded
/* B404E8 800C9348 AFA7004C */ sw $a3, 0x4c($sp)
/* B404EC 800C934C 8FA7004C */ lw $a3, 0x4c($sp)
/* B404F0 800C9350 3C048014 */ lui $a0, %hi(D_801460FC) # $a0, 0x8014
@ -143,7 +143,7 @@ glabel func_800C91BC
/* B40514 800C9374 31E80010 */ andi $t0, $t7, 0x10
/* B40518 800C9378 1100001A */ beqz $t0, .L800C93E4
/* B4051C 800C937C 00000000 */ nop
/* B40520 800C9380 0C040F70 */ jal func_80103DC0
/* B40520 800C9380 0C040F70 */ jal osSpTaskYielded
/* B40524 800C9384 AFA7004C */ sw $a3, 0x4c($sp)
/* B40528 800C9388 10400016 */ beqz $v0, .L800C93E4
/* B4052C 800C938C 8FA7004C */ lw $a3, 0x4c($sp)

View file

@ -29,9 +29,9 @@ glabel TransitionUnk_InitGraphics
/* B28A74 800B18D4 AFB30034 */ sw $s3, 0x34($sp)
/* B28A78 800B18D8 AFB20030 */ sw $s2, 0x30($sp)
/* B28A7C 800B18DC AFB1002C */ sw $s1, 0x2c($sp)
/* B28A80 800B18E0 0C040ED8 */ jal func_80103B60
/* B28A80 800B18E0 0C040ED8 */ jal guMtxIdent
/* B28A84 800B18E4 24840058 */ addiu $a0, $a0, 0x58
/* B28A88 800B18E8 0C040ED8 */ jal func_80103B60
/* B28A88 800B18E8 0C040ED8 */ jal guMtxIdent
/* B28A8C 800B18EC 26040098 */ addiu $a0, $s0, 0x98
/* B28A90 800B18F0 3C01C47A */ li $at, 0xC47A0000 # 0.000000
/* B28A94 800B18F4 44812000 */ mtc1 $at, $f4

View file

@ -117,7 +117,7 @@ glabel func_8009638C
/* B0D6F0 80096550 A4A60006 */ sh $a2, 6($a1)
/* B0D6F4 80096554 A4A7000E */ sh $a3, 0xe($a1)
/* B0D6F8 80096558 AFA50018 */ sw $a1, 0x18($sp)
/* B0D6FC 8009655C 0C0412C0 */ jal func_80104B00
/* B0D6FC 8009655C 0C0412C0 */ jal guS2DInitBg
/* B0D700 80096560 AFA2001C */ sw $v0, 0x1c($sp)
/* B0D704 80096564 97B9003E */ lhu $t9, 0x3e($sp)
/* B0D708 80096568 3C010020 */ lui $at, 0x20

View file

@ -1243,7 +1243,7 @@ glabel EnTorch2_Update
/* 015E8 80B1EF68 3C0480B2 */ lui $a0, %hi(D_80B20130) ## $a0 = 80B20000
/* 015EC 80B1EF6C A4380136 */ sh $t8, %lo(D_80B20136)($at)
/* 015F0 80B1EF70 24840130 */ addiu $a0, $a0, %lo(D_80B20130) ## $a0 = 80B20130
/* 015F4 80B1EF74 0C03F31B */ jal func_800FCC6C
/* 015F4 80B1EF74 0C03F31B */ jal PadUtils_UpdateRelXY
/* 015F8 80B1EF78 A4260130 */ sh $a2, %lo(D_80B20130)($at)
/* 015FC 80B1EF7C 3C0F80B2 */ lui $t7, %hi(D_80B20132) ## $t7 = 80B20000
/* 01600 80B1EF80 3C0A80B2 */ lui $t2, %hi(D_80B20138) ## $t2 = 80B20000

View file

@ -1,116 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .text
.align 4
glabel osSetTimer
/* B7D480 801062E0 27BDFFC8 */ addiu $sp, $sp, -0x38
/* B7D484 801062E4 AFA40038 */ sw $a0, 0x38($sp)
/* B7D488 801062E8 8FAE0038 */ lw $t6, 0x38($sp)
/* B7D48C 801062EC AFBF0014 */ sw $ra, 0x14($sp)
/* B7D490 801062F0 AFA60040 */ sw $a2, 0x40($sp)
/* B7D494 801062F4 AFA70044 */ sw $a3, 0x44($sp)
/* B7D498 801062F8 ADC00000 */ sw $zero, ($t6)
/* B7D49C 801062FC 8FAF0038 */ lw $t7, 0x38($sp)
/* B7D4A0 80106300 ADE00004 */ sw $zero, 4($t7)
/* B7D4A4 80106304 8FA80038 */ lw $t0, 0x38($sp)
/* B7D4A8 80106308 8FB9004C */ lw $t9, 0x4c($sp)
/* B7D4AC 8010630C 8FB80048 */ lw $t8, 0x48($sp)
/* B7D4B0 80106310 AD19000C */ sw $t9, 0xc($t0)
/* B7D4B4 80106314 AD180008 */ sw $t8, 8($t0)
/* B7D4B8 80106318 8FAA0040 */ lw $t2, 0x40($sp)
/* B7D4BC 8010631C 8FAB0044 */ lw $t3, 0x44($sp)
/* B7D4C0 80106320 15400003 */ bnez $t2, .L80106330
/* B7D4C4 80106324 00000000 */ nop
/* B7D4C8 80106328 11600005 */ beqz $t3, .L80106340
/* B7D4CC 8010632C 00000000 */ nop
.L80106330:
/* B7D4D0 80106330 8FA90038 */ lw $t1, 0x38($sp)
/* B7D4D4 80106334 AD2A0010 */ sw $t2, 0x10($t1)
/* B7D4D8 80106338 10000006 */ b .L80106354
/* B7D4DC 8010633C AD2B0014 */ sw $t3, 0x14($t1)
.L80106340:
/* B7D4E0 80106340 8FAE0038 */ lw $t6, 0x38($sp)
/* B7D4E4 80106344 8FAC0048 */ lw $t4, 0x48($sp)
/* B7D4E8 80106348 8FAD004C */ lw $t5, 0x4c($sp)
/* B7D4EC 8010634C ADCC0010 */ sw $t4, 0x10($t6)
/* B7D4F0 80106350 ADCD0014 */ sw $t5, 0x14($t6)
.L80106354:
/* B7D4F4 80106354 8FAF0050 */ lw $t7, 0x50($sp)
/* B7D4F8 80106358 8FB80038 */ lw $t8, 0x38($sp)
/* B7D4FC 8010635C AF0F0018 */ sw $t7, 0x18($t8)
/* B7D500 80106360 8FA80038 */ lw $t0, 0x38($sp)
/* B7D504 80106364 8FB90054 */ lw $t9, 0x54($sp)
/* B7D508 80106368 0C001CA0 */ jal __osDisableInt
/* B7D50C 8010636C AD19001C */ sw $t9, 0x1c($t0)
/* B7D510 80106370 3C0A8001 */ lui $t2, %hi(__osTimerList) # $t2, 0x8001
/* B7D514 80106374 8D4AADF0 */ lw $t2, %lo(__osTimerList)($t2)
/* B7D518 80106378 AFA20020 */ sw $v0, 0x20($sp)
/* B7D51C 8010637C 8D4B0000 */ lw $t3, ($t2)
/* B7D520 80106380 116A0028 */ beq $t3, $t2, .L80106424
/* B7D524 80106384 00000000 */ nop
/* B7D528 80106388 3C098001 */ lui $t1, %hi(__osTimerList) # $t1, 0x8001
/* B7D52C 8010638C 8D29ADF0 */ lw $t1, %lo(__osTimerList)($t1)
/* B7D530 80106390 8D2C0000 */ lw $t4, ($t1)
/* B7D534 80106394 0C001BA8 */ jal osGetCount
/* B7D538 80106398 AFAC002C */ sw $t4, 0x2c($sp)
/* B7D53C 8010639C AFA20028 */ sw $v0, 0x28($sp)
/* B7D540 801063A0 3C0E8001 */ lui $t6, %hi(__osTimerCounter) # $t6, 0x8001
/* B7D544 801063A4 8DCE5AF0 */ lw $t6, %lo(__osTimerCounter)($t6)
/* B7D548 801063A8 8FAD0028 */ lw $t5, 0x28($sp)
/* B7D54C 801063AC 8FA8002C */ lw $t0, 0x2c($sp)
/* B7D550 801063B0 24180000 */ li $t8, 0
/* B7D554 801063B4 01AE7823 */ subu $t7, $t5, $t6
/* B7D558 801063B8 AFAF0024 */ sw $t7, 0x24($sp)
/* B7D55C 801063BC 8D0A0010 */ lw $t2, 0x10($t0)
/* B7D560 801063C0 01E0C825 */ move $t9, $t7
/* B7D564 801063C4 8D0B0014 */ lw $t3, 0x14($t0)
/* B7D568 801063C8 0158082B */ sltu $at, $t2, $t8
/* B7D56C 801063CC 14200010 */ bnez $at, .L80106410
/* B7D570 801063D0 030A082B */ sltu $at, $t8, $t2
/* B7D574 801063D4 14200003 */ bnez $at, .L801063E4
/* B7D578 801063D8 032B082B */ sltu $at, $t9, $t3
/* B7D57C 801063DC 1020000C */ beqz $at, .L80106410
/* B7D580 801063E0 00000000 */ nop
.L801063E4:
/* B7D584 801063E4 25090010 */ addiu $t1, $t0, 0x10
/* B7D588 801063E8 AFA9001C */ sw $t1, 0x1c($sp)
/* B7D58C 801063EC 8D0D0014 */ lw $t5, 0x14($t0)
/* B7D590 801063F0 8D0C0010 */ lw $t4, 0x10($t0)
/* B7D594 801063F4 01B9082B */ sltu $at, $t5, $t9
/* B7D598 801063F8 01987023 */ subu $t6, $t4, $t8
/* B7D59C 801063FC 01C17023 */ subu $t6, $t6, $at
/* B7D5A0 80106400 01B97823 */ subu $t7, $t5, $t9
/* B7D5A4 80106404 AD0F0014 */ sw $t7, 0x14($t0)
/* B7D5A8 80106408 10000006 */ b .L80106424
/* B7D5AC 8010640C AD0E0010 */ sw $t6, 0x10($t0)
.L80106410:
/* B7D5B0 80106410 8FA9002C */ lw $t1, 0x2c($sp)
/* B7D5B4 80106414 240A0000 */ li $t2, 0
/* B7D5B8 80106418 240B0001 */ li $t3, 1
/* B7D5BC 8010641C AD2B0014 */ sw $t3, 0x14($t1)
/* B7D5C0 80106420 AD2A0010 */ sw $t2, 0x10($t1)
.L80106424:
/* B7D5C4 80106424 0C001B45 */ jal __osInsertTimer
/* B7D5C8 80106428 8FA40038 */ lw $a0, 0x38($sp)
/* B7D5CC 8010642C 3C0C8001 */ lui $t4, %hi(__osTimerList) # $t4, 0x8001
/* B7D5D0 80106430 8D8CADF0 */ lw $t4, %lo(__osTimerList)($t4)
/* B7D5D4 80106434 AFA20030 */ sw $v0, 0x30($sp)
/* B7D5D8 80106438 AFA30034 */ sw $v1, 0x34($sp)
/* B7D5DC 8010643C 8D8D0000 */ lw $t5, ($t4)
/* B7D5E0 80106440 8DA40010 */ lw $a0, 0x10($t5)
/* B7D5E4 80106444 0C001B1D */ jal __osSetTimerIntr
/* B7D5E8 80106448 8DA50014 */ lw $a1, 0x14($t5)
/* B7D5EC 8010644C 0C001CBC */ jal __osRestoreInt
/* B7D5F0 80106450 8FA40020 */ lw $a0, 0x20($sp)
/* B7D5F4 80106454 8FBF0014 */ lw $ra, 0x14($sp)
/* B7D5F8 80106458 27BD0038 */ addiu $sp, $sp, 0x38
/* B7D5FC 8010645C 00001025 */ move $v0, $zero
/* B7D600 80106460 03E00008 */ jr $ra
/* B7D604 80106464 00000000 */ nop

View file

@ -1,11 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .data
glabel D_80134D10
.incbin "baserom.z64", 0xBABEB0, 0x10

View file

@ -1,42 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purposee registers
.section .rodata
.align 4
glabel D_8014A8B0
.asciz "m1"
.balign 4
glabel D_8014A8B4
.asciz "../mtxuty-cvt.c"
.balign 4
glabel D_8014A8C4
.asciz "m2"
.balign 4
glabel D_8014A8C8
.asciz "../mtxuty-cvt.c"
.balign 4
glabel D_8014A8D8
.asciz "m1"
.balign 4
glabel D_8014A8DC
.asciz "../mtxuty-cvt.c"
.balign 4
glabel D_8014A8EC
.asciz "m2"
.balign 4
glabel D_8014A8F0
.asciz "../mtxuty-cvt.c"
.balign 4

View file

@ -2278,19 +2278,30 @@ void GfxPrint_Printf(GfxPrint*, const char*, ...);
void func_800FBCE0();
void func_800FBFD8();
void* Overlay_AllocateAndLoad(u32 vRomStart, u32 vRomEnd, void* vRamStart, void* vRamEnd);
// ? func_800FC258(?);
// ? MtxConv_L2F(?);
void Overlay_DoRelocation(void* allocatedVRamAddress, OverlayRelocationSection* overlayInfo, void* vRamAddress);
s32 Overlay_Load(u32 vRomStart, u32 vRomEnd, void* vRamStart, void* vRamEnd, void* allocatedVRamAddress);
// ? func_800FC800(?);
// ? func_800FC83C(?);
// ? func_800FCAB4(?);
void SystemHeap_Init(void* start, u32 size);
// ? func_800FCC00(?);
// ? func_800FCC08(?);
// ? func_800FCC10(?);
// ? func_800FCC1C(?);
// ? func_800FCC24(?);
// ? func_800FCC6C(?);
void PadUtils_Init(Input* input);
void func_800FCB70();
void PadUtils_ResetPressRel(Input* input);
u32 PadUtils_CheckCurExact(Input* input, u16 value);
u32 PadUtils_CheckCur(Input* input, u16 key);
u32 PadUtils_CheckPressed(Input* input, u16 key);
u32 PadUtils_CheckReleased(Input* input, u16 key);
u16 PadUtils_GetCurButton(Input* input);
u16 PadUtils_GetPressButton(Input* input);
s8 PadUtils_GetCurX(Input* input);
s8 PadUtils_GetCurY(Input* input);
void PadUtils_SetRelXY(Input* input, s32 x, s32 y);
s8 PadUtils_GetRelXImpl(Input* input);
s8 PadUtils_GetRelYImpl(Input* input);
s8 PadUtils_GetRelX(Input* input);
s8 PadUtils_GetRelY(Input* input);
void PadUtils_UpdateRelXY(Input* input);
// ? func_800FCD40(?);
f32 Math_tanf(f32 x);
f32 Math_nearbyintf(f32 x);
@ -2439,15 +2450,15 @@ void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye,
f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth,
s32 hiliteHeight);
// ? __osSpDeviceBusy(?);
// ? func_80103B60(?);
// ? guMtxIdent(?);
// ? guPositionF(?);
void guPosition(Mtx*, f32, f32, f32, f32, f32, f32, f32);
// ? func_80103DC0(?);
// ? func_80103E20(?);
// ? osSpTaskYielded(?);
// ? guRotateF(?);
void guRotate(Mtx*, f32 angle, f32 x, f32 y, f32 z);
// ? func_80103FF0(?);
// ? osAiSetFrequency(?);
// ? __osGetActiveQueue(?);
// ? func_80104160(?);
// ? guNormalize(?);
u32 osDpGetStatus(void);
void osDpSetStatus(u32 status);
// ? func_801041E0(?);
@ -2459,7 +2470,7 @@ s16 coss(u16);
void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount);
// ? func_8010499C(?);
// ? func_80104A50(?);
// ? func_80104B00(?);
void guS2DInitBg(uObjBg *bg);
// ? func_80104C80(?);
void func_80104D00(u8 a0);
// ? func_80104D60(?);
@ -2478,7 +2489,7 @@ u32 __osSpGetStatus();
void __osSpSetStatus(u32 status);
// ? osWritebackDCacheAll(?);
OSThread* __osGetCurrFaultedThread();
// ? func_801064E0(?);
// ? guMtxF2L(?);
// ? __d_to_ll(?);
// ? __f_to_ll(?);
// ? __d_to_ull(?);

View file

@ -23,6 +23,6 @@ typedef struct OSTimer_s
OSTime osGetTime(void);
int osSetTimer(OSTimer *timer, OSTime countdown, OSTime interval, OSMesgQueue *mq, OSMesg msg);
void osStopTimer(OSTimer *timer);
s32 osStopTimer(OSTimer *timer);
#endif

View file

@ -100,7 +100,7 @@ extern u32 gCurrentRegion;
extern u32 __osPiAccessQueueEnabled;
extern OSViMode osViModePalLan1;
extern u64 osClockRate;
extern u32 osViClock;
extern s32 osViClock;
extern u32 __osShutdown;
extern u32 __OSGlobalIntMask;
extern __osHwInt __osHwIntTable[];

View file

@ -1733,4 +1733,9 @@ typedef struct {
/* 0x06 */ u16 color;
} SpeedMeterTimeEntry; // size = 0x08
typedef struct {
/* 0x00 */ s16 intPart[4][4];
/* 0x20 */ u16 fracPart[4][4];
} MatrixInternal; // size = 0x40
#endif

View file

@ -13,7 +13,7 @@ typedef struct {
/* 0x14 */ Vtx* vtxFrame2;
/* 0x18 */ Mtx projection;
/* 0x58 */ Mtx modelView;
/* 0x98 */ char unk_98[0x40];
/* 0x98 */ Mtx unk_98;
/* 0xD8 */ Gfx* gfx; // "gfxtbl"
/* 0xDC */ u16* zBuffer;
} TransitionUnk; // size = 0xE0

39
spec
View file

@ -461,11 +461,10 @@ beginseg
include "build/src/code/gfxprint.o"
include "build/src/code/code_800FBCE0.o"
include "build/src/code/loadfragment2.o"
include "build/asm/mtxuty-cvt.o"
include "build/data/mtxuty-cvt.rodata.o"
include "build/src/code/mtxuty-cvt.o"
include "build/src/code/relocation.o"
include "build/src/code/code_800FC620.o"
include "build/asm/code_800FCB50.o"
include "build/src/code/padutils.o"
include "build/asm/code_800FCD40.o"
include "build/src/code/code_800FCE80.o"
include "build/asm/fp.o"
@ -475,10 +474,10 @@ beginseg
include "build/src/code/printutils.o"
include "build/src/code/sleep.o"
include "build/src/code/jpegutils.o"
include "build/asm/code_800FFA50.o"
include "build/data/code_800FFA50.bss.o"
include "build/asm/jpegdecoder.o"
include "build/data/jpegdecoder.bss.o"
include "build/asm/code_80100040.o"
include "build/asm/code_801001E0.o"
include "build/asm/guScale.o"
include "build/src/libultra_code/sinf.o"
include "build/src/libultra_code/sins.o"
include "build/data/sins.data.o"
@ -490,14 +489,15 @@ beginseg
include "build/src/libultra_code/guPerspectiveF.o"
include "build/src/libultra_code/__osSpRawStartDma.o"
include "build/src/libultra_code/__osSiRawStartDma.o"
include "build/asm/code_801014A0.o"
include "build/data/code_801014A0.bss.o"
include "build/src/libultra_code/osSpTaskYield.o"
include "build/asm/code_801014C0.o"
include "build/data/code_801014C0.bss.o"
include "build/asm/code_80101910.o"
include "build/data/code_80101910.bss.o"
include "build/asm/guMtxIdentF.o"
include "build/src/libultra_code/guLookAt.o"
include "build/asm/code_80101EB0.o"
include "build/asm/code_80102330.o"
include "build/src/libultra_code/osStopTimer.o"
include "build/asm/code_80102420.o"
include "build/data/code_80102420.data.o"
include "build/asm/code_80102FA0.o"
@ -506,12 +506,13 @@ beginseg
include "build/src/libultra_code/code_801031F0.o"
include "build/src/libultra_code/guLookAtHilite.o"
include "build/src/libultra_code/sp.o"
include "build/asm/code_80103B60.o"
include "build/asm/guMtxIdent.o"
include "build/src/libultra_code/guPosition.o"
include "build/asm/code_80103DC0.o"
include "build/data/code_80103DC0.data.o"
include "build/src/libultra_code/osSpTaskYielded.o"
include "build/src/libultra_code/rotate.o"
include "build/src/libultra_code/osAiSetFrequency.o"
include "build/src/libultra_code/__osGetActiveQueue.o"
include "build/asm/code_80104160.o"
include "build/asm/guNormalize.o"
include "build/src/libultra_code/osDpGetStatus.o"
include "build/src/libultra_code/osDpSetStatus.o"
include "build/asm/code_801041E0.o"
@ -520,30 +521,30 @@ beginseg
include "build/src/libultra_code/coss.o"
include "build/src/libultra_code/osViSetEvent.o"
include "build/asm/code_80104810.o"
include "build/asm/code_80104B00.o"
include "build/src/libultra_code/guS2DInitBg.o"
include "build/asm/code_80104C80.o"
include "build/asm/code_80104D00.o"
include "build/asm/code_80104D60.o"
include "build/asm/code_80104F40.o"
include "build/asm/code_80105250.o"
include "build/src/libultra_code/osAiGetLength.o"
include "build/asm/code_80105C20.o"
include "build/asm/guTranslate.o"
include "build/asm/code_80105CF0.o"
include "build/data/code_80105CF0.data.o"
include "build/src/libultra_code/osReadMempak.o"
include "build/src/libultra_code/osMempakAddrCRC.o"
include "build/asm/osSetTimer.o"
include "build/src/libultra_code/osSetTimer.o"
include "build/src/libultra_code/__osSpGetStatus.o"
include "build/src/libultra_code/__osSpSetStatus.o"
include "build/asm/osWritebackDCacheAll.o"
include "build/src/libultra_code/__osGetCurrFaultedThread.o"
include "build/asm/code_801064E0.o"
include "build/asm/guMtxF2L.o"
include "build/asm/code_80106550.o"
include "build/data/code_80106550.rodata.o"
include "build/src/libultra_code/osViGetCurrentFramebuffer.o"
include "build/src/libultra_code/__osSpSetPc.o"
include "build/asm/code_801067D0.o"
include "build/asm/code_801067E0.o"
include "build/src/libultra_code/sqrt.o"
include "build/src/libultra_code/absf.o"
include "build/src/code/code_801067F0.o"
include "build/src/code/code_80106860.o"
include "build/src/code/code_801068B0.o"

23
src/code/mtxuty-cvt.c Normal file
View file

@ -0,0 +1,23 @@
#include <global.h>
void MtxConv_F2L(MatrixInternal* m1, MtxF* m2) {
s32 i;
s32 j;
LogUtils_CheckNullPointer("m1", m1, "../mtxuty-cvt.c", 31);
LogUtils_CheckNullPointer("m2", m2, "../mtxuty-cvt.c", 32);
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
s32 value = (m2->mf[i][j] * 0x10000);
m1->intPart[i][j] = value >> 16;
m1->fracPart[i][j] = value;
}
}
}
void MtxConv_L2F(MtxF* m1, Mtx* m2) {
LogUtils_CheckNullPointer("m1", m1, "../mtxuty-cvt.c", 55);
LogUtils_CheckNullPointer("m2", m2, "../mtxuty-cvt.c", 56);
func_80102FA0(m1, m2); // guMtxL2F ?
}

View file

@ -272,7 +272,7 @@ void PadMgr_ProcessInputs(PadMgr* padmgr) {
}
input->press.in.button = input->cur.in.button & (input->prev.in.button ^ input->cur.in.button);
input->rel.in.button = input->prev.in.button & (input->prev.in.button ^ input->cur.in.button);
func_800FCC6C(input);
PadUtils_UpdateRelXY(input);
input->press.in.x = (input->cur.in.x - input->prev.in.x) + input->press.in.x;
input->press.in.y = (input->cur.in.y - input->prev.in.y) + input->press.in.y;
}
@ -360,7 +360,7 @@ void PadMgr_RequestPadData(PadMgr* padmgr, Input* inputs, s32 mode) {
newin->cur = pmInputs->cur;
newin->press.in.button = newin->cur.in.button & (newin->prev.in.button ^ newin->cur.in.button);
newin->rel.in.button = newin->prev.in.button & (newin->prev.in.button ^ newin->cur.in.button);
func_800FCC6C(newin);
PadUtils_UpdateRelXY(newin);
newin->press.in.x = (newin->cur.in.x - newin->prev.in.x) + newin->press.in.x;
newin->press.in.y = (newin->cur.in.y - newin->prev.in.y) + newin->press.in.y;
}

93
src/code/padutils.c Normal file
View file

@ -0,0 +1,93 @@
#include <global.h>
void PadUtils_Init(Input* input) {
bzero(input, sizeof(Input));
}
void func_800FCB70() {
}
void PadUtils_ResetPressRel(Input* input) {
input->press.in.button = 0;
input->rel.in.button = 0;
}
u32 PadUtils_CheckCurExact(Input* input, u16 value) {
return value == input->cur.in.button;
}
u32 PadUtils_CheckCur(Input* input, u16 key) {
return key == (input->cur.in.button & key);
}
u32 PadUtils_CheckPressed(Input* input, u16 key) {
return key == (input->press.in.button & key);
}
u32 PadUtils_CheckReleased(Input* input, u16 key) {
return key == (input->rel.in.button & key);
}
u16 PadUtils_GetCurButton(Input* input) {
return input->cur.in.button;
}
u16 PadUtils_GetPressButton(Input* input) {
return input->press.in.button;
}
s8 PadUtils_GetCurX(Input* input) {
return input->cur.in.x;
}
s8 PadUtils_GetCurY(Input* input) {
return input->cur.in.y;
}
void PadUtils_SetRelXY(Input* input, s32 x, s32 y) {
input->rel.in.x = x;
input->rel.in.y = y;
}
s8 PadUtils_GetRelXImpl(Input* input) {
return input->rel.in.x;
}
s8 PadUtils_GetRelYImpl(Input* input) {
return input->rel.in.y;
}
s8 PadUtils_GetRelX(Input* input) {
return PadUtils_GetRelXImpl(input);
}
s8 PadUtils_GetRelY(Input* input) {
return PadUtils_GetRelYImpl(input);
}
void PadUtils_UpdateRelXY(Input* input) {
s32 curX, curY;
s32 relX, relY;
curX = PadUtils_GetCurX(input);
curY = PadUtils_GetCurY(input);
if (curX > 7) {
relX = (curX < 0x43) ? curX - 7 : 0x43 - 7;
} else if (curX < -7) {
relX = (curX > -0x43) ? curX + 7 : -0x43 + 7;
} else {
relX = 0;
}
if (curY > 7) {
relY = (curY < 0x43) ? curY - 7 : 0x43 - 7;
} else if (curY < -7) {
relY = (curY > -0x43) ? curY + 7 : -0x43 + 7;
} else {
relY = 0;
}
PadUtils_SetRelXY(input, relX, relY);
}

View file

@ -935,7 +935,7 @@ void func_800D2A98(Mtx* mtx, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
MtxF mf;
func_800D2A34(&mf, arg1, arg2, arg3, arg4);
func_801064E0(&mf, mtx);
guMtxF2L(&mf, mtx);
}
void func_800D2AE4(Mtx* mtx, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {

View file

@ -299,7 +299,7 @@ void func_8009638C(Gfx** displayList, u32 source, u32 tlut, u16 width, u16 heigh
if ((fmt == G_IM_FMT_RGBA) && (SREG(26) == 0)) {
bg->b.frameW = width * 4;
bg->b.frameH = height * 4;
func_80104B00(bg);
guS2DInitBg(bg);
gDPSetOtherMode(displayListHead++, mode0 | G_TL_TILE | G_TD_CLAMP | G_TP_NONE | G_CYC_COPY | G_PM_NPRIMITIVE,
G_AC_THRESHOLD | G_ZS_PIXEL | G_RM_NOOP | G_RM_NOOP2);
gSPBgRectCopy(displayListHead++, bg);

View file

@ -9,7 +9,7 @@ typedef struct {
} struct_exceptionPreamble;
u64 osClockRate = OS_CLOCK_RATE;
u32 osViClock = VI_NTSC_CLOCK;
s32 osViClock = VI_NTSC_CLOCK;
u32 __osShutdown = 0;
u32 __OSGlobalIntMask = 0x003FFF01;

5
src/libultra_code/absf.c Normal file
View file

@ -0,0 +1,5 @@
#include <global.h>
f32 absf(f32 a) {
return fabsf(a);
}

View file

@ -0,0 +1,28 @@
#include <global.h>
void guS2DInitBg(uObjBg* bg) {
u16 shift;
u32 size;
s32 tmem;
tmem = (bg->b.imageFmt == G_IM_FMT_CI) ? 0x100 : 0x200;
shift = (6 - bg->b.imageSiz);
if (bg->b.imageLoad == G_BGLT_LOADBLOCK) {
bg->b.tmemW = bg->b.imageW >> shift;
bg->b.tmemH = (tmem / bg->b.tmemW) * 4;
bg->b.tmemSizeW = bg->b.tmemW * 2;
bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW;
bg->b.tmemLoadSH = (bg->b.tmemSize >> 1) - 1;
bg->b.tmemLoadTH = (0x7FF / bg->b.tmemW) + 1;
} else { // G_BGLT_LOADTILE
bg->b.tmemW = (bg->b.frameW >> shift) + 3;
bg->b.tmemH = (tmem / bg->b.tmemW) * 4;
bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2;
size = bg->b.tmemH * bg->b.tmemSizeW;
bg->b.tmemSize = (size >> 16);
bg->b.tmemLoadSH = (size >> 0) & 0xFFFF;
bg->b.tmemLoadTH = bg->b.tmemH - 1;
}
}

View file

@ -4,8 +4,6 @@
// TODO: rename these
// SM64 OOT
#define guMtxF2L func_801064E0 // believed to be correct name, needs confirmation.
s32 __osDisableInt();
void __osRestoreInt(s32);
void __osEnqueueAndYield(OSThread**);

View file

@ -0,0 +1,24 @@
#include <global.h>
#include <ultra64/hardware.h>
s32 osAiSetFrequency(u32 frequency) {
u32 dacRate;
u8 bitrate;
f32 dacRateF;
dacRateF = ((f32)osViClock / frequency) + 0.5f;
dacRate = dacRateF;
if (dacRate < 132) {
return -1;
}
bitrate = (dacRate / 66);
if (bitrate > 16) {
bitrate = 16;
}
HW_REG(AI_DACRATE_REG, u32) = dacRate - 1;
HW_REG(AI_BITRATE_REG, u32) = bitrate - 1;
return osViClock / (s32)dacRate;
}

View file

@ -0,0 +1,42 @@
#include <global.h>
s32 osSetTimer(OSTimer* timer, OSTime countdown, OSTime interval, OSMesgQueue* mq, OSMesg msg) {
OSTime time;
OSTimer* next;
u32 count;
u32 value;
s32 prevInt;
timer->next = NULL;
timer->prev = NULL;
timer->interval = interval;
if (countdown != 0) {
timer->value = countdown;
} else {
timer->value = interval;
}
timer->mq = mq;
timer->msg = msg;
prevInt = __osDisableInt();
if (__osTimerList->next != __osTimerList) {
if (1) {}
next = __osTimerList->next;
count = osGetCount();
value = count - __osTimerCounter;
if (value < next->value) {
next->value -= value;
} else {
next->value = 1;
}
}
time = __osInsertTimer(timer);
__osSetTimerIntr(__osTimerList->next->value);
__osRestoreInt(prevInt);
return 0;
}

View file

@ -0,0 +1,5 @@
#include <global.h>
void osSpTaskYield() {
__osSpSetStatus(SP_STATUS_SIG3);
}

View file

@ -0,0 +1,21 @@
#include <global.h>
u32 osSpTaskYielded(OSTask* task) {
u32 ret;
u32 status;
status = __osSpGetStatus();
if (status & SP_STATUS_YIELDED) {
ret = OS_TASK_YIELDED;
} else {
ret = 0;
}
if (status & SP_STATUS_YIELD) {
task->t.flags |= ret;
task->t.flags &= ~OS_TASK_DP_WAIT;
}
return ret;
}

View file

@ -0,0 +1,28 @@
#include <global.h>
s32 osStopTimer(OSTimer* timer) {
register s32 prevInt;
OSTimer* next;
if (!timer->next) {
return -1;
}
prevInt = __osDisableInt();
next = timer->next;
if (next != __osTimerList) {
next->value += timer->value;
}
timer->prev->next = timer->next;
timer->next->prev = timer->prev;
timer->next = NULL;
timer->prev = NULL;
if (__osTimerList->next == __osTimerList) {
__osSetCompare(0);
}
__osRestoreInt(prevInt);
return 0;
}

View file

@ -0,0 +1,50 @@
#include <global.h>
void guRotateF(f32 m[4][4], f32 a, f32 x, f32 y, f32 z) {
static f32 D_80134D10 = M_PI / 180.0f;
f32 sine;
f32 cosine;
f32 ab;
f32 bc;
f32 ca;
f32 t;
f32 xs;
f32 ys;
f32 zs;
guNormalize(&x, &y, &z);
a = a * D_80134D10;
sine = sinf(a);
cosine = cosf(a);
ab = x * y * (1 - cosine);
bc = y * z * (1 - cosine);
ca = z * x * (1 - cosine);
guMtxIdentF(m);
xs = x * sine;
ys = y * sine;
zs = z * sine;
t = x * x;
m[0][0] = (1 - t) * cosine + t;
m[2][1] = bc - xs;
m[1][2] = bc + xs;
t = y * y;
m[1][1] = (1 - t) * cosine + t;
m[2][0] = ca + ys;
m[0][2] = ca - ys;
t = z * z;
m[2][2] = (1 - t) * cosine + t;
m[1][0] = ab - zs;
m[0][1] = ab + zs;
}
void guRotate(Mtx* m, f32 a, f32 x, f32 y, f32 z) {
f32 mf[4][4];
guRotateF(mf, a, x, y, z);
guMtxF2L(mf, m);
}

10
src/libultra_code/sqrt.c Normal file
View file

@ -0,0 +1,10 @@
#include <global.h>
#ifndef __GNUC__
#pragma intrinsic(sqrt)
#define __builtin_sqrt sqrt
#endif
f64 sqrt(f64 f) {
return __builtin_sqrt(f);
}

View file

@ -1,12 +1,10 @@
#include <math.h>
float sqrtf(float f);
#include <global.h>
#ifndef __GNUC__
#pragma intrinsic(sqrtf)
#define __builtin_sqrtf sqrtf
#endif
float sqrtf(float f) {
f32 sqrtf(f32 f) {
return __builtin_sqrtf(f);
}