X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Fasm_utils.s;h=30ef7cd3360d834bbfddf0e3bb49969616fa648b;hb=ca69c3e5a0ecf407c02dc85c6f3282ebb1efc5a2;hp=11e3a17b72f96926cfe2c9aa9504cc193186076f;hpb=93c0d147a19160bcf970edac8d0e27f93537ae8d;p=libpicofe.git diff --git a/psp/asm_utils.s b/psp/asm_utils.s index 11e3a17..30ef7cd 100644 --- a/psp/asm_utils.s +++ b/psp/asm_utils.s @@ -14,7 +14,7 @@ .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: +pal_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 @@ -38,11 +38,13 @@ gmtab: # bbbb bggg gggr rrrr -.global do_pal_convert # dest, src, gammaa_val +#.global pal_gmtab +.global do_pal_convert # dest, src, gammaa_val, black_lvl do_pal_convert: bnez $a2, dpc_gma li $t0, 64/2 + bnez $a3, dpc_gma lui $t2, 0x00e ori $t2, 0x00e lui $t3, 0x006 @@ -80,11 +82,22 @@ dpc_loop: jr $ra nop +# non-zero gamma dpc_gma: + slt $t2, $a2, $0 sll $a2, 3 - lui $t1, %hi(gmtab) - addiu $t1, %lo(gmtab) + lui $t1, %hi(pal_gmtab) + addiu $t1, %lo(pal_gmtab) addu $a2, $t1 + beqz $a3, dpc_gma_loop + sb $0, 0($a2) # black level 0 + bnez $t2, dpc_gma_loop # gamma < 0, keep black at 0 + addiu $a3, -2 + slt $t2, $a3, $0 # t2 = a3_orig == 1 ? 1 : 0 + lb $t1, 1($a2) + addiu $t1, -2 + srlv $t1, $t1, $t2 + sb $t1, 0($a2) dpc_gma_loop: lw $v0, 0($a1)