X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Finclude%2Fzbmpop8p.h;fp=src%2Finclude%2Fzbmpop8p.h;h=1dab800fc0c4922e11c4c1796fa8113fecf3e676;hb=86bd0f2592c3cd674239532247276bd2d579a857;hp=0000000000000000000000000000000000000000;hpb=6669798cb8d60a5ffc0e1b60782d51e3368f9d58;p=virtualjaguar diff --git a/src/include/zbmpop8p.h b/src/include/zbmpop8p.h new file mode 100644 index 0000000..1dab800 --- /dev/null +++ b/src/include/zbmpop8p.h @@ -0,0 +1,112 @@ + uint8 *paletteRam=&tom_ram_8[0x400]; + paletteRam+=(idx&0x1)*256*2; + if (flags&FLAGS_READMODIFY) + { + if (flags&FLAGS_HFLIP) + { + while (scaled_width) + { + uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07)); + c<<=1; + if (flags&FLAGS_TRANSPARENT) + { + if (c) + { + *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[c+0]); + *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[c+1]); + } + else + current_line_buffer-=2; + } + else + { + *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[c+0]); + *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[c+1]); + } + + cnt+=hscale_fixed; + scaled_width--; + } + } + else + { + while (scaled_width) + { + uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07)); + c<<=1; + if (flags&FLAGS_TRANSPARENT) + { + if (c) + { + *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[c+0]); + *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[c+1]); + } + else + current_line_buffer+=2; + } + else + { + *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[c+0]); + *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[c+1]); + } + + cnt+=hscale_fixed; + scaled_width--; + } + } + } + else + { + if (flags&FLAGS_HFLIP) + { + while (scaled_width) + { + uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07)); + c<<=1; + if (flags&FLAGS_TRANSPARENT) + { + if (c) + { + *current_line_buffer--=paletteRam[c+0]; + *current_line_buffer--=paletteRam[c+1]; + } + else + current_line_buffer-=2; + } + else + { + *current_line_buffer--=paletteRam[c+0]; + *current_line_buffer--=paletteRam[c+1]; + } + + cnt+=hscale_fixed; + scaled_width--; + } + } + else + { + while (scaled_width) + { + uint32 c=jaguar_byte_read(ptr+(((cnt>>16) & (~0x07))*pitch)+((cnt>>16)&0x07)); + c<<=1; + if (flags&FLAGS_TRANSPARENT) + { + if (c) + { + *current_line_buffer++=paletteRam[c+0]; + *current_line_buffer++=paletteRam[c+1]; + } + else + current_line_buffer+=2; + } + else + { + *current_line_buffer++=paletteRam[c+0]; + *current_line_buffer++=paletteRam[c+1]; + } + + cnt+=hscale_fixed; + scaled_width--; + } + } + }