32x: fix bg color tests

This commit is contained in:
notaz 2013-08-16 02:11:31 +03:00
parent 0219d379de
commit 6b5feebabc
2 changed files with 14 additions and 11 deletions

View file

@ -43,7 +43,7 @@ static void convert_pal555(int invert_prio)
\ \
for (i = 320; i > 0; i--, pd++, p32x++, pmd++) { \ for (i = 320; i > 0; i--, pd++, p32x++, pmd++) { \
unsigned short t = *p32x; \ unsigned short t = *p32x; \
if (*pmd != mdbg && !((t ^ inv) & 0x8000)) { \ if ((*pmd & 0x3f) != mdbg && !((t ^ inv) & 0x8000)) { \
pmd_draw_code; \ pmd_draw_code; \
continue; \ continue; \
} \ } \
@ -59,7 +59,7 @@ static void convert_pal555(int invert_prio)
int i; \ int i; \
for (i = 320; i > 0; i--, pd++, p32x++, pmd++) { \ for (i = 320; i > 0; i--, pd++, p32x++, pmd++) { \
t = pal[*(unsigned char *)((long)p32x ^ 1)]; \ t = pal[*(unsigned char *)((long)p32x ^ 1)]; \
if ((t & 0x20) || *pmd == mdbg) \ if ((t & 0x20) || (*pmd & 0x3f) == mdbg) \
*pd = t; \ *pd = t; \
else \ else \
pmd_draw_code; \ pmd_draw_code; \
@ -74,7 +74,7 @@ static void convert_pal555(int invert_prio)
for (i = 320; i > 0; p32x++) { \ for (i = 320; i > 0; p32x++) { \
t = pal[*p32x & 0xff]; \ t = pal[*p32x & 0xff]; \
for (len = (*p32x >> 8) + 1; len > 0 && i > 0; len--, i--, pd++, pmd++) { \ for (len = (*p32x >> 8) + 1; len > 0 && i > 0; len--, i--, pd++, pmd++) { \
if (*pmd == mdbg || (t & 0x20)) \ if ((*pmd & 0x3f) == mdbg || (t & 0x20)) \
*pd = t; \ *pd = t; \
else \ else \
pmd_draw_code; \ pmd_draw_code; \

View file

@ -77,6 +77,7 @@ Pico32xNativePal:
ldr r9, =HighPal @ palmd ldr r9, =HighPal @ palmd
and r4, r2, #0xff and r4, r2, #0xff
mov r5, #328 mov r5, #328
lsl r3, #26 @ mdbg << 26
mla r11,r4,r5,r11 @ r11 = pmd = PicoDraw2FB + offs*328: md data mla r11,r4,r5,r11 @ r11 = pmd = PicoDraw2FB + offs*328: md data
tst r10,#P32XV_PRI tst r10,#P32XV_PRI
moveq r10,#0 moveq r10,#0
@ -107,7 +108,7 @@ Pico32xNativePal:
subs r6, r6, #1 subs r6, r6, #1
blt 0b @ loop_outer blt 0b @ loop_outer
ldrh r8, [r5], #2 @ 32x pixel ldrh r8, [r5], #2 @ 32x pixel
cmp r7, r3 @ MD has bg pixel? cmp r3, r7, lsl #26 @ MD has bg pixel?
beq 3f @ draw32x beq 3f @ draw32x
eor r12,r8, r10 eor r12,r8, r10
ands r12,r12,#0x8000 @ !((t ^ inv) & 0x8000) ands r12,r12,#0x8000 @ !((t ^ inv) & 0x8000)
@ -145,6 +146,7 @@ Pico32xNativePal:
ldr r9, =HighPal @ palmd ldr r9, =HighPal @ palmd
and r4, r2, #0xff and r4, r2, #0xff
mov r5, #328 mov r5, #328
lsl r3, #26 @ mdbg << 26
mla r11,r4,r5,r11 @ r11 = pmd = PicoDraw2FB + offs*328: md data mla r11,r4,r5,r11 @ r11 = pmd = PicoDraw2FB + offs*328: md data
call_scan_prep \call_scan call_scan_prep \call_scan
@ -191,14 +193,14 @@ Pico32xNativePal:
tst r12,#0x20 tst r12,#0x20
ldrneb r12,[r11,#-2] @ MD pixel 0 ldrneb r12,[r11,#-2] @ MD pixel 0
eor lr, r8, #0x20 eor lr, r8, #0x20
cmpne r12,r3 @ MD has bg pixel? cmpne r3, r12, lsl #26 @ MD has bg pixel?
.if \do_md .if \do_md
mov r12,r12,lsl #1 mov r12,r12,lsl #1
ldrneh r7, [r9, r12] @ t = palmd[pmd[0]] ldrneh r7, [r9, r12] @ t = palmd[pmd[0]]
tst lr, #0x20 tst lr, #0x20
ldrneb lr, [r11,#-1] @ MD pixel 1 ldrneb lr, [r11,#-1] @ MD pixel 1
strh r7, [r0], #2 strh r7, [r0], #2
cmpne lr, r3 @ MD has bg pixel? cmpne r3, lr, lsl #26 @ MD has bg pixel?
mov lr, lr, lsl #1 mov lr, lr, lsl #1
ldrneh r8, [r9, lr] @ t = palmd[pmd[1]] ldrneh r8, [r9, lr] @ t = palmd[pmd[1]]
strh r8, [r0], #2 strh r8, [r0], #2
@ -207,7 +209,7 @@ Pico32xNativePal:
tst lr, #0x20 tst lr, #0x20
ldrneb lr, [r11,#-1] @ MD pixel 1 ldrneb lr, [r11,#-1] @ MD pixel 1
add r0, r0, #4 add r0, r0, #4
cmpne lr, r3 @ MD has bg pixel? cmpne r3, lr, lsl #26 @ MD has bg pixel?
streqh r8, [r0, #-2] streqh r8, [r0, #-2]
.endif .endif
b 2b @ loop_inner b 2b @ loop_inner
@ -265,12 +267,12 @@ Pico32xNativePal:
9: @ bg_mode: 9: @ bg_mode:
ldrb r12,[r11],#1 @ MD pixel ldrb r12,[r11],#1 @ MD pixel
ldrb lr, [r11],#1 ldrb lr, [r11],#1
cmp r12,r3 @ MD has bg pixel? cmp r3, lr, lsl #26 @ MD has bg pixel?
.if \do_md .if \do_md
mov r12,r12,lsl #1 mov r12,r12,lsl #1
ldrneh r12,[r9, r12] @ t = palmd[*pmd] ldrneh r12,[r9, r12] @ t = palmd[*pmd]
moveq r12,r7 moveq r12,r7
cmp lr, r3 cmp r3, lr, lsl #26
mov lr, lr, lsl #1 mov lr, lr, lsl #1
ldrneh lr, [r9, lr] ldrneh lr, [r9, lr]
moveq lr, r7 moveq lr, r7
@ -278,7 +280,7 @@ Pico32xNativePal:
strh lr, [r0], #2 strh lr, [r0], #2
.else .else
streqh r7, [r0] streqh r7, [r0]
cmp lr, r3 cmp r3, lr, lsl #26
streqh r7, [r0, #2] streqh r7, [r0, #2]
add r0, r0, #4 add r0, r0, #4
.endif .endif
@ -302,6 +304,7 @@ Pico32xNativePal:
ldr r9, =HighPal @ palmd ldr r9, =HighPal @ palmd
and r4, r2, #0xff and r4, r2, #0xff
mov r5, #328 mov r5, #328
lsl r3, #26 @ mdbg << 26
mla r11,r4,r5,r11 @ r11 = pmd = PicoDraw2FB + offs*328: md data mla r11,r4,r5,r11 @ r11 = pmd = PicoDraw2FB + offs*328: md data
call_scan_prep \call_scan call_scan_prep \call_scan
@ -335,7 +338,7 @@ Pico32xNativePal:
ldrb r7, [r11], #1 @ MD pixel ldrb r7, [r11], #1 @ MD pixel
subs r6, r6, #1 subs r6, r6, #1
blt 0b @ loop_outer blt 0b @ loop_outer
cmp r7, r3 @ MD has bg pixel? cmp r3, r7, lsl #26 @ MD has bg pixel?
mov r7, r7, lsl #1 mov r7, r7, lsl #1
tstne lr, #0x20 tstne lr, #0x20
.if \do_md .if \do_md