Merge pull request #5318 from jriwanek-forks/improvements

General Improvements, Cleanups and additions
This commit is contained in:
Miran Grča
2025-03-10 16:34:09 +01:00
committed by GitHub
13 changed files with 1128 additions and 904 deletions

View File

@@ -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);

View File

@@ -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",

View File

@@ -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 },

View File

@@ -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
};

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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());

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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