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

Use linear 128 KB video memory pages for VESA modes #3767

Merged
merged 1 commit into from
Jun 14, 2024

Conversation

johnnovak
Copy link
Member

@johnnovak johnnovak commented Jun 14, 2024

Description

Fixes #3762

(The PVS-Studio warnings are fixed here #3758; I somehow introduced those to main today...)

This gets rid of the odd horizontal black line in the following Synthetic Dimensions games, and maybe other games and demos.

  • Chronicles of the Sword
  • Druid β€” Daemons of the Mind
  • Perfect Assassin

This seems like a very safe change to me as most normal programs won't attempt to write past the 64K VESA page boundary. Then these outliers that do will simply just work without the black line glitch.

Where I could see regressions theoretically are some weird demos that intentionally exploit some wraparound behaviour of 64K VESA pages, if such a thing even exists... But frankly, I would not care about those; just go watch a hardware capture on Demozoo or YouTube πŸ˜†

I also refuse to call this a "bug"... well, it's not really that. Let's call it a video-related enhancement that improves compatibility with shoddy coding practices πŸ˜„

Thanks @interloper98 for pointing me into the right direction regarding the fix πŸŽ‰

Manual testing

Synthetic Dimensions games don't have the black line anymore:

  • Chronicles of the Sword
  • Druids β€” Daemons of the Mind
  • Perfect Assassin

Games that use the 640x480 / 256-colour or higher VESA modes continue to work fine:

  • Callahan's Crosstime Saloon
  • Dungeon Keeper
  • Eric the Unready
  • Myst (Win 3.11)
  • Tomb Raider Gold
  • Under a Killing Moon

Checklist

Please tick the items as you have addressed them. Don't remove items; leave the ones that are not applicable unchecked.

I have:

  • followed the project's contributing guidelines and code of conduct.
  • performed a self-review of my code.
  • commented on the particularly hard-to-understand areas of my code.
  • split my work into well-defined, bisectable commits, and I named my commits well.
  • applied the appropriate labels (bug, enhancement, refactoring, documentation, etc.)
  • checked that all my commits can be built.
  • confirmed that my code does not cause performance regressions (e.g., by running the Quake benchmark).
  • added unit tests where applicable to prove the correctness of my code and to avoid future regressions.
  • made corresponding changes to the documentation or the website according to the documentation guidelines.
  • locally verified my website or documentation changes.

@johnnovak johnnovak self-assigned this Jun 14, 2024
@johnnovak johnnovak added enhancement New feature or enhancement of existing features video Graphics and video related issues game compatibility Issues related to a specific game eXoDOS/Win3x Issue related to eXoDOS or eXoWin3x projects labels Jun 14, 2024
Co-authored-by: John Novak <john@johnnovak.net>
@johnnovak johnnovak marked this pull request as ready for review June 14, 2024 08:47
Copy link
Collaborator

@weirddan455 weirddan455 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not going to research into the details of this myself right now but I guess this has been in DOSBox-X's tree for a while so sure let's merge it to solve problems with those games.

@johnnovak
Copy link
Member Author

I'm not going to research into the details of this myself right now but I guess this has been in DOSBox-X's tree for a while so sure let's merge it to solve problems with those games.

Exactly my thoughts, and the fix was based on @joncampbell123 's original research, so I'll trust him on this.

@johnnovak johnnovak merged commit c8fb4a2 into main Jun 14, 2024
31 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or enhancement of existing features eXoDOS/Win3x Issue related to eXoDOS or eXoWin3x projects game compatibility Issues related to a specific game video Graphics and video related issues
Projects
None yet
Development

Successfully merging this pull request may close these issues.

VESA 256c line problem in Synthetic Dimensions 1995+ games
3 participants