Then do a DMA transfer to CRAM.
And I see artifacts on the screen.
Why it happens? Is it possible to fix?
I thought if the screen is off then nothing must be visible.

Moderator: BigEvilCorporation
I seem to remember experimenting with this at some point, but I can't seem to find an example anymore. My vague recollection is that there was an improvement, but it was not very noticeable with the images I was testing with.LocalH wrote:A possible idea I had one time (but never implemented) was to "overlap" color changes. What I mean is, group together each set of two scanlines, and change half the colors per line (8 per line should be fairly easy from what I understand, although I'm a little rusty and my knoledge is a bit outdated). So, for example, assuming palette line 1:
I have yet to find an image that looks better with direct color DMA than with 8 static colors + 8 colors replaced per scanline. I mean, it's easy enough to generate such an image I suppose, but if you just take a random photograph, the resolution loss looks way worse than the color loss.LocalH wrote:Of course, direct color is the only way to get over 100 colors on a scanline
The best type of artwork for that would be the type of stuff seen in the IBM 5150 demo "8088 MPH" which uses CGA artifact color to generate over 1000 colors on the composite output.Mask of Destiny wrote:I have yet to find an image that looks better with direct color DMA than with 8 static colors + 8 colors replaced per scanline. I mean, it's easy enough to generate such an image I suppose, but if you just take a random photograph, the resolution loss looks way worse than the color loss.
Here's the 1K grafiti imageLocalH wrote:The best type of artwork for that would be the type of stuff seen in the IBM 5150 demo "8088 MPH" which uses CGA artifact color to generate over 1000 colors on the composite output.
It should also be possible to double ROM usage over the normal direct color technique and switch between two data tables on each frame, adding color interlacing (as seen on the C64) to make use of blended colors. It would be especially nice if one could delay the DMA start by half of the "DMA clock" (in other words, half of a direct color "pixel") to gain similar resolution increase to the related C64 technique of shifting the screen back and forth one hires pixel when using multicolor (double-wide) pixels to increase apparent resolution and add a bit of natural horizontal blending (for even further color increase, with appropriate image data). I think the pixel shifting won't work though because of the existing pixel doubling problem. I think at best, even if one is successful at delaying the start of DMA by that small amount, the shift will be negated at the first DMA interruption.Mask of Destiny wrote:Direct color DMA is a clever hack (discovered by Oerg866 IIRC) that effectively gives you a low-res bitmap mode by abusing DMA to CRAM. The DMA engine can copy one word to CRAM for every 2 pixels (except for during VRAM refresh, which is why you see some weird doubling). So if you sync the 68K to the VDP by filling the FIFO, disable the display and then start a long DMA to the background color entry in CRAM with auto-inc of 0 (so that all writes to go the background color), you can get a stable picture at roughly half horizontal resolution with no restriction on colors outside the palette entries being 9-bit.
The 8+8 images are just using standard per-line color replacement, but turn off the display to free up DMA bandwidth at the expense of sprite rendering.
Just trying to use unconventional thinking to eke (heh) more out of the MD. I still need to one day make some raster splits on the Genesis (even if I have to cover the split with sprites, sine I know lockstep is not perfect when the 68000 is involved).Charles MacDonald wrote:In the case of a VRAM fill, the CD2-CD0 bits are set to the same value
required for a VRAM write. In the same vein, VRAM copies have the code
bits set to the same setting as a VRAM read. Maybe changing the code
register would allow copies within CRAM and VSRAM? Or perhaps the code
bits only select the source address? (Not that a CRAM > VRAM copy is
particularly useful, but there you go.)
There would be a fair mount of flickering, but with judicious color choice, flicker could be minimized. The PAL C64 demoscene has a long history of using such interlacing, and flicker is worse in 50Hz than it is in 60Hz. The flicker won't be any worse than normal interlace flicker as per the NTSC and PAL standards, unless one tries to do something silly like have black and white in the same pixel position.greatkreator wrote:Concerning the first: wouldn't it produce a lot of flickering?
Concerning the second: the architecture just doesn't allow it. Just impossible. Of course it would be good but if we would like just to dream about something then it's more reasonable to dream about some kind of modern GPU support for example (: