c_src: guMtxUtil.c, osViSwapBuffer.c

This commit is contained in:
Mittenshugg
2020-07-31 20:11:28 -05:00
parent f502566598
commit 11238a7fd7
9 changed files with 89 additions and 180 deletions
+1
View File
@@ -175,6 +175,7 @@ $(BUILD_DIR)/lib/%.o: MIPSISET := -mips2
$(BUILD_DIR)/lib/src/osSetTimer.o: OPT_FLAGS := -O1
$(BUILD_DIR)/lib/src/osTimer.o: OPT_FLAGS := -O1
$(BUILD_DIR)/lib/src/osViBlack.o: OPT_FLAGS := -O1
$(BUILD_DIR)/lib/src/osViSwapBuffer.o : OPT_FLAGS := -O1
######################## Targets #############################
@@ -98,7 +98,7 @@ glabel func_8007A98C
.L8007AAE8:
/* 07B6E8 8007AAE8 3C048012 */ lui $a0, %hi(D_801262D8) # $a0, 0x8012
/* 07B6EC 8007AAEC 8C8462D8 */ lw $a0, %lo(D_801262D8)($a0)
/* 07B6F0 8007AAF0 0C034908 */ jal func_800D2420
/* 07B6F0 8007AAF0 0C034908 */ jal osViSwapBuffer
/* 07B6F4 8007AAF4 AFA30028 */ sw $v1, 0x28($sp)
/* 07B6F8 8007AAF8 02402025 */ move $a0, $s2
/* 07B6FC 8007AAFC 00002825 */ move $a1, $zero
@@ -1,69 +0,0 @@
glabel guMtxF2L
/* 0D5440 800D4840 3C014780 */ li $at, 0x47800000 # 65536.000000
/* 0D5444 800D4844 44810000 */ mtc1 $at, $f0
/* 0D5448 800D4848 00A01025 */ move $v0, $a1
/* 0D544C 800D484C 24A30020 */ addiu $v1, $a1, 0x20
/* 0D5450 800D4850 00003025 */ move $a2, $zero
/* 0D5454 800D4854 00803825 */ move $a3, $a0
/* 0D5458 800D4858 240C0004 */ li $t4, 4
/* 0D545C 800D485C 240B0002 */ li $t3, 2
/* 0D5460 800D4860 3C0AFFFF */ lui $t2, 0xffff
.L800D4864:
/* 0D5464 800D4864 00002025 */ move $a0, $zero
/* 0D5468 800D4868 00E04025 */ move $t0, $a3
/* 0D546C 800D486C C50E0004 */ lwc1 $f14, 4($t0)
/* 0D5470 800D4870 24840001 */ addiu $a0, $a0, 1
/* 0D5474 800D4874 C5120000 */ lwc1 $f18, ($t0)
/* 0D5478 800D4878 46007402 */ mul.s $f16, $f14, $f0
/* 0D547C 800D487C 108B0019 */ beq $a0, $t3, .L800D48E4
/* 0D5480 800D4880 00000000 */ nop
.L800D4884:
/* 0D5484 800D4884 46009382 */ mul.s $f14, $f18, $f0
/* 0D5488 800D4888 24840001 */ addiu $a0, $a0, 1
/* 0D548C 800D488C 24420004 */ addiu $v0, $v0, 4
/* 0D5490 800D4890 24630004 */ addiu $v1, $v1, 4
/* 0D5494 800D4894 25080008 */ addiu $t0, $t0, 8
/* 0D5498 800D4898 4600830D */ trunc.w.s $f12, $f16
/* 0D549C 800D489C 4600738D */ trunc.w.s $f14, $f14
/* 0D54A0 800D48A0 44096000 */ mfc1 $t1, $f12
/* 0D54A4 800D48A4 44057000 */ mfc1 $a1, $f14
/* 0D54A8 800D48A8 0009CC03 */ sra $t9, $t1, 0x10
/* 0D54AC 800D48AC 332DFFFF */ andi $t5, $t9, 0xffff
/* 0D54B0 800D48B0 00AAC024 */ and $t8, $a1, $t2
/* 0D54B4 800D48B4 030D7025 */ or $t6, $t8, $t5
/* 0D54B8 800D48B8 00057C00 */ sll $t7, $a1, 0x10
/* 0D54BC 800D48BC 01EAC824 */ and $t9, $t7, $t2
/* 0D54C0 800D48C0 AC4EFFFC */ sw $t6, -4($v0)
/* 0D54C4 800D48C4 3138FFFF */ andi $t8, $t1, 0xffff
/* 0D54C8 800D48C8 03386825 */ or $t5, $t9, $t8
/* 0D54CC 800D48CC AC6DFFFC */ sw $t5, -4($v1)
/* 0D54D0 800D48D0 C50E0004 */ lwc1 $f14, 4($t0)
/* 0D54D4 800D48D4 C5120000 */ lwc1 $f18, ($t0)
/* 0D54D8 800D48D8 46007402 */ mul.s $f16, $f14, $f0
/* 0D54DC 800D48DC 148BFFE9 */ bne $a0, $t3, .L800D4884
/* 0D54E0 800D48E0 00000000 */ nop
.L800D48E4:
/* 0D54E4 800D48E4 46009382 */ mul.s $f14, $f18, $f0
/* 0D54E8 800D48E8 25080008 */ addiu $t0, $t0, 8
/* 0D54EC 800D48EC 24420004 */ addiu $v0, $v0, 4
/* 0D54F0 800D48F0 24630004 */ addiu $v1, $v1, 4
/* 0D54F4 800D48F4 4600830D */ trunc.w.s $f12, $f16
/* 0D54F8 800D48F8 4600738D */ trunc.w.s $f14, $f14
/* 0D54FC 800D48FC 44096000 */ mfc1 $t1, $f12
/* 0D5500 800D4900 44057000 */ mfc1 $a1, $f14
/* 0D5504 800D4904 0009CC03 */ sra $t9, $t1, 0x10
/* 0D5508 800D4908 332DFFFF */ andi $t5, $t9, 0xffff
/* 0D550C 800D490C 00AAC024 */ and $t8, $a1, $t2
/* 0D5510 800D4910 030D7025 */ or $t6, $t8, $t5
/* 0D5514 800D4914 00057C00 */ sll $t7, $a1, 0x10
/* 0D5518 800D4918 01EAC824 */ and $t9, $t7, $t2
/* 0D551C 800D491C 3138FFFF */ andi $t8, $t1, 0xffff
/* 0D5520 800D4920 AC4EFFFC */ sw $t6, -4($v0)
/* 0D5524 800D4924 03386825 */ or $t5, $t9, $t8
/* 0D5528 800D4928 AC6DFFFC */ sw $t5, -4($v1)
/* 0D552C 800D492C 24C60001 */ addiu $a2, $a2, 1
/* 0D5530 800D4930 14CCFFCC */ bne $a2, $t4, .L800D4864
/* 0D5534 800D4934 24E70010 */ addiu $a3, $a3, 0x10
/* 0D5538 800D4938 03E00008 */ jr $ra
/* 0D553C 800D493C 00000000 */ nop
@@ -1,103 +0,0 @@
glabel guMtxIdentF
/* 0D5540 800D4940 3C013F80 */ li $at, 0x3F800000 # 1.000000
/* 0D5544 800D4944 00801825 */ move $v1, $a0
/* 0D5548 800D4948 44810000 */ mtc1 $at, $f0
/* 0D554C 800D494C 44801000 */ mtc1 $zero, $f2
/* 0D5550 800D4950 24040001 */ li $a0, 1
/* 0D5554 800D4954 00001025 */ move $v0, $zero
/* 0D5558 800D4958 24070004 */ li $a3, 4
/* 0D555C 800D495C 24060003 */ li $a2, 3
/* 0D5560 800D4960 24050002 */ li $a1, 2
.L800D4964:
/* 0D5564 800D4964 54400004 */ bnezl $v0, .L800D4978
/* 0D5568 800D4968 E4620000 */ swc1 $f2, ($v1)
/* 0D556C 800D496C 10000002 */ b .L800D4978
/* 0D5570 800D4970 E4600000 */ swc1 $f0, ($v1)
/* 0D5574 800D4974 E4620000 */ swc1 $f2, ($v1)
.L800D4978:
/* 0D5578 800D4978 54440004 */ bnel $v0, $a0, .L800D498C
/* 0D557C 800D497C E4620004 */ swc1 $f2, 4($v1)
/* 0D5580 800D4980 10000002 */ b .L800D498C
/* 0D5584 800D4984 E4600004 */ swc1 $f0, 4($v1)
/* 0D5588 800D4988 E4620004 */ swc1 $f2, 4($v1)
.L800D498C:
/* 0D558C 800D498C 54450004 */ bnel $v0, $a1, .L800D49A0
/* 0D5590 800D4990 E4620008 */ swc1 $f2, 8($v1)
/* 0D5594 800D4994 10000002 */ b .L800D49A0
/* 0D5598 800D4998 E4600008 */ swc1 $f0, 8($v1)
/* 0D559C 800D499C E4620008 */ swc1 $f2, 8($v1)
.L800D49A0:
/* 0D55A0 800D49A0 54460004 */ bnel $v0, $a2, .L800D49B4
/* 0D55A4 800D49A4 E462000C */ swc1 $f2, 0xc($v1)
/* 0D55A8 800D49A8 10000002 */ b .L800D49B4
/* 0D55AC 800D49AC E460000C */ swc1 $f0, 0xc($v1)
/* 0D55B0 800D49B0 E462000C */ swc1 $f2, 0xc($v1)
.L800D49B4:
/* 0D55B4 800D49B4 24420001 */ addiu $v0, $v0, 1
/* 0D55B8 800D49B8 1447FFEA */ bne $v0, $a3, .L800D4964
/* 0D55BC 800D49BC 24630010 */ addiu $v1, $v1, 0x10
/* 0D55C0 800D49C0 03E00008 */ jr $ra
/* 0D55C4 800D49C4 00000000 */ nop
/* 0D55C8 800D49C8 27BDFFA8 */ addiu $sp, $sp, -0x58
/* 0D55CC 800D49CC AFBF0014 */ sw $ra, 0x14($sp)
/* 0D55D0 800D49D0 AFA40058 */ sw $a0, 0x58($sp)
/* 0D55D4 800D49D4 0C035250 */ jal guMtxIdentF
/* 0D55D8 800D49D8 27A40018 */ addiu $a0, $sp, 0x18
/* 0D55DC 800D49DC 27A40018 */ addiu $a0, $sp, 0x18
/* 0D55E0 800D49E0 0C035210 */ jal guMtxF2L
/* 0D55E4 800D49E4 8FA50058 */ lw $a1, 0x58($sp)
/* 0D55E8 800D49E8 8FBF0014 */ lw $ra, 0x14($sp)
/* 0D55EC 800D49EC 27BD0058 */ addiu $sp, $sp, 0x58
/* 0D55F0 800D49F0 03E00008 */ jr $ra
/* 0D55F4 800D49F4 00000000 */ nop
/* 0D55F8 800D49F8 3C014780 */ li $at, 0x47800000 # 65536.000000
/* 0D55FC 800D49FC 44810000 */ mtc1 $at, $f0
/* 0D5600 800D4A00 27BDFFF0 */ addiu $sp, $sp, -0x10
/* 0D5604 800D4A04 00A01025 */ move $v0, $a1
/* 0D5608 800D4A08 24A30020 */ addiu $v1, $a1, 0x20
/* 0D560C 800D4A0C 00003025 */ move $a2, $zero
/* 0D5610 800D4A10 00804025 */ move $t0, $a0
/* 0D5614 800D4A14 240C0004 */ li $t4, 4
/* 0D5618 800D4A18 240B0002 */ li $t3, 2
/* 0D561C 800D4A1C 3C0AFFFF */ lui $t2, 0xffff
.L800D4A20:
/* 0D5620 800D4A20 00002025 */ move $a0, $zero
/* 0D5624 800D4A24 01004825 */ move $t1, $t0
.L800D4A28:
/* 0D5628 800D4A28 8C6E0000 */ lw $t6, ($v1)
/* 0D562C 800D4A2C 8C590000 */ lw $t9, ($v0)
/* 0D5630 800D4A30 24840001 */ addiu $a0, $a0, 1
/* 0D5634 800D4A34 000E7C02 */ srl $t7, $t6, 0x10
/* 0D5638 800D4A38 31F8FFFF */ andi $t8, $t7, 0xffff
/* 0D563C 800D4A3C 032A6824 */ and $t5, $t9, $t2
/* 0D5640 800D4A40 030D7025 */ or $t6, $t8, $t5
/* 0D5644 800D4A44 AFAE0004 */ sw $t6, 4($sp)
/* 0D5648 800D4A48 8C6F0000 */ lw $t7, ($v1)
/* 0D564C 800D4A4C 8C580000 */ lw $t8, ($v0)
/* 0D5650 800D4A50 8FA50004 */ lw $a1, 4($sp)
/* 0D5654 800D4A54 31F9FFFF */ andi $t9, $t7, 0xffff
/* 0D5658 800D4A58 00186C00 */ sll $t5, $t8, 0x10
/* 0D565C 800D4A5C 44859000 */ mtc1 $a1, $f18
/* 0D5660 800D4A60 01AA7024 */ and $t6, $t5, $t2
/* 0D5664 800D4A64 032E3825 */ or $a3, $t9, $t6
/* 0D5668 800D4A68 468094A0 */ cvt.s.w $f18, $f18
/* 0D566C 800D4A6C 44878000 */ mtc1 $a3, $f16
/* 0D5670 800D4A70 AFA70000 */ sw $a3, ($sp)
/* 0D5674 800D4A74 24420004 */ addiu $v0, $v0, 4
/* 0D5678 800D4A78 24630004 */ addiu $v1, $v1, 4
/* 0D567C 800D4A7C 46808420 */ cvt.s.w $f16, $f16
/* 0D5680 800D4A80 25290008 */ addiu $t1, $t1, 8
/* 0D5684 800D4A84 46009483 */ div.s $f18, $f18, $f0
/* 0D5688 800D4A88 46008403 */ div.s $f16, $f16, $f0
/* 0D568C 800D4A8C E532FFF8 */ swc1 $f18, -8($t1)
/* 0D5690 800D4A90 148BFFE5 */ bne $a0, $t3, .L800D4A28
/* 0D5694 800D4A94 E530FFFC */ swc1 $f16, -4($t1)
/* 0D5698 800D4A98 24C60001 */ addiu $a2, $a2, 1
/* 0D569C 800D4A9C 14CCFFE0 */ bne $a2, $t4, .L800D4A20
/* 0D56A0 800D4AA0 25080010 */ addiu $t0, $t0, 0x10
/* 0D56A4 800D4AA4 03E00008 */ jr $ra
/* 0D56A8 800D4AA8 27BD0010 */ addiu $sp, $sp, 0x10
/* 0D56AC 800D4AAC 00000000 */ nop
@@ -1,4 +1,4 @@
glabel func_800D2420
glabel osViSwapBuffer
/* 0D3020 800D2420 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 0D3024 800D2424 AFBF0014 */ sw $ra, 0x14($sp)
/* 0D3028 800D2428 0C034958 */ jal __osDisableInt
+64
View File
@@ -0,0 +1,64 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800D4840 */
#include "libultra_internal.h"
void guMtxF2L(float mf[4][4], Mtx *m) {
int r, c;
s32 tmp1;
s32 tmp2;
s32 *m1 = &m->m[0][0];
s32 *m2 = &m->m[2][0];
for (r = 0; r < 4; r++) {
for (c = 0; c < 2; c++) {
tmp1 = mf[r][2 * c] * 65536.0f;
tmp2 = mf[r][2 * c + 1] * 65536.0f;
*m1++ = (tmp1 & 0xffff0000) | ((tmp2 >> 0x10) & 0xffff);
*m2++ = ((tmp1 << 0x10) & 0xffff0000) | (tmp2 & 0xffff);
}
}
}
void guMtxIdentF(float mf[4][4]) {
int r, c;
for (r = 0; r < 4; r++) {
for (c = 0; c < 4; c++) {
if (r == c) {
mf[r][c] = 1.0f;
} else {
mf[r][c] = 0.0f;
}
}
}
}
void guMtxIdent(Mtx *m) {
#ifndef GBI_FLOATS
float mf[4][4];
guMtxIdentF(mf);
guMtxF2L(mf, m);
#else
guMtxIdentF(m->m);
#endif
}
void guMtxL2F(float mf[4][4], Mtx *m) {
int r, c;
u32 tmp1;
u32 tmp2;
u32 *m1;
u32 *m2;
s32 stmp1, stmp2;
m1 = (u32 *) &m->m[0][0];
m2 = (u32 *) &m->m[2][0];
for (r = 0; r < 4; r++) {
for (c = 0; c < 2; c++) {
tmp1 = (*m1 & 0xffff0000) | ((*m2 >> 0x10) & 0xffff);
tmp2 = ((*m1++ << 0x10) & 0xffff0000) | (*m2++ & 0xffff);
stmp1 = *(s32 *) &tmp1;
stmp2 = *(s32 *) &tmp2;
mf[r][c * 2 + 0] = stmp1 / 65536.0f;
mf[r][c * 2 + 1] = stmp2 / 65536.0f;
}
}
}
+13
View File
@@ -0,0 +1,13 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800D2420 */
#include "libultra_internal.h"
extern OSViContext* D_800E4874;
void osViSwapBuffer(void* frameBufPtr){
u32 saveMask = __osDisableInt();
D_800E4874->buffer = frameBufPtr;
D_800E4874->unk00 |= 0x10;
__osRestoreInt(saveMask);
}
+1 -6
View File
@@ -1,10 +1,9 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800D2420 */
/* RAM_POS: 0x800D2470 */
#include "types.h"
#include "macros.h"
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/func_800D2420.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/func_800D2470.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/__osPiCreateAccessQueue.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/osGetThreadPri.s")
@@ -41,7 +40,3 @@ GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/osWritebackICache.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/osMapTLBRdb.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/osPiRawWriteIo.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/func_800D47F0.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/guMtxF2L.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/guMtxIdentF.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/cosf.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/sinf.s")
+8
View File
@@ -0,0 +1,8 @@
/* The comment below is needed for this file to be picked up by generate_ld */
/* RAM_POS: 0x800D4AB0 */
#include "types.h"
#include "macros.h"
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/cosf.s")
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D3020/sinf.s")