From 22e050c8f281f635a2094e646627e1d592292930 Mon Sep 17 00:00:00 2001 From: shawlucas Date: Sun, 19 Apr 2020 01:03:22 -0700 Subject: [PATCH 01/11] started microcode decomp --- asm/code_800B29D0.s | 2 +- asm/code_800B2E30.s | 2 +- asm/code_80101B40.s | 2 +- asm/code_80103DC0.s | 2 +- asm/code_80104450.s | 2 +- asm/guMtxIdentF.s | 32 +++++++++++++ .../code/code_801031F0/func_801032B0.s | 2 +- .../code/guLookAtRef/guLookAtReflect.s | 30 +++++++++++++ .../code/guLookAtRef/guLookAtReflectF.s} | 45 +------------------ .../code/z_player_lib/func_80091A24.s | 2 +- asm/non_matchings/code/z_view/func_800AB9EC.s | 2 +- include/functions.h | 6 +-- spec | 4 +- src/code/z_view.c | 8 ++-- src/libultra_code/guLookAtRef.c | 7 +++ src/libultra_code/libultra_internal.h | 2 +- 16 files changed, 89 insertions(+), 61 deletions(-) create mode 100644 asm/guMtxIdentF.s create mode 100644 asm/non_matchings/code/guLookAtRef/guLookAtReflect.s rename asm/{code_80101B90.s => non_matchings/code/guLookAtRef/guLookAtReflectF.s} (82%) create mode 100644 src/libultra_code/guLookAtRef.c diff --git a/asm/code_800B29D0.s b/asm/code_800B29D0.s index e060dbc26ac..3fade8e8d53 100644 --- a/asm/code_800B29D0.s +++ b/asm/code_800B29D0.s @@ -51,7 +51,7 @@ glabel func_800B29D0 /* B29C00 800B2A60 E7A00018 */ swc1 $f0, 0x18($sp) /* B29C04 800B2A64 E7A0001C */ swc1 $f0, 0x1c($sp) /* B29C08 800B2A68 E7A00024 */ swc1 $f0, 0x24($sp) -/* B29C0C 800B2A6C 0C04078D */ jal func_80101E34 +/* B29C0C 800B2A6C 0C04078D */ jal guLookAtReflect /* B29C10 800B2A70 E7AA0020 */ swc1 $f10, 0x20($sp) /* B29C14 800B2A74 8FBF0034 */ lw $ra, 0x34($sp) /* B29C18 800B2A78 8FB00030 */ lw $s0, 0x30($sp) diff --git a/asm/code_800B2E30.s b/asm/code_800B2E30.s index 450bc3ebb86..87c524ad703 100644 --- a/asm/code_800B2E30.s +++ b/asm/code_800B2E30.s @@ -139,7 +139,7 @@ glabel func_800B2E30 /* B2A194 800B2FF4 E7A00018 */ swc1 $f0, 0x18($sp) /* B2A198 800B2FF8 E7A0001C */ swc1 $f0, 0x1c($sp) /* B2A19C 800B2FFC E7A00024 */ swc1 $f0, 0x24($sp) -/* B2A1A0 800B3000 0C04078D */ jal func_80101E34 +/* B2A1A0 800B3000 0C04078D */ jal guLookAtReflect /* B2A1A4 800B3004 E7AA0020 */ swc1 $f10, 0x20($sp) /* B2A1A8 800B3008 8FBF0034 */ lw $ra, 0x34($sp) /* B2A1AC 800B300C 8FB00030 */ lw $s0, 0x30($sp) diff --git a/asm/code_80101B40.s b/asm/code_80101B40.s index 411db6f12d2..36b57e2d175 100644 --- a/asm/code_80101B40.s +++ b/asm/code_80101B40.s @@ -9,7 +9,7 @@ .align 4 -glabel func_80101B40 +glabel guMtxIdentF /* B78CE0 80101B40 3C083F80 */ lui $t0, 0x3f80 /* B78CE4 80101B44 AC880000 */ sw $t0, ($a0) /* B78CE8 80101B48 AC800004 */ sw $zero, 4($a0) diff --git a/asm/code_80103DC0.s b/asm/code_80103DC0.s index 01d666e00e3..d48f8cc0218 100644 --- a/asm/code_80103DC0.s +++ b/asm/code_80103DC0.s @@ -77,7 +77,7 @@ glabel func_80103E20 /* 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 func_80101B40 +/* 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) diff --git a/asm/code_80104450.s b/asm/code_80104450.s index 292479638a4..07fd9f3e3a2 100644 --- a/asm/code_80104450.s +++ b/asm/code_80104450.s @@ -15,7 +15,7 @@ glabel func_80104450 /* B7B5F8 80104458 AFA5001C */ sw $a1, 0x1c($sp) /* B7B5FC 8010445C AFA60020 */ sw $a2, 0x20($sp) /* B7B600 80104460 AFA70024 */ sw $a3, 0x24($sp) -/* B7B604 80104464 0C0406D0 */ jal func_80101B40 +/* B7B604 80104464 0C0406D0 */ jal guMtxIdentF /* B7B608 80104468 AFA40018 */ sw $a0, 0x18($sp) /* B7B60C 8010446C C7A40020 */ lwc1 $f4, 0x20($sp) /* B7B610 80104470 C7A6001C */ lwc1 $f6, 0x1c($sp) diff --git a/asm/guMtxIdentF.s b/asm/guMtxIdentF.s new file mode 100644 index 00000000000..993ed27ab14 --- /dev/null +++ b/asm/guMtxIdentF.s @@ -0,0 +1,32 @@ +.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 + +## Handwritten ASM + +glabel guMtxIdentF +/* B78CE0 80101B40 3C083F80 */ lui $t0, 0x3f80 +/* B78CE4 80101B44 AC880000 */ sw $t0, ($a0) +/* B78CE8 80101B48 AC800004 */ sw $zero, 4($a0) +/* B78CEC 80101B4C AC800008 */ sw $zero, 8($a0) +/* B78CF0 80101B50 AC80000C */ sw $zero, 0xc($a0) +/* B78CF4 80101B54 AC800010 */ sw $zero, 0x10($a0) +/* B78CF8 80101B58 AC880014 */ sw $t0, 0x14($a0) +/* B78CFC 80101B5C AC800018 */ sw $zero, 0x18($a0) +/* B78D00 80101B60 AC80001C */ sw $zero, 0x1c($a0) +/* B78D04 80101B64 AC800020 */ sw $zero, 0x20($a0) +/* B78D08 80101B68 AC800024 */ sw $zero, 0x24($a0) +/* B78D0C 80101B6C AC880028 */ sw $t0, 0x28($a0) +/* B78D10 80101B70 AC80002C */ sw $zero, 0x2c($a0) +/* B78D14 80101B74 AC800030 */ sw $zero, 0x30($a0) +/* B78D18 80101B78 AC800034 */ sw $zero, 0x34($a0) +/* B78D1C 80101B7C AC800038 */ sw $zero, 0x38($a0) +/* B78D20 80101B80 03E00008 */ jr $ra +/* B78D24 80101B84 AC88003C */ sw $t0, 0x3c($a0) diff --git a/asm/non_matchings/code/code_801031F0/func_801032B0.s b/asm/non_matchings/code/code_801031F0/func_801032B0.s index 7c2133afea6..67a66ec3c1b 100644 --- a/asm/non_matchings/code/code_801031F0/func_801032B0.s +++ b/asm/non_matchings/code/code_801031F0/func_801032B0.s @@ -18,7 +18,7 @@ glabel func_801032B0 /* B7A46C 801032CC AFA7009C */ sw $a3, 0x9c($sp) /* B7A470 801032D0 AFA40090 */ sw $a0, 0x90($sp) /* B7A474 801032D4 AFA50094 */ sw $a1, 0x94($sp) -/* B7A478 801032D8 0C0406D0 */ jal func_80101B40 +/* B7A478 801032D8 0C0406D0 */ jal guMtxIdentF /* B7A47C 801032DC AFA60098 */ sw $a2, 0x98($sp) /* B7A480 801032E0 C7A800A8 */ lwc1 $f8, 0xa8($sp) /* B7A484 801032E4 C7A6009C */ lwc1 $f6, 0x9c($sp) diff --git a/asm/non_matchings/code/guLookAtRef/guLookAtReflect.s b/asm/non_matchings/code/guLookAtRef/guLookAtReflect.s new file mode 100644 index 00000000000..9f35fab6d0e --- /dev/null +++ b/asm/non_matchings/code/guLookAtRef/guLookAtReflect.s @@ -0,0 +1,30 @@ +glabel guLookAtReflect +/* B78FD4 80101E34 27BDFF90 */ addiu $sp, $sp, -0x70 +/* B78FD8 80101E38 44856000 */ mtc1 $a1, $f12 +/* B78FDC 80101E3C 44867000 */ mtc1 $a2, $f14 +/* B78FE0 80101E40 C7A40080 */ lwc1 $f4, 0x80($sp) +/* B78FE4 80101E44 C7A60084 */ lwc1 $f6, 0x84($sp) +/* B78FE8 80101E48 C7A80088 */ lwc1 $f8, 0x88($sp) +/* B78FEC 80101E4C C7AA008C */ lwc1 $f10, 0x8c($sp) +/* B78FF0 80101E50 C7B00090 */ lwc1 $f16, 0x90($sp) +/* B78FF4 80101E54 C7B20094 */ lwc1 $f18, 0x94($sp) +/* B78FF8 80101E58 AFBF002C */ sw $ra, 0x2c($sp) +/* B78FFC 80101E5C AFA40070 */ sw $a0, 0x70($sp) +/* B79000 80101E60 44056000 */ mfc1 $a1, $f12 +/* B79004 80101E64 44067000 */ mfc1 $a2, $f14 +/* B79008 80101E68 AFA7007C */ sw $a3, 0x7c($sp) +/* B7900C 80101E6C 27A40030 */ addiu $a0, $sp, 0x30 +/* B79010 80101E70 E7A40010 */ swc1 $f4, 0x10($sp) +/* B79014 80101E74 E7A60014 */ swc1 $f6, 0x14($sp) +/* B79018 80101E78 E7A80018 */ swc1 $f8, 0x18($sp) +/* B7901C 80101E7C E7AA001C */ swc1 $f10, 0x1c($sp) +/* B79020 80101E80 E7B00020 */ swc1 $f16, 0x20($sp) +/* B79024 80101E84 0C0406E4 */ jal guLookAtReflectF +/* B79028 80101E88 E7B20024 */ swc1 $f18, 0x24($sp) +/* B7902C 80101E8C 27A40030 */ addiu $a0, $sp, 0x30 +/* B79030 80101E90 0C041938 */ jal func_801064E0 +/* B79034 80101E94 8FA50070 */ lw $a1, 0x70($sp) +/* B79038 80101E98 8FBF002C */ lw $ra, 0x2c($sp) +/* B7903C 80101E9C 27BD0070 */ addiu $sp, $sp, 0x70 +/* B79040 80101EA0 03E00008 */ jr $ra +/* B79044 80101EA4 00000000 */ nop diff --git a/asm/code_80101B90.s b/asm/non_matchings/code/guLookAtRef/guLookAtReflectF.s similarity index 82% rename from asm/code_80101B90.s rename to asm/non_matchings/code/guLookAtRef/guLookAtReflectF.s index 287983aaa7a..a18e0650e40 100644 --- a/asm/code_80101B90.s +++ b/asm/non_matchings/code/guLookAtRef/guLookAtReflectF.s @@ -1,15 +1,4 @@ -.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_80101B90 +glabel guLookAtReflectF /* B78D30 80101B90 27BDFF88 */ addiu $sp, $sp, -0x78 /* B78D34 80101B94 AFBF0044 */ sw $ra, 0x44($sp) /* B78D38 80101B98 F7BE0038 */ sdc1 $f30, 0x38($sp) @@ -21,7 +10,7 @@ glabel func_80101B90 /* B78D50 80101BB0 AFA5007C */ sw $a1, 0x7c($sp) /* B78D54 80101BB4 AFA60080 */ sw $a2, 0x80($sp) /* B78D58 80101BB8 AFA70084 */ sw $a3, 0x84($sp) -/* B78D5C 80101BBC 0C0406D0 */ jal func_80101B40 +/* B78D5C 80101BBC 0C0406D0 */ jal guMtxIdentF /* B78D60 80101BC0 AFA40078 */ sw $a0, 0x78($sp) /* B78D64 80101BC4 C7A40088 */ lwc1 $f4, 0x88($sp) /* B78D68 80101BC8 C7A6007C */ lwc1 $f6, 0x7c($sp) @@ -180,33 +169,3 @@ glabel func_80101B90 /* B78FCC 80101E2C 03E00008 */ jr $ra /* B78FD0 80101E30 27BD0078 */ addiu $sp, $sp, 0x78 -glabel func_80101E34 -/* B78FD4 80101E34 27BDFF90 */ addiu $sp, $sp, -0x70 -/* B78FD8 80101E38 44856000 */ mtc1 $a1, $f12 -/* B78FDC 80101E3C 44867000 */ mtc1 $a2, $f14 -/* B78FE0 80101E40 C7A40080 */ lwc1 $f4, 0x80($sp) -/* B78FE4 80101E44 C7A60084 */ lwc1 $f6, 0x84($sp) -/* B78FE8 80101E48 C7A80088 */ lwc1 $f8, 0x88($sp) -/* B78FEC 80101E4C C7AA008C */ lwc1 $f10, 0x8c($sp) -/* B78FF0 80101E50 C7B00090 */ lwc1 $f16, 0x90($sp) -/* B78FF4 80101E54 C7B20094 */ lwc1 $f18, 0x94($sp) -/* B78FF8 80101E58 AFBF002C */ sw $ra, 0x2c($sp) -/* B78FFC 80101E5C AFA40070 */ sw $a0, 0x70($sp) -/* B79000 80101E60 44056000 */ mfc1 $a1, $f12 -/* B79004 80101E64 44067000 */ mfc1 $a2, $f14 -/* B79008 80101E68 AFA7007C */ sw $a3, 0x7c($sp) -/* B7900C 80101E6C 27A40030 */ addiu $a0, $sp, 0x30 -/* B79010 80101E70 E7A40010 */ swc1 $f4, 0x10($sp) -/* B79014 80101E74 E7A60014 */ swc1 $f6, 0x14($sp) -/* B79018 80101E78 E7A80018 */ swc1 $f8, 0x18($sp) -/* B7901C 80101E7C E7AA001C */ swc1 $f10, 0x1c($sp) -/* B79020 80101E80 E7B00020 */ swc1 $f16, 0x20($sp) -/* B79024 80101E84 0C0406E4 */ jal func_80101B90 -/* B79028 80101E88 E7B20024 */ swc1 $f18, 0x24($sp) -/* B7902C 80101E8C 27A40030 */ addiu $a0, $sp, 0x30 -/* B79030 80101E90 0C041938 */ jal func_801064E0 -/* B79034 80101E94 8FA50070 */ lw $a1, 0x70($sp) -/* B79038 80101E98 8FBF002C */ lw $ra, 0x2c($sp) -/* B7903C 80101E9C 27BD0070 */ addiu $sp, $sp, 0x70 -/* B79040 80101EA0 03E00008 */ jr $ra -/* B79044 80101EA4 00000000 */ nop diff --git a/asm/non_matchings/code/z_player_lib/func_80091A24.s b/asm/non_matchings/code/z_player_lib/func_80091A24.s index e7501dc6ef3..e83abfce6fd 100644 --- a/asm/non_matchings/code/z_player_lib/func_80091A24.s +++ b/asm/non_matchings/code/z_player_lib/func_80091A24.s @@ -312,7 +312,7 @@ glabel func_80091A24 /* B09074 80091ED4 E7A00024 */ swc1 $f0, 0x24($sp) /* B09078 80091ED8 E7A0001C */ swc1 $f0, 0x1c($sp) /* B0907C 80091EDC E7A60020 */ swc1 $f6, 0x20($sp) -/* B09080 80091EE0 0C04078D */ jal func_80101E34 +/* B09080 80091EE0 0C04078D */ jal guLookAtReflect /* B09084 80091EE4 E7A40018 */ swc1 $f4, 0x18($sp) /* B09088 80091EE8 8FA30114 */ lw $v1, 0x114($sp) /* B0908C 80091EEC 3C0FDA38 */ lui $t7, (0xDA380005 >> 16) # lui $t7, 0xda38 diff --git a/asm/non_matchings/code/z_view/func_800AB9EC.s b/asm/non_matchings/code/z_view/func_800AB9EC.s index e381a718fe6..496060181d0 100644 --- a/asm/non_matchings/code/z_view/func_800AB9EC.s +++ b/asm/non_matchings/code/z_view/func_800AB9EC.s @@ -296,7 +296,7 @@ glabel func_800AB9EC /* B22F88 800ABDE8 C60A0044 */ lwc1 $f10, 0x44($s0) /* B22F8C 800ABDEC E7AA0020 */ swc1 $f10, 0x20($sp) /* B22F90 800ABDF0 C6120048 */ lwc1 $f18, 0x48($s0) -/* B22F94 800ABDF4 0C04078D */ jal func_80101E34 +/* B22F94 800ABDF4 0C04078D */ jal guLookAtReflect /* B22F98 800ABDF8 E7B20024 */ swc1 $f18, 0x24($sp) /* B22F9C 800ABDFC 0240C025 */ move $t8, $s2 /* B22FA0 800ABE00 02007025 */ move $t6, $s0 diff --git a/include/functions.h b/include/functions.h index 5574a0f4bce..7f57a3ec899 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2335,9 +2335,9 @@ s16 sins(u16); // ? func_80101910(?); // ? func_801019E0(?); // ? func_80101AA4(?); -// ? func_80101B40(?); -// ? func_80101B90(?); -void func_80101E34(Mtx*, f32, f32, f32, f32, f32, f32, f32, f32, f32); +// ? guMtxIdentF(?); +// ? guLookAtReflectF(?); +void guLookAtReflect(Mtx*, f32, f32, f32, f32, f32, f32, f32, f32, f32); // ? func_80101EB0(?); // ? func_801021E4(?); // ? osStopTimer(?); diff --git a/spec b/spec index f566efa16eb..6cee2d81e88 100644 --- a/spec +++ b/spec @@ -516,8 +516,8 @@ beginseg include "build/data/code_801014A0.bss.o" include "build/asm/code_80101910.o" include "build/data/code_80101910.bss.o" - include "build/asm/code_80101B40.o" - include "build/asm/code_80101B90.o" + include "build/asm/guMtxIdentf.o" + include "build/src/libultra_code/guLookAtRef.o" include "build/asm/code_80101EB0.o" include "build/asm/code_80102330.o" include "build/asm/code_80102420.o" diff --git a/src/code/z_view.c b/src/code/z_view.c index 12a92eb3308..af90addb244 100644 --- a/src/code/z_view.c +++ b/src/code/z_view.c @@ -351,7 +351,7 @@ s32 func_800AAA9C(View* view) { } func_800ABE74(view->eye.x, view->eye.y, view->eye.z); - func_80101E34(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, + guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, view->unk_40.x, view->unk_40.y, view->unk_40.z); view->viewing = *viewing; @@ -500,7 +500,7 @@ s32 func_800AB560(View* view) { } func_800ABE74(view->eye.x, view->eye.y, view->eye.z); - func_80101E34(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, + guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, view->unk_40.x, view->unk_40.y, view->unk_40.z); view->viewing = *viewing; @@ -518,7 +518,7 @@ s32 func_800AB944(View* view) { Graph_OpenDisps(dispRefs, view->gfxCtx, "../z_view.c", 878); func_800ABE74(view->eye.x, view->eye.y, view->eye.z); - func_80101E34(view->viewingPtr, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, + guLookAtReflect(view->viewingPtr, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, view->unk_40.x, view->unk_40.y, view->unk_40.z); Graph_CloseDisps(dispRefs, view->gfxCtx, "../z_view.c", 886); @@ -582,7 +582,7 @@ s32 func_800AB9EC(View* view, s32 arg1, Gfx** gfxp) { view->viewingPtr = viewing; func_800ABE74(view->eye.x, view->eye.y, view->eye.z); - func_80101E34(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, + guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, view->unk_40.x, view->unk_40.y, view->unk_40.z); view->viewing = *viewing; diff --git a/src/libultra_code/guLookAtRef.c b/src/libultra_code/guLookAtRef.c new file mode 100644 index 00000000000..402a76d1561 --- /dev/null +++ b/src/libultra_code/guLookAtRef.c @@ -0,0 +1,7 @@ +#include +#include + +#pragma GLOBAL_ASM("asm/non_matchings/code/guLookAtRef/guLookAtReflectF.s") + +#pragma GLOBAL_ASM("asm/non_matchings/code/guLookAtRef/guLookAtReflect.s") + diff --git a/src/libultra_code/libultra_internal.h b/src/libultra_code/libultra_internal.h index 373a78d1e64..9c54f1fd44f 100644 --- a/src/libultra_code/libultra_internal.h +++ b/src/libultra_code/libultra_internal.h @@ -4,7 +4,7 @@ // TODO: rename these // SM64 OOT -#define guMtxIdentF func_80101B40 +#define guMtxIdentF guMtxIdentF #define guMtxF2L func_801064E0 s32 __osDisableInt(); From f56cca3b2289fa2777784f4d7e1e5933b06789a3 Mon Sep 17 00:00:00 2001 From: Lucas Shaw Date: Sun, 19 Apr 2020 02:02:02 -0700 Subject: [PATCH 02/11] Modified spec to fix error --- spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec b/spec index 6cee2d81e88..f63f9096a34 100644 --- a/spec +++ b/spec @@ -516,7 +516,7 @@ beginseg include "build/data/code_801014A0.bss.o" include "build/asm/code_80101910.o" include "build/data/code_80101910.bss.o" - include "build/asm/guMtxIdentf.o" + include "build/asm/guMtxIdentF.o" include "build/src/libultra_code/guLookAtRef.o" include "build/asm/code_80101EB0.o" include "build/asm/code_80102330.o" From 1ceeb8e5627667dfef4a0bba270f29188f1c5540 Mon Sep 17 00:00:00 2001 From: shawlucas Date: Mon, 20 Apr 2020 18:08:14 -0700 Subject: [PATCH 03/11] osContGetQuery OK --- asm/code_800FCD40.s | 2 +- .../code/code_801031F0/func_8010328C.s | 11 ----------- include/functions.h | 2 +- src/code/padmgr.c | 2 +- src/libultra_code/code_801031F0.c | 16 +++++++++++++++- 5 files changed, 18 insertions(+), 15 deletions(-) delete mode 100644 asm/non_matchings/code/code_801031F0/func_8010328C.s diff --git a/asm/code_800FCD40.s b/asm/code_800FCD40.s index 32c06f144dd..afe483f1a2e 100644 --- a/asm/code_800FCD40.s +++ b/asm/code_800FCD40.s @@ -42,7 +42,7 @@ glabel func_800FCD40 /* B73F4C 800FCDAC 24060001 */ li $a2, 1 /* B73F50 800FCDB0 0C000CA0 */ jal osRecvMesg /* B73F54 800FCDB4 AFA70024 */ sw $a3, 0x24($sp) -/* B73F58 800FCDB8 0C040CA3 */ jal func_8010328C +/* B73F58 800FCDB8 0C040CA3 */ jal osContGetQuery /* B73F5C 800FCDBC 02002025 */ move $a0, $s0 /* B73F60 800FCDC0 8FA70024 */ lw $a3, 0x24($sp) /* B73F64 800FCDC4 02001025 */ move $v0, $s0 diff --git a/asm/non_matchings/code/code_801031F0/func_8010328C.s b/asm/non_matchings/code/code_801031F0/func_8010328C.s deleted file mode 100644 index 905566dae66..00000000000 --- a/asm/non_matchings/code/code_801031F0/func_8010328C.s +++ /dev/null @@ -1,11 +0,0 @@ -glabel func_8010328C -/* B7A42C 8010328C 27BDFFE0 */ addiu $sp, $sp, -0x20 -/* B7A430 80103290 AFBF0014 */ sw $ra, 0x14($sp) -/* B7A434 80103294 00802825 */ move $a1, $a0 -/* B7A438 80103298 0C04035B */ jal __osContGetInitData -/* B7A43C 8010329C 27A4001F */ addiu $a0, $sp, 0x1f -/* B7A440 801032A0 8FBF0014 */ lw $ra, 0x14($sp) -/* B7A444 801032A4 27BD0020 */ addiu $sp, $sp, 0x20 -/* B7A448 801032A8 03E00008 */ jr $ra -/* B7A44C 801032AC 00000000 */ nop - diff --git a/include/functions.h b/include/functions.h index 7f57a3ec899..baa1de3a6bb 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2352,7 +2352,7 @@ void guLookAtReflect(Mtx*, f32, f32, f32, f32, f32, f32, f32, f32, f32); // ? func_80103010(?); // ? func_801031F0(?); // ? osContStartQuery(?); -// ? func_8010328C(?); +void osContGetQuery(OSContStatus* data); // ? func_801032B0(?); void func_80103A70(UNK_PTR, Gfx*, Hilite*, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s32, s32); diff --git a/src/code/padmgr.c b/src/code/padmgr.c index 1f9daad36a3..745c058e429 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -300,7 +300,7 @@ void PadMgr_HandleRetraceMsg(PadMgr* padmgr) { PadMgr_ProcessInputs(padmgr); osContStartQuery(queue); osRecvMesg(queue, NULL, OS_MESG_BLOCK); - func_8010328C(padmgr); + osContGetQuery(padmgr); PadMgr_UnlockSerialMesgQueue(padmgr, queue); mask = 0; diff --git a/src/libultra_code/code_801031F0.c b/src/libultra_code/code_801031F0.c index 543256a82e6..a18891d774b 100644 --- a/src/libultra_code/code_801031F0.c +++ b/src/libultra_code/code_801031F0.c @@ -3,6 +3,11 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/code_801031F0/func_801031F0.s") +/** + * osContStartQuery: + * Starts to read the values for SI device status and type which are connected to the controller port and joyport connector. +**/ + s32 osContStartQuery(OSMesgQueue* mq) { s32 ret; ret = 0; @@ -19,7 +24,16 @@ s32 osContStartQuery(OSMesgQueue* mq) { return ret; } -#pragma GLOBAL_ASM("asm/non_matchings/code/code_801031F0/func_8010328C.s") +/** + * osContGetQuery: + * Returns the values from osContStartQuery to status. Both functions must be paired for use. +**/ + +void osContGetQuery(OSContStatus* data) +{ + u8 pattern; + __osContGetInitData(&pattern, data); +} #pragma GLOBAL_ASM("asm/non_matchings/code/code_801031F0/func_801032B0.s") From 2ec1e3a7c639c8a96e8da40408dd78dcd2cad00f Mon Sep 17 00:00:00 2001 From: shawlucas Date: Mon, 20 Apr 2020 19:28:37 -0700 Subject: [PATCH 04/11] Decompiled guLookAtHilite.c --- .../code/code_801031F0/func_801031F0.s | 10 - .../code/code_801031F0/func_801032B0.s | 519 ------------------ .../code/code_801031F0/func_80103A70.s | 4 +- include/functions.h | 7 +- spec | 1 + src/code/irqmgr.c | 2 +- src/code/z_actor.c | 5 +- src/code/z_view.c | 8 +- src/libultra_code/code_801031F0.c | 18 +- src/libultra_code/guLookAtHilite.c | 176 ++++++ src/libultra_code/guLookAtRef.c | 1 - 11 files changed, 198 insertions(+), 553 deletions(-) delete mode 100644 asm/non_matchings/code/code_801031F0/func_801031F0.s delete mode 100644 asm/non_matchings/code/code_801031F0/func_801032B0.s create mode 100644 src/libultra_code/guLookAtHilite.c diff --git a/asm/non_matchings/code/code_801031F0/func_801031F0.s b/asm/non_matchings/code/code_801031F0/func_801031F0.s deleted file mode 100644 index 1716138a04d..00000000000 --- a/asm/non_matchings/code/code_801031F0/func_801031F0.s +++ /dev/null @@ -1,10 +0,0 @@ -glabel func_801031F0 -/* B7A390 801031F0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B7A394 801031F4 AFBF0014 */ sw $ra, 0x14($sp) -/* B7A398 801031F8 0C0419E8 */ jal __osSpSetPc -/* B7A39C 801031FC 00002025 */ move $a0, $zero -/* B7A3A0 80103200 8FBF0014 */ lw $ra, 0x14($sp) -/* B7A3A4 80103204 27BD0018 */ addiu $sp, $sp, 0x18 -/* B7A3A8 80103208 03E00008 */ jr $ra -/* B7A3AC 8010320C 00000000 */ nop - diff --git a/asm/non_matchings/code/code_801031F0/func_801032B0.s b/asm/non_matchings/code/code_801031F0/func_801032B0.s deleted file mode 100644 index 67a66ec3c1b..00000000000 --- a/asm/non_matchings/code/code_801031F0/func_801032B0.s +++ /dev/null @@ -1,519 +0,0 @@ -.late_rodata - -glabel D_8014B270 - .double 0.1 - -glabel D_8014B278 - .double 0.1 - -.text -glabel func_801032B0 -/* B7A450 801032B0 27BDFF70 */ addiu $sp, $sp, -0x90 -/* B7A454 801032B4 AFBF003C */ sw $ra, 0x3c($sp) -/* B7A458 801032B8 F7BC0030 */ sdc1 $f28, 0x30($sp) -/* B7A45C 801032BC F7BA0028 */ sdc1 $f26, 0x28($sp) -/* B7A460 801032C0 F7B80020 */ sdc1 $f24, 0x20($sp) -/* B7A464 801032C4 F7B60018 */ sdc1 $f22, 0x18($sp) -/* B7A468 801032C8 F7B40010 */ sdc1 $f20, 0x10($sp) -/* B7A46C 801032CC AFA7009C */ sw $a3, 0x9c($sp) -/* B7A470 801032D0 AFA40090 */ sw $a0, 0x90($sp) -/* B7A474 801032D4 AFA50094 */ sw $a1, 0x94($sp) -/* B7A478 801032D8 0C0406D0 */ jal guMtxIdentF -/* B7A47C 801032DC AFA60098 */ sw $a2, 0x98($sp) -/* B7A480 801032E0 C7A800A8 */ lwc1 $f8, 0xa8($sp) -/* B7A484 801032E4 C7A6009C */ lwc1 $f6, 0x9c($sp) -/* B7A488 801032E8 C7AA00AC */ lwc1 $f10, 0xac($sp) -/* B7A48C 801032EC C7A400A0 */ lwc1 $f4, 0xa0($sp) -/* B7A490 801032F0 46064301 */ sub.s $f12, $f8, $f6 -/* B7A494 801032F4 C7A600A4 */ lwc1 $f6, 0xa4($sp) -/* B7A498 801032F8 C7A800B0 */ lwc1 $f8, 0xb0($sp) -/* B7A49C 801032FC 46045381 */ sub.s $f14, $f10, $f4 -/* B7A4A0 80103300 460C6282 */ mul.s $f10, $f12, $f12 -/* B7A4A4 80103304 3C013FF0 */ li $at, 0x3FF00000 # 0.000000 -/* B7A4A8 80103308 46064401 */ sub.s $f16, $f8, $f6 -/* B7A4AC 8010330C 460E7102 */ mul.s $f4, $f14, $f14 -/* B7A4B0 80103310 4481B800 */ mtc1 $at, $f23 -/* B7A4B4 80103314 3C01BFF0 */ li $at, 0xBFF00000 # 0.000000 -/* B7A4B8 80103318 46108182 */ mul.s $f6, $f16, $f16 -/* B7A4BC 8010331C 44815800 */ mtc1 $at, $f11 -/* B7A4C0 80103320 C7B400B8 */ lwc1 $f20, 0xb8($sp) -/* B7A4C4 80103324 4480B000 */ mtc1 $zero, $f22 -/* B7A4C8 80103328 3C018015 */ lui $at, %hi(D_8014B270) -/* B7A4CC 8010332C 46045200 */ add.s $f8, $f10, $f4 -/* B7A4D0 80103330 44805000 */ mtc1 $zero, $f10 -/* B7A4D4 80103334 8FA200D8 */ lw $v0, 0xd8($sp) -/* B7A4D8 80103338 8FA300DC */ lw $v1, 0xdc($sp) -/* B7A4DC 8010333C 46064000 */ add.s $f0, $f8, $f6 -/* B7A4E0 80103340 8FA40090 */ lw $a0, 0x90($sp) -/* B7A4E4 80103344 8FA50094 */ lw $a1, 0x94($sp) -/* B7A4E8 80103348 8FA60098 */ lw $a2, 0x98($sp) -/* B7A4EC 8010334C 46000004 */ sqrt.s $f0, $f0 -/* B7A4F0 80103350 00027040 */ sll $t6, $v0, 1 -/* B7A4F4 80103354 00037840 */ sll $t7, $v1, 1 -/* B7A4F8 80103358 46000121 */ cvt.d.s $f4, $f0 -/* B7A4FC 8010335C 46245203 */ div.d $f8, $f10, $f4 -/* B7A500 80103360 462044A0 */ cvt.s.d $f18, $f8 -/* B7A504 80103364 46126182 */ mul.s $f6, $f12, $f18 -/* B7A508 80103368 E7A60054 */ swc1 $f6, 0x54($sp) -/* B7A50C 8010336C 46127102 */ mul.s $f4, $f14, $f18 -/* B7A510 80103370 C7AA0054 */ lwc1 $f10, 0x54($sp) -/* B7A514 80103374 46128182 */ mul.s $f6, $f16, $f18 -/* B7A518 80103378 E7AA0088 */ swc1 $f10, 0x88($sp) -/* B7A51C 8010337C E7A40050 */ swc1 $f4, 0x50($sp) -/* B7A520 80103380 C7A80050 */ lwc1 $f8, 0x50($sp) -/* B7A524 80103384 C7A400BC */ lwc1 $f4, 0xbc($sp) -/* B7A528 80103388 E7A6004C */ swc1 $f6, 0x4c($sp) -/* B7A52C 8010338C C7AA004C */ lwc1 $f10, 0x4c($sp) -/* B7A530 80103390 E7A80084 */ swc1 $f8, 0x84($sp) -/* B7A534 80103394 C7A80050 */ lwc1 $f8, 0x50($sp) -/* B7A538 80103398 E7AA0080 */ swc1 $f10, 0x80($sp) -/* B7A53C 8010339C C7AA004C */ lwc1 $f10, 0x4c($sp) -/* B7A540 801033A0 46082182 */ mul.s $f6, $f4, $f8 -/* B7A544 801033A4 00000000 */ nop -/* B7A548 801033A8 460AA102 */ mul.s $f4, $f20, $f10 -/* B7A54C 801033AC C7AA00BC */ lwc1 $f10, 0xbc($sp) -/* B7A550 801033B0 46062201 */ sub.s $f8, $f4, $f6 -/* B7A554 801033B4 C7A40054 */ lwc1 $f4, 0x54($sp) -/* B7A558 801033B8 46045182 */ mul.s $f6, $f10, $f4 -/* B7A55C 801033BC E7A80048 */ swc1 $f8, 0x48($sp) -/* B7A560 801033C0 C7A800B4 */ lwc1 $f8, 0xb4($sp) -/* B7A564 801033C4 C7AA004C */ lwc1 $f10, 0x4c($sp) -/* B7A568 801033C8 C7B80048 */ lwc1 $f24, 0x48($sp) -/* B7A56C 801033CC 460A4102 */ mul.s $f4, $f8, $f10 -/* B7A570 801033D0 C7AA00B4 */ lwc1 $f10, 0xb4($sp) -/* B7A574 801033D4 46043201 */ sub.s $f8, $f6, $f4 -/* B7A578 801033D8 C7A60050 */ lwc1 $f6, 0x50($sp) -/* B7A57C 801033DC E7A8004C */ swc1 $f8, 0x4c($sp) -/* B7A580 801033E0 46065102 */ mul.s $f4, $f10, $f6 -/* B7A584 801033E4 C7A80054 */ lwc1 $f8, 0x54($sp) -/* B7A588 801033E8 C7BA004C */ lwc1 $f26, 0x4c($sp) -/* B7A58C 801033EC 4608A282 */ mul.s $f10, $f20, $f8 -/* B7A590 801033F0 C7A80048 */ lwc1 $f8, 0x48($sp) -/* B7A594 801033F4 C7B400C0 */ lwc1 $f20, 0xc0($sp) -/* B7A598 801033F8 460A2181 */ sub.s $f6, $f4, $f10 -/* B7A59C 801033FC C7A40048 */ lwc1 $f4, 0x48($sp) -/* B7A5A0 80103400 46044282 */ mul.s $f10, $f8, $f4 -/* B7A5A4 80103404 E7A60054 */ swc1 $f6, 0x54($sp) -/* B7A5A8 80103408 C7A6004C */ lwc1 $f6, 0x4c($sp) -/* B7A5AC 8010340C C7A8004C */ lwc1 $f8, 0x4c($sp) -/* B7A5B0 80103410 C7BC0054 */ lwc1 $f28, 0x54($sp) -/* B7A5B4 80103414 46083102 */ mul.s $f4, $f6, $f8 -/* B7A5B8 80103418 C7A80054 */ lwc1 $f8, 0x54($sp) -/* B7A5BC 8010341C 46045180 */ add.s $f6, $f10, $f4 -/* B7A5C0 80103420 C7AA0054 */ lwc1 $f10, 0x54($sp) -/* B7A5C4 80103424 460A4102 */ mul.s $f4, $f8, $f10 -/* B7A5C8 80103428 46043000 */ add.s $f0, $f6, $f4 -/* B7A5CC 8010342C C7A60084 */ lwc1 $f6, 0x84($sp) -/* B7A5D0 80103430 46000004 */ sqrt.s $f0, $f0 -/* B7A5D4 80103434 46000221 */ cvt.d.s $f8, $f0 -/* B7A5D8 80103438 4628B283 */ div.d $f10, $f22, $f8 -/* B7A5DC 8010343C C7A80080 */ lwc1 $f8, 0x80($sp) -/* B7A5E0 80103440 462050A0 */ cvt.s.d $f2, $f10 -/* B7A5E4 80103444 4602C602 */ mul.s $f24, $f24, $f2 -/* B7A5E8 80103448 00000000 */ nop -/* B7A5EC 8010344C 4602D682 */ mul.s $f26, $f26, $f2 -/* B7A5F0 80103450 00000000 */ nop -/* B7A5F4 80103454 4602E702 */ mul.s $f28, $f28, $f2 -/* B7A5F8 80103458 00000000 */ nop -/* B7A5FC 8010345C 461C3102 */ mul.s $f4, $f6, $f28 -/* B7A600 80103460 C7A60080 */ lwc1 $f6, 0x80($sp) -/* B7A604 80103464 461A4282 */ mul.s $f10, $f8, $f26 -/* B7A608 80103468 460A2381 */ sub.s $f14, $f4, $f10 -/* B7A60C 8010346C 46183202 */ mul.s $f8, $f6, $f24 -/* B7A610 80103470 C7A40088 */ lwc1 $f4, 0x88($sp) -/* B7A614 80103474 C7A60088 */ lwc1 $f6, 0x88($sp) -/* B7A618 80103478 461C2282 */ mul.s $f10, $f4, $f28 -/* B7A61C 8010347C 460A4401 */ sub.s $f16, $f8, $f10 -/* B7A620 80103480 461A3102 */ mul.s $f4, $f6, $f26 -/* B7A624 80103484 C7A80084 */ lwc1 $f8, 0x84($sp) -/* B7A628 80103488 46184282 */ mul.s $f10, $f8, $f24 -/* B7A62C 8010348C 460A2481 */ sub.s $f18, $f4, $f10 -/* B7A630 80103490 460E7182 */ mul.s $f6, $f14, $f14 -/* B7A634 80103494 00000000 */ nop -/* B7A638 80103498 46108202 */ mul.s $f8, $f16, $f16 -/* B7A63C 8010349C 46083100 */ add.s $f4, $f6, $f8 -/* B7A640 801034A0 46129282 */ mul.s $f10, $f18, $f18 -/* B7A644 801034A4 460A2000 */ add.s $f0, $f4, $f10 -/* B7A648 801034A8 46000004 */ sqrt.s $f0, $f0 -/* B7A64C 801034AC 460001A1 */ cvt.d.s $f6, $f0 -/* B7A650 801034B0 4626B203 */ div.d $f8, $f22, $f6 -/* B7A654 801034B4 462040A0 */ cvt.s.d $f2, $f8 -/* B7A658 801034B8 C7A800C4 */ lwc1 $f8, 0xc4($sp) -/* B7A65C 801034BC 46027102 */ mul.s $f4, $f14, $f2 -/* B7A660 801034C0 00000000 */ nop -/* B7A664 801034C4 46028282 */ mul.s $f10, $f16, $f2 -/* B7A668 801034C8 E7A400B4 */ swc1 $f4, 0xb4($sp) -/* B7A66C 801034CC 46029182 */ mul.s $f6, $f18, $f2 -/* B7A670 801034D0 C7A400C4 */ lwc1 $f4, 0xc4($sp) -/* B7A674 801034D4 E7AA00B8 */ swc1 $f10, 0xb8($sp) -/* B7A678 801034D8 46044282 */ mul.s $f10, $f8, $f4 -/* B7A67C 801034DC C7A400C8 */ lwc1 $f4, 0xc8($sp) -/* B7A680 801034E0 E7A600BC */ swc1 $f6, 0xbc($sp) -/* B7A684 801034E4 4614A182 */ mul.s $f6, $f20, $f20 -/* B7A688 801034E8 460A3200 */ add.s $f8, $f6, $f10 -/* B7A68C 801034EC C7A600C8 */ lwc1 $f6, 0xc8($sp) -/* B7A690 801034F0 46062282 */ mul.s $f10, $f4, $f6 -/* B7A694 801034F4 460A4000 */ add.s $f0, $f8, $f10 -/* B7A698 801034F8 C7A800C4 */ lwc1 $f8, 0xc4($sp) -/* B7A69C 801034FC 46000004 */ sqrt.s $f0, $f0 -/* B7A6A0 80103500 46000121 */ cvt.d.s $f4, $f0 -/* B7A6A4 80103504 4624B183 */ div.d $f6, $f22, $f4 -/* B7A6A8 80103508 C7A400C8 */ lwc1 $f4, 0xc8($sp) -/* B7A6AC 8010350C 462030A0 */ cvt.s.d $f2, $f6 -/* B7A6B0 80103510 4602A502 */ mul.s $f20, $f20, $f2 -/* B7A6B4 80103514 00000000 */ nop -/* B7A6B8 80103518 46024282 */ mul.s $f10, $f8, $f2 -/* B7A6BC 8010351C 00000000 */ nop -/* B7A6C0 80103520 46022182 */ mul.s $f6, $f4, $f2 -/* B7A6C4 80103524 E7B400C0 */ swc1 $f20, 0xc0($sp) -/* B7A6C8 80103528 C7A800C0 */ lwc1 $f8, 0xc0($sp) -/* B7A6CC 8010352C C7A40088 */ lwc1 $f4, 0x88($sp) -/* B7A6D0 80103530 E7AA00C4 */ swc1 $f10, 0xc4($sp) -/* B7A6D4 80103534 46044080 */ add.s $f2, $f8, $f4 -/* B7A6D8 80103538 E7A600C8 */ swc1 $f6, 0xc8($sp) -/* B7A6DC 8010353C C7A60084 */ lwc1 $f6, 0x84($sp) -/* B7A6E0 80103540 C7A400C8 */ lwc1 $f4, 0xc8($sp) -/* B7A6E4 80103544 46065200 */ add.s $f8, $f10, $f6 -/* B7A6E8 80103548 C7AA0080 */ lwc1 $f10, 0x80($sp) -/* B7A6EC 8010354C E7A80050 */ swc1 $f8, 0x50($sp) -/* B7A6F0 80103550 460A2180 */ add.s $f6, $f4, $f10 -/* B7A6F4 80103554 C7A40050 */ lwc1 $f4, 0x50($sp) -/* B7A6F8 80103558 C7A80050 */ lwc1 $f8, 0x50($sp) -/* B7A6FC 8010355C E7A6004C */ swc1 $f6, 0x4c($sp) -/* B7A700 80103560 46044282 */ mul.s $f10, $f8, $f4 -/* B7A704 80103564 C7A4004C */ lwc1 $f4, 0x4c($sp) -/* B7A708 80103568 46021182 */ mul.s $f6, $f2, $f2 -/* B7A70C 8010356C 460A3200 */ add.s $f8, $f6, $f10 -/* B7A710 80103570 C7A6004C */ lwc1 $f6, 0x4c($sp) -/* B7A714 80103574 46062282 */ mul.s $f10, $f4, $f6 -/* B7A718 80103578 D424B270 */ ldc1 $f4, %lo(D_8014B270)($at) -/* B7A71C 8010357C 460A4000 */ add.s $f0, $f8, $f10 -/* B7A720 80103580 46000004 */ sqrt.s $f0, $f0 -/* B7A724 80103584 460003A1 */ cvt.d.s $f14, $f0 -/* B7A728 80103588 462E203C */ c.lt.d $f4, $f14 -/* B7A72C 8010358C 00000000 */ nop -/* B7A730 80103590 45000037 */ bc1f .L80103670 -/* B7A734 80103594 00000000 */ nop -/* B7A738 80103598 462EB183 */ div.d $f6, $f22, $f14 -/* B7A73C 8010359C C7A80050 */ lwc1 $f8, 0x50($sp) -/* B7A740 801035A0 C7AA004C */ lwc1 $f10, 0x4c($sp) -/* B7A744 801035A4 8FA200D8 */ lw $v0, 0xd8($sp) -/* B7A748 801035A8 3C014000 */ li $at, 0x40000000 # 0.000000 -/* B7A74C 801035AC 8FA300DC */ lw $v1, 0xdc($sp) -/* B7A750 801035B0 00024080 */ sll $t0, $v0, 2 -/* B7A754 801035B4 00035880 */ sll $t3, $v1, 2 -/* B7A758 801035B8 46203320 */ cvt.s.d $f12, $f6 -/* B7A75C 801035BC 460C1402 */ mul.s $f16, $f2, $f12 -/* B7A760 801035C0 00000000 */ nop -/* B7A764 801035C4 460C4482 */ mul.s $f18, $f8, $f12 -/* B7A768 801035C8 00000000 */ nop -/* B7A76C 801035CC 460C5502 */ mul.s $f20, $f10, $f12 -/* B7A770 801035D0 00000000 */ nop -/* B7A774 801035D4 46188102 */ mul.s $f4, $f16, $f24 -/* B7A778 801035D8 00000000 */ nop -/* B7A77C 801035DC 461A9182 */ mul.s $f6, $f18, $f26 -/* B7A780 801035E0 46062200 */ add.s $f8, $f4, $f6 -/* B7A784 801035E4 461CA282 */ mul.s $f10, $f20, $f28 -/* B7A788 801035E8 44823000 */ mtc1 $v0, $f6 -/* B7A78C 801035EC 460A4100 */ add.s $f4, $f8, $f10 -/* B7A790 801035F0 46803220 */ cvt.s.w $f8, $f6 -/* B7A794 801035F4 44813000 */ mtc1 $at, $f6 -/* B7A798 801035F8 46082282 */ mul.s $f10, $f4, $f8 -/* B7A79C 801035FC 44884000 */ mtc1 $t0, $f8 -/* B7A7A0 80103600 46065102 */ mul.s $f4, $f10, $f6 -/* B7A7A4 80103604 468042A0 */ cvt.s.w $f10, $f8 -/* B7A7A8 80103608 46045180 */ add.s $f6, $f10, $f4 -/* B7A7AC 8010360C 4600320D */ trunc.w.s $f8, $f6 -/* B7A7B0 80103610 440A4000 */ mfc1 $t2, $f8 -/* B7A7B4 80103614 00000000 */ nop -/* B7A7B8 80103618 ACCA0000 */ sw $t2, ($a2) -/* B7A7BC 8010361C C7AA00B4 */ lwc1 $f10, 0xb4($sp) -/* B7A7C0 80103620 C7A600B8 */ lwc1 $f6, 0xb8($sp) -/* B7A7C4 80103624 460A8102 */ mul.s $f4, $f16, $f10 -/* B7A7C8 80103628 00000000 */ nop -/* B7A7CC 8010362C 46069202 */ mul.s $f8, $f18, $f6 -/* B7A7D0 80103630 C7A600BC */ lwc1 $f6, 0xbc($sp) -/* B7A7D4 80103634 46082280 */ add.s $f10, $f4, $f8 -/* B7A7D8 80103638 4606A102 */ mul.s $f4, $f20, $f6 -/* B7A7DC 8010363C 44833000 */ mtc1 $v1, $f6 -/* B7A7E0 80103640 46045200 */ add.s $f8, $f10, $f4 -/* B7A7E4 80103644 468032A0 */ cvt.s.w $f10, $f6 -/* B7A7E8 80103648 44813000 */ mtc1 $at, $f6 -/* B7A7EC 8010364C 460A4102 */ mul.s $f4, $f8, $f10 -/* B7A7F0 80103650 448B5000 */ mtc1 $t3, $f10 -/* B7A7F4 80103654 46062202 */ mul.s $f8, $f4, $f6 -/* B7A7F8 80103658 46805120 */ cvt.s.w $f4, $f10 -/* B7A7FC 8010365C 46082180 */ add.s $f6, $f4, $f8 -/* B7A800 80103660 4600328D */ trunc.w.s $f10, $f6 -/* B7A804 80103664 440D5000 */ mfc1 $t5, $f10 -/* B7A808 80103668 10000003 */ b .L80103678 -/* B7A80C 8010366C ACCD0004 */ sw $t5, 4($a2) -.L80103670: -/* B7A810 80103670 ACCE0000 */ sw $t6, ($a2) -/* B7A814 80103674 ACCF0004 */ sw $t7, 4($a2) -.L80103678: -/* B7A818 80103678 C7A400CC */ lwc1 $f4, 0xcc($sp) -/* B7A81C 8010367C C7A600D0 */ lwc1 $f6, 0xd0($sp) -/* B7A820 80103680 3C018015 */ lui $at, %hi(D_8014B278) -/* B7A824 80103684 46042202 */ mul.s $f8, $f4, $f4 -/* B7A828 80103688 E7A40040 */ swc1 $f4, 0x40($sp) -/* B7A82C 8010368C 00026040 */ sll $t4, $v0, 1 -/* B7A830 80103690 46063282 */ mul.s $f10, $f6, $f6 -/* B7A834 80103694 00036840 */ sll $t5, $v1, 1 -/* B7A838 80103698 460A4200 */ add.s $f8, $f8, $f10 -/* B7A83C 8010369C C7AA00D4 */ lwc1 $f10, 0xd4($sp) -/* B7A840 801036A0 460A5102 */ mul.s $f4, $f10, $f10 -/* B7A844 801036A4 46044000 */ add.s $f0, $f8, $f4 -/* B7A848 801036A8 46000004 */ sqrt.s $f0, $f0 -/* B7A84C 801036AC 46000221 */ cvt.d.s $f8, $f0 -/* B7A850 801036B0 4628B103 */ div.d $f4, $f22, $f8 -/* B7A854 801036B4 C7A80040 */ lwc1 $f8, 0x40($sp) -/* B7A858 801036B8 462020A0 */ cvt.s.d $f2, $f4 -/* B7A85C 801036BC 46024102 */ mul.s $f4, $f8, $f2 -/* B7A860 801036C0 00000000 */ nop -/* B7A864 801036C4 46023202 */ mul.s $f8, $f6, $f2 -/* B7A868 801036C8 00000000 */ nop -/* B7A86C 801036CC 46025182 */ mul.s $f6, $f10, $f2 -/* B7A870 801036D0 C7AA0088 */ lwc1 $f10, 0x88($sp) -/* B7A874 801036D4 E7A400CC */ swc1 $f4, 0xcc($sp) -/* B7A878 801036D8 E7A800D0 */ swc1 $f8, 0xd0($sp) -/* B7A87C 801036DC 460A2100 */ add.s $f4, $f4, $f10 -/* B7A880 801036E0 C7AA0084 */ lwc1 $f10, 0x84($sp) -/* B7A884 801036E4 E7A600D4 */ swc1 $f6, 0xd4($sp) -/* B7A888 801036E8 460A4200 */ add.s $f8, $f8, $f10 -/* B7A88C 801036EC C7AA0080 */ lwc1 $f10, 0x80($sp) -/* B7A890 801036F0 E7A40054 */ swc1 $f4, 0x54($sp) -/* B7A894 801036F4 460A3180 */ add.s $f6, $f6, $f10 -/* B7A898 801036F8 46042282 */ mul.s $f10, $f4, $f4 -/* B7A89C 801036FC E7A80050 */ swc1 $f8, 0x50($sp) -/* B7A8A0 80103700 E7A6004C */ swc1 $f6, 0x4c($sp) -/* B7A8A4 80103704 E7A60040 */ swc1 $f6, 0x40($sp) -/* B7A8A8 80103708 46084182 */ mul.s $f6, $f8, $f8 -/* B7A8AC 8010370C 46065280 */ add.s $f10, $f10, $f6 -/* B7A8B0 80103710 C7A60040 */ lwc1 $f6, 0x40($sp) -/* B7A8B4 80103714 E7A40040 */ swc1 $f4, 0x40($sp) -/* B7A8B8 80103718 46063102 */ mul.s $f4, $f6, $f6 -/* B7A8BC 8010371C 46045000 */ add.s $f0, $f10, $f4 -/* B7A8C0 80103720 D42AB278 */ ldc1 $f10, %lo(D_8014B278)($at) -/* B7A8C4 80103724 46000004 */ sqrt.s $f0, $f0 -/* B7A8C8 80103728 460003A1 */ cvt.d.s $f14, $f0 -/* B7A8CC 8010372C 462E503C */ c.lt.d $f10, $f14 -/* B7A8D0 80103730 00000000 */ nop -/* B7A8D4 80103734 45000035 */ bc1f .L8010380C -/* B7A8D8 80103738 00000000 */ nop -/* B7A8DC 8010373C 462EB103 */ div.d $f4, $f22, $f14 -/* B7A8E0 80103740 C7AA0040 */ lwc1 $f10, 0x40($sp) -/* B7A8E4 80103744 3C014000 */ li $at, 0x40000000 # 0.000000 -/* B7A8E8 80103748 44811000 */ mtc1 $at, $f2 -/* B7A8EC 8010374C 0002C080 */ sll $t8, $v0, 2 -/* B7A8F0 80103750 00034880 */ sll $t1, $v1, 2 -/* B7A8F4 80103754 46202320 */ cvt.s.d $f12, $f4 -/* B7A8F8 80103758 460C5402 */ mul.s $f16, $f10, $f12 -/* B7A8FC 8010375C 00000000 */ nop -/* B7A900 80103760 460C4482 */ mul.s $f18, $f8, $f12 -/* B7A904 80103764 00000000 */ nop -/* B7A908 80103768 460C3502 */ mul.s $f20, $f6, $f12 -/* B7A90C 8010376C 00000000 */ nop -/* B7A910 80103770 46188102 */ mul.s $f4, $f16, $f24 -/* B7A914 80103774 00000000 */ nop -/* B7A918 80103778 461A9282 */ mul.s $f10, $f18, $f26 -/* B7A91C 8010377C 460A2200 */ add.s $f8, $f4, $f10 -/* B7A920 80103780 461CA182 */ mul.s $f6, $f20, $f28 -/* B7A924 80103784 44825000 */ mtc1 $v0, $f10 -/* B7A928 80103788 46064100 */ add.s $f4, $f8, $f6 -/* B7A92C 8010378C 46805220 */ cvt.s.w $f8, $f10 -/* B7A930 80103790 46082182 */ mul.s $f6, $f4, $f8 -/* B7A934 80103794 44982000 */ mtc1 $t8, $f4 -/* B7A938 80103798 00000000 */ nop -/* B7A93C 8010379C 46802220 */ cvt.s.w $f8, $f4 -/* B7A940 801037A0 46023282 */ mul.s $f10, $f6, $f2 -/* B7A944 801037A4 460A4180 */ add.s $f6, $f8, $f10 -/* B7A948 801037A8 4600310D */ trunc.w.s $f4, $f6 -/* B7A94C 801037AC 44082000 */ mfc1 $t0, $f4 -/* B7A950 801037B0 00000000 */ nop -/* B7A954 801037B4 ACC80008 */ sw $t0, 8($a2) -/* B7A958 801037B8 C7A800B4 */ lwc1 $f8, 0xb4($sp) -/* B7A95C 801037BC C7A600B8 */ lwc1 $f6, 0xb8($sp) -/* B7A960 801037C0 46088282 */ mul.s $f10, $f16, $f8 -/* B7A964 801037C4 00000000 */ nop -/* B7A968 801037C8 46069102 */ mul.s $f4, $f18, $f6 -/* B7A96C 801037CC C7A600BC */ lwc1 $f6, 0xbc($sp) -/* B7A970 801037D0 46045200 */ add.s $f8, $f10, $f4 -/* B7A974 801037D4 4606A282 */ mul.s $f10, $f20, $f6 -/* B7A978 801037D8 44833000 */ mtc1 $v1, $f6 -/* B7A97C 801037DC 460A4100 */ add.s $f4, $f8, $f10 -/* B7A980 801037E0 46803220 */ cvt.s.w $f8, $f6 -/* B7A984 801037E4 46082282 */ mul.s $f10, $f4, $f8 -/* B7A988 801037E8 44892000 */ mtc1 $t1, $f4 -/* B7A98C 801037EC 00000000 */ nop -/* B7A990 801037F0 46802220 */ cvt.s.w $f8, $f4 -/* B7A994 801037F4 46025182 */ mul.s $f6, $f10, $f2 -/* B7A998 801037F8 46064280 */ add.s $f10, $f8, $f6 -/* B7A99C 801037FC 4600510D */ trunc.w.s $f4, $f10 -/* B7A9A0 80103800 440B2000 */ mfc1 $t3, $f4 -/* B7A9A4 80103804 10000003 */ b .L80103814 -/* B7A9A8 80103808 ACCB000C */ sw $t3, 0xc($a2) -.L8010380C: -/* B7A9AC 8010380C ACCC0008 */ sw $t4, 8($a2) -/* B7A9B0 80103810 ACCD000C */ sw $t5, 0xc($a2) -.L80103814: -/* B7A9B4 80103814 3C0142FE */ li $at, 0x42FE0000 # 0.000000 -/* B7A9B8 80103818 44811000 */ mtc1 $at, $f2 -/* B7A9BC 8010381C 3C014300 */ li $at, 0x43000000 # 0.000000 -/* B7A9C0 80103820 44817000 */ mtc1 $at, $f14 -/* B7A9C4 80103824 24020080 */ li $v0, 128 -/* B7A9C8 80103828 460EC302 */ mul.s $f12, $f24, $f14 -/* B7A9CC 8010382C 4602603C */ c.lt.s $f12, $f2 -/* B7A9D0 80103830 00000000 */ nop -/* B7A9D4 80103834 45020004 */ bc1fl .L80103848 -/* B7A9D8 80103838 46001006 */ mov.s $f0, $f2 -/* B7A9DC 8010383C 10000002 */ b .L80103848 -/* B7A9E0 80103840 46006006 */ mov.s $f0, $f12 -/* B7A9E4 80103844 46001006 */ mov.s $f0, $f2 -.L80103848: -/* B7A9E8 80103848 460ED302 */ mul.s $f12, $f26, $f14 -/* B7A9EC 8010384C 4600020D */ trunc.w.s $f8, $f0 -/* B7A9F0 80103850 4602603C */ c.lt.s $f12, $f2 -/* B7A9F4 80103854 44184000 */ mfc1 $t8, $f8 -/* B7A9F8 80103858 45000003 */ bc1f .L80103868 -/* B7A9FC 8010385C A0B80008 */ sb $t8, 8($a1) -/* B7AA00 80103860 10000002 */ b .L8010386C -/* B7AA04 80103864 46006006 */ mov.s $f0, $f12 -.L80103868: -/* B7AA08 80103868 46001006 */ mov.s $f0, $f2 -.L8010386C: -/* B7AA0C 8010386C 460EE302 */ mul.s $f12, $f28, $f14 -/* B7AA10 80103870 4600018D */ trunc.w.s $f6, $f0 -/* B7AA14 80103874 4602603C */ c.lt.s $f12, $f2 -/* B7AA18 80103878 44093000 */ mfc1 $t1, $f6 -/* B7AA1C 8010387C 45000003 */ bc1f .L8010388C -/* B7AA20 80103880 A0A90009 */ sb $t1, 9($a1) -/* B7AA24 80103884 10000002 */ b .L80103890 -/* B7AA28 80103888 46006006 */ mov.s $f0, $f12 -.L8010388C: -/* B7AA2C 8010388C 46001006 */ mov.s $f0, $f2 -.L80103890: -/* B7AA30 80103890 4600028D */ trunc.w.s $f10, $f0 -/* B7AA34 80103894 440C5000 */ mfc1 $t4, $f10 -/* B7AA38 80103898 00000000 */ nop -/* B7AA3C 8010389C A0AC000A */ sb $t4, 0xa($a1) -/* B7AA40 801038A0 C7A400B4 */ lwc1 $f4, 0xb4($sp) -/* B7AA44 801038A4 460E2302 */ mul.s $f12, $f4, $f14 -/* B7AA48 801038A8 4602603C */ c.lt.s $f12, $f2 -/* B7AA4C 801038AC 00000000 */ nop -/* B7AA50 801038B0 45020004 */ bc1fl .L801038C4 -/* B7AA54 801038B4 46001006 */ mov.s $f0, $f2 -/* B7AA58 801038B8 10000002 */ b .L801038C4 -/* B7AA5C 801038BC 46006006 */ mov.s $f0, $f12 -/* B7AA60 801038C0 46001006 */ mov.s $f0, $f2 -.L801038C4: -/* B7AA64 801038C4 4600020D */ trunc.w.s $f8, $f0 -/* B7AA68 801038C8 440F4000 */ mfc1 $t7, $f8 -/* B7AA6C 801038CC 00000000 */ nop -/* B7AA70 801038D0 A0AF0018 */ sb $t7, 0x18($a1) -/* B7AA74 801038D4 C7A600B8 */ lwc1 $f6, 0xb8($sp) -/* B7AA78 801038D8 460E3302 */ mul.s $f12, $f6, $f14 -/* B7AA7C 801038DC 4602603C */ c.lt.s $f12, $f2 -/* B7AA80 801038E0 00000000 */ nop -/* B7AA84 801038E4 45020004 */ bc1fl .L801038F8 -/* B7AA88 801038E8 46001006 */ mov.s $f0, $f2 -/* B7AA8C 801038EC 10000002 */ b .L801038F8 -/* B7AA90 801038F0 46006006 */ mov.s $f0, $f12 -/* B7AA94 801038F4 46001006 */ mov.s $f0, $f2 -.L801038F8: -/* B7AA98 801038F8 4600028D */ trunc.w.s $f10, $f0 -/* B7AA9C 801038FC 44085000 */ mfc1 $t0, $f10 -/* B7AAA0 80103900 00000000 */ nop -/* B7AAA4 80103904 A0A80019 */ sb $t0, 0x19($a1) -/* B7AAA8 80103908 C7A400BC */ lwc1 $f4, 0xbc($sp) -/* B7AAAC 8010390C 460E2302 */ mul.s $f12, $f4, $f14 -/* B7AAB0 80103910 4602603C */ c.lt.s $f12, $f2 -/* B7AAB4 80103914 00000000 */ nop -/* B7AAB8 80103918 45020004 */ bc1fl .L8010392C -/* B7AABC 8010391C 46001006 */ mov.s $f0, $f2 -/* B7AAC0 80103920 10000002 */ b .L8010392C -/* B7AAC4 80103924 46006006 */ mov.s $f0, $f12 -/* B7AAC8 80103928 46001006 */ mov.s $f0, $f2 -.L8010392C: -/* B7AACC 8010392C 4600020D */ trunc.w.s $f8, $f0 -/* B7AAD0 80103930 A0A00000 */ sb $zero, ($a1) -/* B7AAD4 80103934 A0A00001 */ sb $zero, 1($a1) -/* B7AAD8 80103938 A0A00002 */ sb $zero, 2($a1) -/* B7AADC 8010393C 440B4000 */ mfc1 $t3, $f8 -/* B7AAE0 80103940 A0A00003 */ sb $zero, 3($a1) -/* B7AAE4 80103944 A0A00004 */ sb $zero, 4($a1) -/* B7AAE8 80103948 A0A00005 */ sb $zero, 5($a1) -/* B7AAEC 8010394C A0A00006 */ sb $zero, 6($a1) -/* B7AAF0 80103950 A0A00007 */ sb $zero, 7($a1) -/* B7AAF4 80103954 A0A00010 */ sb $zero, 0x10($a1) -/* B7AAF8 80103958 A0A20011 */ sb $v0, 0x11($a1) -/* B7AAFC 8010395C A0A00012 */ sb $zero, 0x12($a1) -/* B7AB00 80103960 A0A00013 */ sb $zero, 0x13($a1) -/* B7AB04 80103964 A0A00014 */ sb $zero, 0x14($a1) -/* B7AB08 80103968 A0A20015 */ sb $v0, 0x15($a1) -/* B7AB0C 8010396C A0A00016 */ sb $zero, 0x16($a1) -/* B7AB10 80103970 A0A00017 */ sb $zero, 0x17($a1) -/* B7AB14 80103974 A0AB001A */ sb $t3, 0x1a($a1) -/* B7AB18 80103978 E4980000 */ swc1 $f24, ($a0) -/* B7AB1C 8010397C C7AE009C */ lwc1 $f14, 0x9c($sp) -/* B7AB20 80103980 C7A200A0 */ lwc1 $f2, 0xa0($sp) -/* B7AB24 80103984 C7AC00A4 */ lwc1 $f12, 0xa4($sp) -/* B7AB28 80103988 46187182 */ mul.s $f6, $f14, $f24 -/* B7AB2C 8010398C E49A0010 */ swc1 $f26, 0x10($a0) -/* B7AB30 80103990 E49C0020 */ swc1 $f28, 0x20($a0) -/* B7AB34 80103994 461A1282 */ mul.s $f10, $f2, $f26 -/* B7AB38 80103998 44800000 */ mtc1 $zero, $f0 -/* B7AB3C 8010399C 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B7AB40 801039A0 461C6202 */ mul.s $f8, $f12, $f28 -/* B7AB44 801039A4 460A3100 */ add.s $f4, $f6, $f10 -/* B7AB48 801039A8 46082180 */ add.s $f6, $f4, $f8 -/* B7AB4C 801039AC 46003287 */ neg.s $f10, $f6 -/* B7AB50 801039B0 E48A0030 */ swc1 $f10, 0x30($a0) -/* B7AB54 801039B4 C7A400B4 */ lwc1 $f4, 0xb4($sp) -/* B7AB58 801039B8 E4840004 */ swc1 $f4, 4($a0) -/* B7AB5C 801039BC C7A800B8 */ lwc1 $f8, 0xb8($sp) -/* B7AB60 801039C0 E4880014 */ swc1 $f8, 0x14($a0) -/* B7AB64 801039C4 C7A600BC */ lwc1 $f6, 0xbc($sp) -/* B7AB68 801039C8 E4860024 */ swc1 $f6, 0x24($a0) -/* B7AB6C 801039CC C7AA00B4 */ lwc1 $f10, 0xb4($sp) -/* B7AB70 801039D0 C7A800B8 */ lwc1 $f8, 0xb8($sp) -/* B7AB74 801039D4 460A7102 */ mul.s $f4, $f14, $f10 -/* B7AB78 801039D8 00000000 */ nop -/* B7AB7C 801039DC 46081182 */ mul.s $f6, $f2, $f8 -/* B7AB80 801039E0 C7A800BC */ lwc1 $f8, 0xbc($sp) -/* B7AB84 801039E4 46062280 */ add.s $f10, $f4, $f6 -/* B7AB88 801039E8 46086102 */ mul.s $f4, $f12, $f8 -/* B7AB8C 801039EC 46045180 */ add.s $f6, $f10, $f4 -/* B7AB90 801039F0 46003207 */ neg.s $f8, $f6 -/* B7AB94 801039F4 E4880034 */ swc1 $f8, 0x34($a0) -/* B7AB98 801039F8 C7AA0088 */ lwc1 $f10, 0x88($sp) -/* B7AB9C 801039FC E48A0008 */ swc1 $f10, 8($a0) -/* B7ABA0 80103A00 C7A40084 */ lwc1 $f4, 0x84($sp) -/* B7ABA4 80103A04 E4840018 */ swc1 $f4, 0x18($a0) -/* B7ABA8 80103A08 C7A60080 */ lwc1 $f6, 0x80($sp) -/* B7ABAC 80103A0C E4860028 */ swc1 $f6, 0x28($a0) -/* B7ABB0 80103A10 C7A80088 */ lwc1 $f8, 0x88($sp) -/* B7ABB4 80103A14 C7A40084 */ lwc1 $f4, 0x84($sp) -/* B7ABB8 80103A18 46087282 */ mul.s $f10, $f14, $f8 -/* B7ABBC 80103A1C 00000000 */ nop -/* B7ABC0 80103A20 46041182 */ mul.s $f6, $f2, $f4 -/* B7ABC4 80103A24 C7A40080 */ lwc1 $f4, 0x80($sp) -/* B7ABC8 80103A28 E480000C */ swc1 $f0, 0xc($a0) -/* B7ABCC 80103A2C E480001C */ swc1 $f0, 0x1c($a0) -/* B7ABD0 80103A30 E480002C */ swc1 $f0, 0x2c($a0) -/* B7ABD4 80103A34 46065200 */ add.s $f8, $f10, $f6 -/* B7ABD8 80103A38 46046282 */ mul.s $f10, $f12, $f4 -/* B7ABDC 80103A3C 460A4180 */ add.s $f6, $f8, $f10 -/* B7ABE0 80103A40 44814000 */ mtc1 $at, $f8 -/* B7ABE4 80103A44 46003107 */ neg.s $f4, $f6 -/* B7ABE8 80103A48 E488003C */ swc1 $f8, 0x3c($a0) -/* B7ABEC 80103A4C E4840038 */ swc1 $f4, 0x38($a0) -/* B7ABF0 80103A50 8FBF003C */ lw $ra, 0x3c($sp) -/* B7ABF4 80103A54 D7BC0030 */ ldc1 $f28, 0x30($sp) -/* B7ABF8 80103A58 D7BA0028 */ ldc1 $f26, 0x28($sp) -/* B7ABFC 80103A5C D7B80020 */ ldc1 $f24, 0x20($sp) -/* B7AC00 80103A60 D7B60018 */ ldc1 $f22, 0x18($sp) -/* B7AC04 80103A64 D7B40010 */ ldc1 $f20, 0x10($sp) -/* B7AC08 80103A68 03E00008 */ jr $ra -/* B7AC0C 80103A6C 27BD0090 */ addiu $sp, $sp, 0x90 - diff --git a/asm/non_matchings/code/code_801031F0/func_80103A70.s b/asm/non_matchings/code/code_801031F0/func_80103A70.s index 1fc57f39f01..651ba8bf61a 100644 --- a/asm/non_matchings/code/code_801031F0/func_80103A70.s +++ b/asm/non_matchings/code/code_801031F0/func_80103A70.s @@ -1,4 +1,4 @@ -glabel func_80103A70 +glabel guLookAtHilite /* B7AC10 80103A70 27BDFF68 */ addiu $sp, $sp, -0x98 /* B7AC14 80103A74 C7A400A8 */ lwc1 $f4, 0xa8($sp) /* B7AC18 80103A78 C7A600AC */ lwc1 $f6, 0xac($sp) @@ -36,7 +36,7 @@ glabel func_80103A70 /* B7AC98 80103AF8 E7A60044 */ swc1 $f6, 0x44($sp) /* B7AC9C 80103AFC E7A80030 */ swc1 $f8, 0x30($sp) /* B7ACA0 80103B00 AFAE0048 */ sw $t6, 0x48($sp) -/* B7ACA4 80103B04 0C040CAC */ jal func_801032B0 +/* B7ACA4 80103B04 0C040CAC */ jal guLookAtHiliteF /* B7ACA8 80103B08 AFAF004C */ sw $t7, 0x4c($sp) /* B7ACAC 80103B0C 27A40058 */ addiu $a0, $sp, 0x58 /* B7ACB0 80103B10 0C041938 */ jal func_801064E0 diff --git a/include/functions.h b/include/functions.h index baa1de3a6bb..320a104e77b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2350,12 +2350,11 @@ void guLookAtReflect(Mtx*, f32, f32, f32, f32, f32, f32, f32, f32, f32); // ? func_80102CC4(?); // ? func_80102FA0(?); // ? func_80103010(?); -// ? func_801031F0(?); +// ? osAfterPreNMI(?); // ? osContStartQuery(?); void osContGetQuery(OSContStatus* data); -// ? func_801032B0(?); -void func_80103A70(UNK_PTR, Gfx*, Hilite*, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, - s32, s32); +// ? guLookAtHiliteF(?); +void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight); // ? __osSpDeviceBusy(?); // ? func_80103B60(?); // ? func_80103BB0(?); diff --git a/spec b/spec index f63f9096a34..795db5b0192 100644 --- a/spec +++ b/spec @@ -526,6 +526,7 @@ beginseg include "build/asm/code_80103010.o" include "build/src/libultra_code/sqrtf.o" 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/code_80103BB0.o" diff --git a/src/code/irqmgr.c b/src/code/irqmgr.c index 35be0e3535a..7b59fbb4c7c 100644 --- a/src/code/irqmgr.c +++ b/src/code/irqmgr.c @@ -142,7 +142,7 @@ void IrqMgr_HandlePRENMI450(IrqMgr* this) { void IrqMgr_HandlePRENMI480(IrqMgr* this) { u32 ret; osSetTimer(&this->timer, OS_USEC_TO_CYCLES(20000), 0ull, &this->queue, (OSMesg)PRENMI500_MSG); - ret = func_801031F0(); // osAfterPreNMI + ret = osAfterPreNMI(); // osAfterPreNMI if (ret) { osSyncPrintf("osAfterPreNMIが %d を返しました!?\n", ret); // osAfterPreNMI returned %d !? osSetTimer(&this->timer, OS_USEC_TO_CYCLES(1000), 0ull, &this->queue, (OSMesg)PRENMI480_MSG); diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 89b7e3e526d..149959ac5b8 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -1320,8 +1320,9 @@ Gfx* func_8002E830(Vec3f* object, Vec3f* eye, Vec3f* lightDir, GraphicsContext* } func_800ABE74(correctedEyeX, eye->y, eye->z); - func_80103A70(&D_8015BBA8, lookAt, *hilite, correctedEyeX, eye->y, eye->z, object->x, object->y, object->z, 0.0f, - 1.0f, 0.0f, lightDir->x, lightDir->y, lightDir->z, lightDir->x, lightDir->y, lightDir->z, 0x10, 0x10); + guLookAtHilite(&D_8015BBA8, lookAt, *hilite, correctedEyeX, eye->y, eye->z, object->x, object->y, object->z, 0.0f, + 1.0f, 0.0f, lightDir->x, lightDir->y, lightDir->z, lightDir->x, lightDir->y, lightDir->z, 0x10, + 0x10); gSPLookAt(gfx++, lookAt); gDPSetHilite1Tile(gfx++, 1, *hilite, 0x10, 0x10); diff --git a/src/code/z_view.c b/src/code/z_view.c index af90addb244..613f665291a 100644 --- a/src/code/z_view.c +++ b/src/code/z_view.c @@ -352,7 +352,7 @@ s32 func_800AAA9C(View* view) { func_800ABE74(view->eye.x, view->eye.y, view->eye.z); guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, - view->unk_40.x, view->unk_40.y, view->unk_40.z); + view->unk_40.x, view->unk_40.y, view->unk_40.z); view->viewing = *viewing; @@ -501,7 +501,7 @@ s32 func_800AB560(View* view) { func_800ABE74(view->eye.x, view->eye.y, view->eye.z); guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, - view->unk_40.x, view->unk_40.y, view->unk_40.z); + view->unk_40.x, view->unk_40.y, view->unk_40.z); view->viewing = *viewing; @@ -519,7 +519,7 @@ s32 func_800AB944(View* view) { func_800ABE74(view->eye.x, view->eye.y, view->eye.z); guLookAtReflect(view->viewingPtr, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, - view->unk_34.z, view->unk_40.x, view->unk_40.y, view->unk_40.z); + view->unk_34.z, view->unk_40.x, view->unk_40.y, view->unk_40.z); Graph_CloseDisps(dispRefs, view->gfxCtx, "../z_view.c", 886); @@ -583,7 +583,7 @@ s32 func_800AB9EC(View* view, s32 arg1, Gfx** gfxp) { func_800ABE74(view->eye.x, view->eye.y, view->eye.z); guLookAtReflect(viewing, view->eye.x, view->eye.y, view->eye.z, view->unk_34.x, view->unk_34.y, view->unk_34.z, - view->unk_40.x, view->unk_40.y, view->unk_40.z); + view->unk_40.x, view->unk_40.y, view->unk_40.z); view->viewing = *viewing; diff --git a/src/libultra_code/code_801031F0.c b/src/libultra_code/code_801031F0.c index a18891d774b..54ae2de12f3 100644 --- a/src/libultra_code/code_801031F0.c +++ b/src/libultra_code/code_801031F0.c @@ -1,12 +1,15 @@ #include "libultra_internal.h" #include -#pragma GLOBAL_ASM("asm/non_matchings/code/code_801031F0/func_801031F0.s") +s32 osAfterPreNMI(void) { + return __osSpSetPc(0); +} /** * osContStartQuery: - * Starts to read the values for SI device status and type which are connected to the controller port and joyport connector. -**/ + * Starts to read the values for SI device status and type which are connected to the controller port and joyport + *connector. + **/ s32 osContStartQuery(OSMesgQueue* mq) { s32 ret; @@ -27,14 +30,9 @@ s32 osContStartQuery(OSMesgQueue* mq) { /** * osContGetQuery: * Returns the values from osContStartQuery to status. Both functions must be paired for use. -**/ + **/ -void osContGetQuery(OSContStatus* data) -{ +void osContGetQuery(OSContStatus* data) { u8 pattern; __osContGetInitData(&pattern, data); } - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_801031F0/func_801032B0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/code/code_801031F0/func_80103A70.s") diff --git a/src/libultra_code/guLookAtHilite.c b/src/libultra_code/guLookAtHilite.c new file mode 100644 index 00000000000..c8332750e81 --- /dev/null +++ b/src/libultra_code/guLookAtHilite.c @@ -0,0 +1,176 @@ +#include "libultra_internal.h" +#include + +#define FTOFRAC8(x) ((s32)MIN(((x) * (128.0f)), 127.0f) & 0xff) + +/** + * guLookAtHiliteF + * This function creates the viewing matrix (floating point) and sets the LookAt/Hilite structures + * + * mf: 4x4 viewing matrix resulting from calculation + * l: Pointer to LookAt structure resulting from calculation + * h: Pointer to Hilite structure resulting from calculation + * xEye: x-coordinate of viewpoint + * yEye: y-coordinate of viewpoint + * zEye: z-coordinate of viewpoint + * xAt: x-coordinate of lookat point + * yAt: y-coordinate of lookat point + * zAt: z-coordinate of lookat point + * xUp: x component of upward vector + * yUp: y component of upward vector + * zUp: z component of upward vector + * xl1: x direction for first specular highlight + * yl1: y direction for first specular highlight + * zl1: z direction for first specular highlight + * xl2: x direction for second specular highlight + * yl2: y direction for second specular highlight + * zl2: z direction for second specular highlight + * hiliteWidth: width of texture for specular highlight + * hiliteHeight: height of texture for specular highlight + **/ + +void guLookAtHiliteF(f32 mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, + f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, /* light 1 direction */ + f32 xl2, f32 yl2, f32 zl2, /* light 2 direction */ + s32 hiliteWidth, s32 hiliteHeight) /* size of hilite texture */ +{ + f32 length, xLook, yLook, zLook, xRight, yRight, zRight, xHilite, yHilite, zHilite; + + guMtxIdentF(mf); + + xLook = xAt - xEye; + yLook = yAt - yEye; + zLook = zAt - zEye; + length = -1.0 / sqrtf(xLook * xLook + yLook * yLook + zLook * zLook); + xLook *= length; + yLook *= length; + zLook *= length; + + xRight = yUp * zLook - zUp * yLook; + yRight = zUp * xLook - xUp * zLook; + zRight = xUp * yLook - yUp * xLook; + length = 1.0 / sqrtf(xRight * xRight + yRight * yRight + zRight * zRight); + xRight *= length; + yRight *= length; + zRight *= length; + + xUp = yLook * zRight - zLook * yRight; + yUp = zLook * xRight - xLook * zRight; + zUp = xLook * yRight - yLook * xRight; + length = 1.0 / sqrtf(xUp * xUp + yUp * yUp + zUp * zUp); + xUp *= length; + yUp *= length; + zUp *= length; + + /* hilite vectors */ + + length = 1.0 / sqrtf(xl1 * xl1 + yl1 * yl1 + zl1 * zl1); + xl1 *= length; + yl1 *= length; + zl1 *= length; + + xHilite = xl1 + xLook; + yHilite = yl1 + yLook; + zHilite = zl1 + zLook; + + length = sqrtf(xHilite * xHilite + yHilite * yHilite + zHilite * zHilite); + + if (length > 0.1) { + length = 1.0 / length; + xHilite *= length; + yHilite *= length; + zHilite *= length; + + h->h.x1 = hiliteWidth * 4 + (xHilite * xRight + yHilite * yRight + zHilite * zRight) * hiliteWidth * 2; + + h->h.y1 = hiliteHeight * 4 + (xHilite * xUp + yHilite * yUp + zHilite * zUp) * hiliteHeight * 2; + } else { + h->h.x1 = hiliteWidth * 2; + h->h.y1 = hiliteHeight * 2; + } + + length = 1.0 / sqrtf(xl2 * xl2 + yl2 * yl2 + zl2 * zl2); + xl2 *= length; + yl2 *= length; + zl2 *= length; + + xHilite = xl2 + xLook; + yHilite = yl2 + yLook; + zHilite = zl2 + zLook; + length = sqrtf(xHilite * xHilite + yHilite * yHilite + zHilite * zHilite); + if (length > 0.1) { + length = 1.0 / length; + xHilite *= length; + yHilite *= length; + zHilite *= length; + + h->h.x2 = hiliteWidth * 4 + (xHilite * xRight + yHilite * yRight + zHilite * zRight) * hiliteWidth * 2; + + h->h.y2 = hiliteHeight * 4 + (xHilite * xUp + yHilite * yUp + zHilite * zUp) * hiliteHeight * 2; + } else { + h->h.x2 = hiliteWidth * 2; + h->h.y2 = hiliteHeight * 2; + } + + /* reflectance vectors = Up and Right */ + + l->l[0].l.dir[0] = FTOFRAC8(xRight); + l->l[0].l.dir[1] = FTOFRAC8(yRight); + l->l[0].l.dir[2] = FTOFRAC8(zRight); + l->l[1].l.dir[0] = FTOFRAC8(xUp); + l->l[1].l.dir[1] = FTOFRAC8(yUp); + l->l[1].l.dir[2] = FTOFRAC8(zUp); + l->l[0].l.col[0] = 0x00; + l->l[0].l.col[1] = 0x00; + l->l[0].l.col[2] = 0x00; + l->l[0].l.pad1 = 0x00; + l->l[0].l.colc[0] = 0x00; + l->l[0].l.colc[1] = 0x00; + l->l[0].l.colc[2] = 0x00; + l->l[0].l.pad2 = 0x00; + l->l[1].l.col[0] = 0x00; + l->l[1].l.col[1] = 0x80; + l->l[1].l.col[2] = 0x00; + l->l[1].l.pad1 = 0x00; + l->l[1].l.colc[0] = 0x00; + l->l[1].l.colc[1] = 0x80; + l->l[1].l.colc[2] = 0x00; + l->l[1].l.pad2 = 0x00; + + mf[0][0] = xRight; + mf[1][0] = yRight; + mf[2][0] = zRight; + mf[3][0] = -(xEye * xRight + yEye * yRight + zEye * zRight); + + mf[0][1] = xUp; + mf[1][1] = yUp; + mf[2][1] = zUp; + mf[3][1] = -(xEye * xUp + yEye * yUp + zEye * zUp); + + mf[0][2] = xLook; + mf[1][2] = yLook; + mf[2][2] = zLook; + mf[3][2] = -(xEye * xLook + yEye * yLook + zEye * zLook); + + mf[0][3] = 0; + mf[1][3] = 0; + mf[2][3] = 0; + mf[3][3] = 1; +} + +/** + * guLookAtHilite + * This function creates the viewing matrix (fixed point) and sets the LookAt/Hilite structures + * Same args as previous function + **/ + +void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, + f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, + s32 hiliteHeight) { + f32 mf[4][4]; + + guLookAtHiliteF(mf, l, h, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp, xl1, yl1, zl1, xl2, yl2, zl2, hiliteWidth, + hiliteHeight); + + guMtxF2L(mf, m); +} diff --git a/src/libultra_code/guLookAtRef.c b/src/libultra_code/guLookAtRef.c index 402a76d1561..d1239c159c1 100644 --- a/src/libultra_code/guLookAtRef.c +++ b/src/libultra_code/guLookAtRef.c @@ -4,4 +4,3 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/guLookAtRef/guLookAtReflectF.s") #pragma GLOBAL_ASM("asm/non_matchings/code/guLookAtRef/guLookAtReflect.s") - From 4375f9dee5a96a6c81eeb6eec9089da627d54550 Mon Sep 17 00:00:00 2001 From: shawlucas Date: Mon, 20 Apr 2020 20:19:49 -0700 Subject: [PATCH 05/11] guPosition.c OK --- asm/code_80103BB0.s | 145 --------------------------------- data/code_80103BB0.data.s | 11 --- include/functions.h | 4 +- spec | 3 +- src/code/z_sample.c | 2 +- src/libultra_code/guPosition.c | 49 +++++++++++ 6 files changed, 53 insertions(+), 161 deletions(-) delete mode 100644 asm/code_80103BB0.s delete mode 100644 data/code_80103BB0.data.s create mode 100644 src/libultra_code/guPosition.c diff --git a/asm/code_80103BB0.s b/asm/code_80103BB0.s deleted file mode 100644 index a7c15b784ef..00000000000 --- a/asm/code_80103BB0.s +++ /dev/null @@ -1,145 +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_80103BB0 -/* B7AD50 80103BB0 3C018013 */ lui $at, %hi(D_80134D00) -/* B7AD54 80103BB4 C4204D00 */ lwc1 $f0, %lo(D_80134D00)($at) -/* B7AD58 80103BB8 44856000 */ mtc1 $a1, $f12 -/* B7AD5C 80103BBC 44867000 */ mtc1 $a2, $f14 -/* B7AD60 80103BC0 27BDFFB8 */ addiu $sp, $sp, -0x48 -/* B7AD64 80103BC4 46006302 */ mul.s $f12, $f12, $f0 -/* B7AD68 80103BC8 F7B40018 */ sdc1 $f20, 0x18($sp) -/* B7AD6C 80103BCC 4487A000 */ mtc1 $a3, $f20 -/* B7AD70 80103BD0 46007382 */ mul.s $f14, $f14, $f0 -/* B7AD74 80103BD4 AFBF002C */ sw $ra, 0x2c($sp) -/* B7AD78 80103BD8 AFB00028 */ sw $s0, 0x28($sp) -/* B7AD7C 80103BDC 4600A502 */ mul.s $f20, $f20, $f0 -/* B7AD80 80103BE0 00808025 */ move $s0, $a0 -/* B7AD84 80103BE4 F7B60020 */ sdc1 $f22, 0x20($sp) -/* B7AD88 80103BE8 E7AC004C */ swc1 $f12, 0x4c($sp) -/* B7AD8C 80103BEC E7AE0050 */ swc1 $f14, 0x50($sp) -/* B7AD90 80103BF0 0C0400A4 */ jal sinf -/* B7AD94 80103BF4 E7B40054 */ swc1 $f20, 0x54($sp) -/* B7AD98 80103BF8 C7AC004C */ lwc1 $f12, 0x4c($sp) -/* B7AD9C 80103BFC 0C041184 */ jal cosf -/* B7ADA0 80103C00 46000506 */ mov.s $f20, $f0 -/* B7ADA4 80103C04 46000586 */ mov.s $f22, $f0 -/* B7ADA8 80103C08 0C0400A4 */ jal sinf -/* B7ADAC 80103C0C C7AC0050 */ lwc1 $f12, 0x50($sp) -/* B7ADB0 80103C10 E7A00040 */ swc1 $f0, 0x40($sp) -/* B7ADB4 80103C14 0C041184 */ jal cosf -/* B7ADB8 80103C18 C7AC0050 */ lwc1 $f12, 0x50($sp) -/* B7ADBC 80103C1C C7AC0054 */ lwc1 $f12, 0x54($sp) -/* B7ADC0 80103C20 0C0400A4 */ jal sinf -/* B7ADC4 80103C24 E7A00034 */ swc1 $f0, 0x34($sp) -/* B7ADC8 80103C28 C7AC0054 */ lwc1 $f12, 0x54($sp) -/* B7ADCC 80103C2C 0C041184 */ jal cosf -/* B7ADD0 80103C30 E7A0003C */ swc1 $f0, 0x3c($sp) -/* B7ADD4 80103C34 C7B00034 */ lwc1 $f16, 0x34($sp) -/* B7ADD8 80103C38 C7A20058 */ lwc1 $f2, 0x58($sp) -/* B7ADDC 80103C3C C7AE003C */ lwc1 $f14, 0x3c($sp) -/* B7ADE0 80103C40 46008102 */ mul.s $f4, $f16, $f0 -/* B7ADE4 80103C44 44809000 */ mtc1 $zero, $f18 -/* B7ADE8 80103C48 3C013F80 */ li $at, 0x3F800000 # 0.000000 -/* B7ADEC 80103C4C 46022182 */ mul.s $f6, $f4, $f2 -/* B7ADF0 80103C50 00000000 */ nop -/* B7ADF4 80103C54 460E8202 */ mul.s $f8, $f16, $f14 -/* B7ADF8 80103C58 E6060000 */ swc1 $f6, ($s0) -/* B7ADFC 80103C5C 46024282 */ mul.s $f10, $f8, $f2 -/* B7AE00 80103C60 E60A0004 */ swc1 $f10, 4($s0) -/* B7AE04 80103C64 C7A40040 */ lwc1 $f4, 0x40($sp) -/* B7AE08 80103C68 E612000C */ swc1 $f18, 0xc($s0) -/* B7AE0C 80103C6C 46002187 */ neg.s $f6, $f4 -/* B7AE10 80103C70 46023202 */ mul.s $f8, $f6, $f2 -/* B7AE14 80103C74 E6080008 */ swc1 $f8, 8($s0) -/* B7AE18 80103C78 C7AA0040 */ lwc1 $f10, 0x40($sp) -/* B7AE1C 80103C7C E612001C */ swc1 $f18, 0x1c($s0) -/* B7AE20 80103C80 460AA302 */ mul.s $f12, $f20, $f10 -/* B7AE24 80103C84 00000000 */ nop -/* B7AE28 80103C88 46006102 */ mul.s $f4, $f12, $f0 -/* B7AE2C 80103C8C 00000000 */ nop -/* B7AE30 80103C90 460EB182 */ mul.s $f6, $f22, $f14 -/* B7AE34 80103C94 46062201 */ sub.s $f8, $f4, $f6 -/* B7AE38 80103C98 46024282 */ mul.s $f10, $f8, $f2 -/* B7AE3C 80103C9C 00000000 */ nop -/* B7AE40 80103CA0 460E6102 */ mul.s $f4, $f12, $f14 -/* B7AE44 80103CA4 00000000 */ nop -/* B7AE48 80103CA8 4600B182 */ mul.s $f6, $f22, $f0 -/* B7AE4C 80103CAC E60A0010 */ swc1 $f10, 0x10($s0) -/* B7AE50 80103CB0 46062200 */ add.s $f8, $f4, $f6 -/* B7AE54 80103CB4 46024282 */ mul.s $f10, $f8, $f2 -/* B7AE58 80103CB8 00000000 */ nop -/* B7AE5C 80103CBC 4610A102 */ mul.s $f4, $f20, $f16 -/* B7AE60 80103CC0 E60A0014 */ swc1 $f10, 0x14($s0) -/* B7AE64 80103CC4 46022182 */ mul.s $f6, $f4, $f2 -/* B7AE68 80103CC8 E6060018 */ swc1 $f6, 0x18($s0) -/* B7AE6C 80103CCC C7A80040 */ lwc1 $f8, 0x40($sp) -/* B7AE70 80103CD0 E612002C */ swc1 $f18, 0x2c($s0) -/* B7AE74 80103CD4 4608B302 */ mul.s $f12, $f22, $f8 -/* B7AE78 80103CD8 00000000 */ nop -/* B7AE7C 80103CDC 46006282 */ mul.s $f10, $f12, $f0 -/* B7AE80 80103CE0 00000000 */ nop -/* B7AE84 80103CE4 460EA102 */ mul.s $f4, $f20, $f14 -/* B7AE88 80103CE8 46045180 */ add.s $f6, $f10, $f4 -/* B7AE8C 80103CEC 46023202 */ mul.s $f8, $f6, $f2 -/* B7AE90 80103CF0 00000000 */ nop -/* B7AE94 80103CF4 460E6282 */ mul.s $f10, $f12, $f14 -/* B7AE98 80103CF8 00000000 */ nop -/* B7AE9C 80103CFC 4600A102 */ mul.s $f4, $f20, $f0 -/* B7AEA0 80103D00 E6080020 */ swc1 $f8, 0x20($s0) -/* B7AEA4 80103D04 46045181 */ sub.s $f6, $f10, $f4 -/* B7AEA8 80103D08 46023202 */ mul.s $f8, $f6, $f2 -/* B7AEAC 80103D0C 00000000 */ nop -/* B7AEB0 80103D10 4610B282 */ mul.s $f10, $f22, $f16 -/* B7AEB4 80103D14 E6080024 */ swc1 $f8, 0x24($s0) -/* B7AEB8 80103D18 46025102 */ mul.s $f4, $f10, $f2 -/* B7AEBC 80103D1C E6040028 */ swc1 $f4, 0x28($s0) -/* B7AEC0 80103D20 C7A6005C */ lwc1 $f6, 0x5c($sp) -/* B7AEC4 80103D24 44812000 */ mtc1 $at, $f4 -/* B7AEC8 80103D28 E6060030 */ swc1 $f6, 0x30($s0) -/* B7AECC 80103D2C C7A80060 */ lwc1 $f8, 0x60($sp) -/* B7AED0 80103D30 E6080034 */ swc1 $f8, 0x34($s0) -/* B7AED4 80103D34 C7AA0064 */ lwc1 $f10, 0x64($sp) -/* B7AED8 80103D38 E604003C */ swc1 $f4, 0x3c($s0) -/* B7AEDC 80103D3C E60A0038 */ swc1 $f10, 0x38($s0) -/* B7AEE0 80103D40 8FBF002C */ lw $ra, 0x2c($sp) -/* B7AEE4 80103D44 8FB00028 */ lw $s0, 0x28($sp) -/* B7AEE8 80103D48 D7B60020 */ ldc1 $f22, 0x20($sp) -/* B7AEEC 80103D4C D7B40018 */ ldc1 $f20, 0x18($sp) -/* B7AEF0 80103D50 03E00008 */ jr $ra -/* B7AEF4 80103D54 27BD0048 */ addiu $sp, $sp, 0x48 - -glabel func_80103D58 -/* B7AEF8 80103D58 27BDFF98 */ addiu $sp, $sp, -0x68 -/* B7AEFC 80103D5C 44856000 */ mtc1 $a1, $f12 -/* B7AF00 80103D60 44867000 */ mtc1 $a2, $f14 -/* B7AF04 80103D64 C7A40078 */ lwc1 $f4, 0x78($sp) -/* B7AF08 80103D68 C7A6007C */ lwc1 $f6, 0x7c($sp) -/* B7AF0C 80103D6C C7A80080 */ lwc1 $f8, 0x80($sp) -/* B7AF10 80103D70 C7AA0084 */ lwc1 $f10, 0x84($sp) -/* B7AF14 80103D74 AFBF0024 */ sw $ra, 0x24($sp) -/* B7AF18 80103D78 AFA40068 */ sw $a0, 0x68($sp) -/* B7AF1C 80103D7C 44056000 */ mfc1 $a1, $f12 -/* B7AF20 80103D80 44067000 */ mfc1 $a2, $f14 -/* B7AF24 80103D84 AFA70074 */ sw $a3, 0x74($sp) -/* B7AF28 80103D88 27A40028 */ addiu $a0, $sp, 0x28 -/* B7AF2C 80103D8C E7A40010 */ swc1 $f4, 0x10($sp) -/* B7AF30 80103D90 E7A60014 */ swc1 $f6, 0x14($sp) -/* B7AF34 80103D94 E7A80018 */ swc1 $f8, 0x18($sp) -/* B7AF38 80103D98 0C040EEC */ jal func_80103BB0 -/* B7AF3C 80103D9C E7AA001C */ swc1 $f10, 0x1c($sp) -/* B7AF40 80103DA0 27A40028 */ addiu $a0, $sp, 0x28 -/* B7AF44 80103DA4 0C041938 */ jal func_801064E0 -/* B7AF48 80103DA8 8FA50068 */ lw $a1, 0x68($sp) -/* B7AF4C 80103DAC 8FBF0024 */ lw $ra, 0x24($sp) -/* B7AF50 80103DB0 27BD0068 */ addiu $sp, $sp, 0x68 -/* B7AF54 80103DB4 03E00008 */ jr $ra -/* B7AF58 80103DB8 00000000 */ nop diff --git a/data/code_80103BB0.data.s b/data/code_80103BB0.data.s deleted file mode 100644 index d42c19febab..00000000000 --- a/data/code_80103BB0.data.s +++ /dev/null @@ -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_80134D00 - .incbin "baserom.z64", 0xBABEA0, 0x10 diff --git a/include/functions.h b/include/functions.h index 320a104e77b..fca51753163 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2357,8 +2357,8 @@ void osContGetQuery(OSContStatus* data); void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight); // ? __osSpDeviceBusy(?); // ? func_80103B60(?); -// ? func_80103BB0(?); -void func_80103D58(Mtx*, f32, f32, f32, f32, f32, f32, f32); +// ? guPositionF(?); +void guPosition(Mtx*, f32, f32, f32, f32, f32, f32, f32); // ? func_80103DC0(?); // ? func_80103E20(?); // ? func_80103FA4(?); diff --git a/spec b/spec index 795db5b0192..564ad0165a6 100644 --- a/spec +++ b/spec @@ -529,8 +529,7 @@ beginseg include "build/src/libultra_code/guLookAtHilite.o" include "build/src/libultra_code/sp.o" include "build/asm/code_80103B60.o" - include "build/asm/code_80103BB0.o" - include "build/data/code_80103BB0.data.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/__osGetActiveQueue.o" diff --git a/src/code/z_sample.c b/src/code/z_sample.c index 73d502a06e7..0f6f01e2012 100644 --- a/src/code/z_sample.c +++ b/src/code/z_sample.c @@ -26,7 +26,7 @@ void Sample_Draw(SampleContext* this) { if (1) { Mtx* mtx = Graph_Alloc(gfxCtx, sizeof(Mtx)); - func_80103D58(mtx, SREG(37), SREG(38), SREG(39), 1.0f, SREG(40), SREG(41), SREG(42)); + guPosition(mtx, SREG(37), SREG(38), SREG(39), 1.0f, SREG(40), SREG(41), SREG(42)); gSPMatrix(gfxCtx->polyOpa.p++, mtx, G_MTX_LOAD); } diff --git a/src/libultra_code/guPosition.c b/src/libultra_code/guPosition.c new file mode 100644 index 00000000000..4e8e96e7a32 --- /dev/null +++ b/src/libultra_code/guPosition.c @@ -0,0 +1,49 @@ +#include "libultra_internal.h" + +void guPositionF(float mf[4][4], float r, float p, float h, float s, + float x, float y, float z) +{ + static float dtor = 3.1415926 / 180.0; + float sinr, sinp, sinh; + float cosr, cosp, cosh; + + r *= dtor; + p *= dtor; + h *= dtor; + sinr = sinf(r); + cosr = cosf(r); + sinp = sinf(p); + cosp = cosf(p); + sinh = sinf(h); + cosh = cosf(h); + + mf[0][0] = (cosp*cosh) * s; + mf[0][1] = (cosp*sinh) * s; + mf[0][2] = (-sinp) * s; + mf[0][3] = 0.0; + + mf[1][0] = (sinr*sinp*cosh - cosr*sinh) * s; + mf[1][1] = (sinr*sinp*sinh + cosr*cosh) * s; + mf[1][2] = (sinr*cosp) * s; + mf[1][3] = 0.0; + + mf[2][0] = (cosr*sinp*cosh + sinr*sinh) * s; + mf[2][1] = (cosr*sinp*sinh - sinr*cosh) * s; + mf[2][2] = (cosr*cosp) * s; + mf[2][3] = 0.0; + + mf[3][0] = x; + mf[3][1] = y; + mf[3][2] = z; + mf[3][3] = 1.0; +} + +void guPosition(Mtx *m, float r, float p, float h, float s, + float x, float y, float z) +{ + float mf[4][4]; + + guPositionF(mf, r, p, h, s, x, y, z); + + guMtxF2L(mf, m); +} \ No newline at end of file From b741e260c6fbe75c6ff7d9e3b733a6972bd0aa4a Mon Sep 17 00:00:00 2001 From: shawlucas Date: Mon, 20 Apr 2020 20:35:58 -0700 Subject: [PATCH 06/11] Fixed formatting --- src/libultra_code/guPosition.c | 90 ++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 42 deletions(-) diff --git a/src/libultra_code/guPosition.c b/src/libultra_code/guPosition.c index 4e8e96e7a32..11eae1034d7 100644 --- a/src/libultra_code/guPosition.c +++ b/src/libultra_code/guPosition.c @@ -1,49 +1,55 @@ #include "libultra_internal.h" -void guPositionF(float mf[4][4], float r, float p, float h, float s, - float x, float y, float z) -{ - static float dtor = 3.1415926 / 180.0; - float sinr, sinp, sinh; - float cosr, cosp, cosh; - - r *= dtor; - p *= dtor; - h *= dtor; - sinr = sinf(r); - cosr = cosf(r); - sinp = sinf(p); - cosp = cosf(p); - sinh = sinf(h); - cosh = cosf(h); - - mf[0][0] = (cosp*cosh) * s; - mf[0][1] = (cosp*sinh) * s; - mf[0][2] = (-sinp) * s; - mf[0][3] = 0.0; - - mf[1][0] = (sinr*sinp*cosh - cosr*sinh) * s; - mf[1][1] = (sinr*sinp*sinh + cosr*cosh) * s; - mf[1][2] = (sinr*cosp) * s; - mf[1][3] = 0.0; - - mf[2][0] = (cosr*sinp*cosh + sinr*sinh) * s; - mf[2][1] = (cosr*sinp*sinh - sinr*cosh) * s; - mf[2][2] = (cosr*cosp) * s; - mf[2][3] = 0.0; - - mf[3][0] = x; - mf[3][1] = y; - mf[3][2] = z; - mf[3][3] = 1.0; +/** + * guPositionF + * Creates a rotation/parallel translation modeling matrix (floating point) + **/ + +void guPositionF(f32 mf[4][4], f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z) { + static f32 D_80134D00 = M_PI / 180.0; + f32 sinr, sinp, sinh; + f32 cosr, cosp, cosh; + + rot *= D_80134D00; + pitch *= D_80134D00; + yaw *= D_80134D00; + + sinr = sinf(rot); + cosr = cosf(rot); + sinp = sinf(pitch); + cosp = cosf(pitch); + sinh = sinf(yaw); + cosh = cosf(yaw); + + mf[0][0] = (cosp * cosh) * scale; + mf[0][1] = (cosp * sinh) * scale; + mf[0][2] = (-sinp) * scale; + mf[0][3] = 0.0f; + + mf[1][0] = ((sinr * sinp * cosh) - (cosr * sinh)) * scale; + mf[1][1] = ((sinr * sinp * sinh) + (cosr * cosh)) * scale; + mf[1][2] = (sinr * cosp) * scale; + mf[1][3] = 0.0f; + + mf[2][0] = ((cosr * sinp * cosh) + (sinr * sinh)) * scale; + mf[2][1] = ((cosr * sinp * sinh) - (sinr * cosh)) * scale; + mf[2][2] = (cosr * cosp) * scale; + mf[2][3] = 0.0f; + + mf[3][0] = x; + mf[3][1] = y; + mf[3][2] = z; + mf[3][3] = 1.0f; } -void guPosition(Mtx *m, float r, float p, float h, float s, - float x, float y, float z) -{ - float mf[4][4]; +/** + * guPosition + * Creates a rotational/paralell translation moeling matrix (fixed point) + */ +void guPosition(Mtx* m, f32 rot, f32 pitch, f32 yaw, f32 scale, f32 x, f32 y, f32 z) { + f32 mf[4][4]; - guPositionF(mf, r, p, h, s, x, y, z); + guPositionF(mf, rot, pitch, yaw, scale, x, y, z); guMtxF2L(mf, m); -} \ No newline at end of file +} From 53799e428b543c488973c3866d48b8d2c13c8141 Mon Sep 17 00:00:00 2001 From: shawlucas Date: Mon, 20 Apr 2020 20:56:32 -0700 Subject: [PATCH 07/11] osViSetEvent.c OK --- asm/osViSetEvent.s | 35 -------------------------------- spec | 2 +- src/libultra_code/osViSetEvent.c | 13 ++++++++++++ 3 files changed, 14 insertions(+), 36 deletions(-) delete mode 100644 asm/osViSetEvent.s create mode 100644 src/libultra_code/osViSetEvent.c diff --git a/asm/osViSetEvent.s b/asm/osViSetEvent.s deleted file mode 100644 index 696c23bdfe2..00000000000 --- a/asm/osViSetEvent.s +++ /dev/null @@ -1,35 +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 osViSetEvent -/* B7B950 801047B0 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* B7B954 801047B4 AFBF0014 */ sw $ra, 0x14($sp) -/* B7B958 801047B8 AFA40018 */ sw $a0, 0x18($sp) -/* B7B95C 801047BC AFA5001C */ sw $a1, 0x1c($sp) -/* B7B960 801047C0 0C001CA0 */ jal __osDisableInt -/* B7B964 801047C4 AFA60020 */ sw $a2, 0x20($sp) -/* B7B968 801047C8 3C038001 */ lui $v1, %hi(__osViNext) # $v1, 0x8001 -/* B7B96C 801047CC 2463AF04 */ addiu $v1, %lo(__osViNext) # addiu $v1, $v1, -0x50fc -/* B7B970 801047D0 8C6F0000 */ lw $t7, ($v1) -/* B7B974 801047D4 8FAE0018 */ lw $t6, 0x18($sp) -/* B7B978 801047D8 00402025 */ move $a0, $v0 -/* B7B97C 801047DC ADEE0010 */ sw $t6, 0x10($t7) -/* B7B980 801047E0 8C790000 */ lw $t9, ($v1) -/* B7B984 801047E4 8FB8001C */ lw $t8, 0x1c($sp) -/* B7B988 801047E8 AF380014 */ sw $t8, 0x14($t9) -/* B7B98C 801047EC 8C690000 */ lw $t1, ($v1) -/* B7B990 801047F0 8FA80020 */ lw $t0, 0x20($sp) -/* B7B994 801047F4 0C001CBC */ jal __osRestoreInt -/* B7B998 801047F8 A5280002 */ sh $t0, 2($t1) -/* B7B99C 801047FC 8FBF0014 */ lw $ra, 0x14($sp) -/* B7B9A0 80104800 27BD0018 */ addiu $sp, $sp, 0x18 -/* B7B9A4 80104804 03E00008 */ jr $ra -/* B7B9A8 80104808 00000000 */ nop diff --git a/spec b/spec index 564ad0165a6..edf602f17d6 100644 --- a/spec +++ b/spec @@ -540,7 +540,7 @@ beginseg include "build/asm/code_80104450.o" include "build/src/libultra_code/cosf.o" include "build/src/libultra_code/coss.o" - include "build/asm/osViSetEvent.o" + include "build/src/libultra_code/osViSetEvent.o" include "build/asm/code_80104810.o" include "build/asm/code_80104B00.o" include "build/asm/code_80104C80.o" diff --git a/src/libultra_code/osViSetEvent.c b/src/libultra_code/osViSetEvent.c new file mode 100644 index 00000000000..ca8b6301abf --- /dev/null +++ b/src/libultra_code/osViSetEvent.c @@ -0,0 +1,13 @@ +#include "libultra_internal.h" + +extern OSViContext* __osViNext; + +void osViSetEvent(OSMesgQueue* mq, OSMesg msg, u32 retraceCount) +{ + register u32 saveMask; + saveMask = __osDisableInt(); + __osViNext->mq = mq; + __osViNext->msg = msg; + __osViNext->retraceCount = retraceCount; + __osRestoreInt(saveMask); +} \ No newline at end of file From f353641b82de98d75e5b11d8783b5d4c9b7cf85c Mon Sep 17 00:00:00 2001 From: shawlucas Date: Mon, 20 Apr 2020 21:51:26 -0700 Subject: [PATCH 08/11] Deleted unnecessary files --- asm/code_80101B40.s | 30 ----- asm/cosf.s | 108 ------------------ .../code/code_801031F0/func_80103A70.s | 47 -------- src/libultra_code/osViSetEvent.c | 5 +- 4 files changed, 2 insertions(+), 188 deletions(-) delete mode 100644 asm/code_80101B40.s delete mode 100644 asm/cosf.s delete mode 100644 asm/non_matchings/code/code_801031F0/func_80103A70.s diff --git a/asm/code_80101B40.s b/asm/code_80101B40.s deleted file mode 100644 index 36b57e2d175..00000000000 --- a/asm/code_80101B40.s +++ /dev/null @@ -1,30 +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 guMtxIdentF -/* B78CE0 80101B40 3C083F80 */ lui $t0, 0x3f80 -/* B78CE4 80101B44 AC880000 */ sw $t0, ($a0) -/* B78CE8 80101B48 AC800004 */ sw $zero, 4($a0) -/* B78CEC 80101B4C AC800008 */ sw $zero, 8($a0) -/* B78CF0 80101B50 AC80000C */ sw $zero, 0xc($a0) -/* B78CF4 80101B54 AC800010 */ sw $zero, 0x10($a0) -/* B78CF8 80101B58 AC880014 */ sw $t0, 0x14($a0) -/* B78CFC 80101B5C AC800018 */ sw $zero, 0x18($a0) -/* B78D00 80101B60 AC80001C */ sw $zero, 0x1c($a0) -/* B78D04 80101B64 AC800020 */ sw $zero, 0x20($a0) -/* B78D08 80101B68 AC800024 */ sw $zero, 0x24($a0) -/* B78D0C 80101B6C AC880028 */ sw $t0, 0x28($a0) -/* B78D10 80101B70 AC80002C */ sw $zero, 0x2c($a0) -/* B78D14 80101B74 AC800030 */ sw $zero, 0x30($a0) -/* B78D18 80101B78 AC800034 */ sw $zero, 0x34($a0) -/* B78D1C 80101B7C AC800038 */ sw $zero, 0x38($a0) -/* B78D20 80101B80 03E00008 */ jr $ra -/* B78D24 80101B84 AC88003C */ sw $t0, 0x3c($a0) diff --git a/asm/cosf.s b/asm/cosf.s deleted file mode 100644 index 042189cf086..00000000000 --- a/asm/cosf.s +++ /dev/null @@ -1,108 +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 cosf -/* B7B7B0 80104610 E7AC0000 */ swc1 $f12, ($sp) -/* B7B7B4 80104614 8FA20000 */ lw $v0, ($sp) -/* B7B7B8 80104618 C7A60000 */ lwc1 $f6, ($sp) -/* B7B7BC 8010461C C7AA0000 */ lwc1 $f10, ($sp) -/* B7B7C0 80104620 00027583 */ sra $t6, $v0, 0x16 -/* B7B7C4 80104624 31CF01FF */ andi $t7, $t6, 0x1ff -/* B7B7C8 80104628 29E10136 */ slti $at, $t7, 0x136 -/* B7B7CC 8010462C 50200049 */ beql $at, $zero, .L80104754 -/* B7B7D0 80104630 460A5032 */ c.eq.s $f10, $f10 -/* B7B7D4 80104634 44802000 */ mtc1 $zero, $f4 -/* B7B7D8 80104638 3C013FE0 */ li $at, 0x3FE00000 # 0.000000 -/* B7B7DC 8010463C 44819800 */ mtc1 $at, $f19 -/* B7B7E0 80104640 4606203C */ c.lt.s $f4, $f6 -/* B7B7E4 80104644 C7A00000 */ lwc1 $f0, ($sp) -/* B7B7E8 80104648 3C018015 */ lui $at, %hi(D_8014B2A8) -/* B7B7EC 8010464C 45020004 */ bc1fl .L80104660 -/* B7B7F0 80104650 46000007 */ neg.s $f0, $f0 -/* B7B7F4 80104654 10000002 */ b .L80104660 -/* B7B7F8 80104658 46003006 */ mov.s $f0, $f6 -/* B7B7FC 8010465C 46000007 */ neg.s $f0, $f0 -.L80104660: -/* B7B800 80104660 D428B2A8 */ ldc1 $f8, %lo(D_8014B2A8)($at) -/* B7B804 80104664 46000321 */ cvt.d.s $f12, $f0 -/* B7B808 80104668 44809000 */ mtc1 $zero, $f18 -/* B7B80C 8010466C 46286282 */ mul.d $f10, $f12, $f8 -/* B7B810 80104670 44802800 */ mtc1 $zero, $f5 -/* B7B814 80104674 44802000 */ mtc1 $zero, $f4 -/* B7B818 80104678 46325380 */ add.d $f14, $f10, $f18 -/* B7B81C 8010467C 462E203E */ c.le.d $f4, $f14 -/* B7B820 80104680 00000000 */ nop -/* B7B824 80104684 45020007 */ bc1fl .L801046A4 -/* B7B828 80104688 46327281 */ sub.d $f10, $f14, $f18 -/* B7B82C 8010468C 46327180 */ add.d $f6, $f14, $f18 -/* B7B830 80104690 4620320D */ trunc.w.d $f8, $f6 -/* B7B834 80104694 44024000 */ mfc1 $v0, $f8 -/* B7B838 80104698 10000006 */ b .L801046B4 -/* B7B83C 8010469C 44823000 */ mtc1 $v0, $f6 -/* B7B840 801046A0 46327281 */ sub.d $f10, $f14, $f18 -.L801046A4: -/* B7B844 801046A4 4620510D */ trunc.w.d $f4, $f10 -/* B7B848 801046A8 44022000 */ mfc1 $v0, $f4 -/* B7B84C 801046AC 00000000 */ nop -/* B7B850 801046B0 44823000 */ mtc1 $v0, $f6 -.L801046B4: -/* B7B854 801046B4 3C018015 */ lui $at, %hi(D_8014B2B0) -/* B7B858 801046B8 D42AB2B0 */ ldc1 $f10, %lo(D_8014B2B0)($at) -/* B7B85C 801046BC 46803221 */ cvt.d.w $f8, $f6 -/* B7B860 801046C0 3C018015 */ lui $at, %hi(D_8014B2B8) -/* B7B864 801046C4 D426B2B8 */ ldc1 $f6, %lo(D_8014B2B8)($at) -/* B7B868 801046C8 3C038015 */ lui $v1, %hi(D_8014B280) # $v1, 0x8015 -/* B7B86C 801046CC 2463B280 */ addiu $v1, %lo(D_8014B280) # addiu $v1, $v1, -0x4d80 -/* B7B870 801046D0 46324001 */ sub.d $f0, $f8, $f18 -/* B7B874 801046D4 30480001 */ andi $t0, $v0, 1 -/* B7B878 801046D8 462A0102 */ mul.d $f4, $f0, $f10 -/* B7B87C 801046DC D46A0020 */ ldc1 $f10, 0x20($v1) -/* B7B880 801046E0 46260202 */ mul.d $f8, $f0, $f6 -/* B7B884 801046E4 D4660018 */ ldc1 $f6, 0x18($v1) -/* B7B888 801046E8 46246081 */ sub.d $f2, $f12, $f4 -/* B7B88C 801046EC 46281081 */ sub.d $f2, $f2, $f8 -/* B7B890 801046F0 46221382 */ mul.d $f14, $f2, $f2 -/* B7B894 801046F4 00000000 */ nop -/* B7B898 801046F8 462E5102 */ mul.d $f4, $f10, $f14 -/* B7B89C 801046FC 46262200 */ add.d $f8, $f4, $f6 -/* B7B8A0 80104700 D4640010 */ ldc1 $f4, 0x10($v1) -/* B7B8A4 80104704 462E4282 */ mul.d $f10, $f8, $f14 -/* B7B8A8 80104708 46245180 */ add.d $f6, $f10, $f4 -/* B7B8AC 8010470C D46A0008 */ ldc1 $f10, 8($v1) -/* B7B8B0 80104710 462E3202 */ mul.d $f8, $f6, $f14 -/* B7B8B4 80104714 15000007 */ bnez $t0, .L80104734 -/* B7B8B8 80104718 46285400 */ add.d $f16, $f10, $f8 -/* B7B8BC 8010471C 462E1102 */ mul.d $f4, $f2, $f14 -/* B7B8C0 80104720 00000000 */ nop -/* B7B8C4 80104724 46302182 */ mul.d $f6, $f4, $f16 -/* B7B8C8 80104728 46223280 */ add.d $f10, $f6, $f2 -/* B7B8CC 8010472C 03E00008 */ jr $ra -/* B7B8D0 80104730 46205020 */ cvt.s.d $f0, $f10 -.L80104734: -/* B7B8D4 80104734 462E1202 */ mul.d $f8, $f2, $f14 -/* B7B8D8 80104738 00000000 */ nop -/* B7B8DC 8010473C 46304102 */ mul.d $f4, $f8, $f16 -/* B7B8E0 80104740 46222180 */ add.d $f6, $f4, $f2 -/* B7B8E4 80104744 46203020 */ cvt.s.d $f0, $f6 -/* B7B8E8 80104748 03E00008 */ jr $ra -/* B7B8EC 8010474C 46000007 */ neg.s $f0, $f0 -/* B7B8F0 80104750 460A5032 */ c.eq.s $f10, $f10 -.L80104754: -/* B7B8F4 80104754 3C018015 */ lui $at, %hi(D_8014B2C0) -/* B7B8F8 80104758 45010004 */ bc1t .L8010476C -/* B7B8FC 8010475C 00000000 */ nop -/* B7B900 80104760 3C018015 */ lui $at, %hi(D_8014B2D0) -/* B7B904 80104764 03E00008 */ jr $ra -/* B7B908 80104768 C420B2D0 */ lwc1 $f0, %lo(D_8014B2D0)($at) -.L8010476C: -/* B7B90C 8010476C C420B2C0 */ lwc1 $f0, %lo(D_8014B2C0)($at) -/* B7B910 80104770 03E00008 */ jr $ra -/* B7B914 80104774 00000000 */ nop diff --git a/asm/non_matchings/code/code_801031F0/func_80103A70.s b/asm/non_matchings/code/code_801031F0/func_80103A70.s deleted file mode 100644 index 651ba8bf61a..00000000000 --- a/asm/non_matchings/code/code_801031F0/func_80103A70.s +++ /dev/null @@ -1,47 +0,0 @@ -glabel guLookAtHilite -/* B7AC10 80103A70 27BDFF68 */ addiu $sp, $sp, -0x98 -/* B7AC14 80103A74 C7A400A8 */ lwc1 $f4, 0xa8($sp) -/* B7AC18 80103A78 C7A600AC */ lwc1 $f6, 0xac($sp) -/* B7AC1C 80103A7C C7A800B0 */ lwc1 $f8, 0xb0($sp) -/* B7AC20 80103A80 E7A40010 */ swc1 $f4, 0x10($sp) -/* B7AC24 80103A84 E7A60014 */ swc1 $f6, 0x14($sp) -/* B7AC28 80103A88 C7A600C4 */ lwc1 $f6, 0xc4($sp) -/* B7AC2C 80103A8C C7A400C0 */ lwc1 $f4, 0xc0($sp) -/* B7AC30 80103A90 C7AA00B4 */ lwc1 $f10, 0xb4($sp) -/* B7AC34 80103A94 C7B000B8 */ lwc1 $f16, 0xb8($sp) -/* B7AC38 80103A98 C7B200BC */ lwc1 $f18, 0xbc($sp) -/* B7AC3C 80103A9C 44876000 */ mtc1 $a3, $f12 -/* B7AC40 80103AA0 E7A80018 */ swc1 $f8, 0x18($sp) -/* B7AC44 80103AA4 E7A6002C */ swc1 $f6, 0x2c($sp) -/* B7AC48 80103AA8 E7A40028 */ swc1 $f4, 0x28($sp) -/* B7AC4C 80103AAC E7AA001C */ swc1 $f10, 0x1c($sp) -/* B7AC50 80103AB0 E7B00020 */ swc1 $f16, 0x20($sp) -/* B7AC54 80103AB4 E7B20024 */ swc1 $f18, 0x24($sp) -/* B7AC58 80103AB8 C7B200D4 */ lwc1 $f18, 0xd4($sp) -/* B7AC5C 80103ABC C7B000D0 */ lwc1 $f16, 0xd0($sp) -/* B7AC60 80103AC0 C7AA00CC */ lwc1 $f10, 0xcc($sp) -/* B7AC64 80103AC4 C7A400D8 */ lwc1 $f4, 0xd8($sp) -/* B7AC68 80103AC8 C7A600DC */ lwc1 $f6, 0xdc($sp) -/* B7AC6C 80103ACC C7A800C8 */ lwc1 $f8, 0xc8($sp) -/* B7AC70 80103AD0 8FAE00E0 */ lw $t6, 0xe0($sp) -/* B7AC74 80103AD4 8FAF00E4 */ lw $t7, 0xe4($sp) -/* B7AC78 80103AD8 AFBF0054 */ sw $ra, 0x54($sp) -/* B7AC7C 80103ADC AFA40098 */ sw $a0, 0x98($sp) -/* B7AC80 80103AE0 44076000 */ mfc1 $a3, $f12 -/* B7AC84 80103AE4 27A40058 */ addiu $a0, $sp, 0x58 -/* B7AC88 80103AE8 E7B2003C */ swc1 $f18, 0x3c($sp) -/* B7AC8C 80103AEC E7B00038 */ swc1 $f16, 0x38($sp) -/* B7AC90 80103AF0 E7AA0034 */ swc1 $f10, 0x34($sp) -/* B7AC94 80103AF4 E7A40040 */ swc1 $f4, 0x40($sp) -/* B7AC98 80103AF8 E7A60044 */ swc1 $f6, 0x44($sp) -/* B7AC9C 80103AFC E7A80030 */ swc1 $f8, 0x30($sp) -/* B7ACA0 80103B00 AFAE0048 */ sw $t6, 0x48($sp) -/* B7ACA4 80103B04 0C040CAC */ jal guLookAtHiliteF -/* B7ACA8 80103B08 AFAF004C */ sw $t7, 0x4c($sp) -/* B7ACAC 80103B0C 27A40058 */ addiu $a0, $sp, 0x58 -/* B7ACB0 80103B10 0C041938 */ jal func_801064E0 -/* B7ACB4 80103B14 8FA50098 */ lw $a1, 0x98($sp) -/* B7ACB8 80103B18 8FBF0054 */ lw $ra, 0x54($sp) -/* B7ACBC 80103B1C 27BD0098 */ addiu $sp, $sp, 0x98 -/* B7ACC0 80103B20 03E00008 */ jr $ra -/* B7ACC4 80103B24 00000000 */ nop diff --git a/src/libultra_code/osViSetEvent.c b/src/libultra_code/osViSetEvent.c index ca8b6301abf..1c042dc27db 100644 --- a/src/libultra_code/osViSetEvent.c +++ b/src/libultra_code/osViSetEvent.c @@ -2,12 +2,11 @@ extern OSViContext* __osViNext; -void osViSetEvent(OSMesgQueue* mq, OSMesg msg, u32 retraceCount) -{ +void osViSetEvent(OSMesgQueue* mq, OSMesg msg, u32 retraceCount) { register u32 saveMask; saveMask = __osDisableInt(); __osViNext->mq = mq; __osViNext->msg = msg; __osViNext->retraceCount = retraceCount; __osRestoreInt(saveMask); -} \ No newline at end of file +} From dc98da456440d9f01cbeaa129e2e3b2e25b38d6d Mon Sep 17 00:00:00 2001 From: shawlucas Date: Tue, 21 Apr 2020 07:59:45 -0700 Subject: [PATCH 09/11] Made suggested changes, merged playblack.c --- src/code/irqmgr.c | 2 +- src/libultra_code/code_801031F0.c | 2 +- src/libultra_code/libultra_internal.h | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/code/irqmgr.c b/src/code/irqmgr.c index 7b59fbb4c7c..d0124a2036e 100644 --- a/src/code/irqmgr.c +++ b/src/code/irqmgr.c @@ -142,7 +142,7 @@ void IrqMgr_HandlePRENMI450(IrqMgr* this) { void IrqMgr_HandlePRENMI480(IrqMgr* this) { u32 ret; osSetTimer(&this->timer, OS_USEC_TO_CYCLES(20000), 0ull, &this->queue, (OSMesg)PRENMI500_MSG); - ret = osAfterPreNMI(); // osAfterPreNMI + ret = osAfterPreNMI(); if (ret) { osSyncPrintf("osAfterPreNMIが %d を返しました!?\n", ret); // osAfterPreNMI returned %d !? osSetTimer(&this->timer, OS_USEC_TO_CYCLES(1000), 0ull, &this->queue, (OSMesg)PRENMI480_MSG); diff --git a/src/libultra_code/code_801031F0.c b/src/libultra_code/code_801031F0.c index 54ae2de12f3..b69c75b1ee5 100644 --- a/src/libultra_code/code_801031F0.c +++ b/src/libultra_code/code_801031F0.c @@ -8,7 +8,7 @@ s32 osAfterPreNMI(void) { /** * osContStartQuery: * Starts to read the values for SI device status and type which are connected to the controller port and joyport - *connector. + * connector. **/ s32 osContStartQuery(OSMesgQueue* mq) { diff --git a/src/libultra_code/libultra_internal.h b/src/libultra_code/libultra_internal.h index 9c54f1fd44f..ebbb632f1ec 100644 --- a/src/libultra_code/libultra_internal.h +++ b/src/libultra_code/libultra_internal.h @@ -4,8 +4,7 @@ // TODO: rename these // SM64 OOT -#define guMtxIdentF guMtxIdentF -#define guMtxF2L func_801064E0 +#define guMtxF2L func_801064E0 // believed to be correct name, needs confirmation. s32 __osDisableInt(); void __osRestoreInt(s32); From b59904d1b9a7d7794acaca8066b18ce6d0e89d60 Mon Sep 17 00:00:00 2001 From: shawlucas Date: Tue, 21 Apr 2020 08:05:28 -0700 Subject: [PATCH 10/11] Removed line breaks from comments --- src/libultra_code/code_801031F0.c | 2 -- src/libultra_code/guLookAtHilite.c | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/libultra_code/code_801031F0.c b/src/libultra_code/code_801031F0.c index b69c75b1ee5..3a5ba4f1814 100644 --- a/src/libultra_code/code_801031F0.c +++ b/src/libultra_code/code_801031F0.c @@ -10,7 +10,6 @@ s32 osAfterPreNMI(void) { * Starts to read the values for SI device status and type which are connected to the controller port and joyport * connector. **/ - s32 osContStartQuery(OSMesgQueue* mq) { s32 ret; ret = 0; @@ -31,7 +30,6 @@ s32 osContStartQuery(OSMesgQueue* mq) { * osContGetQuery: * Returns the values from osContStartQuery to status. Both functions must be paired for use. **/ - void osContGetQuery(OSContStatus* data) { u8 pattern; __osContGetInitData(&pattern, data); diff --git a/src/libultra_code/guLookAtHilite.c b/src/libultra_code/guLookAtHilite.c index c8332750e81..1b981f6f473 100644 --- a/src/libultra_code/guLookAtHilite.c +++ b/src/libultra_code/guLookAtHilite.c @@ -28,7 +28,6 @@ * hiliteWidth: width of texture for specular highlight * hiliteHeight: height of texture for specular highlight **/ - void guLookAtHiliteF(f32 mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, /* light 1 direction */ f32 xl2, f32 yl2, f32 zl2, /* light 2 direction */ @@ -163,7 +162,6 @@ void guLookAtHiliteF(f32 mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 * This function creates the viewing matrix (fixed point) and sets the LookAt/Hilite structures * Same args as previous function **/ - void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight) { From a5cc77617346642f7f38c020d7962fbc6bf6157f Mon Sep 17 00:00:00 2001 From: shawlucas Date: Tue, 21 Apr 2020 21:39:09 -0700 Subject: [PATCH 11/11] Removed argument listing --- src/libultra_code/guLookAtHilite.c | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/src/libultra_code/guLookAtHilite.c b/src/libultra_code/guLookAtHilite.c index 1b981f6f473..a15dd7b54ed 100644 --- a/src/libultra_code/guLookAtHilite.c +++ b/src/libultra_code/guLookAtHilite.c @@ -6,27 +6,6 @@ /** * guLookAtHiliteF * This function creates the viewing matrix (floating point) and sets the LookAt/Hilite structures - * - * mf: 4x4 viewing matrix resulting from calculation - * l: Pointer to LookAt structure resulting from calculation - * h: Pointer to Hilite structure resulting from calculation - * xEye: x-coordinate of viewpoint - * yEye: y-coordinate of viewpoint - * zEye: z-coordinate of viewpoint - * xAt: x-coordinate of lookat point - * yAt: y-coordinate of lookat point - * zAt: z-coordinate of lookat point - * xUp: x component of upward vector - * yUp: y component of upward vector - * zUp: z component of upward vector - * xl1: x direction for first specular highlight - * yl1: y direction for first specular highlight - * zl1: z direction for first specular highlight - * xl2: x direction for second specular highlight - * yl2: y direction for second specular highlight - * zl2: z direction for second specular highlight - * hiliteWidth: width of texture for specular highlight - * hiliteHeight: height of texture for specular highlight **/ void guLookAtHiliteF(f32 mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, /* light 1 direction */