diff options
| author | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-04-06 10:11:07 +0800 |
|---|---|---|
| committer | John Wilbert M. Villamor <lameguy64@gmail.com> | 2019-04-06 10:11:07 +0800 |
| commit | f3e040230772f978540a71aea43dfde200992922 (patch) | |
| tree | bd8ca31b72dd01e24980b073854e263589530f56 /libpsn00b/psxgpu/putdispenvraw.s | |
| download | psn00bsdk-f3e040230772f978540a71aea43dfde200992922.tar.gz | |
First commit
Diffstat (limited to 'libpsn00b/psxgpu/putdispenvraw.s')
| -rw-r--r-- | libpsn00b/psxgpu/putdispenvraw.s | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/libpsn00b/psxgpu/putdispenvraw.s b/libpsn00b/psxgpu/putdispenvraw.s new file mode 100644 index 0000000..157150d --- /dev/null +++ b/libpsn00b/psxgpu/putdispenvraw.s @@ -0,0 +1,71 @@ +.set noreorder +.set noat + +.include "hwregs_a.h" + +.set DISP_mode, 0 +.set DISP_vxpos, 4 +.set DISP_vypos, 6 +.set DISP_fbx, 8 +.set DISP_fby, 10 + +.section .text + + +.global PutDispEnvRaw +.type PutDispEnvRaw, @function +PutDispEnvRaw: + addiu $sp, -8 + sw $ra, 0($sp) + sw $s0, 4($sp) + + lui $s0, 0x1f80 + + lh $at, DISP_vxpos($a0) # Set horizontal display range + li $v0, 608 + add $v0, $at + li $v1, 3168 + add $v1, $at + sll $v1, 12 + or $v0, $v1 + lui $v1, 0x600 + or $v1, $v0 + sw $v1, GP1($s0) + + lh $at, DISP_vypos($a0) # Set vertical display range (for NTSC) + li $v1, 120 # (values differet for PAL modes) + sub $v1, $at + li $v0, 136 + sub $v0, $v1 + andi $v0, 0x1ff + li $v1, 120 + add $v1, $at + li $at, 136 + add $at, $v1 + andi $at, 0x1ff + sll $at, 10 + or $v0, $at + lui $at, 0x700 + or $v0, $at + sw $v0, GP1($s0) + + lw $v0, DISP_mode($a0) # Set video mode + lui $at, 0x800 + or $v0, $at + sw $v0, GP1($s0) + + lhu $v0, DISP_fbx($a0) # Set VRAM XY offset + lhu $v1, DISP_fby($a0) + andi $v0, 0x3ff + andi $v1, 0x1ff + sll $v1, 10 + or $v0, $v1 + lui $v1, 0x500 + or $v0, $v1 + sw $v0, GP1($s0) + + lw $ra, 0($sp) + lw $s0, 4($sp) + jr $ra + addiu $sp, 8 + |
