Wrong TATE mode

I’m having trouble with TATE mode.

The MAME, Flycast and Kronos emulators rotate the image, but the shader rotates in the wrong direction.

Retroarch 1.17.0 Settings > Core > Allow Rotation ON

MAME > Screen Rotation Mode > Internal

Correct

MAME > Screen Rotation Mode > Libretro

Incorret

Kronos > Default Settings

Incorret

This happens in any vertical game and with any shader.

I can’t solve it. Any suggestion?

Afaik, 2nd and 3rd screenshots are in tate mode, while the first is not.

Also, I’m not sure flycast core handles rotation at all (?)

Double checking the core, there is Core Option / Video / Screen Orientation.

1 Like

Both flycast and kronos handle rotation through the libretro api by default, as all cores should.

@lfan There used to be a bug in MAME (current) where it would rotate internally instead of leaving that task to the frontend as it should (see this). As a result, some shaders were written to work exclusively with that internal rotation bug. Nowaday, that bug has finally been resolved, and MAME > Screen Rotation Mode > Internal is used as a backward compatibility workaround for those shaders, but that workaround is only present in MAME (and now flycast it seems ?).

I suspect you are using one of those shaders meant for internal rotation in those screenshots.

As a matter of fact, playing shienryu with some standard shader (scanline.slang) and no MAME workaround enabled leads to the correct result on my side :

3 Likes

In strictly technical terms, wouldn’t “tate” mode refer to displaying horizontal scanlines even if the tube is physically rotated?

I hope I haven’t been misinterpreting this for so long.

This is one concept which is actually not so easy to explain, it took me quite some time to understand how it differs from unrotated.

Iirc, ethymologically, it means that the larger side of the emulated content matches the larger side of the screen it is rendered on.

In strictly technical terms, TATE in MAME is a mode where both 90° and 270° vertical games will “appear internally unrotated” with the same verticality, meaning one kind won’t be upside down compared to the other kind, and it does the same for 0° and 180° horizontal games. Meaning in reality, it is different from being unrotated because a 180° rotation might have been applied internally to normalize the orientation of the content.

Afaik, any relation to scanline orientation is a side effect and not something intentional. As such, “Wrong TATE mode” might be a bad choice as a topic name for shaders orientation.

2 Likes

No, it just means turning a CRT on its side. The scanlines should appear vertically (‘top to bottom’).

To bypass this issue, just tell vertical games to run with one core by default and the horizontal games with another (MAME, FBNeo)

2 Likes

MAME and Flycast, vulkan; Kronos, glcore.

MAME > Screen Rotation Mode > Libretro

scanline.slangp. OK?

crt-guest-advanced.slangp. TATE OFF

crt-guest-advanced.slangp. TATE ON

Maybe I’m confusing myself by thinking that TATE ON is for setting the scan lines vertically…

As previously explained, MAME-current used to be the only core not telling retroarch whether a game was vertical or not, which was an extremely bad idea down the line for streamlining shaders.

That “TATE ON” stuff was probably one of the workarounds to get around this ?

If you use a recent version of MAME-current where this problem has been solved, or any other core where this problem never existed (Kronos, FBNeo, Flycast, older MAME cores), you shouldn’t have to enable those workarounds. Ofc, that’s only if you didn’t switch back to the internal rotation through core options, and if the shader works properly with the normalized rotation through the libretro api (which might not always be the case for shaders that were exclusively developed for MAME, i think some bezel packs still require reverting to that internal rotation stuff).

1 Like