summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author R. Belmont <rb6502@users.noreply.github.com>2010-09-14 01:55:10 +0000
committer R. Belmont <rb6502@users.noreply.github.com>2010-09-14 01:55:10 +0000
commitb13e7168e0efe02a5df121cd51a6e7fe66e72abb (patch)
tree5ee88d549c979f8bf8c517f7dc89ad3eb83adc84 /src
parenta6e9c13e599f2b5825a653b9aff5def04f9cc29e (diff)
CHDMAN: fix for extracting bin/cue audio tracks (no whatsnew)
Diffstat (limited to 'src')
-rw-r--r--src/tools/chdman.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/tools/chdman.c b/src/tools/chdman.c
index b4751b85d0a..dcd8625a053 100644
--- a/src/tools/chdman.c
+++ b/src/tools/chdman.c
@@ -1740,6 +1740,19 @@ static int do_extractcd(int argc, char *argv[], int param)
/* read the raw data */
cdrom_read_data(cdrom, cdrom_get_track_start(cdrom, track) + frame, sector, toc->tracks[track].trktype);
+ /* for CDRWin, audio tracks must be reversed */
+ if ((cuemode) && (toc->tracks[track].trktype == CD_TRACK_AUDIO))
+ {
+ int swapindex;
+
+ for (swapindex = 0; swapindex < toc->tracks[track].datasize; swapindex += 2)
+ {
+ UINT8 swaptemp = sector[swapindex];
+ sector[swapindex] = sector[swapindex+1];
+ sector[swapindex + 1] = swaptemp;
+ }
+ }
+
/* write it out */
core_fseek(outfile2, out2offs, SEEK_SET);
byteswritten = core_fwrite(outfile2, sector, toc->tracks[track].datasize);