]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fix uaegfx 8-bit palette change.
authorToni Wilen <twilen@winuae.net>
Wed, 31 Aug 2016 17:56:20 +0000 (20:56 +0300)
committerToni Wilen <twilen@winuae.net>
Wed, 31 Aug 2016 17:56:20 +0000 (20:56 +0300)
od-win32/picasso96_win.cpp
od-win32/picasso96_win.h
od-win32/win32gfx.cpp

index ed91e38bfc9ada91b2716fce0698813e4b397da1..45e5d401a2b759bd3952e346b34283b7ba8ad6ad 100644 (file)
@@ -912,7 +912,7 @@ static void setconvert(void)
        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);
@@ -2606,6 +2606,7 @@ static void resetpalette(void)
 */
 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;
@@ -2625,9 +2626,13 @@ static int updateclut(TrapContext *ctx, uaecptr clut, int start, int count)
                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)
index e5665a5e932074379468486e3cf666d44f63c134..6a57909a3eae12f9e9e0fd0631a546c097585160 100644 (file)
@@ -557,7 +557,7 @@ extern void picasso_trigger_vblank (void);
 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);
index fbe431a15791f8f5442a996c4b67e1a1e5134cf9..7095d4ac91008f0c593849e139a2ab2ae80eb647 100644 (file)
@@ -2428,15 +2428,15 @@ void init_colors (void)
 
 #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))