mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-22 22:48:08 +03:00
Add is_available function to CD-ROM devices
Now `SI 2` command returns zero if no audio track is available.
This commit is contained in:
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
+1
-1
@@ -113,5 +113,5 @@ int muscd_get_maxtrack(void) {
|
||||
}
|
||||
|
||||
bool muscd_is_available(void) {
|
||||
return prv.cddev;
|
||||
return prv.cddev && prv.cddev->is_available();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user