else
alloc_colors_rgb(5, 6, 5, 11, 5, 0, 0, 0, 0, 0, p96rc, p96gc, p96bc);
gfx_set_picasso_colors(picasso96_state.RGBFormat);
- picasso_palette();
+ picasso_palette(picasso96_state.CLUT);
if (host_mode != ohost_mode || picasso96_state.RGBFormat != orgbformat) {
write_log (_T("RTG conversion: Depth=%d HostRGBF=%d P96RGBF=%d Mode=%d\n"),
picasso_vidinfo.pixbytes, host_mode, picasso96_state.RGBFormat, picasso_convert);
*/
static int updateclut(TrapContext *ctx, uaecptr clut, int start, int count)
{
+ bool uaegfx = currprefs.rtgboards[0].rtgmem_type < GFXBOARD_HARDWARE && currprefs.rtgboards[0].rtgmem_size;
uae_u8 clutbuf[256 * 3];
int i, changed = 0;
clut += start * 3;
picasso96_state_uaegfx.CLUT[i].Red = r;
picasso96_state_uaegfx.CLUT[i].Green = g;
picasso96_state_uaegfx.CLUT[i].Blue = b;
- clut += 3;
+ if (uaegfx) {
+ picasso96_state.CLUT[i].Red = r;
+ picasso96_state.CLUT[i].Green = g;
+ picasso96_state.CLUT[i].Blue = b;
+ }
}
- changed |= picasso_palette ();
+ changed |= picasso_palette (picasso96_state.CLUT);
return changed;
}
static uae_u32 REGPARAM2 picasso_SetColorArray (TrapContext *ctx)
extern void picasso_reset (void);
extern bool picasso_is_active (void);
extern int picasso_setwincursor (void);
-extern int picasso_palette (void);
+extern int picasso_palette (struct MyCLUTEntry *CLUT);
extern bool picasso_flushpixels (int index, uae_u8 *src, int offset);
extern void picasso_allocatewritewatch (int index, int gfxmemsize);
extern void picasso_getwritewatch (int index, int offset);
#ifdef PICASSO96
-int picasso_palette (void)
+int picasso_palette (struct MyCLUTEntry *CLUT)
{
int i, changed;
changed = 0;
for (i = 0; i < 256; i++) {
- int r = picasso96_state.CLUT[i].Red;
- int g = picasso96_state.CLUT[i].Green;
- int b = picasso96_state.CLUT[i].Blue;
+ int r = CLUT[i].Red;
+ int g = CLUT[i].Green;
+ int b = CLUT[i].Blue;
uae_u32 v = (doMask256 (r, red_bits, red_shift)
| doMask256 (g, green_bits, green_shift)
| doMask256 (b, blue_bits, blue_shift))