libretro / mgba

mGBA Game Boy Advance Emulator
https://mgba.io/
Mozilla Public License 2.0
68 stars 73 forks source link

OpenGL Scale Option & Other #156

Open ToniBC opened 5 years ago

ToniBC commented 5 years ago

Recently it was updated to version 0.8, but there are options that have not yet been implemented and that apparently are important or improve the quality.

One of them is the OpenGL Scaling option, which improves the quality by losing performance, but which would be interesting to include.

Then another user comments on the option of Interframe Blending, which is also not present in the core and in the standalone version.

I put this just to remember and have a list of things that are still to be implemented.

Thanks for your work.

hizzlekizzle commented 5 years ago

I believe both of those are usually considered frontend jobs. That is, scaling and post-processing effects. Some cores have things like that, so it's not bad or whatever, it's just that a libretro frontend (such as RetroArch) typically handles scaling and things like LCD retention effects.

ToniBC commented 5 years ago

The scaling is like what you got from the Bsnes mod to see mode 7 in HD, so I saw it is to expand the internal resolution, something also similar to what the Beetle PSX HW core has for example.

It is not a post-processed shader filter. It is a new option of 0.8.

The improvement is substantial in games "mode 7" of the GBA for example the Mario Kart as seen in the video.

https://www.youtube.com/watch?v=j8hZAjeHYX8&t

Supposedly, if the emulator is already up to date with version 0.8 as indicated, that option would have to be already implemented, only that it would be necessary to put it in the options of the core to be able to activate it or not, like the other options of Interframe Blending that also It would have to be internal, but it would be necessary to activate it in the options.

endrift commented 5 years ago

Interframe blending upstream is implemented in the frontend, not in the backend, so that can't easily be hooked up here. Meanwhile the GL renderer would require conditionally hooking up an OpenGL context to the core, which I'm not sure how to do.

hizzlekizzle commented 5 years ago

Oh, yeah, I'm familiar with the high-res stuff, I just didn't realize that's what you were referring to.

Yeah, I don't think doing it conditionally would really be an option. It would have to be all or nothing, or a separate all-GL core that's spun off at compile time, ala beetle-psx vs beetle-psx-hw.