...The Ha'tak-VIC.
Ok, we had our fun, now back to the humdrum work routine.
;---
Somewhere up in this thread we had a concept where two separate 64kB blocks of RAM main memory
are tied to the VIC-II, each block has its own address and data bus.
We already had discussed what options this might give us for the text\graphics screen, now for the sprites.
When having twice the bus bandwidth as usual, there would be some interesting options:
Code:
1) 16 sprites 24*21 pixels in Hires (one Bit per Pixel) or MultiColor (2 Bits for 2 pixels)
2) 8 sprites 48*21 pixels in Hires (one Bit per Pixel) or MultiColor (2 Bits for 2 pixels)
3) 8 sprites 24*21 pixels in TrueMultiColor, means 2 color Bits for 1 pixel (instead of 2 Bits for 2 pixels)
4) 8 sprites 24*21 pixels in MultiMultiColor, means 4 color Bits for 2 pixels
;---
Now for the encoding of sprites in 4 Bit MultiMultiColor, supposing that we have a palette of 256 colors.
MultiColor from the original VIC-II gives us 2 Bits for 2 pixels, that's 4 different options of how two pixels are displayed on the screen.
Transparent, color from Reg. 37, color from Reg. 38, or a color from one individual sprite color register (Reg. 39..46).
MultiMultiColor means 4 Bits for 2 Pixels, that's 16 different options of how two pixels are displayed on the screen.
Transparent, of course.
Maybe some more registers than Reg. 37 and Reg. 38 for all of the sprites.
Maybe more than one individual color register (like Reg. 39..46) per sprite.
Of course, this means having a lot more color register in the VIC-II than usual.
;---
A different (but "conceptually less clean") approach for going without additional sprite color registers
when we happen to have a configurable color palette would be selecting the palette color directly
from the 4 Bits like this:
cccc
0000 transparent (no sprite color at all)
0001 Reg. 37
0010 Reg. 39..46 // depending on which of the sprites
0011 Reg. 38
0100 color 1sss0100 // where 'sss' is the number of the sprite
0101 color 1sss0101
0110 color 1sss0110
0111 color 1sss0111
1000 color 1sss1000
1001 color 1sss1001
1010 color 1sss1010
1011 color 1sss1011
1100 color 1sss1100
1101 color 1sss1101
1110 color 1sss1110
1111 color 1sss1111
Downside is, that depending on how the color palette is implemented,
writing the palette registers when the CRT is outside horizontal\vertical blanking
might generate glitches on the screen.
Because of this the CPU probably can't write\modify many of those palette registers
per raster line, so I'm not sure if decoding the 4 Bits like this would be a good idea.