aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore
diff options
context:
space:
mode:
authorretro-wertz2019-05-16 09:56:54 +0800
committerretro-wertz2019-05-19 11:40:50 +0800
commitb0ec2e6d0719603212373bcdaaedd5b7b5e43121 (patch)
treed274c1ddfd56a9e05138eacd73da147be3347185 /libpcsxcore
parent4e0deb4b36b49a45061098fc531556bb6cea3e9e (diff)
downloadpcsx_rearmed-b0ec2e6d0719603212373bcdaaedd5b7b5e43121.tar.gz
pcsx_rearmed-b0ec2e6d0719603212373bcdaaedd5b7b5e43121.tar.bz2
pcsx_rearmed-b0ec2e6d0719603212373bcdaaedd5b7b5e43121.zip
Allow building without CHD, disable CHD for 3DS
- all platforms compiles with CHD support. - compile with HAVE_CHD=0 for no chd support. - CHD fails building for 3DS, not sure its even fast enough for the device. I tried asking in discord channel but haven't got reply. Disabling it till someone familiar with 3ds can fix it. http://p.0bl.net/123458
Diffstat (limited to 'libpcsxcore')
-rw-r--r--libpcsxcore/cdriso.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libpcsxcore/cdriso.c b/libpcsxcore/cdriso.c
index 7007f55..975105e 100644
--- a/libpcsxcore/cdriso.c
+++ b/libpcsxcore/cdriso.c
@@ -27,7 +27,9 @@
#include <errno.h>
#include <zlib.h>
+#ifdef HAVE_CHD
#include <chd.h>
+#endif
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
@@ -94,6 +96,7 @@ static struct {
unsigned int sector_in_blk;
} *compr_img;
+#ifdef HAVE_CHD
static struct {
unsigned char (*buffer)[CD_FRAMESIZE_RAW + SUB_FRAMESIZE];
chd_file* chd;
@@ -102,6 +105,7 @@ static struct {
unsigned int current_hunk;
unsigned int sector_in_hunk;
} *chd_img;
+#endif
int (*cdimg_read_func)(FILE *f, unsigned int base, void *dest, int sector);
@@ -1039,6 +1043,7 @@ fail_io:
return -1;
}
+#ifdef HAVE_CHD
static int handlechd(const char *isofile) {
chd_img = calloc(1, sizeof(*chd_img));
if (chd_img == NULL)
@@ -1110,6 +1115,7 @@ fail_io:
}
return -1;
}
+#endif
// this function tries to get the .sub file of the given .img
static int opensubfile(const char *isoname) {
@@ -1272,6 +1278,7 @@ finish:
return CD_FRAMESIZE_RAW;
}
+#ifdef HAVE_CHD
static int cdread_chd(FILE *f, unsigned int base, void *dest, int sector)
{
int hunk;
@@ -1295,7 +1302,7 @@ finish:
CD_FRAMESIZE_RAW);
return CD_FRAMESIZE_RAW;
}
-
+#endif
static int cdread_2048(FILE *f, unsigned int base, void *dest, int sector)
{
int ret;
@@ -1315,9 +1322,11 @@ static unsigned char * CALLBACK ISOgetBuffer_compr(void) {
return compr_img->buff_raw[compr_img->sector_in_blk] + 12;
}
+#ifdef HAVE_CHD
static unsigned char * CALLBACK ISOgetBuffer_chd(void) {
return chd_img->buffer[chd_img->sector_in_hunk] + 12;
}
+#endif
static unsigned char * CALLBACK ISOgetBuffer(void) {
return cdbuffer + 12;
@@ -1386,11 +1395,13 @@ static long CALLBACK ISOopen(void) {
CDR_getBuffer = ISOgetBuffer_compr;
cdimg_read_func = cdread_compressed;
}
+#ifdef HAVE_CHD
else if (handlechd(GetIsoFile()) == 0) {
SysPrintf("[chd]");
CDR_getBuffer = ISOgetBuffer_chd;
cdimg_read_func = cdread_chd;
}
+#endif
if (!subChanMixed && opensubfile(GetIsoFile()) == 0) {
SysPrintf("[+sub]");
@@ -1479,12 +1490,14 @@ static long CALLBACK ISOclose(void) {
compr_img = NULL;
}
+#ifdef HAVE_CHD
if (chd_img != NULL) {
chd_close(chd_img->chd);
free(chd_img->buffer);
free(chd_img);
chd_img = NULL;
}
+#endif
for (i = 1; i <= numtracks; i++) {
if (ti[i].handle != NULL) {