Switch video width/height when video is rotated?

Update:

in FBA, I’m able to fix the problem by doing the following:

quick menu -> options -> vertical mode OFF

settings -> core -> allow rotation OFF

I’m still not sure why this is working now, when it wasn’t working the last time I tried it (see above). It doesn’t seem likely that I forgot to reset the core, but it’s possible.

In MAME 2003, I’m able to fix the problem by doing the following:

quick menu -> options -> TATE mode ON

However, I still have not found a solution for FBA 2012, which seems to always say the resolution is 240x320 (for a 320x240 vertical game) no matter what options are enabled/disabled.

Needless to say, the current settings related to video rotation can be somewhat confusing. My thinking is that, by default, vertically oriented games should be displayed in their original unaltered resolutions, as they would appear on a CRT that is normally oriented. That is, a 320x240 vertical game should look like this by default:

image

The user can then use the rotation option under settings -> video to orient it how they want.

Reasons for this:

  1. it’s correct according to what the original hardware did
  2. it’s easier to work with/understand
  3. it avoids the problem of scaling artifacts when using integer scale*

*if a game is 320x240 (for example) and the resolution being output by the emulator is 240x320, then you get scaling artifacts with integer scaling enabled, because you’re starting with an incorrect resolution (unless you choose an integer scale that happens to be a multiple of both 240 and 320, such as 960).

FBA 2012 is not maintained, and is only kept available for very limited power devices. That said, this is probably a core bug that should be filed in its repo.

1 Like

As far as I know, “TATE mode” (Japanese for “long-ways”, in idiomatic American English) is the most prevalent term for this configuration where the video is outputted horizontally and the physical display is rotated.

That’s the understanding behind the way the core option is named in MAME 2003.

@Nesguy you may not have considered this, but the larger constituency for TATE mode is mobile device users (smartphones, tablets) whose displays rotate from landscape to portrait orientation. TATE mode is a better experience for them too if I understand correctly. (That’s not how I emulate)

I do think it would be good to have an informal standard for the name of this functionality across the cores. As a small step towards improved clarity I will expand the existing label on the MAME 2003 and 2003-Plus options to read TATE Mode - Rotating display (Restart core).

I think there is an existing consensus in terms of default functionality: that TATE mode should be disabled by default. I think that there are good arguments for defaulting TATE to enabled but either way I think it’s a compromise and the best thing is to make sure users are aware of this, and that the terminology is consistent so they can get things set the way they want.

1 Like

Ha, didn’t know this! I always thought it was short for “rotated” :stuck_out_tongue:

Yes, this would help a lot. In FBA for example, “vertical mode OFF” is the same as TATE mode ON. It’s confusing.

Disabling TATE mode by default doesn’t solve the problem it is intended to solve, though. At least, I don’t see how it’s making things any easier. In MAME 2003 you still have to rotate the screen regardless of TATE mode being enabled or not. So disabling TATE mode by default just further complicates things, because now you have two things to worry about: the rotation, and the output resolution (width/height).

Not on a desktop, laptop, or TV with a fixed (non-rotating) screen. The default of TATE disabled means that the video is rotated and displayed correctly with respect to the screen for those users.

To slightly complicate things, not all RetroArch video drivers implement SET_ROTATION, which can make behavior less consistent across platforms.

Missing from:

TATE mode ON:

TATE mode OFF:

What video driver are you using and what romset?

Using GL driver, game is Donpachi. Windows 64 bit.

romset?

Not sure, but the rom loads in FBA and MAME 2003. How do I determine this?

I’ll investigate a little. Would you say your experience matches the description of an unimplemented SET_ROTATION as described here? https://github.com/libretro/mame2003-libretro/issues/382#issuecomment-430289081

Yes, it sounds very similar to this. The aspect ratio changes, but the image is still sideways regardless of if TATE mode is on or not.

I also opened an issue on this here:

you can probably just skip to the end.

I can see at least three Donpachi romsets in the MAME 2003-Plus working list (the one I have handy): donpachi, donpachj, and donpachk.

Can you also confirm that you are using the correct version romsets to go with MAME 2003? That would almost certainly be a different romset than one that is built for FBA or FBA 2012.

Just to make sure we are using the same terminology: https://docs.libretro.com/guides/arcade-getting-started/#step-2-use-the-correct-version-romsets-for-that-emulator

This is what I see with a MAME 0.78 donpachi romset and the default settings in MAME 2003 with the d3d11 video driver in Windows 10 x64.

Unfortunately I can’t use the gl driver – can you try d3d11? Perhaps with a fresh retroarch.cfg file?

edit: Please ignore the FPS – I had fast forward on to get to something that looked interesting.




edit 2:To further complicate things, some TATE mode rotations (although not `donpachi` I think) are compromised by missing support for SET_VIEWPORT in some video drivers.

I have documented what I know here: https://github.com/libretro/RetroArch/issues/7660

I just downloaded the 0.78 version of the rom.

TATE on:

TATE off:

1 Like

Alright, it’s good to be using the same romset, and the correct one.

You’re definitely using video_allow_rotate = "true" in your retroarch.cfg? Without that option set to its default of true, then the core will – as one might guess – not be allowed to rotate the video in this way.

Because I can’t use the gl driver, the next step would be if you could please generate a new, default retroarch.cfg (perhaps by renaming your existing one and leaving it in place) and then trying the D3D11 driver.

1 Like

I’m not also familiar with using a custom aspect ratio rather than Core Provided. This should really be tested with a clean retroarch.cfg, and then these non-default settings be added back in one at a time.

It was set to false, I set it to true and it seems to work now.

TATE off:

TATE on:

I think the problem here is that “rotation” in this context is vague, and it’s not clear what’s going on with so many different knobs/dials. I had set it to false while trying to get FBA to display correctly. Now I need to do some more tests to see what the other cores are doing now.

1 Like

I’ve seen your other posts so I know you can be thorough. Help documenting the current behavior would be quite useful

So yeah there just appears to be a complete lack of standardization among the core options which leads to a lot of confusion, which you touched on earlier.

Here’s FBA with video_allow_rotate = “true”.

quick menu -> options -> vertical mode ON:

quick menu -> options -> vertical mode OFF:

Same result.

It’s only with video_allow_rotate = “false” that I can get a correct image in FBA. Confusing!

The next two are with video_allow_rotate = “false”.

quick menu -> options -> vertical mode ON:

image

quick menu -> options -> vertical mode OFF:

Appears to be working with “vertical mode” ON and video_allow_rotate = “false”

In other words, video_allow_rotate = false/true seems to result in the opposite behavior in FBA compared to MAME 2003.

Also, FBA and MAME 2003 rotate the image in opposite directions with vertical mode / TATE mode enabled.

I’m just using the custom res because at 1x scale it tells you the exact resolution being used (width/height).

It seems to me (from your description) like the FB Alpha “Vertical Mode” core option value is being ignored by the core. In other words, it’s always the same as TATE Mode being disabled in MAME 2003.

Only by disabling the functionality in the frontend with video_allow_rotate are you able to prevent FBA from orienting the video for a fixed display device.

Am I right that the vertical mode core option doesn’t have any effect, that the only change is from changing video_allow_rotate?

1 Like