Hi everyone,
I'm looking for information on "on the fly" scroll registers modifcation on v9990.
I have found this in the OpenMSX source:
Changing high byte of vertical scroll registers only takes effect at the start of the next page. These members hold the current value of the scroll value. note: writing the low byte has effect immediatly (or at the next line), but the effect is not the same as on V99x8, see V9990PixelRenderer::updateScrollAYLow() for details
But looking at V9990PixelRenderer::updateScrollAYLow() code, I do not understand its meaning, nor do I see any additional information. What is the ' lastY ' value?
void V9990PixelRenderer::updateScrollAYLow(EmuTime::param time) { if (displayEnabled) { sync(time); // happens in all display modes (verified) // TODO high byte still seems to be wrong .. need to investigate verticalOffsetA = lastY; } }
Can someone shed some light on this ?
To give some context : I'm trying to make a scroll-split on the v9990. After setting an HBLANK interruption at Y=188, I change the value of the layer_B Y scroll register (only 0-255, so writing only on R#21), and restore it at VBLANK. It does not work, and I don't understand why. Furthermore, I tested writing 0 at HBLANK, and writing again 0 at VBLANK (basically not changing the value at all), and all I get is that the part below Y=188 disappears. Which does not make sense at all ... I really don't understand what's happening.