Jump to content
LaunchBox Community Forums

Zombeaver's Retroarch PSX and Saturn Overrides


Zombeaver

Recommended Posts

Aspect_Ratio_Correction.thumb.gif.19045620b6177302747dd5862b84ae14.gif

Current version date: 8-30-18 - Updated overrides to use new aspect ratio numbers for Retroarch 1.7.4 (they will not work correctly with older versions). Older versions of the overrides are still available for older versions of Retroarch.

Introduction:

Spoiler

Hey guys! For the last couple weeks I've been working on full audits of several platforms in my library after updating Retroarch to version 1.4.1. I had a number of goals for this, which varied by platform, but not the least of which was a desire to pare down the way I had some things setup in my LB library. In the past I've had Retroarch split out into multiple emulator entries in Launchbox to account for a number of different common scenarios. Basically you would duplicate a core dll, rename it slightly based on what you want it to do differently from normal, create a new entry for it in LB and name it accordingly, assign that emulator to a game, load it up and change your settings as necessary. This was handy for things like Super Scope or other scenarios where something needed to be changed for certain games within a platform but not all - split it out into a new entry in LB, set your Super Scope games to use that emulator entry, load up a game and set it to use Super Scope.

Over time that got a bit more and more out of hand - it's not a terrible solution by any means but I'm nitpicky and it was getting to the point where I had about 10 different Retroarch entries clogging up my emulator list...

Overrides, enter stage left.

One of my favorite additions in RA 1.4.1 is overrides. Basically these are small, pinpoint configs that inject altered settings for just about anything - video settings, input settings, shaders, whatever - and they can be saved at the per-core or per-game level. They're then loaded in priority. Game Config > Core Config > Base Config (retroarch.cfg unless one is specified) with the higher priority overriding the lower. What this means is that you can have certain settings set as a baseline, then if you want slightly different settings that apply to all games loaded with a specific core you can load the core, load up a game, make changes in your settings the way you want, and then go to Quick Menu -> Save Core Overrides. Now, whenever you load a game with that core, it will automatically use those altered settings. If you want to change settings for a specific game, do the same thing as before - load up the core, load up a game (it will default to your core override settings if you've made one), then make whatever changes you want and go to Quick Menu -> Save Game Overrides. Now whenever you load that specific game it will automatically apply your customized settings for that game. This is awesome because it really lets you fine tune how your games are setup on a game by game basis and they're very easy and fast to create. I posted some additional information in this thread if anyone's curious.

So! It occurred to me that if I was going to go to the trouble of getting all of my stuff setup with overrides, I might as well share those so that others can use them as well.

The first batch of these that I'm sharing are ones for my PSX games using the Mednafen PSX HW core (now Beetle PSX HW).


There were two overall goals with these:

Goal #1 was to ensure that the image was properly scaled to the top and bottom of the screen for all of my games. Something you'll notice if you play a lot of PSX games using RA Beetle PSX is that the aspect ratio settings that work best (scale to the top and bottom) for one game doesn't necessarily do the same for another game. This is because there's a wide array of resolution modes used in the PSX library that are entirely game-dependent, so what works for one thing won't necessarily work for another. Thankfully, overrides give us the flexibility to custom tailor these as we need from one game to another. What I found worked best was one of three scenarios:

"AR Setting 1"
Aspect Ratio = Core Provided
Integer Scaling = Off

"AR Setting 2"
Aspect Ratio = Custom
Custom Viewport Width = 1600 (5x)
Custom Viewport Height = 1200 (5x)
Integer Scaling = On

Other
Aspect Ratio = Custom
Custom Viewport Width = [customized per game]
Custom Viewport Height = [customized per game]
Custom Viewport X  = [customized per game]
Custom Viewport Y = [customized per game]
Integer Scaling = Off

Most games fall into one of the first two categories. AR Setting 1 is what I'm using as a Core Override base. AR Setting 2 was used in per-game overrides as needed and when something more unusual came up I created a per-game override using custom width, height, X, and Y settings.

Goal #2 was to setup each game to use the appropriate controller settings for that specific game. During the lifetime of the PSX there was quite a range of controllers, starting with the regular old d-pad-only gamepad up through the original dual shock controller. Support for the later controllers varied by game. The original pad (called "PS1 Joypad" in Retroarch) + Analog to digital type = Left Stick is used as the Core Override base. If the game supported it, either Dual Analog or Dual Shock was used as an override. For these, the analog to digital type is set to none (because otherwise you'll still be sending d-inputs) unless it's one of the instances where a game actually supported the vibration function of the dual shock controller but did not support actual analog input (there are a number of such cases); for those the analog to digital type is set to left stick just like the original PS1 Joypad ones, but you'll have vibration as well.

Complete PSX and Saturn Audit Sheet
483 PSX / 109 Saturn titles covered

The sheet shows what was used for each game along with the name of the relevant override file. The file name is important because it must match the filename of the game you want to use it with exactly in order for Retroarch to know that it needs to apply it. This means you're going to need to rename the configs to match your game if it's named differently. On that note, I'm using .m3us for all multi-disc games (.pbps would work as well), which means that there's only one override for those games (because it just needs to match the .m3u/.pbp filename) but if you don't use one of those and just have several disc images that you individually direct at Retroarch, separate overrides would need to be made to match each disc filename. You should really be using either .m3u or .pbp for those though...

Another caveat is that these are designed for a 1080p display; if you're using a different resolution, the AR settings more than likely won't be correct for you.

If a game used AR Setting 1 and the original controller, no game override is necessary as those are covered by the core override.

Also, these are designed for the Core Option settings of Renderer = Software and Internal Resolution = 1x (native). You might be able to get away with alternate settings for those, depending on the game, but I can't guarantee the AR settings will be correct.

This is the full list of core options (from retroarch-core-options.cfg) that I normally use for Beetle PSX HW (note that 32-bit color depth doesn't actually do anything in software rendering, but I leave it there for when I do want to try out either vulkan or opengl renderers, at which point I turn dithering mode to off; the PGXP options don't do anything in software mode either):

Spoiler

beetle_psx_hw_renderer = "software"
beetle_psx_hw_renderer_software_fb = "enabled"
beetle_psx_hw_adaptive_smoothing = "enabled"
beetle_psx_hw_internal_resolution = "1x(native)"
beetle_psx_hw_filter = "nearest"
beetle_psx_hw_internal_color_depth = "32bpp"
beetle_psx_hw_wireframe = "disabled"
beetle_psx_hw_display_vram = "disabled"
beetle_psx_hw_pgxp_mode = "memory only"
beetle_psx_hw_pgxp_caching = "disabled"
beetle_psx_hw_pgxp_texture = "enabled"
beetle_psx_hw_dither_mode = "1x(native)"
beetle_psx_hw_scale_dither = "enabled"
beetle_psx_hw_initial_scanline = "0"
beetle_psx_hw_last_scanline = "239"
beetle_psx_hw_initial_scanline_pal = "0"
beetle_psx_hw_last_scanline_pal = "287"
beetle_psx_hw_frame_duping_enable = "disabled"
beetle_psx_hw_widescreen_hack = "disabled"
beetle_psx_hw_crop_overscan = "enabled"
beetle_psx_hw_image_crop = "disabled"
beetle_psx_hw_image_offset = "disabled"
beetle_psx_hw_display_internal_framerate = "disabled"
beetle_psx_hw_analog_calibration = "disabled"
beetle_psx_hw_analog_toggle = "disabled"
beetle_psx_hw_enable_multitap_port1 = "disabled"
beetle_psx_hw_enable_multitap_port2 = "disabled"
beetle_psx_hw_cpu_overclock = "disabled"
beetle_psx_hw_cdimagecache = "disabled"
beetle_psx_hw_skipbios = "disabled"
beetle_psx_hw_use_mednafen_memcard0_method = "libretro"
beetle_psx_hw_enable_memcard1 = "enabled"
beetle_psx_hw_shared_memory_cards = "disabled"


One final note is that I'm using the CRT-Hyllian-Multipass shader in the core override (Beetle PSX HW.cfg) so that will apply to all your games unless you change it in the core override. You can edit the Beetle PSX HW.cfg file and change the "video shader = " line to a different shader or just remove the entire line. You could also just do this via Quick Menu -> Save Core Override, but you'll need to be careful that you don't accidentally overwrite a setting that you actually need as a base for these to work (listed below). CRT-Hyllian-Multipass is a good one because it looks good, it's super lightweight, and it looks correct even without integer scaling (which is super important for these). CRT-Aperture is a good choice as well.

59b743e225856_BeetlePSXCoreOverride.thumb.JPG.20dfd00f0e74c3430946559c2b7dd1a2.JPG

Oh, and a final final note (we'll call this Goal #3) is that there are some PSX (and Saturn) games (primarily fighting games) that are in interlaced 480i format. I made some custom deinterlacing shader presets that I use for these games to remove interlacing artifacts and it's enabled in their overrides (they're noted on the audit sheet). The presets are included below. These just need to be placed in the base Retroarch\shaders folder.

The overrides need to be placed in your Retroarch\config folder so the path should look like Retroarch\config\Beetle PSX HW\[config name].cfg

Notes on the Saturn overrides can be found here and here.

Beetle PSX HW Overrides 8-30-18 (RA 1.7.4+).zip
Beetle Saturn Overrides 8-30-18 (RA 1.7.4+).zip
CRT Deinterlacing.zip

PLEASE NOTE: If you're using Retroarch version 1.7.8+ some changes were made to how shaders were handled, which means you'll need to use the files in the attachment below rather than "CRT Deinterlacing.zip" above. Be aware that you'll also need to rename the presets to match your own files, just like with the overrides.

1.7.8+ Deinterlacing.7z

Older (pre RA 1.7.4) versions:

Let me know if you have any questions or issues! Obviously this isn't everything in the PSX library - I curate my library so I've "only" got a little under 500 PSX games but this makes a big dent.

  • Like 6
  • Thanks 6
Link to comment
Share on other sites

I've added the following games to my library, many of which needed overrides. The sheet has been updated with more details and the download has been updated.

Alone in the Dark: The New Nightmare
Cyber Sled
Defcon 5
Destruction Derby 2
Fox Hunt
Lode Runner
Lost World: Jurassic Park
Mortal Kombat Trilogy
Novastorm
Novastorm
Nuclear Strike
O.D.T.
Pong: The Next Level
R4: Ridge Racer Type 4
Rampage World Tour
Rayman
Resident Evil: The Director's Cut (Dual Shock)
Road Rash
Shadow Madness
Shooter Starfighter Sanvein
Soviet Strike
Space Griffon VF-9
Spider: The Video Game
Star Wars: Dark Forces
Starblade Alpha
Street Racer
Strider 2
Sydicate Wars
Tall Infinity: The Tower of Wisdom
Tekken
Tenchu
World's Scariest Police Chases
Wu-Tang: Shaolin Style
WWF Wrestlemania: The Arcade Game

  • Like 3
Link to comment
Share on other sites

Also, if anyone's eyes glazed over half way through reading that wall of text or read it all and still has no idea what I'm talking about regarding the aspect ratio correction... I added pretty pictures! :)

The images with a gap at the top and bottom are the unaltered ones with Aspect Ratio = Core Provided + Integer Scaling = Off and the following image is with my overrides.

Link to comment
Share on other sites

Thanks @Thatman84!

This will probably be my last batch. At this point I've got basically everything I want in my library.

I've added the below games, many of which required overrides. The sheet has been updated with further details and the download has been updated.

Ace Combat 3
Air Combat
Alundra 2
Ballistic
Battle Arena Toshinden 4
Battle Hunter
Beyond The Beyond
Blast Radius
C: The Contra Adventure
Chronicles of the Sword
Circuit Breakers
Contra: Legacy of War
Darklight Conflict
Dracula: Resurrection
Dracula: The Last Sanctuary
Dragon Seeds
Dragon Valor
Intelligent Qube
Irritating Stick
L.S.D. Dream Emulator
Metal Gear Solid: VR Missions
No One Can Stop Mr. Domino
Perfect Weapon
Swagman
Tatsunoko Fight
Team Buddies
The City of Lost Children
The Italian Job
Thunderstrike 2
WarJetz
World Destruction League - Thunder Tanks

Link to comment
Share on other sites

On 3/11/2017 at 0:33 AM, oilertitanfan said:

Thank you so much for doing this. Any chance Sega Saturn using Mednafen core will be done too?

Sent from my HTC6525LVW using Tapatalk
 

No problem!

As far as Sega Saturn, I actually haven't found this to be an issue for it - the following settings seem to work fine for everything (with one exception, which I'll get back to in a moment). Note 9/11/17 - after I did a closer inspection there was some cutoff with these settings for some games. There's none in the custom overrides I've made.

Aspect Ratio = Custom
Custom Aspect Ratio Width = 1510 (5x)
Custom Aspect Ratio Height = 1200 (5x)
Integer Scale = On

I have these settings saved as a core override and they seem to work great for everything (I've got about 80 Saturn games in my library, nearly all of which use RA Mednafen Saturn). I do have the games that are in interlaced 480i (similarly to PSX, they're pretty much all fighting games) setup to use the deinterlacing shader, but the aspect ratio/resolution/view port settings are unchanged.

The one exception to this is the game Enemy Zero - and for it, it's not that the normal resolution/AR settings are wrong, it's that the game itself is in a letterboxed format on a normal 4:3 display (so on a 16:9 display it has space on all sides). As result, I made an override which essentially crops it so that it's in a full-scale 16:9 format. There's some cutoff on the main menu but I think that's it - the game itself seems to all be in the odd format.

58c3938b03f30_EnemyZero-1.thumb.png.4dd0fc45cee1879be6eb86dea61c31e4.png58c393a7ec55b_EnemyZero-2.thumb.png.93ada80a10975dedcbaef0b1724f2015.pngEnemy Zero.cfg

There isn't much to do in the way of controller customization yet either as the 3D pad still isn't supported in RA Mednafen Saturn. Once that's implemented I'll probably be making some overrides, where relevant, for that.

  • Like 1
Link to comment
Share on other sites

I added the below games to my library, several of which needed overrides. Further details are on the sheet.

Bust A Groove
Bust A Groove 2
Dynasty Warriors
Evil Dead: Hail To The King
Hexen
Magic Carpet
Rampage 2: Universal Tour
Rhapsody: A Musical Adventure
Road Rash 3D
Road Rash: Jailbreak

For Bust A Groove and Bust A Groove 2 I made overrides that have an increased Hard GPU Sync frame delay. This helps cut down on input latency which is especially important for rhythm games. I went back and did the same thing for Parappa The Rapper and Um Jammer Lammy as well. I found that this made a pretty significant improvement. I'm using a delay of 10 though, which is pretty high - and if it's too high for your computer to handle it'll cause the game to stutter. If that happens, just reduce the number until the issue goes away. You want it as high as you can get it (without impacting performance) because the higher it is the less input latency.

  • Like 1
Link to comment
Share on other sites

So I made an improved version of the CRT Deinterlacing shader earlier today and in the process realized that the one I uploaded previously had absolute (not relative) paths setup so... it wouldn't have worked for anyone other than me anyway. I've updated the original post with it and I went back and updated all the relevant overrides to use it rather than the previous version.

  • Like 1
Link to comment
Share on other sites

  • Zombeaver pinned this topic
  • 3 weeks later...

Hi I am new to this, I tried applying your CRT Deinterlacing v4.glslp but nothing changes

I can still see the interlace.

I'm test it with Dead or Alive game on PlayStation (Beetle PSX) Core.

Do I need to download other shaders for your shader to work or am I missing another step?

I am using Retroarch 1.4.1

Thanks.

Edited by angel_x
Link to comment
Share on other sites

It does have dependencies on some other shaders - the glsl versions of crt-easymode, 4xsoft, and stock specifically.

Go to Online Updater -> Update GLSL Shaders

CRT Deinterlacing v4.glslp needs to be placed in Retroarch -> shaders (the base, not one of the subfolders)

5901e8520d98c_CRTDeinterlace.thumb.PNG.c40d6d8357b246a7437c5539846df4e6.PNGLoad up a core, start a game, and then go to Quick Menu -> Shaders -> Load Shader Preset and then you should see CRT Deinterlacing v4.glslp which you should select.

I use Mednafen PSX HW (Beetle PSX HW now), specifically, but it's not core-dependent. I use it with some Saturn games and Mednafen Saturn (Beetle Saturn) as well.

Link to comment
Share on other sites

m3u is for multidisc games, allowing you to swap discs in-game via hotkeys (open tray -> next or previous disk -> close tray) rather than having to exit the emulator and restart it with a different disc. There are further details if you click the link in the original post above where I mention .m3us.

  • Like 1
Link to comment
Share on other sites

Thanks, it works, probably my shader was out of date?

By the way, the shader settings makes it looks a bit blurry.

But, Ii guess that is better than nothing.

 

On the other hand, I just wondering if the emulator itself could apply deinterlace without needing any shader?

Or the emulator don't have the capability yet?

 

 

Edited by angel_x
Link to comment
Share on other sites

It does look slightly blurry, that's intentional and unavoidable if you really want to get rid of the interlacing artifacts. It's either blurry with no artifacting or clear with artifacting :/

To my knowledge, deinterlacing can only be accomplished via shader in RA. Standalone Mednafen does have a couple deinterlace switches (weave, bob, and bob_offset) but I'll go ahead and tell you that they're all pretty awful. I'll take slightly blurry over those any day. There are a couple of deinterlacing shaders that come with RA that you can try out - bob-deinterlace.glsl and bob-and-ghost-deinterlace.glsl - they're in the "misc" folder in shaders. They're less blurry but they don't completely eliminate the artifacting and, depending on which one you use and the game you use them with, you might get vertical jitter - usually on overlay elements like health bars and options menus.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...