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

Graphical issues with some Pinball games #1578

Closed
2 tasks done
Kappa971 opened this issue Feb 19, 2022 · 52 comments
Closed
2 tasks done

Graphical issues with some Pinball games #1578

Kappa971 opened this issue Feb 19, 2022 · 52 comments
Assignees
Labels
bug Something isn't working video Graphics and video related issues

Comments

@Kappa971
Copy link
Contributor

Are you using the latest Dosbox-Staging Version?

  • I have checked releases and am using the latest release.

Different version than latest?

0.79.0-alpha-220-ga2df5

What Operating System are you using?

Windows 11

Whats your question and how can we help?

Hi, I would like to show you some graphical issues I have encountered with Pinball Dreams Deluxe, Pinball Fantasies Deluxe and Pinball Illusions. I haven't marked it as a "bug" as I don't know if all the problems are due to DOSBox or the games themselves.
I used the latest alpha version from the main branch, to make sure those problems were still present.

Pinball Dreams Deluxe
Pinball Dreams Deluxe uses two video modes: low-res 320x200 and high-res 320x350 (which DOSBox indicates as VGA 640x350 8-bit (mode 13h)).
Let's start with the first:
With aspect = true, low-res mode is displayed incorrectly, everything is stretched vertically
Wolfenstein 3D Screenshot 2022 02 19 - 12 45 58 08

In this case the solution is simple, set aspect = false
Wolfenstein 3D Screenshot 2022 02 19 - 13 09 13 41

Unfortunately the same solution doesn't work for the 320x350 high-res mode, as the image is extremely stretched horizontally, occupying the entire viewing area of the 16:9 screen.
The image will be stretched horizontally even with aspect = true:
Wolfenstein 3D Screenshot 2022 02 19 - 12 44 01 15

Pinball Fantasies Deluxe
Pinball Fantasies Deluxe uses two video modes: low-res 320x240 and high-res 320x350.
It contains two games: Pinball Fantasies and Pinball Mania.

In Pinball Fantasies, setting machine = svga_s3, the colors in the main menu are wrong
Wolfenstein 3D Screenshot 2022 02 19 - 13 21 35 30

With machine = vgaonly the correct colors will be shown.
Wolfenstein 3D Screenshot 2022 02 19 - 13 33 17 19

Low-res mode is displayed correctly with both aspect = true and aspect = false
Wolfenstein 3D Screenshot 2022 02 19 - 13 25 55 13

High-res mode is displayed stretched horizontally (aspect = true) like Pinball Dreams Deluxe:
Wolfenstein 3D Screenshot 2022 02 19 - 13 28 21 71

Pinball Mania behaves the same way:
Low-res
Wolfenstein 3D Screenshot 2022 02 19 - 13 29 09 21

High-res
Wolfenstein 3D Screenshot 2022 02 19 - 13 30 11 18

Pinball Illusions
Pinball Illusion supports 320x240, 360x350, 640x480, 800x600 video modes.
320x240 mode displays correctly (right side is slightly cropped, but I think that's intended):
Wolfenstein 3D Screenshot 2022 02 19 - 14 59 12 44

360x350 mode is stretched horizontally:
360x350

The 640x480 and 800x600 modes, setting machine = svga_s3, are completely broken:
640x480
Wolfenstein 3D Screenshot 2022 02 19 - 15 12 18 55
800x600
Wolfenstein 3D Screenshot 2022 02 19 - 15 15 10 93

However, if you set machine = svga_et3000, they are displayed correctly:
640x480
Wolfenstein 3D Screenshot 2022 02 19 - 15 18 23 12
800x600
Wolfenstein 3D Screenshot 2022 02 19 - 15 19 10 97

Code of Conduct & Contributing Guidelines

  • Yes, I agree.
@Kappa971 Kappa971 added the question Not an actual problem, just looking for some answers label Feb 19, 2022
@kcgen
Copy link
Member

kcgen commented Feb 19, 2022

Thanks for this detailed post @Kappa971.

Tagging this as a bug:

  • 360x350, similar to DOSBox SVN and correct per hardware CRT (see below)
  • 640x480, similar to DOSBox SVN
  • 800x600, similar to DOSBox SVN

360x250 on real DOS and CRT, courtesy Great Hierophant:

Pinball Illusions 360x350

By filling the screen with more horizontal pixels, users could tighten up their CRT's width with an analog control to get a modest ~10% DPI improvement.

But those quick-to-adjust analog knobs are gone on today's bezel-less flat panels (perhaps buried in a sluggish OSD menu, if that). Staging wants to support modern hardware, so this is an area where "correcting" the aspect will deviate from original behaviour. This might cause some people to cringe, but that's Staging's goal and scope. (Ideally we can leave non-aspect corrected 360x250 to behave per original hardware).

Question: does anyone know of other games that used these less common VGA modes 13h/X resolutions to regression test against?

@Kappa971
Copy link
Contributor Author

Kappa971 commented Feb 19, 2022

So Pinball Illusions 360x350 mode is displayed incorrectly even on a CRT screen? Interesting.

By filling the screen with more horizontal pixels, users could tighten up their CRT's width with an analog control to get a modest ~10% DPI improvement.

But those quick-to-adjust analog knobs are gone on today's bezel-less flat panels (perhaps buried in a sluggish OSD menu, if that).
Staging wants to support modern hardware, so this is an area where "correcting" the aspect will deviate from original behaviour. This might cause some people to cringe, but that's Staging's goal and scope. (Ideally we can leave non-aspect corrected 360x250 to behave per original hardware).

Is it possible to recreate an "analog control" (with a hotkey) in the DOSBox settings? This would avoid problems with other games and keep the original behavior, with the ability to tighten the image via DOSBox's virtual analog controls. It would also avoid discussions about the correct aspect ratio.

The 320x350 modes of Pinball Dreams Deluxe and Pinball Fantasies Deluxe are also stretched horizontally. Are these also displayed that way on a CRT screen?

@kcgen
Copy link
Member

kcgen commented Feb 19, 2022

Yes, during the DOS heydays before Windows high-resolution gaming became common (with direct-draw and such), CRTs had front-facing hsize and vsize knobs allowing for quick adjustment to suit the users taste. These were often used especially after launching applications that set more obscure graphical modes that might not have appeared correct, like this one:

I remember myself using these knobs for a handful of games when in those video modes.

For example, Great Hierophant mentioned:
"If I reduce my horizontal width to 0 and keep the vertical width to 100, /snip/ I can get square pixels"

_DSC1612a

And that's on DOS hardware + CRT. The knobs were very handy; a quick adjustment and carry-on playing.

The 320x350 modes of Pinball Dreams Deluxe and Pinball Fantasies Deluxe are also stretched horizontally. Are these also displayed that way on a CRT screen?

I would assume so - but would need someone running actual hardware to confirm.

@Kappa971
Copy link
Contributor Author

Kappa971 commented Feb 19, 2022

So I guess DOSBox is scaling resolutions the right way... A virtual analog knob would solve these problems. It is feasible?

Regarding the wrong colors in Pinball Fantasies and the 640x480/800x600 modes broken in Pinball Illusions with machine = svga_s3, can these be considered bugs?

@kcgen kcgen added bug Something isn't working and removed question Not an actual problem, just looking for some answers labels Feb 19, 2022
@kcgen kcgen self-assigned this Feb 19, 2022
@kcgen
Copy link
Member

kcgen commented Feb 19, 2022

Yes to both.

  • for the 3-hundred line modes, if the majority of (ideally all) games that use these less common modes appear similarly "wide-aspect", then we can correct them with whatever vertical pullup is necessary to make them appear perfectly square.
  • for the non-vesa mode-X higher resolutions: we also need to check how other games behave, because (in some cases), the bug lies in the game. For example, many build engine games struggled with flicker when in some modes, and it was a known issue. It was often trial and error to find a video mode that worked correctly.

So next step is to try to find other games (or graphical test tools, etc..) that exercise these same modes.

@Kappa971
Copy link
Contributor Author

Kappa971 commented Feb 19, 2022

Yes to both.

  • for the 3-hundred line modes, if the majority of (ideally all) games that use these less common modes appear similarly "wide-aspect", then we can correct them with whatever vertical pullup is necessary to make them appear perfectly square.
  • for the non-vesa mode-X higher resolutions: we also need to check how other games behave, because (in some cases), the bug lies in the game. For example, many build engine games struggled with flicker when in some modes, and it was a known issue. It was often trial and error to find a video mode that worked correctly.

So next step is to try to find other games (or graphical test tools, etc..) that exercise these same modes.

If I understand correctly this would make DOSBox adjust these resolutions automatically, which could potentially create problems with other games using the same modes. As you said, we should find other games with such resolutions.

What I thought instead, based on what you said about the analog control of old CRT monitors, is to add new options in the DOSBox settings for horizontal and vertical control of the image, controllable via hotkeys, so that you can see the changes made in real time. It would also avoid a long search for games that use the same modes.

This site is interesting: http://nerdlypleasures.blogspot.com/2014/09/oddball-ega-and-vga-resolutions-when.html?m=1
I didn't know that DOS games use so many strange modes.

EDIT
I also found this (although not strictly related to games): http://www.columbia.edu/~em36/wpdos/videomodes.txt

@kcgen
Copy link
Member

kcgen commented Feb 19, 2022

Yes, if it turns out these modes are handled inconsistently then we would need to decide what to do. My guess is they (should) be similar, but need the data.

@shermp
Copy link
Collaborator

shermp commented Feb 19, 2022

From what I've learned over the years, I believe games ported from other systems such as Amiga may not have bothered to correct their artwork to account for different video modes, so one has to be careful about making changes.

@Kappa971
Copy link
Contributor Author

Kappa971 commented Feb 20, 2022

I have tested other Pinball games:

  1. Extreme Pinball appears to only use 320x400 mode (DOSBox recognizes it as 640x400) and displays correctly
    Wolfenstein 3D Screenshot 2022 02 20 - 13 38 01 96
  2. Psycho Pinball uses 320x240 and 320x368 modes (DOSBox recognizes it as 640x368). The first mode is displayed correctly, while the second is horizontally stretched
    Wolfenstein 3D Screenshot 2022 02 20 - 15 34 59 59
  3. Absolute Pinball isn't working. I can't test it as it crashes (even with DOSBox SVN).

@Kappa971
Copy link
Contributor Author

Kappa971 commented Feb 20, 2022

If you choose Gravis Ultrasound, Absolute Pinball crashes. With the Sound Blaster 16 it works well.
Anyway, the 320x240 mode is displayed correctly.
Wolfenstein 3D Screenshot 2022 02 20 - 17 21 04 65

The 360x270 mode (recognized correctly by DOSBox) is displayed correctly.
Wolfenstein 3D Screenshot 2022 02 20 - 17 21 25 48

The 320x400 mode (DOSBox recognizes it as 640x400) is stretched horizontally. This mode was displayed correctly in Extreme Pinball, demonstrating that each game could behave differently (the graphics appear to have been adapted to display correctly in Extreme Pinball)
Wolfenstein 3D Screenshot 2022 02 20 - 17 26 01 40

This game supports two other video modes, but I don't know the exact resolutions:
Wolfenstein 3D Screenshot 2022 02 20 - 17 29 39 65
Wolfenstein 3D Screenshot 2022 02 20 - 17 30 01 68

I still think that letting the user adjust the image, like in CRT monitors, is the simplest solution (although I don't know how complicated it is to implement that function).

@Kappa971
Copy link
Contributor Author

Kappa971 commented Feb 21, 2022

I found another game that uses 320x400, 320x350, and 360x350 video modes... it's Quake.
The menu graphics are stretched horizontally, but the game is displayed correctly:

320x400
320x400

320x350
320x350

360x350
360x350

Note that compared to Pinball games, all modes are stretched to use a 4:3 aspect ratio, but this horizontal stretch seems to have been taken into consideration by the developers, as all modes are displayed without errors. However, they didn't bother to readjust the hud and the menus which instead are stretched horizontally.

@johnnovak
Copy link
Member

From what I've learned over the years, I believe games ported from other systems such as Amiga may not have bothered to correct their artwork to account for different video modes, so one has to be careful about making changes.

That's definitely true. This is how Pinball Dreams looks with square-pixels on a PAL Amiga:

image

image

I remember when I first saw the DOS port it definitely appeared squashed on my VGA monitor set up for standard VGA modes. Virtually no one redrew the art when porting to a different platform with different pixel aspect ratios. Playing ports of DOS games on PAL Amigas that used 320x256 screen modes appeared similarly squashed (but they looked fine on 320x200 NTSC).

(By the way, if you're into pinball games, you definitely should play the Amiga original. While the DOS port is technically impressive and one of the better ports from the Amiga, the ball physics is completely different; I much prefer the original. And with beamracing (lagless vsync) enabled in WinUAE, it finally plays just like on my A500 in the 90s 😁)

@Kappa971
Copy link
Contributor Author

Kappa971 commented May 17, 2022

I remember when I first saw the DOS port it definitely appeared squashed on my VGA monitor set up for standard VGA modes. Virtually no one redrew the art when porting to a different platform with different pixel aspect ratios. Playing ports of DOS games on PAL Amigas that used 320x256 screen modes appeared similarly squashed (but they looked fine on 320x200 NTSC).

But it seems that in old PC monitors you could adjust the image with analog controls (see the photo shared by @kcgen), maybe it would be useful to have "analog controls" for manual correction of the image in the configuration file. Obviously I don't know how much work it would take and if it would be worth it for just these games.

(By the way, if you're into pinball games, you definitely should play the Amiga original. While the DOS port is technically impressive and one of the better ports from the Amiga, the ball physics is completely different; I much prefer the original. And with beamracing (lagless vsync) enabled in WinUAE, it finally plays just like on my A500 in the 90s 😁)

I have them 😁

@cyberpunkbln
Copy link

Hello,

after a long search i have found this issue. I hope i understand all well.

When dosbox recognize 320x350 as 640x350 why is it not possible to fix this old bug in dosbox. I hope i have it fully understood. When dosbox recognize 320x350 as 320x350 Pinball Dreams and others will rendered well.

Or is the emulation of an vertical and horizontal switch the only way? Will it be possible to include an vsize and hsize config param with negative and positive values?

thx

@Kappa971
Copy link
Contributor Author

I think the solution is not as simple as I thought... Here it is specified that these games change resolution and aspect ratio all the time: joncampbell123/dosbox-x#3546 (comment)

@johnnovak johnnovak added the video Graphics and video related issues label Mar 24, 2023
@johnnovak
Copy link
Member

Just noticed the ball in Pinball Illusions doesn't get displayed correctly in high-res modes... It's sometimes flashing, sometimes it completely disappears, sometimes black bars appear overlaid on top of it. That's with svga_s3, same behaviour in 0.80.1 and main.

@johnnovak
Copy link
Member

From what I've learned over the years, I believe games ported from other systems such as Amiga may not have bothered to correct their artwork to account for different video modes, so one has to be careful about making changes.

That's definitely true. It was expensive enough to draw the art once. In 99.99% of cases nobody bothered redrawing it when the game was ported to a platform that had a different aspect ratio. The art just became stretched, squashed, whatever... like no big deal, nothing to see here 😅

@kcgen
Copy link
Member

kcgen commented May 13, 2023

It needs a bit more juice at those higher resolutions. (I also run the high res VESA rate at 60 Hz given the game's Amiga roots).

These are dialed in if you run the game in 800x600 res:

[render]
aspect = false 

[dosbox]
dos_rate = 60

[cpu]
cycles = 4900

@Kappa971
Copy link
Contributor Author

Kappa971 commented May 13, 2023

Just noticed the ball in Pinball Illusions doesn't get displayed correctly in high-res modes... It's sometimes flashing, sometimes it completely disappears, sometimes black bars appear overlaid on top of it. That's with svga_s3, same behaviour in 0.80.1 and main.

I have other problems with svga_s3, as specified here (Pinball Illusions CD version): #1578 (comment)
With svga_et3000 and svga_et4000 it should work fine.

That's definitely true. It was expensive enough to draw the art once. In 99.99% of cases nobody bothered redrawing it when the game was ported to a platform that had a different aspect ratio. The art just became stretched, squashed, whatever... like no big deal, nothing to see here 😅

If it were possible to have controls to change the aspect ratio manually, the problem would be solved.

@johnnovak
Copy link
Member

johnnovak commented May 13, 2023

I'm using your config @kcgen from your "strange_ega_and_vga_modes" pack. I haven't changed the config, it's configured for machine = svga_et3000. Same results with svga_et4000. Video attached, the ball is flashing randomly, often completely disappearing.

illusion_000.zip (rename to *.avi)

This is main, but I'm getting the exact same behaviour on 0.80.1 as well on macOS.

If it were possible to have controls to change the aspect ratio manually, the problem would be solved.

@Kappa971 but the aspect ratio is perfect with svga_et3000 and svga_et4000. You can't change it manually as the game switches frequently between all sorts of weird-ass resolutions, there's no single aspect ratio that would work for all. We won't support such aspect ratio overrides, it's pointless and to do it properly, you'd need to provide a whole table of custom aspect ratio overrides. Hugely complicated, and total overkill, so no...

@kcgen
Copy link
Member

kcgen commented May 13, 2023

I'm using your config @kcgen from your "strange_ega_and_vga_modes" pack. I haven't changed the config, it's configured for machine = svga_et3000. Same results with svga_et4000. Video attached, the ball is flashing randomly, often completely disappearing.

Yup.. the confs were only setup enough for me to look for regressions in video modes (not setup for audio or gameplay).

suggest updating your conf with these:

[render]
aspect = false 

[dosbox]
machine = svga_et3000
dos_rate = 60

[cpu]
cycles = 4900

To change resolutions, pass the "o" (I suppose, options) parameter to its BAT file: illusion.bat o

@Kappa971
Copy link
Contributor Author

I'm using your config @kcgen from your "strange_ega_and_vga_modes" pack. I haven't changed the config, it's configured for machine = svga_et3000. Same results with svga_et4000. Video attached, the ball is flashing randomly, often completely disappearing.

illusion_000.zip (rename to *.avi)

This is main, but I'm getting the exact same behaviour on 0.80.1 as well on macOS.

with svga_et3000 at 640x480 and 800x600 I'm having another kind of issue: PB_ILLUSIONS.zip

@kcgen
Copy link
Member

kcgen commented May 14, 2023

@Kappa971 - yes, in the high res modes, Pinball Illusion's rendering artifacts are cycle-specific.

Launch the ball and start rapidly tapping both paddles to generate as much sprite movement load on the game as possible.

At 3000 cycles, you should see vertical gap lines periodically during left paddle sprite rendering (as you recorded). This is true for SVN and X too.

Now tap ctrl+F12 to step cycles up, and those rendering gaps will march right. Keep doing that until you find when you push them off the right edge of the screen - but don't go too far, they will wrap around back to the left side (at this point, manually enter the cycles to find the sweet spot prior to wrap-around).

This is where I landed on 4900 cycles for 60 Hz VESA at 800x600.

I also suspect this would be true for a 386 16-Mhz SX running a real ET 3000 card and the game set to 800x600. People playing the Amiga version also report the ball phasing in and out too - https://eab.abime.net/showthread.php?t=27345.

@Kappa971
Copy link
Contributor Author

Kappa971 commented May 14, 2023

@Kappa971 - yes, in the high res modes, Pinball Illusion's rendering artifacts are cycle-specific.

Launch the ball and start rapidly tapping both paddles to generate as much sprite movement load on the game as possible.

At 3000 cycles, you should see vertical gap lines periodically during left paddle sprite rendering (as you recorded). This is true for SVN and X too.

Now tap ctrl+F12 to step cycles up, and those rendering gaps will march right. Keep doing that until you find when you push them off the right edge of the screen - but don't go too far, they will wrap around back to the left side (at this point, manually enter the cycles to find the sweet spot prior to wrap-around).

This is where I landed on 4900 cycles for 60 Hz VESA at 800x600.

I also suspect this would be true for a 386 16-Mhz SX running a real ET 3000 card and the game set to 800x600. People playing the Amiga version also report the ball phasing in and out too - https://eab.abime.net/showthread.php?t=27345.

You are right! at 4800-4900 cycles there are no graphical artifacts in 800x600, but at 640x480 I didn't find the right cycles without graphical glitches.
Before closing this issue, I would like to ask a few questions:

  1. Does Pinball Illusions also have these artifacts on real PCs with the ET3000? Is it a video card limitation or is the game broken?
  2. Choosing svga_s3, the game doesn't display correctly in SVGA. Is it a DOSBox issue or of the emulated card?
  3. This game came out in 1995. I don't know which CPU equals 4900 cycles, but in those years didn't most have much faster CPUs? (perhaps the cputype option should be improved to make it more understandable and useful, for example if I select 486_20, ie 486 20mhz which doesn't exist now, DOSBox automatically sets the cycles as similar as possible to that CPU, but that's another discussion).

@kcgen
Copy link
Member

kcgen commented May 14, 2023

but at 640x480 I didn't find the right cycles without graphical glitches

Yup - 3648 is OK 800x600 except for babewatch, which has a paddle a lot higher up on the board.

If you run at 35000 cycles and above, it always renders OK (and that speed is a lot more period correct, too). Even max is OK, but unnecessary.

I'm not sure how the game behaves with real graphics cards. I know the S3 implementation is very compliant (passing all of UniVBEs tests), so the game might just need an older spec, like the ET 3000 gives.

@Kappa971
Copy link
Contributor Author

Yup - 3648 is OK 800x600 except for babewatch, which has a paddle a lot higher up on the board.

If you run at 35000 cycles and above, it always renders OK (and that speed is a lot more period correct, too). Even max is OK, but unnecessary.

I'm not sure how the game behaves with real graphics cards. I know the S3 implementation is very compliant (passing all of UniVBEs tests), so the game might just need an older spec, like the ET 3000 gives.

Ok, so I think I can close this, thanks.

@kcgen
Copy link
Member

kcgen commented May 14, 2023

improved to make it more understandable and useful, for example if I select 486_20, ie 486 20mhz which doesn't exist now

This is a good suggestion, @Kappa971.

Letting users select cpu model and speed similar to terminology used by manufacturers at the time:

  • 86 8 MHz
  • 286 12 MHz
  • 386 16 MHz
  • 386 33 Mhz
  • 486 66 MHz
  • Pentium 120 MHz

(With some generous bounds on ranges of speed) this would let users punch in period-correct values.

@cyberpunkbln
Copy link

Short Info: Dosbox-X has an OpenGL-Perfect Output-Driver, thats scale all Pinball-Games perfectly. Is it possible to implement this in your Dosbox-Staging Version?

I have all dosbox versions on this planet tested after i have buyed pinball dreams on gog, and the dosbox-x output opengl-perfect ist the only one that resolved the problems with pinball dreams.

If dosbox-staging become this driver it will be the best dosbox fork.

thx

@johnnovak
Copy link
Member

Short Info: Dosbox-X has an OpenGL-Perfect Output-Driver, thats scale all Pinball-Games perfectly. Is it possible to implement this in your Dosbox-Staging Version?

Set aspect = false in the config?

@cyberpunkbln
Copy link

@johnnovak Yes i have. Same Problem on low-res i have perfectly round ball and in highres i have a squeezed ball:). Ah i understand perfectly in the gui mean openglpp. facepalm. Cann you please post a config where Pinball Dreams in Highres-Mode show a perfect round ball? thx

@cyberpunkbln
Copy link

Hi,

has anybody a functioned dosbox-staging config for highres modes inpinball games like pinball dreams deluxe?

In Dosbox-X with openglpp (i hope this is the same version like dosbox-staging) i became a perfect display of balls in the the high res modes. Dosbox-X was the first dos-emulator that has showed right the balls in highres-modes.

thx

@cyberpunkbln
Copy link

Hi,

i have found the special dosbox-x config key:
aspect_ratio=32:35
Please put this in the future in the dosbox-staging releases. This is the holy gray of pinball games in dosbox and dosbox-staging became a very usefull option. With openglpp and aspect_ratio, oh dear;).
thx

@Kappa971
Copy link
Contributor Author

Hi,

has anybody a functioned dosbox-staging config for highres modes inpinball games like pinball dreams deluxe?

In Dosbox-X with openglpp (i hope this is the same version like dosbox-staging) i became a perfect display of balls in the the high res modes. Dosbox-X was the first dos-emulator that has showed right the balls in highres-modes.

thx

I think this is enough:

[dosbox]
machine = svga_s3
memsize = 16
vmemsize = auto

[cpu]
core = auto
cputype = auto
cycles = 20000

[gus]
gus = true

[dos]
xms = false
ems = false

[autoexec]
Well, you already know how to start the game I guess.

I think I got the GUS.SDR driver in the DELUXE folder to use Gravis Ultrasound from one of the other pinball games, can't remember which one (maybe Pinball Fantasies Deluxe).
xms and ems are disabled because, in this game, they gave me problems with keyboard commands.

i have found the special dosbox-x config key:
aspect_ratio=32:35
Please put this in the future in the dosbox-staging releases. This is the holy gray of pinball games in dosbox and dosbox-staging became a very usefull option. With openglpp and aspect_ratio, oh dear;).

From what I understand, they don't want to develop targeted fixes only for these games, also because there are problems: these games often switch video modes (for example between menu and table), so adjusting the aspect ratio for the tables will ruin the aspect ratio of menus, movies etc... How does DOSBox-X handle this? (You'll probably have to explain this to the DOSBox Staging developers).

Anyway these games were ported to DOS with wrong aspect ratio (at first I thought it was a DOSBox issue but it's not), that's what they displayed in the 90's. It would be nice to have the correct aspect ratio in SVGA modes, but games were developed like this so…

@johnnovak
Copy link
Member

johnnovak commented May 19, 2023

From what I understand, they don't want to develop targeted fixes only for these games, also because there are problems: these games often switch video modes (for example between menu and table), so adjusting the aspect ratio for the tables will ruin the aspect ratio of menus, movies etc... How does DOSBox-X handle this? (You'll probably have to explain this to the DOSBox Staging developers).

Anyway these games were ported to DOS with wrong aspect ratio (at first I thought it was a DOSBox issue but it's not), that's what they displayed in the 90's. It would be nice to have the correct aspect ratio in SVGA modes, but games were developed like this so…

What you wrote above is spot-on; "overriding" the aspect ratio with manually set values won't happen—what about frequent screen mode changes? Pretty must all pre-640x480 VGA resolutions have non-square pixels, and most modes have different pixel aspect ratios... And yeah, pinball games being predominantly Amiga ports, done by democoders, they use a whole pantheon of weird Mode X resolutions, all different dimensions, aspect ratios, etc. within the same game.

I'm 99.99% sure in DOSBox-X this is a global override. You'll get that aspect ratio in all modes, and that's it.

@kcgen
Copy link
Member

kcgen commented May 19, 2023

With current main build:

ddpcmain_000

Here's what I'm using (and copied gus.sdr into C:\DELUXE\ like @Kappa971 suggested):

[sdl]
output = opengl
windowresolution = 960x1050

[dosbox]
machine = svga_s3
memsize= 8

[render]
aspect = false
glshader = crt/aperture.vga-retina

[dosbox]
# Ported from Amiga, so use NTSC 60 Hz
dos_rate = 60
startup_verbosity = quiet

[cpu]
core = dynamic
cycles = 5000

[mixer]
reverb = on
chorus = on
crossfeed = on

[gus]
gus = true

[midi]
mididevice = none

[sblaster]
sbtype = none
oplmode = none

[dos]
xms = false
ems = false
umb = false

[speaker]
pcspeaker = none

[autoexec]
mount c .
mount d cdrom -label "DELUXE" -t cdrom
d:
deluxe.bat
pd2_000.mp4

Circles look circular enough, don't they?

pd2_000

@kcgen
Copy link
Member

kcgen commented May 19, 2023

Ok.. let's take a closer look:

2023-05-19_16-31

@cyberpunkbln
Copy link

@ALL
Thx for your replys. Very good config suggestions for better speed and better sound. Sorry i have a but;).

@kcgen
Wow cool Screenshoots, i want this;). But when i use your pure config i became this screeny:
pd
The shader glshader = crt/aperture.vga-retina can it not be, or? I don't have this special shader only as aperture.

@Kappa971,@johnnovak
Yes non standard screenmodes are a problem. But with dosbox-x i can resolve this problem pragmaticly with the aspect_ratio config. Perfect Pinball Dreams in fullscreen and window. But i think about how @kcgen has made this perfect screenshots with dosbox-staging 0.80.1.

@kcgen
Do you use the 0.80.1 mainteneance release, or a special build?
And when yes, how do became a rounded ball? How i say i don't became your screenshots, when i use exactly your config.

btw: i hope dosbox-staging will implement the aspect_ratio config key;).

@kcgen
Copy link
Member

kcgen commented May 20, 2023

Yes, this the main branch, so is how 0.81 will operate. There is not one-off code to accommodate these Pinball games, however, at least aspect = false seems to be sufficient.

If you want to try - download a main build from here; suggest MSYS2 build, if you're on Windows. Launch it inside this self-contained pack (from archive.org), which has @johnnovak's improved CRT shader (also tobe in the 0.81 release).

@Kappa971
Copy link
Contributor Author

Yes, this the main branch, so is how 0.81 will operate. There is not one-off code to accommodate these Pinball games, however, at least aspect = false seems to be sufficient.

This makes me feel like an idiot... I remember trying aspect = false but it didn't fix the bad aspect ratio in tables, now yes...
Anyway why aspect = true is horizontally stretching the graphics??

@johnnovak
Copy link
Member

johnnovak commented May 20, 2023

Anyway why aspect = true is horizontally stretching the graphics??

Too complicated and long and technical to explain... TL;DR these pinball games ported from Amiga use lots of weird custom resolutions. Also, aspect = true is not a "magic bullet" -- the upcoming getting started guide released with 0.81.0 will get into some intricate details on that. Stay tuned!

Just download @kcgen's pack and use it the current alpha or wait for 0.81.0 and enjoy the game 😎

@cyberpunkbln
Copy link

@kcgen Rounded Balls with only aspect=false, GREEEEAAAAATTTTTTT Fullscreen or Windows it doenst matter !!!! Low-Res or High-Res it doesn't matter.
Great i fibre again the stable release of 0.81.0

Now it is official dosbox-staging is the only dosbox fork that can handle Pinball Dream, Pinball Fanatasies and Pinball Illusions with perfect rounded balls. Dosbox-X i don't coun, why dosbox-x is not an game optimized fork and only for really hard professionals that not so much do gaming;).

Personally i find this must in the stable release changelog as an top fix;).

THX

@kcgen
Copy link
Member

kcgen commented Aug 31, 2023

Speed-related graphics glitches happen in Pinball Fantasies running on real hardware, too: https://www.vogons.org/viewtopic.php?f=63&t=96016

The solution for this user was to swap out to a slower-performing video card.

@johnnovak
Copy link
Member

Speed-related graphics glitches in happen in Pinball Fantasies running on real hardware, too: https://www.vogons.org/viewtopic.php?f=63&t=96016

The solution for this user was to swap out to a slower-performing video card.

The joys of hardware 😂

One of my later S3 cards doesn't have the 9x14 EGA font, which causes various random glitches in Legend Entertainment adventures. One Vogons member suggested a TSR that patches the VGA BIOS with the missing font, and then the games are perfect!

I would not have guessed this in a million years because the in-game font actually looks fine...

In DOSBox, it JustWorks(tm) with svga_s3 🤷🏻

@cyberpunkbln
Copy link

cyberpunkbln commented Nov 15, 2023

Short Question for the Alpha 0.81.
Give it new config settings for that? The he upcoming getting started guide is not finished, i think, or?

At the moment two settings ressolve the problem:

In my tests config the setting integer_scaling = horizontal resolve the ball-bug perfect. btw i love pixel perfect settings but i feel i have not fully understand the new concepts,i mean the correlations. I think i must wait for the he upcoming getting started guide:).

Btw: Is it possible to made a cconfig setting thats fits all resolutions perfectly with all settings low/high?

@johnnovak
Copy link
Member

johnnovak commented Nov 15, 2023

Short Question for the Alpha 0.81. Give it new config settings for that? The he upcoming getting started guide is not finished, i think, or?

At the moment two settings ressolve the problem:

In my tests config the setting integer_scaling = horizontal resolve the ball-bug perfect. btw i love pixel perfect settings but i feel i have not fully understand the new concepts,i mean the correlations. I think i must wait for the he upcoming getting started guide:).

Btw: Is it possible to made a cconfig setting thats fits all resolutions perfectly with all settings low/high?

I find very hard to understand your writing @cyberpunkbln 😅

aspect = off in the config fixes the aspect ratio in-game for 320x200, that's a solution for the default low-res mode.

It's impossible to "fix" the aspect ratios of all different resolutions the game uses with DOSBox settings. It's a very weird game, so just live with it.

Okay, re-read the original top comment and I think now I understand what you were asking 😄 So on real hardware the various higher resolution modes always result in a squashed image. You could compensate for that on some monitors that had a vertical/horizontal size adjusment knob—that was the only way.

I'm working on a new feature right now that will allow emulating that, to effectively apply arbitrary horizontal and vertical stretching to the image. Then one will be able to come up with custom stretch factors in the config for any of the custom resolutions the game uses. I'll ping you here once the feature is in the dev build.

For the record, integer_scaling has nothing to do with aspect ratios, but that will be explained in the guide and in the upcoming manual (TL;DR integer scaling is always aspect-ratio-preserving, period).

The Getting Started guide will be released once 0.81.0 is out.

@johnnovak
Copy link
Member

What I thought instead, based on what you said about the analog control of old CRT monitors, is to add new options in the DOSBox settings for horizontal and vertical control of the image, controllable via hotkeys, so that you can see the changes made in real time. It would also avoid a long search for games that use the same modes.

This is a good idea @Kappa971 and in my upcoming feature I'm effectively adding support for such a feature at the config level. Then later we'll be able to implement "analog control"-like behaviour on the OSD.

@MasterO2
Copy link
Contributor

What I thought instead, based on what you said about the analog control of old CRT monitors, is to add new options in the DOSBox settings for horizontal and vertical control of the image, controllable via hotkeys, so that you can see the changes made in real time. It would also avoid a long search for games that use the same modes.

This is a good idea @Kappa971 and in my upcoming feature I'm effectively adding support for such a feature at the config level. Then later we'll be able to implement "analog control"-like behaviour on the OSD.

Will that be for 0.81 or 0.82?

@johnnovak
Copy link
Member

What I thought instead, based on what you said about the analog control of old CRT monitors, is to add new options in the DOSBox settings for horizontal and vertical control of the image, controllable via hotkeys, so that you can see the changes made in real time. It would also avoid a long search for games that use the same modes.

This is a good idea @Kappa971 and in my upcoming feature I'm effectively adding support for such a feature at the config level. Then later we'll be able to implement "analog control"-like behaviour on the OSD.

Will that be for 0.81 or 0.82?

0.81 😎 My last substantial feature for 0.81, then I'll stop here.

I will!

Oh yes, I will!

(Will I? 🤔 )

😆

@cyberpunkbln
Copy link

cyberpunkbln commented Nov 17, 2023

thx for the answer. Yes i think i must wait for 0.81.0 and the new Docu;). For now i use the Alpha and 'm happy with that version.

I understand, when i'm use desktop for fullscreen and default for window, i'm must set aspect=false to become an really square ball for the high resolutions in pinball dreams and fanatasies. That functioned very well. But the algo that correct this resolutions don't correct the aspect in normal resolutions for example 320x200. The intros and menus are stretched. Oh yeah i have long waited for my square pixel ball and can take this issue.

My solution is aspect=true and integer_scaling=horizontal. Thats is the perfect setting to became an config that can i use for the most other games (when peoples like pixel perfect modes:)) and for square balls in pinball games.

But for now i'm happy that the old bug in dosbox for strange vesa modes are resolved and i can enjoy pinball games in the high resolution.

I'll wat for the upcoming manual:).

PS: An config-setting that trigger the new aspect-allgorythm for "strange" vesa mode separatly was very cool like:
aspect = true
aspect = false
aspect = special or so for aspect = true so long no "strange" vesa mode will be triggered
Edit: Oh i see in the "My last features really for 0.81.0:)" this are the settings of my dreams;)

@johnnovak
Copy link
Member

I understand, when i'm use desktop for fullscreen and default for window, i'm must set aspect=false to become an really square ball for the high resolutions in pinball dreams and fanatasies. That functioned very well. But the algo that correct this resolutions don't correct the aspect in normal resolutions for example 320x200. The intros and menus are stretched. Oh yeah i have long waited for my square pixel ball

aspect = false just treats pixels as squares. The graphics of the pinball table assumes square pixels, and that's it. There is no magic. That makes the weird intro screen resolutions squashed, but there's no way around that.

It's impossible for us to "autocorrect" things so things look "correct" for all weird resolutions a game uses. The "correct looking" settings are not technically derivable for weird custom resolutions and mismatched original art and DOS pixel aspect ratios (remember, the game does look squashed in many of its supported resolutions on DOS).

@petran79
Copy link

Exiting Psycho Pinball forces Dosbox Staging to close too. This on a W10 machine with a new monitor. On Linux though I have a CRT monitor connected with full screen and switch res enabled. There when exiting the game Dosbox Staging does not exit but switches resolution back to before launching the game. In-game it switches to 640x480 in menus and low res tables and 800x600 for high res tables. But this is not happening on the WIndows machine where the newer monitor does not switch res natively like the CRT monitor.

@johnnovak
Copy link
Member

Exiting Psycho Pinball forces Dosbox Staging to close too. This on a W10 machine with a new monitor. On Linux though I have a CRT monitor connected with full screen and switch res enabled. There when exiting the game Dosbox Staging does not exit but switches resolution back to before launching the game. In-game it switches to 640x480 in menus and low res tables and 800x600 for high res tables. But this is not happening on the WIndows machine where the newer monitor does not switch res natively like the CRT monitor.

@petran79 Raise a new ticket please and fill out the issue template.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working video Graphics and video related issues
Projects
None yet
Development

No branches or pull requests

7 participants