mirror of
https://gitlab.com/kholdfuzion/goldeneye_src
synced 2026-08-26 23:37:36 -04:00
188 lines
8.4 KiB
ArmAsm
188 lines
8.4 KiB
ArmAsm
# assembler directives
|
|
.set noat # allow manual use of $at
|
|
.set noreorder # don't insert nops after branches
|
|
.set gp=64
|
|
|
|
.include "macros.inc"
|
|
|
|
|
|
.section .text, "ax"
|
|
glabel guMtxF2L
|
|
/* 010B10 7000FF10 3C014780 */ li $at, 0x47800000 # 65536.000000
|
|
/* 010B14 7000FF14 44810000 */ mtc1 $at, $f0
|
|
/* 010B18 7000FF18 00A01025 */ move $v0, $a1
|
|
/* 010B1C 7000FF1C 24A30020 */ addiu $v1, $a1, 0x20
|
|
/* 010B20 7000FF20 00003025 */ move $a2, $zero
|
|
/* 010B24 7000FF24 00803825 */ move $a3, $a0
|
|
/* 010B28 7000FF28 240C0004 */ li $t4, 4
|
|
/* 010B2C 7000FF2C 240B0002 */ li $t3, 2
|
|
/* 010B30 7000FF30 3C0AFFFF */ lui $t2, 0xffff
|
|
.L7000FF34:
|
|
/* 010B34 7000FF34 00002025 */ move $a0, $zero
|
|
/* 010B38 7000FF38 00E04025 */ move $t0, $a3
|
|
/* 010B3C 7000FF3C C50E0004 */ lwc1 $f14, 4($t0)
|
|
/* 010B40 7000FF40 24840001 */ addiu $a0, $a0, 1
|
|
/* 010B44 7000FF44 C5120000 */ lwc1 $f18, ($t0)
|
|
/* 010B48 7000FF48 46007402 */ mul.s $f16, $f14, $f0
|
|
/* 010B4C 7000FF4C 108B0019 */ beq $a0, $t3, .L7000FFB4
|
|
/* 010B50 7000FF50 00000000 */ nop
|
|
.L7000FF54:
|
|
/* 010B54 7000FF54 46009382 */ mul.s $f14, $f18, $f0
|
|
/* 010B58 7000FF58 24840001 */ addiu $a0, $a0, 1
|
|
/* 010B5C 7000FF5C 24420004 */ addiu $v0, $v0, 4
|
|
/* 010B60 7000FF60 24630004 */ addiu $v1, $v1, 4
|
|
/* 010B64 7000FF64 25080008 */ addiu $t0, $t0, 8
|
|
/* 010B68 7000FF68 4600830D */ trunc.w.s $f12, $f16
|
|
/* 010B6C 7000FF6C 4600738D */ trunc.w.s $f14, $f14
|
|
/* 010B70 7000FF70 44096000 */ mfc1 $t1, $f12
|
|
/* 010B74 7000FF74 44057000 */ mfc1 $a1, $f14
|
|
/* 010B78 7000FF78 0009CC03 */ sra $t9, $t1, 0x10
|
|
/* 010B7C 7000FF7C 332DFFFF */ andi $t5, $t9, 0xffff
|
|
/* 010B80 7000FF80 00AAC024 */ and $t8, $a1, $t2
|
|
/* 010B84 7000FF84 030D7025 */ or $t6, $t8, $t5
|
|
/* 010B88 7000FF88 00057C00 */ sll $t7, $a1, 0x10
|
|
/* 010B8C 7000FF8C 01EAC824 */ and $t9, $t7, $t2
|
|
/* 010B90 7000FF90 AC4EFFFC */ sw $t6, -4($v0)
|
|
/* 010B94 7000FF94 3138FFFF */ andi $t8, $t1, 0xffff
|
|
/* 010B98 7000FF98 03386825 */ or $t5, $t9, $t8
|
|
/* 010B9C 7000FF9C AC6DFFFC */ sw $t5, -4($v1)
|
|
/* 010BA0 7000FFA0 C50E0004 */ lwc1 $f14, 4($t0)
|
|
/* 010BA4 7000FFA4 C5120000 */ lwc1 $f18, ($t0)
|
|
/* 010BA8 7000FFA8 46007402 */ mul.s $f16, $f14, $f0
|
|
/* 010BAC 7000FFAC 148BFFE9 */ bne $a0, $t3, .L7000FF54
|
|
/* 010BB0 7000FFB0 00000000 */ nop
|
|
.L7000FFB4:
|
|
/* 010BB4 7000FFB4 46009382 */ mul.s $f14, $f18, $f0
|
|
/* 010BB8 7000FFB8 25080008 */ addiu $t0, $t0, 8
|
|
/* 010BBC 7000FFBC 24420004 */ addiu $v0, $v0, 4
|
|
/* 010BC0 7000FFC0 24630004 */ addiu $v1, $v1, 4
|
|
/* 010BC4 7000FFC4 4600830D */ trunc.w.s $f12, $f16
|
|
/* 010BC8 7000FFC8 4600738D */ trunc.w.s $f14, $f14
|
|
/* 010BCC 7000FFCC 44096000 */ mfc1 $t1, $f12
|
|
/* 010BD0 7000FFD0 44057000 */ mfc1 $a1, $f14
|
|
/* 010BD4 7000FFD4 0009CC03 */ sra $t9, $t1, 0x10
|
|
/* 010BD8 7000FFD8 332DFFFF */ andi $t5, $t9, 0xffff
|
|
/* 010BDC 7000FFDC 00AAC024 */ and $t8, $a1, $t2
|
|
/* 010BE0 7000FFE0 030D7025 */ or $t6, $t8, $t5
|
|
/* 010BE4 7000FFE4 00057C00 */ sll $t7, $a1, 0x10
|
|
/* 010BE8 7000FFE8 01EAC824 */ and $t9, $t7, $t2
|
|
/* 010BEC 7000FFEC 3138FFFF */ andi $t8, $t1, 0xffff
|
|
/* 010BF0 7000FFF0 AC4EFFFC */ sw $t6, -4($v0)
|
|
/* 010BF4 7000FFF4 03386825 */ or $t5, $t9, $t8
|
|
/* 010BF8 7000FFF8 AC6DFFFC */ sw $t5, -4($v1)
|
|
/* 010BFC 7000FFFC 24C60001 */ addiu $a2, $a2, 1
|
|
/* 010C00 70010000 14CCFFCC */ bne $a2, $t4, .L7000FF34
|
|
/* 010C04 70010004 24E70010 */ addiu $a3, $a3, 0x10
|
|
/* 010C08 70010008 03E00008 */ jr $ra
|
|
/* 010C0C 7001000C 00000000 */ nop
|
|
|
|
.section .rodata
|
|
glabel F64_80029430
|
|
.word 0x3f91df46, 0x9d353918 #0.017453292222222222
|
|
.word 0,0
|
|
|
|
.section .text
|
|
glabel guMtxIdentF
|
|
/* 010C10 70010010 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
|
/* 010C14 70010014 00801825 */ move $v1, $a0
|
|
/* 010C18 70010018 44810000 */ mtc1 $at, $f0
|
|
/* 010C1C 7001001C 44801000 */ mtc1 $zero, $f2
|
|
/* 010C20 70010020 24040001 */ li $a0, 1
|
|
/* 010C24 70010024 00001025 */ move $v0, $zero
|
|
/* 010C28 70010028 24070004 */ li $a3, 4
|
|
/* 010C2C 7001002C 24060003 */ li $a2, 3
|
|
/* 010C30 70010030 24050002 */ li $a1, 2
|
|
.L70010034:
|
|
/* 010C34 70010034 54400004 */ bnezl $v0, .L70010048
|
|
/* 010C38 70010038 E4620000 */ swc1 $f2, ($v1)
|
|
/* 010C3C 7001003C 10000002 */ b .L70010048
|
|
/* 010C40 70010040 E4600000 */ swc1 $f0, ($v1)
|
|
/* 010C44 70010044 E4620000 */ swc1 $f2, ($v1)
|
|
.L70010048:
|
|
/* 010C48 70010048 54440004 */ bnel $v0, $a0, .L7001005C
|
|
/* 010C4C 7001004C E4620004 */ swc1 $f2, 4($v1)
|
|
/* 010C50 70010050 10000002 */ b .L7001005C
|
|
/* 010C54 70010054 E4600004 */ swc1 $f0, 4($v1)
|
|
/* 010C58 70010058 E4620004 */ swc1 $f2, 4($v1)
|
|
.L7001005C:
|
|
/* 010C5C 7001005C 54450004 */ bnel $v0, $a1, .L70010070
|
|
/* 010C60 70010060 E4620008 */ swc1 $f2, 8($v1)
|
|
/* 010C64 70010064 10000002 */ b .L70010070
|
|
/* 010C68 70010068 E4600008 */ swc1 $f0, 8($v1)
|
|
/* 010C6C 7001006C E4620008 */ swc1 $f2, 8($v1)
|
|
.L70010070:
|
|
/* 010C70 70010070 54460004 */ bnel $v0, $a2, .L70010084
|
|
/* 010C74 70010074 E462000C */ swc1 $f2, 0xc($v1)
|
|
/* 010C78 70010078 10000002 */ b .L70010084
|
|
/* 010C7C 7001007C E460000C */ swc1 $f0, 0xc($v1)
|
|
/* 010C80 70010080 E462000C */ swc1 $f2, 0xc($v1)
|
|
.L70010084:
|
|
/* 010C84 70010084 24420001 */ addiu $v0, $v0, 1
|
|
/* 010C88 70010088 1447FFEA */ bne $v0, $a3, .L70010034
|
|
/* 010C8C 7001008C 24630010 */ addiu $v1, $v1, 0x10
|
|
/* 010C90 70010090 03E00008 */ jr $ra
|
|
/* 010C94 70010094 00000000 */ nop
|
|
|
|
glabel guMtxIdent
|
|
/* 010C98 70010098 27BDFFA8 */ addiu $sp, $sp, -0x58
|
|
/* 010C9C 7001009C AFBF0014 */ sw $ra, 0x14($sp)
|
|
/* 010CA0 700100A0 AFA40058 */ sw $a0, 0x58($sp)
|
|
/* 010CA4 700100A4 0C004004 */ jal guMtxIdentF
|
|
/* 010CA8 700100A8 27A40018 */ addiu $a0, $sp, 0x18
|
|
/* 010CAC 700100AC 27A40018 */ addiu $a0, $sp, 0x18
|
|
/* 010CB0 700100B0 0C003FC4 */ jal guMtxF2L
|
|
/* 010CB4 700100B4 8FA50058 */ lw $a1, 0x58($sp)
|
|
/* 010CB8 700100B8 8FBF0014 */ lw $ra, 0x14($sp)
|
|
/* 010CBC 700100BC 27BD0058 */ addiu $sp, $sp, 0x58
|
|
/* 010CC0 700100C0 03E00008 */ jr $ra
|
|
/* 010CC4 700100C4 00000000 */ nop
|
|
|
|
glabel guMtxL2F
|
|
/* 010CC8 700100C8 3C014780 */ li $at, 0x47800000 # 65536.000000
|
|
/* 010CCC 700100CC 44810000 */ mtc1 $at, $f0
|
|
/* 010CD0 700100D0 27BDFFF0 */ addiu $sp, $sp, -0x10
|
|
/* 010CD4 700100D4 00A01025 */ move $v0, $a1
|
|
/* 010CD8 700100D8 24A30020 */ addiu $v1, $a1, 0x20
|
|
/* 010CDC 700100DC 00003025 */ move $a2, $zero
|
|
/* 010CE0 700100E0 00804025 */ move $t0, $a0
|
|
/* 010CE4 700100E4 240C0004 */ li $t4, 4
|
|
/* 010CE8 700100E8 240B0002 */ li $t3, 2
|
|
/* 010CEC 700100EC 3C0AFFFF */ lui $t2, 0xffff
|
|
.L700100F0:
|
|
/* 010CF0 700100F0 00002025 */ move $a0, $zero
|
|
/* 010CF4 700100F4 01004825 */ move $t1, $t0
|
|
.L700100F8:
|
|
/* 010CF8 700100F8 8C6E0000 */ lw $t6, ($v1)
|
|
/* 010CFC 700100FC 8C590000 */ lw $t9, ($v0)
|
|
/* 010D00 70010100 24840001 */ addiu $a0, $a0, 1
|
|
/* 010D04 70010104 000E7C02 */ srl $t7, $t6, 0x10
|
|
/* 010D08 70010108 31F8FFFF */ andi $t8, $t7, 0xffff
|
|
/* 010D0C 7001010C 032A6824 */ and $t5, $t9, $t2
|
|
/* 010D10 70010110 030D7025 */ or $t6, $t8, $t5
|
|
/* 010D14 70010114 AFAE0004 */ sw $t6, 4($sp)
|
|
/* 010D18 70010118 8C6F0000 */ lw $t7, ($v1)
|
|
/* 010D1C 7001011C 8C580000 */ lw $t8, ($v0)
|
|
/* 010D20 70010120 8FA50004 */ lw $a1, 4($sp)
|
|
/* 010D24 70010124 31F9FFFF */ andi $t9, $t7, 0xffff
|
|
/* 010D28 70010128 00186C00 */ sll $t5, $t8, 0x10
|
|
/* 010D2C 7001012C 44859000 */ mtc1 $a1, $f18
|
|
/* 010D30 70010130 01AA7024 */ and $t6, $t5, $t2
|
|
/* 010D34 70010134 032E3825 */ or $a3, $t9, $t6
|
|
/* 010D38 70010138 468094A0 */ cvt.s.w $f18, $f18
|
|
/* 010D3C 7001013C 44878000 */ mtc1 $a3, $f16
|
|
/* 010D40 70010140 AFA70000 */ sw $a3, ($sp)
|
|
/* 010D44 70010144 24420004 */ addiu $v0, $v0, 4
|
|
/* 010D48 70010148 24630004 */ addiu $v1, $v1, 4
|
|
/* 010D4C 7001014C 46808420 */ cvt.s.w $f16, $f16
|
|
/* 010D50 70010150 25290008 */ addiu $t1, $t1, 8
|
|
/* 010D54 70010154 46009483 */ div.s $f18, $f18, $f0
|
|
/* 010D58 70010158 46008403 */ div.s $f16, $f16, $f0
|
|
/* 010D5C 7001015C E532FFF8 */ swc1 $f18, -8($t1)
|
|
/* 010D60 70010160 148BFFE5 */ bne $a0, $t3, .L700100F8
|
|
/* 010D64 70010164 E530FFFC */ swc1 $f16, -4($t1)
|
|
/* 010D68 70010168 24C60001 */ addiu $a2, $a2, 1
|
|
/* 010D6C 7001016C 14CCFFE0 */ bne $a2, $t4, .L700100F0
|
|
/* 010D70 70010170 25080010 */ addiu $t0, $t0, 0x10
|
|
/* 010D74 70010174 03E00008 */ jr $ra
|
|
/* 010D78 70010178 27BD0010 */ addiu $sp, $sp, 0x10
|