Added a second S3 ViRGE/DX card, this one with VBE 2.0 BIOS;
Added the ability to use a standalone MPU-401 if the selected sound card is not SB16 or AWE32.
This commit is contained in:
@@ -21,12 +21,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../ibm.h"
|
#include "../ibm.h"
|
||||||
|
#include "../device.h"
|
||||||
#include "../io.h"
|
#include "../io.h"
|
||||||
#include "../pic.h"
|
#include "../pic.h"
|
||||||
#include "../timer.h"
|
#include "../timer.h"
|
||||||
#include "../win/plat_midi.h" /*YUCK*/
|
#include "../win/plat_midi.h" /*YUCK*/
|
||||||
|
#include "sound.h"
|
||||||
#include "snd_mpu401.h"
|
#include "snd_mpu401.h"
|
||||||
|
|
||||||
|
#include <malloc.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -38,6 +41,8 @@ enum
|
|||||||
static void MPU401_WriteCommand(mpu_t *mpu, uint8_t val);
|
static void MPU401_WriteCommand(mpu_t *mpu, uint8_t val);
|
||||||
static void MPU401_EOIHandlerDispatch(void *p);
|
static void MPU401_EOIHandlerDispatch(void *p);
|
||||||
|
|
||||||
|
int mpu401_standalone_enable = 0;
|
||||||
|
|
||||||
static int mpu401_event_callback = 0;
|
static int mpu401_event_callback = 0;
|
||||||
static int mpu401_eoi_callback = 0;
|
static int mpu401_eoi_callback = 0;
|
||||||
static int mpu401_reset_callback = 0;
|
static int mpu401_reset_callback = 0;
|
||||||
@@ -749,3 +754,118 @@ void mpu401_init(mpu_t *mpu, uint16_t addr, int irq, int mode)
|
|||||||
|
|
||||||
MPU401_Reset(mpu);
|
MPU401_Reset(mpu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mpu401_device_add(void)
|
||||||
|
{
|
||||||
|
char *n;
|
||||||
|
|
||||||
|
if (!mpu401_standalone_enable)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = sound_card_getname(sound_card_current);
|
||||||
|
if (n != NULL)
|
||||||
|
{
|
||||||
|
if (!strcmp(n, "sb16") || !strcmp(n, "sbawe32"))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
device_add(&mpu401_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *mpu401_standalone_init()
|
||||||
|
{
|
||||||
|
mpu_t *mpu;
|
||||||
|
|
||||||
|
mpu = malloc(sizeof(mpu_t));
|
||||||
|
memset(mpu, 0, sizeof(mpu_t));
|
||||||
|
|
||||||
|
pclog("mpu_init\n");
|
||||||
|
mpu401_init(mpu, device_get_config_hex16("base"), device_get_config_int("irq"), device_get_config_int("mode"));
|
||||||
|
|
||||||
|
return mpu;
|
||||||
|
}
|
||||||
|
|
||||||
|
void mpu401_standalone_close(void *p)
|
||||||
|
{
|
||||||
|
mpu_t *mpu = (mpu_t *)p;
|
||||||
|
|
||||||
|
free(mpu);
|
||||||
|
}
|
||||||
|
|
||||||
|
static device_config_t mpu401_standalone_config[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"base", "MPU-401 Address", CONFIG_HEX16, "", 0x330,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"0x300", 0x300
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"0x330", 0x330
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"irq", "MPU-401 IRQ", CONFIG_SELECTION, "", 9,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"IRQ 9", 9
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ 3", 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ 4", 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ 5", 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ 7", 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"IRQ 10", 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mode", "Mode", CONFIG_SELECTION, "", 1,
|
||||||
|
{
|
||||||
|
{
|
||||||
|
"UART", M_UART
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Intelligent", M_INTELLIGENT
|
||||||
|
},
|
||||||
|
{
|
||||||
|
""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"", "", -1
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
device_t mpu401_device =
|
||||||
|
{
|
||||||
|
"MPU-401 (Standalone)",
|
||||||
|
0,
|
||||||
|
mpu401_standalone_init,
|
||||||
|
mpu401_standalone_close,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
mpu401_standalone_config
|
||||||
|
};
|
||||||
|
|||||||
@@ -83,3 +83,8 @@ typedef struct mpu_t
|
|||||||
uint8_t MPU401_ReadData(mpu_t *mpu);
|
uint8_t MPU401_ReadData(mpu_t *mpu);
|
||||||
|
|
||||||
void mpu401_init(mpu_t *mpu, uint16_t addr, int irq, int mode);
|
void mpu401_init(mpu_t *mpu, uint16_t addr, int irq, int mode);
|
||||||
|
|
||||||
|
extern int mpu401_standalone_enable;
|
||||||
|
|
||||||
|
void mpu401_device_add(void);
|
||||||
|
device_t mpu401_device;
|
||||||
|
|||||||
@@ -3925,7 +3925,7 @@ static void *s3_virge_988_init()
|
|||||||
return virge;
|
return virge;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *s3_virge_375_init()
|
static void *s3_virge_375_init(wchar_t *romfn)
|
||||||
{
|
{
|
||||||
virge_t *virge = malloc(sizeof(virge_t));
|
virge_t *virge = malloc(sizeof(virge_t));
|
||||||
memset(virge, 0, sizeof(virge_t));
|
memset(virge, 0, sizeof(virge_t));
|
||||||
@@ -3940,7 +3940,7 @@ static void *s3_virge_375_init()
|
|||||||
s3_virge_hwcursor_draw,
|
s3_virge_hwcursor_draw,
|
||||||
s3_virge_overlay_draw);
|
s3_virge_overlay_draw);
|
||||||
|
|
||||||
rom_init(&virge->bios_rom, L"roms/86c375_1.bin", 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
|
rom_init(&virge->bios_rom, romfn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
|
||||||
if (PCI)
|
if (PCI)
|
||||||
mem_mapping_disable(&virge->bios_rom.mapping);
|
mem_mapping_disable(&virge->bios_rom.mapping);
|
||||||
|
|
||||||
@@ -4021,6 +4021,16 @@ static void *s3_virge_375_init()
|
|||||||
return virge;
|
return virge;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *s3_virge_375_1_init()
|
||||||
|
{
|
||||||
|
return s3_virge_init(L"roms/86c375_1.bin");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *s3_virge_375_4_init()
|
||||||
|
{
|
||||||
|
return s3_virge_init(L"roms/86c375_4.bin");
|
||||||
|
}
|
||||||
|
|
||||||
static void s3_virge_close(void *p)
|
static void s3_virge_close(void *p)
|
||||||
{
|
{
|
||||||
virge_t *virge = (virge_t *)p;
|
virge_t *virge = (virge_t *)p;
|
||||||
@@ -4054,11 +4064,16 @@ static int s3_virge_988_available()
|
|||||||
return rom_present(L"roms/diamondstealth3000.VBI");
|
return rom_present(L"roms/diamondstealth3000.VBI");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int s3_virge_375_available()
|
static int s3_virge_375_1_available()
|
||||||
{
|
{
|
||||||
return rom_present(L"roms/86c375_1.bin");
|
return rom_present(L"roms/86c375_1.bin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int s3_virge_375_4_available()
|
||||||
|
{
|
||||||
|
return rom_present(L"roms/86c375_4.bin");
|
||||||
|
}
|
||||||
|
|
||||||
static void s3_virge_speed_changed(void *p)
|
static void s3_virge_speed_changed(void *p)
|
||||||
{
|
{
|
||||||
virge_t *virge = (virge_t *)p;
|
virge_t *virge = (virge_t *)p;
|
||||||
@@ -4190,9 +4205,22 @@ device_t s3_virge_375_device =
|
|||||||
{
|
{
|
||||||
"S3 ViRGE/DX",
|
"S3 ViRGE/DX",
|
||||||
0,
|
0,
|
||||||
s3_virge_375_init,
|
s3_virge_375_1_init,
|
||||||
s3_virge_close,
|
s3_virge_close,
|
||||||
s3_virge_375_available,
|
s3_virge_375_1_available,
|
||||||
|
s3_virge_speed_changed,
|
||||||
|
s3_virge_force_redraw,
|
||||||
|
s3_virge_add_status_info,
|
||||||
|
s3_virge_config
|
||||||
|
};
|
||||||
|
|
||||||
|
device_t s3_virge_375_4_device =
|
||||||
|
{
|
||||||
|
"S3 ViRGE/DX (VBE 2.0)",
|
||||||
|
0,
|
||||||
|
s3_virge_375_4_init,
|
||||||
|
s3_virge_close,
|
||||||
|
s3_virge_375_4_available,
|
||||||
s3_virge_speed_changed,
|
s3_virge_speed_changed,
|
||||||
s3_virge_force_redraw,
|
s3_virge_force_redraw,
|
||||||
s3_virge_add_status_info,
|
s3_virge_add_status_info,
|
||||||
|
|||||||
@@ -4,3 +4,4 @@
|
|||||||
extern device_t s3_virge_device;
|
extern device_t s3_virge_device;
|
||||||
extern device_t s3_virge_988_device;
|
extern device_t s3_virge_988_device;
|
||||||
extern device_t s3_virge_375_device;
|
extern device_t s3_virge_375_device;
|
||||||
|
extern device_t s3_virge_375_4_device;
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ static VIDEO_CARD video_cards[] =
|
|||||||
{"Phoenix S3 Trio64", "px_trio64", &s3_phoenix_trio64_device, GFX_PHOENIX_TRIO64},
|
{"Phoenix S3 Trio64", "px_trio64", &s3_phoenix_trio64_device, GFX_PHOENIX_TRIO64},
|
||||||
{"Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS},
|
{"Plantronics ColorPlus", "plantronics", &colorplus_device, GFX_COLORPLUS},
|
||||||
{"S3 ViRGE/DX", "virge375", &s3_virge_375_device, GFX_VIRGEDX},
|
{"S3 ViRGE/DX", "virge375", &s3_virge_375_device, GFX_VIRGEDX},
|
||||||
|
{"S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20", &s3_virge_375_4_device, GFX_VIRGEDX4},
|
||||||
{"Trident TGUI9440", "tgui9440", &tgui9440_device, GFX_TGUI9440},
|
{"Trident TGUI9440", "tgui9440", &tgui9440_device, GFX_TGUI9440},
|
||||||
{"Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA},
|
{"Trident TVGA8900D", "tvga8900d", &tvga8900d_device, GFX_TVGA},
|
||||||
{"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000},
|
{"Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000},
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ BEGIN
|
|||||||
PUSHBUTTON "Joystick 4...",IDC_JOY4,209,44,50,14
|
PUSHBUTTON "Joystick 4...",IDC_JOY4,209,44,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
CONFIGUREDLG_SOUND DIALOG DISCARDABLE 97, 0, 267, 78
|
CONFIGUREDLG_SOUND DIALOG DISCARDABLE 97, 0, 267, 98
|
||||||
STYLE DS_CONTROL | WS_CHILD
|
STYLE DS_CONTROL | WS_CHILD
|
||||||
FONT 9, "Segoe UI"
|
FONT 9, "Segoe UI"
|
||||||
BEGIN
|
BEGIN
|
||||||
@@ -338,14 +338,20 @@ BEGIN
|
|||||||
COMBOBOX IDC_COMBO_MIDI,71,25,189,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
COMBOBOX IDC_COMBO_MIDI,71,25,189,120,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||||
WS_TABSTOP
|
WS_TABSTOP
|
||||||
LTEXT "MIDI Out Device:",1801,7,26,59,10
|
LTEXT "MIDI Out Device:",1801,7,26,59,10
|
||||||
CONTROL "CMS / Game Blaster",IDC_CHECKCMS,"Button",
|
|
||||||
BS_AUTOCHECKBOX | WS_TABSTOP,87,43,80,10
|
CONTROL "Standalone MPU-401",IDC_CHECK_MPU401,"Button",
|
||||||
|
BS_AUTOCHECKBOX | WS_TABSTOP,7,45,199,10
|
||||||
|
PUSHBUTTON "Configure",IDC_CONFIGURE_MPU401,214,44,46,12
|
||||||
|
|
||||||
CONTROL "Innovation SSI-2001",IDC_CHECKSSI,"Button",
|
CONTROL "Innovation SSI-2001",IDC_CHECKSSI,"Button",
|
||||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,43,80,10
|
BS_AUTOCHECKBOX | WS_TABSTOP,7,63,94,10
|
||||||
|
CONTROL "CMS / Game Blaster",IDC_CHECKCMS,"Button",
|
||||||
|
BS_AUTOCHECKBOX | WS_TABSTOP,147,63,94,10
|
||||||
|
|
||||||
CONTROL "Gravis Ultrasound",IDC_CHECKGUS,"Button",
|
CONTROL "Gravis Ultrasound",IDC_CHECKGUS,"Button",
|
||||||
BS_AUTOCHECKBOX | WS_TABSTOP,174,43,80,10
|
BS_AUTOCHECKBOX | WS_TABSTOP,7,81,94,10
|
||||||
CONTROL "Use Nuked OPL",IDC_CHECKNUKEDOPL,"Button",
|
CONTROL "Use Nuked OPL",IDC_CHECKNUKEDOPL,"Button",
|
||||||
BS_AUTOCHECKBOX | WS_TABSTOP,7,61,80,10
|
BS_AUTOCHECKBOX | WS_TABSTOP,147,81,94,10
|
||||||
END
|
END
|
||||||
|
|
||||||
CONFIGUREDLG_NETWORK DIALOG DISCARDABLE 97, 0, 267, 63
|
CONFIGUREDLG_NETWORK DIALOG DISCARDABLE 97, 0, 267, 63
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Windows resource defines.
|
* Windows resource defines.
|
||||||
*
|
*
|
||||||
* Version: @(#)resource.h 1.0.0 2017/05/30
|
* Version: @(#)resource.h 1.0.1 2017/05/30
|
||||||
*
|
*
|
||||||
* Author: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Author: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -51,7 +51,9 @@
|
|||||||
#define IDC_CHECKNUKEDOPL 1018
|
#define IDC_CHECKNUKEDOPL 1018
|
||||||
#define IDC_COMBO_JOYSTICK 1018
|
#define IDC_COMBO_JOYSTICK 1018
|
||||||
#define IDC_CHECK_SYNC 1019
|
#define IDC_CHECK_SYNC 1019
|
||||||
|
#define IDC_CHECK_MPU401 1019
|
||||||
#define IDC_LIST_FLOPPY_DRIVES 1020
|
#define IDC_LIST_FLOPPY_DRIVES 1020
|
||||||
|
#define IDC_CONFIGURE_MPU401 1020
|
||||||
#define IDC_LIST_CDROM_DRIVES 1021
|
#define IDC_LIST_CDROM_DRIVES 1021
|
||||||
#define IDC_CONFIGURE_MACHINE 1022
|
#define IDC_CONFIGURE_MACHINE 1022
|
||||||
#define IDC_COMBO_LANG 1023
|
#define IDC_COMBO_LANG 1023
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "../network.h"
|
#include "../network.h"
|
||||||
#include "../sound/sound.h"
|
#include "../sound/sound.h"
|
||||||
#include "../sound/snd_dbopl.h"
|
#include "../sound/snd_dbopl.h"
|
||||||
|
#include "../sound/snd_mpu401.h"
|
||||||
#include "../video/video.h"
|
#include "../video/video.h"
|
||||||
#include "../video/vid_voodoo.h"
|
#include "../video/vid_voodoo.h"
|
||||||
#include "../gameport.h"
|
#include "../gameport.h"
|
||||||
@@ -56,7 +57,7 @@ static int temp_gfxcard, temp_video_speed, temp_voodoo;
|
|||||||
static int temp_mouse, temp_joystick;
|
static int temp_mouse, temp_joystick;
|
||||||
|
|
||||||
/* Sound category */
|
/* Sound category */
|
||||||
static int temp_sound_card, temp_midi_id, temp_SSI2001, temp_GAMEBLASTER, temp_GUS, temp_opl3_type;
|
static int temp_sound_card, temp_midi_id, temp_mpu401, temp_SSI2001, temp_GAMEBLASTER, temp_GUS, temp_opl3_type;
|
||||||
|
|
||||||
/* Network category */
|
/* Network category */
|
||||||
static int temp_net_type, temp_net_card;
|
static int temp_net_type, temp_net_card;
|
||||||
@@ -117,6 +118,7 @@ static void win_settings_init(void)
|
|||||||
/* Sound category */
|
/* Sound category */
|
||||||
temp_sound_card = sound_card_current;
|
temp_sound_card = sound_card_current;
|
||||||
temp_midi_id = midi_id;
|
temp_midi_id = midi_id;
|
||||||
|
temp_mpu401 = mpu401_standalone_enable;
|
||||||
temp_SSI2001 = SSI2001;
|
temp_SSI2001 = SSI2001;
|
||||||
temp_GAMEBLASTER = GAMEBLASTER;
|
temp_GAMEBLASTER = GAMEBLASTER;
|
||||||
temp_GUS = GUS;
|
temp_GUS = GUS;
|
||||||
@@ -180,6 +182,7 @@ static int win_settings_changed(void)
|
|||||||
/* Sound category */
|
/* Sound category */
|
||||||
i = i || (sound_card_current != temp_sound_card);
|
i = i || (sound_card_current != temp_sound_card);
|
||||||
i = i || (midi_id != temp_midi_id);
|
i = i || (midi_id != temp_midi_id);
|
||||||
|
i = i || (mpu401_standalone_enable != temp_mpu401);
|
||||||
i = i || (SSI2001 != temp_SSI2001);
|
i = i || (SSI2001 != temp_SSI2001);
|
||||||
i = i || (GAMEBLASTER != temp_GAMEBLASTER);
|
i = i || (GAMEBLASTER != temp_GAMEBLASTER);
|
||||||
i = i || (GUS != temp_GUS);
|
i = i || (GUS != temp_GUS);
|
||||||
@@ -275,6 +278,7 @@ static void win_settings_save(void)
|
|||||||
/* Sound category */
|
/* Sound category */
|
||||||
sound_card_current = temp_sound_card;
|
sound_card_current = temp_sound_card;
|
||||||
midi_id = temp_midi_id;
|
midi_id = temp_midi_id;
|
||||||
|
mpu401_standalone_enable = temp_mpu401;
|
||||||
SSI2001 = temp_SSI2001;
|
SSI2001 = temp_SSI2001;
|
||||||
GAMEBLASTER = temp_GAMEBLASTER;
|
GAMEBLASTER = temp_GAMEBLASTER;
|
||||||
GUS = temp_GUS;
|
GUS = temp_GUS;
|
||||||
@@ -1102,6 +1106,38 @@ int find_irq_in_array(int irq, int def)
|
|||||||
|
|
||||||
static char midi_dev_name_buf[512];
|
static char midi_dev_name_buf[512];
|
||||||
|
|
||||||
|
int mpu401_present(void)
|
||||||
|
{
|
||||||
|
char *n;
|
||||||
|
|
||||||
|
n = sound_card_getname(temp_sound_card);
|
||||||
|
if (n != NULL)
|
||||||
|
{
|
||||||
|
if (!strcmp(n, "sb16") || !strcmp(n, "sbawe32"))
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return temp_mpu401 ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mpu401_standalone_allow(void)
|
||||||
|
{
|
||||||
|
char *n;
|
||||||
|
|
||||||
|
n = sound_card_getname(temp_sound_card);
|
||||||
|
if (n != NULL)
|
||||||
|
{
|
||||||
|
if (!strcmp(n, "sb16") || !strcmp(n, "sbawe32"))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
HWND h;
|
HWND h;
|
||||||
@@ -1174,6 +1210,13 @@ static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wPa
|
|||||||
if (c == temp_midi_id)
|
if (c == temp_midi_id)
|
||||||
SendMessage(h, CB_SETCURSEL, c, 0);
|
SendMessage(h, CB_SETCURSEL, c, 0);
|
||||||
}
|
}
|
||||||
|
EnableWindow(h, mpu401_present() ? TRUE : FALSE);
|
||||||
|
|
||||||
|
h = GetDlgItem(hdlg, IDC_CHECK_MPU401);
|
||||||
|
EnableWindow(h, mpu401_standalone_allow() ? TRUE : FALSE);
|
||||||
|
|
||||||
|
h = GetDlgItem(hdlg, IDC_CONFIGURE_MPU401);
|
||||||
|
EnableWindow(h, (mpu401_standalone_allow() && temp_mpu401) ? TRUE : FALSE);
|
||||||
|
|
||||||
h=GetDlgItem(hdlg, IDC_CHECKCMS);
|
h=GetDlgItem(hdlg, IDC_CHECKCMS);
|
||||||
SendMessage(h, BM_SETCHECK, temp_GAMEBLASTER, 0);
|
SendMessage(h, BM_SETCHECK, temp_GAMEBLASTER, 0);
|
||||||
@@ -1214,6 +1257,21 @@ static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wPa
|
|||||||
{
|
{
|
||||||
EnableWindow(h, FALSE);
|
EnableWindow(h, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h = GetDlgItem(hdlg, IDC_COMBO_MIDI);
|
||||||
|
EnableWindow(h, mpu401_present() ? TRUE : FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_CHECK_MPU401:
|
||||||
|
h = GetDlgItem(hdlg, IDC_CHECK_MPU401);
|
||||||
|
temp_mpu401 = SendMessage(h, BM_GETCHECK, 0, 0);
|
||||||
|
|
||||||
|
h = GetDlgItem(hdlg, IDC_CONFIGURE_MPU401);
|
||||||
|
EnableWindow(h, mpu401_present() ? TRUE : FALSE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case IDC_CONFIGURE_MPU401:
|
||||||
|
deviceconfig_open(hdlg, (void *)&mpu401_device);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -1225,6 +1283,9 @@ static BOOL CALLBACK win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wPa
|
|||||||
h = GetDlgItem(hdlg, IDC_COMBO_MIDI);
|
h = GetDlgItem(hdlg, IDC_COMBO_MIDI);
|
||||||
temp_midi_id = SendMessage(h, CB_GETCURSEL, 0, 0);
|
temp_midi_id = SendMessage(h, CB_GETCURSEL, 0, 0);
|
||||||
|
|
||||||
|
h = GetDlgItem(hdlg, IDC_CHECK_MPU401);
|
||||||
|
temp_mpu401 = SendMessage(h, BM_GETCHECK, 0, 0);
|
||||||
|
|
||||||
h = GetDlgItem(hdlg, IDC_CHECKCMS);
|
h = GetDlgItem(hdlg, IDC_CHECKCMS);
|
||||||
temp_GAMEBLASTER = SendMessage(h, BM_GETCHECK, 0, 0);
|
temp_GAMEBLASTER = SendMessage(h, BM_GETCHECK, 0, 0);
|
||||||
|
|
||||||
|
|||||||
11
src/config.c
11
src/config.c
@@ -30,6 +30,7 @@
|
|||||||
#include "win/plat_joystick.h"
|
#include "win/plat_joystick.h"
|
||||||
#include "win/plat_midi.h"
|
#include "win/plat_midi.h"
|
||||||
#include "sound/snd_dbopl.h"
|
#include "sound/snd_dbopl.h"
|
||||||
|
#include "sound/snd_mpu401.h"
|
||||||
#include "sound/snd_opl.h"
|
#include "sound/snd_opl.h"
|
||||||
#include "sound/sound.h"
|
#include "sound/sound.h"
|
||||||
#include "video/video.h"
|
#include "video/video.h"
|
||||||
@@ -976,6 +977,7 @@ static void loadconfig_sound(void)
|
|||||||
sound_card_current = 0;
|
sound_card_current = 0;
|
||||||
|
|
||||||
midi_id = config_get_int(cat, "midi_host_device", 0);
|
midi_id = config_get_int(cat, "midi_host_device", 0);
|
||||||
|
mpu401_standalone_enable = !!config_get_int(cat, "mpu401_standalone", 0);
|
||||||
|
|
||||||
SSI2001 = !!config_get_int(cat, "ssi2001", 0);
|
SSI2001 = !!config_get_int(cat, "ssi2001", 0);
|
||||||
GAMEBLASTER = !!config_get_int(cat, "gameblaster", 0);
|
GAMEBLASTER = !!config_get_int(cat, "gameblaster", 0);
|
||||||
@@ -2004,6 +2006,15 @@ static void saveconfig_sound(void)
|
|||||||
config_set_int(cat, "midi_host_device", midi_id);
|
config_set_int(cat, "midi_host_device", midi_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mpu401_standalone_enable == 0)
|
||||||
|
{
|
||||||
|
config_delete_var(cat, "mpu401_standalone");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
config_set_int(cat, "mpu401_standalone", mpu401_standalone_enable);
|
||||||
|
}
|
||||||
|
|
||||||
if (SSI2001 == 0)
|
if (SSI2001 == 0)
|
||||||
{
|
{
|
||||||
config_delete_var(cat, "ssi2001");
|
config_delete_var(cat, "ssi2001");
|
||||||
|
|||||||
@@ -528,6 +528,7 @@ enum
|
|||||||
GFX_OTI037, /*Oak OTI-037*/
|
GFX_OTI037, /*Oak OTI-037*/
|
||||||
|
|
||||||
GFX_VIRGEVX, /*S3 Virge/VX*/
|
GFX_VIRGEVX, /*S3 Virge/VX*/
|
||||||
|
GFX_VIRGEDX4, /*S3 Virge/DX (VBE 2.0)*/
|
||||||
|
|
||||||
GFX_MAX
|
GFX_MAX
|
||||||
};
|
};
|
||||||
|
|||||||
5
src/pc.c
5
src/pc.c
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* Emulation core dispatcher.
|
* Emulation core dispatcher.
|
||||||
*
|
*
|
||||||
* Version: @(#)pc.c 1.0.0 2017/05/30
|
* Version: @(#)pc.c 1.0.1 2017/05/30
|
||||||
*
|
*
|
||||||
* Author: Sarah Walker, <http://pcem-emulator.co.uk/>
|
* Author: Sarah Walker, <http://pcem-emulator.co.uk/>
|
||||||
* Miran Grca, <mgrca8@gmail.com>
|
* Miran Grca, <mgrca8@gmail.com>
|
||||||
@@ -64,6 +64,7 @@
|
|||||||
#include "sound/sound.h"
|
#include "sound/sound.h"
|
||||||
#include "sound/snd_cms.h"
|
#include "sound/snd_cms.h"
|
||||||
#include "sound/snd_dbopl.h"
|
#include "sound/snd_dbopl.h"
|
||||||
|
#include "sound/snd_mpu401.h"
|
||||||
#include "sound/snd_opl.h"
|
#include "sound/snd_opl.h"
|
||||||
#include "sound/snd_gus.h"
|
#include "sound/snd_gus.h"
|
||||||
#include "sound/snd_sb.h"
|
#include "sound/snd_sb.h"
|
||||||
@@ -522,6 +523,8 @@ void resetpchard(void)
|
|||||||
scsi_card_init();
|
scsi_card_init();
|
||||||
|
|
||||||
sound_card_init();
|
sound_card_init();
|
||||||
|
if (mpu401_standalone_enable)
|
||||||
|
mpu401_device_add();
|
||||||
if (GUS)
|
if (GUS)
|
||||||
device_add(&gus_device);
|
device_add(&gus_device);
|
||||||
if (GAMEBLASTER)
|
if (GAMEBLASTER)
|
||||||
|
|||||||
Reference in New Issue
Block a user