Decoding CD-i audio files

Anything relating to CD-i can be discussed in this forum. From the multiple hardware iterations of the system to the sofware including games, reference, music and Video CDs. Maybe you hold an interest in Philips Media and the many development houses set up to cater for CD-i if so then this is the forum.
User avatar
cdifan
CD-i Emulator Author
Posts: 923
Joined: Fri Jun 24, 2005 6:19 am
Location: The Netherlands
Contact:

Re: Decoding CD-i audio files

Post by cdifan » Sat Aug 26, 2017 10:23 pm

cdifan wrote:
Sat Aug 26, 2017 9:18 pm
Next I will be taking a look at Dimo's Quest...
Now that was really easy...

Simply extracting all the .blk files, hexdumping them and using a few search patterns in vim quickly found all the sound effects in block 2 of the big.blk file in the RTF subdirectory of Dimo's Quest, using the exact same data format (the latter is not really surprising, of course, since it's from the same CD-i developer).

So you can use the apprsfx tool with that same file, but change the lines

Code: Select all

	// Sound data is in block 4.
	long soundpos = blockpos(blocksize, 4);
to

Code: Select all

	// Sound data is in block 2.
	long soundpos = blockpos(blocksize, 2);
The naming of the output files is not ideal in this case but it gets the data out, so who cares for now...

Before I release a new tool, I will take a look at the other Vision Factory discs!

User avatar
Shikotei
Burn:Cycle Activated
Posts: 42
Joined: Mon Mar 01, 2010 5:01 pm
Location: Netherlands
Contact:

Re: Decoding CD-i audio files

Post by Shikotei » Mon Aug 28, 2017 3:40 pm

cdifan wrote:
Sat Aug 26, 2017 1:40 pm
For Vision Factory games, use the CDDA audio tracks for high quality music (44.1 kHz PCM stereo).
Those CD-DA files were extracted years 'n years ago (early '00s) and have been extensively listened to (still are).
cdifan wrote:
Sat Aug 26, 2017 1:40 pm
Yes, that sounds comparable (music_1_5_Se). Looks like I need to stop clearing those samples at each sector.
Strange, as I seem to remember having tried this in the past... Anyway, thanks very much!
Glad to have been able to help!
cdifan wrote:
Sat Aug 26, 2017 9:18 pm
It is based on reverse-engineering the code that mixes the sound effects into the music read from disc.
And what a beast this is! I've recoded it to PHP (for understanding and auto-extract purposes) and I must say I would never have thought they'd store the data like this.
They basically made a giant audio sector, with a single encoding type (Level C stereo).
Is the shifting and masking truly necessary? It seems to ensure that all audio is in one channel, rather than use both Left and Right.

-- edit --
Disabling the shifting and masking does make the audio stereo (both channels used), but they do not have the same audio. Seems that it'll decode into multiple sound effects split up into multiple files, using two channels and generating utter chaos in sound. Yes it's needed, but I have no idea how anyone could come up with this method.
The only thing I can think of is that they've somehow removed all Left-channel data (including SP) and added them using code (like in the tool by cdifan).
-- end edit --

[off-topic:Images]
cdifan wrote:
Sat Aug 26, 2017 9:18 pm
For The Apprentice level data files, block 0 is the level code, block 2 and 3 are compiled sprites and block 4 is the sound effect data.
As of right now I do not know what's in block 1, it is not the level map (these are in separate mapN_M.dat files).
Sometimes it helps to look at things in a different way:
Image
Block 1 contains CLUT image data. There's two color tables between 0x87B and 0xB7A of 384 bytes each. I could be off by 3 bytes too far.. I'm never certain with eyeballing these things.
Anyway the image is the status bar at the top of the level screen. This particular image is 320bytes wide (320px)
This method of looking at data is how you can find many (if not all) CLUT stored data. Yes it is labor intensive, but it'll do the trick.

As a little bonus:
The 'mapN_M.dat' files are built up as follows:
block 0: 15200 bytes
- wall & background tile numbers: 2 bytes per tile, 6 tiles per line, 200 lines
- level tiles tile numbers: 2 bytes per tile, 16 tiles per line, 200 lines
- interactibles (items, platforms paths, enemy paths): 2 bytes per tile, 16 tiles per line, 200 lines
block 1: 96258 bytes
- CLUT image data: overworld map - 1 byte per pixel, 384 pixel per line, 220 lines
- CLUT image data: Stage 1 .. Stage 3: 1 bytes per pixel, 92 pixels per line, 13 lines
- CLUT image data: <tower name> (Medieval Tower, The Well, etc) - various lengths, 13 lines
- Compiled sprites: flag & monster(I think.. this is all from my memory)
block 2: 768 bytes
- CLUT palette data: from 0x1C800 to 0x1CAFF (two tables, 384 bytes each)

The tiles are stored as compiled sprites and the number is the order in which they are stored (walls & background have a separate numbering from level-tiles though). Storage is in 'levelN.dat'.
[/off-topic:Images]

User avatar
cdifan
CD-i Emulator Author
Posts: 923
Joined: Fri Jun 24, 2005 6:19 am
Location: The Netherlands
Contact:

Re: Decoding CD-i audio files

Post by cdifan » Mon Aug 28, 2017 7:49 pm

Shikotei wrote:
Mon Aug 28, 2017 3:40 pm
Those CD-DA files were extracted years 'n years ago (early '00s) and have been extensively listened to (still are).
Same here, my mp3 files for The Apprentice are dated September 2001 :) They are still on my phone, I listened to them all just last week (I actually have all the Vision Factory audio tracks on my phone, but also Burn:Cycle and The 7th Guest).
Shikotei wrote:
Mon Aug 28, 2017 3:40 pm
Disabling the shifting and masking does make the audio stereo (both channels used), but they do not have the same audio. Seems that it'll decode into multiple sound effects split up into multiple files, using two channels and generating utter chaos in sound. Yes it's needed, but I have no idea how anyone could come up with this method.
It's basically just concatenating a lot of mono sound effects into two mono audio fragments of comparable length (a little exercise in binpacking) and then putting one of them in the left channel and the other in the right channel of a stereo audio fragment.
Shikotei wrote:
Mon Aug 28, 2017 3:40 pm
The only thing I can think of is that they've somehow removed all Left-channel data (including SP) and added them using code (like in the tool by cdifan).
That's basically exactly what's happening, yes. Here's the assembly code for mixing a right channel sound effect into the music:

Code: Select all

mixright:
		rept		2
		move.l	(a0)+,d0							get sfx params
		and.l		#$00FF00FF,d0
		add.l		(a1),d0							add to music params
		move.l	d0,(a1)+						
		move.l	d0,(a1)+
		endr

		rept		28
		move.l	(a0)+,d0							get sfx data
		and.l		#$F0F0F0F0,d0
		add.l		d0,(a1)+							add to music data
		endr
(The actual code is a bit more optimized, but this gets the gist across and nicely matches the C code). What's hard about this technique of sound effect mixing on CD-i is not so much the audio data manipulation, but the buffer management and timing of the various system calls to ensure that playback remains smooth in the face of starting and ending music fragments...
Shikotei wrote:
Mon Aug 28, 2017 3:40 pm
[off-topic:Images]
... lots of interesting facts about The Apprentice data files ...
[/off-topic:Images]
That's quite an interesting bit of information; have you perhaps given any thought to decoding the level map into a giant image?

User avatar
Shikotei
Burn:Cycle Activated
Posts: 42
Joined: Mon Mar 01, 2010 5:01 pm
Location: Netherlands
Contact:

Re: Decoding CD-i audio files

Post by Shikotei » Tue Aug 29, 2017 6:51 pm

cdifan wrote:
Mon Aug 28, 2017 7:49 pm
Shikotei wrote:
Mon Aug 28, 2017 3:40 pm
[off-topic:Images]
... lots of interesting facts about The Apprentice data files ...
[/off-topic:Images]
That's quite an interesting bit of information; have you perhaps given any thought to decoding the level map into a giant image?
I have. In fact, I've been decoding a lot of the data of The Apprentice.
My goal is to completely re-make The Apprentice (as a gamer, coder, learning experience, keeps-me-busy-project).

These were made in May 2016.
The following URLs are no longer valid, instead go here!
Tower 1 - Stage: 1 2 3 bonus
Tower 2 - Stage: 1 2 3 bonus
Tower 3 - Stage: 1 2 3 bonus
Tower 4 - Stage: 1 2 3 bonus
Tower 5 - Stage: 1 2 3 bonus
Tower 6 - Stage: 1 2 3
cdifan wrote:
Sat Aug 26, 2017 9:18 pm
Next I will be taking a look at Dimo's Quest...
How's this? The maps are built up using (roughly) the same technique as for The Apprentice.
Never before have I found this kind of Easter Eggs!

The following URLs are no longer valid, instead go here!
Level 1..10: 1 2 3 4 5 6 7 8 9 10
Level 11..20: 11 12 13 14 15 16 17 18 19 20
Level 21..30: 21 22 23 24 25 26 27 28 29 30
Level 31..40: 31 32 33 34 35 36 37 38 39 40
Level 41..50: 41 42 43 44 45 46 47 48 49 50
Level 51: 51

-- edit --
Take a look at Dimo's Quest level 28, at the right side of the maze. There's a hole in it! You can actually exit this maze, but nothing is there though.. I never noticed this ingame because I always took the top left exit (that one's visible when eating the candy).
Also, in the High-Tech Tower (Tower 3) the secret tube-paths are highlighted. For those who couldn't find every last one of them. I know I missed one..

-- edit 04/09/'17 --
Relocated the maps images (more structured). Updated the links to reflect changes.

-- edit 30/12/'19 --
Added new links to reflect site revamp.
Last edited by Shikotei on Mon Dec 30, 2019 12:39 pm, edited 4 times in total.

User avatar
cdifan
CD-i Emulator Author
Posts: 923
Joined: Fri Jun 24, 2005 6:19 am
Location: The Netherlands
Contact:

Re: Decoding CD-i audio files

Post by cdifan » Tue Aug 29, 2017 9:13 pm

Shikotei wrote:
Tue Aug 29, 2017 6:51 pm
... level map images for The Apprentice and Dimo's Quest ...
I've had plans to do this for years and years, but just never got around to it...
Very nice. Thank you! Thank you!

One little detail I noticed: in the Dimo's Quest maps, you still have little frog Dimo: Image
I take it this is actually a tile in the maps? The actual Dimo sprite in the final game is completely different.

The original Amiga game had the frog Dimo, but Philips didn't like the character so it morphed.
First it became "pumpkin" Dimo, with a nice Halloween backstory.
Here the candies were supposed to be Dimo's friends who had been bespelled by a "wicked wizard".
Dimo had to retrieve them all and there were between-worlds animations where they popped back into kids.

Image
YouTube video: CD-i Emulator running Dimo's Quest v1.03 "Pumpkin Dimo" intro

Then the character morphed again to "cool" Dimo who just loves candy, which is what ultimately got pressed.
Everyone I know that has seen the halloween version liked it much better...

PS. Now you know where my avatar image came from...

User avatar
Shikotei
Burn:Cycle Activated
Posts: 42
Joined: Mon Mar 01, 2010 5:01 pm
Location: Netherlands
Contact:

Re: Decoding CD-i audio files

Post by Shikotei » Wed Aug 30, 2017 9:36 am

cdifan wrote:
Tue Aug 29, 2017 9:13 pm
One little detail I noticed: in the Dimo's Quest maps, you still have little frog Dimo: Image
I take it this is actually a tile in the maps? The actual Dimo sprite in the final game is completely different.
The gfxsetN.blk (n=1..6) contains a CLUT stored image (320px x 192px) that has the tiles (and a compiled sprites block that has the monsters). Froggy Dimo is in there.
They did rework the sprite into a (what I call) red crocodile: Image

big.blk has a compiled sprite block that has (in order): red blob, yellow blob, green blob, hike train, bite train, vacuum, bullet, ice cube, 'poof', Dimo (drown, burn, fall, stars, walk, bored[grabbing glasses, jumping, blinking, waving arms, scratching head, glasses-shiny, arms crossed, this:Image, yawning])
That semi-last one.. I've never seen that one being used in-game. And I've sunk a LOT of time in it.

The levN.rtf (n=01..51) files contain the level data (numbered tiles) (2 bytes per tile, 44 tiles horizontal, 72 tiles vertical). The levels are stored rotated (xShow=yStored & yShow=xStored).
Other than that, there's a bit of data about the switches and the monsters.. the exact format I don't know. It's 100 bytes per 'thing' and has got to have monster[tileNr, xPos, yPos, directionType (Horizontal, Vertical, Lefty, Righty), initial direction].

There is one question I can't answer though.. what are the cheat codes of Dimo's Quest? I know they exist. The image suggests something needs to be done at the submenu (pause menu).
I don't suppose you know anything?
cdifan wrote:
Tue Aug 29, 2017 9:13 pm
... development of Dimo's Quest info ...
Wow.. I knew about Dimo being a remake, but this kind of info is awesome!
It certainly makes Dimo's story (the why) a lot less selfish. From "Do you like candy? Well I'm gonna take you on a candy quest and I know the perfect place. It's pretty dangerous out there, so come on and help me if you dare!" If I recall correctly, he says that during the start of the game. to something like "My friends have all been turned into candy and I want to save them from this very wicked old man! Come on and help me if you can.".
Do you have any graphics on the actual gameplay? Where did you get this stuff from anyway?

====================
On a different note (back to audio), I've used my ADPCM decoder on several files and games, and I've come across something unusual..
Micro Machines has a bunch of audio files (AUDIO/INGAME1.GRN for example) and they are in the ADPCM format (regular audio sectors).
Reading the data yields an undocumented combination of SampleFrequency and BitsPerSample subheader coding data.
The ones that are documented are:
8 bits, 37.8kHz -> Level A
4 bits, 37.8kHz -> Level B
4 bits, 18.9kHz -> Level C

The combination I find in Micro Machines:
8 bits, 18.9kHz ... -> Level A-?

The files can be decoded by treating them as Level A and setting the WAV header samplerate once at 37.8kHz and once at 18.9kHz, then pick out the 'correct' file. INGAME3.GRN and INGAME4.GRN are Level C though.
I never knew that the title track was over 10 minutes long though!
The CD-i version of game may not be the best of the MicroMachines versions out there (this one is very slow), but the music is top-notch. Especially because other consoles of that time (and even the DOS version) used synthesizers to create sound, while the CD-i had access to digitized audio.

User avatar
cdifan
CD-i Emulator Author
Posts: 923
Joined: Fri Jun 24, 2005 6:19 am
Location: The Netherlands
Contact:

Re: Decoding CD-i audio files

Post by cdifan » Wed Aug 30, 2017 10:23 pm

Shikotei wrote:
Wed Aug 30, 2017 9:36 am
Froggy Dimo is in there.
They did rework the sprite into a (what I call) red crocodile: Image
Do you know if this was actually used in the game? There's a different "red crocodile" monster in the gfxset (7 positions to the right of Dimo).
Shikotei wrote:
Wed Aug 30, 2017 9:36 am
Image
I've never seen that one being used in-game. And I've sunk a LOT of time in it.
It was almost certainly Luke's reaction to having to do *another* Dimo sprite redesign (he did at least two on the "baseball" version alone).
Could be that it is only shown after some cheat code has been activated...
Shikotei wrote:
Wed Aug 30, 2017 9:36 am
There is one question I can't answer though.. what are the cheat codes of Dimo's Quest?
The image suggests something needs to be done at the submenu (pause menu).
I don't suppose you know anything?
Unfortunately, no. It probably would require code disassembly to find this...

On The Black Moon Project at Information Page: Dimo's Quest it states:
* since 1.06
...
cheat mode removed
So it could be that the cheat mode is gone in the pressed version.
Shikotei wrote:
Wed Aug 30, 2017 9:36 am
Wow.. I knew about Dimo being a remake, but this kind of info is awesome!
Do you have any graphics on the actual gameplay? Where did you get this stuff from anyway?
I have "inherited" various development test discs of Dimo's Quest, at least v0.95, v0.96, v1.01, v1.02, v1.03 and even some earlier ones.
The final pressed version is v1.07. The rest of the information comes from talking with the developers.
Arjen Wagenaar did most of the coding, Luke Verhulst the graphic "redesign" (the original graphics where bought with the level maps).
Shikotei wrote:
Wed Aug 30, 2017 9:36 am
The combination I find in Micro Machines:
8 bits, 18.9kHz ... -> Level A-?
Would be interesting to test if this actually plays on CD-i hardware, I can see no fundamental reason it shouldn't.
If not, then it must be "decoded" in code to something that does play...
Are the sectors properly spaced? What filter bytes are used?
I don't have the disc image handy here (actual disc is somewhere in the attic, I believe).

User avatar
Shikotei
Burn:Cycle Activated
Posts: 42
Joined: Mon Mar 01, 2010 5:01 pm
Location: Netherlands
Contact:

Re: Decoding CD-i audio files

Post by Shikotei » Thu Aug 31, 2017 1:41 pm

cdifan wrote:
Wed Aug 30, 2017 10:23 pm
Shikotei wrote:
Wed Aug 30, 2017 9:36 am
Froggy Dimo is in there.
They did rework the sprite into a (what I call) red crocodile: Image
Do you know if this was actually used in the game? There's a different "red crocodile" monster in the gfxset (7 positions to the right of Dimo).
They are the same sprite (the CLUT has a placeholder, the compiled sprites are used ingame). I just find them (froggy and croc) very similar. The 'in there' was meant to for the CLUT image. I haven't found the full motion sprites for the frog, just the one in the tiles.
Also, the 'monster & switch' data block probably contains what tile should be under the monster tiles (and Dimo's tile).
Because the red carpet (I think it's a carpet) with the crowns inlay in level 51 still goes on underneath the monster tiles.
So I think they're just placeholders (or position indicators) for monsters and the true tile is placed there with that block of data (switches & monsters).
It would explain why the froggy Dimo is still present as a tile: no need to replace that guy.
cdifan wrote:
Wed Aug 30, 2017 10:23 pm
.. no cheat mode ..
Aww. Dimo is one of the best games out there, but with the randomly generated passwords it's only really playable with a fully working (no dead TimeKeeper) console.
Leaving the CD-i on for days is not something I'd advise.
cdifan wrote:
Wed Aug 30, 2017 10:23 pm
Shikotei wrote:
Wed Aug 30, 2017 9:36 am
The combination I find in Micro Machines:
8 bits, 18.9kHz ... -> Level A-?
Would be interesting to test if this actually plays on CD-i hardware, I can see no fundamental reason it shouldn't.
If not, then it must be "decoded" in code to something that does play...
Are the sectors properly spaced? What filter bytes are used?
I don't have the disc image handy here (actual disc is somewhere in the attic, I believe).
I can't send you the image file, nor point to a website that may (or may not) have it, so I'll just put the relevant data here.

Ingame1 & Ingame2 have 1 sector of audio data every 2 sectors.
Ingame3 & Ingame4 have 1 sector of audio data every 4 sectors.
The sectors are all 2352 bytes long and each have headers (and generally OK formatting)

Headers and subheaders of each file (first sector only) I assume the interesting data (subheader) is repeated

Code: Select all

   |              sync               | | header  | |subheader|  F  C  S  D
1: 00 FF FF FF FF FF FF FF FF FF FF 00 17 45 62 02 01 00 64 11 01 00 64 11
2: 00 FF FF FF FF FF FF FF FF FF FF 00 19 16 13 02 01 00 64 11 01 00 64 11
3: 00 FF FF FF FF FF FF FF FF FF FF 00 21 58 07 02 01 00 64 01 01 00 64 01
4: 00 FF FF FF FF FF FF FF FF FF FF 00 23 31 40 02 01 00 64 01 01 00 64 01
F: filenumber
C: channel
S: submode -> 0110 0100 -> xx1x 010x: Form 2 Audio (IV.3.2.3F3)
D: codingdata
IG12: 0001 0001 -> [xx01 xxxx = 8 bits/sample] [xxxx 00xx = 37.8kHz] [xxxx xx01 = stereo] -> Level A
IG34: 0000 0001 -> [xx00 xxxx = 4 bits/sample] [xxxx 00xx = 37.8kHz] [xxxx xx01 = stereo] -> Level B

Huh?

Image

Dangit! Something is off in my code ._.'
*checks*
Yup, I had the wrong sample frequency (switched 1 with 0).. no wonder I had to fiddle with the WAV headers!
So I had Level B and Level C switched (hence the sample frequency mismatch) and this unknown audio encoding should have been Level A... Image
Re-decoding them with the adjustment worked just fine.

On a side note:
I find myself using IsoBuster's "Extract RAW" more and more often for data files. The 'normal' extraction process does not output the whole file.. usually there's half a sector worth of data lost at the end.
Not that much of a loss when it ends with NULLs (0x00), but when it still has data I want that data!
Even made my own 'extract data from sector' function. Still, it's annoying.

User avatar
cdifan
CD-i Emulator Author
Posts: 923
Joined: Fri Jun 24, 2005 6:19 am
Location: The Netherlands
Contact:

Re: Decoding CD-i audio files

Post by cdifan » Fri Sep 01, 2017 9:02 pm

Shikotei wrote:
Thu Aug 31, 2017 1:41 pm
cdifan wrote:
Wed Aug 30, 2017 10:23 pm
.. no cheat mode ..
Aww. Dimo is one of the best games out there, but with the randomly generated passwords it's only really playable with a fully working (no dead TimeKeeper) console.
Leaving the CD-i on for days is not something I'd advise.
I wrote a tool to recover the full password set, see Dimo's Quest password recovery.
Shikotei wrote:
Thu Aug 31, 2017 1:41 pm
I find myself using IsoBuster's "Extract RAW" more and more often for data files. The 'normal' extraction process does not output the whole file.. usually there's half a sector worth of data lost at the end.
Not that much of a loss when it ends with NULLs (0x00), but when it still has data I want that data!
This is weird. I don't know exactly how the IsoBuster data extraction process works, but it seems to handle a file with only data sectors (either mode 1 or mode 2 form 1) correctly. Are you sure the problem is with IsoBuster and not your disc image?

I recently made a number of disc images from actual discs and found that there was always a fixed amount of "garbage" before the first sector,
and a corresponding amount of "garbage" after the last sector. The total amount of "garbage" was exactly equal to a full sector (2352 bytes), and in fact it was not garbage but part of the sector just before the track, with the last sector being cut off. This happened only on that particular PC and I presume it is an artifact of the particular CD drive or driver used.

Strangely enough IsoBuster still recognized the image, but I had to "Extract Track" from that to get an image usable with CD-i Emulator (which does expect sectors to start at nice 2352-byte sector boundaries; depending on the presence of subcode / header / EDC it can also use 2448, 2340, 2336, 2332, 2056 or 2048 byte sectors). I could easily imagine an issue with the IsoBuster data extraction algorithm given such an image...
Shikotei wrote:
Thu Aug 31, 2017 1:41 pm
Even made my own 'extract data from sector' function. Still, it's annoying.
Did this help?

I have such a tool from way back ("rtftool"), but mostly use it on "real" real-time files (i.e. those containing multiple channels, triggers, or non-data sectors). It can also extract audio, video, filter by channel and/or coding and perform other basic "sector-level" manipulations.

Some day I'll tell the interesting story of extracting all of the assets from The 7th Guest, which was done for the 20th Anniversary Edition that is now available for Android (they used most audio and many still screens from the CD-i versions; I tried to get them to use the CD-i video as well but they didn't go for that, using the PC video instead).

User avatar
Shikotei
Burn:Cycle Activated
Posts: 42
Joined: Mon Mar 01, 2010 5:01 pm
Location: Netherlands
Contact:

Re: Decoding CD-i audio files

Post by Shikotei » Mon Sep 04, 2017 2:34 pm

cdifan wrote:
Fri Sep 01, 2017 9:02 pm
... IsoBuster & disc things ...
Strangely enough, it did help.
Perhaps IsoBuster doesn't properly recognize the end of a file. The contents that were extracted using IsoBusters own function are correct, just the last bytes are lost.
So it's not the CD image that is at fault.
Though.. it may have incorrect header data (ie the TOC) that misdirects IsoBuster. One particular disc image was made using CloneCD (which I hear is pretty good) and this had the same issues with IsoBuster.
Some are only a BIN and CUE, the CloneCD one has IMG, SUB, and CCD files (though I only load the big IMG file into IsoBuster).
Most of the images I use are from the web (no need to make my own if I can find it) and I think there's a high chance these will work fine with the CD-i Emulator.

In 99% of the time, there's no issue in missing data in the extracted files. I just really noticed when the last images in a file weren't decoded fully, or compiled sprites stopped halfway a simulation.
Many of files with issues had (what I called) 'junk' between the image/compiled sprite data. This 'junk' I now know is audio. So perhaps IsoBuster can't properly extract multi-form data/audio sectors in a single file?

User avatar
cdifan
CD-i Emulator Author
Posts: 923
Joined: Fri Jun 24, 2005 6:19 am
Location: The Netherlands
Contact:

Re: Decoding CD-i audio files

Post by cdifan » Mon Sep 04, 2017 4:49 pm

Shikotei wrote:
Mon Sep 04, 2017 2:34 pm
So it's not the CD image that is at fault.
Though.. it may have incorrect header data (ie the TOC) that misdirects IsoBuster.
I don't think IsoBuster pays any attention to the TOC when extracting files, if you're opening a bare "bin" file it won't even have one.
Shikotei wrote:
Mon Sep 04, 2017 2:34 pm
Many of files with issues had (what I called) 'junk' between the image/compiled sprite data. This 'junk' I now know is audio. So perhaps IsoBuster can't properly extract multi-form data/audio sectors in a single file?
I would expect the audio sectors to be extracted correctly "in the midst of" the data, but perhaps this messed up the file length calculations? The length specified in the directory assumes data sectors (2K per sector), if IsoBuster takes an audio or video sector to be 2304 or 2324 bytes, it would indeed end with a partial data sector...

The author has a forum account here; you could try reporting the bug to him. Do you have specific names of files that go wrong?
An additional check box "Extract only data sectors" or something could also be nice! :-)

Post Reply