VOGONS

Common searches


First post, by captain_koloth

User metadata
Rank Newbie
Rank
Newbie

I play a lot of games from the 1994-1996 era, just as they were starting to make the 3D leap from 320x200 to 640x480. For whatever reason that resolution difference always looks massive to me, such that the 320 games are sometimes hard to go back to.

Virtually every console emulator I know for the appropriate machines can render 3D at higher than native resolution (sometimes much higher). Why is this not possible for DOSbox or other PC emulation options (so far as I know)? Why can't I, for example, render X Wing at 640x480 (and I'm not talking about scaling, mind you, but rendering)?. I can easily render Super Mario Sunshine, for example, in 1440p!

Reply 1 of 15, by Dominus

User metadata
Rank DOSBox Moderator
Rank
DOSBox Moderator

Because the engine needs to support it. For example Ultima VII. Only with a new engine (Exult) can you render more. The original engine is the culprit.
For consoles this was different. In a way the console is the engine and often already allowed higher res, depending on your display device. So console emulators already remade the engine and allow higher res (please others jump in, I'm not explaining it good or precise 😀)

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox
DOSBox SVN snapshot for macOS (10.4-11.x ppc/intel 32/64bit) notarized for gatekeeper

Reply 2 of 15, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
captain_koloth wrote on 2020-06-05, 17:31:

I can easily render Super Mario Sunshine, for example, in 1440p!

No, you don't. If you are referring to the GameCube version, then the most it can do is 480p. Anything higher than the console can support, the emulator is essentially doing scaling/stretching, too. DOSBox can do the same for any DOS games, but unlike 3D games, scaling 2D games is less perfect because all it can do is the pixels. Advanced filters for sharpening and softening may be required for producing acceptable outputs.

Reply 3 of 15, by captain_koloth

User metadata
Rank Newbie
Rank
Newbie
kjliew wrote on 2020-06-05, 18:02:
captain_koloth wrote on 2020-06-05, 17:31:

I can easily render Super Mario Sunshine, for example, in 1440p!

No, you don't. If you are referring to the GameCube version, then the most it can do is 480p. Anything higher than the console can support, the emulator is essentially doing scaling/stretching, too. DOSBox can do the same for any DOS games, but unlike 3D games, scaling 2D games is less perfect because all it can do is the pixels. Advanced filters for sharpening and softening may be required for producing acceptable outputs.

I dont think this is correct. Console emulators do actually render at higher than native resolution (some of them).

Reply 4 of 15, by jmarsh

User metadata
Rank Oldbie
Rank
Oldbie

DOS games mostly used software for 3D rendering. The consoles that you're talking about used hardware for 3D rendering, so it's pretty easy to change the final resolution just by changing how the emulated hardware works.
It's a bit like taking a single frame from a movie and trying to make a 3D model out of it, you can't because there's too much information missing; object depths, occluded surfaces, light sources... but a hardware renderer has access to all that information.

Reply 5 of 15, by xjas

User metadata
Rank l33t
Rank
l33t

PC games from 1994-1996 didn't have any 3D hardware to work with; the devs had to write their own rendering code in software. Regardless of what "internal precision" the game does its 3D calculations at, the rasterization step - converting polygons in 3D space to pixels on a 2D screen - is written into the game code itself. In other words, the game is only going to draw the exact amount of pixels on screen that the devs wrote it to. There's nothing an emulator can realistically do about that.

For consoles (Gamecube, etc.) the rasterization step was part of the console's firmware or OS. The game would feed the console its 3D geometry, and the console itself would convert that to pixels at its screen resolution. In other words, the rasterization half of the rendering process is being done by something that an emulator would have to impliment, so the emulator authors have the ability to change the output resolution.

(This is why upscaled PS1 games can look kind of ropey - the internal geometry calculations were never meant to feed data to a rasterizer operating at higher than 320x240, so they're just not precise enough to make everything "smooth.")

You actually can upscale PC games that use 3D hardware APIs which have been re-written into wrappers - I believe DGVoodoo can do this, GLRage definitely can. I was playing the ATI version of Wipeout at 1600x1200 a while ago which it never natively supported. Not everything works & if the game is drawing 2D on top of its 3D in the wrong way (HUDs, etc.), things can break.

I've oversimplified a few things here, but that's the basic explanation. Hope it was easy to follow.

twitch.tv/oldskooljay - playing the obscure, forgotten & weird - most Tuesdays & Thursdays @ 6:30 PM PDT. Bonus streams elsewhen!

Reply 6 of 15, by captain_koloth

User metadata
Rank Newbie
Rank
Newbie
xjas wrote on 2020-06-05, 18:26:
PC games from 1994-1996 didn't have any 3D hardware to work with; the devs had to write their own rendering code in software. Re […]
Show full quote

PC games from 1994-1996 didn't have any 3D hardware to work with; the devs had to write their own rendering code in software. Regardless of what "internal precision" the game does its 3D calculations at, the rasterization step - converting polygons in 3D space to pixels on a 2D screen - is written into the game code itself. In other words, the game is only going to draw the exact amount of pixels on screen that the devs wrote it to. There's nothing an emulator can realistically do about that.

For consoles (Gamecube, etc.) the rasterization step was part of the console's firmware or OS. The game would feed the console its 3D geometry, and the console itself would convert that to pixels at its screen resolution. In other words, the rasterization half of the rendering process is being done by something that an emulator would have to impliment, so the emulator authors have the ability to change the output resolution.

(This is why upscaled PS1 games can look kind of ropey - the internal geometry calculations were never meant to feed data to a rasterizer operating at higher than 320x240, so they're just not precise enough to make everything "smooth.")

You actually can upscale PC games that use 3D hardware APIs which have been re-written into wrappers - I believe DGVoodoo can do this, GLRage definitely can. I was playing the ATI version of Wipeout at 1600x1200 a while ago which it never natively supported. Not everything works & if the game is drawing 2D on top of its 3D in the wrong way (HUDs, etc.), things can break.

I've oversimplified a few things here, but that's the basic explanation. Hope it was easy to follow.

Thanks! This explains it pretty well!

Reply 7 of 15, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
captain_koloth wrote on 2020-06-05, 18:06:

I dont think this is correct. Console emulators do actually render at higher than native resolution (some of them).

No, they don't. Rendering in 3D with hardware acceleration has the advantage of having game assets in world coordinates and the 3D hardware would later transform those into screen coordinates. This part of the 3D rendering can be done at any resolutions simply by setting the size of the view port. Some PC games may provide different sets of game assets dealing with different resolutions to make the games look even better but not a must and certainly not for console version.

GameCube hardware is fixed at 480p rendering. GameCube emulators can do world-to-screen transformation at any resolutions for the 3D processing, but then if the game make use of 2D elements (most games do), it will be difficult to re-scale only the 2D elements to match the screen resolution. So most common technique is to do offscreen rendering or rendering to a quad-texture at the native resolution. The final output is then blit or texture mapped into the designated screen size for display. Such "render at higher than native resolution" is essentially scaling and stretching.

Reply 8 of 15, by captain_koloth

User metadata
Rank Newbie
Rank
Newbie
kjliew wrote on 2020-06-05, 18:53:
captain_koloth wrote on 2020-06-05, 18:06:

I dont think this is correct. Console emulators do actually render at higher than native resolution (some of them).

No, they don't. Rendering in 3D with hardware acceleration has the advantage of having game assets in world coordinates and the 3D hardware would later transform those into screen coordinates. This part of the 3D rendering can be done at any resolutions simply by setting the size of the view port. Some PC games may provide different sets of game assets dealing with different resolutions to make the games look even better but not a must and certainly not for console version.

GameCube hardware is fixed at 480p rendering. GameCube emulators can do world-to-screen transformation at any resolutions for the 3D processing, but then if the game make use of 2D elements (most games do), it will be difficult to re-scale only the 2D elements to match the screen resolution. So most common technique is to do offscreen rendering or rendering to a quad-texture at the native resolution. The final output is then blit or texture mapped into the designated screen size for display. Such "render at higher than native resolution" is essentially scaling and stretching.

I wish I could follow this... you clearly understand this much better than I! I withdraw my claim about console rendering.

Reply 9 of 15, by jmarsh

User metadata
Rank Oldbie
Rank
Oldbie
kjliew wrote on 2020-06-05, 18:53:

GameCube hardware is fixed at 480p rendering. GameCube emulators can do world-to-screen transformation at any resolutions for the 3D processing, but then if the game make use of 2D elements (most games do), it will be difficult to re-scale only the 2D elements to match the screen resolution. So most common technique is to do offscreen rendering or rendering to a quad-texture at the native resolution. The final output is then blit or texture mapped into the designated screen size for display. Such "render at higher than native resolution" is essentially scaling and stretching.

2D elements aren't an issue at all, they still go through the hardware pipeline but with an orthogonal projection matrix instead of perspective.
The only time an increased internal resolution becomes an issue is when the game either reads the internal framebuffer directly, or renders to a texture and accesses that data with the CPU. Dolphin (Gamecube/Wii emulator) has workarounds for both of these cases so it doesn't just "scale and stretch" when using increased internal resolution.

Reply 10 of 15, by robertmo

User metadata
Rank l33t++
Rank
l33t++
captain_koloth wrote on 2020-06-05, 17:31:

Why can't I, for example, render X Wing at 640x480 (and I'm not talking about scaling, mind you, but rendering)?.

well, you actually kind of can

Attachments

  • Filename
    xwing8k.zip
    File size
    499.05 KiB
    Downloads
    29 downloads
    File license
    Fair use/fair dealing exception

Reply 11 of 15, by ZellSF

User metadata
Rank l33t
Rank
l33t

Most Gamecube games I've seen are emulated are rendering 3D geometry at higher resolution. kjliew is either wrong, or arguing some really pointless semantics.

As for doing the same for PC games, as mentioned for really old games you can't. They don't draw their 3D graphics in any standard way, they all had their own unique software way of doing it until standardized 3D APIs. For games that use standardized 3D APIs though I've found that most games I tried could be made to run in high resolution.

The most important utilities for that being dgVoodoo, DxWnd, nGlide and Peixoto's patches.

Reply 12 of 15, by leileilol

User metadata
Rank l33t++
Rank
l33t++

High geometry != high res. Gamecube's output is generally 480i and often involves a blurry filter to reduce flicker for most games (which wasn't emulated in Dolphin for the longest time, but it does now). Most of the buffer effects the Gamecube does are resolution-specific (like the PS2) and emulation offers to hack up 'scale' which can present artifacts for many games if one were to flaunt their "4k superior PC gaming" fantasies onto them.

apsosig.png
long live PCem

Reply 13 of 15, by ZellSF

User metadata
Rank l33t
Rank
l33t
leileilol wrote on 2020-06-13, 23:16:

High geometry != high res.

Geometry rendering resolution is what practically everyone means when discussing game resolution.

They're the same, to anyone but pedants.

leileilol wrote on 2020-06-13, 23:16:

which can present artifacts for many games

No one said all Gamecube games can be forced to higher rendering resolution, just most.