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/setvideomode.s | |
| download | psn00bsdk-f3e040230772f978540a71aea43dfde200992922.tar.gz | |
First commit
Diffstat (limited to 'libpsn00b/psxgpu/setvideomode.s')
| -rw-r--r-- | libpsn00b/psxgpu/setvideomode.s | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libpsn00b/psxgpu/setvideomode.s b/libpsn00b/psxgpu/setvideomode.s new file mode 100644 index 0000000..718a4dd --- /dev/null +++ b/libpsn00b/psxgpu/setvideomode.s @@ -0,0 +1,50 @@ +.set noreorder + +.include "hwregs_a.h" + + +.section .text + +.global SetVideoMode +.type SetVideoMode, @function +SetVideoMode: + addiu $sp, -4 + sw $ra, 0($sp) + + jal ReadGPUstat + nop + + srl $a1, $v0, 17 + andi $a1, 0x1f + + srl $v1, $v0, 14 # Reverse flag + andi $v1, 1 + sll $v1, 6 + or $a1, $v1 + + srl $v1, $v0, 16 # Horizontal resolution 2 + andi $v1, 1 + sll $v1, 6 + or $a1, $v1 + + andi $a1, 0xf7 # Mask off PAL bit + + la $v0, _gpu_standard + beqz $a0, .set_done + sw $0 , 0($v0) + li $v1, 1 + sw $v1, 0($v0) + b .set_done + or $a1, 0x8 +.set_done: + + lui $v0, 0x800 # Apply new mode + or $a1, $v0 + lui $v0, IOBASE + sw $a1, GP1($v0) + + lw $ra, 0($sp) + addiu $sp, 4 + jr $ra + nop + |
