From a37298e7bed28752e8dcbe8e37e355fe47bf5e99 Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sat, 29 Mar 2025 23:11:07 +0300 Subject: Added support for LLE OPL2 and OPL3 emulators Kept disabled by default because they are extremely heavy for ordinary processors. --- utils/midiplay/adlmidiplay.cpp | 27 +++++++++++++++++++++++ utils/vlc_codec/libadlmidi.c | 17 +++++++++++++++ utils/winmm_drv/cpl/config_dialog.c | 43 ++++++++++++++++++++++++++++++++++++- 3 files changed, 86 insertions(+), 1 deletion(-) (limited to 'utils') diff --git a/utils/midiplay/adlmidiplay.cpp b/utils/midiplay/adlmidiplay.cpp index fff74d5..443327d 100644 --- a/utils/midiplay/adlmidiplay.cpp +++ b/utils/midiplay/adlmidiplay.cpp @@ -1449,12 +1449,35 @@ static struct Args #ifndef ADLMIDI_ENABLE_HW_DOS " -fp Enables full-panning stereo support\n" " --gain Set the gaining factor (default 2.0)\n" +# ifndef ADLMIDI_DISABLE_NUKED_EMULATOR " --emu-nuked Uses Nuked OPL3 v 1.8 emulator\n" " --emu-nuked7 Uses Nuked OPL3 v 1.7.4 emulator\n" +# endif +# ifndef ADLMIDI_DISABLE_DOSBOX_EMULATOR " --emu-dosbox Uses DosBox 0.74 OPL3 emulator\n" +# endif +# ifndef ADLMIDI_DISABLE_OPAL_EMULATOR " --emu-opal Uses Opal OPL3 emulator\n" +# endif +# ifndef ADLMIDI_DISABLE_JAVA_EMULATOR " --emu-java Uses Java OPL3 emulator\n" +# endif +# ifndef ADLMIDI_DISABLE_ESFMU_EMULATOR " --emu-esfmu Uses ESFMu OPL3/ESFM emulator\n" +# endif +# ifndef ADLMIDI_DISABLE_MAME_OPL2_EMULATOR + " --emu-mame-opl2 Uses MAME OPL2 emulator\n" +# endif +# ifndef ADLMIDI_DISABLE_YMFM_EMULATOR + " --emu-ymfm-opl2 Uses YMFM OPL2 emulator\n" + " --emu-ymfm-opl3 Uses YMFM OPL2 emulator\n" +# endif +# ifdef ADLMIDI_ENABLE_OPL2_LLE_EMULATOR + " --emu-lle-opl2 Uses Nuked OPL2-LLE emulator !!EXTRA HEAVY!!\n" +# endif +# ifdef ADLMIDI_ENABLE_OPL3_LLE_EMULATOR + " --emu-lle-opl3 Uses Nuked OPL3-LLE emulator !!EXTRA HEAVY!!\n" +# endif #else "\n" //------------------------------------------------------------------------------| @@ -1576,6 +1599,10 @@ static struct Args emulator = ADLMIDI_EMU_YMFM_OPL2; else if(!std::strcmp("--emu-ymfm-opl3", argv[2])) emulator = ADLMIDI_EMU_YMFM_OPL3; + else if(!std::strcmp("--emu-lle-opl2", argv[2])) + emulator = ADLMIDI_EMU_NUKED_OPL2_LLE; + else if(!std::strcmp("--emu-lle-opl3", argv[2])) + emulator = ADLMIDI_EMU_NUKED_OPL3_LLE; #endif #if defined(ADLMIDI_ENABLE_HW_SERIAL) && !defined(OUTPUT_WAVE_ONLY) diff --git a/utils/vlc_codec/libadlmidi.c b/utils/vlc_codec/libadlmidi.c index 8946880..49082c7 100644 --- a/utils/vlc_codec/libadlmidi.c +++ b/utils/vlc_codec/libadlmidi.c @@ -187,6 +187,14 @@ static const int emulator_type_values[] = (int)ADLMIDI_EMU_YMFM_OPL2, (int)ADLMIDI_EMU_YMFM_OPL3, #endif + +#ifdef ADLMIDI_ENABLE_OPL2_LLE_EMULATOR + (int)ADLMIDI_EMU_NUKED_OPL2_LLE, +#endif + +#ifdef ADLMIDI_ENABLE_OPL3_LLE_EMULATOR + (int)ADLMIDI_EMU_NUKED_OPL3_LLE, +#endif }; static const char * const emulator_type_descriptions[] = { @@ -219,6 +227,15 @@ static const char * const emulator_type_descriptions[] = N_("YMFM OPL2"), N_("YMFM OPL3"), #endif + +#ifdef ADLMIDI_ENABLE_OPL2_LLE_EMULATOR + N_("Nuked OPL2-LLE [!EXTRA HEAVY!]"), +#endif + +#ifdef ADLMIDI_ENABLE_OPL3_LLE_EMULATOR + N_("Nuked OPL3-LLE [!EXTRA HEAVY!]"), +#endif + NULL }; diff --git a/utils/winmm_drv/cpl/config_dialog.c b/utils/winmm_drv/cpl/config_dialog.c index 62a308d..a97e958 100644 --- a/utils/winmm_drv/cpl/config_dialog.c +++ b/utils/winmm_drv/cpl/config_dialog.c @@ -8,6 +8,7 @@ #include #include "config_dialog.h" +#include "adlmidi.h" /* For ENUMs only */ #include "resource.h" #include "regconfig.h" @@ -48,6 +49,40 @@ static const char *const channel_allocation_descriptions[] = NULL }; +static const enum ADL_Emulator emulator_type_id[] = +{ +#ifndef ADLMIDI_DISABLE_NUKED_EMULATOR + ADLMIDI_EMU_NUKED, + ADLMIDI_EMU_NUKED_174, +#endif +#ifndef ADLMIDI_DISABLE_DOSBOX_EMULATOR + ADLMIDI_EMU_DOSBOX, +#endif +#ifndef ADLMIDI_DISABLE_OPAL_EMULATOR + ADLMIDI_EMU_OPAL, +#endif +#ifndef ADLMIDI_DISABLE_JAVA_EMULATOR + ADLMIDI_EMU_JAVA, +#endif +#ifndef ADLMIDI_DISABLE_ESFMU_EMULATOR + ADLMIDI_EMU_ESFMu, +#endif +#ifndef ADLMIDI_DISABLE_MAME_OPL2_EMULATOR + ADLMIDI_EMU_MAME_OPL2, +#endif +#ifndef ADLMIDI_DISABLE_YMFM_EMULATOR + ADLMIDI_EMU_YMFM_OPL2, + ADLMIDI_EMU_YMFM_OPL3, +#endif +#ifdef ADLMIDI_ENABLE_OPL2_LLE_EMULATOR + ADLMIDI_EMU_NUKED_OPL2_LLE, +#endif +#ifdef ADLMIDI_ENABLE_OPL3_LLE_EMULATOR + ADLMIDI_EMU_NUKED_OPL3_LLE, +#endif + ADLMIDI_EMU_end +}; + static const char * const emulator_type_descriptions[] = { "Nuked OPL3 1.8", @@ -60,6 +95,12 @@ static const char * const emulator_type_descriptions[] = #ifndef ADLMIDI_DISABLE_YMFM_EMULATOR "YMFM OPL2", "YMFM OPL3", +#endif +#ifdef ADLMIDI_ENABLE_OPL2_LLE_EMULATOR + "Nuked OPL2-LLE [!EXTRA HEAVY!]", +#endif +#ifdef ADLMIDI_ENABLE_OPL3_LLE_EMULATOR + "Nuked OPL3-LLE [!EXTRA HEAVY!]", #endif NULL }; @@ -328,7 +369,7 @@ INT_PTR CALLBACK ToolDlgProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPar case IDC_EMULATOR: if(HIWORD(wParam) == CBN_SELCHANGE) { - g_setup.emulatorId = SendMessageW((HWND)lParam, (UINT)CB_GETCURSEL, (WPARAM)0, (LPARAM)0); + g_setup.emulatorId = (int)emulator_type_id[SendMessageW((HWND)lParam, (UINT)CB_GETCURSEL, (WPARAM)0, (LPARAM)0)]; } break; -- cgit v1.2.3