--- /dev/null
+ int count=0;
+ uint32 c;
+ paletteRam+=idx*4;
+ if (flags&FLAGS_READMODIFY)
+ {
+ if (flags&FLAGS_HFLIP)
+ {
+ if (flags&FLAGS_TRANSPARENT)
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ if (cl)
+ {
+ *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);
+ *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);
+ }
+ else
+ current_line_buffer-=2;
+ if (ch)
+ {
+ *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);
+ *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);
+ }
+ else
+ current_line_buffer-=2;
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr-=8*(pitch-1);
+ count=0;
+ }
+ iwidth--;
+ }
+ }
+ else
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);
+ *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);
+ *current_line_buffer--=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);
+ *current_line_buffer--=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr-=8*(pitch-1);
+ count=0;
+ }
+ iwidth--;
+ }
+ }
+ }
+ else
+ {
+ if (flags&FLAGS_TRANSPARENT)
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ if (cl)
+ {
+ *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);
+ *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);
+ }
+ else
+ current_line_buffer+=2;
+ if (ch)
+ {
+ *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);
+ *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);
+ }
+ else
+ current_line_buffer+=2;
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr+=8*(pitch-1);
+ count=0;
+ }
+ iwidth--;
+ }
+ }
+ else
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(cl<<1)+0]);
+ *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(cl<<1)+1]);
+ *current_line_buffer++=BLEND_Y(*current_line_buffer,paletteRam[(ch<<1)+0]);
+ *current_line_buffer++=BLEND_CC(*current_line_buffer,paletteRam[(ch<<1)+1]);
+ iwidth--;
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr+=8*(pitch-1);
+ count=0;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ if (flags&FLAGS_HFLIP)
+ {
+ if (flags&FLAGS_TRANSPARENT)
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ if (cl)
+ {
+ *current_line_buffer--=paletteRam[(cl<<1)+0];
+ *current_line_buffer--=paletteRam[(cl<<1)+1];
+ }
+ else
+ current_line_buffer-=2;
+ if (ch)
+ {
+ *current_line_buffer--=paletteRam[(ch<<1)+0];
+ *current_line_buffer--=paletteRam[(ch<<1)+1];
+ }
+ else
+ current_line_buffer-=2;
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr-=8*(pitch-1);
+ count=0;
+ }
+ iwidth--;
+ }
+ }
+ else
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ *current_line_buffer--=paletteRam[(cl<<1)+0];
+ *current_line_buffer--=paletteRam[(cl<<1)+1];
+ *current_line_buffer--=paletteRam[(ch<<1)+0];
+ *current_line_buffer--=paletteRam[(ch<<1)+1];
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr-=8*(pitch-1);
+ count=0;
+ }
+ iwidth--;
+ }
+ }
+ }
+ else
+ {
+ if (flags&FLAGS_TRANSPARENT)
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ if (cl)
+ {
+ *current_line_buffer++=paletteRam[(cl<<1)+0];
+ *current_line_buffer++=paletteRam[(cl<<1)+1];
+ }
+ else
+ current_line_buffer+=2;
+ if (ch)
+ {
+ *current_line_buffer++=paletteRam[(ch<<1)+0];
+ *current_line_buffer++=paletteRam[(ch<<1)+1];
+ }
+ else
+ current_line_buffer+=2;
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr+=8*(pitch-1);
+ count=0;
+ }
+ iwidth--;
+ }
+ }
+ else
+ {
+ while (iwidth)
+ {
+ c=jaguar_byte_read(ptr++);
+ uint32 cl=c>>4;
+ uint32 ch=c&0x0f;
+ *current_line_buffer++=paletteRam[(cl<<1)+0];
+ *current_line_buffer++=paletteRam[(cl<<1)+1];
+ *current_line_buffer++=paletteRam[(ch<<1)+0];
+ *current_line_buffer++=paletteRam[(ch<<1)+1];
+ count+=1;
+ if (count==8) // 8 bytes = a phrase (64 bits)
+ {
+ ptr+=8*(pitch-1);
+ count=0;
+ }
+ iwidth--;
+ }
+ }
+ }
+ }