Merge branch 'master' of github.com:86box/86Box into qt

This commit is contained in:
Joakim L. Gilje
2021-12-14 13:17:03 +01:00
42 changed files with 357 additions and 199 deletions

View File

@@ -831,9 +831,9 @@ load_machine(void)
mem_size = config_get_int(cat, "mem_size", 64);
#if 0
if (mem_size < (((machines[machine].flags & MACHINE_AT) &&
if (mem_size < ((machine_has_bus(machine, MACHINE_AT) &&
(machines[machine].ram_granularity < 128)) ? machines[machine].min_ram*1024 : machines[machine].min_ram))
mem_size = (((machines[machine].flags & MACHINE_AT) && (machines[machine].ram_granularity < 128)) ? machines[machine].min_ram*1024 : machines[machine].min_ram);
mem_size = (((machine_has_bus(machine, MACHINE_AT) && (machines[machine].ram_granularity < 128)) ? machines[machine].min_ram*1024 : machines[machine].min_ram);
#endif
if (mem_size > 2097152)
@@ -874,13 +874,13 @@ load_video(void)
char *p;
int free_p = 0;
if (machines[machine].flags & MACHINE_VIDEO_ONLY) {
if (machine_has_flags(machine, MACHINE_VIDEO_ONLY)) {
config_delete_var(cat, "gfxcard");
gfxcard = VID_INTERNAL;
} else {
p = config_get_string(cat, "gfxcard", NULL);
if (p == NULL) {
if (machines[machine].flags & MACHINE_VIDEO) {
if (machine_has_flags(machine, MACHINE_VIDEO)) {
p = (char *)malloc((strlen("internal")+1)*sizeof(char));
strcpy(p, "internal");
} else {
@@ -1120,7 +1120,7 @@ load_storage_controllers(void)
p = config_get_string(cat, "hdc", NULL);
if (p == NULL) {
if (machines[machine].flags & MACHINE_HDC) {
if (machine_has_flags(machine, MACHINE_HDC)) {
p = (char *)malloc((strlen("internal")+1)*sizeof(char));
strcpy(p, "internal");
} else {
@@ -1948,7 +1948,7 @@ load_other_peripherals(void)
p = config_get_string(cat, "hdc", NULL);
if (p == NULL) {
if (machines[machine].flags & MACHINE_HDC) {
if (machine_has_flags(machine, MACHINE_HDC)) {
p = (char *)malloc((strlen("internal")+1)*sizeof(char));
strcpy(p, "internal");
} else {

View File

@@ -646,29 +646,29 @@ device_set_config_mac(const char *s, int val)
int
device_is_valid(const device_t *device, int mflags)
device_is_valid(const device_t *device, int m)
{
if (device == NULL) return(1);
if ((device->flags & DEVICE_AT) && !(mflags & MACHINE_BUS_ISA16)) return(0);
if ((device->flags & DEVICE_AT) && !machine_has_bus(m, MACHINE_BUS_ISA16)) return(0);
if ((device->flags & DEVICE_CBUS) && !(mflags & MACHINE_BUS_CBUS)) return(0);
if ((device->flags & DEVICE_CBUS) && !machine_has_bus(m, MACHINE_BUS_CBUS)) return(0);
if ((device->flags & DEVICE_ISA) && !(mflags & MACHINE_BUS_ISA)) return(0);
if ((device->flags & DEVICE_ISA) && !machine_has_bus(m, MACHINE_BUS_ISA)) return(0);
if ((device->flags & DEVICE_MCA) && !(mflags & MACHINE_BUS_MCA)) return(0);
if ((device->flags & DEVICE_MCA) && !machine_has_bus(m, MACHINE_BUS_MCA)) return(0);
if ((device->flags & DEVICE_EISA) && !(mflags & MACHINE_BUS_EISA)) return(0);
if ((device->flags & DEVICE_EISA) && !machine_has_bus(m, MACHINE_BUS_EISA)) return(0);
if ((device->flags & DEVICE_VLB) && !(mflags & MACHINE_BUS_VLB)) return(0);
if ((device->flags & DEVICE_VLB) && !machine_has_bus(m, MACHINE_BUS_VLB)) return(0);
if ((device->flags & DEVICE_PCI) && !(mflags & MACHINE_BUS_PCI)) return(0);
if ((device->flags & DEVICE_PCI) && !machine_has_bus(m, MACHINE_BUS_PCI)) return(0);
if ((device->flags & DEVICE_AGP) && !(mflags & MACHINE_BUS_AGP)) return(0);
if ((device->flags & DEVICE_AGP) && !machine_has_bus(m, MACHINE_BUS_AGP)) return(0);
if ((device->flags & DEVICE_PS2) && !(mflags & MACHINE_BUS_PS2)) return(0);
if ((device->flags & DEVICE_PS2) && !machine_has_bus(m, MACHINE_BUS_PS2)) return(0);
if ((device->flags & DEVICE_AC97) && !(mflags & MACHINE_BUS_AC97)) return(0);
if ((device->flags & DEVICE_AC97) && !machine_has_bus(m, MACHINE_BUS_AC97)) return(0);
return(1);
}

View File

@@ -194,7 +194,7 @@ cart_reset(void)
cart_image_close(1);
cart_image_close(0);
if (!(machines[machine].flags & MACHINE_CARTRIDGE))
if (!machine_has_cartridge(machine))
return;
for (i = 0; i < 2; i++) {

View File

@@ -1063,7 +1063,7 @@ write_output(atkbd_t *dev, uint8_t val)
val |= ((dev->mem[0] << 4) & 0x10);
/*IRQ 12*/
if ((dev->output_port ^ val) & 0x20) {
if ((old ^ val) & 0x20) {
if (val & 0x20)
picint(1 << 12);
else
@@ -1071,26 +1071,23 @@ write_output(atkbd_t *dev, uint8_t val)
}
/*IRQ 1*/
if ((dev->output_port ^ val) & 0x10) {
if ((old ^ val) & 0x10) {
if (val & 0x10)
picint(1 << 1);
else
picintc(1 << 1);
}
if ((dev->output_port ^ val) & 0x02) { /*A20 enable change*/
if ((old ^ val) & 0x02) { /*A20 enable change*/
mem_a20_key = val & 0x02;
mem_a20_recalc();
flushmmucache();
}
/* Do this here to avoid an infinite reset loop. */
dev->output_port = val;
/* 0 holds the CPU in the RESET state, 1 releases it. To simplify this,
we just do everything on release. */
if ((val & 0x01) && !(old & 0x01)) {
if (val & 0x01) {
if ((old ^ val) & 0x01) { /*Reset*/
if (! (val & 0x01)) { /* Pin 0 selected. */
/* Pin 0 selected. */
kbd_log("write_output(): Pulse reset!\n");
softresetx86(); /*Pulse reset!*/
@@ -1098,6 +1095,9 @@ write_output(atkbd_t *dev, uint8_t val)
flushmmucache();
}
}
/* Do this here to avoid an infinite reset loop. */
dev->output_port = val;
}

View File

@@ -111,15 +111,15 @@ postcard_init(const device_t *info)
{
postcard_reset();
if (machines[machine].flags & MACHINE_MCA)
if (machine_has_bus(machine, MACHINE_BUS_MCA))
postcard_port = 0x680; /* MCA machines */
else if (strstr(machines[machine].name, " PS/2 ") || strstr(machines[machine].name, " PS/1 "))
else if (strstr(machines[machine].name, " PS/2 ") || strstr(machine_getname_ex(machine), " PS/1 "))
postcard_port = 0x190; /* ISA PS/2 machines */
else if (strstr(machines[machine].name, " IBM XT "))
postcard_port = 0x60; /* IBM XT */
else if (strstr(machines[machine].name, " IBM PCjr"))
postcard_port = 0x10; /* IBM PCjr */
else if (strstr(machines[machine].name, " Compaq ") && !(machines[machine].flags & MACHINE_PCI))
else if (strstr(machines[machine].name, " Compaq ") && !machine_has_bus(machine, MACHINE_BUS_PCI))
postcard_port = 0x84; /* ISA Compaq machines */
else
postcard_port = 0x80; /* AT and clone machines */

View File

@@ -360,7 +360,7 @@ gameport_add(const device_t *gameport_type)
{
/* Prevent a standalone game port from being added later on, unless this
is an unused Super I/O game port (no MACHINE_GAMEPORT machine flag). */
if (!(gameport_type->local & GAMEPORT_SIO) || (machines[machine].flags & MACHINE_GAMEPORT))
if (!(gameport_type->local & GAMEPORT_SIO) || machine_has_flags(machine, MACHINE_GAMEPORT))
standalone_gameport_type = NULL;
/* Add game port device. */

View File

@@ -145,7 +145,7 @@ extern void device_speed_changed(void);
extern void device_force_redraw(void);
extern void device_get_name(const device_t *d, int bus, char *name);
extern int device_is_valid(const device_t *, int machine_flags);
extern int device_is_valid(const device_t *, int m);
extern int device_get_config_int(const char *name);
extern int device_get_config_int_ex(const char *s, int dflt_int);

View File

@@ -125,6 +125,8 @@
#define IDS_2149 2149 // "Cassette images (*.PCM;*.RAW;*..."
#define IDS_2150 2150 // "Cartridge %i: %ls"
#define IDS_2151 2151 // "Cartridge images (*.JRC)\0*.JRC\0..."
#define IDS_2152 2152 // "Error initializing renderer"
#define IDS_2153 2153 // "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
#define IDS_4096 4096 // "Hard disk (%s)"
#define IDS_4097 4097 // "%01i:%01i"
@@ -233,7 +235,7 @@
#define IDS_LANG_ENUS IDS_7168
#define STR_NUM_2048 104
#define STR_NUM_2048 106
#define STR_NUM_3072 11
#define STR_NUM_4096 40
#define STR_NUM_4352 6

View File

@@ -189,6 +189,7 @@ extern int AT, PCI;
extern int machine_count(void);
extern int machine_available(int m);
extern char *machine_getname(void);
extern char *machine_getname_ex(int m);
extern char *machine_get_internal_name(void);
extern int machine_get_machine_from_internal_name(char *s);
extern void machine_init(void);
@@ -197,6 +198,13 @@ extern const device_t *machine_getdevice(int m);
#endif
extern char *machine_get_internal_name_ex(int m);
extern int machine_get_nvrmask(int m);
extern int machine_has_flags(int m, int flags);
extern int machine_has_bus(int m, int bus_flags);
extern int machine_has_cartridge(int m);
extern int machine_get_min_ram(int m);
extern int machine_get_max_ram(int m);
extern int machine_get_ram_granularity(int m);
extern int machine_get_type(int m);
extern void machine_close(void);

View File

@@ -82,9 +82,8 @@ static struct
uint8_t memory_bank[8];
uint8_t io_id;
uint16_t planar_id;
mem_mapping_t shadow_mapping;
uint16_t planar_id;
mem_mapping_t split_mapping;
mem_mapping_t expansion_mapping;
mem_mapping_t cache_mapping;
@@ -203,7 +202,7 @@ static uint32_t ps2_read_cache_raml(uint32_t addr, void *priv)
}
static void ps2_write_cache_ram(uint32_t addr, uint8_t val, void *priv)
{
ps2_mca_log("ps2_write_cache_ram: addr=%08x val=%02x %04x:%04x %i\n", addr, val, CS,cpu_state.pc, ins);
ps2_mca_log("ps2_write_cache_ram: addr=%08x val=%02x %04x:%04x %i\n", addr, val, CS,cpu_state.pc);
ps2_cache[addr] = val;
}
@@ -212,37 +211,6 @@ void ps2_cache_clean(void)
memset(ps2_cache_valid, 0, sizeof(ps2_cache_valid));
}
static uint8_t ps2_read_shadow_ram(uint32_t addr, void *priv)
{
addr = (addr & 0x1ffff) + 0xe0000;
return mem_read_ram(addr, priv);
}
static uint16_t ps2_read_shadow_ramw(uint32_t addr, void *priv)
{
addr = (addr & 0x1ffff) + 0xe0000;
return mem_read_ramw(addr, priv);
}
static uint32_t ps2_read_shadow_raml(uint32_t addr, void *priv)
{
addr = (addr & 0x1ffff) + 0xe0000;
return mem_read_raml(addr, priv);
}
static void ps2_write_shadow_ram(uint32_t addr, uint8_t val, void *priv)
{
addr = (addr & 0x1ffff) + 0xe0000;
mem_write_ram(addr, val, priv);
}
static void ps2_write_shadow_ramw(uint32_t addr, uint16_t val, void *priv)
{
addr = (addr & 0x1ffff) + 0xe0000;
mem_write_ramw(addr, val, priv);
}
static void ps2_write_shadow_raml(uint32_t addr, uint32_t val, void *priv)
{
addr = (addr & 0x1ffff) + 0xe0000;
mem_write_raml(addr, val, priv);
}
static uint8_t ps2_read_split_ram(uint32_t addr, void *priv)
{
addr = (addr % (ps2.split_size << 10)) + ps2.split_phys;
@@ -430,6 +398,85 @@ static void model_50_write(uint16_t port, uint8_t val)
}
}
static void model_55sx_mem_recalc(void)
{
int i, j, state, enabled_mem = 0;
int base = 0, remap_size = (ps2.option[3] & 0x10) ? 384 : 256;
int bit_mask = 0x00, max_rows = 4;
int bank_to_rows[16] = { 4, 2, 1, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0 };
ps2_mca_log("%02X %02X\n", ps2.option[1], ps2.option[3]);
mem_remap_top(remap_size);
mem_set_mem_state(0x00000000, (mem_size + 384) * 1024, MEM_READ_EXTERNAL | MEM_WRITE_EXTERNAL);
mem_set_mem_state(0x000e0000, 0x00020000, MEM_READ_EXTANY | MEM_WRITE_DISABLED);
for (i = 0; i < 2; i++)
{
max_rows = bank_to_rows[(ps2.memory_bank[i] >> 4) & 0x0f];
if (max_rows == 0)
continue;
for (j = 0; j < max_rows; j++)
{
if (ps2.memory_bank[i] & (1 << j)) {
ps2_mca_log("Set memory at %06X-%06X to internal\n", (base * 1024), (base * 1024) + (((base > 0) ? 1024 : 640) * 1024) - 1);
mem_set_mem_state(base * 1024, ((base > 0) ? 1024 : 640) * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
enabled_mem += 1024;
bit_mask |= (1 << (j + (i << 2)));
}
base += 1024;
}
}
ps2_mca_log("Enabled memory: %i kB (%02X)\n", enabled_mem, bit_mask);
if (ps2.option[3] & 0x10)
{
/* Enable ROM. */
ps2_mca_log("Enable ROM\n");
state = MEM_READ_EXTANY;
}
else
{
/* Disable ROM. */
if ((ps2.option[1] & 1) && !(ps2.option[3] & 0x20) && (bit_mask & 0x01))
{
/* Disable RAM between 640 kB and 1 MB. */
ps2_mca_log("Disable ROM, enable RAM\n");
state = MEM_READ_INTERNAL;
}
else
{
ps2_mca_log("Disable ROM, disable RAM\n");
state = MEM_READ_DISABLED;
}
}
/* Write always disabled. */
state |= MEM_WRITE_DISABLED;
mem_set_mem_state(0xe0000, 0x20000, state);
/* if (!(ps2.option[3] & 0x08))
{
ps2_mca_log("Memory not yet configured\n");
return;
} */
ps2_mca_log("Enable shadow mapping at %06X-%06X\n", (mem_size * 1024), (mem_size * 1024) + (remap_size * 1024) - 1);
if ((ps2.option[1] & 1) && !(ps2.option[3] & 0x20) && (bit_mask & 0x01)) {
ps2_mca_log("Set memory at %06X-%06X to internal\n", (mem_size * 1024), (mem_size * 1024) + (remap_size * 1024) - 1);
mem_set_mem_state(mem_size * 1024, remap_size * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
}
flushmmucache_nopc();
}
static void model_55sx_write(uint16_t port, uint8_t val)
{
switch (port)
@@ -467,38 +514,20 @@ static void model_55sx_write(uint16_t port, uint8_t val)
ps2.option[0] = val;
break;
case 0x103:
ps2_mca_log("Write POS1: %02X\n", val);
ps2.option[1] = val;
break;
model_55sx_mem_recalc();
break;
case 0x104:
ps2.memory_bank[ps2.option[3] & 7] &= ~0xf;
ps2.memory_bank[ps2.option[3] & 7] |= (val & 0xf);
ps2_mca_log("Write memory bank %i %02x\n", ps2.option[3] & 7, val);
ps2_mca_log("Write memory bank %i: %02X\n", ps2.option[3] & 7, val);
model_55sx_mem_recalc();
break;
case 0x105:
ps2_mca_log("Write POS3 %02x\n", val);
ps2_mca_log("Write POS3: %02X\n", val);
ps2.option[3] = val;
shadowbios = !(val & 0x10);
shadowbios_write = val & 0x10;
if (shadowbios)
{
mem_set_mem_state(0xe0000, 0x20000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED);
mem_set_mem_state((mem_size+256) * 1024, 128 * 1024, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
mem_mapping_disable(&ps2.shadow_mapping);
}
else
{
mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_INTERNAL);
mem_set_mem_state((mem_size+256) * 1024, 128 * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
mem_mapping_enable(&ps2.shadow_mapping);
}
if ((ps2.option[1] & 1) && !(ps2.option[3] & 0x20))
mem_set_mem_state(mem_size * 1024, 256 * 1024, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
else
mem_set_mem_state(mem_size * 1024, 256 * 1024, MEM_READ_EXTANY | MEM_WRITE_EXTANY);
flushmmucache_nopc();
model_55sx_mem_recalc();
break;
case 0x106:
ps2.subaddr_lo = val;
@@ -914,22 +943,9 @@ static void ps2_mca_board_model_50_init()
static void ps2_mca_board_model_55sx_init()
{
ps2_mca_board_common_init();
mem_mapping_add(&ps2.shadow_mapping,
(mem_size+256) * 1024,
128*1024,
ps2_read_shadow_ram,
ps2_read_shadow_ramw,
ps2_read_shadow_raml,
ps2_write_shadow_ram,
ps2_write_shadow_ramw,
ps2_write_shadow_raml,
&ram[0xe0000],
MEM_MAPPING_INTERNAL,
NULL);
mem_remap_top(256);
ps2.option[1] = 0x00;
ps2.option[2] = 0x00;
ps2.option[3] = 0x10;
memset(ps2.memory_bank, 0xf0, 8);
@@ -975,6 +991,8 @@ static void ps2_mca_board_model_55sx_init()
if (gfxcard == VID_INTERNAL)
device_add(&ps1vga_mca_device);
model_55sx_mem_recalc();
}
static void mem_encoding_update()

View File

@@ -979,6 +979,55 @@ machine_get_nvrmask(int m)
}
int
machine_has_flags(int m, int flags)
{
return(machines[m].flags & flags);
}
int
machine_has_bus(int m, int bus_flags)
{
return(machines[m].flags & bus_flags);
}
int
machine_has_cartridge(int m)
{
return(machine_has_flags(m, MACHINE_CARTRIDGE) ? 1 : 0);
}
int
machine_get_min_ram(int m)
{
return(machines[m].min_ram);
}
int
machine_get_max_ram(int m)
{
return(machines[m].max_ram);
}
int
machine_get_ram_granularity(int m)
{
return(machines[m].ram_granularity);
}
int
machine_get_type(int m)
{
return(machines[m].type);
}
int
machine_get_machine_from_internal_name(char *s)
{

View File

@@ -406,7 +406,7 @@ spd_write_drbs_interleaved(uint8_t *regs, uint8_t reg_min, uint8_t reg_max, uint
{
uint8_t row, dimm;
uint8_t drb;
uint16_t size, size_acc;
uint16_t size, size_acc = 0;
uint16_t rows[SPD_MAX_SLOTS];
/* No SPD: split SIMMs into pairs as if they were "DIMM"s. */

View File

@@ -154,6 +154,8 @@ ctr_tick(ctr_t *ctr)
/* This is true for all modes */
ctr_load_count(ctr);
ctr->state = 2;
if ((ctr->m & 0x07) == 0x01)
ctr_set_out(ctr, 0);
return;
}

View File

@@ -8,9 +8,9 @@
*
* MIDI backend implemented using the RtMidi library.
*
* Author: jgilje,
* Author: Cacodemon345,
* Miran Grca, <mgrca8@gmail.com>
* Copyright 2021 jgilje.
* Copyright 2021 Cacodemon345.
* Copyright 2021 Miran Grca.
*/
#if defined __has_include

View File

@@ -167,7 +167,7 @@ scsi_card_init(void)
/* On-board SCSI controllers get the first bus, so if one is present,
increase our instance number here. */
if (machines[machine].flags & MACHINE_SCSI)
if (machine_has_flags(machine, MACHINE_SCSI))
max--;
/* Do not initialize any controllers if we have do not have any SCSI

View File

@@ -1703,7 +1703,7 @@ mpu401_device_add(void)
if (!mpu401_standalone_enable)
return;
if (machines[machine].flags & MACHINE_MCA)
if (machine_has_bus(machine, MACHINE_BUS_MCA))
device_add(&mpu401_mca_device);
else
device_add(&mpu401_device);

View File

@@ -69,6 +69,9 @@ int egaswitchread, egaswitches=9;
int update_overscan = 0;
uint8_t ega_in(uint16_t addr, void *p);
void
ega_out(uint16_t addr, uint8_t val, void *p)
{
@@ -145,6 +148,9 @@ ega_out(uint16_t addr, uint8_t val, void *p)
ega->vidclock = val & 4;
ega->miscout = val;
ega->overscan_color = ega->vres ? pallook16[ega->attrregs[0x11] & 0x0f] : pallook64[ega->attrregs[0x11] & 0x3f];
io_removehandler(0x03a0, 0x0020, ega_in, NULL, NULL, ega_out, NULL, NULL, ega);
if (!(val & 1))
io_sethandler(0x03a0, 0x0020, ega_in, NULL, NULL, ega_out, NULL, NULL, ega);
if ((o ^ val) & 0x80)
ega_recalctimings(ega);
break;
@@ -237,10 +243,13 @@ ega_out(uint16_t addr, uint8_t val, void *p)
}
}
uint8_t ega_in(uint16_t addr, void *p)
uint8_t
ega_in(uint16_t addr, void *p)
{
ega_t *ega = (ega_t *)p;
uint8_t ret = 0xff;
uint16_t port = addr;
if (((addr & 0xfff0) == 0x3d0 || (addr & 0xfff0) == 0x3b0) && !(ega->miscout & 1))
addr ^= 0x60;
@@ -979,6 +988,8 @@ ega_init(ega_t *ega, int monitor_type, int is_mono)
break;
}
}
io_sethandler(0x03a0, 0x0020, ega_in, NULL, NULL, ega_out, NULL, NULL, ega);
} else {
for (c = 0; c < 256; c++) {
pallook64[c] = makecol32(((c >> 2) & 1) * 0xaa, ((c >> 1) & 1) * 0xaa, (c & 1) * 0xaa);
@@ -988,6 +999,8 @@ ega_init(ega_t *ega, int monitor_type, int is_mono)
if ((c & 0x17) == 6)
pallook16[c] = makecol32(0xaa, 0x55, 0);
}
ega->miscout |= 1;
}
ega->pallook = pallook16;
@@ -1078,7 +1091,7 @@ ega_standalone_init(const device_t *info)
ega->vrammask = ega->vram_limit - 1;
mem_mapping_add(&ega->mapping, 0xa0000, 0x20000, ega_read, NULL, NULL, ega_write, NULL, NULL, NULL, MEM_MAPPING_EXTERNAL, ega);
io_sethandler(0x03a0, 0x0040, ega_in, NULL, NULL, ega_out, NULL, NULL, ega);
io_sethandler(0x03c0, 0x0020, ega_in, NULL, NULL, ega_out, NULL, NULL, ega);
if (info->local == EGA_ATI) {
io_sethandler(0x01ce, 0x0002, ega_in, NULL, NULL, ega_out, NULL, NULL, ega);

View File

@@ -274,7 +274,7 @@ void
video_pre_reset(int card)
{
if ((card == VID_NONE) || \
(card == VID_INTERNAL) || (machines[machine].flags & MACHINE_VIDEO_ONLY))
(card == VID_INTERNAL) || machine_has_flags(machine, MACHINE_VIDEO_ONLY))
video_prepare();
}
@@ -287,13 +287,13 @@ video_reset(int card)
return;
vid_table_log("VIDEO: reset (gfxcard=%d, internal=%d)\n",
card, (machines[machine].flags & MACHINE_VIDEO)?1:0);
card, machine_has_flags(machine, MACHINE_VIDEO) ? 1 : 0);
loadfont("roms/video/mda/mda.rom", 0);
/* Do not initialize internal cards here. */
if (!(card == VID_NONE) && \
!(card == VID_INTERNAL) && !(machines[machine].flags & MACHINE_VIDEO_ONLY)) {
!(card == VID_INTERNAL) && !machine_has_flags(machine, MACHINE_VIDEO_ONLY)) {
vid_table_log("VIDEO: initializing '%s'\n", video_cards[card].name);
video_prepare();

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Kazetové nahrávky (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Všechny soubory (*.*)\0*.*\0"
IDS_2150 "Cartridge %i: %ls"
IDS_2151 "Obrazy cartridge (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Všechny soubory (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Kassettenimages (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Alle Dateien (*.*)\0*.*\0"
IDS_2150 "Cartridge %i: %ls"
IDS_2151 "Cartridgeimages (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Alle Dateien (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Cassette images (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
IDS_2150 "Cartridge %i: %ls"
IDS_2151 "Cartridge images (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Cassette images (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
IDS_2150 "Cartridge %i: %ls"
IDS_2151 "Cartridge images (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Imágenes de Cassette (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
IDS_2150 "Cartucho %i: %ls"
IDS_2151 "Imágenes de Cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Kasetti-tiedostot (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Kaikki tiedostot (*.*)\0*.*\0"
IDS_2150 "ROM-moduuli %i: %ls"
IDS_2151 "ROM-moduulikuvat (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Kaikki tiedostot (*.*)\0*.*\0"
IDS_2152 "Virhe renderöijän alustuksessa"
IDS_2153 "OpenGL (3.0 Core) renderöijän alustus epäonnistui. Käytä toista renderöijää."
END
STRINGTABLE DISCARDABLE

View File

@@ -274,7 +274,7 @@ END
#define STR_OK "OK"
#define STR_CANCEL "Annuler"
#define STR_GLOBAL "Sauver ces paramètres comme valeurs par défaut &globales"
#define STR_GLOBAL "Sauvegarder ces paramètres comme valeurs par défaut &globales"
#define STR_DEFAULT "&Défaut"
#define STR_LANGUAGE "Langue:"
#define STR_ICONSET "Ensemble d'icônes:"
@@ -478,9 +478,9 @@ BEGIN
IDS_2118 "Côntrolleur interne"
IDS_2119 "Sortir"
IDS_2120 "Pas de ROMs trouvées"
IDS_2121 "Voulez-vous sauver les paramètres ?"
IDS_2121 "Voulez-vous sauvegarder les paramètres ?"
IDS_2122 "Cela entraînera la réinitialisation complète de la machine émulée."
IDS_2123 "Sauver"
IDS_2123 "Sauvegarder"
IDS_2124 "À propos de 86Box"
IDS_2125 "86Box v" EMU_VERSION
@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Images cassette (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tous les fichiers (*.*)\0*.*\0"
IDS_2150 "Cartouche %i: %ls"
IDS_2151 "Images cartouche (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tous les fichiers (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Slike audio kasete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Sve datoteke (*.*)\0*.*\0"
IDS_2150 "Kaseta %i: %ls"
IDS_2151 "Slike kasete (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Sve datoteke (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -532,6 +532,8 @@ BEGIN
IDS_2149 "Magnókazetta-képek (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Minden fájl (*.*)\0*.*\0"
IDS_2150 "ROM-kazetta %i: %ls"
IDS_2151 "ROM-kazetta képek (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Minden fájl (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Immagini cassetta (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tutti i file (*.*)\0*.*\0"
IDS_2150 "Cartuccia %i: %ls"
IDS_2151 "Immagini cartuccia (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tutti i file (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "カセットイメージ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0すべてのファイル (*.*)\0*.*\0"
IDS_2150 "カートリッジ %i: %ls"
IDS_2151 "カートリッジイメージ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0すべてのファイル (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "카세트 이미지 (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0모든 파일 (*.*)\0*.*\0"
IDS_2150 "카트리지 %i: %ls"
IDS_2151 "카트리지 이미지 (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0모든 파일 (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -531,6 +531,8 @@ BEGIN
IDS_2149 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os arquivos (*.*)\0*.*\0"
IDS_2150 "Cartucho %i: %ls"
IDS_2151 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os arquivos (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os ficheiros (*.*)\0*.*\0"
IDS_2150 "Cartucho %i: %ls"
IDS_2151 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os ficheiros (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Образы кассет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Все файлы (*.*)\0*.*\0"
IDS_2150 "Картридж %i: %ls"
IDS_2151 "Образы картриджей (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Все файлы (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Slike kaset (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Vse datoteke (*.*)\0*.*\0"
IDS_2150 "Spominski vložek %i: %ls"
IDS_2151 "Slike spominskega vložka (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Vse datoteke (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "Kaset imajları (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tüm dosyalar (*.*)\0*.*\0"
IDS_2150 "Kartuş %i: %ls"
IDS_2151 "Kartuş imajları (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tüm dosyalar (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -29,7 +29,7 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "退出(&x)...", IDM_ACTION_EXIT
END
POPUP "视图(&V)"
POPUP "显示(&V)"
BEGIN
MENUITEM "隐藏状态栏(&H)", IDM_VID_HIDE_STATUS_BAR
MENUITEM SEPARATOR
@@ -69,7 +69,7 @@ BEGIN
MENUITEM "全屏拉伸(&F)", IDM_VID_FS_FULL
MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "保持比例(&S)", IDM_VID_FS_KEEPRATIO
MENUITEM "整数倍放大&I", IDM_VID_FS_INT
MENUITEM "整数倍放大(&I)", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGA 设置"
BEGIN
@@ -115,7 +115,7 @@ BEGIN
POPUP "记录日志(&L)"
BEGIN
# ifdef ENABLE_BUSLOGIC_LOG
MENUITEM "启用 总线Logic 日志\tCtrl+F4", IDM_LOG_BUSLOGIC
MENUITEM "启用 BusLogic 日志\tCtrl+F4", IDM_LOG_BUSLOGIC
# endif
# ifdef ENABLE_CDROM_LOG
MENUITEM "启用 CD-ROM 日志\tCtrl+F5", IDM_LOG_CDROM
@@ -382,7 +382,7 @@ END
#define STR_ISAMEM_2 "扩展卡 2:"
#define STR_ISAMEM_3 "扩展卡 3:"
#define STR_ISAMEM_4 "扩展卡 4:"
#define STR_BUGGER "ISABugger device"
#define STR_BUGGER "ISABugger 设备"
#define STR_POSTCARD "自检卡(POST)"
#define FONT_SIZE 9
@@ -408,7 +408,7 @@ BEGIN
IDS_2056 "86Box 找不到支持的 ROM 镜像.\n\n请<a href=""https://github.com/86Box/roms/releases/latest"">下载</a>ROM包并解压到 ""roms"" 文件夹."
IDS_2057 "(空)"
IDS_2058 "ZIP 镜像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有文件 (*.*)\0*.*\0"
IDS_2059 "Turbo"
IDS_2059 "加速"
IDS_2060 "开"
IDS_2061 "关"
IDS_2062 "所有镜像 (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本扇区镜像 (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表面镜像 (*.86F)\0*.86F\0"
@@ -530,6 +530,8 @@ BEGIN
IDS_2149 "磁带镜像 (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0所有文件 (*.*)\0*.*\0"
IDS_2150 "卡带 %i: %ls"
IDS_2151 "卡带镜像 (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0所有文件 (*.*)\0*.*\0"
IDS_2152 "Error initializing renderer"
IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
END
STRINGTABLE DISCARDABLE

View File

@@ -249,28 +249,28 @@ has_language_changed(uint32_t id)
void
set_language(uint32_t id)
{
if (id == 0xFFFF)
{
set_language(lang_sys);
lang_id = id;
return;
}
if (id == 0xFFFF) {
set_language(lang_sys);
lang_id = id;
return;
}
if (lang_id != id) {
/* Set our new language ID. */
lang_id = id;
SetThreadUILanguage(lang_id);
/* Set our new language ID. */
lang_id = id;
SetThreadUILanguage(lang_id);
/* Load the strings table for this ID. */
LoadCommonStrings();
/* Load the strings table for this ID. */
LoadCommonStrings();
/* Reload main menu */
menuMain = LoadMenu(hinstance, L"MainMenu");
/* Reload main menu */
menuMain = LoadMenu(hinstance, L"MainMenu");
if (hwndMain != NULL)
SetMenu(hwndMain, menuMain);
/* Re-init all the menus */
ResetAllMenus();
media_menu_init();
/* Re-init all the menus */
ResetAllMenus();
media_menu_init();
}
}

View File

@@ -24,8 +24,8 @@
#include <86box/zip.h>
#include <86box/win.h>
#define MACHINE_HAS_IDE (machines[machine].flags & MACHINE_IDE_QUAD)
#define MACHINE_HAS_SCSI (machines[machine].flags & MACHINE_SCSI_DUAL)
#define MACHINE_HAS_IDE (machine_has_flags(machine, MACHINE_IDE_QUAD))
#define MACHINE_HAS_SCSI (machine_has_flags(machine, MACHINE_SCSI_DUAL))
#define CASSETTE_FIRST 0
#define CARTRIDGE_FIRST CASSETTE_FIRST + 1
@@ -403,7 +403,7 @@ media_menu_load_submenus()
static inline int
is_valid_cartridge(void)
{
return ((machines[machine].flags & MACHINE_CARTRIDGE) ? 1 : 0);
return (machine_has_cartridge(machine));
}

View File

@@ -56,6 +56,7 @@ typedef LONG atomic_flag;
#include <86box/plat.h>
#include <86box/video.h>
#include <86box/win.h>
#include <86box/language.h>
#include <86box/win_opengl.h>
#include <86box/win_opengl_glslp.h>
@@ -445,7 +446,9 @@ static void opengl_fail()
window = NULL;
}
/* TODO: Notify user. */
wchar_t* message = plat_get_string(IDS_2152);
wchar_t* header = plat_get_string(IDS_2153);
MessageBox(parent, header, message, MB_OK);
WaitForSingleObject(sync_objects.closing, INFINITE);
@@ -476,7 +479,7 @@ static void opengl_main(void* param)
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
if (GLAD_GL_ARB_debug_output)
if (GLAD_GL_ARB_debug_output && log_path[0] != '\0')
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG | SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
else
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
@@ -527,7 +530,7 @@ static void opengl_main(void* param)
opengl_fail();
}
if (GLAD_GL_ARB_debug_output)
if (GLAD_GL_ARB_debug_output && log_path[0] != '\0')
{
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
glDebugMessageControlARB(GL_DONT_CARE, GL_DEBUG_TYPE_PERFORMANCE_ARB, GL_DONT_CARE, 0, 0, GL_FALSE);
@@ -539,6 +542,33 @@ static void opengl_main(void* param)
pclog("OpenGL version: %s\n", glGetString(GL_VERSION));
pclog("OpenGL shader language version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
/* Check that the driver actually reports version 3.0 or later */
GLint major = -1;
glGetIntegerv(GL_MAJOR_VERSION, &major);
if (major < 3)
{
pclog("OpenGL: Minimum OpenGL version 3.0 is required.\n");
SDL_GL_DeleteContext(context);
opengl_fail();
}
/* Check if errors have been generated at this point */
GLenum gl_error = glGetError();
if (gl_error != GL_NO_ERROR)
{
/* Log up to 10 errors */
int i = 0;
do
{
pclog("OpenGL: Error %u\n", gl_error);
i++;
}
while((gl_error = glGetError()) != GL_NO_ERROR && i < 10);
SDL_GL_DeleteContext(context);
opengl_fail();
}
gl_identifiers gl = { 0 };
if (!initialize_glcontext(&gl))

View File

@@ -318,7 +318,7 @@ win_settings_init(void)
int i = 0;
/* Machine category */
temp_machine_type = machines[machine].type;
temp_machine_type = machine_get_type(machine);
temp_machine = machine;
temp_cpu_f = cpu_f;
temp_wait_states = cpu_waitstates;
@@ -786,13 +786,13 @@ win_settings_machine_recalc_machine(HWND hdlg)
win_settings_machine_recalc_cpu_m(hdlg);
if ((machines[temp_machine].ram_granularity & 1023)) {
if (machine_get_ram_granularity(temp_machine) & 1023) {
/* KB granularity */
h = GetDlgItem(hdlg, IDC_MEMSPIN);
SendMessage(h, UDM_SETRANGE, 0, (machines[temp_machine].min_ram << 16) | machines[temp_machine].max_ram);
SendMessage(h, UDM_SETRANGE, 0, (machine_get_min_ram(temp_machine) << 16) | machine_get_max_ram(temp_machine));
accel.nSec = 0;
accel.nInc = machines[temp_machine].ram_granularity;
accel.nInc = machine_get_ram_granularity(temp_machine);
SendMessage(h, UDM_SETACCEL, 1, (LPARAM)&accel);
SendMessage(h, UDM_SETPOS, 0, temp_mem_size);
@@ -803,14 +803,14 @@ win_settings_machine_recalc_machine(HWND hdlg)
/* MB granularity */
h = GetDlgItem(hdlg, IDC_MEMSPIN);
#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64))
i = MIN(machines[temp_machine].max_ram, 2097152);
i = MIN(machine_get_max_ram(temp_machine), 2097152);
#else
i = MIN(machines[temp_machine].max_ram, 3145728);
i = MIN(machine_get_max_ram(temp_machine), 3145728);
#endif
SendMessage(h, UDM_SETRANGE, 0, (machines[temp_machine].min_ram << 6) | (i >> 10));
SendMessage(h, UDM_SETRANGE, 0, (machine_get_min_ram(temp_machine) << 6) | (i >> 10));
accel.nSec = 0;
accel.nInc = machines[temp_machine].ram_granularity >> 10;
accel.nInc = machine_get_ram_granularity(temp_machine) >> 10;
SendMessage(h, UDM_SETACCEL, 1, (LPARAM)&accel);
@@ -820,8 +820,8 @@ win_settings_machine_recalc_machine(HWND hdlg)
SendMessage(h, WM_SETTEXT, 0, win_get_string(IDS_2086));
}
settings_enable_window(hdlg, IDC_MEMSPIN, machines[temp_machine].min_ram != machines[temp_machine].max_ram);
settings_enable_window(hdlg, IDC_MEMTEXT, machines[temp_machine].min_ram != machines[temp_machine].max_ram);
settings_enable_window(hdlg, IDC_MEMSPIN, machine_get_min_ram(temp_machine) != machine_get_max_ram(temp_machine));
settings_enable_window(hdlg, IDC_MEMTEXT, machine_get_min_ram(temp_machine) != machine_get_max_ram(temp_machine));
free(lptsTemp);
}
@@ -844,7 +844,7 @@ machine_type_available(int id)
if ((id > 0) && (id < MACHINE_TYPE_MAX)) {
while (machine_get_internal_name_ex(c) != NULL) {
if (machine_available(c) && (machines[c].type == id))
if (machine_available(c) && (machine_get_type(c) == id))
return 1;
c++;
}
@@ -891,8 +891,8 @@ win_settings_machine_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
settings_reset_content(hdlg, IDC_COMBO_MACHINE);
memset(listtomachine, 0x00, sizeof(listtomachine));
while (machine_get_internal_name_ex(c) != NULL) {
if (machine_available(c) && (machines[c].type == temp_machine_type)) {
stransi = (char *)machines[c].name;
if (machine_available(c) && (machine_get_type(c) == temp_machine_type)) {
stransi = machine_getname_ex(c);
mbstowcs(lptsTemp, stransi, strlen(stransi) + 1);
settings_add_string(hdlg, IDC_COMBO_MACHINE, (LPARAM) lptsTemp);
listtomachine[d] = c;
@@ -946,8 +946,8 @@ win_settings_machine_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
c = d = 0;
memset(listtomachine, 0x00, sizeof(listtomachine));
while (machine_get_internal_name_ex(c) != NULL) {
if (machine_available(c) && (machines[c].type == temp_machine_type)) {
stransi = (char *)machines[c].name;
if (machine_available(c) && (machine_get_type(c) == temp_machine_type)) {
stransi = machine_getname_ex(c);
mbstowcs(lptsTemp, stransi, strlen(stransi) + 1);
settings_add_string(hdlg, IDC_COMBO_MACHINE, (LPARAM) lptsTemp);
listtomachine[d] = c;
@@ -1023,13 +1023,13 @@ win_settings_machine_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
SendMessage(h, WM_GETTEXT, 255, (LPARAM) lptsTemp);
wcstombs(stransi, lptsTemp, 512);
sscanf(stransi, "%u", &temp_mem_size);
if (!(machines[temp_machine].ram_granularity & 1023))
if (!(machine_get_ram_granularity(temp_machine) & 1023))
temp_mem_size = temp_mem_size << 10;
temp_mem_size &= ~(machines[temp_machine].ram_granularity - 1);
if (temp_mem_size < machines[temp_machine].min_ram)
temp_mem_size = machines[temp_machine].min_ram;
else if (temp_mem_size > machines[temp_machine].max_ram)
temp_mem_size = machines[temp_machine].max_ram;
temp_mem_size &= ~(machine_get_ram_granularity(temp_machine) - 1);
if (temp_mem_size < machine_get_min_ram(temp_machine))
temp_mem_size = machine_get_min_ram(temp_machine);
else if (temp_mem_size > machine_get_max_ram(temp_machine))
temp_mem_size = machine_get_max_ram(temp_machine);
free(stransi);
free(lptsTemp);
@@ -1080,7 +1080,7 @@ win_settings_video_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
while (1) {
/* Skip "internal" if machine doesn't have it. */
if ((c == 1) && !(machines[temp_machine].flags & MACHINE_VIDEO)) {
if ((c == 1) && !machine_has_flags(temp_machine, MACHINE_VIDEO)) {
c++;
continue;
}
@@ -1091,7 +1091,7 @@ win_settings_video_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
break;
if (video_card_available(c) &&
device_is_valid(video_card_getdevice(c), machines[temp_machine].flags)) {
device_is_valid(video_card_getdevice(c), temp_machine)) {
if (c == 0)
settings_add_string(hdlg, IDC_COMBO_VIDEO, win_get_string(IDS_2103));
else if (c == 1)
@@ -1109,12 +1109,12 @@ win_settings_video_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
settings_process_messages();
}
settings_enable_window(hdlg, IDC_COMBO_VIDEO, !(machines[temp_machine].flags & MACHINE_VIDEO_ONLY));
settings_enable_window(hdlg, IDC_COMBO_VIDEO, !machine_has_flags(temp_machine, MACHINE_VIDEO_ONLY));
e = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_VIDEO)];
settings_enable_window(hdlg, IDC_CONFIGURE_VID, video_card_has_config(e));
settings_enable_window(hdlg, IDC_CHECK_VOODOO, (machines[temp_machine].flags & MACHINE_BUS_PCI));
settings_enable_window(hdlg, IDC_CHECK_VOODOO, machine_has_bus(temp_machine, MACHINE_BUS_PCI));
settings_set_check(hdlg, IDC_CHECK_VOODOO, temp_voodoo);
settings_enable_window(hdlg, IDC_BUTTON_VOODOO, (machines[temp_machine].flags & MACHINE_BUS_PCI) && temp_voodoo);
settings_enable_window(hdlg, IDC_BUTTON_VOODOO, machine_has_bus(temp_machine, MACHINE_BUS_PCI) && temp_voodoo);
return TRUE;
case WM_COMMAND:
@@ -1157,10 +1157,10 @@ mouse_valid(int num, int m)
const device_t *dev;
if ((num == MOUSE_TYPE_INTERNAL) &&
!(machines[m].flags & MACHINE_MOUSE)) return(0);
!machine_has_flags(m, MACHINE_MOUSE)) return(0);
dev = mouse_get_device(num);
return(device_is_valid(dev, machines[m].flags));
return(device_is_valid(dev, m));
}
@@ -1294,7 +1294,7 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
settings_reset_content(hdlg, IDC_COMBO_SOUND);
while (1) {
/* Skip "internal" if machine doesn't have it. */
if ((c == 1) && !(machines[temp_machine].flags & MACHINE_SOUND)) {
if ((c == 1) && !machine_has_flags(temp_machine, MACHINE_SOUND)) {
c++;
continue;
}
@@ -1307,7 +1307,7 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
if (sound_card_available(c)) {
sound_dev = sound_card_getdevice(c);
if (device_is_valid(sound_dev, machines[temp_machine].flags)) {
if (device_is_valid(sound_dev, temp_machine)) {
if (c == 0)
settings_add_string(hdlg, IDC_COMBO_SOUND, win_get_string(IDS_2103));
else if (c == 1)
@@ -1377,15 +1377,15 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
settings_set_check(hdlg, IDC_CHECK_MPU401, temp_mpu401);
settings_enable_window(hdlg, IDC_CHECK_MPU401, mpu401_standalone_allow());
settings_enable_window(hdlg, IDC_CONFIGURE_MPU401, mpu401_standalone_allow() && temp_mpu401);
settings_enable_window(hdlg, IDC_CHECK_CMS, (machines[temp_machine].flags & MACHINE_BUS_ISA));
settings_enable_window(hdlg, IDC_CHECK_CMS, machine_has_bus(temp_machine, MACHINE_BUS_ISA));
settings_set_check(hdlg, IDC_CHECK_CMS, temp_GAMEBLASTER);
settings_enable_window(hdlg, IDC_CONFIGURE_CMS, (machines[temp_machine].flags & MACHINE_BUS_ISA) && temp_GAMEBLASTER);
settings_enable_window(hdlg, IDC_CHECK_GUS, (machines[temp_machine].flags & MACHINE_BUS_ISA16));
settings_enable_window(hdlg, IDC_CONFIGURE_CMS, machine_has_bus(temp_machine, MACHINE_BUS_ISA) && temp_GAMEBLASTER);
settings_enable_window(hdlg, IDC_CHECK_GUS, machine_has_bus(temp_machine, MACHINE_BUS_ISA16));
settings_set_check(hdlg, IDC_CHECK_GUS, temp_GUS);
settings_enable_window(hdlg, IDC_CONFIGURE_GUS, (machines[temp_machine].flags & MACHINE_BUS_ISA16) && temp_GUS);
settings_enable_window(hdlg, IDC_CHECK_SSI, (machines[temp_machine].flags & MACHINE_BUS_ISA));
settings_enable_window(hdlg, IDC_CONFIGURE_GUS, machine_has_bus(temp_machine, MACHINE_BUS_ISA16) && temp_GUS);
settings_enable_window(hdlg, IDC_CHECK_SSI, machine_has_bus(temp_machine, MACHINE_BUS_ISA));
settings_set_check(hdlg, IDC_CHECK_SSI, temp_SSI2001);
settings_enable_window(hdlg, IDC_CONFIGURE_SSI, (machines[temp_machine].flags & MACHINE_BUS_ISA) && temp_SSI2001);
settings_enable_window(hdlg, IDC_CONFIGURE_SSI, machine_has_bus(temp_machine, MACHINE_BUS_ISA) && temp_SSI2001);
settings_set_check(hdlg, IDC_CHECK_FLOAT, temp_float);
free(lptsTemp);
@@ -1440,7 +1440,7 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
break;
case IDC_CONFIGURE_MPU401:
temp_deviceconfig |= deviceconfig_open(hdlg, (machines[temp_machine].flags & MACHINE_MCA) ?
temp_deviceconfig |= deviceconfig_open(hdlg, machine_has_bus(temp_machine, MACHINE_BUS_MCA) ?
(void *)&mpu401_mca_device : (void *)&mpu401_device);
break;
@@ -1589,7 +1589,7 @@ win_settings_storage_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
settings_reset_content(hdlg, IDC_COMBO_HDC);
while (1) {
/* Skip "internal" if machine doesn't have it. */
if ((c == 1) && !(machines[temp_machine].flags & MACHINE_HDC)) {
if ((c == 1) && !machine_has_flags(temp_machine, MACHINE_HDC)) {
c++;
continue;
}
@@ -1602,7 +1602,7 @@ win_settings_storage_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
if (hdc_available(c)) {
hdc_dev = hdc_get_device(c);
if (device_is_valid(hdc_dev, machines[temp_machine].flags)) {
if (device_is_valid(hdc_dev, temp_machine)) {
if (c == 0)
settings_add_string(hdlg, IDC_COMBO_HDC, win_get_string(IDS_2103));
else if (c == 1)
@@ -1634,7 +1634,7 @@ win_settings_storage_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
if (fdc_card_available(c)) {
fdc_dev = fdc_card_getdevice(c);
if (device_is_valid(fdc_dev, machines[temp_machine].flags)) {
if (device_is_valid(fdc_dev, temp_machine)) {
if (c == 0)
settings_add_string(hdlg, IDC_COMBO_FDC, win_get_string(IDS_2118));
else
@@ -1665,7 +1665,7 @@ win_settings_storage_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
if (scsi_card_available(c)) {
scsi_dev = scsi_card_getdevice(c);
if (device_is_valid(scsi_dev, machines[temp_machine].flags)) {
if (device_is_valid(scsi_dev, temp_machine)) {
for (e = 0; e < SCSI_BUS_MAX; e++) {
if (c == 0)
settings_add_string(hdlg, IDC_COMBO_SCSI_1 + e, win_get_string(IDS_2103));
@@ -1823,7 +1823,7 @@ win_settings_network_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
if (device_name[0] == L'\0')
break;
if (network_card_available(c) && device_is_valid(network_card_getdevice(c), machines[temp_machine].flags)) {
if (network_card_available(c) && device_is_valid(network_card_getdevice(c), temp_machine)) {
if (c == 0)
settings_add_string(hdlg, IDC_COMBO_NET, win_get_string(IDS_2103));
else

View File

@@ -522,12 +522,12 @@ ui_sb_update_panes(void)
sb_ready = 0;
}
cart_int = (machines[machine].flags & MACHINE_CARTRIDGE) ? 1 : 0;
mfm_int = (machines[machine].flags & MACHINE_MFM) ? 1 : 0;
xta_int = (machines[machine].flags & MACHINE_XTA) ? 1 : 0;
esdi_int = (machines[machine].flags & MACHINE_ESDI) ? 1 : 0;
ide_int = (machines[machine].flags & MACHINE_IDE_QUAD) ? 1 : 0;
scsi_int = (machines[machine].flags & MACHINE_SCSI_DUAL) ? 1 : 0;
cart_int = machine_has_cartridge(machine) ? 1 : 0;
mfm_int = machine_has_flags(machine, MACHINE_MFM) ? 1 : 0;
xta_int = machine_has_flags(machine, MACHINE_XTA) ? 1 : 0;
esdi_int = machine_has_flags(machine, MACHINE_ESDI) ? 1 : 0;
ide_int = machine_has_flags(machine, MACHINE_IDE_QUAD) ? 1 : 0;
scsi_int = machine_has_flags(machine, MACHINE_SCSI_DUAL) ? 1 : 0;
c_mfm = hdd_count(HDD_BUS_MFM);
c_esdi = hdd_count(HDD_BUS_ESDI);

View File

@@ -54,8 +54,8 @@
/* Platform Public data, specific. */
HWND hwndMain, /* application main window */
hwndRender; /* machine render window */
HWND hwndMain = NULL, /* application main window */
hwndRender = NULL; /* machine render window */
HMENU menuMain; /* application main menu */
RECT oldclip; /* mouse rect */
int sbar_height = 23; /* statusbar height */