@@ -134,19 +134,47 @@ VOID SAGAHW_V4_SetSpriteHide(VOID)
134134
135135VOID SAGAHW_V4_SetSpriteColors (UWORD * colors )
136136{
137- for (int i = 1 ; i < 4 ; i ++ )
137+ ULONG colorvalue ;
138+
139+ for (int i = 0 ; i < 4 ; i ++ )
138140 {
139- WRITE16 (SAGA_V4_VIDEO_SPRITE_CLUT + (i << 1 ), colors [i ]);
141+ colorvalue = (colors [i ] & (0x0F00 )) << 12 | (colors [i ] & (0x00F0 )) << 8 | (colors [i ] & (0x000F )) << 4 ; // CLUT4->CLUT8
142+
143+ //kprintf("Sprite Color %d: %04x -> %08x\n", i, colors[i], colorvalue);
144+
145+ WRITE16 (SAGA_VIDEO_SPRITECLUT_IDX , i );
146+ WRITE32 (SAGA_VIDEO_SPRITECLUT_RGB , colorvalue );
140147 }
141148}
142149
143150VOID SAGAHW_V4_SetSpriteMemory (UBYTE * memory )
144151{
145- IPTR ptr = SAGA_V4_VIDEO_SPRITE_DATA ;
152+ IPTR ptr = SAGA_VIDEO_SPRITEDATA ;
146153
147- ULONG x , y , pix , val ;
154+ ULONG x , y , value ;
148155
149- for (y = 0 ; y < 16 ; y ++ )
156+ for (y = 0 ; y < 16 ; y ++ )
157+ {
158+ for (x = 0 ; x < 8 ; x ++ )
159+ {
160+ value = (memory [y * 16 + (x * 2 )] << 24 ) | (0xAA )<< 16 | (memory [y * 16 + (x * 2 ) + 1 ] << 8 ) | (0xAA );
161+ WRITE32 (ptr , value );
162+ ptr += 4 ;
163+ }
164+ for (x = 0 ; x < 8 ; x ++ )
165+ {
166+ WRITE32 (ptr , 0x00000000 );
167+ ptr += 4 ;
168+ }
169+ }
170+
171+ for (x = 0 ; x < 256 ; x ++ )
172+ {
173+ WRITE32 (ptr , 0x00000000 );
174+ ptr += 4 ;
175+ }
176+
177+ /*for (y = 0; y < 16; y++)
150178 {
151179 pix = 0x80008000;
152180 val = 0;
@@ -172,7 +200,7 @@ VOID SAGAHW_V4_SetSpriteMemory(UBYTE *memory)
172200
173201 WRITE32(ptr, val);
174202 ptr += 4;
175- }
203+ }*/
176204}
177205
178206VOID SAGAHW_V4_SetSpritePosition (WORD x , WORD y )
0 commit comments