-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Track-based CD-ROM access non-functional #344
Comments
So, okay, yes, this doesn't support physical discs, making a CD player app significantly less useful, but this program does work with a directory of MP3s1, like the The reasons we dropped physical drive support:
The thinking is that faking audio discs with a directory of MP3s fixes up a generation of games that have CD audio tracks--like Quake 1, etc--for modern systems that might be able to play the game but can't even insert a physical disc. Obviously all of this does not help tcd at all though. If we were to deal better with this, my thinking would be:
Right now sdl12-compat's entire CD subsystem runs on the expectation that there's either zero drives, or one fake drive, and all of that would need to get more generalized if we're going to drop platform-specific code in here to work with actual physical hardware. I'm putting this in the next milestone, but I'm extremely likely to bump it back out, as this is low-priority for me. If someone else wants to take a run at it before I get around to it, I'm happy to help, though. Footnotes
|
Rest assured we emulate it already ;-)
|
FWIW, I have a super-hacky half-finished proof-of-concept to implement CD-audio using libcdio_paranoia — this does the digital audio extraction (so works with any modern CD/DVD/Blu-Ray drive), and then mixes it in the same way the mp3 implementation works. I think, if I clean it up and update it to (a) not hang the audio thread while the drive is spinning up, and (b) make it dlopen() the cdio/cdio_paranoia libraries, then this could be a pretty good solution. (If we were building on top of SDL3's new audio API, this'd actually be really quite easy. As-is it'd be uglier, but not too bad if done carefully.) Feel free to assign this to me if that sounds like a good plan, and I'll try to get something done over the holidays. |
Sure! Edit: Oops, @icculus pointed out this has an incompatible license, never mind. |
cdemu has audio output on its own, so I'd already be happy if SDL just sent the necessary ioctls :-) … (meaning |
GPL3: https://github.com/libcdio/libcdio-paranoia dlopen()'ing a GPL'd library still makes your program a derivative work, according to the FSF. |
I do think reading the raw disc data and sending it through the audio card is the right thing to do, though, but we can't use that library afaict. |
Rats! Nice catch — the old Xiph.org version was LGPL. It turns out the ioctl interface is quite easy to use on Linux, and I successfully listened to a CD without any of cdparanoia's fancy overlapping-protection being necessary, and there was at worst a very occasional, very quiet 'pop' noise, so I think this is still definitely a go. (Though I'm not going to commit to supporting all of the other platforms libcdio supported.) |
Version: sdl12_compat-1.2.68, openSUSE Tumbleweed 20241129 amd64, tcd 2.2.0
Observed
Starting tcd with sdl12-compat-1.2.68 leads to program termination:
Expected to see instead
With SDL-1.2.15, tcd works fine:
The text was updated successfully, but these errors were encountered: