diff --git a/src/res3/Script1.rc b/src/res3/Script1.rc index bd8e8b6..2afbae1 100644 --- a/src/res3/Script1.rc +++ b/src/res3/Script1.rc @@ -42,6 +42,7 @@ BEGIN POPUP "Sound" BEGIN MENUITEM "FM Sound", ID_SOUND_FM + MENUITEM "MIDI Sound", ID_SOUND_MIDI MENUITEM "CD Audio", ID_SOUND_CD END POPUP "Message" diff --git a/src/res3/resource.h b/src/res3/resource.h index bc16453..c48f571 100644 --- a/src/res3/resource.h +++ b/src/res3/resource.h @@ -25,9 +25,10 @@ #define ID_SCREEN_WINDOW 40003 #define ID_SCREEN_FULL 40004 #define ID_SOUND_FM 40005 -#define ID_SOUND_CD 40006 -#define ID_TEXT_SKIP 40007 -#define ID_TEXT_WAIT 40008 +#define ID_SOUND_MIDI 40006 +#define ID_SOUND_CD 40007 +#define ID_TEXT_SKIP 40008 +#define ID_TEXT_WAIT 40009 // Next default values for new objects // diff --git a/src/sys/mako.h b/src/sys/mako.h index ddc213a..f30c830 100644 --- a/src/sys/mako.h +++ b/src/sys/mako.h @@ -16,6 +16,7 @@ enum BGMDevice { BGM_FM, + BGM_MIDI, BGM_CD }; diff --git a/src/win/mako.cpp b/src/win/mako.cpp index d4955b2..c73e012 100644 --- a/src/win/mako.cpp +++ b/src/win/mako.cpp @@ -350,8 +350,7 @@ void MAKO::stop_music() delete music; music = nullptr; } - if (use_fm) - SDL_PauseAudio(1); + SDL_PauseAudio(1); current_music = 0; } @@ -364,12 +363,18 @@ void MAKO::select_sound(BGMDevice dev) { // 強制的に音源を変更する int page = current_music; - int old_dev = (1 <= page && page <= 99 && cd_track[page]) ? BGM_CD : BGM_FM; + int old_dev = (1 <= page && page <= 99 && cd_track[page]) ? BGM_CD : + use_fm ? BGM_FM : BGM_MIDI; - if (dev == BGM_FM) { + switch (dev) { + case BGM_FM: + case BGM_MIDI: for (int i = 1; i <= 99; i++) cd_track[i] = 0; - } else { + use_fm = dev == BGM_FM; + break; + + case BGM_CD: const int8* tracks; switch (nact->crc32_a) { @@ -392,6 +397,7 @@ void MAKO::select_sound(BGMDevice dev) for (int i = 1; i <= 99; i++) cd_track[i] = i; } + break; } // デバイスが変更された場合は再演奏する diff --git a/src/win/nact_win.cpp b/src/win/nact_win.cpp index 974b7e5..516b16a 100644 --- a/src/win/nact_win.cpp +++ b/src/win/nact_win.cpp @@ -156,6 +156,9 @@ bool NACT::handle_platform_event(const SDL_Event& e) case ID_SOUND_FM: mako->select_sound(BGM_FM); break; + case ID_SOUND_MIDI: + mako->select_sound(BGM_MIDI); + break; case ID_SOUND_CD: mako->select_sound(BGM_CD); break;