Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for "split mode" video #4

Open
sharpie7 opened this issue Jan 25, 2021 · 9 comments
Open

Support for "split mode" video #4

sharpie7 opened this issue Jan 25, 2021 · 9 comments

Comments

@sharpie7
Copy link

This seems to be a known fact, but as there is no issue for it I thought I would add one.

Currently, the simulation doesn't support "split video" modes (e.g. in Elite and Revs) where the video registers are changed during each screen scan to put different video modes at the top and bottom of the screen.

I am testing on HDMI. I haven't tested VGA.

This is an advanced technique which wasn't used on early BBC Micro games, but it is a nice-to-have feature because some of the later "big titles" like Elite used it.

@sorgelig
Copy link
Member

no problem, you are welcome to add support of it. It will be very tricky (if ever possible) to handle variable resolutions on the same frame.

@sharpie7
Copy link
Author

I thought you might say something like that!

I haven't had a chance to look at the existing code to understand how it works. Anything I should know that isn't obvious?

@sorgelig
Copy link
Member

Both scandoubler and scaler need to know exact visible resolution at beginning of frame. If resolution has been changed in the middle, then it will definitely break the video. So before pass the video to scaler/scandoubler there must be some module which will cut/add pixels to new resolution to keep the whole resolution unchanged.

@sharpie7
Copy link
Author

sharpie7 commented Jan 26, 2021

Thanks

If in vidproc.vhd (about line 290) you change CE_PIX <= clken_pixel to CE_PIX <= CLKEN then the normal modes still work, but all have a constant pixel rate in all modes as seen by the API. It also seems to make the split modes in Elite and Revs closer to right, but they are still not correct. I wonder if they use different vertical spacings as well as different pixel dividers in their splitsn (which really would be hard to correct for).

@sorgelig
Copy link
Member

sorgelig commented Jan 26, 2021

Pixel rate from teletext video is different than pixel rate from crtc.

@sharpie7
Copy link
Author

For sure. As far as I know all the split modes use the CRTC for the whole screen. I don't think anybody combined Mode 7 (teletext) with CRTC.

Looking at the Elite code and this explation it seems that the only parameters that Elite changes to get the split screen is the pixel rate (r0_pixel_rate) and the pallette in the Video ULA. The screen is based on Mode 4, but with some modified settings in the CRTC.

@sorgelig
Copy link
Member

The only game i know with this issue is Elite. I think it doesn't worth hassle just for a single game (or may be couple more).

@sharpie7
Copy link
Author

no problem, you are welcome to add support of it.

It turns out that getting Elite working was fairly simple - see #5

@Left-Empty
Copy link

Just to let know that the issue is still present with Revs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants