aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2020-07-25 08:27:49 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2020-07-25 08:27:49 +0800
commit6762c39551ded059450d17d8bb0cb80642c8aaab (patch)
treefb3965453c02a6be31297d925c8c1b737b219ea7
parent1aa0e17df7c325a41de8cf8a57f52ed853f08bf3 (diff)
downloadpsn00bsdk-6762c39551ded059450d17d8bb0cb80642c8aaab.tar.gz
Added multi-session CD support, fixed infinite loop bug in CdReadDir(), updated CD media change detection logic, replaced version numbers with SVN revision numbers in documentation
-rw-r--r--libpsn00b/psxgte/scalematrixl.s68
1 files changed, 68 insertions, 0 deletions
diff --git a/libpsn00b/psxgte/scalematrixl.s b/libpsn00b/psxgte/scalematrixl.s
new file mode 100644
index 0000000..014b85a
--- /dev/null
+++ b/libpsn00b/psxgte/scalematrixl.s
@@ -0,0 +1,68 @@
+.set noreorder
+
+.include "gtereg.h"
+.include "inline_s.h"
+
+.section .text
+
+
+.global ScaleMatrixL
+.type ScaleMatrixL, @function
+ScaleMatrixL:
+
+ lwc2 C2_IR0, 0($a1) # X
+
+ lh $v0, 2*(0+(3*0))($a0)
+ lh $v1, 2*(1+(3*0))($a0)
+ mtc2 $v0, C2_IR1
+ lh $v0, 2*(2+(3*0))($a0)
+ mtc2 $v1, C2_IR2
+ mtc2 $v0, C2_IR3
+
+ nGPF(1)
+
+ mfc2 $v0, C2_IR1
+ mfc2 $v1, C2_IR2
+ sh $v0, 2*(0+(3*0))($a0)
+ mfc2 $v0, C2_IR3
+ sh $v1, 2*(1+(3*0))($a0)
+ sh $v0, 2*(2+(3*0))($a0)
+
+ lwc2 C2_IR0, 4($a1) # Y
+
+ lh $v0, 2*(0+(3*1))($a0)
+ lh $v1, 2*(1+(3*1))($a0)
+ mtc2 $v0, C2_IR1
+ lh $v0, 2*(2+(3*1))($a0)
+ mtc2 $v1, C2_IR2
+ mtc2 $v0, C2_IR3
+
+ nGPF(1)
+
+ mfc2 $v0, C2_IR1
+ mfc2 $v1, C2_IR2
+ sh $v0, 2*(0+(3*1))($a0)
+ mfc2 $v0, C2_IR3
+ sh $v1, 2*(1+(3*1))($a0)
+ sh $v0, 2*(2+(3*1))($a0)
+
+ lwc2 C2_IR0, 8($a1) # Z
+
+ lh $v0, 2*(0+(3*2))($a0)
+ lh $v1, 2*(1+(3*2))($a0)
+ mtc2 $v0, C2_IR1
+ lh $v0, 2*(2+(3*2))($a0)
+ mtc2 $v1, C2_IR2
+ mtc2 $v0, C2_IR3
+
+ nGPF(1)
+
+ mfc2 $v0, C2_IR1
+ mfc2 $v1, C2_IR2
+ sh $v0, 2*(0+(3*2))($a0)
+ mfc2 $v0, C2_IR3
+ sh $v1, 2*(1+(3*2))($a0)
+ sh $v0, 2*(2+(3*2))($a0)
+
+ jr $ra
+ move $v0, $a0