Merge branch '86Box:master' into master

This commit is contained in:
Lili Kurek
2025-10-22 11:31:12 +02:00
committed by GitHub
93 changed files with 7621 additions and 2941 deletions

View File

@@ -1803,6 +1803,16 @@ image_load_cue(cd_image_t *img, const char *cuefile)
lo_cmd = 0;
image_log(img->log, " [SESSION ] Initialization successful\n");
} else if (!strcmp(command, "TAOGAP")) {
ci = &(ct->idx[2]);
ci->type = INDEX_ZERO;
ci->file = tf;
success = image_cue_get_frame(&frame, &line);
ci->length = frame;
image_log(img->log, " [INDEX ] 02 (%8s): Initialization %s\n",
cit[ci->type + 2], success ? "successful" : "failed");
}
}
}

View File

@@ -1041,6 +1041,7 @@ static const device_config_t mke_config[] = {
{ .description = "320H", .value = 0x320 },
{ .description = "330H", .value = 0x330 },
{ .description = "340H", .value = 0x340 },
{ .description = "630H", .value = 0x630 },
{ NULL }
},
.bios = { { 0 } }

View File

@@ -569,6 +569,7 @@ load_input_devices(void)
{
ini_section_t cat = ini_find_section(config, "Input devices");
char temp[512];
char tmp2[32];
char *p;
p = ini_section_get_string(cat, "keyboard_type", NULL);
@@ -646,18 +647,25 @@ load_input_devices(void)
joystick_state[gp][js].plat_joystick_nr = ini_section_get_int(cat, temp, 0);
if (joystick_state[gp][js].plat_joystick_nr) {
// --- Load Axis Mappings ---
for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[joy_insn]); axis_nr++) {
sprintf(temp, "joystick_%i_axis_%i", js, axis_nr);
joystick_state[gp][js].axis_mapping[axis_nr] = ini_section_get_int(cat, temp, axis_nr);
}
// --- Load Button Mappings ---
for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[joy_insn]); button_nr++) {
sprintf(temp, "joystick_%i_button_%i", js, button_nr);
joystick_state[gp][js].button_mapping[button_nr] = ini_section_get_int(cat, temp, button_nr);
}
// --- Load POV (Hat Switch) Mappings ---
for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[joy_insn]); pov_nr++) {
sprintf(temp, "joystick_%i_pov_%i", js, pov_nr);
p = ini_section_get_string(cat, temp, "0, 0");
joystick_state[gp][js].pov_mapping[pov_nr][0] = joystick_state[gp][js].pov_mapping[pov_nr][1] = 0;
sprintf(tmp2, "%i, %i", 0, 0);
p = ini_section_get_string(cat, temp, tmp2);
joystick_state[gp][js].pov_mapping[pov_nr][0] = 0;
joystick_state[gp][js].pov_mapping[pov_nr][1] = 0;
sscanf(p, "%i, %i", &joystick_state[gp][js].pov_mapping[pov_nr][0],
&joystick_state[gp][js].pov_mapping[pov_nr][1]);
}
@@ -2702,7 +2710,7 @@ save_input_devices(void)
{
ini_section_t cat = ini_find_or_create_section(config, "Input devices");
char temp[512];
char tmp2[512];
char tmp2[32];
ini_section_set_string(cat, "keyboard_type", keyboard_get_internal_name(keyboard_type));
@@ -2713,20 +2721,25 @@ save_input_devices(void)
ini_section_delete_var(cat, "joystick_type");
for (int js = 0; js < MAX_PLAT_JOYSTICKS; js++) {
sprintf(tmp2, "joystick_%i_nr", js);
ini_section_delete_var(cat, tmp2);
sprintf(temp, "joystick_%i_nr", js);
ini_section_delete_var(cat, temp);
// --- Save Axis Mappings ---
for (int axis_nr = 0; axis_nr < MAX_JOY_AXES; axis_nr++) {
sprintf(tmp2, "joystick_%i_axis_%i", js, axis_nr);
ini_section_delete_var(cat, tmp2);
sprintf(temp, "joystick_%i_axis_%i", js, axis_nr);
ini_section_delete_var(cat, temp);
}
// --- Save Button Mappings ---
for (int button_nr = 0; button_nr < MAX_JOY_BUTTONS; button_nr++) {
sprintf(tmp2, "joystick_%i_button_%i", js, button_nr);
ini_section_delete_var(cat, tmp2);
sprintf(temp, "joystick_%i_button_%i", js, button_nr);
ini_section_delete_var(cat, temp);
}
// --- Save POV (Hat Switch) Mappings ---
for (int pov_nr = 0; pov_nr < MAX_JOY_POVS; pov_nr++) {
sprintf(tmp2, "joystick_%i_pov_%i", js, pov_nr);
ini_section_delete_var(cat, tmp2);
sprintf(temp, "joystick_%i_pov_%i", js, pov_nr);
ini_section_delete_var(cat, temp);
}
}
} else {
@@ -2735,33 +2748,37 @@ save_input_devices(void)
ini_section_set_string(cat, "joystick_type", joystick_get_internal_name(joystick_type[joy_insn]));
for (int js = 0; js < joystick_get_max_joysticks(joystick_type[joy_insn]); js++) {
sprintf(tmp2, "joystick_%i_nr", js);
ini_section_set_int(cat, tmp2, joystick_state[gp][js].plat_joystick_nr);
sprintf(temp, "joystick_%i_nr", js);
ini_section_set_int(cat, temp, joystick_state[gp][js].plat_joystick_nr);
if (joystick_state[gp][js].plat_joystick_nr) {
// --- Save Axis Mappings ---
for (int axis_nr = 0; axis_nr < joystick_get_axis_count(joystick_type[joy_insn]); axis_nr++) {
sprintf(tmp2, "joystick_%i_axis_%i", js, axis_nr);
ini_section_set_int(cat, tmp2, joystick_state[gp][js].axis_mapping[axis_nr]);
sprintf(temp, "joystick_%i_axis_%i", js, axis_nr);
ini_section_set_int(cat, temp, joystick_state[gp][js].axis_mapping[axis_nr]);
}
// --- Save Button Mappings ---
for (int button_nr = 0; button_nr < joystick_get_button_count(joystick_type[joy_insn]); button_nr++) {
sprintf(tmp2, "joystick_%i_button_%i", js, button_nr);
ini_section_set_int(cat, tmp2, joystick_state[gp][js].button_mapping[button_nr]);
sprintf(temp, "joystick_%i_button_%i", js, button_nr);
ini_section_set_int(cat, temp, joystick_state[gp][js].button_mapping[button_nr]);
}
// --- Save POV (Hat Switch) Mappings ---
for (int pov_nr = 0; pov_nr < joystick_get_pov_count(joystick_type[joy_insn]); pov_nr++) {
sprintf(tmp2, "joystick_%i_pov_%i", js, pov_nr);
sprintf(temp, "%i, %i", joystick_state[gp][js].pov_mapping[pov_nr][0],
joystick_state[gp][js].pov_mapping[pov_nr][1]);
ini_section_set_string(cat, tmp2, temp);
sprintf(temp, "joystick_%i_pov_%i", js, pov_nr);
sprintf(tmp2, "%i, %i", joystick_state[gp][js].pov_mapping[pov_nr][0],
joystick_state[gp][js].pov_mapping[pov_nr][1]);
ini_section_set_string(cat, temp, tmp2);
}
}
}
}
if (tablet_tool_type != 1) {
if (tablet_tool_type != 1)
ini_section_set_int(cat, "tablet_tool_type", tablet_tool_type);
} else {
else
ini_section_delete_var(cat, "tablet_tool_type");
}
ini_delete_section_if_empty(config, cat);
}

View File

@@ -141,7 +141,7 @@ serial_update_ints(serial_t *dev)
}
}
serial_do_irq(dev, !(dev->iir & 0x01) && ((dev->mctrl & 8) || (dev->type == SERIAL_8250_PCJR)));
serial_do_irq(dev, !(dev->iir & 0x01) && ((dev->mctrl & 8) || ((dev->type == SERIAL_8250_PCJR_3F8) || (dev->type == SERIAL_8250_PCJR_2F8))));
}
static void
@@ -971,15 +971,20 @@ serial_init(const device_t *info)
serial_setup(dev, COM4_ADDR, COM4_IRQ);
else if (next_inst == 2)
serial_setup(dev, COM3_ADDR, COM3_IRQ);
else if ((next_inst == 1) || (info->local == SERIAL_8250_PCJR))
else if ((next_inst == 1) || (info->local == SERIAL_8250_PCJR_2F8))
serial_setup(dev, COM2_ADDR, COM2_IRQ);
// TODO
#if 0
else if ((next_inst == 1) || (info->local == SERIAL_8250_PCJR_3F8))
serial_setup(dev, COM1_ADDR, COM1_IRQ);
#endif
else if (next_inst == 0)
serial_setup(dev, COM1_ADDR, COM1_IRQ);
/* Default to 1200,N,7. */
dev->dlab = 96;
dev->fcr = 0x06;
if (info->local == SERIAL_8250_PCJR)
if ((info->local == SERIAL_8250_PCJR_3F8) || (info->local == SERIAL_8250_PCJR_2F8))
dev->clock_src = 1789500.0;
else
dev->clock_src = 1843200.0;
@@ -1039,11 +1044,25 @@ const device_t ns8250_device = {
.config = NULL
};
const device_t ns8250_pcjr_device = {
.name = "National Semiconductor 8250(-compatible) UART for PCjr",
.internal_name = "ns8250_pcjr",
const device_t ns8250_pcjr_3f8_device = {
.name = "National Semiconductor 8250(-compatible) UART for PCjr (0x3f8)",
.internal_name = "ns8250_pcjr_3f8",
.flags = 0,
.local = SERIAL_8250_PCJR,
.local = SERIAL_8250_PCJR_3F8,
.init = serial_init,
.close = serial_close,
.reset = serial_reset,
.available = NULL,
.speed_changed = serial_speed_changed,
.force_redraw = NULL,
.config = NULL
};
const device_t ns8250_pcjr_2f8_device = {
.name = "National Semiconductor 8250(-compatible) UART for PCjr (0x2f8)",
.internal_name = "ns8250_pcjr_2f8",
.flags = 0,
.local = SERIAL_8250_PCJR_2F8,
.init = serial_init,
.close = serial_close,
.reset = serial_reset,

View File

@@ -88,27 +88,52 @@ static const joystick_t joystick_none = {
static const struct {
const joystick_t *joystick;
} joysticks[] = {
{ &joystick_none },
{ &joystick_2axis_2button },
{ &joystick_2button_gamepad },
{ &joystick_2button_flight_yoke },
{ &joystick_2axis_4button },
{ &joystick_4button_gamepad },
{ &joystick_4button_flight_yoke },
{ &joystick_2axis_6button },
{ &joystick_2axis_8button },
{ &joystick_3axis_2button },
{ &joystick_2button_yoke_throttle },
{ &joystick_3axis_4button },
{ &joystick_steering_wheel_4_button },
{ &joystick_4button_yoke_throttle },
{ &joystick_4axis_4button },
{ &joystick_ch_flightstick_pro },
{ &joystick_ch_flightstick_pro_ch_pedals },
{ &joystick_sw_pad },
{ &joystick_tm_fcs },
{ &joystick_tm_fcs_rcs },
{ NULL }
{ &joystick_none },
{ &joystick_generic_paddle },
{ &joystick_2axis_1button },
{ &joystick_2axis_2button },
{ &joystick_2axis_3button },
{ &joystick_2axis_4button },
{ &joystick_2axis_6button },
{ &joystick_2axis_8button },
{ &joystick_3axis_2button },
{ &joystick_3axis_3button },
{ &joystick_3axis_4button },
{ &joystick_4axis_2button },
{ &joystick_4axis_3button },
{ &joystick_4axis_4button },
{ &joystick_2button_gamepad },
{ &joystick_3button_gamepad },
{ &joystick_4button_gamepad },
{ &joystick_6button_gamepad },
{ &joystick_gravis_gamepad },
{ &joystick_2button_flight_yoke },
{ &joystick_3button_flight_yoke },
{ &joystick_4button_flight_yoke },
{ &joystick_2button_yoke_throttle },
{ &joystick_3button_yoke_throttle },
{ &joystick_4button_yoke_throttle },
{ &joystick_steering_wheel_2_button },
{ &joystick_steering_wheel_3_button },
{ &joystick_steering_wheel_4_button },
{ &joystick_ch_flightstick },
{ &joystick_ch_flightstick_ch_pedals },
{ &joystick_ch_flightstick_ch_pedals_pro },
{ &joystick_ch_flightstick_pro },
{ &joystick_ch_flightstick_pro_ch_pedals },
{ &joystick_ch_flightstick_pro_ch_pedals_pro },
{ &joystick_ch_virtual_pilot },
{ &joystick_ch_virtual_pilot_ch_pedals },
{ &joystick_ch_virtual_pilot_ch_pedals_pro },
{ &joystick_ch_virtual_pilot_pro },
{ &joystick_ch_virtual_pilot_pro_ch_pedals },
{ &joystick_ch_virtual_pilot_pro_ch_pedals_pro },
{ &joystick_sw_pad },
{ &joystick_tm_fcs },
{ &joystick_tm_fcs_rcs },
{ &joystick_tm_formula_t1t2 },
{ &joystick_tm_formula_t1t2wa },
{ NULL }
};
static joystick_instance_t *joystick_instance[GAMEPORT_MAX] = { NULL, NULL };

View File

@@ -44,18 +44,7 @@
#include <86box/timer.h>
#include <86box/gameport.h>
#include <86box/plat_unused.h>
static void *
ch_flightstick_pro_init(void)
{
return NULL;
}
static void
ch_flightstick_pro_close(UNUSED(void *priv))
{
//
}
#include <86box/joystick.h>
static uint8_t
ch_flightstick_pro_read(UNUSED(void *priv))
@@ -72,114 +61,299 @@ ch_flightstick_pro_read(UNUSED(void *priv))
ret &= ~0x40;
if (joystick_state[gp][0].button[3])
ret &= ~0x80;
// POV Hat
if (joystick_state[gp][0].pov[0] != -1) {
// POV Up
if ((joystick_state[gp][0].pov[0] > 315) || (joystick_state[gp][0].pov[0] < 45))
ret &= ~0xf0;
ret &= ~0xf0; // 1, 2, 3, 4
// POV Right
else if ((joystick_state[gp][0].pov[0]) >= 45 && (joystick_state[gp][0].pov[0] < 135))
ret &= ~0xb0;
else if ((joystick_state[gp][0].pov[0] >= 45) && (joystick_state[gp][0].pov[0] < 135))
ret &= ~0xb0; // 1, 2, 4
// POV Down
else if ((joystick_state[gp][0].pov[0]) >= 135 && (joystick_state[gp][0].pov[0] < 225))
ret &= ~0x70;
else if ((joystick_state[gp][0].pov[0] >= 135) && (joystick_state[gp][0].pov[0] < 225))
ret &= ~0x70; // 1, 2, 3
// POV Left
else if ((joystick_state[gp][0].pov[0]) >= 225 && (joystick_state[gp][0].pov[0] < 315))
ret &= ~0x30;
else if ((joystick_state[gp][0].pov[0] >= 225) && (joystick_state[gp][0].pov[0] < 315))
ret &= ~0x30; // 1, 2
}
}
return ret;
}
static void
ch_flightstick_pro_write(UNUSED(void *priv))
static uint8_t
ch_virtual_pilot_pro_read(UNUSED(void *priv))
{
//
}
uint8_t gp = 0;
uint8_t ret = 0xf0;
static int
ch_flightstick_pro_read_axis(UNUSED(void *priv), int axis)
{
uint8_t gp = 0;
if (JOYSTICK_PRESENT(gp, 0)) {
if (joystick_state[gp][0].button[0]) // 1
ret &= ~0x10;
if (joystick_state[gp][0].button[1]) // 2
ret &= ~0x20;
if (joystick_state[gp][0].button[2]) // 3
ret &= ~0x40;
if (joystick_state[gp][0].button[3]) // 4
ret &= ~0x80;
if (joystick_state[gp][0].button[4]) // 1, 3
ret &= ~0x50;
if (joystick_state[gp][0].button[5]) // 1, 4
ret &= ~0x90;
if (!JOYSTICK_PRESENT(gp, 0))
return AXIS_NOT_PRESENT;
// Right POV Hat
uint8_t pov_id = 0;
switch (axis) {
case 0:
return joystick_state[gp][0].axis[0];
case 1:
return joystick_state[gp][0].axis[1];
case 2:
return 0;
case 3:
return joystick_state[gp][0].axis[2];
default:
return 0;
if (joystick_state[gp][0].pov[pov_id] != -1) {
// POV Up
if ((joystick_state[gp][0].pov[pov_id] > 315) || (joystick_state[gp][0].pov[pov_id] < 45))
ret &= ~0xf0; // 1, 2, 3, 4
// POV Right
else if ((joystick_state[gp][0].pov[pov_id] >= 45) && (joystick_state[gp][0].pov[pov_id] < 135))
ret &= ~0xb0; // 1, 2, 4
// POV Down
else if ((joystick_state[gp][0].pov[pov_id] >= 135) && (joystick_state[gp][0].pov[pov_id] < 225))
ret &= ~0x70; // 1, 2, 3
// POV Left
else if ((joystick_state[gp][0].pov[pov_id] >= 225) && (joystick_state[gp][0].pov[pov_id] < 315))
ret &= ~0x30; // 1, 2
}
// Left POV Hat
pov_id = 1;
if (joystick_state[gp][0].pov[pov_id] != -1) {
// POV Up
if ((joystick_state[gp][0].pov[pov_id] > 315) || (joystick_state[gp][0].pov[pov_id] < 45))
ret &= ~0xe0; // 2, 3, 4
// POV Right
else if ((joystick_state[gp][0].pov[pov_id] >= 45) && (joystick_state[gp][0].pov[pov_id] < 135))
ret &= ~0xa0; // 2, 4
// POV Down
else if ((joystick_state[gp][0].pov[pov_id] >= 135) && (joystick_state[gp][0].pov[pov_id] < 225))
ret &= ~0x60; // 2, 3
// POV Left
else if ((joystick_state[gp][0].pov[pov_id] >= 225) && (joystick_state[gp][0].pov[pov_id] < 315))
ret &= ~0xc0; // 3, 4
}
}
return ret;
}
static int
ch_flightstick_pro_ch_pedals_read_axis(UNUSED(void *priv), int axis)
{
uint8_t gp = 0;
const joystick_t joystick_ch_flightstick = {
.name = "CH Flightstick",
.internal_name = "ch_flightstick",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle" },
.button_names = { "Trigger", "Button 2" },
.pov_names = { NULL }
};
if (!JOYSTICK_PRESENT(gp, 0))
return AXIS_NOT_PRESENT;
const joystick_t joystick_ch_flightstick_ch_pedals = {
.name = "CH Flightstick + CH Pedals",
.internal_name = "ch_flightstick_ch_pedals",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle", "Rudder (Yaw)" },
.button_names = { "Trigger", "Button 2" },
.pov_names = { NULL }
};
switch (axis) {
case 0:
return joystick_state[gp][0].axis[0];
case 1:
return joystick_state[gp][0].axis[1];
case 2:
return joystick_state[gp][0].axis[3];
case 3:
return joystick_state[gp][0].axis[2];
default:
return 0;
}
}
static void
ch_flightstick_pro_a0_over(UNUSED(void *priv))
{
//
}
const joystick_t joystick_ch_flightstick_ch_pedals_pro = {
.name = "CH Flightstick + CH Pedals Pro",
.internal_name = "ch_flightstick_ch_pedals_pro",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Left Pedal", "Right Pedal" },
.button_names = { "Trigger", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_ch_flightstick_pro = {
.name = "CH Flightstick Pro",
.internal_name = "ch_flightstick_pro",
.init = ch_flightstick_pro_init,
.close = ch_flightstick_pro_close,
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = ch_flightstick_pro_read,
.write = ch_flightstick_pro_write,
.read_axis = ch_flightstick_pro_read_axis,
.a0_over = ch_flightstick_pro_a0_over,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 1,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Throttle" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { "POV" }
};
const joystick_t joystick_ch_flightstick_pro_ch_pedals = {
.name = "CH Flightstick Pro + CH Pedals",
.internal_name = "ch_flightstick_pro_ch_pedals",
.init = ch_flightstick_pro_init,
.close = ch_flightstick_pro_close,
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = ch_flightstick_pro_read,
.write = ch_flightstick_pro_write,
.read_axis = ch_flightstick_pro_ch_pedals_read_axis,
.a0_over = ch_flightstick_pro_a0_over,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 4,
.pov_count = 1,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Throttle", "Rudder" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle", "Rudder (Yaw)" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { "POV" }
};
const joystick_t joystick_ch_flightstick_pro_ch_pedals_pro = {
.name = "CH Flightstick Pro + CH Pedals Pro",
.internal_name = "ch_flightstick_pro_ch_pedals_pro",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = ch_flightstick_pro_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 4,
.pov_count = 1,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Left Pedal", "Right Pedal" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { "POV" }
};
const joystick_t joystick_ch_virtual_pilot = {
.name = "CH Virtual Pilot",
.internal_name = "ch_virtual_pilot",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_ch_virtual_pilot_ch_pedals = {
.name = "CH Virtual Pilot + CH Pedals",
.internal_name = "ch_virtual_pilot_ch_pedals",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle", "Rudder (Yaw)" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_ch_virtual_pilot_ch_pedals_pro = {
.name = "CH Virtual Pilot + CH Pedals Pro",
.internal_name = "ch_virtual_pilot_ch_pedals_pro",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Left Pedal", "Right Pedal" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_ch_virtual_pilot_pro = {
.name = "CH Virtual Pilot Pro",
.internal_name = "ch_virtual_pilot_pro",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = ch_virtual_pilot_pro_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 6,
.pov_count = 2,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6" },
.pov_names = { "Right POV", "Left POV" }
};
const joystick_t joystick_ch_virtual_pilot_pro_ch_pedals = {
.name = "CH Virtual Pilot Pro + CH Pedals",
.internal_name = "ch_virtual_pilot_pro_ch_pedals",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = ch_virtual_pilot_pro_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 6,
.pov_count = 2,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Throttle", "Rudder (Yaw)" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6" },
.pov_names = { "Right POV", "Left POV" }
};
const joystick_t joystick_ch_virtual_pilot_pro_ch_pedals_pro = {
.name = "CH Virtual Pilot Pro + CH Pedals Pro",
.internal_name = "ch_virtual_pilot_pro_ch_pedals_pro",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = ch_virtual_pilot_pro_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 6,
.pov_count = 2,
.max_joysticks = 1,
.axis_names = { "X axis (Roll)", "Y axis (Pitch)", "Left Pedal", "Right Pedal" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6" },
.pov_names = { "Right POV", "Left POV" }
};

View File

@@ -45,18 +45,39 @@
#include <86box/gameport.h>
#include <86box/plat_unused.h>
static void *
void *
joystick_standard_init(void)
{
return NULL;
}
static void
void
joystick_standard_close(UNUSED(void *priv))
{
//
}
static uint8_t
joystick_paddle_read(UNUSED(void *priv))
{
uint8_t gp = 0;
uint8_t ret = 0xf0;
if ((JOYSTICK_PRESENT(gp, 0)) && (joystick_state[gp][0].button[0]))
ret &= ~0x10;
if ((JOYSTICK_PRESENT(gp, 2)) && (joystick_state[gp][2].button[0]))
ret &= ~0x20;
if ((JOYSTICK_PRESENT(gp, 1)) && (joystick_state[gp][1].button[0]))
ret &= ~0x40;
if ((JOYSTICK_PRESENT(gp, 3)) && (joystick_state[gp][3].button[0]))
ret &= ~0x80;
return ret;
}
static uint8_t
joystick_standard_read(UNUSED(void *priv))
{
@@ -80,7 +101,41 @@ joystick_standard_read(UNUSED(void *priv))
return ret;
}
uint8_t
joystick_standard_read_2button(UNUSED(void *priv))
{
uint8_t gp = 0;
uint8_t ret = 0xf0;
if (JOYSTICK_PRESENT(gp, 0)) {
if (joystick_state[gp][0].button[0])
ret &= ~0x10;
if (joystick_state[gp][0].button[1])
ret &= ~0x20;
}
return ret;
}
static uint8_t
joystick_standard_read_3button(UNUSED(void *priv))
{
uint8_t gp = 0;
uint8_t ret = 0xf0;
if (JOYSTICK_PRESENT(gp, 0)) {
if (joystick_state[gp][0].button[0])
ret &= ~0x10;
if (joystick_state[gp][0].button[1])
ret &= ~0x20;
if (joystick_state[gp][0].button[2])
ret &= ~0x40;
}
return ret;
}
uint8_t
joystick_standard_read_4button(UNUSED(void *priv))
{
uint8_t gp = 0;
@@ -100,12 +155,39 @@ joystick_standard_read_4button(UNUSED(void *priv))
return ret;
}
static void
void
joystick_standard_write(UNUSED(void *priv))
{
//
}
static int
joystick_paddle_read_axis(UNUSED(void *priv), int axis)
{
uint8_t gp = 0;
switch (axis) {
case 0:
if (!JOYSTICK_PRESENT(gp, 0))
return AXIS_NOT_PRESENT;
return joystick_state[gp][0].axis[0];
case 1:
if (!JOYSTICK_PRESENT(gp, 2))
return AXIS_NOT_PRESENT;
return joystick_state[gp][2].axis[0];
case 2:
if (!JOYSTICK_PRESENT(gp, 1))
return AXIS_NOT_PRESENT;
return joystick_state[gp][1].axis[0];
case 3:
if (!JOYSTICK_PRESENT(gp, 3))
return AXIS_NOT_PRESENT;
return joystick_state[gp][3].axis[0];
default:
return 0;
}
}
static int
joystick_standard_read_axis(UNUSED(void *priv), int axis)
{
@@ -134,7 +216,7 @@ joystick_standard_read_axis(UNUSED(void *priv), int axis)
}
static int
joystick_standard_read_axis_4button(UNUSED(void *priv), int axis)
joystick_standard_read_axis_2axis(UNUSED(void *priv), int axis)
{
uint8_t gp = 0;
@@ -168,7 +250,7 @@ joystick_standard_read_axis_with_pov(UNUSED(void *priv), int axis)
return joystick_state[gp][0].axis[0];
case 1: // Y-axis
return joystick_state[gp][0].axis[1];
case 2: // POV Hat (mapped to the 3rd logical axis, index 2)
case 2: // POV Hat
if (joystick_state[gp][0].pov[0] == -1)
return 32767; // Centered/No input (as per tm_fcs_rcs_read_axis example)
if (joystick_state[gp][0].pov[0] > 315 || joystick_state[gp][0].pov[0] < 45)
@@ -179,9 +261,8 @@ joystick_standard_read_axis_with_pov(UNUSED(void *priv), int axis)
return 0; // Right/Left (example, matches tm_fcs_rcs_read_axis)
if (joystick_state[gp][0].pov[0] >= 225 && joystick_state[gp][0].pov[0] < 315)
return 16384; // Down-Left (example value, matches tm_fcs_rcs_read_axis)
return 0; // Fallback
case 3: // This case might be used for a Z-axis if present, or can return 0 if not.
// For gamepads with only X/Y and POV, this will likely be unused or return 0.
return 0;
case 3:
return 0;
default:
return 0;
@@ -202,15 +283,36 @@ joystick_standard_read_axis_3axis(UNUSED(void *priv), int axis)
return joystick_state[gp][0].axis[0];
case 1:
return joystick_state[gp][0].axis[1];
case 2:
case 2: // Rudder Axis
return joystick_state[gp][0].axis[2];
case 3:
case 3: // Throttle Axis
default:
return 0;
}
}
static int
int
joystick_standard_read_axis_3axis_throttle(UNUSED(void *priv), int axis)
{
uint8_t gp = 0;
if (!JOYSTICK_PRESENT(gp, 0))
return AXIS_NOT_PRESENT;
switch (axis) {
case 0:
return joystick_state[gp][0].axis[0];
case 1:
return joystick_state[gp][0].axis[1];
case 3: // Throttle Axis
return joystick_state[gp][0].axis[2];
case 2: // Rudder Axis
default:
return 0;
}
}
int
joystick_standard_read_axis_4axis(UNUSED(void *priv), int axis)
{
uint8_t gp = 0;
@@ -223,10 +325,10 @@ joystick_standard_read_axis_4axis(UNUSED(void *priv), int axis)
return joystick_state[gp][0].axis[0];
case 1:
return joystick_state[gp][0].axis[1];
case 2:
return joystick_state[gp][0].axis[2];
case 3:
case 2: // Rudder Axis
return joystick_state[gp][0].axis[3];
case 3: // Throttle Axis
return joystick_state[gp][0].axis[2];
default:
return 0;
}
@@ -283,12 +385,48 @@ joystick_standard_read_axis_8button(UNUSED(void *priv), int axis)
}
}
static void
void
joystick_standard_a0_over(UNUSED(void *priv))
{
//
}
const joystick_t joystick_generic_paddle = {
.name = "Generic Paddle Controller(s)",
.internal_name = "generic_paddle",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_paddle_read,
.write = joystick_standard_write,
.read_axis = joystick_paddle_read_axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 1,
.button_count = 1,
.pov_count = 0,
.max_joysticks = 4,
.axis_names = { "X axis" },
.button_names = { "Button 1" },
.pov_names = { NULL }
};
const joystick_t joystick_2axis_1button = {
.name = "2-axis, 1-button joystick(s)",
.internal_name = "2axis_1button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 1,
.pov_count = 0,
.max_joysticks = 2,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1" },
.pov_names = { NULL }
};
const joystick_t joystick_2axis_2button = {
.name = "2-axis, 2-button joystick(s)",
.internal_name = "2axis_2button",
@@ -307,39 +445,21 @@ const joystick_t joystick_2axis_2button = {
.pov_names = { NULL }
};
const joystick_t joystick_2button_gamepad = {
.name = "2-button gamepad(s)",
.internal_name = "2button_gamepad",
const joystick_t joystick_2axis_3button = {
.name = "2-axis, 3-button joystick",
.internal_name = "2axis_3button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read,
.read = joystick_standard_read_3button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 2,
.button_count = 3,
.pov_count = 0,
.max_joysticks = 2,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_2button_flight_yoke = {
.name = "2-button flight yoke",
.internal_name = "2button_flight_yoke",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 2,
.axis_names = { "Roll axis", "Pitch axis" },
.button_names = { "Trigger", "Button 2" },
.button_names = { "Button 1", "Button 2", "Button 3" },
.pov_names = { NULL }
};
@@ -350,7 +470,7 @@ const joystick_t joystick_2axis_4button = {
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4button,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
@@ -361,150 +481,6 @@ const joystick_t joystick_2axis_4button = {
.pov_names = { NULL }
};
const joystick_t joystick_4button_gamepad = {
.name = "4-button gamepad",
.internal_name = "4button_gamepad",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4button,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_4button_flight_yoke = {
.name = "4-button flight yoke",
.internal_name = "4button_flight_yoke",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4button,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_3axis_2button = {
.name = "3-axis, 2-button joystick",
.internal_name = "3axis_2button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_2button_yoke_throttle = {
.name = "2-button flight yoke with throttle",
.internal_name = "2button_yoke_throttle",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis", "Throttle axis" },
.button_names = { "Trigger", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_3axis_4button = {
.name = "3-axis, 4-button joystick",
.internal_name = "3axis_4button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_4button_yoke_throttle = {
.name = "4-button flight yoke with throttle",
.internal_name = "4button_yoke_throttle",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis", "Throttle axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_steering_wheel_4_button = {
.name = "Steering Wheel (3-axis, 4-button)",
.internal_name = "steering_wheel_4_button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Steering axis", "Accelerator axis", "Brake axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_4axis_4button = {
.name = "4-axis, 4-button joystick",
.internal_name = "4axis_4button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis", "zX axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_2axis_6button = {
.name = "2-axis, 6-button joystick",
.internal_name = "2axis_6button",
@@ -540,3 +516,401 @@ const joystick_t joystick_2axis_8button = {
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6", "Button 7", "Button 8" },
.pov_names = { NULL }
};
const joystick_t joystick_3axis_2button = {
.name = "3-axis, 2-button joystick",
.internal_name = "3axis_2button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_3axis_3button = {
.name = "3-axis, 3-button joystick",
.internal_name = "3axis_3button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_3button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 3,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis" },
.button_names = { "Button 1", "Button 2", "Button 3" },
.pov_names = { NULL }
};
const joystick_t joystick_3axis_4button = {
.name = "3-axis, 4-button joystick",
.internal_name = "3axis_4button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_4axis_2button = {
.name = "4-axis, 2-button joystick",
.internal_name = "4axis_2button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis", "zX axis" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_4axis_3button = {
.name = "4-axis, 3-button joystick",
.internal_name = "4axis_3button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_3button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 3,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis", "zX axis" },
.button_names = { "Button 1", "Button 2", "Button 3" },
.pov_names = { NULL }
};
const joystick_t joystick_4axis_4button = {
.name = "4-axis, 4-button joystick",
.internal_name = "4axis_4button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_4axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 4,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Z axis", "zX axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_2button_gamepad = {
.name = "2-button gamepad(s)",
.internal_name = "2button_gamepad",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 2,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_3button_gamepad = {
.name = "3-button gamepad",
.internal_name = "3button_gamepad",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_3button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 3,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1", "Button 2", "Button 3" },
.pov_names = { NULL }
};
const joystick_t joystick_4button_gamepad = {
.name = "4-button gamepad",
.internal_name = "4button_gamepad",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_6button_gamepad = {
.name = "6-button gamepad",
.internal_name = "6button_gamepad",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_6button,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 6,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6" },
.pov_names = { NULL }
};
const joystick_t joystick_gravis_gamepad = {
.name = "Gravis PC GamePad",
.internal_name = "gravis_gamepad",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis" },
// TODO: Check this
.button_names = { "Button 1 (Red)", "Button 2 (Blue)", "Button 3 (Yellow)", "Button 4 (Green)" },
.pov_names = { NULL }
};
const joystick_t joystick_2button_flight_yoke = {
.name = "2-button flight yoke",
.internal_name = "2button_flight_yoke",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 2,
.axis_names = { "Roll axis", "Pitch axis" },
.button_names = { "Trigger", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_3button_flight_yoke = {
.name = "3-button flight yoke",
.internal_name = "3button_flight_yoke",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_3button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 3,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis" },
.button_names = { "Trigger", "Button 2", "Button 3" },
.pov_names = { NULL }
};
const joystick_t joystick_4button_flight_yoke = {
.name = "4-button flight yoke",
.internal_name = "4button_flight_yoke",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_2button_yoke_throttle = {
.name = "2-button flight yoke with throttle",
.internal_name = "2button_yoke_throttle",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis", "Throttle axis" },
.button_names = { "Trigger", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_3button_yoke_throttle = {
.name = "3-button flight yoke with throttle",
.internal_name = "3button_yoke_throttle",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_3button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 3,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis", "Throttle axis" },
.button_names = { "Trigger", "Button 2", "Button 3" },
.pov_names = { NULL }
};
const joystick_t joystick_4button_yoke_throttle = {
.name = "4-button flight yoke with throttle",
.internal_name = "4button_yoke_throttle",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis_throttle,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Roll axis", "Pitch axis", "Throttle axis" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_steering_wheel_2_button = {
.name = "Steering Wheel (3-axis, 2-button)",
.internal_name = "steering_wheel_2_button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_2button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 2,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Steering axis", "Accelerator axis", "Brake axis" },
.button_names = { "Button 1", "Button 2" },
.pov_names = { NULL }
};
const joystick_t joystick_steering_wheel_3_button = {
.name = "Steering Wheel (3-axis, 3-button)",
.internal_name = "steering_wheel_3_button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_3button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 3,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Steering axis", "Accelerator axis", "Brake axis" },
.button_names = { "Button 1", "Button 2", "Button 3" },
.pov_names = { NULL }
};
const joystick_t joystick_steering_wheel_4_button = {
.name = "Steering Wheel (3-axis, 4-button)",
.internal_name = "steering_wheel_4_button",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Steering axis", "Accelerator axis", "Brake axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.pov_names = { NULL }
};
const joystick_t joystick_tm_formula_t1t2 = {
.name = "Thrustmaster Formula T1/T2 with Adaptor",
.internal_name = "thrustmaster_formula_t1t2",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_2axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Steering axis", "Accelerator/Brake axis" },
.button_names = { "Shifter Up", "Shifter Down", "Top Console Switch", "Bottom Console Switch" },
.pov_names = { NULL }
};
// TODO Validate this
const joystick_t joystick_tm_formula_t1t2wa = {
.name = "Thrustmaster Formula T1/T2 without Adaptor",
.internal_name = "thrustmaster_formula_t1t2wa",
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = joystick_standard_read_axis_3axis,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 0,
.max_joysticks = 1,
.axis_names = { "Steering axis", "Accelerator axis", "Brake axis" },
.button_names = { "Shifter Up", "Shifter Down", "Top Console Switch", "Bottom Console Switch" },
.pov_names = { NULL }
};

View File

@@ -44,44 +44,7 @@
#include <86box/timer.h>
#include <86box/gameport.h>
#include <86box/plat_unused.h>
static void *
tm_fcs_init(void)
{
return NULL;
}
static void
tm_fcs_close(UNUSED(void *priv))
{
//
}
static uint8_t
tm_fcs_read(UNUSED(void *priv))
{
uint8_t gp = 0;
uint8_t ret = 0xf0;
if (JOYSTICK_PRESENT(gp, 0)) {
if (joystick_state[gp][0].button[0])
ret &= ~0x10;
if (joystick_state[gp][0].button[1])
ret &= ~0x20;
if (joystick_state[gp][0].button[2])
ret &= ~0x40;
if (joystick_state[gp][0].button[3])
ret &= ~0x80;
}
return ret;
}
static void
tm_fcs_write(UNUSED(void *priv))
{
//
}
#include <86box/joystick.h>
static int
tm_fcs_read_axis(UNUSED(void *priv), int axis)
@@ -96,8 +59,6 @@ tm_fcs_read_axis(UNUSED(void *priv), int axis)
return joystick_state[gp][0].axis[0];
case 1:
return joystick_state[gp][0].axis[1];
case 2:
return 0;
case 3:
if (joystick_state[gp][0].pov[0] == -1)
return 32767;
@@ -110,6 +71,7 @@ tm_fcs_read_axis(UNUSED(void *priv), int axis)
if (joystick_state[gp][0].pov[0] >= 225 && joystick_state[gp][0].pov[0] < 315)
return 16384;
return 0;
case 2:
default:
return 0;
}
@@ -147,44 +109,38 @@ tm_fcs_rcs_read_axis(UNUSED(void *priv), int axis)
}
}
static void
tm_fcs_a0_over(UNUSED(void *priv))
{
//
}
const joystick_t joystick_tm_fcs = {
.name = "Thrustmaster Flight Control System",
.internal_name = "thrustmaster_fcs",
.init = tm_fcs_init,
.close = tm_fcs_close,
.read = tm_fcs_read,
.write = tm_fcs_write,
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = tm_fcs_read_axis,
.a0_over = tm_fcs_a0_over,
.a0_over = joystick_standard_a0_over,
.axis_count = 2,
.button_count = 4,
.pov_count = 1,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { "POV" }
};
const joystick_t joystick_tm_fcs_rcs = {
.name = "Thrustmaster FCS + Rudder Control System",
.internal_name = "thrustmaster_fcs_rcs",
.init = tm_fcs_init,
.close = tm_fcs_close,
.read = tm_fcs_read,
.write = tm_fcs_write,
.init = joystick_standard_init,
.close = joystick_standard_close,
.read = joystick_standard_read_4button,
.write = joystick_standard_write,
.read_axis = tm_fcs_rcs_read_axis,
.a0_over = tm_fcs_a0_over,
.a0_over = joystick_standard_a0_over,
.axis_count = 3,
.button_count = 4,
.pov_count = 1,
.max_joysticks = 1,
.axis_names = { "X axis", "Y axis", "Rudder" },
.button_names = { "Button 1", "Button 2", "Button 3", "Button 4" },
.button_names = { "Trigger", "Button 2", "Button 3", "Button 4" },
.pov_names = { "POV" }
};

View File

@@ -172,29 +172,73 @@ extern void gameport_update_joystick_type(uint8_t gp);
extern void gameport_remap(void *priv, uint16_t address);
extern void *gameport_add(const device_t *gameport_type);
// Paddle Controllers
extern const joystick_t joystick_generic_paddle;
// 2 axis Generic Joysticks
extern const joystick_t joystick_2axis_1button;
extern const joystick_t joystick_2axis_2button;
extern const joystick_t joystick_2button_gamepad;
extern const joystick_t joystick_2button_flight_yoke;
extern const joystick_t joystick_2axis_3button;
extern const joystick_t joystick_2axis_4button;
extern const joystick_t joystick_4button_gamepad;
extern const joystick_t joystick_4button_flight_yoke;
extern const joystick_t joystick_3axis_2button;
extern const joystick_t joystick_2button_yoke_throttle;
extern const joystick_t joystick_3axis_4button;
extern const joystick_t joystick_4button_yoke_throttle;
extern const joystick_t joystick_steering_wheel_4_button;
extern const joystick_t joystick_4axis_4button;
extern const joystick_t joystick_2axis_6button;
extern const joystick_t joystick_2axis_8button;
// 3 axis Generic Joysticks
extern const joystick_t joystick_3axis_2button;
extern const joystick_t joystick_3axis_3button;
extern const joystick_t joystick_3axis_4button;
// 4 axis Generic Joysticks
extern const joystick_t joystick_4axis_2button;
extern const joystick_t joystick_4axis_3button;
extern const joystick_t joystick_4axis_4button;
// Generic Gamepads
extern const joystick_t joystick_2button_gamepad;
extern const joystick_t joystick_3button_gamepad;
extern const joystick_t joystick_4button_gamepad;
extern const joystick_t joystick_6button_gamepad;
extern const joystick_t joystick_gravis_gamepad;
// Generic Steering Wheels
extern const joystick_t joystick_steering_wheel_2_button;
extern const joystick_t joystick_steering_wheel_3_button;
extern const joystick_t joystick_steering_wheel_4_button;
// Generic Flight Yokes
extern const joystick_t joystick_2button_flight_yoke;
extern const joystick_t joystick_4button_flight_yoke;
extern const joystick_t joystick_3button_flight_yoke;
extern const joystick_t joystick_2button_yoke_throttle;
extern const joystick_t joystick_3button_yoke_throttle;
extern const joystick_t joystick_4button_yoke_throttle;
extern const joystick_t joystick_ch_flightstick;
extern const joystick_t joystick_ch_flightstick_ch_pedals;
extern const joystick_t joystick_ch_flightstick_ch_pedals_pro;
extern const joystick_t joystick_ch_flightstick_pro;
extern const joystick_t joystick_ch_flightstick_pro_ch_pedals;
extern const joystick_t joystick_ch_flightstick_pro_ch_pedals_pro;
extern const joystick_t joystick_ch_virtual_pilot;
extern const joystick_t joystick_ch_virtual_pilot_ch_pedals;
extern const joystick_t joystick_ch_virtual_pilot_ch_pedals_pro;
extern const joystick_t joystick_ch_virtual_pilot_pro;
extern const joystick_t joystick_ch_virtual_pilot_pro_ch_pedals;
extern const joystick_t joystick_ch_virtual_pilot_pro_ch_pedals_pro;
extern const joystick_t joystick_sw_pad;
extern const joystick_t joystick_tm_fcs;
extern const joystick_t joystick_tm_fcs_rcs;
extern const joystick_t joystick_tm_formula_t1t2;
extern const joystick_t joystick_tm_formula_t1t2wa;
#ifdef __cplusplus
}
#endif

View File

@@ -0,0 +1,27 @@
/*
* 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent
* system designs based on the PCI bus.
*
* This file is part of the 86Box distribution.
*
* Definitions for the analog joystick handlers.
*
* Authors: Jasmine Iwanek, <jriwanek@gmail.com>
*
* Copyright 2025 Jasmine Iwanek.
*/
#ifndef EMU_JOYSTICK_H
#define EMU_JOYSTICK_H
void *joystick_standard_init(void);
void joystick_standard_close(UNUSED(void *priv));
uint8_t joystick_standard_read_2button(UNUSED(void *priv));
uint8_t joystick_standard_read_4button(UNUSED(void *priv));
void joystick_standard_write(UNUSED(void *priv));
int joystick_standard_read_axis_3axis_throttle(UNUSED(void *priv), int axis);
int joystick_standard_read_axis_4axis(UNUSED(void *priv), int axis);
void joystick_standard_a0_over(UNUSED(void *priv));
#endif /*EMU_JOYSTICK_H*/

View File

@@ -66,6 +66,11 @@ typedef struct pcjr_s {
int serial_pos;
uint8_t pa;
uint8_t pb;
uint8_t option_modem;
uint8_t option_fdc;
uint8_t option_ir;
pc_timer_t send_delay_timer;
} pcjr_t;

View File

@@ -635,6 +635,9 @@ extern int machine_at_tandy4000_init(const machine_t *);
extern int machine_at_ecs386v_init(const machine_t *);
/* OPTi 391 */
#ifdef EMU_DEVICE_H
extern const device_t dataexpert386wb_device;
#endif
extern int machine_at_dataexpert386wb_init(const machine_t *);
/* OPTi 495SLC */
@@ -866,6 +869,9 @@ extern const device_t v12p_device;
#endif
extern int machine_at_v12p_init(const machine_t *);
extern int machine_at_excaliburpci_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t p5mp3_device;
#endif
extern int machine_at_p5mp3_init(const machine_t *);
extern int machine_at_opti560l_init(const machine_t *);
extern void machine_at_award_common_init(const machine_t *);
@@ -916,6 +922,9 @@ extern int machine_at_tek932_init(const machine_t *);
extern int machine_at_acerv30_init(const machine_t *);
extern int machine_at_apollo_init(const machine_t *);
extern int machine_at_optiplexgxl_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t pt2000_device;
#endif
extern int machine_at_pt2000_init(const machine_t *);
extern int machine_at_pc330_65x6_init(const machine_t *);
#ifdef EMU_DEVICE_H
@@ -961,6 +970,11 @@ extern const device_t p54tp4xe_device;
#endif
extern int machine_at_p54tp4xe_init(const machine_t *);
extern int machine_at_exp8551_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t hpvectravexxx_device;
#endif
extern int machine_at_hpvectravexxx_init(const machine_t *);
extern int machine_at_vectra500mt_init(const machine_t *);
extern int machine_at_vectra54_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t thor_device;
@@ -975,9 +989,15 @@ extern int machine_at_atlantis_init(const machine_t *);
extern const device_t monaco_device;
#endif
extern int machine_at_monaco_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t ms5119_device;
#endif
extern int machine_at_ms5119_init(const machine_t *);
extern int machine_at_pb640_init(const machine_t *);
extern int machine_at_mb500n_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t fmb_device;
#endif
extern int machine_at_fmb_init(const machine_t *);
/* i430HX */
@@ -1042,6 +1062,9 @@ extern int machine_at_8500tvxa_init(const machine_t *);
extern int machine_at_presario2240_init(const machine_t *);
extern int machine_at_presario4500_init(const machine_t *);
extern int machine_at_dellhannibalp_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t p5vxb_device;
#endif
extern int machine_at_p5vxb_init(const machine_t *);
extern int machine_at_p55va_init(const machine_t *);
extern int machine_at_gw2kte_init(const machine_t *);
@@ -1116,6 +1139,9 @@ extern int machine_at_g5x_init(const machine_t *);
/* VIA MVP3 */
extern int machine_at_ax59pro_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t delhi3_device;
#endif
extern int machine_at_delhi3_init(const machine_t *);
extern int machine_at_mvp3_init(const machine_t *);
extern int machine_at_ficva503a_init(const machine_t *);
@@ -1139,6 +1165,7 @@ extern int machine_at_acerv60n_init(const machine_t *);
extern int machine_at_p65up5_cp6nd_init(const machine_t *);
extern int machine_at_8600ttc_init(const machine_t *);
extern int machine_at_686nx_init(const machine_t *);
extern uint32_t machine_ap440fx_vs440fx_gpio_handler(uint8_t write, uint32_t val);
extern int machine_at_ap440fx_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t vs440fx_device;
@@ -1175,6 +1202,9 @@ extern int machine_at_bf6_init(const machine_t *);
extern const device_t bx6_device;
#endif
extern int machine_at_bx6_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t ax6bc_device;
#endif
extern int machine_at_ax6bc_init(const machine_t *);
extern int machine_at_p2bls_init(const machine_t *);
extern int machine_at_p3bf_init(const machine_t *);
@@ -1191,9 +1221,15 @@ extern const device_t ms6147_device;
#endif
extern int machine_at_ms6147_init(const machine_t *);
extern int machine_at_p6sba_init(const machine_t *);
#ifdef EMU_DEVICE_H
extern const device_t s1846_device;
#endif
extern int machine_at_s1846_init(const machine_t *);
/* i440ZX */
#ifdef EMU_DEVICE_H
extern const device_t vei8_device;
#endif
extern int machine_at_vei8_init(const machine_t *);
extern int machine_at_ms6168_init(const machine_t *);
extern int machine_at_borapro_init(const machine_t *);
@@ -1221,6 +1257,9 @@ extern int machine_at_fw6400gx_init(const machine_t *);
/* m_at_slot1_socket370.c */
/* i440BX */
#ifdef EMU_DEVICE_H
extern const device_t prosignias31x_device;
#endif
extern int machine_at_prosignias31x_bx_init(const machine_t *);
extern int machine_at_s1857_init(const machine_t *);

View File

@@ -20,14 +20,15 @@
#ifndef EMU_SERIAL_H
#define EMU_SERIAL_H
#define SERIAL_8250 0
#define SERIAL_8250_PCJR 1
#define SERIAL_16450 2
#define SERIAL_16550 3
#define SERIAL_16650 4
#define SERIAL_16750 5
#define SERIAL_16850 6
#define SERIAL_16950 7
#define SERIAL_8250 0
#define SERIAL_8250_PCJR_3F8 1
#define SERIAL_8250_PCJR_2F8 2
#define SERIAL_16450 3
#define SERIAL_16550 4
#define SERIAL_16650 5
#define SERIAL_16750 6
#define SERIAL_16850 7
#define SERIAL_16950 8
#define SERIAL_FIFO_SIZE 16
@@ -151,7 +152,8 @@ extern int serial_get_ri(serial_t *dev);
extern uint8_t serial_get_shadow(serial_t *dev);
extern const device_t ns8250_device;
extern const device_t ns8250_pcjr_device;
extern const device_t ns8250_pcjr_3f8_device;
extern const device_t ns8250_pcjr_2f8_device;
extern const device_t ns16450_device;
extern const device_t ns16550_device;
extern const device_t ns16650_device;

View File

@@ -474,6 +474,7 @@ extern uint8_t sc1502x_rs2_ramdac_in(uint16_t addr, int rs2, void *priv, svga_t
extern void sdac_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *priv, svga_t *svga);
extern uint8_t sdac_ramdac_in(uint16_t addr, int rs2, void *priv, svga_t *svga);
extern float sdac_getclock(int clock, void *priv);
extern void sdac_set_ref_clock(void *priv, float ref_clock);
extern void stg_ramdac_out(uint16_t addr, uint8_t val, void *priv, svga_t *svga);
extern uint8_t stg_ramdac_in(uint16_t addr, void *priv, svga_t *svga);
@@ -507,6 +508,7 @@ extern const device_t bt485a_ramdac_device;
extern const device_t gendac_ramdac_device;
extern const device_t ibm_rgb528_ramdac_device;
extern const device_t ics2494an_305_device;
extern const device_t ics2494an_324_device;
extern const device_t ati18810_28800_device;
extern const device_t ati18811_0_28800_device;
extern const device_t ati18811_1_28800_device;
@@ -523,7 +525,8 @@ extern const device_t sc11484_nors2_ramdac_device;
extern const device_t sc1502x_ramdac_device;
extern const device_t sc1502x_rs2_ramdac_device;
extern const device_t sdac_ramdac_device;
extern const device_t stg_ramdac_device;
extern const device_t stg1702_ramdac_device;
extern const device_t stg1703_ramdac_device;
extern const device_t tkd8001_ramdac_device;
extern const device_t tseng_ics5301_ramdac_device;
extern const device_t tseng_ics5341_ramdac_device;

View File

@@ -436,20 +436,20 @@ extern const device_t et4000_kasan_isa_device;
extern const device_t et4000_mca_device;
/* Tseng ET4000-W32x */
extern const device_t et4000w32_device;
extern const device_t et4000w32_machspeed_vga_gui_2400s_isa_device;
extern const device_t et4000w32_machspeed_vga_gui_2400s_vlb_device;
extern const device_t et4000w32_onboard_device;
extern const device_t et4000w32i_isa_device;
extern const device_t et4000w32i_vlb_device;
extern const device_t et4000w32i_axis_microdevice_isa_device;
extern const device_t et4000w32i_hercules_dynamite_pro_vlb_device;
extern const device_t et4000w32p_videomagic_revb_vlb_device;
extern const device_t et4000w32p_videomagic_revb_pci_device;
extern const device_t et4000w32p_revc_vlb_device;
extern const device_t et4000w32p_revc_pci_device;
extern const device_t et4000w32p_vlb_device;
extern const device_t et4000w32p_pci_device;
extern const device_t et4000w32p_noncardex_vlb_device;
extern const device_t et4000w32p_noncardex_pci_device;
extern const device_t et4000w32p_cardex_vlb_device;
extern const device_t et4000w32p_cardex_pci_device;
extern const device_t et4000w32p_cardex_revc_vlb_device;
extern const device_t et4000w32p_cardex_revc_pci_device;
extern const device_t et4000w32p_cardex_revd_vlb_device;
extern const device_t et4000w32p_cardex_revd_pci_device;
extern const device_t et4000w32p_diamond_revd_vlb_device;
extern const device_t et4000w32p_diamond_revd_pci_device;
extern const device_t et4000w32p_generic_revd_vlb_device;
extern const device_t et4000w32p_generic_revd_pci_device;
/* MDSI Genius VHR */
extern const device_t genius_device;

View File

@@ -367,7 +367,26 @@ static const device_config_t pc900_config[] = {
.local = 0,
.size = 32768,
.files = { "roms/machines/pc900/cbm_pc40_v207a_xc.bin", "" }
}
},
{
.name = "BIOS V2.07B",
.internal_name = "pc900_v207b",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 32768,
.files = { "roms/machines/pc900/mpf_pc900_v207b.bin", "" }
},
{
.name = "BIOS V3.01B",
.internal_name = "pc900_v301b",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 32768,
.files = { "roms/machines/pc900/cbm_pc40_v301b.bin", "" }
},
{ .files_no = 0 }
},
},
{ .name = "", .description = "", .type = CONFIG_END }

View File

@@ -332,17 +332,71 @@ machine_at_ecs386v_init(const machine_t *model)
}
/* OPTi 391 */
static const device_config_t dataexpert386wb_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "dataexpert386wb",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "AMIBIOS 050591",
.internal_name = "ami386wb",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 65536,
.files = { "roms/machines/dataexpert386wb/386-OPTI-386WB-10.BIN", "" }
},
{
.name = "MR BIOS V1.26",
.internal_name = "dataexpert386wb",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 65536,
.files = { "roms/machines/dataexpert386wb/st0386-wb-ver2-0-618f078c738cb397184464.bin", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t dataexpert386wb_device = {
.name = "DataExpert 386WB",
.internal_name = "dataexpert386wb_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = dataexpert386wb_config
};
int
machine_at_dataexpert386wb_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/dataexpert386wb/st0386-wb-ver2-0-618f078c738cb397184464.bin",
0x000f0000, 65536, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000f0000, 65536, 0);
machine_at_common_init(model);
device_add(&opti391_device);

View File

@@ -168,7 +168,8 @@ static const device_config_t lx6_config[] = {
.bios = {
{
.name = "Award Modular BIOS v4.51PG - Revision LY",
.internal_name = "lx6", .bios_type = BIOS_NORMAL,
.internal_name = "lx6",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
@@ -571,17 +572,72 @@ machine_at_p3bf_init(const machine_t *model)
return ret;
}
static const device_config_t ax6bc_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "ax6bc",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v4.51PGM - Revision R1.10",
.internal_name = "ax6bc_451pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/ax6bc/ax6bc110.bin", "" }
},
{
.name = "Award Modular BIOS v4.60PGM - Revision R2.59",
.internal_name = "ax6bc",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/ax6bc/AX6BC_R2.59.bin", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t ax6bc_device = {
.name = "AOpen AX6BC",
.internal_name = "ax6bc_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = ax6bc_config
};
int
machine_at_ax6bc_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/ax6bc/AX6BC_R2.59.bin",
0x000c0000, 262144, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
@@ -937,17 +993,72 @@ machine_at_p6sba_init(const machine_t *model)
return ret;
}
static const device_config_t s1846_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "s1846",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "AMIBIOS 6 (071595) - Revision 2.00.04",
.internal_name = "s1846",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/s1846/bx46200f.rom", "" }
},
{
.name = "AMIBIOS 6 (071595) - Revision 2.00.0x (Tulip Vision Line TP90)",
.internal_name = "tp90",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/s1846/1846TP90.BIN", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t s1846_device = {
.name = "Tyan Tsunami ATX",
.internal_name = "s1846_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = s1846_config
};
int
machine_at_s1846_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/s1846/bx46200f.rom",
0x000c0000, 262144, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
@@ -975,18 +1086,73 @@ machine_at_s1846_init(const machine_t *model)
return ret;
}
static const device_config_t vei8_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "vei8",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v6.00PG - Revision QHW.10.01 (HP Sherwood-B)",
.internal_name = "vei8",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/vei8/QHW1001.BIN", "" }
},
{
.name = "Award Modular BIOS v6.00PG - Revision R804",
.internal_name = "6110zu",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/vei8/r804.bin", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t vei8_device = {
.name = "MiTAC/Trigon 6110Zu",
.internal_name = "vei8_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = vei8_config
};
/* i440ZX */
int
machine_at_vei8_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/vei8/QHW1001.BIN",
0x000c0000, 262144, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);

View File

@@ -39,17 +39,81 @@
#include <86box/snd_ac97.h>
/* i440BX */
static const device_config_t prosignias31x_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "prosignias31x_bx",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v4.51PG - Revision 5.3",
.internal_name = "p6bxt",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/prosignias31x_bx/bxt53s.BIN", "" }
},
{
.name = "Award Modular BIOS v4.51PG - Revision 5.5 (Compaq ProSignia/Deskpro 440BX)",
.internal_name = "prosignias31x_bx",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/prosignias31x_bx/p6bxt-ap-092600.bin", "" }
},
{
.name = "Phoenix - AwardBIOS v6.00PG - Unofficial Version 6.0 (by rushieda)",
.internal_name = "p6bxt_600pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/prosignias31x_bx/p6bxtap-600-67b8bfdce5de3470118202.bin", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t prosignias31x_device = {
.name = "ECS P6BXT-A+",
.internal_name = "prosignias31x_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = prosignias31x_config
};
int
machine_at_prosignias31x_bx_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/prosignias31x_bx/p6bxt-ap-092600.bin",
0x000c0000, 262144, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);

View File

@@ -158,17 +158,72 @@ machine_at_excaliburpci_init(const machine_t *model)
return ret;
}
static const device_config_t p5mp3_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "p5mp3",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v4.50 - Revision 0205",
.internal_name = "p5mp3",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/p5mp3/0205.bin", "" }
},
{
.name = "Award Modular BIOS v4.51G - Revision 0402 (Beta)",
.internal_name = "p5mp3_beta",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/p5mp3/0402.001", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t p5mp3_device = {
.name = "ASUS P/I-P5MP3",
.internal_name = "p5mp3_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = p5mp3_config
};
int
machine_at_p5mp3_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/p5mp3/0205.bin",
0x000e0000, 131072, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_2 | PCI_NO_IRQ_STEERING);

View File

@@ -432,7 +432,6 @@ static void
machine_at_morrison64_gpio_init(void)
{
uint32_t gpio = 0xffffe0cf;
uint16_t addr;
/* Return to this after CS4232 PnP is working. */
/* Register 0x0078 (Undocumented): */
@@ -482,8 +481,8 @@ machine_at_morrison64_gpio_init(void)
gpio |= 0xffff01af;
else if (cpu_dmulti <= 2.0)
gpio |= 0xffffe2af;
if ((cpu_dmulti > 2.0) && (cpu_dmulti <= 2.5))
gpio |= 0xffffe5cf;
else if ((cpu_dmulti > 2.0) && (cpu_dmulti <= 2.5))
gpio |= 0xffffe5cf;
machine_set_gpio_default(gpio);
}
@@ -553,17 +552,72 @@ machine_at_zappa_gpio_init(void)
machine_set_gpio_default(gpio);
}
static const device_config_t pt2000_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "pt2000",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v4.50GP - Revision T1.01",
.internal_name = "pt2000",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ficpt2000/PT2000_v1.01.BIN", "" }
},
{
.name = "Award Modular BIOS v4.51PG - Revision 3.072C806",
.internal_name = "pt2000_451pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ficpt2000/3072c806.bin", "" }
},
{ .files_no = 0 }
},
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t pt2000_device = {
.name = "FIC PT-2000",
.internal_name = "pt2000_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = pt2000_config
};
int
machine_at_pt2000_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/ficpt2000/PT2000_v1.01.BIN",
0x000e0000, 131072, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);

View File

@@ -813,17 +813,72 @@ machine_at_dellhannibalp_init(const machine_t *model)
return ret;
}
static const device_config_t p5vxb_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "p5vxb",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "Award Modular BIOS v4.50PG - Revision 1.0",
.internal_name = "p5vxb",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/p5vxb/P5VXB10.BIN", "" }
},
{
.name = "Award Modular BIOS v4.51PG - Revision 1.5c",
.internal_name = "p5vxb_451pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/p5vxb/P5VXB15C.BIN", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t p5vxb_device = {
.name = "ECS P5VX-B",
.internal_name = "p5vxb_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = p5vxb_config
};
int
machine_at_p5vxb_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/p5vxb/P5VXB10.BIN",
0x000e0000, 131072, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
@@ -1422,24 +1477,39 @@ machine_at_ma23c_init(const machine_t *model)
static const device_config_t an430tx_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "pb79x",
.default_int = 0,
.file_filter = "",
.spinner = { 0 },
.bios = {
{ .name = "PhoenixBIOS 4.0 Release 6.0 - Revision P02-0011 (Sony Vaio PCV-130/150)", .internal_name = "vaio150", .bios_type = BIOS_NORMAL,
.files_no = 5, .local = 0, .size = 262144, .files = { "roms/machines/an430tx/P02-0011.BIO", "roms/machines/an430tx/P02-0011.BI1",
"roms/machines/an430tx/P02-0011.BI2", "roms/machines/an430tx/P02-0011.BI3",
"roms/machines/an430tx/P02-0011.RCV", "" } },
{ .name = "PhoenixBIOS 4.0 Release 6.0 - Revision P09-0006 (Packard Bell PB79x)", .internal_name = "pb79x", .bios_type = BIOS_NORMAL,
.files_no = 5, .local = 0, .size = 262144, .files = { "roms/machines/an430tx/ANP0911A.BIO", "roms/machines/an430tx/ANP0911A.BI1",
"roms/machines/an430tx/ANP0911A.BI2", "roms/machines/an430tx/ANP0911A.BI3",
"roms/machines/an430tx/ANP0911A.RCV", "" } },
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "PhoenixBIOS 4.0 Release 6.0 - Revision P02-0011 (Sony Vaio PCV-130/150)",
.internal_name = "vaio150",
.bios_type = BIOS_NORMAL,
.files_no = 5,
.local = 0,
.size = 262144,
.files = { "roms/machines/an430tx/P02-0011.BIO", "roms/machines/an430tx/P02-0011.BI1",
"roms/machines/an430tx/P02-0011.BI2", "roms/machines/an430tx/P02-0011.BI3",
"roms/machines/an430tx/P02-0011.RCV", "" }
},
{
.name = "PhoenixBIOS 4.0 Release 6.0 - Revision P09-0006 (Packard Bell PB79x)",
.internal_name = "pb79x",
.bios_type = BIOS_NORMAL,
.files_no = 5,
.local = 0,
.size = 262144,
.files = { "roms/machines/an430tx/ANP0911A.BIO", "roms/machines/an430tx/ANP0911A.BI1",
"roms/machines/an430tx/ANP0911A.BI2", "roms/machines/an430tx/ANP0911A.BI3",
"roms/machines/an430tx/ANP0911A.RCV", "" }
},
{ .files_no = 0 }
},
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on

View File

@@ -157,6 +157,150 @@ machine_at_exp8551_init(const machine_t *model)
return ret;
}
static void
machine_at_hpvectravexxx_gpio_init(void)
{
uint32_t gpio = 0x40;
if (cpu_busspeed <= 40000000)
gpio |= 0x30;
else if ((cpu_busspeed > 40000000) && (cpu_busspeed <= 50000000))
gpio |= 0x00;
else if ((cpu_busspeed > 50000000) && (cpu_busspeed <= 60000000))
gpio |= 0x20;
else if (cpu_busspeed > 60000000)
gpio |= 0x10;
if (cpu_dmulti <= 1.5)
gpio |= 0x82;
else if ((cpu_dmulti > 1.5) && (cpu_dmulti <= 2.0))
gpio |= 0x02;
else if ((cpu_dmulti > 2.0) && (cpu_dmulti <= 2.5))
gpio |= 0x00;
else if (cpu_dmulti > 2.5)
gpio |= 0x80;
machine_set_gpio_default(gpio);
}
static const device_config_t hpvectravexxx_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "gu_07_05",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "GU.07.02 (01/25/96)",
.internal_name = "gu_07_02",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/hpvectravexxx/d3653.bin", "" }
},
{
.name = "GU.07.05 (08/06/96)",
.internal_name = "gu_07_05",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/hpvectravexxx/GU0705US.FUL", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t hpvectravexxx_device = {
.name = "HP Vectra VE 5/XXX Series 2",
.internal_name = "hpvectravexxx_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = hpvectravexxx_config
};
int
machine_at_hpvectravexxx_init(const machine_t *model)
{
int ret = 0;
const char *fn;
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
machine_at_hpvectravexxx_gpio_init();
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0);
pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&pc87306_device, (void *) PCX730X_PHOENIX_42);
device_add(&intel_flash_bxt_device);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
return ret;
}
int
machine_at_vectra500mt_init(const machine_t *model)
{
int ret;
ret = bios_load_linear("roms/machines/vectra500mt/GJ0718.FUL",
0x000e0000, 131072, 0);
if (bios_only || !ret)
return ret;
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0F, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
pci_register_slot(0x0D, PCI_CARD_VIDEO, 0, 0, 0, 0);
pci_register_slot(0x06, PCI_CARD_NORMAL, 1, 2, 3, 4);
pci_register_slot(0x07, PCI_CARD_NORMAL, 2, 3, 4, 1);
pci_register_slot(0x08, PCI_CARD_NORMAL, 3, 4, 1, 2);
if (gfxcard[0] == VID_INTERNAL)
device_add(machine_get_vid_device(machine));
device_add(&i430fx_device);
device_add(&piix_device);
device_add_params(&fdc37c93x_device, (void *) (FDC37XXX2 | FDC37C93X_NORMAL));
device_add(&sst_flash_29ee010_device);
return ret;
}
int
machine_at_vectra54_init(const machine_t *model)
{
@@ -431,7 +575,6 @@ static void
machine_at_monaco_gpio_init(void)
{
uint32_t gpio = 0xffffe0cf;
uint16_t addr;
/* Return to this after CS4232 PnP is working. */
/* Register 0x0078 (Undocumented): */
@@ -668,17 +811,72 @@ machine_at_monaco_init(const machine_t *model)
return ret;
}
static const device_config_t ms5119_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "ms5119",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "AMIBIOS 6 (071595) - Revision A37EB",
.internal_name = "ms5119",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ms5119/A37EB.ROM", "" }
},
{
.name = "Award Modular BIOS v4.51PG - Release 2.3 (by Rainbow)",
.internal_name = "ms5119_451pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/ms5119/MS-5120.BIN", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t ms5119_device = {
.name = "MSI MS-5119",
.internal_name = "ms5119_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = ms5119_config
};
int
machine_at_ms5119_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/ms5119/A37EB.ROM",
0x000e0000, 131072, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);
@@ -794,17 +992,72 @@ machine_at_mb500n_init(const machine_t *model)
return ret;
}
static const device_config_t fmb_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "fmb",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "AMIBIOS 6 (071595) - Revision 1.83",
.internal_name = "fmb",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/fmb/P5IV183.ROM", "" }
},
{
.name = "Award Modular BIOS v4.51PG - 2001 Release (by Rainbow)",
.internal_name = "fmb_451pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 131072,
.files = { "roms/machines/fmb/P5I437FM.BIN", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t fmb_device = {
.name = "QDI FMB",
.internal_name = "fmb_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = fmb_config
};
int
machine_at_fmb_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/fmb/P5IV183.ROM",
0x000e0000, 131072, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000e0000, 131072, 0);
device_context_restore();
machine_at_common_init(model);
pci_init(PCI_CONFIG_TYPE_1);

View File

@@ -303,6 +303,15 @@ machine_at_686nx_init(const machine_t *model)
return ret;
}
uint32_t
machine_ap440fx_vs440fx_gpio_handler(uint8_t write, uint32_t val)
{
if (!write)
return 0xff7f;
return val; /* Writes are ignored. */
}
int
machine_at_ap440fx_init(const machine_t *model)
{

View File

@@ -200,7 +200,7 @@ static const device_config_t g5x_config[] = {
},
{
.name = "Phoenix - AwardBIOS v6.00PG - Release 4.1 (by eSupport)",
.internal_name = "5ax_esupport",
.internal_name = "5ax_600pg",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
@@ -298,17 +298,72 @@ machine_at_ax59pro_init(const machine_t *model)
return ret;
}
static const device_config_t delhi3_config[] = {
// clang-format off
{
.name = "bios",
.description = "BIOS Version",
.type = CONFIG_BIOS,
.default_string = "delhi3",
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = {
{
.name = "AMIBIOS 6 (071595) - Revision 1.01",
.internal_name = "delhi3_nonoem",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/delhi3/DELHI3_nonoem.ROM", "" }
},
{
.name = "AMIBIOS 6 (071595) - Revision 1.20 (eMachines eTower 3__k)",
.internal_name = "delhi3",
.bios_type = BIOS_NORMAL,
.files_no = 1,
.local = 0,
.size = 262144,
.files = { "roms/machines/delhi3/DELHI3.ROM", "" }
},
{ .files_no = 0 }
}
},
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
const device_t delhi3_device = {
.name = "TriGem Delhi-III",
.internal_name = "delhi3_device",
.flags = 0,
.local = 0,
.init = NULL,
.close = NULL,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = delhi3_config
};
int
machine_at_delhi3_init(const machine_t *model)
{
int ret;
int ret = 0;
const char *fn;
ret = bios_load_linear("roms/machines/delhi3/DELHI3.ROM",
0x000c0000, 262144, 0);
if (bios_only || !ret)
/* No ROMs available */
if (!device_available(model->device))
return ret;
device_context(model->device);
fn = device_get_bios_file(machine_get_device(machine), device_get_config_bios("bios"), 0);
ret = bios_load_linear(fn, 0x000c0000, 262144, 0);
device_context_restore();
machine_at_common_init_ex(model, 2);
pci_init(PCI_CONFIG_TYPE_1);

View File

@@ -41,6 +41,7 @@
#include <86box/rom.h>
#include <86box/fdd.h>
#include <86box/fdc.h>
#include <86box/fdc_ext.h>
#include <86box/sound.h>
#include <86box/snd_speaker.h>
#include <86box/snd_sn76489.h>
@@ -652,7 +653,10 @@ kbd_read(uint16_t port, void *priv)
case 0x62:
ret = (pcjr->latched ? 1 : 0);
ret |= 0x02; /* Modem card not installed */
if (!pcjr->option_modem)
ret |= 0x02; /* Modem card not installed */
if (!pcjr->option_fdc)
ret |= 0x04; /* Diskette card not installed */
if (mem_size < 128)
ret |= 0x08; /* 64k expansion card not installed */
if ((pcjr->pb & 0x08) || (cassette == NULL))
@@ -664,6 +668,8 @@ kbd_read(uint16_t port, void *priv)
ret |= (pcjr->data ? 0x40 : 0);
if (pcjr->data)
ret |= 0x40;
if (pcjr->option_ir)
ret |= 0x80; /* Keyboard cable not connected */
break;
case 0xa0:
@@ -813,6 +819,30 @@ static const device_config_t pcjr_config[] = {
.selection = { { 0 } },
.bios = { { 0 } }
},
#if 0
{
.name = "modem_slot",
.description = "Enable Serial Port in Modem Slot",
.type = CONFIG_BINARY,
.default_string = NULL,
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = { { 0 } }
},
{
.name = "ir_reciever",
.description = "Enable IR Reciever",
.type = CONFIG_BINARY,
.default_string = NULL,
.default_int = 0,
.file_filter = NULL,
.spinner = { 0 },
.selection = { { 0 } },
.bios = { { 0 } }
},
#endif
{ .name = "", .description = "", .type = CONFIG_END }
// clang-format on
};
@@ -846,6 +876,18 @@ machine_pcjr_init(UNUSED(const machine_t *model))
pcjr = calloc(1, sizeof(pcjr_t));
#if 0
pcjr->option_modem = device_get_config_int("modem_slot");
#else
pcjr->option_modem = 0;
#endif
pcjr->option_fdc = 0;
#if 0
pcjr->option_ir = device_get_config_int("ir_reciever");
#else
pcjr->option_ir = 0;
#endif
is_pcjr = 1;
pic_init_pcjr();
@@ -865,9 +907,13 @@ machine_pcjr_init(UNUSED(const machine_t *model))
keyboard_scan = 1;
key_queue_start = key_queue_end = 0;
io_sethandler(0x0060, 4,
kbd_read, NULL, NULL, kbd_write, NULL, NULL, pcjr);
kbd_read, NULL, NULL,
kbd_write, NULL, NULL,
pcjr);
io_sethandler(0x00a0, 8,
kbd_read, NULL, NULL, kbd_write, NULL, NULL, pcjr);
kbd_read, NULL, NULL,
kbd_write, NULL, NULL,
pcjr);
timer_add(&pcjr->send_delay_timer, kbd_poll, pcjr, 1);
keyboard_set_table(scancode_pcjr);
keyboard_send = kbd_adddata_ex;
@@ -877,9 +923,18 @@ machine_pcjr_init(UNUSED(const machine_t *model))
nmi_mask = 0x80;
device_add(&fdc_pcjr_device);
if (fdc_current[0] == FDC_INTERNAL) {
device_add(&fdc_pcjr_device);
pcjr->option_fdc = 1;
}
if (!pcjr->option_modem)
device_add(&ns8250_pcjr_2f8_device);
else {
device_add(&ns8250_pcjr_3f8_device);
device_add(&ns8250_pcjr_2f8_device);
}
device_add(&ns8250_pcjr_device);
/* So that serial_standalone_init() won't do anything. */
serial_set_next_inst(SERIAL_MAX - 1);

View File

@@ -300,7 +300,7 @@ const machine_t machines[] = {
.max_multi = 0
},
.bus_flags = MACHINE_PCJR,
.flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_CARTRIDGE,
.flags = MACHINE_VIDEO_FIXED | MACHINE_KEYBOARD | MACHINE_CARTRIDGE | MACHINE_FDC,
.ram = {
.min = 64,
.max = 640,
@@ -316,7 +316,7 @@ const machine_t machines[] = {
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.fdc_device = &fdc_pcjr_device,
.sio_device = NULL,
.vid_device = &pcjr_device,
.snd_device = NULL,
@@ -6627,7 +6627,7 @@ const machine_t machines[] = {
},
/* Has AMIKey 'F' KBC firmware. */
{
.name = "[OPTi 391] DataExpert 386WB",
.name = "[OPTi 391] DataExpert 386C",
.internal_name = "dataexpert386wb",
.type = MACHINE_TYPE_386DX,
.chipset = MACHINE_CHIPSET_OPTI_391,
@@ -6661,7 +6661,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x000004f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &dataexpert386wb_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -8831,7 +8831,7 @@ const machine_t machines[] = {
.max_multi = 0
},
.bus_flags = MACHINE_VLB,
.flags = MACHINE_APM | MACHINE_ACPI,
.flags = MACHINE_APM,
.ram = {
.min = 1024,
.max = 131072,
@@ -11350,7 +11350,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &p5mp3_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -11448,7 +11448,7 @@ const machine_t machines[] = {
},
/* Has IBM PS/2 Type 1 KBC firmware. */
{
.name = "[i430LX] IBM PS/ValuePoint P60",
.name = "[i430LX] IBM PS/ValuePoint P60 (Robin ACE)",
.internal_name = "valuepointp60",
.type = MACHINE_TYPE_SOCKET4,
.chipset = MACHINE_CHIPSET_INTEL_430LX,
@@ -12423,7 +12423,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &pt2000_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -12432,47 +12432,47 @@ const machine_t machines[] = {
.net_device = NULL
},
{
.name = "[i430FX] IBM PC 3x0 (type 65x6) (Morrison64)",
.internal_name = "pc330_65x6",
.type = MACHINE_TYPE_SOCKET5,
.chipset = MACHINE_CHIPSET_INTEL_430FX,
.init = machine_at_pc330_65x6_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.name = "[i430FX] IBM PC 3x0 (type 65x6) (Morrison64)",
.internal_name = "pc330_65x6",
.type = MACHINE_TYPE_SOCKET5,
.chipset = MACHINE_CHIPSET_INTEL_430FX,
.init = machine_at_pc330_65x6_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86),
.min_bus = 50000000,
.max_bus = 66666667,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_Cx6x86),
.min_bus = 50000000,
.max_bus = 66666667,
.min_voltage = 3380,
.max_voltage = 3520,
.min_multi = 1.5,
.max_multi = 2.0
.min_multi = 1.5,
.max_multi = 2.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM,
.ram = {
.min = 8192,
.max = 131072,
.flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM,
.ram = {
.min = 8192,
.max = 131072,
.step = 8192
},
.nvrmask = 255,
.jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3,
.nvrmask = 255,
.jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3,
.default_jumpered_ecp_dma = 3,
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x000044f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &s3_phoenix_trio64_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x000044f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &s3_phoenix_trio64_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
},
/* According to tests from real hardware: This has AMI MegaKey KBC firmware on the
PC87306 Super I/O chip, command 0xA1 returns '5'.
@@ -12525,7 +12525,7 @@ const machine_t machines[] = {
The board turns out to be a BCM FM540 which has an AMI 'H' KBC.
*/
{
.name = "[i430FX] NEC PowerMate Vxxx",
.name = "[i430FX] NEC PowerMate Vxxx (BCM FM540)",
.internal_name = "powermatev",
.type = MACHINE_TYPE_SOCKET5,
.chipset = MACHINE_CHIPSET_INTEL_430FX,
@@ -13040,27 +13040,27 @@ const machine_t machines[] = {
.max_multi = 2.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO,
.ram = {
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO,
.ram = {
.min = 4096,
.max = 131072,
.step = 4096
},
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_USE_CONFIG,
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_USE_CONFIG,
.default_jumpered_ecp_dma = -1,
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &gd5434_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &gd5434_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
},
/* Has a VIA KBC chip */
{
@@ -13084,27 +13084,27 @@ const machine_t machines[] = {
.max_multi = 2.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
.ram = {
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
.ram = {
.min = 4096,
.max = 262144,
.step = 4096
},
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_1 | MACHINE_DMA_3,
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_1 | MACHINE_DMA_3,
.default_jumpered_ecp_dma = 1,
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_VIA | 0x00424600, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = NULL,
.net_device = NULL
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_VIA | 0x00424600, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = NULL,
.net_device = NULL
},
/* KBC firmware is unknown. No commands outside of the base PS/2 */
/* KBC command set are used. */
@@ -13129,27 +13129,27 @@ const machine_t machines[] = {
.max_multi = 2.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
.ram = {
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
.ram = {
.min = 4096,
.max = 131072,
.step = 4096
},
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3,
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_DISABLED | MACHINE_DMA_1 | MACHINE_DMA_3,
.default_jumpered_ecp_dma = 4,
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = NULL,
.net_device = NULL
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00021400, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = NULL,
.net_device = NULL
},
/* This has Phoenix KBC firmware. */
{
@@ -13173,27 +13173,27 @@ const machine_t machines[] = {
.max_multi = 2.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO,
.ram = {
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO,
.ram = {
.min = 8192,
.max = 139264,
.step = 4096
},
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_1 | MACHINE_DMA_3,
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_1 | MACHINE_DMA_3,
.default_jumpered_ecp_dma = 3,
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &gd5430_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &gd5430_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
},
/* VLSI Wildcat */
@@ -13219,27 +13219,27 @@ const machine_t machines[] = {
.max_multi = 2.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO,
.ram = {
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_VIDEO,
.ram = {
.min = 4096,
.max = 196608,
.step = 4096
},
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_3,
.nvrmask = 127,
.jumpered_ecp_dma = MACHINE_DMA_3,
.default_jumpered_ecp_dma = 3,
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &s3_phoenix_trio64_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
.kbc_device = &kbc_at_device,
.kbc_params = KBC_VEN_PHOENIX | 0x00012900, /* Guess */
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &s3_phoenix_trio64_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
},
/* Socket 7 (Single Voltage) machines */
@@ -13333,6 +13333,92 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
{
.name = "[i430FX] HP Vectra VE 5/XXX Series 2",
.internal_name = "hpvectravexxx",
.type = MACHINE_TYPE_SOCKET7_3V,
.chipset = MACHINE_CHIPSET_INTEL_430FX,
.init = machine_at_hpvectravexxx_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK_NONE,
.min_bus = 50000000,
.max_bus = 66666667,
.min_voltage = 3380,
.max_voltage = 3520,
.min_multi = 1.5,
.max_multi = 3.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM,
.ram = {
.min = 8192,
.max = 131072,
.step = 8192
},
.nvrmask = 255,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = &hpvectravexxx_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &gd5436_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
},
{
.name = "[i430FX] HP Vectra 500 Series xxx/MT",
.internal_name = "vectra500mt",
.type = MACHINE_TYPE_SOCKET7_3V,
.chipset = MACHINE_CHIPSET_INTEL_430FX,
.init = machine_at_vectra500mt_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK_NONE,
.min_bus = 50000000,
.max_bus = 66666667,
.min_voltage = 3380,
.max_voltage = 3520,
.min_multi = 1.5,
.max_multi = 3.0
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_VIDEO | MACHINE_APM,
.ram = {
.min = 8192,
.max = 131072,
.step = 8192
},
.nvrmask = 511,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x000044f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = &s3_phoenix_trio64_onboard_pci_device,
.snd_device = NULL,
.net_device = NULL
},
/* Has a SM(S)C FDC37C932 Super I/O chip with on-chip KBC with AMI
MegaKey (revision '5') KBC firmware. */
{
@@ -13598,7 +13684,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &ms5119_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -13731,7 +13817,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x000004f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &fmb_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -15132,7 +15218,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &p5vxb_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -15608,7 +15694,7 @@ const machine_t machines[] = {
.chipset = MACHINE_CHIPSET_INTEL_430TX,
.init = machine_at_optiplexgn_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.gpio_handler = machine_ap440fx_vs440fx_gpio_handler,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
@@ -15648,7 +15734,7 @@ const machine_t machines[] = {
},
/* [TEST] Has AMI Megakey '5' KBC firmware on the SM(S)C FDC37C67x Super I/O chip. */
{
.name = "[i430TX] Gateway E-1000",
.name = "[i430TX] Gateway E-1000 (Tomahawk)",
.internal_name = "tomahawk",
.type = MACHINE_TYPE_SOCKET7,
.chipset = MACHINE_CHIPSET_INTEL_430TX,
@@ -15692,48 +15778,48 @@ const machine_t machines[] = {
},
/* This has the Phoenix MultiKey KBC firmware on the NSC Super I/O chip. */
{
.name = "[i430TX] Intel AN430TX (Anchorage)",
.internal_name = "an430tx",
.type = MACHINE_TYPE_SOCKET7,
.chipset = MACHINE_CHIPSET_INTEL_430TX,
.init = machine_at_an430tx_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.name = "[i430TX] Intel AN430TX (Anchorage)",
.internal_name = "an430tx",
.type = MACHINE_TYPE_SOCKET7,
.chipset = MACHINE_CHIPSET_INTEL_430TX,
.init = machine_at_an430tx_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = machine_ap440fx_vs440fx_gpio_handler,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P,
CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L),
.min_bus = 60000000,
.max_bus = 66666667,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK(CPU_K5, CPU_5K86, CPU_K6, CPU_K6_2, CPU_K6_2C, CPU_K6_3, CPU_K6_2P,
CPU_K6_3P, CPU_Cx6x86, CPU_Cx6x86MX, CPU_Cx6x86L),
.min_bus = 60000000,
.max_bus = 66666667,
.min_voltage = 2800,
.max_voltage = 3520,
.min_multi = 1.5,
.max_multi = 3.5
.min_multi = 1.5,
.max_multi = 3.5
},
.bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_SOUND | MACHINE_GAMEPORT, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */
.ram = {
.min = 8192,
.max = 262144,
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_SOUND | MACHINE_GAMEPORT, /* Machine has internal video: ATI Mach64GT-B 3D Rage II */
.ram = {
.min = 8192,
.max = 262144,
.step = 8192
},
.nvrmask = 255,
.jumpered_ecp_dma = 0,
.nvrmask = 255,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x000044f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = &an430tx_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = &ymf715_onboard_device,
.net_device = NULL
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x000044f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = &an430tx_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = &ymf715_onboard_device,
.net_device = NULL
},
/* This has the Winbond W83977 Super I/O Chip with AMIKey-2 KBC firmware, which is type 'H'. */
{
@@ -16824,51 +16910,6 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
/* Has the VIA VT82C596A southbridge with on-chip KBC identical to the VIA
VT82C42N. Sadly likely abuses cache on Cyrix 6x86MX and MII CPUs (Cyrix MII being what most socket 7 eMachines PCs used) , so they are blocked and it's thus named after the only known eMachines with an AMD K6-2 CPU here */
{
.name = "[VIA MVP3] eMachines eTower 300k",
.internal_name = "delhi3",
.type = MACHINE_TYPE_SOCKETS7,
.chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3,
.init = machine_at_delhi3_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK(CPU_Cx6x86MX),
.min_bus = 66666667,
.max_bus = 124242424,
.min_voltage = 2000,
.max_voltage = 3520,
.min_multi = 1.5,
.max_multi = 5.5
},
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Has internal video: ATI 3D Rage IIc AGP (Rage 2) */
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_SOUND | MACHINE_USB,
.ram = {
.min = 8192,
.max = 524288,
.step = 8192
},
.nvrmask = 255,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = &cs4235_onboard_device,
.net_device = NULL
},
/* Has the VIA VT82C586B southbridge with on-chip KBC identical to the VIA
VT82C42N. */
{
@@ -17004,6 +17045,50 @@ const machine_t machines[] = {
.snd_device = NULL,
.net_device = NULL
},
/* Has the VIA VT82C596A southbridge with on-chip KBC identical to the VIA VT82C42N. */
{
.name = "[VIA MVP3] TriGem Delhi-III",
.internal_name = "delhi3",
.type = MACHINE_TYPE_SOCKETS7,
.chipset = MACHINE_CHIPSET_VIA_APOLLO_MVP3,
.init = machine_at_delhi3_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SOCKET5_7,
.block = CPU_BLOCK(CPU_Cx6x86MX), /* Sadly it likely abuses cache if using Cyrix 6x86MX and MII CPUs (the latter being what most Socket 7 eMachines PCs used), so they are blocked. */
.min_bus = 66666667,
.max_bus = 124242424,
.min_voltage = 2000,
.max_voltage = 3520,
.min_multi = 1.5,
.max_multi = 5.5
},
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB, /* Has internal video: ATI 3D Rage IIc AGP (Rage 2) */
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_ACPI | MACHINE_SOUND | MACHINE_USB,
.ram = {
.min = 8192,
.max = 524288,
.step = 8192
},
.nvrmask = 255,
.jumpered_ecp_dma = 0,
.default_jumpered_ecp_dma = -1,
.kbc_device = NULL,
.kbc_params = 0x00000000,
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = &delhi3_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
.vid_device = NULL,
.snd_device = &cs4235_onboard_device,
.net_device = NULL
},
/* Socket 8 machines */
/* 450KX */
@@ -17328,7 +17413,7 @@ const machine_t machines[] = {
.chipset = MACHINE_CHIPSET_INTEL_440FX,
.init = machine_at_ap440fx_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.gpio_handler = machine_ap440fx_vs440fx_gpio_handler,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
@@ -17374,7 +17459,7 @@ const machine_t machines[] = {
.chipset = MACHINE_CHIPSET_INTEL_440FX,
.init = machine_at_vs440fx_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.gpio_handler = machine_ap440fx_vs440fx_gpio_handler,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
@@ -17434,7 +17519,7 @@ const machine_t machines[] = {
.bus_flags = MACHINE_PS2_PCI | MACHINE_BUS_USB,
.flags = MACHINE_IDE_DUAL | MACHINE_APM | MACHINE_USB, /* Machine has internal SCSI: Adaptec AIC-7880U */
.ram = {
.min = 40960,
.min = 40960, /* does not POST with lower than 40MB; Award and AMI retail BIOSes not affected(?) */
.max = 524288,
.step = 8192
},
@@ -17781,7 +17866,7 @@ const machine_t machines[] = {
.chipset = MACHINE_CHIPSET_INTEL_440LX,
.init = machine_at_optiplexgxa_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
.gpio_handler = machine_ap440fx_vs440fx_gpio_handler,
.available_flag = MACHINE_AVAILABLE,
.gpio_acpi_handler = NULL,
.cpu = {
@@ -18083,7 +18168,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &ax6bc_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -18396,7 +18481,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x000044f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &s1846_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -18409,7 +18494,7 @@ const machine_t machines[] = {
/* Has a SM(S)C FDC37M60x Super I/O chip with on-chip KBC with most likely
AMIKey-2 KBC firmware. */
{
.name = "[i440ZX] HP Vectra VEi 8",
.name = "[i440ZX] MiTAC/Trigon 6110Zu",
.internal_name = "vei8",
.type = MACHINE_TYPE_SLOT1,
.chipset = MACHINE_CHIPSET_INTEL_440ZX,
@@ -18443,7 +18528,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x000044f0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &vei8_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,
@@ -18911,13 +18996,12 @@ const machine_t machines[] = {
/* Slot 1/Socket 370 machines */
/* 440BX */
/* OEM version of ECS P6BXT-A+ REV 1.3x/2.2x. Has a Winbond W83977EF Super
I/O chip with on-chip KBC with AMIKey-2 KBC firmware.*/
/* Has a Winbond W83977EF Super I/O chip with on-chip KBC with AMIKey-2 KBC firmware.*/
{
.name = "[i440BX] Compaq ProSignia S316/318 (Intel)",
.name = "[i440BX] ECS P6BXT-A+",
.internal_name = "prosignias31x_bx",
.type = MACHINE_TYPE_SLOT1_370,
.chipset = MACHINE_CHIPSET_VIA_APOLLO_PRO_133,
.chipset = MACHINE_CHIPSET_INTEL_440BX,
.init = machine_at_prosignias31x_bx_init,
.p1_handler = machine_generic_p1_handler,
.gpio_handler = NULL,
@@ -18925,9 +19009,9 @@ const machine_t machines[] = {
.gpio_acpi_handler = NULL,
.cpu = {
.package = CPU_PKG_SLOT1 | CPU_PKG_SOCKET370,
.block = CPU_BLOCK(CPU_PENTIUMPRO, CPU_CYRIX3S), /* Instability issues with PPro, and garbled text in POST with Cyrix */
.block = CPU_BLOCK(CPU_PENTIUMPRO), /* Instability issues with PPro, and garbled text in POST with Cyrix (latter supported on unofficial v6.00PG BIOS) */
.min_bus = 66666667,
.max_bus = 100000000,
.max_bus = 124242424,
.min_voltage = 1300,
.max_voltage = 3500,
.min_multi = 1.5,
@@ -18948,7 +19032,7 @@ const machine_t machines[] = {
.kbc_p1 = 0x00000cf0,
.gpio = 0xffffffff,
.gpio_acpi = 0xffffffff,
.device = NULL,
.device = &prosignias31x_device,
.kbd_device = NULL,
.fdc_device = NULL,
.sio_device = NULL,

View File

@@ -603,9 +603,6 @@ msgstr ""
msgid "ID:"
msgstr ""
msgid "&Specify..."
msgstr ""
msgid "Sectors:"
msgstr ""
@@ -852,9 +849,18 @@ msgstr ""
msgid "Invalid PCap device"
msgstr ""
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr ""
msgid "2-axis, 2-button joystick(s)"
msgstr ""
msgid "2-axis, 3-button joystick"
msgstr ""
msgid "2-axis, 4-button joystick"
msgstr ""
@@ -867,18 +873,99 @@ msgstr ""
msgid "3-axis, 2-button joystick"
msgstr ""
msgid "3-axis, 3-button joystick"
msgstr ""
msgid "3-axis, 4-button joystick"
msgstr ""
msgid "4-axis, 2-button joystick"
msgstr ""
msgid "4-axis, 3-button joystick"
msgstr ""
msgid "4-axis, 4-button joystick"
msgstr ""
msgid "2-button gamepad(s)"
msgstr ""
msgid "3-button gamepad"
msgstr ""
msgid "4-button gamepad"
msgstr ""
msgid "6-button gamepad"
msgstr ""
msgid "Gravis PC GamePad"
msgstr ""
msgid "2-button flight yoke"
msgstr ""
msgid "3-button flight yoke"
msgstr ""
msgid "4-button flight yoke"
msgstr ""
msgid "2-button flight yoke with throttle"
msgstr ""
msgid "3-button flight yoke with throttle"
msgstr ""
msgid "4-button flight yoke with throttle"
msgstr ""
msgid "Steering Wheel (3-axis, 2-button)"
msgstr ""
msgid "Steering Wheel (3-axis, 3-button)"
msgstr ""
msgid "Steering Wheel (3-axis, 4-button)"
msgstr ""
msgid "CH Flightstick"
msgstr ""
msgid "CH Flightstick + CH Pedals"
msgstr ""
msgid "CH Flightstick + CH Pedals Pro"
msgstr ""
msgid "CH Flightstick Pro"
msgstr ""
msgid "CH Flightstick Pro + CH Pedals"
msgstr ""
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr ""
msgid "CH Virtual Pilot"
msgstr ""
msgid "CH Virtual Pilot + CH Pedals"
msgstr ""
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr ""
msgid "CH Virtual Pilot Pro"
msgstr ""
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr ""
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr ""
msgid "Microsoft SideWinder Pad"
msgstr ""
@@ -888,25 +975,10 @@ msgstr ""
msgid "Thrustmaster FCS + Rudder Control System"
msgstr ""
msgid "2-button gamepad(s)"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr ""
msgid "2-button flight yoke"
msgstr ""
msgid "4-button gamepad"
msgstr ""
msgid "4-button flight yoke"
msgstr ""
msgid "2-button flight yoke with throttle"
msgstr ""
msgid "4-button flight yoke with throttle"
msgstr ""
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr ""
msgid "None"
@@ -2988,9 +3060,6 @@ msgstr ""
msgid "Color scheme"
msgstr ""
msgid "System"
msgstr ""
msgid "Light"
msgstr ""

View File

@@ -603,9 +603,6 @@ msgstr "Kanál:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Zadat..."
msgid "Sectors:"
msgstr "Sektory:"
@@ -852,9 +849,18 @@ msgstr "Nebyla nalezena žádná PCap zařízení"
msgid "Invalid PCap device"
msgstr "Neplatné PCap zařízení"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Joystick s 2 osami a 1 tlačítky"
msgid "2-axis, 2-button joystick(s)"
msgstr "Joystick s 2 osami a 2 tlačítky"
msgid "2-axis, 3-button joystick"
msgstr "Joystick s 2 osami a 3 tlačítky"
msgid "2-axis, 4-button joystick"
msgstr "Joystick s 2 osami a 4 tlačítky"
@@ -867,18 +873,99 @@ msgstr "Joystick s 2 osami a 8 tlačítky"
msgid "3-axis, 2-button joystick"
msgstr "Joystick s 3 osami a 2 tlačítky"
msgid "3-axis, 3-button joystick"
msgstr "Joystick s 3 osami a 3 tlačítky"
msgid "3-axis, 4-button joystick"
msgstr "Joystick s 3 osami a 4 tlačítky"
msgid "4-axis, 2-button joystick"
msgstr "Joystick s 4 osami a 2 tlačítky"
msgid "4-axis, 3-button joystick"
msgstr "Joystick s 4 osami a 3 tlačítky"
msgid "4-axis, 4-button joystick"
msgstr "Joystick s 4 osami a 4 tlačítky"
msgid "2-button gamepad(s)"
msgstr "Ovladač se 2 tlačítky"
msgid "3-button gamepad"
msgstr "Ovladač se 3 tlačítky"
msgid "4-button gamepad"
msgstr "Ovladač se 4 tlačítky"
msgid "6-button gamepad"
msgstr "Ovladač se 6 tlačítky"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Letecký knipl se 2 tlačítky"
msgid "3-button flight yoke"
msgstr "Letecký knipl se32 tlačítky"
msgid "4-button flight yoke"
msgstr "Letecký knipl se 4 tlačítky"
msgid "2-button flight yoke with throttle"
msgstr "Letecký knipl s 2 tlačítky a pákou"
msgid "3-button flight yoke with throttle"
msgstr "Letecký knipl s 3 tlačítky a pákou"
msgid "4-button flight yoke with throttle"
msgstr "Letecký knipl s 4 tlačítky a pákou"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volant (3 osy, 2 tlačítka)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volant (3 osy, 3 tlačítka)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volant (3 osy, 4 tlačítka)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Ovladač se 2 tlačítky"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Letecký knipl se 2 tlačítky"
msgid "4-button gamepad"
msgstr "Ovladač se 4 tlačítky"
msgid "4-button flight yoke"
msgstr "Letecký knipl se 4 tlačítky"
msgid "2-button flight yoke with throttle"
msgstr "Letecký knipl s 2 tlačítky a pákou"
msgid "4-button flight yoke with throttle"
msgstr "Letecký knipl s 4 tlačítky a pákou"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volant pro Windows 95 (3 osy, 4 tlačítka)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Žadné"
@@ -1714,7 +1786,7 @@ msgid "Remove"
msgstr "Odstranit"
msgid "Browse..."
msgstr "Browse..."
msgstr "Procházet..."
msgid "Couldn't create OpenGL context."
msgstr "Nepodařilo se vytvořit kontext OpenGL."

View File

@@ -603,9 +603,6 @@ msgstr "Kanal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Festlegen..."
msgid "Sectors:"
msgstr "Sektoren:"
@@ -852,9 +849,18 @@ msgstr "Keine PCap-Geräte gefunden"
msgid "Invalid PCap device"
msgstr "Ungültiges PCap-Gerät"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2-Achsen-, 1-Tasten-Joystick(s)"
msgid "2-axis, 2-button joystick(s)"
msgstr "2-Achsen-, 2-Tasten-Joystick(s)"
msgid "2-axis, 3-button joystick"
msgstr "2-Achsen-, 3-Tasten-Joystick"
msgid "2-axis, 4-button joystick"
msgstr "2-Achsen-, 4-Tasten-Joystick"
@@ -867,18 +873,99 @@ msgstr "2-Achsen-, 8-Tasten-Joystick"
msgid "3-axis, 2-button joystick"
msgstr "3-Achsen-, 2-Tasten-Joystick"
msgid "3-axis, 3-button joystick"
msgstr "3-Achsen-, 3-Tasten-Joystick"
msgid "3-axis, 4-button joystick"
msgstr "3-Achsen-, 4-Tasten-Joystick"
msgid "4-axis, 2-button joystick"
msgstr "4-Achsen-, 2-Tasten-Joystick"
msgid "4-axis, 3-button joystick"
msgstr "4-Achsen-, 3-Tasten-Joystick"
msgid "4-axis, 4-button joystick"
msgstr "4-Achsen-, 4-Tasten-Joystick"
msgid "2-button gamepad(s)"
msgstr "2-Tasten-Gamepad(s)"
msgid "3-button gamepad"
msgstr "3-Tasten-Gamepad"
msgid "4-button gamepad"
msgstr "4-Tasten-Gamepad"
msgid "6-button gamepad"
msgstr "6-Tasten-Gamepad"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2-Tasten-Steuerhorn"
msgid "3-button flight yoke"
msgstr "3-Tasten-Steuerhorn"
msgid "4-button flight yoke"
msgstr "4-Tasten-Steuerhorn"
msgid "2-button flight yoke with throttle"
msgstr "2-Tasten-Steuerhorn mit Schubregler"
msgid "3-button flight yoke with throttle"
msgstr "3-Tasten-Steuerhorn mit Schubregler"
msgid "4-button flight yoke with throttle"
msgstr "4-Tasten-Steuerhorn mit Schubregler"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Lenkrad (3-Achsen, 2-Tasten)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Lenkrad (3-Achsen, 3-Tasten)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Lenkrad (3-Achsen, 4-Tasten)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedale"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedale Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedale"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedale Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedale"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedale Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "2-Tasten-Gamepad(s)"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2-Tasten-Steuerhorn"
msgid "4-button gamepad"
msgstr "4-Tasten-Gamepad"
msgid "4-button flight yoke"
msgstr "4-Tasten-Steuerhorn"
msgid "2-button flight yoke with throttle"
msgstr "2-Tasten-Steuerhorn mit Schubregler"
msgid "4-button flight yoke with throttle"
msgstr "4-Tasten-Steuerhorn mit Schubregler"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 Lenkrad (3-Achsen, 4-Tasten)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Ohne"

View File

@@ -603,9 +603,6 @@ msgstr "Canal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "E&specificar..."
msgid "Sectors:"
msgstr "Sectores:"
@@ -852,9 +849,18 @@ msgstr "No se encontraron dispositivos PCap"
msgid "Invalid PCap device"
msgstr "Dispositivo PCap inválido"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Mando(s) de 2 ejes, 1 botones"
msgid "2-axis, 2-button joystick(s)"
msgstr "Mando(s) de 2 ejes, 2 botones"
msgid "2-axis, 3-button joystick"
msgstr "Mando de 2 ejes, 3 botones"
msgid "2-axis, 4-button joystick"
msgstr "Mando de 2 ejes, 4 botones"
@@ -867,18 +873,99 @@ msgstr "Mando de 2 ejes, 8 botones"
msgid "3-axis, 2-button joystick"
msgstr "Mando de 3 ejes, 2 botones"
msgid "3-axis, 3-button joystick"
msgstr "Mando de 3 ejes, 3 botones"
msgid "3-axis, 4-button joystick"
msgstr "Mando de 3 ejes, 4 botones"
msgid "4-axis, 2-button joystick"
msgstr "Mando de 4 ejes, 2 botones"
msgid "4-axis, 3-button joystick"
msgstr "Mando de 4 ejes, 3 botones"
msgid "4-axis, 4-button joystick"
msgstr "Mando de 4 ejes, 4 botones"
msgid "2-button gamepad(s)"
msgstr "Mando(s) de juegos de 2 botones"
msgid "3-button gamepad"
msgstr "Mando de juegos de 3 botones"
msgid "4-button gamepad"
msgstr "Mando de juegos de 4 botones"
msgid "6-button gamepad"
msgstr "Mando de juegos de 6 botones"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Yugo de vuelo de 2 botones"
msgid "3-button flight yoke"
msgstr "Yugo de vuelo de 3 botones"
msgid "4-button flight yoke"
msgstr "Yugo de vuelo de 4 botones"
msgid "2-button flight yoke with throttle"
msgstr "Yugo de vuelo de 2 botones con acelerador"
msgid "3-button flight yoke with throttle"
msgstr "Yugo de vuelo de 3 botones con acelerador"
msgid "4-button flight yoke with throttle"
msgstr "Yugo de vuelo de 4 botones con acelerador"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volante (de 3 ejes, 2 botones)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volante (de 3 ejes, 3 botones)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volante (de 3 ejes, 4 botones)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Mando(s) de juegos de 2 botones"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Yugo de vuelo de 2 botones"
msgid "4-button gamepad"
msgstr "Mando de juegos de 4 botones"
msgid "4-button flight yoke"
msgstr "Yugo de vuelo de 4 botones"
msgid "2-button flight yoke with throttle"
msgstr "Yugo de vuelo de 2 botones con acelerador"
msgid "4-button flight yoke with throttle"
msgstr "Yugo de vuelo de 4 botones con acelerador"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volante Win95 (de 3 ejes, 4 botones)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Ninguno"

View File

@@ -603,9 +603,6 @@ msgstr "Kanava:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Määritä..."
msgid "Sectors:"
msgstr "Sektorit:"
@@ -852,9 +849,18 @@ msgstr "PCap-laitteita ei löytynyt"
msgid "Invalid PCap device"
msgstr "Virheellinen PCap-laite"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2-akseliset 1-painikkeiset peliohjaimet"
msgid "2-axis, 2-button joystick(s)"
msgstr "2-akseliset 2-painikkeiset peliohjaimet"
msgid "2-axis, 3-button joystick"
msgstr "2-akselinen 3-painikkeinen peliohjain"
msgid "2-axis, 4-button joystick"
msgstr "2-akselinen 4-painikkeinen peliohjain"
@@ -867,17 +873,98 @@ msgstr "2-akselinen 8-painikkeinen peliohjain"
msgid "3-axis, 2-button joystick"
msgstr "3-akselinen 2-painikkeinen peliohjain"
msgid "3-axis, 3-button joystick"
msgstr "3-akselinen 3-painikkeinen peliohjain"
msgid "3-axis, 4-button joystick"
msgstr "3-akselinen 4-painikkeinen peliohjain"
msgid "4-axis, 2-button joystick"
msgstr "4-akselinen 2-painikkeinen peliohjain"
msgid "4-axis, 3-button joystick"
msgstr "4-akselinen 3-painikkeinen peliohjain"
msgid "4-axis, 4-button joystick"
msgstr "4-akselinen 4-painikkeinen peliohjain"
msgid "2-button gamepad(s)"
msgstr "2-painikkeiset peliohjaimet"
msgid "3-button gamepad"
msgstr "3-painikkeinen peliohjain"
msgid "4-button gamepad"
msgstr "4-painikkeinen peliohjain"
msgid "6-button gamepad"
msgstr "6-painikkeinen peliohjain"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2-painikkeinen lento-ohjain"
msgid "3-button flight yoke"
msgstr "3-painikkeinen lento-ohjain"
msgid "4-button flight yoke"
msgstr "4-painikkeinen lento-ohjain"
msgid "2-button flight yoke with throttle"
msgstr "2-painikkeinen lento-ohjain kaasuvivulla"
msgid "3-button flight yoke with throttle"
msgstr "3-painikkeinen lento-ohjain kaasuvivulla"
msgid "4-button flight yoke with throttle"
msgstr "4-painikkeinen lento-ohjain kaasuvivulla"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "ratti (3-akselinen, 2-painikkeinen)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "ratti (3-akselinen, 3-painikkeinen)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "ratti (3-akselinen, 4-painikkeinen)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr ""
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -886,28 +973,13 @@ msgid "Thrustmaster Flight Control System"
msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr ""
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "2-painikkeiset peliohjaimet"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2-painikkeinen lento-ohjain"
msgid "4-button gamepad"
msgstr "4-painikkeinen peliohjain"
msgid "4-button flight yoke"
msgstr "4-painikkeinen lento-ohjain"
msgid "2-button flight yoke with throttle"
msgstr "2-painikkeinen lento-ohjain kaasuvivulla"
msgid "4-button flight yoke with throttle"
msgstr "4-painikkeinen lento-ohjain kaasuvivulla"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95-ratti (3-akselinen, 4-painikkeinen)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Ei mikään"

View File

@@ -603,9 +603,6 @@ msgstr "Canal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Spécifier..."
msgid "Sectors:"
msgstr "Secteurs:"
@@ -852,9 +849,18 @@ msgstr "Aucun dispositif PCap trouvé"
msgid "Invalid PCap device"
msgstr "Dispositif PCap invalide"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Manette(s) avec 2 axes, 1 boutons"
msgid "2-axis, 2-button joystick(s)"
msgstr "Manette(s) avec 2 axes, 2 boutons"
msgid "2-axis, 3-button joystick"
msgstr "Manette avec 2 axes, 4 boutons"
msgid "2-axis, 4-button joystick"
msgstr "Manette avec 2 axes, 4 boutons"
@@ -867,18 +873,99 @@ msgstr "Manette avec 2 axes, 8 boutons"
msgid "3-axis, 2-button joystick"
msgstr "Manette avec 3 axes, 2 boutons"
msgid "3-axis, 3-button joystick"
msgstr "Manette avec 3 axes, 3 boutons"
msgid "3-axis, 4-button joystick"
msgstr "Manette avec 3 axes, 4 boutons"
msgid "4-axis, 2-button joystick"
msgstr "Manette avec 4 axes, 2 boutons"
msgid "4-axis, 3-button joystick"
msgstr "Manette avec 4 axes, 3 boutons"
msgid "4-axis, 4-button joystick"
msgstr "Manette avec 4 axes, 4 boutons"
msgid "2-button gamepad(s)"
msgstr "Manette(s) de jeu à 2 boutons"
msgid "3-button gamepad"
msgstr "Manette de jeu à 2 boutons"
msgid "4-button gamepad"
msgstr "Manette de jeu à 4 boutons"
msgid "6-button gamepad"
msgstr "Manette de jeu à 6 boutons"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Manette de vol à 2 boutons"
msgid "3-button flight yoke"
msgstr "Manette de vol à 3 boutons"
msgid "4-button flight yoke"
msgstr "Manette de vol à 4 boutons"
msgid "2-button flight yoke with throttle"
msgstr "Manette de vol à 2 boutons avec manette des gaz"
msgid "3-button flight yoke with throttle"
msgstr "Manette de vol à 3 boutons avec manette des gaz"
msgid "4-button flight yoke with throttle"
msgstr "Manette de vol à 4 boutons avec manette des gaz"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volant (3 axes, 2 boutons)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volant (3 axes, 3 boutons)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volant (3 axes, 4 boutons)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Système de contrôle de vol Thrustmaster"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "SCV Thrustmaster + Système de commande de gouvernail"
msgid "2-button gamepad(s)"
msgstr "Manette(s) de jeu à 2 boutons"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Manette de vol à 2 boutons"
msgid "4-button gamepad"
msgstr "Manette de jeu à 2 boutons"
msgid "4-button flight yoke"
msgstr "Manette de vol à 4 boutons"
msgid "2-button flight yoke with throttle"
msgstr "Manette de vol à 2 boutons avec manette des gaz"
msgid "4-button flight yoke with throttle"
msgstr "Manette de vol à 4 boutons avec manette des gaz"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volant Win95 (3 axes, 4 boutons)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Aucun"

View File

@@ -603,9 +603,6 @@ msgstr "Kanal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Odredi..."
msgid "Sectors:"
msgstr "Sektori:"
@@ -852,9 +849,18 @@ msgstr "Nema PCap uređaja"
msgid "Invalid PCap device"
msgstr "Nevažeći PCap uređaj"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Palica za igru s 2 osi, 1 tipke"
msgid "2-axis, 2-button joystick(s)"
msgstr "Palica za igru s 2 osi, 2 tipke"
msgid "2-axis, 3-button joystick"
msgstr "Palica za igru s 2 osi, 3 tipke"
msgid "2-axis, 4-button joystick"
msgstr "Palica za igru s 2 osi, 4 tipke"
@@ -867,18 +873,99 @@ msgstr "Palica za igru s 2 osi, 8 tipke"
msgid "3-axis, 2-button joystick"
msgstr "Palica za igru s 3 osi, 2 tipke"
msgid "3-axis, 3-button joystick"
msgstr "Palica za igru s 3 osi, 3 tipke"
msgid "3-axis, 4-button joystick"
msgstr "Palica za igru s 3 osi, 4 tipke"
msgid "4-axis, 2-button joystick"
msgstr "Palica za igru s 4 osi, 2 tipke"
msgid "4-axis, 3-button joystick"
msgstr "Palica za igru s 4 osi, 3 tipke"
msgid "4-axis, 4-button joystick"
msgstr "Palica za igru s 4 osi, 4 tipke"
msgid "2-button gamepad(s)"
msgstr "Gamepad(ovi) s 2 tipke"
msgid "3-button gamepad"
msgstr "Gamepad s 3 tipke"
msgid "4-button gamepad"
msgstr "Gamepad s 4 tipke"
msgid "6-button gamepad"
msgstr "Gamepad s 6 tipke"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Jaram za letenje s 2 tipke"
msgid "3-button flight yoke"
msgstr "Jaram za letenje s 3 tipke"
msgid "4-button flight yoke"
msgstr "Jaram za letenje s 4 tipke"
msgid "2-button flight yoke with throttle"
msgstr "Jaram za letenje s 2 tipke i gasom"
msgid "3-button flight yoke with throttle"
msgstr "Jaram za letenje s 3 tipke i gasom"
msgid "4-button flight yoke with throttle"
msgstr "Jaram za letenje s 4 tipke i gasom"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volan (3 osi, 2 tipke)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volan (3 osi, 3 tipke)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volan (3 osi, 4 tipke)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Gamepad(ovi) s 2 tipke"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Jaram za letenje s 2 tipke"
msgid "4-button gamepad"
msgstr "Gamepad s 4 tipke"
msgid "4-button flight yoke"
msgstr "Jaram za letenje s 4 tipke"
msgid "2-button flight yoke with throttle"
msgstr "Jaram za letenje s 2 tipke i gasom"
msgid "4-button flight yoke with throttle"
msgstr "Jaram za letenje s 4 tipke i gasom"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volan Win95 (3 osi, 4 tipke)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Bez"
@@ -1714,7 +1786,7 @@ msgid "Remove"
msgstr "Ukloni"
msgid "Browse..."
msgstr "Pregledajte..."
msgstr "Pretraži..."
msgid "Couldn't create OpenGL context."
msgstr "Nije moguće stvoriti kontekst OpenGL."

View File

@@ -603,9 +603,6 @@ msgstr "Canale:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Specifica..."
msgid "Sectors:"
msgstr "Settori:"
@@ -852,9 +849,18 @@ msgstr "Nessun dispositivo PCap trovato"
msgid "Invalid PCap device"
msgstr "Dispositivo PCap non valido"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Joystick a 2 assi, 1 pulsanti"
msgid "2-axis, 2-button joystick(s)"
msgstr "Joystick a 2 assi, 2 pulsanti"
msgid "2-axis, 3-button joystick"
msgstr "Joystick a 2 assi, 3 pulsanti"
msgid "2-axis, 4-button joystick"
msgstr "Joystick a 2 assi, 4 pulsanti"
@@ -867,18 +873,99 @@ msgstr "Joystick a 2 assi, 8 pulsanti"
msgid "3-axis, 2-button joystick"
msgstr "Joystick a 3 assi, 2 pulsanti"
msgid "3-axis, 3-button joystick"
msgstr "Joystick a 3 assi, 4 pulsanti"
msgid "3-axis, 4-button joystick"
msgstr "Joystick a 3 assi, 4 pulsanti"
msgid "4-axis, 2-button joystick"
msgstr "Joystick a 4 assi, 2 pulsanti"
msgid "4-axis, 3-button joystick"
msgstr "Joystick a 4 assi, 3 pulsanti"
msgid "4-axis, 4-button joystick"
msgstr "Joystick a 4 assi, 4 pulsanti"
msgid "2-button gamepad(s)"
msgstr "Gamepad a 2 pulsanti"
msgid "3-button gamepad"
msgstr "Gamepad a 3 pulsanti"
msgid "4-button gamepad"
msgstr "Gamepad a 4 pulsanti"
msgid "6-button gamepad"
msgstr "Gamepad a 6 pulsanti"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Barra di comando a 2 pulsanti"
msgid "3-button flight yoke"
msgstr "Barra di comando a 3 pulsanti"
msgid "4-button flight yoke"
msgstr "Barra di comando a 4 pulsanti"
msgid "2-button flight yoke with throttle"
msgstr "Barra di comando a 2 pulsanti con acceleratore"
msgid "3-button flight yoke with throttle"
msgstr "Barra di comando a 4 pulsanti con acceleratore"
msgid "4-button flight yoke with throttle"
msgstr "Barra di comando a 4 pulsanti con acceleratore"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volante (3 assi, 2 pulsanti)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volante (3 assi, 3 pulsanti)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volante (3 assi, 4 pulsanti)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + Pedali CH"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedali Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedali"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedali Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedali"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedali Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder"
@@ -888,26 +975,11 @@ msgstr "Sistema di controllo Thrustmaster Flight"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Sistema di controllo timone"
msgid "2-button gamepad(s)"
msgstr "Gamepad a 2 pulsanti"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Barra di comando a 2 pulsanti"
msgid "4-button gamepad"
msgstr "Gamepad a 4 pulsanti"
msgid "4-button flight yoke"
msgstr "Barra di comando a 4 pulsanti"
msgid "2-button flight yoke with throttle"
msgstr "Barra di comando a 2 pulsanti con acceleratore"
msgid "4-button flight yoke with throttle"
msgstr "Barra di comando a 4 pulsanti con acceleratore"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volante Win95 (3 assi, 4 pulsanti)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Nessuno"

View File

@@ -603,9 +603,6 @@ msgstr "チャンネル:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "参照(&S)..."
msgid "Sectors:"
msgstr "セクター:"
@@ -852,9 +849,18 @@ msgstr "PCapデバイスがありません"
msgid "Invalid PCap device"
msgstr "不正なPCapデバイス"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "ジョイスティック(2軸、1ボタン)"
msgid "2-axis, 2-button joystick(s)"
msgstr "ジョイスティック(2軸、2ボタン)"
msgid "2-axis, 3-button joystick"
msgstr "ジョイスティック(2軸、3ボタン)"
msgid "2-axis, 4-button joystick"
msgstr "ジョイスティック(2軸、4ボタン)"
@@ -867,18 +873,99 @@ msgstr "ジョイスティック(2軸、8ボタン)"
msgid "3-axis, 2-button joystick"
msgstr "ジョイスティック(3軸、2ボタン)"
msgid "3-axis, 3-button joystick"
msgstr "ジョイスティック(3軸、3ボタン)"
msgid "3-axis, 4-button joystick"
msgstr "ジョイスティック(3軸、4ボタン)"
msgid "4-axis, 2-button joystick"
msgstr "ジョイスティック(4軸、2ボタン)"
msgid "4-axis, 3-button joystick"
msgstr "ジョイスティック(4軸、3ボタン)"
msgid "4-axis, 4-button joystick"
msgstr "ジョイスティック(4軸、4ボタン)"
msgid "2-button gamepad(s)"
msgstr "2ボタン式ゲームパッド"
msgid "3-button gamepad"
msgstr "3ボタン式ゲームパッド"
msgid "4-button gamepad"
msgstr "4ボタン式ゲームパッド"
msgid "6-button gamepad"
msgstr "6ボタン式ゲームパッド"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2ボタン式操縦桿"
msgid "3-button flight yoke"
msgstr "3ボタン式操縦桿"
msgid "4-button flight yoke"
msgstr "4ボタン式操縦桿"
msgid "2-button flight yoke with throttle"
msgstr "2ボタン式フライトヨーク(スロットル付き)"
msgid "3-button flight yoke with throttle"
msgstr "3ボタン式フライトヨーク(スロットル付き)"
msgid "4-button flight yoke with throttle"
msgstr "4ボタン式フライトヨーク(スロットル付き)"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "ステアリングホイール(3軸、2ボタン)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "ステアリングホイール(3軸、3ボタン)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "ステアリングホイール(3軸、4ボタン)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinderパッド"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "2ボタン式ゲームパッド"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2ボタン式操縦桿"
msgid "4-button gamepad"
msgstr "4ボタン式ゲームパッド"
msgid "4-button flight yoke"
msgstr "4ボタン式操縦桿"
msgid "2-button flight yoke with throttle"
msgstr "2ボタン式フライトヨーク(スロットル付き)"
msgid "4-button flight yoke with throttle"
msgstr "4ボタン式フライトヨーク(スロットル付き)"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 ステアリングホイール(3軸、4ボタン)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "なし"
@@ -1714,7 +1786,7 @@ msgid "Remove"
msgstr "削除"
msgid "Browse..."
msgstr "ブラウズ..."
msgstr "参照..."
msgid "Couldn't create OpenGL context."
msgstr "OpenGLコンテキストを作成できませんでした。"

View File

@@ -603,9 +603,6 @@ msgstr "채널:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "열기(&S)..."
msgid "Sectors:"
msgstr "섹터:"
@@ -852,9 +849,18 @@ msgstr "PCap 장치가 없습니다"
msgid "Invalid PCap device"
msgstr "PCap 장치가 올바르지 않습니다"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2축, 1버튼 조이스틱"
msgid "2-axis, 2-button joystick(s)"
msgstr "2축, 2버튼 조이스틱"
msgid "2-axis, 3-button joystick"
msgstr "2축, 3버튼 조이스틱"
msgid "2-axis, 4-button joystick"
msgstr "2축, 4버튼 조이스틱"
@@ -867,18 +873,99 @@ msgstr "2축, 8버튼 조이스틱"
msgid "3-axis, 2-button joystick"
msgstr "3축, 2버튼 조이스틱"
msgid "3-axis, 3-button joystick"
msgstr "3축, 3버튼 조이스틱"
msgid "3-axis, 4-button joystick"
msgstr "3축, 4버튼 조이스틱"
msgid "4-axis, 2-button joystick"
msgstr "4축, 2버튼 조이스틱"
msgid "4-axis, 3-button joystick"
msgstr "4축, 3버튼 조이스틱"
msgid "4-axis, 4-button joystick"
msgstr "4축, 4버튼 조이스틱"
msgid "2-button gamepad(s)"
msgstr "2버튼 게임패드"
msgid "3-button gamepad"
msgstr "3버튼 게임패드"
msgid "4-button gamepad"
msgstr "4버튼 게임패드"
msgid "6-button gamepad"
msgstr "6버튼 게임패드"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2버튼 비행 조종간"
msgid "3-button flight yoke"
msgstr "3버튼 비행 조종간"
msgid "4-button flight yoke"
msgstr "4버튼 비행 조종간"
msgid "2-button flight yoke with throttle"
msgstr "2버튼 비행 조종간과 스로틀"
msgid "3-button flight yoke with throttle"
msgstr "3버튼 비행 조종간과 스로틀"
msgid "4-button flight yoke with throttle"
msgstr "4버튼 비행 조종간과 스로틀"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "조타륜 (3축, 2버튼)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "조타륜 (3축, 3버튼)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "조타륜 (3축, 4버튼)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "2버튼 게임패드"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2버튼 비행 조종간"
msgid "4-button gamepad"
msgstr "4버튼 게임패드"
msgid "4-button flight yoke"
msgstr "4버튼 비행 조종간"
msgid "2-button flight yoke with throttle"
msgstr "2버튼 비행 조종간과 스로틀"
msgid "4-button flight yoke with throttle"
msgstr "4버튼 비행 조종간과 스로틀"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 조타륜 (3축, 4버튼)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "없음"

View File

@@ -603,9 +603,6 @@ msgstr "Kanal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Angi..."
msgid "Sectors:"
msgstr "Sektorer:"
@@ -852,9 +849,18 @@ msgstr "Ingen PCap-enheter funnet"
msgid "Invalid PCap device"
msgstr "Ugyldig PCap-enhet"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2-akset, 1-knapps styrespak(er)"
msgid "2-axis, 2-button joystick(s)"
msgstr "2-akset, 2-knapps styrespak(er)"
msgid "2-axis, 3-button joystick"
msgstr "2-akset, 3-knapps styrespak"
msgid "2-axis, 4-button joystick"
msgstr "2-akset, 4-knapps styrespak"
@@ -867,18 +873,99 @@ msgstr "2-akset, 8-knapps styrespak"
msgid "3-axis, 2-button joystick"
msgstr "3-akset, 2-knapps styrespak"
msgid "3-axis, 3-button joystick"
msgstr "3-akset, 4-knapps styrespak"
msgid "3-axis, 4-button joystick"
msgstr "3-akset, 4-knapps styrespak"
msgid "4-axis, 2-button joystick"
msgstr "4-akset, 2-knapps styrespak"
msgid "4-axis, 3-button joystick"
msgstr "4-akset, 3-knapps styrespak"
msgid "4-axis, 4-button joystick"
msgstr "4-akset, 4-knapps styrespak"
msgid "2-button gamepad(s)"
msgstr "2-knapps gamepad(er)"
msgid "3-button gamepad"
msgstr "3-knapps gamepad"
msgid "4-button gamepad"
msgstr "4-knapps gamepad"
msgid "6-button gamepad"
msgstr "6-knapps gamepad"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2-knapps flystyre"
msgid "3-button flight yoke"
msgstr "3-knapps flystyre"
msgid "4-button flight yoke"
msgstr "4-knapps flystyre"
msgid "2-button flight yoke with throttle"
msgstr "2-knapps flystyre med gass"
msgid "3-button flight yoke with throttle"
msgstr "3-knapps flystyre med gass"
msgid "4-button flight yoke with throttle"
msgstr "4-knapps flystyre med gass"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Ratt (3-akset, 3-knapps)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Ratt (3-akset, 3-knapps)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Ratt (3-akset, 4-knapps)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedaler"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedaler Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedaler"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedaler Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedaler"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedaler Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedaler"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedaler Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Ror-kontrollsystem"
msgid "2-button gamepad(s)"
msgstr "2-knapps gamepad(er)"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2-knapps flystyre"
msgid "4-button gamepad"
msgstr "4-knapps gamepad"
msgid "4-button flight yoke"
msgstr "4-knapps flystyre"
msgid "2-button flight yoke with throttle"
msgstr "2-knapps flystyre med gass"
msgid "4-button flight yoke with throttle"
msgstr "4-knapps flystyre med gass"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 Ratt (3-akset, 4-knapps)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Ingen"

View File

@@ -43,7 +43,7 @@ msgid "&Hide status bar"
msgstr "&Statusbalk verbergen"
msgid "Hide &toolbar"
msgstr "Verberg &toolbar"
msgstr "&Toolbar verbergen"
msgid "&Resizeable window"
msgstr "&Venster met aanpasbare grootte"
@@ -109,7 +109,7 @@ msgid "Fi&lter method"
msgstr "Filtermethode"
msgid "&Nearest"
msgstr "&Dichtsbijzijnde"
msgstr "&Dichtstbijzijnde"
msgid "&Linear"
msgstr "&Lineair"
@@ -220,7 +220,7 @@ msgid "Begin trace"
msgstr "Begin traceren"
msgid "End trace"
msgstr "Traceren beëindigen"
msgstr "Beëindig traceren"
msgid "&Help"
msgstr "&Help"
@@ -232,19 +232,19 @@ msgid "&About 86Box..."
msgstr "&Over 86Box..."
msgid "&New image..."
msgstr "&Nieuw image..."
msgstr "&Nieuw imagebestand..."
msgid "&Existing image..."
msgstr "&Bestaande image..."
msgstr "&Bestaande imagebestand..."
msgid "Existing image (&Write-protected)..."
msgstr "Bestaande image (&Schrijfbeveiligd)..."
msgstr "Bestaand imagebestand (&Schrijfbeveiligd)..."
msgid "&Record"
msgstr "&Opnemen"
msgid "&Play"
msgstr "&Play"
msgstr "&Afspelen"
msgid "&Rewind to the beginning"
msgstr "&Terugspoelen naar het begin"
@@ -256,19 +256,19 @@ msgid "E&ject"
msgstr "&Uitwerpen"
msgid "&Image..."
msgstr "&Image..."
msgstr "&Imagebestand..."
msgid "E&xport to 86F..."
msgstr "E&xporteer naar 86F..."
msgid "&Mute"
msgstr "&Mute"
msgstr "&Dempen"
msgid "E&mpty"
msgstr "E&mpty"
msgstr "&Leeg"
msgid "Reload previous image"
msgstr "Herlaad vorige image"
msgstr "Herlaad vorig imagebestand"
msgid "&Folder..."
msgstr "&Map..."
@@ -301,7 +301,7 @@ msgid "&Select shader..."
msgstr "&Selecteer shader..."
msgid "&Remove shader"
msgstr "&Remove shader"
msgstr "&Verwijder shader"
msgid "Preferences"
msgstr "Voorkeuren"
@@ -310,7 +310,7 @@ msgid "Sound Gain"
msgstr "Geluidsversterking"
msgid "New Image"
msgstr "Nieuw image"
msgstr "Nieuw imagebestand"
msgid "Settings"
msgstr "Instellingen"
@@ -343,7 +343,7 @@ msgid "RPM mode:"
msgstr "RPM-modus:"
msgid "Progress:"
msgstr "Vooruitgang:"
msgstr "Voortgang:"
msgid "Width:"
msgstr "Breedte:"
@@ -352,7 +352,7 @@ msgid "Height:"
msgstr "Hoogte:"
msgid "Lock to this size"
msgstr "Leg vast op deze grootte"
msgstr "Vergrendel deze grootte"
msgid "Machine type:"
msgstr "Machinetype:"
@@ -403,10 +403,10 @@ msgid "Dynamic Recompiler"
msgstr "Dynamische Recompiler"
msgid "CPU frame size"
msgstr "CPU frame grootte"
msgstr "CPU framegrootte"
msgid "Larger frames (less smooth)"
msgstr "Groter frames (minder vloeiend)"
msgstr "Grotere frames (minder vloeiend)"
msgid "Smaller frames (smoother)"
msgstr "Kleinere frames (vloeiender)"
@@ -430,7 +430,7 @@ msgid "IBM PS/55 Display Adapter Graphics"
msgstr "IBM PS/55 Display Adapter Graphics"
msgid "Keyboard:"
msgstr "Toetsenbord"
msgstr "Toetsenbord:"
msgid "Keyboard"
msgstr "Toetsenbord"
@@ -472,13 +472,13 @@ msgid "Sound card #4:"
msgstr "Geluidskaart #4:"
msgid "MIDI Out Device:"
msgstr "MIDI Out-apparaat:"
msgstr "MIDI Uitvoerapparaat:"
msgid "MIDI In Device:"
msgstr "MIDI In-apparaat:"
msgstr "MIDI Invoerapparaat:"
msgid "MIDI Out:"
msgstr "Midi Out:"
msgstr "Midi Uit:"
msgid "Standalone MPU-401"
msgstr "Standalone MPU-401"
@@ -603,9 +603,6 @@ msgstr "Kanaal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Specificeer..."
msgid "Sectors:"
msgstr "Sectoren:"
@@ -649,7 +646,7 @@ msgid "Removable disks:"
msgstr "Verwisselbare schijven:"
msgid "Removable disk drives:"
msgstr "Verwisselbare schijfstations"
msgstr "Verwisselbare schijfstations:"
msgid "ZIP 250"
msgstr "ZIP 250"
@@ -712,13 +709,13 @@ msgid "&Removable disk %1 (%2): %3"
msgstr "&Verwijderbare schijf %1 (%2): %3"
msgid "Removable disk images"
msgstr "Verwijderbare schijf image"
msgstr "Verwijderbaar schijfimagebestand"
msgid "Image %1"
msgstr "Image %1"
msgid "86Box could not find any usable ROM images.\n\nPlease <a href=\"https://github.com/86Box/roms/releases/latest\">download</a> a ROM set and extract it into the \"roms\" directory."
msgstr "86Box kon geen bruikbare ROM images vinden.\n\n<a href=\"https://github.com/86Box/roms/releases/latest\">Download</a> een ROM set en pak deze uit in de map \"roms\"."
msgstr "86Box kon geen bruikbare ROM imagebestanden vinden.\n\n<a href=\"https://github.com/86Box/roms/releases/latest\">Download</a> een ROM set en pak deze uit in de map \"roms\"."
msgid "(empty)"
msgstr "(leeg)"
@@ -814,7 +811,7 @@ msgid "Click to capture mouse"
msgstr "Klik om muis vast te leggen"
msgid "Press %1 to release mouse"
msgstr "Druk op %1 om de muis los te laten"
msgstr "Druk op %1 om de muis vrij te geven"
msgid "Press %1 or middle button to release mouse"
msgstr "Druk op %1 of middelste knop om de muis los te laten"
@@ -852,9 +849,18 @@ msgstr "Geen PCap-apparaten gevonden"
msgid "Invalid PCap device"
msgstr "Ongeldig PCap-apparaat"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Joystick(s) met 2 assen en 1 knoppen"
msgid "2-axis, 2-button joystick(s)"
msgstr "Joystick(s) met 2 assen en 2 knoppen"
msgid "2-axis, 3-button joystick"
msgstr "Joystick met 2 assen en 3 knoppen"
msgid "2-axis, 4-button joystick"
msgstr "Joystick met 2 assen en 4 knoppen"
@@ -867,18 +873,99 @@ msgstr "Joystick met 2 assen en 8 knoppen"
msgid "3-axis, 2-button joystick"
msgstr "Joystick met 3 assen en 2 knoppen"
msgid "3-axis, 3-button joystick"
msgstr "Joystick met 3 assen en 3 knoppen"
msgid "3-axis, 4-button joystick"
msgstr "Joystick met 3 assen en 4 knoppen"
msgid "4-axis, 2-button joystick"
msgstr "Joystick met 4 assen en 2 knoppen"
msgid "4-axis, 3-button joystick"
msgstr "Joystick met 4 assen en 3 knoppen"
msgid "4-axis, 4-button joystick"
msgstr "Joystick met 4 assen en 4 knoppen"
msgid "2-button gamepad(s)"
msgstr "2-knops gamepad(s)"
msgid "3-button gamepad"
msgstr "3-knops gamepad"
msgid "4-button gamepad"
msgstr "4-knops gamepad"
msgid "6-button gamepad"
msgstr "6-knops gamepad"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2-knops stuurknuppel"
msgid "3-button flight yoke"
msgstr "3-knops stuurknuppel"
msgid "4-button flight yoke"
msgstr "4-knops stuurknuppel"
msgid "2-button flight yoke with throttle"
msgstr "2-kops stuurknuppel met gashendel "
msgid "3-button flight yoke with throttle"
msgstr "3-kops stuurknuppel met gashendel"
msgid "4-button flight yoke with throttle"
msgstr "4-kops stuurknuppel met gashendel"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Stuurwiel (3 assen, 2 knoppen)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Stuurwiel (3 assen, 3 knoppen)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Stuurwiel (3 assen, 4 knoppen)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedalen"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedalen Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedalen"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedalen Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedalen"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedalen Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedalen"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedalen Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control systeem"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Roer Control Systeem"
msgid "2-button gamepad(s)"
msgstr "2-knops gamepad(s)"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2-knops stuurknuppel"
msgid "4-button gamepad"
msgstr "4-knops gamepad"
msgid "4-button flight yoke"
msgstr "4-knops stuurknuppel"
msgid "2-button flight yoke with throttle"
msgstr "2-kops stuurknuppel met gashendel "
msgid "4-button flight yoke with throttle"
msgstr "2-kops stuurknuppel met gashendel"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 Stuurwiel (3 assen, 4 knoppen)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Geen"
@@ -973,7 +1045,7 @@ msgid "Do you want to save the settings?"
msgstr "Wil je de instellingen opslaan?"
msgid "This will hard reset the emulated machine."
msgstr "Dit zal de geëmuleerde machine een hard reset geven."
msgstr "Dit zal de geëmuleerde machine een harde reset geven."
msgid "Save"
msgstr "Opslaan"
@@ -1054,10 +1126,10 @@ msgid "Cartridge images"
msgstr "Cartridge-images"
msgid "Resume execution"
msgstr "Hervat executie"
msgstr "Hervat uitvoering"
msgid "Pause execution"
msgstr "Pauze executie"
msgstr "Pauzeer uitvoering"
msgid "Ctrl+Alt+Del"
msgstr "Ctrl+Alt+Del"
@@ -1084,7 +1156,7 @@ msgid "&Start"
msgstr "&Start"
msgid "Not running"
msgstr "Niet actied"
msgstr "Niet actief"
msgid "Running"
msgstr "Actief"
@@ -1093,10 +1165,10 @@ msgid "Paused"
msgstr "Gepauzeerd"
msgid "Waiting"
msgstr "aan het wachtend"
msgstr "Aan het wachten"
msgid "Powered Off"
msgstr "Sluit af"
msgstr "Uitgeschakeld"
msgid "%n running"
msgstr "%n actief"
@@ -1126,7 +1198,7 @@ msgid "86Box configuration files (86box.cfg)"
msgstr "86Box configuratiebestanden (86box.cfg)"
msgid "Configuration read failed"
msgstr "Lezen configuratie mislukt"
msgstr "Lezen van configuratie mislukt"
msgid "Unable to open the selected configuration file for reading: %1"
msgstr "Openen van geselecteerd configuratiebestand voor lezen niet mogelijk: %1"
@@ -1138,7 +1210,7 @@ msgid "%1 machine(s) are currently active. Are you sure you want to exit the VM
msgstr "%1 machine(s) zijn nu actief. Weet je zeker dat je de VM manager wil afsluiten?"
msgid "Add new system wizard"
msgstr "Assistent voor toevoegen van nieuw systeem"
msgstr "Wizard toevoegen van nieuw systeem"
msgid "Introduction"
msgstr "Introductie"
@@ -1186,13 +1258,13 @@ msgid "Directory does not exist"
msgstr "Map bestaat niet"
msgid "A new directory for the system will be created in the selected directory above"
msgstr "Een nieuwe map voor het systeem wordt aangemaakt in de boven geselecteerde map"
msgstr "Een nieuwe map voor het systeem wordt aangemaakt in de hierboven geselecteerde map"
msgid "System location:"
msgstr "Systeemlocatie:"
msgid "System name and location"
msgstr "Systeemnaam en -locatie"
msgstr "Systeemnaam en locatie"
msgid "Enter the name of the system and choose the location"
msgstr "Voer de naam in van het systeem en kies een locatie"
@@ -1252,7 +1324,7 @@ msgid "Failed to create directory for cloned VM"
msgstr "Map aanmaken voor gekloonde VM mislukt"
msgid "Failed to clone VM."
msgstr "Kolen van VM mislukt."
msgstr "Klonen van VM mislukt."
msgid "Directory in use"
msgstr "Map in gebruik"
@@ -1303,7 +1375,7 @@ msgid "&Kill"
msgstr "&Gedwongen beëindigen"
msgid "Killing a virtual machine can cause data loss. Only do this if the 86Box process gets stuck.\n\nDo you really wish to kill the virtual machine \"%1\"?"
msgstr "Gedwongen beëindiging van een virtuele machine kan dataverlies veroorzaken. Doe dit alleen wanneer het 86Box process is vast gelopen.\n\nWeet je zeker dat je de virtuele machine \"%1\" wil beëindigen?"
msgstr "Gedwongen beëindiging van een virtuele machine kan dataverlies veroorzaken. Doe dit alleen wanneer het 86Box-proces is vast gelopen.\n\nWeet je zeker dat je de virtuele machine \"%1\" wil beëindigen?"
msgid "&Delete"
msgstr "&Verwijderen"
@@ -1345,10 +1417,10 @@ msgid "Audio:"
msgstr "Audio:"
msgid "ACPI shutdown"
msgstr "ACPI uitschakeling"
msgstr "ACPI-uitschakeling"
msgid "ACP&I shutdown"
msgstr "ACP&I uitschakeling"
msgstr "ACP&I-uitschakeling"
msgid "Hard disk (%1)"
msgstr "Harde schijf (%1)"
@@ -1375,7 +1447,7 @@ msgid "Disk images cannot be larger than 127 GB."
msgstr "Schijfimages kunnen niet groter zijn dan 127 GB."
msgid "Hard disk images"
msgstr "Harde schijf-image"
msgstr "Harde schijf-images"
msgid "Unable to read file"
msgstr "Kan bestand niet lezen"
@@ -1384,7 +1456,7 @@ msgid "Unable to write file"
msgstr "Kan bestand niet schrijven"
msgid "HDI or HDX images with a sector size other than 512 are not supported."
msgstr "HDI- of HDX-image met een andere sectorgrootte dan 512 worden niet ondersteund."
msgstr "HDI- of HDX-images met een andere sectorgrootte dan 512 worden niet ondersteund."
msgid "Disk image file already exists"
msgstr "Schijfimagebestand bestaat al"
@@ -1432,7 +1504,7 @@ msgid "Fixed-size VHD"
msgstr "VHD met vaste grootte"
msgid "Dynamic-size VHD"
msgstr "VHD met dynamisch grootte"
msgstr "VHD met dynamische grootte"
msgid "Differencing VHD"
msgstr "Verschil-VHD"
@@ -1453,7 +1525,7 @@ msgid "Fixed-size VHD (.vhd)"
msgstr "VHD met vaste grootte (.vhd)"
msgid "Dynamic-size VHD (.vhd)"
msgstr "VHD met dynamisch grootte (.vhd)"
msgstr "VHD met dynamische grootte (.vhd)"
msgid "Differencing VHD (.vhd)"
msgstr "Verschil-VHD (.vhd)"
@@ -1639,7 +1711,7 @@ msgid "List of MCA devices:"
msgstr "Lijst van MCA-apparaten:"
msgid "&Tablet tool"
msgstr "Tablet-hulpmiddel"
msgstr "&Tablet-hulpmiddel"
msgid "About &Qt"
msgstr "Over &Qt"
@@ -1648,10 +1720,10 @@ msgid "&MCA devices..."
msgstr "MCA-apparaten..."
msgid "Show non-&primary monitors"
msgstr "Toon niet-primaire monitors"
msgstr "Toon niet-primaire beeldschermen"
msgid "Open screenshots &folder..."
msgstr "Map met schermafbeeldingen openen..."
msgstr "&Map met schermafbeeldingen openen..."
msgid "Appl&y fullscreen stretch mode when maximized"
msgstr "Schakel de volledig scherm-uitrekmodus in bij maximaliseren"
@@ -1663,7 +1735,7 @@ msgid "&Pen"
msgstr "&Pen"
msgid "&Host CD/DVD Drive (%1:)"
msgstr "&Host cd/dvd-station (%1:)"
msgstr "&Host CD/DVD-station (%1:)"
msgid "&Connected"
msgstr "&Verbonden"
@@ -1672,7 +1744,7 @@ msgid "Clear image &history"
msgstr "Imagegeschiedenis verwijderen(&H)"
msgid "Create..."
msgstr "Creëer..."
msgstr "Aanmaken..."
msgid "Host CD/DVD Drive (%1)"
msgstr "Host CD/DVD-station (%1)"
@@ -1717,10 +1789,10 @@ msgid "Browse..."
msgstr "Bladeren..."
msgid "Couldn't create OpenGL context."
msgstr "Kan OpenGL context niet aanmaken."
msgstr "Kan OpenGL-context niet aanmaken."
msgid "Couldn't switch to OpenGL context."
msgstr "Kan niet overschakelen naar OpenGL context."
msgstr "Kan niet overschakelen naar OpenGL-context."
msgid "OpenGL version 3.0 or greater is required. Current version is %1.%2"
msgstr "OpenGL versie 3.0 of hoger is vereist. De huidige versie is %1.%2"
@@ -1783,7 +1855,7 @@ msgid "VDE Socket:"
msgstr "VDE-socket:"
msgid "86Box Unit Tester"
msgstr "86Box apparaattester"
msgstr "86Box Apparaattester"
msgid "Novell NetWare 2.x Key Card"
msgstr "Novell NetWare 2.x Key Card"
@@ -1855,7 +1927,7 @@ msgid "Default Baud rate"
msgstr "Standaard baudrate"
msgid "[COM] Standard Hayes-compliant Modem"
msgstr "COM] Standaard Hayes-compatibele modem "
msgstr "[COM] Standaard Hayes-compatibele modem "
msgid "Roland MT-32 Emulation"
msgstr "Roland MT-32-emulatie"
@@ -1939,7 +2011,7 @@ msgid "Parallel port IRQ"
msgstr "Parallelle poort IRQ"
msgid "BIOS Revision"
msgstr "BIOS Revisie"
msgstr "BIOS-Revisie"
msgid "BIOS Version"
msgstr "BIOS-versie"
@@ -2557,16 +2629,16 @@ msgid "Apply overscan deltas"
msgstr "Overscan-deltas toepassen"
msgid "Mono Interlaced"
msgstr "Mono geïnterlaced "
msgstr "Mono Interlaced "
msgid "Mono Non-Interlaced"
msgstr "Mono niet geïnterlaced"
msgstr "Mono Niet-Interlaced"
msgid "Color Interlaced"
msgstr "Kleur interlaced"
msgstr "Kleur Interlaced"
msgid "Color Non-Interlaced"
msgstr "Kleur niet geïnterlaced"
msgstr "Kleur Niet-Interlaced"
msgid "3Dfx Voodoo Graphics"
msgstr "3Dfx Voodoo Graphics"
@@ -2653,7 +2725,7 @@ msgid "E&ject %1"
msgstr "&Uitwerpen %1"
msgid "&Unmute"
msgstr "&Geluid aanzetten"
msgstr "&Dempen opheffen"
msgid "Softfloat FPU"
msgstr "Softfloat FPU"
@@ -2779,7 +2851,7 @@ msgid "Keybind"
msgstr "Toetskoppeling"
msgid "Clear binding"
msgstr "Wis koppelinh"
msgstr "Wis koppeling"
msgid "Bind"
msgstr "Koppel"
@@ -2794,7 +2866,7 @@ msgid "Bind conflict"
msgstr "Koppelconflict"
msgid "This key combo is already in use."
msgstr "Deze toetsencombinatie is al in gebruik"
msgstr "Deze toetsencombinatie is al in gebruik."
msgid "Send Control+Alt+Del"
msgstr "Stuur Control+Alt+Del"
@@ -2812,7 +2884,7 @@ msgid "Release mouse pointer"
msgstr "Geef muis vrij"
msgid "Toggle pause"
msgstr "Pause omschakelen"
msgstr "Pauzeren omschakelen"
msgid "Toggle mute"
msgstr "Geluiddemping omschakelen"
@@ -2833,13 +2905,13 @@ msgid "Remote Switch"
msgstr "Externe Switch"
msgid "Switch:"
msgstr "Switch"
msgstr "Switch:"
msgid "Hub Mode"
msgstr "Hub-modus"
msgid "Hostname:"
msgstr "Hostname"
msgstr "Hostnaam"
msgid "ISA RAM:"
msgstr "ISA RAM:"
@@ -2863,10 +2935,10 @@ msgid "An error occurred trying to wipe the NVRAM contents of the virtual machin
msgstr "Fout bij Wissen van NVRAM-inhoud van de virtuele machine \"%1\""
msgid "%1 VM Manager"
msgstr "%1 VM Manager"
msgstr "%1 VM Beheerder"
msgid "%n disk(s)"
msgstr "%n schijf(en)"
msgstr "%n schijf/schijven"
msgid "Unknown Status"
msgstr "Onbekende Status"
@@ -2875,7 +2947,7 @@ msgid "No Machines Found!"
msgstr "Geen Machines Gevonden!"
msgid "Check for updates on startup"
msgstr "Controleer op updates bij start"
msgstr "Controleer op updates bij starten"
msgid "Unable to determine release information"
msgstr "Kan release-informatie niet bepalen"

View File

@@ -603,9 +603,6 @@ msgstr "Kanał:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Określ..."
msgid "Sectors:"
msgstr "Sektory:"
@@ -852,9 +849,18 @@ msgstr "Nie znaleziono urządzeń PCap"
msgid "Invalid PCap device"
msgstr "Nieprawidłowe urządzenie PCap"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Joysticki 2-osiowe, 1-przyciskowe"
msgid "2-axis, 2-button joystick(s)"
msgstr "Joysticki 2-osiowe, 2-przyciskowe"
msgid "2-axis, 3-button joystick"
msgstr "Joystick 2-osiowy, 3-przyciskowy"
msgid "2-axis, 4-button joystick"
msgstr "Joystick 2-osiowy, 4-przyciskowy"
@@ -867,18 +873,99 @@ msgstr "Joystick 2-osiowy, 8-przyciskowy"
msgid "3-axis, 2-button joystick"
msgstr "Joystick 3-osiowy, 2-przyciskowy"
msgid "3-axis, 3-button joystick"
msgstr "Joystick 3-osiowy, 2-przyciskowy"
msgid "3-axis, 4-button joystick"
msgstr "Joystick 3-osiowy, 4-przyciskowy"
msgid "4-axis, 2-button joystick"
msgstr "Joystick 4-osiowy, 2-przyciskowy"
msgid "4-axis, 3-button joystick"
msgstr "Joystick 4-osiowy, 3-przyciskowy"
msgid "4-axis, 4-button joystick"
msgstr "Joystick 4-osiowy, 4-przyciskowy"
msgid "2-button gamepad(s)"
msgstr "Pad(y) z dwoma przyciskami"
msgid "3-button gamepad"
msgstr "Pad z trzy przyciskami"
msgid "4-button gamepad"
msgstr "Pad z czterema przyciskami"
msgid "6-button gamepad"
msgstr "Pad z sześć przyciskami"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Wolant z dwoma przyciskami"
msgid "3-button flight yoke"
msgstr "Wolant z trzema guzikami"
msgid "4-button flight yoke"
msgstr "Wolant z czterema przyciskami"
msgid "2-button flight yoke with throttle"
msgstr "Wolant z dwoma przyciskami i przepustnicą"
msgid "3-button flight yoke with throttle"
msgstr "Wolant z trzema przyciskami i przepustnicą"
msgid "4-button flight yoke with throttle"
msgstr "Wolant z czterema przyciskami i przepustnicą"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Kierownica (3 osie, 2 przyciski)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Kierownica (3 osie, 3 przyciski)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Kierownica (3 osie, 4 przyciski)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Pad(y) z dwoma przyciskami"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Wolant z dwoma przyciskami"
msgid "4-button gamepad"
msgstr "Pad z czterema przyciskami"
msgid "4-button flight yoke"
msgstr "Wolant z czterema przyciskami"
msgid "2-button flight yoke with throttle"
msgstr "Wolant z dwoma przyciskami i przepustnicą"
msgid "4-button flight yoke with throttle"
msgstr "Wolant z czterema przyciskami i przepustnicą"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Kierownica Win95 (3 osie, 4 przyciski)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Żaden"

View File

@@ -603,9 +603,6 @@ msgstr "Canal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Especificar..."
msgid "Sectors:"
msgstr "Setores:"
@@ -852,9 +849,18 @@ msgstr "Nenhum dispositivo PCap encontrado"
msgid "Invalid PCap device"
msgstr "Dispositivo PCap inválido"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Joystick(s) de 2 eixos, 1 botões"
msgid "2-axis, 2-button joystick(s)"
msgstr "Joystick(s) de 2 eixos, 2 botões"
msgid "2-axis, 3-button joystick"
msgstr "Joystick de 2 eixos, 3 botões"
msgid "2-axis, 4-button joystick"
msgstr "Joystick de 2 eixos, 4 botões"
@@ -867,18 +873,99 @@ msgstr "Joystick de 2 eixos, 8 botões"
msgid "3-axis, 2-button joystick"
msgstr "Joystick de 3 eixos, 2 botões"
msgid "3-axis, 3-button joystick"
msgstr "Joystick de 3 eixos, 3 botões"
msgid "3-axis, 4-button joystick"
msgstr "Joystick de 3 eixos, 4 botões"
msgid "4-axis, 2-button joystick"
msgstr "Joystick de 4 eixos, 2 botões"
msgid "4-axis, 3-button joystick"
msgstr "Joystick de 4 eixos, 3 botões"
msgid "4-axis, 4-button joystick"
msgstr "Joystick de 4 eixos, 4 botões"
msgid "2-button gamepad(s)"
msgstr "Gamepad(s) de 2 botões"
msgid "3-button gamepad"
msgstr "Gamepad de 3 botões"
msgid "4-button gamepad"
msgstr "Gamepad de 4 botões"
msgid "6-button gamepad"
msgstr "Gamepad de 6 botões"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Manche de voo de 2 botões"
msgid "3-button flight yoke"
msgstr "Manche de voo de 3 botões"
msgid "4-button flight yoke"
msgstr "Manche de voo de 4 botões"
msgid "2-button flight yoke with throttle"
msgstr "Manche de voo de 2 botões com acelerador"
msgid "3-button flight yoke with throttle"
msgstr "Manche de voo de 3 botões com acelerador"
msgid "4-button flight yoke with throttle"
msgstr "Manche de voo de 4 botões com acelerador"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volante (3 eixos, 2 botões)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volante (3 eixos, 3 botões)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volante (3 eixos, 4 botões)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + Pedais CH"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + Pedais CH Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + Pedais CH"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + Pedais CH Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + Pedais CH"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + Pedais CH Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Sistema de Controle de Voo Thrustmaster"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "SCV Thrustmaster + Sistema de Controle de Leme"
msgid "2-button gamepad(s)"
msgstr "Gamepad(s) de 2 botões"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Manche de voo de 2 botões"
msgid "4-button gamepad"
msgstr "Gamepad de 4 botões"
msgid "4-button flight yoke"
msgstr "Manche de voo de 4 botões"
msgid "2-button flight yoke with throttle"
msgstr "Manche de voo de 2 botões com acelerador"
msgid "4-button flight yoke with throttle"
msgstr "Manche de voo de 4 botões com acelerador"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volante Win95 (3 eixos, 4 botões)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Nenhum"

View File

@@ -603,9 +603,6 @@ msgstr "Canal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Especificar..."
msgid "Sectors:"
msgstr "Sectores:"
@@ -852,9 +849,18 @@ msgstr "Não foi encontrado um dispositivo PCap"
msgid "Invalid PCap device"
msgstr "Dispositivo PCap inválido"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Joystick(s) de 2 eixos, 1 botões"
msgid "2-axis, 2-button joystick(s)"
msgstr "Joystick(s) de 2 eixos, 2 botões"
msgid "2-axis, 3-button joystick"
msgstr "Joystick de 2 eixos, 3 botões"
msgid "2-axis, 4-button joystick"
msgstr "Joystick de 2 eixos, 4 botões"
@@ -867,18 +873,99 @@ msgstr "Joystick de 2 eixos, 8 botões"
msgid "3-axis, 2-button joystick"
msgstr "Joystick de 3 eixos, 2 botões"
msgid "3-axis, 3-button joystick"
msgstr "Joystick de 3 eixos, 3 botões"
msgid "3-axis, 4-button joystick"
msgstr "Joystick de 3 eixos, 4 botões"
msgid "4-axis, 2-button joystick"
msgstr "Joystick de 4 eixos, 2 botões"
msgid "4-axis, 3-button joystick"
msgstr "Joystick de 4 eixos, 3 botões"
msgid "4-axis, 4-button joystick"
msgstr "Joystick de 4 eixos, 4 botões"
msgid "2-button gamepad(s)"
msgstr "Manípulo(s) de jogos de 2 botões"
msgid "3-button gamepad"
msgstr "Manípulo(s) de jogos de 3 botões"
msgid "4-button gamepad"
msgstr "Manípulo(s) de jogos de 4 botões"
msgid "6-button gamepad"
msgstr "Manípulo(s) de jogos de 6 botões"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Manípulo de voo de 2 botões"
msgid "3-button flight yoke"
msgstr "Manípulo de voo de 2 botões"
msgid "4-button flight yoke"
msgstr "Manípulo de voo de 4 botões"
msgid "2-button flight yoke with throttle"
msgstr "Manípulo de voo de 2 botões com acelerador"
msgid "3-button flight yoke with throttle"
msgstr "Manípulo de voo de 3 botões com acelerador"
msgid "4-button flight yoke with throttle"
msgstr "Manípulo de voo de 4 botões com acelerador"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volante (de 3 eixos, 2 botões)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volante (de 3 eixos, 3 botões)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volante (de 3 eixos, 4 botões)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Manípulo(s) de jogos de 2 botões"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Manípulo de voo de 2 botões"
msgid "4-button gamepad"
msgstr "Manípulo(s) de jogos de 4 botões"
msgid "4-button flight yoke"
msgstr "Manípulo de voo de 4 botões"
msgid "2-button flight yoke with throttle"
msgstr "Manípulo de voo de 2 botões com acelerador"
msgid "4-button flight yoke with throttle"
msgstr "Manípulo de voo de 4 botões com acelerador"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volante Win95 (de 3 eixos, 4 botões)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Nenhum"

View File

@@ -603,9 +603,6 @@ msgstr "Канал:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Указать..."
msgid "Sectors:"
msgstr "Секторы:"
@@ -852,9 +849,18 @@ msgstr "Устройства PCap не найдены"
msgid "Invalid PCap device"
msgstr "Неверное устройство PCap"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2-осевой, 1-кнопочный джойстик"
msgid "2-axis, 2-button joystick(s)"
msgstr "2-осевой, 2-кнопочный джойстик"
msgid "2-axis, 3-button joystick"
msgstr "2-осевой, 3-кнопочный джойстик"
msgid "2-axis, 4-button joystick"
msgstr "2-осевой, 4-кнопочный джойстик"
@@ -867,18 +873,99 @@ msgstr "2-осевой, 8-кнопочный джойстик"
msgid "3-axis, 2-button joystick"
msgstr "3-осевой, 2-кнопочный джойстик"
msgid "3-axis, 3-button joystick"
msgstr "3-осевой, 3-кнопочный джойстик"
msgid "3-axis, 4-button joystick"
msgstr "3-осевой, 4-кнопочный джойстик"
msgid "4-axis, 2-button joystick"
msgstr "4-осевой, 2-кнопочный джойстик"
msgid "4-axis, 3-button joystick"
msgstr "4-осевой, 3-кнопочный джойстик"
msgid "4-axis, 4-button joystick"
msgstr "4-осевой, 4-кнопочный джойстик"
msgid "2-button gamepad(s)"
msgstr "2-кнопочный геймпад"
msgid "3-button gamepad"
msgstr "3-кнопочный геймпад"
msgid "4-button gamepad"
msgstr "4-кнопочный геймпад"
msgid "6-button gamepad"
msgstr "6-кнопочный геймпад"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2-кнопочный flight yoke"
msgid "3-button flight yoke"
msgstr "3-кнопочный flight yoke"
msgid "4-button flight yoke"
msgstr "4-кнопочный flight yoke"
msgid "2-button flight yoke with throttle"
msgstr "2-кнопочный flight yoke с дросселем"
msgid "3-button flight yoke with throttle"
msgstr "3-кнопочный flight yoke с дросселем"
msgid "4-button flight yoke with throttle"
msgstr "4-кнопочный flight yoke с дросселем"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Руль (3-осевой, 2-кнопочный)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Руль (3-осевой, 3-кнопочный)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Руль (3-осевой, 4-кнопочный)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Педали"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Педали Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Педали"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Педали Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Педали"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Педали Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Педали"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Педали Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Система управления полётом Thrustmaster"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Система управления рулем"
msgid "2-button gamepad(s)"
msgstr "2-кнопочный геймпад"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2-кнопочный flight yoke"
msgid "4-button gamepad"
msgstr "4-кнопочный геймпад"
msgid "4-button flight yoke"
msgstr "4-кнопочный flight yoke"
msgid "2-button flight yoke with throttle"
msgstr "2-кнопочный flight yoke с дросселем"
msgid "4-button flight yoke with throttle"
msgstr "4-кнопочный flight yoke с дросселем"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Руль Win95 (3-осевой, 4-кнопочный)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Нет"

View File

@@ -603,9 +603,6 @@ msgstr "Kanál:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Zadať..."
msgid "Sectors:"
msgstr "Sektory:"
@@ -852,9 +849,18 @@ msgstr "Neboli nájdené žiadne PCap zariadenia"
msgid "Invalid PCap device"
msgstr "Neplatné PCap zariadenie"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2-osový, 1-tlačidlový joystick"
msgid "2-axis, 2-button joystick(s)"
msgstr "2-osový, 2-tlačidlový joystick"
msgid "2-axis, 3-button joystick"
msgstr "2-osový, 4-tlačidlový joystick"
msgid "2-axis, 4-button joystick"
msgstr "2-osový, 4-tlačidlový joystick"
@@ -867,18 +873,99 @@ msgstr "2-osový, 8-tlačidlový joystick"
msgid "3-axis, 2-button joystick"
msgstr "3-osový, 2-tlačidlový joystick"
msgid "3-axis, 3-button joystick"
msgstr "3-osový, 3-tlačidlový joystick"
msgid "3-axis, 4-button joystick"
msgstr "3-osový, 4-tlačidlový joystick"
msgid "4-axis, 2-button joystick"
msgstr "4-osový, 2-tlačidlový joystick"
msgid "4-axis, 3-button joystick"
msgstr "4-osový, 3-tlačidlový joystick"
msgid "4-axis, 4-button joystick"
msgstr "4-osový, 4-tlačidlový joystick"
msgid "2-button gamepad(s)"
msgstr "Ovládač s 2 tlačidlami"
msgid "3-button gamepad"
msgstr "Ovládač so 3 tlačidlami"
msgid "4-button gamepad"
msgstr "Ovládač so 4 tlačidlami"
msgid "6-button gamepad"
msgstr "Ovládač so 6 tlačidlami"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Letecký knipl s 2 tlačidlami"
msgid "3-button flight yoke"
msgstr "Letecký knipl s 3 tlačidlami"
msgid "4-button flight yoke"
msgstr "Letecký knipl so 4 tlačidlami"
msgid "2-button flight yoke with throttle"
msgstr "Letecký knipl s 2 tlačidlami a pákou"
msgid "3-button flight yoke with throttle"
msgstr "Letecký knipl s 3 tlačidlami a pákou"
msgid "4-button flight yoke with throttle"
msgstr "Letecký knipl s 4 tlačidlami a pákou"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volant (3 osy, 2 tlačítka)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volant (3 osy, 3 tlačítka)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volant (3 osy, 4 tlačítka)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Ovládač s 2 tlačidlami"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Letecký knipl s 2 tlačidlami"
msgid "4-button gamepad"
msgstr "Ovládač so 4 tlačidlami"
msgid "4-button flight yoke"
msgstr "Letecký knipl so 4 tlačidlami"
msgid "2-button flight yoke with throttle"
msgstr "Letecký knipl s 2 tlačidlami a pákou"
msgid "4-button flight yoke with throttle"
msgstr "Letecký knipl s 4 tlačidlami a pákou"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volant pre Windows 95 (3 osy, 4 tlačítka)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Žiadne"

View File

@@ -603,9 +603,6 @@ msgstr "Kanal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Določi..."
msgid "Sectors:"
msgstr "Sektorji:"
@@ -852,9 +849,18 @@ msgstr "Najdena ni bila nobena naprava PCap"
msgid "Invalid PCap device"
msgstr "Neveljavna naprava PCap"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Igralna palica z 2 osema, 1 gumboma"
msgid "2-axis, 2-button joystick(s)"
msgstr "Igralna palica z 2 osema, 2 gumboma"
msgid "2-axis, 3-button joystick"
msgstr "Igralna palica z 2 osema, 3 gumbi"
msgid "2-axis, 4-button joystick"
msgstr "Igralna palica z 2 osema, 4 gumbi"
@@ -865,20 +871,101 @@ msgid "2-axis, 8-button joystick"
msgstr "Igralna palica z 2 osema, 8 gumbi"
msgid "3-axis, 2-button joystick"
msgstr "Igralna palica s 3 osmi, 2 gumboma"
msgstr "Igralna palica s 3 osmi, 2 gumbi"
msgid "3-axis, 3-button joystick"
msgstr "Igralna palica s 3 osmi, 3 gumbi"
msgid "3-axis, 4-button joystick"
msgstr "Igralna palica s 3 osmi, 4 gumbi"
msgid "4-axis, 2-button joystick"
msgstr "Igralna palica s 4 osmi, 2 gumbi"
msgid "4-axis, 3-button joystick"
msgstr "Igralna palica s 4 osmi, 3 gumbi"
msgid "4-axis, 4-button joystick"
msgstr "Igralna palica s 4 osmi, 4 gumbi"
msgid "2-button gamepad(s)"
msgstr "Igralna ploščica z 2 gumboma"
msgid "3-button gamepad"
msgstr "Igralna ploščica s 3 gumbi"
msgid "4-button gamepad"
msgstr "Igralna ploščica s 4 gumbi"
msgid "6-button gamepad"
msgstr "Igralna ploščica s 6 gumbi"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Letalski krmilni drog z 2 gumbi"
msgid "3-button flight yoke"
msgstr "Letalski krmilni drog z 3 gumbi"
msgid "4-button flight yoke"
msgstr "Letalski krmilni drog s 4 gumbi"
msgid "2-button flight yoke with throttle"
msgstr "Letalski krmilni drog z 2 gumbi gumboma ročico za plin"
msgid "3-button flight yoke with throttle"
msgstr "Letalski krmilni drog s 3 gumbi z ročico za plin"
msgid "4-button flight yoke with throttle"
msgstr "Letalski krmilni drog s 4 gumbi z ročico za plin"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Volan s 3 osmi, 2 gumbi"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Volan s 3 osmi, 3 gumbi"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Volan s 3 osmi, 4 gumbi"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Igralna ploščica z 2 gumboma"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Letalski krmilni drog z 2 gumbi"
msgid "4-button gamepad"
msgstr "Igralna ploščica s 4 gumbi"
msgid "4-button flight yoke"
msgstr "Letalski krmilni drog s 4 gumbi"
msgid "2-button flight yoke with throttle"
msgstr "Letalski krmilni drog z 2 gumbi gumboma ročico za plin"
msgid "4-button flight yoke with throttle"
msgstr "Letalski krmilni drog s 4 gumbi z ročico za plin"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Volan Win95 s 3 osmi, 4 gumbi"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Brez"

View File

@@ -603,9 +603,6 @@ msgstr "Kanal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Specificera..."
msgid "Sectors:"
msgstr "Sektorer:"
@@ -852,9 +849,18 @@ msgstr "Inga PCap-enheter hittade"
msgid "Invalid PCap device"
msgstr "Ogiltig PCap-enhet"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Styrspak med 2 axlar och 1 knappar"
msgid "2-axis, 2-button joystick(s)"
msgstr "Styrspak med 2 axlar och 2 knappar"
msgid "2-axis, 3-button joystick"
msgstr "Styrspak med 2 axlar och 3 knappar"
msgid "2-axis, 4-button joystick"
msgstr "Styrspak med 2 axlar och 4 knappar"
@@ -867,18 +873,99 @@ msgstr "Styrspak med 2 axlar och 8 knappar"
msgid "3-axis, 2-button joystick"
msgstr "Styrspak med 3 axlar och 2 knappar"
msgid "3-axis, 3-button joystick"
msgstr "Styrspak med 3 axlar och 2 knappar"
msgid "3-axis, 4-button joystick"
msgstr "Styrspak med 3 axlar och 4 knappar"
msgid "4-axis, 2-button joystick"
msgstr "Styrspak med 4 axlar och 2 knappar"
msgid "4-axis, 3-button joystick"
msgstr "Styrspak med 4 axlar och 3 knappar"
msgid "4-axis, 4-button joystick"
msgstr "Styrspak med 4 axlar och 4 knappar"
msgid "2-button gamepad(s)"
msgstr "Handkontroll(er) med två knappar"
msgid "3-button gamepad"
msgstr "Handkontroll med tre knappar"
msgid "4-button gamepad"
msgstr "Handkontroll med fyra knappar"
msgid "6-button gamepad"
msgstr "Handkontroll med sex knappar"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Styrspak med två knappar"
msgid "3-button flight yoke"
msgstr "Styrspak med tre knappar"
msgid "4-button flight yoke"
msgstr "Styrspak med fyra knappar"
msgid "2-button flight yoke with throttle"
msgstr "Styrspak med två knappar och gas"
msgid "3-button flight yoke with throttle"
msgstr "Styrspak med tre knappar och gas"
msgid "4-button flight yoke with throttle"
msgstr "Styrspak med fyra knappar och gas"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "ratt (tre axlar, två knappar)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "ratt (tre axlar, tre knappar)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "ratt (tre axlar, fyra knappar)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH-pedaler"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH-pedaler Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH-pedaler"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH-pedaler Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH-pedaler"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH-pedaler Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH-pedaler"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH-pedaler Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "Handkontroll(er) med två knappar"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Styrspak med två knappar"
msgid "4-button gamepad"
msgstr "Handkontroll med fyra knappar"
msgid "4-button flight yoke"
msgstr "Styrspak med fyra knappar"
msgid "2-button flight yoke with throttle"
msgstr "Styrspak med två knappar och gas"
msgid "4-button flight yoke with throttle"
msgstr "Styrspak med fyra knappar och gas"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95-ratt (tre axlar, fyra knappar)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Ingen"

View File

@@ -603,9 +603,6 @@ msgstr "Kanal:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Belirle..."
msgid "Sectors:"
msgstr "Sektörler:"
@@ -852,9 +849,18 @@ msgstr "Herhangi bir PCap cihazı bulunamadı"
msgid "Invalid PCap device"
msgstr "Geçersiz PCap cihazı"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2 eksenli, 1 düğmeli oyun kolları"
msgid "2-axis, 2-button joystick(s)"
msgstr "2 eksenli, 2 düğmeli oyun kolları"
msgid "2-axis, 3-button joystick"
msgstr "2 eksenli, 3 düğmeli oyun kolu"
msgid "2-axis, 4-button joystick"
msgstr "2 eksenli, 4 düğmeli oyun kolu"
@@ -867,18 +873,99 @@ msgstr "2 eksenli, 8 düğmeli oyun kolu"
msgid "3-axis, 2-button joystick"
msgstr "3 eksenli, 2 düğmeli oyun kollu"
msgid "3-axis, 3-button joystick"
msgstr "3 eksenli, 3 düğmeli oyun kolu"
msgid "3-axis, 4-button joystick"
msgstr "3 eksenli, 4 düğmeli oyun kolu"
msgid "4-axis, 2-button joystick"
msgstr "4 eksenli, 2 düğmeli oyun kolu"
msgid "4-axis, 3-button joystick"
msgstr "4 eksenli, 3 düğmeli oyun kolu"
msgid "4-axis, 4-button joystick"
msgstr "4 eksenli, 4 düğmeli oyun kolu"
msgid "2-button gamepad(s)"
msgstr "2 düğmeli oyun tablası"
msgid "3-button gamepad"
msgstr "3 düğmeli oyun tablası"
msgid "4-button gamepad"
msgstr "4 düğmeli oyun tablası"
msgid "6-button gamepad"
msgstr "6 düğmeli oyun tablası"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2 düğmeli uçuş dümeni"
msgid "3-button flight yoke"
msgstr "3 düğmeli uçuş dümeni"
msgid "4-button flight yoke"
msgstr "4 düğmeli uçuş dümeni"
msgid "2-button flight yoke with throttle"
msgstr "2 düğmeli, gaz kollu uçuş dümeni"
msgid "3-button flight yoke with throttle"
msgstr "3 düğmeli, gaz kollu uçuş dümeni"
msgid "4-button flight yoke with throttle"
msgstr "4 düğmeli, gaz kollu uçuş dümeni"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "direksiyonu (3 eksenli, 2 düğmeli)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "direksiyonu (3 eksenli, 3 düğmeli)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "direksiyonu (3 eksenli, 4 düğmeli)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "2 düğmeli oyun tablası"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2 düğmeli uçuş dümeni"
msgid "4-button gamepad"
msgstr "4 düğmeli oyun tablası"
msgid "4-button flight yoke"
msgstr "4 düğmeli uçuş dümeni"
msgid "2-button flight yoke with throttle"
msgstr "2 düğmeli, gaz kollu uçuş dümeni"
msgid "4-button flight yoke with throttle"
msgstr "4 düğmeli, gaz kollu uçuş dümeni"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 direksiyonu (3 eksenli, 4 düğmeli)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Hiçbiri"

View File

@@ -603,9 +603,6 @@ msgstr "Канал:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "&Вказати..."
msgid "Sectors:"
msgstr "Сектора:"
@@ -852,9 +849,18 @@ msgstr "Пристрої PCap не знайдені"
msgid "Invalid PCap device"
msgstr "Невірний пристрій PCap"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2-осьовий, 1-кнопковий джойстик"
msgid "2-axis, 2-button joystick(s)"
msgstr "2-осьовий, 2-кнопковий джойстик"
msgid "2-axis, 3-button joystick"
msgstr "2-осьовий, 3-кнопковий джойстик"
msgid "2-axis, 4-button joystick"
msgstr "2-осьовий, 4-кнопковий джойстик"
@@ -867,18 +873,99 @@ msgstr "2-осьовий, 8-кнопковий джойстик"
msgid "3-axis, 2-button joystick"
msgstr "3-осьовий, 2-кнопковий джойстик"
msgid "3-axis, 3-button joystick"
msgstr "3-осьовий, 3-кнопковий джойстик"
msgid "3-axis, 4-button joystick"
msgstr "3-осьовий, 4-кнопковий джойстик"
msgid "4-axis, 2-button joystick"
msgstr "4-осьовий, 2-кнопковий джойстик"
msgid "4-axis, 3-button joystick"
msgstr "4-осьовий, 3-кнопковий джойстик"
msgid "4-axis, 4-button joystick"
msgstr "4-осьовий, 4-кнопковий джойстик"
msgid "2-button gamepad(s)"
msgstr "2-кнопковий геймпад"
msgid "3-button gamepad"
msgstr "3-кнопковий геймпад"
msgid "4-button gamepad"
msgstr "4-кнопковий геймпад"
msgid "6-button gamepad"
msgstr "6-кнопковий геймпад"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2-кнопковий flight yoke"
msgid "3-button flight yoke"
msgstr "3-кнопковий геймпад"
msgid "4-button flight yoke"
msgstr "4-кнопковий flight yoke"
msgid "2-button flight yoke with throttle"
msgstr "2-кнопковий flight yoke з дроселем"
msgid "3-button flight yoke with throttle"
msgstr "3-кнопковий flight yoke з дроселем"
msgid "4-button flight yoke with throttle"
msgstr "4-кнопковий flight yoke з дроселем"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Кермо (3-осьове, 2-кнопкове)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Кермо (3-осьове, 3-кнопкове)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Кермо (3-осьове, 4-кнопкове)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Педалі"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Педалі Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Педалі"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Педалі Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Педалі"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Педалі Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Педалі"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Педалі Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Система управління польотом Thrustmaster"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Система управління кермом"
msgid "2-button gamepad(s)"
msgstr "4-кнопковий геймпад"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2-кнопковий flight yoke"
msgid "4-button gamepad"
msgstr "4-кнопковий геймпад"
msgid "4-button flight yoke"
msgstr "4-кнопковий flight yoke"
msgid "2-button flight yoke with throttle"
msgstr "2-кнопковий flight yoke з дроселем"
msgid "4-button flight yoke with throttle"
msgstr "4-кнопковий flight yoke з дроселем"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Кермо Win95 (3-осьове, 4-кнопкове)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Ні"
@@ -1714,7 +1786,7 @@ msgid "Remove"
msgstr "Видалити"
msgid "Browse..."
msgstr "Переглянути..."
msgstr "Огляд..."
msgid "Couldn't create OpenGL context."
msgstr "Не вдалося створити контекст OpenGL."

View File

@@ -603,9 +603,6 @@ msgstr "Kênh:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "Chỉ &rõ..."
msgid "Sectors:"
msgstr "Sector:"
@@ -852,9 +849,18 @@ msgstr "Không tìm thấy thiết bị PCap"
msgid "Invalid PCap device"
msgstr "Thiết bị PCap không hợp quy"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "Cần điều khiển hai trục, một nút"
msgid "2-axis, 2-button joystick(s)"
msgstr "Cần điều khiển hai trục, hai nút"
msgid "2-axis, 3-button joystick"
msgstr "Cần điều khiển hai trục, ba nút"
msgid "2-axis, 4-button joystick"
msgstr "Cần điều khiển hai trục, bốn nút"
@@ -867,18 +873,99 @@ msgstr "Cần điều khiển hai trục, tám nút"
msgid "3-axis, 2-button joystick"
msgstr "Cần điều khiển ba trục, hai nút"
msgid "3-axis, 3-button joystick"
msgstr "Cần điều khiển ba trục, ba nút"
msgid "3-axis, 4-button joystick"
msgstr "Cần điều khiển ba trục, bốn nút"
msgid "4-axis, 2-button joystick"
msgstr "Cần điều khiển bốn trục, hai nút"
msgid "4-axis, 3-button joystick"
msgstr "Cần điều khiển bốn trục, ba nút"
msgid "4-axis, 4-button joystick"
msgstr "Cần điều khiển bốn trục, bốn nút"
msgid "2-button gamepad(s)"
msgstr "Tay cầm game hai nút"
msgid "3-button gamepad"
msgstr "Tay cầm game ba nút"
msgid "4-button gamepad"
msgstr "Tay cầm game bốn nút"
msgid "6-button gamepad"
msgstr "Tay cầm game sáu nút"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "Vô lăng máy bay hai nút"
msgid "3-button flight yoke"
msgstr "Vô lăng máy bay ba nút"
msgid "4-button flight yoke"
msgstr "Vô lăng máy bay bốn nút"
msgid "2-button flight yoke with throttle"
msgstr "Vô lăng máy bay hai nút có cần ga"
msgid "3-button flight yoke with throttle"
msgstr "Vô lăng máy bay ba nút có cần ga"
msgid "4-button flight yoke with throttle"
msgstr "Vô lăng máy bay bốn nút có cần ga"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "Vô lăng (ba trục, hai nút)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "Vô lăng (ba trục, ba nút)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "Vô lăng (ba trục, bốn nút)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + bàn giậm CH"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + bàn giậm CH Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + bàn giậm CH"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + bàn giậm CH Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + bàn giậm CH"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + bàn giậm CH Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + bàn giậm CH"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + bàn giậm CH Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Hệ thống bánh lái"
msgid "2-button gamepad(s)"
msgstr "Tay cầm game hai nút"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "Vô lăng máy bay hai nút"
msgid "4-button gamepad"
msgstr "Tay cầm game bốn nút"
msgid "4-button flight yoke"
msgstr "Vô lăng máy bay bốn nút"
msgid "2-button flight yoke with throttle"
msgstr "Vô lăng máy bay hai nút có cần ga"
msgid "4-button flight yoke with throttle"
msgstr "Vô lăng máy bay bốn nút có cần ga"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Vô lăng Win95 (ba trục, bốn nút)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "Không có"

View File

@@ -603,9 +603,6 @@ msgstr "通道:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "指定(&S)..."
msgid "Sectors:"
msgstr "扇区(S):"
@@ -852,9 +849,18 @@ msgstr "未找到 PCap 设备"
msgid "Invalid PCap device"
msgstr "无效 PCap 设备"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2 轴, 1 键操纵杆"
msgid "2-axis, 2-button joystick(s)"
msgstr "2 轴, 2 键操纵杆"
msgid "2-axis, 3-button joystick"
msgstr "2 轴, 3 键操纵杆"
msgid "2-axis, 4-button joystick"
msgstr "2 轴, 4 键操纵杆"
@@ -867,18 +873,99 @@ msgstr "2 轴, 8 键操纵杆"
msgid "3-axis, 2-button joystick"
msgstr "3 轴, 2 键操纵杆"
msgid "3-axis, 3-button joystick"
msgstr "3 轴, 3 键操纵杆"
msgid "3-axis, 4-button joystick"
msgstr "3 轴, 4 键操纵杆"
msgid "4-axis, 2-button joystick"
msgstr "4 轴, 2 键操纵杆"
msgid "4-axis, 3-button joystick"
msgstr "4 轴, 3 键操纵杆"
msgid "4-axis, 4-button joystick"
msgstr "4 轴, 4 键操纵杆"
msgid "2-button gamepad(s)"
msgstr "2 按钮游戏手柄"
msgid "3-button gamepad"
msgstr "3 按钮游戏手柄"
msgid "4-button gamepad"
msgstr "4 按钮游戏手柄"
msgid "6-button gamepad"
msgstr "6 按钮游戏手柄"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2 按钮飞行摇杆"
msgid "3-button flight yoke"
msgstr "3 按钮飞行摇杆"
msgid "4-button flight yoke"
msgstr "4 按钮飞行摇杆"
msgid "2-button flight yoke with throttle"
msgstr "2 按钮带油门飞行摇杆"
msgid "3-button flight yoke with throttle"
msgstr "3 按钮带油门飞行摇杆"
msgid "4-button flight yoke with throttle"
msgstr "4 按钮带油门飞行摇杆"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "方向盘 (3 轴, 2 键)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "方向盘 (3 轴, 3 键)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "方向盘 (3 轴, 4 键)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "2 按钮游戏手柄"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2 按钮飞行摇杆"
msgid "4-button gamepad"
msgstr "4 按钮游戏手柄"
msgid "4-button flight yoke"
msgstr "4 按钮飞行摇杆"
msgid "2-button flight yoke with throttle"
msgstr "2 按钮带油门飞行摇杆"
msgid "4-button flight yoke with throttle"
msgstr "4 按钮带油门飞行摇杆"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 方向盘 (3 轴, 4 键)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "无"

View File

@@ -603,9 +603,6 @@ msgstr "通道:"
msgid "ID:"
msgstr "ID:"
msgid "&Specify..."
msgstr "指定(&S)..."
msgid "Sectors:"
msgstr "磁區(S):"
@@ -852,9 +849,18 @@ msgstr "未找到 PCap 裝置"
msgid "Invalid PCap device"
msgstr "無效 PCap 裝置"
msgid "Generic Paddle Controller(s)"
msgstr ""
msgid "2-axis, 1-button joystick(s)"
msgstr "2 軸, 1 鍵搖桿"
msgid "2-axis, 2-button joystick(s)"
msgstr "2 軸, 2 鍵搖桿"
msgid "2-axis, 3-button joystick"
msgstr "2 軸, 3 鍵搖桿"
msgid "2-axis, 4-button joystick"
msgstr "2 軸, 4 鍵搖桿"
@@ -867,18 +873,99 @@ msgstr "2 軸, 8 鍵搖桿"
msgid "3-axis, 2-button joystick"
msgstr "3 軸, 2 鍵搖桿"
msgid "3-axis, 3-button joystick"
msgstr "3 軸, 3 鍵搖桿"
msgid "3-axis, 4-button joystick"
msgstr "3 軸, 4 鍵搖桿"
msgid "4-axis, 2-button joystick"
msgstr "4 軸, 2 鍵搖桿"
msgid "4-axis, 3-button joystick"
msgstr "4 軸, 3 鍵搖桿"
msgid "4-axis, 4-button joystick"
msgstr "4 軸, 4 鍵搖桿"
msgid "2-button gamepad(s)"
msgstr "2 鍵遊戲手柄"
msgid "3-button gamepad"
msgstr "3 鍵遊戲手柄"
msgid "4-button gamepad"
msgstr "4 鍵遊戲手柄"
msgid "6-button gamepad"
msgstr "6 鍵遊戲手柄"
msgid "Gravis PC GamePad"
msgstr "Gravis PC GamePad"
msgid "2-button flight yoke"
msgstr "2 按鈕飛行搖桿"
msgid "3-button flight yoke"
msgstr "3 按鈕飛行搖桿"
msgid "4-button flight yoke"
msgstr "4 按鈕飛行搖桿"
msgid "2-button flight yoke with throttle"
msgstr "2 按鈕帶油門飛行搖桿"
msgid "3-button flight yoke with throttle"
msgstr "3 按鈕帶油門飛行搖桿"
msgid "4-button flight yoke with throttle"
msgstr "4 按鈕帶油門飛行搖桿"
msgid "Steering Wheel (3-axis, 2-button)"
msgstr "方向盤 (3 軸, 2 鍵搖桿)"
msgid "Steering Wheel (3-axis, 3-button)"
msgstr "方向盤 (3 軸, 3 鍵搖桿)"
msgid "Steering Wheel (3-axis, 4-button)"
msgstr "方向盤 (3 軸, 4 鍵搖桿)"
msgid "CH Flightstick"
msgstr "CH Flightstick"
msgid "CH Flightstick + CH Pedals"
msgstr "CH Flightstick + CH Pedals"
msgid "CH Flightstick + CH Pedals Pro"
msgstr "CH Flightstick + CH Pedals Pro"
msgid "CH Flightstick Pro"
msgstr "CH Flightstick Pro"
msgid "CH Flightstick Pro + CH Pedals"
msgstr "CH Flightstick Pro + CH Pedals"
msgid "CH Flightstick Pro + CH Pedals Pro"
msgstr "CH Flightstick Pro + CH Pedals Pro"
msgid "CH Virtual Pilot"
msgstr "CH Virtual Pilot"
msgid "CH Virtual Pilot + CH Pedals"
msgstr "CH Virtual Pilot + CH Pedals"
msgid "CH Virtual Pilot + CH Pedals Pro"
msgstr "CH Virtual Pilot + CH Pedals Pro"
msgid "CH Virtual Pilot Pro"
msgstr "CH Virtual Pilot Pro"
msgid "CH Virtual Pilot Pro + CH Pedals"
msgstr "CH Virtual Pilot Pro + CH Pedals"
msgid "CH Virtual Pilot Pro + CH Pedals Pro"
msgstr "CH Virtual Pilot Pro + CH Pedals Pro"
msgid "Microsoft SideWinder Pad"
msgstr "Microsoft SideWinder Pad"
@@ -888,26 +975,11 @@ msgstr "Thrustmaster Flight Control System"
msgid "Thrustmaster FCS + Rudder Control System"
msgstr "Thrustmaster FCS + Rudder Control System"
msgid "2-button gamepad(s)"
msgstr "2 鍵遊戲手柄"
msgid "Thrustmaster Formula T1/T2 with Adaptor"
msgstr "Thrustmaster Formula T1/T2 with Adaptor"
msgid "2-button flight yoke"
msgstr "2 按鈕飛行搖桿"
msgid "4-button gamepad"
msgstr "4 鍵遊戲手柄"
msgid "4-button flight yoke"
msgstr "4 按鈕飛行搖桿"
msgid "2-button flight yoke with throttle"
msgstr "2 按鈕帶油門飛行搖桿"
msgid "4-button flight yoke with throttle"
msgstr "4 按鈕帶油門飛行搖桿"
msgid "Win95 Steering Wheel (3-axis, 4-button)"
msgstr "Win95 方向盤 (3 軸, 4 鍵搖桿)"
msgid "Thrustmaster Formula T1/T2 without Adaptor"
msgstr "Thrustmaster Formula T1/T2 without Adaptor"
msgid "None"
msgstr "無"

View File

@@ -15,84 +15,15 @@
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetFixedSize</enum>
<enum>QLayout::SetFixedSize</enum>
</property>
<item row="2" column="2">
<widget class="QSlider" name="horizontalSliderBrightness">
<property name="minimum">
<number>-100</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSlider" name="horizontalSliderSaturation">
<property name="maximum">
<number>360</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label">
<widget class="QLabel" name="labelHue">
<property name="text">
<string>Hue</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QSlider" name="horizontalSliderSharpness">
<property name="minimum">
<number>-50</number>
</property>
<property name="maximum">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::StandardButton::Apply|QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok|QDialogButtonBox::StandardButton::Reset</set>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSlider" name="horizontalSliderContrast">
<property name="maximum">
<number>360</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Contrast</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QSlider" name="horizontalSliderHue">
<property name="minimum">
@@ -102,31 +33,100 @@
<number>360</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Sharpness</string>
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="labelSaturation">
<property name="text">
<string>Saturation</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSlider" name="horizontalSliderSaturation">
<property name="maximum">
<number>360</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<widget class="QLabel" name="labelBrightness">
<property name="text">
<string>Brightness</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QSlider" name="horizontalSliderBrightness">
<property name="minimum">
<number>-100</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelContrast">
<property name="text">
<string>Contrast</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QSlider" name="horizontalSliderContrast">
<property name="maximum">
<number>360</number>
</property>
<property name="value">
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="labelSharpness">
<property name="text">
<string>Sharpness</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QSlider" name="horizontalSliderSharpness">
<property name="minimum">
<number>-50</number>
</property>
<property name="maximum">
<number>50</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>

View File

@@ -51,7 +51,7 @@
</sizepolicy>
</property>
<property name="text">
<string>&amp;Specify...</string>
<string>Browse...</string>
</property>
</widget>
</item>

View File

@@ -33,7 +33,7 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<widget class="QLabel" name="labelFileName">
<property name="text">
<string>File name:</string>
</property>
@@ -43,7 +43,7 @@
<widget class="FileField" name="fileField" native="true"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="labelCylinders">
<property name="text">
<string>Cylinders:</string>
</property>
@@ -66,7 +66,7 @@
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="label_4">
<widget class="QLabel" name="labelHeads">
<property name="text">
<string>Heads:</string>
</property>
@@ -92,7 +92,7 @@
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="label_5">
<widget class="QLabel" name="labelSectors">
<property name="text">
<string>Sectors:</string>
</property>
@@ -118,7 +118,7 @@
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<widget class="QLabel" name="labelSize">
<property name="text">
<string>Size (MB):</string>
</property>
@@ -141,7 +141,7 @@
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="label_6">
<widget class="QLabel" name="labelType">
<property name="text">
<string>Type:</string>
</property>
@@ -155,7 +155,7 @@
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_8">
<widget class="QLabel" name="labelBus">
<property name="text">
<string>Bus:</string>
</property>
@@ -169,7 +169,7 @@
</widget>
</item>
<item row="3" column="4">
<widget class="QLabel" name="label_7">
<widget class="QLabel" name="labelChannel">
<property name="text">
<string>Channel:</string>
</property>
@@ -183,7 +183,7 @@
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_9">
<widget class="QLabel" name="labelSpeed">
<property name="text">
<string>Model:</string>
</property>

View File

@@ -32,7 +32,7 @@
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="label">
<property name="text">
<string>Device</string>
</property>

View File

@@ -1021,6 +1021,7 @@ void MainWindow::updateShortcuts()
void
MainWindow::resizeEvent(QResizeEvent *event)
{
#ifdef MOVE_WINDOW
//qDebug() << pos().x() + event->size().width();
//qDebug() << pos().y() + event->size().height();
if (vid_resize == 1 || video_fullscreen)
@@ -1040,6 +1041,7 @@ MainWindow::resizeEvent(QResizeEvent *event)
if (newY < 1) newY = 1;
}
move(newX, newY);
#endif
}
void

View File

@@ -260,7 +260,7 @@
<widget class="QStatusBar" name="statusbar"/>
<widget class="QToolBar" name="toolBar">
<property name="contextMenuPolicy">
<enum>Qt::ContextMenuPolicy::PreventContextMenu</enum>
<enum>Qt::PreventContextMenu</enum>
</property>
<property name="windowTitle">
<string notr="true">toolBar</string>
@@ -272,7 +272,7 @@
<bool>false</bool>
</property>
<property name="allowedAreas">
<set>Qt::ToolBarArea::TopToolBarArea</set>
<set>Qt::TopToolBarArea</set>
</property>
<property name="iconSize">
<size>
@@ -281,7 +281,7 @@
</size>
</property>
<property name="toolButtonStyle">
<enum>Qt::ToolButtonStyle::ToolButtonIconOnly</enum>
<enum>Qt::ToolButtonIconOnly</enum>
</property>
<property name="floatable">
<bool>false</bool>
@@ -396,7 +396,7 @@
<string>E&amp;xit</string>
</property>
<property name="menuRole">
<enum>QAction::MenuRole::QuitRole</enum>
<enum>QAction::QuitRole</enum>
</property>
</action>
<action name="actionSettings">
@@ -408,7 +408,7 @@
<string>&amp;Settings...</string>
</property>
<property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum>
<enum>QAction::NoRole</enum>
</property>
<property name="iconVisibleInMenu">
<bool>false</bool>
@@ -710,7 +710,7 @@
<bool>false</bool>
</property>
<property name="menuRole">
<enum>QAction::MenuRole::AboutQtRole</enum>
<enum>QAction::AboutQtRole</enum>
</property>
</action>
<action name="actionAbout_86Box">
@@ -718,7 +718,7 @@
<string>&amp;About 86Box...</string>
</property>
<property name="menuRole">
<enum>QAction::MenuRole::AboutRole</enum>
<enum>QAction::AboutRole</enum>
</property>
</action>
<action name="actionDocumentation">
@@ -771,7 +771,7 @@
<string>&amp;Preferences...</string>
</property>
<property name="menuRole">
<enum>QAction::MenuRole::PreferencesRole</enum>
<enum>QAction::PreferencesRole</enum>
</property>
</action>
<action name="actionEnable_Discord_integration">
@@ -844,7 +844,7 @@
<string>Renderer &amp;options...</string>
</property>
<property name="menuRole">
<enum>QAction::MenuRole::NoRole</enum>
<enum>QAction::NoRole</enum>
</property>
</action>
<action name="actionVulkan">

View File

@@ -27,7 +27,7 @@
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="labelFileName">
<property name="text">
<string>File name:</string>
</property>
@@ -44,7 +44,7 @@
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<widget class="QLabel" name="labelSize">
<property name="text">
<string>Disk size:</string>
</property>

View File

@@ -42,6 +42,8 @@ extern MainWindow* main_window;
#include <QImage>
#include <cmath>
#include <cstdarg>
#define HAVE_STDARG_H
#include "qt_openglrenderer.hpp"
#include "qt_openglshadermanagerdialog.hpp"
@@ -152,7 +154,7 @@ ogl3_log(const char *fmt, ...)
if (ogl3_do_log) {
va_start(ap, fmt);
ogl3_log_ex(fmt, ap);
pclog_ex(fmt, ap);
va_end(ap);
}
}
@@ -218,17 +220,8 @@ OpenGLRenderer::compile_shader(GLenum shader_type, const char *prepend, const ch
if (version_loc) {
snprintf(version, 49, "%s\n", versionRegex.match(progSource).captured(1).toLatin1().data());
progSource.remove(versionRegex);
version_loc = ((char *) this->glslVersion.toLatin1().data()) + 9;
char glsl_ver[4] = { 0 };
memcpy(glsl_ver, version_loc, 3);
int ver = atoi((char *) glsl_ver);
pclog("Fucce þiċ: %d\n", ver);
} else {
version_loc = ((char *) this->glslVersion.toLatin1().data()) + 9;
char glsl_ver[4] = { 0 };
memcpy(glsl_ver, version_loc, 3);
int ver = atoi((char *) glsl_ver);
int ver = gl_version[0] * 100 + gl_version[1] * 10;
if (ver == 300)
ver = 130;
else if (ver == 310)
@@ -881,11 +874,11 @@ OpenGLRenderer::initialize()
glw.initializeOpenGLFunctions();
ogl3_log("OpenGL information: [%s] %s (%s)\n", glw.glGetString(GL_VENDOR), glw.glGetString(GL_RENDERER), glw.glGetString(GL_VERSION));
glsl_version[0] = glsl_version[1] = -1;
glw.glGetIntegerv(GL_MAJOR_VERSION, &glsl_version[0]);
glw.glGetIntegerv(GL_MINOR_VERSION, &glsl_version[1]);
if (glsl_version[0] < 3) {
throw opengl_init_error(tr("OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2").arg(glsl_version[0]).arg(glsl_version[1]));
gl_version[0] = gl_version[1] = -1;
glw.glGetIntegerv(GL_MAJOR_VERSION, &gl_version[0]);
glw.glGetIntegerv(GL_MINOR_VERSION, &gl_version[1]);
if (gl_version[0] < 3) {
throw opengl_init_error(tr("OpenGL version 3.0 or greater is required. Current GLSL version is %1.%2").arg(gl_version[0]).arg(gl_version[1]));
}
ogl3_log("Using OpenGL %s\n", glw.glGetString(GL_VERSION));
ogl3_log("Using Shading Language %s\n", glw.glGetString(GL_SHADING_LANGUAGE_VERSION));
@@ -1738,3 +1731,4 @@ OpenGLRenderer::render()
frameCounter++;
context->swapBuffers(this);
}

View File

@@ -102,7 +102,7 @@ private:
void *unpackBuffer = nullptr;
int glsl_version[2] = { 0, 0 };
int gl_version[2] = { 0, 0 };
void initialize();
void initializeExtensions();

View File

@@ -27,49 +27,15 @@
</property>
<layout class="QGridLayout" name="gridLayout">
<property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetFixedSize</enum>
<enum>QLayout::SetFixedSize</enum>
</property>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_2">
<widget class="QLabel" name="labelLanguage">
<property name="text">
<string>Language:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="checkBoxMultimediaKeys">
<property name="text">
<string>Inhibit multimedia keys</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Mouse sensitivity:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Default</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxLanguage">
<property name="maxVisibleItems">
@@ -82,10 +48,30 @@
</item>
</widget>
</item>
<item row="8" column="0">
<widget class="QCheckBox" name="checkBoxConfirmSave">
<item row="2" column="0">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="pushButtonLanguage">
<property name="text">
<string>Ask for confirmation before saving settings</string>
<string>Default</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLabel" name="labelMouseSensitivity">
<property name="text">
<string>Mouse sensitivity:</string>
</property>
</widget>
</item>
@@ -107,31 +93,14 @@
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QCheckBox" name="openDirUsrPath">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Select media images from program working directory</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="pushButtonLanguage">
<property name="text">
<string>Default</string>
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item row="5" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -141,58 +110,106 @@
</property>
</spacer>
</item>
<item row="9" column="0">
<item row="5" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Default</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="openDirUsrPath">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Select media images from program working directory</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxMultimediaKeys">
<property name="text">
<string>Inhibit multimedia keys</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxConfirmSave">
<property name="text">
<string>Ask for confirmation before saving settings</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxConfirmExit">
<property name="text">
<string>Ask for confirmation before quitting</string>
</property>
</widget>
</item>
<item row="14" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
</property>
</widget>
</item>
<item row="10" column="0">
<item row="10" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxConfirmHardReset">
<property name="text">
<string>Ask for confirmation before hard resetting</string>
</property>
</widget>
</item>
<item row="13" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Color scheme</string>
<item row="11" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Color scheme</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="radioButtonSystem">
<property name="text">
<string>System</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonLight">
<property name="text">
<string>Light</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonDark">
<property name="text">
<string>Dark</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="12" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="radioButtonSystem">
<property name="text">
<string>System</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonLight">
<property name="text">
<string>Light</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonDark">
<property name="text">
<string>Dark</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>

View File

@@ -220,10 +220,12 @@ RendererCommon::eventDelegate(QEvent *event, bool &result)
case QEvent::MouseButtonPress:
case QEvent::MouseMove:
case QEvent::MouseButtonRelease:
#ifdef TOUCH_PR
case QEvent::TouchBegin:
case QEvent::TouchEnd:
case QEvent::TouchCancel:
case QEvent::TouchUpdate:
#endif
case QEvent::Wheel:
case QEvent::Enter:
case QEvent::Leave:

View File

@@ -35,7 +35,9 @@
#include <QScreen>
#include <QMessageBox>
#ifdef TOUCH_PR
#include <QTouchEvent>
#endif
#include <QStringBuilder>
#include <QPainter>
@@ -91,7 +93,9 @@ RendererStack::RendererStack(QWidget *parent, int monitor_index)
, ui(new Ui::RendererStack)
{
boxLayout->setContentsMargins(0, 0, 0, 0);
#ifdef TOUCH_PR
setAttribute(Qt::WA_AcceptTouchEvents, true);
#endif
#ifdef Q_OS_WINDOWS
setAttribute(Qt::WA_NativeWindow, true);
(void)winId();
@@ -520,12 +524,22 @@ RendererStack::event(QEvent* event)
if (m_monitor_index >= 1) {
if (mouse_input_mode >= 1) {
#ifdef TOUCH_PR
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
mouse_x_abs = (mouse_event->position().x()) / (double)width();
mouse_y_abs = (mouse_event->position().y()) / (double)height();
#else
mouse_x_abs = (mouse_event->localPos().x()) / (double)width();
mouse_y_abs = (mouse_event->localPos().y()) / (double)height();
#endif
#else
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
mouse_x_abs = (mouse_event->position().x()) / (long double)width();
mouse_y_abs = (mouse_event->position().y()) / (long double)height();
#else
mouse_x_abs = (mouse_event->localPos().x()) / (long double)width();
mouse_y_abs = (mouse_event->localPos().y()) / (long double)height();
#endif
#endif
if (!mouse_tablet_in_proximity)
mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
@@ -544,6 +558,7 @@ RendererStack::event(QEvent* event)
return QWidget::event(event);
}
#ifdef TOUCH_PR
#ifdef Q_OS_WINDOWS
if (mouse_input_mode == 0) {
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
@@ -574,6 +589,39 @@ RendererStack::event(QEvent* event)
#else
mouse_x_abs = (mouse_event->localPos().x()) / (double)width();
mouse_y_abs = (mouse_event->localPos().y()) / (double)height();
#endif
#else
#ifdef Q_OS_WINDOWS
if (mouse_input_mode == 0) {
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
mouse_x_abs = (mouse_event->position().x()) / (long double)width();
mouse_y_abs = (mouse_event->position().y()) / (long double)height();
#else
mouse_x_abs = (mouse_event->localPos().x()) / (long double)width();
mouse_y_abs = (mouse_event->localPos().y()) / (long double)height();
#endif
mouse_x_abs -= rendererWindow->destinationF.left();
mouse_y_abs -= rendererWindow->destinationF.top();
if (mouse_x_abs < 0) mouse_x_abs = 0;
if (mouse_y_abs < 0) mouse_y_abs = 0;
mouse_x_abs /= rendererWindow->destinationF.width();
mouse_y_abs /= rendererWindow->destinationF.height();
if (mouse_x_abs > 1) mouse_x_abs = 1;
if (mouse_y_abs > 1) mouse_y_abs = 1;
return QWidget::event(event);
}
#endif
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
mouse_x_abs = (mouse_event->position().x()) / (long double)width();
mouse_y_abs = (mouse_event->position().y()) / (long double)height();
#else
mouse_x_abs = (mouse_event->localPos().x()) / (long double)width();
mouse_y_abs = (mouse_event->localPos().y()) / (long double)height();
#endif
#endif
mouse_x_abs -= rendererWindow->destinationF.left();
mouse_y_abs -= rendererWindow->destinationF.top();
@@ -587,6 +635,7 @@ RendererStack::event(QEvent* event)
if (mouse_x_abs > 1) mouse_x_abs = 1;
if (mouse_y_abs > 1) mouse_y_abs = 1;
mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
#ifdef TOUCH_PR
} else switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
@@ -685,6 +734,7 @@ RendererStack::event(QEvent* event)
default:
return QWidget::event(event);
#endif
}
return QWidget::event(event);

View File

@@ -46,7 +46,7 @@ SettingsDisplay::SettingsDisplay(QWidget *parent)
for (uint8_t i = 0; i < GFXCARD_MAX; i ++)
videoCard[i] = gfxcard[i];
ui->lineEdit->setFilter(tr("EDID") % util::DlgFilter({ "bin", "dat", "edid", "txt" }) % tr("All files") % util::DlgFilter({ "*" }, true));
ui->lineEditCustomEDID->setFilter(tr("EDID") % util::DlgFilter({ "bin", "dat", "edid", "txt" }) % tr("All files") % util::DlgFilter({ "*" }, true));
onCurrentMachineChanged(machine);
}
@@ -77,7 +77,7 @@ SettingsDisplay::save()
da2_standalone_enabled = ui->checkBoxDa2->isChecked() ? 1 : 0;
monitor_edid = ui->radioButtonCustom->isChecked() ? 1 : 0;
strncpy(monitor_edid_path, ui->lineEdit->fileName().toUtf8().data(), sizeof(monitor_edid_path) - 1);
strncpy(monitor_edid_path, ui->lineEditCustomEDID->fileName().toUtf8().data(), sizeof(monitor_edid_path) - 1);
}
void
@@ -135,8 +135,8 @@ SettingsDisplay::onCurrentMachineChanged(int machineId)
ui->radioButtonDefault->setChecked(monitor_edid == 0);
ui->radioButtonCustom->setChecked(monitor_edid == 1);
ui->lineEdit->setFileName(monitor_edid_path);
ui->lineEdit->setEnabled(monitor_edid == 1);
ui->lineEditCustomEDID->setFileName(monitor_edid_path);
ui->lineEditCustomEDID->setEnabled(monitor_edid == 1);
}
void
@@ -326,7 +326,7 @@ void SettingsDisplay::on_radioButtonDefault_clicked()
{
ui->radioButtonDefault->setChecked(true);
ui->radioButtonCustom->setChecked(false);
ui->lineEdit->setEnabled(false);
ui->lineEditCustomEDID->setEnabled(false);
}
@@ -334,7 +334,7 @@ void SettingsDisplay::on_radioButtonCustom_clicked()
{
ui->radioButtonDefault->setChecked(false);
ui->radioButtonCustom->setChecked(true);
ui->lineEdit->setEnabled(true);
ui->lineEditCustomEDID->setEnabled(true);
}
void SettingsDisplay::on_pushButtonExportDefault_clicked()

View File

@@ -26,27 +26,45 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxVoodoo">
<item row="0" column="0">
<widget class="QLabel" name="labelVideo">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Voodoo 1 or 2 Graphics</string>
<string>Video:</string>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QPushButton" name="pushButtonConfigureDa2">
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxVideo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButtonConfigureVideo">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QCheckBox" name="checkBox8514">
<property name="text">
<string>IBM 8514/A Graphics</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelVideoSecondary">
<property name="sizePolicy">
@@ -60,6 +78,47 @@
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxVideoSecondary">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="pushButtonConfigureVideoSecondary">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxVoodoo">
<property name="text">
<string>Voodoo 1 or 2 Graphics</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QPushButton" name="pushButtonConfigureVoodoo">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QCheckBox" name="checkBox8514">
<property name="text">
<string>IBM 8514/A Graphics</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QPushButton" name="pushButtonConfigure8514">
<property name="text">
@@ -67,6 +126,13 @@
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxXga">
<property name="text">
<string>XGA Graphics</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QPushButton" name="pushButtonConfigureXga">
<property name="text">
@@ -74,8 +140,22 @@
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxDa2">
<property name="text">
<string>IBM PS/55 Display Adapter Graphics</string>
</property>
</widget>
</item>
<item row="7" column="2">
<widget class="QPushButton" name="pushButtonConfigureDa2">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="8" column="0" colspan="3">
<widget class="QGroupBox" name="groupBox">
<widget class="QGroupBox" name="groupBoxEDID">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -85,9 +165,9 @@
<property name="title">
<string>Monitor EDID</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<layout class="QVBoxLayout" name="verticalLayoutGroupBoxEDID">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<layout class="QHBoxLayout" name="horizontalLayoutEDIDDefault">
<item>
<widget class="QRadioButton" name="radioButtonDefault">
<property name="text">
@@ -111,9 +191,9 @@
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<layout class="QHBoxLayout" name="horizontalLayoutEDIDCustom">
<property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetNoConstraint</enum>
<enum>QLayout::SetNoConstraint</enum>
</property>
<item>
<widget class="QRadioButton" name="radioButtonCustom">
@@ -123,7 +203,7 @@
</widget>
</item>
<item>
<widget class="FileField" name="lineEdit" native="true">
<widget class="FileField" name="lineEditCustomEDID" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -137,99 +217,6 @@
</layout>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxVideoSecondary">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item row="10" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="2">
<widget class="QPushButton" name="pushButtonConfigureVoodoo">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="pushButtonConfigureVideo">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="labelVideo">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Video:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="pushButtonConfigureVideoSecondary">
<property name="text">
<string>Configure</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxVideo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxXga">
<property name="text">
<string>XGA Graphics</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QCheckBox" name="checkBoxDa2">
<property name="text">
<string>IBM PS/55 Display Adapter Graphics</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="3">
<widget class="QWidget" name="widget" native="true">
<property name="sizePolicy">
@@ -240,6 +227,19 @@
</property>
</widget>
</item>
<item row="10" column="0" colspan="3">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<customwidgets>
@@ -250,6 +250,23 @@
<container>1</container>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>comboBoxVideo</tabstop>
<tabstop>pushButtonConfigureVideo</tabstop>
<tabstop>comboBoxVideoSecondary</tabstop>
<tabstop>pushButtonConfigureVideoSecondary</tabstop>
<tabstop>checkBoxVoodoo</tabstop>
<tabstop>pushButtonConfigureVoodoo</tabstop>
<tabstop>checkBox8514</tabstop>
<tabstop>pushButtonConfigure8514</tabstop>
<tabstop>checkBoxXga</tabstop>
<tabstop>pushButtonConfigureXga</tabstop>
<tabstop>checkBoxDa2</tabstop>
<tabstop>pushButtonConfigureDa2</tabstop>
<tabstop>radioButtonDefault</tabstop>
<tabstop>pushButtonExportDefault</tabstop>
<tabstop>radioButtonCustom</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@@ -335,7 +335,7 @@ SettingsInput::on_pushButtonConfigureMouse_clicked()
}
static int
get_axis(JoystickConfiguration &jc, int axis, uint8_t gameport_nr, int joystick_nr)
get_axis(JoystickConfiguration &jc, uint8_t gameport_nr, int joystick_nr, int axis)
{
int axis_sel = jc.selectedAxis(axis);
int nr_axes = plat_joystick_state[joystick_state[gameport_nr][joystick_nr].plat_joystick_nr - 1].nr_axes;
@@ -351,7 +351,7 @@ get_axis(JoystickConfiguration &jc, int axis, uint8_t gameport_nr, int joystick_
}
static int
get_pov(JoystickConfiguration &jc, int pov, uint8_t gameport_nr, int joystick_nr)
get_pov(JoystickConfiguration &jc, uint8_t gameport_nr, int joystick_nr, int pov)
{
int pov_sel = jc.selectedPov(pov);
int nr_povs = plat_joystick_state[joystick_state[gameport_nr][joystick_nr].plat_joystick_nr - 1].nr_povs * 2;
@@ -379,17 +379,15 @@ updateJoystickConfig(int type, uint8_t gameport_nr, int joystick_nr, QWidget *pa
joystick_state[gameport_nr][joystick_nr].plat_joystick_nr = jc.selectedDevice();
if (joystick_state[gameport_nr][joystick_nr].plat_joystick_nr) {
for (int axis_nr = 0; axis_nr < joystick_get_axis_count(type); axis_nr++) {
joystick_state[gameport_nr][joystick_nr].axis_mapping[axis_nr] = get_axis(jc, axis_nr, gameport_nr, joystick_nr);
}
for (int axis_nr = 0; axis_nr < joystick_get_axis_count(type); axis_nr++)
joystick_state[gameport_nr][joystick_nr].axis_mapping[axis_nr] = get_axis(jc, gameport_nr, joystick_nr, axis_nr);
for (int button_nr = 0; button_nr < joystick_get_button_count(type); button_nr++) {
for (int button_nr = 0; button_nr < joystick_get_button_count(type); button_nr++)
joystick_state[gameport_nr][joystick_nr].button_mapping[button_nr] = jc.selectedButton(button_nr);
}
for (int pov_nr = 0; pov_nr < joystick_get_pov_count(type) * 2; pov_nr += 2) {
joystick_state[gameport_nr][joystick_nr].pov_mapping[pov_nr][0] = get_pov(jc, pov_nr, gameport_nr, joystick_nr);
joystick_state[gameport_nr][joystick_nr].pov_mapping[pov_nr][1] = get_pov(jc, pov_nr + 1, gameport_nr, joystick_nr);
for (int pov_nr = 0; pov_nr < joystick_get_pov_count(type); pov_nr++) {
joystick_state[gameport_nr][joystick_nr].pov_mapping[pov_nr][0] = get_pov(jc, gameport_nr, joystick_nr, pov_nr * 2); // X Axis
joystick_state[gameport_nr][joystick_nr].pov_mapping[pov_nr][1] = get_pov(jc, gameport_nr, joystick_nr, pov_nr * 2 + 1); // Y Axis
}
}
}

View File

@@ -41,144 +41,18 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<item row="0" column="0">
<widget class="QLabel" name="labelSearch">
<property name="text">
<string>Machine:</string>
<string>Search:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>CPU type:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="spinBoxRAM">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Memory:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="comboBoxCPU">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_7">
<property name="text">
<string>Frequency:</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxSpeed">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="1">
<widget class="QWidget" name="widget_4" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="comboBoxWaitStates">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_8">
<property name="text">
<string>PIT mode:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxPitMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
</layout>
</widget>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEditSearch"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<widget class="QLabel" name="labelMachineType">
<property name="text">
<string>Machine type:</string>
</property>
@@ -191,17 +65,10 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QComboBox" name="comboBoxFPU">
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_5">
<item row="2" column="0">
<widget class="QLabel" name="labelMachine">
<property name="text">
<string>Wait states:</string>
<string>Machine:</string>
</property>
</widget>
</item>
@@ -243,22 +110,155 @@
</layout>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelCPU">
<property name="text">
<string>CPU type:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="comboBoxCPU">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelSpeed">
<property name="text">
<string>Frequency:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxSpeed">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<widget class="QLabel" name="labelFPU">
<property name="text">
<string>FPU:</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Search:</string>
<item row="4" column="1">
<widget class="QComboBox" name="comboBoxFPU">
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEditSearch"/>
<item row="5" column="0">
<widget class="QLabel" name="labelWaitStates">
<property name="text">
<string>Wait states:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QWidget" name="widget_4" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QComboBox" name="comboBoxWaitStates">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labelPITMode">
<property name="text">
<string>PIT mode:</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="comboBoxPitMode">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="labelMemory">
<property name="text">
<string>Memory:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QSpinBox" name="spinBoxRAM">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>
@@ -312,7 +312,7 @@
<item>
<spacer name="softFloatHorizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -325,92 +325,116 @@
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>CPU frame size</string>
</property>
<property name="alignment">
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QRadioButton" name="radioButtonLargerFrames">
<property name="text">
<string>Larger frames (less smooth)</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonSmallerFrames">
<property name="text">
<string>Smaller frames (smoother)</string>
</property>
</widget>
</item>
</layout>
</widget>
<layout class="QHBoxLayout" name="groupBoxesLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBoxTimeSync">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Time synchronization</string>
</property>
<layout class="QVBoxLayout" name="groupBoxTimeSyncLayout">
<item>
<widget class="QRadioButton" name="radioButtonDisabled">
<property name="text">
<string>Disabled</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonLocalTime">
<property name="text">
<string>Enabled (local time)</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonUTC">
<property name="text">
<string>Enabled (UTC)</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="timeSyncVerticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer">
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QGroupBox" name="groupBoxCPUFrameSize">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>CPU frame size</string>
</property>
<layout class="QVBoxLayout" name="groupBoxCPUFrameSizeLayout">
<item>
<widget class="QRadioButton" name="radioButtonLargerFrames">
<property name="text">
<string>Larger frames (less smooth)</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonSmallerFrames">
<property name="text">
<string>Smaller frames (smoother)</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="frameSizeVerticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="groupBoxesHorizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Time synchronization</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QRadioButton" name="radioButtonDisabled">
<property name="text">
<string>Disabled</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonLocalTime">
<property name="text">
<string>Enabled (local time)</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButtonUTC">
<property name="text">
<string>Enabled (UTC)</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="1">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -422,19 +446,6 @@
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<tabstops>

View File

@@ -15,10 +15,10 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetFixedSize</enum>
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<widget class="QLabel" name="label">
<widget class="QLabel" name="labelSystemDir">
<property name="text">
<string>System Directory:</string>
</property>
@@ -146,7 +146,7 @@
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
@@ -159,10 +159,10 @@
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>

View File

@@ -1812,7 +1812,7 @@ fdc37c93x_reset(void *priv)
memset(dev->gpio_pulldn, 0xff, 8);
/* Acer V62X requires bit 0 to be clear to not be stuck in "clear password" mode. */
if (machines[machine].init == machine_at_vectra54_init) {
if ((machines[machine].init == machine_at_vectra54_init) || (machines[machine].init == machine_at_vectra500mt_init)) {
dev->gpio_pulldn[1] = 0x40;
/*

View File

@@ -685,7 +685,7 @@ fdc37m60x_init(const device_t *info)
}
const device_t fdc37m60x_device = {
.name = "SMC FDC37C93x Super I/O",
.name = "SMC FDC37M60x Super I/O",
.internal_name = "fdc37m60x",
.flags = 0,
.local = 0,

View File

@@ -34,6 +34,7 @@
#include <86box/fdc.h>
#include <86box/keyboard.h>
#include <86box/sio.h>
#include <86box/random.h>
#include <86box/plat_fallthrough.h>
#include "cpu.h"
@@ -108,6 +109,10 @@ pc87307_gpio_write(uint16_t port, uint8_t val, void *priv)
CS, cpu_state.pc, port, bank, val);
dev->gpio[bank][port & 0x0007] = val;
if (bank == 0) {
machine_handle_gpio(1, ((dev->gpio[0][5] & dev->gpio[0][4]) << 8) | (dev->gpio[0][0] & dev->gpio[0][1]));
}
}
uint8_t
@@ -118,18 +123,18 @@ pc87307_gpio_read(uint16_t port, void *priv)
uint8_t bank = !!(dev->regs[0x22] & 0x80);
uint8_t ret = dev->gpio[bank][port & 0x0007];
switch (port & 0x0003) {
switch (port & 0x0007) {
case 0x0000:
if (bank == 0) {
uint8_t mask = dev->gpio[0][1];
pins = 0x7f;
pins = machine_handle_gpio(0, 0xFFFF) & 0xFF;
ret = (ret & mask) | (pins & ~mask);
}
break;
case 0x0004:
if (bank == 0) {
uint8_t mask = dev->gpio[0][5];
pins = 0xfb;
pins = (machine_handle_gpio(0, 0xFFFF) >> 8) & 0xFF;
ret = (ret & mask) | (pins & ~mask);
} else
ret = 0xff;
@@ -152,13 +157,13 @@ static void
pc87307_gpio_remove(pc87307_t *dev)
{
if (dev->gpio_base != 0xffff) {
io_removehandler(dev->gpio_base, 0x0002,
io_removehandler(dev->gpio_base, 0x0008,
pc87307_gpio_read, NULL, NULL, pc87307_gpio_write, NULL, NULL, dev);
dev->gpio_base = 0xffff;
}
if (dev->gpio_base2 != 0xffff) {
io_removehandler(dev->gpio_base2, 0x0002,
io_removehandler(dev->gpio_base2, 0x0008,
pc87307_gpio_read, NULL, NULL, pc87307_gpio_write, NULL, NULL, dev);
dev->gpio_base2 = 0xffff;
}
@@ -171,7 +176,7 @@ pc87307_gpio_init(pc87307_t *dev, int bank, uint16_t addr)
*bank_base = addr;
io_sethandler(*bank_base, 0x0002,
io_sethandler(*bank_base, 0x0008,
pc87307_gpio_read, NULL, NULL, pc87307_gpio_write, NULL, NULL, dev);
}

View File

@@ -1330,7 +1330,7 @@ w83977_init(const device_t *info)
}
const device_t w83977_device = {
.name = "SMC FDC37C93x Super I/O",
.name = "Winbond W83977F/TF/EF Super I/O",
.internal_name = "w83977",
.flags = 0,
.local = 0,

View File

@@ -344,7 +344,7 @@ ad1848_write(uint16_t addr, uint8_t val, void *priv)
case 12:
if (ad1848->type >= AD1848_TYPE_CS4248) {
ad1848->regs[12] = 0x80 | (val & 0x70) | (ad1848->regs[12] & 0x0f);
ad1848->regs[12] = 0x80 | (val & 0x60) | (ad1848->regs[12] & 0x0f);
if ((ad1848->type >= AD1848_TYPE_CS4231) && (ad1848->type < AD1848_TYPE_CS4235)) {
if (val & 0x40)
ad1848->fmt_mask |= 0x80;
@@ -425,6 +425,19 @@ ad1848_write(uint16_t addr, uint8_t val, void *priv)
ad1848->fm_vol_r = (int) ad1848_vols_5bits_aux_gain[val & 0x1f];
}
}
if ((ad1848->type >= AD1848_TYPE_CS4232) && (ad1848->type <= AD1848_TYPE_CS4236)) {
if (ad1848->index == 18) {
if (val & 0x80)
ad1848->fm_vol_l = 0;
else
ad1848->fm_vol_l = (int) ad1848_vols_5bits_aux_gain[val & 0x1f];
} else {
if (val & 0x80)
ad1848->fm_vol_r = 0;
else
ad1848->fm_vol_r = (int) ad1848_vols_5bits_aux_gain[val & 0x1f];
}
}
break;
case 20 ... 21:
@@ -508,6 +521,8 @@ readonly_x:
}
if (ad1848->type == AD1848_TYPE_CS4231) /* I23 is reserved and read-only on CS4231 non-A */
goto readonly_i;
if ((ad1848->type >= AD1848_TYPE_CS4232) || (ad1848->type <= AD1848_TYPE_CS4236)) /* I23 bits 7-1 are read-only on CS4231A/4232/4236 non-B, Win2k relies on this for detection */
val = (val & 0x01);
break;
case 24:

View File

@@ -1040,10 +1040,20 @@ azt2316a_enable_wss(uint8_t enable, void *priv)
{
azt2316a_t *azt2316a = (azt2316a_t *) priv;
if (enable)
sound_set_cd_audio_filter(NULL, NULL);
if (enable) {
azt2316a->cur_mode = 1;
else
sound_set_cd_audio_filter(ad1848_filter_cd_audio, &azt2316a->ad1848);
azt2316a->sb->opl_mixer = azt2316a;
azt2316a->sb->opl_mix = azt1605_filter_opl;
}
else {
azt2316a->cur_mode = 0;
sound_set_cd_audio_filter(sbpro_filter_cd_audio, azt2316a->sb);
azt2316a->sb->opl_mixer = NULL;
azt2316a->sb->opl_mix = NULL;
}
}
static void

View File

@@ -568,7 +568,11 @@ cs423x_ctxswitch_write(uint16_t addr, UNUSED(uint8_t val), void *priv)
{
cs423x_t *dev = (cs423x_t *) priv;
uint8_t ctx = (dev->regs[7] & 0x80);
uint8_t enable_opl = (dev->ad1848.xregs[4] & 0x10) && !(dev->indirect_regs[2] & 0x85);
uint8_t enable_opl = (dev->ad1848.xregs[4] & 0x10) && !(dev->indirect_regs[2] & 0x85); /* CS4236B+ */
/* CS4232/4236 (non-B) doesn't have an IFM bit, always enable the OPL on these chips */
if (dev->type <= CRYSTAL_CS4236)
enable_opl = 1;
/* Check if a context switch (WSS=1 <-> SBPro=0) occurred through the address being written. */
if ((dev->regs[7] & 0x80) ? ((addr & 0xfff0) == dev->sb_base) : ((addr & 0xfffc) == dev->wss_base)) {
@@ -1005,6 +1009,7 @@ cs423x_init(const device_t *info)
/* Initialize SBPro codec. The WSS codec is initialized later by cs423x_reset */
dev->sb = device_add_inst(&sb_pro_compat_device, 1);
sound_set_cd_audio_filter(sbpro_filter_cd_audio, dev->sb); /* CD audio filter for the default context */
music_add_handler(sb_get_music_buffer_sbpro, dev->sb); /* Init the SBPro OPL3 since sb_pro_compat_init does not */
/* Initialize RAM, registers and WSS codec. */
cs423x_reset(dev);

View File

@@ -22,7 +22,9 @@
#include <stdint.h>
#include <stdlib.h>
#define __USE_LARGEFILE64
#ifndef __USE_LARGEFILE64
#define __USE_LARGEFILE64 1
#endif
#include <sys/types.h>
#if (defined(__HAIKU__) || defined(__unix__) || defined(__APPLE__)) && !defined(__linux__)

View File

@@ -290,7 +290,7 @@ ics2494_init(const device_t *info)
ics2494->freq[15] = 65000000.0;
break;
case 305:
/* ICS2494A(N)-205 for S3 86C924 */
/* ICS2494A(N)-305 for S3 86C924 */
ics2494->freq[0x0] = 25175000.0;
ics2494->freq[0x1] = 28322000.0;
ics2494->freq[0x2] = 40000000.0;
@@ -308,6 +308,25 @@ ics2494_init(const device_t *info)
ics2494->freq[0xe] = 75000000.0;
ics2494->freq[0xf] = 94500000.0;
break;
case 324:
/* ICS2494A(N)-324 for Tseng ET4000/W32 series */
ics2494->freq[0x0] = 50000000.0;
ics2494->freq[0x1] = 56644000.0;
ics2494->freq[0x2] = 65000000.0;
ics2494->freq[0x3] = 72000000.0;
ics2494->freq[0x4] = 80000000.0;
ics2494->freq[0x5] = 89800000.0;
ics2494->freq[0x6] = 63000000.0;
ics2494->freq[0x7] = 75000000.0;
ics2494->freq[0x8] = 83078000.0;
ics2494->freq[0x9] = 93463000.0;
ics2494->freq[0xa] = 100000000.0;
ics2494->freq[0xb] = 104000000.0;
ics2494->freq[0xc] = 108000000.0;
ics2494->freq[0xd] = 120000000.0;
ics2494->freq[0xe] = 130000000.0;
ics2494->freq[0xf] = 134700000.0;
break;
default:
break;
@@ -339,6 +358,20 @@ const device_t ics2494an_305_device = {
.config = NULL
};
const device_t ics2494an_324_device = {
.name = "ICS2494AN-324 Clock Generator",
.internal_name = "ics2494an_324",
.flags = 0,
.local = 324,
.init = ics2494_init,
.close = ics2494_close,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = NULL
};
const device_t ati18810_28800_device = {
.name = "ATI 18810 (ATI 28800) Clock Generator",
.internal_name = "ati18810_28800",

View File

@@ -42,12 +42,6 @@ att49x_ramdac_control(uint8_t val, void *priv, svga_t *svga)
att49x_ramdac_t *ramdac = (att49x_ramdac_t *) priv;
ramdac->ctrl = val;
switch ((ramdac->ctrl >> 5) & 7) {
case 0:
case 1:
case 2:
case 3:
svga->bpp = 8;
break;
case 4:
case 5:
svga->bpp = 15;
@@ -60,10 +54,12 @@ att49x_ramdac_control(uint8_t val, void *priv, svga_t *svga)
break;
default:
svga->bpp = 8;
break;
}
if (ramdac->type == ATT_490 || ramdac->type == ATT_491)
svga_set_ramdac_type(svga, (val & 2) ? RAMDAC_8BIT : RAMDAC_6BIT);
svga_recalctimings(svga);
}

View File

@@ -45,7 +45,7 @@ att498_ramdac_control(uint8_t val, void *priv, svga_t *svga)
svga->bpp = 8;
break;
case 1:
if (ramdac->ctrl & 4)
if (ramdac->ctrl & 0x04)
svga->bpp = 15;
else
svga->bpp = 8;
@@ -63,7 +63,7 @@ att498_ramdac_control(uint8_t val, void *priv, svga_t *svga)
break;
}
svga_set_ramdac_type(svga, (ramdac->ctrl & 2) ? RAMDAC_8BIT : RAMDAC_6BIT);
svga_set_ramdac_type(svga, (ramdac->ctrl & 0x02) ? RAMDAC_8BIT : RAMDAC_6BIT);
svga_recalctimings(svga);
}
@@ -132,7 +132,7 @@ att498_ramdac_in(uint16_t addr, int rs2, void *priv, svga_t *svga)
ramdac->state++;
break;
case 6:
temp = ramdac->ctrl;
temp = 0x98;
ramdac->state = 0;
break;
default:

View File

@@ -366,15 +366,14 @@ bt48x_recalctimings(void *priv, svga_t *svga)
svga->clock_multiplier = 0;
svga->multiplexing_rate = 0;
svga->true_color_bypass = 0;
if (ramdac->cmd_r3 & 0x08) { /* x2 clock multiplier */
//pclog("2x multiplier.\n");
if (ramdac->cmd_r3 & 0x08) /* x2 clock multiplier */
svga->clock_multiplier = 1;
}
svga->multiplexing_rate = (ramdac->cmd_r1 & 0x60) >> 5;
if (svga->bpp >= 15)
svga->true_color_bypass = !!(ramdac->cmd_r1 & 0x10);
//pclog("CR0=%02x, CR1=%02x, CR2=%02x.\n", ramdac->cmd_r0, ramdac->cmd_r1, ramdac->cmd_r2);
pclog("CR0=%02x, CR1=%02x, CR2=%02x.\n", ramdac->cmd_r0, ramdac->cmd_r1, ramdac->cmd_r2);
}
void

View File

@@ -60,6 +60,7 @@ typedef union ibm_rgb528_pixel32_t {
} ibm_rgb528_pixel32_t;
typedef struct ibm_rgb528_ramdac_t {
int type;
PALETTE extpal;
uint32_t extpallook[256];
uint8_t indexed_data[2048];
@@ -627,19 +628,21 @@ ibm_rgb528_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *priv, svga_t *s
case 0x02a:
case 0x02c:
case 0x02e:
if (ramdac->indexed_data[0x0002] & 0x01) {
switch (ramdac->indexed_data[0x0010] & 0x07) {
case 0x00:
case 0x02:
ramdac->pix_f[ramdac->index - 0x0020] = val;
break;
case 0x01:
case 0x03:
ramdac->pix_m[(ramdac->index - 0x0020) >> 1] = val;
break;
default:
break;
}
switch (ramdac->indexed_data[0x0010] & 0x03) {
case 0x00:
ramdac->pix_f[(ramdac->index - 0x0020)] = val;
break;
case 0x01:
ramdac->pix_m[(ramdac->index - 0x0020) >> 1] = val;
break;
case 0x02:
ramdac->pix_f[(ramdac->index - 0x0020)] = val;
break;
case 0x03:
ramdac->pix_m[(ramdac->index - 0x0020) >> 1] = val;
break;
default:
break;
}
break;
case 0x021:
@@ -650,19 +653,21 @@ ibm_rgb528_ramdac_out(uint16_t addr, int rs2, uint8_t val, void *priv, svga_t *s
case 0x02b:
case 0x02d:
case 0x02f:
if (ramdac->indexed_data[0x0002] & 0x01) {
switch (ramdac->indexed_data[0x010] & 0x07) {
case 0x00:
case 0x02:
ramdac->pix_f[ramdac->index - 0x0020] = val;
break;
case 0x01:
case 0x03:
ramdac->pix_n[(ramdac->index - 0x0020) >> 1] = val;
break;
default:
break;
}
switch (ramdac->indexed_data[0x0010] & 0x03) {
case 0x00:
ramdac->pix_f[(ramdac->index - 0x0020)] = val;
break;
case 0x01:
ramdac->pix_n[(ramdac->index - 0x0020) >> 1] = val;
break;
case 0x02:
ramdac->pix_f[(ramdac->index - 0x0020)] = val;
break;
case 0x03:
ramdac->pix_n[(ramdac->index - 0x0020) >> 1] = val;
break;
default:
break;
}
break;
@@ -868,7 +873,52 @@ ibm_rgb528_recalctimings(void *priv, svga_t *svga)
{
const ibm_rgb528_ramdac_t *ramdac = (ibm_rgb528_ramdac_t *) priv;
svga->interlace = ramdac->indexed_data[0x071] & 0x20;
svga->interlace = !!(ramdac->indexed_data[0x071] & 0x20);
//pclog("MiscClockControl idx002=%02x, SystemClockControl idx008=%02x, Misc2 idx071=%02x, Misc1 idx070=%02x, Misc4 idx073=%02x.\n",
// ramdac->indexed_data[0x002], ramdac->indexed_data[0x008], ramdac->indexed_data[0x071], ramdac->indexed_data[0x070], ramdac->indexed_data[0x073]);
if (ramdac->indexed_data[0x071] & 0x01) {
if ((ramdac->indexed_data[0x070] & 0x03) == 0x03) {
switch ((ramdac->indexed_data[0x002] & 0x0e) >> 1) {
case 0x00:
default:
svga->clock_multiplier = 0;
break;
case 0x01:
svga->clock_multiplier = 1;
break;
case 0x02:
svga->clock_multiplier = 2;
break;
case 0x03:
svga->clock_multiplier = 3;
break;
case 0x04:
svga->clock_multiplier = 4;
break;
}
} else if ((ramdac->indexed_data[0x070] & 0x03) == 0x01) {
switch ((ramdac->indexed_data[0x002] & 0x0e) >> 1) {
case 0x00:
default:
svga->clock_multiplier = 1;
svga->clock *= 2.0;
break;
case 0x01:
svga->clock_multiplier = 1;
break;
case 0x02:
svga->clock_multiplier = 2;
break;
case 0x03:
svga->clock_multiplier = 3;
break;
case 0x04:
svga->clock_multiplier = 4;
break;
}
}
}
if (svga->scrblank || !svga->attr_palette_enable) {
if ((svga->gdcreg[6] & 1) || (svga->attrregs[0x10] & 1)) {
@@ -904,49 +954,47 @@ ibm_rgb528_recalctimings(void *priv, svga_t *svga)
float
ibm_rgb528_getclock(int clock, void *priv)
{
const ibm_rgb528_ramdac_t *ramdac = (ibm_rgb528_ramdac_t *) priv;
int pll_vco_div_cnt;
int pll_df;
int pll_ref_div_cnt;
int ddot_divs[8] = { 1, 2, 4, 8, 16, 1, 1, 1 };
int ddot_div = ddot_divs[(ramdac->indexed_data[0x0002] >> 1) & 0x07];
float f_pll;
const ibm_rgb528_ramdac_t *ramdac = (ibm_rgb528_ramdac_t *) priv;
int pll_vco_div_cnt;
int pll_df;
int pll_ref_div_cnt;
int ddot_divs[8] = { 1, 2, 4, 8, 16, 1, 1, 1 };
int ddot_div = ddot_divs[(ramdac->indexed_data[0x0002] >> 1) & 0x07];
float f_pll;
clock &= 0x03;
if (clock == 0)
return 25175000.0f;
if (clock == 1)
return 28322000.0f;
if (ramdac->indexed_data[0x0002] & 0x01) {
switch (ramdac->indexed_data[0x0010] & 0x07) {
case 0x00:
default:
pll_vco_div_cnt = ramdac->pix_f[clock] & 0x3f;
pll_df = 8 >> (ramdac->pix_f[clock] >> 6);
pll_ref_div_cnt = ramdac->pix_f_ref_div & 0x1f;
break;
case 0x01:
pll_vco_div_cnt = ramdac->pix_m[clock] & 0x3f;
pll_df = 8 >> (ramdac->pix_m[clock] >> 6);
pll_ref_div_cnt = ramdac->pix_n[clock] & 0x1f;
break;
case 0x02:
pll_vco_div_cnt = ramdac->pix_f[ramdac->indexed_data[0x0011] & 0x0f] & 0x3f;
pll_df = 8 >> (ramdac->pix_f[ramdac->indexed_data[0x0011] & 0x0f] >> 6);
pll_ref_div_cnt = ramdac->pix_f_ref_div & 0x1f;
break;
case 0x03:
pll_vco_div_cnt = ramdac->pix_m[ramdac->indexed_data[0x0011] & 0x07] & 0x3f;
pll_df = 8 >> (ramdac->pix_m[ramdac->indexed_data[0x0011] & 0x07] >> 6);
pll_ref_div_cnt = ramdac->pix_n[ramdac->indexed_data[0x0011] & 0x07] & 0x1f;
break;
}
} else {
pll_vco_div_cnt = ramdac->indexed_data[0x0016] & 0x3f;
pll_df = 8 >> (ramdac->indexed_data[0x0016] >> 6);
pll_ref_div_cnt = ramdac->indexed_data[0x0015] & 0x1f;
switch (ramdac->indexed_data[0x0010] & 0x03) {
case 0x00:
default:
pll_vco_div_cnt = ramdac->pix_f[clock & 0x03] & 0x3f;
pll_df = 8 >> (ramdac->pix_f[clock & 0x03] >> 6);
pll_ref_div_cnt = ramdac->pix_f_ref_div & 0x1f;
break;
case 0x01:
pll_vco_div_cnt = ramdac->pix_m[clock & 0x03] & 0x3f;
pll_df = 8 >> (ramdac->pix_m[clock & 0x03] >> 6);
pll_ref_div_cnt = ramdac->pix_n[clock & 0x03] & 0x1f;
break;
case 0x02:
pll_vco_div_cnt = ramdac->pix_f[ramdac->indexed_data[0x0011] & 0x0f] & 0x3f;
pll_df = 8 >> (ramdac->pix_f[ramdac->indexed_data[0x0011] & 0x0f] >> 6);
pll_ref_div_cnt = ramdac->pix_f_ref_div & 0x1f;
break;
case 0x03:
pll_vco_div_cnt = ramdac->pix_m[ramdac->indexed_data[0x0011] & 0x0f] & 0x3f;
pll_df = 8 >> (ramdac->pix_m[ramdac->indexed_data[0x0011] & 0x0f] >> 6);
pll_ref_div_cnt = ramdac->pix_n[ramdac->indexed_data[0x0011] & 0x0f] & 0x1f;
break;
}
f_pll = ramdac->ref_clock * (float) (pll_vco_div_cnt + 65) / (float) (pll_ref_div_cnt * pll_df);
f_pll /= (float) ddot_div;
//pclog("PIXCTRL1=%02x, clock=%d, m=%d, df=%d, n=%d, ctrl2=%02x, miscclock=%02x, sysclock=%02x, f_pll=%f.\n",
// ramdac->indexed_data[0x010], clock, pll_vco_div_cnt, pll_df, pll_ref_div_cnt, ramdac->indexed_data[0x011], ramdac->indexed_data[0x002], ramdac->indexed_data[0x008], f_pll);
return f_pll;
}
@@ -1073,19 +1121,11 @@ ibm_rgb528_ramdac_init(UNUSED(const device_t *info))
ramdac->smlc_part = 0x0100;
ramdac->ref_clock = 14318184.0f;
ramdac->pix_f_ref_div = 0x07; /*Per datasheet regarding the reference clock value.*/
ramdac->indexed_data[0x0008] = 0x0001;
ramdac->indexed_data[0x0014] = 0x0005;
ramdac->indexed_data[0x0015] = 0x0008;
ramdac->indexed_data[0x0016] = 0x0041;
ramdac->indexed_data[0x0020] = 0x0005;
ramdac->indexed_data[0x0021] = 0x000e;
ramdac->pix_f_ref_div = 0x0005;
ramdac->pix_f[0] = 0x0005;
ramdac->pix_f[1] = 0x000e;
ramdac->pix_m[0] = 0x0005;
ramdac->pix_n[0] = 0x000e;
return ramdac;
}

View File

@@ -49,6 +49,7 @@ typedef struct sdac_ramdac_t {
int rs2;
uint8_t type;
uint8_t command;
float ref_clock;
} sdac_ramdac_t;
static void
@@ -275,11 +276,21 @@ sdac_getclock(int clock, void *priv)
n1 = ((ramdac->regs[clock] >> 8) & 0x1f) + 2;
n2 = ((ramdac->regs[clock] >> 13) & 0x07);
n2 = (1 << n2);
t = (14318184.0f * (float) m) / (float) (n1 * n2);
t = (ramdac->ref_clock * (float) m) / (float) (n1 * n2);
//pclog("SDACClock=%d, regs val=%04x.\n", clock, ramdac->regs[clock]);
return t;
}
void
sdac_set_ref_clock(void *priv, float ref_clock)
{
sdac_ramdac_t *ramdac = (sdac_ramdac_t *) priv;
if (ramdac != NULL)
ramdac->ref_clock = ref_clock;
}
void *
sdac_ramdac_init(const device_t *info)
{
@@ -288,6 +299,7 @@ sdac_ramdac_init(const device_t *info)
ramdac->type = info->local;
ramdac->ref_clock = 14318184.0f;
ramdac->regs[0] = 0x6128;
ramdac->regs[1] = 0x623d;

View File

@@ -31,6 +31,7 @@ typedef struct stg_ramdac_t {
int magic_count, index;
uint8_t regs[256];
uint8_t command;
int type;
} stg_ramdac_t;
static int stg_state_read[2][8] = {
@@ -46,6 +47,8 @@ stg_ramdac_set_bpp(svga_t *svga, stg_ramdac_t *ramdac)
switch (ramdac->regs[3]) {
default:
case 0:
svga->bpp = 8;
break;
case 5:
case 7:
svga->bpp = 8;
@@ -176,7 +179,7 @@ stg_ramdac_in(uint16_t addr, void *priv, svga_t *svga)
temp = 0x44;
break;
case 1:
temp = 0x03;
temp = ramdac->type;
break;
case 7:
temp = 0x88;
@@ -216,22 +219,24 @@ stg_getclock(int clock, void *priv)
float t;
int m;
int n;
int n2;
const uint16_t *c;
int d;
int d2;
uint16_t c;
if (clock == 0)
return 25175000.0;
if (clock == 1)
return 28322000.0;
clock ^= 1; /*Clocks 2 and 3 seem to be reversed*/
c = (uint16_t *) &ramdac->regs[0x20 + (clock << 1)];
m = (*c & 0xff) + 2; /* B+2 */
n = ((*c >> 8) & 0x1f) + 2; /* N1+2 */
n2 = ((*c >> 13) & 0x07); /* D */
n2 = (1 << n2);
t = (14318184.0f * (float) m) / (float) (n * n2);
c = ramdac->regs[0x20 + (clock << 1)];
c |= (ramdac->regs[0x21 + (clock << 1)] << 8);
m = (c & 0xff) + 2; /* B+2 */
n = ((c >> 8) & 0x1f) + 2; /* N1+2 */
d = ((c >> 13) & 0x07); /* D */
d2 = (1 << d);
t = (14318184.0f * (float) m) / (float) (n * d2);
//pclog("RAMDAC vclk val=0x%02x, vclk v=%d low, D=%d, t=%f.\n", ramdac->regs[0x20 + (clock << 1)], clock, d2, t);
return t;
}
@@ -241,6 +246,8 @@ stg_ramdac_init(UNUSED(const device_t *info))
stg_ramdac_t *ramdac = (stg_ramdac_t *) malloc(sizeof(stg_ramdac_t));
memset(ramdac, 0, sizeof(stg_ramdac_t));
ramdac->type = info->local & 0xff;
return ramdac;
}
@@ -253,11 +260,25 @@ stg_ramdac_close(void *priv)
free(ramdac);
}
const device_t stg_ramdac_device = {
.name = "SGS-Thompson STG170x RAMDAC",
const device_t stg1702_ramdac_device = {
.name = "SGS-Thompson STG1702 RAMDAC",
.internal_name = "stg_ramdac",
.flags = 0,
.local = 0,
.local = 2,
.init = stg_ramdac_init,
.close = stg_ramdac_close,
.reset = NULL,
.available = NULL,
.speed_changed = NULL,
.force_redraw = NULL,
.config = NULL
};
const device_t stg1703_ramdac_device = {
.name = "SGS-Thompson STG1703 RAMDAC",
.internal_name = "stg_ramdac",
.flags = 0,
.local = 3,
.init = stg_ramdac_init,
.close = stg_ramdac_close,
.reset = NULL,

View File

@@ -9,7 +9,6 @@
* Emulation of the Texas Instruments TVP3026 true colour RAMDAC
* family.
*
* TODO: Clock and other parts.
*
* Authors: TheCollector1995,
*
@@ -49,6 +48,7 @@ typedef struct tvp3026_ramdac_t {
uint8_t mode;
uint8_t pll_addr;
uint8_t clock_sel;
uint8_t color_key_ctrl;
struct {
uint8_t m;
uint8_t n;
@@ -171,25 +171,24 @@ tvp3026_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *priv, svg
svga->dac_hwcursor.y = ramdac->hwc_y - svga->dac_hwcursor.cur_ysize;
svga->dac_hwcursor.ena = !!(val & 0x03);
ramdac->mode = val & 0x03;
//pclog("0x09: DACEna=%02x, MainEna=%02x.\n", svga->dac_hwcursor.ena, svga->hwcursor.ena);
}
break;
case 0x0a: /* Indexed Data (RS value = 1010) */
switch (ramdac->ind_idx) {
case 0x06: /* Indirect Cursor Control */
ramdac->ccr = val;
svga->dac_hwcursor.cur_xsize = svga->dac_hwcursor.cur_ysize = 64;
svga->dac_hwcursor.x = ramdac->hwc_x - svga->dac_hwcursor.cur_xsize;
svga->dac_hwcursor.y = ramdac->hwc_y - svga->dac_hwcursor.cur_ysize;
if (!(ramdac->ccr & 0x80)) {
svga->dac_hwcursor.cur_xsize = svga->dac_hwcursor.cur_ysize = 64;
svga->dac_hwcursor.x = ramdac->hwc_x - svga->dac_hwcursor.cur_xsize;
svga->dac_hwcursor.y = ramdac->hwc_y - svga->dac_hwcursor.cur_ysize;
svga->dac_hwcursor.ena = !!(val & 0x03);
ramdac->mode = val & 0x03;
} else {
svga->dac_hwcursor.cur_xsize = svga->dac_hwcursor.cur_ysize = 64;
svga->dac_hwcursor.x = ramdac->hwc_x - svga->dac_hwcursor.cur_xsize;
svga->dac_hwcursor.y = ramdac->hwc_y - svga->dac_hwcursor.cur_ysize;
svga->dac_hwcursor.ena = !!(ramdac->dcc & 0x03);
ramdac->mode = ramdac->dcc & 0x03;
}
//pclog("0x0a, indirect 0x06: DACEna=%02x, MainEna=%02x.\n", svga->dac_hwcursor.ena, svga->hwcursor.ena);
break;
case 0x0f: /* Latch Control */
ramdac->latch_cntl = val;
@@ -279,6 +278,9 @@ tvp3026_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *priv, svg
}
ramdac->pll_addr = ((ramdac->pll_addr + 0x10) & 0x30) | (ramdac->pll_addr & 0xcf);
break;
case 0x38: /* Color-Key Control */
ramdac->color_key_ctrl = val;
break;
case 0x39: /* MCLK/Loop Clock Control */
ramdac->mclk = val;
break;
@@ -470,6 +472,9 @@ tvp3026_ramdac_in(uint16_t addr, int rs2, int rs3, void *priv, svga_t *svga)
break;
}
break;
case 0x38: /* Color-Key Control */
temp = ramdac->color_key_ctrl;
break;
case 0x39: /* MCLK/Loop Clock Control */
temp = ramdac->mclk;
break;
@@ -516,11 +521,39 @@ tvp3026_recalctimings(void *priv, svga_t *svga)
svga->interlace = !!(ramdac->ccr & 0x40);
/* TODO: Figure out gamma correction for 15/16 bpp color. */
svga->lut_map = !!((svga->bpp >= 15 && (svga->bpp != 24)) && (ramdac->true_color & 0xf0) != 0x00);
svga->clock_multiplier = 0;
//pclog("RAMDAC CLOCKSEL=%02x, MCR=%02x, LoopMCLK=%02x, Latch=%02x.\n", ramdac->clock_sel, ramdac->mcr, ramdac->mclk, ramdac->latch_cntl);
if (!(ramdac->clock_sel & 0x70)) {
if (ramdac->mcr != 0x98) {
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
switch ((ramdac->clock_sel >> 4) & 7) {
case 0:
svga->clock_multiplier = 1;
break;
case 1:
svga->clock_multiplier = 2;
break;
case 2:
svga->clock_multiplier = 4;
break;
case 3:
svga->clock_multiplier = 8;
break;
case 4:
svga->clock_multiplier = 16;
break;
case 5:
svga->clock_multiplier = 32;
break;
case 6:
svga->clock_multiplier = 64;
break;
case 7:
default:
svga->clock_multiplier = 0;
break;
}
}
}
}

View File

@@ -547,6 +547,7 @@ mach64_recalctimings(svga_t *svga)
svga->rowcount = mach64->crtc_gen_cntl & 1;
svga->lut_map = (mach64->type >= MACH64_VT);
svga->rowoffset <<= 1;
svga->attrregs[0x13] &= ~0x0f;
if (mach64->type == MACH64_GX)
ati68860_ramdac_set_render(svga->ramdac, svga);
@@ -4897,7 +4898,7 @@ mach64_common_init(const device_t *info)
mach64_io_set(mach64);
if (info->flags & DEVICE_PCI)
pci_add_card(PCI_ADD_NORMAL, mach64_pci_read, mach64_pci_write, mach64, &mach64->pci_slot);
pci_add_card((info->local & (1 << 19)) ? PCI_ADD_VIDEO : PCI_ADD_NORMAL, mach64_pci_read, mach64_pci_write, mach64, &mach64->pci_slot);
mach64->pci_regs[PCI_REG_COMMAND] = 3;
mach64->pci_regs[0x30] = 0x00;
@@ -4989,7 +4990,8 @@ mach64ct_init(const device_t *info)
ati_eeprom_load(&mach64->eeprom, "mach64ct.nvr", 1);
rom_init(&mach64->bios_rom, BIOS_ROMCT_PATH, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
if (!(info->local & (1 << 19)))
rom_init(&mach64->bios_rom, BIOS_ROMCT_PATH, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
mem_mapping_disable(&mach64->bios_rom.mapping);

View File

@@ -1824,6 +1824,9 @@ gd54xx_recalctimings(svga_t *svga)
uint8_t clocksel;
uint8_t rdmask;
uint8_t linedbl = svga->dispend * 9 / 10 >= svga->hdisp;
uint8_t m = 0;
int d = 0;
int n = 0;
svga->hblankstart = svga->crtc[2];
@@ -1865,6 +1868,34 @@ gd54xx_recalctimings(svga_t *svga)
svga->interlace = 0;
}
clocksel = (svga->miscout >> 2) & 3;
if (!gd54xx->vclk_n[clocksel] || !gd54xx->vclk_d[clocksel])
svga->clock = (cpuclock * (float) (1ULL << 32)) /
((svga->miscout & 0xc) ? 28322000.0 : 25175000.0);
else {
n = gd54xx->vclk_n[clocksel] & 0x7f;
d = (gd54xx->vclk_d[clocksel] & 0x3e) >> 1;
m = gd54xx->vclk_d[clocksel] & 0x01 ? 2 : 1;
float freq = (14318184.0F * ((float) n / ((float) d * m)));
if (gd54xx_is_5422(svga)) {
switch (svga->seqregs[0x07] & (gd54xx_is_5434(svga) ? 0xe : 6)) {
case 2:
freq /= 2.0F;
break;
case 4:
if (!gd54xx_is_5434(svga))
freq /= 3.0F;
break;
default:
break;
}
}
svga->clock = (cpuclock * (double) (1ULL << 32)) / freq;
}
svga->bpp = 8;
svga->map8 = svga->pallook;
if (svga->seqregs[0x07] & CIRRUS_SR7_BPP_SVGA) {
if (linedbl)
@@ -1874,6 +1905,7 @@ gd54xx_recalctimings(svga_t *svga)
if ((svga->dispend == 512) && !svga->interlace && gd54xx_is_5434(svga)) {
svga->hdisp <<= 1;
svga->dots_per_clock <<= 1;
svga->clock *= 2.0;
}
}
} else if (svga->gdcreg[5] & 0x40)
@@ -1881,8 +1913,6 @@ gd54xx_recalctimings(svga_t *svga)
svga->memaddr_latch |= ((svga->crtc[0x1b] & 0x01) << 16) | ((svga->crtc[0x1b] & 0xc) << 15);
svga->bpp = 8;
if (gd54xx->ramdac.ctrl & 0x80) {
if (gd54xx->ramdac.ctrl & 0x40) {
if ((svga->crtc[0x27] >= CIRRUS_ID_CLGD5428) || (svga->crtc[0x27] == CIRRUS_ID_CLGD5426))
@@ -2023,33 +2053,6 @@ gd54xx_recalctimings(svga_t *svga)
}
}
clocksel = (svga->miscout >> 2) & 3;
if (!gd54xx->vclk_n[clocksel] || !gd54xx->vclk_d[clocksel])
svga->clock = (cpuclock * (float) (1ULL << 32)) /
((svga->miscout & 0xc) ? 28322000.0 : 25175000.0);
else {
int n = gd54xx->vclk_n[clocksel] & 0x7f;
int d = (gd54xx->vclk_d[clocksel] & 0x3e) >> 1;
uint8_t m = gd54xx->vclk_d[clocksel] & 0x01 ? 2 : 1;
float freq = (14318184.0F * ((float) n / ((float) d * m)));
if (gd54xx_is_5422(svga)) {
switch (svga->seqregs[0x07] & (gd54xx_is_5434(svga) ? 0xe : 6)) {
case 2:
freq /= 2.0F;
break;
case 4:
if (!gd54xx_is_5434(svga))
freq /= 3.0F;
break;
default:
break;
}
}
svga->clock = (cpuclock * (double) (1ULL << 32)) / freq;
}
svga->vram_display_mask = (svga->crtc[0x1b] & 2) ? gd54xx->vram_mask : 0x3ffff;
if (svga->crtc[0x27] >= CIRRUS_ID_CLGD5430)

View File

@@ -64,7 +64,7 @@ ddc_load_edid(char *path, uint8_t *buf, size_t size)
// Check the beginning of the file for the EDID header.
uint64_t header;
fread(&header, sizeof(header), 1, fp);
(void) !fread(&header, sizeof(header), 1, fp);
if (header == EDID_HEADER) {
// Binary format. Read as is

View File

@@ -639,6 +639,7 @@ static void
et4000_recalctimings(svga_t *svga)
{
const et4000_t *dev = (et4000_t *) svga->priv;
int clk_sel = ((svga->miscout >> 2) & 0x03) | ((svga->crtc[0x34] << 1) & 0x04)| ((svga->crtc[0x31] >> 3) & 0x08);
svga->memaddr_latch |= (svga->crtc[0x33] & 3) << 16;
@@ -665,26 +666,15 @@ et4000_recalctimings(svga_t *svga)
svga->dots_per_clock <<= 1;
}
switch (((svga->miscout >> 2) & 3) | ((svga->crtc[0x34] << 1) & 4)) {
case 0:
case 1:
break;
case 3:
svga->clock = (cpuclock * (double) (1ULL << 32)) / 40000000.0;
break;
case 5:
svga->clock = (cpuclock * (double) (1ULL << 32)) / 65000000.0;
break;
default:
svga->clock = (cpuclock * (double) (1ULL << 32)) / 36000000.0;
break;
}
svga->clock = (cpuclock * (double) (1ULL << 32)) / svga->getclock(clk_sel, svga->clock_gen);
if (clk_sel < 2)
svga->clock *= 2.0;
switch (svga->bpp) {
case 15:
case 16:
svga->hdisp /= 2;
svga->dots_per_clock /= 2;
svga->hdisp >>= 1;
svga->dots_per_clock >>= 1;
break;
case 24:
@@ -901,6 +891,9 @@ et4000_init(const device_t *info)
if (dev->type >= ET4000_TYPE_ISA)
dev->svga.ramdac = device_add(&sc1502x_ramdac_device);
dev->svga.clock_gen = device_add(&ics2494an_324_device);
dev->svga.getclock = ics2494_getclock;
if (dev->type == ET4000_TYPE_TC6058AF)
dev->svga.adv_flags |= FLAG_PRECISETIME;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1063,32 +1063,49 @@ s3_virge_updatemapping(virge_t *virge)
return;
}
switch (svga->gdcreg[6] & 0xc) { /*Banked framebuffer*/
case 0x0: /*128k at A0000*/
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x20000);
svga->banked_mask = 0xffff;
break;
case 0x4: /*64k at A0000*/
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x10000);
svga->banked_mask = 0xffff;
if (xga_active && (svga->xga != NULL)) {
xga->on = 0;
mem_mapping_set_handler(&svga->mapping, svga->read, svga->readw, svga->readl, svga->write, svga->writew, svga->writel);
}
break;
case 0x8: /*32k at B0000*/
mem_mapping_set_addr(&svga->mapping, 0xb0000, 0x08000);
svga->banked_mask = 0x7fff;
break;
case 0xC: /*32k at B8000*/
mem_mapping_set_addr(&svga->mapping, 0xb8000, 0x08000);
svga->banked_mask = 0x7fff;
break;
}
/*Banked framebuffer*/
if (svga->crtc[0x31] & 0x08) /*Enhanced mode mappings*/
{
/* Enhanced mode forces 64kb at 0xa0000*/
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x10000);
svga->banked_mask = 0xffff;
if (xga_active && (svga->xga != NULL)) {
xga->on = 0;
mem_mapping_set_handler(&svga->mapping, svga->read, svga->readw, svga->readl, svga->write, svga->writew, svga->writel);
}
} else
switch (svga->gdcreg[6] & 0xc) { /*VGA mapping*/
case 0x0: /*128k at A0000*/
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x20000);
svga->banked_mask = 0xffff;
break;
case 0x4: /*64k at A0000*/
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x10000);
svga->banked_mask = 0xffff;
if (xga_active && (svga->xga != NULL)) {
xga->on = 0;
mem_mapping_set_handler(&svga->mapping, svga->read, svga->readw, svga->readl, svga->write, svga->writew, svga->writel);
}
break;
case 0x8: /*32k at B0000*/
mem_mapping_set_addr(&svga->mapping, 0xb0000, 0x08000);
svga->banked_mask = 0x7fff;
break;
case 0xC: /*32k at B8000*/
mem_mapping_set_addr(&svga->mapping, 0xb8000, 0x08000);
svga->banked_mask = 0x7fff;
break;
default:
break;
}
virge->linear_base = (svga->crtc[0x5a] << 16) | (svga->crtc[0x59] << 24);
if ((svga->crtc[0x58] & 0x10) || (virge->advfunc_cntl & 0x10)) { /*Linear framebuffer*/
/*Linear framebuffer*/
mem_mapping_disable(&svga->mapping);
switch (svga->crtc[0x58] & 7) {
case 0: /*64k*/
virge->linear_size = 0x10000;
@@ -1110,11 +1127,19 @@ s3_virge_updatemapping(virge_t *virge)
break;
}
virge->linear_base &= ~(virge->linear_size - 1);
if (virge->linear_base == 0xa0000) {
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x10000);
//pclog("CR58 & 7=%x, base=%08x.\n", svga->crtc[0x58] & 7, virge->linear_base);
if ((virge->linear_base == 0xa0000) || (virge->linear_size == 0x10000)) {
mem_mapping_disable(&virge->linear_mapping);
} else
mem_mapping_set_addr(&virge->linear_mapping, virge->linear_base, virge->linear_size);
if (!(svga->crtc[0x53] & 0x10)) {
mem_mapping_set_addr(&svga->mapping, 0xa0000, 0x10000);
svga->banked_mask = 0xffff;
}
} else {
if (virge->linear_base)
mem_mapping_set_addr(&virge->linear_mapping, virge->linear_base, virge->linear_size);
else
mem_mapping_disable(&virge->linear_mapping);
}
svga->fb_only = 1;
} else {
mem_mapping_disable(&virge->linear_mapping);
@@ -1122,6 +1147,7 @@ s3_virge_updatemapping(virge_t *virge)
}
if ((svga->crtc[0x53] & 0x10) || (virge->advfunc_cntl & 0x20)) { /*Old MMIO*/
mem_mapping_disable(&svga->mapping);
if (svga->crtc[0x53] & 0x20)
mem_mapping_set_addr(&virge->mmio_mapping, 0xb8000, 0x8000);
else
@@ -1129,9 +1155,12 @@ s3_virge_updatemapping(virge_t *virge)
} else
mem_mapping_disable(&virge->mmio_mapping);
if (svga->crtc[0x53] & 0x08) /*New MMIO*/
mem_mapping_set_addr(&virge->new_mmio_mapping, virge->linear_base + 0x1000000, 0x10000);
else
if (svga->crtc[0x53] & 0x08) { /*New MMIO*/
if (virge->linear_base)
mem_mapping_set_addr(&virge->new_mmio_mapping, virge->linear_base + 0x1000000, 0x10000);
else
mem_mapping_disable(&virge->new_mmio_mapping);
} else
mem_mapping_disable(&virge->new_mmio_mapping);
}
@@ -1946,9 +1975,9 @@ s3_virge_mmio_write_l(uint32_t addr, uint32_t val, void *priv)
break;
case 0x8190:
virge->streams.sec_ctrl = val;
virge->streams.dda_horiz_accumulator = val & 0x7ff;
if (val & 0x800)
virge->streams.dda_horiz_accumulator |= ~0x7ff;
virge->streams.dda_horiz_accumulator = val & 0xfff;
if (val & 0x1000)
virge->streams.dda_horiz_accumulator |= ~0xfff;
virge->streams.sdif = (val >> 24) & 7;
break;
@@ -1961,9 +1990,9 @@ s3_virge_mmio_write_l(uint32_t addr, uint32_t val, void *priv)
if (val & 0x800)
virge->streams.k1_horiz_scale |= ~0x7ff;
virge->streams.k2_horiz_scale = (val >> 16) & 0x3ff;
if ((val >> 16) & 0x400)
virge->streams.k2_horiz_scale |= ~0x3ff;
virge->streams.k2_horiz_scale = (val >> 16) & 0x7ff;
if ((val >> 16) & 0x800)
virge->streams.k2_horiz_scale |= ~0x7ff;
svga_recalctimings(svga);
svga->fullchange = changeframecount;
@@ -2019,14 +2048,14 @@ s3_virge_mmio_write_l(uint32_t addr, uint32_t val, void *priv)
virge->streams.k1_vert_scale |= ~0x7ff;
break;
case 0x81e4:
virge->streams.k2_vert_scale = val & 0x3ff;
if (val & 0x400)
virge->streams.k2_vert_scale |= ~0x3ff;
virge->streams.k2_vert_scale = val & 0x7ff;
if (val & 0x800)
virge->streams.k2_vert_scale |= ~0x7ff;
break;
case 0x81e8:
virge->streams.dda_vert_accumulator = val & 0x7ff;
if (val & 0x800)
virge->streams.dda_vert_accumulator |= ~0x7ff;
virge->streams.dda_vert_accumulator = val & 0xfff;
if (val & 0x1000)
virge->streams.dda_vert_accumulator |= ~0xfff;
svga_recalctimings(svga);
svga->fullchange = changeframecount;
@@ -3124,7 +3153,7 @@ s3_virge_bitblt(virge_t *virge, int count, uint32_t cpu_dat)
case 0:
case CMD_SET_MS:
READ(src_addr, source);
if ((virge->s3d.cmd_set & CMD_SET_TP) && source == src_fg_clr)
if ((virge->s3d.cmd_set & CMD_SET_TP) && (source == src_fg_clr))
update = 0;
break;
case CMD_SET_IDS:
@@ -3150,7 +3179,7 @@ s3_virge_bitblt(virge_t *virge, int count, uint32_t cpu_dat)
count = 0;
}
}
if ((virge->s3d.cmd_set & CMD_SET_TP) && source == src_fg_clr)
if ((virge->s3d.cmd_set & CMD_SET_TP) && (source == src_fg_clr))
update = 0;
break;
case CMD_SET_IDS | CMD_SET_MS:
@@ -4829,7 +4858,7 @@ s3_virge_colorkey(virge_t* virge, uint32_t x, uint32_t y)
return true;
else if (!(virge->streams.chroma_ctrl & (1 << 28)))
return true;
comp_r = (virge->streams.chroma_ctrl >> 16) & 0xFF;
comp_g = (virge->streams.chroma_ctrl >> 8) & 0xFF;
comp_b = (virge->streams.chroma_ctrl) & 0xFF;
@@ -4853,7 +4882,7 @@ s3_virge_colorkey(virge_t* virge, uint32_t x, uint32_t y)
*/
uint8_t index = virge->streams.chroma_ctrl & 0xFF;
alpha_key = (virge->chip < S3_VIRGEGX2) ? (virge->streams.chroma_ctrl & (1 << 29)) : ((virge->streams.chroma_ctrl >> 29) & 3) == 1;
if (alpha_key) {
comp_r = comp_g = comp_b = index;
comp_r_h = comp_g_h = comp_b_h = index;
@@ -5188,6 +5217,7 @@ s3_virge_pci_write(UNUSED(int func), int addr, uint8_t val, void *priv)
svga->crtc[0x59] = (svga->crtc[0x59] & 0x01) | (val & 0xfe);
else
svga->crtc[0x59] = (svga->crtc[0x59] & 0x03) | (val & 0xfc);
s3_virge_updatemapping(virge);
return;

View File

@@ -134,8 +134,8 @@ video_cards[] = {
{ .device = &s3_phoenix_86c801_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &s3_spea_mirage_86c801_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &s3_winner1000_805_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32i_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32_machspeed_vga_gui_2400s_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32i_axis_microdevice_isa_device, .flags = VIDEO_FLAG_TYPE_NONE },
/* MCA */
{ .device = &mach32_mca_device, .flags = VIDEO_FLAG_TYPE_8514 },
{ .device = &gd5426_mca_device, .flags = VIDEO_FLAG_TYPE_NONE },
@@ -145,12 +145,13 @@ video_cards[] = {
/* VLB */
{ .device = &mach32_vlb_device, .flags = VIDEO_FLAG_TYPE_8514 },
{ .device = &mach64gx_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32i_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32_machspeed_vga_gui_2400s_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32i_hercules_dynamite_pro_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_videomagic_revb_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_revc_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_cardex_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_noncardex_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_cardex_revc_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_generic_revd_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_cardex_revd_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_diamond_revd_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &gd5424_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &gd5426_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &gd5428_vlb_device, .flags = VIDEO_FLAG_TYPE_NONE },
@@ -196,11 +197,10 @@ video_cards[] = {
{ .device = &gd5446_pci_device, .flags = VIDEO_FLAG_TYPE_SECONDARY },
{ .device = &gd5446_stb_pci_device, .flags = VIDEO_FLAG_TYPE_SECONDARY },
{ .device = &gd5480_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_videomagic_revb_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_revc_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_cardex_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_noncardex_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_cardex_revc_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_generic_revd_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_cardex_revd_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &et4000w32p_diamond_revd_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &s3_elsa_winner1000_86c928_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &s3_spea_mercury_lite_86c928_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },
{ .device = &s3_diamond_stealth64_964_pci_device, .flags = VIDEO_FLAG_TYPE_NONE },

View File

@@ -692,6 +692,7 @@ tgui_recalctimings(svga_t *svga)
const tgui_t *tgui = (tgui_t *) svga->priv;
uint8_t ger22lower = (tgui->accel.ger22 & 0xff);
uint8_t ger22upper = (tgui->accel.ger22 >> 8);
int std_vga_clock = 1;
if (tgui->type >= TGUI_9440) {
if ((svga->crtc[0x38] & 0x19) == 0x09)
@@ -767,10 +768,11 @@ tgui_recalctimings(svga_t *svga)
svga->clock = (cpuclock * (double) (1ULL << 32)) / (((tgui->clock_n + 8) * 14318180.0) / ((tgui->clock_m + 2) * (1 << tgui->clock_k)));
if (svga->gdcreg[0xf] & 0x08)
svga->clock *= 2;
svga->clock *= 2.0;
else if (svga->gdcreg[0xf] & 0x40)
svga->clock *= 3;
svga->clock *= 3.0;
} else {
//pclog("TGUI9400CXi: Clock double=%d.\n", (((svga->miscout >> 2) & 3) | ((tgui->newctrl2 << 2) & 4) | ((tgui->newctrl2 >> 3) & 8)));
switch (((svga->miscout >> 2) & 3) | ((tgui->newctrl2 << 2) & 4) | ((tgui->newctrl2 >> 3) & 8)) {
case 0x02:
svga->clock = (cpuclock * (double) (1ULL << 32)) / 44900000.0;
@@ -816,6 +818,7 @@ tgui_recalctimings(svga_t *svga)
break;
default:
std_vga_clock = 0;
break;
}
@@ -823,6 +826,9 @@ tgui_recalctimings(svga_t *svga)
svga->htotal <<= 1;
svga->hdisp <<= 1;
svga->hdisp_time <<= 1;
svga->dots_per_clock <<= 1;
if (std_vga_clock)
svga->clock /= 2.0;
}
}
@@ -843,6 +849,7 @@ tgui_recalctimings(svga_t *svga)
svga->htotal <<= 1;
svga->hdisp <<= 1;
svga->hdisp_time <<= 1;
svga->dots_per_clock <<= 1;
break;
default:
break;
@@ -866,6 +873,7 @@ tgui_recalctimings(svga_t *svga)
svga->htotal <<= 1;
svga->hdisp <<= 1;
svga->hdisp_time <<= 1;
svga->dots_per_clock <<= 1;
}
switch (svga->hdisp) {
case 640:
@@ -880,18 +888,24 @@ tgui_recalctimings(svga_t *svga)
break;
case 15:
svga->render = svga_render_15bpp_highres;
if (tgui->type < TGUI_9440)
if (tgui->type < TGUI_9440) {
svga->hdisp >>= 1;
svga->dots_per_clock >>= 1;
}
break;
case 16:
svga->render = svga_render_16bpp_highres;
if (tgui->type < TGUI_9440)
if (tgui->type < TGUI_9440) {
svga->hdisp >>= 1;
svga->dots_per_clock >>= 1;
}
break;
case 24:
svga->render = svga_render_24bpp_highres;
if (tgui->type < TGUI_9440)
svga->hdisp = (svga->hdisp << 1) / 3;
if (tgui->type < TGUI_9440) {
svga->hdisp /= 3;
svga->dots_per_clock /= 3;
}
break;
case 32:
if (svga->rowoffset == 0x100)