skmp / reicast-emulator

Reicast was a multiplatform Sega Dreamcast emulator
https://reicast.emudev.org
Other
1.1k stars 344 forks source link

Add ability to specify render resolution #372

Closed hooby3dfx closed 10 years ago

hooby3dfx commented 10 years ago

I didn't know how this worked, so just thought I'd throw it out there - would it be possible to specify the internal resolution the emulator uses? In PCSX2 for example you can choose to use the ps2 native resolution, or a scaled/custom resolution. I can see that we init with 800x480 (vga). I guess the other alternatives would be the other cable types? Could we go lower than that? Also, would it be possible to change the output resolution? So that on a 1080p device or 720p device we would still only render at 480p and then scale (again not sure if this is how it works now or not).

AbandonedCart commented 10 years ago

There are root commands in the am / pm that allow changing the device resolution. As far as output, I believe that is specified by cable type. The JNIdc.init(w, h) would be how to change what the emulator saw as the width and height of the view. Currently it is whatever the view size is.

MrPsyMan commented 10 years ago

According to drk, changing the internal resolution would be too expensive for borderline devices to handle. Otherwise we would have done it already (we did on nulldc for example).

AbandonedCart commented 10 years ago

I will circle back to this when I have time but you have the user enter width and height. Take the screen width and height and divide by theirs (making sure they can't exceed the real ones). Now you have a scale. Set the view to stretch to the user width and height times the scale with black bars (screen minus scaled / 2) to compensate. It's like a pseudo zoom.

AbandonedCart commented 10 years ago

On another note, I think the scissor function in the emulator is broken on Android causing the buggy widescreen. That should probably by ifdef-ed out and let android do it locally.

skmp commented 10 years ago

Scissoring is to emulate pvr's clipping, not for android. Rendering in a lower resolution will have a huge performance hit on current devices, sadly. In most chipsets, rendering to texture and then scaling is many times slower than rendering directly (SGX is a great example of this, thps2 runs at 130 fps w/o rtt and at <30 fps w/ rtt)

skmp commented 10 years ago

Plus, we need to get rid of the options, not add more :p

hooby3dfx commented 10 years ago

How about the output resolution? So that OUYA wouldn't need to output/render 1080p for example. On Mar 3, 2014 2:38 PM, "Stefanos Kornilios Mitsis Poiitidis" < notifications@github.com> wrote:

Plus, we need to get rid of the options, not add more :p

Reply to this email directly or view it on GitHubhttps://github.com/reicast/reicast-emulator/issues/372#issuecomment-36549852 .

skmp commented 10 years ago

I believe this is a system configuration thingy and not something the application needs to specify ?

AbandonedCart commented 10 years ago

The widescreen is only wrapped around the scissoring and widescreen is definitely broken. The difference of on or off is whether the black bars are opaque or translucent.

skmp commented 10 years ago

Widescreen was fixed long ago, and there's no plan for other-than-native resolutions right now, so let's close this for now.