mirror of
https://github.com/86Box/86Box.git
synced 2026-02-22 01:25:33 -07:00
Merge branch '86Box:master' into master
This commit is contained in:
38
.ci/build.sh
38
.ci/build.sh
@@ -949,14 +949,19 @@ else
|
||||
|
||||
if grep -q "OPENAL:BOOL=ON" build/CMakeCache.txt
|
||||
then
|
||||
# Build openal-soft 1.21.1 manually to fix audio issues. This is a temporary
|
||||
# Build openal-soft 1.22.2 manually to fix audio issues. This is a temporary
|
||||
# workaround until a newer version of openal-soft trickles down to Debian repos.
|
||||
prefix="$cache_dir/openal-soft-1.21.1"
|
||||
prefix="$cache_dir/openal-soft-1.22.2"
|
||||
if [ ! -d "$prefix" ]
|
||||
then
|
||||
rm -rf "$cache_dir/openal-soft-"* # remove old versions
|
||||
wget -qO - https://github.com/kcat/openal-soft/archive/refs/tags/1.21.1.tar.gz | tar zxf - -C "$cache_dir" || rm -rf "$prefix"
|
||||
wget -qO - https://github.com/kcat/openal-soft/archive/refs/tags/1.22.2.tar.gz | tar zxf - -C "$cache_dir" || rm -rf "$prefix"
|
||||
fi
|
||||
|
||||
# Patches to build with the old PipeWire version in Debian.
|
||||
sed -i -e 's/>=0.3.23//' "$prefix/CMakeLists.txt"
|
||||
sed -i -e 's/PW_KEY_CONFIG_NAME/"config.name"/g' "$prefix/alc/backends/pipewire.cpp"
|
||||
|
||||
prefix_build="$prefix/build-$arch_deb"
|
||||
cmake -G Ninja -D "CMAKE_TOOLCHAIN_FILE=$toolchain_file" -D "CMAKE_INSTALL_PREFIX=$cwd_root/archive_tmp/usr" -S "$prefix" -B "$prefix_build" || exit 99
|
||||
cmake --build "$prefix_build" -j$(nproc) || exit 99
|
||||
@@ -999,7 +1004,8 @@ else
|
||||
cmake --build "$prefix_build" -j$(nproc) || exit 99
|
||||
cmake --install "$prefix_build" || exit 99
|
||||
|
||||
# Build FluidSynth without JACK support to remove the dependency on libjack once again.
|
||||
# Build FluidSynth without sound systems to remove the dependencies on libjack
|
||||
# and other sound system libraries. We don't output audio through FluidSynth.
|
||||
prefix="$cache_dir/fluidsynth-2.3.0"
|
||||
if [ ! -d "$prefix" ]
|
||||
then
|
||||
@@ -1009,7 +1015,9 @@ else
|
||||
cp cmake/flags-gcc.cmake cmake/flags-gcc.cmake.old
|
||||
sed -i -e 's/ -Werror=.*\([" ]\)/\1/g' cmake/flags-gcc.cmake # temporary hack for -Werror=old-style-definition non-compliance on FluidSynth and SDL2
|
||||
prefix_build="$prefix/build-$arch_deb"
|
||||
cmake -G Ninja -D enable-jack=OFF -D enable-sdl2=$sdl_ss -D "CMAKE_TOOLCHAIN_FILE=$toolchain_file" -D "CMAKE_INSTALL_PREFIX=$cwd_root/archive_tmp/usr" -S "$prefix" -B "$prefix_build" || exit 99
|
||||
cmake -G Ninja -D enable-dbus=OFF -D enable-jack=OFF -D enable-oss=OFF -D enable-sdl2=OFF -D enable-pulseaudio=OFF -D enable-pipewire=OFF -D enable-alsa=OFF \
|
||||
-D "CMAKE_TOOLCHAIN_FILE=$toolchain_file" -D "CMAKE_INSTALL_PREFIX=$cwd_root/archive_tmp/usr" \
|
||||
-S "$prefix" -B "$prefix_build" || exit 99
|
||||
cmake --build "$prefix_build" -j$(nproc) || exit 99
|
||||
cmake --install "$prefix_build" || exit 99
|
||||
cp -p "$cwd_root/archive_tmp/usr/bin/fluidsynth" fluidsynth
|
||||
@@ -1155,6 +1163,24 @@ EOF
|
||||
|
||||
# Copy line.
|
||||
echo "$line" >> AppImageBuilder-generated.yml
|
||||
|
||||
# Workaround for appimage-builder issues 272 and 283 (i686 and armhf are also missing)
|
||||
if [ "$arch_appimage" != "x86_64" -a "$line" = " files:" ]
|
||||
then
|
||||
# Some mild arbitrary code execution with a dummy package...
|
||||
[ ! -d /runtime ] && sudo apt-get -y -o 'DPkg::Post-Invoke::=mkdir -p /runtime; chmod 777 /runtime' install libsixel1 > /dev/null 2>&1
|
||||
|
||||
echo " include:" >> AppImageBuilder-generated.yml
|
||||
for loader in "/lib/$libdir/ld-linux"*.so.*
|
||||
do
|
||||
for loader_copy in "$loader" "/lib/$(basename "$loader")"
|
||||
do
|
||||
mkdir -p "/runtime/compat$(dirname "$loader_copy")"
|
||||
ln -s "$loader" "/runtime/compat$loader_copy"
|
||||
echo " - /runtime/compat$loader_copy" >> AppImageBuilder-generated.yml
|
||||
done
|
||||
done
|
||||
fi
|
||||
done < .ci/AppImageBuilder.yml
|
||||
|
||||
# Download appimage-builder if necessary.
|
||||
@@ -1174,7 +1200,7 @@ EOF
|
||||
ln -s "$cache_dir/appimage-builder-cache" appimage-builder-cache
|
||||
|
||||
# Run appimage-builder in extract-and-run mode for Docker compatibility.
|
||||
# --appdir is a workaround for https://github.com/AppImageCrafters/appimage-builder/issues/270
|
||||
# --appdir is a workaround for appimage-builder issue 270 reported by us.
|
||||
for retry in 1 2 3 4 5
|
||||
do
|
||||
project="$project" project_id="$project_id" project_version="$project_version" project_icon="$project_icon" arch_deb="$arch_deb" \
|
||||
|
||||
@@ -116,6 +116,10 @@ if(WIN32)
|
||||
add_compile_definitions(_WINSOCK_DEPRECATED_NO_WARNINGS)
|
||||
endif()
|
||||
|
||||
if(NOT (WIN32 OR APPLE OR CMAKE_SYSTEM_NAME STREQUAL "Linux"))
|
||||
set(DISCORD OFF)
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
|
||||
@@ -138,6 +142,7 @@ option(MINITRACE "Enable Chrome tracing using the modified minitrace library"
|
||||
option(GDBSTUB "Enable GDB stub server for debugging" OFF)
|
||||
option(DEV_BRANCH "Development branch" OFF)
|
||||
option(QT "Qt GUI" ON)
|
||||
option(DISCORD "Discord Rich Presence support" ON)
|
||||
|
||||
# Development branch features
|
||||
#
|
||||
|
||||
@@ -168,9 +168,6 @@ int gfxcard = 0; /* (C) graphics/vide
|
||||
int gfxcard_2 = 0; /* (C) graphics/video card */
|
||||
int show_second_monitors = 1; /* (C) show non-primary monitors */
|
||||
int sound_is_float = 1; /* (C) sound uses FP values */
|
||||
int GAMEBLASTER = 0; /* (C) sound option */
|
||||
int GUS = 0; /* (C) sound option */
|
||||
int SSI2001 = 0; /* (C) sound option */
|
||||
int voodoo_enabled = 0; /* (C) video option */
|
||||
int ibm8514_enabled = 0; /* (C) video option */
|
||||
int xga_enabled = 0; /* (C) video option */
|
||||
|
||||
@@ -19,7 +19,7 @@ if(APPLE)
|
||||
endif()
|
||||
|
||||
add_executable(86Box 86box.c config.c log.c random.c timer.c io.c acpi.c apm.c
|
||||
dma.c ddma.c discord.c nmi.c pic.c pit.c pit_fast.c port_6x.c port_92.c ppi.c pci.c
|
||||
dma.c ddma.c nmi.c pic.c pit.c pit_fast.c port_6x.c port_92.c ppi.c pci.c
|
||||
mca.c usb.c fifo8.c device.c nvr.c nvr_at.c nvr_ps2.c machine_status.c ini.c)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
@@ -51,6 +51,11 @@ if(DEV_BRANCH)
|
||||
add_compile_definitions(DEV_BRANCH)
|
||||
endif()
|
||||
|
||||
if(DISCORD)
|
||||
add_compile_definitions(DISCORD)
|
||||
target_sources(86Box PRIVATE discord.c)
|
||||
endif()
|
||||
|
||||
if(VNC)
|
||||
find_package(LibVNCServer)
|
||||
if(LibVNCServer_FOUND)
|
||||
|
||||
@@ -59,7 +59,7 @@ typedef struct sis_85c50x_t {
|
||||
pci_conf[256], pci_conf_sb[256],
|
||||
regs[256];
|
||||
|
||||
smram_t *smram;
|
||||
smram_t *smram[2];
|
||||
port_92_t *port_92;
|
||||
} sis_85c50x_t;
|
||||
|
||||
@@ -93,28 +93,41 @@ static void
|
||||
sis_85c50x_smm_recalc(sis_85c50x_t *dev)
|
||||
{
|
||||
/* NOTE: Naming mismatch - what the datasheet calls "host address" is what we call ram_base. */
|
||||
uint32_t ram_base = (dev->pci_conf[0x64] << 20) | ((dev->pci_conf[0x65] & 0x07) << 28);
|
||||
uint32_t host_base = (dev->pci_conf[0x64] << 20) | ((dev->pci_conf[0x65] & 0x07) << 28);
|
||||
|
||||
smram_disable(dev->smram);
|
||||
smram_disable_all();
|
||||
|
||||
if ((((dev->pci_conf[0x65] & 0xe0) >> 5) != 0x00) && (ram_base == 0x00000000))
|
||||
if ((((dev->pci_conf[0x65] & 0xe0) >> 5) != 0x00) && (host_base == 0x00000000))
|
||||
return;
|
||||
|
||||
switch ((dev->pci_conf[0x65] & 0xe0) >> 5) {
|
||||
case 0x00:
|
||||
smram_enable(dev->smram, 0xe0000, 0xe0000, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
sis_85c50x_log("SiS 50x SMRAM: 000E0000-000E7FFF -> 000E0000-000E7FFF\n");
|
||||
smram_enable(dev->smram[0], 0xe0000, 0xe0000, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
break;
|
||||
case 0x01:
|
||||
smram_enable(dev->smram, 0xb0000, ram_base, 0x10000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
host_base |= 0x000b0000;
|
||||
sis_85c50x_log("SiS 50x SMRAM: %08X-%08X -> 000B0000-000BFFFF\n", host_base, host_base + 0x10000 - 1);
|
||||
smram_enable(dev->smram[0], host_base, 0xb0000, 0x10000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
smram_enable(dev->smram[1], host_base ^ 0x00100000, 0xb0000, 0x10000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
break;
|
||||
case 0x02:
|
||||
smram_enable(dev->smram, 0xa0000, ram_base, 0x10000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
host_base |= 0x000a0000;
|
||||
sis_85c50x_log("SiS 50x SMRAM: %08X-%08X -> 000A0000-000AFFFF\n", host_base, host_base + 0x10000 - 1);
|
||||
smram_enable(dev->smram[0], host_base, 0xa0000, 0x10000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
smram_enable(dev->smram[1], host_base ^ 0x00100000, 0xa0000, 0x10000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
break;
|
||||
case 0x04:
|
||||
smram_enable(dev->smram, 0xa0000, ram_base, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
host_base |= 0x000a0000;
|
||||
sis_85c50x_log("SiS 50x SMRAM: %08X-%08X -> 000A0000-000AFFFF\n", host_base, host_base + 0x8000 - 1);
|
||||
smram_enable(dev->smram[0], host_base, 0xa0000, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
smram_enable(dev->smram[1], host_base ^ 0x00100000, 0xa0000, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
break;
|
||||
case 0x06:
|
||||
smram_enable(dev->smram, 0xb0000, ram_base, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
host_base |= 0x000b0000;
|
||||
sis_85c50x_log("SiS 50x SMRAM: %08X-%08X -> 000B0000-000BFFFF\n", host_base, host_base + 0x8000 - 1);
|
||||
smram_enable(dev->smram[0], host_base, 0xb0000, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
smram_enable(dev->smram[1], host_base ^ 0x00100000, 0xa0000, 0x8000, (dev->pci_conf[0x65] & 0x10), 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -125,7 +138,9 @@ sis_85c50x_write(int func, int addr, uint8_t val, void *priv)
|
||||
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
|
||||
uint8_t valxor = (val ^ dev->pci_conf[addr]);
|
||||
|
||||
switch (addr) {
|
||||
sis_85c50x_log("85C501: [W] (%02X, %02X) = %02X\n", func, addr, val);
|
||||
|
||||
if (func == 0x00) switch (addr) {
|
||||
case 0x04: /* Command - low byte */
|
||||
dev->pci_conf[addr] = (dev->pci_conf[addr] & 0xb4) | (val & 0x4b);
|
||||
break;
|
||||
@@ -177,8 +192,8 @@ sis_85c50x_write(int func, int addr, uint8_t val, void *priv)
|
||||
break;
|
||||
case 0x5b:
|
||||
dev->pci_conf[addr] = val;
|
||||
if (valxor & 0xc0)
|
||||
port_92_set_features(dev->port_92, !!(val & 0x40), !!(val & 0x80));
|
||||
// if (valxor & 0xc0)
|
||||
// port_92_set_features(dev->port_92, !!(val & 0x40), !!(val & 0x80));
|
||||
break;
|
||||
case 0x60: /* SMI */
|
||||
if ((dev->pci_conf[0x68] & 0x01) && !(dev->pci_conf[addr] & 0x02) && (val & 0x02)) {
|
||||
@@ -199,18 +214,20 @@ sis_85c50x_write(int func, int addr, uint8_t val, void *priv)
|
||||
dev->pci_conf[addr] &= ~(val);
|
||||
break;
|
||||
}
|
||||
|
||||
sis_85c50x_log("85C501: dev->pci_conf[%02x] = %02x\n", addr, val);
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
sis_85c50x_read(int func, int addr, void *priv)
|
||||
{
|
||||
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
|
||||
uint8_t ret = 0xff;
|
||||
|
||||
sis_85c50x_log("85C501: dev->pci_conf[%02x] (%02x)\n", addr, dev->pci_conf[addr]);
|
||||
if (func == 0x00)
|
||||
ret = dev->pci_conf[addr];
|
||||
|
||||
return dev->pci_conf[addr];
|
||||
sis_85c50x_log("85C501: [R] (%02X, %02X) = %02X\n", func, addr, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -218,7 +235,9 @@ sis_85c50x_sb_write(int func, int addr, uint8_t val, void *priv)
|
||||
{
|
||||
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
|
||||
|
||||
switch (addr) {
|
||||
sis_85c50x_log("85C503: [W] (%02X, %02X) = %02X\n", func, addr, val);
|
||||
|
||||
if (func == 0x00) switch (addr) {
|
||||
case 0x04: /* Command */
|
||||
dev->pci_conf_sb[addr] = val & 0x0f;
|
||||
break;
|
||||
@@ -246,17 +265,20 @@ sis_85c50x_sb_write(int func, int addr, uint8_t val, void *priv)
|
||||
dev->pci_conf_sb[addr] = val;
|
||||
break;
|
||||
}
|
||||
|
||||
sis_85c50x_log("85C503: dev->pci_conf_sb[%02x] = %02x\n", addr, val);
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
sis_85c50x_sb_read(int func, int addr, void *priv)
|
||||
{
|
||||
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
|
||||
sis_85c50x_log("85C503: dev->pci_conf_sb[%02x] (%02x)\n", addr, dev->pci_conf_sb[addr]);
|
||||
uint8_t ret = 0xff;
|
||||
|
||||
return dev->pci_conf_sb[addr];
|
||||
if (func == 0x00)
|
||||
ret = dev->pci_conf_sb[addr];
|
||||
|
||||
sis_85c50x_log("85C503: [W] (%02X, %02X) = %02X\n", func, addr, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -264,6 +286,8 @@ sis_85c50x_isa_write(uint16_t addr, uint8_t val, void *priv)
|
||||
{
|
||||
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
|
||||
|
||||
sis_85c50x_log("85C503 ISA: [W] (%04X) = %02X\n", addr, val);
|
||||
|
||||
switch (addr) {
|
||||
case 0x22:
|
||||
dev->index = val;
|
||||
@@ -279,7 +303,7 @@ sis_85c50x_isa_write(uint16_t addr, uint8_t val, void *priv)
|
||||
break;
|
||||
case 0x84:
|
||||
case 0x88:
|
||||
case 0x9:
|
||||
case 0x89:
|
||||
case 0x8a:
|
||||
case 0x8b:
|
||||
dev->regs[dev->index] = val;
|
||||
@@ -290,8 +314,6 @@ sis_85c50x_isa_write(uint16_t addr, uint8_t val, void *priv)
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
sis_85c50x_log("85C501-ISA: dev->regs[%02x] = %02x\n", addr, val);
|
||||
}
|
||||
|
||||
static uint8_t
|
||||
@@ -313,7 +335,7 @@ sis_85c50x_isa_read(uint16_t addr, void *priv)
|
||||
break;
|
||||
}
|
||||
|
||||
sis_85c50x_log("85C501-ISA: dev->regs[%02x] (%02x)\n", dev->index, ret);
|
||||
sis_85c50x_log("85C503 ISA: [R] (%04X) = %02X\n", addr, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -370,7 +392,8 @@ sis_85c50x_close(void *priv)
|
||||
{
|
||||
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
|
||||
|
||||
smram_del(dev->smram);
|
||||
smram_del(dev->smram[1]);
|
||||
smram_del(dev->smram[0]);
|
||||
free(dev);
|
||||
}
|
||||
|
||||
@@ -387,7 +410,9 @@ sis_85c50x_init(const device_t *info)
|
||||
pci_add_card(PCI_ADD_SOUTHBRIDGE, sis_85c50x_sb_read, sis_85c50x_sb_write, dev);
|
||||
io_sethandler(0x0022, 0x0002, sis_85c50x_isa_read, NULL, NULL, sis_85c50x_isa_write, NULL, NULL, dev);
|
||||
|
||||
dev->smram = smram_add();
|
||||
dev->smram[0] = smram_add();
|
||||
dev->smram[1] = smram_add();
|
||||
|
||||
dev->port_92 = device_add(&port_92_device);
|
||||
|
||||
sis_85c50x_reset(dev);
|
||||
|
||||
69
src/config.c
69
src/config.c
@@ -666,9 +666,36 @@ load_sound(void)
|
||||
if ((p != NULL) && (!strcmp(p, "sbpci128") || !strcmp(p, "sb128pci")))
|
||||
p = "es1371";
|
||||
if (p != NULL)
|
||||
sound_card_current = sound_card_get_from_internal_name(p);
|
||||
sound_card_current[0] = sound_card_get_from_internal_name(p);
|
||||
else
|
||||
sound_card_current = 0;
|
||||
sound_card_current[0] = 0;
|
||||
|
||||
p = ini_section_get_string(cat, "sndcard2", NULL);
|
||||
/* FIXME: Hack to not break configs with the Sound Blaster 128 PCI set. */
|
||||
if ((p != NULL) && (!strcmp(p, "sbpci128") || !strcmp(p, "sb128pci")))
|
||||
p = "es1371";
|
||||
if (p != NULL)
|
||||
sound_card_current[1] = sound_card_get_from_internal_name(p);
|
||||
else
|
||||
sound_card_current[1] = 0;
|
||||
|
||||
p = ini_section_get_string(cat, "sndcard3", NULL);
|
||||
/* FIXME: Hack to not break configs with the Sound Blaster 128 PCI set. */
|
||||
if ((p != NULL) && (!strcmp(p, "sbpci128") || !strcmp(p, "sb128pci")))
|
||||
p = "es1371";
|
||||
if (p != NULL)
|
||||
sound_card_current[2] = sound_card_get_from_internal_name(p);
|
||||
else
|
||||
sound_card_current[2] = 0;
|
||||
|
||||
p = ini_section_get_string(cat, "sndcard4", NULL);
|
||||
/* FIXME: Hack to not break configs with the Sound Blaster 128 PCI set. */
|
||||
if ((p != NULL) && (!strcmp(p, "sbpci128") || !strcmp(p, "sb128pci")))
|
||||
p = "es1371";
|
||||
if (p != NULL)
|
||||
sound_card_current[3] = sound_card_get_from_internal_name(p);
|
||||
else
|
||||
sound_card_current[3] = 0;
|
||||
|
||||
p = ini_section_get_string(cat, "midi_device", NULL);
|
||||
if (p != NULL)
|
||||
@@ -684,10 +711,6 @@ load_sound(void)
|
||||
|
||||
mpu401_standalone_enable = !!ini_section_get_int(cat, "mpu401_standalone", 0);
|
||||
|
||||
SSI2001 = !!ini_section_get_int(cat, "ssi2001", 0);
|
||||
GAMEBLASTER = !!ini_section_get_int(cat, "gameblaster", 0);
|
||||
GUS = !!ini_section_get_int(cat, "gus", 0);
|
||||
|
||||
memset(temp, '\0', sizeof(temp));
|
||||
p = ini_section_get_string(cat, "sound_type", "float");
|
||||
if (strlen(p) > 511)
|
||||
@@ -2311,10 +2334,25 @@ save_sound(void)
|
||||
{
|
||||
ini_section_t cat = ini_find_or_create_section(config, "Sound");
|
||||
|
||||
if (sound_card_current == 0)
|
||||
if (sound_card_current[0] == 0)
|
||||
ini_section_delete_var(cat, "sndcard");
|
||||
else
|
||||
ini_section_set_string(cat, "sndcard", sound_card_get_internal_name(sound_card_current));
|
||||
ini_section_set_string(cat, "sndcard", sound_card_get_internal_name(sound_card_current[0]));
|
||||
|
||||
if (sound_card_current[1] == 0)
|
||||
ini_section_delete_var(cat, "sndcard2");
|
||||
else
|
||||
ini_section_set_string(cat, "sndcard2", sound_card_get_internal_name(sound_card_current[1]));
|
||||
|
||||
if (sound_card_current[2] == 0)
|
||||
ini_section_delete_var(cat, "sndcard3");
|
||||
else
|
||||
ini_section_set_string(cat, "sndcard3", sound_card_get_internal_name(sound_card_current[2]));
|
||||
|
||||
if (sound_card_current[3] == 0)
|
||||
ini_section_delete_var(cat, "sndcard4");
|
||||
else
|
||||
ini_section_set_string(cat, "sndcard4", sound_card_get_internal_name(sound_card_current[3]));
|
||||
|
||||
if (!strcmp(midi_out_device_get_internal_name(midi_output_device_current), "none"))
|
||||
ini_section_delete_var(cat, "midi_device");
|
||||
@@ -2331,21 +2369,6 @@ save_sound(void)
|
||||
else
|
||||
ini_section_set_int(cat, "mpu401_standalone", mpu401_standalone_enable);
|
||||
|
||||
if (SSI2001 == 0)
|
||||
ini_section_delete_var(cat, "ssi2001");
|
||||
else
|
||||
ini_section_set_int(cat, "ssi2001", SSI2001);
|
||||
|
||||
if (GAMEBLASTER == 0)
|
||||
ini_section_delete_var(cat, "gameblaster");
|
||||
else
|
||||
ini_section_set_int(cat, "gameblaster", GAMEBLASTER);
|
||||
|
||||
if (GUS == 0)
|
||||
ini_section_delete_var(cat, "gus");
|
||||
else
|
||||
ini_section_set_int(cat, "gus", GUS);
|
||||
|
||||
if (sound_is_float == 1)
|
||||
ini_section_delete_var(cat, "sound_type");
|
||||
else
|
||||
|
||||
@@ -2280,6 +2280,12 @@ fdc_reset(void *priv)
|
||||
} else if (fdc->flags & FDC_FLAG_SEC) {
|
||||
fdc->dma = 1;
|
||||
fdc->specify[1] = 0;
|
||||
} else if (fdc->flags & FDC_FLAG_TER) {
|
||||
fdc->dma = 1;
|
||||
fdc->specify[1] = 0;
|
||||
} else if (fdc->flags & FDC_FLAG_QUA) {
|
||||
fdc->dma = 1;
|
||||
fdc->specify[1] = 0;
|
||||
} else {
|
||||
fdc->dma = 1;
|
||||
fdc->specify[1] = 0;
|
||||
@@ -2297,6 +2303,10 @@ fdc_reset(void *priv)
|
||||
fdc_remove(fdc);
|
||||
if (fdc->flags & FDC_FLAG_SEC) {
|
||||
fdc_set_base(fdc, FDC_SECONDARY_ADDR);
|
||||
} else if (fdc->flags & FDC_FLAG_TER) {
|
||||
fdc_set_base(fdc, FDC_TERTIARY_ADDR);
|
||||
} else if (fdc->flags & FDC_FLAG_QUA) {
|
||||
fdc_set_base(fdc, FDC_QUATERNARY_ADDR);
|
||||
} else {
|
||||
fdc_set_base(fdc, (fdc->flags & FDC_FLAG_PCJR) ? FDC_PRIMARY_PCJR_ADDR : FDC_PRIMARY_ADDR);
|
||||
}
|
||||
@@ -2330,6 +2340,10 @@ fdc_init(const device_t *info)
|
||||
|
||||
if (fdc->flags & FDC_FLAG_SEC)
|
||||
fdc->irq = FDC_SECONDARY_IRQ;
|
||||
else if (fdc->flags & FDC_FLAG_TER)
|
||||
fdc->irq = FDC_TERTIARY_IRQ;
|
||||
else if (fdc->flags & FDC_FLAG_QUA)
|
||||
fdc->irq = FDC_QUATERNARY_IRQ;
|
||||
else
|
||||
fdc->irq = FDC_PRIMARY_IRQ;
|
||||
|
||||
@@ -2337,6 +2351,10 @@ fdc_init(const device_t *info)
|
||||
timer_add(&fdc->watchdog_timer, fdc_watchdog_poll, fdc, 0);
|
||||
else if (fdc->flags & FDC_FLAG_SEC)
|
||||
fdc->dma_ch = FDC_SECONDARY_DMA;
|
||||
else if (fdc->flags & FDC_FLAG_TER)
|
||||
fdc->dma_ch = FDC_TERTIARY_DMA;
|
||||
else if (fdc->flags & FDC_FLAG_QUA)
|
||||
fdc->dma_ch = FDC_QUATERNARY_DMA;
|
||||
else
|
||||
fdc->dma_ch = FDC_PRIMARY_DMA;
|
||||
|
||||
@@ -2378,7 +2396,7 @@ const device_t fdc_xt_device = {
|
||||
|
||||
const device_t fdc_xt_sec_device = {
|
||||
.name = "PC/XT Floppy Drive Controller (Secondary)",
|
||||
.internal_name = "fdc_xt",
|
||||
.internal_name = "fdc_xt_sec",
|
||||
.flags = FDC_FLAG_SEC,
|
||||
.local = 0,
|
||||
.init = fdc_init,
|
||||
@@ -2390,6 +2408,34 @@ const device_t fdc_xt_sec_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t fdc_xt_ter_device = {
|
||||
.name = "PC/XT Floppy Drive Controller (Tertiary)",
|
||||
.internal_name = "fdc_xt_ter",
|
||||
.flags = FDC_FLAG_TER,
|
||||
.local = 0,
|
||||
.init = fdc_init,
|
||||
.close = fdc_close,
|
||||
.reset = fdc_reset,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t fdc_xt_qua_device = {
|
||||
.name = "PC/XT Floppy Drive Controller (Quaternary)",
|
||||
.internal_name = "fdc_xt_qua",
|
||||
.flags = FDC_FLAG_QUA,
|
||||
.local = 0,
|
||||
.init = fdc_init,
|
||||
.close = fdc_close,
|
||||
.reset = fdc_reset,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t fdc_xt_t1x00_device = {
|
||||
.name = "PC/XT Floppy Drive Controller (Toshiba)",
|
||||
.internal_name = "fdc_xt_t1x00",
|
||||
@@ -2474,6 +2520,34 @@ const device_t fdc_at_sec_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t fdc_at_ter_device = {
|
||||
.name = "PC/AT Floppy Drive Controller (Tertiary)",
|
||||
.internal_name = "fdc_at_ter",
|
||||
.flags = 0,
|
||||
.local = FDC_FLAG_AT | FDC_FLAG_TER,
|
||||
.init = fdc_init,
|
||||
.close = fdc_close,
|
||||
.reset = fdc_reset,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t fdc_at_qua_device = {
|
||||
.name = "PC/AT Floppy Drive Controller (Quaternary)",
|
||||
.internal_name = "fdc_at_qua",
|
||||
.flags = 0,
|
||||
.local = FDC_FLAG_AT | FDC_FLAG_QUA,
|
||||
.init = fdc_init,
|
||||
.close = fdc_close,
|
||||
.reset = fdc_reset,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t fdc_at_actlow_device = {
|
||||
.name = "PC/AT Floppy Drive Controller (Active low)",
|
||||
.internal_name = "fdc_at_actlow",
|
||||
|
||||
@@ -39,6 +39,8 @@
|
||||
typedef struct
|
||||
{
|
||||
rom_t bios_rom;
|
||||
fdc_t *fdc_pri;
|
||||
fdc_t *fdc_sec;
|
||||
} monster_fdc_t;
|
||||
|
||||
static void
|
||||
@@ -57,14 +59,29 @@ monster_fdc_init(const device_t *info)
|
||||
dev = (monster_fdc_t *)malloc(sizeof(monster_fdc_t));
|
||||
memset(dev, 0, sizeof(monster_fdc_t));
|
||||
|
||||
#if 0
|
||||
uint8_t sec_irq = device_get_config_int("sec_irq");
|
||||
uint8_t sec_dma = device_get_config_int("sec_dma");
|
||||
#endif
|
||||
|
||||
if (BIOS_ADDR != 0)
|
||||
rom_init(&dev->bios_rom, ROM_MONSTER_FDC, BIOS_ADDR, 0x2000, 0x1ffff, 0, MEM_MAPPING_EXTERNAL);
|
||||
|
||||
// Primary FDC
|
||||
device_add(&fdc_at_device);
|
||||
dev->fdc_pri = device_add(&fdc_at_device);
|
||||
|
||||
#if 0
|
||||
// Secondary FDC
|
||||
// device_add(&fdc_at_sec_device);
|
||||
uint8_t sec_enabled = device_get_config_int("sec_enabled");
|
||||
if (sec_enabled)
|
||||
dev->fdc_sec = device_add(&fdc_at_sec_device);
|
||||
fdc_set_irq(dev->fdc_sec, sec_irq);
|
||||
fdc_set_dma_ch(dev->fdc_sec, sec_dma);
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
uint8_t rom_writes_enabled = device_get_config_int("rom_writes_enabled");
|
||||
#endif
|
||||
|
||||
return dev;
|
||||
}
|
||||
@@ -76,7 +93,14 @@ static int monster_fdc_available(void)
|
||||
|
||||
static const device_config_t monster_fdc_config[] = {
|
||||
// clang-format off
|
||||
/*
|
||||
#if 0
|
||||
{
|
||||
.name = "sec_enabled",
|
||||
.description = "Enable Secondary Controller",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
},
|
||||
{
|
||||
.name = "sec_irq",
|
||||
.description = "Secondary Controller IRQ",
|
||||
@@ -137,7 +161,7 @@ static const device_config_t monster_fdc_config[] = {
|
||||
{ .description = "" }
|
||||
}
|
||||
},
|
||||
*/
|
||||
#endif
|
||||
{
|
||||
.name = "bios_addr",
|
||||
.description = "BIOS Address:",
|
||||
@@ -157,7 +181,7 @@ static const device_config_t monster_fdc_config[] = {
|
||||
{ .description = "" }
|
||||
}
|
||||
},
|
||||
/*
|
||||
#if 0
|
||||
{
|
||||
.name = "bios_size",
|
||||
.description = "BIOS Size:",
|
||||
@@ -172,8 +196,14 @@ static const device_config_t monster_fdc_config[] = {
|
||||
{ .description = "" }
|
||||
}
|
||||
},
|
||||
*/
|
||||
// BIOS extension ROM writes: Enabled/Disabled
|
||||
{
|
||||
.name = "rom_writes_enabled",
|
||||
.description = "Enable BIOS extension ROM Writes",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = "",
|
||||
.default_int = 0
|
||||
},
|
||||
#endif
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
@@ -114,9 +114,6 @@ extern int bugger_enabled, /* (C) enable ISAbugger */
|
||||
isamem_type[], /* (C) enable ISA mem cards */
|
||||
isartc_type; /* (C) enable ISA RTC card */
|
||||
extern int sound_is_float, /* (C) sound uses FP values */
|
||||
GAMEBLASTER, /* (C) sound option */
|
||||
GUS, GUSMAX, /* (C) sound option */
|
||||
SSI2001, /* (C) sound option */
|
||||
voodoo_enabled, /* (C) video option */
|
||||
ibm8514_enabled, /* (C) video option */
|
||||
xga_enabled; /* (C) video option */
|
||||
|
||||
@@ -53,6 +53,8 @@ extern int fdc_type;
|
||||
#define FDC_FLAG_UMC 0x400 /* UMC UM8398 */
|
||||
#define FDC_FLAG_ALI 0x800 /* ALi M512x / M1543C */
|
||||
#define FDC_FLAG_SEC 0x1000 /* Is Secondary */
|
||||
#define FDC_FLAG_TER 0x2000 /* Is Tertiary */
|
||||
#define FDC_FLAG_QUA 0x3000 /* Is Quaternary */
|
||||
|
||||
typedef struct {
|
||||
uint8_t dor, stat, command, processed_cmd, dat, st0, swap, dtl;
|
||||
@@ -187,12 +189,16 @@ extern uint8_t fdc_get_current_drive(void);
|
||||
#ifdef EMU_DEVICE_H
|
||||
extern const device_t fdc_xt_device;
|
||||
extern const device_t fdc_xt_sec_device;
|
||||
extern const device_t fdc_xt_ter_device;
|
||||
extern const device_t fdc_xt_qua_device;
|
||||
extern const device_t fdc_xt_t1x00_device;
|
||||
extern const device_t fdc_xt_tandy_device;
|
||||
extern const device_t fdc_xt_amstrad_device;
|
||||
extern const device_t fdc_pcjr_device;
|
||||
extern const device_t fdc_at_device;
|
||||
extern const device_t fdc_at_sec_device;
|
||||
extern const device_t fdc_at_ter_device;
|
||||
extern const device_t fdc_at_qua_device;
|
||||
extern const device_t fdc_at_actlow_device;
|
||||
extern const device_t fdc_at_ps1_device;
|
||||
extern const device_t fdc_at_smc_device;
|
||||
|
||||
@@ -11,8 +11,10 @@
|
||||
*
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
* Jasmine Iwanek, <jriwanek@gmail.com>
|
||||
*
|
||||
* Copyright 2020 Miran Grca.
|
||||
* Copyright 2020 Miran Grca.
|
||||
* Copyright 2022-2023 Jasmine Iwanek.
|
||||
*/
|
||||
|
||||
#ifndef EMU_FLASH_H
|
||||
@@ -26,10 +28,36 @@ extern const device_t intel_flash_bxb_device;
|
||||
|
||||
extern const device_t sst_flash_29ee010_device;
|
||||
extern const device_t sst_flash_29ee020_device;
|
||||
|
||||
extern const device_t winbond_flash_w29c512_device;
|
||||
extern const device_t winbond_flash_w29c010_device;
|
||||
extern const device_t winbond_flash_w29c020_device;
|
||||
extern const device_t winbond_flash_w29c040_device;
|
||||
|
||||
extern const device_t sst_flash_39sf512_device;
|
||||
extern const device_t sst_flash_39sf010_device;
|
||||
extern const device_t sst_flash_39sf020_device;
|
||||
extern const device_t sst_flash_39sf040_device;
|
||||
|
||||
extern const device_t sst_flash_39lf512_device;
|
||||
extern const device_t sst_flash_39lf010_device;
|
||||
extern const device_t sst_flash_39lf020_device;
|
||||
extern const device_t sst_flash_39lf040_device;
|
||||
extern const device_t sst_flash_39lf080_device;
|
||||
extern const device_t sst_flash_39lf016_device;
|
||||
|
||||
extern const device_t sst_flash_49lf002_device;
|
||||
extern const device_t sst_flash_49lf020_device;
|
||||
extern const device_t sst_flash_49lf020a_device;
|
||||
extern const device_t sst_flash_49lf003_device;
|
||||
extern const device_t sst_flash_49lf030_device;
|
||||
extern const device_t sst_flash_49lf004_device;
|
||||
extern const device_t sst_flash_49lf004c_device;
|
||||
extern const device_t sst_flash_49lf040_device;
|
||||
extern const device_t sst_flash_49lf008_device;
|
||||
extern const device_t sst_flash_49lf008c_device;
|
||||
extern const device_t sst_flash_49lf080_device;
|
||||
extern const device_t sst_flash_49lf016_device;
|
||||
extern const device_t sst_flash_49lf160_device;
|
||||
|
||||
#endif /*EMU_FLASH_H*/
|
||||
|
||||
@@ -558,10 +558,8 @@ extern int machine_at_430nx_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_exp8551_init(const machine_t *);
|
||||
extern int machine_at_zappa_init(const machine_t *);
|
||||
extern int machine_at_powermatev_init(const machine_t *);
|
||||
extern int machine_at_mb500n_init(const machine_t *);
|
||||
extern int machine_at_hawk_init(const machine_t *);
|
||||
|
||||
extern int machine_at_pat54pv_init(const machine_t *);
|
||||
@@ -570,16 +568,19 @@ extern int machine_at_hot543_init(const machine_t *);
|
||||
|
||||
extern int machine_at_p54sp4_init(const machine_t *);
|
||||
extern int machine_at_sq588_init(const machine_t *);
|
||||
extern int machine_at_p54sps_init(const machine_t *);
|
||||
|
||||
/* m_at_socket7_3v.c */
|
||||
extern int machine_at_p54tp4xe_init(const machine_t *);
|
||||
extern int machine_at_p54tp4xe_mr_init(const machine_t *);
|
||||
extern int machine_at_exp8551_init(const machine_t *);
|
||||
extern int machine_at_gw2katx_init(const machine_t *);
|
||||
extern int machine_at_thor_init(const machine_t *);
|
||||
extern int machine_at_mrthor_init(const machine_t *);
|
||||
extern int machine_at_endeavor_init(const machine_t *);
|
||||
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 *);
|
||||
extern int machine_at_fmb_init(const machine_t *);
|
||||
|
||||
extern int machine_at_acerm3a_init(const machine_t *);
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
#ifndef PLAT_DIR_H
|
||||
#define PLAT_DIR_H
|
||||
|
||||
/* Windows needs the POSIX re-implementations */
|
||||
#if defined(_WIN32)
|
||||
/* Windows and Termux needs the POSIX re-implementations */
|
||||
#if defined(_WIN32) || defined(__TERMUX__)
|
||||
# ifdef _MAX_FNAME
|
||||
# define MAXNAMLEN _MAX_FNAME
|
||||
# else
|
||||
|
||||
@@ -79,82 +79,89 @@
|
||||
#define IDT_JOYSTICK 1718 /* Joystick: */
|
||||
|
||||
/* DLG_CFG_SOUND */
|
||||
#define IDT_SOUND 1719 /* Sound card: */
|
||||
#define IDT_MIDI_OUT 1720 /* MIDI Out Device: */
|
||||
#define IDT_MIDI_IN 1721 /* MIDI In Device: */
|
||||
#define IDT_SOUND1 1719 /* Sound card 1: */
|
||||
#define IDT_SOUND2 1720 /* Sound card 2: */
|
||||
#define IDT_SOUND3 1721 /* Sound card 3: */
|
||||
#define IDT_SOUND4 1722 /* Sound card 4: */
|
||||
#define IDT_MIDI_OUT 1723 /* MIDI Out Device: */
|
||||
#define IDT_MIDI_IN 1724 /* MIDI In Device: */
|
||||
|
||||
/* DLG_CFG_NETWORK */
|
||||
#define IDT_NET_TYPE 1722 /* Network type: */
|
||||
#define IDT_PCAP 1723 /* PCap device: */
|
||||
#define IDT_NET 1724 /* Network adapter: */
|
||||
#define IDT_NET_TYPE 1725 /* Network type: */
|
||||
#define IDT_PCAP 1726 /* PCap device: */
|
||||
#define IDT_NET 1727 /* Network adapter: */
|
||||
#define IDT_NET1 1728 /* Network adapter 1: */
|
||||
#define IDT_NET2 1729 /* Network adapter 2: */
|
||||
#define IDT_NET3 1730 /* Network adapter 3: */
|
||||
#define IDT_NET4 1731 /* Network adapter 4: */
|
||||
|
||||
/* DLG_CFG_PORTS */
|
||||
#define IDT_COM1 1725 /* COM1 Device: */
|
||||
#define IDT_COM2 1726 /* COM1 Device: */
|
||||
#define IDT_COM3 1727 /* COM1 Device: */
|
||||
#define IDT_COM4 1728 /* COM1 Device: */
|
||||
#define IDT_COM1 1732 /* COM1 Device: */
|
||||
#define IDT_COM2 1733 /* COM1 Device: */
|
||||
#define IDT_COM3 1734 /* COM1 Device: */
|
||||
#define IDT_COM4 1735 /* COM1 Device: */
|
||||
|
||||
#define IDT_LPT1 1729 /* LPT1 Device: */
|
||||
#define IDT_LPT2 1730 /* LPT2 Device: */
|
||||
#define IDT_LPT3 1731 /* LPT3 Device: */
|
||||
#define IDT_LPT4 1732 /* LPT4 Device: */
|
||||
#define IDT_LPT1 1736 /* LPT1 Device: */
|
||||
#define IDT_LPT2 1737 /* LPT2 Device: */
|
||||
#define IDT_LPT3 1738 /* LPT3 Device: */
|
||||
#define IDT_LPT4 1739 /* LPT4 Device: */
|
||||
|
||||
/* DLG_CFG_STORAGE */
|
||||
#define IDT_HDC 1733 /* HD Controller: */
|
||||
#define IDT_FDC 1734 /* Ext FD Controller: */
|
||||
#define IDT_SCSI_1 1735 /* SCSI Board #1: */
|
||||
#define IDT_SCSI_2 1736 /* SCSI Board #2: */
|
||||
#define IDT_SCSI_3 1737 /* SCSI Board #3: */
|
||||
#define IDT_SCSI_4 1738 /* SCSI Board #4: */
|
||||
#define IDT_HDC 1740 /* HD Controller: */
|
||||
#define IDT_FDC 1741 /* Ext FD Controller: */
|
||||
#define IDT_SCSI_1 1742 /* SCSI Board #1: */
|
||||
#define IDT_SCSI_2 1743 /* SCSI Board #2: */
|
||||
#define IDT_SCSI_3 1744 /* SCSI Board #3: */
|
||||
#define IDT_SCSI_4 1745 /* SCSI Board #4: */
|
||||
|
||||
/* DLG_CFG_HARD_DISKS */
|
||||
#define IDT_HDD 1739 /* Hard disks: */
|
||||
#define IDT_BUS 1740 /* Bus: */
|
||||
#define IDT_CHANNEL 1741 /* Channel: */
|
||||
#define IDT_ID 1742 /* ID: */
|
||||
#define IDT_LUN 1743 /* LUN: */
|
||||
#define IDT_SPEED 1744 /* Speed: */
|
||||
#define IDT_HDD 1746 /* Hard disks: */
|
||||
#define IDT_BUS 1747 /* Bus: */
|
||||
#define IDT_CHANNEL 1748 /* Channel: */
|
||||
#define IDT_ID 1749 /* ID: */
|
||||
#define IDT_LUN 1750 /* LUN: */
|
||||
#define IDT_SPEED 1751 /* Speed: */
|
||||
|
||||
/* DLG_CFG_HARD_DISKS_ADD */
|
||||
#define IDT_SECTORS 1745 /* Sectors: */
|
||||
#define IDT_HEADS 1746 /* Heads: */
|
||||
#define IDT_CYLS 1747 /* Cylinders: */
|
||||
#define IDT_SIZE_MB 1748 /* Size (MB): */
|
||||
#define IDT_TYPE 1749 /* Type: */
|
||||
#define IDT_FILE_NAME 1750 /* File name: */
|
||||
#define IDT_IMG_FORMAT 1751 /* Image Format: */
|
||||
#define IDT_BLOCK_SIZE 1752 /* Block Size: */
|
||||
#define IDT_PROGRESS 1753 /* Progress: */
|
||||
#define IDT_SECTORS 1752 /* Sectors: */
|
||||
#define IDT_HEADS 1753 /* Heads: */
|
||||
#define IDT_CYLS 1754 /* Cylinders: */
|
||||
#define IDT_SIZE_MB 1755 /* Size (MB): */
|
||||
#define IDT_TYPE 1756 /* Type: */
|
||||
#define IDT_FILE_NAME 1757 /* File name: */
|
||||
#define IDT_IMG_FORMAT 1758 /* Image Format: */
|
||||
#define IDT_BLOCK_SIZE 1759 /* Block Size: */
|
||||
#define IDT_PROGRESS 1760 /* Progress: */
|
||||
|
||||
/* DLG_CFG_FLOPPY_AND_CDROM_DRIVES */
|
||||
#define IDT_FLOPPY_DRIVES 1754 /* Floppy drives: */
|
||||
#define IDT_FDD_TYPE 1755 /* Type: */
|
||||
#define IDT_CD_DRIVES 1756 /* CD-ROM drives: */
|
||||
#define IDT_CD_BUS 1757 /* Bus: */
|
||||
#define IDT_CD_ID 1758 /* ID: */
|
||||
#define IDT_CD_LUN 1759 /* LUN: */
|
||||
#define IDT_CD_CHANNEL 1760 /* Channel: */
|
||||
#define IDT_CD_SPEED 1761 /* Speed: */
|
||||
#define IDT_FLOPPY_DRIVES 1761 /* Floppy drives: */
|
||||
#define IDT_FDD_TYPE 1762 /* Type: */
|
||||
#define IDT_CD_DRIVES 1763 /* CD-ROM drives: */
|
||||
#define IDT_CD_BUS 1764 /* Bus: */
|
||||
#define IDT_CD_ID 1765 /* ID: */
|
||||
#define IDT_CD_LUN 1766 /* LUN: */
|
||||
#define IDT_CD_CHANNEL 1767 /* Channel: */
|
||||
#define IDT_CD_SPEED 1768 /* Speed: */
|
||||
|
||||
/* DLG_CFG_OTHER_REMOVABLE_DEVICES */
|
||||
#define IDT_MO_DRIVES 1762 /* MO drives: */
|
||||
#define IDT_MO_BUS 1763 /* Bus: */
|
||||
#define IDT_MO_ID 1764 /* ID: */
|
||||
#define IDT_MO_CHANNEL 1765 /* Channel */
|
||||
#define IDT_MO_TYPE 1766 /* Type: */
|
||||
#define IDT_MO_DRIVES 1769 /* MO drives: */
|
||||
#define IDT_MO_BUS 1770 /* Bus: */
|
||||
#define IDT_MO_ID 1771 /* ID: */
|
||||
#define IDT_MO_CHANNEL 1772 /* Channel */
|
||||
#define IDT_MO_TYPE 1773 /* Type: */
|
||||
|
||||
#define IDT_ZIP_DRIVES 1767 /* ZIP drives: */
|
||||
#define IDT_ZIP_BUS 1768 /* Bus: */
|
||||
#define IDT_ZIP_ID 1769 /* ID: */
|
||||
#define IDT_ZIP_LUN 1770 /* LUN: */
|
||||
#define IDT_ZIP_CHANNEL 1771 /* Channel: */
|
||||
#define IDT_ZIP_DRIVES 1774 /* ZIP drives: */
|
||||
#define IDT_ZIP_BUS 1775 /* Bus: */
|
||||
#define IDT_ZIP_ID 1776 /* ID: */
|
||||
#define IDT_ZIP_LUN 1777 /* LUN: */
|
||||
#define IDT_ZIP_CHANNEL 1778 /* Channel: */
|
||||
|
||||
/* DLG_CFG_PERIPHERALS */
|
||||
#define IDT_ISARTC 1772 /* ISA RTC: */
|
||||
#define IDT_ISAMEM_1 1773 /* ISAMEM Board #1: */
|
||||
#define IDT_ISAMEM_2 1774 /* ISAMEM Board #2: */
|
||||
#define IDT_ISAMEM_3 1775 /* ISAMEM Board #3: */
|
||||
#define IDT_ISAMEM_4 1776 /* ISAMEM Board #4: */
|
||||
#define IDT_ISARTC 1779 /* ISA RTC: */
|
||||
#define IDT_ISAMEM_1 1780 /* ISAMEM Board #1: */
|
||||
#define IDT_ISAMEM_2 1781 /* ISAMEM Board #2: */
|
||||
#define IDT_ISAMEM_3 1782 /* ISAMEM Board #3: */
|
||||
#define IDT_ISAMEM_4 1783 /* ISAMEM Board #4: */
|
||||
|
||||
/*
|
||||
* To try to keep these organized, we now group the
|
||||
@@ -199,10 +206,10 @@
|
||||
#define IDC_CONFIGURE_MOUSE 1034
|
||||
|
||||
#define IDC_SOUND 1040 /* sound config */
|
||||
#define IDC_COMBO_SOUND 1041
|
||||
#define IDC_CHECK_SSI 1042
|
||||
#define IDC_CHECK_CMS 1043
|
||||
#define IDC_CHECK_GUS 1044
|
||||
#define IDC_COMBO_SOUND1 1041
|
||||
#define IDC_COMBO_SOUND2 1042
|
||||
#define IDC_COMBO_SOUND3 1043
|
||||
#define IDC_COMBO_SOUND4 1044
|
||||
#define IDC_COMBO_MIDI_OUT 1045
|
||||
#define IDC_CHECK_MPU401 1046
|
||||
#define IDC_CONFIGURE_MPU401 1047
|
||||
@@ -215,109 +222,118 @@
|
||||
#define IDC_RADIO_FM_DRV_NUKED 1054
|
||||
#define IDC_RADIO_FM_DRV_YMFM 1055
|
||||
|
||||
#define IDC_COMBO_NET_TYPE 1060 /* network config */
|
||||
#define IDC_COMBO_PCAP 1061
|
||||
#define IDC_COMBO_NET 1062
|
||||
#define IDC_COMBO_NET1_TYPE 1060 /* network config */
|
||||
#define IDC_COMBO_NET2_TYPE 1061
|
||||
#define IDC_COMBO_NET3_TYPE 1062
|
||||
#define IDC_COMBO_NET4_TYPE 1063
|
||||
#define IDC_COMBO_PCAP1 1064
|
||||
#define IDC_COMBO_PCAP2 1065
|
||||
#define IDC_COMBO_PCAP3 1066
|
||||
#define IDC_COMBO_PCAP4 1067
|
||||
#define IDC_COMBO_NET1 1068
|
||||
#define IDC_COMBO_NET2 1069
|
||||
#define IDC_COMBO_NET3 1070
|
||||
#define IDC_COMBO_NET4 1071
|
||||
|
||||
#define IDC_COMBO_LPT1 1070 /* ports config */
|
||||
#define IDC_COMBO_LPT2 1071
|
||||
#define IDC_COMBO_LPT3 1072
|
||||
#define IDC_COMBO_LPT4 1073
|
||||
#define IDC_CHECK_SERIAL1 1074
|
||||
#define IDC_CHECK_SERIAL2 1075
|
||||
#define IDC_CHECK_SERIAL3 1076
|
||||
#define IDC_CHECK_SERIAL4 1077
|
||||
#define IDC_CHECK_PARALLEL1 1078
|
||||
#define IDC_CHECK_PARALLEL2 1079
|
||||
#define IDC_CHECK_PARALLEL3 1080
|
||||
#define IDC_CHECK_PARALLEL4 1081
|
||||
#define IDC_COMBO_LPT1 1080 /* ports config */
|
||||
#define IDC_COMBO_LPT2 1081
|
||||
#define IDC_COMBO_LPT3 1082
|
||||
#define IDC_COMBO_LPT4 1083
|
||||
#define IDC_CHECK_SERIAL1 1084
|
||||
#define IDC_CHECK_SERIAL2 1085
|
||||
#define IDC_CHECK_SERIAL3 1086
|
||||
#define IDC_CHECK_SERIAL4 1087
|
||||
#define IDC_CHECK_PARALLEL1 1088
|
||||
#define IDC_CHECK_PARALLEL2 1089
|
||||
#define IDC_CHECK_PARALLEL3 1090
|
||||
#define IDC_CHECK_PARALLEL4 1091
|
||||
|
||||
#define IDC_OTHER_PERIPH 1082 /* storage controllers config */
|
||||
#define IDC_COMBO_HDC 1083
|
||||
#define IDC_CONFIGURE_HDC 1084
|
||||
#define IDC_CHECK_IDE_TER 1085
|
||||
#define IDC_BUTTON_IDE_TER 1086
|
||||
#define IDC_CHECK_IDE_QUA 1087
|
||||
#define IDC_BUTTON_IDE_QUA 1088
|
||||
#define IDC_GROUP_SCSI 1089
|
||||
#define IDC_COMBO_SCSI_1 1090
|
||||
#define IDC_COMBO_SCSI_2 1091
|
||||
#define IDC_COMBO_SCSI_3 1092
|
||||
#define IDC_COMBO_SCSI_4 1093
|
||||
#define IDC_CONFIGURE_SCSI_1 1094
|
||||
#define IDC_CONFIGURE_SCSI_2 1095
|
||||
#define IDC_CONFIGURE_SCSI_3 1096
|
||||
#define IDC_CONFIGURE_SCSI_4 1097
|
||||
#define IDC_CHECK_CASSETTE 1098
|
||||
#define IDC_OTHER_PERIPH 1110 /* storage controllers config */
|
||||
#define IDC_COMBO_HDC 1111
|
||||
#define IDC_CONFIGURE_HDC 1112
|
||||
#define IDC_CHECK_IDE_TER 1113
|
||||
#define IDC_BUTTON_IDE_TER 1114
|
||||
#define IDC_CHECK_IDE_QUA 1115
|
||||
#define IDC_BUTTON_IDE_QUA 1116
|
||||
#define IDC_GROUP_SCSI 1117
|
||||
#define IDC_COMBO_SCSI_1 1118
|
||||
#define IDC_COMBO_SCSI_2 1119
|
||||
#define IDC_COMBO_SCSI_3 1120
|
||||
#define IDC_COMBO_SCSI_4 1121
|
||||
#define IDC_CONFIGURE_SCSI_1 1122
|
||||
#define IDC_CONFIGURE_SCSI_2 1123
|
||||
#define IDC_CONFIGURE_SCSI_3 1124
|
||||
#define IDC_CONFIGURE_SCSI_4 1125
|
||||
#define IDC_CHECK_CASSETTE 1126
|
||||
|
||||
#define IDC_HARD_DISKS 1100 /* hard disks config */
|
||||
#define IDC_LIST_HARD_DISKS 1101
|
||||
#define IDC_BUTTON_HDD_ADD_NEW 1102
|
||||
#define IDC_BUTTON_HDD_ADD 1103
|
||||
#define IDC_BUTTON_HDD_REMOVE 1104
|
||||
#define IDC_COMBO_HD_BUS 1105
|
||||
#define IDC_COMBO_HD_CHANNEL 1106
|
||||
#define IDC_COMBO_HD_ID 1107
|
||||
#define IDC_COMBO_HD_LUN 1108
|
||||
#define IDC_COMBO_HD_CHANNEL_IDE 1109
|
||||
#define IDC_HARD_DISKS 1130 /* hard disks config */
|
||||
#define IDC_LIST_HARD_DISKS 1131
|
||||
#define IDC_BUTTON_HDD_ADD_NEW 1132
|
||||
#define IDC_BUTTON_HDD_ADD 1133
|
||||
#define IDC_BUTTON_HDD_REMOVE 1134
|
||||
#define IDC_COMBO_HD_BUS 1135
|
||||
#define IDC_COMBO_HD_CHANNEL 1136
|
||||
#define IDC_COMBO_HD_ID 1137
|
||||
#define IDC_COMBO_HD_LUN 1138
|
||||
#define IDC_COMBO_HD_CHANNEL_IDE 1139
|
||||
|
||||
#define IDC_EDIT_HD_FILE_NAME 1110 /* add hard disk dialog */
|
||||
#define IDC_EDIT_HD_SPT 1111
|
||||
#define IDC_EDIT_HD_HPC 1112
|
||||
#define IDC_EDIT_HD_CYL 1113
|
||||
#define IDC_EDIT_HD_SIZE 1114
|
||||
#define IDC_COMBO_HD_TYPE 1115
|
||||
#define IDC_PBAR_IMG_CREATE 1116
|
||||
#define IDC_COMBO_HD_IMG_FORMAT 1117
|
||||
#define IDC_COMBO_HD_BLOCK_SIZE 1118
|
||||
#define IDC_EDIT_HD_FILE_NAME 1140 /* add hard disk dialog */
|
||||
#define IDC_EDIT_HD_SPT 1141
|
||||
#define IDC_EDIT_HD_HPC 1142
|
||||
#define IDC_EDIT_HD_CYL 1143
|
||||
#define IDC_EDIT_HD_SIZE 1144
|
||||
#define IDC_COMBO_HD_TYPE 1145
|
||||
#define IDC_PBAR_IMG_CREATE 1146
|
||||
#define IDC_COMBO_HD_IMG_FORMAT 1147
|
||||
#define IDC_COMBO_HD_BLOCK_SIZE 1148
|
||||
|
||||
#define IDC_REMOV_DEVICES 1120 /* floppy and cd-rom drives config */
|
||||
#define IDC_LIST_FLOPPY_DRIVES 1121
|
||||
#define IDC_COMBO_FD_TYPE 1122
|
||||
#define IDC_CHECKTURBO 1123
|
||||
#define IDC_CHECKBPB 1124
|
||||
#define IDC_LIST_CDROM_DRIVES 1125
|
||||
#define IDC_COMBO_CD_BUS 1126
|
||||
#define IDC_COMBO_CD_ID 1127
|
||||
#define IDC_COMBO_CD_LUN 1128
|
||||
#define IDC_COMBO_CD_CHANNEL_IDE 1129
|
||||
#define IDC_CHECKEARLY 1130
|
||||
#define IDC_REMOV_DEVICES 1150 /* floppy and cd-rom drives config */
|
||||
#define IDC_LIST_FLOPPY_DRIVES 1151
|
||||
#define IDC_COMBO_FD_TYPE 1152
|
||||
#define IDC_CHECKTURBO 1153
|
||||
#define IDC_CHECKBPB 1154
|
||||
#define IDC_LIST_CDROM_DRIVES 1155
|
||||
#define IDC_COMBO_CD_BUS 1156
|
||||
#define IDC_COMBO_CD_ID 1157
|
||||
#define IDC_COMBO_CD_LUN 1158
|
||||
#define IDC_COMBO_CD_CHANNEL_IDE 1159
|
||||
#define IDC_CHECKEARLY 1160
|
||||
|
||||
#define IDC_LIST_ZIP_DRIVES 1140 /* other removable devices config */
|
||||
#define IDC_COMBO_ZIP_BUS 1141
|
||||
#define IDC_COMBO_ZIP_ID 1142
|
||||
#define IDC_COMBO_ZIP_LUN 1143
|
||||
#define IDC_COMBO_ZIP_CHANNEL_IDE 1144
|
||||
#define IDC_CHECK250 1145
|
||||
#define IDC_COMBO_CD_SPEED 1146
|
||||
#define IDC_LIST_MO_DRIVES 1147
|
||||
#define IDC_COMBO_MO_BUS 1148
|
||||
#define IDC_COMBO_MO_ID 1149
|
||||
#define IDC_COMBO_MO_LUN 1150
|
||||
#define IDC_COMBO_MO_CHANNEL_IDE 1151
|
||||
#define IDC_COMBO_MO_TYPE 1152
|
||||
#define IDC_LIST_ZIP_DRIVES 1170 /* other removable devices config */
|
||||
#define IDC_COMBO_ZIP_BUS 1171
|
||||
#define IDC_COMBO_ZIP_ID 1172
|
||||
#define IDC_COMBO_ZIP_LUN 1173
|
||||
#define IDC_COMBO_ZIP_CHANNEL_IDE 1174
|
||||
#define IDC_CHECK250 1175
|
||||
#define IDC_COMBO_CD_SPEED 1176
|
||||
#define IDC_LIST_MO_DRIVES 1177
|
||||
#define IDC_COMBO_MO_BUS 1178
|
||||
#define IDC_COMBO_MO_ID 1179
|
||||
#define IDC_COMBO_MO_LUN 1170
|
||||
#define IDC_COMBO_MO_CHANNEL_IDE 1181
|
||||
#define IDC_COMBO_MO_TYPE 1182
|
||||
|
||||
#define IDC_CHECK_BUGGER 1160 /* other periph config */
|
||||
#define IDC_CHECK_POSTCARD 1161
|
||||
#define IDC_COMBO_ISARTC 1162
|
||||
#define IDC_CONFIGURE_ISARTC 1163
|
||||
#define IDC_COMBO_FDC 1164
|
||||
#define IDC_CONFIGURE_FDC 1165
|
||||
#define IDC_GROUP_ISAMEM 1166
|
||||
#define IDC_COMBO_ISAMEM_1 1167
|
||||
#define IDC_COMBO_ISAMEM_2 1168
|
||||
#define IDC_COMBO_ISAMEM_3 1169
|
||||
#define IDC_COMBO_ISAMEM_4 1170
|
||||
#define IDC_CONFIGURE_ISAMEM_1 1171
|
||||
#define IDC_CONFIGURE_ISAMEM_2 1172
|
||||
#define IDC_CONFIGURE_ISAMEM_3 1173
|
||||
#define IDC_CONFIGURE_ISAMEM_4 1174
|
||||
#define IDC_CHECK_BUGGER 1190 /* other periph config */
|
||||
#define IDC_CHECK_POSTCARD 1191
|
||||
#define IDC_COMBO_ISARTC 1192
|
||||
#define IDC_CONFIGURE_ISARTC 1193
|
||||
#define IDC_COMBO_FDC 1194
|
||||
#define IDC_CONFIGURE_FDC 1195
|
||||
#define IDC_GROUP_ISAMEM 1196
|
||||
#define IDC_COMBO_ISAMEM_1 1197
|
||||
#define IDC_COMBO_ISAMEM_2 1198
|
||||
#define IDC_COMBO_ISAMEM_3 1199
|
||||
#define IDC_COMBO_ISAMEM_4 1200
|
||||
#define IDC_CONFIGURE_ISAMEM_1 1201
|
||||
#define IDC_CONFIGURE_ISAMEM_2 1202
|
||||
#define IDC_CONFIGURE_ISAMEM_3 1203
|
||||
#define IDC_CONFIGURE_ISAMEM_4 1204
|
||||
|
||||
#define IDC_SLIDER_GAIN 1180 /* sound gain dialog */
|
||||
#define IDC_SLIDER_GAIN 1210 /* sound gain dialog */
|
||||
|
||||
#define IDC_EDIT_FILE_NAME 1200 /* new floppy image dialog */
|
||||
#define IDC_COMBO_DISK_SIZE 1201
|
||||
#define IDC_COMBO_RPM_MODE 1202
|
||||
#define IDC_EDIT_FILE_NAME 1220 /* new floppy image dialog */
|
||||
#define IDC_COMBO_DISK_SIZE 1221
|
||||
#define IDC_COMBO_RPM_MODE 1222
|
||||
|
||||
#define IDC_COMBO_LANG 1009 /* change language dialog */
|
||||
#define IDC_COMBO_ICON 1010
|
||||
@@ -329,19 +345,29 @@
|
||||
#define IDC_CONFIG_BASE 1300
|
||||
#define IDC_CONFIGURE_VID 1300
|
||||
#define IDC_CONFIGURE_VID_2 1301
|
||||
#define IDC_CONFIGURE_SND 1302
|
||||
#define IDC_CONFIGURE_VOODOO 1303
|
||||
#define IDC_CONFIGURE_MOD 1304
|
||||
#define IDC_CONFIGURE_NET_TYPE 1305
|
||||
#define IDC_CONFIGURE_BUSLOGIC 1306
|
||||
#define IDC_CONFIGURE_PCAP 1307
|
||||
#define IDC_CONFIGURE_NET 1308
|
||||
#define IDC_CONFIGURE_MIDI_OUT 1309
|
||||
#define IDC_CONFIGURE_MIDI_IN 1310
|
||||
#define IDC_JOY1 1311
|
||||
#define IDC_JOY2 1312
|
||||
#define IDC_JOY3 1313
|
||||
#define IDC_JOY4 1314
|
||||
#define IDC_CONFIGURE_SND1 1302
|
||||
#define IDC_CONFIGURE_SND2 1303
|
||||
#define IDC_CONFIGURE_SND3 1304
|
||||
#define IDC_CONFIGURE_SND4 1305
|
||||
#define IDC_CONFIGURE_VOODOO 1306
|
||||
#define IDC_CONFIGURE_NET1_TYPE 1310
|
||||
#define IDC_CONFIGURE_NET2_TYPE 1311
|
||||
#define IDC_CONFIGURE_NET3_TYPE 1312
|
||||
#define IDC_CONFIGURE_NET4_TYPE 1313
|
||||
#define IDC_CONFIGURE_PCAP1 1314
|
||||
#define IDC_CONFIGURE_PCAP2 1315
|
||||
#define IDC_CONFIGURE_PCAP3 1316
|
||||
#define IDC_CONFIGURE_PCAP4 1317
|
||||
#define IDC_CONFIGURE_NET1 1318
|
||||
#define IDC_CONFIGURE_NET2 1319
|
||||
#define IDC_CONFIGURE_NET3 1320
|
||||
#define IDC_CONFIGURE_NET4 1321
|
||||
#define IDC_CONFIGURE_MIDI_OUT 1322
|
||||
#define IDC_CONFIGURE_MIDI_IN 1323
|
||||
#define IDC_JOY1 1330
|
||||
#define IDC_JOY2 1331
|
||||
#define IDC_JOY3 1332
|
||||
#define IDC_JOY4 1333
|
||||
#define IDC_HDTYPE 1380
|
||||
#define IDC_RENDER 1381
|
||||
#define IDC_STATUS 1382
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#ifndef EMU_SOUND_H
|
||||
#define EMU_SOUND_H
|
||||
|
||||
#define SOUND_CARD_MAX 4 /* currently we support up to 4 sound cards and a standalome MPU401 */
|
||||
|
||||
extern int sound_gain;
|
||||
|
||||
#define SOUNDBUFLEN (48000 / 50)
|
||||
@@ -38,7 +40,7 @@ extern int gated,
|
||||
speakon;
|
||||
|
||||
extern int sound_pos_global;
|
||||
extern int sound_card_current;
|
||||
extern int sound_card_current[SOUND_CARD_MAX];
|
||||
|
||||
extern void sound_add_handler(void (*get_buffer)(int32_t *buffer,
|
||||
int len, void *p),
|
||||
|
||||
@@ -1,58 +1,60 @@
|
||||
/*
|
||||
* 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.
|
||||
* 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.
|
||||
* This file is part of the 86Box distribution.
|
||||
*
|
||||
* Definitions for project version, branding, and external links.
|
||||
* Definitions for project version, branding, and external links.
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2020 Miran Grca.
|
||||
*
|
||||
* Authors: Miran Grca, <mgrca8@gmail.com>
|
||||
*
|
||||
* Copyright 2020 Miran Grca.
|
||||
*/
|
||||
|
||||
#define _LSTR(s) L ## s
|
||||
#define LSTR(s) _LSTR(s)
|
||||
|
||||
/* Version info. */
|
||||
#define EMU_NAME "@CMAKE_PROJECT_NAME@"
|
||||
#define EMU_NAME_W LSTR(EMU_NAME)
|
||||
#define EMU_NAME "@CMAKE_PROJECT_NAME@"
|
||||
#define EMU_NAME_W LSTR(EMU_NAME)
|
||||
|
||||
#define EMU_VERSION "@CMAKE_PROJECT_VERSION@"
|
||||
#define EMU_VERSION_W LSTR(EMU_VERSION)
|
||||
#define EMU_VERSION_EX "3.50" /* frozen due to IDE re-detection behavior on Windows */
|
||||
#define EMU_VERSION_MAJ @CMAKE_PROJECT_VERSION_MAJOR@
|
||||
#define EMU_VERSION_MIN @CMAKE_PROJECT_VERSION_MINOR@
|
||||
#define EMU_VERSION "@CMAKE_PROJECT_VERSION@"
|
||||
#define EMU_VERSION_W LSTR(EMU_VERSION)
|
||||
#define EMU_VERSION_EX "3.50" /* frozen due to IDE re-detection behavior on Windows */
|
||||
#define EMU_VERSION_MAJ @CMAKE_PROJECT_VERSION_MAJOR@
|
||||
#define EMU_VERSION_MIN @CMAKE_PROJECT_VERSION_MINOR@
|
||||
#define EMU_VERSION_PATCH @CMAKE_PROJECT_VERSION_PATCH@
|
||||
|
||||
#cmakedefine EMU_BUILD "@EMU_BUILD@"
|
||||
#define EMU_BUILD_NUM @EMU_BUILD_NUM@
|
||||
#cmakedefine EMU_GIT_HASH "@EMU_GIT_HASH@"
|
||||
#cmakedefine EMU_BUILD "@EMU_BUILD@"
|
||||
#define EMU_BUILD_NUM @EMU_BUILD_NUM@
|
||||
#cmakedefine EMU_GIT_HASH "@EMU_GIT_HASH@"
|
||||
|
||||
#ifdef EMU_BUILD
|
||||
# define EMU_BUILD_W LSTR(EMU_BUILD)
|
||||
# define EMU_VERSION_FULL EMU_VERSION " [" EMU_BUILD "]"
|
||||
# define EMU_VERSION_FULL_W EMU_VERSION_W L" [" EMU_BUILD_W L"]"
|
||||
# define EMU_BUILD_W LSTR(EMU_BUILD)
|
||||
# define EMU_VERSION_FULL EMU_VERSION " [" EMU_BUILD "]"
|
||||
# define EMU_VERSION_FULL_W EMU_VERSION_W L" [" EMU_BUILD_W L"]"
|
||||
#else
|
||||
# define EMU_VERSION_FULL EMU_VERSION
|
||||
# define EMU_VERSION_FULL_W EMU_VERSION_W
|
||||
# define EMU_VERSION_FULL EMU_VERSION
|
||||
# define EMU_VERSION_FULL_W EMU_VERSION_W
|
||||
#endif
|
||||
#ifdef EMU_GIT_HASH
|
||||
# define EMU_GIT_HASH_W LSTR(EMU_GIT_HASH)
|
||||
# define EMU_GIT_HASH_W LSTR(EMU_GIT_HASH)
|
||||
#endif
|
||||
|
||||
#define COPYRIGHT_YEAR "@EMU_COPYRIGHT_YEAR@"
|
||||
#define COPYRIGHT_YEAR "@EMU_COPYRIGHT_YEAR@"
|
||||
|
||||
/* Web URL info. */
|
||||
#define EMU_SITE "86box.net"
|
||||
#define EMU_SITE_W LSTR(EMU_SITE)
|
||||
#define EMU_ROMS_URL "https://github.com/86Box/roms/releases/latest"
|
||||
#define EMU_ROMS_URL_W LSTR(EMU_ROMS_URL)
|
||||
#define EMU_SITE "86box.net"
|
||||
#define EMU_SITE_W LSTR(EMU_SITE)
|
||||
#define EMU_ROMS_URL "https://github.com/86Box/roms/releases/latest"
|
||||
#define EMU_ROMS_URL_W LSTR(EMU_ROMS_URL)
|
||||
#ifdef RELEASE_BUILD
|
||||
# define EMU_DOCS_URL "https://86box.readthedocs.io/en/v@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@/"
|
||||
# define EMU_DOCS_URL "https://86box.readthedocs.io/en/v@CMAKE_PROJECT_VERSION_MAJOR@.@CMAKE_PROJECT_VERSION_MINOR@/"
|
||||
#else
|
||||
# define EMU_DOCS_URL "https://86box.readthedocs.io"
|
||||
# define EMU_DOCS_URL "https://86box.readthedocs.io"
|
||||
#endif
|
||||
#define EMU_DOCS_URL_W LSTR(EMU_DOCS_URL)
|
||||
#define EMU_DOCS_URL_W LSTR(EMU_DOCS_URL)
|
||||
|
||||
@@ -461,7 +461,7 @@ machine_at_s1846_init(const machine_t *model)
|
||||
device_add(&intel_flash_bxt_device);
|
||||
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL) {
|
||||
if (sound_card_current[0] == SOUND_INTERNAL) {
|
||||
device_add(&es1371_onboard_device);
|
||||
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
|
||||
}
|
||||
@@ -606,7 +606,7 @@ machine_at_gt694va_init(const machine_t *model)
|
||||
hwm_values.fans[2] = 0; /* unused */
|
||||
hwm_values.temperatures[2] = 0; /* unused */
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL) {
|
||||
if (sound_card_current[0] == SOUND_INTERNAL) {
|
||||
device_add(&es1371_onboard_device);
|
||||
device_add(&cs4297_device); /* assumed */
|
||||
}
|
||||
@@ -670,7 +670,7 @@ machine_at_ms6168_common_init(const machine_t *model)
|
||||
device_add(&intel_flash_bxt_device);
|
||||
spd_register(SPD_TYPE_SDRAM, 0x3, 256);
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL) {
|
||||
if (sound_card_current[0] == SOUND_INTERNAL) {
|
||||
device_add(&es1371_onboard_device);
|
||||
device_add(&cs4297_device);
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ machine_at_s1857_init(const machine_t *model)
|
||||
device_add(&intel_flash_bxt_device);
|
||||
spd_register(SPD_TYPE_SDRAM, 0x7, 256);
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL) {
|
||||
if (sound_card_current[0] == SOUND_INTERNAL) {
|
||||
device_add(&es1371_onboard_device);
|
||||
device_add(&cs4297_device); /* found on other Tyan boards around the same time */
|
||||
}
|
||||
@@ -127,13 +127,13 @@ machine_at_p6bap_init(const machine_t *model)
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 1, 2, 0, 0);
|
||||
pci_register_slot(0x14, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x13, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
pci_register_slot(0x12, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
pci_register_slot(0x11, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x10, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 4);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 3, 5);
|
||||
pci_register_slot(0x09, PCI_CARD_NORMAL, 1, 2, 3, 5);
|
||||
pci_register_slot(0x0a, PCI_CARD_NORMAL, 2, 3, 5, 1);
|
||||
pci_register_slot(0x0b, PCI_CARD_NORMAL, 3, 5, 1, 2);
|
||||
pci_register_slot(0x0c, PCI_CARD_NORMAL, 5, 1, 2, 3);
|
||||
pci_register_slot(0x0d, PCI_CARD_NORMAL, 5, 3, 2, 1);
|
||||
pci_register_slot(0x01, PCI_CARD_AGPBRIDGE, 1, 2, 3, 5);
|
||||
device_add(&via_apro133a_device); /* Rebranded as ET82C693A */
|
||||
device_add(&via_vt82c596b_device); /* Rebranded as ET82C696B */
|
||||
device_add(&w83977ef_device);
|
||||
@@ -413,7 +413,7 @@ machine_at_cuv4xls_init(const machine_t *model)
|
||||
spd_register(SPD_TYPE_SDRAM, 0xF, 1024);
|
||||
device_add(&as99127f_device); /* fans: Chassis, CPU, Power; temperatures: MB, JTPWR, CPU */
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL)
|
||||
if (sound_card_current[0] == SOUND_INTERNAL)
|
||||
device_add(&cmi8738_onboard_device);
|
||||
|
||||
return ret;
|
||||
@@ -451,7 +451,7 @@ machine_at_6via90ap_init(const machine_t *model)
|
||||
hwm_values.temperatures[1] += 2; /* System offset */
|
||||
hwm_values.temperatures[2] = 0; /* unused */
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL)
|
||||
if (sound_card_current[0] == SOUND_INTERNAL)
|
||||
device_add(&alc100_device); /* ALC100P identified on similar Acorp boards (694TA, 6VIA90A1) */
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -160,35 +160,6 @@ machine_at_apollo_init(const machine_t *model)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_exp8551_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/exp8551/AMI20.BIO",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_device);
|
||||
device_add(&w83787f_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_zappa_init(const machine_t *model)
|
||||
{
|
||||
@@ -246,35 +217,6 @@ machine_at_powermatev_init(const machine_t *model)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_mb500n_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/mb500n/031396s.bin",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
device_add(&keyboard_ps2_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_no_mirq_device);
|
||||
device_add(&fdc37c665_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_hawk_init(const machine_t *model)
|
||||
{
|
||||
@@ -402,3 +344,32 @@ machine_at_sq588_init(const machine_t *model)
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_p54sps_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/p54sps/35s106.bin",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x01, PCI_CARD_SOUTHBRIDGE, 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);
|
||||
pci_register_slot(0x09, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
device_add(&sis_85c50x_device);
|
||||
device_add(&ide_pci_2ch_device);
|
||||
device_add(&keyboard_at_ami_device);
|
||||
device_add(&w83787f_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -120,6 +120,35 @@ machine_at_p54tp4xe_mr_init(const machine_t *model)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_exp8551_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/exp8551/AMI20.BIO",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
device_add(&keyboard_ps2_ami_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_device);
|
||||
device_add(&w83787f_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_gw2katx_init(const machine_t *model)
|
||||
{
|
||||
@@ -267,6 +296,35 @@ machine_at_pb640_init(const machine_t *model)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_mb500n_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = bios_load_linear("roms/machines/mb500n/031396s.bin",
|
||||
0x000e0000, 131072, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
|
||||
machine_at_common_init(model);
|
||||
|
||||
pci_init(PCI_CONFIG_TYPE_1);
|
||||
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
|
||||
pci_register_slot(0x14, PCI_CARD_NORMAL, 1, 2, 3, 4);
|
||||
pci_register_slot(0x13, PCI_CARD_NORMAL, 2, 3, 4, 1);
|
||||
pci_register_slot(0x12, PCI_CARD_NORMAL, 3, 4, 1, 2);
|
||||
pci_register_slot(0x11, PCI_CARD_NORMAL, 4, 1, 2, 3);
|
||||
pci_register_slot(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
|
||||
device_add(&keyboard_ps2_pci_device);
|
||||
device_add(&i430fx_device);
|
||||
device_add(&piix_no_mirq_device);
|
||||
device_add(&fdc37c665_device);
|
||||
device_add(&intel_flash_bxt_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
machine_at_fmb_init(const machine_t *model)
|
||||
{
|
||||
|
||||
@@ -268,7 +268,7 @@ machine_at_ficva503a_init(const machine_t *model)
|
||||
hwm_values.temperatures[1] += 2; /* System offset */
|
||||
hwm_values.temperatures[2] = 0; /* unused */
|
||||
|
||||
if (sound_card_current == SOUND_INTERNAL)
|
||||
if (sound_card_current[0] == SOUND_INTERNAL)
|
||||
device_add(&wm9701a_device); /* on daughtercard */
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -7772,43 +7772,6 @@ const machine_t machines[] = {
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has AMIKey H KBC firmware. */
|
||||
{
|
||||
.name = "[i430FX] DataExpert EXP8551",
|
||||
.internal_name = "exp8551",
|
||||
.type = MACHINE_TYPE_SOCKET5,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430FX,
|
||||
.init = machine_at_exp8551_init,
|
||||
.pad = 0,
|
||||
.pad0 = 0,
|
||||
.pad1 = MACHINE_AVAILABLE,
|
||||
.pad2 = 0,
|
||||
.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_GAMEPORT,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc = KBC_UNKNOWN,
|
||||
.kbc_p1 = 0,
|
||||
.gpio = 0,
|
||||
.device = NULL,
|
||||
.vid_device = NULL,
|
||||
.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'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI . */
|
||||
@@ -7885,43 +7848,6 @@ const machine_t machines[] = {
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has a VIA VT82C42N KBC. */
|
||||
{
|
||||
.name = "[i430FX] PC Partner MB500N",
|
||||
.internal_name = "mb500n",
|
||||
.type = MACHINE_TYPE_SOCKET5,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430FX,
|
||||
.init = machine_at_mb500n_init,
|
||||
.pad = 0,
|
||||
.pad0 = 0,
|
||||
.pad1 = MACHINE_AVAILABLE,
|
||||
.pad2 = 0,
|
||||
.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_PCI,
|
||||
.flags = MACHINE_IDE_DUAL,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc = KBC_UNKNOWN,
|
||||
.kbc_p1 = 0,
|
||||
.gpio = 0,
|
||||
.device = NULL,
|
||||
.vid_device = NULL,
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has AMIKey Z(!) KBC firmware. */
|
||||
{
|
||||
.name = "[i430FX] TriGem Hawk",
|
||||
@@ -8114,6 +8040,43 @@ const machine_t machines[] = {
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* This machine has a Winbond W83C842 KBC */
|
||||
{
|
||||
.name = "[SiS 501] Gemlight GMB-P54SPS",
|
||||
.internal_name = "p54sps",
|
||||
.type = MACHINE_TYPE_SOCKET5,
|
||||
.chipset = MACHINE_CHIPSET_SIS_501,
|
||||
.init = machine_at_p54sps_init,
|
||||
.pad = 0,
|
||||
.pad0 = 0,
|
||||
.pad1 = MACHINE_AVAILABLE,
|
||||
.pad2 = 0,
|
||||
.cpu = {
|
||||
.package = CPU_PKG_SOCKET5_7,
|
||||
CPU_BLOCK(CPU_PENTIUMMMX),
|
||||
.min_bus = 50000000,
|
||||
.max_bus = 66666667,
|
||||
.min_voltage = 3520,
|
||||
.max_voltage = 3520,
|
||||
.min_multi = 1.5,
|
||||
.max_multi = 1.5
|
||||
},
|
||||
.bus_flags = MACHINE_PCI,
|
||||
.flags = MACHINE_IDE_DUAL,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc = KBC_JETKEY_5_W83C42,
|
||||
.kbc_p1 = 0,
|
||||
.gpio = 0,
|
||||
.device = NULL,
|
||||
.vid_device = NULL,
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
|
||||
/* Socket 7 (Single Voltage) machines */
|
||||
/* 430FX */
|
||||
@@ -8191,6 +8154,43 @@ const machine_t machines[] = {
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has AMIKey H KBC firmware. */
|
||||
{
|
||||
.name = "[i430FX] DataExpert EXP8551",
|
||||
.internal_name = "exp8551",
|
||||
.type = MACHINE_TYPE_SOCKET7_3V,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430FX,
|
||||
.init = machine_at_exp8551_init,
|
||||
.pad = 0,
|
||||
.pad0 = 0,
|
||||
.pad1 = MACHINE_AVAILABLE,
|
||||
.pad2 = 0,
|
||||
.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_GAMEPORT,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc = KBC_UNKNOWN,
|
||||
.kbc_p1 = 0,
|
||||
.gpio = 0,
|
||||
.device = NULL,
|
||||
.vid_device = NULL,
|
||||
.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'.
|
||||
Command 0xA0 copyright string: (C)1994 AMI . */
|
||||
@@ -8460,6 +8460,43 @@ const machine_t machines[] = {
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has a VIA VT82C42N KBC. */
|
||||
{
|
||||
.name = "[i430FX] PC Partner MB500N",
|
||||
.internal_name = "mb500n",
|
||||
.type = MACHINE_TYPE_SOCKET7_3V,
|
||||
.chipset = MACHINE_CHIPSET_INTEL_430FX,
|
||||
.init = machine_at_mb500n_init,
|
||||
.pad = 0,
|
||||
.pad0 = 0,
|
||||
.pad1 = MACHINE_AVAILABLE,
|
||||
.pad2 = 0,
|
||||
.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_PCI,
|
||||
.flags = MACHINE_IDE_DUAL,
|
||||
.ram = {
|
||||
.min = 8192,
|
||||
.max = 131072,
|
||||
.step = 8192
|
||||
},
|
||||
.nvrmask = 127,
|
||||
.kbc = KBC_UNKNOWN,
|
||||
.kbc_p1 = 0,
|
||||
.gpio = 0,
|
||||
.device = NULL,
|
||||
.vid_device = NULL,
|
||||
.snd_device = NULL,
|
||||
.net_device = NULL
|
||||
},
|
||||
/* Has an AMI 'H' KBC firmware (1992). */
|
||||
{
|
||||
.name = "[i430FX] QDI FMB",
|
||||
|
||||
@@ -13,10 +13,12 @@
|
||||
* Authors: Sarah Walker, <https://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
* Melissa Goad, <mszoopers@protonmail.com>
|
||||
* Jasmine Iwanek, <jriwanek@gmail.com>
|
||||
*
|
||||
* Copyright 2008-2020 Sarah Walker.
|
||||
* Copyright 2016-2020 Miran Grca.
|
||||
* Copyright 2020 Melissa Goad.
|
||||
* Copyright 2020 Melissa Goad.
|
||||
* Copyright 2022-2023 Jasmine Iwanek.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@@ -67,23 +69,69 @@ static char flash_path[1024];
|
||||
/* 1st cycle variant only on 39 */
|
||||
|
||||
#define SST 0xbf /* SST Manufacturer's ID */
|
||||
|
||||
#define SST29EE512 0x5d00
|
||||
#define SST29LE_VE512 0x3d00
|
||||
#define SST29EE010 0x0700
|
||||
#define SST29LE_VE010 0x0800
|
||||
#define SST29EE020 0x1000
|
||||
#define SST29LE_VE020 0x1200
|
||||
|
||||
#define SST39SF512 0xb400
|
||||
#define SST39SF010 0xb500
|
||||
#define SST39SF020 0xb600
|
||||
#define SST39SF040 0xb700
|
||||
|
||||
#define WINBOND 0xda /* Winbond Manufacturer's ID */
|
||||
#define W29C010 0xC100
|
||||
#define W29C020 0x4500
|
||||
#define SST39LF512 0xd400
|
||||
#define SST39LF010 0xd500
|
||||
#define SST39LF020 0xd600
|
||||
#define SST39LF040 0xd700
|
||||
#define SST39LF080 0xd800
|
||||
#define SST39LF016 0xd900
|
||||
|
||||
#define SIZE_512K 0x010000
|
||||
#define SIZE_1M 0x020000
|
||||
#define SIZE_2M 0x040000
|
||||
#define SIZE_4M 0x080000
|
||||
/*
|
||||
// 16 wide
|
||||
#define SST39WF400 0x272f
|
||||
#define SST39WF400B 0x272e
|
||||
#define SST39WF800 0x273f
|
||||
#define SST39WF800B 0x273e
|
||||
#define SST39WF1601 0xbf274b
|
||||
#define SST39WF1602 0xbf274a
|
||||
|
||||
#define SST39LF100 0x2788
|
||||
#define SST39LF200 0x2789
|
||||
#define SST39LF400 0x2780
|
||||
#define SST39LF800 0x2781
|
||||
#define SST39LF160 0x2782
|
||||
*/
|
||||
|
||||
#define SST49LF002 0x5700
|
||||
#define SST49LF020 0x6100
|
||||
#define SST49LF020A 0x5200
|
||||
#define SST49LF003 0x1b00
|
||||
#define SST49LF004 0x6000
|
||||
#define SST49LF004C 0x5400
|
||||
#define SST49LF040 0x5100
|
||||
#define SST49LF008 0x5a00
|
||||
#define SST49LF008C 0x5900
|
||||
#define SST49LF080 0x5b00
|
||||
#define SST49LF030 0x1c00
|
||||
#define SST49LF160 0x4c00
|
||||
#define SST49LF016 0x5c00
|
||||
|
||||
#define WINBOND 0xda /* Winbond Manufacturer's ID */
|
||||
#define W29C512 0xc800
|
||||
#define W29C010 0xc100
|
||||
#define W29C020 0x4500
|
||||
#define W29C040 0x4600
|
||||
|
||||
#define SIZE_512K 0x010000
|
||||
#define SIZE_1M 0x020000
|
||||
#define SIZE_2M 0x040000
|
||||
#define SIZE_3M 0x060000
|
||||
#define SIZE_4M 0x080000
|
||||
#define SIZE_8M 0x100000
|
||||
#define SIZE_16M 0x200000
|
||||
|
||||
static void
|
||||
sst_sector_erase(sst_t *dev, uint32_t addr)
|
||||
@@ -483,20 +531,6 @@ const device_t sst_flash_29ee010_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t winbond_flash_w29c010_device = {
|
||||
.name = "Winbond W29C010 Flash BIOS",
|
||||
.internal_name = "winbond_flash_w29c010",
|
||||
.flags = 0,
|
||||
.local = WINBOND | W29C010 | SIZE_1M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_29ee020_device = {
|
||||
.name = "SST 29EE020 Flash BIOS",
|
||||
.internal_name = "sst_flash_29ee020",
|
||||
@@ -511,6 +545,34 @@ const device_t sst_flash_29ee020_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t winbond_flash_w29c512_device = {
|
||||
.name = "Winbond W29C512 Flash BIOS",
|
||||
.internal_name = "winbond_flash_w29c512",
|
||||
.flags = 0,
|
||||
.local = WINBOND | W29C010 | SIZE_512K,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t winbond_flash_w29c010_device = {
|
||||
.name = "Winbond W29C010 Flash BIOS",
|
||||
.internal_name = "winbond_flash_w29c010",
|
||||
.flags = 0,
|
||||
.local = WINBOND | W29C010 | SIZE_1M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t winbond_flash_w29c020_device = {
|
||||
.name = "Winbond W29C020 Flash BIOS",
|
||||
.internal_name = "winbond_flash_w29c020",
|
||||
@@ -525,6 +587,34 @@ const device_t winbond_flash_w29c020_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t winbond_flash_w29c040_device = {
|
||||
.name = "Winbond W29C040 Flash BIOS",
|
||||
.internal_name = "winbond_flash_w29c040",
|
||||
.flags = 0,
|
||||
.local = WINBOND | W29C040 | SIZE_4M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39sf512_device = {
|
||||
.name = "SST 39SF512 Flash BIOS",
|
||||
.internal_name = "sst_flash_39sf512",
|
||||
.flags = 0,
|
||||
.local = SST | SST39SF512 | SIZE_512K,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39sf010_device = {
|
||||
.name = "SST 39SF010 Flash BIOS",
|
||||
.internal_name = "sst_flash_39sf010",
|
||||
@@ -566,3 +656,278 @@ const device_t sst_flash_39sf040_device = {
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39lf512_device = {
|
||||
.name = "SST 39LF512 Flash BIOS",
|
||||
.internal_name = "sst_flash_39lf512",
|
||||
.flags = 0,
|
||||
.local = SST | SST39LF512 | SIZE_512K,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39lf010_device = {
|
||||
.name = "SST 39LF010 Flash BIOS",
|
||||
.internal_name = "sst_flash_39lf010",
|
||||
.flags = 0,
|
||||
.local = SST | SST39LF010 | SIZE_1M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39lf020_device = {
|
||||
.name = "SST 39LF020 Flash BIOS",
|
||||
.internal_name = "sst_flash_39lf020",
|
||||
.flags = 0,
|
||||
.local = SST | SST39LF020 | SIZE_2M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39lf040_device = {
|
||||
.name = "SST 39LF040 Flash BIOS",
|
||||
.internal_name = "sst_flash_39lf040",
|
||||
.flags = 0,
|
||||
.local = SST | SST39LF040 | SIZE_4M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39lf080_device = {
|
||||
.name = "SST 39LF080 Flash BIOS",
|
||||
.internal_name = "sst_flash_39lf080",
|
||||
.flags = 0,
|
||||
.local = SST | SST39LF080 | SIZE_8M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_39lf016_device = {
|
||||
.name = "SST 39LF016 Flash BIOS",
|
||||
.internal_name = "sst_flash_39lf016",
|
||||
.flags = 0,
|
||||
.local = SST | SST39LF016 | SIZE_16M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
/*
|
||||
* Firmware Hubs. The FWH signals are not implemented yet. Firmware Hubs do write cycles
|
||||
* to read/write on the flash. SST Flashes still do traditional flashing via PP Mode. Our
|
||||
* BIOS firmwares don't seem to utilize FWH R/W thus the FWH ports remain unknown for an
|
||||
* implementation. We just contain the ID's so the BIOS can do ESCD & DMI writes with no
|
||||
* worries.
|
||||
*/
|
||||
|
||||
const device_t sst_flash_49lf002_device = {
|
||||
.name = "SST 49LF002 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf002",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF002 | SIZE_2M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf020_device = {
|
||||
.name = "SST 49LF020 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf0020",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF020 | SIZE_2M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf020a_device = {
|
||||
.name = "SST 49LF020A Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf0020a",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF020A | SIZE_2M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf003_device = {
|
||||
.name = "SST 49LF003 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf003",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF003 | SIZE_3M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf030_device = {
|
||||
.name = "SST 49LF030 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf030",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF030 | SIZE_3M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf004_device = {
|
||||
.name = "SST 49LF004 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf004",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF004 | SIZE_4M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf004c_device = {
|
||||
.name = "SST 49LF004C Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf004c",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF004C | SIZE_4M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf040_device = {
|
||||
.name = "SST 49LF040 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf040",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF040 | SIZE_4M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf008_device = {
|
||||
.name = "SST 49LF008 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf008",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF008 | SIZE_8M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf008c_device = {
|
||||
.name = "SST 49LF008C Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf008c",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF008C | SIZE_8M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf080_device = {
|
||||
.name = "SST 49LF080 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf080",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF080 | SIZE_8M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf016_device = {
|
||||
.name = "SST 49LF016 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf016",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF016 | SIZE_16M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t sst_flash_49lf160_device = {
|
||||
|
||||
.name = "SST 49LF160 Firmware Hub",
|
||||
.internal_name = "sst_flash_49lf160",
|
||||
.flags = 0,
|
||||
.local = SST | SST49LF160 | SIZE_16M,
|
||||
.init = sst_init,
|
||||
.close = sst_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Zvuková karta:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Zvuková karta 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Zvuková karta 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Zvuková karta 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Zvuková karta 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI výstup:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI vstup:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Samostatný MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Použít zvuk FLOAT32"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Soundkarte:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Soundkarte 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Soundkarte 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Soundkarte 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Soundkarte 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI Out-Gerät:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI In-Gerät:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Standalone-MPU-401-Gerät"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "FLOAT32-Wiedergabe benutzen"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Sound card:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Sound card 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Sound card 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Sound card 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Sound card 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI Out Device:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI In Device:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Standalone MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Use FLOAT32 sound"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Sound card:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Sound card 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Sound card 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Sound card 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Sound card 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI Out Device:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI In Device:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Standalone MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Use FLOAT32 sound"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Mando 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Mando 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Tarjeta de sonido:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Tarjeta de sonido 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Tarjeta de sonido 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Tarjeta de sonido 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Tarjeta de sonido 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Dispositivo MIDI de salida:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Dispositivo MIDI de entrada:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "MPU-401 independiente"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Usar sonido FLOAT32"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Peliohjain 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Peliohjain 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Äänikortti:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Äänikortti 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Äänikortti 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Äänikortti 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Äänikortti 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI-ulostulo:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI-sisääntulo:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Erillinen MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Käytä FLOAT32-ääntä"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Manette 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Manette 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Carte son:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Carte son 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Carte son 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Carte son 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Carte son 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Sortie MIDI:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Entrée MIDI:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "MPU-401 autonome"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Utiliser le son FLOAT32"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Palica za igru 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Palica za igru 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Zvučna kartica:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Zvučna kartica 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Zvučna kartica 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Zvučna kartica 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Zvučna kartica 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Izlazni uređaj MIDI:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Ulazni uređaj MIDI:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Samostalni MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Koristi FLOAT32 za zvuk"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Játékvez. 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Játékvez. 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Hangkártya:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Hangkártya 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Hangkártya 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Hangkártya 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Hangkártya 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI-kimenet:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI-bemenet:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Különálló MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "FLOAT32 használata"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Scheda audio:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Scheda audio 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Scheda audio 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Scheda audio 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Scheda audio 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Uscita MIDI:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Entrata MIDI:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "MPU-401 autonomo"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Usa suono FLOAT32"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "ジョイスティック3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "ジョイスティック4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "サウンドカード:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "サウンドカード 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "サウンドカード 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "サウンドカード 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "サウンドカード 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI出力デバイス:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI入力デバイス:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "独立型MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "FLOAT32サウンドを使用する"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "조이스틱 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "조이스틱 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "사운드 카드:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "사운드 카드 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "사운드 카드 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "사운드 카드 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "사운드 카드 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI 출력 장치:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI 입력 장치:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "MPU-401 단독 사용"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "FLOAT32 사운드 사용"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Karta dźwiękowa:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Karta dźwiękowa 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Karta dźwiękowa 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Karta dźwiękowa 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Karta dźwiękowa 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Urządzenie wyjściowe MIDI:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Urządzenie wejściowe MIDI:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Samodzielne urządzenie MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Użyj dźwięku FLOAT32"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Placa de som:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Placa de som 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Placa de som 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Placa de som 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Placa de som 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Disp. de saída MIDI:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Disp. de entrada MIDI:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "MPU-401 autônomo"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Usar som FLOAT32"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Joystick 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Joystick 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Placa de som:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Placa de som 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Placa de som 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Placa de som 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Placa de som 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Disp. saída MIDI:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Disp. entrada MIDI:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "MPU-401 autónomo"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Utilizar som FLOAT32"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Джойстик 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Джойстик 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Звуковая карта:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Звуковая карта 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Звуковая карта 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Звуковая карта 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Звуковая карта 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI Out устр-во:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI In устр-во:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Отдельный MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "FLOAT32 звук"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Igralna palica 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Igralna palica 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Zvočna kartica:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Zvočna kartica 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Zvočna kartica 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Zvočna kartica 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Zvočna kartica 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "Izhodna naprava MIDI:"
|
||||
@@ -418,15 +427,6 @@ msgstr "Vhodna naprava MIDI:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Samostojen MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "Uporabi FLOAT32 za zvok"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Oyun kolu 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Oyun kolu 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Ses kartı:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Ses kartı 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Ses kartı 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Ses kartı 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Ses kartı 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI Çıkış Cihazı:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI Giriş Cihazı:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Bağımsız MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "FLOAT32 ses kullan"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "Джойстик 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "Джойстик 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "Звукова карта:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "Звукова карта 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "Звукова карта 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "Звукова карта 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "Звукова карта 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI Out при-ій:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI In при-ій:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "Окремий MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "FLOAT32 звук"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "操纵杆 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "操纵杆 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "声卡:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "声卡 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "声卡 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "声卡 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "声卡 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI 输出设备:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI 输入设备:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "独立 MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "使用单精度浮点 (FLOAT32)"
|
||||
|
||||
|
||||
@@ -406,8 +406,17 @@ msgstr "搖桿 3..."
|
||||
msgid "Joystick 4..."
|
||||
msgstr "搖桿 4..."
|
||||
|
||||
msgid "Sound card:"
|
||||
msgstr "音訊卡:"
|
||||
msgid "Sound card 1:"
|
||||
msgstr "音訊卡 1:"
|
||||
|
||||
msgid "Sound card 2:"
|
||||
msgstr "音訊卡 2:"
|
||||
|
||||
msgid "Sound card 3:"
|
||||
msgstr "音訊卡 3:"
|
||||
|
||||
msgid "Sound card 4:"
|
||||
msgstr "音訊卡 4:"
|
||||
|
||||
msgid "MIDI Out Device:"
|
||||
msgstr "MIDI 輸出裝置:"
|
||||
@@ -418,15 +427,6 @@ msgstr "MIDI 輸入裝置:"
|
||||
msgid "Standalone MPU-401"
|
||||
msgstr "獨立 MPU-401"
|
||||
|
||||
msgid "Innovation SSI-2001"
|
||||
msgstr "Innovation SSI-2001"
|
||||
|
||||
msgid "CMS / Game Blaster"
|
||||
msgstr "CMS / Game Blaster"
|
||||
|
||||
msgid "Gravis Ultrasound"
|
||||
msgstr "Gravis Ultrasound"
|
||||
|
||||
msgid "Use FLOAT32 sound"
|
||||
msgstr "使用單精度浮點 (FLOAT32)"
|
||||
|
||||
|
||||
@@ -52,7 +52,9 @@ extern "C" {
|
||||
#include <86box/plat.h>
|
||||
#include <86box/ui.h>
|
||||
#include <86box/video.h>
|
||||
#include <86box/discord.h>
|
||||
#ifdef DISCORD
|
||||
# include <86box/discord.h>
|
||||
#endif
|
||||
#include <86box/gdbstub.h>
|
||||
}
|
||||
|
||||
@@ -196,7 +198,9 @@ main(int argc, char *argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef DISCORD
|
||||
discord_load();
|
||||
#endif
|
||||
|
||||
main_window = new MainWindow();
|
||||
if (startMaximized) {
|
||||
@@ -271,12 +275,14 @@ main(int argc, char *argv[])
|
||||
/* Set the PAUSE mode depending on the renderer. */
|
||||
// plat_pause(0);
|
||||
QTimer onesec;
|
||||
QTimer discordupdate;
|
||||
QObject::connect(&onesec, &QTimer::timeout, &app, [] {
|
||||
pc_onesec();
|
||||
});
|
||||
onesec.setTimerType(Qt::PreciseTimer);
|
||||
onesec.start(1000);
|
||||
|
||||
#ifdef DISCORD
|
||||
QTimer discordupdate;
|
||||
if (discord_loaded) {
|
||||
QTimer::singleShot(1000, &app, [] {
|
||||
if (enable_discord) {
|
||||
@@ -290,6 +296,7 @@ main(int argc, char *argv[])
|
||||
});
|
||||
discordupdate.start(1000);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Initialize the rendering window, or fullscreen. */
|
||||
QTimer::singleShot(0, &app, [] {
|
||||
|
||||
@@ -39,7 +39,9 @@ extern "C" {
|
||||
#include <86box/keyboard.h>
|
||||
#include <86box/plat.h>
|
||||
#include <86box/ui.h>
|
||||
#include <86box/discord.h>
|
||||
#ifdef DISCORD
|
||||
# include <86box/discord.h>
|
||||
#endif
|
||||
#include <86box/device.h>
|
||||
#include <86box/video.h>
|
||||
#include <86box/machine.h>
|
||||
@@ -305,6 +307,10 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
ui->actionEnable_Discord_integration->setChecked(enable_discord);
|
||||
ui->actionApply_fullscreen_stretch_mode_when_maximized->setChecked(video_fullscreen_scale_maximized);
|
||||
|
||||
#ifndef DISCORD
|
||||
ui->actionEnable_Discord_integration->setVisible(false);
|
||||
#endif
|
||||
|
||||
#if defined Q_OS_WINDOWS || defined Q_OS_MACOS
|
||||
/* Make the option visible only if ANGLE is loaded. */
|
||||
ui->actionHardware_Renderer_OpenGL_ES->setVisible(QOpenGLContext::openGLModuleType() == QOpenGLContext::LibGLES);
|
||||
@@ -2292,11 +2298,13 @@ void
|
||||
MainWindow::on_actionEnable_Discord_integration_triggered(bool checked)
|
||||
{
|
||||
enable_discord = checked;
|
||||
#ifdef DISCORD
|
||||
if (enable_discord) {
|
||||
discord_init();
|
||||
discord_update_activity(dopause);
|
||||
} else
|
||||
discord_close();
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -103,7 +103,9 @@ extern "C" {
|
||||
#include <86box/rom.h>
|
||||
#include <86box/config.h>
|
||||
#include <86box/ui.h>
|
||||
#include <86box/discord.h>
|
||||
#ifdef DISCORD
|
||||
# include <86box/discord.h>
|
||||
#endif
|
||||
|
||||
#include "../cpu/cpu.h"
|
||||
#include <86box/plat.h>
|
||||
@@ -377,7 +379,11 @@ plat_pause(int p)
|
||||
} else {
|
||||
ui_window_title(oldtitle);
|
||||
}
|
||||
|
||||
#ifdef DISCORD
|
||||
discord_update_activity(dopause);
|
||||
#endif
|
||||
|
||||
QTimer::singleShot(0, main_window, &MainWindow::updateUiPauseState);
|
||||
|
||||
#ifdef Q_OS_WINDOWS
|
||||
|
||||
@@ -11,8 +11,10 @@
|
||||
*
|
||||
*
|
||||
* Authors: Joakim L. Gilje <jgilje@jgilje.net>
|
||||
* Jasmine Iwanek <jriwanek@gmail.com>
|
||||
*
|
||||
* Copyright 2021 Joakim L. Gilje
|
||||
* Copyright 2021 Joakim L. Gilje
|
||||
* Copyright 2022-2023 Jasmine Iwanek
|
||||
*/
|
||||
#include "qt_settingssound.hpp"
|
||||
#include "ui_qt_settingssound.h"
|
||||
@@ -47,17 +49,17 @@ SettingsSound::~SettingsSound()
|
||||
void
|
||||
SettingsSound::save()
|
||||
{
|
||||
sound_card_current = ui->comboBoxSoundCard->currentData().toInt();
|
||||
for (uint8_t i = 0; i < SOUND_CARD_MAX; ++i) {
|
||||
auto *cbox = findChild<QComboBox *>(QString("comboBoxSoundCard%1").arg(i + 1));
|
||||
sound_card_current[i] = cbox->currentData().toInt();
|
||||
}
|
||||
|
||||
midi_output_device_current = ui->comboBoxMidiOut->currentData().toInt();
|
||||
midi_input_device_current = ui->comboBoxMidiIn->currentData().toInt();
|
||||
mpu401_standalone_enable = ui->checkBoxMPU401->isChecked() ? 1 : 0;
|
||||
SSI2001 = ui->checkBoxSSI2001->isChecked() ? 1 : 0;
|
||||
;
|
||||
GAMEBLASTER = ui->checkBoxCMS->isChecked() ? 1 : 0;
|
||||
GUS = ui->checkBoxGUS->isChecked() ? 1 : 0;
|
||||
;
|
||||
|
||||
sound_is_float = ui->checkBoxFloat32->isChecked() ? 1 : 0;
|
||||
;
|
||||
|
||||
if (ui->radioButtonYMFM->isChecked())
|
||||
fm_driver = FM_DRV_YMFM;
|
||||
else
|
||||
@@ -69,41 +71,45 @@ SettingsSound::onCurrentMachineChanged(int machineId)
|
||||
{
|
||||
this->machineId = machineId;
|
||||
|
||||
auto *model = ui->comboBoxSoundCard->model();
|
||||
auto removeRows = model->rowCount();
|
||||
int c = 0;
|
||||
int selectedRow = 0;
|
||||
while (true) {
|
||||
/* Skip "internal" if machine doesn't have it. */
|
||||
if ((c == 1) && (machine_has_flags(machineId, MACHINE_SOUND) == 0)) {
|
||||
c++;
|
||||
continue;
|
||||
}
|
||||
int c = 0;
|
||||
int selectedRow = 0;
|
||||
|
||||
auto *sound_dev = sound_card_getdevice(c);
|
||||
QString name = DeviceConfig::DeviceName(sound_dev, sound_card_get_internal_name(c), 1);
|
||||
if (name.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
for (uint8_t i = 0; i < SOUND_CARD_MAX; ++i) {
|
||||
auto *cbox = findChild<QComboBox *>(QString("comboBoxSoundCard%1").arg(i + 1));
|
||||
auto *model = cbox->model();
|
||||
auto removeRows = model->rowCount();
|
||||
c = 0;
|
||||
selectedRow = 0;
|
||||
|
||||
if (sound_card_available(c)) {
|
||||
if (device_is_valid(sound_dev, machineId)) {
|
||||
while (true) {
|
||||
/* Skip "internal" if machine doesn't have it. */
|
||||
if ((c == 1) && (machine_has_flags(machineId, MACHINE_SOUND) == 0)) {
|
||||
c++;
|
||||
continue;
|
||||
}
|
||||
|
||||
auto name = DeviceConfig::DeviceName(sound_card_getdevice(c), sound_card_get_internal_name(c), 1);
|
||||
if (name.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (sound_card_available(c) && device_is_valid(sound_card_getdevice(c), machineId)) {
|
||||
int row = Models::AddEntry(model, name, c);
|
||||
if (c == sound_card_current) {
|
||||
if (c == sound_card_current[i]) {
|
||||
selectedRow = row - removeRows;
|
||||
}
|
||||
}
|
||||
c++;
|
||||
}
|
||||
|
||||
c++;
|
||||
model->removeRows(0, removeRows);
|
||||
cbox->setEnabled(model->rowCount() > 0);
|
||||
cbox->setCurrentIndex(-1);
|
||||
cbox->setCurrentIndex(selectedRow);
|
||||
}
|
||||
model->removeRows(0, removeRows);
|
||||
ui->comboBoxSoundCard->setEnabled(model->rowCount() > 0);
|
||||
ui->comboBoxSoundCard->setCurrentIndex(-1);
|
||||
ui->comboBoxSoundCard->setCurrentIndex(selectedRow);
|
||||
|
||||
model = ui->comboBoxMidiOut->model();
|
||||
removeRows = model->rowCount();
|
||||
auto model = ui->comboBoxMidiOut->model();
|
||||
auto removeRows = model->rowCount();
|
||||
c = 0;
|
||||
selectedRow = 0;
|
||||
while (true) {
|
||||
@@ -150,19 +156,8 @@ SettingsSound::onCurrentMachineChanged(int machineId)
|
||||
ui->comboBoxMidiIn->setCurrentIndex(selectedRow);
|
||||
|
||||
ui->checkBoxMPU401->setChecked(mpu401_standalone_enable > 0);
|
||||
ui->checkBoxSSI2001->setChecked(SSI2001 > 0);
|
||||
ui->checkBoxCMS->setChecked(GAMEBLASTER > 0);
|
||||
ui->checkBoxGUS->setChecked(GUS > 0);
|
||||
ui->checkBoxFloat32->setChecked(sound_is_float > 0);
|
||||
|
||||
bool hasIsa = machine_has_bus(machineId, MACHINE_BUS_ISA) > 0;
|
||||
bool hasIsa16 = machine_has_bus(machineId, MACHINE_BUS_ISA16) > 0;
|
||||
ui->checkBoxCMS->setEnabled(hasIsa);
|
||||
ui->pushButtonConfigureCMS->setEnabled((GAMEBLASTER > 0) && hasIsa);
|
||||
ui->checkBoxGUS->setEnabled(hasIsa16);
|
||||
ui->pushButtonConfigureGUS->setEnabled((GUS > 0) && hasIsa16);
|
||||
ui->checkBoxSSI2001->setEnabled(hasIsa);
|
||||
ui->pushButtonConfigureSSI2001->setEnabled((SSI2001 > 0) && hasIsa);
|
||||
switch (fm_driver) {
|
||||
case FM_DRV_YMFM:
|
||||
ui->radioButtonYMFM->setChecked(true);
|
||||
@@ -192,18 +187,63 @@ allowMpu401(Ui::SettingsSound *ui)
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_comboBoxSoundCard_currentIndexChanged(int index)
|
||||
SettingsSound::on_comboBoxSoundCard1_currentIndexChanged(int index)
|
||||
{
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
ui->pushButtonConfigureSoundCard->setEnabled(sound_card_has_config(ui->comboBoxSoundCard->currentData().toInt()));
|
||||
ui->pushButtonConfigureSoundCard1->setEnabled(sound_card_has_config(ui->comboBoxSoundCard1->currentData().toInt()));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard_clicked()
|
||||
SettingsSound::on_pushButtonConfigureSoundCard1_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard->currentData().toInt()), 0, qobject_cast<Settings *>(Settings::settings));
|
||||
DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard1->currentData().toInt()), 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_comboBoxSoundCard2_currentIndexChanged(int index)
|
||||
{
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
ui->pushButtonConfigureSoundCard2->setEnabled(sound_card_has_config(ui->comboBoxSoundCard2->currentData().toInt()));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard2_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard2->currentData().toInt()), 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_comboBoxSoundCard3_currentIndexChanged(int index)
|
||||
{
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
ui->pushButtonConfigureSoundCard3->setEnabled(sound_card_has_config(ui->comboBoxSoundCard3->currentData().toInt()));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard3_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard3->currentData().toInt()), 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_comboBoxSoundCard4_currentIndexChanged(int index)
|
||||
{
|
||||
if (index < 0) {
|
||||
return;
|
||||
}
|
||||
ui->pushButtonConfigureSoundCard4->setEnabled(sound_card_has_config(ui->comboBoxSoundCard4->currentData().toInt()));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSoundCard4_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(sound_card_getdevice(ui->comboBoxSoundCard4->currentData().toInt()), 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -246,24 +286,6 @@ SettingsSound::on_checkBoxMPU401_stateChanged(int state)
|
||||
ui->pushButtonConfigureMPU401->setEnabled(state == Qt::Checked);
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_checkBoxSSI2001_stateChanged(int state)
|
||||
{
|
||||
ui->pushButtonConfigureSSI2001->setEnabled(state == Qt::Checked);
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_checkBoxCMS_stateChanged(int state)
|
||||
{
|
||||
ui->pushButtonConfigureCMS->setEnabled(state == Qt::Checked);
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_checkBoxGUS_stateChanged(int state)
|
||||
{
|
||||
ui->pushButtonConfigureGUS->setEnabled(state == Qt::Checked);
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureMPU401_clicked()
|
||||
{
|
||||
@@ -273,21 +295,3 @@ SettingsSound::on_pushButtonConfigureMPU401_clicked()
|
||||
DeviceConfig::ConfigureDevice(&mpu401_device, 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureSSI2001_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(&ssi2001_device, 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureCMS_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(&cms_device, 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
void
|
||||
SettingsSound::on_pushButtonConfigureGUS_clicked()
|
||||
{
|
||||
DeviceConfig::ConfigureDevice(&gus_device, 0, qobject_cast<Settings *>(Settings::settings));
|
||||
}
|
||||
|
||||
@@ -20,20 +20,20 @@ public slots:
|
||||
void onCurrentMachineChanged(int machineId);
|
||||
|
||||
private slots:
|
||||
void on_pushButtonConfigureGUS_clicked();
|
||||
void on_pushButtonConfigureCMS_clicked();
|
||||
void on_pushButtonConfigureSSI2001_clicked();
|
||||
void on_pushButtonConfigureMPU401_clicked();
|
||||
void on_checkBoxGUS_stateChanged(int arg1);
|
||||
void on_checkBoxCMS_stateChanged(int arg1);
|
||||
void on_checkBoxSSI2001_stateChanged(int arg1);
|
||||
void on_checkBoxMPU401_stateChanged(int arg1);
|
||||
void on_pushButtonConfigureMidiIn_clicked();
|
||||
void on_pushButtonConfigureMidiOut_clicked();
|
||||
void on_comboBoxMidiIn_currentIndexChanged(int index);
|
||||
void on_comboBoxMidiOut_currentIndexChanged(int index);
|
||||
void on_pushButtonConfigureSoundCard_clicked();
|
||||
void on_comboBoxSoundCard_currentIndexChanged(int index);
|
||||
void on_pushButtonConfigureSoundCard1_clicked();
|
||||
void on_comboBoxSoundCard1_currentIndexChanged(int index);
|
||||
void on_pushButtonConfigureSoundCard2_clicked();
|
||||
void on_comboBoxSoundCard2_currentIndexChanged(int index);
|
||||
void on_pushButtonConfigureSoundCard3_clicked();
|
||||
void on_comboBoxSoundCard3_currentIndexChanged(int index);
|
||||
void on_pushButtonConfigureSoundCard4_clicked();
|
||||
void on_comboBoxSoundCard4_currentIndexChanged(int index);
|
||||
|
||||
private:
|
||||
Ui::SettingsSound *ui;
|
||||
|
||||
@@ -26,42 +26,73 @@
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="2" column="0">
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>MIDI In Device:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="checkBoxSSI2001">
|
||||
<property name="text">
|
||||
<string>Innovation SSI-2001</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QCheckBox" name="checkBoxGUS">
|
||||
<property name="text">
|
||||
<string>Gravis Ultrasound</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Sound card:</string>
|
||||
<string>Sound card #1:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureSoundCard">
|
||||
<widget class="QPushButton" name="pushButtonConfigureSoundCard1">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Sound card #2:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureSoundCard2">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Sound card #3:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureSoundCard3">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Sound card #4:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureSoundCard4">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
|
||||
<item row="5" column="1">
|
||||
<widget class="QComboBox" name="comboBoxMidiIn">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
@@ -71,49 +102,35 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>MIDI Out Device:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QCheckBox" name="checkBoxMPU401">
|
||||
<property name="text">
|
||||
<string>Standalone MPU-401</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<item row="6" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureMPU401">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<item row="5" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureMidiIn">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureSSI2001">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="checkBoxCMS">
|
||||
<property name="text">
|
||||
<string>CMS / Game Blaster</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="4" column="1">
|
||||
<widget class="QComboBox" name="comboBoxMidiOut">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
@@ -123,35 +140,21 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3">
|
||||
<item row="4" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureMidiOut">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<item row="10" column="0">
|
||||
<widget class="QCheckBox" name="checkBoxFloat32">
|
||||
<property name="text">
|
||||
<string>Use FLOAT32 sound</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureCMS">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="3">
|
||||
<widget class="QPushButton" name="pushButtonConfigureGUS">
|
||||
<property name="text">
|
||||
<string>Configure</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<item row="11" column="0">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
@@ -180,7 +183,7 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<item row="12" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@@ -194,7 +197,37 @@
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="comboBoxSoundCard">
|
||||
<widget class="QComboBox" name="comboBoxSoundCard1">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="comboBoxSoundCard2">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="comboBoxSoundCard3">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="comboBoxSoundCard4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
|
||||
@@ -11,11 +11,12 @@
|
||||
*
|
||||
*
|
||||
* Authors: Cacodemon345
|
||||
* RichardG <richardg867@gmail.com>
|
||||
*
|
||||
* Copyright 2022 Cacodemon345
|
||||
* Copyright 2022 Cacodemon345.
|
||||
* Copyright 2023 RichardG.
|
||||
*/
|
||||
|
||||
/* Valuator parsing and duplicate event checking code from SDL2. */
|
||||
#include <QDebug>
|
||||
#include <QThread>
|
||||
#include <QProcess>
|
||||
@@ -43,20 +44,19 @@ extern "C" {
|
||||
#include <86box/plat.h>
|
||||
}
|
||||
|
||||
int xi2flides[2] = { 0, 0 };
|
||||
|
||||
static Display *disp = nullptr;
|
||||
static QThread *procThread = nullptr;
|
||||
static XIEventMask ximask;
|
||||
static std::atomic<bool> exitfromthread = false;
|
||||
static std::atomic<double> xi2_mouse_x = 0, xi2_mouse_y = 0, xi2_mouse_abs_x = 0, xi2_mouse_abs_y = 0;
|
||||
static int xi2opcode = 0;
|
||||
static double prev_rel_coords[2] = { 0., 0. };
|
||||
static Time prev_time = 0;
|
||||
static int xi2opcode = 0;
|
||||
static double prev_coords[2] = { 0.0 };
|
||||
static Time prev_time = 0;
|
||||
|
||||
// From SDL2.
|
||||
/* Based on SDL2. */
|
||||
static void
|
||||
parse_valuators(const double *input_values, const unsigned char *mask, int mask_len,
|
||||
parse_valuators(const double *input_values,
|
||||
const unsigned char *mask, int mask_len,
|
||||
double *output_values, int output_values_len)
|
||||
{
|
||||
int i = 0, z = 0;
|
||||
@@ -64,11 +64,10 @@ parse_valuators(const double *input_values, const unsigned char *mask, int mask_
|
||||
if (top > 16)
|
||||
top = 16;
|
||||
|
||||
memset(output_values, 0, output_values_len * sizeof(double));
|
||||
memset(output_values, 0, output_values_len * sizeof(output_values[0]));
|
||||
for (; i < top && z < output_values_len; i++) {
|
||||
if (XIMaskIsSet(mask, i)) {
|
||||
const int value = (int) *input_values;
|
||||
output_values[z] = value;
|
||||
output_values[z] = *input_values;
|
||||
input_values++;
|
||||
}
|
||||
z++;
|
||||
@@ -77,23 +76,37 @@ parse_valuators(const double *input_values, const unsigned char *mask, int mask_
|
||||
|
||||
static bool exitthread = false;
|
||||
|
||||
static int
|
||||
xinput2_get_xtest_pointer()
|
||||
{
|
||||
/* The XTEST pointer events injected by VNC servers to move the cursor always report
|
||||
absolute coordinates, despite XTEST declaring relative axes (related: SDL issue 1836).
|
||||
This looks for the XTEST pointer so that we can assume it's absolute as a workaround. */
|
||||
int devs;
|
||||
XIDeviceInfo *info = XIQueryDevice(disp, XIAllDevices, &devs), *dev;
|
||||
for (int i = 0; i < devs; i++) {
|
||||
dev = &info[i];
|
||||
if ((dev->use == XISlavePointer) && !strcmp(dev->name, "Virtual core XTEST pointer"))
|
||||
return dev->deviceid;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void
|
||||
xinput2_proc()
|
||||
{
|
||||
Window win;
|
||||
win = DefaultRootWindow(disp);
|
||||
|
||||
int xtest_pointer = xinput2_get_xtest_pointer();
|
||||
|
||||
ximask.deviceid = XIAllMasterDevices;
|
||||
ximask.mask_len = XIMaskLen(XI_LASTEVENT);
|
||||
ximask.mask = (unsigned char *) calloc(ximask.mask_len, sizeof(unsigned char));
|
||||
|
||||
XISetMask(ximask.mask, XI_RawKeyPress);
|
||||
XISetMask(ximask.mask, XI_RawKeyRelease);
|
||||
XISetMask(ximask.mask, XI_RawButtonPress);
|
||||
XISetMask(ximask.mask, XI_RawButtonRelease);
|
||||
XISetMask(ximask.mask, XI_RawMotion);
|
||||
if (XKeysymToKeycode(disp, XK_Home) == 69)
|
||||
XISetMask(ximask.mask, XI_Motion);
|
||||
XISetMask(ximask.mask, XI_Motion);
|
||||
XISetMask(ximask.mask, XI_DeviceChanged);
|
||||
|
||||
XISelectEvents(disp, win, &ximask, 1);
|
||||
|
||||
@@ -103,23 +116,88 @@ xinput2_proc()
|
||||
XGenericEventCookie *cookie = (XGenericEventCookie *) &ev.xcookie;
|
||||
XNextEvent(disp, (XEvent *) &ev);
|
||||
|
||||
if (XGetEventData(disp, cookie) && cookie->type == GenericEvent && cookie->extension == xi2opcode) {
|
||||
if (XGetEventData(disp, cookie) && (cookie->type == GenericEvent) && (cookie->extension == xi2opcode)) {
|
||||
const XIRawEvent *rawev = (const XIRawEvent *) cookie->data;
|
||||
double coords[2] = { 0.0 };
|
||||
|
||||
switch (cookie->evtype) {
|
||||
case XI_Motion:
|
||||
{
|
||||
const XIDeviceEvent *devev = (const XIDeviceEvent *) cookie->data;
|
||||
parse_valuators(devev->valuators.values, devev->valuators.mask, devev->valuators.mask_len, coords, 2);
|
||||
|
||||
/* XIDeviceEvent and XIRawEvent share the XIEvent base struct, which
|
||||
doesn't contain deviceid, but that's at the same offset on both. */
|
||||
goto common_motion;
|
||||
}
|
||||
|
||||
case XI_RawMotion:
|
||||
{
|
||||
const XIRawEvent *rawev = (const XIRawEvent *) cookie->data;
|
||||
double relative_coords[2] = { 0., 0. };
|
||||
parse_valuators(rawev->raw_values, rawev->valuators.mask,
|
||||
rawev->valuators.mask_len, relative_coords, 2);
|
||||
parse_valuators(rawev->raw_values, rawev->valuators.mask, rawev->valuators.mask_len, coords, 2);
|
||||
common_motion:
|
||||
/* Ignore duplicated events. */
|
||||
if ((rawev->time == prev_time) && (coords[0] == prev_coords[0]) && (coords[1] == prev_coords[1]))
|
||||
break;
|
||||
|
||||
if ((rawev->time == prev_time) && (relative_coords[0] == prev_rel_coords[0]) && (relative_coords[1] == prev_rel_coords[1])) {
|
||||
break; // Ignore duplicated events.
|
||||
/* SDL2 queries the device on every event, so doing that should be fine. */
|
||||
int i;
|
||||
XIDeviceInfo *xidevinfo = XIQueryDevice(disp, rawev->deviceid, &i);
|
||||
if (xidevinfo) {
|
||||
/* Process the device's axes. */
|
||||
int axis = 0;
|
||||
for (i = 0; i < xidevinfo->num_classes; i++) {
|
||||
const XIValuatorClassInfo *v = (const XIValuatorClassInfo *) xidevinfo->classes[i];
|
||||
if (v->type == XIValuatorClass) {
|
||||
/* Is this an absolute or relative axis? */
|
||||
if ((v->mode == XIModeRelative) && (rawev->sourceid != xtest_pointer)) {
|
||||
/* Set relative coordinates. */
|
||||
if (axis == 0)
|
||||
xi2_mouse_x = xi2_mouse_x + coords[axis];
|
||||
else
|
||||
xi2_mouse_y = xi2_mouse_y + coords[axis];
|
||||
} else {
|
||||
/* Convert absolute value range to pixel granularity, then to relative coordinates. */
|
||||
int disp_screen = XDefaultScreen(disp);
|
||||
double abs_div;
|
||||
if (axis == 0) {
|
||||
if (v->mode == XIModeRelative) {
|
||||
/* XTEST axes have dummy min/max values because they're nominally relative,
|
||||
but in practice, the injected absolute coordinates are already in pixels. */
|
||||
abs_div = coords[axis];
|
||||
} else {
|
||||
abs_div = (v->max - v->min) / (double) XDisplayWidth(disp, disp_screen);
|
||||
if (abs_div <= 0)
|
||||
abs_div = 1;
|
||||
abs_div = (coords[axis] - v->min) / abs_div;
|
||||
}
|
||||
|
||||
if (xi2_mouse_abs_x != 0)
|
||||
xi2_mouse_x = xi2_mouse_x + (abs_div - xi2_mouse_abs_x);
|
||||
xi2_mouse_abs_x = abs_div;
|
||||
} else {
|
||||
if (v->mode == XIModeRelative) {
|
||||
/* Same as above. */
|
||||
abs_div = coords[axis];
|
||||
} else {
|
||||
abs_div = (v->max - v->min) / (double) XDisplayHeight(disp, disp_screen);
|
||||
if (abs_div <= 0)
|
||||
abs_div = 1;
|
||||
abs_div = (coords[axis] - v->min) / abs_div;
|
||||
}
|
||||
|
||||
if (xi2_mouse_abs_y != 0)
|
||||
xi2_mouse_y = xi2_mouse_y + (abs_div - xi2_mouse_abs_y);
|
||||
xi2_mouse_abs_y = abs_div;
|
||||
}
|
||||
}
|
||||
prev_coords[axis] = coords[axis];
|
||||
if (++axis >= 2) /* stop after X and Y processed */
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
xi2_mouse_x = xi2_mouse_x + relative_coords[0];
|
||||
xi2_mouse_y = xi2_mouse_y + relative_coords[1];
|
||||
prev_rel_coords[0] = relative_coords[0];
|
||||
prev_rel_coords[1] = relative_coords[1];
|
||||
prev_time = rawev->time;
|
||||
|
||||
prev_time = rawev->time;
|
||||
if (!mouse_capture)
|
||||
break;
|
||||
XWindowAttributes winattrib {};
|
||||
@@ -128,19 +206,16 @@ xinput2_proc()
|
||||
XWarpPointer(disp, XRootWindow(disp, XScreenNumberOfScreen(winattrib.screen)), XRootWindow(disp, XScreenNumberOfScreen(winattrib.screen)), 0, 0, 0, 0, globalPoint.x(), globalPoint.y());
|
||||
XFlush(disp);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case XI_Motion:
|
||||
|
||||
case XI_DeviceChanged:
|
||||
{
|
||||
if (XKeysymToKeycode(disp, XK_Home) == 69) {
|
||||
// No chance we will get raw motion events on VNC.
|
||||
const XIDeviceEvent *motionev = (const XIDeviceEvent *) cookie->data;
|
||||
if (xi2_mouse_abs_x != 0 || xi2_mouse_abs_y != 0) {
|
||||
xi2_mouse_x = xi2_mouse_x + (motionev->event_x - xi2_mouse_abs_x);
|
||||
xi2_mouse_y = xi2_mouse_y + (motionev->event_y - xi2_mouse_abs_y);
|
||||
}
|
||||
xi2_mouse_abs_x = motionev->event_x;
|
||||
xi2_mouse_abs_y = motionev->event_y;
|
||||
}
|
||||
/* Re-scan for XTEST pointer, just in case. */
|
||||
xtest_pointer = xinput2_get_xtest_pointer();
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ static void
|
||||
ali5123_fdc_handler(ali5123_t *dev)
|
||||
{
|
||||
uint16_t ld_port = 0;
|
||||
uint8_t global_enable = !!(dev->regs[0x22] & (1 << 0));
|
||||
uint8_t global_enable = !(dev->regs[0x22] & (1 << 0));
|
||||
uint8_t local_enable = !!dev->ld_regs[0][0x30];
|
||||
|
||||
fdc_remove(dev->fdc);
|
||||
@@ -81,7 +81,7 @@ static void
|
||||
ali5123_lpt_handler(ali5123_t *dev)
|
||||
{
|
||||
uint16_t ld_port = 0;
|
||||
uint8_t global_enable = !!(dev->regs[0x22] & (1 << 3));
|
||||
uint8_t global_enable = !(dev->regs[0x22] & (1 << 3));
|
||||
uint8_t local_enable = !!dev->ld_regs[3][0x30];
|
||||
uint8_t lpt_irq = dev->ld_regs[3][0x70];
|
||||
|
||||
@@ -100,9 +100,10 @@ ali5123_lpt_handler(ali5123_t *dev)
|
||||
static void
|
||||
ali5123_serial_handler(ali5123_t *dev, int uart)
|
||||
{
|
||||
uint8_t uart_nos[2][3]= { { 4, 5, 0xb }, { 4, 0xb, 5 } };
|
||||
uint16_t ld_port = 0;
|
||||
uint8_t uart_no = (uart == 2) ? 0x0b : (4 + uart);
|
||||
uint8_t global_enable = !!(dev->regs[0x22] & (1 << uart_no));
|
||||
uint8_t uart_no = uart_nos[!!(dev->regs[0x2d] & 0x20)][uart];
|
||||
uint8_t global_enable = !(dev->regs[0x22] & (1 << (4 + uart)));
|
||||
uint8_t local_enable = !!dev->ld_regs[uart_no][0x30];
|
||||
uint8_t mask = (uart == 1) ? 0x04 : 0x05;
|
||||
|
||||
@@ -207,8 +208,7 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
ali5123_t *dev = (ali5123_t *) priv;
|
||||
uint8_t index = (port & 1) ? 0 : 1;
|
||||
uint8_t valxor = 0x00, keep = 0x00;
|
||||
uint8_t cur_ld;
|
||||
uint8_t valxor = 0x00, cur_ld = dev->regs[7];
|
||||
|
||||
if (index) {
|
||||
if (((val == 0x51) && (!dev->tries) && (!dev->locked)) || ((val == 0x23) && (dev->tries) && (!dev->locked))) {
|
||||
@@ -236,27 +236,23 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
if (dev->locked) {
|
||||
if (dev->cur_reg < 48) {
|
||||
valxor = val ^ dev->regs[dev->cur_reg];
|
||||
if ((val == 0x1f) || (val == 0x20) || (val == 0x21))
|
||||
if ((val >= 0x1f) && (val <= 0x21))
|
||||
return;
|
||||
dev->regs[dev->cur_reg] = val;
|
||||
} else {
|
||||
valxor = val ^ dev->ld_regs[dev->regs[7]][dev->cur_reg];
|
||||
if (((dev->cur_reg & 0xf0) == 0x70) && (dev->regs[7] < 4))
|
||||
valxor = val ^ dev->ld_regs[cur_ld][dev->cur_reg];
|
||||
if (((dev->cur_reg & 0xf0) == 0x70) && (cur_ld < 4))
|
||||
return;
|
||||
/* Block writes to some logical devices. */
|
||||
if (dev->regs[7] > 0x0c)
|
||||
if (cur_ld > 0x0c)
|
||||
return;
|
||||
else
|
||||
switch (dev->regs[7]) {
|
||||
case 0x01:
|
||||
case 0x02:
|
||||
case 0x06:
|
||||
case 0x08:
|
||||
case 0x09:
|
||||
case 0x0a:
|
||||
return;
|
||||
}
|
||||
dev->ld_regs[dev->regs[7]][dev->cur_reg] = val | keep;
|
||||
else switch (cur_ld) {
|
||||
case 0x01: case 0x02:
|
||||
case 0x06:
|
||||
case 0x08 ... 0x0a:
|
||||
return;
|
||||
}
|
||||
dev->ld_regs[cur_ld][dev->cur_reg] = val;
|
||||
}
|
||||
} else
|
||||
return;
|
||||
@@ -281,16 +277,18 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
if (valxor & 0x40)
|
||||
ali5123_serial_handler(dev, 2);
|
||||
break;
|
||||
case 0x2d:
|
||||
if (valxor & 0x20) {
|
||||
ali5123_serial_handler(dev, 1);
|
||||
ali5123_serial_handler(dev, 2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
cur_ld = dev->regs[7];
|
||||
if ((dev->regs[7] == 5) && (dev->regs[0x2d] & 0x20))
|
||||
cur_ld = 0x0b;
|
||||
else if ((dev->regs[7] == 0x0b) && (dev->regs[0x2d] & 0x20))
|
||||
cur_ld = 5;
|
||||
switch (cur_ld) {
|
||||
case 0:
|
||||
/* FDD */
|
||||
@@ -299,7 +297,7 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
case 0x60:
|
||||
case 0x61:
|
||||
if ((dev->cur_reg == 0x30) && (val & 0x01))
|
||||
dev->regs[0x22] |= 0x01;
|
||||
dev->regs[0x22] &= ~0x01;
|
||||
if (valxor)
|
||||
ali5123_fdc_handler(dev);
|
||||
break;
|
||||
@@ -339,7 +337,7 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
case 0x61:
|
||||
case 0x70:
|
||||
if ((dev->cur_reg == 0x30) && (val & 0x01))
|
||||
dev->regs[0x22] |= 0x08;
|
||||
dev->regs[0x22] &= ~0x08;
|
||||
if (valxor)
|
||||
ali5123_lpt_handler(dev);
|
||||
break;
|
||||
@@ -354,7 +352,7 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
case 0x70:
|
||||
case 0xf0:
|
||||
if ((dev->cur_reg == 0x30) && (val & 0x01))
|
||||
dev->regs[0x22] |= 0x10;
|
||||
dev->regs[0x22] &= ~0x10;
|
||||
if (valxor)
|
||||
ali5123_serial_handler(dev, 0);
|
||||
break;
|
||||
@@ -369,9 +367,9 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
case 0x70:
|
||||
case 0xf0:
|
||||
if ((dev->cur_reg == 0x30) && (val & 0x01))
|
||||
dev->regs[0x22] |= 0x20;
|
||||
dev->regs[0x22] &= ~((dev->regs[0x2d] & 0x20) ? 0x40 : 0x20);
|
||||
if (valxor)
|
||||
ali5123_serial_handler(dev, 1);
|
||||
ali5123_serial_handler(dev, (dev->regs[0x2d] & 0x20) ? 2 : 1);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -384,9 +382,9 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
|
||||
case 0x70:
|
||||
case 0xf0:
|
||||
if ((dev->cur_reg == 0x30) && (val & 0x01))
|
||||
dev->regs[0x22] |= 0x40;
|
||||
dev->regs[0x22] &= ~((dev->regs[0x2d] & 0x20) ? 0x20 : 0x40);
|
||||
if (valxor)
|
||||
ali5123_serial_handler(dev, 2);
|
||||
ali5123_serial_handler(dev, (dev->regs[0x2d] & 0x20) ? 1 : 2);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@@ -411,11 +409,6 @@ ali5123_read(uint16_t port, void *priv)
|
||||
ret = dev->regs[dev->cur_reg];
|
||||
} else {
|
||||
cur_ld = dev->regs[7];
|
||||
if ((dev->regs[7] == 5) && (dev->regs[0x2d] & 0x20))
|
||||
cur_ld = 0x0b;
|
||||
else if ((dev->regs[7] == 0x0b) && (dev->regs[0x2d] & 0x20))
|
||||
cur_ld = 5;
|
||||
|
||||
ret = dev->ld_regs[cur_ld][dev->cur_reg];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ typedef struct {
|
||||
void *priv;
|
||||
} sound_handler_t;
|
||||
|
||||
int sound_card_current = 0;
|
||||
int sound_card_current[SOUND_CARD_MAX] = { 0, 0, 0, 0};
|
||||
int sound_pos_global = 0;
|
||||
int sound_gain = 0;
|
||||
|
||||
@@ -79,30 +79,31 @@ static void (*filter_cd_audio)(int channel, double *buffer, void *p) = NULL;
|
||||
static void *filter_cd_audio_p = NULL;
|
||||
|
||||
static const device_t sound_none_device = {
|
||||
"None",
|
||||
"none",
|
||||
0,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
{ NULL },
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
.name = "None",
|
||||
.internal_name = "none",
|
||||
.flags = 0,
|
||||
.local = 0,
|
||||
.init = NULL,
|
||||
.close = NULL,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
static const device_t sound_internal_device = {
|
||||
"Internal",
|
||||
"internal",
|
||||
0,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
{ NULL },
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
.name = "Internal",
|
||||
.internal_name = "internal",
|
||||
.flags = 0,
|
||||
.local = 0,
|
||||
.init = NULL,
|
||||
.close = NULL,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
static const SOUND_CARD sound_cards[] = {
|
||||
@@ -115,8 +116,10 @@ static const SOUND_CARD sound_cards[] = {
|
||||
{ &adgold_device },
|
||||
{ &azt2316a_device },
|
||||
{ &azt1605_device },
|
||||
{ &cms_device },
|
||||
{ &cs4235_device },
|
||||
{ &cs4236b_device },
|
||||
{ &gus_device },
|
||||
{ &sb_1_device },
|
||||
{ &sb_15_device },
|
||||
{ &sb_2_device },
|
||||
@@ -130,6 +133,7 @@ static const SOUND_CARD sound_cards[] = {
|
||||
{ &sb_awe64_value_device },
|
||||
{ &sb_awe64_device },
|
||||
{ &sb_awe64_gold_device },
|
||||
{ &ssi2001_device },
|
||||
#if defined(DEV_BRANCH) && defined(USE_PAS16)
|
||||
{ &pas16_device },
|
||||
#endif
|
||||
@@ -214,8 +218,14 @@ sound_card_get_from_internal_name(char *s)
|
||||
void
|
||||
sound_card_init(void)
|
||||
{
|
||||
if (sound_cards[sound_card_current].device)
|
||||
device_add(sound_cards[sound_card_current].device);
|
||||
if (sound_cards[sound_card_current[0]].device)
|
||||
device_add(sound_cards[sound_card_current[0]].device);
|
||||
if (sound_cards[sound_card_current[1]].device)
|
||||
device_add(sound_cards[sound_card_current[1]].device);
|
||||
if (sound_cards[sound_card_current[2]].device)
|
||||
device_add(sound_cards[sound_card_current[2]].device);
|
||||
if (sound_cards[sound_card_current[3]].device)
|
||||
device_add(sound_cards[sound_card_current[3]].device);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -511,15 +521,6 @@ sound_card_reset(void)
|
||||
|
||||
if (mpu401_standalone_enable)
|
||||
mpu401_device_add();
|
||||
|
||||
if (GUS)
|
||||
device_add(&gus_device);
|
||||
|
||||
if (GAMEBLASTER)
|
||||
device_add(&cms_device);
|
||||
|
||||
if (SSI2001)
|
||||
device_add(&ssi2001_device);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -624,11 +624,11 @@ ui_msgbox_header(int flags, void *header, void *message)
|
||||
SDL_MessageBoxData msgdata;
|
||||
SDL_MessageBoxButtonData msgbtn;
|
||||
if (!header)
|
||||
header = (flags & MBX_ANSI) ? "86Box" : L"86Box";
|
||||
header = (void *) (flags & MBX_ANSI) ? "86Box" : L"86Box";
|
||||
if (header <= (void *) 7168)
|
||||
header = plat_get_string(header);
|
||||
header = (void *) plat_get_string((int) header);
|
||||
if (message <= (void *) 7168)
|
||||
message = plat_get_string(message);
|
||||
message = (void *) plat_get_string((int) message);
|
||||
msgbtn.buttonid = 1;
|
||||
msgbtn.text = "OK";
|
||||
msgbtn.flags = 0;
|
||||
|
||||
@@ -240,44 +240,33 @@ VPATH := $(EXPATH) . $(CODEGEN) minitrace cpu \
|
||||
sound/munt/srchelper sound/munt/srchelper/srctools/src \
|
||||
sound/resid-fp sound/ymfm \
|
||||
scsi video network network/slirp win
|
||||
|
||||
WINDRES := windres
|
||||
STRIP := strip
|
||||
ifeq ($(X64), y)
|
||||
TOOL_PREFIX := x86_64-w64-mingw32-
|
||||
else
|
||||
TOOL_PREFIX := i686-w64-mingw32-
|
||||
endif
|
||||
WINDRES := windres
|
||||
STRIP := strip
|
||||
ifeq ($(ARM64), y)
|
||||
WINDRES := aarch64-w64-mingw32-windres
|
||||
STRIP := aarch64-w64-mingw32-strip
|
||||
endif
|
||||
ifeq ($(ARM), y)
|
||||
WINDRES := armv7-w64-mingw32-windres
|
||||
STRIP := armv7-w64-mingw32-strip
|
||||
endif
|
||||
ifeq ($(CLANG), y)
|
||||
CPP := clang++
|
||||
CC := clang
|
||||
ifeq ($(ARM64), y)
|
||||
CPP := aarch64-w64-mingw32-clang++
|
||||
CC := aarch64-w64-mingw32-clang
|
||||
TOOL_PREFIX := aarch64-w64-mingw32-
|
||||
WINDRES := ${TOOL_PREFIX}windres
|
||||
STRIP := ${TOOL_PREFIX}strip
|
||||
endif
|
||||
ifeq ($(ARM), y)
|
||||
CPP := armv7-w64-mingw32-clang++
|
||||
CC := armv7-w64-mingw32-clang
|
||||
TOOL_PREFIX := armv7-w64-mingw32-
|
||||
WINDRES := ${TOOL_PREFIX}windres
|
||||
STRIP := ${TOOL_PREFIX}strip
|
||||
endif
|
||||
TOOL_PREFIX := i686-w64-mingw32-
|
||||
endif
|
||||
|
||||
ifeq ($(CLANG), y)
|
||||
CPP := ${TOOL_PREFIX}clang++
|
||||
CC := ${TOOL_PREFIX}clang
|
||||
else
|
||||
CPP := ${TOOL_PREFIX}g++
|
||||
CC := ${TOOL_PREFIX}gcc
|
||||
ifeq ($(ARM64), y)
|
||||
CPP := aarch64-w64-mingw32-g++
|
||||
CC := aarch64-w64-mingw32-gcc
|
||||
endif
|
||||
ifeq ($(ARM), y)
|
||||
CPP := armv7-w64-mingw32-g++
|
||||
CC := armv7-w64-mingw32-gcc
|
||||
endif
|
||||
endif
|
||||
|
||||
DEPS = -MMD -MF $*.d -c $<
|
||||
DEPFILE := win/.depends
|
||||
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Pořídit &screenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Předvolby...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Povolit integraci s &Discordem", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Zesílení zvuku", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Zvuková karta:"
|
||||
#define STR_SOUND1 "Zvuková karta 1:"
|
||||
#define STR_SOUND2 "Zvuková karta 2:"
|
||||
#define STR_SOUND3 "Zvuková karta 3:"
|
||||
#define STR_SOUND4 "Zvuková karta 4:"
|
||||
#define STR_MIDI_OUT "MIDI výstup:"
|
||||
#define STR_MIDI_IN "MIDI vstup:"
|
||||
#define STR_MPU401 "Samostatný MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Použít zvuk FLOAT32"
|
||||
#define STR_FM_DRIVER "FM synth driver"
|
||||
#define STR_FM_DRV_NUKED "Nuked (přesnější)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (rychlejší)"
|
||||
|
||||
#define STR_NET_TYPE "Druh sítě:"
|
||||
#define STR_NET_TYPE "Druh sítě:"
|
||||
#define STR_PCAP "PCap zařízení:"
|
||||
#define STR_NET "Síťový adaptér:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Zařízení na COM1:"
|
||||
#define STR_COM2 "Zařízení na COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "S&creenshot aufnehmen\tStrg+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Einstellungen...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "&Discord-Integration aktivieren", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Klangverstärkung...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Soundkarte:"
|
||||
#define STR_SOUND1 "Soundkarte 1:"
|
||||
#define STR_SOUND2 "Soundkarte 2:"
|
||||
#define STR_SOUND3 "Soundkarte 3:"
|
||||
#define STR_SOUND4 "Soundkarte 4:"
|
||||
#define STR_MIDI_OUT "MIDI Out-Gerät:"
|
||||
#define STR_MIDI_IN "MIDI In-Gerät:"
|
||||
#define STR_MPU401 "Standalone-MPU-401-Gerät"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32-Wiedergabe benutzen"
|
||||
#define STR_FM_DRIVER "FM-Synth-Treiber"
|
||||
#define STR_FM_DRV_NUKED "Nuked (genauer)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (schneller)"
|
||||
|
||||
#define STR_NET_TYPE "Netzwerktyp:"
|
||||
#define STR_NET_TYPE "Netzwerktyp:"
|
||||
#define STR_PCAP "PCap-Gerät:"
|
||||
#define STR_NET "Netzwerkadapter:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1-Gerät:"
|
||||
#define STR_COM2 "COM2-Gerät:"
|
||||
|
||||
@@ -320,58 +320,64 @@ DLG_CFG_SOUND DIALOG DISCARDABLE CFG_PANE_LEFT, CFG_PANE_TOP, CFG_PANE_WIDTH, C
|
||||
STYLE DS_CONTROL | WS_CHILD
|
||||
FONT FONT_SIZE, FONT_NAME
|
||||
BEGIN
|
||||
LTEXT STR_SOUND, IDT_SOUND,
|
||||
LTEXT STR_SOUND1, IDT_SOUND1,
|
||||
CFG_HMARGIN, CFG_VMARGIN, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_SOUND,
|
||||
COMBOBOX IDC_COMBO_SOUND1,
|
||||
CFG_COMBO_BOX_LEFT, 7, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SND,
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SND1,
|
||||
CFG_COMBO_BTN_LEFT, 6, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
LTEXT STR_MIDI_OUT, IDT_MIDI_OUT,
|
||||
LTEXT STR_SOUND2, IDT_SOUND2,
|
||||
CFG_HMARGIN, 28, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_MIDI_OUT,
|
||||
COMBOBOX IDC_COMBO_SOUND2,
|
||||
CFG_COMBO_BOX_LEFT, 26, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SND2,
|
||||
CFG_COMBO_BTN_LEFT, 25, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
LTEXT STR_SOUND3, IDT_SOUND3,
|
||||
CFG_HMARGIN, 48, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_SOUND3,
|
||||
CFG_COMBO_BOX_LEFT, 46, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SND3,
|
||||
CFG_COMBO_BTN_LEFT, 45, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
LTEXT STR_SOUND4, IDT_SOUND4,
|
||||
CFG_HMARGIN, 68, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_SOUND4,
|
||||
CFG_COMBO_BOX_LEFT, 66, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SND4,
|
||||
CFG_COMBO_BTN_LEFT, 65, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
LTEXT STR_MIDI_OUT, IDT_MIDI_OUT,
|
||||
CFG_HMARGIN, 88, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_MIDI_OUT,
|
||||
CFG_COMBO_BOX_LEFT, 86, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE,
|
||||
IDC_CONFIGURE_MIDI_OUT,
|
||||
CFG_COMBO_BTN_LEFT, 25, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
CFG_COMBO_BTN_LEFT, 85, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
LTEXT STR_MIDI_IN, IDT_MIDI_IN,
|
||||
CFG_HMARGIN, 47, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
CFG_HMARGIN, 108, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_MIDI_IN,
|
||||
CFG_COMBO_BOX_LEFT, 45, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CFG_COMBO_BOX_LEFT, 105, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_MIDI_IN,
|
||||
CFG_COMBO_BTN_LEFT, 44, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
CFG_COMBO_BTN_LEFT, 105, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
CONTROL STR_MPU401,IDC_CHECK_MPU401,
|
||||
"Button", BS_AUTOCHECKBOX | WS_TABSTOP,
|
||||
CFG_HMARGIN, 66, 199, CFG_CHECKBOX_HEIGHT
|
||||
CFG_HMARGIN, 126, 199, CFG_CHECKBOX_HEIGHT
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_MPU401,
|
||||
CFG_COMBO_BTN_LEFT, 64, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
CFG_COMBO_BTN_LEFT, 125, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
CONTROL STR_SSI,IDC_CHECK_SSI,
|
||||
"Button", BS_AUTOCHECKBOX | WS_TABSTOP,
|
||||
CFG_HMARGIN, 84, 95, CFG_CHECKBOX_HEIGHT
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_SSI,
|
||||
CFG_COMBO_BTN_LEFT, 82, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
CONTROL STR_CMS,IDC_CHECK_CMS,
|
||||
"Button", BS_AUTOCHECKBOX | WS_TABSTOP,
|
||||
CFG_HMARGIN, 102, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_CMS,
|
||||
CFG_COMBO_BTN_LEFT, 100, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
CONTROL STR_GUS,IDC_CHECK_GUS,
|
||||
"Button", BS_AUTOCHECKBOX | WS_TABSTOP,
|
||||
CFG_HMARGIN, 120, CFG_CHECKBOX_PRI_WIDTH, CFG_CHECKBOX_HEIGHT
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_GUS,
|
||||
CFG_COMBO_BTN_LEFT, 118, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
|
||||
CONTROL STR_FLOAT, IDC_CHECK_FLOAT,
|
||||
"Button", BS_AUTOCHECKBOX | WS_TABSTOP,
|
||||
CFG_HMARGIN, 138, 104, CFG_CHECKBOX_HEIGHT
|
||||
CFG_HMARGIN, 138, 194, CFG_CHECKBOX_HEIGHT
|
||||
|
||||
GROUPBOX STR_FM_DRIVER, IDC_FM_DRIVER,
|
||||
CFG_HMARGIN, 154, 110, 42
|
||||
@@ -391,22 +397,22 @@ FONT FONT_SIZE, FONT_NAME
|
||||
BEGIN
|
||||
LTEXT STR_NET_TYPE, IDT_NET_TYPE,
|
||||
CFG_HMARGIN, CFG_VMARGIN, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_NET_TYPE,
|
||||
COMBOBOX IDC_COMBO_NET1_TYPE,
|
||||
CFG_COMBO_BOX_LEFT, 7, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
LTEXT STR_PCAP, IDT_PCAP,
|
||||
CFG_HMARGIN, 28, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_PCAP,
|
||||
COMBOBOX IDC_COMBO_PCAP1,
|
||||
CFG_COMBO_BOX_LEFT, 26, CFG_COMBO_NOBTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
|
||||
LTEXT STR_NET, IDT_NET,
|
||||
CFG_HMARGIN, 47, CFG_PANE_LTEXT_PRI_WIDTH, CFG_PANE_LTEXT_HEIGHT
|
||||
COMBOBOX IDC_COMBO_NET,
|
||||
COMBOBOX IDC_COMBO_NET1,
|
||||
CFG_COMBO_BOX_LEFT, 45, CFG_COMBO_BTN_WIDTH, CFG_COMBO_HEIGHT,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_NET,
|
||||
PUSHBUTTON STR_CONFIGURE, IDC_CONFIGURE_NET1,
|
||||
CFG_COMBO_BTN_LEFT, 44, CFG_BTN_WIDTH, CFG_BTN_HEIGHT
|
||||
END
|
||||
|
||||
@@ -958,13 +964,13 @@ END
|
||||
#undef STR_JOY3
|
||||
#undef STR_JOY4
|
||||
|
||||
#undef STR_SOUND
|
||||
#undef STR_SOUND1
|
||||
#undef STR_SOUND2
|
||||
#undef STR_SOUND3
|
||||
#undef STR_SOUND4
|
||||
#undef STR_MIDI_OUT
|
||||
#undef STR_MIDI_IN
|
||||
#undef STR_MPU401
|
||||
#undef STR_SSI
|
||||
#undef STR_CMS
|
||||
#undef STR_GUS
|
||||
#undef STR_FLOAT
|
||||
#undef STR_FM_DRIVER
|
||||
#undef STR_FM_DRV_NUKED
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferences...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Enable &Discord integration", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sound &gain...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Sound card:"
|
||||
#define STR_SOUND1 "Sound card 1:"
|
||||
#define STR_SOUND2 "Sound card 2:"
|
||||
#define STR_SOUND3 "Sound card 3:"
|
||||
#define STR_SOUND4 "Sound card 4:"
|
||||
#define STR_MIDI_OUT "MIDI Out Device:"
|
||||
#define STR_MIDI_IN "MIDI In Device:"
|
||||
#define STR_MPU401 "Standalone MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Use FLOAT32 sound"
|
||||
#define STR_FM_DRIVER "FM synth driver"
|
||||
#define STR_FM_DRV_NUKED "Nuked (more accurate)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (faster)"
|
||||
|
||||
#define STR_NET_TYPE "Network type:"
|
||||
#define STR_NET_TYPE "Network type:"
|
||||
#define STR_PCAP "PCap device:"
|
||||
#define STR_NET "Network adapter:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1 Device:"
|
||||
#define STR_COM2 "COM2 Device:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferences...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Enable &Discord integration", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sound &gain...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Sound card:"
|
||||
#define STR_SOUND1 "Sound card 1:"
|
||||
#define STR_SOUND2 "Sound card 2:"
|
||||
#define STR_SOUND3 "Sound card 3:"
|
||||
#define STR_SOUND4 "Sound card 4:"
|
||||
#define STR_MIDI_OUT "MIDI Out Device:"
|
||||
#define STR_MIDI_IN "MIDI In Device:"
|
||||
#define STR_MPU401 "Standalone MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Use FLOAT32 sound"
|
||||
#define STR_FM_DRIVER "FM synth driver"
|
||||
#define STR_FM_DRV_NUKED "Nuked (more accurate)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (faster)"
|
||||
|
||||
#define STR_NET_TYPE "Network type:"
|
||||
#define STR_NET_TYPE "Network type:"
|
||||
#define STR_PCAP "PCap device:"
|
||||
#define STR_NET "Network adapter:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1 Device:"
|
||||
#define STR_COM2 "COM2 Device:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Tomar c&aptura\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferencias...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Habilitar integración con &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ganancia de sonido...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Mando 3..."
|
||||
#define STR_JOY4 "Mando 4..."
|
||||
|
||||
#define STR_SOUND "Tarjeta de sonido:"
|
||||
#define STR_SOUND1 "Tarjeta de sonido 1:"
|
||||
#define STR_SOUND2 "Tarjeta de sonido 2:"
|
||||
#define STR_SOUND3 "Tarjeta de sonido 3:"
|
||||
#define STR_SOUND4 "Tarjeta de sonido 4:"
|
||||
#define STR_MIDI_OUT "Dispositivo MIDI de salida:"
|
||||
#define STR_MIDI_IN "Dispositivo MIDI de entrada:"
|
||||
#define STR_MPU401 "MPU-401 independiente"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Usar sonido FLOAT32"
|
||||
#define STR_FM_DRIVER "Controlador de sintet. FM"
|
||||
#define STR_FM_DRV_NUKED "Nuked (más preciso)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (más rápido)"
|
||||
|
||||
#define STR_NET_TYPE "Tipo de red:"
|
||||
#define STR_NET_TYPE "Tipo de red:"
|
||||
#define STR_PCAP "Dispositivo PCap:"
|
||||
#define STR_NET "Adaptador de red:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Dispositivo COM1:"
|
||||
#define STR_COM2 "Dispositivo COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Ota &kuvakaappaus\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Sovellusasetukset...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Käytä &Discord-integraatiota", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Äänitasot...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,13 +286,13 @@ END
|
||||
#define STR_JOY3 "Peliohjain 3..."
|
||||
#define STR_JOY4 "Peliohjain 4..."
|
||||
|
||||
#define STR_SOUND "Äänikortti:"
|
||||
#define STR_SOUND1 "Äänikortti 1:"
|
||||
#define STR_SOUND2 "Äänikortti 2:"
|
||||
#define STR_SOUND3 "Äänikortti 3:"
|
||||
#define STR_SOUND4 "Äänikortti 4:"
|
||||
#define STR_MIDI_OUT "MIDI-ulostulo:"
|
||||
#define STR_MIDI_IN "MIDI-sisääntulo:"
|
||||
#define STR_MPU401 "Erillinen MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Käytä FLOAT32-ääntä"
|
||||
#define STR_FM_DRIVER "FM-syntetisaattoriohjain"
|
||||
#define STR_FM_DRV_NUKED "Nuked (tarkempi)"
|
||||
@@ -299,6 +301,10 @@ END
|
||||
#define STR_NET_TYPE "Verkon tyyppi:"
|
||||
#define STR_PCAP "PCap-laite:"
|
||||
#define STR_NET "Verkkokortti:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1-laite:"
|
||||
#define STR_COM2 "COM2-laite:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Copie &Ecran\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Préférences...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Activer intégration &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Gain Son...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Manette 3..."
|
||||
#define STR_JOY4 "Manette 4..."
|
||||
|
||||
#define STR_SOUND "Carte son:"
|
||||
#define STR_SOUND1 "Carte son 1:"
|
||||
#define STR_SOUND2 "Carte son 2:"
|
||||
#define STR_SOUND3 "Carte son 3:"
|
||||
#define STR_SOUND4 "Carte son 4:"
|
||||
#define STR_MIDI_OUT "Sortie MIDI:"
|
||||
#define STR_MIDI_IN "Entrée MIDI:"
|
||||
#define STR_MPU401 "MPU-401 autonome"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Utiliser le son FLOAT32"
|
||||
#define STR_FM_DRIVER "Pilote de synthétiseur FM"
|
||||
#define STR_FM_DRV_NUKED "Nuked (plus précis)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (plus rapide)"
|
||||
|
||||
#define STR_NET_TYPE "Type de réseau:"
|
||||
#define STR_NET_TYPE "Type de réseau:"
|
||||
#define STR_PCAP "Dispositif PCap:"
|
||||
#define STR_NET "Adaptateur de réseau:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Dispositif COM1:"
|
||||
#define STR_COM2 "Dispositif COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Napravi &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Postavke...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Omogući integraciju sa programom &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Pojačanje zvuka...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Palica za igru 3..."
|
||||
#define STR_JOY4 "Palica za igru 4..."
|
||||
|
||||
#define STR_SOUND "Zvučna kartica:"
|
||||
#define STR_SOUND1 "Zvučna kartica 1:"
|
||||
#define STR_SOUND2 "Zvučna kartica 2:"
|
||||
#define STR_SOUND3 "Zvučna kartica 3:"
|
||||
#define STR_SOUND4 "Zvučna kartica 4:"
|
||||
#define STR_MIDI_OUT "Izlazni uređaj MIDI:"
|
||||
#define STR_MIDI_IN "Ulazni uređaj MIDI:"
|
||||
#define STR_MPU401 "Samostalni MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Koristi FLOAT32 za zvuk"
|
||||
#define STR_FM_DRIVER "Drajver za FM sintisajzer"
|
||||
#define STR_FM_DRV_NUKED "Nuked (precizniji)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (brži)"
|
||||
|
||||
#define STR_NET_TYPE "Tip mreže:"
|
||||
#define STR_NET_TYPE "Tip mreže:"
|
||||
#define STR_PCAP "Uređaj PCap:"
|
||||
#define STR_NET "Mrežna kartica:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Uređaj COM1:"
|
||||
#define STR_COM2 "Uređaj COM2:"
|
||||
|
||||
@@ -109,7 +109,9 @@ BEGIN
|
||||
MENUITEM "&Képernyőkép készítése\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Beállítások...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "&Discord integráció engedélyezése", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Hangerőszabályzó...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -289,21 +291,25 @@ END
|
||||
#define STR_JOY3 "Játékvez. 3..."
|
||||
#define STR_JOY4 "Játékvez. 4..."
|
||||
|
||||
#define STR_SOUND "Hangkártya:"
|
||||
#define STR_SOUND1 "Hangkártya 1:"
|
||||
#define STR_SOUND2 "Hangkártya 2:"
|
||||
#define STR_SOUND3 "Hangkártya 3:"
|
||||
#define STR_SOUND4 "Hangkártya 4:"
|
||||
#define STR_MIDI_OUT "MIDI-kimenet:"
|
||||
#define STR_MIDI_IN "MIDI-bemenet:"
|
||||
#define STR_MPU401 "Különálló MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32 használata"
|
||||
#define STR_FM_DRIVER "FM szintetizátor meghajtó"
|
||||
#define STR_FM_DRV_NUKED "Nuked (pontosabb)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (gyorsabb)"
|
||||
|
||||
#define STR_NET_TYPE "Hálózati típusa:"
|
||||
#define STR_NET_TYPE "Hálózati típusa:"
|
||||
#define STR_PCAP "PCap eszköz:"
|
||||
#define STR_NET "Hálózati kártya:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1 eszköz:"
|
||||
#define STR_COM2 "COM2 eszköz:"
|
||||
|
||||
@@ -105,7 +105,9 @@ BEGIN
|
||||
MENUITEM "Cattura schermata\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferenze...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Abilita &integrazione Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Guadagno &suono...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -285,21 +287,25 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Scheda audio:"
|
||||
#define STR_SOUND1 "Scheda audio 1:"
|
||||
#define STR_SOUND2 "Scheda audio 2:"
|
||||
#define STR_SOUND3 "Scheda audio 3:"
|
||||
#define STR_SOUND4 "Scheda audio 4:"
|
||||
#define STR_MIDI_OUT "Uscita MIDI:"
|
||||
#define STR_MIDI_IN "Entrata MIDI:"
|
||||
#define STR_MPU401 "MPU-401 autonomo"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Usa suono FLOAT32"
|
||||
#define STR_FM_DRIVER "Driver sint. FM"
|
||||
#define STR_FM_DRV_NUKED "Nuked (più accurato)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (più veloce)"
|
||||
|
||||
#define STR_NET_TYPE "Tipo di rete:"
|
||||
#define STR_NET_TYPE "Tipo di rete:"
|
||||
#define STR_PCAP "Dispositivo PCap:"
|
||||
#define STR_NET "Scheda di rete:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Dispositivo COM1:"
|
||||
#define STR_COM2 "Dispositivo COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "スクリーンショットを撮る(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "環境設定(&P)...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Discordとの連携機能(&D)", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "音量を調節(&G)...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "ジョイスティック3..."
|
||||
#define STR_JOY4 "ジョイスティック4..."
|
||||
|
||||
#define STR_SOUND "サウンドカード:"
|
||||
#define STR_SOUND1 "サウンドカード 1:"
|
||||
#define STR_SOUND2 "サウンドカード 2:"
|
||||
#define STR_SOUND3 "サウンドカード 3:"
|
||||
#define STR_SOUND4 "サウンドカード 4:"
|
||||
#define STR_MIDI_OUT "MIDI出力デバイス:"
|
||||
#define STR_MIDI_IN "MIDI入力デバイス:"
|
||||
#define STR_MPU401 "独立型MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32サウンドを使用する"
|
||||
#define STR_FM_DRIVER "FMシンセドライバー"
|
||||
#define STR_FM_DRV_NUKED "Nuked (高精度化)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (より速く)"
|
||||
|
||||
#define STR_NET_TYPE "ネットワークタイプ:"
|
||||
#define STR_NET_TYPE "ネットワークタイプ:"
|
||||
#define STR_PCAP "PCapデバイス:"
|
||||
#define STR_NET "ネットワークアダプター:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1デバイス:"
|
||||
#define STR_COM2 "COM2デバイス:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "스크린샷 찍기(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "환경설정(&P)...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "디스코드 연동 활성화하기(&D)", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "음량 증폭(&G)...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "조이스틱 3..."
|
||||
#define STR_JOY4 "조이스틱 4..."
|
||||
|
||||
#define STR_SOUND "사운드 카드:"
|
||||
#define STR_SOUND1 "사운드 카드 1:"
|
||||
#define STR_SOUND2 "사운드 카드 2:"
|
||||
#define STR_SOUND3 "사운드 카드 3:"
|
||||
#define STR_SOUND4 "사운드 카드 4:"
|
||||
#define STR_MIDI_OUT "MIDI 출력 장치:"
|
||||
#define STR_MIDI_IN "MIDI 입력 장치:"
|
||||
#define STR_MPU401 "MPU-401 단독 사용"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32 사운드 사용"
|
||||
#define STR_FM_DRIVER "FM 신디사이저 드라이버"
|
||||
#define STR_FM_DRV_NUKED "Nuked (더 정확한)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (더 빠르게)"
|
||||
|
||||
#define STR_NET_TYPE "네트워크 종류:"
|
||||
#define STR_NET_TYPE "네트워크 종류:"
|
||||
#define STR_PCAP "PCap 장치:"
|
||||
#define STR_NET "네트워크 어댑터:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1 장치:"
|
||||
#define STR_COM2 "COM2 장치:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Zrób &zrzut ekranu\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferencje...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Włącz integrację z &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Wzmocnienie &dźwięku...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Karta dźwiękowa:"
|
||||
#define STR_SOUND1 "Karta dźwiękowa 1:"
|
||||
#define STR_SOUND2 "Karta dźwiękowa 2:"
|
||||
#define STR_SOUND3 "Karta dźwiękowa 3:"
|
||||
#define STR_SOUND4 "Karta dźwiękowa 4:"
|
||||
#define STR_MIDI_OUT "Urządzenie wyjściowe MIDI:"
|
||||
#define STR_MIDI_IN "Urządzenie wejściowe MIDI:"
|
||||
#define STR_MPU401 "Samodzielne urządzenie MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Użyj dźwięku FLOAT32"
|
||||
#define STR_FM_DRIVER "Sterownik syntezy FM"
|
||||
#define STR_FM_DRV_NUKED "Nuked (dokładniejszy)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (szybszy)"
|
||||
|
||||
#define STR_NET_TYPE "Rodzaj sieci:"
|
||||
#define STR_NET_TYPE "Rodzaj sieci:"
|
||||
#define STR_PCAP "Urządzenie PCap:"
|
||||
#define STR_NET "Karta sieciowa:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Urządzenie COM1:"
|
||||
#define STR_COM2 "Urządzenie COM2:"
|
||||
|
||||
@@ -107,7 +107,9 @@ BEGIN
|
||||
MENUITEM "Capturar &tela\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferências...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Ativar integração com o &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ganho de som...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -287,13 +289,13 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Placa de som:"
|
||||
#define STR_SOUND1 "Placa de som 1:"
|
||||
#define STR_SOUND2 "Placa de som 2:"
|
||||
#define STR_SOUND3 "Placa de som 3:"
|
||||
#define STR_SOUND4 "Placa de som 4:"
|
||||
#define STR_MIDI_OUT "Disp. saída MIDI:"
|
||||
#define STR_MIDI_IN "Disp. entrada MIDI:"
|
||||
#define STR_MPU401 "MPU-401 autônomo"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Usar som FLOAT32"
|
||||
#define STR_FM_DRIVER "Controlador de sint. FM"
|
||||
#define STR_FM_DRV_NUKED "Nuked (mais preciso)"
|
||||
@@ -302,6 +304,10 @@ END
|
||||
#define STR_NET_TYPE "Tipo de rede:"
|
||||
#define STR_PCAP "Dispositivo PCap:"
|
||||
#define STR_NET "Adaptador de rede:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Dispositivo COM1:"
|
||||
#define STR_COM2 "Dispositivo COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Gravar imagem de ecrã\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Preferências...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Ativar integração com &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ganho de som...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Joystick 3..."
|
||||
#define STR_JOY4 "Joystick 4..."
|
||||
|
||||
#define STR_SOUND "Placa de som:"
|
||||
#define STR_SOUND1 "Placa de som 1:"
|
||||
#define STR_SOUND2 "Placa de som 2:"
|
||||
#define STR_SOUND3 "Placa de som 3:"
|
||||
#define STR_SOUND4 "Placa de som 4:"
|
||||
#define STR_MIDI_OUT "Disp. saída MIDI:"
|
||||
#define STR_MIDI_IN "Disp. entrada MIDI:"
|
||||
#define STR_MPU401 "MPU-401 autónomo"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Utilizar som FLOAT32"
|
||||
#define STR_FM_DRIVER "Controlador de sint. FM"
|
||||
#define STR_FM_DRV_NUKED "Nuked (mais exacto)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (mais rápido)"
|
||||
|
||||
#define STR_NET_TYPE "Tipo de rede:"
|
||||
#define STR_NET_TYPE "Tipo de rede:"
|
||||
#define STR_PCAP "Dispositivo PCap:"
|
||||
#define STR_NET "Placa de rede:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Dispositivo COM1:"
|
||||
#define STR_COM2 "Dispositivo COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Сделать с&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Параметры...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Включить интеграцию &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Усиление звука...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Джойстик 3..."
|
||||
#define STR_JOY4 "Джойстик 4..."
|
||||
|
||||
#define STR_SOUND "Звуковая карта:"
|
||||
#define STR_SOUND1 "Звуковая карта 1:"
|
||||
#define STR_SOUND2 "Звуковая карта 2:"
|
||||
#define STR_SOUND3 "Звуковая карта 3:"
|
||||
#define STR_SOUND4 "Звуковая карта 4:"
|
||||
#define STR_MIDI_OUT "MIDI Out устр-во:"
|
||||
#define STR_MIDI_IN "MIDI In устр-во:"
|
||||
#define STR_MPU401 "Отдельный MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32 звук"
|
||||
#define STR_FM_DRIVER "Драйвер FM-синтезатора"
|
||||
#define STR_FM_DRV_NUKED "Nuked (более точный)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (быстрей)"
|
||||
|
||||
#define STR_NET_TYPE "Тип сети:"
|
||||
#define STR_NET_TYPE "Тип сети:"
|
||||
#define STR_PCAP "Устройство PCap:"
|
||||
#define STR_NET "Сетевая карта:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Устройство COM1:"
|
||||
#define STR_COM2 "Устройство COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "&Zajemi posnetek zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Možnosti...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Omogoči integracijo s programom &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ojačanje zvoka...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Igralna palica 3..."
|
||||
#define STR_JOY4 "Igralna palica 4..."
|
||||
|
||||
#define STR_SOUND "Zvočna kartica:"
|
||||
#define STR_SOUND1 "Zvočna kartica 1:"
|
||||
#define STR_SOUND2 "Zvočna kartica 2:"
|
||||
#define STR_SOUND3 "Zvočna kartica 3:"
|
||||
#define STR_SOUND4 "Zvočna kartica 4:"
|
||||
#define STR_MIDI_OUT "Izhodna naprava MIDI:"
|
||||
#define STR_MIDI_IN "Vhodna naprava MIDI:"
|
||||
#define STR_MPU401 "Samostojen MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "Uporabi FLOAT32 za zvok"
|
||||
#define STR_FM_DRIVER "Gonilnik sintetizacije FM"
|
||||
#define STR_FM_DRV_NUKED "Nuked (točnejši)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (hitrejši)"
|
||||
|
||||
#define STR_NET_TYPE "Vrsta omrežja:"
|
||||
#define STR_NET_TYPE "Vrsta omrežja:"
|
||||
#define STR_PCAP "Naprava PCap:"
|
||||
#define STR_NET "Omrežna kartica:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Naprava COM1:"
|
||||
#define STR_COM2 "Naprava COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "&Ekran görüntüsü al\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Tercihler...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "&Discord entegrasyonunu etkinleştir", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Ses yükseltici...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Oyun kolu 3..."
|
||||
#define STR_JOY4 "Oyun kolu 4..."
|
||||
|
||||
#define STR_SOUND "Ses kartı:"
|
||||
#define STR_SOUND1 "Ses kartı 1:"
|
||||
#define STR_SOUND2 "Ses kartı 2:"
|
||||
#define STR_SOUND3 "Ses kartı 3:"
|
||||
#define STR_SOUND4 "Ses kartı 4:"
|
||||
#define STR_MIDI_OUT "MIDI Çıkış Cihazı:"
|
||||
#define STR_MIDI_IN "MIDI Giriş Cihazı:"
|
||||
#define STR_MPU401 "Bağımsız MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32 ses kullan"
|
||||
#define STR_FM_DRIVER "FM sentez sürücüsü"
|
||||
#define STR_FM_DRV_NUKED "Nuked (daha doğru)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (daha hızlı)"
|
||||
|
||||
#define STR_NET_TYPE "Ağ tipi:"
|
||||
#define STR_NET_TYPE "Ağ tipi:"
|
||||
#define STR_PCAP "PCap cihazı:"
|
||||
#define STR_NET "Ağ cihazı:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1 Cihazı:"
|
||||
#define STR_COM2 "COM2 Cihazı:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "Зробити &знімок\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Параметри...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "Увімкнути інтеграцію &Discord", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Посилення звуку...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "Джойстик 3..."
|
||||
#define STR_JOY4 "Джойстик 4..."
|
||||
|
||||
#define STR_SOUND "Звукова карта:"
|
||||
#define STR_SOUND1 "Звукова карта 1:"
|
||||
#define STR_SOUND2 "Звукова карта 2:"
|
||||
#define STR_SOUND3 "Звукова карта 3:"
|
||||
#define STR_SOUND4 "Звукова карта 4:"
|
||||
#define STR_MIDI_OUT "MIDI Out при-ій:"
|
||||
#define STR_MIDI_IN "MIDI In при-ій:"
|
||||
#define STR_MPU401 "Окремий MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "FLOAT32 звук"
|
||||
#define STR_FM_DRIVER "Драйвер FM-синтезатора"
|
||||
#define STR_FM_DRV_NUKED "Nuked (більш точний)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (швидший)"
|
||||
|
||||
#define STR_NET_TYPE "Тип мережі:"
|
||||
#define STR_NET_TYPE "Тип мережі:"
|
||||
#define STR_PCAP "Пристрій PCap:"
|
||||
#define STR_NET "Мережева карта:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "Пристрій COM1:"
|
||||
#define STR_COM2 "Пристрій COM2:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "截图(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "首选项(&P)...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "启用 Discord 集成(&D)", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "音量增益(&G)...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "操纵杆 3..."
|
||||
#define STR_JOY4 "操纵杆 4..."
|
||||
|
||||
#define STR_SOUND "声卡:"
|
||||
#define STR_SOUND1 "声卡 1:"
|
||||
#define STR_SOUND2 "声卡 2:"
|
||||
#define STR_SOUND3 "声卡 3:"
|
||||
#define STR_SOUND4 "声卡 4:"
|
||||
#define STR_MIDI_OUT "MIDI 输出设备:"
|
||||
#define STR_MIDI_IN "MIDI 输入设备:"
|
||||
#define STR_MPU401 "独立 MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "使用单精度浮点 (FLOAT32)"
|
||||
#define STR_FM_DRIVER "调频合成器驱动器"
|
||||
#define STR_FM_DRV_NUKED "Nuked (更准确)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (更快)"
|
||||
|
||||
#define STR_NET_TYPE "网络类型:"
|
||||
#define STR_NET_TYPE "网络类型:"
|
||||
#define STR_PCAP "PCap 设备:"
|
||||
#define STR_NET "网络适配器:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1 设备:"
|
||||
#define STR_COM2 "COM2 设备:"
|
||||
|
||||
@@ -104,7 +104,9 @@ BEGIN
|
||||
MENUITEM "擷圖(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "首選項(&P)...", IDM_PREFERENCES
|
||||
#ifdef DISCORD
|
||||
MENUITEM "啟用 Discord 整合(&D)", IDM_DISCORD
|
||||
#endif
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "音量增益(&G)...", IDM_SND_GAIN
|
||||
#ifdef MTR_ENABLED
|
||||
@@ -284,21 +286,25 @@ END
|
||||
#define STR_JOY3 "搖桿 3..."
|
||||
#define STR_JOY4 "搖桿 4..."
|
||||
|
||||
#define STR_SOUND "音訊卡:"
|
||||
#define STR_SOUND1 "音訊卡 1:"
|
||||
#define STR_SOUND2 "音訊卡 2:"
|
||||
#define STR_SOUND3 "音訊卡 3:"
|
||||
#define STR_SOUND4 "音訊卡 4:"
|
||||
#define STR_MIDI_OUT "MIDI 輸出裝置:"
|
||||
#define STR_MIDI_IN "MIDI 輸入裝置:"
|
||||
#define STR_MPU401 "獨立 MPU-401"
|
||||
#define STR_SSI "Innovation SSI-2001"
|
||||
#define STR_CMS "CMS / Game Blaster"
|
||||
#define STR_GUS "Gravis Ultrasound"
|
||||
#define STR_FLOAT "使用單精度浮點 (FLOAT32)"
|
||||
#define STR_FM_DRIVER "調頻合成器驅動器"
|
||||
#define STR_FM_DRV_NUKED "Nuked (更準確)"
|
||||
#define STR_FM_DRV_YMFM "YMFM (更快)"
|
||||
|
||||
#define STR_NET_TYPE "網路類型:"
|
||||
#define STR_NET_TYPE "網路類型:"
|
||||
#define STR_PCAP "PCap 裝置:"
|
||||
#define STR_NET "網路配接器:"
|
||||
#define STR_NET1 "Network card 1:"
|
||||
#define STR_NET2 "Network card 2:"
|
||||
#define STR_NET3 "Network card 3:"
|
||||
#define STR_NET4 "Network card 4:"
|
||||
|
||||
#define STR_COM1 "COM1 裝置:"
|
||||
#define STR_COM2 "COM2 裝置:"
|
||||
|
||||
@@ -99,12 +99,14 @@ static int temp_gfxcard, temp_gfxcard_2, temp_ibm8514, temp_voodoo, temp_xga;
|
||||
static int temp_mouse, temp_joystick;
|
||||
|
||||
/* Sound category */
|
||||
static int temp_sound_card, temp_midi_output_device, temp_midi_input_device, temp_mpu401, temp_SSI2001, temp_GAMEBLASTER, temp_GUS;
|
||||
static int temp_sound_card[SOUND_CARD_MAX];
|
||||
static int temp_midi_output_device, temp_midi_input_device, temp_mpu401;
|
||||
static int temp_float, temp_fm_driver;
|
||||
|
||||
/* Network category */
|
||||
static int temp_net_type, temp_net_card;
|
||||
static char temp_pcap_dev[128];
|
||||
static int temp_net_type[NET_CARD_MAX];
|
||||
static int temp_net_card[NET_CARD_MAX];
|
||||
static char temp_pcap_dev[NET_CARD_MAX][128];
|
||||
|
||||
/* Ports category */
|
||||
static int temp_lpt_devices[PARALLEL_MAX];
|
||||
@@ -335,24 +337,24 @@ win_settings_init(void)
|
||||
temp_joystick = joystick_type;
|
||||
|
||||
/* Sound category */
|
||||
temp_sound_card = sound_card_current;
|
||||
for (i = 0; i < SOUND_CARD_MAX; i++)
|
||||
temp_sound_card[i] = sound_card_current[i];
|
||||
temp_midi_output_device = midi_output_device_current;
|
||||
temp_midi_input_device = midi_input_device_current;
|
||||
temp_mpu401 = mpu401_standalone_enable;
|
||||
temp_SSI2001 = SSI2001;
|
||||
temp_GAMEBLASTER = GAMEBLASTER;
|
||||
temp_GUS = GUS;
|
||||
temp_float = sound_is_float;
|
||||
temp_fm_driver = fm_driver;
|
||||
|
||||
/* Network category */
|
||||
temp_net_type = net_cards_conf[0].net_type;
|
||||
memset(temp_pcap_dev, 0, sizeof(temp_pcap_dev));
|
||||
#ifdef ENABLE_SETTINGS_LOG
|
||||
assert(sizeof(temp_pcap_dev) == sizeof(net_cards_conf[0].host_dev_name));
|
||||
#endif
|
||||
memcpy(temp_pcap_dev, net_cards_conf[0].host_dev_name, sizeof(net_cards_conf[0].host_dev_name));
|
||||
temp_net_card = net_cards_conf[0].device_num;
|
||||
for (i = 0; i < NET_CARD_MAX; i++) {
|
||||
temp_net_type[i] = net_cards_conf[i].net_type;
|
||||
memset(temp_pcap_dev[i], 0, sizeof(temp_pcap_dev[i]));
|
||||
# ifdef ENABLE_SETTINGS_LOG
|
||||
assert(sizeof(temp_pcap_dev[i]) == sizeof(net_cards_conf[i].host_dev_name));
|
||||
# endif
|
||||
memcpy(temp_pcap_dev[i], net_cards_conf[i].host_dev_name, sizeof(net_cards_conf[i].host_dev_name));
|
||||
temp_net_card[i] = net_cards_conf[i].device_num;
|
||||
}
|
||||
|
||||
/* Ports category */
|
||||
for (i = 0; i < PARALLEL_MAX; i++) {
|
||||
@@ -462,20 +464,20 @@ win_settings_changed(void)
|
||||
i = i || (joystick_type != temp_joystick);
|
||||
|
||||
/* Sound category */
|
||||
i = i || (sound_card_current != temp_sound_card);
|
||||
for (j = 0; j < SOUND_CARD_MAX; j++)
|
||||
i = i || (sound_card_current[j] != temp_sound_card[j]);
|
||||
i = i || (midi_output_device_current != temp_midi_output_device);
|
||||
i = i || (midi_input_device_current != temp_midi_input_device);
|
||||
i = i || (mpu401_standalone_enable != temp_mpu401);
|
||||
i = i || (SSI2001 != temp_SSI2001);
|
||||
i = i || (GAMEBLASTER != temp_GAMEBLASTER);
|
||||
i = i || (GUS != temp_GUS);
|
||||
i = i || (sound_is_float != temp_float);
|
||||
i = i || (fm_driver != temp_fm_driver);
|
||||
|
||||
/* Network category */
|
||||
i = i || (net_cards_conf[i].net_type != temp_net_type);
|
||||
i = i || strcmp(temp_pcap_dev, net_cards_conf[0].host_dev_name);
|
||||
i = i || (net_cards_conf[0].device_num != temp_net_card);
|
||||
for (j = 0; j < NET_CARD_MAX; j++) {
|
||||
i = i || (net_cards_conf[j].net_type != temp_net_type[j]);
|
||||
i = i || strcmp(temp_pcap_dev[j], net_cards_conf[j].host_dev_name);
|
||||
i = i || (net_cards_conf[j].device_num != temp_net_card[j]);
|
||||
}
|
||||
|
||||
/* Ports category */
|
||||
for (j = 0; j < PARALLEL_MAX; j++) {
|
||||
@@ -555,21 +557,21 @@ win_settings_save(void)
|
||||
joystick_type = temp_joystick;
|
||||
|
||||
/* Sound category */
|
||||
sound_card_current = temp_sound_card;
|
||||
for (i = 0; i < SOUND_CARD_MAX; i++)
|
||||
sound_card_current[i] = temp_sound_card[i];
|
||||
midi_output_device_current = temp_midi_output_device;
|
||||
midi_input_device_current = temp_midi_input_device;
|
||||
mpu401_standalone_enable = temp_mpu401;
|
||||
SSI2001 = temp_SSI2001;
|
||||
GAMEBLASTER = temp_GAMEBLASTER;
|
||||
GUS = temp_GUS;
|
||||
sound_is_float = temp_float;
|
||||
fm_driver = temp_fm_driver;
|
||||
|
||||
/* Network category */
|
||||
net_cards_conf[i].net_type = temp_net_type;
|
||||
memset(net_cards_conf[0].host_dev_name, '\0', sizeof(net_cards_conf[0].host_dev_name));
|
||||
strcpy(net_cards_conf[0].host_dev_name, temp_pcap_dev);
|
||||
net_cards_conf[0].device_num = temp_net_card;
|
||||
for (i = 0; i < NET_CARD_MAX; i++) {
|
||||
net_cards_conf[i].net_type = temp_net_type[i];
|
||||
memset(net_cards_conf[i].host_dev_name, '\0', sizeof(net_cards_conf[i].host_dev_name));
|
||||
strcpy(net_cards_conf[i].host_dev_name, temp_pcap_dev[i]);
|
||||
net_cards_conf[i].device_num = temp_net_card[i];
|
||||
}
|
||||
|
||||
/* Ports category */
|
||||
for (i = 0; i < PARALLEL_MAX; i++) {
|
||||
@@ -1396,16 +1398,16 @@ static BOOL CALLBACK
|
||||
#endif
|
||||
win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
int c, d;
|
||||
uint16_t c, d;
|
||||
LPTSTR lptsTemp;
|
||||
const device_t *sound_dev;
|
||||
const device_t *sound_dev[SOUND_CARD_MAX];
|
||||
|
||||
switch (message) {
|
||||
case WM_INITDIALOG:
|
||||
lptsTemp = (LPTSTR) malloc(512 * sizeof(WCHAR));
|
||||
|
||||
c = d = 0;
|
||||
settings_reset_content(hdlg, IDC_COMBO_SOUND);
|
||||
settings_reset_content(hdlg, IDC_COMBO_SOUND1);
|
||||
while (1) {
|
||||
/* Skip "internal" if machine doesn't have it. */
|
||||
if ((c == 1) && !machine_has_flags(temp_machine, MACHINE_SOUND)) {
|
||||
@@ -1419,18 +1421,18 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
break;
|
||||
|
||||
if (sound_card_available(c)) {
|
||||
sound_dev = sound_card_getdevice(c);
|
||||
sound_dev[0] = sound_card_getdevice(c);
|
||||
|
||||
if (device_is_valid(sound_dev, temp_machine)) {
|
||||
if (device_is_valid(sound_dev[0], temp_machine)) {
|
||||
if (c == 0)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND, win_get_string(IDS_2104));
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND1, win_get_string(IDS_2104));
|
||||
else if (c == 1)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND, win_get_string(IDS_2119));
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND1, win_get_string(IDS_2119));
|
||||
else
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND, (LPARAM) device_name);
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND1, (LPARAM) device_name);
|
||||
settings_list_to_device[0][d] = c;
|
||||
if ((c == 0) || (c == temp_sound_card))
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_SOUND, d);
|
||||
if ((c == 0) || (c == temp_sound_card[0]))
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_SOUND1, d);
|
||||
d++;
|
||||
}
|
||||
}
|
||||
@@ -1438,8 +1440,119 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
c++;
|
||||
}
|
||||
|
||||
settings_enable_window(hdlg, IDC_COMBO_SOUND, d);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND, sound_card_has_config(temp_sound_card));
|
||||
settings_enable_window(hdlg, IDC_COMBO_SOUND1, d);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND1, sound_card_has_config(temp_sound_card[0]));
|
||||
|
||||
c = d = 0;
|
||||
settings_reset_content(hdlg, IDC_COMBO_SOUND2);
|
||||
while (1) {
|
||||
/* Skip "internal" */
|
||||
if (c == 1) {
|
||||
c++;
|
||||
continue;
|
||||
}
|
||||
|
||||
generate_device_name(sound_card_getdevice(c), sound_card_get_internal_name(c), 1);
|
||||
|
||||
if (!device_name[0])
|
||||
break;
|
||||
|
||||
if (sound_card_available(c)) {
|
||||
sound_dev[1] = sound_card_getdevice(c);
|
||||
|
||||
if (device_is_valid(sound_dev[1], temp_machine)) {
|
||||
if (c == 0)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND2, win_get_string(IDS_2104));
|
||||
else if (c == 1)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND2, win_get_string(IDS_2119));
|
||||
else
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND2, (LPARAM) device_name);
|
||||
settings_list_to_device[0][d] = c;
|
||||
if ((c == 0) || (c == temp_sound_card[1]))
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_SOUND2, d);
|
||||
d++;
|
||||
}
|
||||
}
|
||||
|
||||
c++;
|
||||
}
|
||||
|
||||
settings_enable_window(hdlg, IDC_COMBO_SOUND2, d);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND2, sound_card_has_config(temp_sound_card[1]));
|
||||
|
||||
c = d = 0;
|
||||
settings_reset_content(hdlg, IDC_COMBO_SOUND3);
|
||||
while (1) {
|
||||
/* Skip "internal" */
|
||||
if (c == 1) {
|
||||
c++;
|
||||
continue;
|
||||
}
|
||||
|
||||
generate_device_name(sound_card_getdevice(c), sound_card_get_internal_name(c), 1);
|
||||
|
||||
if (!device_name[0])
|
||||
break;
|
||||
|
||||
if (sound_card_available(c)) {
|
||||
sound_dev[2] = sound_card_getdevice(c);
|
||||
|
||||
if (device_is_valid(sound_dev[2], temp_machine)) {
|
||||
if (c == 0)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND3, win_get_string(IDS_2104));
|
||||
else if (c == 1)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND3, win_get_string(IDS_2119));
|
||||
else
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND3, (LPARAM) device_name);
|
||||
settings_list_to_device[0][d] = c;
|
||||
if ((c == 0) || (c == temp_sound_card[2]))
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_SOUND3, d);
|
||||
d++;
|
||||
}
|
||||
}
|
||||
|
||||
c++;
|
||||
}
|
||||
|
||||
settings_enable_window(hdlg, IDC_COMBO_SOUND3, d);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND3, sound_card_has_config(temp_sound_card[2]));
|
||||
|
||||
c = d = 0;
|
||||
settings_reset_content(hdlg, IDC_COMBO_SOUND4);
|
||||
while (1) {
|
||||
/* Skip "internal" */
|
||||
if (c == 1) {
|
||||
c++;
|
||||
continue;
|
||||
}
|
||||
|
||||
generate_device_name(sound_card_getdevice(c), sound_card_get_internal_name(c), 1);
|
||||
|
||||
if (!device_name[0])
|
||||
break;
|
||||
|
||||
if (sound_card_available(c)) {
|
||||
sound_dev[3] = sound_card_getdevice(c);
|
||||
|
||||
if (device_is_valid(sound_dev[3], temp_machine)) {
|
||||
if (c == 0)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND4, win_get_string(IDS_2104));
|
||||
else if (c == 1)
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND4, win_get_string(IDS_2119));
|
||||
else
|
||||
settings_add_string(hdlg, IDC_COMBO_SOUND4, (LPARAM) device_name);
|
||||
settings_list_to_device[0][d] = c;
|
||||
if ((c == 0) || (c == temp_sound_card[3]))
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_SOUND4, d);
|
||||
d++;
|
||||
}
|
||||
}
|
||||
|
||||
c++;
|
||||
}
|
||||
|
||||
settings_enable_window(hdlg, IDC_COMBO_SOUND4, d);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND4, sound_card_has_config(temp_sound_card[3]));
|
||||
|
||||
c = d = 0;
|
||||
settings_reset_content(hdlg, IDC_COMBO_MIDI_OUT);
|
||||
@@ -1491,15 +1604,6 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
settings_set_check(hdlg, IDC_CHECK_MPU401, temp_mpu401);
|
||||
settings_enable_window(hdlg, IDC_CHECK_MPU401, mpu401_standalone_allow());
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_MPU401, mpu401_standalone_allow() && temp_mpu401);
|
||||
settings_enable_window(hdlg, IDC_CHECK_CMS, machine_has_bus(temp_machine, MACHINE_BUS_ISA));
|
||||
settings_set_check(hdlg, IDC_CHECK_CMS, temp_GAMEBLASTER);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_CMS, machine_has_bus(temp_machine, MACHINE_BUS_ISA) && temp_GAMEBLASTER);
|
||||
settings_enable_window(hdlg, IDC_CHECK_GUS, machine_has_bus(temp_machine, MACHINE_BUS_ISA16));
|
||||
settings_set_check(hdlg, IDC_CHECK_GUS, temp_GUS);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_GUS, machine_has_bus(temp_machine, MACHINE_BUS_ISA16) && temp_GUS);
|
||||
settings_enable_window(hdlg, IDC_CHECK_SSI, machine_has_bus(temp_machine, MACHINE_BUS_ISA));
|
||||
settings_set_check(hdlg, IDC_CHECK_SSI, temp_SSI2001);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SSI, machine_has_bus(temp_machine, MACHINE_BUS_ISA) && temp_SSI2001);
|
||||
settings_set_check(hdlg, IDC_CHECK_FLOAT, temp_float);
|
||||
|
||||
if (temp_fm_driver == FM_DRV_YMFM)
|
||||
@@ -1513,17 +1617,56 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam)) {
|
||||
case IDC_COMBO_SOUND:
|
||||
temp_sound_card = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND)];
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND, sound_card_has_config(temp_sound_card));
|
||||
case IDC_COMBO_SOUND1:
|
||||
temp_sound_card[0] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND1)];
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND1, sound_card_has_config(temp_sound_card[0]));
|
||||
settings_set_check(hdlg, IDC_CHECK_MPU401, temp_mpu401);
|
||||
settings_enable_window(hdlg, IDC_CHECK_MPU401, mpu401_standalone_allow());
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_MPU401, mpu401_standalone_allow() && temp_mpu401);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_SND:
|
||||
temp_sound_card = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND)];
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) sound_card_getdevice(temp_sound_card));
|
||||
case IDC_CONFIGURE_SND1:
|
||||
temp_sound_card[0] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND1)];
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) sound_card_getdevice(temp_sound_card[0]));
|
||||
break;
|
||||
|
||||
case IDC_COMBO_SOUND2:
|
||||
temp_sound_card[1] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND2)];
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND2, sound_card_has_config(temp_sound_card[1]));
|
||||
settings_set_check(hdlg, IDC_CHECK_MPU401, temp_mpu401);
|
||||
settings_enable_window(hdlg, IDC_CHECK_MPU401, mpu401_standalone_allow());
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_MPU401, mpu401_standalone_allow() && temp_mpu401);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_SND2:
|
||||
temp_sound_card[1] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND2)];
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) sound_card_getdevice(temp_sound_card[1]));
|
||||
break;
|
||||
|
||||
case IDC_COMBO_SOUND3:
|
||||
temp_sound_card[2] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND3)];
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND3, sound_card_has_config(temp_sound_card[2]));
|
||||
settings_set_check(hdlg, IDC_CHECK_MPU401, temp_mpu401);
|
||||
settings_enable_window(hdlg, IDC_CHECK_MPU401, mpu401_standalone_allow());
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_MPU401, mpu401_standalone_allow() && temp_mpu401);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_SND3:
|
||||
temp_sound_card[2] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND3)];
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) sound_card_getdevice(temp_sound_card[2]));
|
||||
break;
|
||||
|
||||
case IDC_COMBO_SOUND4:
|
||||
temp_sound_card[3] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND4)];
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SND4, sound_card_has_config(temp_sound_card[3]));
|
||||
settings_set_check(hdlg, IDC_CHECK_MPU401, temp_mpu401);
|
||||
settings_enable_window(hdlg, IDC_CHECK_MPU401, mpu401_standalone_allow());
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_MPU401, mpu401_standalone_allow() && temp_mpu401);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_SND4:
|
||||
temp_sound_card[3] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND4)];
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) sound_card_getdevice(temp_sound_card[3]));
|
||||
break;
|
||||
|
||||
case IDC_COMBO_MIDI_OUT:
|
||||
@@ -1561,46 +1704,17 @@ win_settings_sound_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
case IDC_CONFIGURE_MPU401:
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, machine_has_bus(temp_machine, MACHINE_BUS_MCA) ? (void *) &mpu401_mca_device : (void *) &mpu401_device);
|
||||
break;
|
||||
|
||||
case IDC_CHECK_CMS:
|
||||
temp_GAMEBLASTER = settings_get_check(hdlg, IDC_CHECK_CMS);
|
||||
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_CMS, temp_GAMEBLASTER);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_CMS:
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, &cms_device);
|
||||
break;
|
||||
|
||||
case IDC_CHECK_GUS:
|
||||
temp_GUS = settings_get_check(hdlg, IDC_CHECK_GUS);
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_GUS, temp_GUS);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_GUS:
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) &gus_device);
|
||||
break;
|
||||
|
||||
case IDC_CHECK_SSI:
|
||||
temp_SSI2001 = settings_get_check(hdlg, IDC_CHECK_SSI);
|
||||
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_SSI, temp_SSI2001);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_SSI:
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, &ssi2001_device);
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
case WM_SAVESETTINGS:
|
||||
temp_sound_card = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND)];
|
||||
temp_sound_card[0] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND1)];
|
||||
temp_sound_card[1] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND2)];
|
||||
temp_sound_card[2] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND3)];
|
||||
temp_sound_card[3] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_SOUND4)];
|
||||
temp_midi_output_device = settings_list_to_midi[settings_get_cur_sel(hdlg, IDC_COMBO_MIDI_OUT)];
|
||||
temp_midi_input_device = settings_list_to_midi_in[settings_get_cur_sel(hdlg, IDC_COMBO_MIDI_IN)];
|
||||
temp_mpu401 = settings_get_check(hdlg, IDC_CHECK_MPU401);
|
||||
temp_GAMEBLASTER = settings_get_check(hdlg, IDC_CHECK_CMS);
|
||||
temp_GUS = settings_get_check(hdlg, IDC_CHECK_GUS);
|
||||
temp_SSI2001 = settings_get_check(hdlg, IDC_CHECK_SSI);
|
||||
temp_float = settings_get_check(hdlg, IDC_CHECK_FLOAT);
|
||||
if (settings_get_check(hdlg, IDC_RADIO_FM_DRV_NUKED))
|
||||
temp_fm_driver = FM_DRV_NUKED;
|
||||
@@ -1896,10 +2010,16 @@ network_recalc_combos(HWND hdlg)
|
||||
{
|
||||
ignore_change = 1;
|
||||
|
||||
settings_enable_window(hdlg, IDC_COMBO_PCAP, temp_net_type == NET_TYPE_PCAP);
|
||||
settings_enable_window(hdlg, IDC_COMBO_NET,
|
||||
(temp_net_type == NET_TYPE_SLIRP) || ((temp_net_type == NET_TYPE_PCAP) && (network_dev_to_id(temp_pcap_dev) > 0)));
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_NET, network_card_has_config(temp_net_card) && ((temp_net_type == NET_TYPE_SLIRP) || ((temp_net_type == NET_TYPE_PCAP) && (network_dev_to_id(temp_pcap_dev) > 0))));
|
||||
#if 0
|
||||
for (uint8_t i = 0; i < NET_CARD_MAX; i++) {
|
||||
#endif
|
||||
settings_enable_window(hdlg, IDC_COMBO_PCAP1, temp_net_type[0] == NET_TYPE_PCAP);
|
||||
settings_enable_window(hdlg, IDC_COMBO_NET1,
|
||||
(temp_net_type[0] == NET_TYPE_SLIRP) || ((temp_net_type[0] == NET_TYPE_PCAP) && (network_dev_to_id(temp_pcap_dev[0]) > 0)));
|
||||
settings_enable_window(hdlg, IDC_CONFIGURE_NET1, network_card_has_config(temp_net_card[0]) && ((temp_net_type[0] == NET_TYPE_SLIRP) || ((temp_net_type[0] == NET_TYPE_PCAP) && (network_dev_to_id(temp_pcap_dev[0]) > 0))));
|
||||
#if 0
|
||||
}
|
||||
#endif
|
||||
|
||||
ignore_change = 0;
|
||||
}
|
||||
@@ -1918,90 +2038,120 @@ win_settings_network_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
case WM_INITDIALOG:
|
||||
lptsTemp = (LPTSTR) malloc(512 * sizeof(WCHAR));
|
||||
|
||||
settings_add_string(hdlg, IDC_COMBO_NET_TYPE, (LPARAM) L"None");
|
||||
settings_add_string(hdlg, IDC_COMBO_NET_TYPE, (LPARAM) L"SLiRP");
|
||||
settings_add_string(hdlg, IDC_COMBO_NET_TYPE, (LPARAM) L"PCap");
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_NET_TYPE, temp_net_type);
|
||||
settings_enable_window(hdlg, IDC_COMBO_PCAP, temp_net_type == NET_TYPE_PCAP);
|
||||
#if 0
|
||||
for (uint8_t i = 0; i < NET_CARD_MAX; i++) {
|
||||
#endif
|
||||
settings_add_string(hdlg, IDC_COMBO_NET1_TYPE, (LPARAM) L"None");
|
||||
settings_add_string(hdlg, IDC_COMBO_NET1_TYPE, (LPARAM) L"SLiRP");
|
||||
settings_add_string(hdlg, IDC_COMBO_NET1_TYPE, (LPARAM) L"PCap");
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_NET1_TYPE, temp_net_type[0]);
|
||||
settings_enable_window(hdlg, IDC_COMBO_PCAP1, temp_net_type[0] == NET_TYPE_PCAP);
|
||||
|
||||
for (c = 0; c < network_ndev; c++) {
|
||||
mbstowcs(lptsTemp, network_devs[c].description, strlen(network_devs[c].description) + 1);
|
||||
settings_add_string(hdlg, IDC_COMBO_PCAP, (LPARAM) lptsTemp);
|
||||
}
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_PCAP, network_dev_to_id(temp_pcap_dev));
|
||||
for (c = 0; c < network_ndev; c++) {
|
||||
mbstowcs(lptsTemp, network_devs[c].description, strlen(network_devs[c].description) + 1);
|
||||
settings_add_string(hdlg, IDC_COMBO_PCAP1, (LPARAM) lptsTemp);
|
||||
}
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_PCAP1, network_dev_to_id(temp_pcap_dev[0]));
|
||||
|
||||
/* NIC config */
|
||||
c = d = 0;
|
||||
settings_reset_content(hdlg, IDC_COMBO_NET);
|
||||
while (1) {
|
||||
generate_device_name(network_card_getdevice(c), network_card_get_internal_name(c), 1);
|
||||
/* NIC config */
|
||||
c = d = 0;
|
||||
settings_reset_content(hdlg, IDC_COMBO_NET1);
|
||||
while (1) {
|
||||
generate_device_name(network_card_getdevice(c), network_card_get_internal_name(c), 1);
|
||||
|
||||
if (device_name[0] == L'\0')
|
||||
break;
|
||||
if (device_name[0] == L'\0')
|
||||
break;
|
||||
|
||||
if (network_card_available(c) && device_is_valid(network_card_getdevice(c), temp_machine)) {
|
||||
if (c == 0)
|
||||
settings_add_string(hdlg, IDC_COMBO_NET, win_get_string(IDS_2104));
|
||||
else
|
||||
settings_add_string(hdlg, IDC_COMBO_NET, (LPARAM) device_name);
|
||||
settings_list_to_device[0][d] = c;
|
||||
if ((c == 0) || (c == temp_net_card))
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_NET, d);
|
||||
d++;
|
||||
if (network_card_available(c) && device_is_valid(network_card_getdevice(c), temp_machine)) {
|
||||
if (c == 0)
|
||||
settings_add_string(hdlg, IDC_COMBO_NET1, win_get_string(IDS_2104));
|
||||
else
|
||||
settings_add_string(hdlg, IDC_COMBO_NET1, (LPARAM) device_name);
|
||||
settings_list_to_device[0][d] = c;
|
||||
if ((c == 0) || (c == temp_net_card[0]))
|
||||
settings_set_cur_sel(hdlg, IDC_COMBO_NET1, d);
|
||||
d++;
|
||||
}
|
||||
|
||||
c++;
|
||||
}
|
||||
|
||||
c++;
|
||||
settings_enable_window(hdlg, IDC_COMBO_NET1, d);
|
||||
network_recalc_combos(hdlg);
|
||||
free(lptsTemp);
|
||||
#if 0
|
||||
}
|
||||
|
||||
settings_enable_window(hdlg, IDC_COMBO_NET, d);
|
||||
network_recalc_combos(hdlg);
|
||||
free(lptsTemp);
|
||||
|
||||
#endif
|
||||
return TRUE;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam)) {
|
||||
case IDC_COMBO_NET_TYPE:
|
||||
case IDC_COMBO_NET1_TYPE:
|
||||
#if 0
|
||||
case IDC_COMBO_NET2_TYPE:
|
||||
case IDC_COMBO_NET3_TYPE:
|
||||
case IDC_COMBO_NET4_TYPE:
|
||||
#endif
|
||||
if (ignore_change)
|
||||
return FALSE;
|
||||
|
||||
temp_net_type = settings_get_cur_sel(hdlg, IDC_COMBO_NET_TYPE);
|
||||
temp_net_type[0] = settings_get_cur_sel(hdlg, IDC_COMBO_NET1_TYPE);
|
||||
network_recalc_combos(hdlg);
|
||||
break;
|
||||
|
||||
case IDC_COMBO_PCAP:
|
||||
case IDC_COMBO_PCAP1:
|
||||
#if 0
|
||||
case IDC_COMBO_PCAP2:
|
||||
case IDC_COMBO_PCAP3:
|
||||
case IDC_COMBO_PCAP4:
|
||||
#endif
|
||||
if (ignore_change)
|
||||
return FALSE;
|
||||
|
||||
memset(temp_pcap_dev, '\0', sizeof(temp_pcap_dev));
|
||||
strcpy(temp_pcap_dev, network_devs[settings_get_cur_sel(hdlg, IDC_COMBO_PCAP)].device);
|
||||
memset(temp_pcap_dev[0], '\0', sizeof(temp_pcap_dev[0]));
|
||||
strcpy(temp_pcap_dev[0], network_devs[settings_get_cur_sel(hdlg, IDC_COMBO_PCAP1)].device);
|
||||
network_recalc_combos(hdlg);
|
||||
break;
|
||||
|
||||
case IDC_COMBO_NET:
|
||||
case IDC_COMBO_NET1:
|
||||
#if 0
|
||||
case IDC_COMBO_NET2:
|
||||
case IDC_COMBO_NET3:
|
||||
case IDC_COMBO_NET4:
|
||||
#endif
|
||||
if (ignore_change)
|
||||
return FALSE;
|
||||
|
||||
temp_net_card = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_NET)];
|
||||
temp_net_card[0] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_NET1)];
|
||||
network_recalc_combos(hdlg);
|
||||
break;
|
||||
|
||||
case IDC_CONFIGURE_NET:
|
||||
case IDC_CONFIGURE_NET1:
|
||||
#if 0
|
||||
case IDC_CONFIGURE_NET2:
|
||||
case IDC_CONFIGURE_NET3:
|
||||
case IDC_CONFIGURE_NET4:
|
||||
#endif
|
||||
if (ignore_change)
|
||||
return FALSE;
|
||||
|
||||
temp_net_card = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_NET)];
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) network_card_getdevice(temp_net_card));
|
||||
temp_net_card[0] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_NET1)];
|
||||
temp_deviceconfig |= deviceconfig_open(hdlg, (void *) network_card_getdevice(temp_net_card[0]));
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
case WM_SAVESETTINGS:
|
||||
temp_net_type = settings_get_cur_sel(hdlg, IDC_COMBO_NET_TYPE);
|
||||
memset(temp_pcap_dev, '\0', sizeof(temp_pcap_dev));
|
||||
strcpy(temp_pcap_dev, network_devs[settings_get_cur_sel(hdlg, IDC_COMBO_PCAP)].device);
|
||||
temp_net_card = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_NET)];
|
||||
|
||||
#if 0
|
||||
for (uint8_t i = 0; i < NET_CARD_MAX; i++) {
|
||||
#endif
|
||||
temp_net_type[0] = settings_get_cur_sel(hdlg, IDC_COMBO_NET1_TYPE);
|
||||
memset(temp_pcap_dev[0], '\0', sizeof(temp_pcap_dev[0]));
|
||||
strcpy(temp_pcap_dev[0], network_devs[settings_get_cur_sel(hdlg, IDC_COMBO_PCAP1)].device);
|
||||
temp_net_card[0] = settings_list_to_device[0][settings_get_cur_sel(hdlg, IDC_COMBO_NET1)];
|
||||
#if 0
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -44,7 +44,9 @@
|
||||
#include <86box/ui.h>
|
||||
#include <86box/win.h>
|
||||
#include <86box/version.h>
|
||||
#include <86box/discord.h>
|
||||
#ifdef DISCORD
|
||||
# include <86box/discord.h>
|
||||
#endif
|
||||
|
||||
#ifdef MTR_ENABLED
|
||||
# include <minitrace/minitrace.h>
|
||||
@@ -316,10 +318,13 @@ ResetAllMenus(void)
|
||||
|
||||
video_set_filter_menu(menuMain);
|
||||
|
||||
#ifdef DISCORD
|
||||
if (discord_loaded)
|
||||
CheckMenuItem(menuMain, IDM_DISCORD, enable_discord ? MF_CHECKED : MF_UNCHECKED);
|
||||
else
|
||||
EnableMenuItem(menuMain, IDM_DISCORD, MF_DISABLED);
|
||||
#endif
|
||||
|
||||
#ifdef MTR_ENABLED
|
||||
EnableMenuItem(menuMain, IDM_ACTION_END_TRACE, MF_DISABLED);
|
||||
#endif
|
||||
@@ -820,6 +825,7 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
config_save();
|
||||
break;
|
||||
|
||||
#ifdef DISCORD
|
||||
case IDM_DISCORD:
|
||||
if (!discord_loaded)
|
||||
break;
|
||||
@@ -831,6 +837,7 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
} else
|
||||
discord_close();
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
media_menu_proc(hwnd, message, wParam, lParam);
|
||||
@@ -1212,6 +1219,7 @@ ui_init(int nCmdShow)
|
||||
return (0);
|
||||
}
|
||||
|
||||
#ifdef DISCORD
|
||||
if (!discord_load()) {
|
||||
enable_discord = 0;
|
||||
} else if (enable_discord) {
|
||||
@@ -1221,6 +1229,7 @@ ui_init(int nCmdShow)
|
||||
/* Update Discord status */
|
||||
discord_update_activity(dopause);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Create our main window's class and register it. */
|
||||
wincl.hInstance = hinstance;
|
||||
@@ -1451,9 +1460,11 @@ ui_init(int nCmdShow)
|
||||
plat_setfullscreen(0);
|
||||
}
|
||||
|
||||
#ifdef DISCORD
|
||||
/* Run Discord API callbacks */
|
||||
if (enable_discord)
|
||||
discord_run_callbacks();
|
||||
#endif
|
||||
}
|
||||
|
||||
timeEndPeriod(1);
|
||||
@@ -1471,8 +1482,10 @@ ui_init(int nCmdShow)
|
||||
|
||||
win_mouse_close();
|
||||
|
||||
#ifdef DISCORD
|
||||
/* Shut down the Discord integration */
|
||||
discord_close();
|
||||
#endif
|
||||
|
||||
if (user32_handle != NULL)
|
||||
dynld_close(user32_handle);
|
||||
@@ -1521,9 +1534,11 @@ plat_pause(int p)
|
||||
CheckMenuItem(menuMain, IDM_ACTION_PAUSE,
|
||||
(dopause) ? MF_CHECKED : MF_UNCHECKED);
|
||||
|
||||
#ifdef DISCORD
|
||||
/* Update Discord status */
|
||||
if (enable_discord)
|
||||
discord_update_activity(dopause);
|
||||
#endif
|
||||
|
||||
/* Update the toolbar */
|
||||
ToolBarUpdatePause(p);
|
||||
|
||||
Reference in New Issue
Block a user