psp fixes, gamma

git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@302 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2007-11-24 15:04:47 +00:00
parent f3f1615e5e
commit 93c0d147a1
13 changed files with 237 additions and 55 deletions

122
psp/asm_utils.s Normal file
View file

@ -0,0 +1,122 @@
# vim:filetype=mips
# some asm utils
# (c) Copyright 2007, Grazvydas "notaz" Ignotas
# All Rights Reserved
.set noreorder
.set noat
.data
.align 4
.byte 0, 1, 6, 11, 16, 21, 26, 31 # -4
.byte 0, 2, 7, 12, 16, 21, 26, 31 # -3
.byte 0, 3, 7, 12, 17, 22, 26, 31 # -2
.byte 0, 4, 8, 13, 17, 22, 26, 31 # -1
gmtab:
.byte 0, 5, 10, 15, 16, 21, 26, 31 # 0
.byte 0, 6, 10, 15, 19, 23, 27, 31
.byte 0, 7, 11, 15, 19, 23, 27, 31
.byte 0, 8, 12, 16, 19, 23, 27, 31
.byte 0, 9, 12, 16, 20, 24, 27, 31
.byte 0, 10, 13, 17, 20, 24, 27, 31
.byte 0, 10, 14, 17, 21, 24, 28, 31
.byte 0, 11, 15, 18, 21, 24, 28, 31
.byte 0, 12, 15, 18, 22, 25, 28, 31
.byte 0, 13, 16, 19, 22, 25, 28, 31
.byte 0, 14, 17, 20, 22, 25, 28, 31 # 10
.byte 0, 15, 17, 20, 23, 26, 28, 31
.byte 0, 16, 18, 21, 23, 26, 28, 31
.byte 0, 16, 19, 21, 24, 26, 29, 31
.byte 0, 17, 20, 22, 24, 26, 29, 31
.byte 0, 18, 20, 22, 25, 27, 29, 31
.byte 0, 19, 21, 23, 25, 27, 29, 31 # 16
.text
.align 4
# bbbb bggg gggr rrrr
.global do_pal_convert # dest, src, gammaa_val
do_pal_convert:
bnez $a2, dpc_gma
li $t0, 64/2
lui $t2, 0x00e
ori $t2, 0x00e
lui $t3, 0x006
ori $t3, 0x006
lui $t4, 0x0e0
ori $t4, 0x0e0
lui $t6, 0xe00
ori $t6, 0xe00
lui $t7, 0x600
ori $t7, 0x600
dpc_loop:
lw $v0, 0($a1)
addiu $a1, 4
and $v1, $v0, $t2 # r
sll $v1, 1
and $t9, $v0, $t3
srl $t9, 1
or $v1, $t9 # r
and $t9, $v0, $t4 # g
sll $t8, $t9, 3
or $v1, $t8
or $v1, $t9 # g
and $t9, $v0, $t6 # b
sll $t9, 4
or $v1, $t9
and $t9, $v0, $t7
sll $t9, 2
or $v1, $t9 # b
sw $v1, 0($a0)
addiu $t0, -1
bnez $t0, dpc_loop
addiu $a0, 4
jr $ra
nop
dpc_gma:
sll $a2, 3
lui $t1, %hi(gmtab)
addiu $t1, %lo(gmtab)
addu $a2, $t1
dpc_gma_loop:
lw $v0, 0($a1)
addiu $a1, 4
ext $v1, $v0, 1, 3
addu $v1, $a2
lb $v1, 0($v1)
ext $t1, $v0, 5, 3
addu $t1, $a2
lb $t1, 0($t1)
ext $t2, $v0, 9, 3
addu $t2, $a2
lb $t2, 0($t2)
ext $t3, $v0, 17, 3
addu $t3, $a2
lb $t3, 0($t3)
ext $t4, $v0, 21, 3
addu $t4, $a2
lb $t4, 0($t4)
ext $t5, $v0, 25, 3
addu $t5, $a2
lb $t5, 0($t5)
ins $v1, $t1, 6, 5
ins $v1, $t2, 11, 5
ins $v1, $t3, 16, 5
ins $v1, $t4, 22, 5
ins $v1, $t5, 27, 5
sw $v1, 0($a0)
addiu $t0, -1
bnez $t0, dpc_gma_loop
addiu $a0, 4
jr $ra
nop