Hi - I'm trying to make this disc image work in an emulator, with an end goal of allowing it to be mounted in an InfiniteMac VM.
In Sheepshaver and Basilisk, it mounts as "Audio CD 1", like an unknown or corrupted image. Trying to simply mount it in Mac OS X Tahoe results in an error. Mac OS 9 in UTM/QEMU immediately offers to format it. Roxio Toast on Mac OS 9 says it has an "unknown file system". For all intents and purposes, it looks like this is a corrupted iso image.
But... there's this second file alongside it, with the extension .isoInfo. This file's contents look like a plist, describing track/TOC data for a CD. So maybe there's a program that can mount an old Macintosh CD-ROM image using both an .iso and .isoInfo file together. Does this look familiar to anybody?
A few additional clues make me think this isn't an error, but is just an image format I'm unfamiliar with. One is that this same contributor to archive.org has a few other uploaded disc images that are in the form of an .iso/.isoInfo pair. Another is that DiscMaster has an entry for this image, which means they were able to mount and read it.
Thanks for any suggestions or help!
How to read/mount an .isoInfo file
Moderators: Cat_7, Ronald P. Regensburg
-
jcgraybill
- Space Cadet
- Posts: 6
- Joined: Mon Oct 02, 2023 1:57 pm
Re: How to read/mount an .isoInfo file
The disk appears to have block size 2352.
I suppose you could use a utility or script to convert this to 2048 byte blocks.
DingusPPC emulator can use CD images that have 2352 byte blocks. Try it at Infinite Mac. Select Beige G3, Mac OS 8.5.1, or similar.
DiskMaster has a "originals" button that lets you download all the files. They are in Mac Binary II format so you need to decode them all.
I suppose you could use a utility or script to convert this to 2048 byte blocks.
DingusPPC emulator can use CD images that have 2352 byte blocks. Try it at Infinite Mac. Select Beige G3, Mac OS 8.5.1, or similar.
DiskMaster has a "originals" button that lets you download all the files. They are in Mac Binary II format so you need to decode them all.
Re: How to read/mount an .isoInfo file
A command to convert 2352 byte blocks to 2048 byte blocks:
Code: Select all
theiso="Macworld 85 D1 - Alone in the Dark 3.iso"
time LOCAL=C perl -0777 -ne 'while (/(.{2352})/smg) { print substr($1,16,2048); }' "$theiso" > "${theiso/.iso/ trimmed.iso}"
-
jcgraybill
- Space Cadet
- Posts: 6
- Joined: Mon Oct 02, 2023 1:57 pm
Re: How to read/mount an .isoInfo file
This worked great: the converted image mounts as expected in Sheepshaver. That will help me with the other discs too - I'll convert those the same way before I use them. My goal is to make it possible for people to launch these straight into an InfiniteMac emulator, and this fully solves that problem. Thank you!
DingusPPC worked too - sort of. I could only get it to launch on InfiniteMac using Mac OS X 10.1, but that does mount the disc image, and I was able to use Disk Copy to create a new image and re-download that. Turns out to be a lot of steps, and I'm setting up DingusPPC locally to see if I can make that whole process quicker.
Out of curiosity - purely for my own education - how did you identify the block size of this iso?
Re: How to read/mount an .isoInfo file
Notice that the disk image size is a multiple of 2352:jcgraybill wrote: Tue Jan 13, 2026 3:19 am Out of curiosity - purely for my own education - how did you identify the block size of this iso?
Code: Select all
bc <<< "scale=10;$(stat -f '%z' "$theiso") / 2352"
Code: Select all
298611.0000000000
Code: Select all
dd if="$theiso" count=4 | xxd
Code: Select all
00000000: 00ff ffff ffff ffff ffff ff00 0002 0001 ................
At 0x010 is the 'ER' signature signifying an Apple Partition Map formatted disk. This is usually at offset 0 in a disk image that doesn't include the extra CD header and trailer stuff per block.
Code: Select all
00000010: 4552 0200 0006 b96e 0000 0000 0000 0000 ER.....n........
Code: Select all
00000210: 504d 0000 0000 0002 0000 0001 0000 0002 PM..............
00000220: 4d52 4b53 0000 0000 0000 0000 0000 0000 MRKS............
00000230: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000240: 4170 706c 655f 7061 7274 6974 696f 6e5f Apple_partition_
00000250: 6d61 7000 0000 0000 0000 0000 0000 0000 map.............
Code: Select all
00000410: 504d 0000 0000 0002 0000 0009 0006 b965 PM.............e
00000420: 544f 4153 5420 322e 3520 5061 7274 6974 TOAST 2.5 Partit
00000430: 696f 6e00 0000 0000 0000 0000 0000 0000 ion.............
00000440: 4170 706c 655f 4846 5300 0000 0000 0000 Apple_HFS.......
0x810 to 0x92F is a 288 byte CD block trailer which begins with 32 bits of something.
Code: Select all
00000810: 1570 6377 0000 0000 0000 0000 76b5 00fa .pcw........v...
00000820: 8ded f72c 0015 ffe7 9b59 749a e21f 48f0 ...,.....Yt...H.
00000830: 1ff0 8584 7a6b b86b b8a9 2000 0000 0000 ....zk.k.. .....
00000840: 0000 0000 0000 0000 7475 752f 9232 d232 ........tuu/.2.2
00000850: 415c 136d 8a3c 333c 3385 475c 1c6d 1300 A\.m.<3<3.G\.m..
00000860: 0000 0000 0000 3f90 a599 0000 0011 9d7b ......?........{
00000870: 0000 26eb 00f9 c8ac f527 0015 ffed cf16 ..&......'......
00000880: 35cb fb6d 318d 2ad0 d5e5 081f d11f d1c6 5..m1.*.........
00000890: 4e00 0000 0000 0000 0000 0000 0000 3505 N.............5.
000008a0: 0543 b61d ea18 7703 630c f848 5a48 5aea .C....w.c..HZHZ.
000008b0: 2903 710c 6300 0000 0000 0000 2ae0 c6ee ).q.c.......*...
000008c0: 0000 0017 7453 0000 4c59 e9c8 6196 6ffe ....tS..LY..a.o.
000008d0: 4a89 369d 4418 060d 5180 256d 09b8 b07a J.6.D...Q.%m...z
000008e0: a3a9 9cc1 a0a6 680c 5561 76b9 c97c fa5b ......h.Uav..|.[
000008f0: 68f8 eeaf 8c4e 44ad 3e2e cf70 2b64 14c5 h....ND.>..p+d..
00000900: 4cef 01a3 6cdd 07bc 2545 cf06 10f6 981f L...l...%E......
00000910: 8b53 bab5 eb34 a071 250c 7a40 c783 ea4e .S...4.q%.z@...N
00000920: 1883 fcfa 8d86 c92e 74bb f9e8 0b5b 55dd ........t....[U.
Here's a command to view the first ten 16 byte headers.
Code: Select all
dd if="$theiso" bs=2352 count=10 status=none | xxd -p -c 2352 | perl -pe 's/^(.{32})((?:.{128}){32})(.*)/$1/'
Code: Select all
00ffffffffffffffffffff0000020001
00ffffffffffffffffffff0000020101
00ffffffffffffffffffff0000020201
00ffffffffffffffffffff0000020301
00ffffffffffffffffffff0000020401
00ffffffffffffffffffff0000020501
00ffffffffffffffffffff0000020601
00ffffffffffffffffffff0000020701
00ffffffffffffffffffff0000020801
00ffffffffffffffffffff0000020901
The kind of data you can put in the 2352bytes of a CD block depends on the format:
Code: Select all
* Sector Areas, Sector Types
*
* Bytes Per Type CDDA Mode1 Mode2 Mode2Form1 Mode2Form2
* Per Area +----------+----------+----------+----------+----------+
* Sync | 0 | 12 | 12 | 12 | 12 |
* Header | 0 | 4 | 4 | 4 | 4 |
* SubHeader | 0 | 0 | 0 | 8 | 8 |
* User | 2352 | 2048 | 2336 | 2048 | 2328 |
* Auxiliary | 0 | 288 | 0 | 280 | 0 |
* ErrorFlags | 294 | 294 | 294 | 294 | 294 |
* SubChannel | 96 | 96 | 96 | 96 | 96 |
* +----------+----------+----------+----------+----------+
In Mac OS X, you can create the 2352 byte block image from a CD by imaging the "CD_partition_scheme" device.
Image the "Apple_partition_scheme" device if you only want the User data - this should result in a disk image that is mountable by normal disk image mounting tools.
-
jcgraybill
- Space Cadet
- Posts: 6
- Joined: Mon Oct 02, 2023 1:57 pm
Re: How to read/mount an .isoInfo file
Wow, that was an explanation and a half. Thank you, @joevt. A handful of tools I don't use often, but I've been following along and inspecting some other images myself, and it's all totally clear.