Munt MT-32/CM-32L MIDI emulation

This commit is contained in:
Toni Wilen 2023-07-27 21:45:53 +03:00
parent b47968742f
commit ac0e8bc247
12 changed files with 351 additions and 25 deletions

View File

@ -57,6 +57,9 @@
#include "videograb.h"
#include "rommgr.h"
#include "newcpu.h"
#ifdef WITH_MIDIEMU
#include "midiemu.h"
#endif
#ifdef RETROPLATFORM
#include "rp.h"
#endif
@ -287,6 +290,9 @@ void devices_update_sound(float clk, float syncadjust)
update_sndboard_sound (clk / syncadjust);
update_cda_sound(clk / syncadjust);
x86_update_sound(clk / syncadjust);
#ifdef WITH_MIDIEMU
midi_update_sound(clk / syncadjust);
#endif
}
void devices_update_sync(float svpos, float syncadjust)

8
include/midiemu.h Normal file
View File

@ -0,0 +1,8 @@
extern int midi_emu;
extern void midi_emu_close(void);
extern int midi_emu_open(const TCHAR *);
extern void midi_emu_parse(uae_u8 *midi, int len);
extern bool midi_emu_available(const TCHAR *);
extern void midi_emu_reopen(void);
extern void midi_update_sound(float);

254
midiemu.cpp Normal file
View File

@ -0,0 +1,254 @@
#include "sysconfig.h"
#include "sysdeps.h"
#include "options.h"
#include "fsdb.h"
#include "uae.h"
#include "audio.h"
#define MT32EMU_API_TYPE 1
#include <mt32emu.h>
#include "midiemu.h"
#include "parser.h"
// MUNT MT-32/CM-32L emulation
static mt32emu_context mt32context;
static int midi_emu_streamid;
static float base_midi_emu_event;
static int midi_evt_time;
static int midi_emu_freq;
static uae_s16 midi_volume;
int midi_emu;
static const TCHAR *cm32lctl[] = {
_T("ctrl_cm32ln_1_00"),
_T("ctrl_cm32l_1_02"),
_T("ctrl_cm32l_1_00"),
NULL
};
static const TCHAR *mt32ctl[] = {
_T("ctrl_mt32_1_07"),
_T("ctrl_mt32_1_06"),
_T("ctrl_mt32_1_05"),
_T("ctrl_mt32_1_04"),
_T("ctrl_mt32_bluer"),
_T("ctrl_mt32_2_04"),
_T("ctrl_mt32_2_07"),
_T("ctrl_mt32_2_06"),
_T("ctrl_mt32_2_03"),
NULL
};
static bool check_rom(const TCHAR *path, const TCHAR *name)
{
TCHAR rpath[MAX_DPATH];
_tcscpy(rpath, path);
_tcscat(rpath, name);
_tcscat(rpath, _T(".rom"));
bool exists = my_existsfile(rpath);
return exists;
}
static bool load_rom(const TCHAR *path, const TCHAR *name)
{
mt32emu_return_code err;
TCHAR rpath[MAX_DPATH];
_tcscpy(rpath, path);
_tcscat(rpath, name);
_tcscat(rpath, _T(".rom"));
write_log(_T("mt32emu_add_rom_file(%s)\n"), rpath);
char *n = ua(rpath);
err = mt32emu_add_rom_file(mt32context, n);
xfree(n);
if (err < 0) {
_tcscpy(rpath, path);
_tcscat(rpath, name);
_tcscat(rpath, _T("_a.rom"));
char *n = ua(rpath);
err = mt32emu_add_rom_file(mt32context, n);
xfree(n);
if (err >= 0) {
_tcscpy(rpath, path);
_tcscat(rpath, name);
_tcscat(rpath, _T("_b.rom"));
char *n = ua(rpath);
err = mt32emu_add_rom_file(mt32context, n);
xfree(n);
}
}
write_log("-> %d\n", err);
return err >= 0;
}
static void midi_emu_add_roms(void)
{
TCHAR path[MAX_DPATH];
fetch_rompath(path, sizeof(path) / sizeof(TCHAR));
_tcscat(path, _T("mt32-roms\\"));
if (!my_existsdir(path)) {
_tcscpy(path, _T("C:\\mt32-rom-data\\"));
}
if (!my_existsdir(path)) {
write_log(_T("mt32emu: rom path missing\n"));
return;
}
if (midi_emu == 1) {
if (!load_rom(path, _T("pcm_mt32"))) {
load_rom(path, _T("pcm_mt32_l"));
load_rom(path, _T("pcm_mt32_h"));
}
} else {
if (!load_rom(path, _T("pcm_cm32l"))) {
load_rom(path, _T("pcm_mt32"));
load_rom(path, _T("pcm_cm32l_h"));
}
}
const TCHAR **ctl = midi_emu == 1 ? mt32ctl : cm32lctl;
for (int i = 0; ctl[i]; i++) {
if (load_rom(path, ctl[i])) {
break;
}
}
}
bool midi_emu_available(const TCHAR *id)
{
TCHAR path[MAX_DPATH];
int me = 0;
if (_tcsstr(id, _T("MT-32"))) {
me = 1;
} else if (_tcsstr(id, _T("CM-32L"))) {
me = 2;
} else {
return false;
}
fetch_rompath(path, sizeof(path) / sizeof(TCHAR));
_tcscat(path, _T("mt32-roms\\"));
if (!my_existsdir(path)) {
_tcscpy(path, _T("C:\\mt32-rom-data\\"));
}
if (!my_existsdir(path)) {
return false;
}
if (me == 1) {
if (!check_rom(path, _T("pcm_mt32"))) {
if (!check_rom(path, _T("pcm_mt32_l")) || !check_rom(path, _T("pcm_mt32_h"))) {
return false;
}
}
} else {
if (!check_rom(path, _T("pcm_cm32l"))) {
if (!check_rom(path, _T("pcm_mt32")) || check_rom(path, _T("pcm_cm32l_h"))) {
return false;
}
}
}
const TCHAR **ctl = me == 1 ? mt32ctl : cm32lctl;
for (int i = 0; ctl[i]; i++) {
if (check_rom(path, ctl[i])) {
return true;
}
}
return false;
}
void midi_update_sound(float v)
{
base_midi_emu_event = v;
midi_volume = (100 - currprefs.sound_volume_midi) * 32768 / 100;
}
static bool audio_state_midi_emu(int streamid, void *params)
{
int sample[2] = { 0 };
if (mt32context) {
int vol = currprefs.sound_volume_midi;
mt32emu_bit16s stream[2];
mt32emu_render_bit16s(mt32context, stream, 1);
sample[0] = stream[0] * midi_volume / 32768;
sample[1] = stream[1] * midi_volume / 32768;
}
midi_evt_time = (int)(base_midi_emu_event * CYCLE_UNIT / midi_emu_freq);
audio_state_stream_state(streamid, sample, 2, midi_evt_time);
return true;
}
void midi_emu_parse(uae_u8 *midi, int len)
{
if (mt32context) {
mt32emu_parse_stream(mt32context, midi, len);
}
}
void midi_emu_close(void)
{
midi_emu = 0;
if (midi_emu_streamid) {
audio_enable_stream(false, midi_emu_streamid, 0, NULL, NULL);
midi_emu_streamid = 0;
}
if (mt32context) {
mt32emu_close_synth(mt32context);
mt32emu_free_context(mt32context);
}
mt32context = NULL;
}
int midi_emu_open(const TCHAR *id)
{
mt32emu_return_code err;
mt32emu_rom_info ri;
if (_tcsstr(id, _T("MT-32"))) {
midi_emu = 1;
} else if (_tcsstr(id, _T("CM-32L"))) {
midi_emu = 2;
} else {
return 0;
}
const char *s = mt32emu_get_library_version_string();
write_log("mt32emu version: %s\n", s);
mt32context = mt32emu_create_context((mt32emu_report_handler_i)NULL, NULL);
if (!mt32context) {
write_log("mt32emu_create_context() failed\n");
return 0;
}
midi_emu_add_roms();
mt32emu_set_analog_output_mode(mt32context, MT32EMU_AOM_ACCURATE);
mt32emu_get_rom_info(mt32context, &ri);
write_log("mt32emu control_rom_id: %s\n", ri.control_rom_id);
write_log("mt32emu control_rom_description: %s\n", ri.control_rom_description);
write_log("mt32emu control_rom_sha1_digest: %s\n", ri.control_rom_sha1_digest);
write_log("mt32emu pcm_rom_id: %s\n", ri.pcm_rom_id);
write_log("mt32emu pcm_rom_description: %s\n", ri.pcm_rom_description);
write_log("mt32emu pcm_rom_sha1_digest: %s\n", ri.pcm_rom_sha1_digest);
err = mt32emu_open_synth(mt32context);
if (err != MT32EMU_RC_OK) {
write_log("mt32emu_open_synth() failed: %d\n", err);
midi_emu_close();
return 0;
}
midi_emu_freq = mt32emu_get_actual_stereo_output_samplerate(mt32context);
write_log("mt32emu frequency: %d\n", midi_emu_freq);
midi_emu_streamid = audio_enable_stream(true, -1, 2, audio_state_midi_emu, NULL);
return 1;
}
void midi_emu_reopen(void)
{
if (midi_emu) {
midi_emu_close();
if (currprefs.win32_midioutdev >= 0) {
TCHAR *name = midioutportinfo[currprefs.win32_midioutdev]->name;
if (!_tcsncmp(name, _T("Munt "), 5)) {
midi_emu_open(name);
}
}
}
}

View File

@ -740,3 +740,11 @@ void Midi_Close(void)
DeleteCriticalSection(&cs_proc);
}
}
void Midi_Reopen(void)
{
if (midi_ready) {
Midi_Close();
Midi_Open();
}
}

View File

@ -51,9 +51,10 @@ typedef enum
extern BOOL midi_ready;
extern int Midi_Parse (midi_direction_e direction, BYTE *c);
extern int Midi_Open (void);
extern void Midi_Close (void);
extern int Midi_Parse(midi_direction_e direction, BYTE *c);
extern int Midi_Open(void);
extern void Midi_Close(void);
extern void Midi_Reopen(void);
extern LONG getmidibyte(void);
extern int ismidibyte(void);

View File

@ -56,6 +56,9 @@
#include "uaeipc.h"
#include "xwin.h"
#include "drawing.h"
#ifdef WITH_MIDIEMU
#include "midiemu.h"
#endif
#ifdef RETROPLATFORM
#include "rp.h"
#endif
@ -1132,6 +1135,11 @@ void closeser (void)
//is the same and do not open midi), so setting serper to different value helps
serper = 0x30;
}
#ifdef WITH_MIDIEMU
if (midi_emu) {
midi_emu_close();
}
#endif
if(writeevent)
CloseHandle(writeevent);
writeevent = 0;
@ -1172,6 +1180,11 @@ void writeser (int c)
tcp_disconnect ();
}
}
#ifdef WITH_MIDIEMU
} else if (midi_emu) {
uae_u8 b = (uae_u8)c;
midi_emu_parse(&b, 1);
#endif
} else if (midi_ready) {
BYTE outchar = (BYTE)c;
Midi_Parse (midi_output, &outchar);
@ -1374,10 +1387,19 @@ void setserstat (int mask, int onoff)
}
}
int setbaud (long baud)
int setbaud(int baud, int org_baud)
{
if(baud == 31400 && currprefs.win32_midioutdev >= -1) {
if(org_baud == 31400 && currprefs.win32_midioutdev >= -1) {
/* MIDI baud-rate */
#ifdef WITH_MIDIEMU
if (currprefs.win32_midioutdev >= 0) {
TCHAR *name = midioutportinfo[currprefs.win32_midioutdev]->name;
if (!_tcsncmp(name, _T("Munt "), 5)) {
midi_emu_open(name);
return 1;
}
}
#endif
if (!midi_ready) {
if (Midi_Open())
write_log (_T("Midi enabled\n"));
@ -1387,6 +1409,11 @@ int setbaud (long baud)
if (midi_ready) {
Midi_Close();
}
#ifdef WITH_MIDIEMU
if (midi_emu) {
midi_emu_close();
}
#endif
if (!currprefs.use_serial)
return 1;
if (hCom != INVALID_HANDLE_VALUE) {
@ -1699,6 +1726,18 @@ int enummidiports (void)
}
}
}
#ifdef WITH_MIDIEMU
midioutportinfo[num] = xcalloc(struct midiportinfo, 1);
midioutportinfo[num]->label = midi_emu_available(_T("MT-32")) ? my_strdup(_T("Munt MT-32")) : my_strdup(_T("Munt MT-32 (Missing ROMs)"));
midioutportinfo[num]->name = my_strdup(_T("Munt MT-32"));
midioutportinfo[num]->devid = num;
num++;
midioutportinfo[num] = xcalloc(struct midiportinfo, 1);
midioutportinfo[num]->label = midi_emu_available(_T("CM-32L")) ? my_strdup(_T("Munt CM-32L")) : my_strdup(_T("Munt CM-32L (Missing ROMs)"));
midioutportinfo[num]->name = my_strdup(_T("Munt CM-32L"));
midioutportinfo[num]->devid = num;
num++;
#endif
num = innum;
for (i = 0; i < num && i < MAX_MIDI_PORTS - 1; i++) {
if (midiInGetDevCaps (i, &midiInCaps, sizeof (midiInCaps)) != MMSYSERR_NOERROR) {

View File

@ -9,7 +9,7 @@
#define PRTBUFSIZE 65536
int setbaud(long baud );
int setbaud(int baud, int origbaud);
void getserstat(int *status);
void setserstat(int mask, int onoff);
int readser(int *buffer);
@ -48,7 +48,8 @@ extern int load_ghostscript (void);
struct midiportinfo
{
TCHAR *name;
unsigned int devid;
TCHAR *label;
int devid;
};
extern struct midiportinfo *midiinportinfo[MAX_MIDI_PORTS];
extern struct midiportinfo *midioutportinfo[MAX_MIDI_PORTS];

View File

@ -220,7 +220,7 @@ static void sersend_end(uae_u32 v);
void SERPER (uae_u16 w)
{
int baud = 0, i, per;
int baud = 0, mbaud = 0, i, per;
int oldper = serper;
static int warned;
@ -247,6 +247,7 @@ void SERPER (uae_u16 w)
if (baud <= 0) {
baud = allowed_baudrates[1];
}
mbaud = baud;
serial_period_hsyncs = (((serper & 0x7fff) + 1) * (1 + 8 + ninebit + 1 - 1)) / maxhpos;
if (serial_period_hsyncs <= 0)
@ -281,7 +282,7 @@ void SERPER (uae_u16 w)
serial_send_previous = -1;
#ifdef SERIAL_PORT
setbaud (baud);
setbaud(baud, mbaud);
#endif
// mid transmit period change

View File

@ -116,6 +116,7 @@
#define WITH_THREADED_CPU
#define WITH_SOFTFLOAT
#define FLOPPYBRIDGE
#define WITH_MIDIEMU
#else

View File

@ -2616,11 +2616,14 @@ int check_prefs_changed_gfx(void)
currprefs.win32_midioutdev = changed_prefs.win32_midioutdev;
currprefs.sound_volume_midi = changed_prefs.sound_volume_midi;
currprefs.win32_midirouter = changed_prefs.win32_midirouter;
#ifdef SERIAL_PORT
if (midi_ready) {
Midi_Close ();
Midi_Open ();
}
serial_exit();
serial_init();
Midi_Reopen();
#endif
#ifdef WITH_MIDIEMU
midi_emu_reopen();
#endif
}

View File

@ -371,7 +371,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
@ -452,7 +452,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
@ -534,7 +534,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
@ -615,7 +615,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -692,7 +692,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -766,7 +766,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -841,7 +841,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -918,7 +918,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -994,7 +994,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -1072,7 +1072,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;winio.lib;setupapi.lib;wininet.lib;shlwapi.lib;libpng16.lib;lglcd.lib;openal32.lib;portaudio_x86.lib;vfw32.lib;wtsapi32.lib;enet.lib;lzmalib.lib;prowizard.lib;libFLAC_static.lib;hid.lib;zlibstat.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(SolutionDir)\..\lib\</AdditionalLibraryDirectories>
@ -1154,7 +1154,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -1231,7 +1231,7 @@
<Culture>0x0409</Culture>
</ResourceCompile>
<Link>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>ws2_32.lib;winmm.lib;comctl32.lib;version.lib;vfw32.lib;msacm32.lib;dsound.lib;dinput8.lib;d3d9.lib;d3dx9.lib;setupapi.lib;wininet.lib;shlwapi.lib;zlibstat.lib;portaudio_x64.lib;openal32.lib;libpng16.lib;lglcd.lib;wtsapi32.lib;enet_x64.lib;prowizard_x64.lib;lzmalib.lib;libFLAC_static.lib;hid.lib;Iphlpapi.lib;luastatic.lib;libmpeg2_ff.lib;softfloat.lib;gdiplus.lib;effects11.lib;Msimg32.lib;Dwmapi.lib;mt32emu.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ShowProgress>NotSet</ShowProgress>
<OutputFile>$(OutDir)$(TargetName)$(TargetExt)</OutputFile>
<SuppressStartupBanner>true</SuppressStartupBanner>
@ -1345,6 +1345,7 @@
<ClCompile Include="..\..\luascript.cpp" />
<ClCompile Include="..\..\mame\a2410.cpp" />
<ClCompile Include="..\..\mame\tm34010\tms34010.cpp" />
<ClCompile Include="..\..\midiemu.cpp" />
<ClCompile Include="..\..\ncr9x_scsi.cpp" />
<ClCompile Include="..\..\newcpu_common.cpp" />
<ClCompile Include="..\..\pcem\386.cpp" />

View File

@ -988,6 +988,9 @@
<ClCompile Include="..\darkmode.cpp">
<Filter>win32</Filter>
</ClCompile>
<ClCompile Include="..\..\midiemu.cpp">
<Filter>common</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\resources\35floppy.ico">