]> Shamusworld >> Repos - virtualjaguar/blobdiff - src/include/zbmpop8p.h
Initial revision
[virtualjaguar] / src / include / zbmpop8p.h
diff --git a/src/include/zbmpop8p.h b/src/include/zbmpop8p.h
new file mode 100644 (file)
index 0000000..1dab800
--- /dev/null
@@ -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--;
+                               }
+                       }
+               }