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

(MD) single-screen interlace mode seemingly acts as double-screen interlace #17

Closed
RealMalachi opened this issue Jan 22, 2024 · 3 comments

Comments

@RealMalachi
Copy link

I can already see like 95% of megadrive devs doing a double take, so let me explain.
The Megadrive has three interlace rendering modes: single screen progressive (the one used in most games), double screen interlace (used in Sonic 2s and Combat Cars' 2 player modes), and single screen interlace (used for Xband console syncing, and Ys III apparently). This mode is acknowledged in the genesis software manual, which is a little funny considering it was in your sources
Aside for BlastEm, I'm pretty sure most emulators just make single interlace use progressive. This emulator, however, seems to use double screen interlace, or have some other misc error with single interlace

Since I honestly don't care enough for Ys III, the pictures shown are of a hacked version of Sonic 2 (I added it as a debug feature, like "night mode" but less novel). Sorry for the big size
image

Prohibited interlace rendering seems to be using 8x8 tiles (it's using 2P code so it's trying to render 8x16). While this is to be expected for most hardware (my VA6 looks practically identical to the screenshot), this could mean you're accidentally checking LSM0 instead of LSM1. If you want a quick fix, because no games are even meant to use prohibited rendering, that's probably how you do it
image

@jsgroth
Copy link
Owner

jsgroth commented Jan 22, 2024

this could mean you're accidentally checking LSM0 instead of LSM1

This is pretty much it, there's a missing bit shift that causes the screen mode check to read bits LSM0+RS1 instead of LSM1+LSM0. The intent was for single-screen interlaced mode to behave the same as progressive mode. Thanks for pointing this out, nothing I tested ever used single-screen interlaced.

@jsgroth
Copy link
Owner

jsgroth commented Jan 22, 2024

This should be fixed on master, builds will be available here within 10 minutes or so:
https://github.com/jsgroth/jgenesis/actions/runs/7616898574

@jsgroth
Copy link
Owner

jsgroth commented Feb 1, 2024

I just published a new release which includes this fix:
https://github.com/jsgroth/jgenesis/releases/tag/v0.7.0

@jsgroth jsgroth closed this as completed Feb 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants