aboutsummaryrefslogtreecommitdiff
path: root/libpsn00b/psxgpu/putdispenv.s
diff options
context:
space:
mode:
Diffstat (limited to 'libpsn00b/psxgpu/putdispenv.s')
-rw-r--r--libpsn00b/psxgpu/putdispenv.s174
1 files changed, 0 insertions, 174 deletions
diff --git a/libpsn00b/psxgpu/putdispenv.s b/libpsn00b/psxgpu/putdispenv.s
deleted file mode 100644
index fc09454..0000000
--- a/libpsn00b/psxgpu/putdispenv.s
+++ /dev/null
@@ -1,174 +0,0 @@
-.set noreorder
-
-.include "hwregs_a.h"
-
-.set DISP_dx, 0
-.set DISP_dy, 2
-.set DISP_dw, 4
-.set DISP_dh, 6
-.set DISP_sx, 8
-.set DISP_sy, 10
-.set DISP_sw, 12
-.set DISP_sh, 14
-.set DISP_inter, 16
-.set DISP_isrgb24, 17
-.set DISP_reverse, 18
-
-.section .text
-
-
-.global PutDispEnv
-.type PutDispEnv, @function
-PutDispEnv:
-
- lui $a3, IOBASE
-
- # Horizontal resolution stuff
-
- lh $a2, DISP_dw($a0) # Get X resolution
-
- lh $v0, DISP_sx($a0)
- lh $v1, DISP_sw($a0) # Get X screen width
-
- move $a1, $0 # To use as mode value
-
- bgt $a2, 560, .Lmode_640
- nop
- bgt $a2, 400, .Lmode_512
- nop
- bgt $a2, 352, .Lmode_384
- nop
- bgt $a2, 280, .Lmode_320
- nop
-
- .set noat
-
-.Lmode_256:
- li $at, 10
- mult $at, $v1
- li $a2, 0x24e
- sll $v0, 2
- add $a2, $v0
- b .Lmode_end
- li $v1, 0xa00
-.Lmode_320:
- li $at, 8
- mult $at, $v1
- li $a2, 0x258
- ori $a1, 0x01
- sll $v0, 2
- add $a2, $v0
- b .Lmode_end
- li $v1, 0xa00
-.Lmode_384:
- li $at, 7
- mult $at, $v1
- li $a2, 0x21b
- ori $a1, 0x64
- sll $v0, 2
- add $a2, $v0
- b .Lmode_end
- li $v1, 0xa80
-.Lmode_512:
- li $at, 5
- mult $at, $v1
- li $a2, 0x267
- ori $a1, 0x02
- sll $v0, 2
- add $a2, $v0
- b .Lmode_end
- li $v1, 0xa00
-.Lmode_640:
- li $at, 4
- mult $at, $v1
- li $a2, 0x26c
- ori $a1, 0x03
- sll $v0, 2
- add $a2, $v0
- li $v1, 0xa00
-.Lmode_end:
-
- .set at
-
- mflo $v0
- bnez $v0, .Lno_default # Check if screen with is non zero
- nop
- move $v0, $v1 # Use default if screen width is 0
-.Lno_default:
-
- addu $v0, $a2 # Apply horizontal display coordinates
- sll $v0, 12
- andi $a2, 0xfff
- or $a2, $v0
- lui $v0, 0x0600
- or $v0, $a2
- sw $v0, GPU_GP1($a3)
-
- # Vertical resolution
-
- lh $v0, DISP_dh($a0)
- li $a2, 0x10
- ble $v0, 256, .Lmode_low
- nop
-
-.Lmode_high:
- ori $a1, 0x04
-.Lmode_low:
- lh $v0, DISP_sy($a0)
- lh $v1, DISP_sh($a0)
- add $a2, $v0
- bnez $v1, .Lno_default_vert
- nop
- li $v1, 0xf0
-.Lno_default_vert:
- add $v1, $a2
- and $a2, 0x3ff
- sll $v1, 10
- or $v1, $a2
- lui $v0, 0x0700
- or $v1, $v0
- sw $v1, GPU_GP1($a3)
-
- # Video mode
-
- la $v0, _gpu_standard
- lbu $v0, 0($v0)
- nop
- beqz $v0, .Lconfig_ntsc
- nop
-.Lconfig_pal:
- ori $a1, 0x08
-.Lconfig_ntsc:
-
- lbu $v0, DISP_inter($a0)
- lbu $v1, DISP_isrgb24($a0)
- beqz $v0, .Lno_inter
- nop
- or $a1, 0x20
-.Lno_inter:
- beqz $v1, .Lno_rgb24
- nop
- or $a1, 0x10
-.Lno_rgb24:
- lbu $v0, DISP_inter($a0)
- nop
- beqz $v0, .Lno_reverse
- nop
- or $a1, 0x80
-.Lno_reverse:
-
- lui $v0, 0x800 # Apply mode
- or $a1, $v0
- sw $a1, GPU_GP1($a3)
-
- lhu $v0, DISP_dx($a0) # Set VRAM XY offset
- lhu $v1, DISP_dy($a0)
- andi $v0, 0x3ff
- andi $v1, 0x1ff
- sll $v1, 10
- or $v0, $v1
- lui $v1, 0x500
- or $v0, $v1
-
- jr $ra
- sw $v0, GPU_GP1($a3)