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

RollerCoaster Tycoon Deluxe: Can't see file select windows #225

Closed
OpenRift412 opened this issue May 1, 2023 · 6 comments
Closed

RollerCoaster Tycoon Deluxe: Can't see file select windows #225

OpenRift412 opened this issue May 1, 2023 · 6 comments

Comments

@OpenRift412
Copy link

In the original Rollercoaster Tycoon, there seems to be an issue where file selection windows don't show when saving or loading a game, as well as other places where file selection is required. Instead it just freezes the game until you press escape, which closes what I assume is the invisible file select window. The thing is though, this functionality works perfectly fine in RCT2. Is there a certain setting I should have set for RCT1 for these dialogues to show?

Here's what they look like in RCT2 for context. It essentially minimizes the main window while the file selection prompt shows up.
image

@OpenRift412 OpenRift412 changed the title RollerCoaster Tycoon 1: Can't see file select windows RollerCoaster Tycoon Deluxe: Can't see file select windows May 1, 2023
@OpenRift412
Copy link
Author

Here's a log of me loading up the game and attempting to load a saved game. Don't know if this will be much help but I might as well include it.
DDrawCompat-RCT.log

@narzoul
Copy link
Owner

narzoul commented May 14, 2023

The game uses an unusual combination of flags when calling SetCooperativeLevel before displaying those dialogs: DDSCL_FULLSCREEN | DDSCL_NORMAL. This was confusing DDrawCompat, which thought the game remained in fullscreen mode after this, but it actually switches to windowed mode.

It's a little strange that the runtime even allows this, because according to the SDK, this combination should be invalid:

DDSCL_NORMAL
The application functions as a regular Microsoft® Windows® application. This flag cannot be used with the DDSCL_ALLOWMODEX, DDSCL_EXCLUSIVE, or DDSCL_FULLSCREEN flags.

Anyway, I made a quick fix: ddraw.zip (diff.txt compared to v0.4.0)

@OpenRift412
Copy link
Author

Nice, thanks! I'll test this one out!

@OpenRift412
Copy link
Author

Seems like to works pretty good. Though it does seem to be affected by Windows' interface scaling, which can sometimes result in windows being 25% bigger than it would be at 100% scaling meaning they can be bigger than the actual screen. Don't know if there's a way to make that independent of System scaling (I tried messing with DpiAwareness but it didn't seem to help), but that may be something else that's worth looking into.

@narzoul
Copy link
Owner

narzoul commented May 15, 2023

Yeah, I know about the scaling problem, but there is no good solution (that I know of). Using DisplayResolution=app is probably the only good workaround (besides manually changing the scale factor every time before playing). At lower resolutions, Windows should automatically set the scale factor to 100%.

There may be some way to remove scaling at native resolution by abusing the DPI-unaware setting, but it's a lot of work with no guaranteed results, so I probably won't get into it before the next release.

narzoul added a commit that referenced this issue Nov 12, 2023
@narzoul
Copy link
Owner

narzoul commented Nov 13, 2023

The invisible dialog windows are fixed in v0.5.0. Also, using DpiAwareness=unaware should fix the oversized dialogs now. Make sure to remove high DPI scaling overrides from the executable first (or set it to "system" there), as mentioned in the wiki too.

@narzoul narzoul closed this as completed Nov 13, 2023
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