Humm...(bit of digging through my historic RM test code) this test below might answer some of your questions, but definitely not all: It's not perfect, but here we start in MODE 9 (4bpp) from top of screen to line 127, then switch bpp by changing the VIDC CR, from 4bpp to 8bpp. Note the left-shift in the screen at this point, because I haven't corrected the HDSR/HDER for 8bpp. At this point RasterMan also points the MEMC to a new block of 8bpp data, or it would look silly. Then at line 196, we switch VIDC back to 4bpp (and point back to 4bpp data) until the end of the screen.sirbod wrote: ↑Tue Apr 30, 2024 1:47 amI believe the differing HDSR/HDER values are a side-effect of the eight word DMA buffer and how VIDC steps through it depending on the bpp. You can probably completely mess that up by altering the CR DMA request bits.ThomasHarte wrote: ↑Mon Apr 29, 2024 7:07 pm Noting belatedly that I've added a processing delay between pixel data being enqueued for output and it actually being transcribed; I've yet to hit upon either a meaningful mental model or documentation about what causes the differing per-bpp latencies
Although it's not specifically stated, the geometry register values appear to be zero based so are all M-1. I'd also guess VIDC either processes two pixels at a time or pipelines two, so horizontal values have to be divided by 2.I'm not sure that's possible, I believe bpp is fixed at Flyback along with the geometry.ThomasHarte wrote: ↑Mon Apr 29, 2024 7:07 pm what would be expected to happen if there were a colour-depth change mid-line
Steve can probably correct me here, but I believe only the palette can change mid-line. It might also be possible to get multiple cursors on screen if the DMA FIFO is observed, although I've never tried.
Other things to note:
The strange spike effect half way down the screen is made by shifting HDSR/HDER right and then left. So H-position can be redefined each line...The test of geometry would be to create a double spike to the left and right by increasing/decreasing line width...I'll have to try this too...
Also, the 8bpp palette is wrong, I didn't redefine the palette after switching to 8bpp, I should fix this.
And the 8bpp data is upside down - that's just RM showing off...
Not answered questions:
Can you change bpp mid-scanline? Not sure, never tried, but we have the technology to try, something for a bank holiday weekend
Can you have multiple cursors by resetting HCSR mid-screen? I don't think this would work, unless it repeats the loaded cursor data for that line (because DMA occurs during H-flyback, so it can't get new data). Anyhow easy to test, so must try this out.
Can you change pixel rate, eg. from 8MHz (MODE9) to 16MHz (MODE12) and back during screen output (a trick often used on the Beeb)? I tried this once, by switching in VIDC CR, but it screwed up the sync, so my CRT lost display until MODE change. I realise now, that I didn't change the H-geometry in that test, so of course it wouldn't work. Will need to try this again.