I should try to explain what I was trying to do and why it is significant on the beeb.
The significance of getting this working, is that it allows very smooth horizontal hardware scrolling, desirable for many games.
The "tricky" part of this demo is to achieve hardware horizontal scrolling at a finer resolution than the hardware can do - sounds impossible - that was what I concluded in the 80s; but apparently someone has it working on a 8bit micro with the same video chip as the beeb.
The Idea is to draw the screen for one frame, then adjust the sync pulse width, which tricks the TV into shifting the whole image over 2 mode 1 pixels for the next frame, then shift it back and do a hardware scroll of 4 mode 1 pixels in the third frame, giving the illusion of 2 pixel scrolling. (Well, if you clear and re-draw the sides each frame, it works and that is what I do here).
OK, took a while, but now I have both of my beebs set up, no disks yet, so can only really use 1 (the one with an mmc) and I can only display them on one cheap old LCD TV (RF or Composite) and one TV Capture card (Composite 25fps).
On the TV composite sync width makes no difference until the picture disappears.
On the TV RF, I can get some success, but the TV is very sensitive and easily changes colour / brightness / breaks up.
On the Capture card, I can get just the right amount of adjustment and it looks like it might be working quite well, but it is a little hard to judge as it captures at 25Hz. There are minor artefacts as the top few scan lines of the 1UP 2UP row spring back a little, blurring them - I have a cunning plan to minimise that, but won't bother doing any more investigation unless I can expect a better proportion of compatibility.
[flash=]
WARNING[/flash] Please read the warning at the bottom before using this test on real hardware [flash=]WARNING[/flash]
The image attached has been modified to allow dynamic adjustment of the horizontal sync pulse widths for "left", "right" and to a small degree the position of the dashboard.
The keys are QWERTYU to adjust the position when displaying an image that needs to be shifted left (U is default, Y works for B-Em, the closer to Q, the more exotic the sync pulse width).
The next row ASDFGHJ adjust the position for the other frames that need to be shifted right (A is default and works for B-Em).
The bottom row ZXCVBNM adjusts the position of the dashboard but on my TV only makes a tiny difference - see my next comment (V is default).
I would suggest starting with B-Em, to see what happens. It shifts by two mode 1 pixels per change, where as my TV seem to be non-linear with nearly no shifting around the default UAV.
[flash=]
WARNING[/flash]
I don't know if there can be any damage to video equipment from this technique (I suspect not for small changes). Perhaps a more electronically competent person could tell us. [flash=]
WARNING[/flash]
EDIT: I don't believe this will harm analogue equipment and digital will probably ignore it.
Attachment:
File comment: Read WARNING before using
RallyX.zip [2.54 KiB]
Downloaded 5 times