--- hatari/src/convert/spec320x32.c 2019/04/01 07:13:54 1.1 +++ hatari/src/convert/spec320x32.c 2019/04/01 07:14:22 1.1.1.2 @@ -39,7 +39,6 @@ static void ConvertSpec512_320x32Bit(voi ecx = *(edi+1); #if SDL_BYTEORDER == SDL_LIL_ENDIAN - /* Convert planes to byte indices - as works in wrong order store to workspace so can read back in order! */ LOW_BUILD_PIXELS_0 ; /* Generate 'ecx' as pixels [4,5,6,7] */ pixelspace[1] = ecx; @@ -49,31 +48,7 @@ static void ConvertSpec512_320x32Bit(voi pixelspace[0] = ecx; LOW_BUILD_PIXELS_3 ; /* Generate 'ecx' as pixels [8,9,10,11] */ pixelspace[2] = ecx; - - /* And plot, the Spec512 is offset by 1 pixel and works on 'chunks' of 4 pixels */ - /* So, we plot 1_4_4_3 to give 16 pixels, changing palette between */ - /* (last one is used for first of next 16-pixels) */ - ecx = pixelspace[0]; - PLOT_SPEC512_LEFT_LOW_320_32BIT(0) ; - Spec512_UpdatePaletteSpan(); - - ecx = *(Uint32 *)(((Uint8 *)pixelspace) + 1); - PLOT_SPEC512_MID_320_32BIT(1) ; - Spec512_UpdatePaletteSpan(); - - ecx = *(Uint32 *)(((Uint8 *)pixelspace) + 5); - PLOT_SPEC512_MID_320_32BIT(5) ; - Spec512_UpdatePaletteSpan(); - - ecx = *(Uint32 *)(((Uint8 *)pixelspace) + 9); - PLOT_SPEC512_MID_320_32BIT(9) ; - Spec512_UpdatePaletteSpan(); - - ecx = *(Uint32 *)(((Uint8 *)pixelspace) + 13); - PLOT_SPEC512_END_LOW_320_32BIT(13) ; - #else - LOW_BUILD_PIXELS_0 ; pixelspace[3] = ecx; LOW_BUILD_PIXELS_1 ; @@ -82,28 +57,29 @@ static void ConvertSpec512_320x32Bit(voi pixelspace[2] = ecx; LOW_BUILD_PIXELS_3 ; pixelspace[0] = ecx; - +#endif + /* And plot, the Spec512 is offset by 1 pixel and works on 'chunks' of 4 pixels */ + /* So, we plot 1_4_4_3 to give 16 pixels, changing palette between */ + /* (last one is used for first of next 16-pixels) */ ecx = pixelspace[0]; PLOT_SPEC512_LEFT_LOW_320_32BIT(0); Spec512_UpdatePaletteSpan(); - ecx = (pixelspace[0] >> 8) | (((Uint8)pixelspace[1])<<24); + ecx = GET_SPEC512_OFFSET_PIXELS(pixelspace, 1); PLOT_SPEC512_MID_320_32BIT(1); Spec512_UpdatePaletteSpan(); - ecx = (pixelspace[1] >> 8) | (((Uint8)pixelspace[2])<<24); + ecx = GET_SPEC512_OFFSET_PIXELS(pixelspace, 5); PLOT_SPEC512_MID_320_32BIT(5); Spec512_UpdatePaletteSpan(); - ecx = (pixelspace[2] >> 8) | (((Uint8)pixelspace[3])<<24); + ecx = GET_SPEC512_OFFSET_PIXELS(pixelspace, 9); PLOT_SPEC512_MID_320_32BIT(9); Spec512_UpdatePaletteSpan(); - ecx = (pixelspace[3] >> 8); + ecx = GET_SPEC512_OFFSET_FINAL_PIXELS(pixelspace); PLOT_SPEC512_END_LOW_320_32BIT(13); -#endif - esi += 16; /* Next PC pixels */ edi += 2; /* Next ST pixels */ ebp += 2; /* Next ST copy pixels */