From 7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc Mon Sep 17 00:00:00 2001 From: "John Wilbert M. Villamor" Date: Sun, 23 Jun 2019 07:42:16 +0800 Subject: LibPSn00b officially v0.10b, added psxsio library, better DrawSync() and VSync(), better reference manual. --- libpsn00b/psxgpu/drawprim.s | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 libpsn00b/psxgpu/drawprim.s (limited to 'libpsn00b/psxgpu/drawprim.s') diff --git a/libpsn00b/psxgpu/drawprim.s b/libpsn00b/psxgpu/drawprim.s new file mode 100644 index 0000000..a216720 --- /dev/null +++ b/libpsn00b/psxgpu/drawprim.s @@ -0,0 +1,40 @@ +.set noreorder + +.include "hwregs_a.h" + +.text + +.global DrawPrim +.type DrawPrim, @function +DrawPrim: + + addiu $sp, -8 + sw $ra, 0($sp) + sw $s0, 4($sp) + + move $s0, $a0 # Wait for GPU to complete + jal DrawSync + move $a0, $0 + + lui $a3, IOBASE + lui $v0, 0x0400 # Set transfer direction to off + sw $v0, GP1($a3) + + move $a0, $s0 + lbu $a1, 3($a0) # Get length of primitive packet + addiu $a0, 4 + +.Ltransfer_loop: + lw $v0, 0($a0) + addiu $a0, 4 + sw $v0, GP0($a3) + bgtz $a1, .Ltransfer_loop + addiu $a1, -1 + + jal DrawSync + move $a0, $0 + + lw $ra, 0($sp) + lw $s0, 4($sp) + jr $ra + addiu $sp, 8 \ No newline at end of file -- cgit v1.2.3