mirror of
https://github.com/Oibaf66/uae-wii.git
synced 2024-06-12 13:38:48 +02:00
1768 lines
56 KiB
C
1768 lines
56 KiB
C
/*
|
|
* E-UAE - The portable Amiga emulator.
|
|
*
|
|
* This file was generated by genlinetoscr. Don't edit.
|
|
*/
|
|
|
|
static int NOINLINE linetoscr_8 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u8 *buf = (uae_u8 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
static int NOINLINE linetoscr_8_stretch1 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u8 *buf = (uae_u8 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
static int NOINLINE linetoscr_8_shrink1 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u8 *buf = (uae_u8 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_8_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u8 *buf = (uae_u8 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_8_stretch1_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u8 *buf = (uae_u8 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u16 *)&buf[dpix]) = (uae_u16) out_val;
|
|
dpix += 2;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_8_shrink1_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u8 *buf = (uae_u8 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
static int NOINLINE linetoscr_16 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u16 *buf = (uae_u16 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bplehb) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
static int NOINLINE linetoscr_16_stretch1 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u16 *buf = (uae_u16 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
static int NOINLINE linetoscr_16_shrink1 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u16 *buf = (uae_u16 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bplehb) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_16_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u16 *buf = (uae_u16 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bplehb) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_16_stretch1_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u16 *buf = (uae_u16 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_16_shrink1_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u16 *buf = (uae_u16 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else if (bplehb) {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
} else {
|
|
int rem;
|
|
if (((long)&buf[dpix]) & 2) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
if (dpix >= stoppos)
|
|
return spix;
|
|
rem = (((long)&buf[stoppos]) & 2);
|
|
if (rem)
|
|
stoppos--;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = (out_val & 0xFFFF) | (dpix_val << 16);
|
|
*((uae_u32 *)&buf[dpix]) = out_val;
|
|
dpix += 2;
|
|
}
|
|
if (rem) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
buf[dpix++] = dpix_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
static int NOINLINE linetoscr_32 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u32 *buf = (uae_u32 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
static int NOINLINE linetoscr_32_stretch1 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u32 *buf = (uae_u32 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
static int NOINLINE linetoscr_32_shrink1 (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u32 *buf = (uae_u32 *) xlinebuffer;
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
dpix_val = xcolors[ham_linebuf[spix]];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2 : dblpf_ind1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[lookup[spix_val]];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spix_val <= 31)
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
else
|
|
dpix_val = xcolors[(colors_for_drawing.color_regs_ecs[spix_val - 32] >> 1) & 0x777];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_32_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u32 *buf = (uae_u32 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_32_stretch1_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u32 *buf = (uae_u32 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix++;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|
|
#ifdef AGA
|
|
static int NOINLINE linetoscr_32_shrink1_aga (int spix, int dpix, int stoppos)
|
|
{
|
|
uae_u32 *buf = (uae_u32 *) xlinebuffer;
|
|
uae_u8 xor_val = (uae_u8)(dp_for_drawing->bplcon4 >> 8);
|
|
|
|
if (dp_for_drawing->ham_seen) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = CONVERT_RGB (ham_linebuf[spix]);
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bpldualpf) {
|
|
int *lookup = bpldualpfpri ? dblpf_ind2_aga : dblpf_ind1_aga;
|
|
int *lookup_no = bpldualpfpri ? dblpf_2nd2 : dblpf_2nd1;
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix];
|
|
if (spriteagadpfpixels[spix]) {
|
|
dpix_val = colors_for_drawing.acolors[spriteagadpfpixels[spix]];
|
|
spriteagadpfpixels[spix] = 0;
|
|
} else {
|
|
unsigned int val = lookup[spix_val];
|
|
if (lookup_no[spix_val] == 2)
|
|
val += dblpfofs[bpldualpf2of];
|
|
val ^= xor_val;
|
|
dpix_val = colors_for_drawing.acolors[val];
|
|
}
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else if (bplehb) {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
if (spix_val >= 32 && spix_val < 64) {
|
|
unsigned int c = (colors_for_drawing.color_regs_aga[spix_val - 32] >> 1) & 0x7F7F7F;
|
|
dpix_val = CONVERT_RGB (c);
|
|
} else
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
} else {
|
|
while (dpix < stoppos) {
|
|
uae_u32 spix_val;
|
|
uae_u32 dpix_val;
|
|
uae_u32 out_val;
|
|
|
|
spix_val = pixdata.apixels[spix] ^ xor_val;
|
|
dpix_val = colors_for_drawing.acolors[spix_val];
|
|
spix += 2;
|
|
out_val = dpix_val;
|
|
buf[dpix++] = out_val;
|
|
}
|
|
}
|
|
|
|
return spix;
|
|
}
|
|
#endif
|
|
|