mirror of
https://github.com/RaySollium99/libpicofe.git
synced 2025-09-05 14:57:46 -04:00
psp fixes, gamma
git-svn-id: file:///home/notaz/opt/svn/PicoDrive/platform@302 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
parent
f3f1615e5e
commit
93c0d147a1
13 changed files with 237 additions and 55 deletions
122
psp/asm_utils.s
Normal file
122
psp/asm_utils.s
Normal 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
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue