mirror of
https://github.com/86Box/86Box.git
synced 2026-02-23 01:48:21 -07:00
Merge pull request #5318 from jriwanek-forks/improvements
General Improvements, Cleanups and additions
This commit is contained in:
@@ -1159,7 +1159,7 @@ cdrom_get_from_name(const char *s)
|
||||
wchar_t tempmsg[2048];
|
||||
sprintf(n, "WARNING: CD-ROM \"%s\" not found - contact 86Box support\n", s);
|
||||
swprintf(tempmsg, sizeof_w(tempmsg), L"%hs", n);
|
||||
pclog(n);
|
||||
pclog("%s", n);
|
||||
ui_msgbox_header(MBX_INFO,
|
||||
plat_get_string(STRING_HW_NOT_AVAILABLE_TITLE),
|
||||
tempmsg);
|
||||
|
||||
@@ -275,8 +275,8 @@ vt82c49x_write(uint16_t addr, uint8_t val, void *priv)
|
||||
case 0x71:
|
||||
if (dev->has_ide) {
|
||||
ide_pri_disable();
|
||||
ide_set_base(0, (val & 0x40) ? 0x170 : 0x1f0);
|
||||
ide_set_side(0, (val & 0x40) ? 0x376 : 0x3f6);
|
||||
ide_set_base(0, (val & 0x40) ? HDC_SECONDARY_BASE : HDC_PRIMARY_BASE);
|
||||
ide_set_side(0, (val & 0x40) ? HDC_SECONDARY_SIDE : HDC_PRIMARY_SIDE);
|
||||
if (val & 0x01)
|
||||
ide_pri_enable();
|
||||
vt82c49x_log("VT82C496 IDE now %sabled as %sary\n", (val & 0x01) ? "en" : "dis",
|
||||
|
||||
@@ -72,7 +72,9 @@ static const struct {
|
||||
{ &ide_isa_device },
|
||||
{ &ide_isa_2ch_device },
|
||||
{ &xtide_at_device },
|
||||
{ &xtide_at_2ch_device },
|
||||
{ &xtide_at_ps2_device },
|
||||
{ &xtide_at_ps2_2ch_device },
|
||||
{ &xta_wdxt150_device },
|
||||
{ &xtide_acculogic_device },
|
||||
{ &xtide_device },
|
||||
|
||||
@@ -41,11 +41,13 @@
|
||||
#include <86box/mem.h>
|
||||
#include <86box/rom.h>
|
||||
#include <86box/timer.h>
|
||||
#include <86box/nvr.h>
|
||||
#include <86box/device.h>
|
||||
#include <86box/hdc.h>
|
||||
#include <86box/hdc_ide.h>
|
||||
#include <86box/plat_unused.h>
|
||||
|
||||
#define ROM_PATH_TINY "roms/hdd/xtide/ide_tiny.bin"
|
||||
#define ROM_PATH_XT "roms/hdd/xtide/ide_xt.bin"
|
||||
#define ROM_PATH_XTP "roms/hdd/xtide/ide_xtp.bin"
|
||||
#define ROM_PATH_AT "roms/hdd/xtide/ide_at.bin"
|
||||
@@ -57,6 +59,7 @@ typedef struct xtide_t {
|
||||
void *ide_board;
|
||||
uint8_t data_high;
|
||||
rom_t bios_rom;
|
||||
char nvr_path[64];
|
||||
} xtide_t;
|
||||
|
||||
static void
|
||||
@@ -136,14 +139,26 @@ xtide_init(const device_t *info)
|
||||
|
||||
rom_init(&xtide->bios_rom,
|
||||
device_get_bios_file(info, device_get_config_bios("bios"), 0),
|
||||
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
device_get_config_hex20("bios_addr"), 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
xtide->ide_board = ide_xtide_init();
|
||||
|
||||
io_sethandler(0x0300, 16,
|
||||
io_sethandler(device_get_config_hex16("base"), 16,
|
||||
xtide_read, NULL, NULL,
|
||||
xtide_write, NULL, NULL, xtide);
|
||||
|
||||
uint8_t rom_writes_enabled = device_get_config_int("rom_writes_enabled");
|
||||
|
||||
if (rom_writes_enabled) {
|
||||
mem_mapping_set_write_handler(&xtide->bios_rom.mapping, rom_write, rom_writew, rom_writel);
|
||||
sprintf(xtide->nvr_path, "xtide_%i.nvr", device_get_instance());
|
||||
FILE *fp = nvr_fopen(xtide->nvr_path, "rb");
|
||||
if (fp != NULL) {
|
||||
fread(xtide->bios_rom.rom, 1, 0x2000, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
|
||||
return xtide;
|
||||
}
|
||||
|
||||
@@ -156,7 +171,10 @@ xtide_at_init(const device_t *info)
|
||||
device_get_bios_file(info, device_get_config_bios("bios"), 0),
|
||||
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
device_add(&ide_isa_2ch_device);
|
||||
if (info->local == 1)
|
||||
device_add(&ide_isa_2ch_device);
|
||||
else
|
||||
device_add(&ide_isa_device);
|
||||
|
||||
return xtide;
|
||||
}
|
||||
@@ -189,6 +207,14 @@ xtide_close(void *priv)
|
||||
{
|
||||
xtide_t *xtide = (xtide_t *) priv;
|
||||
|
||||
if (xtide->nvr_path[0] != 0x00) {
|
||||
FILE *fp = nvr_fopen(xtide->nvr_path, "wb");
|
||||
if (fp != NULL) {
|
||||
fwrite(xtide->bios_rom.rom, 1, 0x2000, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
|
||||
free(xtide);
|
||||
|
||||
ide_xtide_close();
|
||||
@@ -202,7 +228,10 @@ xtide_at_ps2_init(UNUSED(const device_t *info))
|
||||
rom_init(&xtide->bios_rom, ROM_PATH_PS2AT,
|
||||
0xc8000, 0x2000, 0x1fff, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
device_add(&ide_isa_2ch_device);
|
||||
if (info->local == 1)
|
||||
device_add(&ide_isa_2ch_device);
|
||||
else
|
||||
device_add(&ide_isa_device);
|
||||
|
||||
return xtide;
|
||||
}
|
||||
@@ -221,8 +250,104 @@ xtide_at_close(void *priv)
|
||||
free(xtide);
|
||||
}
|
||||
|
||||
// clang-format off
|
||||
static const device_config_t xtide_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "base",
|
||||
.description = "Address",
|
||||
.type = CONFIG_HEX16,
|
||||
.default_string = NULL,
|
||||
.default_int = 0x300,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "200H", .value = 0x200 },
|
||||
{ .description = "210H", .value = 0x210 },
|
||||
{ .description = "220H", .value = 0x220 },
|
||||
{ .description = "230H", .value = 0x230 },
|
||||
{ .description = "240H", .value = 0x240 },
|
||||
{ .description = "250H", .value = 0x250 },
|
||||
{ .description = "260H", .value = 0x260 },
|
||||
{ .description = "270H", .value = 0x270 },
|
||||
{ .description = "280H", .value = 0x280 },
|
||||
{ .description = "290H", .value = 0x290 },
|
||||
{ .description = "2A0H", .value = 0x2a0 },
|
||||
{ .description = "2B0H", .value = 0x2b0 },
|
||||
{ .description = "2C0H", .value = 0x2c0 },
|
||||
{ .description = "2D0H", .value = 0x2d0 },
|
||||
{ .description = "2E0H", .value = 0x2e0 },
|
||||
{ .description = "2F0H", .value = 0x2f0 },
|
||||
{ .description = "300H", .value = 0x300 },
|
||||
{ .description = "310H", .value = 0x310 },
|
||||
{ .description = "320H", .value = 0x320 },
|
||||
{ .description = "330H", .value = 0x330 },
|
||||
{ .description = "340H", .value = 0x340 },
|
||||
{ .description = "350H", .value = 0x350 },
|
||||
{ .description = "360H", .value = 0x360 },
|
||||
{ .description = "370H", .value = 0x370 },
|
||||
{ .description = "380H", .value = 0x380 },
|
||||
{ .description = "390H", .value = 0x390 },
|
||||
{ .description = "3A0H", .value = 0x3a0 },
|
||||
{ .description = "3B0H", .value = 0x3b0 },
|
||||
{ .description = "3C0H", .value = 0x3c0 },
|
||||
{ .description = "3D0H", .value = 0x3d0 },
|
||||
{ .description = "3E0H", .value = 0x3e0 },
|
||||
{ .description = "3F0H", .value = 0x3f0 },
|
||||
{ NULL }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "rom_writes_enabled",
|
||||
.description = "Enable BIOS extension ROM Writes",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = NULL,
|
||||
.default_int = 0,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = { { 0 } },
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS Address",
|
||||
.type = CONFIG_HEX20,
|
||||
.default_string = NULL,
|
||||
.default_int = 0xd0000,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "Disabled", .value = 0x00000 },
|
||||
#if 0
|
||||
// Supported on XT IDE Deluxe By Monotech
|
||||
{ .description = "C000H", .value = 0xc0000 },
|
||||
{ .description = "C200H", .value = 0xc2000 },
|
||||
{ .description = "C400H", .value = 0xc4000 },
|
||||
{ .description = "C600H", .value = 0xc6000 },
|
||||
#endif
|
||||
{ .description = "C800H", .value = 0xc8000 },
|
||||
{ .description = "CA00H", .value = 0xca000 },
|
||||
{ .description = "CC00H", .value = 0xcc000 },
|
||||
{ .description = "CE00H", .value = 0xce000 },
|
||||
{ .description = "D000H", .value = 0xd0000 },
|
||||
{ .description = "D200H", .value = 0xd2000 },
|
||||
{ .description = "D400H", .value = 0xd4000 },
|
||||
{ .description = "D600H", .value = 0xd6000 },
|
||||
{ .description = "D800H", .value = 0xd8000 },
|
||||
{ .description = "DA00H", .value = 0xda000 },
|
||||
{ .description = "DC00H", .value = 0xdc000 },
|
||||
{ .description = "DE00H", .value = 0xde000 },
|
||||
#if 0
|
||||
// Supported on VCFed rev 2
|
||||
{ .description = "E000H", .value = 0xe0000 },
|
||||
{ .description = "E400H", .value = 0xe4000 },
|
||||
{ .description = "E800H", .value = 0xe8000 },
|
||||
{ .description = "EC00H", .value = 0xec000 },
|
||||
#endif
|
||||
{ .description = "" }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "bios",
|
||||
.description = "BIOS Revision",
|
||||
@@ -255,11 +380,9 @@ static const device_config_t xtide_config[] = {
|
||||
},
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
static const device_config_t xtide_at_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "bios",
|
||||
.description = "BIOS Revision",
|
||||
@@ -292,8 +415,8 @@ static const device_config_t xtide_at_config[] = {
|
||||
},
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
// clang-format on
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
const device_t xtide_device = {
|
||||
.name = "PC/XT XTIDE",
|
||||
@@ -310,10 +433,24 @@ const device_t xtide_device = {
|
||||
};
|
||||
|
||||
const device_t xtide_at_device = {
|
||||
.name = "PC/AT XTIDE (Primary Only)",
|
||||
.internal_name = "xtide_at_1ch",
|
||||
.flags = DEVICE_ISA16,
|
||||
.local = 0,
|
||||
.init = xtide_at_init,
|
||||
.close = xtide_at_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = xtide_at_config
|
||||
};
|
||||
|
||||
const device_t xtide_at_2ch_device = {
|
||||
.name = "PC/AT XTIDE",
|
||||
.internal_name = "xtide_at",
|
||||
.flags = DEVICE_ISA16,
|
||||
.local = 0,
|
||||
.local = 1,
|
||||
.init = xtide_at_init,
|
||||
.close = xtide_at_close,
|
||||
.reset = NULL,
|
||||
@@ -338,8 +475,8 @@ const device_t xtide_acculogic_device = {
|
||||
};
|
||||
|
||||
const device_t xtide_at_ps2_device = {
|
||||
.name = "PS/2 AT XTIDE (1.1.5)",
|
||||
.internal_name = "xtide_at_ps2",
|
||||
.name = "PS/2 AT XTIDE (1.1.5) (Primary Only)",
|
||||
.internal_name = "xtide_at_ps2_1ch",
|
||||
.flags = DEVICE_ISA16,
|
||||
.local = 0,
|
||||
.init = xtide_at_ps2_init,
|
||||
@@ -350,3 +487,17 @@ const device_t xtide_at_ps2_device = {
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t xtide_at_ps2_2ch_device = {
|
||||
.name = "PS/2 AT XTIDE (1.1.5)",
|
||||
.internal_name = "xtide_at_ps2",
|
||||
.flags = DEVICE_ISA16,
|
||||
.local = 1,
|
||||
.init = xtide_at_ps2_init,
|
||||
.close = xtide_at_close,
|
||||
.reset = NULL,
|
||||
.available = xtide_at_ps2_available,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
@@ -47,57 +47,6 @@ typedef struct monster_fdc_t {
|
||||
char nvr_path[64];
|
||||
} monster_fdc_t;
|
||||
|
||||
static void
|
||||
rom_write(uint32_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
const rom_t *rom = (rom_t *) priv;
|
||||
|
||||
#ifdef ROM_TRACE
|
||||
if (rom->mapping.base == ROM_TRACE)
|
||||
rom_log("ROM: read byte from BIOS at %06lX\n", addr);
|
||||
#endif
|
||||
|
||||
if (addr < rom->mapping.base)
|
||||
return;
|
||||
if (addr >= (rom->mapping.base + rom->sz))
|
||||
return;
|
||||
rom->rom[(addr - rom->mapping.base) & rom->mask] = val;
|
||||
}
|
||||
|
||||
static void
|
||||
rom_writew(uint32_t addr, uint16_t val, void *priv)
|
||||
{
|
||||
rom_t *rom = (rom_t *) priv;
|
||||
|
||||
#ifdef ROM_TRACE
|
||||
if (rom->mapping.base == ROM_TRACE)
|
||||
rom_log("ROM: read word from BIOS at %06lX\n", addr);
|
||||
#endif
|
||||
|
||||
if (addr < (rom->mapping.base - 1))
|
||||
return;
|
||||
if (addr >= (rom->mapping.base + rom->sz))
|
||||
return;
|
||||
*(uint16_t *) &rom->rom[(addr - rom->mapping.base) & rom->mask] = val;
|
||||
}
|
||||
|
||||
static void
|
||||
rom_writel(uint32_t addr, uint32_t val, void *priv)
|
||||
{
|
||||
rom_t *rom = (rom_t *) priv;
|
||||
|
||||
#ifdef ROM_TRACE
|
||||
if (rom->mapping.base == ROM_TRACE)
|
||||
rom_log("ROM: read long from BIOS at %06lX\n", addr);
|
||||
#endif
|
||||
|
||||
if (addr < (rom->mapping.base - 3))
|
||||
return;
|
||||
if (addr >= (rom->mapping.base + rom->sz))
|
||||
return;
|
||||
*(uint32_t *) &rom->rom[(addr - rom->mapping.base) & rom->mask] = val;
|
||||
}
|
||||
|
||||
static void
|
||||
monster_fdc_close(void *priv)
|
||||
{
|
||||
|
||||
@@ -99,10 +99,12 @@ extern const device_t mcide_device;
|
||||
extern const device_t xta_wdxt150_device; /* xta_wdxt150 */
|
||||
extern const device_t xta_hd20_device; /* EuroPC internal */
|
||||
|
||||
extern const device_t xtide_device; /* xtide_xt */
|
||||
extern const device_t xtide_at_device; /* xtide_at */
|
||||
extern const device_t xtide_acculogic_device; /* xtide_ps2 */
|
||||
extern const device_t xtide_at_ps2_device; /* xtide_at_ps2 */
|
||||
extern const device_t xtide_device; /* xtide_xt */
|
||||
extern const device_t xtide_at_device; /* xtide_at */
|
||||
extern const device_t xtide_at_2ch_device; /* xtide_at_2ch */
|
||||
extern const device_t xtide_acculogic_device; /* xtide_ps2 */
|
||||
extern const device_t xtide_at_ps2_device; /* xtide_at_ps2 */
|
||||
extern const device_t xtide_at_ps2_2ch_device; /* xtide_at_ps2_2ch */
|
||||
|
||||
/* Miscellaneous */
|
||||
extern const device_t lba_enhancer_device;
|
||||
|
||||
@@ -52,7 +52,12 @@ extern uint8_t rom_read(uint32_t addr, void *priv);
|
||||
extern uint16_t rom_readw(uint32_t addr, void *priv);
|
||||
extern uint32_t rom_readl(uint32_t addr, void *priv);
|
||||
|
||||
extern void rom_write(uint32_t addr, uint8_t val, void *priv);
|
||||
extern void rom_writew(uint32_t addr, uint16_t val, void *priv);
|
||||
extern void rom_writel(uint32_t addr, uint32_t val, void *priv);
|
||||
|
||||
extern void rom_get_full_path(char *dest, const char *fn);
|
||||
|
||||
extern FILE *rom_fopen(const char *fn, char *mode);
|
||||
extern int rom_getfile(char *fn, char *s, int size);
|
||||
extern int rom_present(const char *fn);
|
||||
|
||||
@@ -244,6 +244,57 @@ rom_readl(uint32_t addr, void *priv)
|
||||
return (*(uint32_t *) &rom->rom[(addr - rom->mapping.base) & rom->mask]);
|
||||
}
|
||||
|
||||
void
|
||||
rom_write(uint32_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
const rom_t *rom = (rom_t *) priv;
|
||||
|
||||
#ifdef ROM_TRACE
|
||||
if (rom->mapping.base == ROM_TRACE)
|
||||
rom_log("ROM: write byte from BIOS at %06lX\n", addr);
|
||||
#endif
|
||||
|
||||
if (addr < rom->mapping.base)
|
||||
return;
|
||||
if (addr >= (rom->mapping.base + rom->sz))
|
||||
return;
|
||||
rom->rom[(addr - rom->mapping.base) & rom->mask] = val;
|
||||
}
|
||||
|
||||
void
|
||||
rom_writew(uint32_t addr, uint16_t val, void *priv)
|
||||
{
|
||||
rom_t *rom = (rom_t *) priv;
|
||||
|
||||
#ifdef ROM_TRACE
|
||||
if (rom->mapping.base == ROM_TRACE)
|
||||
rom_log("ROM: write word from BIOS at %06lX\n", addr);
|
||||
#endif
|
||||
|
||||
if (addr < (rom->mapping.base - 1))
|
||||
return;
|
||||
if (addr >= (rom->mapping.base + rom->sz))
|
||||
return;
|
||||
*(uint16_t *) &rom->rom[(addr - rom->mapping.base) & rom->mask] = val;
|
||||
}
|
||||
|
||||
void
|
||||
rom_writel(uint32_t addr, uint32_t val, void *priv)
|
||||
{
|
||||
rom_t *rom = (rom_t *) priv;
|
||||
|
||||
#ifdef ROM_TRACE
|
||||
if (rom->mapping.base == ROM_TRACE)
|
||||
rom_log("ROM: write long from BIOS at %06lX\n", addr);
|
||||
#endif
|
||||
|
||||
if (addr < (rom->mapping.base - 3))
|
||||
return;
|
||||
if (addr >= (rom->mapping.base + rom->sz))
|
||||
return;
|
||||
*(uint32_t *) &rom->rom[(addr - rom->mapping.base) & rom->mask] = val;
|
||||
}
|
||||
|
||||
int
|
||||
rom_load_linear_oddeven(const char *fn, uint32_t addr, int sz, int off, uint8_t *ptr)
|
||||
{
|
||||
|
||||
@@ -50,13 +50,15 @@ void
|
||||
SettingsSound::save()
|
||||
{
|
||||
for (uint8_t i = 0; i < SOUND_CARD_MAX; ++i) {
|
||||
auto *cbox = findChild<QComboBox *>(QString("comboBoxSoundCard%1").arg(i + 1));
|
||||
sound_card_current[i] = cbox->currentData().toInt();
|
||||
QComboBox *cbox = findChild<QComboBox *>(QString("comboBoxSoundCard%1").arg(i + 1));
|
||||
sound_card_current[i] = cbox->currentData().toInt();
|
||||
}
|
||||
|
||||
midi_output_device_current = ui->comboBoxMidiOut->currentData().toInt();
|
||||
midi_input_device_current = ui->comboBoxMidiIn->currentData().toInt();
|
||||
mpu401_standalone_enable = ui->checkBoxMPU401->isChecked() ? 1 : 0;
|
||||
|
||||
midi_input_device_current = ui->comboBoxMidiIn->currentData().toInt();
|
||||
|
||||
mpu401_standalone_enable = ui->checkBoxMPU401->isChecked() ? 1 : 0;
|
||||
|
||||
sound_is_float = ui->checkBoxFloat32->isChecked() ? 1 : 0;
|
||||
|
||||
@@ -74,12 +76,13 @@ SettingsSound::onCurrentMachineChanged(const int machineId)
|
||||
int c;
|
||||
int selectedRow;
|
||||
|
||||
// Sound Card
|
||||
for (uint8_t i = 0; i < SOUND_CARD_MAX; ++i) {
|
||||
auto * cbox = findChild<QComboBox *>(QString("comboBoxSoundCard%1").arg(i + 1));
|
||||
auto * model = cbox->model();
|
||||
const auto removeRows = model->rowCount();
|
||||
c = 0;
|
||||
selectedRow = 0;
|
||||
QComboBox *cbox = findChild<QComboBox *>(QString("comboBoxSoundCard%1").arg(i + 1));
|
||||
c = 0;
|
||||
auto model = cbox->model();
|
||||
auto removeRows = model->rowCount();
|
||||
selectedRow = 0;
|
||||
|
||||
while (true) {
|
||||
/* Skip "internal" if machine doesn't have it or this is not the primary card. */
|
||||
@@ -88,17 +91,21 @@ SettingsSound::onCurrentMachineChanged(const int machineId)
|
||||
continue;
|
||||
}
|
||||
|
||||
auto name = DeviceConfig::DeviceName(sound_card_getdevice(c), sound_card_get_internal_name(c), 1);
|
||||
const QString name = DeviceConfig::DeviceName(sound_card_getdevice(c), sound_card_get_internal_name(c), 1);
|
||||
if (name.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (sound_card_available(c) && device_is_valid(sound_card_getdevice(c), machineId)) {
|
||||
int row = Models::AddEntry(model, name, c);
|
||||
if (c == sound_card_current[i]) {
|
||||
selectedRow = row - removeRows;
|
||||
if (sound_card_available(c)) {
|
||||
const device_t *sound_dev = sound_card_getdevice(c);
|
||||
if (device_is_valid(sound_dev, machineId)) {
|
||||
int row = Models::AddEntry(model, name, c);
|
||||
if (c == sound_card_current[i]) {
|
||||
selectedRow = row - removeRows;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
c++;
|
||||
}
|
||||
|
||||
@@ -108,12 +115,14 @@ SettingsSound::onCurrentMachineChanged(const int machineId)
|
||||
cbox->setCurrentIndex(selectedRow);
|
||||
}
|
||||
|
||||
auto model = ui->comboBoxMidiOut->model();
|
||||
auto removeRows = model->rowCount();
|
||||
c = 0;
|
||||
selectedRow = 0;
|
||||
// Midi Out
|
||||
c = 0;
|
||||
auto model = ui->comboBoxMidiOut->model();
|
||||
auto removeRows = model->rowCount();
|
||||
selectedRow = 0;
|
||||
|
||||
while (true) {
|
||||
QString name = DeviceConfig::DeviceName(midi_out_device_getdevice(c), midi_out_device_get_internal_name(c), 0);
|
||||
const QString name = DeviceConfig::DeviceName(midi_out_device_getdevice(c), midi_out_device_get_internal_name(c), 0);
|
||||
if (name.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
@@ -124,19 +133,23 @@ SettingsSound::onCurrentMachineChanged(const int machineId)
|
||||
selectedRow = row - removeRows;
|
||||
}
|
||||
}
|
||||
|
||||
c++;
|
||||
}
|
||||
|
||||
model->removeRows(0, removeRows);
|
||||
ui->comboBoxMidiOut->setEnabled(model->rowCount() > 0);
|
||||
ui->comboBoxMidiOut->setCurrentIndex(-1);
|
||||
ui->comboBoxMidiOut->setCurrentIndex(selectedRow);
|
||||
|
||||
// Midi In
|
||||
c = 0;
|
||||
model = ui->comboBoxMidiIn->model();
|
||||
removeRows = model->rowCount();
|
||||
c = 0;
|
||||
selectedRow = 0;
|
||||
|
||||
while (true) {
|
||||
QString name = DeviceConfig::DeviceName(midi_in_device_getdevice(c), midi_in_device_get_internal_name(c), 0);
|
||||
const QString name = DeviceConfig::DeviceName(midi_in_device_getdevice(c), midi_in_device_get_internal_name(c), 0);
|
||||
if (name.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
@@ -150,14 +163,19 @@ SettingsSound::onCurrentMachineChanged(const int machineId)
|
||||
|
||||
c++;
|
||||
}
|
||||
|
||||
model->removeRows(0, removeRows);
|
||||
ui->comboBoxMidiIn->setEnabled(model->rowCount() > 0);
|
||||
ui->comboBoxMidiIn->setCurrentIndex(-1);
|
||||
ui->comboBoxMidiIn->setCurrentIndex(selectedRow);
|
||||
|
||||
// Standalone MPU401
|
||||
ui->checkBoxMPU401->setChecked(mpu401_standalone_enable > 0);
|
||||
|
||||
// Float32 Sound
|
||||
ui->checkBoxFloat32->setChecked(sound_is_float > 0);
|
||||
|
||||
// FM Driver
|
||||
switch (fm_driver) {
|
||||
case FM_DRV_YMFM:
|
||||
ui->radioButtonYMFM->setChecked(true);
|
||||
@@ -193,6 +211,7 @@ SettingsSound::on_comboBoxSoundCard1_currentIndexChanged(int index)
|
||||
return;
|
||||
}
|
||||
int sndCard = ui->comboBoxSoundCard1->currentData().toInt();
|
||||
|
||||
if (sndCard == SOUND_INTERNAL)
|
||||
ui->pushButtonConfigureSoundCard1->setEnabled(machine_has_flags(machineId, MACHINE_SOUND) &&
|
||||
device_has_config(machine_get_snd_device(machineId)));
|
||||
@@ -203,8 +222,9 @@ SettingsSound::on_comboBoxSoundCard1_currentIndexChanged(int index)
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard1_clicked()
|
||||
{
|
||||
int sndCard = ui->comboBoxSoundCard1->currentData().toInt();
|
||||
auto *device = sound_card_getdevice(sndCard);
|
||||
int sndCard = ui->comboBoxSoundCard1->currentData().toInt();
|
||||
auto *device = sound_card_getdevice(sndCard);
|
||||
|
||||
if (sndCard == SOUND_INTERNAL)
|
||||
device = machine_get_snd_device(machineId);
|
||||
DeviceConfig::ConfigureDevice(device, 1, qobject_cast<Settings *>(Settings::settings));
|
||||
@@ -216,15 +236,17 @@ SettingsSound::on_comboBoxSoundCard2_currentIndexChanged(int index)
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int sndCard = ui->comboBoxSoundCard2->currentData().toInt();
|
||||
|
||||
ui->pushButtonConfigureSoundCard2->setEnabled(sound_card_has_config(sndCard));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard2_clicked()
|
||||
{
|
||||
int sndCard = ui->comboBoxSoundCard2->currentData().toInt();
|
||||
auto *device = sound_card_getdevice(sndCard);
|
||||
int sndCard = ui->comboBoxSoundCard2->currentData().toInt();
|
||||
const device_t *device = sound_card_getdevice(sndCard);
|
||||
DeviceConfig::ConfigureDevice(device, 2, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
@@ -234,15 +256,18 @@ SettingsSound::on_comboBoxSoundCard3_currentIndexChanged(int index)
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int sndCard = ui->comboBoxSoundCard3->currentData().toInt();
|
||||
|
||||
ui->pushButtonConfigureSoundCard3->setEnabled(sound_card_has_config(sndCard));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard3_clicked()
|
||||
{
|
||||
int sndCard = ui->comboBoxSoundCard3->currentData().toInt();
|
||||
auto *device = sound_card_getdevice(sndCard);
|
||||
int sndCard = ui->comboBoxSoundCard3->currentData().toInt();
|
||||
const device_t *device = sound_card_getdevice(sndCard);
|
||||
|
||||
DeviceConfig::ConfigureDevice(device, 3, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
@@ -252,15 +277,18 @@ SettingsSound::on_comboBoxSoundCard4_currentIndexChanged(int index)
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int sndCard = ui->comboBoxSoundCard4->currentData().toInt();
|
||||
|
||||
ui->pushButtonConfigureSoundCard4->setEnabled(sound_card_has_config(sndCard));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard4_clicked()
|
||||
{
|
||||
int sndCard = ui->comboBoxSoundCard4->currentData().toInt();
|
||||
auto *device = sound_card_getdevice(sndCard);
|
||||
int sndCard = ui->comboBoxSoundCard4->currentData().toInt();
|
||||
const device_t *device = sound_card_getdevice(sndCard);
|
||||
|
||||
DeviceConfig::ConfigureDevice(device, 4, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
@@ -270,6 +298,7 @@ SettingsSound::on_comboBoxMidiOut_currentIndexChanged(int index)
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
ui->pushButtonConfigureMidiOut->setEnabled(midi_out_device_has_config(ui->comboBoxMidiOut->currentData().toInt()));
|
||||
ui->checkBoxMPU401->setEnabled(allowMpu401(ui) && (machine_has_bus(machineId, MACHINE_BUS_ISA) || machine_has_bus(machineId, MACHINE_BUS_MCA)));
|
||||
ui->pushButtonConfigureMPU401->setEnabled(allowMpu401(ui) && ui->checkBoxMPU401->isChecked());
|
||||
@@ -288,6 +317,7 @@ SettingsSound::on_comboBoxMidiIn_currentIndexChanged(int index)
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
ui->pushButtonConfigureMidiIn->setEnabled(midi_in_device_has_config(ui->comboBoxMidiIn->currentData().toInt()));
|
||||
ui->checkBoxMPU401->setEnabled(allowMpu401(ui) && (machine_has_bus(machineId, MACHINE_BUS_ISA) || machine_has_bus(machineId, MACHINE_BUS_MCA)));
|
||||
ui->pushButtonConfigureMPU401->setEnabled(allowMpu401(ui) && ui->checkBoxMPU401->isChecked());
|
||||
|
||||
@@ -52,8 +52,8 @@ void
|
||||
SettingsStorageControllers::save()
|
||||
{
|
||||
/* Storage devices category */
|
||||
for (int i = 0; i < SCSI_CARD_MAX; ++i) {
|
||||
auto *cbox = findChild<QComboBox *>(QString("comboBoxSCSI%1").arg(i + 1));
|
||||
for (uint8_t i = 0; i < SCSI_CARD_MAX; ++i) {
|
||||
QComboBox *cbox = findChild<QComboBox *>(QString("comboBoxSCSI%1").arg(i + 1));
|
||||
scsi_card_current[i] = cbox->currentData().toInt();
|
||||
}
|
||||
hdc_current[0] = ui->comboBoxHD->currentData().toInt();
|
||||
@@ -71,10 +71,11 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId)
|
||||
this->machineId = machineId;
|
||||
|
||||
/*HD controller config*/
|
||||
int c = 0;
|
||||
auto *model = ui->comboBoxHD->model();
|
||||
auto removeRows = model->rowCount();
|
||||
int c = 0;
|
||||
int selectedRow = 0;
|
||||
|
||||
while (true) {
|
||||
/* Skip "internal" if machine doesn't have it. */
|
||||
if ((c == 1) && (machine_has_flags(machineId, MACHINE_HDC) == 0)) {
|
||||
@@ -88,7 +89,7 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId)
|
||||
}
|
||||
|
||||
if (hdc_available(c)) {
|
||||
auto *hdc_dev = hdc_get_device(c);
|
||||
const device_t *hdc_dev = hdc_get_device(c);
|
||||
|
||||
if (device_is_valid(hdc_dev, machineId)) {
|
||||
int row = Models::AddEntry(model, name, c);
|
||||
@@ -124,7 +125,7 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId)
|
||||
}
|
||||
|
||||
if (fdc_card_available(c)) {
|
||||
auto *fdc_dev = fdc_card_getdevice(c);
|
||||
const device_t *fdc_dev = fdc_card_getdevice(c);
|
||||
|
||||
if (device_is_valid(fdc_dev, machineId)) {
|
||||
int row = Models::AddEntry(model, name, c);
|
||||
@@ -141,10 +142,11 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId)
|
||||
ui->comboBoxFD->setCurrentIndex(selectedRow);
|
||||
|
||||
/*CD interface controller config*/
|
||||
model = ui->comboBoxCDInterface->model();
|
||||
removeRows = model->rowCount();
|
||||
c = 0;
|
||||
c = 0;
|
||||
model = ui->comboBoxCDInterface->model();
|
||||
removeRows = model->rowCount();
|
||||
selectedRow = 0;
|
||||
|
||||
while (true) {
|
||||
/* Skip "internal" if machine doesn't have it. */
|
||||
QString name = DeviceConfig::DeviceName(cdrom_interface_get_device(c), cdrom_interface_get_internal_name(c), 1);
|
||||
@@ -153,7 +155,7 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId)
|
||||
}
|
||||
|
||||
if (cdrom_interface_available(c)) {
|
||||
auto *cdrom_interface_dev = cdrom_interface_get_device(c);
|
||||
const device_t *cdrom_interface_dev = cdrom_interface_get_device(c);
|
||||
|
||||
if (device_is_valid(cdrom_interface_dev, machineId)) {
|
||||
int row = Models::AddEntry(model, name, c);
|
||||
@@ -169,21 +171,21 @@ SettingsStorageControllers::onCurrentMachineChanged(int machineId)
|
||||
ui->comboBoxCDInterface->setCurrentIndex(-1);
|
||||
ui->comboBoxCDInterface->setCurrentIndex(selectedRow);
|
||||
|
||||
for (int i = 0; i < SCSI_CARD_MAX; ++i) {
|
||||
auto *cbox = findChild<QComboBox *>(QString("comboBoxSCSI%1").arg(i + 1));
|
||||
model = cbox->model();
|
||||
removeRows = model->rowCount();
|
||||
c = 0;
|
||||
selectedRow = 0;
|
||||
for (uint8_t i = 0; i < SCSI_CARD_MAX; ++i) {
|
||||
QComboBox *cbox = findChild<QComboBox *>(QString("comboBoxSCSI%1").arg(i + 1));
|
||||
c = 0;
|
||||
model = cbox->model();
|
||||
removeRows = model->rowCount();
|
||||
selectedRow = 0;
|
||||
|
||||
while (true) {
|
||||
auto name = DeviceConfig::DeviceName(scsi_card_getdevice(c), scsi_card_get_internal_name(c), 1);
|
||||
QString name = DeviceConfig::DeviceName(scsi_card_getdevice(c), scsi_card_get_internal_name(c), 1);
|
||||
if (name.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (scsi_card_available(c)) {
|
||||
auto *scsi_dev = scsi_card_getdevice(c);
|
||||
const device_t *scsi_dev = scsi_card_getdevice(c);
|
||||
if (device_is_valid(scsi_dev, machineId)) {
|
||||
int row = Models::AddEntry(model, name, c);
|
||||
if (c == scsi_card_current[i]) {
|
||||
@@ -236,7 +238,8 @@ SettingsStorageControllers::on_comboBoxFD_currentIndexChanged(int index)
|
||||
ui->pushButtonFD->setEnabled(hdc_has_config(ui->comboBoxFD->currentData().toInt()) > 0);
|
||||
}
|
||||
|
||||
void SettingsStorageControllers::on_comboBoxCDInterface_currentIndexChanged(int index)
|
||||
void
|
||||
SettingsStorageControllers::on_comboBoxCDInterface_currentIndexChanged(int index)
|
||||
{
|
||||
if (index < 0) {
|
||||
return;
|
||||
@@ -346,14 +349,14 @@ SettingsStorageControllers::on_pushButtonSCSI4_clicked()
|
||||
DeviceConfig::ConfigureDevice(scsi_card_getdevice(ui->comboBoxSCSI4->currentData().toInt()), 4, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
void SettingsStorageControllers::on_checkBoxLbaEnhancer_stateChanged(int arg1)
|
||||
void
|
||||
SettingsStorageControllers::on_checkBoxLbaEnhancer_stateChanged(int arg1)
|
||||
{
|
||||
ui->pushButtonConfigureLbaEnhancer->setEnabled(arg1 != 0);
|
||||
}
|
||||
|
||||
|
||||
void SettingsStorageControllers::on_pushButtonConfigureLbaEnhancer_clicked()
|
||||
void
|
||||
SettingsStorageControllers::on_pushButtonConfigureLbaEnhancer_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(&lba_enhancer_device);
|
||||
}
|
||||
|
||||
|
||||
@@ -373,7 +373,7 @@ scsi_cdrom_mode_sense_load(scsi_cdrom_t *dev)
|
||||
if (fp) {
|
||||
if (fread(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE], 1, 0x10, fp) != 0x10)
|
||||
log_fatal(dev->log, "scsi_cdrom_mode_sense_load(): Error reading data\n");
|
||||
(void) fread(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE_SONY], 1,
|
||||
(void) !fread(dev->ms_pages_saved.pages[GPMODE_CDROM_AUDIO_PAGE_SONY], 1,
|
||||
0x10, fp);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
@@ -3101,7 +3101,7 @@ da2_loadfont(char *fname, void *p)
|
||||
}
|
||||
uint32_t j = 0;
|
||||
while (ftell(mfile) < fsize) {
|
||||
fread(&buf, sizeof(uint8_t), 1, mfile);
|
||||
(void) !fread(&buf, sizeof(uint8_t), 1, mfile);
|
||||
da2->mmio.font[j] = buf;
|
||||
j++;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user