aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxgpu/drawsync.s
diff options
context:
space:
mode:
authorJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-06-23 07:42:16 +0800
committerJohn Wilbert M. Villamor <lameguy64@gmail.com>2019-06-23 07:42:16 +0800
commit7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc (patch)
treee98c627e1da5c764563774b89b0c06d7ac5ad0a4 /libpsn00b/psxgpu/drawsync.s
parentae9e545c3ed33d39ce21ae13ceb8337fa34901b8 (diff)
downloadpsn00bsdk-7be9178c0f9b0e698a305ecc5c0c41fcc596a4fc.tar.gz
LibPSn00b officially v0.10b, added psxsio library, better DrawSync() and VSync(), better reference manual.
Diffstat (limited to 'libpsn00b/psxgpu/drawsync.s')
-rw-r--r--libpsn00b/psxgpu/drawsync.s49
1 files changed, 45 insertions, 4 deletions
diff --git a/libpsn00b/psxgpu/drawsync.s b/libpsn00b/psxgpu/drawsync.s
index 149519d..66d37e2 100644
--- a/libpsn00b/psxgpu/drawsync.s
+++ b/libpsn00b/psxgpu/drawsync.s
@@ -8,19 +8,60 @@
.global DrawSync
.type DrawSync, @function
DrawSync:
+
+ bnez $a0, .Lgetwords
+ lui $a0, IOBASE
+
addiu $sp, -4
sw $ra, 0($sp)
-.gpu_wait: # Wait for GPU to be ready for commands and DMA
+ jal ReadGPUstat # Check if DMA enabled
+ nop
+ srl $v0, 29
+ andi $v0, 0x3
+
+ beqz $v0, .Lsimple_wait
+ nop
+
+.Ldma_wait:
+ lw $v0, D2_CHCR
+ nop
+ srl $v0, 24
+ andi $v0, 0x1
+ bnez $v0, .Ldma_wait
+ nop
+
+.Lgpu_wait:
jal ReadGPUstat
nop
- srl $v0, 0x1a
+ srl $v0, 26
andi $v0, 0x5
- li $v1, 5
- bne $v0, $v1, .gpu_wait
+ bne $v0, 5, .Lgpu_wait
+ nop
+
+ b .Lexit
nop
+
+.Lsimple_wait: # Wait for GPU to be ready for next DMA
+ jal ReadGPUstat
+ nop
+ srl $v0, 28
+ andi $v0, 0x1
+ beqz $v0, .Lsimple_wait
+ nop
+
+.Lexit:
lw $ra, 0($sp)
addiu $sp, 4
jr $ra
nop
+
+.Lgetwords:
+
+ lw $v0, D2_BCR($a0)
+ nop
+
+ jr $ra
+ srl $v0, 16
+ \ No newline at end of file