mirror of
https://github.com/kichikuou/system3-sdl2.git
synced 2026-09-22 22:58:12 +03:00
System3: Implement CD availability check
The `Y14,2:` command (`Y20,2:` in Gakuen KING) now returns zero if CD audio is not available (i.e. playlist is not loaded).
This commit is contained in:
@@ -151,6 +151,11 @@ bool MAKO::check_pcm()
|
||||
return EM_ASM_INT({ return xsystem35.audio.pcm_isplaying(0); });
|
||||
}
|
||||
|
||||
bool MAKO::is_cd_available() const
|
||||
{
|
||||
return EM_ASM_INT({ return xsystem35.cdPlayer.hasAudioTrack(); });
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
EMSCRIPTEN_KEEPALIVE
|
||||
|
||||
@@ -245,3 +245,7 @@ bool MAKO::check_pcm()
|
||||
return Mix_Playing(-1) != 0;
|
||||
}
|
||||
|
||||
bool MAKO::is_cd_available() const
|
||||
{
|
||||
return !playlist.empty();
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
bool check_pcm();
|
||||
|
||||
void set_cd_track(int num, int track) { cd_track[num] = track; }
|
||||
bool is_cd_available() const;
|
||||
|
||||
#ifdef _WIN32
|
||||
void select_sound(BGMDevice dev);
|
||||
|
||||
@@ -785,8 +785,12 @@ void NACT_Sys3::exec_y(int cmd, int param)
|
||||
text_wait_time = (param - 1) * 1000 / 60;
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
RND = 1;
|
||||
case 14: // audio device check
|
||||
if (param == 2) {
|
||||
RND = mako->is_cd_available() ? 1 : 0;
|
||||
} else {
|
||||
RND = 1;
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
break;
|
||||
@@ -1402,6 +1406,9 @@ public:
|
||||
TRACE("Y %d,%d:", cmd, param);
|
||||
|
||||
switch (cmd) {
|
||||
case 20: // audio device check
|
||||
exec_y(14, param);
|
||||
break;
|
||||
case 25:
|
||||
ags->menu.back_color = ags->text.back_color = (param == 1 || param == 2) ? 0 : 1;
|
||||
// text_window = param;
|
||||
|
||||
@@ -465,6 +465,11 @@ bool MAKO::check_pcm()
|
||||
return !PlaySound(null_wav, NULL, SND_ASYNC | SND_MEMORY | SND_NOSTOP);
|
||||
}
|
||||
|
||||
bool MAKO::is_cd_available() const
|
||||
{
|
||||
return !playlist.empty();
|
||||
}
|
||||
|
||||
void MAKO::on_mci_notify(const SDL_SysWMmsg* msg)
|
||||
{
|
||||
if (!music)
|
||||
|
||||
Reference in New Issue
Block a user