aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxgpu/putdrawenv.s
diff options
context:
space:
mode:
authorJohn "Lameguy" Wilbert Villamor <lameguy64@gmail.com>2022-09-26 16:49:56 +0800
committerGitHub <noreply@github.com>2022-09-26 16:49:56 +0800
commitc4a2533d21dfd05cde841ea48c67b05e0e6a853f (patch)
treec7ef61653b157b69fb0956709366996ddbc4ecfa /libpsn00b/psxgpu/putdrawenv.s
parenta8b404b3400c3ebd8e0b923dcaefcc49ea563e36 (diff)
parent86f0064afb8200e60dd80827535cac30d0eab028 (diff)
downloadpsn00bsdk-c4a2533d21dfd05cde841ea48c67b05e0e6a853f.tar.gz
Merge pull request #55 from spicyjpeg/psxmdec
Full MDEC support, C library refactors, cleanups and bugfixes (v0.20)
Diffstat (limited to 'libpsn00b/psxgpu/putdrawenv.s')
-rw-r--r--libpsn00b/psxgpu/putdrawenv.s142
1 files changed, 0 insertions, 142 deletions
diff --git a/libpsn00b/psxgpu/putdrawenv.s b/libpsn00b/psxgpu/putdrawenv.s
deleted file mode 100644
index c0d5676..0000000
--- a/libpsn00b/psxgpu/putdrawenv.s
+++ /dev/null
@@ -1,142 +0,0 @@
-.set noreorder
-.set noat
-
-.include "hwregs_a.h"
-
-.set DRAW_x, 0 # Drawing area
-.set DRAW_y, 2
-.set DRAW_w, 4
-.set DRAW_h, 6
-.set DRAW_ofx, 8 # Draw offset
-.set DRAW_ofy, 10
-.set DRAW_tx, 12 # Texture window
-.set DRAW_ty, 14
-.set DRAW_tw, 16
-.set DRAW_th, 18
-.set DRAW_tpage, 20 # TPage values
-.set DRAW_dtd, 22
-.set DRAW_dfe, 23
-.set DRAW_isbg, 24 # Clear draw area
-.set DRAW_r0, 25
-.set DRAW_g0, 26
-.set DRAW_b0, 27
-.set DRAW_env, 28
-
-
-.section .text
-
-.global PutDrawEnv
-.type PutDrawEnv, @function
-PutDrawEnv:
- addiu $sp, -4
- sw $ra, 0($sp)
-
- addiu $a1, $a0, DRAW_env
-
- li $v0, 0x04ffffff # Packet header (length+terminator)
- sw $v0, 0($a1)
-
- lhu $v0, DRAW_x($a0) # Set draw area top-left
- lhu $v1, DRAW_y($a0)
- andi $v0, 0x3ff
- andi $v1, 0x1ff
- sll $v1, 10
- or $v0, $v1
- lui $v1, 0xe300
- or $v0, $v1
- sw $v0, 4($a1) # 1
-
- .set noat
-
- lhu $v0, DRAW_w($a0) # Set draw area bottom-right
- lhu $at, DRAW_x($a0)
- addiu $v0, -1
- addu $at, $v0
- andi $at, 0x3ff
- lhu $v1, DRAW_h($a0)
- lhu $v0, DRAW_y($a0)
- addiu $v1, -1
- addu $v0, $v1
- andi $v0, 0x1ff
- sll $v0, 10
- or $at, $v0
- lui $v0, 0xe400
- or $at, $v0
- sw $at, 8($a1) # 2
-
- lhu $v0, DRAW_x($a0) # Set drawing offset
- lhu $v1, DRAW_ofx($a0)
- nop
- add $v0, $v1
- andi $at, $v0, 0x7ff
- lhu $v0, DRAW_y($a0)
- lhu $v1, DRAW_ofy($a0)
- nop
- add $v0, $v1
- andi $v0, 0x7ff
- sll $v0, 11
- or $at, $v0
- lui $v0, 0xe500
- or $at, $v0
- sw $at, 12($a1) # 3
-
- lhu $at, DRAW_tpage($a0) # Set tpage
- lbu $v0, DRAW_dtd($a0)
- lbu $v1, DRAW_dfe($a0)
- andi $v0, 1
- and $v1, 1
- sll $v0, 9
- sll $v1, 10
- or $at, $v0
- or $at, $v1
- lui $v0, 0xe100
- or $at, $v0
- sw $at, 16($a1) # 4
-
- .set at
-
- lbu $v0, DRAW_isbg($a0)
- nop
- beqz $v0, .Lno_fillVRAM
- nop
-
- lw $v0, DRAW_isbg($a0) # FillVRAM
- lui $v1, 0x0200
- srl $v0, 8
- or $v0, $v1
- sw $v0, 20($a1) # 5
- lw $v0, DRAW_x($a0)
- lw $v1, DRAW_w($a0)
- sw $v0, 24($a1) # 6
-
- srl $v0, $v1, 16 # Workaround as rectangle primitives
- blt $v0, 511, .Lno_overflow # don't accept a height of 512
- nop
-
- li $v0, 511
- sll $v0, 16
- andi $v1, 0xffff
- or $v1, $v0
-
-.Lno_overflow:
- sw $v1, 28($a1) # 7
- li $v0, 0x07ffffff # Packet header (length+terminator)
- sw $v0, 0($a1)
-
-.Lno_fillVRAM:
-
-.Lgpu_wait: # Wait for GPU to become ready for commands and DMA
- jal ReadGPUstat
- nop
- srl $v0, 26
- andi $v0, 1
- beqz $v0, .Lgpu_wait
- nop
-
- jal DrawOTag
- move $a0, $a1
-
- lw $ra, 0($sp)
- addiu $sp, 4
- jr $ra
- nop