diff --git a/src/cdrom.bgm.c b/src/cdrom.bgm.c index 10cf1bd..bcff390 100644 --- a/src/cdrom.bgm.c +++ b/src/cdrom.bgm.c @@ -63,6 +63,10 @@ static bool cdrom_bgm_getPlayingInfo(cd_time *info) { return true; } +static bool cdrom_bgm_is_available(void) { + return true; +} + cdromdevice_t cdrom_bgm = { .init = cdrom_bgm_init, .exit = cdrom_bgm_exit, @@ -70,4 +74,5 @@ cdromdevice_t cdrom_bgm = { .start = cdrom_bgm_start, .stop = cdrom_bgm_stop, .getpos = cdrom_bgm_getPlayingInfo, + .is_available = cdrom_bgm_is_available, }; diff --git a/src/cdrom.emscripten.c b/src/cdrom.emscripten.c index bdaba61..eda8309 100644 --- a/src/cdrom.emscripten.c +++ b/src/cdrom.emscripten.c @@ -62,6 +62,10 @@ static bool cdrom_getPlayingInfo(cd_time *info) { return true; } +static bool cdrom_is_available(void) { + return EM_ASM_INT({ return xsystem35.cdPlayer.hasAudioTrack(); }); +} + cdromdevice_t cdrom_emscripten = { .init = cdrom_init, .exit = cdrom_exit, @@ -69,4 +73,5 @@ cdromdevice_t cdrom_emscripten = { .start = cdrom_start, .stop = cdrom_stop, .getpos = cdrom_getPlayingInfo, + .is_available = cdrom_is_available, }; diff --git a/src/cdrom.h b/src/cdrom.h index 07e401d..6c92fbd 100644 --- a/src/cdrom.h +++ b/src/cdrom.h @@ -38,6 +38,7 @@ typedef struct { bool (*start)(int trk, int loop); void (*stop)(void); bool (*getpos)(cd_time *); + bool (*is_available)(void); } cdromdevice_t; extern cdromdevice_t cdrom_bgm; diff --git a/src/cdrom.mp3.c b/src/cdrom.mp3.c index 61e517f..2fe6212 100644 --- a/src/cdrom.mp3.c +++ b/src/cdrom.mp3.c @@ -164,6 +164,10 @@ static bool cdrom_getPlayingInfo (cd_time *inf) { return true; } +static bool cdrom_is_available(void) { + return enabled; +} + cdromdevice_t cdrom_mp3 = { .init = cdrom_init, .exit = cdrom_exit, @@ -171,4 +175,5 @@ cdromdevice_t cdrom_mp3 = { .start = cdrom_start, .stop = cdrom_stop, .getpos = cdrom_getPlayingInfo, + .is_available = cdrom_is_available, }; diff --git a/src/music_cdrom.c b/src/music_cdrom.c index fd54756..6c4970d 100644 --- a/src/music_cdrom.c +++ b/src/music_cdrom.c @@ -113,5 +113,5 @@ int muscd_get_maxtrack(void) { } bool muscd_is_available(void) { - return prv.cddev; + return prv.cddev && prv.cddev->is_available(); }