Multi disc for Sony Playstation and Sega Saturn using M3U files


Multi disc games will prompt for the other CD when you reach a certain point of the game, back and forth, in this example I’m using Riven because it’s probably the game that uses more discs I know, in PS1 it has 5 discs, and it’s interesting because it will prompt you to swap back to the first discs since you need to come back to the first areas to progress in the game.

Saves are usually stored separately for each game, this applies to multi discs, so if you, say, reach the second disc in Metal Gear, the save file will be named something like Metal Gear (USA) (Disc 1).srm (the save file will follow your rom file name), and it won’t be recognized in the following disc since it will try to find the save for the Metal Gear (USA) (Disc 2).srm file. Using a .m3u file will fix this because the save will follow the same name for all discs, you can name it Metal Gear (USA).m3u and the save will be named Metal Gear (USA).srm for all discs.

Here you can see an example, a folder specific for multi disc games so it will be easier to sort out the m3u files.

A M3U file is a simple plain text file (with the .m3u extension) that contains only a list of the discs inside, like this:

*Note that as my games are compressed in CHD I have only listed the compressed file, in case you have them in Bin+cue, you should only list the .cue file instead.

All you have to do is to copy the disc names and paste inside this .m3u file and launch the (in this case) Riven - The Sequel to Myst (USA).m3u in retroarch, currently supported by Playstation and Saturn.

Load the .m3u file instead of the Bins, isos or CHDs in order to get the swapping discs functionality

When you reach the disc swapping part:

Press F1 (or the button you assigned to enter Retroarch’s menu in your game-pad), it should open the Quick Menu of the core you`re currently on. In case you’re in the home menu, enter Quick Menu pressing Enter or the correspondent button in your game-pad.

Below you’ll find Disk Control, again press Enter or the correspondent button in your game-pad. Screenshot 6

Disk Index shows the current disc you’re on, press Enter on Disk Cycle Tray Status and it will open the disc tray, check yellow message below.

Go up to Disk Index and press forward in the keyboard or in your game-pad (forward and back cycles through discs, choose the next disc, in this case, I need to select Disc 2, but depending on the area of this game, it can prompt you to go directly to Disc 3 or 1, you can actually jump to Disc 3 if you know how from the start, but you cannot do much but only visit a limited part of that area.

After selecting the next disc, press Enter again in Disk Cycle Tray Status to close it (check yellow message)

Press F1 (or the correspondent game-pad menu button) to go back to the game), it will load the next disc.

Game running with the next disc:

For frontend users, like me, using .m3u files and loading them via Retroarch has a bonus, it makes browsing though games much easier and cleaner, since it won’t need to show more than one entry for a game that has multiple discs.


Dreamcast doesn’t have .m3u files support yet, so each disc has its own entry.

Playstation and Saturn will only need one entry now:

Screenshot 18

How to use PS1 games with more than one disc?
Multi-Disc Game Swap Technique - BIN/CUE Functionality?
Dolphin core: Multidisc games, changing discs

M3u doesn’t work for Sega Saturn yet, does it? I just tested it, and it crashed on me.

That’s part of the reason I’m still using standalone Mednafen. The RetroArch core has come a long way, but it’s just not there yet.


I tested the latest version with an M3U and Panzer Dragoon Saga and it worked for me. It boots you back to the BIOS every time you open the tray though; that could be a problem with games that don’t save at the end of the disc.

And in the last couple months pretty much everything from stand alone was implemented in the core. hiddenasbestos and wertz did a lot of work on it.


I might need to update my assets or something.

But that booting into the BIOS is definitely an issue…


I figured out what was wrong - I use absolute paths for my m3u files. Standalone Mednafen has a setting that allows you to do that. Doesn’t seem to be working on the RetroArch core, though.

Replacing the absolute paths with just the file names resolved the issue.


@Awakened I think the standalone version might have the same behavior, perhaps that’s what it does with real hardware.

I might have to do a quick run through of ‘D’ to make sure it’s swapping discs correctly.

If it is, it’s not too much of an issue for me to change all my m3u files to file names instead of absolute paths. I’m not even sure why I did that, tbh… I think I was testing something for someone.


Ok, my one remaining gripe with the RetroArch core is, the aspect ratio is off, or something is otherwise not displaying correctly.

Here’s standalone Mednafen:

And here’s the RetroArch core:

The Mednafen core isn’t perfect either, but there’s no reason for that extra black space. The globe looks noticeably too skinny with the RetroArch core, so I’m guessing there’s something going on with the aspect.


I believe skinny is how it’s supposed to look, or at least it did on 4:3 CRTs (according to what I’ve read). Stand alone should have that too by default; you must have changed the ss.correct_aspect setting to 0. In RetroArch you can change the aspect ratio to Pixel Aspect in Video Options to get a round circle on the BIOS. I use that as my default aspect for Saturn, but some games like PDS and Sega Rally have graphics corrected for 4:3, so I use overrides to set 4:3 on them to get perfect circles.

You might also need to set the horizontal overscan core option to 32 to cut off the black overscan on the sides, since you use an overlay. I would recommend setting initial scanline to 8 and last to 231 to remove the vertical overscan as well. Some games like Mega Man 8 do draw stuff in that area though. And if you turn on the widescreen mode in NiGHTS or Panzer Dragoon Zwei, they use the horizontal overscan area, so you’d want to set that back to 0 turn off your overlay, and use 16:9 aspect to run those in proper widescreen.


The overscan core option (I used 30 to be consistent with how things looked in Mednafen) did the trick, thanks for that, I wouldn’t have thought to do that.

I didn’t change the ss.correct value in mednafen-09x.cfg, it’s still set to 1… I can’t say for certain how it’s supposed to look, because unfortunately, I sold my Saturn a year and a half ago, and can’t test it. :frowning:

It’s a little strange if that is how it was though (I honestly don’t remember). Why would they design a console that can’t output video to fill up the whole screen? But then again, why did Sega do a lot of things. :slight_smile:

At any rate, between this, and the pressure sensitive buttons now working, it looks like I have no excuse to not use the RetroArch core anymore, and I thank you for that. :slight_smile:


@aorin1, RocketLauncher lets you swap discs right from the Pause menu for Sony Playstation, did you know that? I tested it out with Saturn - all it does is eject the tray, then close it. I’m considering looking at the module, and seeing if I can’t get it to work.


are these from the same game? from what i know depending on the game, mednafen has alway placed black border on aspect_ratio=1 but not all the games has this. this happens mostly on ntsc titles.

anyways can you link me the mednafen-9x.cfg(or something)? or if you are using separate cfg per module, the ss.cfg file?



Sure, here you go.

Yep, it’s the same game.


I also just realized why my m3u files had absolute paths - the RocketLauncher module writes them that way for PSX (which works fine).

I don’t think I can get RocketLauncher to play nice with this core, if it crashes on load with m3u files with absolute paths. :frowning:


ok thanks. depending on the game, you can set how much black borders by adjusting horizontal overscan mask in core settings.


Do you know if there’s a way to make the core read m3u files with absolute paths, like the mednafen PSX core does?


im not sure who added m3u support, last time i was editing that core was these adjustments to viewport and stuff and disk swapping and m3u was still not working that time.



This is the only code that needs to change in the RetroArch.ahk module, change:

If (StringUtils.Contains(retroID, “LibRetro_PSX”) && romTable.MaxIndex() && mgValidExtension) { ; See if MultiGame table is populated

To this:

If (StringUtils.Contains(retroID, “LibRetro_PSX|Libretro_Sat”) && romTable.MaxIndex() && mgValidExtension) { ; See if MultiGame table is populated

However, unless the ability to read absolute paths is added to this core, it still won’t work. I know that it does in fact work, because I changed the resulting .m3u file to ‘read only’ so that the RetroArch module wouldn’t overwrite it - and changing the discs from Pause works perfectly. The module also auto-writes your m3u files - it just uses absolute paths. Which make the core crash.

I’m going to make an issue on github, maybe we can get this fixed.


@aorin1, retrowertz fixed it, so if you follow the instructions on my previous post, RocketLauncher will auto-create m3u files for you, and have the ability to swap discs.

All you need to do is update the Sega Saturn core. :slight_smile:

Continuing PSX game on CD2? (windows)

Hey Aorin, question for you since I know you are using HyperSpin and had that above example.

How are you going about setting up the XML?

I normally use Don’s hyperspin tools to generate an XML based on file extensions in my game folders. So let’s say for PSX, I’d have it scan the folder and create an xml entry for everything with a .chd file extension.

I can have it do .chd & .m3u but then I’d actually have all the same entries in the wheel, plus the m3u file’s entry; as it would be:

Myst 2 - Riven

Myst 2 - Riven (Disc 1)

Myst 2 - Riven (Disc 2)

Myst 2 - Riven (Disc 3)

Myst 2 - Riven (Disc 4)

Myst 2 - Riven (Disc 5)

(I know, I have a weird naming scheme)

Do you use another method to generate XMLs? Or are you hand-altering your existing ones? Just seems like a lot of games to alter specifically.


Hey @SkyHighGam3r, yeah I’m on Hyperspin. When it come to multi discs that can be used as single discs for PS1 and Saturn, and I hope for some other systems in the future, I use only one entry, in the Riven case the entry is:

Riven - The Sequel to Myst (USA)

If a system has lots of multi disc games, in the PS1 case, I use HyperspinChecker tool, I mainly use it to crop databases down to only available roms.

I need to point the rom folder in HyperHQ and set its extensions, configure the paths in HyperspinChecker, audit the system and then I can crop the database.

But first, I need to edit the main database and remove the (Disc 1) tag using notepad++ and replace all at once for nothing, only leaving alone the regional tag.

HyperspinChecker will find the games in your paths, and you can crop it pressing a simple button, once you have all the m3u files named accordingly to your way, in this case "Riven - The Sequel to Myst (USA).m3u, all other entries for the other discs will be removed.

Note that some multi disc games aren’t games that require the first discs to work, so Resident Evil 2, Gran Turismo 2, Street Fighter Collection and some others have their original “(Disc)” tags.

You’ll probably need to do lots of things by hand, but using notepad++ it will be faster than it seems.