Mounting a mixed-mode BIN/CUE in Qemu?

About QEMU, a PPC Mac emulator for Windows, macOS and Linux that can run Mac OS 9.0 up to Mac OS X 10.5

Moderators: Cat_7, Ronald P. Regensburg

Post Reply
User avatar
celebi23
Tinkerer
Posts: 93
Joined: Wed Jun 18, 2008 5:53 am

Mounting a mixed-mode BIN/CUE in Qemu?

Post by celebi23 »

I was wondering if it was possible to mount a mixed-mode BIN/CUE in Qemu? I'm trying to get the original WarCraft up and running (as the Mac version had cd audio) and I can't figure out how to mount it. Is there a special option for the .command file?

Here's what I've tried:

Code: Select all

#!/bin/sh
mypath=`dirname "$0"`
cd "$mypath"
./qemu-system-ppc -L pc-bios -boot c -M mac99 -cpu G4 -m 768 -prom-env 'auto-boot?=true' -prom-env 'boot-args=-v' -hda rubicon.qcow2 -drive file=files.dmg,format=raw,media=disk -drive file=WAR1.BIN,format=raw,media=cdrom -drive file=WAR1.CUE,format=raw,media=cdrom -g 1024x768x32 -netdev user,id=network01 -device sungem,netdev=network01 -device VGA,edid=on
Both the bin & cue are unreadable by Mac OS 9. I can mount a converted iso file without issue but, the audio tracks are lost this way. Has anyone been able to accomplish this before?
User avatar
adespoton
Forum All-Star
Posts: 3107
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Mounting a mixed-mode BIN/CUE in Qemu?

Post by adespoton »

With the bin/cue format, the cue file is just a text file that tells where in the binary stream to find the different tracks of data, and how they're represented. In most cases, they can just be read as raw in qemu, but mixed mode images may be trickier. It's probably worth playing around with qemu-img to see what it can recognize and convert from the bin/cue, and once you figure it out in there, use similar parameters in qemu-ppc to just mount the file -- or, convert to another format and mount that.

I've always found mixed mode to be hit and miss; emulators that "know" bin/cue natively can just read the cuefile and tend to do OK, but I'm not sure qemu has cue support built-in.
Elyus
Tinkerer
Posts: 86
Joined: Wed Mar 21, 2012 12:35 am

Re: Mounting a mixed-mode BIN/CUE in Qemu?

Post by Elyus »

GOG recently re-released the DOS version of Warcraft 1 if you want a pre-packaged way to play. Of course, the Mac version is better with 640x480 graphics and CD audio, but it comes with the same difficulties as emulating any game from a mixed-mode CD — namely, the lack of a reliable way to mount both data and audio partitions correctly in the emulator.

I spent a few hours trying different ways to get the audio partition of Warcraft 1 to mount and play in-game; unfortunately, I haven't found a successful solution. I've jotted down a few notes, maybe they'll be a useful reference or spark some ideas.

---

First, from the host side: You can use a physical CD drive and mixed-mode disc to try passing through the CD into your emulator. Alternatively, Daemon Tools can correctly mount both data and audio partitions of .bin/.cue images as a virtual device (WinCDEmu may work on Windows too). Whether a physical or virtual device, I found BasiliskII and SheepShaver mount the mixed-mode CD correctly under a Windows host, but no audio plays. Under a Mac host, no audio played, and I received an error about the CD player not being connected properly. All my attempts to pass a mixed-mode CD into Qemu failed. Under Mac OS 9 and X, a prompt appears at startup saying the disc is unreadable.

Then I started investigating mounting .bin/.cue files in the guests. Daemon Tools didn't release a Mac version until 10.6, so no help there. The best option is Toast, but BasiliskII and SheepShaver are limited to Toast 5, the last pre-OS X release, which doesn't support .bin/.cue images. Qemu can use Toast 6 or 7 in OS X (I couldn't get 8 or later working for some reason). These versions do mount .bin/.cue images, but they do not support the audio partition. If you drag the .cue file onto Toast and save an .sd2f image, you can mount that as an audio CD and play the audio tracks. However, because the two images are separate, using .bin/.cue for the data and .sd2f for audio, no games will be able to locate their original disc and play audio.

---

At this point, I don't think there's a way to do it. None of the hosts can reliably passthrough mixed-mode CDs, either as virtual devices or direct .bin/.cue images, and no Mac OS guest prior 10.6 is able to correctly mount .bin/.cue images of mixed-mode CDs. The only time I've seen anyone have success with mixed-mode CDs under emulation was 24bit using SheepShaver with a Windows host.

As adespoton said, it will really come down to emulator support for this feature. Qemu just doesn't have the code for reading audio CDs, and the only discussion I found was from the dev mailing list in 2005. It's come a long way in that time, but unless I'm mistaken, audio CDs are still unsupported. BasiliskII and SheepShaver actually have quite a bit of (shared) code for reading audio CDs, but it is unfinished. On the plus side, Apple's CD driver calls are publicly available, so that's a good starting point for anyone wanting to extend current Mac emulators with better CD support.
User avatar
adespoton
Forum All-Star
Posts: 3107
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Mounting a mixed-mode BIN/CUE in Qemu?

Post by adespoton »

Is it possible to convert to .toast format with a later version of Toast and mount that internally? I seem to recall Toast format handled mixed mode CDs....
User avatar
Cat_7
Expert User
Posts: 5103
Joined: Fri Feb 13, 2004 8:59 am
Location: Sittard, The Netherlands

Re: Mounting a mixed-mode BIN/CUE in Qemu?

Post by Cat_7 »

Hi,

On Linux and OSX hosts, SheepShaver and Basilisk have some support for bin/cue if compiled with --with-bincue and --enable-sdl-audio.
I cannot, however, find how to set the pref in the prefs file.

Best,
Cat_7
User avatar
adespoton
Forum All-Star
Posts: 3107
Joined: Fri Nov 27, 2009 5:11 am
Location: Emaculation.com
Contact:

Re: Mounting a mixed-mode BIN/CUE in Qemu?

Post by adespoton »

Weird... I wonder why there's no support on other platforms? Seems like the sort of thing that would be useful everywhere. For that matter, bin/ogg/cue support would be nice too :)

Maybe the qemu image tool can convert bin/cue to another format like qcow and preserve the mixed-mode format?
Post Reply