Disc Dumping Project

I just saw the disc dumping functionality in RetroArch. Decided to try to play a game from the disk and found that it ran incredibly slow. The game was Gran Turismo 1 and the intro ran slower than it should have. Dumping the disc to an image worked, though it too took quite a while to read.

What kind of read routines are being used? Is there a way of tinkering with some settings here?

Also, how are the filenames derived? My Gran Turismo disc is named “cdrom-200608-193306”, which doesn’t ring any bells in my head.

I’m very intrigued and curious as to how this is working now and where it’s going to go. Will there be a database of cds that get matched to game names? (Edit: Scanning the downloads folder added it to a PlayStation playlist with the right name, so that answers that question.)

Any more info you can give me on this will be appreciated.

Thanks!

There’s not a whole lot you can do in the way of end-user tinkering, but if you know about low-level CD-reading routines, it could use some more work. The guy who was working on it isn’t around anymore, so it’s not likely to get any better unless/until someone else decides to adopt it.

That’s a shame. There’s a lot of potential here. I’m not familiar with the RA source, so if there’s a set of files you can point me to where those routines live I can see if I can make any sense of them. This is a little outside my area of expertise, but I’m sure I can at least undderstand what’s going on.

If not, well, we’ll see.

I believe most of it happens in these files:

https://github.com/libretro/libretro-common/blob/master/include/cdrom/cdrom.h
https://github.com/libretro/libretro-common/blob/master/cdrom/cdrom.c
https://github.com/libretro/libretro-common/blob/master/vfs/vfs_implementation_cdrom.c

Might be worth summarizing the general concept : RA is turning the cdrom into a cue/bin pair on a virtual file system which can then be read by the core. I think there are currently 2 main issues :

2 Likes

Having just looked over the source, it’s a little out of my league. To be able to contribute code I’d need a lot more C/CPP experience, and I don’t have that, sadly. :frowning:

As far as the PCE CD behavior, though, I see the problem there. It was mentioned on the Girhub comment. RA is putting a 2s pregap on every track with the exception of the 2nd. That one it’s writing gapless. According to the correct cue, Track 2 should have a 3s pregap and every other one should be gapless.

Now I’m really bummed that I am out of my depth. :cry: