MCPcopy Create free account
hub / github.com/BlitterStudio/amiberry / parsechd

Function parsechd

src/blkdev_cdimage.cpp:1571–1658  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1569
1570#ifdef WITH_CHD
1571static int parsechd (struct cdunit *cdu, struct zfile *zcue, const TCHAR *img, const TCHAR *curdir, const TCHAR *ocurdir)
1572{
1573 if (curdir)
1574 my_setcurrentdir(ocurdir, NULL);
1575
1576 struct cdrom_file *cdf;
1577 struct zfile *f = zfile_dup (zcue);
1578 if (!f)
1579 return 0;
1580 chd_file *cf = new chd_file();
1581 auto err = cf->open(f->name, false, NULL);
1582 if (err != std::error_condition()) {
1583 write_log (_T("CHD '%s' err=%d\n"), zfile_getname (zcue), err);
1584 zfile_fclose (f);
1585 return 0;
1586 }
1587 if (!(cdf = cdrom_open (cf))) {
1588 write_log (_T("Couldn't open CHD '%s' as CD\n"), zfile_getname (zcue));
1589 cf->close ();
1590 zfile_fclose (f);
1591 return 0;
1592 }
1593 cdu->chd_f = cf;
1594 cdu->chd_cdf = cdf;
1595
1596 const cdrom_toc *stoc = cdrom_get_toc (cdf);
1597 cdu->tracks = stoc->numtrks;
1598 uae_u32 hunkcnt = cf->hunk_count ();
1599 uae_u32 hunksize = cf->hunk_bytes ();
1600 uae_u32 cbytes;
1601 chd_codec_type compr;
1602
1603 for (int i = 0; i <cdu->tracks; i++) {
1604 int size;
1605 const cdrom_track_info *strack = &stoc->tracks[i];
1606 struct cdtoc *dtrack = &cdu->toc[i];
1607 dtrack->address = strack->logframeofs;
1608 dtrack->offset = strack->logframeofs;
1609 dtrack->adr = cdrom_get_adr_control (cdf, i) >> 4;
1610 dtrack->ctrl = cdrom_get_adr_control (cdf, i) & 15;
1611 switch (strack->trktype)
1612 {
1613 case CD_TRACK_MODE1:
1614 case CD_TRACK_MODE2_FORM1:
1615 size = 2048;
1616 break;
1617 case CD_TRACK_MODE1_RAW:
1618 case CD_TRACK_MODE2_RAW:
1619 case CD_TRACK_AUDIO:
1620 default:
1621 size = 2352;
1622 break;
1623 case CD_TRACK_MODE2:
1624 case CD_TRACK_MODE2_FORM_MIX:
1625 size = 2336;
1626 break;
1627 case CD_TRACK_MODE2_FORM2:
1628 size = 2324;

Callers 1

parse_imageFunction · 0.85

Calls 14

my_setcurrentdirFunction · 0.85
zfile_dupFunction · 0.85
zfile_getnameFunction · 0.85
zfile_fcloseFunction · 0.85
cdrom_openFunction · 0.85
cdrom_get_tocFunction · 0.85
cdrom_get_adr_controlFunction · 0.85
hunk_countMethod · 0.80
hunk_bytesMethod · 0.80
logical_bytesMethod · 0.80
hunk_infoMethod · 0.80
write_logFunction · 0.70

Tested by

no test coverage detected