desmume2015 icon indicating copy to clipboard operation
desmume2015 copied to clipboard

Proposal - "Hybrid" screen layout

Open milesrotaru opened this issue 9 years ago • 9 comments

See attached screenshot. It is a very common scenario in DS games, perhaps the most common of all, that one screen has all the game action on it and the other is just an info display. Hybrid mode addresses this. And why have two little screens on the side instead of just one? Well, there's space so why not. And it means you don't have to take any action in order to watch a cinematic that uses both screens. Hybrid mode would support toggling the primary screen just like single screen mode.

If I understand correctly, implementing this would only involve adding to desmume/src/libretro/libretro.cpp. My C++ and OGL knowledge are kinda weak but I could try doing it myself if nobody else wants to and a maintainer gives me the go ahead.

hybrid-mode

milesrotaru avatar Aug 14 '16 17:08 milesrotaru

YES! Please. This would be an amazing feature.

craigerskine avatar Sep 12 '16 15:09 craigerskine

I'd very much welcome you taking a stab at it, yeah. Would be pretty cool.

inactive123 avatar Sep 12 '16 16:09 inactive123

Okay, I'll try. Just got the master branch compiling today.

milesrotaru avatar Sep 14 '16 03:09 milesrotaru

To note, I am very inexperienced at this sort of thing. I had a go at trying to hack this sort of thing into the LEFT_RIGHT layout to see if I could get it working (but tiding things up later) but the resampling of the second screen I'm doing is awful.

retroarch-1016-133238

apprt avatar Oct 16 '16 12:10 apprt

Can you make a fork repo or a diff where you can show your changes? I could invite others then to take a look at it, maybe that would help.

inactive123 avatar Oct 16 '16 13:10 inactive123

I'll get a fork up soon after I've tidied up the code a bit, it's very rough. The problem with the resampling is I'm just using a basic nearest-neighbour to shrink the screens. I don't really know how to deal with the uint16_t

retroarch-1016-141826 retroarch-1016-141830

apprt avatar Oct 16 '16 14:10 apprt

I think the problem isn't so much the sampling method for reduction but rather than it simply doesn't have the pixels to represent things that small. I think you would have to render the viewport with the main screen pre-scaled at 3x (or whatever) and the smaller ones at 1x.

If the initial framebuffer is only 256x192 (or whatever; that is, set to the native res of the console) and the secondary screens are scaled down to fit alongside the main screen, the information lost from downscaling them is gone forever and doesn't come back when you scale back up in the frontend.

If that's indeed the issue, we have a similar issue going on with the mame-git core, where the OSD is getting downscaled before it hits the frontend and it leads to the same blocky mess.

hizzlekizzle avatar Oct 16 '16 22:10 hizzlekizzle

Yes of course that's the reason. The resolution of those smaller screens is just so small. If you find the pull request useful, I'll look into a scaling option as a followup.

apprt avatar Oct 17 '16 11:10 apprt

Any update on that one? The pixels in the hybrid layout are not very good

Papermanzero avatar Jun 13 '20 11:06 Papermanzero