diff --git a/.ci/AppImageBuilder.yml b/.ci/AppImageBuilder.yml
index 3d83e2851..39997a7a8 100644
--- a/.ci/AppImageBuilder.yml
+++ b/.ci/AppImageBuilder.yml
@@ -67,6 +67,8 @@ AppDir:
- libxcb-shape0 # if QT:BOOL=ON
- libxcb-shm0 # if QT:BOOL=ON
- libxcb-xfixes0 # if QT:BOOL=ON
+ - libxkbcommon-x11-0 # if QT:BOOL=ON
+ - qtwayland5 # if QT:BOOL=ON
- zlib1g
files:
exclude:
diff --git a/.ci/Jenkinsfile b/.ci/Jenkinsfile
index 6ab63ea30..a57d3c715 100644
--- a/.ci/Jenkinsfile
+++ b/.ci/Jenkinsfile
@@ -78,8 +78,7 @@ def dynarecSlugs = [
]
def presets = [
- 'Regular',
- 'Debug'
+ 'Regular'
]
def presetSlugs = [
@@ -284,13 +283,19 @@ pipeline {
def archName = archNames[archSlug]
if (os == 'macOS')
archName = archNamesMac[archSlug]
- dir("${dynarecNames[dynarec]}/$os - $archName") {
- ret = runBuild("-b \"$packageName\" \"$arch\" ${presetFlags[preset]} ${dynarecFlags[dynarec]} ${osFlags[os]} $buildFlags")
+ dir(dynarecNames[dynarec]) {
+ dir("$os - $archName") {
+ ret = runBuild("-b \"$packageName\" \"$arch\" ${presetFlags[preset]} ${dynarecFlags[dynarec]} ${osFlags[os]} $buildFlags")
+ if (presets.size() == 1)
+ writeFile file: '.forcedir', text: ''
+ }
+ if ((osArchs.size() == 1) && (thisOsArchs.size() == 1))
+ writeFile file: '.forcedir', text: ''
}
if (ret == 0) {
/* Archive resulting artifacts. */
- archiveArtifacts artifacts: "**/**/$packageName*"
+ archiveArtifacts artifacts: "**/$packageName*, **/.forcedir", defaultExcludes: false
} else {
/* Fail this stage. */
failStage()
diff --git a/.ci/build.sh b/.ci/build.sh
old mode 100644
new mode 100755
index 56199d3e6..fc7290f4a
--- a/.ci/build.sh
+++ b/.ci/build.sh
@@ -316,6 +316,9 @@ then
pacman -S --needed --noconfirm "$pkg"
done
fi
+
+ # Clean pacman cache when running under Jenkins to save disk space.
+ [ "$CI" = "true" ] && rm -rf /var/cache/pacman/pkg
# Generate a new freetype DLL for this architecture.
rm -f "$freetype_dll"
@@ -584,7 +587,7 @@ else
# ...and the ones we do want listed. Non-dev packages fill missing spots on the list.
libpkgs=""
longest_libpkg=0
- for pkg in libc6-dev libstdc++6 libopenal-dev libfreetype6-dev libx11-dev libsdl2-dev libpng-dev librtmidi-dev qtdeclarative5-dev libwayland-dev libevdev-dev libglib2.0-dev libslirp-dev libfaudio-dev libaudio-dev libjack-jackd2-dev libpipewire-0.3-dev libsamplerate0-dev libsndio-dev
+ for pkg in libc6-dev libstdc++6 libopenal-dev libfreetype6-dev libx11-dev libsdl2-dev libpng-dev librtmidi-dev qtdeclarative5-dev libwayland-dev libevdev-dev libxkbcommon-x11-dev libglib2.0-dev libslirp-dev libfaudio-dev libaudio-dev libjack-jackd2-dev libpipewire-0.3-dev libsamplerate0-dev libsndio-dev
do
libpkgs="$libpkgs $pkg:$arch_deb"
length=$(echo -n $pkg | sed 's/-dev$//' | sed "s/qtdeclarative/qt/" | wc -c)
@@ -629,7 +632,7 @@ set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(ENV{PKG_CONFIG_PATH} "")
-set(ENV{PKG_CONFIG_LIBDIR} "/usr/lib/$libdir/pkgconfig:/usr/share/$libdir/pkgconfig")
+set(ENV{PKG_CONFIG_LIBDIR} "/usr/lib/$libdir/pkgconfig:/usr/share/$libdir/pkgconfig:/usr/share/pkgconfig")
include("$(realpath "$toolchain_file")")
EOF
@@ -948,7 +951,6 @@ else
-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
# Build SDL2 for joystick and FAudio support, with most components
# disabled to remove the dependencies on PulseAudio and libdrm.
@@ -1014,7 +1016,7 @@ else
mkdir -p "$icon_dir"
cp -rp "$icon_size" "$icon_dir/apps"
done
- project_icon=$(ls "$icon_base/"[0-9]*x[0-9]*/* | head -1 | grep -oP '/\K([^/]+)(?=\.[^\.]+$)')
+ project_icon=$(find "$icon_base/"[0-9]*x[0-9]*/* -type f -name '*.png' -o -name '*.svg' | head -1 | grep -oP '/\K([^/]+)(?=\.[^\.]+$)')
# Archive executable, while also stripping it if requested.
mkdir -p archive_tmp/usr/local/bin
@@ -1139,6 +1141,7 @@ EOF
--recipe AppImageBuilder-generated.yml --appdir "$(grep -oP '^\s+path: \K(.+)' AppImageBuilder-generated.yml)"
status=$?
[ $status -eq 0 ] && break
+ [ $status -eq 127 ] && rm -rf /tmp/appimage_extracted_*
done
# Remove appimage-builder binary on failure, just in case it's corrupted.
diff --git a/.ci/dependencies_macports.txt b/.ci/dependencies_macports.txt
index b78331f9e..d73ce7e17 100644
--- a/.ci/dependencies_macports.txt
+++ b/.ci/dependencies_macports.txt
@@ -11,3 +11,5 @@ vulkan-headers
MoltenVK
qt5
wget
+fluidsynth
+ghostscript
diff --git a/.ci/static2dll.sh b/.ci/static2dll.sh
old mode 100644
new mode 100755
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml
index be42cbae6..27c7ea204 100644
--- a/.github/workflows/cmake.yml
+++ b/.github/workflows/cmake.yml
@@ -252,7 +252,10 @@ jobs:
slug: -Qt
packages: >-
qtbase5-dev
+ qtbase5-private-dev
qttools5-dev
+ libevdev-dev
+ libxkbcommon-x11-dev
steps:
- name: Install dependencies
diff --git a/.gitignore b/.gitignore
index 0a21bf105..acb28baf7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,8 @@ Makefile
*.tar.*
*.AppImage
/appimage-builder-cache
+/appimage-build
+/AppImageBuilder-generated.yml
# Visual Studio Code
/.vs
diff --git a/bumpversion.sh b/bumpversion.sh
index 87728603c..4681e72be 100644
--- a/bumpversion.sh
+++ b/bumpversion.sh
@@ -36,7 +36,7 @@ if [ -z "${romversion}" ]; then
# Get the latest ROM release from the GitHub API.
romversion=$(curl --silent "https://api.github.com/repos/86Box/roms/releases/latest" |
grep '"tag_name":' |
- sed -E 's/.*"([^"]+)".*/\1/')
+ sed -E 's/.*"v([^"]+)".*/\1/')
fi
# Switch to the repository root directory.
diff --git a/src/86box.c b/src/86box.c
index 344d3c63d..3c96d88a4 100644
--- a/src/86box.c
+++ b/src/86box.c
@@ -8,8 +8,6 @@
*
* Main emulator module where most things are controlled.
*
- *
- *
* Authors: Sarah Walker,
* Miran Grca,
* Fred N. van Kempen,
@@ -150,47 +148,47 @@ uint64_t instru_run_ms = 0;
/* Configuration values. */
int window_remember;
-int vid_resize; /* (C) allow resizing */
-int invert_display = 0; /* (C) invert the display */
-int suppress_overscan = 0; /* (C) suppress overscans */
-int scale = 0; /* (C) screen scale factor */
-int dpi_scale = 0; /* (C) DPI scaling of the emulated screen */
-int vid_api = 0; /* (C) video renderer */
-int vid_cga_contrast = 0; /* (C) video */
-int video_fullscreen = 0; /* (C) video */
-int video_fullscreen_scale = 0; /* (C) video */
-int video_fullscreen_first = 0; /* (C) video */
-int enable_overscan = 0; /* (C) video */
-int force_43 = 0; /* (C) video */
-int video_filter_method = 1; /* (C) video */
-int video_vsync = 0; /* (C) video */
-int video_framerate = -1; /* (C) video */
-char video_shader[512] = { '\0' }; /* (C) video */
+int vid_resize; /* (C) allow resizing */
+int invert_display = 0; /* (C) invert the display */
+int suppress_overscan = 0; /* (C) suppress overscans */
+int scale = 0; /* (C) screen scale factor */
+int dpi_scale = 0; /* (C) DPI scaling of the emulated screen */
+int vid_api = 0; /* (C) video renderer */
+int vid_cga_contrast = 0; /* (C) video */
+int video_fullscreen = 0; /* (C) video */
+int video_fullscreen_scale = 0; /* (C) video */
+int video_fullscreen_first = 0; /* (C) video */
+int enable_overscan = 0; /* (C) video */
+int force_43 = 0; /* (C) video */
+int video_filter_method = 1; /* (C) video */
+int video_vsync = 0; /* (C) video */
+int video_framerate = -1; /* (C) video */
+char video_shader[512] = { '\0' }; /* (C) video */
bool serial_passthrough_enabled[SERIAL_MAX] = { 0, 0, 0, 0 }; /* (C) activation and kind of pass-through for serial ports */
-int bugger_enabled = 0; /* (C) enable ISAbugger */
-int postcard_enabled = 0; /* (C) enable POST card */
-int isamem_type[ISAMEM_MAX] = { 0, 0, 0, 0 }; /* (C) enable ISA mem cards */
-int isartc_type = 0; /* (C) enable ISA RTC card */
-int gfxcard[2] = { 0, 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 voodoo_enabled = 0; /* (C) video option */
-int ibm8514_enabled = 0; /* (C) video option */
-int xga_enabled = 0; /* (C) video option */
-uint32_t mem_size = 0; /* (C) memory size (Installed on system board)*/
-uint32_t isa_mem_size = 0; /* (C) memory size (ISA Memory Cards) */
-int cpu_use_dynarec = 0; /* (C) cpu uses/needs Dyna */
-int cpu = 0; /* (C) cpu type */
-int fpu_type = 0; /* (C) fpu type */
-int time_sync = 0; /* (C) enable time sync */
-int confirm_reset = 1; /* (C) enable reset confirmation */
-int confirm_exit = 1; /* (C) enable exit confirmation */
-int confirm_save = 1; /* (C) enable save confirmation */
-int enable_discord = 0; /* (C) enable Discord integration */
-int pit_mode = -1; /* (C) force setting PIT mode */
-int fm_driver = 0; /* (C) select FM sound driver */
-int open_dir_usr_path = 0; /* default file open dialog directory of usr_path */
-int video_fullscreen_scale_maximized = 0; /* (C) Whether fullscreen scaling settings also apply when maximized. */
+int bugger_enabled = 0; /* (C) enable ISAbugger */
+int postcard_enabled = 0; /* (C) enable POST card */
+int isamem_type[ISAMEM_MAX] = { 0, 0, 0, 0 }; /* (C) enable ISA mem cards */
+int isartc_type = 0; /* (C) enable ISA RTC card */
+int gfxcard[2] = { 0, 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 voodoo_enabled = 0; /* (C) video option */
+int ibm8514_enabled = 0; /* (C) video option */
+int xga_enabled = 0; /* (C) video option */
+uint32_t mem_size = 0; /* (C) memory size (Installed on system board)*/
+uint32_t isa_mem_size = 0; /* (C) memory size (ISA Memory Cards) */
+int cpu_use_dynarec = 0; /* (C) cpu uses/needs Dyna */
+int cpu = 0; /* (C) cpu type */
+int fpu_type = 0; /* (C) fpu type */
+int time_sync = 0; /* (C) enable time sync */
+int confirm_reset = 1; /* (C) enable reset confirmation */
+int confirm_exit = 1; /* (C) enable exit confirmation */
+int confirm_save = 1; /* (C) enable save confirmation */
+int enable_discord = 0; /* (C) enable Discord integration */
+int pit_mode = -1; /* (C) force setting PIT mode */
+int fm_driver = 0; /* (C) select FM sound driver */
+int open_dir_usr_path = 0; /* default file open dialog directory of usr_path */
+int video_fullscreen_scale_maximized = 0; /* (C) Whether fullscreen scaling settings also apply when maximized. */
/* Statistics. */
extern int mmuflush;
@@ -898,7 +896,7 @@ pc_init_modules(void)
if (!video_card_available(gfxcard[1])) {
char tempc[512] = { 0 };
device_get_name(video_card_getdevice(gfxcard[1]), 0, tempc);
- swprintf(temp, sizeof_w(temp), (wchar_t *) "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card.", tempc);
+ swprintf(temp, sizeof_w(temp), plat_get_string(IDS_2163), tempc);
ui_msgbox_header(MBX_INFO, (wchar_t *) IDS_2129, temp);
gfxcard[1] = 0;
}
@@ -1265,9 +1263,9 @@ pc_run(void)
startblit();
cpu_exec(cpu_s->rspeed / 100);
#ifdef USE_GDBSTUB /* avoid a KBC FIFO overflow when CPU emulation is stalled */
- if (gdbstub_step == GDBSTUB_EXEC)
+ // if (gdbstub_step == GDBSTUB_EXEC)
#endif
- mouse_process();
+ // mouse_process();
joystick_process();
endblit();
diff --git a/src/acpi.c b/src/acpi.c
index f5c98b6e9..cafa06229 100644
--- a/src/acpi.c
+++ b/src/acpi.c
@@ -40,9 +40,9 @@
#include <86box/i2c.h>
#include <86box/video.h>
-int acpi_rtc_status = 0;
+int acpi_rtc_status = 0;
atomic_int acpi_pwrbut_pressed = 0;
-int acpi_enabled = 0;
+int acpi_enabled = 0;
static double cpu_to_acpi;
@@ -1520,7 +1520,7 @@ acpi_ali_soft_smi_status_write(acpi_t *dev, uint8_t soft_smi)
}
void
-acpi_pwrbtn_timer(void* priv)
+acpi_pwrbtn_timer(void *priv)
{
acpi_t *dev = (acpi_t *) priv;
diff --git a/src/cdrom/cdrom_image_backend.c b/src/cdrom/cdrom_image_backend.c
index d3f48578d..47dabd37c 100644
--- a/src/cdrom/cdrom_image_backend.c
+++ b/src/cdrom/cdrom_image_backend.c
@@ -159,7 +159,15 @@ bin_init(const char *filename, int *error)
tf->get_length = bin_get_length;
tf->close = bin_close;
} else {
- free(tf);
+ /* From the check above, error may still be non-zero if opening a directory.
+ * The error is set for viso to try and open the directory following this function.
+ * However, we need to make sure the descriptor is closed. */
+ if ((tf->file != NULL) && ((stats.st_mode & S_IFMT) == S_IFDIR)) {
+ /* tf is freed by bin_close */
+ bin_close(tf);
+ } else {
+ free(tf);
+ }
tf = NULL;
}
diff --git a/src/cdrom/cdrom_image_viso.c b/src/cdrom/cdrom_image_viso.c
index d4fc2b2a9..d904b97a4 100644
--- a/src/cdrom/cdrom_image_viso.c
+++ b/src/cdrom/cdrom_image_viso.c
@@ -218,7 +218,7 @@ viso_convert_utf8(wchar_t *dest, const char *src, ssize_t buf_size)
return p - dest;
}
-#define VISO_WRITE_STR_FUNC(func, dst_type, src_type, converter) \
+#define VISO_WRITE_STR_FUNC(func, dst_type, src_type, converter, bounds_chk) \
static void \
func(dst_type *dest, const src_type *src, ssize_t buf_size, int charset) \
{ \
@@ -284,7 +284,7 @@ viso_convert_utf8(wchar_t *dest, const char *src, ssize_t buf_size)
\
default: \
/* Not valid for D or A, but valid for filenames. */ \
- if ((charset < VISO_CHARSET_FN) || (c > 0xffff)) \
+ if ((charset < VISO_CHARSET_FN) || (bounds_chk)) \
c = '_'; \
break; \
} \
@@ -293,8 +293,8 @@ viso_convert_utf8(wchar_t *dest, const char *src, ssize_t buf_size)
*dest++ = converter(c); \
} \
}
-VISO_WRITE_STR_FUNC(viso_write_string, uint8_t, char, )
-VISO_WRITE_STR_FUNC(viso_write_wstring, uint16_t, wchar_t, cpu_to_be16)
+VISO_WRITE_STR_FUNC(viso_write_string, uint8_t, char, , 0)
+VISO_WRITE_STR_FUNC(viso_write_wstring, uint16_t, wchar_t, cpu_to_be16, c > 0xffff)
static int
viso_fill_fn_short(char *data, const viso_entry_t *entry, viso_entry_t **entries)
diff --git a/src/chipset/ali1429.c b/src/chipset/ali1429.c
index 500b1c6a0..02034e481 100644
--- a/src/chipset/ali1429.c
+++ b/src/chipset/ali1429.c
@@ -1,21 +1,23 @@
/*
- * 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.
*
- * Implementation of the ALi M1429 chipset.
+ * Implementation of the ALi M1429 chipset.
*
- * Note: This chipset has no datasheet, everything were done via
- * reverse engineering the BIOS of various machines using it.
+ * Note: This chipset has no datasheet, everything were done via
+ * reverse engineering the BIOS of various machines using it.
*
- * Authors: Tiseno100,
- * Miran Grca,
*
- * Copyright 2020,2021 Tiseno100.
- * Copyright 2021,2021 Miran Grca.
+ *
+ * Authors: Tiseno100,
+ * Miran Grca,
+ *
+ * Copyright 2020-2021 Tiseno100.
+ * Copyright 2021 Miran Grca.
*/
/*
@@ -64,15 +66,14 @@
Register 20h:
Bits 2-1-0: Bus Clock Speed
0 0 0: 7.1519Mhz (ATCLK2)
- 0 0 1: CLK2IN/4
- 0 1 0: CLK2IN/5
- 0 1 1: CLK2IN/6
- 1 0 0: CLK2IN/8
- 1 0 1: CLK2IN/10
- 1 1 0: CLK2IN/12
+ 0 0 1: CLK2IN/4
+ 0 1 0: CLK2IN/5
+ 0 1 1: CLK2IN/6
+ 1 0 0: CLK2IN/8
+ 1 0 1: CLK2IN/10
+ 1 1 0: CLK2IN/12
*/
-
#include
#include
#include
@@ -94,13 +95,11 @@
#include <86box/smram.h>
#include <86box/chipset.h>
-#define GREEN dev->is_g /* Is G Variant */
-
+#define GREEN dev->is_g /* Is G Variant */
#ifdef ENABLE_ALI1429_LOG
int ali1429_do_log = ENABLE_ALI1429_LOG;
-
static void
ali1429_log(const char *fmt, ...)
{
@@ -113,27 +112,25 @@ ali1429_log(const char *fmt, ...)
}
}
#else
-#define ali1429_log(fmt, ...)
+# define ali1429_log(fmt, ...)
#endif
-
typedef struct
{
- uint8_t is_g, index, cfg_locked, reg_57h,
- regs[90];
+ uint8_t is_g, index, cfg_locked, reg_57h,
+ regs[90];
} ali1429_t;
-
static void
ali1429_shadow_recalc(ali1429_t *dev)
{
uint32_t base, i, can_write, can_read;
- shadowbios = (dev->regs[0x13] & 0x40) && (dev->regs[0x14] & 0x01);
+ shadowbios = (dev->regs[0x13] & 0x40) && (dev->regs[0x14] & 0x01);
shadowbios_write = (dev->regs[0x13] & 0x40) && (dev->regs[0x14] & 0x02);
can_write = (dev->regs[0x14] & 0x02) ? MEM_WRITE_INTERNAL : MEM_WRITE_EXTANY;
- can_read = (dev->regs[0x14] & 0x01) ? MEM_READ_INTERNAL : MEM_READ_EXTANY;
+ can_read = (dev->regs[0x14] & 0x01) ? MEM_READ_INTERNAL : MEM_READ_EXTANY;
for (i = 0; i < 8; i++) {
base = 0xc0000 + (i << 15);
@@ -147,149 +144,151 @@ ali1429_shadow_recalc(ali1429_t *dev)
flushmmucache_nopc();
}
-
static void
ali1429_write(uint16_t addr, uint8_t val, void *priv)
{
- ali1429_t *dev = (ali1429_t *)priv;
+ ali1429_t *dev = (ali1429_t *) priv;
switch (addr) {
- case 0x22:
- dev->index = val;
- break;
+ case 0x22:
+ dev->index = val;
+ break;
- case 0x23:
+ case 0x23:
#ifdef ENABLE_ALI1429_LOG
- if (dev->index != 0x03)
- ali1429_log("M1429: dev->regs[%02x] = %02x\n", dev->index, val);
+ if (dev->index != 0x03)
+ ali1429_log("M1429: dev->regs[%02x] = %02x\n", dev->index, val);
#endif
- if (dev->index == 0x03)
- dev->cfg_locked = (val != 0xc5);
+ if (dev->index == 0x03)
+ dev->cfg_locked = (val != 0xc5);
- if (!dev->cfg_locked) {
- pclog("M1429: dev->regs[%02x] = %02x\n", dev->index, val);
+ if (!dev->cfg_locked) {
+ pclog("M1429: dev->regs[%02x] = %02x\n", dev->index, val);
- /* Common M1429 Registers */
- switch (dev->index) {
- case 0x10: case 0x11:
- dev->regs[dev->index] = val;
- break;
+ /* Common M1429 Registers */
+ switch (dev->index) {
+ case 0x10:
+ case 0x11:
+ dev->regs[dev->index] = val;
+ break;
- case 0x12:
- dev->regs[dev->index] = val;
- if(val & 4)
- mem_remap_top(128);
- else
- mem_remap_top(0);
- break;
+ case 0x12:
+ dev->regs[dev->index] = val;
+ if (val & 4)
+ mem_remap_top(128);
+ else
+ mem_remap_top(0);
+ break;
- case 0x13: case 0x14:
- dev->regs[dev->index] = val;
- ali1429_shadow_recalc(dev);
- break;
+ case 0x13:
+ case 0x14:
+ dev->regs[dev->index] = val;
+ ali1429_shadow_recalc(dev);
+ break;
- case 0x15: case 0x16:
- case 0x17:
- dev->regs[dev->index] = val;
- break;
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ dev->regs[dev->index] = val;
+ break;
- case 0x18:
- dev->regs[dev->index] = (val & 0x8f) | 0x20;
- cpu_cache_ext_enabled = !!(val & 2);
- cpu_update_waitstates();
- break;
+ case 0x18:
+ dev->regs[dev->index] = (val & 0x8f) | 0x20;
+ cpu_cache_ext_enabled = !!(val & 2);
+ cpu_update_waitstates();
+ break;
- case 0x19: case 0x1a:
- case 0x1e:
- dev->regs[dev->index] = val;
- break;
+ case 0x19:
+ case 0x1a:
+ case 0x1e:
+ dev->regs[dev->index] = val;
+ break;
- case 0x20:
- dev->regs[dev->index] = val;
+ case 0x20:
+ dev->regs[dev->index] = val;
- switch(val & 7) {
- case 0: case 7: /* Illegal */
- cpu_set_isa_speed(7159091);
- break;
+ switch (val & 7) {
+ case 0:
+ case 7: /* Illegal */
+ cpu_set_isa_speed(7159091);
+ break;
- case 1:
- cpu_set_isa_speed(cpu_busspeed / 4);
- break;
+ case 1:
+ cpu_set_isa_speed(cpu_busspeed / 4);
+ break;
- case 2:
- cpu_set_isa_speed(cpu_busspeed / 5);
- break;
+ case 2:
+ cpu_set_isa_speed(cpu_busspeed / 5);
+ break;
- case 3:
- cpu_set_isa_speed(cpu_busspeed / 6);
- break;
+ case 3:
+ cpu_set_isa_speed(cpu_busspeed / 6);
+ break;
- case 4:
- cpu_set_isa_speed(cpu_busspeed / 8);
- break;
+ case 4:
+ cpu_set_isa_speed(cpu_busspeed / 8);
+ break;
- case 5:
- cpu_set_isa_speed(cpu_busspeed / 10);
- break;
+ case 5:
+ cpu_set_isa_speed(cpu_busspeed / 10);
+ break;
- case 6:
- cpu_set_isa_speed(cpu_busspeed / 12);
- break;
- }
- break;
+ case 6:
+ cpu_set_isa_speed(cpu_busspeed / 12);
+ break;
+ }
+ break;
- case 0x21 ... 0x27:
- dev->regs[dev->index] = val;
- break;
- }
+ case 0x21 ... 0x27:
+ dev->regs[dev->index] = val;
+ break;
+ }
- /* M1429G Only Registers */
- if (GREEN) {
- switch (dev->index) {
- case 0x30 ... 0x41:
- case 0x43: case 0x45:
- case 0x4a:
- dev->regs[dev->index] = val;
- break;
+ /* M1429G Only Registers */
+ if (GREEN) {
+ switch (dev->index) {
+ case 0x30 ... 0x41:
+ case 0x43:
+ case 0x45:
+ case 0x4a:
+ dev->regs[dev->index] = val;
+ break;
- case 0x57:
- dev->reg_57h = val;
- break;
- }
- }
- }
- break;
+ case 0x57:
+ dev->reg_57h = val;
+ break;
+ }
+ }
+ }
+ break;
}
}
-
static uint8_t
ali1429_read(uint16_t addr, void *priv)
{
- ali1429_t *dev = (ali1429_t *)priv;
- uint8_t ret = 0xff;
+ ali1429_t *dev = (ali1429_t *) priv;
+ uint8_t ret = 0xff;
if ((addr == 0x23) && (dev->index >= 0x10) && (dev->index <= 0x4a))
- ret = dev->regs[dev->index];
+ ret = dev->regs[dev->index];
else if ((addr == 0x23) && (dev->index == 0x57))
- ret = dev->reg_57h;
+ ret = dev->reg_57h;
else if (addr == 0x22)
- ret = dev->index;
+ ret = dev->index;
return ret;
}
-
static void
ali1429_close(void *priv)
{
- ali1429_t *dev = (ali1429_t *)priv;
+ ali1429_t *dev = (ali1429_t *) priv;
free(dev);
}
-
static void
ali1429_defaults(ali1429_t *dev)
{
@@ -308,28 +307,27 @@ ali1429_defaults(ali1429_t *dev)
/* M1429G Default Registers */
if (GREEN) {
- dev->regs[0x31] = 0x88;
- dev->regs[0x32] = 0xc0;
- dev->regs[0x38] = 0xe5;
- dev->regs[0x40] = 0xe3;
- dev->regs[0x41] = 2;
- dev->regs[0x45] = 0x80;
+ dev->regs[0x31] = 0x88;
+ dev->regs[0x32] = 0xc0;
+ dev->regs[0x38] = 0xe5;
+ dev->regs[0x40] = 0xe3;
+ dev->regs[0x41] = 2;
+ dev->regs[0x45] = 0x80;
}
}
-
static void *
ali1429_init(const device_t *info)
{
- ali1429_t *dev = (ali1429_t *)malloc(sizeof(ali1429_t));
+ ali1429_t *dev = (ali1429_t *) malloc(sizeof(ali1429_t));
memset(dev, 0, sizeof(ali1429_t));
dev->cfg_locked = 1;
- GREEN = info->local;
+ GREEN = info->local;
/* M1429 Ports:
- 22h Index Port
- 23h Data Port
+ 22h Index Port
+ 23h Data Port
*/
io_sethandler(0x0022, 0x0002, ali1429_read, NULL, NULL, ali1429_write, NULL, NULL, dev);
@@ -341,29 +339,29 @@ ali1429_init(const device_t *info)
}
const device_t ali1429_device = {
- .name = "ALi M1429",
+ .name = "ALi M1429",
.internal_name = "ali1429",
- .flags = 0,
- .local = 0,
- .init = ali1429_init,
- .close = ali1429_close,
- .reset = NULL,
+ .flags = 0,
+ .local = 0,
+ .init = ali1429_init,
+ .close = ali1429_close,
+ .reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
- .force_redraw = NULL,
- .config = NULL
+ .force_redraw = NULL,
+ .config = NULL
};
const device_t ali1429g_device = {
- .name = "ALi M1429G",
+ .name = "ALi M1429G",
.internal_name = "ali1429g",
- .flags = 0,
- .local = 1,
- .init = ali1429_init,
- .close = ali1429_close,
- .reset = NULL,
+ .flags = 0,
+ .local = 1,
+ .init = ali1429_init,
+ .close = ali1429_close,
+ .reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
- .force_redraw = NULL,
- .config = NULL
+ .force_redraw = NULL,
+ .config = NULL
};
diff --git a/src/chipset/ali1435.c b/src/chipset/ali1435.c
index 4497ad338..2909a48b9 100644
--- a/src/chipset/ali1435.c
+++ b/src/chipset/ali1435.c
@@ -38,138 +38,132 @@
#include <86box/chipset.h>
#include <86box/spd.h>
-
-#define MEM_STATE_SHADOW_R 0x01
-#define MEM_STATE_SHADOW_W 0x02
-#define MEM_STATE_SMRAM 0x04
-
+#define MEM_STATE_SHADOW_R 0x01
+#define MEM_STATE_SHADOW_W 0x02
+#define MEM_STATE_SMRAM 0x04
typedef struct
{
- uint8_t index, cfg_locked,
- regs[16], pci_regs[256];
+ uint8_t index, cfg_locked,
+ regs[16], pci_regs[256];
} ali1435_t;
-
#define ENABLE_ALI1435_LOG 1
#ifdef ENABLE_ALI1435_LOG
int ali1435_do_log = ENABLE_ALI1435_LOG;
-
static void
ali1435_log(const char *fmt, ...)
{
va_list ap;
if (ali1435_do_log) {
- va_start(ap, fmt);
- pclog_ex(fmt, ap);
- va_end(ap);
+ va_start(ap, fmt);
+ pclog_ex(fmt, ap);
+ va_end(ap);
}
}
#else
-#define ali1435_log(fmt, ...)
+# define ali1435_log(fmt, ...)
#endif
-
/* NOTE: We cheat here. The real ALi M1435 uses a level to edge triggered IRQ converter
- when the most siginificant bit is set. We work around that by manipulating the
- emulated PIC's ELCR register. */
+ when the most siginificant bit is set. We work around that by manipulating the
+ emulated PIC's ELCR register. */
static void
ali1435_update_irqs(ali1435_t *dev, int set)
{
uint8_t val;
- int i, reg;
- int shift, irq;
- int irq_map[8] = { -1, 5, 9, 10, 11, 12, 14, 15 };
- pic_t *temp_pic;
+ int i, reg;
+ int shift, irq;
+ int irq_map[8] = { -1, 5, 9, 10, 11, 12, 14, 15 };
+ pic_t *temp_pic;
for (i = 0; i < 4; i++) {
- reg = 0x80 + (i >> 1);
- shift = (i & 1) << 2;
- val = (dev->pci_regs[reg] >> shift) & 0x0f;
- irq = irq_map[val & 0x07];
- if (irq == -1)
- continue;
- temp_pic = (irq >= 8) ? &pic2 : &pic;
- irq &= 7;
- if (set && (val & 0x08))
- temp_pic->elcr |= (1 << irq);
- else
- temp_pic->elcr &= ~(1 << irq);
+ reg = 0x80 + (i >> 1);
+ shift = (i & 1) << 2;
+ val = (dev->pci_regs[reg] >> shift) & 0x0f;
+ irq = irq_map[val & 0x07];
+ if (irq == -1)
+ continue;
+ temp_pic = (irq >= 8) ? &pic2 : &pic;
+ irq &= 7;
+ if (set && (val & 0x08))
+ temp_pic->elcr |= (1 << irq);
+ else
+ temp_pic->elcr &= ~(1 << irq);
}
}
-
static void
ali1435_pci_write(int func, int addr, uint8_t val, void *priv)
{
ali1435_t *dev = (ali1435_t *) priv;
- int irq, irq_map[8] = { -1, 5, 9, 10, 11, 12, 14, 15 };
+ int irq, irq_map[8] = { -1, 5, 9, 10, 11, 12, 14, 15 };
ali1435_log("ali1435_write(%02X, %02X, %02X)\n", func, addr, val);
if (func > 0)
- return;
+ return;
if ((addr < 0x04) || (addr == 0x06) || ((addr >= 0x08) && (addr <= 0x0b)))
- return;
+ return;
if ((addr >= 0x0f) && (addr < 0x30))
- return;
+ return;
if ((addr >= 0x34) && (addr < 0x40))
- return;
+ return;
switch (addr) {
- /* Dummy PCI Config */
- case 0x04:
- dev->pci_regs[addr] = (val & 0x7f) | 0x07;
- break;
+ /* Dummy PCI Config */
+ case 0x04:
+ dev->pci_regs[addr] = (val & 0x7f) | 0x07;
+ break;
- case 0x05:
- dev->pci_regs[addr] = (val & 0x01);
- break;
+ case 0x05:
+ dev->pci_regs[addr] = (val & 0x01);
+ break;
- /* Dummy PCI Status */
- case 0x07:
- dev->pci_regs[addr] &= ~(val & 0xb8);
- break;
+ /* Dummy PCI Status */
+ case 0x07:
+ dev->pci_regs[addr] &= ~(val & 0xb8);
+ break;
- case 0x80: case 0x81:
- dev->pci_regs[addr] = val;
- ali1435_update_irqs(dev, 0);
- irq = irq_map[val & 0x07];
- if (irq >= 0) {
- ali1435_log("Set IRQ routing: INT %c -> %02X\n", 0x41 + ((addr & 0x01) << 1), irq);
- pci_set_irq_routing(PCI_INTA + ((addr & 0x01) << 1), irq);
- } else {
- ali1435_log("Set IRQ routing: INT %c -> FF\n", 0x41 + ((addr & 0x01) << 1));
- pci_set_irq_routing(PCI_INTA + ((addr & 0x01) << 1), PCI_IRQ_DISABLED);
- }
- irq = irq_map[(val >> 4) & 0x07];
- if (irq >= 0) {
- ali1435_log("Set IRQ routing: INT %c -> %02X\n", 0x42 + ((addr & 0x01) << 1), irq);
- pci_set_irq_routing(PCI_INTB + ((addr & 0x01) << 1), irq);
- } else {
- ali1435_log("Set IRQ routing: INT %c -> FF\n", 0x42 + ((addr & 0x01) << 1));
- pci_set_irq_routing(PCI_INTB + ((addr & 0x01) << 1), PCI_IRQ_DISABLED);
- }
- ali1435_update_irqs(dev, 1);
- break;
+ case 0x80:
+ case 0x81:
+ dev->pci_regs[addr] = val;
+ ali1435_update_irqs(dev, 0);
+ irq = irq_map[val & 0x07];
+ if (irq >= 0) {
+ ali1435_log("Set IRQ routing: INT %c -> %02X\n", 0x41 + ((addr & 0x01) << 1), irq);
+ pci_set_irq_routing(PCI_INTA + ((addr & 0x01) << 1), irq);
+ } else {
+ ali1435_log("Set IRQ routing: INT %c -> FF\n", 0x41 + ((addr & 0x01) << 1));
+ pci_set_irq_routing(PCI_INTA + ((addr & 0x01) << 1), PCI_IRQ_DISABLED);
+ }
+ irq = irq_map[(val >> 4) & 0x07];
+ if (irq >= 0) {
+ ali1435_log("Set IRQ routing: INT %c -> %02X\n", 0x42 + ((addr & 0x01) << 1), irq);
+ pci_set_irq_routing(PCI_INTB + ((addr & 0x01) << 1), irq);
+ } else {
+ ali1435_log("Set IRQ routing: INT %c -> FF\n", 0x42 + ((addr & 0x01) << 1));
+ pci_set_irq_routing(PCI_INTB + ((addr & 0x01) << 1), PCI_IRQ_DISABLED);
+ }
+ ali1435_update_irqs(dev, 1);
+ break;
- default:
- dev->pci_regs[addr] = val;
- break;
+ default:
+ dev->pci_regs[addr] = val;
+ break;
}
}
-
static uint8_t
ali1435_pci_read(int func, int addr, void *priv)
{
ali1435_t *dev = (ali1435_t *) priv;
- uint8_t ret;
+ uint8_t ret;
ret = 0xff;
@@ -181,68 +175,65 @@ ali1435_pci_read(int func, int addr, void *priv)
return ret;
}
-
static void
ali1435_write(uint16_t addr, uint8_t val, void *priv)
{
- ali1435_t *dev = (ali1435_t *)priv;
+ ali1435_t *dev = (ali1435_t *) priv;
switch (addr) {
- case 0x22:
- dev->index = val;
- break;
+ case 0x22:
+ dev->index = val;
+ break;
- case 0x23:
-/* #ifdef ENABLE_ALI1435_LOG
- if (dev->index != 0x03)
- ali1435_log("M1435: dev->regs[%02x] = %02x\n", dev->index, val);
-#endif */
+ case 0x23:
+ /* #ifdef ENABLE_ALI1435_LOG
+ if (dev->index != 0x03)
+ ali1435_log("M1435: dev->regs[%02x] = %02x\n", dev->index, val);
+ #endif */
- if (dev->index == 0x03)
- dev->cfg_locked = (val != 0x69);
+ if (dev->index == 0x03)
+ dev->cfg_locked = (val != 0x69);
- if (!dev->cfg_locked) {
- pclog("M1435: dev->regs[%02x] = %02x\n", dev->index, val);
+ if (!dev->cfg_locked) {
+ pclog("M1435: dev->regs[%02x] = %02x\n", dev->index, val);
- switch (dev->index) {
- /* PCI Mechanism select? */
- case 0x00:
- dev->regs[dev->index] = val;
- pclog("PMC = %i\n", val != 0xc8);
- pci_set_pmc(val != 0xc8);
- break;
+ switch (dev->index) {
+ /* PCI Mechanism select? */
+ case 0x00:
+ dev->regs[dev->index] = val;
+ pclog("PMC = %i\n", val != 0xc8);
+ pci_set_pmc(val != 0xc8);
+ break;
- /* ???? */
- case 0x06:
- dev->regs[dev->index] = val;
- break;
+ /* ???? */
+ case 0x06:
+ dev->regs[dev->index] = val;
+ break;
- /* ???? */
- case 0x07:
- dev->regs[dev->index] = val;
- break;
- }
- }
- break;
+ /* ???? */
+ case 0x07:
+ dev->regs[dev->index] = val;
+ break;
+ }
+ }
+ break;
}
}
-
static uint8_t
ali1435_read(uint16_t addr, void *priv)
{
- ali1435_t *dev = (ali1435_t *)priv;
- uint8_t ret = 0xff;
+ ali1435_t *dev = (ali1435_t *) priv;
+ uint8_t ret = 0xff;
if ((addr == 0x23) && (dev->index < 0x10))
- ret = dev->regs[dev->index];
+ ret = dev->regs[dev->index];
else if (addr == 0x22)
- ret = dev->index;
+ ret = dev->index;
return ret;
}
-
static void
ali1435_reset(void *priv)
{
@@ -258,13 +249,16 @@ ali1435_reset(void *priv)
memset(dev->pci_regs, 0, 256);
- dev->pci_regs[0x00] = 0x25; dev->pci_regs[0x01] = 0x10; /*ALi*/
- dev->pci_regs[0x02] = 0x35; dev->pci_regs[0x03] = 0x14; /*M1435*/
+ dev->pci_regs[0x00] = 0x25;
+ dev->pci_regs[0x01] = 0x10; /*ALi*/
+ dev->pci_regs[0x02] = 0x35;
+ dev->pci_regs[0x03] = 0x14; /*M1435*/
dev->pci_regs[0x04] = 0x07;
dev->pci_regs[0x07] = 0x04;
dev->pci_regs[0x0b] = 0x06;
- dev->pci_regs[0x80] = 0x80; dev->pci_regs[0x81] = 0x00;
+ dev->pci_regs[0x80] = 0x80;
+ dev->pci_regs[0x81] = 0x00;
pci_set_irq_routing(PCI_INTA, PCI_IRQ_DISABLED);
pci_set_irq_routing(PCI_INTB, PCI_IRQ_DISABLED);
@@ -272,16 +266,14 @@ ali1435_reset(void *priv)
pci_set_irq_routing(PCI_INTD, PCI_IRQ_DISABLED);
}
-
static void
ali1435_close(void *p)
{
- ali1435_t *dev = (ali1435_t *)p;
+ ali1435_t *dev = (ali1435_t *) p;
free(dev);
}
-
static void *
ali1435_init(const device_t *info)
{
@@ -291,8 +283,8 @@ ali1435_init(const device_t *info)
dev->cfg_locked = 1;
/* M1435 Ports:
- 22h Index Port
- 23h Data Port
+ 22h Index Port
+ 23h Data Port
*/
io_sethandler(0x0022, 0x0002, ali1435_read, NULL, NULL, ali1435_write, NULL, NULL, dev);
@@ -309,15 +301,15 @@ ali1435_init(const device_t *info)
}
const device_t ali1435_device = {
- .name = "Intel ALi M1435",
+ .name = "Intel ALi M1435",
.internal_name = "ali1435",
- .flags = DEVICE_PCI,
- .local = 0x00,
- .init = ali1435_init,
- .close = ali1435_close,
- .reset = ali1435_reset,
+ .flags = DEVICE_PCI,
+ .local = 0x00,
+ .init = ali1435_init,
+ .close = ali1435_close,
+ .reset = ali1435_reset,
{ .available = NULL },
.speed_changed = NULL,
- .force_redraw = NULL,
- .config = NULL
+ .force_redraw = NULL,
+ .config = NULL
};
diff --git a/src/chipset/ali1489.c b/src/chipset/ali1489.c
index 70ff509ab..706b67f12 100644
--- a/src/chipset/ali1489.c
+++ b/src/chipset/ali1489.c
@@ -180,6 +180,9 @@ ali1489_defaults(ali1489_t *dev)
dev->regs[0x3d] = 0x01;
dev->regs[0x40] = 0x03;
+ pic_kbd_latch(0x01);
+ pic_mouse_latch(0x00);
+
ali1489_shadow_recalc(dev);
cpu_cache_int_enabled = 0;
cpu_cache_ext_enabled = 0;
@@ -295,6 +298,7 @@ ali1489_write(uint16_t addr, uint8_t val, void *priv)
case 0x2a: /* I/O Recovery Register */
dev->regs[dev->index] = val;
+ pic_mouse_latch(val & 0x80);
break;
case 0x2b: /* Turbo Function Register */
diff --git a/src/chipset/ali1543.c b/src/chipset/ali1543.c
index 150e54468..5aabd6c63 100644
--- a/src/chipset/ali1543.c
+++ b/src/chipset/ali1543.c
@@ -153,7 +153,8 @@ ali1533_write(int func, int addr, uint8_t val, void *priv)
case 0x41:
/* TODO: Bit 7 selects keyboard controller type:
0 = AT, 1 = PS/2 */
- keyboard_at_set_mouse_scan((val & 0x40) ? 1 : 0);
+ pic_kbd_latch(!!(val & 0x80));
+ pic_mouse_latch(!!(val & 0x40));
dev->pci_conf[addr] = val & 0xbf;
break;
@@ -454,9 +455,7 @@ ali1533_read(int func, int addr, void *priv)
ret = 0x00;
else {
ret = dev->pci_conf[addr];
- if (addr == 0x41)
- ret |= (keyboard_at_get_mouse_scan() << 2);
- else if (addr == 0x58)
+ if (addr == 0x58)
ret = (ret & 0xbf) | (dev->ide_dev_enable ? 0x40 : 0x00);
else if ((dev->type == 1) && ((addr >= 0x7c) && (addr <= 0xff)) && !dev->pmu_dev_enable) {
dev->pmu_dev_enable = 1;
@@ -1510,7 +1509,8 @@ ali1543_reset(void *priv)
dev->pci_conf[0x0a] = 0x01;
dev->pci_conf[0x0b] = 0x06;
- ali1533_write(0, 0x48, 0x00, dev); // Disables all IRQ's
+ ali1533_write(0, 0x41, 0x00, dev); /* Disables the keyboard and mouse IRQ latch. */
+ ali1533_write(0, 0x48, 0x00, dev); /* Disables all IRQ's. */
ali1533_write(0, 0x44, 0x00, dev);
ali1533_write(0, 0x4d, 0x00, dev);
ali1533_write(0, 0x53, 0x00, dev);
diff --git a/src/chipset/ali6117.c b/src/chipset/ali6117.c
index 700fe1405..588aec3c3 100644
--- a/src/chipset/ali6117.c
+++ b/src/chipset/ali6117.c
@@ -46,38 +46,40 @@ typedef struct ali6117_t {
/* Total size, Bank 0 size, Bank 1 size, Bank 2 size, Bank 3 size. */
static uint32_t ali6117_modes[32][5] = {
- { 1024, 512, 512, 0, 0 },
- { 2048, 512, 512, 512, 512 },
- { 3072, 512, 512, 2048, 0 },
- { 5120, 512, 512, 2048, 2048 },
- { 9216, 512, 512, 8192, 0 },
- { 1024, 1024, 0, 0, 0 },
- { 2048, 1024, 1024, 0, 0 },
- { 4096, 1024, 1024, 2048, 0 },
- { 6144, 1024, 1024, 2048, 2048 },
- { 10240, 1024, 1024, 8192, 0 },
- { 18432, 1024, 1024, 8192, 8192 },
- { 3072, 1024, 2048, 0, 0 },
- { 5120, 1024, 2048, 2048, 0 },
- { 9216, 1024, 8192, 0, 0 },
- { 2048, 2048, 0, 0, 0 },
- { 4096, 2048, 2048, 0, 0 },
- { 6144, 2048, 2048, 2048, 0 },
- { 8192, 2048, 2048, 2048, 2048 },
- { 12288, 2048, 2048, 8192, 0 },
- { 20480, 2048, 2048, 8192, 8192 },
- { 10240, 2048, 8192, 0, 0 },
- { 18432, 2048, 8192, 8192, 0 },
- { 26624, 2048, 8192, 8192, 8192 },
- { 4096, 4096, 0, 0, 0 },
- { 8192, 4096, 4096, 0, 0 },
- { 24576, 4096, 4096, 8192, 8192 },
- { 12288, 4096, 8192, 0, 0 },
- { 8192, 8192, 0, 0, 0 },
- { 16384, 8192, 8192, 0, 0 },
- { 24576, 8192, 8192, 8192, 0 },
- { 32768, 8192, 8192, 8192, 8192 },
- { 65536, 32768, 32768, 0, 0 }
+// clang-format off
+ { 1024, 512, 512, 0, 0 },
+ { 2048, 512, 512, 512, 512 },
+ { 3072, 512, 512, 2048, 0 },
+ { 5120, 512, 512, 2048, 2048 },
+ { 9216, 512, 512, 8192, 0 },
+ { 1024, 1024, 0, 0, 0 },
+ { 2048, 1024, 1024, 0, 0 },
+ { 4096, 1024, 1024, 2048, 0 },
+ { 6144, 1024, 1024, 2048, 2048 },
+ { 10240, 1024, 1024, 8192, 0 },
+ { 18432, 1024, 1024, 8192, 8192 },
+ { 3072, 1024, 2048, 0, 0 },
+ { 5120, 1024, 2048, 2048, 0 },
+ { 9216, 1024, 8192, 0, 0 },
+ { 2048, 2048, 0, 0, 0 },
+ { 4096, 2048, 2048, 0, 0 },
+ { 6144, 2048, 2048, 2048, 0 },
+ { 8192, 2048, 2048, 2048, 2048 },
+ { 12288, 2048, 2048, 8192, 0 },
+ { 20480, 2048, 2048, 8192, 8192 },
+ { 10240, 2048, 8192, 0, 0 },
+ { 18432, 2048, 8192, 8192, 0 },
+ { 26624, 2048, 8192, 8192, 8192 },
+ { 4096, 4096, 0, 0, 0 },
+ { 8192, 4096, 4096, 0, 0 },
+ { 24576, 4096, 4096, 8192, 8192 },
+ { 12288, 4096, 8192, 0, 0 },
+ { 8192, 8192, 0, 0, 0 },
+ { 16384, 8192, 8192, 0, 0 },
+ { 24576, 8192, 8192, 8192, 0 },
+ { 32768, 8192, 8192, 8192, 8192 },
+ { 65536, 32768, 32768, 0, 0 }
+// clang-format on
};
#ifdef ENABLE_ALI6117_LOG
@@ -300,6 +302,7 @@ ali6117_reg_write(uint16_t addr, uint8_t val, void *priv)
case 0x36:
val &= 0xf0;
val |= dev->regs[dev->reg_offset];
+ pic_mouse_latch(val & 0x40);
break;
case 0x37:
@@ -424,6 +427,8 @@ ali6117_reset(void *priv)
/* On-board memory 15-16M is enabled by default. */
mem_set_mem_state_both(0x00f00000, 0x00100000, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
ali6117_bank_recalc(dev);
+
+ pic_mouse_latch(0x00);
}
}
@@ -473,6 +478,9 @@ ali6117_init(const device_t *info)
}
}
+ if (!(dev->local & 0x08))
+ pic_kbd_latch(0x01);
+
ali6117_reset(dev);
if (!(dev->local & 0x08))
diff --git a/src/chipset/ims8848.c b/src/chipset/ims8848.c
index 0cdc833b5..57580f125 100644
--- a/src/chipset/ims8848.c
+++ b/src/chipset/ims8848.c
@@ -30,6 +30,7 @@
#include <86box/mem.h>
#include <86box/smram.h>
#include <86box/pci.h>
+#include <86box/pic.h>
#include <86box/port_92.h>
#include <86box/chipset.h>
@@ -388,6 +389,9 @@ ims8848_init(const device_t *info)
ims8848_reset(dev);
+ pic_kbd_latch(0x01);
+ pic_mouse_latch(0x01);
+
return dev;
}
diff --git a/src/chipset/intel_420ex.c b/src/chipset/intel_420ex.c
index 98c2d0386..2b1a08622 100644
--- a/src/chipset/intel_420ex.c
+++ b/src/chipset/intel_420ex.c
@@ -31,6 +31,7 @@
#include <86box/mem.h>
#include <86box/smram.h>
#include <86box/pci.h>
+#include <86box/pic.h>
#include <86box/timer.h>
#include <86box/pit.h>
#include <86box/port_92.h>
@@ -217,6 +218,7 @@ i420ex_write(int func, int addr, uint8_t val, void *priv)
break;
case 0x4e:
dev->regs[addr] = (val & 0xf7);
+ pic_mouse_latch(!!(val & 0x10));
break;
case 0x50:
dev->regs[addr] = (val & 0x0f);
@@ -387,7 +389,8 @@ i420ex_reset_hard(void *priv)
dev->regs[0x4c] = 0x4d;
dev->regs[0x4e] = 0x03;
- /* Bits 2:1 of register 50h are 00 is 25 MHz, and 01 if 33 MHz, 10 and 11 are reserved. */
+ pic_mouse_latch(0x00);
+ /* Bits 2:1 of register 50h are 00 is 25 MHz, and 01 if 33 MHz, 10 and 11 are reserved. */
if (cpu_busspeed >= 33333333)
dev->regs[0x50] |= 0x02;
dev->regs[0x51] = 0x80;
@@ -436,6 +439,9 @@ i420ex_reset(void *p)
i420ex_write(0, 0x48, 0x00, p);
+ /* Disable the PIC mouse latch. */
+ i420ex_write(0, 0x4e, 0x03, p);
+
for (i = 0; i < 7; i++)
i420ex_write(0, 0x59 + i, 0x00, p);
@@ -520,6 +526,8 @@ i420ex_init(const device_t *info)
i420ex_reset_hard(dev);
+ pic_kbd_latch(0x01);
+
return dev;
}
diff --git a/src/chipset/intel_piix.c b/src/chipset/intel_piix.c
index 180940e26..94468b435 100644
--- a/src/chipset/intel_piix.c
+++ b/src/chipset/intel_piix.c
@@ -512,7 +512,7 @@ piix_write(int func, int addr, uint8_t val, void *priv)
break;
case 0x4e:
fregs[0x4e] = val;
- keyboard_at_set_mouse_scan((val & 0x10) ? 1 : 0);
+ pic_mouse_latch(!!(val & 0x10));
if (dev->type >= 4)
kbc_alias_update_io_mapping(dev);
break;
@@ -1159,9 +1159,7 @@ piix_read(int func, int addr, void *priv)
if ((func <= dev->max_func) || ((func == 1) && (dev->max_func == 0))) {
fregs = (uint8_t *) dev->regs[func];
ret = fregs[addr];
- if ((func == 0) && (addr == 0x4e))
- ret |= keyboard_at_get_mouse_scan();
- else if ((func == 2) && (addr == 0xff))
+ if ((func == 2) && (addr == 0xff))
ret |= 0xef;
piix_log("PIIX function %i read: %02X from %02X\n", func, ret, addr);
@@ -1277,6 +1275,7 @@ piix_reset_hard(piix_t *dev)
fregs[0x0e] = ((dev->type > 1) || (dev->rev != 2)) ? 0x80 : 0x00;
fregs[0x4c] = 0x4d;
fregs[0x4e] = 0x03;
+ pic_mouse_latch(0x00);
fregs[0x60] = fregs[0x61] = fregs[0x62] = fregs[0x63] = 0x80;
fregs[0x64] = (dev->type > 3) ? 0x10 : 0x00;
fregs[0x69] = 0x02;
@@ -1446,6 +1445,9 @@ piix_reset(void *p)
piix_write(0, 0xa8, 0x0f, p);
}
+ /* Disable the PIC mouse latch. */
+ piix_write(0, 0x4e, 0x03, p);
+
if (dev->type == 5)
piix_write(0, 0xe1, 0x40, p);
piix_write(1, 0x04, 0x00, p);
@@ -1532,9 +1534,8 @@ piix_speed_changed(void *priv)
timer_on_auto(&dev->fast_off_timer, ((double) cpu_fast_off_val + 1) * dev->fast_off_period);
}
-static void
- *
- piix_init(const device_t *info)
+static void *
+piix_init(const device_t *info)
{
piix_t *dev = (piix_t *) malloc(sizeof(piix_t));
memset(dev, 0, sizeof(piix_t));
@@ -1680,6 +1681,8 @@ static void
// device_add(&i8254_sec_device);
+ pic_kbd_latch(0x01);
+
return dev;
}
diff --git a/src/chipset/intel_sio.c b/src/chipset/intel_sio.c
index d94cac04a..eb7aad983 100644
--- a/src/chipset/intel_sio.c
+++ b/src/chipset/intel_sio.c
@@ -27,6 +27,7 @@
#include <86box/dma.h>
#include <86box/mem.h>
#include <86box/pci.h>
+#include <86box/pic.h>
#include <86box/timer.h>
#include <86box/pit.h>
#include <86box/port_92.h>
@@ -201,6 +202,7 @@ sio_write(int func, int addr, uint8_t val, void *priv)
case 0x4c:
case 0x4d:
dev->regs[addr] = (val & 0x7f);
+ pic_mouse_latch(!!(val & 0x10));
break;
case 0x4f:
dev->regs[addr] = val;
@@ -392,6 +394,7 @@ sio_reset_hard(void *priv)
dev->regs[0x4b] = 0x0f;
dev->regs[0x4c] = 0x56;
dev->regs[0x4d] = 0x40;
+ pic_mouse_latch(0x00);
dev->regs[0x4e] = 0x07;
dev->regs[0x4f] = 0x4f;
dev->regs[0x57] = 0x04;
@@ -444,6 +447,9 @@ sio_reset(void *p)
{
sio_t *dev = (sio_t *) p;
+ /* Disable the PIC mouse latch. */
+ sio_write(0, 0x4d, 0x40, p);
+
sio_write(0, 0x57, 0x04, p);
dma_set_params(1, 0xffffffff);
@@ -538,6 +544,8 @@ sio_init(const device_t *info)
// device_add(&i8254_sec_device);
+ pic_kbd_latch(0x01);
+
return dev;
}
diff --git a/src/chipset/scat.c b/src/chipset/scat.c
index 57b06662a..2bbac6cc0 100644
--- a/src/chipset/scat.c
+++ b/src/chipset/scat.c
@@ -84,16 +84,20 @@ typedef struct scat_t {
} scat_t;
static const uint8_t max_map[32] = {
+// clang-format off
0, 1, 1, 1, 2, 3, 4, 8,
4, 8, 12, 16, 20, 24, 28, 32,
0, 5, 9, 13, 6, 10, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
+// clang-format om
};
static const uint8_t max_map_sx[32] = {
- 0, 1, 2, 1, 3, 4, 6, 10,
- 5, 9, 13, 4, 8, 12, 16, 14,
- 18, 22, 26, 20, 24, 28, 32, 18,
- 20, 32, 0, 0, 0, 0, 0, 0
+// clang-format off
+ 0, 1, 2, 1, 3, 4, 6, 10,
+ 5, 9, 13, 4, 8, 12, 16, 14,
+ 18, 22, 26, 20, 24, 28, 32, 18,
+ 20, 32, 0, 0, 0, 0, 0, 0
+// clang-format om
};
static const uint8_t scatsx_external_is_RAS[33] = {
0, 0, 0, 0, 0, 0, 0, 0,
diff --git a/src/chipset/sis_5571.c b/src/chipset/sis_5571.c
index daf64aa74..53ef7956e 100644
--- a/src/chipset/sis_5571.c
+++ b/src/chipset/sis_5571.c
@@ -29,6 +29,7 @@
#include <86box/dma.h>
#include <86box/mem.h>
#include <86box/pci.h>
+#include <86box/pic.h>
#include <86box/port_92.h>
#include <86box/hdc_ide.h>
#include <86box/hdc_ide_sff8038i.h>
@@ -725,6 +726,9 @@ sis_5571_init(const device_t *info)
sis_5571_reset(dev);
+ pic_kbd_latch(0x01);
+ pic_mouse_latch(0x01);
+
return dev;
}
diff --git a/src/chipset/sis_85c50x.c b/src/chipset/sis_85c50x.c
index 247ff1b96..56d3a0a30 100644
--- a/src/chipset/sis_85c50x.c
+++ b/src/chipset/sis_85c50x.c
@@ -135,89 +135,90 @@ sis_85c50x_smm_recalc(sis_85c50x_t *dev)
static void
sis_85c50x_write(int func, int addr, uint8_t val, void *priv)
{
- sis_85c50x_t *dev = (sis_85c50x_t *) priv;
+ sis_85c50x_t *dev = (sis_85c50x_t *) priv;
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;
- case 0x07: /* Status - high byte */
- dev->pci_conf[addr] = ((dev->pci_conf[addr] & 0xf9) & ~(val & 0xf8)) | (val & 0x06);
- break;
- case 0x50:
- dev->pci_conf[addr] = val;
- break;
- case 0x51: /* Cache */
- dev->pci_conf[addr] = val;
- cpu_cache_ext_enabled = (val & 0x40);
- cpu_update_waitstates();
- break;
- case 0x52:
- dev->pci_conf[addr] = val;
- break;
- case 0x53: /* Shadow RAM */
- case 0x54:
- case 0x55:
- case 0x56:
- dev->pci_conf[addr] = val;
- sis_85c50x_shadow_recalc(dev);
- if (addr == 0x54)
+ if (func == 0x00)
+ switch (addr) {
+ case 0x04: /* Command - low byte */
+ dev->pci_conf[addr] = (dev->pci_conf[addr] & 0xb4) | (val & 0x4b);
+ break;
+ case 0x07: /* Status - high byte */
+ dev->pci_conf[addr] = ((dev->pci_conf[addr] & 0xf9) & ~(val & 0xf8)) | (val & 0x06);
+ break;
+ case 0x50:
+ dev->pci_conf[addr] = val;
+ break;
+ case 0x51: /* Cache */
+ dev->pci_conf[addr] = val;
+ cpu_cache_ext_enabled = (val & 0x40);
+ cpu_update_waitstates();
+ break;
+ case 0x52:
+ dev->pci_conf[addr] = val;
+ break;
+ case 0x53: /* Shadow RAM */
+ case 0x54:
+ case 0x55:
+ case 0x56:
+ dev->pci_conf[addr] = val;
+ sis_85c50x_shadow_recalc(dev);
+ if (addr == 0x54)
+ sis_85c50x_smm_recalc(dev);
+ break;
+ case 0x57:
+ case 0x58:
+ case 0x59:
+ case 0x5a:
+ case 0x5c:
+ case 0x5d:
+ case 0x5e:
+ case 0x61:
+ case 0x62:
+ case 0x63:
+ case 0x67:
+ case 0x68:
+ case 0x6a:
+ case 0x6b:
+ case 0x6c:
+ case 0x6d:
+ case 0x6e:
+ case 0x6f:
+ dev->pci_conf[addr] = val;
+ break;
+ case 0x5f:
+ dev->pci_conf[addr] = val & 0xfe;
+ break;
+ case 0x5b:
+ dev->pci_conf[addr] = val;
+ break;
+ case 0x60: /* SMI */
+ if ((dev->pci_conf[0x68] & 0x01) && !(dev->pci_conf[addr] & 0x02) && (val & 0x02)) {
+ dev->pci_conf[0x69] |= 0x01;
+ smi_raise();
+ }
+ dev->pci_conf[addr] = val & 0x3e;
+ break;
+ case 0x64: /* SMRAM */
+ case 0x65:
+ dev->pci_conf[addr] = val;
sis_85c50x_smm_recalc(dev);
- break;
- case 0x57:
- case 0x58:
- case 0x59:
- case 0x5a:
- case 0x5c:
- case 0x5d:
- case 0x5e:
- case 0x61:
- case 0x62:
- case 0x63:
- case 0x67:
- case 0x68:
- case 0x6a:
- case 0x6b:
- case 0x6c:
- case 0x6d:
- case 0x6e:
- case 0x6f:
- dev->pci_conf[addr] = val;
- break;
- case 0x5f:
- dev->pci_conf[addr] = val & 0xfe;
- break;
- case 0x5b:
- dev->pci_conf[addr] = val;
- break;
- case 0x60: /* SMI */
- if ((dev->pci_conf[0x68] & 0x01) && !(dev->pci_conf[addr] & 0x02) && (val & 0x02)) {
- dev->pci_conf[0x69] |= 0x01;
- smi_raise();
- }
- dev->pci_conf[addr] = val & 0x3e;
- break;
- case 0x64: /* SMRAM */
- case 0x65:
- dev->pci_conf[addr] = val;
- sis_85c50x_smm_recalc(dev);
- break;
- case 0x66:
- dev->pci_conf[addr] = (val & 0x7f);
- break;
- case 0x69:
- dev->pci_conf[addr] &= ~(val);
- break;
- }
+ break;
+ case 0x66:
+ dev->pci_conf[addr] = (val & 0x7f);
+ break;
+ case 0x69:
+ dev->pci_conf[addr] &= ~(val);
+ break;
+ }
}
static uint8_t
sis_85c50x_read(int func, int addr, void *priv)
{
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
- uint8_t ret = 0xff;
+ uint8_t ret = 0xff;
if (func == 0x00)
ret = dev->pci_conf[addr];
@@ -234,41 +235,42 @@ sis_85c50x_sb_write(int func, int addr, uint8_t val, void *priv)
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;
- case 0x07: /* Status */
- dev->pci_conf_sb[addr] &= ~(val & 0x30);
- break;
- case 0x40: /* BIOS Control Register */
- dev->pci_conf_sb[addr] = val & 0x3f;
- break;
- case 0x41:
- case 0x42:
- case 0x43:
- case 0x44:
- /* INTA/B/C/D# Remapping Control Register */
- dev->pci_conf_sb[addr] = val & 0x8f;
- if (val & 0x80)
- pci_set_irq_routing(PCI_INTA + (addr - 0x41), PCI_IRQ_DISABLED);
- else
- pci_set_irq_routing(PCI_INTA + (addr - 0x41), val & 0xf);
- break;
- case 0x48: /* ISA Master/DMA Memory Cycle Control Register 1 */
- case 0x49: /* ISA Master/DMA Memory Cycle Control Register 2 */
- case 0x4a: /* ISA Master/DMA Memory Cycle Control Register 3 */
- case 0x4b: /* ISA Master/DMA Memory Cycle Control Register 4 */
- dev->pci_conf_sb[addr] = val;
- break;
- }
+ if (func == 0x00)
+ switch (addr) {
+ case 0x04: /* Command */
+ dev->pci_conf_sb[addr] = val & 0x0f;
+ break;
+ case 0x07: /* Status */
+ dev->pci_conf_sb[addr] &= ~(val & 0x30);
+ break;
+ case 0x40: /* BIOS Control Register */
+ dev->pci_conf_sb[addr] = val & 0x3f;
+ break;
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ /* INTA/B/C/D# Remapping Control Register */
+ dev->pci_conf_sb[addr] = val & 0x8f;
+ if (val & 0x80)
+ pci_set_irq_routing(PCI_INTA + (addr - 0x41), PCI_IRQ_DISABLED);
+ else
+ pci_set_irq_routing(PCI_INTA + (addr - 0x41), val & 0xf);
+ break;
+ case 0x48: /* ISA Master/DMA Memory Cycle Control Register 1 */
+ case 0x49: /* ISA Master/DMA Memory Cycle Control Register 2 */
+ case 0x4a: /* ISA Master/DMA Memory Cycle Control Register 3 */
+ case 0x4b: /* ISA Master/DMA Memory Cycle Control Register 4 */
+ dev->pci_conf_sb[addr] = val;
+ break;
+ }
}
static uint8_t
sis_85c50x_sb_read(int func, int addr, void *priv)
{
sis_85c50x_t *dev = (sis_85c50x_t *) priv;
- uint8_t ret = 0xff;
+ uint8_t ret = 0xff;
if (func == 0x00)
ret = dev->pci_conf_sb[addr];
diff --git a/src/chipset/umc_8886.c b/src/chipset/umc_8886.c
index dea5ac99a..3def68666 100644
--- a/src/chipset/umc_8886.c
+++ b/src/chipset/umc_8886.c
@@ -374,6 +374,9 @@ umc_8886_init(const device_t *info)
umc_8886_reset(dev);
+ pic_kbd_latch(0x01);
+ pic_mouse_latch(0x01);
+
return dev;
}
diff --git a/src/chipset/via_pipc.c b/src/chipset/via_pipc.c
index a568032b4..31da38b48 100644
--- a/src/chipset/via_pipc.c
+++ b/src/chipset/via_pipc.c
@@ -59,13 +59,15 @@
/* Most revision numbers (PCI-ISA bridge or otherwise) were lifted from PCI device
listings on forums, as VIA's datasheets are not very helpful regarding those. */
-#define VIA_PIPC_586A 0x05862500
-#define VIA_PIPC_586B 0x05864700
-#define VIA_PIPC_596A 0x05960900
-#define VIA_PIPC_596B 0x05962300
-#define VIA_PIPC_686A 0x06861400
-#define VIA_PIPC_686B 0x06864000
-#define VIA_PIPC_8231 0x82311000
+#define VIA_PIPC_586A 0x05862500
+#define VIA_PIPC_586B 0x05864700
+#define VIA_PIPC_596A 0x05960900
+#define VIA_PIPC_596B 0x05962300
+#define VIA_PIPC_686A 0x06861400
+#define VIA_PIPC_686B 0x06864000
+#define VIA_PIPC_8231 0x82311000
+
+#define VIA_PIPC_FM_EMULATION 1
enum {
TRAP_DRQ = 0,
@@ -118,7 +120,7 @@ typedef struct _pipc_ {
ide_regs[256],
usb_regs[2][256],
power_regs[256],
- ac97_regs[2][256], fmnmi_regs[4];
+ ac97_regs[2][256], fmnmi_regs[4], fmnmi_status;
sff8038i_t *bm[2];
nvr_t *nvr;
@@ -220,6 +222,9 @@ pipc_reset_hard(void *priv)
dev->pci_isa_regs[0x0b] = 0x06;
dev->pci_isa_regs[0x0e] = 0x80;
+ pic_kbd_latch(0x01);
+ pic_mouse_latch(dev->local >= VIA_PIPC_586B);
+
dev->pci_isa_regs[0x48] = 0x01;
dev->pci_isa_regs[0x4a] = 0x04;
dev->pci_isa_regs[0x4f] = 0x03;
@@ -760,10 +765,10 @@ pipc_fmnmi_handlers(pipc_t *dev, uint8_t modem)
static uint8_t
pipc_fm_read(uint16_t addr, void *priv)
{
-#ifdef VIA_PIPC_FM_EMULATION
- uint8_t ret = 0x00;
-#else
pipc_t *dev = (pipc_t *) priv;
+#ifdef VIA_PIPC_FM_EMULATION
+ uint8_t ret = ((addr & 0x03) == 0x00) ? dev->fmnmi_status : 0x00;
+#else
uint8_t ret = dev->sb->opl.read(addr, dev->sb->opl.priv);
#endif
@@ -784,12 +789,26 @@ pipc_fm_write(uint16_t addr, uint8_t val, void *priv)
index port, and only fires NMI/SMI when writing to the data port. */
if (!(addr & 0x01)) {
dev->fmnmi_regs[0x00] = (addr & 0x02) ? 0x02 : 0x01;
- dev->fmnmi_regs[0x01] = val;
- } else {
dev->fmnmi_regs[0x02] = val;
+ } else {
+ dev->fmnmi_regs[0x01] = val;
+
+ /* TODO: Probe how real hardware handles OPL timers. This assumed implementation
+ just sets the relevant interrupt flags as soon as a timer is started. */
+ if (!(addr & 0x02) && (dev->fmnmi_regs[0x02] == 0x04)) {
+ if (val & 0x80)
+ dev->fmnmi_status = 0x00;
+ if ((val & 0x41) == 0x01)
+ dev->fmnmi_status |= 0x40;
+ if ((val & 0x22) == 0x02)
+ dev->fmnmi_status |= 0x20;
+ if (dev->fmnmi_status & 0x60)
+ dev->fmnmi_status |= 0x80;
+ }
/* Fire NMI/SMI if enabled. */
if (dev->ac97_regs[0][0x48] & 0x01) {
+ pipc_log("PIPC: Raising %s\n", (dev->ac97_regs[0][0x48] & 0x04) ? "SMI" : "NMI");
if (dev->ac97_regs[0][0x48] & 0x04)
smi_raise();
else
@@ -1047,6 +1066,11 @@ pipc_write(int func, int addr, uint8_t val, void *priv)
break;
+ case 0x44:
+ if (dev->local < VIA_PIPC_586B)
+ pic_mouse_latch(val & 0x01);
+ break;
+
case 0x47:
if (val & 0x01)
trc_write(0x0047, (val & 0x80) ? 0x06 : 0x04, NULL);
@@ -1569,6 +1593,9 @@ pipc_reset(void *p)
else
pipc_write(1, 0x40, 0x00, p);
+ if (dev->local < VIA_PIPC_586B)
+ pipc_write(0, 0x44, 0x00, p);
+
pipc_write(0, 0x77, 0x00, p);
}
diff --git a/src/config.c b/src/config.c
index 701078df1..6399c91ab 100644
--- a/src/config.c
+++ b/src/config.c
@@ -857,7 +857,7 @@ load_ports(void)
serial_passthrough_enabled[c] = !!ini_section_get_int(cat, temp, 0);
if (serial_passthrough_enabled[c])
- config_log("Serial Port %d: passthrough enabled.\n\n", c+1);
+ config_log("Serial Port %d: passthrough enabled.\n\n", c + 1);
}
for (c = 0; c < PARALLEL_MAX; c++) {
@@ -2345,7 +2345,7 @@ save_input_devices(void)
} else {
ini_section_delete_var(cat, "tablet_tool_type");
}
-
+
ini_delete_section_if_empty(config, cat);
}
@@ -2540,7 +2540,7 @@ save_storage_controllers(void)
ini_section_delete_var(cat, "cdrom_interface");
else
ini_section_set_string(cat, "cdrom_interface",
- cdrom_interface_get_internal_name(cdrom_interface_current));
+ cdrom_interface_get_internal_name(cdrom_interface_current));
if (ide_ter_enabled == 0)
ini_section_delete_var(cat, "ide_ter");
diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
index a004fe07e..33c474ba3 100644
--- a/src/cpu/cpu.c
+++ b/src/cpu/cpu.c
@@ -114,7 +114,7 @@ int isa_cycles, cpu_inited,
cpu_waitstates, cpu_cache_int_enabled, cpu_cache_ext_enabled,
cpu_isa_speed, cpu_pci_speed, cpu_isa_pci_div, cpu_agp_speed, cpu_alt_reset,
- cpu_override, cpu_effective, cpu_multi, cpu_16bitbus, cpu_64bitbus, cpu_busspeed,
+ cpu_override, cpu_effective, cpu_multi, cpu_16bitbus, cpu_64bitbus,
cpu_cyrix_alignment, CPUID,
is186, is_nec,
@@ -138,7 +138,7 @@ uint8_t _cache[2048];
uint64_t cpu_CR4_mask, tsc = 0;
uint64_t pmc[2] = { 0, 0 };
-double cpu_dmulti;
+double cpu_dmulti, cpu_busspeed;
msr_t msr;
diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h
index f1bb70f13..2eb64e758 100644
--- a/src/cpu/cpu.h
+++ b/src/cpu/cpu.h
@@ -490,10 +490,11 @@ extern int cpu_override;
extern int cpu_isintel;
extern int cpu_iscyrix;
extern int cpu_16bitbus, cpu_64bitbus;
-extern int cpu_busspeed, cpu_pci_speed;
+extern int cpu_pci_speed;
extern int cpu_multi;
extern double cpu_dmulti;
extern double fpu_multi;
+extern double cpu_busspeed;
extern int cpu_cyrix_alignment; /*Cyrix 5x86/6x86 only has data misalignment
penalties when crossing 8-byte boundaries*/
diff --git a/src/cpu/x86.c b/src/cpu/x86.c
index eb1dc463f..47250045f 100644
--- a/src/cpu/x86.c
+++ b/src/cpu/x86.c
@@ -29,6 +29,7 @@
#include <86box/device.h>
#include <86box/dma.h>
#include <86box/io.h>
+#include <86box/keyboard.h>
#include <86box/mem.h>
#include <86box/rom.h>
#include <86box/nmi.h>
@@ -265,9 +266,12 @@ reset_common(int hard)
if (is286) {
loadcs(0xF000);
cpu_state.pc = 0xFFF0;
- rammask = cpu_16bitbus ? 0xFFFFFF : 0xFFFFFFFF;
- if (is6117)
- rammask |= 0x03000000;
+ if (hard) {
+ rammask = cpu_16bitbus ? 0xFFFFFF : 0xFFFFFFFF;
+ if (is6117)
+ rammask |= 0x03000000;
+ mem_a20_key = mem_a20_alt = mem_a20_state = 0;
+ }
}
idt.base = 0;
cpu_state.flags = 2;
@@ -315,6 +319,10 @@ reset_common(int hard)
cache_index = 0;
memset(_tr, 0x00, sizeof(_tr));
memset(_cache, 0x00, sizeof(_cache));
+
+ /* If we have an AT or PS/2 keyboard controller, make sure the A20 state
+ is correct. */
+ kbc_at_a20_reset();
}
if (!is286)
diff --git a/src/device.c b/src/device.c
index a5c5d6276..5d739b13c 100644
--- a/src/device.c
+++ b/src/device.c
@@ -92,7 +92,7 @@ device_set_context(device_context_t *c, const device_t *d, int inst)
void *sec, *single_sec;
memset(c, 0, sizeof(device_context_t));
- c->dev = d;
+ c->dev = d;
c->instance = inst;
if (inst) {
sprintf(c->name, "%s #%i", d->name, inst);
@@ -135,7 +135,7 @@ device_context_restore(void)
}
static void *
-device_add_common(const device_t *d, const device_t *cd, void *p, void* params, int inst)
+device_add_common(const device_t *d, const device_t *cd, void *p, void *params, int inst)
{
void *priv = NULL;
int c;
@@ -203,7 +203,7 @@ device_add(const device_t *d)
}
void *
-device_add_parameters(const device_t *d, void* params)
+device_add_parameters(const device_t *d, void *params)
{
return device_add_common(d, d, NULL, params, 0);
}
@@ -216,7 +216,7 @@ device_add_ex(const device_t *d, void *priv)
}
void
-device_add_ex_parameters(const device_t *d, void* priv, void *params)
+device_add_ex_parameters(const device_t *d, void *priv, void *params)
{
device_add_common(d, d, priv, params, 0);
}
@@ -293,7 +293,7 @@ device_cadd_inst_ex(const device_t *d, const device_t *cd, void *priv, int inst)
}
void
-device_cadd_inst_ex_parameters(const device_t *d, const device_t *cd, void *priv, int inst, void* params)
+device_cadd_inst_ex_parameters(const device_t *d, const device_t *cd, void *priv, int inst, void *params)
{
device_add_common(d, cd, priv, params, inst);
}
diff --git a/src/device/isartc.c b/src/device/isartc.c
index bb0f928eb..67b5b94c2 100644
--- a/src/device/isartc.c
+++ b/src/device/isartc.c
@@ -88,7 +88,7 @@
#define ISARTC_A6PAK 3
#define ISARTC_VENDEX 4
-#define ISARTC_DEBUG 0
+#define ISARTC_DEBUG 0
typedef struct {
const char *name; /* board name */
@@ -572,7 +572,7 @@ isartc_init(const device_t *info)
dev->f_rd, NULL, NULL, dev->f_wr, NULL, NULL, dev);
/* Hook into the NVR backend. */
- dev->nvr.fn = (char *)info->internal_name;
+ dev->nvr.fn = (char *) info->internal_name;
dev->nvr.irq = dev->irq;
if (!is_at)
nvr_init(&dev->nvr);
diff --git a/src/device/keyboard.c b/src/device/keyboard.c
index 74bf3f67e..cc6469f9d 100644
--- a/src/device/keyboard.c
+++ b/src/device/keyboard.c
@@ -66,6 +66,7 @@ static uint8_t
fake_shift_needed(uint16_t scan)
{
switch (scan) {
+ case 0x137: /* Yes, Print Screen requires the fake shifts. */
case 0x147:
case 0x148:
case 0x149:
@@ -125,9 +126,13 @@ key_process(uint16_t scan, int down)
void
keyboard_input(int down, uint16_t scan)
{
+ /* Special case for E1 1D, translate it to 0100 - special case. */
+ if ((scan >> 8) == 0xe1) {
+ if ((scan & 0xff) == 0x1d)
+ scan = 0x0100;
/* Translate E0 xx scan codes to 01xx because we use 512-byte arrays for states
and scan code sets. */
- if ((scan >> 8) == 0xe0) {
+ } else if ((scan >> 8) == 0xe0) {
scan &= 0x00ff;
scan |= 0x0100; /* extended key code */
} else if ((scan >> 8) != 0x01)
@@ -295,11 +300,30 @@ keyboard_recv(uint16_t key)
return recv_key[key];
}
+/* Do we have Control-Alt-PgDn in the keyboard buffer? */
+int
+keyboard_isfsenter(void)
+{
+ return ((recv_key[0x01d] || recv_key[0x11d]) && (recv_key[0x038] || recv_key[0x138]) && (recv_key[0x049] || recv_key[0x149]));
+}
+
+int
+keyboard_isfsenter_down(void)
+{
+ return (!recv_key[0x01d] && !recv_key[0x11d] && !recv_key[0x038] && !recv_key[0x138] && !recv_key[0x049] && !recv_key[0x149]);
+}
+
/* Do we have Control-Alt-PgDn in the keyboard buffer? */
int
keyboard_isfsexit(void)
{
- return ((recv_key[0x01D] || recv_key[0x11D]) && (recv_key[0x038] || recv_key[0x138]) && (recv_key[0x051] || recv_key[0x151]));
+ return ((recv_key[0x01d] || recv_key[0x11d]) && (recv_key[0x038] || recv_key[0x138]) && (recv_key[0x051] || recv_key[0x151]));
+}
+
+int
+keyboard_isfsexit_down(void)
+{
+ return (!recv_key[0x01d] && !recv_key[0x11d] && !recv_key[0x038] && !recv_key[0x138] && !recv_key[0x051] && !recv_key[0x151]);
}
/* Do we have F8-F12 in the keyboard buffer? */
diff --git a/src/device/keyboard_at.c b/src/device/keyboard_at.c
index c71213aa6..3a841ad91 100644
--- a/src/device/keyboard_at.c
+++ b/src/device/keyboard_at.c
@@ -37,7 +37,6 @@
#include <86box/mem.h>
#include <86box/device.h>
#include <86box/machine.h>
-#include <86box/m_xt_xi8088.h>
#include <86box/m_at_t3100e.h>
#include <86box/fdd.h>
#include <86box/fdc.h>
@@ -56,8 +55,6 @@
#define STAT_IFULL 0x02
#define STAT_OFULL 0x01
-#define RESET_DELAY_TIME (100 * 10) /* 600ms */
-
#define CCB_UNUSED 0x80
#define CCB_TRANSLATE 0x40
#define CCB_PCMODE 0x20
@@ -81,56 +78,111 @@
#define KBC_VEN_IBM_MCA 0x08
#define KBC_VEN_QUADTEL 0x0c
#define KBC_VEN_TOSHIBA 0x10
-#define KBC_VEN_XI8088 0x14
-#define KBC_VEN_IBM_PS1 0x18
-#define KBC_VEN_ACER 0x1c
-#define KBC_VEN_INTEL_AMI 0x20
-#define KBC_VEN_OLIVETTI 0x24
-#define KBC_VEN_NCR 0x28
-#define KBC_VEN_SAMSUNG 0x2c
-#define KBC_VEN_ALI 0x30
+#define KBC_VEN_IBM_PS1 0x14
+#define KBC_VEN_ACER 0x18
+#define KBC_VEN_INTEL_AMI 0x1c
+#define KBC_VEN_OLIVETTI 0x20
+#define KBC_VEN_NCR 0x24
+#define KBC_VEN_PHOENIX 0x28
+#define KBC_VEN_ALI 0x2c
+#define KBC_VEN_TG 0x30
+#define KBC_VEN_TG_GREEN 0x34
#define KBC_VEN_MASK 0x3c
-typedef struct {
- uint8_t command, status, old_status, out, old_out, secr_phase,
- mem_addr, input_port, output_port, old_output_port,
- key_command, output_locked, ami_stat, want60,
- wantirq, key_wantdata, ami_flags, first_write;
+enum {
+ KBC_STATE_RESET = 0,
+ KBC_STATE_MAIN_IBF,
+ KBC_STATE_MAIN_KBD,
+ KBC_STATE_MAIN_MOUSE,
+ KBC_STATE_MAIN_BOTH,
+ KBC_STATE_KBC_OUT,
+ KBC_STATE_KBC_PARAM,
+ KBC_STATE_SEND_KBD,
+ KBC_STATE_KBD,
+ KBC_STATE_SEND_MOUSE,
+ KBC_STATE_MOUSE
+};
+#define KBC_STATE_SCAN_KBD KBC_STATE_KBD
+#define KBC_STATE_SCAN_MOUSE KBC_STATE_MOUSE
+enum {
+ DEV_STATE_MAIN_1 = 0,
+ DEV_STATE_MAIN_2,
+ DEV_STATE_MAIN_CMD,
+ DEV_STATE_MAIN_OUT,
+ DEV_STATE_MAIN_WANT_IN,
+ DEV_STATE_MAIN_IN
+};
+
+typedef struct {
+ /* Controller. */
+ uint8_t pci, kbc_state, command, want60,
+ status, ib, out, old_out,
+ sc_or, secr_phase, mem_addr, input_port,
+ output_port, old_output_port, output_locked, ami_stat,
+ ami_flags, key_ctrl_queue_start, key_ctrl_queue_end;
+
+ /* Keyboard. */
+ uint8_t key_command, key_wantdata, kbd_last_scan_code,
+ kbd_state, key_wantcmd, key_dat, key_cmd_queue_start,
+ key_cmd_queue_end, key_queue_start, key_queue_end;
+
+ /* Mouse. */
+ uint8_t mouse_state, mouse_wantcmd, mouse_dat, mouse_cmd_queue_start,
+ mouse_cmd_queue_end, mouse_queue_start, mouse_queue_end;
+
+ /* Controller. */
uint8_t mem[0x100];
- int last_irq, old_last_irq,
- reset_delay,
- out_new, out_delayed;
+ /* Controller - internal FIFO for the purpose of commands with multi-byte output. */
+ uint8_t key_ctrl_queue[64];
+ /* Keyboard - command response FIFO. */
+ uint8_t key_cmd_queue[16];
+
+ /* Keyboard - scan FIFO. */
+ uint8_t key_queue[16];
+
+ /* Mouse - command response FIFO. */
+ uint8_t mouse_cmd_queue[16];
+
+ /* Mouse - scan FIFO. */
+ uint8_t mouse_queue[16];
+
+ /* Keyboard. */
+ int out_new;
+
+ /* Mouse. */
+ int out_new_mouse;
+
+ /* Controller. */
uint32_t flags;
+ /* Controller (main timer). */
+ pc_timer_t send_delay_timer;
+
+ /* Controller (P2 pulse callback timer). */
pc_timer_t pulse_cb;
uint8_t (*write60_ven)(void *p, uint8_t val);
uint8_t (*write64_ven)(void *p, uint8_t val);
-
- pc_timer_t send_delay_timer;
} atkbd_t;
-/* bit 0 = repeat, bit 1 = makes break code? */
+/* Global keyboard flags for scan code set 3:
+ bit 0 = repeat, bit 1 = makes break code? */
uint8_t keyboard_set3_flags[512];
uint8_t keyboard_set3_all_repeat;
uint8_t keyboard_set3_all_break;
-/* Bits 0 - 1 = scan code set, bit 6 = translate or not. */
-uint8_t keyboard_mode = 0x42;
+/* Global keyboard mode:
+ Bits 0 - 1 = scan code set. */
+uint8_t keyboard_mode = 0x02;
+
+/* Keyboard controller ports. */
+kbc_port_t *kbc_ports[2] = { NULL, NULL };
-static uint8_t key_ctrl_queue[16];
-static int key_ctrl_queue_start = 0, key_ctrl_queue_end = 0;
-static uint8_t key_queue[16];
-static int key_queue_start = 0, key_queue_end = 0;
-uint8_t mouse_queue[16];
-int mouse_queue_start = 0, mouse_queue_end = 0;
-static uint8_t kbd_last_scan_code;
static void (*mouse_write)(uint8_t val, void *priv) = NULL;
static void *mouse_p = NULL;
-static uint8_t sc_or = 0;
static atkbd_t *SavedKbd = NULL; // FIXME: remove!!! --FvK
/* Non-translated to translated scan codes. */
@@ -169,7 +221,6 @@ static const uint8_t nont_to_t[256] = {
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
};
-#ifdef USE_SET1
static const scancode scancode_set1[512] = {
// clang-format off
{ { 0},{ 0} }, { { 0x01,0},{ 0x81,0} }, { { 0x02,0},{ 0x82,0} }, { { 0x03,0},{ 0x83,0} }, /*000*/
@@ -301,7 +352,6 @@ static const scancode scancode_set1[512] = {
{ { 0},{ 0} }, { { 0},{ 0} }, { {0xe0,0xfe,0},{ 0} }, { {0xe0,0xff,0},{ 0} } /*1fc*/
// clang-format on
};
-#endif
static const scancode scancode_set2[512] = {
// clang-format off
@@ -567,8 +617,7 @@ static const scancode scancode_set3[512] = {
// clang-format on
};
-static void add_data_kbd(uint16_t val);
-
+// #define ENABLE_KEYBOARD_AT_LOG 1
#ifdef ENABLE_KEYBOARD_AT_LOG
int keyboard_at_do_log = ENABLE_KEYBOARD_AT_LOG;
@@ -590,15 +639,11 @@ kbd_log(const char *fmt, ...)
static void
set_scancode_map(atkbd_t *dev)
{
- switch (keyboard_mode & 3) {
-#ifdef USE_SET1
+ switch (keyboard_mode) {
case 1:
default:
keyboard_set_table(scancode_set1);
break;
-#else
- default:
-#endif
case 2:
keyboard_set_table(scancode_set2);
break;
@@ -607,315 +652,677 @@ set_scancode_map(atkbd_t *dev)
keyboard_set_table(scancode_set3);
break;
}
+}
- if (keyboard_mode & 0x20)
-#ifdef USE_SET1
- keyboard_set_table(scancode_set1);
-#else
- keyboard_set_table(scancode_set2);
+static void
+kbc_queue_reset(atkbd_t *dev, uint8_t channel)
+{
+ switch (channel) {
+ case 1:
+ dev->key_queue_start = dev->key_queue_end = 0;
+ memset(dev->key_queue, 0x00, sizeof(dev->key_queue));
+ /* FALLTHROUGH */
+ case 4:
+ dev->key_cmd_queue_start = dev->key_cmd_queue_end = 0;
+ memset(dev->key_cmd_queue, 0x00, sizeof(dev->key_cmd_queue));
+ break;
+
+ case 2:
+ dev->mouse_queue_start = dev->mouse_queue_end = 0;
+ memset(dev->mouse_queue, 0x00, sizeof(dev->mouse_queue));
+ /* FALLTHROUGH */
+ case 3:
+ dev->mouse_cmd_queue_start = dev->mouse_cmd_queue_end = 0;
+ memset(dev->mouse_cmd_queue, 0x00, sizeof(dev->mouse_cmd_queue));
+ break;
+
+ case 0:
+ default:
+ dev->key_ctrl_queue_start = dev->key_ctrl_queue_end = 0;
+ memset(dev->key_ctrl_queue, 0x00, sizeof(dev->key_ctrl_queue));
+ }
+}
+
+static void
+kbc_queue_add(atkbd_t *dev, uint8_t val, uint8_t channel)
+{
+ switch (channel) {
+ case 4:
+ kbd_log("ATkbc: dev->key_cmd_queue[%02X] = %02X;\n", dev->key_cmd_queue_end, val);
+ dev->key_cmd_queue[dev->key_cmd_queue_end] = val;
+ dev->key_cmd_queue_end = (dev->key_cmd_queue_end + 1) & 0xf;
+ break;
+ case 3:
+ kbd_log("ATkbc: dev->mouse_cmd_queue[%02X] = %02X;\n", dev->mouse_cmd_queue_end, val);
+ dev->mouse_cmd_queue[dev->mouse_cmd_queue_end] = val;
+ dev->mouse_cmd_queue_end = (dev->mouse_cmd_queue_end + 1) & 0xf;
+ break;
+ case 2:
+ kbd_log("ATkbc: dev->mouse_queue[%02X] = %02X;\n", dev->mouse_queue_end, val);
+ dev->mouse_queue[dev->mouse_queue_end] = val;
+ dev->mouse_queue_end = (dev->mouse_queue_end + 1) & 0xf;
+ break;
+ case 1:
+ kbd_log("ATkbc: dev->key_queue[%02X] = %02X;\n", dev->key_queue_end, val);
+ dev->key_queue[dev->key_queue_end] = val;
+ dev->key_queue_end = (dev->key_queue_end + 1) & 0xf;
+ break;
+ case 0:
+ default:
+ kbd_log("ATkbc: dev->key_ctrl_queue[%02X] = %02X;\n", dev->key_ctrl_queue_end, val);
+ dev->key_ctrl_queue[dev->key_ctrl_queue_end] = val;
+ dev->key_ctrl_queue_end = (dev->key_ctrl_queue_end + 1) & 0x3f;
+ break;
+ }
+}
+
+static int
+kbc_translate(atkbd_t *dev, uint8_t val)
+{
+ int xt_mode = (dev->mem[0x20] & 0x20) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF);
+ int translate = (dev->mem[0x20] & 0x40) || xt_mode || ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_PS2_2);
+ uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
+ int ret = - 1;
+
+ /* Allow for scan code translation. */
+ if (translate && (val == 0xf0)) {
+ kbd_log("ATkbd: translate is on, F0 prefix detected\n");
+ dev->sc_or = 0x80;
+ return ret;
+ }
+
+ /* Skip break code if translated make code has bit 7 set. */
+ if (translate && (dev->sc_or == 0x80) && (nont_to_t[val] & 0x80)) {
+ kbd_log("ATkbd: translate is on, skipping scan code: %02X (original: F0 %02X)\n", nont_to_t[val], val);
+ dev->sc_or = 0;
+ return ret;
+ }
+
+ /* Test for T3100E 'Fn' key (Right Alt / Right Ctrl) */
+ if ((dev != NULL) && (kbc_ven == KBC_VEN_TOSHIBA) &&
+ (keyboard_recv(0x138) || keyboard_recv(0x11d))) switch (val) {
+ case 0x4f:
+ t3100e_notify_set(0x01);
+ break; /* End */
+ case 0x50:
+ t3100e_notify_set(0x02);
+ break; /* Down */
+ case 0x51:
+ t3100e_notify_set(0x03);
+ break; /* PgDn */
+ case 0x52:
+ t3100e_notify_set(0x04);
+ break; /* Ins */
+ case 0x53:
+ t3100e_notify_set(0x05);
+ break; /* Del */
+ case 0x54:
+ t3100e_notify_set(0x06);
+ break; /* SysRQ */
+ case 0x45:
+ t3100e_notify_set(0x07);
+ break; /* NumLock */
+ case 0x46:
+ t3100e_notify_set(0x08);
+ break; /* ScrLock */
+ case 0x47:
+ t3100e_notify_set(0x09);
+ break; /* Home */
+ case 0x48:
+ t3100e_notify_set(0x0a);
+ break; /* Up */
+ case 0x49:
+ t3100e_notify_set(0x0b);
+ break; /* PgUp */
+ case 0x4a:
+ t3100e_notify_set(0x0c);
+ break; /* Keypad - */
+ case 0x4b:
+ t3100e_notify_set(0x0d);
+ break; /* Left */
+ case 0x4c:
+ t3100e_notify_set(0x0e);
+ break; /* KP 5 */
+ case 0x4d:
+ t3100e_notify_set(0x0f);
+ break; /* Right */
+ }
+
+ kbd_log("ATkbd: translate is %s, ", translate ? "on" : "off");
+#ifdef ENABLE_KEYBOARD_AT_LOG
+ kbd_log("scan code: ");
+ if (translate) {
+ kbd_log("%02X (original: ", (nont_to_t[val] | dev->sc_or));
+ if (dev->sc_or == 0x80)
+ kbd_log("F0 ");
+ kbd_log("%02X)\n", val);
+ } else
+ kbd_log("%02X\n", val);
#endif
-}
-static void
-kbc_queue_reset(uint8_t channel)
-{
- if (channel == 2) {
- mouse_queue_start = mouse_queue_end = 0;
- memset(mouse_queue, 0x00, sizeof(mouse_queue));
- } else if (channel == 1) {
- key_queue_start = key_queue_end = 0;
- memset(key_queue, 0x00, sizeof(key_queue));
- } else {
- key_ctrl_queue_start = key_ctrl_queue_end = 0;
- memset(key_ctrl_queue, 0x00, sizeof(key_ctrl_queue));
- }
-}
+ ret = translate ? (nont_to_t[val] | dev->sc_or) : val;
-static void
-kbc_queue_add(atkbd_t *dev, uint8_t val, uint8_t channel, uint8_t stat_hi)
-{
- uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
+ if (dev->sc_or == 0x80)
+ dev->sc_or = 0;
- if ((kbc_ven == KBC_VEN_AMI) || ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF))
- stat_hi |= ((dev->input_port & 0x80) ? 0x10 : 0x00);
- else
- stat_hi |= 0x10;
-
- dev->status = (dev->status & 0x0f) | stat_hi;
-
- if (channel == 2) {
- kbd_log("ATkbc: mouse_queue[%02X] = %02X;\n", mouse_queue_end, val);
- mouse_queue[mouse_queue_end] = val;
- mouse_queue_end = (mouse_queue_end + 1) & 0xf;
- } else if (channel == 1) {
- kbd_log("ATkbc: key_queue[%02X] = %02X;\n", key_queue_end, val);
- key_queue[key_queue_end] = val;
- key_queue_end = (key_queue_end + 1) & 0xf;
- } else {
- kbd_log("ATkbc: key_ctrl_queue[%02X] = %02X;\n", key_ctrl_queue_end, val);
- key_ctrl_queue[key_ctrl_queue_end] = val;
- key_ctrl_queue_end = (key_ctrl_queue_end + 1) & 0xf;
- }
+ return ret;
}
static void
add_to_kbc_queue_front(atkbd_t *dev, uint8_t val, uint8_t channel, uint8_t stat_hi)
{
uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
+ int temp = (channel == 1) ? kbc_translate(dev, val) : val;
- if ((kbc_ven == KBC_VEN_AMI) || ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF))
+ if (temp == -1)
+ return;
+
+ if ((kbc_ven == KBC_VEN_AMI) || (kbc_ven == KBC_VEN_TG) ||
+ (kbc_ven == KBC_VEN_TG_GREEN) || ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF))
stat_hi |= ((dev->input_port & 0x80) ? 0x10 : 0x00);
else
stat_hi |= 0x10;
- kbd_log("ATkbc: Adding %02X to front...\n", val);
- dev->wantirq = 0;
- if (channel == 2) {
- if (dev->mem[0] & 0x02)
- picint(0x1000);
- if (kbc_ven != KBC_VEN_OLIVETTI)
- dev->last_irq = 0x1000;
- } else {
- if (dev->mem[0] & 0x01)
- picint(2);
- if (kbc_ven != KBC_VEN_OLIVETTI)
- dev->last_irq = 2;
- }
- dev->out = val;
- if (channel == 2)
- dev->status = (dev->status & ~STAT_IFULL) | (STAT_OFULL | STAT_MFULL) | stat_hi;
- else
- dev->status = (dev->status & ~(STAT_IFULL | STAT_MFULL)) | STAT_OFULL | stat_hi;
- if (kbc_ven == KBC_VEN_OLIVETTI)
- dev->last_irq = 0x0000;
+ kbd_log("ATkbc: Adding %02X to front on channel %i...\n", temp, channel);
+ dev->status = (dev->status & ~0xf0) | STAT_OFULL | stat_hi;
+
+ /* WARNING: On PS/2, all IRQ's are level-triggered, but the IBM PS/2 KBC firmware is explicitly
+ written to pulse its P2 IRQ bits, so they should be kept as as edge-triggered here. */
+ if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ if (channel >= 2) {
+ dev->status |= STAT_MFULL;
+
+ if (dev->mem[0x20] & 0x02)
+ picint_common(1 << 12, 0, 1);
+ picint_common(1 << 1, 0, 0);
+ } else {
+ if (dev->mem[0x20] & 0x01)
+ picint_common(1 << 1, 0, 1);
+ picint_common(1 << 12, 0, 0);
+ }
+ } else if (dev->mem[0x20] & 0x01)
+ picintlevel(1 << 1); /* AT KBC: IRQ 1 is level-triggered because it is tied to OBF. */
+
+ dev->out = temp;
}
static void
-add_data_kbd_queue(atkbd_t *dev, int direct, uint8_t val)
+add_data_kbd_cmd_queue(atkbd_t *dev, uint8_t val)
{
- if ((!keyboard_scan && !direct) || (dev->reset_delay > 0) || (key_queue_end >= 16)) {
- kbd_log("ATkbc: Unable to add to queue, conditions: %i, %i, %i\n", !keyboard_scan, (dev->reset_delay > 0), (key_queue_end >= 16));
+ if (dev->key_cmd_queue_end >= 16) {
+ kbd_log("ATkbc: Unable to add to queue, dev->key_cmd_queue_end >= 16\n");
return;
}
- kbd_log("ATkbc: key_queue[%02X] = %02X;\n", key_queue_end, val);
- kbc_queue_add(dev, val, 1, 0x00);
- kbd_last_scan_code = val;
+ kbd_log("ATkbc: dev->key_cmd_queue[%02X] = %02X;\n", dev->key_cmd_queue_end, val);
+ kbc_queue_add(dev, val, 4);
+ dev->kbd_last_scan_code = val;
}
static void
-add_data_kbd_direct(atkbd_t *dev, uint8_t val)
+add_data_kbd_queue(atkbd_t *dev, uint8_t val)
{
- int xt_mode = (keyboard_mode & 0x20) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF);
- int translate = (keyboard_mode & 0x40);
- uint8_t send;
-
- if (dev->reset_delay)
+ if (!keyboard_scan || (dev->key_queue_end >= 16)) {
+ kbd_log("ATkbc: Unable to add to queue, conditions: %i, %i\n", !keyboard_scan, (dev->key_queue_end >= 16));
return;
-
- translate = translate || (keyboard_mode & 0x40) || xt_mode;
- translate = translate || ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_PS2_2);
-
- if (translate)
- send = nont_to_t[val];
- else
- send = val;
-
- add_data_kbd_queue(dev, 1, send);
+ }
+ kbd_log("ATkbc: key_queue[%02X] = %02X;\n", dev->key_queue_end, val);
+ kbc_queue_add(dev, val, 1);
+ dev->kbd_last_scan_code = val;
}
static void
-add_data_kbd_raw(atkbd_t *dev, uint8_t val)
+add_data_kbd_front(atkbd_t *dev, uint8_t val)
{
- add_data_kbd_queue(dev, 1, val);
+ add_data_kbd_cmd_queue(dev, val);
}
+static void kbd_process_cmd(void *priv);
+static void kbc_process_cmd(void *priv);
+
+static void
+set_enable_kbd(atkbd_t *dev, uint8_t enable)
+{
+ dev->mem[0x20] &= 0xef;
+ dev->mem[0x20] |= (enable ? 0x00 : 0x10);
+}
+
+static void
+set_enable_mouse(atkbd_t *dev, uint8_t enable)
+{
+ dev->mem[0x20] &= 0xdf;
+ dev->mem[0x20] |= (enable ? 0x00 : 0x20);
+}
+
+static void
+kbc_ibf_process(atkbd_t *dev)
+{
+ /* IBF set, process both commands and data. */
+ dev->status &= ~STAT_IFULL;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ if (dev->status & STAT_CD)
+ kbc_process_cmd(dev);
+ else {
+ set_enable_kbd(dev, 1);
+ dev->key_wantcmd = 1;
+ dev->key_dat = dev->ib;
+ dev->kbc_state = KBC_STATE_SEND_KBD;
+ }
+}
+
+static void
+kbc_scan_kbd_at(atkbd_t *dev)
+{
+ if (!(dev->mem[0x20] & 0x10)) {
+ /* Both OBF and IBF clear and keyboard is enabled. */
+ /* XT mode. */
+ if (dev->mem[0x20] & 0x20) {
+ if (dev->out_new != -1) {
+ add_to_kbc_queue_front(dev, dev->out_new, 1, 0x00);
+ dev->out_new = -1;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ } else if (dev->status & STAT_IFULL)
+ kbc_ibf_process(dev);
+ /* AT mode. */
+ } else {
+ // dev->t = dev->mem[0x28];
+ if (dev->mem[0x2e] != 0x00) {
+ // if (!(dev->t & 0x02))
+ // return;
+ dev->mem[0x2e] = 0x00;
+ }
+ dev->output_port &= 0xbf;
+ if (dev->out_new != -1) {
+ /* In our case, we never have noise on the line, so we can simplify this. */
+ /* Read data from the keyboard. */
+ if (dev->mem[0x20] & 0x40) {
+ if ((dev->mem[0x20] & 0x08) || (dev->input_port & 0x80))
+ add_to_kbc_queue_front(dev, dev->out_new, 1, 0x00);
+ dev->mem[0x2d] = (dev->out_new == 0xf0) ? 0x80 : 0x00;
+ } else
+ add_to_kbc_queue_front(dev, dev->out_new, 1, 0x00);
+ dev->out_new = -1;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ }
+ }
+ }
+}
+
+static void write_output(atkbd_t *dev, uint8_t val);
+
+static void
+kbc_poll_at(atkbd_t *dev)
+{
+ switch (dev->kbc_state) {
+ case KBC_STATE_RESET:
+ if (dev->status & STAT_IFULL) {
+ dev->status = ((dev->status & 0x0f) | 0x10) & ~STAT_IFULL;
+ if ((dev->status & STAT_CD) && (dev->ib == 0xaa))
+ kbc_process_cmd(dev);
+ }
+ break;
+ case KBC_STATE_MAIN_IBF:
+ default:
+ if (dev->status & STAT_OFULL) {
+ /* OBF set, wait until it is cleared but still process commands. */
+ if ((dev->status & STAT_IFULL) && (dev->status & STAT_CD)) {
+ dev->status &= ~STAT_IFULL;
+ kbc_process_cmd(dev);
+ }
+ } else if (dev->status & STAT_IFULL)
+ kbc_ibf_process(dev);
+ else if (!(dev->mem[0x20] & 0x10))
+ dev->kbc_state = KBC_STATE_MAIN_KBD;
+ break;
+ case KBC_STATE_MAIN_KBD:
+ case KBC_STATE_MAIN_BOTH:
+ if (dev->status & STAT_IFULL)
+ kbc_ibf_process(dev);
+ else {
+ (void) kbc_scan_kbd_at(dev);
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ }
+ break;
+ case KBC_STATE_KBC_OUT:
+ /* Keyboard controller command want to output multiple bytes. */
+ if (dev->status & STAT_IFULL) {
+ /* Data from host aborts dumping. */
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ kbc_ibf_process(dev);
+ }
+ /* Do not continue dumping until OBF is clear. */
+ if (!(dev->status & STAT_OFULL)) {
+ kbd_log("ATkbc: %02X coming from channel 0\n", dev->key_ctrl_queue[dev->key_ctrl_queue_start]);
+ add_to_kbc_queue_front(dev, dev->key_ctrl_queue[dev->key_ctrl_queue_start], 0, 0x00);
+ dev->key_ctrl_queue_start = (dev->key_ctrl_queue_start + 1) & 0x3f;
+ if (dev->key_ctrl_queue_start == dev->key_ctrl_queue_end)
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ }
+ break;
+ case KBC_STATE_KBC_PARAM:
+ /* Keyboard controller command wants data, wait for said data. */
+ if (dev->status & STAT_IFULL) {
+ /* Command written, abort current command. */
+ if (dev->status & STAT_CD)
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+
+ dev->status &= ~STAT_IFULL;
+ kbc_process_cmd(dev);
+ }
+ break;
+ case KBC_STATE_SEND_KBD:
+ if (!dev->key_wantcmd)
+ dev->kbc_state = KBC_STATE_SCAN_KBD;
+ break;
+ case KBC_STATE_SCAN_KBD:
+ kbc_scan_kbd_at(dev);
+ break;
+ }
+}
+
+/*
+ Correct Procedure:
+ 1. Controller asks the device (keyboard or mouse) for a byte.
+ 2. The device, unless it's in the reset or command states, sees if there's anything to give it,
+ and if yes, begins the transfer.
+ 3. The controller checks if there is a transfer, if yes, transfers the byte and sends it to the host,
+ otherwise, checks the next device, or if there is no device left to check, checks if IBF is full
+ and if yes, processes it.
+ */
+static int
+kbc_scan_kbd_ps2(atkbd_t *dev)
+{
+ if (dev->out_new != -1) {
+ kbd_log("ATkbc: %02X coming from channel 1\n", dev->out_new & 0xff);
+ add_to_kbc_queue_front(dev, dev->out_new, 1, 0x00);
+ dev->out_new = -1;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ return 1;
+ }
+
+ return 0;
+}
+
+static int
+kbc_scan_aux_ps2(atkbd_t *dev)
+{
+ if (dev->out_new_mouse != -1) {
+ kbd_log("ATkbc: %02X coming from channel 2\n", dev->out_new_mouse & 0xff);
+ add_to_kbc_queue_front(dev, dev->out_new_mouse, 2, 0x00);
+ dev->out_new_mouse = -1;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ return 1;
+ }
+
+ return 0;
+}
+
+static void
+kbc_poll_ps2(atkbd_t *dev)
+{
+ switch (dev->kbc_state) {
+ case KBC_STATE_RESET:
+ if (dev->status & STAT_IFULL) {
+ dev->status = ((dev->status & 0x0f) | 0x10) & ~STAT_IFULL;
+ if ((dev->status & STAT_CD) && (dev->ib == 0xaa))
+ kbc_process_cmd(dev);
+ }
+ break;
+ case KBC_STATE_MAIN_IBF:
+ default:
+ if (dev->status & STAT_IFULL)
+ kbc_ibf_process(dev);
+ else if (!(dev->status & STAT_OFULL)) {
+ if (dev->mem[0x20] & 0x20) {
+ if (!(dev->mem[0x20] & 0x10)) {
+ dev->output_port &= 0xbf;
+ dev->kbc_state = KBC_STATE_MAIN_KBD;
+ }
+ } else {
+ dev->output_port &= 0xf7;
+ if (dev->mem[0x20] & 0x10)
+ dev->kbc_state = KBC_STATE_MAIN_MOUSE;
+ else {
+ dev->output_port &= 0xbf;
+ dev->kbc_state = KBC_STATE_MAIN_BOTH;
+ }
+ }
+ }
+ break;
+ case KBC_STATE_MAIN_KBD:
+ if (dev->status & STAT_IFULL)
+ kbc_ibf_process(dev);
+ else {
+ (void) kbc_scan_kbd_ps2(dev);
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ }
+ break;
+ case KBC_STATE_MAIN_MOUSE:
+ if (dev->status & STAT_IFULL)
+ kbc_ibf_process(dev);
+ else {
+ (void) kbc_scan_aux_ps2(dev);
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ }
+ break;
+ case KBC_STATE_MAIN_BOTH:
+ if (kbc_scan_kbd_ps2(dev))
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ else
+ dev->kbc_state = KBC_STATE_MAIN_MOUSE;
+ break;
+ case KBC_STATE_KBC_OUT:
+ /* Keyboard controller command want to output multiple bytes. */
+ if (dev->status & STAT_IFULL) {
+ /* Data from host aborts dumping. */
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ kbc_ibf_process(dev);
+ }
+ /* Do not continue dumping until OBF is clear. */
+ if (!(dev->status & STAT_OFULL)) {
+ kbd_log("ATkbc: %02X coming from channel 0\n", dev->out_new & 0xff);
+ add_to_kbc_queue_front(dev, dev->key_ctrl_queue[dev->key_ctrl_queue_start], 0, 0x00);
+ dev->key_ctrl_queue_start = (dev->key_ctrl_queue_start + 1) & 0x3f;
+ if (dev->key_ctrl_queue_start == dev->key_ctrl_queue_end)
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ }
+ break;
+ case KBC_STATE_KBC_PARAM:
+ /* Keyboard controller command wants data, wait for said data. */
+ if (dev->status & STAT_IFULL) {
+ /* Command written, abort current command. */
+ if (dev->status & STAT_CD)
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+
+ dev->status &= ~STAT_IFULL;
+ kbc_process_cmd(dev);
+ }
+ break;
+ case KBC_STATE_SEND_KBD:
+ if (!dev->key_wantcmd)
+ dev->kbc_state = KBC_STATE_SCAN_KBD;
+ break;
+ case KBC_STATE_SCAN_KBD:
+ (void) kbc_scan_kbd_ps2(dev);
+ break;
+ case KBC_STATE_SEND_MOUSE:
+ if (!dev->mouse_wantcmd)
+ dev->kbc_state = KBC_STATE_SCAN_MOUSE;
+ break;
+ case KBC_STATE_SCAN_MOUSE:
+ (void) kbc_scan_aux_ps2(dev);
+ break;
+ }
+}
+
+static void
+kbc_poll_kbd(atkbd_t *dev)
+{
+ switch (dev->kbd_state) {
+ case DEV_STATE_MAIN_1:
+ /* Process the command if needed and then return to main loop #2. */
+ if (dev->key_wantcmd) {
+ kbd_log("ATkbc: Processing keyboard command %02X...\n", dev->key_dat);
+ kbc_queue_reset(dev, 4);
+ // dev->out_new = -1;
+ kbd_process_cmd(dev);
+ dev->key_wantcmd = 0;
+ } else
+ dev->kbd_state = DEV_STATE_MAIN_2;
+ break;
+ case DEV_STATE_MAIN_2:
+ /* Output from scan queue if needed and then return to main loop #1. */
+ if (keyboard_scan && (dev->out_new == -1) && (dev->key_queue_start != dev->key_queue_end)) {
+ kbd_log("ATkbc: %02X (DATA) on channel 1\n", dev->key_queue[dev->key_queue_start]);
+ dev->out_new = dev->key_queue[dev->key_queue_start];
+ dev->key_queue_start = (dev->key_queue_start + 1) & 0xf;
+ }
+ if (!keyboard_scan || dev->key_wantcmd)
+ dev->kbd_state = DEV_STATE_MAIN_1;
+ break;
+ case DEV_STATE_MAIN_OUT:
+ /* If host wants to send command while we're sending a byte to host, process the command. */
+ if (dev->key_wantcmd) {
+ kbd_log("ATkbc: Processing keyboard command %02X...\n", dev->key_dat);
+ kbc_queue_reset(dev, 4);
+ kbd_process_cmd(dev);
+ dev->key_wantcmd = 0;
+ break;
+ }
+ /* FALLTHROUGH */
+ case DEV_STATE_MAIN_WANT_IN:
+ /* Output command response and then wait for host data. */
+ if ((dev->out_new == -1) && (dev->key_cmd_queue_start != dev->key_cmd_queue_end)) {
+ kbd_log("ATkbc: %02X (CMD ) on channel 1\n", dev->key_cmd_queue[dev->key_cmd_queue_start]);
+ dev->out_new = dev->key_cmd_queue[dev->key_cmd_queue_start];
+ dev->key_cmd_queue_start = (dev->key_cmd_queue_start + 1) & 0xf;
+ }
+ if (dev->key_cmd_queue_start == dev->key_cmd_queue_end)
+ dev->kbd_state = (dev->kbd_state == DEV_STATE_MAIN_OUT) ? DEV_STATE_MAIN_2 : DEV_STATE_MAIN_IN;
+ break;
+ case DEV_STATE_MAIN_IN:
+ /* Wait for host data. */
+ if (dev->key_wantcmd) {
+ kbd_log("ATkbc: Processing keyboard command %02X parameter %02X...\n", dev->key_command, dev->key_dat);
+ kbc_queue_reset(dev, 4);
+ // dev->out_new = -1;
+ kbd_process_cmd(dev);
+ dev->key_wantcmd = 0;
+ }
+ break;
+ }
+}
+
+static void
+kbc_poll_aux(atkbd_t *dev)
+{
+ switch (dev->mouse_state) {
+ case DEV_STATE_MAIN_1:
+ /* Process the command if needed and then return to main loop #2. */
+ if (dev->mouse_wantcmd) {
+ kbd_log("ATkbc: Processing mouse command %02X...\n", dev->mouse_dat);
+ kbc_queue_reset(dev, 3);
+ // dev->out_new_mouse = -1;
+ dev->mouse_state = DEV_STATE_MAIN_OUT;
+ mouse_write(dev->mouse_dat, mouse_p);
+ if ((dev->mouse_dat == 0xe8) || (dev->mouse_dat == 0xf3))
+ dev->mouse_state = DEV_STATE_MAIN_WANT_IN;
+ dev->mouse_wantcmd = 0;
+ } else
+ dev->mouse_state = DEV_STATE_MAIN_2;
+ break;
+ case DEV_STATE_MAIN_2:
+ /* Output from scan queue if needed and then return to main loop #1. */
+ if (mouse_scan && (dev->out_new_mouse == -1) && (dev->mouse_queue_start != dev->mouse_queue_end)) {
+ kbd_log("ATkbc: %02X (DATA) on channel 2\n", dev->mouse_queue[dev->mouse_queue_start]);
+ dev->out_new_mouse = dev->mouse_queue[dev->mouse_queue_start];
+ dev->mouse_queue_start = (dev->mouse_queue_start + 1) & 0xf;
+ }
+ if (!mouse_scan || dev->mouse_wantcmd)
+ dev->mouse_state = DEV_STATE_MAIN_1;
+ break;
+ case DEV_STATE_MAIN_OUT:
+ /* If host wants to send command while we're sending a byte to host, process the command. */
+ if (dev->mouse_wantcmd) {
+ kbd_log("ATkbc: Processing mouse command %02X...\n", dev->mouse_dat);
+ kbc_queue_reset(dev, 3);
+ dev->mouse_state = DEV_STATE_MAIN_OUT;
+ mouse_write(dev->mouse_dat, mouse_p);
+ if ((dev->mouse_dat == 0xe8) || (dev->mouse_dat == 0xf3))
+ dev->mouse_state = DEV_STATE_MAIN_WANT_IN;
+ dev->mouse_wantcmd = 0;
+ break;
+ }
+ /* FALLTHROUGH */
+ case DEV_STATE_MAIN_WANT_IN:
+ /* Output command response and then wait for host data. */
+ if ((dev->out_new_mouse == -1) && (dev->mouse_cmd_queue_start != dev->mouse_cmd_queue_end)) {
+ kbd_log("ATkbc: %02X (CMD ) on channel 2\n", dev->mouse_cmd_queue[dev->mouse_cmd_queue_start]);
+ dev->out_new_mouse = dev->mouse_cmd_queue[dev->mouse_cmd_queue_start];
+ dev->mouse_cmd_queue_start = (dev->mouse_cmd_queue_start + 1) & 0xf;
+ }
+ if (dev->mouse_cmd_queue_start == dev->mouse_cmd_queue_end)
+ dev->mouse_state = (dev->mouse_state == DEV_STATE_MAIN_OUT) ? DEV_STATE_MAIN_2 : DEV_STATE_MAIN_IN;
+ break;
+ case DEV_STATE_MAIN_IN:
+ /* Wait for host data. */
+ if (dev->mouse_wantcmd) {
+ kbd_log("ATkbc: Processing mouse command parameter %02X...\n", dev->mouse_dat);
+ kbc_queue_reset(dev, 3);
+ // dev->out_new_mouse = -1;
+ dev->mouse_state = DEV_STATE_MAIN_OUT;
+ mouse_write(dev->mouse_dat, mouse_p);
+ dev->mouse_wantcmd = 0;
+ }
+ break;
+ }
+}
+
+/* TODO: State machines for controller, keyboard, and mouse. */
static void
kbd_poll(void *priv)
{
atkbd_t *dev = (atkbd_t *) priv;
-#ifdef ENABLE_KEYBOARD_AT_LOG
- const uint8_t channels[4] = { 1, 2, 0, 0 };
-#endif
timer_advance_u64(&dev->send_delay_timer, (100ULL * TIMER_USEC));
- if (dev->out_new != -1 && !dev->last_irq) {
- dev->wantirq = 0;
- if (dev->out_new & 0x100) {
- if (dev->mem[0] & 0x02)
- picint(0x1000);
- kbd_log("ATkbc: %02X coming from channel 2\n");
- dev->out = dev->out_new & 0xff;
- dev->out_new = -1;
- dev->status = (dev->status & ~STAT_IFULL) | (STAT_OFULL | STAT_MFULL);
- dev->last_irq = 0x1000;
- } else {
- if (dev->mem[0] & 0x01)
- picint(2);
- kbd_log("ATkbc: %02X coming from channel %i\n", dev->out_new & 0xff, channels[(dev->out_new >> 8) & 0x03]);
- dev->out = dev->out_new & 0xff;
- dev->out_new = -1;
- dev->status = (dev->status & ~(STAT_IFULL | STAT_MFULL)) | STAT_OFULL;
- dev->last_irq = 2;
- }
- }
+ /* TODO: Use a fuction pointer for this (also needed to the AMI KBC mode switching)
+ and implement the password security state. */
+ if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF)
+ kbc_poll_ps2(dev);
+ else
+ kbc_poll_at(dev);
- if (dev->out_new == -1 && !(dev->status & STAT_OFULL) && key_ctrl_queue_start != key_ctrl_queue_end) {
- kbd_log("ATkbc: %02X on channel 0\n", key_ctrl_queue[key_ctrl_queue_start]);
- dev->out_new = key_ctrl_queue[key_ctrl_queue_start] | 0x200;
- key_ctrl_queue_start = (key_ctrl_queue_start + 1) & 0xf;
- } else if (!(dev->status & STAT_OFULL) && dev->out_new == -1 && dev->out_delayed != -1) {
- kbd_log("ATkbc: %02X delayed on channel %i\n", dev->out_delayed & 0xff, channels[(dev->out_delayed >> 8) & 0x03]);
- dev->out_new = dev->out_delayed;
- dev->out_delayed = -1;
- } else if (!(dev->status & STAT_OFULL) && dev->out_new == -1 && mouse_queue_start != mouse_queue_end) {
- kbd_log("ATkbc: %02X on channel 2\n", mouse_queue[mouse_queue_start]);
- dev->out_new = mouse_queue[mouse_queue_start] | 0x100;
- mouse_queue_start = (mouse_queue_start + 1) & 0xf;
- } else if (!(dev->status & STAT_OFULL) && dev->out_new == -1 && !(dev->mem[0] & 0x10) && key_queue_start != key_queue_end) {
- kbd_log("ATkbc: %02X on channel 1\n", key_queue[key_queue_start]);
- dev->out_new = key_queue[key_queue_start];
- key_queue_start = (key_queue_start + 1) & 0xf;
- }
+ kbc_poll_kbd(dev);
- if (dev->reset_delay) {
- dev->reset_delay--;
- if (!dev->reset_delay) {
- kbd_log("ATkbc: Sending AA on keyboard reset...\n");
- add_data_kbd_direct(dev, 0xaa);
- }
- }
-}
+ if (((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) && mouse_write)
+ kbc_poll_aux(dev);
-static void
-add_data(atkbd_t *dev, uint8_t val)
-{
- kbd_log("ATkbc: add to queue\n");
+ // if (kbc_ports[0] && kbc_ports[0]>-priv)
+ // kbc_ports[0]>poll(kbc_ports[0]>-priv);
- kbd_log("ATkbc: key_ctrl_queue[%02X] = %02X;\n", key_ctrl_queue_end, val);
- kbc_queue_add(dev, val, 0, 0x00);
-
- if (!(dev->out_new & 0x300)) {
- dev->out_delayed = dev->out_new;
- dev->out_new = -1;
- }
+ // if (((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) && kbc_ports[1] && kbc_ports[1]>-priv)
+ // kbc_ports[1]>poll(kbc_ports[1]>-priv);
}
static void
add_data_vals(atkbd_t *dev, uint8_t *val, uint8_t len)
{
- int xt_mode = (keyboard_mode & 0x20) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF);
- int translate = (keyboard_mode & 0x40);
int i;
- uint8_t or = 0;
- uint8_t send;
- if (dev->reset_delay)
- return;
-
- translate = translate || (keyboard_mode & 0x40) || xt_mode;
- translate = translate || ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_PS2_2);
-
- for (i = 0; i < len; i++) {
- if (translate) {
- if (val[i] == 0xf0) {
- or = 0x80;
- continue;
- }
- send = nont_to_t[val[i]] | or ;
- if (or == 0x80)
- or = 0;
- } else
- send = val[i];
-
- add_data_kbd_queue(dev, 0, send);
- }
+ for (i = 0; i < len; i++)
+ add_data_kbd_queue(dev, val[i]);
}
static void
add_data_kbd(uint16_t val)
{
atkbd_t *dev = SavedKbd;
- int xt_mode = (keyboard_mode & 0x20) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF);
- int translate = (keyboard_mode & 0x40);
uint8_t fake_shift[4];
uint8_t num_lock = 0, shift_states = 0;
- uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
-
- if (dev->reset_delay)
- return;
-
- translate = translate || (keyboard_mode & 0x40) || xt_mode;
- translate = translate || ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_PS2_2);
keyboard_get_states(NULL, &num_lock, NULL);
shift_states = keyboard_get_shift() & STATE_SHIFT_MASK;
- /* Allow for scan code translation. */
- if (translate && (val == 0xf0)) {
- kbd_log("ATkbd: translate is on, F0 prefix detected\n");
- sc_or = 0x80;
- return;
- }
-
- /* Skip break code if translated make code has bit 7 set. */
- if (translate && (sc_or == 0x80) && (val & 0x80)) {
- kbd_log("ATkbd: translate is on, skipping scan code: %02X (original: F0 %02X)\n", nont_to_t[val], val);
- sc_or = 0;
- return;
- }
-
- /* Test for T3100E 'Fn' key (Right Alt / Right Ctrl) */
- if ((dev != NULL) && (kbc_ven == KBC_VEN_TOSHIBA) && (keyboard_recv(0x138) || keyboard_recv(0x11d)))
- switch (val) {
- case 0x4f:
- t3100e_notify_set(0x01);
- break; /* End */
- case 0x50:
- t3100e_notify_set(0x02);
- break; /* Down */
- case 0x51:
- t3100e_notify_set(0x03);
- break; /* PgDn */
- case 0x52:
- t3100e_notify_set(0x04);
- break; /* Ins */
- case 0x53:
- t3100e_notify_set(0x05);
- break; /* Del */
- case 0x54:
- t3100e_notify_set(0x06);
- break; /* SysRQ */
- case 0x45:
- t3100e_notify_set(0x07);
- break; /* NumLock */
- case 0x46:
- t3100e_notify_set(0x08);
- break; /* ScrLock */
- case 0x47:
- t3100e_notify_set(0x09);
- break; /* Home */
- case 0x48:
- t3100e_notify_set(0x0a);
- break; /* Up */
- case 0x49:
- t3100e_notify_set(0x0b);
- break; /* PgUp */
- case 0x4A:
- t3100e_notify_set(0x0c);
- break; /* Keypad -*/
- case 0x4B:
- t3100e_notify_set(0x0d);
- break; /* Left */
- case 0x4C:
- t3100e_notify_set(0x0e);
- break; /* KP 5 */
- case 0x4D:
- t3100e_notify_set(0x0f);
- break; /* Right */
- }
-
- kbd_log("ATkbd: translate is %s, ", translate ? "on" : "off");
switch (val) {
case FAKE_LSHIFT_ON:
kbd_log("fake left shift on, scan code: ");
@@ -1063,23 +1470,9 @@ add_data_kbd(uint16_t val)
break;
default:
-#ifdef ENABLE_KEYBOARD_AT_LOG
- kbd_log("scan code: ");
- if (translate) {
- kbd_log("%02X (original: ", (nont_to_t[val] | sc_or));
- if (sc_or == 0x80)
- kbd_log("F0 ");
- kbd_log("%02X)\n", val);
- } else
- kbd_log("%02X\n", val);
-#endif
-
- add_data_kbd_queue(dev, 0, translate ? (nont_to_t[val] | sc_or) : val);
+ add_data_kbd_queue(dev, val);
break;
}
-
- if (sc_or == 0x80)
- sc_or = 0;
}
static void
@@ -1089,31 +1482,26 @@ write_output(atkbd_t *dev, uint8_t val)
kbd_log("ATkbc: write output port: %02X (old: %02X)\n", val, dev->output_port);
uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
- if ((kbc_ven != KBC_VEN_OLIVETTI) && ((kbc_ven == KBC_VEN_AMI) || ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF)))
- val |= ((dev->mem[0] << 4) & 0x10);
- /*IRQ 12*/
- if ((old ^ val) & 0x20) {
- if (val & 0x20)
- picint(1 << 12);
- else
- picintc(1 << 12);
+#if 0
+ /* PS/2: Handle IRQ's. */
+ if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ /* IRQ 12 */
+ picint_common(1 << 12, 0, val & 0x20);
+
+ /* IRQ 1 */
+ picint_common(1 << 1, 0, val & 0x10);
}
+#endif
- /*IRQ 1*/
- if ((old ^ val) & 0x10) {
- if (val & 0x10)
- picint(1 << 1);
- else
- picintc(1 << 1);
- }
-
- if ((old ^ val) & 0x02) { /*A20 enable change*/
+ /* AT, PS/2: Handle A20. */
+ if ((old ^ val) & 0x02) { /* A20 enable change */
mem_a20_key = val & 0x02;
mem_a20_recalc();
flushmmucache();
}
+ /* AT, PS/2: Handle reset. */
/* 0 holds the CPU in the RESET state, 1 releases it. To simplify this,
we just do everything on release. */
if ((old ^ val) & 0x01) { /*Reset*/
@@ -1141,44 +1529,45 @@ write_output(atkbd_t *dev, uint8_t val)
dev->output_port = val;
}
+static void
+write_output_fast_a20(atkbd_t *dev, uint8_t val)
+{
+ uint8_t old = dev->output_port;
+ kbd_log("ATkbc: write output port in fast A20 mode: %02X (old: %02X)\n", val, dev->output_port);
+
+ /* AT, PS/2: Handle A20. */
+ if ((old ^ val) & 0x02) { /* A20 enable change */
+ mem_a20_key = val & 0x02;
+ mem_a20_recalc();
+ flushmmucache();
+ }
+
+ /* Do this here to avoid an infinite reset loop. */
+ dev->output_port = val;
+}
+
static void
write_cmd(atkbd_t *dev, uint8_t val)
{
- uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
- kbd_log("ATkbc: write command byte: %02X (old: %02X)\n", val, dev->mem[0]);
-
- if ((val & 1) && (dev->status & STAT_OFULL))
- dev->wantirq = 1;
- if (!(val & 1) && dev->wantirq)
- dev->wantirq = 0;
+ kbd_log("ATkbc: write command byte: %02X (old: %02X)\n", val, dev->mem[0x20]);
/* PS/2 type 2 keyboard controllers always force the XLAT bit to 0. */
if ((dev->flags & KBC_TYPE_MASK) == KBC_TYPE_PS2_2) {
val &= ~CCB_TRANSLATE;
- dev->mem[0] &= ~CCB_TRANSLATE;
+ dev->mem[0x20] &= ~CCB_TRANSLATE;
+ } else if ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) {
+ if (val & 0x10)
+ dev->mem[0x2e] = 0x01;
}
- /* Scan code translate ON/OFF. */
- keyboard_mode &= 0x93;
- keyboard_mode |= (val & MODE_MASK);
-
kbd_log("ATkbc: keyboard interrupt is now %s\n", (val & 0x01) ? "enabled" : "disabled");
- /* ISA AT keyboard controllers use bit 5 for keyboard mode (1 = PC/XT, 2 = AT);
- PS/2 (and EISA/PCI) keyboard controllers use it as the PS/2 mouse enable switch.
- The AMIKEY firmware apparently uses this bit for something else. */
- if ((kbc_ven == KBC_VEN_AMI) || ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF)) {
- keyboard_mode &= ~CCB_PCMODE;
-
- kbd_log("ATkbc: mouse interrupt is now %s\n", (val & 0x02) ? "enabled" : "disabled");
+ if ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) {
+ /* Update the output port to mirror the IBF and OBF bits, if active. */
+ write_output(dev, (dev->output_port & 0x0f) | ((val & 0x03) << 4) | ((val & 0x20) ? 0xc0 : 0x00));
}
- if ((kbc_ven == KBC_VEN_AMI) || ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF)) {
- /* Update the output port to mirror the KBD DIS and AUX DIS bits, if active. */
- write_output(dev, dev->output_port);
- }
-
- kbd_log("Command byte now: %02X (%02X)\n", dev->mem[0], val);
+ kbd_log("Command byte now: %02X (%02X)\n", dev->mem[0x20], val);
dev->status = (dev->status & ~STAT_SYSFLAG) | (val & STAT_SYSFLAG);
}
@@ -1203,20 +1592,6 @@ pulse_poll(void *priv)
write_output(dev, dev->output_port | dev->old_output_port);
}
-static void
-set_enable_kbd(atkbd_t *dev, uint8_t enable)
-{
- dev->mem[0] &= 0xef;
- dev->mem[0] |= (enable ? 0x00 : 0x10);
-}
-
-static void
-set_enable_mouse(atkbd_t *dev, uint8_t enable)
-{
- dev->mem[0] &= 0xdf;
- dev->mem[0] |= (enable ? 0x00 : 0x20);
-}
-
static uint8_t
write64_generic(void *priv, uint8_t val)
{
@@ -1229,7 +1604,7 @@ write64_generic(void *priv, uint8_t val)
case 0xa4: /* check if password installed */
if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
kbd_log("ATkbc: check if password installed\n");
- add_data(dev, 0xf1);
+ add_to_kbc_queue_front(dev, 0xf1, 0, 0x00);
return 0;
}
break;
@@ -1253,14 +1628,14 @@ write64_generic(void *priv, uint8_t val)
case 0xa9: /*Test mouse port*/
kbd_log("ATkbc: test mouse port\n");
if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
- add_data(dev, 0x00); /* no error, this is testing the channel 2 interface */
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00); /* no error, this is testing the channel 2 interface */
return 0;
}
break;
case 0xaf: /* read keyboard version */
kbd_log("ATkbc: read keyboard version\n");
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x42, 0, 0x00);
return 0;
case 0xc0: /* read input port */
@@ -1289,14 +1664,24 @@ write64_generic(void *priv, uint8_t val)
0, 0x00);
dev->input_port = ((dev->input_port + 1) & 3) | (dev->input_port & 0xfc);
} else {
- if (((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) && ((dev->flags & KBC_VEN_MASK) != KBC_VEN_INTEL_AMI))
+ if ((kbc_ven == KBC_VEN_TG) || (kbc_ven == KBC_VEN_TG_GREEN)) {
+ /* Bit 3, 2:
+ 1, 1: TriGem logo;
+ 1, 0: Garbled logo;
+ 0, 1: Epson logo;
+ 0, 0: Generic AMI logo. */
+ if (dev->pci)
+ fixed_bits |= 8;
+ add_to_kbc_queue_front(dev, dev->input_port | fixed_bits, 0, 0x00);
+ } else if (((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) && ((dev->flags & KBC_VEN_MASK) != KBC_VEN_INTEL_AMI))
#if 0
add_to_kbc_queue_front(dev, (dev->input_port | fixed_bits) &
(((dev->flags & KBC_VEN_MASK) == KBC_VEN_ACER) ? 0xeb : 0xef), 0, 0x00);
#else
add_to_kbc_queue_front(dev, ((dev->input_port | fixed_bits) & 0xf0) | (((dev->flags & KBC_VEN_MASK) == KBC_VEN_ACER) ? 0x08 : 0x0c), 0, 0x00);
#endif
- else add_to_kbc_queue_front(dev, dev->input_port | fixed_bits, 0, 0x00);
+ else
+ add_to_kbc_queue_front(dev, dev->input_port | fixed_bits, 0, 0x00);
dev->input_port = ((dev->input_port + 1) & 3) | (dev->input_port & 0xfc);
}
return 0;
@@ -1305,6 +1690,7 @@ write64_generic(void *priv, uint8_t val)
if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
kbd_log("ATkbc: write mouse output buffer\n");
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
return 0;
}
break;
@@ -1312,24 +1698,10 @@ write64_generic(void *priv, uint8_t val)
case 0xd4: /* write to mouse */
kbd_log("ATkbc: write to mouse\n");
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
return 0;
- case 0xf0:
- case 0xf1:
- case 0xf2:
- case 0xf3:
- case 0xf4:
- case 0xf5:
- case 0xf6:
- case 0xf7:
- case 0xf8:
- case 0xf9:
- case 0xfa:
- case 0xfb:
- case 0xfc:
- case 0xfd:
- case 0xfe:
- case 0xff:
+ case 0xf0 ... 0xff:
kbd_log("ATkbc: pulse %01X\n", val & 0x0f);
pulse_output(dev, val & 0x0f);
return 0;
@@ -1346,49 +1718,24 @@ write60_ami(void *priv, uint8_t val)
switch (dev->command) {
/* 0x40 - 0x5F are aliases for 0x60-0x7F */
- case 0x40:
- case 0x41:
- case 0x42:
- case 0x43:
- case 0x44:
- case 0x45:
- case 0x46:
- case 0x47:
- case 0x48:
- case 0x49:
- case 0x4a:
- case 0x4b:
- case 0x4c:
- case 0x4d:
- case 0x4e:
- case 0x4f:
- case 0x50:
- case 0x51:
- case 0x52:
- case 0x53:
- case 0x54:
- case 0x55:
- case 0x56:
- case 0x57:
- case 0x58:
- case 0x59:
- case 0x5a:
- case 0x5b:
- case 0x5c:
- case 0x5d:
- case 0x5e:
- case 0x5f:
+ case 0x40 ... 0x5f:
kbd_log("ATkbc: AMI - alias write to %08X\n", dev->command);
- dev->mem[dev->command & 0x1f] = val;
+ dev->mem[(dev->command & 0x1f) + 0x20] = val;
if (dev->command == 0x60)
write_cmd(dev, val);
return 0;
+ case 0xa5: /* get extended controller RAM */
+ kbd_log("ATkbc: AMI - get extended controller RAM\n");
+ add_to_kbc_queue_front(dev, dev->mem[val], 0, 0x00);
+ return 0;
+
case 0xaf: /* set extended controller RAM */
kbd_log("ATkbc: AMI - set extended controller RAM\n");
if (dev->secr_phase == 1) {
dev->mem_addr = val;
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
dev->secr_phase = 2;
} else if (dev->secr_phase == 2) {
dev->mem[dev->mem_addr] = val;
@@ -1417,101 +1764,54 @@ write64_ami(void *priv, uint8_t val)
uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
switch (val) {
- case 0x00:
- case 0x01:
- case 0x02:
- case 0x03:
- case 0x04:
- case 0x05:
- case 0x06:
- case 0x07:
- case 0x08:
- case 0x09:
- case 0x0a:
- case 0x0b:
- case 0x0c:
- case 0x0d:
- case 0x0e:
- case 0x0f:
- case 0x10:
- case 0x11:
- case 0x12:
- case 0x13:
- case 0x14:
- case 0x15:
- case 0x16:
- case 0x17:
- case 0x18:
- case 0x19:
- case 0x1a:
- case 0x1b:
- case 0x1c:
- case 0x1d:
- case 0x1e:
- case 0x1f:
+ case 0x00 ... 0x1f:
kbd_log("ATkbc: AMI - alias read from %08X\n", val);
- add_data(dev, dev->mem[val]);
+ add_to_kbc_queue_front(dev, dev->mem[val + 0x20], 0, 0x00);
return 0;
- case 0x40:
- case 0x41:
- case 0x42:
- case 0x43:
- case 0x44:
- case 0x45:
- case 0x46:
- case 0x47:
- case 0x48:
- case 0x49:
- case 0x4a:
- case 0x4b:
- case 0x4c:
- case 0x4d:
- case 0x4e:
- case 0x4f:
- case 0x50:
- case 0x51:
- case 0x52:
- case 0x53:
- case 0x54:
- case 0x55:
- case 0x56:
- case 0x57:
- case 0x58:
- case 0x59:
- case 0x5a:
- case 0x5b:
- case 0x5c:
- case 0x5d:
- case 0x5e:
- case 0x5f:
+ case 0x40 ... 0x5f:
kbd_log("ATkbc: AMI - alias write to %08X\n", dev->command);
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
return 0;
case 0xa0: /* copyright message */
- add_data(dev, 0x28);
- add_data(dev, 0x00);
+ kbc_queue_add(dev, 0x28, 0);
+ kbc_queue_add(dev, 0x00, 0);
+ dev->kbc_state = KBC_STATE_KBC_OUT;
break;
case 0xa1: /* get controller version */
kbd_log("ATkbc: AMI - get controller version\n");
- if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ if ((kbc_ven == KBC_VEN_TG) || (kbc_ven == KBC_VEN_TG_GREEN))
+ add_to_kbc_queue_front(dev, 'Z', 0, 0x00);
+ else if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
if (kbc_ven == KBC_VEN_ALI)
- add_data(dev, 'F');
+ add_to_kbc_queue_front(dev, 'F', 0, 0x00);
else if ((dev->flags & KBC_VEN_MASK) == KBC_VEN_INTEL_AMI)
- add_data(dev, '5');
+ add_to_kbc_queue_front(dev, '5', 0, 0x00);
+ else if (cpu_64bitbus)
+ add_to_kbc_queue_front(dev, 'R', 0, 0x00);
+ else if (is486)
+ add_to_kbc_queue_front(dev, 'P', 0, 0x00);
else
- add_data(dev, 'H');
- } else
- add_data(dev, 'F');
+ add_to_kbc_queue_front(dev, 'H', 0, 0x00);
+ } else if (is386 && !is486) {
+ if (cpu_16bitbus)
+ add_to_kbc_queue_front(dev, 'D', 0, 0x00);
+ else
+ add_to_kbc_queue_front(dev, 'B', 0, 0x00);
+ } else if (!is386)
+ add_to_kbc_queue_front(dev, '8', 0, 0x00);
+ else
+ add_to_kbc_queue_front(dev, 'F', 0, 0x00);
return 0;
case 0xa2: /* clear keyboard controller lines P22/P23 */
if ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) {
kbd_log("ATkbc: AMI - clear KBC lines P22 and P23\n");
write_output(dev, dev->output_port & 0xf3);
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
}
break;
@@ -1520,7 +1820,7 @@ write64_ami(void *priv, uint8_t val)
if ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) {
kbd_log("ATkbc: AMI - set KBC lines P22 and P23\n");
write_output(dev, dev->output_port | 0x0c);
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
}
break;
@@ -1537,9 +1837,12 @@ write64_ami(void *priv, uint8_t val)
if ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) {
kbd_log("ATkbc: AMI - write clock = high\n");
dev->ami_stat |= 0x01;
- return 0;
+ } else {
+ kbd_log("ATkbc: get extended controller RAM\n");
+ dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
}
- break;
+ return 0;
case 0xa6: /* read clock */
if ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) {
@@ -1580,67 +1883,61 @@ write64_ami(void *priv, uint8_t val)
} else {
kbd_log("ATkbc: set extended controller RAM\n");
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
dev->secr_phase = 1;
}
return 0;
- case 0xb0:
- case 0xb1:
- case 0xb2:
- case 0xb3:
+ case 0xb0 ... 0xb3:
/* set KBC lines P10-P13 (input port bits 0-3) low */
kbd_log("ATkbc: set KBC lines P10-P13 (input port bits 0-3) low\n");
if (!(dev->flags & DEVICE_PCI) || (val > 0xb1))
dev->input_port &= ~(1 << (val & 0x03));
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
- case 0xb4:
- case 0xb5:
+ case 0xb4: case 0xb5:
/* set KBC lines P22-P23 (output port bits 2-3) low */
kbd_log("ATkbc: set KBC lines P22-P23 (output port bits 2-3) low\n");
if (!(dev->flags & DEVICE_PCI))
write_output(dev, dev->output_port & ~(4 << (val & 0x01)));
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
- case 0xb8:
- case 0xb9:
- case 0xba:
- case 0xbb:
+ case 0xb8 ... 0xbb:
/* set KBC lines P10-P13 (input port bits 0-3) high */
kbd_log("ATkbc: set KBC lines P10-P13 (input port bits 0-3) high\n");
if (!(dev->flags & DEVICE_PCI) || (val > 0xb9)) {
dev->input_port |= (1 << (val & 0x03));
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
}
return 0;
- case 0xbc:
- case 0xbd:
+ case 0xbc: case 0xbd:
/* set KBC lines P22-P23 (output port bits 2-3) high */
kbd_log("ATkbc: set KBC lines P22-P23 (output port bits 2-3) high\n");
if (!(dev->flags & DEVICE_PCI))
write_output(dev, dev->output_port | (4 << (val & 0x01)));
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
case 0xc1: /* write input port */
kbd_log("ATkbc: AMI MegaKey - write input port\n");
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
return 0;
case 0xc4:
/* set KBC line P14 low */
kbd_log("ATkbc: set KBC line P14 (input port bit 4) low\n");
dev->input_port &= 0xef;
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
case 0xc5:
/* set KBC line P15 low */
kbd_log("ATkbc: set KBC line P15 (input port bit 5) low\n");
dev->input_port &= 0xdf;
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
case 0xc8:
@@ -1665,13 +1962,13 @@ write64_ami(void *priv, uint8_t val)
/* set KBC line P14 high */
kbd_log("ATkbc: set KBC line P14 (input port bit 4) high\n");
dev->input_port |= 0x10;
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
case 0xcd:
/* set KBC line P15 high */
kbd_log("ATkbc: set KBC line P15 (input port bit 5) high\n");
dev->input_port |= 0x20;
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
case 0xef: /* ??? - sent by AMI486 */
@@ -1704,22 +2001,7 @@ write64_ibm_mca(void *priv, uint8_t val)
kbd_log("ATkbc: bad KBC command AF\n");
return 1;
- case 0xf0:
- case 0xf1:
- case 0xf2:
- case 0xf3:
- case 0xf4:
- case 0xf5:
- case 0xf6:
- case 0xf7:
- case 0xf8:
- case 0xf9:
- case 0xfa:
- case 0xfb:
- case 0xfc:
- case 0xfd:
- case 0xfe:
- case 0xff:
+ case 0xf0 ... 0xff:
kbd_log("ATkbc: pulse: %01X\n", (val & 0x03) | 0x0c);
pulse_output(dev, (val & 0x03) | 0x0c);
return 0;
@@ -1777,6 +2059,7 @@ write64_quadtel(void *priv, uint8_t val)
case 0xcf: /*??? - sent by MegaPC BIOS*/
kbd_log("ATkbc: ??? - sent by MegaPC BIOS\n");
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
return 0;
}
@@ -1830,17 +2113,18 @@ write64_toshiba(void *priv, uint8_t val)
case 0xb4: /* T3100e: Get configuration / status */
kbd_log("ATkbc: T3100e: Get configuration / status\n");
- add_data(dev, t3100e_config_get());
+ add_to_kbc_queue_front(dev, t3100e_config_get(), 0, 0x00);
return 0;
case 0xb5: /* T3100e: Get colour / mono byte */
kbd_log("ATkbc: T3100e: Get colour / mono byte\n");
- add_data(dev, t3100e_mono_get());
+ add_to_kbc_queue_front(dev, t3100e_mono_get(), 0, 0x00);
return 0;
case 0xb6: /* T3100e: Set colour / mono byte */
kbd_log("ATkbc: T3100e: Set colour / mono byte\n");
dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
return 0;
case 0xb7: /* T3100e: Emulate PS/2 keyboard */
@@ -1862,9 +2146,9 @@ write64_toshiba(void *priv, uint8_t val)
kbd_log("ATkbc: T3100e: Read 'Fn' key\n");
if (keyboard_recv(0xb8) || /* Right Alt */
keyboard_recv(0x9d)) /* Right Ctrl */
- add_data(dev, 0x04);
+ add_to_kbc_queue_front(dev, 0x04, 0, 0x00);
else
- add_data(dev, 0x00);
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
return 0;
case 0xbc: /* T3100e: Reset Fn+Key notification */
@@ -1878,7 +2162,7 @@ write64_toshiba(void *priv, uint8_t val)
/* The T3100e returns all bits set except bit 6 which
* is set by t3100e_mono_set() */
dev->input_port = (t3100e_mono_get() & 1) ? 0xff : 0xbf;
- add_data(dev, dev->input_port);
+ add_to_kbc_queue_front(dev, dev->input_port, 0, 0x00);
return 0;
}
@@ -1886,483 +2170,531 @@ write64_toshiba(void *priv, uint8_t val)
}
static void
-kbd_write(uint16_t port, uint8_t val, void *priv)
+kbd_key_reset(atkbd_t *dev, int do_fa)
+{
+ dev->out_new = -1;
+ kbc_queue_reset(dev, 1);
+
+ dev->kbd_last_scan_code = 0x00;
+
+ /* Set scan code set to 2. */
+ keyboard_mode = 0x02;
+ set_scancode_map(dev);
+
+ /* The BAT enables scanning. */
+ keyboard_scan = 1;
+
+ dev->sc_or = 0;
+
+ if (do_fa)
+ add_data_kbd_front(dev, 0xfa);
+ add_data_kbd_front(dev, 0xaa);
+
+ if (!do_fa)
+ dev->kbd_state = DEV_STATE_MAIN_OUT;
+}
+
+static void
+kbd_aux_reset(atkbd_t *dev, int do_fa)
+{
+ dev->out_new_mouse = -1;
+ kbc_queue_reset(dev, 2);
+
+ /* The BAT enables scanning. */
+ mouse_scan = 1;
+
+ if (!do_fa) {
+ add_data_kbd_front(dev, 0xaa);
+ add_data_kbd_front(dev, 0x00);
+
+ dev->mouse_state = DEV_STATE_MAIN_OUT;
+ }
+}
+
+void
+keyboard_at_mouse_reset(void)
+{
+ atkbd_t *dev = SavedKbd;
+
+ kbd_aux_reset(dev, 1);
+}
+
+static void
+kbd_process_cmd(void *priv)
+{
+ atkbd_t *dev = (atkbd_t *) priv;
+
+ dev->kbd_state = DEV_STATE_MAIN_OUT;
+
+ if (dev->key_wantdata) {
+ dev->key_wantdata = 0;
+
+ /*
+ * Several system BIOSes and OS device drivers
+ * mess up with this, and repeat the command
+ * code many times. Fun!
+ */
+ if (dev->key_dat == dev->key_command) {
+ /* Respond NAK and ignore it. */
+ add_data_kbd_front(dev, 0xfe);
+ dev->key_command = 0x00;
+ return;
+ }
+
+ switch (dev->key_command) {
+ case 0xed: /* set/reset LEDs */
+ add_data_kbd_front(dev, 0xfa);
+ kbd_log("ATkbd: set LEDs [%02x]\n", dev->key_dat);
+ break;
+
+ case 0xf0: /* get/set scancode set */
+ add_data_kbd_front(dev, 0xfa);
+ if (dev->key_dat == 0) {
+ kbd_log("Get scan code set: %02X\n", keyboard_mode);
+ add_data_kbd_front(dev, keyboard_mode);
+ } else {
+ if (dev->key_dat <= 3) {
+ keyboard_mode = dev->key_dat;
+ kbd_log("Scan code set now: %02X\n", keyboard_mode);
+ }
+ set_scancode_map(dev);
+ }
+ break;
+
+ case 0xf3: /* set typematic rate/delay */
+ add_data_kbd_front(dev, 0xfa);
+ break;
+
+ default:
+ kbd_log("ATkbd: bad keyboard 0060 write %02X command %02X\n", dev->key_dat, dev->key_command);
+ add_data_kbd_front(dev, 0xfe);
+ break;
+ }
+
+ /* Keyboard command is now done. */
+ dev->key_command = 0x00;
+ } else {
+ /* No keyboard command in progress. */
+ dev->key_command = 0x00;
+
+ switch (dev->key_dat) {
+ case 0x00 ... 0x7f:
+ kbd_log("ATkbd: invalid command %02X\n", dev->key_dat);
+ add_data_kbd_front(dev, 0xfe);
+ break;
+
+ case 0xed: /* set/reset LEDs */
+ kbd_log("ATkbd: set/reset leds\n");
+ add_data_kbd_front(dev, 0xfa);
+
+ dev->key_wantdata = 1;
+ dev->kbd_state = DEV_STATE_MAIN_WANT_IN;
+ break;
+
+ case 0xee: /* diagnostic echo */
+ kbd_log("ATkbd: ECHO\n");
+ add_data_kbd_front(dev, 0xee);
+ break;
+
+ case 0xef: /* NOP (reserved for future use) */
+ kbd_log("ATkbd: NOP\n");
+ break;
+
+ case 0xf0: /* get/set scan code set */
+ kbd_log("ATkbd: scan code set\n");
+ add_data_kbd_front(dev, 0xfa);
+ dev->key_wantdata = 1;
+ dev->kbd_state = DEV_STATE_MAIN_WANT_IN;
+ break;
+
+ case 0xf2: /* read ID */
+ kbd_log("ATkbd: read keyboard id\n");
+ /* TODO: After keyboard type selection is implemented, make this
+ return the correct keyboard ID for the selected type. */
+ add_data_kbd_front(dev, 0xfa);
+ add_data_kbd_front(dev, 0xab);
+ add_data_kbd_front(dev, 0x83);
+ break;
+
+ case 0xf3: /* set typematic rate/delay */
+ kbd_log("ATkbd: set typematic rate/delay\n");
+ add_data_kbd_front(dev, 0xfa);
+ dev->key_wantdata = 1;
+ dev->kbd_state = DEV_STATE_MAIN_WANT_IN;
+ break;
+
+ case 0xf4: /* enable keyboard */
+ kbd_log("ATkbd: enable keyboard\n");
+ add_data_kbd_front(dev, 0xfa);
+ keyboard_scan = 1;
+ break;
+
+ case 0xf5: /* set defaults and disable keyboard */
+ case 0xf6: /* set defaults */
+ kbd_log("ATkbd: set defaults%s\n", (dev->key_dat == 0xf6) ? "" : " and disable keyboard");
+ keyboard_scan = (dev->key_dat == 0xf6);
+ kbd_log("dev->key_dat = %02X, keyboard_scan = %i, dev->mem[0x20] = %02X\n",
+ dev->key_dat, keyboard_scan, dev->mem[0]);
+ add_data_kbd_front(dev, 0xfa);
+
+ keyboard_set3_all_break = 0;
+ keyboard_set3_all_repeat = 0;
+ memset(keyboard_set3_flags, 0, 512);
+ keyboard_mode = 0x02;
+ set_scancode_map(dev);
+ break;
+
+ case 0xf7: /* set all keys to repeat */
+ kbd_log("ATkbd: set all keys to repeat\n");
+ add_data_kbd_front(dev, 0xfa);
+ keyboard_set3_all_break = 1;
+ break;
+
+ case 0xf8: /* set all keys to give make/break codes */
+ kbd_log("ATkbd: set all keys to give make/break codes\n");
+ add_data_kbd_front(dev, 0xfa);
+ keyboard_set3_all_break = 1;
+ break;
+
+ case 0xf9: /* set all keys to give make codes only */
+ kbd_log("ATkbd: set all keys to give make codes only\n");
+ add_data_kbd_front(dev, 0xfa);
+ keyboard_set3_all_break = 0;
+ break;
+
+ case 0xfa: /* set all keys to repeat and give make/break codes */
+ kbd_log("ATkbd: set all keys to repeat and give make/break codes\n");
+ add_data_kbd_front(dev, 0xfa);
+ keyboard_set3_all_repeat = 1;
+ keyboard_set3_all_break = 1;
+ break;
+
+ case 0xfe: /* resend last scan code */
+ kbd_log("ATkbd: resend last scan code\n");
+ add_data_kbd_front(dev, dev->kbd_last_scan_code);
+ break;
+
+ case 0xff: /* reset */
+ kbd_log("ATkbd: kbd reset\n");
+ kbd_key_reset(dev, 1);
+ break;
+
+ default:
+ kbd_log("ATkbd: bad keyboard command %02X\n", dev->key_dat);
+ add_data_kbd_front(dev, 0xfe);
+ }
+
+ /* If command needs data, remember command. */
+ if (dev->key_wantdata == 1)
+ dev->key_command = dev->key_dat;
+ }
+}
+
+static void
+kbc_process_cmd(void *priv)
{
atkbd_t *dev = (atkbd_t *) priv;
int i = 0, bad = 1;
uint8_t mask, kbc_ven = dev->flags & KBC_VEN_MASK;
+ uint8_t cmd_ac_conv[16] = { 0x0b, 2, 3, 4, 5, 6, 7, 8, 9, 0x0a, 0x1e, 0x30, 0x2e, 0x20, 0x12, 0x21 };
+
+ if (dev->status & STAT_CD) {
+ /* Controller command. */
+ dev->want60 = 0;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+
+ /* Clear the keyboard controller queue. */
+ kbc_queue_reset(dev, 0);
+
+ switch (dev->ib) {
+ /* Read data from KBC memory. */
+ case 0x20 ... 0x3f:
+ add_to_kbc_queue_front(dev, dev->mem[dev->ib], 0, 0x00);
+ break;
+
+ /* Write data to KBC memory. */
+ case 0x60 ... 0x7f:
+ dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
+ break;
+
+ case 0xaa: /* self-test */
+ kbd_log("ATkbc: self-test\n");
+
+ if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ if (dev->kbc_state != KBC_STATE_RESET) {
+ kbd_log("ATkbc: self-test reinitialization\n");
+ /* Yes, the firmware has an OR, but we need to make sure to keep any forcibly lowered bytes lowered. */
+ /* TODO: Proper P1 implementation, with OR and AND flags in the machine table. */
+ dev->input_port = dev->input_port & 0xff;
+ write_output(dev, 0x4b);
+ }
+
+ dev->status = (dev->status & 0x0f) | 0x60;
+
+ dev->mem[0x20] = 0x30;
+ dev->mem[0x21] = 0x01;
+ dev->mem[0x22] = 0x0b;
+ dev->mem[0x25] = 0x02;
+ dev->mem[0x27] = 0xf8;
+ dev->mem[0x28] = 0xce;
+ dev->mem[0x29] = 0x0b;
+ dev->mem[0x2a] = 0x10;
+ dev->mem[0x2b] = 0x20;
+ dev->mem[0x2c] = 0x15;
+ dev->mem[0x30] = 0x0b;
+ } else {
+ if (dev->kbc_state != KBC_STATE_RESET) {
+ kbd_log("ATkbc: self-test reinitialization\n");
+ /* Yes, the firmware has an OR, but we need to make sure to keep any forcibly lowered bytes lowered. */
+ /* TODO: Proper P1 implementation, with OR and AND flags in the machine table. */
+ dev->input_port = dev->input_port & 0xff;
+ write_output(dev, 0xcf);
+ }
+
+ dev->status = (dev->status & 0x0f) | 0x60;
+
+ dev->mem[0x20] = 0x10;
+ dev->mem[0x21] = 0x01;
+ dev->mem[0x22] = 0x06;
+ dev->mem[0x25] = 0x01;
+ dev->mem[0x27] = 0xfb;
+ dev->mem[0x28] = 0xe0;
+ dev->mem[0x29] = 0x06;
+ dev->mem[0x2a] = 0x10;
+ dev->mem[0x2b] = 0x20;
+ dev->mem[0x2c] = 0x15;
+ }
+
+ dev->out_new = dev->out_new_mouse = -1;
+ kbc_queue_reset(dev, 0);
+
+ // dev->kbc_state = KBC_STATE_MAIN_IBF;
+ dev->kbc_state = KBC_STATE_KBC_OUT;
+
+ // add_to_kbc_queue_front(dev, 0x55, 0, 0x00);
+ kbc_queue_add(dev, 0x55, 0);
+ break;
+
+ case 0xab: /* interface test */
+ kbd_log("ATkbc: interface test\n");
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00); /*no error*/
+ break;
+
+ case 0xac: /* diagnostic dump */
+ if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ kbd_log("ATkbc: diagnostic dump\n");
+ dev->mem[0x30] = (dev->input_port & 0xf0) | 0x80;
+ dev->mem[0x31] = dev->output_port;
+ dev->mem[0x32] = 0x00; /* T0 and T1. */
+ dev->mem[0x33] = 0x00; /* PSW - Program Status Word - always return 0x00 because we do not emulate this byte. */
+ /* 20 bytes in high nibble in set 1, low nibble in set 1, set 1 space format = 60 bytes. */
+ for (i = 0; i < 20; i++) {
+ kbc_queue_add(dev, cmd_ac_conv[dev->mem[i + 0x20] >> 4], 0);
+ kbc_queue_add(dev, cmd_ac_conv[dev->mem[i + 0x20] & 0x0f], 0);
+ kbc_queue_add(dev, 0x39, 0);
+ }
+ dev->kbc_state = KBC_STATE_KBC_OUT;
+ }
+ break;
+
+ case 0xad: /* disable keyboard */
+ kbd_log("ATkbc: disable keyboard\n");
+ set_enable_kbd(dev, 0);
+ break;
+
+ case 0xae: /* enable keyboard */
+ kbd_log("ATkbc: enable keyboard\n");
+ set_enable_kbd(dev, 1);
+ break;
+
+ case 0xc7: /* set port1 bits */
+ kbd_log("ATkbc: Phoenix - set port1 bits\n");
+ dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
+ break;
+
+ case 0xca: /* read keyboard mode */
+ kbd_log("ATkbc: AMI - read keyboard mode\n");
+ add_to_kbc_queue_front(dev, dev->ami_flags, 0, 0x00);
+ break;
+
+ case 0xcb: /* set keyboard mode */
+ kbd_log("ATkbc: AMI - set keyboard mode\n");
+ dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
+ break;
+
+ case 0xd0: /* read output port */
+ kbd_log("ATkbc: read output port\n");
+ mask = 0xff;
+ if ((kbc_ven != KBC_VEN_OLIVETTI) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) && (dev->mem[0x20] & 0x10))
+ mask &= 0xbf;
+ add_to_kbc_queue_front(dev, dev->output_port & mask, 0, 0x00);
+ break;
+
+ case 0xd1: /* write output port */
+ kbd_log("ATkbc: write output port\n");
+ dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
+ break;
+
+ case 0xd2: /* write keyboard output buffer */
+ kbd_log("ATkbc: write keyboard output buffer\n");
+ dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
+ break;
+
+ case 0xdd: /* disable A20 address line */
+ case 0xdf: /* enable A20 address line */
+ kbd_log("ATkbc: %sable A20\n", (dev->ib == 0xdd) ? "dis" : "en");
+ write_output_fast_a20(dev, (dev->output_port & 0xfd) | (dev->ib & 0x02));
+ break;
+
+ case 0xe0: /* read test inputs */
+ kbd_log("ATkbc: read test inputs\n");
+ add_to_kbc_queue_front(dev, 0x00, 0, 0x00);
+ break;
+
+ default:
+ /*
+ * Unrecognized controller command.
+ *
+ * If we have a vendor-specific handler, run
+ * that. Otherwise, or if that handler fails,
+ * log a bad command.
+ */
+ if (dev->write64_ven)
+ bad = dev->write64_ven(dev, dev->ib);
+
+ kbd_log(bad ? "ATkbc: bad controller command %02X\n" : "", dev->ib);
+ }
+
+ /* If the command needs data, remember the command. */
+ if (dev->want60)
+ dev->command = dev->ib;
+ } else if (dev->want60) {
+ /* Write data to controller. */
+ dev->want60 = 0;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+
+ switch (dev->command) {
+ case 0x60 ... 0x7f:
+ dev->mem[(dev->command & 0x1f) + 0x20] = dev->ib;
+ if (dev->command == 0x60)
+ write_cmd(dev, dev->ib);
+ break;
+
+ case 0xc7: /* set port1 bits */
+ kbd_log("ATkbc: Phoenix - set port1 bits\n");
+ dev->input_port |= dev->ib;
+ break;
+
+ case 0xd1: /* write output port */
+ kbd_log("ATkbc: write output port\n");
+ /* Bit 2 of AMI flags is P22-P23 blocked (1 = yes, 0 = no),
+ discovered by reverse-engineering the AOpen Vi15G BIOS. */
+ if (dev->ami_flags & 0x04) {
+ /* If keyboard controller lines P22-P23 are blocked,
+ we force them to remain unchanged. */
+ dev->ib &= ~0x0c;
+ dev->ib |= (dev->output_port & 0x0c);
+ }
+ write_output(dev, dev->ib | 0x01);
+ break;
+
+ case 0xd2: /* write to keyboard output buffer */
+ kbd_log("ATkbc: write to keyboard output buffer\n");
+ add_to_kbc_queue_front(dev, dev->ib, 0, 0x00);
+ break;
+
+ case 0xd3: /* write to mouse output buffer */
+ kbd_log("ATkbc: write to mouse output buffer\n");
+ if (mouse_write && ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF))
+ keyboard_at_adddata_mouse(dev->ib);
+ break;
+
+ case 0xd4: /* write to mouse */
+ kbd_log("ATkbc: write to mouse (%02X)\n", dev->ib);
+
+ if (dev->ib == 0xbb)
+ break;
+
+ if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ set_enable_mouse(dev, 1);
+ if (mouse_write) {
+ dev->mouse_wantcmd = 1;
+ dev->mouse_dat = dev->ib;
+ dev->kbc_state = KBC_STATE_SEND_MOUSE;
+ } else
+ add_to_kbc_queue_front(dev, 0xfe, 2, 0x40);
+ }
+ break;
+
+ default:
+ /*
+ * Run the vendor-specific handler
+ * if we have one. Otherwise, or if
+ * it returns an error, log a bad
+ * controller command.
+ */
+ if (dev->write60_ven)
+ bad = dev->write60_ven(dev, dev->ib);
+
+ if (bad) {
+ kbd_log("ATkbc: bad controller command %02x data %02x\n", dev->command, dev->ib);
+ }
+ }
+ }
+}
+
+static void
+kbd_write(uint16_t port, uint8_t val, void *priv)
+{
+ atkbd_t *dev = (atkbd_t *) priv;
+
+ kbd_log((port == 0x61) ? "" : "[%04X:%08X] ATkbc: write(%04X) = %02X\n", CS, cpu_state.pc, port, val);
switch (port) {
case 0x60:
dev->status &= ~STAT_CD;
- if (dev->want60) {
- /* Write data to controller. */
- dev->want60 = 0;
+ if (dev->want60 && (dev->command == 0xd1)) {
+ kbd_log("ATkbc: write output port\n");
- switch (dev->command) {
- case 0x60:
- case 0x61:
- case 0x62:
- case 0x63:
- case 0x64:
- case 0x65:
- case 0x66:
- case 0x67:
- case 0x68:
- case 0x69:
- case 0x6a:
- case 0x6b:
- case 0x6c:
- case 0x6d:
- case 0x6e:
- case 0x6f:
- case 0x70:
- case 0x71:
- case 0x72:
- case 0x73:
- case 0x74:
- case 0x75:
- case 0x76:
- case 0x77:
- case 0x78:
- case 0x79:
- case 0x7a:
- case 0x7b:
- case 0x7c:
- case 0x7d:
- case 0x7e:
- case 0x7f:
- dev->mem[dev->command & 0x1f] = val;
- if (dev->command == 0x60)
- write_cmd(dev, val);
- break;
+ /* Fast A20 - ignore all other bits. */
+ val = (val & 0x02) | (dev->output_port & 0xfd);
- case 0xd1: /* write output port */
- kbd_log("ATkbc: write output port\n");
- /* Bit 2 of AMI flags is P22-P23 blocked (1 = yes, 0 = no),
- discovered by reverse-engineering the AOpeN Vi15G BIOS. */
- if (dev->ami_flags & 0x04) {
- /*If keyboard controller lines P22-P23 are blocked,
- we force them to remain unchanged.*/
- val &= ~0x0c;
- val |= (dev->output_port & 0x0c);
- }
- write_output(dev, val | 0x01);
- break;
-
- case 0xd2: /* write to keyboard output buffer */
- kbd_log("ATkbc: write to keyboard output buffer\n");
- add_to_kbc_queue_front(dev, val, 0, 0x00);
- break;
-
- case 0xd3: /* write to mouse output buffer */
- kbd_log("ATkbc: write to mouse output buffer\n");
- if (mouse_write && ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF))
- keyboard_at_adddata_mouse(val);
- break;
-
- case 0xd4: /* write to mouse */
- kbd_log("ATkbc: write to mouse (%02X)\n", val);
-
- if (val == 0xbb)
- break;
-
- if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
- set_enable_mouse(dev, 1);
- if (mouse_write)
- mouse_write(val, mouse_p);
- else
- add_to_kbc_queue_front(dev, 0xfe, 2, 0x40);
- }
- break;
-
- default:
- /*
- * Run the vendor-specific handler
- * if we have one. Otherwise, or if
- * it returns an error, log a bad
- * controller command.
- */
- if (dev->write60_ven)
- bad = dev->write60_ven(dev, val);
-
- if (bad) {
- kbd_log("ATkbc: bad controller command %02x data %02x\n", dev->command, val);
- add_data_kbd(0xfe);
- }
+ /* Bit 2 of AMI flags is P22-P23 blocked (1 = yes, 0 = no),
+ discovered by reverse-engineering the AOpeN Vi15G BIOS. */
+ if (dev->ami_flags & 0x04) {
+ /* If keyboard controller lines P22-P23 are blocked,
+ we force them to remain unchanged. */
+ val &= ~0x0c;
+ val |= (dev->output_port & 0x0c);
}
- } else {
- /* Write data to keyboard. */
- dev->mem[0] &= ~0x10;
- if (dev->key_wantdata) {
- dev->key_wantdata = 0;
+ write_output_fast_a20(dev, val | 0x01);
- /*
- * Several system BIOSes and OS device drivers
- * mess up with this, and repeat the command
- * code many times. Fun!
- */
- if (val == dev->key_command) {
- /* Respond NAK and ignore it. */
- add_data_kbd(0xfe);
- dev->key_command = 0x00;
- break;
- }
-
- switch (dev->key_command) {
- case 0xed: /* set/reset LEDs */
- add_data_kbd_direct(dev, 0xfa);
- kbd_log("ATkbd: set LEDs [%02x]\n", val);
- break;
-
- case 0xf0: /* get/set scancode set */
- add_data_kbd_direct(dev, 0xfa);
- if (val == 0) {
- kbd_log("Get scan code set: %02X\n", keyboard_mode & 3);
- add_data_kbd_direct(dev, keyboard_mode & 3);
- } else {
- if ((val <= 3) && (val != 1)) {
- keyboard_mode &= 0xfc;
- keyboard_mode |= (val & 3);
- kbd_log("Scan code set now: %02X\n", val);
- }
- set_scancode_map(dev);
- }
- break;
-
- case 0xf3: /* set typematic rate/delay */
- add_data_kbd_direct(dev, 0xfa);
- break;
-
- default:
- kbd_log("ATkbd: bad keyboard 0060 write %02X command %02X\n", val, dev->key_command);
- add_data_kbd_direct(dev, 0xfe);
- break;
- }
-
- /* Keyboard command is now done. */
- dev->key_command = 0x00;
- } else {
- /* No keyboard command in progress. */
- dev->key_command = 0x00;
-
- set_enable_kbd(dev, 1);
-
- switch (val) {
- case 0x00:
- kbd_log("ATkbd: command 00\n");
- add_data_kbd_direct(dev, 0xfa);
- break;
-
- case 0x05: /*??? - sent by NT 4.0*/
- kbd_log("ATkbd: command 05 (NT 4.0)\n");
- add_data_kbd_direct(dev, 0xfe);
- break;
-
- /* Sent by Pentium-era AMI BIOS'es.*/
- case 0x71:
- case 0x82:
- kbd_log("ATkbd: Pentium-era AMI BIOS command %02X\n", val);
- break;
-
- case 0xed: /* set/reset LEDs */
- kbd_log("ATkbd: set/reset leds\n");
- add_data_kbd_direct(dev, 0xfa);
-
- dev->key_wantdata = 1;
- break;
-
- case 0xee: /* diagnostic echo */
- kbd_log("ATkbd: ECHO\n");
- add_data_kbd_direct(dev, 0xee);
- break;
-
- case 0xef: /* NOP (reserved for future use) */
- kbd_log("ATkbd: NOP\n");
- break;
-
- case 0xf0: /* get/set scan code set */
- kbd_log("ATkbd: scan code set\n");
- add_data_kbd_direct(dev, 0xfa);
- dev->key_wantdata = 1;
- break;
-
- case 0xf2: /* read ID */
- /* Fixed as translation will be done in add_data_kbd(). */
- kbd_log("ATkbd: read keyboard id\n");
- /* TODO: After keyboard type selection is implemented, make this
- return the correct keyboard ID for the selected type. */
- add_data_kbd_direct(dev, 0xfa);
- add_data_kbd_direct(dev, 0xab);
- add_data_kbd_direct(dev, 0x83);
- break;
-
- case 0xf3: /* set typematic rate/delay */
- kbd_log("ATkbd: set typematic rate/delay\n");
- add_data_kbd_direct(dev, 0xfa);
- dev->key_wantdata = 1;
- break;
-
- case 0xf4: /* enable keyboard */
- kbd_log("ATkbd: enable keyboard\n");
- add_data_kbd_direct(dev, 0xfa);
- keyboard_scan = 1;
- break;
-
- case 0xf5: /* set defaults and disable keyboard */
- case 0xf6: /* set defaults */
- kbd_log("ATkbd: set defaults%s\n", (val == 0xf6) ? "" : " and disable keyboard");
- keyboard_scan = (val == 0xf6);
- kbd_log("val = %02X, keyboard_scan = %i, dev->mem[0] = %02X\n",
- val, keyboard_scan, dev->mem[0]);
- add_data_kbd_direct(dev, 0xfa);
-
- keyboard_set3_all_break = 0;
- keyboard_set3_all_repeat = 0;
- memset(keyboard_set3_flags, 0, 512);
- keyboard_mode = (keyboard_mode & 0xfc) | 0x02;
- set_scancode_map(dev);
- break;
-
- case 0xf7: /* set all keys to repeat */
- kbd_log("ATkbd: set all keys to repeat\n");
- add_data_kbd_direct(dev, 0xfa);
- keyboard_set3_all_break = 1;
- break;
-
- case 0xf8: /* set all keys to give make/break codes */
- kbd_log("ATkbd: set all keys to give make/break codes\n");
- add_data_kbd_direct(dev, 0xfa);
- keyboard_set3_all_break = 1;
- break;
-
- case 0xf9: /* set all keys to give make codes only */
- kbd_log("ATkbd: set all keys to give make codes only\n");
- add_data_kbd_direct(dev, 0xfa);
- keyboard_set3_all_break = 0;
- break;
-
- case 0xfa: /* set all keys to repeat and give make/break codes */
- kbd_log("ATkbd: set all keys to repeat and give make/break codes\n");
- add_data_kbd_direct(dev, 0xfa);
- keyboard_set3_all_repeat = 1;
- keyboard_set3_all_break = 1;
- break;
-
- case 0xfe: /* resend last scan code */
- kbd_log("ATkbd: reset last scan code\n");
- add_data_kbd_raw(dev, kbd_last_scan_code);
- break;
-
- case 0xff: /* reset */
- kbd_log("ATkbd: kbd reset\n");
- kbc_queue_reset(1);
- kbd_last_scan_code = 0x00;
- add_data_kbd_direct(dev, 0xfa);
-
- /* Set scan code set to 2. */
- keyboard_mode = (keyboard_mode & 0xfc) | 0x02;
- set_scancode_map(dev);
-
- dev->reset_delay = RESET_DELAY_TIME;
- break;
-
- default:
- kbd_log("ATkbd: bad keyboard command %02X\n", val);
- add_data_kbd_direct(dev, 0xfe);
- }
-
- /* If command needs data, remember command. */
- if (dev->key_wantdata == 1)
- dev->key_command = val;
- }
+ dev->want60 = 0;
+ dev->kbc_state = KBC_STATE_MAIN_IBF;
+ return;
}
break;
case 0x64:
- /* Controller command. */
- dev->want60 = 0;
dev->status |= STAT_CD;
-
- switch (val) {
- /* Read data from KBC memory. */
- case 0x20:
- case 0x21:
- case 0x22:
- case 0x23:
- case 0x24:
- case 0x25:
- case 0x26:
- case 0x27:
- case 0x28:
- case 0x29:
- case 0x2a:
- case 0x2b:
- case 0x2c:
- case 0x2d:
- case 0x2e:
- case 0x2f:
- case 0x30:
- case 0x31:
- case 0x32:
- case 0x33:
- case 0x34:
- case 0x35:
- case 0x36:
- case 0x37:
- case 0x38:
- case 0x39:
- case 0x3a:
- case 0x3b:
- case 0x3c:
- case 0x3d:
- case 0x3e:
- case 0x3f:
- add_data(dev, dev->mem[val & 0x1f]);
- break;
-
- /* Write data to KBC memory. */
- case 0x60:
- case 0x61:
- case 0x62:
- case 0x63:
- case 0x64:
- case 0x65:
- case 0x66:
- case 0x67:
- case 0x68:
- case 0x69:
- case 0x6a:
- case 0x6b:
- case 0x6c:
- case 0x6d:
- case 0x6e:
- case 0x6f:
- case 0x70:
- case 0x71:
- case 0x72:
- case 0x73:
- case 0x74:
- case 0x75:
- case 0x76:
- case 0x77:
- case 0x78:
- case 0x79:
- case 0x7a:
- case 0x7b:
- case 0x7c:
- case 0x7d:
- case 0x7e:
- case 0x7f:
- dev->want60 = 1;
- break;
-
- case 0xaa: /* self-test */
- kbd_log("ATkbc: self-test\n");
- if ((kbc_ven == KBC_VEN_TOSHIBA) || (kbc_ven == KBC_VEN_SAMSUNG))
- dev->status |= STAT_IFULL;
- write_output(dev, ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) ? 0x4b : 0xcf);
-
- /* Always reinitialize all queues - the real hardware pulls keyboard and mouse
- clocks high, which stops keyboard scanning. */
- kbd_log("ATkbc: self-test reinitialization\n");
- dev->out_new = dev->out_delayed = -1;
- for (i = 0; i < 3; i++)
- kbc_queue_reset(i);
- kbd_last_scan_code = 0x00;
- dev->status &= ~STAT_OFULL;
- dev->last_irq = dev->old_last_irq = 0;
-
- if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF)
- write_cmd(dev, 0x30 | STAT_SYSFLAG);
- else
- write_cmd(dev, 0x10 | STAT_SYSFLAG);
- add_data(dev, 0x55);
- break;
-
- case 0xab: /* interface test */
- kbd_log("ATkbc: interface test\n");
- add_data(dev, 0x00); /*no error*/
- break;
-
- case 0xac: /* diagnostic dump */
- kbd_log("ATkbc: diagnostic dump\n");
- for (i = 0; i < 16; i++)
- add_data(dev, dev->mem[i]);
- add_data(dev, (dev->input_port & 0xf0) | 0x80);
- add_data(dev, dev->output_port);
- add_data(dev, dev->status);
- break;
-
- case 0xad: /* disable keyboard */
- kbd_log("ATkbc: disable keyboard\n");
- set_enable_kbd(dev, 0);
- break;
-
- case 0xae: /* enable keyboard */
- kbd_log("ATkbc: enable keyboard\n");
- set_enable_kbd(dev, 1);
- break;
-
- case 0xca: /* read keyboard mode */
- kbd_log("ATkbc: AMI - read keyboard mode\n");
- add_data(dev, dev->ami_flags);
- break;
-
- case 0xcb: /* set keyboard mode */
- kbd_log("ATkbc: AMI - set keyboard mode\n");
- dev->want60 = 1;
- break;
-
- case 0xd0: /* read output port */
- kbd_log("ATkbc: read output port\n");
- mask = 0xff;
- if ((kbc_ven != KBC_VEN_OLIVETTI) && ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF) && (dev->mem[0] & 0x10))
- mask &= 0xbf;
- add_to_kbc_queue_front(dev, dev->output_port & mask, 0, 0x00);
- break;
-
- case 0xd1: /* write output port */
- kbd_log("ATkbc: write output port\n");
- dev->want60 = 1;
- break;
-
- case 0xd2: /* write keyboard output buffer */
- kbd_log("ATkbc: write keyboard output buffer\n");
- dev->want60 = 1;
- break;
-
- case 0xdd: /* disable A20 address line */
- case 0xdf: /* enable A20 address line */
- kbd_log("ATkbc: %sable A20\n", (val == 0xdd) ? "dis" : "en");
- write_output(dev, (dev->output_port & 0xfd) | (val & 0x02));
- break;
-
- case 0xe0: /* read test inputs */
- kbd_log("ATkbc: read test inputs\n");
- add_data(dev, 0x00);
- break;
-
- default:
- /*
- * Unrecognized controller command.
- *
- * If we have a vendor-specific handler, run
- * that. Otherwise, or if that handler fails,
- * log a bad command.
- */
- if (dev->write64_ven)
- bad = dev->write64_ven(dev, val);
-
- kbd_log(bad ? "ATkbc: bad controller command %02X\n" : "", val);
+ if (val == 0xd1) {
+ kbd_log("ATkbc: write output port\n");
+ dev->want60 = 1;
+ dev->kbc_state = KBC_STATE_KBC_PARAM;
+ dev->command = 0xd1;
+ return;
}
-
- /* If the command needs data, remember the command. */
- if (dev->want60)
- dev->command = val;
break;
}
+
+ dev->ib = val;
+ dev->status |= STAT_IFULL;
}
static uint8_t
@@ -2370,8 +2702,6 @@ kbd_read(uint16_t port, void *priv)
{
atkbd_t *dev = (atkbd_t *) priv;
uint8_t ret = 0xff;
- uint8_t kbc_ven = 0x0;
- kbc_ven = dev->flags & KBC_VEN_MASK;
if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF)
cycles -= ISA_CYCLES(8);
@@ -2380,27 +2710,23 @@ kbd_read(uint16_t port, void *priv)
case 0x60:
ret = dev->out;
dev->status &= ~STAT_OFULL;
- picintc(dev->last_irq);
- dev->last_irq = 0;
+ /* TODO: IRQ is only tied to OBF on the AT KBC, on the PS/2 KBC, it is controlled by a bit the
+ output port (P2).
+ This also means that in AT mode, the IRQ is level-triggered. */
+ if ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF)
+ picintc(1 << 1);
break;
case 0x64:
- ret = (dev->status & 0xfb);
- if (dev->mem[0] & STAT_SYSFLAG)
- ret |= STAT_SYSFLAG;
- /* Only clear the transmit timeout flag on non-PS/2 controllers, as on
- PS/2 controller, it is the keyboard/mouse output source bit. */
- // dev->status &= ~STAT_RTIMEOUT;
- if (((dev->flags & KBC_TYPE_MASK) > KBC_TYPE_PS2_NOREF) && (kbc_ven != KBC_VEN_IBM_MCA))
- dev->status &= ~STAT_TTIMEOUT;
+ ret = dev->status;
break;
default:
- kbd_log("ATkbc: read(%04x) invalid!\n", port);
+ kbd_log("ATkbc: read(%04x) invalid!\n",port);
break;
}
- kbd_log((port == 0x61) ? "" : "ATkbc: read(%04X) = %02X\n", port, ret);
+ kbd_log((port == 0x61) ? "" : "[%04X:%08X] ATkbc: read (%04X) = %02X\n", CS, cpu_state.pc, port, ret);
return (ret);
}
@@ -2412,38 +2738,33 @@ kbd_reset(void *priv)
int i;
uint8_t kbc_ven = dev->flags & KBC_VEN_MASK;
- dev->first_write = 1;
- // dev->status = STAT_UNLOCKED | STAT_CD;
dev->status = STAT_UNLOCKED;
- dev->mem[0] = 0x01;
- dev->mem[0] |= CCB_TRANSLATE;
- dev->wantirq = 0;
- write_output(dev, 0xcf);
- dev->last_irq = dev->old_last_irq = 0;
+ dev->mem[0x20] = 0x01;
+ dev->mem[0x20] |= CCB_TRANSLATE;
dev->secr_phase = 0;
dev->key_wantdata = 0;
/* Set up the correct Video Type bits. */
- if ((kbc_ven == KBC_VEN_XI8088) || (kbc_ven == KBC_VEN_ACER))
+ if (!is286 || (kbc_ven == KBC_VEN_ACER))
dev->input_port = video_is_mda() ? 0xb0 : 0xf0;
else
dev->input_port = video_is_mda() ? 0xf0 : 0xb0;
kbd_log("ATkbc: input port = %02x\n", dev->input_port);
- keyboard_mode = 0x02 | (dev->mem[0] & CCB_TRANSLATE);
-
/* Enable keyboard, disable mouse. */
- set_enable_kbd(dev, 1);
- keyboard_scan = 1;
+ set_enable_kbd(dev, 0);
+ keyboard_scan = 0;
set_enable_mouse(dev, 0);
mouse_scan = 0;
- dev->out_new = dev->out_delayed = -1;
+ dev->out_new = dev->out_new_mouse = -1;
for (i = 0; i < 3; i++)
- kbc_queue_reset(i);
- kbd_last_scan_code = 0;
+ kbc_queue_reset(dev, i);
+ dev->kbd_last_scan_code = 0;
- sc_or = 0;
+ dev->sc_or = 0;
+
+ keyboard_mode = 0x02;
memset(keyboard_set3_flags, 0, 512);
@@ -2451,6 +2772,23 @@ kbd_reset(void *priv)
dev->ami_flags = ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) ? 0x01 : 0x00;
dev->ami_stat |= 0x02;
+
+ dev->output_port = 0xcd;
+ if ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ write_output(dev, 0x4b);
+ } else {
+ /* The real thing writes CF and then AND's it with BF. */
+ write_output(dev, 0x8f);
+ }
+
+ /* Stage 1. */
+ dev->status = (dev->status & 0x0f) | (dev->input_port & 0xf0);
+
+ /* Reset the keyboard. */
+ kbd_key_reset(dev, 0);
+
+ /* Reset the mouse. */
+ kbd_aux_reset(dev, 0);
}
/* Reset the AT keyboard - this is needed for the PCI TRC and is done
@@ -2461,10 +2799,25 @@ keyboard_at_reset(void)
kbd_reset(SavedKbd);
}
+void
+kbc_at_a20_reset(void)
+{
+ if (SavedKbd) {
+ SavedKbd->output_port = 0xcd;
+ if ((SavedKbd->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) {
+ write_output(SavedKbd, 0x4b);
+ } else {
+ /* The real thing writes CF and then AND's it with BF. */
+ write_output(SavedKbd, 0x8f);
+ }
+ }
+}
+
static void
kbd_close(void *priv)
{
atkbd_t *dev = (atkbd_t *) priv;
+ int i, max_ports = ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) ? 2 : 1;
kbd_reset(dev);
@@ -2478,6 +2831,14 @@ kbd_close(void *priv)
keyboard_set_table(NULL);
SavedKbd = NULL;
+
+ for (i = 0; i < max_ports; i++) {
+ if (kbc_ports[i] != NULL) {
+ free(kbc_ports[i]);
+ kbc_ports[i] = NULL;
+ }
+ }
+
free(dev);
}
@@ -2485,11 +2846,16 @@ static void *
kbd_init(const device_t *info)
{
atkbd_t *dev;
+ int i, max_ports;
dev = (atkbd_t *) malloc(sizeof(atkbd_t));
memset(dev, 0x00, sizeof(atkbd_t));
dev->flags = info->local;
+ dev->pci = !!(info->flags & DEVICE_PCI);
+
+ /* We need this, sadly. */
+ SavedKbd = dev;
video_reset(gfxcard[0]);
kbd_reset(dev);
@@ -2509,7 +2875,6 @@ kbd_init(const device_t *info)
case KBC_VEN_GENERIC:
case KBC_VEN_NCR:
case KBC_VEN_IBM_PS1:
- case KBC_VEN_XI8088:
dev->write64_ven = write64_generic;
break;
@@ -2519,8 +2884,9 @@ kbd_init(const device_t *info)
case KBC_VEN_AMI:
case KBC_VEN_INTEL_AMI:
- case KBC_VEN_SAMSUNG:
case KBC_VEN_ALI:
+ case KBC_VEN_TG:
+ case KBC_VEN_TG_GREEN:
dev->write60_ven = write60_ami;
dev->write64_ven = write64_ami;
break;
@@ -2540,8 +2906,12 @@ kbd_init(const device_t *info)
break;
}
- /* We need this, sadly. */
- SavedKbd = dev;
+ max_ports = ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF) ? 2 : 1;
+
+ for (i = 0; i < max_ports; i++) {
+ kbc_ports[i] = (kbc_port_t *) malloc(sizeof(kbc_port_t));
+ memset(kbc_ports[i], 0x00, sizeof(kbc_port_t));
+ }
return (dev);
}
@@ -2574,11 +2944,11 @@ const device_t keyboard_at_ami_device = {
.config = NULL
};
-const device_t keyboard_at_samsung_device = {
- .name = "PC/AT Keyboard (Samsung)",
- .internal_name = "keyboard_at_samsung",
+const device_t keyboard_at_tg_ami_device = {
+ .name = "PC/AT Keyboard (TriGem AMI)",
+ .internal_name = "keyboard_at_tg_ami",
.flags = 0,
- .local = KBC_TYPE_ISA | KBC_VEN_SAMSUNG,
+ .local = KBC_TYPE_ISA | KBC_VEN_TG,
.init = kbd_init,
.close = kbd_close,
.reset = kbd_reset,
@@ -2644,20 +3014,6 @@ const device_t keyboard_ps2_device = {
.config = NULL
};
-const device_t keyboard_ps2_ps2_device = {
- .name = "PS/2 Keyboard",
- .internal_name = "keyboard_ps2_ps2",
- .flags = 0,
- .local = KBC_TYPE_PS2_1 | KBC_VEN_GENERIC,
- .init = kbd_init,
- .close = kbd_close,
- .reset = kbd_reset,
- { .available = NULL },
- .speed_changed = NULL,
- .force_redraw = NULL,
- .config = NULL
-};
-
const device_t keyboard_ps2_ps1_device = {
.name = "PS/2 Keyboard (IBM PS/1)",
.internal_name = "keyboard_ps2_ps1",
@@ -2690,7 +3046,7 @@ const device_t keyboard_ps2_xi8088_device = {
.name = "PS/2 Keyboard (Xi8088)",
.internal_name = "keyboard_ps2_xi8088",
.flags = 0,
- .local = KBC_TYPE_PS2_1 | KBC_VEN_XI8088,
+ .local = KBC_TYPE_PS2_1 | KBC_VEN_GENERIC,
.init = kbd_init,
.close = kbd_close,
.reset = kbd_reset,
@@ -2714,11 +3070,11 @@ const device_t keyboard_ps2_ami_device = {
.config = NULL
};
-const device_t keyboard_ps2_olivetti_device = {
- .name = "PS/2 Keyboard (Olivetti)",
- .internal_name = "keyboard_ps2_olivetti",
+const device_t keyboard_ps2_tg_ami_device = {
+ .name = "PS/2 Keyboard (TriGem AMI)",
+ .internal_name = "keyboard_ps2_tg_ami",
.flags = 0,
- .local = KBC_TYPE_PS2_NOREF | KBC_VEN_OLIVETTI,
+ .local = KBC_TYPE_PS2_NOREF | KBC_VEN_TG,
.init = kbd_init,
.close = kbd_close,
.reset = kbd_reset,
@@ -2826,6 +3182,20 @@ const device_t keyboard_ps2_intel_ami_pci_device = {
.config = NULL
};
+const device_t keyboard_ps2_tg_ami_pci_device = {
+ .name = "PS/2 Keyboard (TriGem AMI)",
+ .internal_name = "keyboard_ps2_tg_ami_pci",
+ .flags = DEVICE_PCI,
+ .local = KBC_TYPE_PS2_NOREF | KBC_VEN_TG,
+ .init = kbd_init,
+ .close = kbd_close,
+ .reset = kbd_reset,
+ { .available = NULL },
+ .speed_changed = NULL,
+ .force_redraw = NULL,
+ .config = NULL
+};
+
const device_t keyboard_ps2_acer_pci_device = {
.name = "PS/2 Keyboard (Acer 90M002A)",
.internal_name = "keyboard_ps2_acer_pci",
@@ -2847,54 +3217,36 @@ keyboard_at_set_mouse(void (*func)(uint8_t val, void *priv), void *priv)
mouse_p = priv;
}
-void
-keyboard_at_adddata_keyboard_raw(uint8_t val)
-{
- atkbd_t *dev = SavedKbd;
-
- add_data_kbd_queue(dev, 0, val);
-}
-
void
keyboard_at_adddata_mouse(uint8_t val)
{
atkbd_t *dev = SavedKbd;
- kbc_queue_add(dev, val, 2, 0x00);
+ if (!mouse_scan || (dev->mouse_queue_end >= 16)) {
+ kbd_log("ATkbc: Unable to add to queue, conditions: %i, %i\n", !mouse_scan, (dev->mouse_queue_end >= 16));
+ return;
+ }
+ kbc_queue_add(dev, val, 2);
}
void
-keyboard_at_mouse_reset(void)
+keyboard_at_adddata_mouse_cmd(uint8_t val)
{
- kbc_queue_reset(2);
+ atkbd_t *dev = SavedKbd;
+
+ if (dev->mouse_cmd_queue_end >= 16) {
+ kbd_log("ATkbc: Unable to add to queue, dev->mouse_cmd_queue_end >= 16\n");
+ return;
+ }
+ kbc_queue_add(dev, val, 3);
}
uint8_t
keyboard_at_mouse_pos(void)
-{
- return ((mouse_queue_end - mouse_queue_start) & 0xf);
-}
-
-void
-keyboard_at_set_mouse_scan(uint8_t val)
-{
- atkbd_t *dev = SavedKbd;
- uint8_t temp_mouse_scan = val ? 1 : 0;
-
- if (temp_mouse_scan == !(dev->mem[0] & 0x20))
- return;
-
- set_enable_mouse(dev, val ? 1 : 0);
-
- kbd_log("ATkbc: mouse scan %sabled via PCI\n", mouse_scan ? "en" : "dis");
-}
-
-uint8_t
-keyboard_at_get_mouse_scan(void)
{
atkbd_t *dev = SavedKbd;
- return ((dev->mem[0] & 0x20) ? 0x00 : 0x10);
+ return ((dev->mouse_queue_end - dev->mouse_queue_start) & 0xf);
}
void
diff --git a/src/device/mouse.c b/src/device/mouse.c
index 93384e063..13d9999c7 100644
--- a/src/device/mouse.c
+++ b/src/device/mouse.c
@@ -27,6 +27,8 @@
#define HAVE_STDARG_H
#include <86box/86box.h>
#include <86box/device.h>
+#include <86box/timer.h>
+#include <86box/gdbstub.h>
#include <86box/mouse.h>
typedef struct {
@@ -40,11 +42,12 @@ int mouse_x,
mouse_buttons,
mouse_mode,
mouse_tablet_in_proximity = 0,
- tablet_tool_type = 1; /* 0 = Puck/Cursor, 1 = Pen */
+ tablet_tool_type = 1; /* 0 = Puck/Cursor, 1 = Pen */
double mouse_x_abs,
- mouse_y_abs;
+ mouse_y_abs;
+pc_timer_t mouse_timer; /* mouse event timer */
static const device_t mouse_none_device = {
.name = "None",
@@ -76,19 +79,20 @@ static const device_t mouse_internal_device = {
static mouse_t mouse_devices[] = {
// clang-format off
- { &mouse_none_device },
- { &mouse_internal_device },
- { &mouse_logibus_device },
- { &mouse_msinport_device },
+ { &mouse_none_device },
+ { &mouse_internal_device },
+ { &mouse_logibus_device },
+ { &mouse_msinport_device },
#if 0
- { &mouse_genibus_device },
+ { &mouse_genibus_device },
#endif
- { &mouse_mssystems_device },
- { &mouse_msserial_device },
- { &mouse_ltserial_device },
- { &mouse_ps2_device },
- { &mouse_wacom_device },
- { NULL }
+ { &mouse_mssystems_device },
+ { &mouse_msserial_device },
+ { &mouse_ltserial_device },
+ { &mouse_ps2_device },
+ { &mouse_wacom_device },
+ { &mouse_wacom_artpad_device },
+ { NULL }
// clang-format on
};
@@ -141,6 +145,20 @@ mouse_close(void)
mouse_priv = NULL;
mouse_nbut = 0;
mouse_dev_poll = NULL;
+
+ timer_stop(&mouse_timer);
+}
+
+static void
+mouse_timer_poll(void *priv)
+{
+ /* Poll at 255 Hz, maximum supported by PS/2 mic. */
+ timer_on_auto(&mouse_timer, 1000000.0 / 255.0);
+
+#ifdef USE_GDBSTUB /* avoid a KBC FIFO overflow when CPU emulation is stalled */
+ if (gdbstub_step == GDBSTUB_EXEC)
+#endif
+ mouse_process();
}
void
@@ -165,6 +183,11 @@ mouse_reset(void)
if (mouse_curr != NULL)
mouse_priv = device_add(mouse_curr);
+
+ timer_add(&mouse_timer, mouse_timer_poll, NULL, 0);
+
+ /* Poll at 255 Hz, maximum supported by PS/2 mic. */
+ timer_on_auto(&mouse_timer, 1000000.0 / 255.0);
}
/* Callback from the hardware driver. */
diff --git a/src/device/mouse_ps2.c b/src/device/mouse_ps2.c
index 7a0cbd6e6..1c8e0334d 100644
--- a/src/device/mouse_ps2.c
+++ b/src/device/mouse_ps2.c
@@ -82,18 +82,27 @@ mouse_clear_data(void *priv)
}
static void
-ps2_report_coordinates(mouse_t *dev)
+ps2_report_coordinates(mouse_t *dev, int cmd)
{
uint8_t buff[3] = { 0x08, 0x00, 0x00 };
+ int temp_z;
- if (dev->x > 255)
+ if (dev->x > 255) {
dev->x = 255;
- if (dev->x < -256)
+ buff[0] |= 0x40;
+ }
+ if (dev->x < -256) {
dev->x = -256;
- if (dev->y > 255)
+ buff[0] |= 0x40;
+ }
+ if (dev->y > 255) {
dev->y = 255;
- if (dev->y < -256)
+ buff[0] |= 0x80;
+ }
+ if (dev->y < -256) {
dev->y = -256;
+ buff[0] |= 0x80;
+ }
if (dev->z < -8)
dev->z = -8;
if (dev->z > 7)
@@ -114,19 +123,31 @@ ps2_report_coordinates(mouse_t *dev)
buff[1] = (dev->x & 0xff);
buff[2] = (dev->y & 0xff);
- keyboard_at_adddata_mouse(buff[0]);
- keyboard_at_adddata_mouse(buff[1]);
- keyboard_at_adddata_mouse(buff[2]);
+ if (cmd) {
+ keyboard_at_adddata_mouse_cmd(buff[0]);
+ keyboard_at_adddata_mouse_cmd(buff[1]);
+ keyboard_at_adddata_mouse_cmd(buff[2]);
+ } else {
+ keyboard_at_adddata_mouse(buff[0]);
+ keyboard_at_adddata_mouse(buff[1]);
+ keyboard_at_adddata_mouse(buff[2]);
+ }
if (dev->flags & FLAG_INTMODE) {
- int temp_z = dev->z;
+ temp_z = dev->z & 0x0f;
if ((dev->flags & FLAG_5BTN)) {
- temp_z &= 0xF;
if (mouse_buttons & 8)
temp_z |= 0x10;
if (mouse_buttons & 16)
temp_z |= 0x20;
+ } else {
+ /* The wheel coordinate is sign-extended. */
+ if (temp_z & 0x08)
+ temp_z |= 0xf0;
}
- keyboard_at_adddata_mouse(temp_z);
+ if (cmd)
+ keyboard_at_adddata_mouse_cmd(temp_z);
+ else
+ keyboard_at_adddata_mouse(temp_z);
}
dev->x = dev->y = dev->z = 0;
@@ -147,16 +168,16 @@ ps2_write(uint8_t val, void *priv)
switch (dev->command) {
case 0xe8: /* set mouse resolution */
dev->resolution = val;
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
break;
case 0xf3: /* set sample rate */
dev->sample_rate = val;
- keyboard_at_adddata_mouse(0xfa); /* Command response */
+ keyboard_at_adddata_mouse_cmd(0xfa); /* Command response */
break;
default:
- keyboard_at_adddata_mouse(0xfc);
+ keyboard_at_adddata_mouse_cmd(0xfc);
}
} else {
dev->command = val;
@@ -164,21 +185,21 @@ ps2_write(uint8_t val, void *priv)
switch (dev->command) {
case 0xe6: /* set scaling to 1:1 */
dev->flags &= ~FLAG_SCALED;
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
break;
case 0xe7: /* set scaling to 2:1 */
dev->flags |= FLAG_SCALED;
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
break;
case 0xe8: /* set mouse resolution */
dev->flags |= FLAG_CTRLDAT;
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
break;
case 0xe9: /* status request */
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
temp = (dev->flags & 0x30);
if (mouse_buttons & 1)
temp |= 4;
@@ -186,46 +207,46 @@ ps2_write(uint8_t val, void *priv)
temp |= 1;
if ((mouse_buttons & 4) && (dev->flags & FLAG_INTELLI))
temp |= 2;
- keyboard_at_adddata_mouse(temp);
- keyboard_at_adddata_mouse(dev->resolution);
- keyboard_at_adddata_mouse(dev->sample_rate);
+ keyboard_at_adddata_mouse_cmd(temp);
+ keyboard_at_adddata_mouse_cmd(dev->resolution);
+ keyboard_at_adddata_mouse_cmd(dev->sample_rate);
break;
case 0xea: /* set stream */
dev->flags &= ~FLAG_CTRLDAT;
mouse_scan = 1;
- keyboard_at_adddata_mouse(0xfa); /* ACK for command byte */
+ keyboard_at_adddata_mouse_cmd(0xfa); /* ACK for command byte */
break;
case 0xeb: /* Get mouse data */
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
- ps2_report_coordinates(dev);
+ ps2_report_coordinates(dev, 1);
break;
case 0xf2: /* read ID */
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
if (dev->flags & FLAG_INTMODE)
- keyboard_at_adddata_mouse((dev->flags & FLAG_5BTN) ? 0x04 : 0x03);
+ keyboard_at_adddata_mouse_cmd((dev->flags & FLAG_5BTN) ? 0x04 : 0x03);
else
- keyboard_at_adddata_mouse(0x00);
+ keyboard_at_adddata_mouse_cmd(0x00);
break;
case 0xf3: /* set command mode */
dev->flags |= FLAG_CTRLDAT;
- keyboard_at_adddata_mouse(0xfa); /* ACK for command byte */
+ keyboard_at_adddata_mouse_cmd(0xfa); /* ACK for command byte */
break;
case 0xf4: /* enable */
dev->flags |= FLAG_ENABLED;
mouse_scan = 1;
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
break;
case 0xf5: /* disable */
dev->flags &= ~FLAG_ENABLED;
mouse_scan = 0;
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
break;
case 0xf6: /* set defaults */
@@ -235,15 +256,15 @@ mouse_reset:
dev->flags &= 0x88;
mouse_scan = 1;
keyboard_at_mouse_reset();
- keyboard_at_adddata_mouse(0xfa);
+ keyboard_at_adddata_mouse_cmd(0xfa);
if (dev->command == 0xff) {
- keyboard_at_adddata_mouse(0xaa);
- keyboard_at_adddata_mouse(0x00);
+ keyboard_at_adddata_mouse_cmd(0xaa);
+ keyboard_at_adddata_mouse_cmd(0x00);
}
break;
default:
- keyboard_at_adddata_mouse(0xfe);
+ keyboard_at_adddata_mouse_cmd(0xfe);
}
}
@@ -253,16 +274,15 @@ mouse_reset:
dev->last_data[5] = val;
- if (dev->last_data[0] == 0xf3 && dev->last_data[1] == 0xc8
- && dev->last_data[2] == 0xf3 && dev->last_data[3] == 0xc8
- && dev->last_data[4] == 0xf3 && dev->last_data[5] == 0x50
- && mouse_get_buttons() == 5) {
- dev->flags |= FLAG_INTMODE | FLAG_5BTN;
- } else if (dev->last_data[0] == 0xf3 && dev->last_data[1] == 0xc8
- && dev->last_data[2] == 0xf3 && dev->last_data[3] == 0x64
- && dev->last_data[4] == 0xf3 && dev->last_data[5] == 0x50) {
+ if ((dev->last_data[0] == 0xf3) && (dev->last_data[1] == 0xc8) &&
+ (dev->last_data[2] == 0xf3) && (dev->last_data[3] == 0x64) &&
+ (dev->last_data[4] == 0xf3) && (dev->last_data[5] == 0x50))
dev->flags |= FLAG_INTMODE;
- }
+
+ if ((dev->flags & FLAG_INTMODE) && (dev->last_data[0] == 0xf3) && (dev->last_data[1] == 0xc8) &&
+ (dev->last_data[2] == 0xf3) && (dev->last_data[3] == 0xc8) &&
+ (dev->last_data[4] == 0xf3) && (dev->last_data[5] == 0x50))
+ dev->flags |= FLAG_5BTN;
}
}
@@ -285,10 +305,14 @@ ps2_poll(int x, int y, int z, int b, double abs_x, double abs_y, void *priv)
dev->x += x;
dev->y -= y;
dev->z -= z;
+#if 0
if ((dev->mode == MODE_STREAM) && (dev->flags & FLAG_ENABLED) && (keyboard_at_mouse_pos() < 13)) {
+#else
+ if ((dev->mode == MODE_STREAM) && (keyboard_at_mouse_pos() < 13)) {
+#endif
dev->b = b;
- ps2_report_coordinates(dev);
+ ps2_report_coordinates(dev, 0);
}
return (0);
diff --git a/src/device/mouse_serial.c b/src/device/mouse_serial.c
index f5e532101..f7956a9bd 100644
--- a/src/device/mouse_serial.c
+++ b/src/device/mouse_serial.c
@@ -511,7 +511,7 @@ sermouse_command_timer(void *priv)
}
static int
-sermouse_poll(int x, int y, int z, int b, double abs_x, double abs_y, void *priv)
+sermouse_poll(int x, int y, int z, int b, double abs_x, double abs_y, void *priv)
{
mouse_t *dev = (mouse_t *) priv;
diff --git a/src/device/mouse_wacom_tablet.c b/src/device/mouse_wacom_tablet.c
index 2d324effb..09d98083e 100644
--- a/src/device/mouse_wacom_tablet.c
+++ b/src/device/mouse_wacom_tablet.c
@@ -9,45 +9,123 @@
#include <86box/mouse.h>
#include <86box/serial.h>
#include <86box/plat.h>
+#include <86box/fifo8.h>
-#define FLAG_3BTN 0x20 /* enable 3-button mode */
+#define FLAG_3BTN 0x20 /* enable 3-button mode */
-enum wacom_modes
-{
+enum wacom_modes {
WACOM_MODE_SUPPRESSED = 0,
WACOM_MODE_POINT = 1,
WACOM_MODE_STREAM = 2,
WACOM_MODE_SWITCH = 3,
};
+enum wacom_handshake_modes {
+ WACOM_HANDSHAKE_NONE = 0,
+ WACOM_HANDSHAKE_CTS = 1,
+ WACOM_HANDSHAKE_DTS = 2,
+ WACOM_HANDSHAKE_BOTH = 3,
+};
+
+enum wacom_cmd_set {
+ WACOM_CMDSET_BITPAD = 0,
+ WACOM_CMDSET_MM1201 = 1,
+ WACOM_CMDSET_IIS = 2,
+ WACOM_CMDSET_IV = 3
+};
+
+enum wacom_tablet_type {
+ WACOM_TYPE_IISONLY = 0,
+ WACOM_TYPE_IV,
+};
+
enum {
REPORT_PHASE_PREPARE,
REPORT_PHASE_TRANSMIT
};
+typedef struct wacom_tablet_id {
+ char id[64];
+ int type;
+} wacom_tablet_id;
+
+static const wacom_tablet_id sd510_id = {
+ .id = "~#SD51C V3.2.1.01\r",
+ .type = WACOM_TYPE_IISONLY
+};
+
+static const wacom_tablet_id artpad_id = {
+ .id = "~#KT-0405-R00 V1.1-0\r",
+ .type = WACOM_TYPE_IV
+};
+
+static const uint32_t wacom_resolution_values[4] = {
+ 500,
+ 508,
+ 1000,
+ 1270
+};
+
typedef struct {
const char *name; /* name of this device */
int8_t type, /* type of this device */
port;
uint8_t flags, but, /* device flags */
- status, format,
- data_len, data[64],
+ status, bits,
data_rec[0x200];
int abs_x, abs_y,
rel_x, rel_y,
oldb, b;
-
- int data_pos, data_rec_pos, mode, transmission_ongoing, transmission_format, interval;
+
+ Fifo8 data;
+
+ int data_rec_pos, mode, interval;
int increment, suppressed_increment;
int transmission_stopped;
int reset;
int transmit_id, transmit_id_pending;
int pressure_mode;
- int suppressed, measurement, always_report;
- int remote_req, remote_mode;
+ int suppressed, measurement;
+ int remote_req;
+
+ uint32_t x_res, y_res;
+ const wacom_tablet_id* tablet_type;
int last_abs_x, last_abs_y; /* Suppressed/Increment Mode. */
- uint32_t settings; /* Settings DWORD */
+ union {
+ uint32_t settings; /* Settings DWORD */
+ /* We don't target any architectures except x86/x64/ARM32/ARM64.
+ (The ABIs for those are explicit in little-endian bit ordering) */
+ struct {
+ uint8_t remote_mode : 1;
+ uint8_t bitpad_two_cursor_data : 1;
+ uint8_t mm961_orientation : 1;
+ uint8_t mm_command_set : 1;
+ uint8_t tilt : 1;
+ uint8_t multi_device : 1;
+ uint8_t reading_height : 1;
+ uint8_t pressure_sensitivity : 1;
+
+ uint8_t pnp : 1; /* Unused. */
+ uint8_t dummy : 1;
+ uint8_t terminator : 2;
+ uint8_t out_of_range_data : 1;
+ uint8_t origin_location : 1;
+ uint8_t resolution : 2;
+
+ uint8_t transfer_rate : 2;
+ uint8_t coord_sys : 1;
+ uint8_t output_format : 1;
+ uint8_t transfer_mode : 2;
+ uint8_t handshake : 2;
+
+ uint8_t stop_bits_conf : 1;
+ uint8_t data_bits_conf : 1;
+ uint8_t parity : 2;
+ uint8_t baud_rate : 2;
+ uint8_t cmd_set : 2;
+ } settings_bits;
+ };
double transmit_period;
double old_tsc, reset_tsc;
@@ -56,12 +134,22 @@ typedef struct {
serial_t *serial;
} mouse_wacom_t;
+static unsigned int
+reverse(register unsigned int x)
+{
+ x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
+ x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
+ x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
+ x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
+ return ((x >> 16) | (x << 16));
+}
+
static double
wacom_transmit_period(mouse_wacom_t *dev, int bps, int rps)
{
- double dbps = (double) bps;
- double temp = 0.0;
- int word_len = 10;
+ double dbps = (double) bps;
+ double temp = 0.0;
+ int word_len = dev->bits;
if (rps == -1)
temp = (double) word_len;
@@ -76,32 +164,105 @@ wacom_transmit_period(mouse_wacom_t *dev, int bps, int rps)
}
static void
-wacom_reset(mouse_wacom_t* wacom)
+wacom_process_settings_dword(mouse_wacom_t *wacom, uint32_t dword)
{
- wacom->transmit_period = wacom_transmit_period(wacom, 9600, -1);
- wacom->mode = WACOM_MODE_POINT;
- wacom->data_pos = 0;
- wacom->transmission_ongoing = 0;
- wacom->mode = 0;
- wacom->transmission_stopped = 0;
- wacom->interval = 0;
- wacom->transmit_id = 0;
- wacom->format = 0; /* ASCII */
- wacom->measurement = 1;
- wacom->increment = wacom->suppressed_increment = 0;
- wacom->reset_tsc = tsc;
- wacom->remote_mode = wacom->remote_req = 0;
- wacom->always_report = 0;
+ wacom->settings = dword;
+ wacom->mode = wacom->settings_bits.transfer_mode;
+
+ wacom->bits = 1 + 7 + wacom->settings_bits.data_bits_conf;
+ wacom->bits += 1 + wacom->settings_bits.stop_bits_conf;
+ if (wacom->settings_bits.parity == 2 && !(wacom->bits % 2)) {
+ wacom->bits++;
+ } else if (wacom->settings_bits.parity == 3 && (wacom->bits % 2)) {
+ wacom->bits++;
+ }
+
+ switch(wacom->settings_bits.baud_rate) {
+ case 0:
+ wacom->transmit_period = wacom_transmit_period(wacom, 2400, -1);
+ break;
+
+ case 1:
+ wacom->transmit_period = wacom_transmit_period(wacom, 4800, -1);
+ break;
+
+ case 2:
+ wacom->transmit_period = wacom_transmit_period(wacom, 9600, -1);
+ break;
+
+ case 3:
+ wacom->transmit_period = wacom_transmit_period(wacom, 19200, -1);
+ break;
+ }
+
+ mouse_mode = !wacom->settings_bits.coord_sys;
+ wacom->x_res = wacom->y_res = wacom_resolution_values[wacom->settings_bits.resolution];
+}
+
+static void
+wacom_reset(mouse_wacom_t *wacom)
+{
+ wacom->transmit_period = wacom_transmit_period(wacom, 9600, -1);
+ wacom->mode = WACOM_MODE_POINT;
+ wacom->transmission_stopped = 0;
+ wacom->interval = 0;
+ wacom->transmit_id = 0;
+ wacom->settings_bits.output_format = 1; /* ASCII */
+ wacom->settings_bits.cmd_set = 1;
+ wacom->measurement = 1;
+ wacom->increment = wacom->suppressed_increment = 0;
+ wacom->reset_tsc = tsc;
+ wacom->settings_bits.remote_mode = wacom->remote_req = 0;
+ wacom->settings_bits.out_of_range_data = 0;
+
+ mouse_mode = 1;
+ wacom_process_settings_dword(wacom, 0xA21BC800);
+}
+
+static void
+wacom_reset_artpad(mouse_wacom_t *wacom)
+{
+ wacom->transmit_period = wacom_transmit_period(wacom, 9600, -1);
+ wacom->mode = WACOM_MODE_SUPPRESSED;
+ wacom->transmission_stopped = 0;
+ wacom->interval = 0;
+ wacom->transmit_id = 0;
+ wacom->settings_bits.output_format = 0; /* Binary */
+ wacom->measurement = 1;
+ wacom->increment = 0;
+ wacom->suppressed_increment = 1;
+ wacom->reset_tsc = tsc;
+ wacom->settings_bits.remote_mode = 0;
+ wacom->remote_req = 0;
+ wacom->settings_bits.out_of_range_data = 0;
+
+ wacom_process_settings_dword(wacom, 0xE203C000);
mouse_mode = 1;
}
static void
wacom_callback(struct serial_s *serial, void *priv)
{
- mouse_wacom_t* wacom = (mouse_wacom_t*)priv;
+ mouse_wacom_t *wacom = (mouse_wacom_t *) priv;
- wacom->transmit_period = wacom_transmit_period(wacom, 9600, -1);
+ switch(wacom->settings_bits.baud_rate) {
+ case 0:
+ wacom->transmit_period = wacom_transmit_period(wacom, 2400, -1);
+ break;
+
+ case 1:
+ wacom->transmit_period = wacom_transmit_period(wacom, 4800, -1);
+ break;
+
+ case 2:
+ wacom->transmit_period = wacom_transmit_period(wacom, 9600, -1);
+ break;
+
+ case 3:
+ wacom->transmit_period = wacom_transmit_period(wacom, 19200, -1);
+ break;
+ }
timer_stop(&wacom->report_timer);
timer_on_auto(&wacom->report_timer, wacom->transmit_period);
}
@@ -109,8 +270,8 @@ wacom_callback(struct serial_s *serial, void *priv)
static void
wacom_write(struct serial_s *serial, void *priv, uint8_t data)
{
- mouse_wacom_t* wacom = (mouse_wacom_t*)priv;
- static int special_command = 0;
+ mouse_wacom_t *wacom = (mouse_wacom_t *) priv;
+ static int special_command = 0;
if (data == '~') {
special_command = 1;
@@ -119,18 +280,34 @@ wacom_write(struct serial_s *serial, void *priv, uint8_t data)
if (special_command) {
switch (data) {
case '#':
- {
- if (!wacom->transmission_ongoing) wacom->transmit_id++;
- break;
- }
+ {
+ wacom->transmit_id = 1;
+ break;
+ }
+ case 'C':
+ case '*':
+ case 'R':
+ {
+ wacom->data_rec[wacom->data_rec_pos++] = '~';
+ wacom->data_rec[wacom->data_rec_pos++] = data;
+ break;
+ }
}
special_command = 0;
return;
}
if (data == '@') {
- wacom->remote_req = 1;
- wacom->remote_mode = 1;
+ wacom->remote_req = 1;
+ wacom->settings_bits.remote_mode = 1;
+ return;
+ }
+ if (data == '#' && wacom->tablet_type->type == WACOM_TYPE_IV) {
+ wacom_reset_artpad(wacom);
+ return;
+ }
+ if (data == '$') {
+ wacom_reset(wacom);
return;
}
if (data == 0x13) {
@@ -139,48 +316,84 @@ wacom_write(struct serial_s *serial, void *priv, uint8_t data)
}
if (data == 0x11) {
wacom->transmission_stopped = 0;
- wacom->remote_mode = wacom->remote_req = 0;
+ wacom->settings_bits.remote_mode = wacom->remote_req = 0;
return;
}
wacom->data_rec[wacom->data_rec_pos++] = data;
if (data == '\r' || data == '\n') {
- wacom->data_rec[wacom->data_rec_pos] = 0;
- wacom->data_rec_pos = 0;
+ wacom->data_rec[wacom->data_rec_pos] = 0;
+ wacom->data_rec_pos = 0;
- if (data == '\n') pclog("Wacom: written %s", wacom->data_rec);
- else pclog("Wacom: written %s\n", wacom->data_rec);
- if (!memcmp(wacom->data_rec, "AS", 2)) {
- wacom->format = (wacom->data_rec[2] == '1');
- wacom->transmission_ongoing = 0;
+ if (data == '\n')
+ pclog("Wacom: written %s", wacom->data_rec);
+ else
+ pclog("Wacom: written %s\n", wacom->data_rec);
+ if (!memcmp(wacom->data_rec, "AS", 2) && wacom->settings_bits.cmd_set == WACOM_CMDSET_IIS) {
+ wacom->settings_bits.output_format = !(wacom->data_rec[2] == '1');
} else if (!memcmp(wacom->data_rec, "SR", 2)) {
- wacom->mode = WACOM_MODE_STREAM;
- wacom->suppressed_increment = 0;
+ wacom->mode = WACOM_MODE_STREAM;
} else if (!memcmp(wacom->data_rec, "IN", 2)) {
- sscanf((const char*)wacom->data_rec, "IN%d", &wacom->increment);
- } else if (!memcmp(wacom->data_rec, "RE", 2) || wacom->data_rec[0] == '$' || wacom->data_rec[0] == '#') {
- wacom_reset(wacom);
+ sscanf((const char *) wacom->data_rec, "IN%d", &wacom->increment);
+ } else if (!memcmp(wacom->data_rec, "RE", 2)) {
+ if (wacom->tablet_type->type == WACOM_TYPE_IV) wacom_reset_artpad(wacom);
+ else wacom_reset(wacom);
} else if (!memcmp(wacom->data_rec, "IT", 2)) {
- sscanf((const char*)wacom->data_rec, "IT%d", &wacom->interval);
- } else if (!memcmp(wacom->data_rec, "DE", 2)) {
- sscanf((const char*)wacom->data_rec, "DE%d", &mouse_mode);
+ sscanf((const char *) wacom->data_rec, "IT%d", &wacom->interval);
+ } else if (!memcmp(wacom->data_rec, "DE", 2) && wacom->settings_bits.cmd_set == WACOM_CMDSET_IIS) {
+ sscanf((const char *) wacom->data_rec, "DE%d", &mouse_mode);
mouse_mode = !mouse_mode;
plat_mouse_capture(0);
} else if (!memcmp(wacom->data_rec, "SU", 2)) {
- sscanf((const char*)wacom->data_rec, "SU%d", &wacom->suppressed_increment);
- } else if (!memcmp(wacom->data_rec, "PH", 2)) {
- sscanf((const char*)wacom->data_rec, "PH%d", &wacom->pressure_mode);
+ sscanf((const char *) wacom->data_rec, "SU%d", &wacom->suppressed_increment);
+ wacom->settings_bits.transfer_mode = wacom->mode = WACOM_MODE_SUPPRESSED;
+ } else if (!memcmp(wacom->data_rec, "PH", 2) && wacom->settings_bits.cmd_set == WACOM_CMDSET_IIS) {
+ sscanf((const char *) wacom->data_rec, "PH%d", &wacom->pressure_mode);
} else if (!memcmp(wacom->data_rec, "IC", 2)) {
- sscanf((const char*)wacom->data_rec, "IC%d", &wacom->measurement);
+ sscanf((const char *) wacom->data_rec, "IC%d", &wacom->measurement);
+ } else if (!memcmp(wacom->data_rec, "SW", 2)) {
+ wacom->mode = WACOM_MODE_SWITCH;
} else if (!memcmp(wacom->data_rec, "AL", 2)) {
- sscanf((const char*)wacom->data_rec, "AL%d", &wacom->always_report);
+ uint8_t out_of_range_data = wacom->settings_bits.out_of_range_data;
+ wacom->settings_bits.out_of_range_data = !!out_of_range_data;
} else if (!memcmp(wacom->data_rec, "RQ", 2)) {
- sscanf((const char*)wacom->data_rec, "RQ%d", &wacom->remote_mode);
- if (wacom->remote_mode) wacom->remote_req = 1;
+ uint8_t remote_mode = 0;
+ sscanf((const char *) wacom->data_rec, "RQ%d", &remote_mode);
+ wacom->settings_bits.remote_mode = !!remote_mode;
+ if (wacom->settings_bits.remote_mode)
+ wacom->remote_req = 1;
} else if (!memcmp(wacom->data_rec, "SP", 2)) {
wacom->transmission_stopped = 1;
- } else if (!memcmp(wacom->data_rec, "ST", 2)){
+ } else if (!memcmp(wacom->data_rec, "ST", 2)) {
wacom->transmission_stopped = 0;
- wacom->remote_mode = wacom->remote_req = 0;
+ wacom->settings_bits.remote_mode = wacom->remote_req = 0;
+ } else if (!memcmp(wacom->data_rec, "NR", 2)) {
+ sscanf((const char *) wacom->data_rec, "NR%d", &wacom->x_res);
+ wacom->y_res = wacom->x_res;
+ } else if (wacom->tablet_type->type == WACOM_TYPE_IV && wacom->data_rec[0] == '~') {
+ if (!memcmp(wacom->data_rec, "~*", 2)) {
+ uint32_t settings_dword = wacom->settings;
+ if (strstr(wacom->data_rec, ",")) {
+ uint32_t x_res = wacom->x_res, y_res = wacom->y_res;
+ uint32_t increment = wacom->increment;
+ uint32_t interval = wacom->interval;
+
+ sscanf("~*%08X,%d,%d,%d,%d", wacom->data_rec, &settings_dword, &increment, &interval, &x_res, &y_res);
+
+ wacom->interval = interval;
+ wacom->increment = increment;
+ wacom->x_res = x_res;
+ wacom->y_res = y_res;
+ } else {
+ sscanf("~*%X", wacom->data_rec, &settings_dword);
+ }
+ wacom_process_settings_dword(wacom, settings_dword);
+ } else if (!memcmp(wacom->data_rec, "~C", 2)) {
+ fifo8_push_all(&wacom->data, "~C5039,3779\r", sizeof("~C5039,3779\r") - 1);
+ } else if (!memcmp(wacom->data_rec, "~R", 2)) {
+ uint8_t data[256] = { 0 };
+ snprintf(data, sizeof(data), "~*%08X,%d,%d,%d,%d\r", wacom->settings, wacom->increment, wacom->interval, wacom->x_res, wacom->y_res);
+ fifo8_push_all(&wacom->data, data, strlen(data));
+ }
}
}
}
@@ -188,16 +401,27 @@ wacom_write(struct serial_s *serial, void *priv, uint8_t data)
static int
wacom_poll(int x, int y, int z, int b, double abs_x, double abs_y, void *priv)
{
- mouse_wacom_t* wacom = (mouse_wacom_t*)priv;
- wacom->abs_x = abs_x * (wacom->measurement ? 4566. : 5800.);
- wacom->abs_y = abs_y * (wacom->measurement ? 2972. : 3774.);
- if (wacom->abs_x > (wacom->measurement ? 4566 : 5800)) wacom->abs_x = (wacom->measurement ? 4566 : 5800);
- if (wacom->abs_y > (wacom->measurement ? 2972 : 3774)) wacom->abs_x = (wacom->measurement ? 2972 : 3774);
- if (wacom->abs_x < 0) wacom->abs_x = 0;
- if (wacom->abs_y < 0) wacom->abs_y = 0;
- wacom->rel_x = x;
- wacom->rel_y = y;
- if (wacom->b != b) wacom->oldb = wacom->b;
+ mouse_wacom_t *wacom = (mouse_wacom_t *) priv;
+
+ if (wacom->settings_bits.cmd_set == WACOM_CMDSET_IV) {
+ wacom->abs_x = abs_x * 5039. * (wacom->x_res / 1000.);
+ wacom->abs_y = abs_y * 3779. * (wacom->y_res / 1000.);
+ } else {
+ wacom->abs_x = abs_x * (wacom->measurement ? 4566. : 5800.);
+ wacom->abs_y = abs_y * (wacom->measurement ? 2972. : 3774.);
+ if (wacom->abs_x > (wacom->measurement ? 4566 : 5800))
+ wacom->abs_x = (wacom->measurement ? 4566 : 5800);
+ if (wacom->abs_y > (wacom->measurement ? 2972 : 3774))
+ wacom->abs_x = (wacom->measurement ? 2972 : 3774);
+ if (wacom->abs_x < 0)
+ wacom->abs_x = 0;
+ if (wacom->abs_y < 0)
+ wacom->abs_y = 0;
+ wacom->rel_x = x;
+ wacom->rel_y = y;
+ }
+ if (wacom->b != b)
+ wacom->oldb = wacom->b;
wacom->b = b;
return (0);
}
@@ -205,9 +429,12 @@ wacom_poll(int x, int y, int z, int b, double abs_x, double abs_y, void *priv)
static int
wacom_switch_off_to_on(int b, int oldb)
{
- if (!(oldb & 0x1) && (b & 1)) return 1;
- if (!(oldb & 0x2) && (b & 2)) return 1;
- if (!(oldb & 0x4) && (b & 4)) return 1;
+ if (!(oldb & 0x1) && (b & 1))
+ return 1;
+ if (!(oldb & 0x2) && (b & 2))
+ return 1;
+ if (!(oldb & 0x4) && (b & 4))
+ return 1;
return 0;
}
@@ -215,64 +442,85 @@ wacom_switch_off_to_on(int b, int oldb)
static uint8_t
wacom_get_switch(int b)
{
- if (b & 0x4) return 0x23;
- if (b & 0x2) return 0x22;
- if (b & 0x1) return 0x21;
+ if (b & 0x4)
+ return 0x23;
+ if (b & 0x2)
+ return 0x22;
+ if (b & 0x1)
+ return 0x21;
return 0x00;
}
static void
-wacom_transmit_prepare(mouse_wacom_t* wacom, int x, int y)
+wacom_transmit_prepare(mouse_wacom_t *wacom, int x, int y)
{
- wacom->transmission_ongoing = 1;
- wacom->data_pos = 0;
- memset(wacom->data, 0, sizeof(wacom->data));
if (wacom->transmit_id) {
- wacom->transmission_format = 0;
- snprintf((char*)wacom->data, sizeof(wacom->data), "~#SD51C V3.2.1.01\r");
+ uint8_t data[128] = { 0 };
+ snprintf((char *) data, sizeof(data), "%s", wacom->tablet_type->id);
+ fifo8_push_all(&wacom->data, data, strlen(data));
+ wacom->transmit_id = 0;
return;
}
- wacom->transmission_format = wacom->format;
- wacom->last_abs_x = wacom->abs_x;
- wacom->last_abs_y = wacom->abs_y;
- wacom->remote_req = 0;
+ wacom->last_abs_x = wacom->abs_x;
+ wacom->last_abs_y = wacom->abs_y;
+ wacom->remote_req = 0;
wacom->oldb = wacom->b;
- if (wacom->format == 1) {
- wacom->data[0] = 0xC0;
- wacom->data[6] = wacom->pressure_mode ? ((wacom->b & 0x1) ? (uint8_t)31 : (uint8_t)-31) : wacom_get_switch(wacom->b);
+ if (wacom->settings_bits.output_format == 0) {
+ uint8_t data[7];
+ data[0] = 0xC0;
+ if (wacom->settings_bits.cmd_set == WACOM_CMDSET_IV) {
+ if (tablet_tool_type == 0)
+ data[6] = ((wacom->b & 0x1) ? (uint8_t) 31 : (uint8_t) -1);
+ else
+ data[6] = ((wacom->b & 0x1) ? (uint8_t) 63 : (uint8_t) -63);
+ }
+ else
+ data[6] = (wacom->pressure_mode || wacom->settings_bits.cmd_set == WACOM_CMDSET_IV) ? ((wacom->b & 0x1) ? (uint8_t) 31 : (uint8_t) -31) : wacom_get_switch(wacom->b);
- wacom->data[5] = (y & 0x7F);
- wacom->data[4] = ((y & 0x3F80) >> 7) & 0x7F;
- wacom->data[3] = (((y & 0xC000) >> 14) & 3);
+ data[5] = (y & 0x7F);
+ data[4] = ((y & 0x3F80) >> 7) & 0x7F;
+ data[3] = (((y & 0xC000) >> 14) & 3);
- wacom->data[2] = (x & 0x7F);
- wacom->data[1] = ((x & 0x3F80) >> 7) & 0x7F;
- wacom->data[0] |= (((x & 0xC000) >> 14) & 3);
+ data[2] = (x & 0x7F);
+ data[1] = ((x & 0x3F80) >> 7) & 0x7F;
+ data[0] |= (((x & 0xC000) >> 14) & 3);
- if (mouse_mode == 0) {
- wacom->data[0] |= (!!(x < 0)) << 2;
- wacom->data[3] |= (!!(y < 0)) << 2;
+ if (mouse_mode == 0 && wacom->settings_bits.cmd_set == WACOM_CMDSET_IIS) {
+ data[0] |= (!!(x < 0)) << 2;
+ data[3] |= (!!(y < 0)) << 2;
}
- if (wacom->pressure_mode) {
- wacom->data[0] |= 0x10;
- wacom->data[6] &= 0x7F;
+ if (wacom->settings_bits.cmd_set == WACOM_CMDSET_IV) {
+ data[6] &= 0x7F;
+ data[3] &= 0x3;
+ if (wacom_get_switch(wacom->b) != 0x21) {
+ data[3] |= (wacom_get_switch(wacom->b) & 0xF) << 3;
+ data[0] |= 0x8;
+ }
+ }
+
+ if (wacom->pressure_mode && wacom->settings_bits.cmd_set == WACOM_CMDSET_IIS) {
+ data[0] |= 0x10;
+ data[6] &= 0x7F;
}
if (tablet_tool_type == 1) {
- wacom->data[0] |= 0x20;
+ data[0] |= 0x20;
}
-
+
if (!mouse_tablet_in_proximity) {
- wacom->data[0] &= ~0x40;
+ data[0] &= ~0x40;
}
+ fifo8_push_all(&wacom->data, data, 7);
} else {
- wacom->data[0] = 0;
- snprintf((char*)wacom->data, sizeof(wacom->data), "*,%05d,%05d,%d\r\n",
- wacom->abs_x, wacom->abs_y,
- wacom->pressure_mode ? ((wacom->b & 0x1) ? (uint8_t)-31 : (uint8_t)15) : ((wacom->b & 0x1) ? 21 : 00));
+ uint8_t data[128];
+ data[0] = 0;
+ snprintf((char *) data, sizeof(data), "*,%05d,%05d,%d\r\n",
+ wacom->abs_x, wacom->abs_y,
+ wacom->pressure_mode ? ((wacom->b & 0x1) ? (uint8_t) -31 : (uint8_t) 15) : ((wacom->b & 0x1) ? 21 : 00));
+ fifo8_push_all(&wacom->data, data, strlen(data));
}
}
@@ -280,57 +528,62 @@ extern double cpuclock;
static void
wacom_report_timer(void *priv)
{
- mouse_wacom_t* wacom = (mouse_wacom_t*)priv;
- double milisecond_diff = ((double)(tsc - wacom->old_tsc)) / cpuclock * 1000.0;
- int relative_mode = (mouse_mode == 0);
- int x = (relative_mode ? wacom->rel_x : wacom->abs_x);
- int y = (relative_mode ? wacom->rel_y : wacom->abs_y);
- int x_diff = abs(relative_mode ? wacom->rel_x : (wacom->abs_x - wacom->last_abs_x));
- int y_diff = abs(relative_mode ? wacom->rel_y : (wacom->abs_y - wacom->last_abs_y));
- int increment = wacom->suppressed_increment ? wacom->suppressed_increment : wacom->increment;
+ mouse_wacom_t *wacom = (mouse_wacom_t *) priv;
+ double milisecond_diff = ((double) (tsc - wacom->old_tsc)) / cpuclock * 1000.0;
+ int relative_mode = (mouse_mode == 0);
+ int x = (relative_mode ? wacom->rel_x : wacom->abs_x);
+ int y = (relative_mode ? wacom->rel_y : wacom->abs_y);
+ int x_diff = abs(relative_mode ? wacom->rel_x : (wacom->abs_x - wacom->last_abs_x));
+ int y_diff = abs(relative_mode ? wacom->rel_y : (wacom->abs_y - wacom->last_abs_y));
+ int increment = wacom->suppressed_increment ? wacom->suppressed_increment : wacom->increment;
timer_on_auto(&wacom->report_timer, wacom->transmit_period);
- if ((((double)(tsc - wacom->reset_tsc)) / cpuclock * 1000.0) <= 10)
+ if ((((double) (tsc - wacom->reset_tsc)) / cpuclock * 1000.0) <= 10)
return;
- if (wacom->transmit_id && !wacom->transmission_ongoing)
+ if (wacom->transmit_id)
goto transmit_prepare;
- if (wacom->transmission_ongoing)
+ if (fifo8_num_used(&wacom->data))
goto transmit;
- else if (wacom->remote_mode && !wacom->remote_req)
+ else if (wacom->settings_bits.remote_mode && !wacom->remote_req)
return;
else {
- if (wacom->remote_mode && wacom->remote_req) {
+ if (wacom->settings_bits.remote_mode && wacom->remote_req) {
goto transmit_prepare;
}
- if (wacom->transmission_stopped || (!mouse_tablet_in_proximity && !wacom->always_report))
+ if (wacom->transmission_stopped || (!mouse_tablet_in_proximity && !wacom->settings_bits.out_of_range_data))
return;
if (milisecond_diff >= (wacom->interval * 5)) {
wacom->old_tsc = tsc;
} else
return;
-
+
switch (wacom->mode) {
case WACOM_MODE_STREAM:
default:
break;
-
+
case WACOM_MODE_POINT:
- {
- if (!(wacom_switch_off_to_on(wacom->b, wacom->oldb)))
- return;
- break;
- }
+ {
+ if (wacom->suppressed_increment)
+ break;
+ if (!(wacom_switch_off_to_on(wacom->b, wacom->oldb)))
+ return;
+ break;
+ }
case WACOM_MODE_SWITCH:
- {
- if (!wacom->b)
- return;
-
- break;
- }
+ {
+ if (!wacom->b)
+ return;
+
+ break;
+ }
}
+ if (increment && !mouse_tablet_in_proximity)
+ return;
+
if (increment && !(x_diff > increment || y_diff > increment)) {
if (wacom->suppressed_increment && (wacom->b == wacom->oldb))
return;
@@ -344,13 +597,9 @@ transmit_prepare:
wacom_transmit_prepare(wacom, x, y);
transmit:
- serial_write_fifo(wacom->serial, wacom->data[wacom->data_pos++]);
- if ((wacom->transmission_format == 0 && wacom->data[wacom->data_pos] == 0)
- || (wacom->transmission_format == 1 && wacom->data_pos == 7)) {
- wacom->transmission_ongoing = 0;
- wacom->transmit_id = 0;
- wacom->data_pos = 0;
- wacom->old_tsc = tsc;
+ serial_write_fifo(wacom->serial, fifo8_pop(&wacom->data));
+ if (fifo8_num_used(&wacom->data) == 0) {
+ wacom->old_tsc = tsc;
}
return;
}
@@ -360,9 +609,16 @@ wacom_init(const device_t *info)
{
mouse_wacom_t *dev;
- dev = (mouse_wacom_t *) calloc(1, sizeof(mouse_wacom_t));
+ dev = (mouse_wacom_t *) calloc(1, sizeof(mouse_wacom_t));
dev->name = info->name;
dev->but = 3;
+ dev->bits = 10;
+ if (info->local == 0) {
+ dev->tablet_type = &sd510_id;
+ } else
+ dev->tablet_type = (wacom_tablet_id*)info->local;
+
+ fifo8_create(&dev->data, 512);
dev->port = device_get_config_int("port");
@@ -370,7 +626,11 @@ wacom_init(const device_t *info)
timer_add(&dev->report_timer, wacom_report_timer, dev, 0);
mouse_set_buttons(dev->but);
- wacom_reset(dev);
+ if (dev->tablet_type->type == WACOM_TYPE_IV) {
+ wacom_reset_artpad(dev);
+ wacom_process_settings_dword(dev, 0xE2018000);
+ }
+ else wacom_reset(dev);
return dev;
}
@@ -388,6 +648,8 @@ wacom_close(void *priv)
{
mouse_wacom_t *dev = (mouse_wacom_t *) priv;
+ fifo8_destroy(&dev->data);
+
/* Detach serial port from the mouse. */
if (dev && dev->serial && dev->serial->sd)
memset(dev->serial->sd, 0, sizeof(serial_device_t));
@@ -421,7 +683,21 @@ const device_t mouse_wacom_device = {
.name = "Wacom SD-510C",
.internal_name = "wacom_serial",
.flags = DEVICE_COM,
- .local = MOUSE_TYPE_WACOM,
+ .local = 0,
+ .init = wacom_init,
+ .close = wacom_close,
+ .reset = NULL,
+ { .poll = wacom_poll },
+ .speed_changed = wacom_speed_changed,
+ .force_redraw = NULL,
+ .config = wacom_config
+};
+
+const device_t mouse_wacom_artpad_device = {
+ .name = "Wacom ArtPad",
+ .internal_name = "wacom_serial_artpad",
+ .flags = DEVICE_COM,
+ .local = (uintptr_t)&artpad_id,
.init = wacom_init,
.close = wacom_close,
.reset = NULL,
diff --git a/src/device/serial.c b/src/device/serial.c
index d8cb37c11..c0f5bdb7d 100644
--- a/src/device/serial.c
+++ b/src/device/serial.c
@@ -152,7 +152,7 @@ serial_clear_timeout(serial_t *dev)
static void
serial_receive_timer(void *priv)
{
- serial_t *dev = (serial_t *) priv;
+ serial_t *dev = (serial_t *) priv;
// serial_log("serial_receive_timer()\n");
@@ -211,8 +211,7 @@ write_fifo(serial_t *dev, uint8_t dat)
{
serial_log("write_fifo(%08X, %02X, %i, %i)\n", dev, dat,
(dev->type >= SERIAL_16550) && dev->fifo_enabled,
- ((dev->type >= SERIAL_16550) && dev->fifo_enabled) ?
- (dev->rcvr_fifo_pos % dev->rcvr_fifo_len) : 0);
+ ((dev->type >= SERIAL_16550) && dev->fifo_enabled) ? (dev->rcvr_fifo_pos % dev->rcvr_fifo_len) : 0);
if ((dev->type >= SERIAL_16550) && dev->fifo_enabled) {
/* FIFO mode. */
@@ -560,7 +559,7 @@ serial_write(uint16_t addr, uint8_t val, void *p)
dev->rcvr_fifo_len = 14;
break;
}
- dev->out_new = 0xffff;
+ dev->out_new = 0xffff;
serial_log("FIFO now %sabled, receive FIFO length = %i\n", dev->fifo_enabled ? "en" : "dis", dev->rcvr_fifo_len);
}
break;
@@ -665,7 +664,7 @@ serial_read(uint16_t addr, void *p)
if (dev->rcvr_fifo_full || (dev->rcvr_fifo_pos != dev->rcvr_fifo_end)) {
/* There is data in the FIFO. */
- ret = dev->rcvr_fifo[dev->rcvr_fifo_pos];
+ ret = dev->rcvr_fifo[dev->rcvr_fifo_pos];
dev->rcvr_fifo_pos = (dev->rcvr_fifo_pos + 1) & 0x0f;
/* Make sure to clear the FIFO full condition. */
@@ -690,7 +689,7 @@ serial_read(uint16_t addr, void *p)
} else {
/* Non-FIFO mode. */
- ret = (uint8_t) (dev->out_new & 0xffff);
+ ret = (uint8_t) (dev->out_new & 0xffff);
dev->out_new = 0xffff;
/* Always clear Data Ready interrupt. */
@@ -857,8 +856,8 @@ serial_reset(void *priv)
serial_reset_port(dev);
- dev->dlab = 96;
- dev->fcr = 0x06;
+ dev->dlab = 96;
+ dev->fcr = 0x06;
serial_transmit_period(dev);
serial_update_speed(dev);
@@ -889,8 +888,8 @@ serial_init(const device_t *info)
serial_setup(dev, COM1_ADDR, COM1_IRQ);
/* Default to 1200,N,7. */
- dev->dlab = 96;
- dev->fcr = 0x06;
+ dev->dlab = 96;
+ dev->fcr = 0x06;
if (info->local == SERIAL_8250_PCJR)
dev->clock_src = 1789500.0;
else
diff --git a/src/discord.c b/src/discord.c
index 458688eaa..fcc8d18c1 100644
--- a/src/discord.c
+++ b/src/discord.c
@@ -88,7 +88,7 @@ discord_update_activity(int paused)
*(paren - 1) = '\0';
#pragma GCC diagnostic push
-#if defined(__GNUC__) && !defined (__clang__)
+#if defined(__GNUC__) && !defined(__clang__)
# pragma GCC diagnostic ignored "-Wformat-truncation"
#endif
if (strlen(vm_name) < 100) {
diff --git a/src/disk/hdc_esdi_mca.c b/src/disk/hdc_esdi_mca.c
index f9af1e864..47fcdb1b7 100644
--- a/src/disk/hdc_esdi_mca.c
+++ b/src/disk/hdc_esdi_mca.c
@@ -62,6 +62,7 @@
*/
#include
+#include
#include
#include
#include
diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c
index bd91647f8..cad5ce111 100644
--- a/src/disk/hdc_ide.c
+++ b/src/disk/hdc_ide.c
@@ -18,6 +18,7 @@
* Copyright 2016-2020 Miran Grca.
*/
#include
+#include
#include
#include
#include
@@ -737,7 +738,7 @@ ide_set_signature(ide_t *ide)
ide->secount = ide->sc->phase;
ide->cylinder = ide->sc->request_length;
} else {
- ide->secount = 1;
+ ide->secount = 1;
// ide->cylinder = ((ide->type == IDE_HDD) ? 0 : 0xFFFF);
ide->cylinder = ((ide->type == IDE_HDD) ? 0 : 0x7F7F);
if (ide->type == IDE_HDD)
@@ -1919,9 +1920,9 @@ ide_readb(uint16_t addr, void *priv)
addr &= 0xFFF7;
if ((ide->type == IDE_NONE) && ((ide_drives[ch ^ 1]->type == IDE_NONE) || !(ch & 1)))
- absent = 1; /* Absent and is master or both are absent. */
+ absent = 1; /* Absent and is master or both are absent. */
else if ((ide->type == IDE_NONE) && (ch & 1))
- absent = 2; /* Absent and is slave and master is present. */
+ absent = 2; /* Absent and is slave and master is present. */
switch (addr & 0x7) {
case 0x0: /* Data */
diff --git a/src/disk/hdc_xta.c b/src/disk/hdc_xta.c
index ca7f01b9d..0ac095929 100644
--- a/src/disk/hdc_xta.c
+++ b/src/disk/hdc_xta.c
@@ -102,7 +102,7 @@
#include <86box/hdc.h>
#include <86box/hdd.h>
-#define HDC_TIME (50 * TIMER_USEC)
+#define HDC_TIME (50 * TIMER_USEC)
#define WD_REV_1_BIOS_FILE "roms/hdd/xta/idexywd2.bin"
#define WD_REV_2_BIOS_FILE "roms/hdd/xta/infowdbios.rom"
@@ -968,7 +968,7 @@ xta_init(const device_t *info)
{
drive_t *drive;
char *bios_rev = NULL;
- char *fn = NULL;
+ char *fn = NULL;
hdc_t *dev;
int c, i;
int max = XTA_NUM;
diff --git a/src/disk/hdd_image.c b/src/disk/hdd_image.c
index ba7cf18ba..4007f13f3 100644
--- a/src/disk/hdd_image.c
+++ b/src/disk/hdd_image.c
@@ -18,6 +18,7 @@
*/
#define _GNU_SOURCE
#include
+#include
#include
#include
#include
@@ -32,7 +33,7 @@
#include <86box/random.h>
#include <86box/hdd.h>
#include "minivhd/minivhd.h"
-#include "minivhd/minivhd_internal.h"
+#include "minivhd/internal.h"
#define HDD_IMAGE_RAW 0
#define HDD_IMAGE_HDI 1
diff --git a/src/disk/minivhd/CMakeLists.txt b/src/disk/minivhd/CMakeLists.txt
index ec6caff81..324acf81b 100644
--- a/src/disk/minivhd/CMakeLists.txt
+++ b/src/disk/minivhd/CMakeLists.txt
@@ -13,6 +13,5 @@
# Copyright 2020,2021 David HrdliÄka.
#
-add_library(minivhd STATIC cwalk.c libxml2_encoding.c minivhd_convert.c
- minivhd_create.c minivhd_io.c minivhd_manage.c minivhd_struct_rw.c
- minivhd_util.c)
+add_library(minivhd STATIC cwalk.c xml2_encoding.c convert.c
+ create.c minivhd_io.c manage.c struct_rw.c minivhd_util.c)
diff --git a/src/disk/minivhd/CREDITS.md b/src/disk/minivhd/CREDITS.md
index c494d4e43..266e9f0e4 100644
--- a/src/disk/minivhd/CREDITS.md
+++ b/src/disk/minivhd/CREDITS.md
@@ -1,7 +1,7 @@
# Credits
-MiniVHD Copyright (c) 2019 Sherman Perry
+MiniVHD Copyright 2019-2021 Sherman Perry.
-MiniVHD was made possible with the help of the following projects
+MiniVHD was made possible with the help of the following projects:
### libxml2
**Project Home:** http://www.xmlsoft.org/
@@ -10,3 +10,8 @@ MiniVHD was made possible with the help of the following projects
### cwalk
**Project Home:** https://likle.github.io/cwalk/
**Licence:** MIT (https://github.com/likle/cwalk/blob/master/LICENSE.md)
+
+### VARCem
+The MiniVHD was rewritten into a standalone library (both shared as well
+as static) by Fred N. van Kempen for use with the VARCem PC Systems
+emulator - see https://www.varcem.com/ for more info.
diff --git a/src/disk/minivhd/LICENSE b/src/disk/minivhd/LICENSE
index af7299185..2997be44a 100644
--- a/src/disk/minivhd/LICENSE
+++ b/src/disk/minivhd/LICENSE
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+SOFTWARE.
\ No newline at end of file
diff --git a/src/disk/minivhd/minivhd_convert.c b/src/disk/minivhd/convert.c
similarity index 57%
rename from src/disk/minivhd/minivhd_convert.c
rename to src/disk/minivhd/convert.c
index 3ae1d084f..1b7d10c87 100644
--- a/src/disk/minivhd/minivhd_convert.c
+++ b/src/disk/minivhd/convert.c
@@ -1,28 +1,66 @@
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Version: @(#)convert.c 1.0.2 2021/04/16
+ *
+ * Authors: Sherman Perry,
+ * Fred N. van Kempen,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ * Copyright 2021 Fred N. van Kempen.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
+# define _FILE_OFFSET_BITS 64
#endif
#include
#include
#include
#include
#include
-#include "minivhd_create.h"
-#include "minivhd_internal.h"
-#include "minivhd_util.h"
+#include
#include "minivhd.h"
+#include "internal.h"
-static FILE* mvhd_open_existing_raw_img(const char* utf8_raw_path, MVHDGeom* geom, int* err);
-static FILE* mvhd_open_existing_raw_img(const char* utf8_raw_path, MVHDGeom* geom, int* err) {
+static FILE*
+open_existing_raw_img(const char* utf8_raw_path, MVHDGeom* geom, int* err)
+{
+ if (geom == NULL) {
+ *err = MVHD_ERR_INVALID_GEOM;
+ return NULL;
+ }
+
FILE *raw_img = mvhd_fopen(utf8_raw_path, "rb", err);
if (raw_img == NULL) {
*err = MVHD_ERR_FILE;
return NULL;
}
- if (geom == NULL) {
- *err = MVHD_ERR_INVALID_GEOM;
- return NULL;
- }
+
mvhd_fseeko64(raw_img, 0, SEEK_END);
uint64_t size_bytes = (uint64_t)mvhd_ftello64(raw_img);
MVHDGeom new_geom = mvhd_calculate_geometry(size_bytes);
@@ -34,37 +72,52 @@ static FILE* mvhd_open_existing_raw_img(const char* utf8_raw_path, MVHDGeom* geo
geom->heads = new_geom.heads;
geom->spt = new_geom.spt;
mvhd_fseeko64(raw_img, 0, SEEK_SET);
+
return raw_img;
}
-MVHDMeta* mvhd_convert_to_vhd_fixed(const char* utf8_raw_path, const char* utf8_vhd_path, int* err) {
+
+MVHDAPI MVHDMeta*
+mvhd_convert_to_vhd_fixed(const char* utf8_raw_path, const char* utf8_vhd_path, int* err)
+{
MVHDGeom geom;
- FILE *raw_img = mvhd_open_existing_raw_img(utf8_raw_path, &geom, err);
+
+ FILE *raw_img = open_existing_raw_img(utf8_raw_path, &geom, err);
if (raw_img == NULL) {
return NULL;
}
+
uint64_t size_in_bytes = mvhd_calc_size_bytes(&geom);
MVHDMeta *vhdm = mvhd_create_fixed_raw(utf8_vhd_path, raw_img, size_in_bytes, &geom, err, NULL);
if (vhdm == NULL) {
return NULL;
}
+
return vhdm;
}
-MVHDMeta* mvhd_convert_to_vhd_sparse(const char* utf8_raw_path, const char* utf8_vhd_path, int* err) {
+
+
+MVHDAPI MVHDMeta*
+mvhd_convert_to_vhd_sparse(const char* utf8_raw_path, const char* utf8_vhd_path, int* err)
+{
MVHDGeom geom;
MVHDMeta *vhdm = NULL;
- FILE *raw_img = mvhd_open_existing_raw_img(utf8_raw_path, &geom, err);
+
+ FILE *raw_img = open_existing_raw_img(utf8_raw_path, &geom, err);
if (raw_img == NULL) {
return NULL;
}
+
vhdm = mvhd_create_sparse(utf8_vhd_path, geom, err);
if (vhdm == NULL) {
goto end;
}
+
uint8_t buff[4096] = {0}; // 8 sectors
uint8_t empty_buff[4096] = {0};
int total_sectors = mvhd_calc_size_sectors(&geom);
int copy_sect = 0;
+
for (int i = 0; i < total_sectors; i += 8) {
copy_sect = 8;
if ((i + 8) >= total_sectors) {
@@ -72,6 +125,7 @@ MVHDMeta* mvhd_convert_to_vhd_sparse(const char* utf8_raw_path, const char* utf8
memset(buff, 0, sizeof buff);
}
(void) !fread(buff, MVHD_SECTOR_SIZE, copy_sect, raw_img);
+
/* Only write data if there's data to write, to take advantage of the sparse VHD format */
if (memcmp(buff, empty_buff, sizeof buff) != 0) {
mvhd_write_sectors(vhdm, i, copy_sect, buff);
@@ -79,18 +133,25 @@ MVHDMeta* mvhd_convert_to_vhd_sparse(const char* utf8_raw_path, const char* utf8
}
end:
fclose(raw_img);
+
return vhdm;
}
-FILE* mvhd_convert_to_raw(const char* utf8_vhd_path, const char* utf8_raw_path, int *err) {
+
+
+MVHDAPI FILE*
+mvhd_convert_to_raw(const char* utf8_vhd_path, const char* utf8_raw_path, int *err)
+{
FILE *raw_img = mvhd_fopen(utf8_raw_path, "wb", err);
if (raw_img == NULL) {
return NULL;
}
+
MVHDMeta *vhdm = mvhd_open(utf8_vhd_path, true, err);
if (vhdm == NULL) {
fclose(raw_img);
return NULL;
}
+
uint8_t buff[4096] = {0}; // 8 sectors
int total_sectors = mvhd_calc_size_sectors((MVHDGeom*)&vhdm->footer.geom);
int copy_sect = 0;
@@ -104,5 +165,6 @@ FILE* mvhd_convert_to_raw(const char* utf8_vhd_path, const char* utf8_raw_path,
}
mvhd_close(vhdm);
mvhd_fseeko64(raw_img, 0, SEEK_SET);
+
return raw_img;
}
diff --git a/src/disk/minivhd/minivhd_create.c b/src/disk/minivhd/create.c
similarity index 71%
rename from src/disk/minivhd/minivhd_create.c
rename to src/disk/minivhd/create.c
index b56437c28..ebfbb69a2 100644
--- a/src/disk/minivhd/minivhd_create.c
+++ b/src/disk/minivhd/create.c
@@ -1,30 +1,60 @@
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Version: @(#)create.c 1.0.3 2021/04/16
+ *
+ * Authors: Sherman Perry,
+ * Fred N. van Kempen,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ * Copyright 2021 Fred N. van Kempen.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
+# define _FILE_OFFSET_BITS 64
#endif
#include
+#include
#include
#include
#include
#include
-#include "cwalk.h"
-#include "libxml2_encoding.h"
-#include "minivhd_internal.h"
-#include "minivhd_util.h"
-#include "minivhd_struct_rw.h"
-#include "minivhd_io.h"
-#include "minivhd_create.h"
+#include
#include "minivhd.h"
+#include "internal.h"
+#include "cwalk.h"
+#include "xml2_encoding.h"
+
+
+static const char MVHD_CONECTIX_COOKIE[] = "conectix";
+static const char MVHD_CREATOR[] = "mVHD";
+static const char MVHD_CREATOR_HOST_OS[] = "Wi2k";
+static const char MVHD_CXSPARSE_COOKIE[] = "cxsparse";
-static void mvhd_gen_footer(MVHDFooter* footer, uint64_t size_in_bytes, MVHDGeom* geom, MVHDType type, uint64_t sparse_header_off);
-static void mvhd_gen_sparse_header(MVHDSparseHeader* header, uint32_t num_blks, uint64_t bat_offset, uint32_t block_size_in_sectors);
-static int mvhd_gen_par_loc(MVHDSparseHeader* header,
- const char* child_path,
- const char* par_path,
- uint64_t start_offset,
- mvhd_utf16* w2ku_path_buff,
- mvhd_utf16* w2ru_path_buff,
- MVHDError* err);
-static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path, uint64_t size_in_bytes, MVHDGeom* geom, uint32_t block_size_in_sectors, int* err);
/**
* \brief Populate a VHD footer
@@ -35,24 +65,29 @@ static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path,
* \param [in] type of HVD that is being created
* \param [in] sparse_header_off, an absolute file offset to the sparse header. Not used for fixed VHD images
*/
-static void mvhd_gen_footer(MVHDFooter* footer, uint64_t size_in_bytes, MVHDGeom* geom, MVHDType type, uint64_t sparse_header_off) {
- memcpy(footer->cookie, "conectix", sizeof footer->cookie);
+static void
+gen_footer(MVHDFooter* footer, uint64_t size_in_bytes, MVHDGeom* geom, MVHDType type, uint64_t sparse_header_off)
+{
+ memcpy(footer->cookie, MVHD_CONECTIX_COOKIE, sizeof footer->cookie);
footer->features = 0x00000002;
footer->fi_fmt_vers = 0x00010000;
footer->data_offset = (type == MVHD_TYPE_DIFF || type == MVHD_TYPE_DYNAMIC) ? sparse_header_off : 0xffffffffffffffff;
footer->timestamp = vhd_calc_timestamp();
- memcpy(footer->cr_app, "mvhd", sizeof footer->cr_app);
+ memcpy(footer->cr_app, MVHD_CREATOR, sizeof footer->cr_app);
footer->cr_vers = 0x000e0000;
- memcpy(footer->cr_host_os, "Wi2k", sizeof footer->cr_host_os);
+ memcpy(footer->cr_host_os, MVHD_CREATOR_HOST_OS, sizeof footer->cr_host_os);
footer->orig_sz = footer->curr_sz = size_in_bytes;
footer->geom.cyl = geom->cyl;
footer->geom.heads = geom->heads;
footer->geom.spt = geom->spt;
footer->disk_type = type;
+
mvhd_generate_uuid(footer->uuid);
+
footer->checksum = mvhd_gen_footer_checksum(footer);
}
+
/**
* \brief Populate a VHD sparse header
*
@@ -61,8 +96,10 @@ static void mvhd_gen_footer(MVHDFooter* footer, uint64_t size_in_bytes, MVHDGeom
* \param [in] bat_offset is the absolute file offset for start of the Block Allocation Table
* \param [in] block_size_in_sectors is the block size in sectors.
*/
-static void mvhd_gen_sparse_header(MVHDSparseHeader* header, uint32_t num_blks, uint64_t bat_offset, uint32_t block_size_in_sectors) {
- memcpy(header->cookie, "cxsparse", sizeof header->cookie);
+static void
+gen_sparse_header(MVHDSparseHeader* header, uint32_t num_blks, uint64_t bat_offset, uint32_t block_size_in_sectors)
+{
+ memcpy(header->cookie, MVHD_CXSPARSE_COOKIE, sizeof header->cookie);
header->data_offset = 0xffffffffffffffff;
header->bat_offset = bat_offset;
header->head_vers = 0x00010000;
@@ -71,6 +108,7 @@ static void mvhd_gen_sparse_header(MVHDSparseHeader* header, uint32_t num_blks,
header->checksum = mvhd_gen_sparse_checksum(header);
}
+
/**
* \brief Generate parent locators for differencing VHD images
*
@@ -85,13 +123,12 @@ static void mvhd_gen_sparse_header(MVHDSparseHeader* header, uint32_t num_blks,
* \retval 0 if success
* \retval < 0 if an error occurrs. Check value of *err for actual error
*/
-static int mvhd_gen_par_loc(MVHDSparseHeader* header,
- const char* child_path,
- const char* par_path,
- uint64_t start_offset,
- mvhd_utf16* w2ku_path_buff,
- mvhd_utf16* w2ru_path_buff,
- MVHDError* err) {
+static int
+gen_par_loc(MVHDSparseHeader* header, const char* child_path,
+ const char* par_path, uint64_t start_offset,
+ mvhd_utf16* w2ku_path_buff, mvhd_utf16* w2ru_path_buff,
+ MVHDError* err)
+{
/* Get our paths to store in the differencing VHD. We want both the absolute path to the parent,
as well as the relative path from the child VHD */
int rv = 0;
@@ -100,6 +137,7 @@ static int mvhd_gen_par_loc(MVHDSparseHeader* header,
char rel_path[MVHD_MAX_PATH_BYTES] = {0};
char child_dir[MVHD_MAX_PATH_BYTES] = {0};
size_t child_dir_len;
+
if (strlen(child_path) < sizeof child_dir) {
strcpy(child_dir, child_path);
} else {
@@ -107,6 +145,7 @@ static int mvhd_gen_par_loc(MVHDSparseHeader* header,
rv = -1;
goto end;
}
+
cwk_path_get_basename(par_path, (const char**)&par_filename, &par_fn_len);
cwk_path_get_dirname(child_dir, &child_dir_len);
child_dir[child_dir_len] = '\0';
@@ -116,6 +155,7 @@ static int mvhd_gen_par_loc(MVHDSparseHeader* header,
rv = -1;
goto end;
}
+
/* We have our paths, now store the parent filename directly in the sparse header. */
int outlen = sizeof header->par_utf16_name;
int utf_ret;
@@ -144,6 +184,7 @@ static int mvhd_gen_par_loc(MVHDSparseHeader* header,
goto end;
}
int w2ru_len = utf_ret;
+
/**
* Finally populate the parent locaters in the sparse header.
* This is the information needed to find the paths saved elsewhere
@@ -169,11 +210,16 @@ end:
return rv;
}
-MVHDMeta* mvhd_create_fixed(const char* path, MVHDGeom geom, int* err, mvhd_progress_callback progress_callback) {
+
+MVHDAPI MVHDMeta*
+mvhd_create_fixed(const char* path, MVHDGeom geom, int* err, mvhd_progress_callback progress_callback)
+{
uint64_t size_in_bytes = mvhd_calc_size_bytes(&geom);
+
return mvhd_create_fixed_raw(path, NULL, size_in_bytes, &geom, err, progress_callback);
}
+
/**
* \brief internal function that implements public mvhd_create_fixed() functionality
*
@@ -182,27 +228,35 @@ MVHDMeta* mvhd_create_fixed(const char* path, MVHDGeom geom, int* err, mvhd_prog
*
* \param [in] raw_image file handle to a raw disk image to populate VHD
*/
-MVHDMeta* mvhd_create_fixed_raw(const char* path, FILE* raw_img, uint64_t size_in_bytes, MVHDGeom* geom, int* err, mvhd_progress_callback progress_callback) {
+MVHDMeta*
+mvhd_create_fixed_raw(const char* path, FILE* raw_img, uint64_t size_in_bytes, MVHDGeom* geom, int* err, mvhd_progress_callback progress_callback)
+{
uint8_t img_data[MVHD_SECTOR_SIZE] = {0};
uint8_t footer_buff[MVHD_FOOTER_SIZE] = {0};
+
+ if (geom == NULL || (geom->cyl == 0 || geom->heads == 0 || geom->spt == 0)) {
+ *err = MVHD_ERR_INVALID_GEOM;
+ return NULL;
+ }
+
MVHDMeta* vhdm = calloc(1, sizeof *vhdm);
if (vhdm == NULL) {
*err = MVHD_ERR_MEM;
goto end;
}
- if (geom == NULL || (geom->cyl == 0 || geom->heads == 0 || geom->spt == 0)) {
- *err = MVHD_ERR_INVALID_GEOM;
- goto cleanup_vhdm;
- }
+
FILE* f = mvhd_fopen(path, "wb+", err);
if (f == NULL) {
goto cleanup_vhdm;
}
mvhd_fseeko64(f, 0, SEEK_SET);
+
uint32_t size_sectors = (uint32_t)(size_in_bytes / MVHD_SECTOR_SIZE);
uint32_t s;
+
if (progress_callback)
progress_callback(0, size_sectors);
+
if (raw_img != NULL) {
mvhd_fseeko64(raw_img, 0, SEEK_END);
uint64_t raw_size = (uint64_t)mvhd_ftello64(raw_img);
@@ -211,7 +265,7 @@ MVHDMeta* mvhd_create_fixed_raw(const char* path, FILE* raw_img, uint64_t size_i
*err = MVHD_ERR_CONV_SIZE;
goto cleanup_vhdm;
}
- mvhd_gen_footer(&vhdm->footer, raw_size, geom, MVHD_TYPE_FIXED, 0);
+ gen_footer(&vhdm->footer, raw_size, geom, MVHD_TYPE_FIXED, 0);
mvhd_fseeko64(raw_img, 0, SEEK_SET);
for (s = 0; s < size_sectors; s++) {
(void) !fread(img_data, sizeof img_data, 1, raw_img);
@@ -220,7 +274,7 @@ MVHDMeta* mvhd_create_fixed_raw(const char* path, FILE* raw_img, uint64_t size_i
progress_callback(s + 1, size_sectors);
}
} else {
- mvhd_gen_footer(&vhdm->footer, size_in_bytes, geom, MVHD_TYPE_FIXED, 0);
+ gen_footer(&vhdm->footer, size_in_bytes, geom, MVHD_TYPE_FIXED, 0);
for (s = 0; s < size_sectors; s++) {
fwrite(img_data, sizeof img_data, 1, f);
if (progress_callback)
@@ -238,10 +292,12 @@ MVHDMeta* mvhd_create_fixed_raw(const char* path, FILE* raw_img, uint64_t size_i
cleanup_vhdm:
free(vhdm);
vhdm = NULL;
+
end:
return vhdm;
}
+
/**
* \brief Create sparse or differencing VHD image.
*
@@ -254,7 +310,9 @@ end:
*
* \return NULL if an error occurrs. Check value of *err for actual error. Otherwise returns pointer to a MVHDMeta struct
*/
-static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path, uint64_t size_in_bytes, MVHDGeom* geom, uint32_t block_size_in_sectors, int* err) {
+static MVHDMeta*
+create_sparse_diff(const char* path, const char* par_path, uint64_t size_in_bytes, MVHDGeom* geom, uint32_t block_size_in_sectors, int* err)
+{
uint8_t footer_buff[MVHD_FOOTER_SIZE] = {0};
uint8_t sparse_buff[MVHD_SPARSE_SIZE] = {0};
uint8_t bat_sect[MVHD_SECTOR_SIZE];
@@ -265,6 +323,7 @@ static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path,
mvhd_utf16* w2ku_path_buff = NULL;
mvhd_utf16* w2ru_path_buff = NULL;
uint32_t par_mod_timestamp = 0;
+
if (par_path != NULL) {
par_mod_timestamp = mvhd_file_mod_timestamp(par_path, err);
if (*err != 0) {
@@ -275,6 +334,7 @@ static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path,
goto end;
}
}
+
vhdm = calloc(1, sizeof *vhdm);
if (vhdm == NULL) {
*err = MVHD_ERR_MEM;
@@ -297,15 +357,18 @@ static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path,
goto cleanup_vhdm;
}
mvhd_fseeko64(f, 0, SEEK_SET);
+
/* Note, the sparse header follows the footer copy at the beginning of the file */
if (par_path == NULL) {
- mvhd_gen_footer(&vhdm->footer, size_in_bytes, geom, MVHD_TYPE_DYNAMIC, MVHD_FOOTER_SIZE);
+ gen_footer(&vhdm->footer, size_in_bytes, geom, MVHD_TYPE_DYNAMIC, MVHD_FOOTER_SIZE);
} else {
- mvhd_gen_footer(&vhdm->footer, size_in_bytes, geom, MVHD_TYPE_DIFF, MVHD_FOOTER_SIZE);
+ gen_footer(&vhdm->footer, size_in_bytes, geom, MVHD_TYPE_DIFF, MVHD_FOOTER_SIZE);
}
mvhd_footer_to_buffer(&vhdm->footer, footer_buff);
+
/* As mentioned, start with a copy of the footer */
fwrite(footer_buff, sizeof footer_buff, 1, f);
+
/**
* Calculate the number of (2MB or 512KB) data blocks required to store the entire
* contents of the disk image, followed by the number of sectors the
@@ -347,43 +410,51 @@ static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path,
}
memcpy(vhdm->sparse.par_uuid, par_vhdm->footer.uuid, sizeof vhdm->sparse.par_uuid);
par_loc_offset = bat_offset + ((uint64_t)num_bat_sect * MVHD_SECTOR_SIZE) + (5 * MVHD_SECTOR_SIZE);
- if (mvhd_gen_par_loc(&vhdm->sparse, path, par_path, par_loc_offset, w2ku_path_buff, w2ru_path_buff, (MVHDError*)err) < 0) {
+ if (gen_par_loc(&vhdm->sparse, path, par_path, par_loc_offset, w2ku_path_buff, w2ru_path_buff, (MVHDError*)err) < 0) {
goto cleanup_vhdm;
}
vhdm->sparse.par_timestamp = par_mod_timestamp;
}
- mvhd_gen_sparse_header(&vhdm->sparse, num_blks, bat_offset, block_size_in_sectors);
+ gen_sparse_header(&vhdm->sparse, num_blks, bat_offset, block_size_in_sectors);
mvhd_header_to_buffer(&vhdm->sparse, sparse_buff);
fwrite(sparse_buff, sizeof sparse_buff, 1, f);
+
/* The BAT sectors need to be filled with 0xffffffff */
- for (uint32_t i = 0; i < num_bat_sect; i++) {
+ for (uint32_t k = 0; k < num_bat_sect; k++) {
fwrite(bat_sect, sizeof bat_sect, 1, f);
}
mvhd_write_empty_sectors(f, 5);
+
/**
* If creating a differencing VHD, the paths to the parent image need to be written
* tp the file. Both absolute and relative paths are written
* */
if (par_vhdm != NULL) {
uint64_t curr_pos = (uint64_t)mvhd_ftello64(f);
+
/* Double check my sums... */
assert(curr_pos == par_loc_offset);
+
/* Fill the space required for location data with zero */
uint8_t empty_sect[MVHD_SECTOR_SIZE] = {0};
+
for (int i = 0; i < 2; i++) {
for (uint32_t j = 0; j < (vhdm->sparse.par_loc_entry[i].plat_data_space / MVHD_SECTOR_SIZE); j++) {
fwrite(empty_sect, sizeof empty_sect, 1, f);
}
}
+
/* Now write the location entries */
mvhd_fseeko64(f, vhdm->sparse.par_loc_entry[0].plat_data_offset, SEEK_SET);
fwrite(w2ku_path_buff, vhdm->sparse.par_loc_entry[0].plat_data_len, 1, f);
mvhd_fseeko64(f, vhdm->sparse.par_loc_entry[1].plat_data_offset, SEEK_SET);
fwrite(w2ru_path_buff, vhdm->sparse.par_loc_entry[1].plat_data_len, 1, f);
+
/* and reset the file position to continue */
mvhd_fseeko64(f, vhdm->sparse.par_loc_entry[1].plat_data_offset + vhdm->sparse.par_loc_entry[1].plat_data_space, SEEK_SET);
mvhd_write_empty_sectors(f, 5);
}
+
/* And finish with the footer */
fwrite(footer_buff, sizeof footer_buff, 1, f);
fclose(f);
@@ -395,91 +466,112 @@ static MVHDMeta* mvhd_create_sparse_diff(const char* path, const char* par_path,
cleanup_vhdm:
free(vhdm);
vhdm = NULL;
+
cleanup_par_vhdm:
if (par_vhdm != NULL) {
mvhd_close(par_vhdm);
}
+
end:
free(w2ku_path_buff);
free(w2ru_path_buff);
+
return vhdm;
}
-MVHDMeta* mvhd_create_sparse(const char* path, MVHDGeom geom, int* err) {
+
+MVHDAPI MVHDMeta*
+mvhd_create_sparse(const char* path, MVHDGeom geom, int* err)
+{
uint64_t size_in_bytes = mvhd_calc_size_bytes(&geom);
- return mvhd_create_sparse_diff(path, NULL, size_in_bytes, &geom, MVHD_BLOCK_LARGE, err);
+
+ return create_sparse_diff(path, NULL, size_in_bytes, &geom, MVHD_BLOCK_LARGE, err);
}
-MVHDMeta* mvhd_create_diff(const char* path, const char* par_path, int* err) {
- return mvhd_create_sparse_diff(path, par_path, 0, NULL, MVHD_BLOCK_LARGE, err);
+
+MVHDAPI MVHDMeta*
+mvhd_create_diff(const char* path, const char* par_path, int* err)
+{
+ return create_sparse_diff(path, par_path, 0, NULL, MVHD_BLOCK_LARGE, err);
}
-MVHDMeta* mvhd_create_ex(MVHDCreationOptions options, int* err) {
+
+MVHDAPI MVHDMeta*
+mvhd_create_ex(MVHDCreationOptions options, int* err)
+{
uint32_t geom_sector_size;
- switch (options.type)
- {
- case MVHD_TYPE_FIXED:
- case MVHD_TYPE_DYNAMIC:
- geom_sector_size = mvhd_calc_size_sectors(&(options.geometry));
- if ((options.size_in_bytes > 0 && (options.size_in_bytes % MVHD_SECTOR_SIZE) > 0)
- || (options.size_in_bytes > MVHD_MAX_SIZE_IN_BYTES)
- || (options.size_in_bytes == 0 && geom_sector_size == 0))
- {
- *err = MVHD_ERR_INVALID_SIZE;
- return NULL;
- }
- if (options.size_in_bytes > 0 && ((uint64_t)geom_sector_size * MVHD_SECTOR_SIZE) > options.size_in_bytes)
- {
- *err = MVHD_ERR_INVALID_GEOM;
- return NULL;
- }
+ switch (options.type) {
+ case MVHD_TYPE_FIXED:
+ case MVHD_TYPE_DYNAMIC:
+ geom_sector_size = mvhd_calc_size_sectors(&(options.geometry));
+ if ((options.size_in_bytes > 0 && (options.size_in_bytes % MVHD_SECTOR_SIZE) > 0)
+ || (options.size_in_bytes > MVHD_MAX_SIZE_IN_BYTES)
+ || (options.size_in_bytes == 0 && geom_sector_size == 0)) {
+ *err = MVHD_ERR_INVALID_SIZE;
+ return NULL;
+ }
- if (options.size_in_bytes == 0)
- options.size_in_bytes = (uint64_t)geom_sector_size * MVHD_SECTOR_SIZE;
+ if (options.size_in_bytes > 0 && ((uint64_t)geom_sector_size * MVHD_SECTOR_SIZE) > options.size_in_bytes) {
+ *err = MVHD_ERR_INVALID_GEOM;
+ return NULL;
+ }
- if (geom_sector_size == 0)
- options.geometry = mvhd_calculate_geometry(options.size_in_bytes);
- break;
- case MVHD_TYPE_DIFF:
- if (options.parent_path == NULL)
- {
- *err = MVHD_ERR_FILE;
+ if (options.size_in_bytes == 0)
+ options.size_in_bytes = (uint64_t)geom_sector_size * MVHD_SECTOR_SIZE;
+
+ if (geom_sector_size == 0)
+ options.geometry = mvhd_calculate_geometry(options.size_in_bytes);
+ break;
+
+ case MVHD_TYPE_DIFF:
+ if (options.parent_path == NULL) {
+ *err = MVHD_ERR_FILE;
+ return NULL;
+ }
+ break;
+
+ default:
+ *err = MVHD_ERR_TYPE;
return NULL;
- }
- break;
- default:
- *err = MVHD_ERR_TYPE;
- return NULL;
}
- if (options.path == NULL)
- {
+ if (options.path == NULL) {
*err = MVHD_ERR_FILE;
return NULL;
}
- if (options.type != MVHD_TYPE_FIXED)
- {
+ if (options.type != MVHD_TYPE_FIXED) {
if (options.block_size_in_sectors == MVHD_BLOCK_DEFAULT)
options.block_size_in_sectors = MVHD_BLOCK_LARGE;
- if (options.block_size_in_sectors != MVHD_BLOCK_LARGE && options.block_size_in_sectors != MVHD_BLOCK_SMALL)
- {
+ if (options.block_size_in_sectors != MVHD_BLOCK_LARGE && options.block_size_in_sectors != MVHD_BLOCK_SMALL) {
*err = MVHD_ERR_INVALID_BLOCK_SIZE;
return NULL;
}
}
- switch (options.type)
- {
- case MVHD_TYPE_FIXED:
- return mvhd_create_fixed_raw(options.path, NULL, options.size_in_bytes, &(options.geometry), err, options.progress_callback);
- case MVHD_TYPE_DYNAMIC:
- return mvhd_create_sparse_diff(options.path, NULL, options.size_in_bytes, &(options.geometry), options.block_size_in_sectors, err);
- case MVHD_TYPE_DIFF:
- return mvhd_create_sparse_diff(options.path, options.parent_path, 0, NULL, options.block_size_in_sectors, err);
+ switch (options.type) {
+ case MVHD_TYPE_FIXED:
+ return mvhd_create_fixed_raw(options.path, NULL, options.size_in_bytes, &(options.geometry), err, options.progress_callback);
+
+ case MVHD_TYPE_DYNAMIC:
+ return create_sparse_diff(options.path, NULL, options.size_in_bytes, &(options.geometry), options.block_size_in_sectors, err);
+
+ case MVHD_TYPE_DIFF:
+ return create_sparse_diff(options.path, options.parent_path, 0, NULL, options.block_size_in_sectors, err);
}
return NULL; /* Make the compiler happy */
}
+
+
+bool
+mvhd_is_conectix_str(const void* buffer)
+{
+ if (strncmp(buffer, MVHD_CONECTIX_COOKIE, strlen(MVHD_CONECTIX_COOKIE)) == 0) {
+ return true;
+ }
+
+ return false;
+}
diff --git a/src/disk/minivhd/cwalk.c b/src/disk/minivhd/cwalk.c
index f0c48427c..02964af25 100644
--- a/src/disk/minivhd/cwalk.c
+++ b/src/disk/minivhd/cwalk.c
@@ -1,12 +1,49 @@
+/*
+ * libCWALK Path library for C/C++
+ *
+ * Version: @(#)cwalk.c 1.0.2 2021/03/16
+ *
+ * Authors: Sherman Perry,
+ * Leonard Iklé,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ * Copyright 2020 Leonard Iklé.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
+# define _FILE_OFFSET_BITS 64
#endif
#include
#include
+#include
#include
#include
#include
#include "cwalk.h"
+
+
/**
* We try to default to a different path style depending on the operating
* system. So this should detect whether we should use windows or unix paths.
diff --git a/src/disk/minivhd/cwalk.h b/src/disk/minivhd/cwalk.h
index baa5d432d..380f6fa2c 100644
--- a/src/disk/minivhd/cwalk.h
+++ b/src/disk/minivhd/cwalk.h
@@ -1,10 +1,40 @@
-#pragma once
-
+/*
+ * libCWALK path library for C/C++
+ *
+ * Version: @(#)cwalk.h 1.0.3 2021/03/22
+ *
+ * Authors: Sherman Perry,
+ * Leonard Iklé,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ * Copyright 2020 Leonard Iklé.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
#ifndef CWK_LIBRARY_H
-#define CWK_LIBRARY_H
+# define CWK_LIBRARY_H
-#include
-#include
/**
* A segment represents a single component of a path. For instance, on linux a
@@ -45,6 +75,11 @@ enum cwk_path_style
CWK_STYLE_UNIX
};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/**
* @brief Generates an absolute path based on a base.
*
@@ -454,4 +489,9 @@ void cwk_path_set_style(enum cwk_path_style style);
*/
enum cwk_path_style cwk_path_get_style(void);
+#ifdef __cplusplus
+}
#endif
+
+
+#endif /*CWK_LIBRARY_H*/
diff --git a/src/disk/minivhd/internal.h b/src/disk/minivhd/internal.h
new file mode 100644
index 000000000..d3f930110
--- /dev/null
+++ b/src/disk/minivhd/internal.h
@@ -0,0 +1,429 @@
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Internal definitions.
+ *
+ * Version: @(#)internal.h 1.0.1 2021/03/15
+ *
+ * Author: Sherman Perry,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+#ifndef MINIVHD_INTERNAL_H
+# define MINIVHD_INTERNAL_H
+
+
+#define MVHD_FOOTER_SIZE 512
+#define MVHD_SPARSE_SIZE 1024
+
+#define MVHD_SECTOR_SIZE 512
+#define MVHD_BAT_ENT_PER_SECT 128
+
+#define MVHD_MAX_SIZE_IN_BYTES 0x1fe00000000
+
+#define MVHD_SPARSE_BLK 0xffffffff
+
+/* For simplicity, we don't handle paths longer than this
+ * Note, this is the max path in characters, as that is what
+ * Windows uses
+ */
+#define MVHD_MAX_PATH_CHARS 260
+#define MVHD_MAX_PATH_BYTES 1040
+
+#define MVHD_DIF_LOC_W2RU 0x57327275
+#define MVHD_DIF_LOC_W2KU 0x57326B75
+
+#define MVHD_START_TS 946684800
+
+
+typedef struct MVHDSectorBitmap {
+ uint8_t* curr_bitmap;
+ int sector_count;
+ int curr_block;
+} MVHDSectorBitmap;
+
+typedef struct MVHDFooter {
+ uint8_t cookie[8];
+ uint32_t features;
+ uint32_t fi_fmt_vers;
+ uint64_t data_offset;
+ uint32_t timestamp;
+ uint8_t cr_app[4];
+ uint32_t cr_vers;
+ uint8_t cr_host_os[4];
+ uint64_t orig_sz;
+ uint64_t curr_sz;
+ struct {
+ uint16_t cyl;
+ uint8_t heads;
+ uint8_t spt;
+ } geom;
+ uint32_t disk_type;
+ uint32_t checksum;
+ uint8_t uuid[16];
+ uint8_t saved_st;
+ uint8_t reserved[427];
+} MVHDFooter;
+
+typedef struct MVHDSparseHeader {
+ uint8_t cookie[8];
+ uint64_t data_offset;
+ uint64_t bat_offset;
+ uint32_t head_vers;
+ uint32_t max_bat_ent;
+ uint32_t block_sz;
+ uint32_t checksum;
+ uint8_t par_uuid[16];
+ uint32_t par_timestamp;
+ uint32_t reserved_1;
+ uint8_t par_utf16_name[512];
+ struct {
+ uint32_t plat_code;
+ uint32_t plat_data_space;
+ uint32_t plat_data_len;
+ uint32_t reserved;
+ uint64_t plat_data_offset;
+ } par_loc_entry[8];
+ uint8_t reserved_2[256];
+} MVHDSparseHeader;
+
+struct MVHDMeta {
+ FILE* f;
+ bool readonly;
+ char filename[MVHD_MAX_PATH_BYTES];
+ struct MVHDMeta* parent;
+ MVHDFooter footer;
+ MVHDSparseHeader sparse;
+ uint32_t* block_offset;
+ int sect_per_block;
+ MVHDSectorBitmap bitmap;
+ int (*read_sectors)(struct MVHDMeta*, uint32_t, int, void*);
+ int (*write_sectors)(struct MVHDMeta*, uint32_t, int, void*);
+ struct {
+ uint8_t* zero_data;
+ int sector_count;
+ } format_buffer;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Functions to deal with endian issues
+ */
+uint16_t mvhd_from_be16(uint16_t val);
+uint32_t mvhd_from_be32(uint32_t val);
+uint64_t mvhd_from_be64(uint64_t val);
+uint16_t mvhd_to_be16(uint16_t val);
+uint32_t mvhd_to_be32(uint32_t val);
+uint64_t mvhd_to_be64(uint64_t val);
+
+/**
+ * \brief Check if provided buffer begins with the string "conectix"
+ *
+ * \param [in] buffer The buffer to compare. Must be at least 8 bytes in length
+ *
+ * \return true if the buffer begins with "conectix"
+ * \return false if the buffer does not begin with "conectix"
+ */
+bool mvhd_is_conectix_str(const void* buffer);
+
+/**
+ * \brief Generate a raw 16 byte UUID
+ *
+ * \param [out] uuid A 16 byte buffer in which the generated UUID will be stored to
+ */
+void mvhd_generate_uuid(uint8_t *uuid);
+
+/**
+ * \brief Calculate a VHD formatted timestamp from the current time
+ */
+uint32_t vhd_calc_timestamp(void);
+
+/**
+ * \brief Convert an epoch timestamp to a VHD timestamp
+ *
+ * \param [in] ts epoch timestamp to convert.
+ *
+ * \return The adjusted timestamp, or 0 if the input timestamp is
+ * earlier that 1 Janurary 2000
+ */
+uint32_t mvhd_epoch_to_vhd_ts(time_t ts);
+
+/**
+ * \brief Return the created time from a VHD image
+ *
+ * \param [in] vhdm Pointer to the MiniVHD metadata structure
+ *
+ * \return The created time, as a Unix timestamp
+ */
+time_t vhd_get_created_time(struct MVHDMeta *vhdm);
+
+/**
+ * \brief Cross platform, unicode filepath opening
+ *
+ * This function accounts for the fact that fopen() handles file paths differently compared to other
+ * operating systems. Windows version of fopen() will not handle multi byte encoded text like UTF-8.
+ *
+ * Unicode filepath support on Windows requires using the _wfopen() function, which expects UTF-16LE
+ * encoded path and modestring.
+ *
+ * \param [in] path The filepath to open as a UTF-8 string
+ * \param [in] mode The mode string to use (eg: "rb+"")
+ * \param [out] err The error value, if an error occurrs
+ *
+ * \return a FILE pointer if successful, NULL otherwise. If NULL, check the value of err
+ */
+FILE* mvhd_fopen(const char* path, const char* mode, int* err);
+
+void mvhd_set_encoding_err(int encoding_retval, int* err);
+
+/**
+ * \brief Generate VHD footer checksum
+ *
+ * \param [in] vhdm MiniVHD data structure
+ */
+uint32_t mvhd_gen_footer_checksum(MVHDFooter* footer);
+
+/**
+ * \brief Generate VHD sparse header checksum
+ *
+ * \param [in] vhdm MiniVHD data structure
+ */
+uint32_t mvhd_gen_sparse_checksum(MVHDSparseHeader* header);
+
+uint32_t mvhd_crc32_for_byte(uint32_t r);
+
+/**
+ * \brief Get current position in file stream
+ *
+ * This is a portable version of the POSIX ftello64(). *
+ */
+int64_t mvhd_ftello64(FILE* stream);
+
+/**
+ * \brief Reposition the file stream's position
+ *
+ * This is a portable version of the POSIX fseeko64(). *
+ */
+int mvhd_fseeko64(FILE* stream, int64_t offset, int origin);
+
+/**
+ * \brief Calculate the CRC32 of a data buffer.
+ *
+ * This function can be used for verifying data integrity.
+ *
+ * \param [in] data The data buffer
+ * \param [in] n_bytes The size of the data buffer in bytes
+ *
+ * \return The CRC32 of the data buffer
+ */
+uint32_t mvhd_crc32(const void* data, size_t n_bytes);
+
+/**
+ * \brief Calculate the file modification timestamp.
+ *
+ * This function is primarily to help protect differencing VHD's
+ *
+ * \param [in] path the UTF-8 file path
+ * \param [out] err The error value, if an error occurrs
+ *
+ * \return The file modified timestamp, in VHD compatible timestamp.
+ * 'err' will be set to non-zero on error
+ */
+uint32_t mvhd_file_mod_timestamp(const char* path, int *err);
+
+struct MVHDMeta* mvhd_create_fixed_raw(const char* path, FILE* raw_img, uint64_t size_in_bytes, MVHDGeom* geom, int* err, mvhd_progress_callback progress_callback);
+
+/**
+ * \brief Write zero filled sectors to file.
+ *
+ * Note, the caller should set the file position before calling this
+ * function for correct operation.
+ *
+ * \param [in] f File to write sectors to
+ * \param [in] sector_count The number of sectors to write
+ */
+void mvhd_write_empty_sectors(FILE* f, int sector_count);
+
+/**
+ * \brief Read a fixed VHD image
+ *
+ * Fixed VHD images are essentially raw image files with a footer tacked on
+ * the end. They are therefore straightforward to write
+ *
+ * \param [in] vhdm MiniVHD data structure
+ * \param [in] offset Sector offset to read from
+ * \param [in] num_sectors The desired number of sectors to read
+ * \param [out] out_buff An output buffer to store read sectors. Must be
+ * large enough to hold num_sectors worth of sectors.
+ *
+ * \retval 0 num_sectors were read from file
+ * \retval >0 < num_sectors were read from file
+ */
+int mvhd_fixed_read(struct MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
+
+/**
+ * \brief Read a sparse VHD image
+ *
+ * Sparse, or dynamic images are VHD images that grow as data is written to them.
+ *
+ * This function implements the logic to read sectors from the file, taking into
+ * account the fact that blocks may be stored on disk in any order, and that the
+ * read could cross block boundaries.
+ *
+ * \param [in] vhdm MiniVHD data structure
+ * \param [in] offset Sector offset to read from
+ * \param [in] num_sectors The desired number of sectors to read
+ * \param [out] out_buff An output buffer to store read sectors. Must be
+ * large enough to hold num_sectors worth of sectors.
+ *
+ * \retval 0 num_sectors were read from file
+ * \retval >0 < num_sectors were read from file
+ */
+int mvhd_sparse_read(struct MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
+
+/**
+ * \brief Read a differencing VHD image
+ *
+ * Differencing images are a variant of a sparse image. They contain the grow-on-demand
+ * properties of sparse images, but also reference a parent image. Data is read from the
+ * child image only if it is newer than the data stored in the parent image.
+ *
+ * This function implements the logic to read sectors from the child, or a parent image.
+ * Differencing images may have a differencing image as a parent, creating a chain of images.
+ * There is no theoretical chain length limit, although I do not consider long chains to be
+ * advisable. Verifying the parent-child relationship is not very robust.
+ *
+ * \param [in] vhdm MiniVHD data structure
+ * \param [in] offset Sector offset to read from
+ * \param [in] num_sectors The desired number of sectors to read
+ * \param [out] out_buff An output buffer to store read sectors. Must be
+ * large enough to hold num_sectors worth of sectors.
+ *
+ * \retval 0 num_sectors were read from file
+ * \retval >0 < num_sectors were read from file
+ */
+int mvhd_diff_read(struct MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
+
+/**
+ * \brief Write to a fixed VHD image
+ *
+ * Fixed VHD images are essentially raw image files with a footer tacked on
+ * the end. They are therefore straightforward to write
+ *
+ * \param [in] vhdm MiniVHD data structure
+ * \param [in] offset Sector offset to write to
+ * \param [in] num_sectors The desired number of sectors to write
+ * \param [in] in_buff A source buffer to write sectors from. Must be
+ * large enough to hold num_sectors worth of sectors.
+ *
+ * \retval 0 num_sectors were written to file
+ * \retval >0 < num_sectors were written to file
+ */
+int mvhd_fixed_write(struct MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
+
+/**
+ * \brief Write to a sparse or differencing VHD image
+ *
+ * Sparse, or dynamic images are VHD images that grow as data is written to them.
+ *
+ * Differencing images are a variant of a sparse image. They contain the grow-on-demand
+ * properties of sparse images, but also reference a parent image. Data is always written
+ * to the child image. This makes writing to differencing images essentially identical to
+ * writing to sparse images, hence they use the same function.
+ *
+ * This function implements the logic to write sectors to the file, taking into
+ * account the fact that blocks may be stored on disk in any order, and that the
+ * write operation could cross block boundaries.
+ *
+ * \param [in] vhdm MiniVHD data structure
+ * \param [in] offset Sector offset to write to
+ * \param [in] num_sectors The desired number of sectors to write
+ * \param [in] in_buff A source buffer to write sectors from. Must be
+ * large enough to hold num_sectors worth of sectors.
+ *
+ * \retval 0 num_sectors were written to file
+ * \retval >0 < num_sectors were written to file
+ */
+int mvhd_sparse_diff_write(struct MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
+
+/**
+ * \brief A no-op function to "write" to read-only VHD images
+ *
+ * \param [in] vhdm MiniVHD data structure
+ * \param [in] offset Sector offset to write to
+ * \param [in] num_sectors The desired number of sectors to write
+ * \param [in] in_buff A source buffer to write sectors from. Must be
+ * large enough to hold num_sectors worth of sectors.
+ *
+ * \retval 0 num_sectors were written to file
+ * \retval >0 < num_sectors were written to file
+ */
+int mvhd_noop_write(struct MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
+
+/**
+ * \brief Save the contents of a VHD footer from a buffer to a struct
+ *
+ * \param [out] footer save contents of buffer into footer
+ * \param [in] buffer VHD footer in raw bytes
+ */
+void mvhd_buffer_to_footer(MVHDFooter* footer, uint8_t* buffer);
+
+/**
+ * \brief Save the contents of a VHD sparse header from a buffer to a struct
+ *
+ * \param [out] header save contents of buffer into header
+ * \param [in] buffer VHD header in raw bytes
+ */
+void mvhd_buffer_to_header(MVHDSparseHeader* header, uint8_t* buffer);
+
+/**
+ * \brief Save the contents of a VHD footer struct to a buffer
+ *
+ * \param [in] footer save contents of struct into buffer
+ * \param [out] buffer VHD footer in raw bytes
+ */
+void mvhd_footer_to_buffer(MVHDFooter* footer, uint8_t* buffer);
+
+/**
+ * \brief Save the contents of a VHD sparse header struct to a buffer
+ *
+ * \param [in] header save contents of struct into buffer
+ * \param [out] buffer VHD sparse header in raw bytes
+ */
+void mvhd_header_to_buffer(MVHDSparseHeader* header, uint8_t* buffer);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /*MINIVHD_INTERNAL_H*/
diff --git a/src/disk/minivhd/libxml2_encoding.h b/src/disk/minivhd/libxml2_encoding.h
deleted file mode 100644
index d86770b86..000000000
--- a/src/disk/minivhd/libxml2_encoding.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef LIBXML2_ENCODING_H
-#define LIBXML2_ENCODING_H
-
-#include
-typedef uint16_t mvhd_utf16;
-
-void xmlEncodingInit(void);
-int UTF16LEToUTF8(unsigned char* out, int *outlen, const unsigned char* inb, int *inlenb);
-int UTF8ToUTF16LE(unsigned char* outb, int *outlen, const unsigned char* in, int *inlen);
-int UTF16BEToUTF8(unsigned char* out, int *outlen, const unsigned char* inb, int *inlenb);
-int UTF8ToUTF16BE(unsigned char* outb, int *outlen, const unsigned char* in, int *inlen);
-#endif
diff --git a/src/disk/minivhd/minivhd_manage.c b/src/disk/minivhd/manage.c
similarity index 71%
rename from src/disk/minivhd/minivhd_manage.c
rename to src/disk/minivhd/manage.c
index ce0f31f60..053acc40c 100644
--- a/src/disk/minivhd/minivhd_manage.c
+++ b/src/disk/minivhd/manage.c
@@ -1,66 +1,105 @@
-/**
- * \file
- * \brief VHD management functions (open, close, read write etc)
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * VHD management functions (open, close, read write etc)
+ *
+ * Version: @(#)manage.c 1.0.4 2021/04/16
+ *
+ * Authors: Sherman Perry,
+ * Fred N. van Kempen,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ * Copyright 2021 Fred N. van Kempen.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
*/
#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
+# define _FILE_OFFSET_BITS 64
#endif
#include
#include
#include
#include
#include
-#include "cwalk.h"
-#include "libxml2_encoding.h"
-#include "minivhd_internal.h"
-#include "minivhd_io.h"
-#include "minivhd_util.h"
-#include "minivhd_struct_rw.h"
+#include
#include "minivhd.h"
+#include "internal.h"
+#include "version.h"
+#include "cwalk.h"
+#include "xml2_encoding.h"
+
-int mvhd_errno = 0;
-static char tmp_open_path[MVHD_MAX_PATH_BYTES] = {0};
struct MVHDPaths {
- char dir_path[MVHD_MAX_PATH_BYTES];
- char file_name[MVHD_MAX_PATH_BYTES];
- char w2ku_path[MVHD_MAX_PATH_BYTES];
- char w2ru_path[MVHD_MAX_PATH_BYTES];
- char joined_path[MVHD_MAX_PATH_BYTES];
+ char dir_path[MVHD_MAX_PATH_BYTES];
+ char file_name[MVHD_MAX_PATH_BYTES];
+ char w2ku_path[MVHD_MAX_PATH_BYTES];
+ char w2ru_path[MVHD_MAX_PATH_BYTES];
+ char joined_path[MVHD_MAX_PATH_BYTES];
uint16_t tmp_src_path[MVHD_MAX_PATH_CHARS];
};
-static void mvhd_read_footer(MVHDMeta* vhdm);
-static void mvhd_read_sparse_header(MVHDMeta* vhdm);
-static bool mvhd_footer_checksum_valid(MVHDMeta* vhdm);
-static bool mvhd_sparse_checksum_valid(MVHDMeta* vhdm);
-static int mvhd_read_bat(MVHDMeta *vhdm, MVHDError* err);
-static void mvhd_calc_sparse_values(MVHDMeta* vhdm);
-static int mvhd_init_sector_bitmap(MVHDMeta* vhdm, MVHDError* err);
+
+int mvhd_errno = 0;
+
+
+static char tmp_open_path[MVHD_MAX_PATH_BYTES] = {0};
+
/**
* \brief Populate data stuctures with content from a VHD footer
*
* \param [in] vhdm MiniVHD data structure
*/
-static void mvhd_read_footer(MVHDMeta* vhdm) {
+static void
+read_footer(MVHDMeta* vhdm)
+{
uint8_t buffer[MVHD_FOOTER_SIZE];
+
mvhd_fseeko64(vhdm->f, -MVHD_FOOTER_SIZE, SEEK_END);
(void) !fread(buffer, sizeof buffer, 1, vhdm->f);
mvhd_buffer_to_footer(&vhdm->footer, buffer);
}
+
/**
* \brief Populate data stuctures with content from a VHD sparse header
*
* \param [in] vhdm MiniVHD data structure
*/
-static void mvhd_read_sparse_header(MVHDMeta* vhdm) {
+static void
+read_sparse_header(MVHDMeta* vhdm)
+{
uint8_t buffer[MVHD_SPARSE_SIZE];
+
mvhd_fseeko64(vhdm->f, vhdm->footer.data_offset, SEEK_SET);
(void) !fread(buffer, sizeof buffer, 1, vhdm->f);
mvhd_buffer_to_header(&vhdm->sparse, buffer);
}
+
/**
* \brief Validate VHD footer checksum
*
@@ -68,10 +107,13 @@ static void mvhd_read_sparse_header(MVHDMeta* vhdm) {
*
* \param [in] vhdm MiniVHD data structure
*/
-static bool mvhd_footer_checksum_valid(MVHDMeta* vhdm) {
+static bool
+footer_checksum_valid(MVHDMeta* vhdm)
+{
return vhdm->footer.checksum == mvhd_gen_footer_checksum(&vhdm->footer);
}
+
/**
* \brief Validate VHD sparse header checksum
*
@@ -79,10 +121,13 @@ static bool mvhd_footer_checksum_valid(MVHDMeta* vhdm) {
*
* \param [in] vhdm MiniVHD data structure
*/
-static bool mvhd_sparse_checksum_valid(MVHDMeta* vhdm) {
+static bool
+sparse_checksum_valid(MVHDMeta* vhdm)
+{
return vhdm->sparse.checksum == mvhd_gen_sparse_checksum(&vhdm->sparse);
}
+
/**
* \brief Read BAT into MiniVHD data structure
*
@@ -96,13 +141,17 @@ static bool mvhd_sparse_checksum_valid(MVHDMeta* vhdm) {
* \retval -1 if an error occurrs. Check value of err in this case
* \retval 0 if the function call succeeds
*/
-static int mvhd_read_bat(MVHDMeta *vhdm, MVHDError* err) {
+static int
+read_bat(MVHDMeta *vhdm, MVHDError* err)
+{
vhdm->block_offset = calloc(vhdm->sparse.max_bat_ent, sizeof *vhdm->block_offset);
if (vhdm->block_offset == NULL) {
*err = MVHD_ERR_MEM;
return -1;
}
+
mvhd_fseeko64(vhdm->f, vhdm->sparse.bat_offset, SEEK_SET);
+
for (uint32_t i = 0; i < vhdm->sparse.max_bat_ent; i++) {
(void) !fread(&vhdm->block_offset[i], sizeof *vhdm->block_offset, 1, vhdm->f);
vhdm->block_offset[i] = mvhd_from_be32(vhdm->block_offset[i]);
@@ -110,20 +159,25 @@ static int mvhd_read_bat(MVHDMeta *vhdm, MVHDError* err) {
return 0;
}
+
/**
* \brief Perform a one-time calculation of some sparse VHD values
*
* \param [in] vhdm MiniVHD data structure
*/
-static void mvhd_calc_sparse_values(MVHDMeta* vhdm) {
+static void
+calc_sparse_values(MVHDMeta* vhdm)
+{
vhdm->sect_per_block = vhdm->sparse.block_sz / MVHD_SECTOR_SIZE;
int bm_bytes = vhdm->sect_per_block / 8;
vhdm->bitmap.sector_count = bm_bytes / MVHD_SECTOR_SIZE;
+
if (bm_bytes % MVHD_SECTOR_SIZE > 0) {
vhdm->bitmap.sector_count++;
}
}
+
/**
* \brief Allocate memory for a sector bitmap.
*
@@ -137,16 +191,21 @@ static void mvhd_calc_sparse_values(MVHDMeta* vhdm) {
* \retval -1 if an error occurrs. Check value of err in this case
* \retval 0 if the function call succeeds
*/
-static int mvhd_init_sector_bitmap(MVHDMeta* vhdm, MVHDError* err) {
+static int
+init_sector_bitmap(MVHDMeta* vhdm, MVHDError* err)
+{
vhdm->bitmap.curr_bitmap = calloc(vhdm->bitmap.sector_count, MVHD_SECTOR_SIZE);
if (vhdm->bitmap.curr_bitmap == NULL) {
*err = MVHD_ERR_MEM;
return -1;
}
+
vhdm->bitmap.curr_block = -1;
+
return 0;
}
+
/**
* \brief Check if the path for a given platform code exists
*
@@ -163,13 +222,19 @@ static int mvhd_init_sector_bitmap(MVHDMeta* vhdm, MVHDError* err) {
* \retval true if a file is found
* \retval false if a file is not found
*/
-static bool mvhd_parent_path_exists(struct MVHDPaths* paths, uint32_t plat_code) {
- memset(paths->joined_path, 0, sizeof paths->joined_path);
+static bool
+mvhd_parent_path_exists(struct MVHDPaths* paths, uint32_t plat_code)
+{
FILE* f;
- int cwk_ret, ferr;
- enum cwk_path_style style = cwk_path_guess_style((const char*)paths->dir_path);
+ int ferr;
+ size_t cwk_ret;
+ enum cwk_path_style style;
+
+ memset(paths->joined_path, 0, sizeof paths->joined_path);
+ style = cwk_path_guess_style((const char*)paths->dir_path);
cwk_path_set_style(style);
cwk_ret = 1;
+
if (plat_code == MVHD_DIF_LOC_W2RU && *paths->w2ru_path) {
cwk_ret = cwk_path_join((const char*)paths->dir_path, (const char*)paths->w2ru_path, paths->joined_path, sizeof paths->joined_path);
} else if (plat_code == MVHD_DIF_LOC_W2KU && *paths->w2ku_path) {
@@ -181,6 +246,7 @@ static bool mvhd_parent_path_exists(struct MVHDPaths* paths, uint32_t plat_code)
if (cwk_ret > MVHD_MAX_PATH_BYTES) {
return false;
}
+
f = mvhd_fopen((const char*)paths->joined_path, "rb", &ferr);
if (f != NULL) {
/* We found a file at the requested path! */
@@ -188,11 +254,12 @@ static bool mvhd_parent_path_exists(struct MVHDPaths* paths, uint32_t plat_code)
tmp_open_path[sizeof tmp_open_path - 1] = '\0';
fclose(f);
return true;
- } else {
- return false;
}
+
+ return false;
}
+
/**
* \brief attempt to obtain a file path to a file that may be a valid VHD image
*
@@ -208,27 +275,33 @@ static bool mvhd_parent_path_exists(struct MVHDPaths* paths, uint32_t plat_code)
* \return a pointer to the global string `tmp_open_path`, or NULL if a path could
* not be found, or some error occurred
*/
-static char* mvhd_get_diff_parent_path(MVHDMeta* vhdm, int* err) {
+static char*
+get_diff_parent_path(MVHDMeta* vhdm, int* err)
+{
int utf_outlen, utf_inlen, utf_ret;
- char* par_fp = NULL;
+ char *par_fp = NULL;
+ struct MVHDPaths *paths;
+ size_t dirlen;
+
/* We can't resolve relative paths if we don't have an absolute
path to work with */
if (!cwk_path_is_absolute((const char*)vhdm->filename)) {
*err = MVHD_ERR_PATH_REL;
goto end;
}
- struct MVHDPaths* paths = calloc(1, sizeof *paths);
+
+ paths = calloc(1, sizeof *paths);
if (paths == NULL) {
*err = MVHD_ERR_MEM;
goto end;
}
- size_t dirlen;
cwk_path_get_dirname((const char*)vhdm->filename, &dirlen);
if (dirlen >= sizeof paths->dir_path) {
*err = MVHD_ERR_PATH_LEN;
goto paths_cleanup;
}
memcpy(paths->dir_path, vhdm->filename, dirlen);
+
/* Get the filename field from the sparse header. */
utf_outlen = (int)sizeof paths->file_name;
utf_inlen = (int)sizeof vhdm->sparse.par_utf16_name;
@@ -237,8 +310,10 @@ static char* mvhd_get_diff_parent_path(MVHDMeta* vhdm, int* err) {
mvhd_set_encoding_err(utf_ret, err);
goto paths_cleanup;
}
+
/* Now read the parent locator entries, both relative and absolute, if they exist */
unsigned char* loc_path;
+
for (int i = 0; i < 8; i++) {
utf_outlen = MVHD_MAX_PATH_BYTES - 1;
if (vhdm->sparse.par_loc_entry[i].plat_code == MVHD_DIF_LOC_W2RU) {
@@ -248,6 +323,7 @@ static char* mvhd_get_diff_parent_path(MVHDMeta* vhdm, int* err) {
} else {
continue;
}
+
utf_inlen = vhdm->sparse.par_loc_entry[i].plat_data_len;
if (utf_inlen > MVHD_MAX_PATH_BYTES) {
*err = MVHD_ERR_PATH_LEN;
@@ -255,6 +331,7 @@ static char* mvhd_get_diff_parent_path(MVHDMeta* vhdm, int* err) {
}
mvhd_fseeko64(vhdm->f, vhdm->sparse.par_loc_entry[i].plat_data_offset, SEEK_SET);
(void) !fread(paths->tmp_src_path, sizeof (uint8_t), utf_inlen, vhdm->f);
+
/* Note, the W2*u parent locators are UTF-16LE, unlike the filename field previously obtained,
which is UTF-16BE */
utf_ret = UTF16LEToUTF8(loc_path, &utf_outlen, (const unsigned char*)paths->tmp_src_path, &utf_inlen);
@@ -263,22 +340,26 @@ static char* mvhd_get_diff_parent_path(MVHDMeta* vhdm, int* err) {
goto paths_cleanup;
}
}
+
/* We have paths in UTF-8. We should have enough info to try and find the parent VHD */
/* Does the relative path exist? */
if (mvhd_parent_path_exists(paths, MVHD_DIF_LOC_W2RU)) {
par_fp = tmp_open_path;
goto paths_cleanup;
}
+
/* What about trying the child directory? */
if (mvhd_parent_path_exists(paths, 0)) {
par_fp = tmp_open_path;
goto paths_cleanup;
}
+
/* Well, all else fails, try the stored absolute path, if it exists */
if (mvhd_parent_path_exists(paths, MVHD_DIF_LOC_W2KU)) {
par_fp = tmp_open_path;
goto paths_cleanup;
}
+
/* If we reach this point, we could not find a path with a valid file */
par_fp = NULL;
*err = MVHD_ERR_PAR_NOT_FOUND;
@@ -286,10 +367,12 @@ static char* mvhd_get_diff_parent_path(MVHDMeta* vhdm, int* err) {
paths_cleanup:
free(paths);
paths = NULL;
+
end:
return par_fp;
}
+
/**
* \brief Attach the read/write function pointers to read/write functions
*
@@ -298,44 +381,90 @@ end:
*
* \param [in] vhdm MiniVHD data structure
*/
-static void mvhd_assign_io_funcs(MVHDMeta* vhdm) {
+static void
+assign_io_funcs(MVHDMeta* vhdm)
+{
switch (vhdm->footer.disk_type) {
- case MVHD_TYPE_FIXED:
- vhdm->read_sectors = mvhd_fixed_read;
- vhdm->write_sectors = mvhd_fixed_write;
- break;
- case MVHD_TYPE_DYNAMIC:
- vhdm->read_sectors = mvhd_sparse_read;
- vhdm->write_sectors = mvhd_sparse_diff_write;
- break;
- case MVHD_TYPE_DIFF:
- vhdm->read_sectors = mvhd_diff_read;
- vhdm->write_sectors = mvhd_sparse_diff_write;
- break;
+ case MVHD_TYPE_FIXED:
+ vhdm->read_sectors = mvhd_fixed_read;
+ vhdm->write_sectors = mvhd_fixed_write;
+ break;
+
+ case MVHD_TYPE_DYNAMIC:
+ vhdm->read_sectors = mvhd_sparse_read;
+ vhdm->write_sectors = mvhd_sparse_diff_write;
+ break;
+
+ case MVHD_TYPE_DIFF:
+ vhdm->read_sectors = mvhd_diff_read;
+ vhdm->write_sectors = mvhd_sparse_diff_write;
+ break;
}
- if (vhdm->readonly) {
+
+ if (vhdm->readonly)
vhdm->write_sectors = mvhd_noop_write;
- }
}
-bool mvhd_file_is_vhd(FILE* f) {
- if (f) {
- uint8_t con_str[8];
- mvhd_fseeko64(f, -MVHD_FOOTER_SIZE, SEEK_END);
- (void) !fread(con_str, sizeof con_str, 1, f);
- return mvhd_is_conectix_str(con_str);
- } else {
- return false;
- }
+
+/**
+ * \brief Return the library version as a string
+ */
+MVHDAPI const char *
+mvhd_version(void)
+{
+ return LIB_VERSION_4;
}
-MVHDGeom mvhd_calculate_geometry(uint64_t size) {
+
+/**
+ * \brief Return the library version as a number
+ */
+MVHDAPI uint32_t
+mvhd_version_id(void)
+{
+ return (LIB_VER_MAJOR << 24) | (LIB_VER_MINOR << 16) |
+ (LIB_VER_REV << 16) | LIB_VER_PATCH;
+}
+
+
+/**
+ * \brief A simple test to see if a given file is a VHD
+ *
+ * \param [in] f file to test
+ *
+ * \retval 1 if f is a VHD
+ * \retval 0 if f is not a VHD
+ */
+MVHDAPI int
+mvhd_file_is_vhd(FILE* f)
+{
+ uint8_t con_str[8];
+
+ if (f == NULL) {
+ return 0;
+ }
+
+ mvhd_fseeko64(f, -MVHD_FOOTER_SIZE, SEEK_END);
+ fread(con_str, sizeof con_str, 1, f);
+ if (mvhd_is_conectix_str(con_str)) {
+ return 1;
+ }
+
+ return 0;
+}
+
+
+MVHDAPI MVHDGeom
+mvhd_calculate_geometry(uint64_t size)
+{
MVHDGeom chs;
uint32_t ts = (uint32_t)(size / MVHD_SECTOR_SIZE);
uint32_t spt, heads, cyl, cth;
+
if (ts > 65535 * 16 * 255) {
ts = 65535 * 16 * 255;
}
+
if (ts >= 65535 * 16 * 63) {
spt = 255;
heads = 16;
@@ -358,77 +487,95 @@ MVHDGeom mvhd_calculate_geometry(uint64_t size) {
cth = ts / spt;
}
}
+
cyl = cth / heads;
chs.heads = heads;
chs.spt = spt;
chs.cyl = cyl;
+
return chs;
}
-MVHDMeta* mvhd_open(const char* path, bool readonly, int* err) {
+
+MVHDAPI MVHDMeta*
+mvhd_open(const char* path, int readonly, int* err)
+{
MVHDError open_err;
+
MVHDMeta *vhdm = calloc(sizeof *vhdm, 1);
if (vhdm == NULL) {
*err = MVHD_ERR_MEM;
goto end;
}
+
if (strlen(path) >= sizeof vhdm->filename) {
*err = MVHD_ERR_PATH_LEN;
goto cleanup_vhdm;
}
+
//This is safe, as we've just checked for potential overflow above
strcpy(vhdm->filename, path);
- vhdm->f = readonly ? mvhd_fopen((const char*)vhdm->filename, "rb", err) : mvhd_fopen((const char*)vhdm->filename, "rb+", err);
+
+ if (readonly) {
+ vhdm->f = mvhd_fopen((const char*)vhdm->filename, "rb", err);
+ } else {
+ vhdm->f = mvhd_fopen((const char*)vhdm->filename, "rb+", err);
+ }
if (vhdm->f == NULL) {
/* note, mvhd_fopen sets err for us */
goto cleanup_vhdm;
}
vhdm->readonly = readonly;
+
if (!mvhd_file_is_vhd(vhdm->f)) {
*err = MVHD_ERR_NOT_VHD;
goto cleanup_file;
}
- mvhd_read_footer(vhdm);
- if (!mvhd_footer_checksum_valid(vhdm)) {
+
+ read_footer(vhdm);
+ if (!footer_checksum_valid(vhdm)) {
*err = MVHD_ERR_FOOTER_CHECKSUM;
goto cleanup_file;
}
if (vhdm->footer.disk_type == MVHD_TYPE_DIFF || vhdm->footer.disk_type == MVHD_TYPE_DYNAMIC) {
- mvhd_read_sparse_header(vhdm);
- if (!mvhd_sparse_checksum_valid(vhdm)) {
+ read_sparse_header(vhdm);
+ if (!sparse_checksum_valid(vhdm)) {
*err = MVHD_ERR_SPARSE_CHECKSUM;
goto cleanup_file;
}
- if (mvhd_read_bat(vhdm, &open_err) == -1) {
+ if (read_bat(vhdm, &open_err) == -1) {
*err = open_err;
goto cleanup_file;
}
- mvhd_calc_sparse_values(vhdm);
- if (mvhd_init_sector_bitmap(vhdm, &open_err) == -1) {
+ calc_sparse_values(vhdm);
+ if (init_sector_bitmap(vhdm, &open_err) == -1) {
*err = open_err;
goto cleanup_bat;
}
-
} else if (vhdm->footer.disk_type != MVHD_TYPE_FIXED) {
*err = MVHD_ERR_TYPE;
goto cleanup_bitmap;
}
- mvhd_assign_io_funcs(vhdm);
+ assign_io_funcs(vhdm);
+
vhdm->format_buffer.zero_data = calloc(64, MVHD_SECTOR_SIZE);
if (vhdm->format_buffer.zero_data == NULL) {
*err = MVHD_ERR_MEM;
goto cleanup_bitmap;
}
+
vhdm->format_buffer.sector_count = 64;
if (vhdm->footer.disk_type == MVHD_TYPE_DIFF) {
- char* par_path = mvhd_get_diff_parent_path(vhdm, err);
+ char* par_path = get_diff_parent_path(vhdm, err);
if (par_path == NULL) {
goto cleanup_format_buff;
}
+
uint32_t par_mod_ts = mvhd_file_mod_timestamp(par_path, err);
if (*err != 0) {
goto cleanup_format_buff;
}
+
if (vhdm->sparse.par_timestamp != par_mod_ts) {
/* The last-modified timestamp is to fragile to make this a fatal error.
Instead, we inform the caller of the potential problem. */
@@ -438,57 +585,78 @@ MVHDMeta* mvhd_open(const char* path, bool readonly, int* err) {
if (vhdm->parent == NULL) {
goto cleanup_format_buff;
}
+
if (memcmp(vhdm->sparse.par_uuid, vhdm->parent->footer.uuid, sizeof vhdm->sparse.par_uuid) != 0) {
*err = MVHD_ERR_INVALID_PAR_UUID;
goto cleanup_format_buff;
}
}
- /* If we've reached this point, we are good to go, so skip the cleanup steps */
+
+ /*
+ * If we've reached this point, we are good to go,
+ * so skip the cleanup steps.
+ */
goto end;
+
cleanup_format_buff:
free(vhdm->format_buffer.zero_data);
vhdm->format_buffer.zero_data = NULL;
+
cleanup_bitmap:
free(vhdm->bitmap.curr_bitmap);
vhdm->bitmap.curr_bitmap = NULL;
+
cleanup_bat:
free(vhdm->block_offset);
vhdm->block_offset = NULL;
+
cleanup_file:
fclose(vhdm->f);
vhdm->f = NULL;
+
cleanup_vhdm:
free(vhdm);
vhdm = NULL;
+
end:
return vhdm;
}
-void mvhd_close(MVHDMeta* vhdm) {
- if (vhdm != NULL) {
- if (vhdm->parent != NULL) {
- mvhd_close(vhdm->parent);
- }
- fclose(vhdm->f);
- if (vhdm->block_offset != NULL) {
- free(vhdm->block_offset);
- vhdm->block_offset = NULL;
- }
- if (vhdm->bitmap.curr_bitmap != NULL) {
- free(vhdm->bitmap.curr_bitmap);
- vhdm->bitmap.curr_bitmap = NULL;
- }
- if (vhdm->format_buffer.zero_data != NULL) {
- free(vhdm->format_buffer.zero_data);
- vhdm->format_buffer.zero_data = NULL;
- }
- free(vhdm);
- vhdm = NULL;
+
+MVHDAPI void
+mvhd_close(MVHDMeta* vhdm)
+{
+ if (vhdm == NULL)
+ return;
+
+ if (vhdm->parent != NULL) {
+ mvhd_close(vhdm->parent);
}
+
+ fclose(vhdm->f);
+
+ if (vhdm->block_offset != NULL) {
+ free(vhdm->block_offset);
+ vhdm->block_offset = NULL;
+ }
+ if (vhdm->bitmap.curr_bitmap != NULL) {
+ free(vhdm->bitmap.curr_bitmap);
+ vhdm->bitmap.curr_bitmap = NULL;
+ }
+ if (vhdm->format_buffer.zero_data != NULL) {
+ free(vhdm->format_buffer.zero_data);
+ vhdm->format_buffer.zero_data = NULL;
+ }
+
+ free(vhdm);
}
-int mvhd_diff_update_par_timestamp(MVHDMeta* vhdm, int* err) {
+
+MVHDAPI int
+mvhd_diff_update_par_timestamp(MVHDMeta* vhdm, int* err)
+{
uint8_t sparse_buff[1024];
+
if (vhdm == NULL || err == NULL) {
*err = MVHD_ERR_INVALID_PARAMS;
return -1;
@@ -497,7 +665,7 @@ int mvhd_diff_update_par_timestamp(MVHDMeta* vhdm, int* err) {
*err = MVHD_ERR_TYPE;
return -1;
}
- char* par_path = mvhd_get_diff_parent_path(vhdm, err);
+ char* par_path = get_diff_parent_path(vhdm, err);
if (par_path == NULL) {
return -1;
}
@@ -505,31 +673,53 @@ int mvhd_diff_update_par_timestamp(MVHDMeta* vhdm, int* err) {
if (*err != 0) {
return -1;
}
+
/* Update the timestamp and sparse header checksum */
vhdm->sparse.par_timestamp = par_mod_ts;
vhdm->sparse.checksum = mvhd_gen_sparse_checksum(&vhdm->sparse);
+
/* Generate and write the updated sparse header */
mvhd_header_to_buffer(&vhdm->sparse, sparse_buff);
mvhd_fseeko64(vhdm->f, (int64_t)vhdm->footer.data_offset, SEEK_SET);
fwrite(sparse_buff, sizeof sparse_buff, 1, vhdm->f);
+
return 0;
}
-int mvhd_read_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff) {
+
+MVHDAPI int
+mvhd_read_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff)
+{
return vhdm->read_sectors(vhdm, offset, num_sectors, out_buff);
}
-int mvhd_write_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff) {
+
+MVHDAPI int
+mvhd_write_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff)
+{
return vhdm->write_sectors(vhdm, offset, num_sectors, in_buff);
}
-int mvhd_format_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors) {
+
+MVHDAPI int
+mvhd_format_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors)
+{
int num_full = num_sectors / vhdm->format_buffer.sector_count;
int remain = num_sectors % vhdm->format_buffer.sector_count;
+
for (int i = 0; i < num_full; i++) {
vhdm->write_sectors(vhdm, offset, vhdm->format_buffer.sector_count, vhdm->format_buffer.zero_data);
offset += vhdm->format_buffer.sector_count;
}
+
vhdm->write_sectors(vhdm, offset, remain, vhdm->format_buffer.zero_data);
+
return 0;
}
+
+
+MVHDAPI MVHDType
+mvhd_get_type(MVHDMeta* vhdm)
+{
+ return vhdm->footer.disk_type;
+}
diff --git a/src/disk/minivhd/minivhd.h b/src/disk/minivhd/minivhd.h
index df3a24bb3..929ea5b27 100644
--- a/src/disk/minivhd/minivhd.h
+++ b/src/disk/minivhd/minivhd.h
@@ -1,11 +1,49 @@
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ * MiniVHD is a minimalist implementation of read/write/creation
+ * of VHD files. It is designed to read and write to VHD files
+ * at a sector level. It does not enable file access, or provide
+ * mounting options. Those features are left to more advanced
+ * libraries and/or the operating system.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Definitions for the MiniVHD library.
+ *
+ * Version: @(#)minivhd.h 1.0.3 2021/04/16
+ *
+ * Authors: Sherman Perry,
+ * Fred N. van Kempen,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ * Copyright 2021 Fred N. van Kempen.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
#ifndef MINIVHD_H
-#define MINIVHD_H
+# define MINIVHD_H
-#include
-#include
-#include
-
-extern int mvhd_errno;
typedef enum MVHDError {
MVHD_ERR_MEM = -128,
@@ -46,6 +84,11 @@ typedef struct MVHDGeom {
uint8_t spt;
} MVHDGeom;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef void (*mvhd_progress_callback)(uint32_t current_sector, uint32_t total_sectors);
typedef struct MVHDCreationOptions {
@@ -60,6 +103,42 @@ typedef struct MVHDCreationOptions {
typedef struct MVHDMeta MVHDMeta;
+
+extern int mvhd_errno;
+
+
+/* Shared-library madness. */
+//#if defined(_WIN32)
+//# ifdef STATIC
+# define MVHDAPI /*nothing*/
+//# else
+//# ifdef BUILDING_LIBRARY
+//# define MVHDAPI __declspec(dllexport)
+//# else
+//# define MVHDAPI __declspec(dllimport)
+//# endif
+//# endif
+//#elif defined(__GNUC__)
+//# ifdef BUILDING_LIBRARY
+//# define MVHDAPI __attribute__((visibility("default")))
+//# else
+//# define MVHDAPI /*nothing*/
+//# endif
+//#else
+//# define MVHDAPI /*nothing*/
+//#endif
+
+
+/**
+ * \brief Return the library version as a string
+ */
+MVHDAPI const char *mvhd_version(void);
+
+/**
+ * \brief Return the library version as a number
+ */
+MVHDAPI uint32_t mvhd_version_id(void);
+
/**
* \brief Output a string from a MiniVHD error number
*
@@ -67,17 +146,26 @@ typedef struct MVHDMeta MVHDMeta;
*
* \return Error string
*/
-const char* mvhd_strerr(MVHDError err);
+MVHDAPI const char* mvhd_strerr(MVHDError err);
/**
* \brief A simple test to see if a given file is a VHD
*
* \param [in] f file to test
*
- * \retval true if f is a VHD
- * \retval false if f is not a VHD
+ * \retval 1 if f is a VHD
+ * \retval 0 if f is not a VHD
*/
-bool mvhd_file_is_vhd(FILE* f);
+MVHDAPI int mvhd_file_is_vhd(FILE* f);
+
+/**
+ * \brief Return the file type of the given file
+ *
+ * \param [in] vhdm VHD to check.
+ *
+ * \retval one of the defined MVHDType values
+ */
+MVHDAPI MVHDType mvhd_get_type(MVHDMeta* vhdm);
/**
* \brief Open a VHD image for reading and/or writing
@@ -89,7 +177,7 @@ bool mvhd_file_is_vhd(FILE* f);
*
* \param [in] Absolute path to VHD file. Relative path will cause issues when opening
* a differencing VHD file
- * \param [in] readonly set this to true to open the VHD in a read only manner
+ * \param [in] readonly set this to 1 to open the VHD in a read only manner
* \param [out] err will be set if the VHD fails to open. Value could be one of
* MVHD_ERR_MEM, MVHD_ERR_FILE, MVHD_ERR_NOT_VHD, MVHD_ERR_FOOTER_CHECKSUM, MVHD_ERR_SPARSE_CHECKSUM,
* MVHD_ERR_TYPE, MVHD_ERR_TIMESTAMP
@@ -98,7 +186,7 @@ bool mvhd_file_is_vhd(FILE* f);
* \return MVHDMeta pointer. If NULL, check err. err may also be set to MVHD_ERR_TIMESTAMP if
* opening a differencing VHD.
*/
-MVHDMeta* mvhd_open(const char* path, bool readonly, int* err);
+MVHDAPI MVHDMeta* mvhd_open(const char* path, int readonly, int* err);
/**
* \brief Update the parent modified timestamp in the VHD file
@@ -116,7 +204,7 @@ MVHDMeta* mvhd_open(const char* path, bool readonly, int* err);
*
* \return non-zero on error, 0 on success
*/
-int mvhd_diff_update_par_timestamp(MVHDMeta* vhdm, int* err);
+MVHDAPI int mvhd_diff_update_par_timestamp(MVHDMeta* vhdm, int* err);
/**
* \brief Create a fixed VHD image
@@ -128,7 +216,7 @@ int mvhd_diff_update_par_timestamp(MVHDMeta* vhdm, int* err);
*
* \retval NULL if an error occurrs. Check value of *err for actual error. Otherwise returns pointer to a MVHDMeta struct
*/
-MVHDMeta* mvhd_create_fixed(const char* path, MVHDGeom geom, int* err, mvhd_progress_callback progress_callback);
+MVHDAPI MVHDMeta* mvhd_create_fixed(const char* path, MVHDGeom geom, int* err, mvhd_progress_callback progress_callback);
/**
* \brief Create sparse (dynamic) VHD image.
@@ -139,7 +227,7 @@ MVHDMeta* mvhd_create_fixed(const char* path, MVHDGeom geom, int* err, mvhd_prog
*
* \return NULL if an error occurrs. Check value of *err for actual error. Otherwise returns pointer to a MVHDMeta struct
*/
-MVHDMeta* mvhd_create_sparse(const char* path, MVHDGeom geom, int* err);
+MVHDAPI MVHDMeta* mvhd_create_sparse(const char* path, MVHDGeom geom, int* err);
/**
* \brief Create differencing VHD imagee.
@@ -150,7 +238,7 @@ MVHDMeta* mvhd_create_sparse(const char* path, MVHDGeom geom, int* err);
*
* \return NULL if an error occurrs. Check value of *err for actual error. Otherwise returns pointer to a MVHDMeta struct
*/
-MVHDMeta* mvhd_create_diff(const char* path, const char* par_path, int* err);
+MVHDAPI MVHDMeta* mvhd_create_diff(const char* path, const char* par_path, int* err);
/**
* \brief Create a VHD using the provided options
@@ -162,14 +250,14 @@ MVHDMeta* mvhd_create_diff(const char* path, const char* par_path, int* err);
*
* \retval NULL if an error occurrs. Check value of *err for actual error. Otherwise returns pointer to a MVHDMeta struct
*/
-MVHDMeta* mvhd_create_ex(MVHDCreationOptions options, int* err);
+MVHDAPI MVHDMeta* mvhd_create_ex(MVHDCreationOptions options, int* err);
/**
* \brief Safely close a VHD image
*
* \param [in] vhdm MiniVHD data structure to close
*/
-void mvhd_close(MVHDMeta* vhdm);
+MVHDAPI void mvhd_close(MVHDMeta* vhdm);
/**
* \brief Calculate hard disk geometry from a provided size
@@ -189,7 +277,47 @@ void mvhd_close(MVHDMeta* vhdm);
*
* \return MVHDGeom the calculated geometry. This can be used in the appropriate create functions.
*/
-MVHDGeom mvhd_calculate_geometry(uint64_t size);
+MVHDAPI MVHDGeom mvhd_calculate_geometry(uint64_t size);
+
+/**
+ * \brief Get the CHS geometry from the image
+ *
+ * \param [in] vhdm MiniVHD data structure
+ *
+ * \return The CHS geometry as stored in the image
+ */
+MVHDAPI MVHDGeom mvhd_get_geometry(MVHDMeta* vhdm);
+
+/**
+ * \brief Get the 'current_size' value from the image
+ *
+ * Note that the size returned may not match the size calculated from the
+ * CHS geometry. It is up to the caller to decide how best to handle this.
+ *
+ * \param [in] vhdm MiniVHD data structure
+ *
+ * \return The 'current_size' value in bytes, as stored in the image.
+ * Note, this may not match the CHS geometry.
+ */
+MVHDAPI uint64_t mvhd_get_current_size(MVHDMeta* vhdm);
+
+/**
+ * \brief Calculate CHS geometry size in bytes
+ *
+ * \param [in] geom the CHS geometry to calculate
+ *
+ * \return the size in bytes
+ */
+MVHDAPI uint64_t mvhd_calc_size_bytes(MVHDGeom *geom);
+
+/**
+ * \brief Calculate CHS geometry size in sectors
+ *
+ * \param [in] geom the CHS geometry to calculate
+ *
+ * \return the size in sectors
+ */
+MVHDAPI uint32_t mvhd_calc_size_sectors(MVHDGeom *geom);
/**
* \brief Convert a raw disk image to a fixed VHD image
@@ -200,7 +328,7 @@ MVHDGeom mvhd_calculate_geometry(uint64_t size);
*
* \return NULL if an error occurrs. Check value of *err for actual error. Otherwise returns pointer to a MVHDMeta struct
*/
-MVHDMeta* mvhd_convert_to_vhd_fixed(const char* utf8_raw_path, const char* utf8_vhd_path, int* err);
+MVHDAPI MVHDMeta* mvhd_convert_to_vhd_fixed(const char* utf8_raw_path, const char* utf8_vhd_path, int* err);
/**
* \brief Convert a raw disk image to a sparse VHD image
@@ -211,7 +339,7 @@ MVHDMeta* mvhd_convert_to_vhd_fixed(const char* utf8_raw_path, const char* utf8_
*
* \return NULL if an error occurrs. Check value of *err for actual error. Otherwise returns pointer to a MVHDMeta struct
*/
-MVHDMeta* mvhd_convert_to_vhd_sparse(const char* utf8_raw_path, const char* utf8_vhd_path, int* err);
+MVHDAPI MVHDMeta* mvhd_convert_to_vhd_sparse(const char* utf8_raw_path, const char* utf8_vhd_path, int* err);
/**
* \brief Convert a VHD image to a raw disk image
@@ -222,7 +350,7 @@ MVHDMeta* mvhd_convert_to_vhd_sparse(const char* utf8_raw_path, const char* utf8
*
* \return NULL if an error occurrs. Check value of *err for actual error. Otherwise returns the raw disk image FILE pointer
*/
-FILE* mvhd_convert_to_raw(const char* utf8_vhd_path, const char* utf8_raw_path, int *err);
+MVHDAPI FILE* mvhd_convert_to_raw(const char* utf8_vhd_path, const char* utf8_raw_path, int *err);
/**
* \brief Read sectors from VHD file
@@ -236,7 +364,7 @@ FILE* mvhd_convert_to_raw(const char* utf8_vhd_path, const char* utf8_raw_path,
*
* \return the number of sectors that were not read, or zero
*/
-int mvhd_read_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
+MVHDAPI int mvhd_read_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
/**
* \brief Write sectors to VHD file
@@ -250,7 +378,7 @@ int mvhd_read_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* ou
*
* \return the number of sectors that were not written, or zero
*/
-int mvhd_write_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
+MVHDAPI int mvhd_write_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
/**
* \brief Write zeroed sectors to VHD file
@@ -265,5 +393,11 @@ int mvhd_write_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* i
*
* \return the number of sectors that were not written, or zero
*/
-int mvhd_format_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors);
+MVHDAPI int mvhd_format_sectors(MVHDMeta* vhdm, uint32_t offset, int num_sectors);
+
+#ifdef __cplusplus
+}
#endif
+
+
+#endif /*MINIVHD_H*/
diff --git a/src/disk/minivhd/minivhd_create.h b/src/disk/minivhd/minivhd_create.h
deleted file mode 100644
index 203834a71..000000000
--- a/src/disk/minivhd/minivhd_create.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef MINIVHD_CREATE_H
-#define MINIVHD_CREATE_H
-#include
-#include "minivhd.h"
-
-MVHDMeta* mvhd_create_fixed_raw(const char* path, FILE* raw_img, uint64_t size_in_bytes, MVHDGeom* geom, int* err, mvhd_progress_callback progress_callback);
-
-#endif
diff --git a/src/disk/minivhd/minivhd_internal.h b/src/disk/minivhd/minivhd_internal.h
deleted file mode 100644
index 54b304830..000000000
--- a/src/disk/minivhd/minivhd_internal.h
+++ /dev/null
@@ -1,96 +0,0 @@
-#ifndef MINIVHD_INTERNAL_H
-#define MINIVHD_INTERNAL_H
-#include
-#include
-#include
-
-#define MVHD_FOOTER_SIZE 512
-#define MVHD_SPARSE_SIZE 1024
-
-#define MVHD_SECTOR_SIZE 512
-#define MVHD_BAT_ENT_PER_SECT 128
-
-#define MVHD_MAX_SIZE_IN_BYTES 0x1fe00000000
-
-#define MVHD_SPARSE_BLK 0xffffffff
-/* For simplicity, we don't handle paths longer than this
- * Note, this is the max path in characters, as that is what
- * Windows uses
- */
-#define MVHD_MAX_PATH_CHARS 260
-#define MVHD_MAX_PATH_BYTES 1040
-
-#define MVHD_DIF_LOC_W2RU 0x57327275
-#define MVHD_DIF_LOC_W2KU 0x57326B75
-
-typedef struct MVHDSectorBitmap {
- uint8_t* curr_bitmap;
- int sector_count;
- int curr_block;
-} MVHDSectorBitmap;
-
-typedef struct MVHDFooter {
- uint8_t cookie[8];
- uint32_t features;
- uint32_t fi_fmt_vers;
- uint64_t data_offset;
- uint32_t timestamp;
- uint8_t cr_app[4];
- uint32_t cr_vers;
- uint8_t cr_host_os[4];
- uint64_t orig_sz;
- uint64_t curr_sz;
- struct {
- uint16_t cyl;
- uint8_t heads;
- uint8_t spt;
- } geom;
- uint32_t disk_type;
- uint32_t checksum;
- uint8_t uuid[16];
- uint8_t saved_st;
- uint8_t reserved[427];
-} MVHDFooter;
-
-typedef struct MVHDSparseHeader {
- uint8_t cookie[8];
- uint64_t data_offset;
- uint64_t bat_offset;
- uint32_t head_vers;
- uint32_t max_bat_ent;
- uint32_t block_sz;
- uint32_t checksum;
- uint8_t par_uuid[16];
- uint32_t par_timestamp;
- uint32_t reserved_1;
- uint8_t par_utf16_name[512];
- struct {
- uint32_t plat_code;
- uint32_t plat_data_space;
- uint32_t plat_data_len;
- uint32_t reserved;
- uint64_t plat_data_offset;
- } par_loc_entry[8];
- uint8_t reserved_2[256];
-} MVHDSparseHeader;
-
-typedef struct MVHDMeta MVHDMeta;
-struct MVHDMeta {
- FILE* f;
- bool readonly;
- char filename[MVHD_MAX_PATH_BYTES];
- struct MVHDMeta* parent;
- MVHDFooter footer;
- MVHDSparseHeader sparse;
- uint32_t* block_offset;
- int sect_per_block;
- MVHDSectorBitmap bitmap;
- int (*read_sectors)(MVHDMeta*, uint32_t, int, void*);
- int (*write_sectors)(MVHDMeta*, uint32_t, int, void*);
- struct {
- uint8_t* zero_data;
- int sector_count;
- } format_buffer;
-};
-
-#endif
diff --git a/src/disk/minivhd/minivhd_io.c b/src/disk/minivhd/minivhd_io.c
index 63017bbf8..ff86a8337 100644
--- a/src/disk/minivhd/minivhd_io.c
+++ b/src/disk/minivhd/minivhd_io.c
@@ -1,28 +1,61 @@
-/**
- * \file
- * \brief Sector reading and writing implementations
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Sector reading and writing implementations.
+ *
+ * Version: @(#)io.c 1.0.3 2021/04/16
+ *
+ * Author: Sherman Perry,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
*/
-
#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
+# define _FILE_OFFSET_BITS 64
#endif
+#include
+#include
#include
+#include
#include
-#include "minivhd_internal.h"
-#include "minivhd_util.h"
+#include
+#include "minivhd.h"
+#include "internal.h"
-/* The following bit array macros adapted from
- http://www.mathcs.emory.edu/~cheung/Courses/255/Syllabus/1-C-intro/bit-array.html */
-#define VHD_SETBIT(A,k) ( A[(k/8)] |= (0x80 >> (k%8)) )
-#define VHD_CLEARBIT(A,k) ( A[(k/8)] &= ~(0x80 >> (k%8)) )
-#define VHD_TESTBIT(A,k) ( A[(k/8)] & (0x80 >> (k%8)) )
+/*
+ * The following bit array macros adapted from:
+ *
+ * http://www.mathcs.emory.edu/~cheung/Courses/255/Syllabus/1-C-intro/bit-array.html
+ */
+#define VHD_SETBIT(A,k) ( A[(k>>3)] |= (0x80 >> (k&7)) )
+#define VHD_CLEARBIT(A,k) ( A[(k>>3)] &= ~(0x80 >> (k&7)) )
+#define VHD_TESTBIT(A,k) ( A[(k>>3)] & (0x80 >> (k&7)) )
-static inline void mvhd_check_sectors(uint32_t offset, int num_sectors, uint32_t total_sectors, int* transfer_sect, int* trunc_sect);
-static void mvhd_read_sect_bitmap(MVHDMeta* vhdm, int blk);
-static void mvhd_write_bat_entry(MVHDMeta* vhdm, int blk);
-static void mvhd_create_block(MVHDMeta* vhdm, int blk);
-static void mvhd_write_curr_sect_bitmap(MVHDMeta* vhdm);
/**
* \brief Check that we will not be overflowing buffers
@@ -34,22 +67,30 @@ static void mvhd_write_curr_sect_bitmap(MVHDMeta* vhdm);
* This may be lower than num_sectors if offset + num_sectors >= total_sectors
* \param [out] trunc_sectors The number of sectors truncated if transfer_sectors < num_sectors
*/
-static inline void mvhd_check_sectors(uint32_t offset, int num_sectors, uint32_t total_sectors, int* transfer_sect, int* trunc_sect) {
+static inline void
+check_sectors(uint32_t offset, int num_sectors, uint32_t total_sectors, int* transfer_sect, int* trunc_sect)
+{
*transfer_sect = num_sectors;
*trunc_sect = 0;
+
if ((total_sectors - offset) < (uint32_t)*transfer_sect) {
*transfer_sect = total_sectors - offset;
*trunc_sect = num_sectors - *transfer_sect;
}
}
-void mvhd_write_empty_sectors(FILE* f, int sector_count) {
+
+void
+mvhd_write_empty_sectors(FILE* f, int sector_count)
+{
uint8_t zero_bytes[MVHD_SECTOR_SIZE] = {0};
+
for (int i = 0; i < sector_count; i++) {
fwrite(zero_bytes, sizeof zero_bytes, 1, f);
}
}
+
/**
* \brief Read the sector bitmap for a block.
*
@@ -59,22 +100,28 @@ void mvhd_write_empty_sectors(FILE* f, int sector_count) {
* \param [in] vhdm MiniVHD data structure
* \param [in] blk The block for which to read the sector bitmap from
*/
-static void mvhd_read_sect_bitmap(MVHDMeta* vhdm, int blk) {
+static void
+read_sect_bitmap(MVHDMeta* vhdm, int blk)
+{
if (vhdm->block_offset[blk] != MVHD_SPARSE_BLK) {
mvhd_fseeko64(vhdm->f, (uint64_t)vhdm->block_offset[blk] * MVHD_SECTOR_SIZE, SEEK_SET);
(void) !fread(vhdm->bitmap.curr_bitmap, vhdm->bitmap.sector_count * MVHD_SECTOR_SIZE, 1, vhdm->f);
} else {
memset(vhdm->bitmap.curr_bitmap, 0, vhdm->bitmap.sector_count * MVHD_SECTOR_SIZE);
}
+
vhdm->bitmap.curr_block = blk;
}
+
/**
* \brief Write the current sector bitmap in memory to file
*
* \param [in] vhdm MiniVHD data structure
*/
-static void mvhd_write_curr_sect_bitmap(MVHDMeta* vhdm) {
+static void
+write_curr_sect_bitmap(MVHDMeta* vhdm)
+{
if (vhdm->bitmap.curr_block >= 0) {
int64_t abs_offset = (int64_t)vhdm->block_offset[vhdm->bitmap.curr_block] * MVHD_SECTOR_SIZE;
mvhd_fseeko64(vhdm->f, abs_offset, SEEK_SET);
@@ -82,19 +129,24 @@ static void mvhd_write_curr_sect_bitmap(MVHDMeta* vhdm) {
}
}
+
/**
* \brief Write block offset from memory into file
*
* \param [in] vhdm MiniVHD data structure
* \param [in] blk The block for which to write the offset for
*/
-static void mvhd_write_bat_entry(MVHDMeta* vhdm, int blk) {
+static void
+write_bat_entry(MVHDMeta* vhdm, int blk)
+{
uint64_t table_offset = vhdm->sparse.bat_offset + ((uint64_t)blk * sizeof *vhdm->block_offset);
uint32_t offset = mvhd_to_be32(vhdm->block_offset[blk]);
+
mvhd_fseeko64(vhdm->f, table_offset, SEEK_SET);
fwrite(&offset, sizeof offset, 1, vhdm->f);
}
+
/**
* \brief Create an empty block in a sparse or differencing VHD image
*
@@ -109,18 +161,23 @@ static void mvhd_write_bat_entry(MVHDMeta* vhdm, int blk) {
* \param [in] vhdm MiniVHD data structure
* \param [in] blk The block number to create
*/
-static void mvhd_create_block(MVHDMeta* vhdm, int blk) {
+static void
+create_block(MVHDMeta* vhdm, int blk)
+{
uint8_t footer[MVHD_FOOTER_SIZE];
+
/* Seek to where the footer SHOULD be */
mvhd_fseeko64(vhdm->f, -MVHD_FOOTER_SIZE, SEEK_END);
(void) !fread(footer, sizeof footer, 1, vhdm->f);
mvhd_fseeko64(vhdm->f, -MVHD_FOOTER_SIZE, SEEK_END);
+
if (!mvhd_is_conectix_str(footer)) {
/* Oh dear. We use the header instead, since something has gone wrong at the footer */
mvhd_fseeko64(vhdm->f, 0, SEEK_SET);
(void) !fread(footer, sizeof footer, 1, vhdm->f);
mvhd_fseeko64(vhdm->f, 0, SEEK_END);
}
+
int64_t abs_offset = mvhd_ftello64(vhdm->f);
if (abs_offset % MVHD_SECTOR_SIZE != 0) {
/* Yikes! We're supposed to be on a sector boundary. Add some padding */
@@ -131,52 +188,68 @@ static void mvhd_create_block(MVHDMeta* vhdm, int blk) {
}
abs_offset += padding_amount;
}
+
uint32_t sect_offset = (uint32_t)(abs_offset / MVHD_SECTOR_SIZE);
int blk_size_sectors = vhdm->sparse.block_sz / MVHD_SECTOR_SIZE;
mvhd_write_empty_sectors(vhdm->f, vhdm->bitmap.sector_count + blk_size_sectors);
+
/* Add a bit of padding. That's what Windows appears to do, although it's not strictly necessary... */
mvhd_write_empty_sectors(vhdm->f, 5);
+
/* And we finish with the footer */
fwrite(footer, sizeof footer, 1, vhdm->f);
+
/* We no longer have a sparse block. Update that BAT! */
vhdm->block_offset[blk] = sect_offset;
- mvhd_write_bat_entry(vhdm, blk);
+ write_bat_entry(vhdm, blk);
}
-int mvhd_fixed_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff) {
+
+int
+mvhd_fixed_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff) {
int64_t addr;
int transfer_sectors, truncated_sectors;
uint32_t total_sectors = (uint32_t)(vhdm->footer.curr_sz / MVHD_SECTOR_SIZE);
- mvhd_check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
+ check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
addr = (int64_t)offset * MVHD_SECTOR_SIZE;
mvhd_fseeko64(vhdm->f, addr, SEEK_SET);
(void) !fread(out_buff, transfer_sectors*MVHD_SECTOR_SIZE, 1, vhdm->f);
+
return truncated_sectors;
}
-int mvhd_sparse_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff) {
+
+int
+mvhd_sparse_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff)
+{
int transfer_sectors, truncated_sectors;
uint32_t total_sectors = (uint32_t)(vhdm->footer.curr_sz / MVHD_SECTOR_SIZE);
- mvhd_check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
+ check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
uint8_t* buff = (uint8_t*)out_buff;
int64_t addr;
uint32_t s, ls;
int blk, prev_blk, sib;
ls = offset + transfer_sectors;
prev_blk = -1;
+
for (s = offset; s < ls; s++) {
blk = s / vhdm->sect_per_block;
sib = s % vhdm->sect_per_block;
if (blk != prev_blk) {
prev_blk = blk;
if (vhdm->bitmap.curr_block != blk) {
- mvhd_read_sect_bitmap(vhdm, blk);
+ read_sect_bitmap(vhdm, blk);
mvhd_fseeko64(vhdm->f, (uint64_t)sib * MVHD_SECTOR_SIZE, SEEK_CUR);
} else {
addr = ((int64_t)vhdm->block_offset[blk] + vhdm->bitmap.sector_count + sib) * MVHD_SECTOR_SIZE;
mvhd_fseeko64(vhdm->f, addr, SEEK_SET);
}
}
+
if (VHD_TESTBIT(vhdm->bitmap.curr_bitmap, sib)) {
(void) !fread(buff, MVHD_SECTOR_SIZE, 1, vhdm->f);
} else {
@@ -185,29 +258,37 @@ int mvhd_sparse_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out
}
buff += MVHD_SECTOR_SIZE;
}
+
return truncated_sectors;
}
-int mvhd_diff_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff) {
+
+int
+mvhd_diff_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff)
+{
int transfer_sectors, truncated_sectors;
uint32_t total_sectors = (uint32_t)(vhdm->footer.curr_sz / MVHD_SECTOR_SIZE);
- mvhd_check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
+ check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
uint8_t* buff = (uint8_t*)out_buff;
MVHDMeta* curr_vhdm = vhdm;
uint32_t s, ls;
int blk, sib;
ls = offset + transfer_sectors;
+
for (s = offset; s < ls; s++) {
while (curr_vhdm->footer.disk_type == MVHD_TYPE_DIFF) {
blk = s / curr_vhdm->sect_per_block;
sib = s % curr_vhdm->sect_per_block;
if (curr_vhdm->bitmap.curr_block != blk) {
- mvhd_read_sect_bitmap(curr_vhdm, blk);
+ read_sect_bitmap(curr_vhdm, blk);
}
if (!VHD_TESTBIT(curr_vhdm->bitmap.curr_bitmap, sib)) {
curr_vhdm = curr_vhdm->parent;
} else { break; }
}
+
/* We handle actual sector reading using the fixed or sparse functions,
as a differencing VHD is also a sparse VHD */
if (curr_vhdm->footer.disk_type == MVHD_TYPE_DIFF || curr_vhdm->footer.disk_type == MVHD_TYPE_DYNAMIC) {
@@ -215,49 +296,65 @@ int mvhd_diff_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_b
} else {
mvhd_fixed_read(curr_vhdm, s, 1, buff);
}
+
curr_vhdm = vhdm;
buff += MVHD_SECTOR_SIZE;
}
+
return truncated_sectors;
}
-int mvhd_fixed_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff) {
+
+int
+mvhd_fixed_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff)
+{
int64_t addr;
int transfer_sectors, truncated_sectors;
uint32_t total_sectors = (uint32_t)(vhdm->footer.curr_sz / MVHD_SECTOR_SIZE);
- mvhd_check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
+ check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
addr = (int64_t)offset * MVHD_SECTOR_SIZE;
mvhd_fseeko64(vhdm->f, addr, SEEK_SET);
fwrite(in_buff, transfer_sectors*MVHD_SECTOR_SIZE, 1, vhdm->f);
+
return truncated_sectors;
}
-int mvhd_sparse_diff_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff) {
+
+int
+mvhd_sparse_diff_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff)
+{
int transfer_sectors, truncated_sectors;
uint32_t total_sectors = (uint32_t)(vhdm->footer.curr_sz / MVHD_SECTOR_SIZE);
- mvhd_check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
+ check_sectors(offset, num_sectors, total_sectors, &transfer_sectors, &truncated_sectors);
+
uint8_t* buff = (uint8_t*)in_buff;
int64_t addr;
uint32_t s, ls;
int blk, prev_blk, sib;
ls = offset + transfer_sectors;
prev_blk = -1;
+
for (s = offset; s < ls; s++) {
blk = s / vhdm->sect_per_block;
sib = s % vhdm->sect_per_block;
if (vhdm->bitmap.curr_block != blk && prev_blk >= 0) {
/* Write the sector bitmap for the previous block, before we replace it. */
- mvhd_write_curr_sect_bitmap(vhdm);
+ write_curr_sect_bitmap(vhdm);
}
+
if (vhdm->block_offset[blk] == MVHD_SPARSE_BLK) {
/* "read" the sector bitmap first, before creating a new block, as the bitmap will be
zero either way */
- mvhd_read_sect_bitmap(vhdm, blk);
- mvhd_create_block(vhdm, blk);
+ read_sect_bitmap(vhdm, blk);
+ create_block(vhdm, blk);
}
+
if (blk != prev_blk) {
if (vhdm->bitmap.curr_block != blk) {
- mvhd_read_sect_bitmap(vhdm, blk);
+ read_sect_bitmap(vhdm, blk);
mvhd_fseeko64(vhdm->f, (uint64_t)sib * MVHD_SECTOR_SIZE, SEEK_CUR);
} else {
addr = ((int64_t)vhdm->block_offset[blk] + vhdm->bitmap.sector_count + sib) * MVHD_SECTOR_SIZE;
@@ -265,15 +362,26 @@ int mvhd_sparse_diff_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, voi
}
prev_blk = blk;
}
+
fwrite(buff, MVHD_SECTOR_SIZE, 1, vhdm->f);
VHD_SETBIT(vhdm->bitmap.curr_bitmap, sib);
buff += MVHD_SECTOR_SIZE;
}
+
/* And write the sector bitmap for the last block we visited to disk */
- mvhd_write_curr_sect_bitmap(vhdm);
+ write_curr_sect_bitmap(vhdm);
+
return truncated_sectors;
}
-int mvhd_noop_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff) {
+
+int
+mvhd_noop_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff)
+{
+ (void)vhdm;
+ (void)offset;
+ (void)num_sectors;
+ (void)in_buff;
+
return 0;
}
diff --git a/src/disk/minivhd/minivhd_io.h b/src/disk/minivhd/minivhd_io.h
deleted file mode 100644
index 7ffd10f49..000000000
--- a/src/disk/minivhd/minivhd_io.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef MINIVHD_IO_H
-#define MINIVHD_IO_H
-#include "minivhd.h"
-
-/**
- * \brief Write zero filled sectors to file.
- *
- * Note, the caller should set the file position before calling this
- * function for correct operation.
- *
- * \param [in] f File to write sectors to
- * \param [in] sector_count The number of sectors to write
- */
-void mvhd_write_empty_sectors(FILE* f, int sector_count);
-
-/**
- * \brief Read a fixed VHD image
- *
- * Fixed VHD images are essentially raw image files with a footer tacked on
- * the end. They are therefore straightforward to write
- *
- * \param [in] vhdm MiniVHD data structure
- * \param [in] offset Sector offset to read from
- * \param [in] num_sectors The desired number of sectors to read
- * \param [out] out_buff An output buffer to store read sectors. Must be
- * large enough to hold num_sectors worth of sectors.
- *
- * \retval 0 num_sectors were read from file
- * \retval >0 < num_sectors were read from file
- */
-int mvhd_fixed_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
-
-/**
- * \brief Read a sparse VHD image
- *
- * Sparse, or dynamic images are VHD images that grow as data is written to them.
- *
- * This function implements the logic to read sectors from the file, taking into
- * account the fact that blocks may be stored on disk in any order, and that the
- * read could cross block boundaries.
- *
- * \param [in] vhdm MiniVHD data structure
- * \param [in] offset Sector offset to read from
- * \param [in] num_sectors The desired number of sectors to read
- * \param [out] out_buff An output buffer to store read sectors. Must be
- * large enough to hold num_sectors worth of sectors.
- *
- * \retval 0 num_sectors were read from file
- * \retval >0 < num_sectors were read from file
- */
-int mvhd_sparse_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
-
-/**
- * \brief Read a differencing VHD image
- *
- * Differencing images are a variant of a sparse image. They contain the grow-on-demand
- * properties of sparse images, but also reference a parent image. Data is read from the
- * child image only if it is newer than the data stored in the parent image.
- *
- * This function implements the logic to read sectors from the child, or a parent image.
- * Differencing images may have a differencing image as a parent, creating a chain of images.
- * There is no theoretical chain length limit, although I do not consider long chains to be
- * advisable. Verifying the parent-child relationship is not very robust.
- *
- * \param [in] vhdm MiniVHD data structure
- * \param [in] offset Sector offset to read from
- * \param [in] num_sectors The desired number of sectors to read
- * \param [out] out_buff An output buffer to store read sectors. Must be
- * large enough to hold num_sectors worth of sectors.
- *
- * \retval 0 num_sectors were read from file
- * \retval >0 < num_sectors were read from file
- */
-int mvhd_diff_read(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* out_buff);
-
-/**
- * \brief Write to a fixed VHD image
- *
- * Fixed VHD images are essentially raw image files with a footer tacked on
- * the end. They are therefore straightforward to write
- *
- * \param [in] vhdm MiniVHD data structure
- * \param [in] offset Sector offset to write to
- * \param [in] num_sectors The desired number of sectors to write
- * \param [in] in_buff A source buffer to write sectors from. Must be
- * large enough to hold num_sectors worth of sectors.
- *
- * \retval 0 num_sectors were written to file
- * \retval >0 < num_sectors were written to file
- */
-int mvhd_fixed_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
-
-/**
- * \brief Write to a sparse or differencing VHD image
- *
- * Sparse, or dynamic images are VHD images that grow as data is written to them.
- *
- * Differencing images are a variant of a sparse image. They contain the grow-on-demand
- * properties of sparse images, but also reference a parent image. Data is always written
- * to the child image. This makes writing to differencing images essentially identical to
- * writing to sparse images, hence they use the same function.
- *
- * This function implements the logic to write sectors to the file, taking into
- * account the fact that blocks may be stored on disk in any order, and that the
- * write operation could cross block boundaries.
- *
- * \param [in] vhdm MiniVHD data structure
- * \param [in] offset Sector offset to write to
- * \param [in] num_sectors The desired number of sectors to write
- * \param [in] in_buff A source buffer to write sectors from. Must be
- * large enough to hold num_sectors worth of sectors.
- *
- * \retval 0 num_sectors were written to file
- * \retval >0 < num_sectors were written to file
- */
-int mvhd_sparse_diff_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
-
-/**
- * \brief A no-op function to "write" to read-only VHD images
- *
- * \param [in] vhdm MiniVHD data structure
- * \param [in] offset Sector offset to write to
- * \param [in] num_sectors The desired number of sectors to write
- * \param [in] in_buff A source buffer to write sectors from. Must be
- * large enough to hold num_sectors worth of sectors.
- *
- * \retval 0 num_sectors were written to file
- * \retval >0 < num_sectors were written to file
- */
-int mvhd_noop_write(MVHDMeta* vhdm, uint32_t offset, int num_sectors, void* in_buff);
-
-#endif
diff --git a/src/disk/minivhd/minivhd_struct_rw.c b/src/disk/minivhd/minivhd_struct_rw.c
deleted file mode 100644
index 5285f8a68..000000000
--- a/src/disk/minivhd/minivhd_struct_rw.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/**
- * \file
- * \brief Header and footer serialize/deserialize functions
- */
-#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
-#endif
-#include
-#include
-#include
-#include
-#include
-#include "minivhd_util.h"
-#include "minivhd_internal.h"
-
-/* Read data from footer into the struct members, swapping endian where necessary
- Note: order matters here! We must read each field in the order the struct is in.
- Doing this may be less elegant than performing a memcpy to a packed struct, but
- it avoids potential data alignment issues, and the endian swapping allows us to
- use the fields directly. */
-
-static void mvhd_next_buffer_to_struct(void* struct_memb, size_t memb_size, bool req_endian, uint8_t** buffer);
-static void mvhd_next_struct_to_buffer(void* struct_memb, size_t memb_size, bool req_endian, uint8_t** buffer);
-
-/**
- * \brief Get the next field from a buffer and store it in a struct member, converting endian if necessary
- *
- * \param [out] struct_memb struct member to save the field to
- * \param [in] memb_size the size of struct_memb, in bytes
- * \param [in] req_endian is the field a value that requires endian conversion (eg: uint16, uint32)
- * \param [in] buffer the buffer from which fields are read from. Will be advanced at the end of the function call
- */
-static void mvhd_next_buffer_to_struct(void* struct_memb, size_t memb_size, bool req_endian, uint8_t** buffer) {
- memcpy(struct_memb, *buffer, memb_size);
- if (req_endian) {
- switch (memb_size) {
- case 2:
- *(uint16_t*)(struct_memb) = mvhd_from_be16(*(uint16_t*)(struct_memb));
- break;
- case 4:
- *(uint32_t*)(struct_memb) = mvhd_from_be32(*(uint32_t*)(struct_memb));
- break;
- case 8:
- *(uint64_t*)(struct_memb) = mvhd_from_be64(*(uint64_t*)(struct_memb));
- break;
- }
- }
- *buffer += memb_size;
-}
-
-/**
- * \brief Save a struct member into a buffer, converting endian if necessary
- *
- * \param [in] struct_memb struct member read from
- * \param [in] memb_size the size of struct_memb, in bytes
- * \param [in] req_endian is the field a value that requires endian conversion (eg: uint16, uint32)
- * \param [out] buffer the buffer from which struct member is saved to. Will be advanced at the end of the function call
- */
-static void mvhd_next_struct_to_buffer(void* struct_memb, size_t memb_size, bool req_endian, uint8_t** buffer) {
- uint8_t *buf_ptr = *buffer;
- memcpy(buf_ptr, struct_memb, memb_size);
- if (req_endian) {
- switch (memb_size) {
- case 2:
- *((uint16_t*)buf_ptr) = mvhd_to_be16(*(uint16_t*)(struct_memb));
- break;
- case 4:
- *((uint32_t*)buf_ptr) = mvhd_to_be32(*(uint32_t*)(struct_memb));
- break;
- case 8:
- *((uint64_t*)buf_ptr) = mvhd_to_be64(*(uint64_t*)(struct_memb));
- break;
- }
- }
- buf_ptr += memb_size;
- *buffer = buf_ptr;
-}
-
-void mvhd_buffer_to_footer(MVHDFooter* footer, uint8_t* buffer) {
- uint8_t* buff_ptr = buffer;
- mvhd_next_buffer_to_struct(&footer->cookie, sizeof footer->cookie, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->features, sizeof footer->features, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->fi_fmt_vers, sizeof footer->fi_fmt_vers, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->data_offset, sizeof footer->data_offset, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->timestamp, sizeof footer->timestamp, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->cr_app, sizeof footer->cr_app, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->cr_vers, sizeof footer->cr_vers, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->cr_host_os, sizeof footer->cr_host_os, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->orig_sz, sizeof footer->orig_sz, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->curr_sz, sizeof footer->curr_sz, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->geom.cyl, sizeof footer->geom.cyl, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->geom.heads, sizeof footer->geom.heads, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->geom.spt, sizeof footer->geom.spt, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->disk_type, sizeof footer->disk_type, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->checksum, sizeof footer->checksum, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->uuid, sizeof footer->uuid, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->saved_st, sizeof footer->saved_st, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&footer->reserved, sizeof footer->reserved, false, &buff_ptr);
-}
-
-void mvhd_footer_to_buffer(MVHDFooter* footer, uint8_t* buffer) {
- uint8_t* buff_ptr = buffer;
- mvhd_next_struct_to_buffer(&footer->cookie, sizeof footer->cookie, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->features, sizeof footer->features, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->fi_fmt_vers, sizeof footer->fi_fmt_vers, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->data_offset, sizeof footer->data_offset, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->timestamp, sizeof footer->timestamp, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->cr_app, sizeof footer->cr_app, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->cr_vers, sizeof footer->cr_vers, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->cr_host_os, sizeof footer->cr_host_os, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->orig_sz, sizeof footer->orig_sz, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->curr_sz, sizeof footer->curr_sz, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->geom.cyl, sizeof footer->geom.cyl, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->geom.heads, sizeof footer->geom.heads, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->geom.spt, sizeof footer->geom.spt, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->disk_type, sizeof footer->disk_type, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->checksum, sizeof footer->checksum, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->uuid, sizeof footer->uuid, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->saved_st, sizeof footer->saved_st, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&footer->reserved, sizeof footer->reserved, false, &buff_ptr);
-}
-
-void mvhd_buffer_to_header(MVHDSparseHeader* header, uint8_t* buffer) {
- uint8_t* buff_ptr = buffer;
- mvhd_next_buffer_to_struct(&header->cookie, sizeof header->cookie, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->data_offset, sizeof header->data_offset, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->bat_offset, sizeof header->bat_offset, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->head_vers, sizeof header->head_vers, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->max_bat_ent, sizeof header->max_bat_ent, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->block_sz, sizeof header->block_sz, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->checksum, sizeof header->checksum, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->par_uuid, sizeof header->par_uuid, false, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->par_timestamp, sizeof header->par_timestamp, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->reserved_1, sizeof header->reserved_1, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->par_utf16_name, sizeof header->par_utf16_name, false, &buff_ptr);
- for (int i = 0; i < 8; i++) {
- mvhd_next_buffer_to_struct(&header->par_loc_entry[i].plat_code, sizeof header->par_loc_entry[i].plat_code, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->par_loc_entry[i].plat_data_space, sizeof header->par_loc_entry[i].plat_data_space, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->par_loc_entry[i].plat_data_len, sizeof header->par_loc_entry[i].plat_data_len, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->par_loc_entry[i].reserved, sizeof header->par_loc_entry[i].reserved, true, &buff_ptr);
- mvhd_next_buffer_to_struct(&header->par_loc_entry[i].plat_data_offset, sizeof header->par_loc_entry[i].plat_data_offset, true, &buff_ptr);
- }
- mvhd_next_buffer_to_struct(&header->reserved_2, sizeof header->reserved_2, false, &buff_ptr);
-}
-
-void mvhd_header_to_buffer(MVHDSparseHeader* header, uint8_t* buffer) {
- uint8_t* buff_ptr = buffer;
- mvhd_next_struct_to_buffer(&header->cookie, sizeof header->cookie, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->data_offset, sizeof header->data_offset, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->bat_offset, sizeof header->bat_offset, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->head_vers, sizeof header->head_vers, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->max_bat_ent, sizeof header->max_bat_ent, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->block_sz, sizeof header->block_sz, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->checksum, sizeof header->checksum, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->par_uuid, sizeof header->par_uuid, false, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->par_timestamp, sizeof header->par_timestamp, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->reserved_1, sizeof header->reserved_1, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->par_utf16_name, sizeof header->par_utf16_name, false, &buff_ptr);
- for (int i = 0; i < 8; i++) {
- mvhd_next_struct_to_buffer(&header->par_loc_entry[i].plat_code, sizeof header->par_loc_entry[i].plat_code, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->par_loc_entry[i].plat_data_space, sizeof header->par_loc_entry[i].plat_data_space, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->par_loc_entry[i].plat_data_len, sizeof header->par_loc_entry[i].plat_data_len, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->par_loc_entry[i].reserved, sizeof header->par_loc_entry[i].reserved, true, &buff_ptr);
- mvhd_next_struct_to_buffer(&header->par_loc_entry[i].plat_data_offset, sizeof header->par_loc_entry[i].plat_data_offset, true, &buff_ptr);
- }
- mvhd_next_struct_to_buffer(&header->reserved_2, sizeof header->reserved_2, false, &buff_ptr);
-}
diff --git a/src/disk/minivhd/minivhd_struct_rw.h b/src/disk/minivhd/minivhd_struct_rw.h
deleted file mode 100644
index 39441fb39..000000000
--- a/src/disk/minivhd/minivhd_struct_rw.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef MINIVHD_STRUCT_RW_H
-#define MINIVHD_STRUCT_RW_H
-
-#include "minivhd_internal.h"
-
-/**
- * \brief Save the contents of a VHD footer from a buffer to a struct
- *
- * \param [out] footer save contents of buffer into footer
- * \param [in] buffer VHD footer in raw bytes
- */
-void mvhd_buffer_to_footer(MVHDFooter* footer, uint8_t* buffer);
-
-/**
- * \brief Save the contents of a VHD sparse header from a buffer to a struct
- *
- * \param [out] header save contents of buffer into header
- * \param [in] buffer VHD header in raw bytes
- */
-void mvhd_buffer_to_header(MVHDSparseHeader* header, uint8_t* buffer);
-
-/**
- * \brief Save the contents of a VHD footer struct to a buffer
- *
- * \param [in] footer save contents of struct into buffer
- * \param [out] buffer VHD footer in raw bytes
- */
-void mvhd_footer_to_buffer(MVHDFooter* footer, uint8_t* buffer);
-
-/**
- * \brief Save the contents of a VHD sparse header struct to a buffer
- *
- * \param [in] header save contents of struct into buffer
- * \param [out] buffer VHD sparse header in raw bytes
- */
-void mvhd_header_to_buffer(MVHDSparseHeader* header, uint8_t* buffer);
-
-#endif
diff --git a/src/disk/minivhd/minivhd_util.c b/src/disk/minivhd/minivhd_util.c
index 5bfc59915..dd3244322 100644
--- a/src/disk/minivhd/minivhd_util.c
+++ b/src/disk/minivhd/minivhd_util.c
@@ -1,46 +1,90 @@
-/**
- * \file
- * \brief Utility functions
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Utility functions.
+ *
+ * Version: @(#)util.c 1.0.4 2021/04/16
+ *
+ * Author: Sherman Perry,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
*/
#ifndef _FILE_OFFSET_BITS
-#define _FILE_OFFSET_BITS 64
+# define _FILE_OFFSET_BITS 64
#endif
#include
#include
#include
#include
+#include
#include
#include
#include
#include
-#include "libxml2_encoding.h"
-#include "minivhd_internal.h"
-#include "minivhd_util.h"
+#include "minivhd.h"
+#include "internal.h"
+#include "xml2_encoding.h"
-const char MVHD_CONECTIX_COOKIE[] = "conectix";
-const char MVHD_CREATOR[] = "pcem";
-const char MVHD_CREATOR_HOST_OS[] = "Wi2k";
-const char MVHD_CXSPARSE_COOKIE[] = "cxsparse";
-uint16_t mvhd_from_be16(uint16_t val) {
+uint16_t
+mvhd_from_be16(uint16_t val)
+{
uint8_t *tmp = (uint8_t*)&val;
uint16_t ret = 0;
+
ret |= (uint16_t)tmp[0] << 8;
ret |= (uint16_t)tmp[1] << 0;
+
return ret;
}
-uint32_t mvhd_from_be32(uint32_t val) {
+
+
+uint32_t
+mvhd_from_be32(uint32_t val)
+{
uint8_t *tmp = (uint8_t*)&val;
uint32_t ret = 0;
+
ret = (uint32_t)tmp[0] << 24;
ret |= (uint32_t)tmp[1] << 16;
ret |= (uint32_t)tmp[2] << 8;
ret |= (uint32_t)tmp[3] << 0;
+
return ret;
}
-uint64_t mvhd_from_be64(uint64_t val) {
+
+
+uint64_t
+mvhd_from_be64(uint64_t val)
+{
uint8_t *tmp = (uint8_t*)&val;
uint64_t ret = 0;
+
ret = (uint64_t)tmp[0] << 56;
ret |= (uint64_t)tmp[1] << 48;
ret |= (uint64_t)tmp[2] << 40;
@@ -49,27 +93,45 @@ uint64_t mvhd_from_be64(uint64_t val) {
ret |= (uint64_t)tmp[5] << 16;
ret |= (uint64_t)tmp[6] << 8;
ret |= (uint64_t)tmp[7] << 0;
+
return ret;
}
-uint16_t mvhd_to_be16(uint16_t val) {
+
+
+uint16_t
+mvhd_to_be16(uint16_t val)
+{
uint16_t ret = 0;
uint8_t *tmp = (uint8_t*)&ret;
+
tmp[0] = (val & 0xff00) >> 8;
tmp[1] = (val & 0x00ff) >> 0;
+
return ret;
}
-uint32_t mvhd_to_be32(uint32_t val) {
+
+
+uint32_t
+mvhd_to_be32(uint32_t val)
+{
uint32_t ret = 0;
uint8_t *tmp = (uint8_t*)&ret;
+
tmp[0] = (val & 0xff000000) >> 24;
tmp[1] = (val & 0x00ff0000) >> 16;
tmp[2] = (val & 0x0000ff00) >> 8;
tmp[3] = (val & 0x000000ff) >> 0;
+
return ret;
}
-uint64_t mvhd_to_be64(uint64_t val) {
+
+
+uint64_t
+mvhd_to_be64(uint64_t val)
+{
uint64_t ret = 0;
uint8_t *tmp = (uint8_t*)&ret;
+
tmp[0] = (uint8_t)((val & 0xff00000000000000) >> 56);
tmp[1] = (uint8_t)((val & 0x00ff000000000000) >> 48);
tmp[2] = (uint8_t)((val & 0x0000ff0000000000) >> 40);
@@ -78,21 +140,17 @@ uint64_t mvhd_to_be64(uint64_t val) {
tmp[5] = (uint8_t)((val & 0x0000000000ff0000) >> 16);
tmp[6] = (uint8_t)((val & 0x000000000000ff00) >> 8);
tmp[7] = (uint8_t)((val & 0x00000000000000ff) >> 0);
+
return ret;
}
-bool mvhd_is_conectix_str(const void* buffer) {
- if (strncmp(buffer, MVHD_CONECTIX_COOKIE, strlen(MVHD_CONECTIX_COOKIE)) == 0) {
- return true;
- } else {
- return false;
- }
-}
-void mvhd_generate_uuid(uint8_t* uuid)
+void
+mvhd_generate_uuid(uint8_t* uuid)
{
/* We aren't doing crypto here, so using system time as seed should be good enough */
srand((unsigned int)time(0));
+
for (int n = 0; n < 16; n++) {
uuid[n] = rand();
}
@@ -102,34 +160,50 @@ void mvhd_generate_uuid(uint8_t* uuid)
uuid[8] |= 0x80; /* Variant 1 */
}
-uint32_t vhd_calc_timestamp(void)
-{
- time_t start_time;
- time_t curr_time;
- double vhd_time;
- start_time = MVHD_START_TS; /* 1 Jan 2000 00:00 */
- curr_time = time(NULL);
- vhd_time = difftime(curr_time, start_time);
- return (uint32_t)vhd_time;
-}
-uint32_t mvhd_epoch_to_vhd_ts(time_t ts) {
- time_t start_time = MVHD_START_TS;
- if (ts < start_time) {
- return start_time;
- }
- double vhd_time = difftime(ts, start_time);
+uint32_t
+vhd_calc_timestamp(void)
+{
+ time_t start_time;
+ time_t curr_time;
+ double vhd_time;
+
+ start_time = MVHD_START_TS; /* 1 Jan 2000 00:00 */
+ curr_time = time(NULL);
+ vhd_time = difftime(curr_time, start_time);
+
return (uint32_t)vhd_time;
}
-time_t vhd_get_created_time(MVHDMeta *vhdm)
+
+uint32_t
+mvhd_epoch_to_vhd_ts(time_t ts)
{
- time_t vhd_time = (time_t)vhdm->footer.timestamp;
- time_t vhd_time_unix = MVHD_START_TS + vhd_time;
- return vhd_time_unix;
+ time_t start_time = MVHD_START_TS;
+ double vhd_time;
+
+ if (ts < start_time)
+ return (uint32_t)start_time;
+
+ vhd_time = difftime(ts, start_time);
+
+ return (uint32_t)vhd_time;
}
-FILE* mvhd_fopen(const char* path, const char* mode, int* err) {
+
+time_t
+vhd_get_created_time(MVHDMeta *vhdm)
+{
+ time_t vhd_time = (time_t)vhdm->footer.timestamp;
+ time_t vhd_time_unix = MVHD_START_TS + vhd_time;
+
+ return vhd_time_unix;
+}
+
+
+FILE*
+mvhd_fopen(const char* path, const char* mode, int* err)
+{
FILE* f = NULL;
#ifdef _WIN32
size_t path_len = strlen(path);
@@ -140,6 +214,7 @@ FILE* mvhd_fopen(const char* path, const char* mode, int* err) {
int new_mode_len = (sizeof mode_str) - 2;
int path_res = UTF8ToUTF16LE((unsigned char*)new_path, &new_path_len, (const unsigned char*)path, (int*)&path_len);
int mode_res = UTF8ToUTF16LE((unsigned char*)mode_str, &new_mode_len, (const unsigned char*)mode, (int*)&mode_len);
+
if (path_res > 0 && mode_res > 0) {
f = _wfopen(new_path, mode_str);
if (f == NULL) {
@@ -160,10 +235,14 @@ FILE* mvhd_fopen(const char* path, const char* mode, int* err) {
*err = MVHD_ERR_FILE;
}
#endif
+
return f;
}
-void mvhd_set_encoding_err(int encoding_retval, int* err) {
+
+void
+mvhd_set_encoding_err(int encoding_retval, int* err)
+{
if (encoding_retval == -1) {
*err = MVHD_ERR_UTF_SIZE;
} else if (encoding_retval == -2) {
@@ -171,87 +250,162 @@ void mvhd_set_encoding_err(int encoding_retval, int* err) {
}
}
-uint64_t mvhd_calc_size_bytes(MVHDGeom *geom) {
+
+uint64_t
+mvhd_calc_size_bytes(MVHDGeom *geom)
+{
uint64_t img_size = (uint64_t)geom->cyl * (uint64_t)geom->heads * (uint64_t)geom->spt * (uint64_t)MVHD_SECTOR_SIZE;
+
return img_size;
}
-uint32_t mvhd_calc_size_sectors(MVHDGeom *geom) {
+
+uint32_t
+mvhd_calc_size_sectors(MVHDGeom *geom)
+{
uint32_t sector_size = (uint32_t)geom->cyl * (uint32_t)geom->heads * (uint32_t)geom->spt;
+
return sector_size;
}
-MVHDGeom mvhd_get_geometry(MVHDMeta* vhdm) {
- MVHDGeom geometry = { .cyl = vhdm->footer.geom.cyl, .heads = vhdm->footer.geom.heads, .spt = vhdm->footer.geom.spt };
+
+MVHDAPI MVHDGeom
+mvhd_get_geometry(MVHDMeta* vhdm)
+{
+ MVHDGeom geometry = {
+ .cyl = vhdm->footer.geom.cyl,
+ .heads = vhdm->footer.geom.heads,
+ .spt = vhdm->footer.geom.spt
+ };
+
return geometry;
}
-uint32_t mvhd_gen_footer_checksum(MVHDFooter* footer) {
+
+MVHDAPI uint64_t
+mvhd_get_current_size(MVHDMeta* vhdm)
+{
+ return vhdm->footer.curr_sz;
+}
+
+
+uint32_t
+mvhd_gen_footer_checksum(MVHDFooter* footer)
+{
uint32_t new_chk = 0;
uint32_t orig_chk = footer->checksum;
footer->checksum = 0;
uint8_t* footer_bytes = (uint8_t*)footer;
- for (size_t i = 0; i < sizeof *footer; i++) {
+
+ for (size_t i = 0; i < sizeof *footer; i++)
new_chk += footer_bytes[i];
- }
footer->checksum = orig_chk;
+
return ~new_chk;
}
-uint32_t mvhd_gen_sparse_checksum(MVHDSparseHeader* header) {
+
+uint32_t
+mvhd_gen_sparse_checksum(MVHDSparseHeader* header)
+{
uint32_t new_chk = 0;
uint32_t orig_chk = header->checksum;
header->checksum = 0;
uint8_t* sparse_bytes = (uint8_t*)header;
+
for (size_t i = 0; i < sizeof *header; i++) {
new_chk += sparse_bytes[i];
}
header->checksum = orig_chk;
+
return ~new_chk;
}
-const char* mvhd_strerr(MVHDError err) {
+
+MVHDAPI const char*
+mvhd_strerr(MVHDError err)
+{
+ const char *s = "unknown error";
+
switch (err) {
- case MVHD_ERR_MEM:
- return "memory allocation error";
- case MVHD_ERR_FILE:
- return "file error";
- case MVHD_ERR_NOT_VHD:
- return "file is not a VHD image";
- case MVHD_ERR_TYPE:
- return "unsupported VHD image type";
- case MVHD_ERR_FOOTER_CHECKSUM:
- return "invalid VHD footer checksum";
- case MVHD_ERR_SPARSE_CHECKSUM:
- return "invalid VHD sparse header checksum";
- case MVHD_ERR_UTF_TRANSCODING_FAILED:
- return "error converting path encoding";
- case MVHD_ERR_UTF_SIZE:
- return "buffer size mismatch when converting path encoding";
- case MVHD_ERR_PATH_REL:
- return "relative path detected where absolute path expected";
- case MVHD_ERR_PATH_LEN:
- return "path length exceeds MVHD_MAX_PATH";
- case MVHD_ERR_PAR_NOT_FOUND:
- return "parent VHD image not found";
- case MVHD_ERR_INVALID_PAR_UUID:
- return "UUID mismatch between child and parent VHD";
- case MVHD_ERR_INVALID_GEOM:
- return "invalid geometry detected";
- case MVHD_ERR_INVALID_SIZE:
- return "invalid size";
- case MVHD_ERR_INVALID_BLOCK_SIZE:
- return "invalid block size";
- case MVHD_ERR_INVALID_PARAMS:
- return "invalid parameters passed to function";
- case MVHD_ERR_CONV_SIZE:
- return "error converting image. Size mismatch detechted";
- default:
- return "unknown error";
+ case MVHD_ERR_MEM:
+ s = "memory allocation error";
+ break;
+
+ case MVHD_ERR_FILE:
+ s = "file error";
+ break;
+
+ case MVHD_ERR_NOT_VHD:
+ s = "file is not a VHD image";
+ break;
+
+ case MVHD_ERR_TYPE:
+ s = "unsupported VHD image type";
+ break;
+
+ case MVHD_ERR_FOOTER_CHECKSUM:
+ s = "invalid VHD footer checksum";
+ break;
+
+ case MVHD_ERR_SPARSE_CHECKSUM:
+ s = "invalid VHD sparse header checksum";
+ break;
+
+ case MVHD_ERR_UTF_TRANSCODING_FAILED:
+ s = "error converting path encoding";
+ break;
+
+ case MVHD_ERR_UTF_SIZE:
+ s = "buffer size mismatch when converting path encoding";
+ break;
+
+ case MVHD_ERR_PATH_REL:
+ s = "relative path detected where absolute path expected";
+ break;
+
+ case MVHD_ERR_PATH_LEN:
+ s = "path length exceeds MVHD_MAX_PATH";
+ break;
+
+ case MVHD_ERR_PAR_NOT_FOUND:
+ s = "parent VHD image not found";
+ break;
+
+ case MVHD_ERR_INVALID_PAR_UUID:
+ s = "UUID mismatch between child and parent VHD";
+ break;
+
+ case MVHD_ERR_INVALID_GEOM:
+ s = "invalid geometry detected";
+ break;
+
+ case MVHD_ERR_INVALID_SIZE:
+ s = "invalid size";
+ break;
+
+ case MVHD_ERR_INVALID_BLOCK_SIZE:
+ s = "invalid block size";
+ break;
+
+ case MVHD_ERR_INVALID_PARAMS:
+ s = "invalid parameters passed to function";
+ break;
+
+ case MVHD_ERR_CONV_SIZE:
+ s = "error converting image. Size mismatch detected";
+ break;
+
+ default:
+ break;
}
+
+ return s;
}
-int64_t mvhd_ftello64(FILE* stream)
+
+int64_t
+mvhd_ftello64(FILE* stream)
{
#ifdef _MSC_VER
return _ftelli64(stream);
@@ -262,7 +416,9 @@ int64_t mvhd_ftello64(FILE* stream)
#endif
}
-int mvhd_fseeko64(FILE* stream, int64_t offset, int origin)
+
+int
+mvhd_fseeko64(FILE* stream, int64_t offset, int origin)
{
#ifdef _MSC_VER
return _fseeki64(stream, offset, origin);
@@ -273,17 +429,25 @@ int mvhd_fseeko64(FILE* stream, int64_t offset, int origin)
#endif
}
-uint32_t mvhd_crc32_for_byte(uint32_t r) {
+
+uint32_t
+mvhd_crc32_for_byte(uint32_t r)
+{
for (int j = 0; j < 8; ++j)
r = (r & 1 ? 0 : (uint32_t)0xEDB88320L) ^ r >> 1;
+
return r ^ (uint32_t)0xFF000000L;
}
-uint32_t mvhd_crc32(const void* data, size_t n_bytes) {
+
+uint32_t
+mvhd_crc32(const void* data, size_t n_bytes)
+{
static uint32_t table[0x100];
+
if (!*table)
for (size_t i = 0; i < 0x100; ++i)
- table[i] = mvhd_crc32_for_byte(i);
+ table[i] = mvhd_crc32_for_byte((uint32_t)i);
uint32_t crc = 0;
for (size_t i = 0; i < n_bytes; ++i)
@@ -292,7 +456,10 @@ uint32_t mvhd_crc32(const void* data, size_t n_bytes) {
return crc;
}
-uint32_t mvhd_file_mod_timestamp(const char* path, int *err) {
+
+uint32_t
+mvhd_file_mod_timestamp(const char* path, int *err)
+{
*err = 0;
#ifdef _WIN32
struct _stat file_stat;
@@ -300,6 +467,7 @@ uint32_t mvhd_file_mod_timestamp(const char* path, int *err) {
mvhd_utf16 new_path[260] = {0};
int new_path_len = (sizeof new_path) - 2;
int path_res = UTF8ToUTF16LE((unsigned char*)new_path, &new_path_len, (const unsigned char*)path, (int*)&path_len);
+
if (path_res > 0) {
int stat_res = _wstat(new_path, &file_stat);
if (stat_res != 0) {
@@ -319,6 +487,7 @@ uint32_t mvhd_file_mod_timestamp(const char* path, int *err) {
#else
struct stat file_stat;
int stat_res = stat(path, &file_stat);
+
if (stat_res != 0) {
mvhd_errno = errno;
*err = MVHD_ERR_FILE;
diff --git a/src/disk/minivhd/minivhd_util.h b/src/disk/minivhd/minivhd_util.h
deleted file mode 100644
index 227570ce2..000000000
--- a/src/disk/minivhd/minivhd_util.h
+++ /dev/null
@@ -1,136 +0,0 @@
-#ifndef MINIVHD_UTIL_H
-#define MINIVHD_UTIL_H
-
-#include
-#include
-#include
-#include "minivhd_internal.h"
-#include "minivhd.h"
-#define MVHD_START_TS 946684800
-
-/**
- * Functions to deal with endian issues
- */
-uint16_t mvhd_from_be16(uint16_t val);
-uint32_t mvhd_from_be32(uint32_t val);
-uint64_t mvhd_from_be64(uint64_t val);
-uint16_t mvhd_to_be16(uint16_t val);
-uint32_t mvhd_to_be32(uint32_t val);
-uint64_t mvhd_to_be64(uint64_t val);
-
-/**
- * \brief Check if provided buffer begins with the string "conectix"
- *
- * \param [in] buffer The buffer to compare. Must be at least 8 bytes in length
- *
- * \return true if the buffer begins with "conectix"
- * \return false if the buffer does not begin with "conectix"
- */
-bool mvhd_is_conectix_str(const void* buffer);
-
-/**
- * \brief Generate a raw 16 byte UUID
- *
- * \param [out] uuid A 16 byte buffer in which the generated UUID will be stored to
- */
-void mvhd_generate_uuid(uint8_t *uuid);
-
-/**
- * \brief Calculate a VHD formatted timestamp from the current time
- */
-uint32_t vhd_calc_timestamp(void);
-
-/**
- * \brief Convert an epoch timestamp to a VHD timestamp
- *
- * \param [in] ts epoch timestamp to convert.
- *
- * \return The adjusted timestamp, or 0 if the input timestamp is
- * earlier that 1 Janurary 2000
- */
-uint32_t mvhd_epoch_to_vhd_ts(time_t ts);
-
-/**
- * \brief Return the created time from a VHD image
- *
- * \param [in] vhdm Pointer to the MiniVHD metadata structure
- *
- * \return The created time, as a Unix timestamp
- */
-time_t vhd_get_created_time(MVHDMeta *vhdm);
-
-/**
- * \brief Cross platform, unicode filepath opening
- *
- * This function accounts for the fact that fopen() handles file paths differently compared to other
- * operating systems. Windows version of fopen() will not handle multi byte encoded text like UTF-8.
- *
- * Unicode filepath support on Windows requires using the _wfopen() function, which expects UTF-16LE
- * encoded path and modestring.
- *
- * \param [in] path The filepath to open as a UTF-8 string
- * \param [in] mode The mode string to use (eg: "rb+"")
- * \param [out] err The error value, if an error occurrs
- *
- * \return a FILE pointer if successful, NULL otherwise. If NULL, check the value of err
- */
-FILE* mvhd_fopen(const char* path, const char* mode, int* err);
-
-void mvhd_set_encoding_err(int encoding_retval, int* err);
-uint64_t mvhd_calc_size_bytes(MVHDGeom *geom);
-uint32_t mvhd_calc_size_sectors(MVHDGeom *geom);
-MVHDGeom mvhd_get_geometry(MVHDMeta* vhdm);
-
-/**
- * \brief Generate VHD footer checksum
- *
- * \param [in] vhdm MiniVHD data structure
- */
-uint32_t mvhd_gen_footer_checksum(MVHDFooter* footer);
-
-/**
- * \brief Generate VHD sparse header checksum
- *
- * \param [in] vhdm MiniVHD data structure
- */
-uint32_t mvhd_gen_sparse_checksum(MVHDSparseHeader* header);
-
-/**
- * \brief Get current position in file stream
- *
- * This is a portable version of the POSIX ftello64(). *
- */
-int64_t mvhd_ftello64(FILE* stream);
-
-/**
- * \brief Reposition the file stream's position
- *
- * This is a portable version of the POSIX fseeko64(). *
- */
-int mvhd_fseeko64(FILE* stream, int64_t offset, int origin);
-
-/**
- * \brief Calculate the CRC32 of a data buffer.
- *
- * This function can be used for verifying data integrity.
- *
- * \param [in] data The data buffer
- * \param [in] n_bytes The size of the data buffer in bytes
- *
- * \return The CRC32 of the data buffer
- */
-uint32_t mvhd_crc32(const void* data, size_t n_bytes);
-
-/**
- * \brief Calculate the file modification timestamp.
- *
- * This function is primarily to help protect differencing VHD's
- *
- * \param [in] path the UTF-8 file path
- * \param [out] err The error value, if an error occurrs
- *
- * \return The file modified timestamp, in VHD compatible timestamp.
- * 'err' will be set to non-zero on error
- */
-uint32_t mvhd_file_mod_timestamp(const char* path, int *err);
-#endif
diff --git a/src/disk/minivhd/struct_rw.c b/src/disk/minivhd/struct_rw.c
new file mode 100644
index 000000000..ceb98253a
--- /dev/null
+++ b/src/disk/minivhd/struct_rw.c
@@ -0,0 +1,232 @@
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Header and footer serialize/deserialize functions.
+ *
+ * Read data from footer into the struct members, swapping
+ * endian where necessary.
+ *
+ * NOTE: Order matters here!
+ * We must read each field in the order the struct is in.
+ * Doing this may be less elegant than performing a memcpy
+ * to a packed struct, but it avoids potential data alignment
+ * issues, and the endian swapping allows us to use the fields
+ * directly.
+ *
+ * Version: @(#)struct_rw.c 1.0.2 2021/04/16
+ *
+ * Author: Sherman Perry,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+#ifndef _FILE_OFFSET_BITS
+# define _FILE_OFFSET_BITS 64
+#endif
+#include
+#include
+#include
+#include
+#include
+#include
+#include "minivhd.h"
+#include "internal.h"
+
+
+/**
+ * \brief Get the next field from a buffer and store it in a struct member, converting endian if necessary
+ *
+ * \param [out] struct_memb struct member to save the field to
+ * \param [in] memb_size the size of struct_memb, in bytes
+ * \param [in] req_endian is the field a value that requires endian conversion (eg: uint16, uint32)
+ * \param [in] buffer the buffer from which fields are read from. Will be advanced at the end of the function call
+ */
+static void
+next_buffer_to_struct(void* struct_memb, size_t memb_size, bool req_endian, uint8_t** buffer)
+{
+ memcpy(struct_memb, *buffer, memb_size);
+
+ if (req_endian) switch (memb_size) {
+ case 2:
+ *(uint16_t*)(struct_memb) = mvhd_from_be16(*(uint16_t*)(struct_memb));
+ break;
+
+ case 4:
+ *(uint32_t*)(struct_memb) = mvhd_from_be32(*(uint32_t*)(struct_memb));
+ break;
+
+ case 8:
+ *(uint64_t*)(struct_memb) = mvhd_from_be64(*(uint64_t*)(struct_memb));
+ break;
+ }
+
+ *buffer += memb_size;
+}
+
+
+/**
+ * \brief Save a struct member into a buffer, converting endian if necessary
+ *
+ * \param [in] struct_memb struct member read from
+ * \param [in] memb_size the size of struct_memb, in bytes
+ * \param [in] req_endian is the field a value that requires endian conversion (eg: uint16, uint32)
+ * \param [out] buffer the buffer from which struct member is saved to. Will be advanced at the end of the function call
+ */
+static void
+next_struct_to_buffer(void* struct_memb, size_t memb_size, bool req_endian, uint8_t** buffer)
+{
+ uint8_t *buf_ptr = *buffer;
+
+ memcpy(buf_ptr, struct_memb, memb_size);
+
+ if (req_endian) switch (memb_size) {
+ case 2:
+ *((uint16_t*)buf_ptr) = mvhd_to_be16(*(uint16_t*)(struct_memb));
+ break;
+
+ case 4:
+ *((uint32_t*)buf_ptr) = mvhd_to_be32(*(uint32_t*)(struct_memb));
+ break;
+
+ case 8:
+ *((uint64_t*)buf_ptr) = mvhd_to_be64(*(uint64_t*)(struct_memb));
+ break;
+ }
+
+ buf_ptr += memb_size;
+ *buffer = buf_ptr;
+}
+
+
+void
+mvhd_buffer_to_footer(MVHDFooter* footer, uint8_t* buffer)
+{
+ uint8_t* buff_ptr = buffer;
+
+ next_buffer_to_struct(&footer->cookie, sizeof footer->cookie, false, &buff_ptr);
+ next_buffer_to_struct(&footer->features, sizeof footer->features, true, &buff_ptr);
+ next_buffer_to_struct(&footer->fi_fmt_vers, sizeof footer->fi_fmt_vers, true, &buff_ptr);
+ next_buffer_to_struct(&footer->data_offset, sizeof footer->data_offset, true, &buff_ptr);
+ next_buffer_to_struct(&footer->timestamp, sizeof footer->timestamp, true, &buff_ptr);
+ next_buffer_to_struct(&footer->cr_app, sizeof footer->cr_app, false, &buff_ptr);
+ next_buffer_to_struct(&footer->cr_vers, sizeof footer->cr_vers, true, &buff_ptr);
+ next_buffer_to_struct(&footer->cr_host_os, sizeof footer->cr_host_os, false, &buff_ptr);
+ next_buffer_to_struct(&footer->orig_sz, sizeof footer->orig_sz, true, &buff_ptr);
+ next_buffer_to_struct(&footer->curr_sz, sizeof footer->curr_sz, true, &buff_ptr);
+ next_buffer_to_struct(&footer->geom.cyl, sizeof footer->geom.cyl, true, &buff_ptr);
+ next_buffer_to_struct(&footer->geom.heads, sizeof footer->geom.heads, false, &buff_ptr);
+ next_buffer_to_struct(&footer->geom.spt, sizeof footer->geom.spt, false, &buff_ptr);
+ next_buffer_to_struct(&footer->disk_type, sizeof footer->disk_type, true, &buff_ptr);
+ next_buffer_to_struct(&footer->checksum, sizeof footer->checksum, true, &buff_ptr);
+ next_buffer_to_struct(&footer->uuid, sizeof footer->uuid, false, &buff_ptr);
+ next_buffer_to_struct(&footer->saved_st, sizeof footer->saved_st, false, &buff_ptr);
+ next_buffer_to_struct(&footer->reserved, sizeof footer->reserved, false, &buff_ptr);
+}
+
+
+void
+mvhd_footer_to_buffer(MVHDFooter* footer, uint8_t* buffer)
+{
+ uint8_t* buff_ptr = buffer;
+
+ next_struct_to_buffer(&footer->cookie, sizeof footer->cookie, false, &buff_ptr);
+ next_struct_to_buffer(&footer->features, sizeof footer->features, true, &buff_ptr);
+ next_struct_to_buffer(&footer->fi_fmt_vers, sizeof footer->fi_fmt_vers, true, &buff_ptr);
+ next_struct_to_buffer(&footer->data_offset, sizeof footer->data_offset, true, &buff_ptr);
+ next_struct_to_buffer(&footer->timestamp, sizeof footer->timestamp, true, &buff_ptr);
+ next_struct_to_buffer(&footer->cr_app, sizeof footer->cr_app, false, &buff_ptr);
+ next_struct_to_buffer(&footer->cr_vers, sizeof footer->cr_vers, true, &buff_ptr);
+ next_struct_to_buffer(&footer->cr_host_os, sizeof footer->cr_host_os, false, &buff_ptr);
+ next_struct_to_buffer(&footer->orig_sz, sizeof footer->orig_sz, true, &buff_ptr);
+ next_struct_to_buffer(&footer->curr_sz, sizeof footer->curr_sz, true, &buff_ptr);
+ next_struct_to_buffer(&footer->geom.cyl, sizeof footer->geom.cyl, true, &buff_ptr);
+ next_struct_to_buffer(&footer->geom.heads, sizeof footer->geom.heads, false, &buff_ptr);
+ next_struct_to_buffer(&footer->geom.spt, sizeof footer->geom.spt, false, &buff_ptr);
+ next_struct_to_buffer(&footer->disk_type, sizeof footer->disk_type, true, &buff_ptr);
+ next_struct_to_buffer(&footer->checksum, sizeof footer->checksum, true, &buff_ptr);
+ next_struct_to_buffer(&footer->uuid, sizeof footer->uuid, false, &buff_ptr);
+ next_struct_to_buffer(&footer->saved_st, sizeof footer->saved_st, false, &buff_ptr);
+ next_struct_to_buffer(&footer->reserved, sizeof footer->reserved, false, &buff_ptr);
+}
+
+
+void
+mvhd_buffer_to_header(MVHDSparseHeader* header, uint8_t* buffer)
+{
+ uint8_t* buff_ptr = buffer;
+
+ next_buffer_to_struct(&header->cookie, sizeof header->cookie, false, &buff_ptr);
+ next_buffer_to_struct(&header->data_offset, sizeof header->data_offset, true, &buff_ptr);
+ next_buffer_to_struct(&header->bat_offset, sizeof header->bat_offset, true, &buff_ptr);
+ next_buffer_to_struct(&header->head_vers, sizeof header->head_vers, true, &buff_ptr);
+ next_buffer_to_struct(&header->max_bat_ent, sizeof header->max_bat_ent, true, &buff_ptr);
+ next_buffer_to_struct(&header->block_sz, sizeof header->block_sz, true, &buff_ptr);
+ next_buffer_to_struct(&header->checksum, sizeof header->checksum, true, &buff_ptr);
+ next_buffer_to_struct(&header->par_uuid, sizeof header->par_uuid, false, &buff_ptr);
+ next_buffer_to_struct(&header->par_timestamp, sizeof header->par_timestamp, true, &buff_ptr);
+ next_buffer_to_struct(&header->reserved_1, sizeof header->reserved_1, true, &buff_ptr);
+ next_buffer_to_struct(&header->par_utf16_name, sizeof header->par_utf16_name, false, &buff_ptr);
+
+ for (int i = 0; i < 8; i++) {
+ next_buffer_to_struct(&header->par_loc_entry[i].plat_code, sizeof header->par_loc_entry[i].plat_code, true, &buff_ptr);
+ next_buffer_to_struct(&header->par_loc_entry[i].plat_data_space, sizeof header->par_loc_entry[i].plat_data_space, true, &buff_ptr);
+ next_buffer_to_struct(&header->par_loc_entry[i].plat_data_len, sizeof header->par_loc_entry[i].plat_data_len, true, &buff_ptr);
+ next_buffer_to_struct(&header->par_loc_entry[i].reserved, sizeof header->par_loc_entry[i].reserved, true, &buff_ptr);
+ next_buffer_to_struct(&header->par_loc_entry[i].plat_data_offset, sizeof header->par_loc_entry[i].plat_data_offset, true, &buff_ptr);
+ }
+
+ next_buffer_to_struct(&header->reserved_2, sizeof header->reserved_2, false, &buff_ptr);
+}
+
+
+void
+mvhd_header_to_buffer(MVHDSparseHeader* header, uint8_t* buffer)
+{
+ uint8_t* buff_ptr = buffer;
+
+ next_struct_to_buffer(&header->cookie, sizeof header->cookie, false, &buff_ptr);
+ next_struct_to_buffer(&header->data_offset, sizeof header->data_offset, true, &buff_ptr);
+ next_struct_to_buffer(&header->bat_offset, sizeof header->bat_offset, true, &buff_ptr);
+ next_struct_to_buffer(&header->head_vers, sizeof header->head_vers, true, &buff_ptr);
+ next_struct_to_buffer(&header->max_bat_ent, sizeof header->max_bat_ent, true, &buff_ptr);
+ next_struct_to_buffer(&header->block_sz, sizeof header->block_sz, true, &buff_ptr);
+ next_struct_to_buffer(&header->checksum, sizeof header->checksum, true, &buff_ptr);
+ next_struct_to_buffer(&header->par_uuid, sizeof header->par_uuid, false, &buff_ptr);
+ next_struct_to_buffer(&header->par_timestamp, sizeof header->par_timestamp, true, &buff_ptr);
+ next_struct_to_buffer(&header->reserved_1, sizeof header->reserved_1, true, &buff_ptr);
+ next_struct_to_buffer(&header->par_utf16_name, sizeof header->par_utf16_name, false, &buff_ptr);
+
+ for (int i = 0; i < 8; i++) {
+ next_struct_to_buffer(&header->par_loc_entry[i].plat_code, sizeof header->par_loc_entry[i].plat_code, true, &buff_ptr);
+ next_struct_to_buffer(&header->par_loc_entry[i].plat_data_space, sizeof header->par_loc_entry[i].plat_data_space, true, &buff_ptr);
+ next_struct_to_buffer(&header->par_loc_entry[i].plat_data_len, sizeof header->par_loc_entry[i].plat_data_len, true, &buff_ptr);
+ next_struct_to_buffer(&header->par_loc_entry[i].reserved, sizeof header->par_loc_entry[i].reserved, true, &buff_ptr);
+ next_struct_to_buffer(&header->par_loc_entry[i].plat_data_offset, sizeof header->par_loc_entry[i].plat_data_offset, true, &buff_ptr);
+ }
+
+ next_struct_to_buffer(&header->reserved_2, sizeof header->reserved_2, false, &buff_ptr);
+}
diff --git a/src/disk/minivhd/version.h b/src/disk/minivhd/version.h
new file mode 100644
index 000000000..fcedc1be2
--- /dev/null
+++ b/src/disk/minivhd/version.h
@@ -0,0 +1,68 @@
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Define library version and build info.
+ *
+ * Version: @(#)version.h 1.034 2021/04/16
+ *
+ * Author: Fred N. van Kempen,
+ *
+ * Copyright 2021 Fred N. van Kempen.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+#ifndef MINIVHD_VERSION_H
+# define MINIVHD_VERSION_H
+
+
+/* Library name. */
+#define LIB_NAME "MiniVHD"
+
+/* Version info. */
+#define LIB_VER_MAJOR 1
+#define LIB_VER_MINOR 0
+#define LIB_VER_REV 3
+#define LIB_VER_PATCH 0
+
+
+/* Standard C preprocessor macros. */
+#define STR_STRING(x) #x
+#define STR(x) STR_STRING(x)
+#define STR_RC(a,e) a ## , ## e
+
+
+/* These are used in the application. */
+#define LIB_VER_NUM LIB_VER_MAJOR.LIB_VER_MINOR.LIB_VER_REV
+#if defined(LIB_VER_PATCH) && LIB_VER_PATCH > 0
+# define LIB_VER_NUM_4 LIB_VER_MAJOR.LIB_VER_MINOR.LIB_VER_REV.LIB_VER_PATCH
+#else
+# define LIB_VER_NUM_4 LIB_VER_MAJOR.LIB_VER_MINOR.LIB_VER_REV.0
+#endif
+#define LIB_VERSION STR(LIB_VER_NUM)
+#define LIB_VERSION_4 STR(LIB_VER_NUM_4)
+
+
+#endif /*MINIVHD_VERSION_H*/
diff --git a/src/disk/minivhd/libxml2_encoding.c b/src/disk/minivhd/xml2_encoding.c
similarity index 92%
rename from src/disk/minivhd/libxml2_encoding.c
rename to src/disk/minivhd/xml2_encoding.c
index 48c291f2f..6c39cb7f6 100644
--- a/src/disk/minivhd/libxml2_encoding.c
+++ b/src/disk/minivhd/xml2_encoding.c
@@ -22,9 +22,19 @@
* Adapted and abridged for MiniVHD by Sherman Perry
*/
#include
+#include
+#include
+#include
+#include
+#define BUILDING_LIBRARY
+#include "minivhd.h"
+#include "internal.h"
+#include "xml2_encoding.h"
+
static int xmlLittleEndian = 1;
+
/* Note: extracted from original 'void xmlInitCharEncodingHandlers(void)' function */
void xmlEncodingInit(void)
{
@@ -96,8 +106,8 @@ int UTF16LEToUTF8(unsigned char* out, int *outlen,
c += 0x10000;
}
else {
- *outlen = out - outstart;
- *inlenb = processed - inb;
+ *outlen = (int)(out - outstart);
+ *inlenb = (int)(processed - inb);
return(-2);
}
}
@@ -117,8 +127,8 @@ int UTF16LEToUTF8(unsigned char* out, int *outlen,
}
processed = (const unsigned char*) in;
}
- *outlen = out - outstart;
- *inlenb = processed - inb;
+ *outlen = (int)(out - outstart);
+ *inlenb = (int)(processed - inb);
return(*outlen);
}
@@ -163,16 +173,16 @@ int UTF8ToUTF16LE(unsigned char* outb, int *outlen,
if (d < 0x80) { c= d; trailing= 0; }
else if (d < 0xC0) {
/* trailing byte in leading position */
- *outlen = (out - outstart) * 2;
- *inlen = processed - instart;
+ *outlen = (int)((out - outstart) * 2);
+ *inlen = (int)(processed - instart);
return(-2);
} else if (d < 0xE0) { c= d & 0x1F; trailing= 1; }
else if (d < 0xF0) { c= d & 0x0F; trailing= 2; }
else if (d < 0xF8) { c= d & 0x07; trailing= 3; }
else {
/* no chance for this in UTF-16 */
- *outlen = (out - outstart) * 2;
- *inlen = processed - instart;
+ *outlen = (int)((out - outstart) * 2);
+ *inlen = (int)(processed - instart);
return(-2);
}
@@ -225,8 +235,8 @@ int UTF8ToUTF16LE(unsigned char* outb, int *outlen,
break;
processed = in;
}
- *outlen = (out - outstart) * 2;
- *inlen = processed - instart;
+ *outlen = (int)((out - outstart) * 2);
+ *inlen = (int)(processed - instart);
return(*outlen);
}
@@ -275,8 +285,8 @@ int UTF16BEToUTF8(unsigned char* out, int *outlen,
}
if ((c & 0xFC00) == 0xD800) { /* surrogates */
if (in >= inend) { /* (in > inend) shouldn't happens */
- *outlen = out - outstart;
- *inlenb = processed - inb;
+ *outlen = (int)(out - outstart);
+ *inlenb = (int)(processed - inb);
return(-2);
}
if (xmlLittleEndian) {
@@ -295,8 +305,8 @@ int UTF16BEToUTF8(unsigned char* out, int *outlen,
c += 0x10000;
}
else {
- *outlen = out - outstart;
- *inlenb = processed - inb;
+ *outlen = (int)(out - outstart);
+ *inlenb = (int)(processed - inb);
return(-2);
}
}
@@ -316,8 +326,8 @@ int UTF16BEToUTF8(unsigned char* out, int *outlen,
}
processed = (const unsigned char*) in;
}
- *outlen = out - outstart;
- *inlenb = processed - inb;
+ *outlen = (int)(out - outstart);
+ *inlenb = (int)(processed - inb);
return(*outlen);
}
@@ -362,16 +372,16 @@ int UTF8ToUTF16BE(unsigned char* outb, int *outlen,
if (d < 0x80) { c= d; trailing= 0; }
else if (d < 0xC0) {
/* trailing byte in leading position */
- *outlen = out - outstart;
- *inlen = processed - instart;
+ *outlen = (int)(out - outstart);
+ *inlen = (int)(processed - instart);
return(-2);
} else if (d < 0xE0) { c= d & 0x1F; trailing= 1; }
else if (d < 0xF0) { c= d & 0x0F; trailing= 2; }
else if (d < 0xF8) { c= d & 0x07; trailing= 3; }
else {
/* no chance for this in UTF-16 */
- *outlen = out - outstart;
- *inlen = processed - instart;
+ *outlen = (int)(out - outstart);
+ *inlen = (int)(processed - instart);
return(-2);
}
@@ -421,8 +431,8 @@ int UTF8ToUTF16BE(unsigned char* outb, int *outlen,
break;
processed = in;
}
- *outlen = (out - outstart) * 2;
- *inlen = processed - instart;
+ *outlen = (int)((out - outstart) * 2);
+ *inlen = (int)(processed - instart);
return(*outlen);
}
diff --git a/src/disk/minivhd/xml2_encoding.h b/src/disk/minivhd/xml2_encoding.h
new file mode 100644
index 000000000..68c85390d
--- /dev/null
+++ b/src/disk/minivhd/xml2_encoding.h
@@ -0,0 +1,62 @@
+/*
+ * MiniVHD Minimalist VHD implementation in C.
+ *
+ * This file is part of the MiniVHD Project.
+ *
+ * Version: @(#)xml2_encoding.h 1.0.1 2021/03/15
+ *
+ * Author: Sherman Perry,
+ *
+ * Copyright 2019-2021 Sherman Perry.
+ *
+ * MIT License
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documenta-
+ * tion files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall
+ * be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF O R IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+#ifndef XML2_ENCODING_H
+# define XML2_ENCODING_H
+
+
+typedef uint16_t mvhd_utf16;
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void xmlEncodingInit(void);
+
+int UTF16LEToUTF8(uint8_t *out, int *outlen, const uint8_t *inb,
+ int *inlenb);
+int UTF8ToUTF16LE(uint8_t *outb, int *outlen, const uint8_t *in,
+ int *inlen);
+int UTF16BEToUTF8(uint8_t *out, int *outlen, const uint8_t *inb,
+ int *inlenb);
+int UTF8ToUTF16BE(uint8_t *outb, int *outlen, const uint8_t *in,
+ int *inlen);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /*XML2_ENCODING_H*/
diff --git a/src/floppy/fdc_monster.c b/src/floppy/fdc_monster.c
index ae5e1b290..00a9d968a 100644
--- a/src/floppy/fdc_monster.c
+++ b/src/floppy/fdc_monster.c
@@ -33,12 +33,12 @@
#include <86box/fdc.h>
#include <86box/fdc_ext.h>
-#define BIOS_ADDR (uint32_t)(device_get_config_hex20("bios_addr") & 0x000fffff)
+#define BIOS_ADDR (uint32_t)(device_get_config_hex20("bios_addr") & 0x000fffff)
#define ROM_MONSTER_FDC "roms/floppy/monster-fdc/floppy_bios.bin"
typedef struct
{
- rom_t bios_rom;
+ rom_t bios_rom;
fdc_t *fdc_pri;
fdc_t *fdc_sec;
} monster_fdc_t;
@@ -46,7 +46,7 @@ typedef struct
static void
monster_fdc_close(void *priv)
{
- monster_fdc_t *dev = (monster_fdc_t *)priv;
+ monster_fdc_t *dev = (monster_fdc_t *) priv;
free(dev);
}
@@ -56,7 +56,7 @@ monster_fdc_init(const device_t *info)
{
monster_fdc_t *dev;
- dev = (monster_fdc_t *)malloc(sizeof(monster_fdc_t));
+ dev = (monster_fdc_t *) malloc(sizeof(monster_fdc_t));
memset(dev, 0, sizeof(monster_fdc_t));
#if 0
@@ -86,13 +86,14 @@ monster_fdc_init(const device_t *info)
return dev;
}
-static int monster_fdc_available(void)
+static int
+monster_fdc_available(void)
{
return rom_present(ROM_MONSTER_FDC);
}
static const device_config_t monster_fdc_config[] = {
-// clang-format off
+ // clang-format off
#if 0
{
.name = "sec_enabled",
@@ -205,19 +206,19 @@ static const device_config_t monster_fdc_config[] = {
},
#endif
{ .name = "", .description = "", .type = CONFIG_END }
-// clang-format on
+ // clang-format on
};
const device_t fdc_monster_device = {
- .name = "Monster FDC Floppy Drive Controller",
+ .name = "Monster FDC Floppy Drive Controller",
.internal_name = "monster_fdc",
- .flags = DEVICE_ISA,
- .local = 0,
- .init = monster_fdc_init,
- .close = monster_fdc_close,
- .reset = NULL,
+ .flags = DEVICE_ISA,
+ .local = 0,
+ .init = monster_fdc_init,
+ .close = monster_fdc_close,
+ .reset = NULL,
{ .available = monster_fdc_available },
.speed_changed = NULL,
- .force_redraw = NULL,
- .config =monster_fdc_config
+ .force_redraw = NULL,
+ .config = monster_fdc_config
};
diff --git a/src/floppy/fdi2raw.c b/src/floppy/fdi2raw.c
index dcda6afc1..810293264 100644
--- a/src/floppy/fdi2raw.c
+++ b/src/floppy/fdi2raw.c
@@ -1520,7 +1520,7 @@ struct pulse_sample {
static int pulse_limitval = 15; /* tolerance of 15% */
static struct pulse_sample psarray[FDI_MAX_ARRAY];
static int array_index;
-static uint32_t total;
+static uint32_t total;
static int totaldiv;
static void
@@ -2051,7 +2051,7 @@ decode_lowlevel_track(FDI *fdi, int track, struct fdi_cache *cache)
}
static unsigned char fdiid[] = { "Formatted Disk Image file" };
-static int bit_rate_table[16] = { 125, 150, 250, 300, 500, 1000 };
+static int bit_rate_table[16] = { 125, 150, 250, 300, 500, 1000 };
void
fdi2raw_header_free(FDI *fdi)
diff --git a/src/game/gameport.c b/src/game/gameport.c
index f3557d158..03df9553d 100644
--- a/src/game/gameport.c
+++ b/src/game/gameport.c
@@ -427,16 +427,16 @@ tmacm_init(const device_t *info)
port = device_get_config_hex16("port2_addr");
switch (port) {
- case 0x201:
+ case 0x209:
dev = gameport_add(&gameport_209_device);
break;
- case 0x203:
+ case 0x20b:
dev = gameport_add(&gameport_20b_device);
break;
- case 0x205:
+ case 0x20d:
dev = gameport_add(&gameport_20d_device);
break;
- case 0x207:
+ case 0x20f:
dev = gameport_add(&gameport_20f_device);
break;
default:
diff --git a/src/include/86box/keyboard.h b/src/include/86box/keyboard.h
index 1f7d8860c..2834937ff 100644
--- a/src/include/86box/keyboard.h
+++ b/src/include/86box/keyboard.h
@@ -22,6 +22,52 @@
#ifndef EMU_KEYBOARD_H
#define EMU_KEYBOARD_H
+enum {
+ DEV_KBD = 0,
+ DEV_AUX
+};
+
+/* Used by the AT / PS/2 keyboard controller, common device, keyboard, and mouse. */
+typedef struct {
+ uint8_t wantcmd, dat, pad, pad0;
+
+ int out_new;
+
+ void *priv;
+
+ void (*poll)(void *priv);
+} kbc_port_t;
+
+/* Used by the AT / PS/2 common device, keyboard, and mouse. */
+typedef struct {
+ const char *name; /* name of this device */
+
+ uint8_t type, inst, command, wantdata,
+ last_scan_code, state, resolution, rate,
+ cmd_queue_start, cmd_queue_end, queue_start, queue_end;
+
+ /* 6 bytes needed for mouse */
+ uint8_t last_data[6];
+
+ uint16_t flags;
+
+ /* Internal FIFO, not present on real devices, needed for commands that
+ output multiple bytes. */
+ uint8_t cmd_queue[16];
+
+ uint8_t queue[16];
+
+ int mode,
+ x, y, z, b;
+
+ int *scan;
+
+ void (*process_cmd)(void *priv);
+ void (*execute_bat)(void *priv);
+
+ kbc_port_t *port;
+} atkbc_dev_t;
+
typedef struct {
const uint8_t mk[4];
const uint8_t brk[4];
@@ -139,8 +185,11 @@ extern uint8_t keyboard_set3_flags[512];
extern uint8_t keyboard_set3_all_repeat;
extern uint8_t keyboard_set3_all_break;
extern int mouse_queue_start, mouse_queue_end;
+extern int mouse_cmd_queue_start, mouse_cmd_queue_end;
extern int mouse_scan;
+extern kbc_port_t *kbc_ports[2];
+
#ifdef EMU_DEVICE_H
extern const device_t keyboard_pc_device;
extern const device_t keyboard_pc82_device;
@@ -152,13 +201,13 @@ extern const device_t keyboard_xt_t1x00_device;
extern const device_t keyboard_tandy_device;
# if defined(DEV_BRANCH) && defined(USE_LASERXT)
extern const device_t keyboard_xt_lxt3_device;
-# endif
+# endif /*defined(DEV_BRANCH) && defined(USE_LASERXT) */
extern const device_t keyboard_xt_olivetti_device;
extern const device_t keyboard_xt_zenith_device;
extern const device_t keyboard_xtclone_device;
extern const device_t keyboard_at_device;
extern const device_t keyboard_at_ami_device;
-extern const device_t keyboard_at_samsung_device;
+extern const device_t keyboard_at_tg_ami_device;
extern const device_t keyboard_at_toshiba_device;
extern const device_t keyboard_at_olivetti_device;
extern const device_t keyboard_at_ncr_device;
@@ -167,6 +216,8 @@ extern const device_t keyboard_ps2_ps1_device;
extern const device_t keyboard_ps2_ps1_pci_device;
extern const device_t keyboard_ps2_xi8088_device;
extern const device_t keyboard_ps2_ami_device;
+extern const device_t keyboard_ps2_tg_ami_device;
+extern const device_t keyboard_ps2_tg_ami_green_device;
extern const device_t keyboard_ps2_olivetti_device;
extern const device_t keyboard_ps2_mca_device;
extern const device_t keyboard_ps2_mca_2_device;
@@ -176,7 +227,8 @@ extern const device_t keyboard_ps2_ami_pci_device;
extern const device_t keyboard_ps2_intel_ami_pci_device;
extern const device_t keyboard_ps2_acer_pci_device;
extern const device_t keyboard_ps2_ali_pci_device;
-#endif
+extern const device_t keyboard_ps2_tg_ami_pci_device;
+#endif /*EMU_DEVICE_H*/
extern void keyboard_init(void);
extern void keyboard_close(void);
@@ -190,22 +242,21 @@ extern uint8_t keyboard_get_shift(void);
extern void keyboard_get_states(uint8_t *cl, uint8_t *nl, uint8_t *sl);
extern void keyboard_set_states(uint8_t cl, uint8_t nl, uint8_t sl);
extern int keyboard_recv(uint16_t key);
+extern int keyboard_isfsenter(void);
+extern int keyboard_isfsenter_down(void);
extern int keyboard_isfsexit(void);
+extern int keyboard_isfsexit_down(void);
extern int keyboard_ismsexit(void);
extern void keyboard_set_is_amstrad(int ams);
extern void keyboard_at_adddata_mouse(uint8_t val);
-extern void keyboard_at_adddata_mouse_direct(uint8_t val);
extern void keyboard_at_adddata_mouse_cmd(uint8_t val);
extern void keyboard_at_mouse_reset(void);
extern uint8_t keyboard_at_mouse_pos(void);
-extern int keyboard_at_fixed_channel(void);
extern void keyboard_at_set_mouse(void (*mouse_write)(uint8_t val, void *), void *);
extern void keyboard_at_set_a20_key(int state);
-extern void keyboard_at_set_mode(int ps2);
-extern uint8_t keyboard_at_get_mouse_scan(void);
-extern void keyboard_at_set_mouse_scan(uint8_t val);
extern void keyboard_at_reset(void);
+extern void kbc_at_a20_reset(void);
#ifdef __cplusplus
}
diff --git a/src/include/86box/language.h b/src/include/86box/language.h
index 1fd5bdf61..e3ffd1db9 100644
--- a/src/include/86box/language.h
+++ b/src/include/86box/language.h
@@ -162,6 +162,7 @@
#else
# define IDS_DYNAREC IDS_2163
#endif
+#define IDS_2166 2166 // "Video card #2 ""%hs"" is not..."
#define IDS_4096 4096 // "Hard disk (%s)"
#define IDS_4097 4097 // "%01i:%01i"
diff --git a/src/include/86box/mouse.h b/src/include/86box/mouse.h
index e6ad93e80..317e267a0 100644
--- a/src/include/86box/mouse.h
+++ b/src/include/86box/mouse.h
@@ -35,6 +35,7 @@
#define MOUSE_TYPE_LT3BUTTON 10 /* Logitech 3-button Serial Mouse */
#define MOUSE_TYPE_PS2 11 /* PS/2 series Bus Mouse */
#define MOUSE_TYPE_WACOM 12 /* WACOM tablet */
+#define MOUSE_TYPE_WACOMARTP 13 /* WACOM tablet (ArtPad) */
#define MOUSE_TYPE_ONBOARD 0x80 /* Mouse is an on-board version of one of the above. */
@@ -65,6 +66,7 @@ extern const device_t mouse_msserial_device;
extern const device_t mouse_ltserial_device;
extern const device_t mouse_ps2_device;
extern const device_t mouse_wacom_device;
+extern const device_t mouse_wacom_artpad_device;
#endif
extern void mouse_init(void);
diff --git a/src/include/86box/pic.h b/src/include/86box/pic.h
index 318ce2fad..eae6a6afb 100644
--- a/src/include/86box/pic.h
+++ b/src/include/86box/pic.h
@@ -43,8 +43,11 @@ extern void pic_elcr_write(uint16_t port, uint8_t val, void *priv);
extern uint8_t pic_elcr_read(uint16_t port, void *priv);
extern void pic_set_shadow(int sh);
+extern int pic_get_pci_flag(void);
extern void pic_set_pci_flag(int pci);
extern void pic_set_pci(void);
+extern void pic_kbd_latch(int enable);
+extern void pic_mouse_latch(int enable);
extern void pic_init(void);
extern void pic_init_pcjr(void);
extern void pic2_init(void);
diff --git a/src/include/86box/snd_mpu401.h b/src/include/86box/snd_mpu401.h
index 4afbc6b53..a6ef8d271 100644
--- a/src/include/86box/snd_mpu401.h
+++ b/src/include/86box/snd_mpu401.h
@@ -26,7 +26,7 @@
#define MPU401_VERSION 0x15
#define MPU401_REVISION 0x01
-#define MPU401_QUEUE 64
+#define MPU401_QUEUE 1024
#define MPU401_INPUT_QUEUE 1024
#define MPU401_TIMECONSTANT (60000000 / 1000.0f)
#define MPU401_RESETBUSY 27.0f
diff --git a/src/include/86box/sound.h b/src/include/86box/sound.h
index f0bfad7c7..dada9e164 100644
--- a/src/include/86box/sound.h
+++ b/src/include/86box/sound.h
@@ -24,9 +24,16 @@
extern int sound_gain;
-#define SOUNDBUFLEN (48000 / 50)
+#define FREQ_44100 44100
+#define FREQ_48000 48000
+#define FREQ_49716 49716
+#define FREQ_88200 88200
+#define FREQ_96000 96000
-#define CD_FREQ 44100
+#define SOUND_FREQ FREQ_48000
+#define SOUNDBUFLEN (SOUND_FREQ / 50)
+
+#define CD_FREQ FREQ_44100
#define CD_BUFLEN (CD_FREQ / 10)
enum {
diff --git a/src/include/86box/vid_ega.h b/src/include/86box/vid_ega.h
index 784f0c596..6c4eb02a8 100644
--- a/src/include/86box/vid_ega.h
+++ b/src/include/86box/vid_ega.h
@@ -113,6 +113,7 @@ extern int con, cursoron, cgablink;
extern int scrollcache;
extern uint8_t edatlookup[4][4];
+extern uint8_t egaremap2bpp[256];
#if defined(EMU_MEM_H) && defined(EMU_ROM_H)
void ega_render_blank(ega_t *ega);
@@ -120,14 +121,8 @@ void ega_render_blank(ega_t *ega);
void ega_render_overscan_left(ega_t *ega);
void ega_render_overscan_right(ega_t *ega);
-void ega_render_text_40(ega_t *ega);
-void ega_render_text_80(ega_t *ega);
-
-void ega_render_2bpp_lowres(ega_t *ega);
-void ega_render_2bpp_highres(ega_t *ega);
-
-void ega_render_4bpp_lowres(ega_t *ega);
-void ega_render_4bpp_highres(ega_t *ega);
+void ega_render_text(ega_t *ega);
+void ega_render_graphics(ega_t *ega);
#endif
#endif /*VIDEO_EGA_H*/
diff --git a/src/include/86box/vid_ega_render_remap.h b/src/include/86box/vid_ega_render_remap.h
index a33b27ed4..37f6904db 100644
--- a/src/include/86box/vid_ega_render_remap.h
+++ b/src/include/86box/vid_ega_render_remap.h
@@ -20,11 +20,11 @@
break; \
\
case VAR_WORD_MODE_MA13: \
- out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 13) & 0x4) | (in_addr & ~0x1ffff); \
+ out_addr = ((in_addr << 1) & 0x3fff8) | ((in_addr >> 13) & 0x4) | (in_addr & ~0x3ffff); \
break; \
\
case VAR_WORD_MODE_MA15: \
- out_addr = ((in_addr << 1) & 0x1fff8) | ((in_addr >> 15) & 0x4) | (in_addr & ~0x1ffff); \
+ out_addr = ((in_addr << 1) & 0x3fff8) | ((in_addr >> 15) & 0x4) | (in_addr & ~0x3ffff); \
break; \
\
case VAR_DWORD_MODE: \
@@ -85,7 +85,7 @@ ega_recalc_remap_func(ega_t *ega)
func_nr = VAR_DWORD_MODE;
else if (ega->crtc[0x17] & 0x40)
func_nr = VAR_BYTE_MODE;
- else if (ega->crtc[0x17] & 0x20)
+ else if ((ega->crtc[0x17] & 0x20) && ega->vram_limit > 64*1024)
func_nr = VAR_WORD_MODE_MA15;
else
func_nr = VAR_WORD_MODE_MA13;
diff --git a/src/io.c b/src/io.c
index 0cd7cd87b..87cceae62 100644
--- a/src/io.c
+++ b/src/io.c
@@ -56,6 +56,7 @@ typedef struct {
int initialized = 0;
io_t *io[NPORTS], *io_last[NPORTS];
+// #define ENABLE_IO_LOG 1
#ifdef ENABLE_IO_LOG
int io_do_log = ENABLE_IO_LOG;
@@ -310,7 +311,9 @@ inb(uint16_t port)
/* if (port == 0x1ed)
ret = 0xfe; */
- io_log("[%04X:%08X] (%i, %i, %04i) in b(%04X) = %02X\n", CS, cpu_state.pc, in_smm, found, qfound, port, ret);
+ if (port == 0x92) {
+ io_log("[%04X:%08X] (%i, %i, %04i) in b(%04X) = %02X\n", CS, cpu_state.pc, in_smm, found, qfound, port, ret);
+ }
return (ret);
}
@@ -341,7 +344,9 @@ outb(uint16_t port, uint8_t val)
#endif
}
- io_log("[%04X:%08X] (%i, %i, %04i) outb(%04X, %02X)\n", CS, cpu_state.pc, in_smm, found, qfound, port, val);
+ if (port == 0x92) {
+ io_log("[%04X:%08X] (%i, %i, %04i) outb(%04X, %02X)\n", CS, cpu_state.pc, in_smm, found, qfound, port, val);
+ }
return;
}
@@ -395,7 +400,9 @@ inw(uint16_t port)
if (!found)
cycles -= io_delay;
- io_log("[%04X:%08X] (%i, %i, %04i) in w(%04X) = %04X\n", CS, cpu_state.pc, in_smm, found, qfound, port, ret);
+ if (port == 0x92) {
+ io_log("[%04X:%08X] (%i, %i, %04i) in w(%04X) = %04X\n", CS, cpu_state.pc, in_smm, found, qfound, port, ret);
+ }
return ret;
}
@@ -440,7 +447,9 @@ outw(uint16_t port, uint16_t val)
#endif
}
- io_log("[%04X:%08X] (%i, %i, %04i) outw(%04X, %04X)\n", CS, cpu_state.pc, in_smm, found, qfound, port, val);
+ if (port == 0x92) {
+ io_log("[%04X:%08X] (%i, %i, %04i) outw(%04X, %04X)\n", CS, cpu_state.pc, in_smm, found, qfound, port, val);
+ }
return;
}
@@ -522,7 +531,9 @@ inl(uint16_t port)
if (!found)
cycles -= io_delay;
- io_log("[%04X:%08X] (%i, %i, %04i) in l(%04X) = %08X\n", CS, cpu_state.pc, in_smm, found, qfound, port, ret);
+ if (port == 0x92) {
+ io_log("[%04X:%08X] (%i, %i, %04i) in l(%04X) = %08X\n", CS, cpu_state.pc, in_smm, found, qfound, port, ret);
+ }
return ret;
}
@@ -582,7 +593,9 @@ outl(uint16_t port, uint32_t val)
#endif
}
- io_log("[%04X:%08X] (%i, %i, %04i) outl(%04X, %08X)\n", CS, cpu_state.pc, in_smm, found, qfound, port, val);
+ if (port == 0x92) {
+ io_log("[%04X:%08X] (%i, %i, %04i) outl(%04X, %08X)\n", CS, cpu_state.pc, in_smm, found, qfound, port, val);
+ }
return;
}
diff --git a/src/machine/m_at_386dx_486.c b/src/machine/m_at_386dx_486.c
index eeebbb784..7768202da 100644
--- a/src/machine/m_at_386dx_486.c
+++ b/src/machine/m_at_386dx_486.c
@@ -220,7 +220,7 @@ machine_at_spc6000a_init(const machine_t *model)
if (fdc_type == FDC_INTERNAL)
device_add(&fdc_at_device);
- device_add(&keyboard_at_samsung_device);
+ device_add(&keyboard_at_ami_device);
return ret;
}
@@ -404,7 +404,7 @@ machine_at_acerv10_init(const machine_t *model)
machine_at_common_init(model);
device_add(&sis_85c461_device);
- device_add(&keyboard_ps2_ami_pci_device);
+ device_add(&keyboard_ps2_acer_pci_device);
device_add(&ide_isa_2ch_device);
if (fdc_type == FDC_INTERNAL)
@@ -1066,7 +1066,7 @@ machine_at_486sp3_init(const machine_t *model)
pci_register_slot(0x05, PCI_CARD_NORMAL, 3, 4, 1, 2); /* 05 = Slot 3 */
pci_register_slot(0x06, PCI_CARD_NORMAL, 4, 1, 2, 3); /* 06 = Slot 4 */
pci_register_slot(0x02, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
- device_add(&keyboard_ps2_ami_pci_device); /* Uses the AMIKEY KBC */
+ device_add(&keyboard_ps2_ami_pci_device); /* Uses the AMIKEY KBC */
device_add(&sio_device);
device_add(&fdc37c663_ide_device);
device_add(&sst_flash_29ee010_device);
@@ -1657,7 +1657,7 @@ machine_at_actionpc2600_init(const machine_t *model)
device_add(&umc_8886af_device);
device_add(&um8669f_device);
device_add(&intel_flash_bxt_device);
- device_add(&keyboard_at_ami_device);
+ device_add(&keyboard_ps2_tg_ami_device);
return ret;
}
@@ -1725,11 +1725,11 @@ machine_at_ms4134_init(const machine_t *model)
{
int ret;
- ret = bios_load_linear("roms/machines/ms4134/4alm001.bin",
+ ret = bios_load_linear("roms/machines/ms4134/4alm001.bin",
0x000e0000, 131072, 0);
if (bios_only || !ret)
- return ret;
+ return ret;
machine_at_common_ide_init(model);
@@ -1760,10 +1760,10 @@ machine_at_tg486gp_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/tg486gp/tg486gp.bin",
- 0x000e0000, 131072, 0);
+ 0x000e0000, 131072, 0);
if (bios_only || !ret)
- return ret;
+ return ret;
machine_at_common_ide_init(model);
@@ -1782,7 +1782,7 @@ machine_at_tg486gp_init(const machine_t *model)
device_add(&ali1435_device);
device_add(&sst_flash_29ee010_device);
- device_add(&keyboard_ps2_ami_device);
+ device_add(&keyboard_ps2_tg_ami_device);
return ret;
}
@@ -1793,10 +1793,10 @@ machine_at_tg486g_init(const machine_t *model)
int ret;
ret = bios_load_linear("roms/machines/tg486g/tg486g.bin",
- 0x000c0000, 262144, 0);
+ 0x000c0000, 262144, 0);
if (bios_only || !ret)
- return ret;
+ return ret;
else {
mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000);
mem_mapping_set_exec(&bios_mapping, rom);
@@ -1806,7 +1806,7 @@ machine_at_tg486g_init(const machine_t *model)
device_add(&sis_85c471_device);
device_add(&ide_isa_device);
device_add(&fdc37c651_ide_device);
- device_add(&keyboard_ps2_intel_ami_pci_device);
+ device_add(&keyboard_ps2_tg_ami_pci_device);
return ret;
}
diff --git a/src/machine/m_at_socket5.c b/src/machine/m_at_socket5.c
index 842554713..9a45e71bf 100644
--- a/src/machine/m_at_socket5.c
+++ b/src/machine/m_at_socket5.c
@@ -237,7 +237,7 @@ machine_at_hawk_init(const machine_t *model)
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(0x07, PCI_CARD_SOUTHBRIDGE, 0, 0, 0, 0);
- device_add(&keyboard_ps2_ami_pci_device);
+ device_add(&keyboard_ps2_tg_ami_pci_device);
device_add(&i430fx_device);
device_add(&piix_device);
device_add(&fdc37c665_device);
diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c
index 5057b65ea..3de9ef491 100644
--- a/src/machine/m_ps2_mca.c
+++ b/src/machine/m_ps2_mca.c
@@ -1343,6 +1343,9 @@ machine_ps2_common_init(const machine_t *model)
nmi_mask = 0x80;
ps2.uart = device_add_inst(&ns16550_device, 1);
+
+ pic_kbd_latch(0x01);
+ pic_mouse_latch(0x01);
}
int
diff --git a/src/machine/m_xt_laserxt.c b/src/machine/m_xt_laserxt.c
index 02635ee8b..418835a0b 100644
--- a/src/machine/m_xt_laserxt.c
+++ b/src/machine/m_xt_laserxt.c
@@ -136,6 +136,22 @@ laserxt_init(int is_lxt3)
laserxt_is_lxt3 = is_lxt3;
}
+static void
+machine_xt_laserxt_common_init(const machine_t *model,int is_lxt3)
+{
+ machine_common_init(model);
+
+ pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt);
+
+ if (fdc_type == FDC_INTERNAL)
+ device_add(&fdc_xt_device);
+
+ nmi_init();
+ standalone_gameport_type = &gameport_device;
+
+ laserxt_init(is_lxt3);
+}
+
int
machine_xt_laserxt_init(const machine_t *model)
{
@@ -147,9 +163,9 @@ machine_xt_laserxt_init(const machine_t *model)
if (bios_only || !ret)
return ret;
- machine_xt_init(model);
+ device_add(&keyboard_xt_device);
- laserxt_init(0);
+ machine_xt_laserxt_common_init(model, 0);
return ret;
}
@@ -165,18 +181,9 @@ machine_xt_lxt3_init(const machine_t *model)
if (bios_only || !ret)
return ret;
- machine_common_init(model);
-
- pit_devs[0].set_out_func(pit_devs[0].data, 1, pit_refresh_timer_xt);
-
device_add(&keyboard_xt_lxt3_device);
- if (fdc_type == FDC_INTERNAL)
- device_add(&fdc_xt_device);
- nmi_init();
- standalone_gameport_type = &gameport_device;
-
- laserxt_init(1);
+ machine_xt_laserxt_common_init(model, 1);
return ret;
}
diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c
index 188474a23..19892beb3 100644
--- a/src/machine/machine_table.c
+++ b/src/machine/machine_table.c
@@ -3774,7 +3774,7 @@ const machine_t machines[] = {
.min_multi = 0,
.max_multi = 0
},
- .bus_flags = MACHINE_PS2,
+ .bus_flags = MACHINE_AT,
.flags = MACHINE_IDE,
.ram = {
.min = 1024,
@@ -3813,7 +3813,7 @@ const machine_t machines[] = {
.min_multi = 0,
.max_multi = 0
},
- .bus_flags = MACHINE_PS2,
+ .bus_flags = MACHINE_AT,
.flags = MACHINE_IDE,
.ram = {
.min = 1024,
@@ -3894,7 +3894,7 @@ const machine_t machines[] = {
.min_multi = 0,
.max_multi = 0
},
- .bus_flags = MACHINE_PS2,
+ .bus_flags = MACHINE_AT,
.flags = MACHINE_IDE,
.ram = {
.min = 1024,
@@ -7036,7 +7036,7 @@ const machine_t machines[] = {
.min_multi = 0,
.max_multi = 0
},
- .bus_flags = MACHINE_PCI,
+ .bus_flags = MACHINE_PS2_PCI,
.flags = MACHINE_IDE_DUAL | MACHINE_APM,
.ram = {
.min = 1024,
@@ -13005,7 +13005,6 @@ machine_get_kbc_device(int m)
return (NULL);
}
-
const device_t *
machine_get_device(int m)
{
diff --git a/src/mem/mem.c b/src/mem/mem.c
index 9674fba68..e0730e008 100644
--- a/src/mem/mem.c
+++ b/src/mem/mem.c
@@ -2445,6 +2445,56 @@ mem_mapping_recalc(uint64_t base, uint64_t size)
}
flushmmucache_cr3();
+
+#ifdef ENABLE_MEM_LOG
+ pclog("\nMemory map:\n");
+ mem_mapping_t *write = (mem_mapping_t *) -1, *read = (mem_mapping_t *) -1, *write_bus = (mem_mapping_t *) -1, *read_bus = (mem_mapping_t *) -1;
+ for (c = 0; c < (sizeof(write_mapping) / sizeof(write_mapping[0])); c++) {
+ if ((write_mapping[c] == write) && (read_mapping[c] == read) && (write_mapping_bus[c] == write_bus) && (read_mapping_bus[c] == read_bus))
+ continue;
+ write = write_mapping[c];
+ read = read_mapping[c];
+ write_bus = write_mapping_bus[c];
+ read_bus = read_mapping_bus[c];
+
+ pclog("%08X | ", c << MEM_GRANULARITY_BITS);
+ if (read) {
+ pclog("R%c%c%c %08X+% 8X",
+ read->read_b ? 'b' : ' ', read->read_w ? 'w' : ' ', read->read_l ? 'l' : ' ',
+ read->base, read->size);
+ } else {
+ pclog(" ");
+ }
+ if (write) {
+ pclog(" | W%c%c%c %08X+% 8X",
+ write->write_b ? 'b' : ' ', write->write_w ? 'w' : ' ', write->write_l ? 'l' : ' ',
+ write->base, write->size);
+ } else {
+ pclog(" | ");
+ }
+ pclog(" | %c\n", _mem_exec[c] ? 'X' : ' ');
+
+ if ((write != write_bus) || (read != read_bus)) {
+ pclog(" ^ bus | ");
+ if (read_bus) {
+ pclog("R%c%c%c %08X+% 8X",
+ read_bus->read_b ? 'b' : ' ', read_bus->read_w ? 'w' : ' ', read_bus->read_l ? 'l' : ' ',
+ read_bus->base, read_bus->size);
+ } else {
+ pclog(" ");
+ }
+ if (write_bus) {
+ pclog(" | W%c%c%c %08X+% 8X",
+ write_bus->write_b ? 'b' : ' ', write_bus->write_w ? 'w' : ' ', write_bus->write_l ? 'l' : ' ',
+ write_bus->base, write_bus->size);
+ } else {
+ pclog(" | ");
+ }
+ pclog(" |\n");
+ }
+ }
+ pclog("\n");
+#endif
}
void
@@ -2662,11 +2712,12 @@ void
mem_a20_init(void)
{
if (is286) {
- rammask = cpu_16bitbus ? 0xefffff : 0xffefffff;
+ mem_a20_key = mem_a20_alt = mem_a20_state = 0;
+ rammask = cpu_16bitbus ? 0xffffff : 0xffffffff;
if (is6117)
rammask |= 0x03000000;
flushmmucache();
- mem_a20_state = mem_a20_key | mem_a20_alt;
+ // mem_a20_state = mem_a20_key | mem_a20_alt;
} else {
rammask = 0xfffff;
flushmmucache();
@@ -2709,7 +2760,8 @@ mem_init_ram_mapping(mem_mapping_t *mapping, uint32_t base, uint32_t size)
void
mem_reset(void)
{
- uint32_t c, m;
+ uint32_t c;
+ size_t m;
memset(page_ff, 0xff, sizeof(page_ff));
@@ -2747,7 +2799,7 @@ mem_reset(void)
mem_size = 2097152;
#endif
- m = 1024UL * mem_size;
+ m = 1024UL * (size_t) mem_size;
#if (!(defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64))
if (mem_size > 1048576) {
@@ -2963,6 +3015,10 @@ mem_remap_top(int kb)
sis_mode = 1;
}
+ /* Do not remap if we're have more than (16 MB - RAM) memory. */
+ if ((kb != 0) && (mem_size >= (16384 - kb)))
+ return;
+
if (kb == 0) {
kb = old_kb;
set = 0;
diff --git a/src/network/net_3c501.c b/src/network/net_3c501.c
index 736edb85b..5f542e41a 100644
--- a/src/network/net_3c501.c
+++ b/src/network/net_3c501.c
@@ -60,43 +60,42 @@
#include <86box/bswap.h>
/* Maximum number of times we report a link down to the guest (failure to send frame) */
-#define ELNK_MAX_LINKDOWN_REPORTED 3
+#define ELNK_MAX_LINKDOWN_REPORTED 3
/* Maximum number of times we postpone restoring a link that is temporarily down. */
-#define ELNK_MAX_LINKRST_POSTPONED 3
+#define ELNK_MAX_LINKRST_POSTPONED 3
/* Maximum frame size we handle */
-#define MAX_FRAME 1536
+#define MAX_FRAME 1536
/* Size of the packet buffer. */
-#define ELNK_BUF_SIZE 2048
+#define ELNK_BUF_SIZE 2048
/* The packet buffer address mask. */
-#define ELNK_BUF_ADR_MASK (ELNK_BUF_SIZE - 1)
+#define ELNK_BUF_ADR_MASK (ELNK_BUF_SIZE - 1)
/* The GP buffer pointer address within the buffer. */
-#define ELNK_GP(dev) (dev->uGPBufPtr & ELNK_BUF_ADR_MASK)
+#define ELNK_GP(dev) (dev->uGPBufPtr & ELNK_BUF_ADR_MASK)
/* The GP buffer pointer mask.
* NB: The GP buffer pointer is internally a 12-bit counter. When addressing into the
* packet buffer, bit 11 is ignored. Required to pass 3C501 diagnostics.
*/
-#define ELNK_GP_MASK 0xfff
+#define ELNK_GP_MASK 0xfff
/*********************************************************************************************************************************
-* Structures and Typedefs *
-*********************************************************************************************************************************/
-
+ * Structures and Typedefs *
+ *********************************************************************************************************************************/
/**
* EtherLink Transmit Command Register.
*/
typedef struct ELNK_XMIT_CMD {
- uint8_t det_ufl : 1; /* Detect underflow. */
- uint8_t det_coll : 1; /* Detect collision. */
- uint8_t det_16col : 1; /* Detect collision 16. */
- uint8_t det_succ : 1; /* Detect successful xmit. */
- uint8_t unused : 4;
+ uint8_t det_ufl : 1; /* Detect underflow. */
+ uint8_t det_coll : 1; /* Detect collision. */
+ uint8_t det_16col : 1; /* Detect collision 16. */
+ uint8_t det_succ : 1; /* Detect successful xmit. */
+ uint8_t unused : 4;
} EL_XMT_CMD;
/**
@@ -107,151 +106,151 @@ typedef struct ELNK_XMIT_CMD {
* (something the 3C501 does not have a concept of).
*/
typedef struct ELNK_XMIT_STAT {
- uint8_t uflow : 1; /* Underflow on transmit. */
- uint8_t coll : 1; /* Collision on transmit. */
- uint8_t coll16 : 1; /* 16 collisions on transmit. */
- uint8_t ready : 1; /* Ready for a new frame. */
- uint8_t undef : 4;
+ uint8_t uflow : 1; /* Underflow on transmit. */
+ uint8_t coll : 1; /* Collision on transmit. */
+ uint8_t coll16 : 1; /* 16 collisions on transmit. */
+ uint8_t ready : 1; /* Ready for a new frame. */
+ uint8_t undef : 4;
} EL_XMT_STAT;
/** Address match (adr_match) modes. */
typedef enum {
- EL_ADRM_DISABLED = 0, /* Receiver disabled. */
- EL_ADRM_PROMISC = 1, /* Receive all addresses. */
- EL_ADRM_BCAST = 2, /* Receive station + broadcast. */
- EL_ADRM_MCAST = 3 /* Receive station + multicast. */
+ EL_ADRM_DISABLED = 0, /* Receiver disabled. */
+ EL_ADRM_PROMISC = 1, /* Receive all addresses. */
+ EL_ADRM_BCAST = 2, /* Receive station + broadcast. */
+ EL_ADRM_MCAST = 3 /* Receive station + multicast. */
} EL_ADDR_MATCH;
/**
* EtherLink Receive Command Register.
*/
typedef struct ELNK_RECV_CMD {
- uint8_t det_ofl : 1; /* Detect overflow errors. */
- uint8_t det_fcs : 1; /* Detect FCS errors. */
- uint8_t det_drbl : 1; /* Detect dribble error. */
- uint8_t det_runt : 1; /* Detect short frames. */
- uint8_t det_eof : 1; /* Detect EOF (frames without overflow). */
- uint8_t acpt_good : 1; /* Accept good frames. */
- uint8_t adr_match : 2; /* Address match mode. */
+ uint8_t det_ofl : 1; /* Detect overflow errors. */
+ uint8_t det_fcs : 1; /* Detect FCS errors. */
+ uint8_t det_drbl : 1; /* Detect dribble error. */
+ uint8_t det_runt : 1; /* Detect short frames. */
+ uint8_t det_eof : 1; /* Detect EOF (frames without overflow). */
+ uint8_t acpt_good : 1; /* Accept good frames. */
+ uint8_t adr_match : 2; /* Address match mode. */
} EL_RCV_CMD;
/**
* EtherLink Receive Status Register.
*/
typedef struct ELNK_RECV_STAT {
- uint8_t oflow : 1; /* Overflow on receive. */
- uint8_t fcs : 1; /* FCS error. */
- uint8_t dribble : 1; /* Dribble error. */
- uint8_t runt : 1; /* Short frame. */
- uint8_t no_ovf : 1; /* Received packet w/o overflow. */
- uint8_t good : 1; /* Received good packet. */
- uint8_t undef : 1;
- uint8_t stale : 1; /* Stale receive status. */
+ uint8_t oflow : 1; /* Overflow on receive. */
+ uint8_t fcs : 1; /* FCS error. */
+ uint8_t dribble : 1; /* Dribble error. */
+ uint8_t runt : 1; /* Short frame. */
+ uint8_t no_ovf : 1; /* Received packet w/o overflow. */
+ uint8_t good : 1; /* Received good packet. */
+ uint8_t undef : 1;
+ uint8_t stale : 1; /* Stale receive status. */
} EL_RCV_STAT;
/** Buffer control (buf_ctl) modes. */
typedef enum {
- EL_BCTL_SYSTEM = 0, /* Host has buffer access. */
- EL_BCTL_XMT_RCV = 1, /* Transmit, then receive. */
- EL_BCTL_RECEIVE = 2, /* Receive. */
- EL_BCTL_LOOPBACK = 3 /* Loopback. */
+ EL_BCTL_SYSTEM = 0, /* Host has buffer access. */
+ EL_BCTL_XMT_RCV = 1, /* Transmit, then receive. */
+ EL_BCTL_RECEIVE = 2, /* Receive. */
+ EL_BCTL_LOOPBACK = 3 /* Loopback. */
} EL_BUFFER_CONTROL;
/**
* EtherLink Auxiliary Status Register.
*/
typedef struct ELNK_AUX_CMD {
- uint8_t ire : 1; /* Interrupt Request Enable. */
- uint8_t xmit_bf : 1; /* Xmit packets with bad FCS. */
- uint8_t buf_ctl : 2; /* Packet buffer control. */
- uint8_t unused : 1;
- uint8_t dma_req : 1; /* DMA request. */
- uint8_t ride : 1; /* Request Interrupt and DMA Enable. */
- uint8_t reset : 1; /* Card in reset while set. */
+ uint8_t ire : 1; /* Interrupt Request Enable. */
+ uint8_t xmit_bf : 1; /* Xmit packets with bad FCS. */
+ uint8_t buf_ctl : 2; /* Packet buffer control. */
+ uint8_t unused : 1;
+ uint8_t dma_req : 1; /* DMA request. */
+ uint8_t ride : 1; /* Request Interrupt and DMA Enable. */
+ uint8_t reset : 1; /* Card in reset while set. */
} EL_AUX_CMD;
/**
* EtherLink Auxiliary Status Register.
*/
typedef struct ELNK_AUX_STAT {
- uint8_t recv_bsy : 1; /* Receive busy. */
- uint8_t xmit_bf : 1; /* Xmit packets with bad FCS. */
- uint8_t buf_ctl : 2; /* Packet buffer control. */
- uint8_t dma_done : 1; /* DMA done. */
- uint8_t dma_req : 1; /* DMA request. */
- uint8_t ride : 1; /* Request Interrupt and DMA Enable. */
- uint8_t xmit_bsy : 1; /* Transmit busy. */
+ uint8_t recv_bsy : 1; /* Receive busy. */
+ uint8_t xmit_bf : 1; /* Xmit packets with bad FCS. */
+ uint8_t buf_ctl : 2; /* Packet buffer control. */
+ uint8_t dma_done : 1; /* DMA done. */
+ uint8_t dma_req : 1; /* DMA request. */
+ uint8_t ride : 1; /* Request Interrupt and DMA Enable. */
+ uint8_t xmit_bsy : 1; /* Transmit busy. */
} EL_AUX_STAT;
/**
* Internal interrupt status.
*/
typedef struct ELNK_INTR_STAT {
- uint8_t recv_intr : 1; /* Receive interrupt status. */
- uint8_t xmit_intr : 1; /* Transmit interrupt status. */
- uint8_t dma_intr : 1; /* DMA interrupt status. */
- uint8_t unused : 5;
+ uint8_t recv_intr : 1; /* Receive interrupt status. */
+ uint8_t xmit_intr : 1; /* Transmit interrupt status. */
+ uint8_t dma_intr : 1; /* DMA interrupt status. */
+ uint8_t unused : 5;
} EL_INTR_STAT;
typedef struct {
- uint32_t base_address;
- int base_irq;
- uint32_t bios_addr;
- uint8_t maclocal[6]; /* configured MAC (local) address. */
- bool fISR; /* Internal interrupt flag. */
- int fDMA; /* Internal DMA active flag. */
- int fInReset; /* Internal in-reset flag. */
- uint8_t aPROM[8]; /* The PROM contents. Only 8 bytes addressable, R/O. */
- uint8_t aStationAddr[6]; /* The station address programmed by the guest, W/O. */
- uint16_t uGPBufPtr; /* General Purpose (GP) Buffer Pointer, R/W. */
- uint16_t uRCVBufPtr; /* Receive (RCV) Buffer Pointer, R/W. */
+ uint32_t base_address;
+ int base_irq;
+ uint32_t bios_addr;
+ uint8_t maclocal[6]; /* configured MAC (local) address. */
+ bool fISR; /* Internal interrupt flag. */
+ int fDMA; /* Internal DMA active flag. */
+ int fInReset; /* Internal in-reset flag. */
+ uint8_t aPROM[8]; /* The PROM contents. Only 8 bytes addressable, R/O. */
+ uint8_t aStationAddr[6]; /* The station address programmed by the guest, W/O. */
+ uint16_t uGPBufPtr; /* General Purpose (GP) Buffer Pointer, R/W. */
+ uint16_t uRCVBufPtr; /* Receive (RCV) Buffer Pointer, R/W. */
/** Transmit Command Register, W/O. */
union {
- uint8_t XmitCmdReg;
- EL_XMT_CMD XmitCmd;
+ uint8_t XmitCmdReg;
+ EL_XMT_CMD XmitCmd;
};
/** Transmit Status Register, R/O. */
union {
- uint8_t XmitStatReg;
- EL_XMT_STAT XmitStat;
+ uint8_t XmitStatReg;
+ EL_XMT_STAT XmitStat;
};
/** Receive Command Register, W/O. */
union {
- uint8_t RcvCmdReg;
- EL_RCV_CMD RcvCmd;
+ uint8_t RcvCmdReg;
+ EL_RCV_CMD RcvCmd;
};
/** Receive Status Register, R/O. */
union {
- uint8_t RcvStatReg;
- EL_RCV_STAT RcvStat;
+ uint8_t RcvStatReg;
+ EL_RCV_STAT RcvStat;
};
/** Auxiliary Command Register, W/O. */
union {
- uint8_t AuxCmdReg;
- EL_AUX_CMD AuxCmd;
+ uint8_t AuxCmdReg;
+ EL_AUX_CMD AuxCmd;
};
/** Auxiliary Status Register, R/O. */
union {
- uint8_t AuxStatReg;
- EL_AUX_STAT AuxStat;
+ uint8_t AuxStatReg;
+ EL_AUX_STAT AuxStat;
};
- int fLinkUp; /* If set the link is currently up. */
- int fLinkTempDown; /* If set the link is temporarily down because of a saved state load. */
- uint16_t cLinkDownReported; /* Number of times we've reported the link down. */
- uint16_t cLinkRestorePostponed; /* Number of times we've postponed the link restore. */
+ int fLinkUp; /* If set the link is currently up. */
+ int fLinkTempDown; /* If set the link is temporarily down because of a saved state load. */
+ uint16_t cLinkDownReported; /* Number of times we've reported the link down. */
+ uint16_t cLinkRestorePostponed; /* Number of times we've postponed the link restore. */
/* Internal interrupt state. */
union {
- uint8_t IntrStateReg;
- EL_INTR_STAT IntrState;
+ uint8_t IntrStateReg;
+ EL_INTR_STAT IntrState;
};
- uint32_t cMsLinkUpDelay; /* MS to wait before we enable the link. */
- int dma_channel;
- uint8_t abLoopBuf[ELNK_BUF_SIZE]; /* The loopback transmit buffer (avoid stack allocations). */
- uint8_t abRuntBuf[64]; /* The runt pad buffer (only really needs 60 bytes). */
- uint8_t abPacketBuf[ELNK_BUF_SIZE]; /* The packet buffer. */
- int dma_pos;
- pc_timer_t timer_restore;
- netcard_t *netcard;
+ uint32_t cMsLinkUpDelay; /* MS to wait before we enable the link. */
+ int dma_channel;
+ uint8_t abLoopBuf[ELNK_BUF_SIZE]; /* The loopback transmit buffer (avoid stack allocations). */
+ uint8_t abRuntBuf[64]; /* The runt pad buffer (only really needs 60 bytes). */
+ uint8_t abPacketBuf[ELNK_BUF_SIZE]; /* The packet buffer. */
+ int dma_pos;
+ pc_timer_t timer_restore;
+ netcard_t *netcard;
} threec501_t;
#ifdef ENABLE_3COM501_LOG
@@ -280,7 +279,7 @@ static void elnkR3HardReset(threec501_t *dev);
#endif
#define ETHER_ADDR_LEN ETH_ALEN
-#define ETH_ALEN 6
+#define ETH_ALEN 6
#pragma pack(1)
struct ether_header /** @todo Use RTNETETHERHDR? */
{
@@ -325,8 +324,8 @@ static void
elnkTempLinkDown(threec501_t *dev)
{
if (dev->fLinkUp) {
- dev->fLinkTempDown = 1;
- dev->cLinkDownReported = 0;
+ dev->fLinkTempDown = 1;
+ dev->cLinkDownReported = 0;
dev->cLinkRestorePostponed = 0;
timer_set_delay_u64(&dev->timer_restore, (dev->cMsLinkUpDelay * 1000) * TIMER_USEC);
}
@@ -341,7 +340,7 @@ elnkR3Reset(void *priv)
threec501_t *dev = (threec501_t *) priv;
if (dev->fLinkTempDown) {
- dev->cLinkDownReported = 0x1000;
+ dev->cLinkDownReported = 0x1000;
dev->cLinkRestorePostponed = 0x1000;
timer_disable(&dev->timer_restore);
}
@@ -367,15 +366,14 @@ elnkR3HardReset(threec501_t *dev)
elnkSoftReset(dev);
}
-
/**
* Check if incoming frame matches the station address.
*/
static __inline int
padr_match(threec501_t *dev, const uint8_t *buf)
{
- struct ether_header *hdr = (struct ether_header *)buf;
- int result;
+ struct ether_header *hdr = (struct ether_header *) buf;
+ int result;
/* Checks own + broadcast as well as own + multicast. */
result = (dev->RcvCmd.adr_match >= EL_ADRM_BCAST) && !memcmp(hdr->ether_dhost, dev->aStationAddr, 6);
@@ -389,21 +387,20 @@ padr_match(threec501_t *dev, const uint8_t *buf)
static __inline int
padr_bcast(threec501_t *dev, const uint8_t *buf)
{
- static uint8_t aBCAST[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
- struct ether_header *hdr = (struct ether_header *)buf;
- int result = (dev->RcvCmd.adr_match == EL_ADRM_BCAST) && !memcmp(hdr->ether_dhost, aBCAST, 6);
+ static uint8_t aBCAST[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+ struct ether_header *hdr = (struct ether_header *) buf;
+ int result = (dev->RcvCmd.adr_match == EL_ADRM_BCAST) && !memcmp(hdr->ether_dhost, aBCAST, 6);
return result;
}
-
/**
* Check if incoming frame is an accepted multicast frame.
*/
static __inline int
padr_mcast(threec501_t *dev, const uint8_t *buf)
{
- struct ether_header *hdr = (struct ether_header *)buf;
- int result = (dev->RcvCmd.adr_match == EL_ADRM_MCAST) && ETHER_IS_MULTICAST(hdr->ether_dhost);
+ struct ether_header *hdr = (struct ether_header *) buf;
+ int result = (dev->RcvCmd.adr_match == EL_ADRM_MCAST) && ETHER_IS_MULTICAST(hdr->ether_dhost);
return result;
}
@@ -475,9 +472,9 @@ elnkSoftReset(threec501_t *dev)
static int
elnkReceiveLocked(void *priv, uint8_t *src, int size)
{
- threec501_t *dev = (threec501_t *) priv;
- int is_padr = 0, is_bcast = 0, is_mcast = 0;
- bool fLoopback = dev->RcvCmd.adr_match == EL_BCTL_LOOPBACK;
+ threec501_t *dev = (threec501_t *) priv;
+ int is_padr = 0, is_bcast = 0, is_mcast = 0;
+ bool fLoopback = dev->RcvCmd.adr_match == EL_BCTL_LOOPBACK;
union {
uint8_t RcvStatNewReg;
@@ -513,8 +510,8 @@ elnkReceiveLocked(void *priv, uint8_t *src, int size)
* filter are always ignored.
*/
/// @todo cbToRecv must be 6 or more (complete address)
- if ((dev->RcvCmd.adr_match == EL_ADRM_PROMISC) /* promiscuous enabled */
- || (is_padr = padr_match(dev, src))
+ if ((dev->RcvCmd.adr_match == EL_ADRM_PROMISC) /* promiscuous enabled */
+ || (is_padr = padr_match(dev, src))
|| (is_bcast = padr_bcast(dev, src))
|| (is_mcast = padr_mcast(dev, src))) {
uint8_t *dst = dev->abPacketBuf + dev->uRCVBufPtr;
@@ -524,9 +521,9 @@ elnkReceiveLocked(void *priv, uint8_t *src, int size)
#endif
/* Receive status is evaluated from scratch. The stale bit must remain set until we know better. */
- rcvstatnew.RcvStatNewReg = 0;
+ rcvstatnew.RcvStatNewReg = 0;
rcvstatnew.RcvStatNew.stale = 1;
- dev->RcvStatReg = 0x80;
+ dev->RcvStatReg = 0x80;
/* Detect errors: Runts, overflow, and FCS errors.
* NB: Dribble errors can not happen because we can only receive an
@@ -549,7 +546,7 @@ elnkReceiveLocked(void *priv, uint8_t *src, int size)
memset(dev->abRuntBuf, 0, sizeof(dev->abRuntBuf));
memcpy(dev->abRuntBuf, src, size);
size = 60;
- src = dev->abRuntBuf;
+ src = dev->abRuntBuf;
} else {
#ifdef ENABLE_3COM501_LOG
threec501_log("3Com501 runt, size=%d\n", size);
@@ -582,7 +579,7 @@ elnkReceiveLocked(void *priv, uint8_t *src, int size)
if (rcvstatnew.RcvStatNew.no_ovf && !rcvstatnew.RcvStatNew.fcs && !rcvstatnew.RcvStatNew.runt)
rcvstatnew.RcvStatNew.good = 1;
- uint16_t cbCopy = (uint16_t)MIN(ELNK_BUF_SIZE - dev->uRCVBufPtr, size);
+ uint16_t cbCopy = (uint16_t) MIN(ELNK_BUF_SIZE - dev->uRCVBufPtr, size);
/* All packets that passed the address filter are copied to the buffer. */
@@ -604,15 +601,15 @@ elnkReceiveLocked(void *priv, uint8_t *src, int size)
* NB: The precise receive logic is not very well described in the EtherLink
* documentation. It was refined using the 3C501.EXE diagnostic utility.
*/
- if ( (rcvstatnew.RcvStatNew.good && dev->RcvCmd.acpt_good)
- || (rcvstatnew.RcvStatNew.no_ovf && dev->RcvCmd.det_eof)
- || (rcvstatnew.RcvStatNew.runt && dev->RcvCmd.det_runt)
+ if ((rcvstatnew.RcvStatNew.good && dev->RcvCmd.acpt_good)
+ || (rcvstatnew.RcvStatNew.no_ovf && dev->RcvCmd.det_eof)
+ || (rcvstatnew.RcvStatNew.runt && dev->RcvCmd.det_runt)
|| (rcvstatnew.RcvStatNew.dribble && dev->RcvCmd.det_drbl)
- || (rcvstatnew.RcvStatNew.fcs && dev->RcvCmd.det_fcs)
- || (rcvstatnew.RcvStatNew.oflow && dev->RcvCmd.det_ofl)) {
- dev->AuxStat.recv_bsy = 0;
- dev->IntrState.recv_intr = 1;
- rcvstatnew.RcvStatNew.stale = 0; /* Prevents further receive until set again. */
+ || (rcvstatnew.RcvStatNew.fcs && dev->RcvCmd.det_fcs)
+ || (rcvstatnew.RcvStatNew.oflow && dev->RcvCmd.det_ofl)) {
+ dev->AuxStat.recv_bsy = 0;
+ dev->IntrState.recv_intr = 1;
+ rcvstatnew.RcvStatNew.stale = 0; /* Prevents further receive until set again. */
}
/* Finally update the receive status. */
@@ -715,7 +712,7 @@ elnkAsyncTransmit(threec501_t *dev)
/* NB: The buffer control does *not* change to Receive and stays the way it was. */
if (!fLoopback) {
- dev->AuxStat.recv_bsy = 1; /* Receive Busy now set until a packet is received. */
+ dev->AuxStat.recv_bsy = 1; /* Receive Busy now set until a packet is received. */
}
} while (0); /* No loop, because there isn't ever more than one packet to transmit. */
@@ -725,14 +722,14 @@ elnkAsyncTransmit(threec501_t *dev)
static void
elnkCsrWrite(threec501_t *dev, uint8_t data)
{
- bool fTransmit = false;
- bool fReceive = false;
- bool fDMAR;
- int mode;
+ bool fTransmit = false;
+ bool fReceive = false;
+ bool fDMAR;
+ int mode;
union {
- uint8_t reg;
- EL_AUX_CMD val;
+ uint8_t reg;
+ EL_AUX_CMD val;
} auxcmd;
auxcmd.reg = data;
@@ -759,7 +756,7 @@ elnkCsrWrite(threec501_t *dev, uint8_t data)
#endif
elnkSoftReset(dev);
}
- dev->AuxCmd.reset = auxcmd.val.reset; /* Update the reset bit, if nothing else. */
+ dev->AuxCmd.reset = auxcmd.val.reset; /* Update the reset bit, if nothing else. */
}
/* If the card is in reset, stop right here. */
@@ -788,14 +785,14 @@ elnkCsrWrite(threec501_t *dev, uint8_t data)
}
} else {
while (dev->dma_pos < (ELNK_BUF_SIZE - ELNK_GP(dev))) {
- int dma_data = dma_channel_read(dev->dma_channel);
+ int dma_data = dma_channel_read(dev->dma_channel);
dev->abPacketBuf[ELNK_GP(dev) + dev->dma_pos] = dma_data & 0xff;
dev->dma_pos++;
}
}
dev->uGPBufPtr = (dev->uGPBufPtr + dev->dma_pos) & ELNK_GP_MASK;
dma_set_drq(dev->dma_channel, 0);
- dev->dma_pos = 0;
+ dev->dma_pos = 0;
dev->IntrState.dma_intr = 1;
dev->AuxStat.dma_done = 1;
elnkUpdateIrq(dev);
@@ -808,7 +805,7 @@ elnkCsrWrite(threec501_t *dev, uint8_t data)
/* Interrupt enable changes. */
if ((dev->AuxCmd.ire != auxcmd.val.ire) || (dev->AuxCmd.ride != auxcmd.val.ride)) {
dev->AuxStat.ride = dev->AuxCmd.ride = auxcmd.val.ride;
- dev->AuxCmd.ire = auxcmd.val.ire; /* NB: IRE is not visible in the aux status register. */
+ dev->AuxCmd.ire = auxcmd.val.ire; /* NB: IRE is not visible in the aux status register. */
}
/* DMA Request changes. */
@@ -824,15 +821,15 @@ elnkCsrWrite(threec501_t *dev, uint8_t data)
/* Packet buffer control changes. */
if (dev->AuxCmd.buf_ctl != auxcmd.val.buf_ctl) {
#ifdef ENABLE_3COM501_LOG
- static const char *apszBuffCntrl[4] = { "System", "Xmit then Recv", "Receive", "Loopback" };
+ static const char *apszBuffCntrl[4] = { "System", "Xmit then Recv", "Receive", "Loopback" };
threec501_log("3Com501: Packet buffer control `%s' -> `%s'\n", apszBuffCntrl[dev->AuxCmd.buf_ctl], apszBuffCntrl[auxcmd.val.buf_ctl]);
#endif
if (auxcmd.val.buf_ctl == EL_BCTL_XMT_RCV) {
/* Transmit, then receive. */
- fTransmit = true;
+ fTransmit = true;
dev->AuxStat.recv_bsy = 0;
} else if (auxcmd.val.buf_ctl == EL_BCTL_SYSTEM) {
- dev->AuxStat.xmit_bsy = 1; /* Transmit Busy is set here and cleared once actual transmit completes. */
+ dev->AuxStat.xmit_bsy = 1; /* Transmit Busy is set here and cleared once actual transmit completes. */
dev->AuxStat.recv_bsy = 0;
} else if (auxcmd.val.buf_ctl == EL_BCTL_RECEIVE) {
/* Special case: If going from xmit-then-receive mode to receive mode, and we received
@@ -845,8 +842,8 @@ elnkCsrWrite(threec501_t *dev, uint8_t data)
/* For loopback, we go through the regular transmit and receive path. That may be an
* overkill but the receive path is too complex for a special loopback-only case.
*/
- fTransmit = true;
- dev->AuxStat.recv_bsy = 1; /* Receive Busy now set until a packet is received. */
+ fTransmit = true;
+ dev->AuxStat.recv_bsy = 1; /* Receive Busy now set until a packet is received. */
}
dev->AuxStat.buf_ctl = dev->AuxCmd.buf_ctl = auxcmd.val.buf_ctl;
}
@@ -863,7 +860,7 @@ elnkCsrWrite(threec501_t *dev, uint8_t data)
if (fTransmit)
elnkAsyncTransmit(dev);
else if (fReceive) {
- dev->AuxStat.recv_bsy = 1; /* Receive Busy now set until a packet is received. */
+ dev->AuxStat.recv_bsy = 1; /* Receive Busy now set until a packet is received. */
}
}
@@ -874,52 +871,52 @@ threec501_read(uint16_t addr, void *priv)
uint8_t retval = 0xff;
switch (addr & 0x0f) {
- case 0x00: /* Receive status register aliases. The SEEQ 8001 */
- case 0x02: /* EDLC clearly only decodes one bit for reads. */
+ case 0x00: /* Receive status register aliases. The SEEQ 8001 */
+ case 0x02: /* EDLC clearly only decodes one bit for reads. */
case 0x04:
- case 0x06: /* Receive status register. */
- retval = dev->RcvStatReg;
- dev->RcvStat.stale = 1; /* Allows further reception. */
+ case 0x06: /* Receive status register. */
+ retval = dev->RcvStatReg;
+ dev->RcvStat.stale = 1; /* Allows further reception. */
dev->IntrState.recv_intr = 0; /* Reading clears receive interrupt. */
elnkUpdateIrq(dev);
break;
- case 0x01: /* Transmit status register aliases. */
+ case 0x01: /* Transmit status register aliases. */
case 0x03:
case 0x05:
- case 0x07: /* Transmit status register. */
- retval = dev->XmitStatReg;
+ case 0x07: /* Transmit status register. */
+ retval = dev->XmitStatReg;
dev->IntrState.xmit_intr = 0; /* Reading clears transmit interrupt. */
elnkUpdateIrq(dev);
break;
- case 0x08: /* GP Buffer pointer LSB. */
+ case 0x08: /* GP Buffer pointer LSB. */
retval = (dev->uGPBufPtr & 0xff);
break;
- case 0x09: /* GP Buffer pointer MSB. */
+ case 0x09: /* GP Buffer pointer MSB. */
retval = (dev->uGPBufPtr >> 8);
break;
- case 0x0a: /* RCV Buffer pointer LSB. */
+ case 0x0a: /* RCV Buffer pointer LSB. */
retval = (dev->uRCVBufPtr & 0xff);
break;
- case 0x0b: /* RCV Buffer pointer MSB. */
+ case 0x0b: /* RCV Buffer pointer MSB. */
retval = (dev->uRCVBufPtr >> 8);
break;
- case 0x0c: /* Ethernet address PROM window. */
- case 0x0d: /* Alias. */
+ case 0x0c: /* Ethernet address PROM window. */
+ case 0x0d: /* Alias. */
/* Reads use low 3 bits of GP buffer pointer, no auto-increment. */
retval = dev->aPROM[dev->uGPBufPtr & 7];
break;
- case 0x0e: /* Auxiliary status register. */
+ case 0x0e: /* Auxiliary status register. */
retval = dev->AuxStatReg;
break;
- case 0x0f: /* Buffer window. */
+ case 0x0f: /* Buffer window. */
/* Reads use low 11 bits of GP buffer pointer, auto-increment. */
- retval = dev->abPacketBuf[ELNK_GP(dev)];
+ retval = dev->abPacketBuf[ELNK_GP(dev)];
dev->uGPBufPtr = (dev->uGPBufPtr + 1) & ELNK_GP_MASK;
break;
}
@@ -973,40 +970,40 @@ threec501_write(uint16_t addr, uint8_t value, void *priv)
#endif
break;
- case 0x08: /* GP Buffer pointer LSB. */
+ case 0x08: /* GP Buffer pointer LSB. */
dev->uGPBufPtr = (dev->uGPBufPtr & 0xff00) | value;
break;
- case 0x09: /* GP Buffer pointer MSB. */
+ case 0x09: /* GP Buffer pointer MSB. */
dev->uGPBufPtr = (dev->uGPBufPtr & 0x00ff) | (value << 8);
break;
- case 0x0a: /* RCV Buffer pointer clear. */
+ case 0x0a: /* RCV Buffer pointer clear. */
dev->uRCVBufPtr = 0;
#ifdef ENABLE_3COM501_LOG
threec501_log("3Com501: RCV Buffer Pointer cleared (%02X)\n", value);
#endif
break;
- case 0x0b: /* RCV buffer pointer MSB. */
- case 0x0c: /* Ethernet address PROM window. */
- case 0x0d: /* Undocumented. */
+ case 0x0b: /* RCV buffer pointer MSB. */
+ case 0x0c: /* Ethernet address PROM window. */
+ case 0x0d: /* Undocumented. */
#ifdef ENABLE_3COM501_LOG
threec501_log("3Com501: Writing read-only register %02X!\n", reg);
#endif
break;
- case 0x0e: /* Auxiliary Command (CSR). */
+ case 0x0e: /* Auxiliary Command (CSR). */
elnkCsrWrite(dev, value);
break;
- case 0x0f: /* Buffer window. */
+ case 0x0f: /* Buffer window. */
/* Writes use low 11 bits of GP buffer pointer, auto-increment. */
if (dev->AuxCmd.buf_ctl != EL_BCTL_SYSTEM) {
/// @todo Does this still increment GPBufPtr?
break;
}
dev->abPacketBuf[ELNK_GP(dev)] = value;
- dev->uGPBufPtr = (dev->uGPBufPtr + 1) & ELNK_GP_MASK;
+ dev->uGPBufPtr = (dev->uGPBufPtr + 1) & ELNK_GP_MASK;
break;
}
@@ -1042,12 +1039,12 @@ elnkSetLinkState(void *priv, uint32_t link_state)
if (dev->fLinkUp != link_up) {
dev->fLinkUp = link_up;
if (link_up) {
- dev->fLinkTempDown = 1;
- dev->cLinkDownReported = 0;
+ dev->fLinkTempDown = 1;
+ dev->cLinkDownReported = 0;
dev->cLinkRestorePostponed = 0;
timer_set_delay_u64(&dev->timer_restore, (dev->cMsLinkUpDelay * 1000) * TIMER_USEC);
} else {
- dev->cLinkDownReported = 0;
+ dev->cLinkDownReported = 0;
dev->cLinkRestorePostponed = 0;
}
}
@@ -1060,8 +1057,7 @@ elnkR3TimerRestore(void *priv)
{
threec501_t *dev = (threec501_t *) priv;
- if ((dev->cLinkDownReported <= ELNK_MAX_LINKDOWN_REPORTED) &&
- (dev->cLinkRestorePostponed <= ELNK_MAX_LINKRST_POSTPONED)) {
+ if ((dev->cLinkDownReported <= ELNK_MAX_LINKDOWN_REPORTED) && (dev->cLinkRestorePostponed <= ELNK_MAX_LINKRST_POSTPONED)) {
timer_advance_u64(&dev->timer_restore, 1500000 * TIMER_USEC);
dev->cLinkRestorePostponed++;
} else {
@@ -1117,7 +1113,7 @@ threec501_nic_init(const device_t *info)
/* Initialize the PROM */
memcpy(dev->aPROM, dev->maclocal, sizeof(dev->maclocal));
- dev->aPROM[6] = dev->aPROM[7] = 0; /* The two padding bytes. */
+ dev->aPROM[6] = dev->aPROM[7] = 0; /* The two padding bytes. */
#ifdef ENABLE_3COM501_LOG
threec501_log("I/O=%04x, IRQ=%d, DMA=%d, MAC=%02x:%02x:%02x:%02x:%02x:%02x\n",
@@ -1210,15 +1206,15 @@ static const device_config_t threec501_config[] = {
};
const device_t threec501_device = {
- .name = "3Com EtherLink (3c500/3c501)",
+ .name = "3Com EtherLink (3c500/3c501)",
.internal_name = "3c501",
- .flags = DEVICE_ISA,
- .local = 0,
- .init = threec501_nic_init,
- .close = threec501_nic_close,
- .reset = elnkR3Reset,
+ .flags = DEVICE_ISA,
+ .local = 0,
+ .init = threec501_nic_init,
+ .close = threec501_nic_close,
+ .reset = elnkR3Reset,
{ .available = NULL },
.speed_changed = NULL,
- .force_redraw = NULL,
- .config = threec501_config
+ .force_redraw = NULL,
+ .config = threec501_config
};
diff --git a/src/pci_dummy.c b/src/pci_dummy.c
index b3a5c6eee..1d0c95be2 100644
--- a/src/pci_dummy.c
+++ b/src/pci_dummy.c
@@ -32,7 +32,7 @@ static uint8_t
pci_dummy_read(uint16_t Port, void *p)
{
pci_dummy_t *dev = (pci_dummy_t *) p;
- uint8_t ret = 0xff;
+ uint8_t ret = 0xff;
switch (Port & 0x20) {
case 0x00:
@@ -120,51 +120,57 @@ static uint8_t
pci_dummy_pci_read(int func, int addr, void *priv)
{
pci_dummy_t *dev = (pci_dummy_t *) priv;
- uint8_t ret = 0xff;
+ uint8_t ret = 0xff;
- if (func == 0x00) switch (addr) {
- case 0x00: case 0x2c:
- ret = 0x1a;
- break;
- case 0x01: case 0x2d:
- ret = 0x07;
- break;
+ if (func == 0x00)
+ switch (addr) {
+ case 0x00:
+ case 0x2c:
+ ret = 0x1a;
+ break;
+ case 0x01:
+ case 0x2d:
+ ret = 0x07;
+ break;
- case 0x02: case 0x2e:
- ret = 0x0b;
- break;
- case 0x03: case 0x2f:
- ret = 0xab;
- break;
+ case 0x02:
+ case 0x2e:
+ ret = 0x0b;
+ break;
+ case 0x03:
+ case 0x2f:
+ ret = 0xab;
+ break;
- case 0x04: /* PCI_COMMAND_LO */
- case 0x05: /* PCI_COMMAND_HI */
- case 0x06: /* PCI_STATUS_LO */
- case 0x07: /* PCI_STATUS_HI */
- case 0x0a: case 0x0b:
- case 0x3c: /* PCI_ILR */
- ret = dev->pci_regs[addr];
- break;
+ case 0x04: /* PCI_COMMAND_LO */
+ case 0x05: /* PCI_COMMAND_HI */
+ case 0x06: /* PCI_STATUS_LO */
+ case 0x07: /* PCI_STATUS_HI */
+ case 0x0a:
+ case 0x0b:
+ case 0x3c: /* PCI_ILR */
+ ret = dev->pci_regs[addr];
+ break;
- case 0x08: /* Techncially, revision, but we return the card (slot) here. */
- ret = dev->card;
- break;
+ case 0x08: /* Techncially, revision, but we return the card (slot) here. */
+ ret = dev->card;
+ break;
- case 0x10: /* PCI_BAR 7:5 */
- ret = (dev->pci_bar[0].addr_regs[0] & 0xe0) | 0x01;
- break;
- case 0x11: /* PCI_BAR 15:8 */
- ret = dev->pci_bar[0].addr_regs[1];
- break;
+ case 0x10: /* PCI_BAR 7:5 */
+ ret = (dev->pci_bar[0].addr_regs[0] & 0xe0) | 0x01;
+ break;
+ case 0x11: /* PCI_BAR 15:8 */
+ ret = dev->pci_bar[0].addr_regs[1];
+ break;
- case 0x3d: /* PCI_IPR */
- ret = PCI_INTA;
- break;
+ case 0x3d: /* PCI_IPR */
+ ret = PCI_INTA;
+ break;
- default:
- ret = 0x00;
- break;
- }
+ default:
+ ret = 0x00;
+ break;
+ }
// pclog("AB0B:071A: PCI_Read(%d, %04X) = %02X\n", func, addr, ret);
@@ -175,50 +181,51 @@ static void
pci_dummy_pci_write(int func, int addr, uint8_t val, void *priv)
{
pci_dummy_t *dev = (pci_dummy_t *) priv;
- uint8_t valxor;
+ uint8_t valxor;
// pclog("AB0B:071A: PCI_Write(%d, %04X, %02X)\n", func, addr, val);
- if (func == 0x00) switch (addr) {
- case 0x04: /* PCI_COMMAND_LO */
- valxor = (val & 0x03) ^ dev->pci_regs[addr];
- if (valxor & PCI_COMMAND_IO) {
+ if (func == 0x00)
+ switch (addr) {
+ case 0x04: /* PCI_COMMAND_LO */
+ valxor = (val & 0x03) ^ dev->pci_regs[addr];
+ if (valxor & PCI_COMMAND_IO) {
+ pci_dummy_io_remove(dev);
+ if ((dev->pci_bar[0].addr != 0) && (val & PCI_COMMAND_IO))
+ pci_dummy_io_set(dev);
+ }
+ dev->pci_regs[addr] = val & 0x03;
+ break;
+
+ case 0x10: /* PCI_BAR */
+ val &= 0xe0; /* 0xe0 acc to RTL DS */
+ /*FALLTHROUGH*/
+
+ case 0x11: /* PCI_BAR */
+ /* Remove old I/O. */
pci_dummy_io_remove(dev);
- if ((dev->pci_bar[0].addr != 0) && (val & PCI_COMMAND_IO))
- pci_dummy_io_set(dev);
- }
- dev->pci_regs[addr] = val & 0x03;
- break;
- case 0x10: /* PCI_BAR */
- val &= 0xe0; /* 0xe0 acc to RTL DS */
- /*FALLTHROUGH*/
+ /* Set new I/O as per PCI request. */
+ dev->pci_bar[0].addr_regs[addr & 3] = val;
- case 0x11: /* PCI_BAR */
- /* Remove old I/O. */
- pci_dummy_io_remove(dev);
+ /* Then let's calculate the new I/O base. */
+ dev->pci_bar[0].addr &= 0xffe0;
- /* Set new I/O as per PCI request. */
- dev->pci_bar[0].addr_regs[addr & 3] = val;
+ /* Log the new base. */
+ // pclog("AB0B:071A: PCI: new I/O base is %04X\n", dev->pci_bar[0].addr);
- /* Then let's calculate the new I/O base. */
- dev->pci_bar[0].addr &= 0xffe0;
+ /* We're done, so get out of the here. */
+ if (dev->pci_regs[4] & PCI_COMMAND_IO) {
+ if ((dev->pci_bar[0].addr) != 0)
+ pci_dummy_io_set(dev);
+ }
+ break;
- /* Log the new base. */
- // pclog("AB0B:071A: PCI: new I/O base is %04X\n", dev->pci_bar[0].addr);
-
- /* We're done, so get out of the here. */
- if (dev->pci_regs[4] & PCI_COMMAND_IO) {
- if ((dev->pci_bar[0].addr) != 0)
- pci_dummy_io_set(dev);
- }
- break;
-
- case 0x3c: /* PCI_ILR */
- pclog("AB0B:071A Device %02X: IRQ now: %i\n", dev->card, val);
- dev->pci_regs[addr] = val;
- return;
- }
+ case 0x3c: /* PCI_ILR */
+ pclog("AB0B:071A Device %02X: IRQ now: %i\n", dev->card, val);
+ dev->pci_regs[addr] = val;
+ return;
+ }
}
static void
@@ -275,7 +282,7 @@ pci_dummy_init(int min_slot, int max_slot, int nb_slot, int sb_slot)
for (i = min_slot; i <= max_slot; i++) {
if ((i != nb_slot) && (i != sb_slot)) {
- pci_register_slot(i, PCI_CARD_NORMAL, 1, 3, 2, 4);
+ pci_register_slot(i, PCI_CARD_NORMAL, 1, 3, 2, 4);
device_add_inst(&pci_dummy_device, j);
j++;
}
diff --git a/src/pic.c b/src/pic.c
index bdff7f59c..25a90e1c7 100644
--- a/src/pic.c
+++ b/src/pic.c
@@ -51,7 +51,8 @@ static pc_timer_t pic_timer;
static int shadow = 0, elcr_enabled = 0,
tmr_inited = 0, latched = 0,
- pic_pci = 0;
+ pic_pci = 0, kbd_latch = 0,
+ mouse_latch = 0;
static uint16_t smi_irq_mask = 0x0000,
smi_irq_status = 0x0000;
@@ -284,6 +285,12 @@ pic_set_shadow(int sh)
shadow = sh;
}
+int
+pic_get_pci_flag(void)
+{
+ return pic_pci;
+}
+
void
pic_set_pci_flag(int pci)
{
@@ -383,6 +390,23 @@ pic_command(pic_t *dev)
dev->auto_eoi_rotate = !!(dev->ocw2 & 0x80);
}
+uint8_t
+pic_latch_read(uint16_t addr, void *priv)
+{
+ uint8_t ret = 0xff;
+
+ pic_log("pic_latch_read(%i, %i): %02X%02X\n", kbd_latch, mouse_latch, pic2.lines & 0x10, pic.lines & 0x02);
+
+ if (kbd_latch && (pic.lines & 0x02))
+ picintc(0x0002);
+
+ if (mouse_latch && (pic2.lines & 0x10))
+ picintc(0x1000);
+
+ /* Return FF - we just lower IRQ 1 and IRQ 12. */
+ return ret;
+}
+
uint8_t
pic_read(uint16_t addr, void *priv)
{
@@ -514,10 +538,47 @@ pic_set_pci(void)
}
void
-pic_init(void)
+pic_kbd_latch(int enable)
+{
+ pic_log("PIC keyboard latch now %sabled\n", enable ? "en" : "dis");
+
+ if (!!(enable | mouse_latch) != !!(kbd_latch | mouse_latch))
+ io_handler(!!(enable | mouse_latch), 0x0060, 0x0001, pic_latch_read, NULL, NULL, NULL, NULL, NULL, NULL);
+
+ kbd_latch = !!enable;
+
+ if (!enable)
+ picintc(0x0002);
+}
+
+void
+pic_mouse_latch(int enable)
+{
+ pic_log("PIC mouse latch now %sabled\n", enable ? "en" : "dis");
+
+ if (!!(kbd_latch | enable) != !!(kbd_latch | mouse_latch))
+ io_handler(!!(kbd_latch | enable), 0x0060, 0x0001, pic_latch_read, NULL, NULL, NULL, NULL, NULL, NULL);
+
+ mouse_latch = !!enable;
+
+ if (!enable)
+ picintc(0x1000);
+}
+
+static void
+pic_reset_hard(void)
{
pic_reset();
+ pic_kbd_latch(0x00);
+ pic_mouse_latch(0x00);
+}
+
+void
+pic_init(void)
+{
+ pic_reset_hard();
+
shadow = 0;
io_sethandler(0x0020, 0x0002, pic_read, NULL, NULL, pic_write, NULL, NULL, &pic);
}
@@ -525,7 +586,7 @@ pic_init(void)
void
pic_init_pcjr(void)
{
- pic_reset();
+ pic_reset_hard();
shadow = 0;
io_sethandler(0x0020, 0x0008, pic_read, NULL, NULL, pic_write, NULL, NULL, &pic);
@@ -582,6 +643,10 @@ picint_common(uint16_t num, int level, int set)
if (level)
pic2.lines |= (num >> 8);
+ /* Latch IRQ 12 if the mouse latch is enabled. */
+ if (mouse_latch && (num & 0x1000))
+ pic2.lines |= 0x10;
+
pic2.irr |= (num >> 8);
}
@@ -589,6 +654,9 @@ picint_common(uint16_t num, int level, int set)
if (level)
pic.lines |= (num & 0x00ff);
+ if (kbd_latch && (num & 0x0002))
+ pic.lines |= 0x02;
+
pic.irr |= (num & 0x00ff);
}
} else {
@@ -596,11 +664,13 @@ picint_common(uint16_t num, int level, int set)
if (num & 0xff00) {
pic2.lines &= ~(num >> 8);
+
pic2.irr &= ~(num >> 8);
}
if (num & 0x00ff) {
pic.lines &= ~(num & 0x00ff);
+
pic.irr &= ~(num & 0x00ff);
}
}
diff --git a/src/printer/CMakeLists.txt b/src/printer/CMakeLists.txt
index ef7b1d5ec..c774258e2 100644
--- a/src/printer/CMakeLists.txt
+++ b/src/printer/CMakeLists.txt
@@ -14,3 +14,10 @@
#
add_library(print OBJECT png.c prt_cpmap.c prt_escp.c prt_text.c prt_ps.c)
+
+if(APPLE)
+ find_library(GHOSTSCRIPT_LIB gs)
+ if (NOT GHOSTSCRIPT_LIB)
+ message(WARNING "Could not find ghostscript. The library will not be bundled and any related features will not work.")
+ endif()
+endif ()
\ No newline at end of file
diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt
index 1cb26a239..d9c729d00 100644
--- a/src/qt/CMakeLists.txt
+++ b/src/qt/CMakeLists.txt
@@ -299,7 +299,7 @@ endif()
# loads a macro to install Qt5 plugins on macOS
# based on https://stackoverflow.com/questions/35612687/cmake-macos-x-bundle-with-bundleutiliies-for-qt-application
-macro(install_qt5_plugin _qt_plugin_name _qt_plugins_var _prefix)
+macro(install_qt5_plugin _qt_plugin_name _runtime_plugins_var _prefix)
get_target_property(_qt_plugin_path "${_qt_plugin_name}" LOCATION)
if(EXISTS "${_qt_plugin_path}")
get_filename_component(_qt_plugin_file "${_qt_plugin_path}" NAME)
@@ -307,7 +307,7 @@ macro(install_qt5_plugin _qt_plugin_name _qt_plugins_var _prefix)
get_filename_component(_qt_plugin_type "${_qt_plugin_type}" NAME)
set(_qt_plugin_dest "${_prefix}/PlugIns/${_qt_plugin_type}")
install(FILES "${_qt_plugin_path}" DESTINATION "${_qt_plugin_dest}")
- list(APPEND ${_qt_plugins_var} "\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/${_qt_plugin_dest}/${_qt_plugin_file}")
+ list(APPEND ${_runtime_plugins_var} "\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/${_qt_plugin_dest}/${_qt_plugin_file}")
else()
message(FATAL_ERROR "QT plugin ${_qt_plugin_name} not found")
endif()
@@ -320,10 +320,25 @@ if (APPLE AND CMAKE_MACOSX_BUNDLE)
set(INSTALL_LIB_DIR "${prefix}/Frameworks")
# using the install_qt5_plugin to add Qt plugins into the macOS app bundle
- install_qt5_plugin("Qt${QT_MAJOR}::QCocoaIntegrationPlugin" QT_PLUGINS ${prefix})
- install_qt5_plugin("Qt${QT_MAJOR}::QMacStylePlugin" QT_PLUGINS ${prefix})
- install_qt5_plugin("Qt${QT_MAJOR}::QICOPlugin" QT_PLUGINS ${prefix})
- install_qt5_plugin("Qt${QT_MAJOR}::QICNSPlugin" QT_PLUGINS ${prefix})
+ install_qt5_plugin("Qt${QT_MAJOR}::QCocoaIntegrationPlugin" RUNTIME_PLUGINS ${prefix})
+ install_qt5_plugin("Qt${QT_MAJOR}::QMacStylePlugin" RUNTIME_PLUGINS ${prefix})
+ install_qt5_plugin("Qt${QT_MAJOR}::QICOPlugin" RUNTIME_PLUGINS ${prefix})
+ install_qt5_plugin("Qt${QT_MAJOR}::QICNSPlugin" RUNTIME_PLUGINS ${prefix})
+
+ # Install libraries that are loaded at runtime and not linked
+ if (GHOSTSCRIPT_LIB)
+ set(GS_LIBRARY_NAME "libgs.dylib")
+ file(REAL_PATH ${GHOSTSCRIPT_LIB} GS_LIB_RESOLVED)
+ install(FILES ${GS_LIB_RESOLVED} DESTINATION ${INSTALL_LIB_DIR} RENAME ${GS_LIBRARY_NAME})
+ list(APPEND RUNTIME_PLUGINS "\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/${INSTALL_LIB_DIR}/${GS_LIBRARY_NAME}")
+ endif ()
+
+ if (FLUIDSYNTH_LIB)
+ set(FLUIDSYNTH_LIBRARY_NAME "libfluidsynth.dylib")
+ file(REAL_PATH ${FLUIDSYNTH_LIB} FLUIDSYNTH_LIB_RESOLVED)
+ install(FILES ${FLUIDSYNTH_LIB_RESOLVED} DESTINATION ${INSTALL_LIB_DIR} RENAME ${FLUIDSYNTH_LIBRARY_NAME})
+ list(APPEND RUNTIME_PLUGINS "\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/${INSTALL_LIB_DIR}/${FLUIDSYNTH_LIBRARY_NAME}")
+ endif ()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/qt.conf"
"[Paths]\nPlugins = PlugIns\n")
@@ -345,7 +360,7 @@ if (APPLE AND CMAKE_MACOSX_BUNDLE)
install(CODE "
include(BundleUtilities)
get_filename_component(CMAKE_INSTALL_PREFIX_ABSOLUTE \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX} ABSOLUTE)
- fixup_bundle(\"\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/86Box.app\" \"${QT_PLUGINS}\" \"${DIRS}\")
+ fixup_bundle(\"\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/86Box.app\" \"${RUNTIME_PLUGINS}\" \"${DIRS}\")
execute_process(
COMMAND ${CMAKE_INSTALL_NAME_TOOL} -add_rpath \"@executable_path/../Frameworks/\"
\"\${CMAKE_INSTALL_PREFIX_ABSOLUTE}/${INSTALL_RUNTIME_DIR}/86Box\")
@@ -365,7 +380,7 @@ endif()
if (UNIX AND NOT APPLE AND NOT HAIKU)
find_package(X11 REQUIRED)
target_link_libraries(ui PRIVATE X11::X11 X11::Xi)
- target_sources(ui PRIVATE xinput2_mouse.cpp)
+ target_sources(ui PRIVATE evdev_keyboard.cpp xinput2_mouse.cpp)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBEVDEV IMPORTED_TARGET libevdev)
if (LIBEVDEV_FOUND)
@@ -373,6 +388,22 @@ if (UNIX AND NOT APPLE AND NOT HAIKU)
target_link_libraries(ui PUBLIC PkgConfig::LIBEVDEV)
target_sources(ui PRIVATE evdev_mouse.cpp)
endif()
+ pkg_check_modules(XKBCOMMON IMPORTED_TARGET xkbcommon)
+ if (XKBCOMMON_FOUND)
+ target_compile_definitions(ui PRIVATE XKBCOMMON)
+ target_link_libraries(ui PUBLIC PkgConfig::XKBCOMMON)
+ target_sources(ui PRIVATE xkbcommon_keyboard.cpp)
+
+ if (X11_xcb_FOUND)
+ pkg_check_modules(XKBCOMMON_X11 IMPORTED_TARGET xkbcommon-x11)
+ if (XKBCOMMON_X11_FOUND)
+ target_compile_definitions(ui PRIVATE XKBCOMMON_X11)
+ target_link_libraries(ui PRIVATE X11::xcb PUBLIC PkgConfig::XKBCOMMON_X11)
+ target_sources(ui PRIVATE xkbcommon_x11_keyboard.cpp)
+ set(QT5_PRIVATE_HEADERS ON)
+ endif()
+ endif()
+ endif()
find_package(ECM NO_MODULE)
if (ECM_FOUND)
@@ -387,10 +418,22 @@ if (UNIX AND NOT APPLE AND NOT HAIKU)
ecm_add_wayland_client_protocol(WL_SOURCE_VAR PROTOCOL ${CMAKE_SOURCE_DIR}/wl_protocols/pointer-constraints-unstable-v1.xml BASENAME pointer-constraints-unstable-v1)
target_include_directories(ui PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${Qt${QT_MAJOR}Gui_PRIVATE_INCLUDE_DIRS})
target_sources(ui PRIVATE ${WL_SOURCE_VAR} wl_mouse.cpp)
+ if (XKBCOMMON_FOUND)
+ target_sources(ui PRIVATE xkbcommon_wl_keyboard.cpp)
+ endif()
target_compile_definitions(ui PRIVATE WAYLAND)
+ set(QT5_PRIVATE_HEADERS ON)
endif()
endif()
endif()
+
+ # Add private headers for Qt5 if required.
+ if (NOT USE_QT6 AND DEFINED QT5_PRIVATE_HEADERS)
+ find_package(Qt${QT_MAJOR}Gui)
+ if (Qt${QT_MAJOR}Gui_FOUND)
+ include_directories(${Qt${QT_MAJOR}Gui_PRIVATE_INCLUDE_DIRS})
+ endif()
+ endif()
endif()
set(QM_FILES)
file(GLOB po_files "${CMAKE_CURRENT_SOURCE_DIR}/languages/*.po")
diff --git a/src/qt/be_keyboard.hpp b/src/qt/be_keyboard.hpp
new file mode 100644
index 000000000..cc2bbabac
--- /dev/null
+++ b/src/qt/be_keyboard.hpp
@@ -0,0 +1,112 @@
+static std::unordered_map be_keycodes = {
+ {B_F1_KEY, 0x3b},
+ {B_F2_KEY, 0x3c},
+ {B_F3_KEY, 0x3d},
+ {B_F4_KEY, 0x3e},
+ {B_F5_KEY, 0x3f},
+ {B_F6_KEY, 0x40},
+ {B_F7_KEY, 0x41},
+ {B_F8_KEY, 0x42},
+ {B_F9_KEY, 0x43},
+ {B_F10_KEY, 0x44},
+ {B_F11_KEY, 0x57},
+ {B_F12_KEY, 0x58},
+ {B_PRINT_KEY, 0x137},
+ {B_SCROLL_KEY, 0x46},
+ {B_PAUSE_KEY, 0x145},
+ {B_KATAKANA_HIRAGANA, 0x70},
+ {B_HANKAKU_ZENKAKU, 0x76},
+
+ {0x01, 0x01}, /* Escape */
+ {0x11, 0x29},
+ {0x12, 0x02},
+ {0x13, 0x03},
+ {0x14, 0x04},
+ {0x15, 0x05},
+ {0x16, 0x06},
+ {0x17, 0x07},
+ {0x18, 0x08},
+ {0x19, 0x09},
+ {0x1a, 0x0a},
+ {0x1b, 0x0b},
+ {0x1c, 0x0c},
+ {0x1d, 0x0d},
+ {0x1e, 0x0e}, /* Backspace */
+ {0x1f, 0x152}, /* Insert */
+ {0x20, 0x147}, /* Home */
+ {0x21, 0x149}, /* Page Up */
+ {0x22, 0x45},
+ {0x23, 0x135},
+ {0x24, 0x37},
+ {0x25, 0x4a},
+ {0x26, 0x0f}, /* Tab */
+ {0x27, 0x10},
+ {0x28, 0x11},
+ {0x29, 0x12},
+ {0x2a, 0x13},
+ {0x2b, 0x14},
+ {0x2c, 0x15},
+ {0x2d, 0x16},
+ {0x2e, 0x17},
+ {0x2f, 0x18},
+ {0x30, 0x19},
+ {0x31, 0x1a},
+ {0x32, 0x1b},
+ {0x33, 0x2b},
+ {0x34, 0x153}, /* Delete */
+ {0x35, 0x14f}, /* End */
+ {0x36, 0x151}, /* Page Down */
+ {0x37, 0x47},
+ {0x38, 0x48},
+ {0x39, 0x49},
+ {0x3a, 0x4e},
+ {0x3b, 0x3a},
+ {0x3c, 0x1e},
+ {0x3d, 0x1f},
+ {0x3e, 0x20},
+ {0x3f, 0x21},
+ {0x40, 0x22},
+ {0x41, 0x23},
+ {0x42, 0x24},
+ {0x43, 0x25},
+ {0x44, 0x26},
+ {0x45, 0x27},
+ {0x46, 0x28},
+ {0x47, 0x1c}, /* Enter */
+ {0x48, 0x4b},
+ {0x49, 0x4c},
+ {0x4a, 0x4d},
+ {0x4b, 0x2a},
+ {0x4c, 0x2c},
+ {0x4d, 0x2d},
+ {0x4e, 0x2e},
+ {0x4f, 0x2f},
+ {0x50, 0x30},
+ {0x51, 0x31},
+ {0x52, 0x32},
+ {0x53, 0x33},
+ {0x54, 0x34},
+ {0x55, 0x35},
+ {0x56, 0x36},
+ {0x57, 0x148}, /* up arrow */
+ {0x58, 0x51},
+ {0x59, 0x50},
+ {0x5a, 0x4f},
+ {0x5b, 0x11c},
+ {0x5c, 0x1d},
+ {0x5d, 0x38},
+ {0x5e, 0x39}, /* space bar */
+ {0x5f, 0x138},
+ {0x60, 0x11d},
+ {0x61, 0x14b}, /* left arrow */
+ {0x62, 0x150}, /* down arrow */
+ {0x63, 0x14d}, /* right arrow */
+ {0x64, 0x52},
+ {0x65, 0x53},
+ {0x66, 0x15b},
+ {0x67, 0x15c},
+ {0x68, 0x15d},
+ {0x69, 0x56},
+ {0x7e, 0x137}, /* System Request */
+ {0x7f, 0x145}, /* Break */
+};
diff --git a/src/qt/cocoa_keyboard.hpp b/src/qt/cocoa_keyboard.hpp
new file mode 100644
index 000000000..eaf0cdfe0
--- /dev/null
+++ b/src/qt/cocoa_keyboard.hpp
@@ -0,0 +1,129 @@
+static std::array cocoa_keycodes = { /* key names in parentheses are not declared by Apple headers */
+ 0x1e, /* ANSI_A */
+ 0x1f, /* ANSI_S */
+ 0x20, /* ANSI_D */
+ 0x21, /* ANSI_F */
+ 0x23, /* ANSI_H */
+ 0x22, /* ANSI_G */
+ 0x2c, /* ANSI_Z */
+ 0x2d, /* ANSI_X */
+ 0x2e, /* ANSI_C */
+ 0x2f, /* ANSI_V */
+ 0x56, /* ISO_Section */
+ 0x30, /* ANSI_B */
+ 0x10, /* ANSI_Q */
+ 0x11, /* ANSI_W */
+ 0x12, /* ANSI_E */
+ 0x13, /* ANSI_R */
+ 0x15, /* ANSI_Y */
+ 0x14, /* ANSI_T */
+ 0x02, /* ANSI_1 */
+ 0x03, /* ANSI_2 */
+ 0x04, /* ANSI_3 */
+ 0x05, /* ANSI_4 */
+ 0x07, /* ANSI_6 */
+ 0x06, /* ANSI_5 */
+ 0x0d, /* ANSI_Equal */
+ 0x0a, /* ANSI_9 */
+ 0x08, /* ANSI_7 */
+ 0x0c, /* ANSI_Minus */
+ 0x09, /* ANSI_8 */
+ 0x0b, /* ANSI_0 */
+ 0x1b, /* ANSI_RightBracket */
+ 0x18, /* ANSI_O */
+ 0x16, /* ANSI_U */
+ 0x1a, /* ANSI_LeftBracket */
+ 0x17, /* ANSI_I */
+ 0x19, /* ANSI_P */
+ 0x1c, /* Return */
+ 0x26, /* ANSI_L */
+ 0x24, /* ANSI_J */
+ 0x28, /* ANSI_Quote */
+ 0x25, /* ANSI_K */
+ 0x27, /* ANSI_Semicolon */
+ 0x2b, /* ANSI_Backslash */
+ 0x33, /* ANSI_Comma */
+ 0x35, /* ANSI_Slash */
+ 0x31, /* ANSI_N */
+ 0x32, /* ANSI_M */
+ 0x34, /* ANSI_Period */
+ 0x0f, /* Tab */
+ 0x39, /* Space */
+ 0x29, /* ANSI_Grave */
+ 0x0e, /* Delete => Backspace */
+ 0x11c, /* (ANSI_KeypadEnter) */
+ 0x01, /* Escape */
+ 0x15c, /* (RightCommand) => Right Windows */
+ 0x15b, /* (Left)Command => Left Windows */
+ 0x2a, /* Shift */
+ 0x3a, /* CapsLock */
+ 0x38, /* Option */
+ 0x1d, /* Control */
+ 0x36, /* RightShift */
+ 0x138, /* RightOption */
+ 0x11d, /* RightControl */
+ 0x15c, /* Function */
+ 0x5e, /* F17 => F14 */
+ 0x53, /* ANSI_KeypadDecimal */
+ 0,
+ 0x37, /* ANSI_KeypadMultiply */
+ 0,
+ 0x4e, /* ANSI_KeypadPlus */
+ 0,
+ 0x45, /* ANSI_KeypadClear => Num Lock (location equivalent) */
+ 0x130, /* VolumeUp */
+ 0x12e, /* VolumeDown */
+ 0x120, /* Mute */
+ 0x135, /* ANSI_KeypadDivide */
+ 0x11c, /* ANSI_KeypadEnter */
+ 0,
+ 0x4a, /* ANSI_KeypadMinus */
+ 0x5f, /* F18 => F15 */
+ 0, /* F19 */
+ 0x59, /* ANSI_KeypadEquals */
+ 0x52, /* ANSI_Keypad0 */
+ 0x4f, /* ANSI_Keypad1 */
+ 0x50, /* ANSI_Keypad2 */
+ 0x51, /* ANSI_Keypad3 */
+ 0x4b, /* ANSI_Keypad4 */
+ 0x4c, /* ANSI_Keypad5 */
+ 0x4d, /* ANSI_Keypad6 */
+ 0x47, /* ANSI_Keypad7 */
+ 0, /* F20 */
+ 0x48, /* ANSI_Keypad8 */
+ 0x49, /* ANSI_Keypad9 */
+ 0x7d, /* JIS_Yen */
+ 0x73, /* JIS_Underscore */
+ 0x5c, /* JIS_KeypadComma */
+ 0x3f, /* F5 */
+ 0x40, /* F6 */
+ 0x41, /* F7 */
+ 0x3d, /* F3 */
+ 0x42, /* F8 */
+ 0x43, /* F9 */
+ 0x7b, /* JIS_Eisu => muhenkan (location equivalent) */
+ 0x57, /* F11 */
+ 0x79, /* JIS_Kana => henkan (location equivalent) */
+ 0x137, /* F13 => SysRq (location equivalent) */
+ 0x5d, /* F16 => F13 */
+ 0x46, /* F14 => Scroll Lock (location equivalent) */
+ 0,
+ 0x44, /* F10 */
+ 0x15d, /* (Menu) */
+ 0x58, /* F12 */
+ 0,
+ 0x145, /* F15 => Pause (location equivalent) */
+ 0x152, /* Help => Insert (location equivalent) */
+ 0x147, /* Home */
+ 0x149, /* PageUp */
+ 0x153, /* ForwardDelete */
+ 0x3e, /* F4 */
+ 0x14f, /* End */
+ 0x3c, /* F2 */
+ 0x151, /* PageDown */
+ 0x3b, /* F1 */
+ 0x14b, /* LeftArrow */
+ 0x14d, /* RightArrow */
+ 0x150, /* DownArrow */
+ 0x148, /* UpArrow */
+};
diff --git a/src/qt/evdev_keyboard.cpp b/src/qt/evdev_keyboard.cpp
new file mode 100644
index 000000000..9bc2ebdb2
--- /dev/null
+++ b/src/qt/evdev_keyboard.cpp
@@ -0,0 +1,163 @@
+/*
+ * 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.
+ *
+ * evdev keyboard input module.
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+#include
+#include
+
+static std::unordered_map evdev_keycodes = {
+ {184, 0x46}, /* F14 => Scroll Lock (for Apple keyboards) */
+ {86, 0x56}, /* 102ND */
+ {87, 0x57}, /* F11 */
+ {88, 0x58}, /* F12 */
+ {186, 0x5d}, /* F16 => F13 */
+ {187, 0x5e}, /* F17 => F14 */
+ {188, 0x5f}, /* F18 => F15 */
+
+ /* Japanese keys. */
+ {95, 0x5c}, /* KPJPCOMMA */
+ {93, 0x70}, /* KATAKANAHIRAGANA */
+ {89, 0x73}, /* RO */
+ {85, 0x76}, /* ZENKAKUHANKAKU */
+ {91, 0x77}, /* HIRAGANA */
+ {90, 0x78}, /* KATAKANA */
+ {92, 0x79}, /* HENKAN */
+ {94, 0x7b}, /* MUHENKAN */
+ {124, 0x7d}, /* YEN */
+ {121, 0x7e}, /* KPCOMMA */
+
+ /* Korean keys. */
+ {123, 0xf1}, /* HANJA */
+ {122, 0xf2}, /* HANGUL */
+
+ {96, 0x11c}, /* KPENTER */
+ {97, 0x11d}, /* RIGHTCTRL */
+ {98, 0x135}, /* KPSLASH */
+ {99, 0x137}, /* SYSRQ */
+ {183, 0x137}, /* F13 => SysRq (for Apple keyboards) */
+ {100, 0x138}, /* RIGHTALT */
+ {119, 0x145}, /* PAUSE */
+ {411, 0x145}, /* BREAK */
+ {185, 0x145}, /* F15 => Pause (for Apple keyboards) */
+ {102, 0x147}, /* HOME */
+ {103, 0x148}, /* UP */
+ {104, 0x149}, /* PAGEUP */
+ {105, 0x14b}, /* LEFT */
+ {106, 0x14d}, /* RIGHT */
+ {107, 0x14f}, /* END */
+ {108, 0x150}, /* DOWN */
+ {109, 0x151}, /* PAGEDOWN */
+ {110, 0x152}, /* INSERT */
+ {111, 0x153}, /* DELETE */
+
+ {125, 0x15b}, /* LEFTMETA */
+ {126, 0x15c}, /* RIGHTMETA */
+ {127, 0x15d}, /* COMPOSE => Menu */
+
+ /* Multimedia keys. Guideline is to try and follow the Microsoft standard, then
+ fill in remaining scancodes with OEM-specific keys for redundancy sake. Keys
+ marked with # are not translated into evdev codes by the standard atkbd driver. */
+ {634, 0x54}, /* SELECTIVE_SCREENSHOT# => Alt+SysRq */
+ {117, 0x59}, /* KPEQUAL */
+ {418, 0x6a}, /* ZOOMIN# => Logitech */
+ {420, 0x6b}, /* ZOOMRESET# => Logitech */
+ {223, 0x6d}, /* CANCEL# => Logitech */
+ {132, 0x101}, /* # Logitech Task Select */
+ {148, 0x102}, /* PROG1# => Samsung */
+ {149, 0x103}, /* PROG2# => Samsung */
+ {419, 0x104}, /* ZOOMOUT# => Logitech */
+ {144, 0x105}, /* FILE# => Messenger/Files */
+ {216, 0x105}, /* CHAT# => Messenger/Files */
+ {430, 0x105}, /* MESSENGER# */
+ {182, 0x107}, /* REDO# */
+ {131, 0x108}, /* UNDO# */
+ {135, 0x10a}, /* PASTE# */
+ {177, 0x10b}, /* SCROLLUP# => normal speed */
+ {165, 0x110}, /* PREVIOUSSONG */
+ {136, 0x112}, /* FIND# => Logitech */
+ {421, 0x113}, /* WORDPROCESSOR# => Word */
+ {423, 0x114}, /* SPREADSHEET# => Excel */
+ {397, 0x115}, /* CALENDAR# */
+ {433, 0x116}, /* LOGOFF# */
+ {137, 0x117}, /* CUT# */
+ {133, 0x118}, /* COPY# */
+ {163, 0x119}, /* NEXTSONG */
+ {154, 0x11e}, /* CYCLEWINDOWS => Application Right (no left counterpart) */
+ {113, 0x120}, /* MUTE */
+ {140, 0x121}, /* CALC */
+ {164, 0x122}, /* PLAYPAUSE */
+ {432, 0x123}, /* SPELLCHECK# */
+ {166, 0x124}, /* STOPCD */
+ {139, 0x126}, /* MENU# => Shortcut/Menu/Help for a few OEMs */
+ {114, 0x12e}, /* VOL- */
+ {160, 0x12f}, /* CLOSECD# => Logitech Eject */
+ {161, 0x12f}, /* EJECTCD# => Logitech */
+ {162, 0x12f}, /* EJECTCLOSECD# => Logitech */
+ {115, 0x130}, /* VOL+ */
+ {150, 0x132}, /* WWW# */
+ {172, 0x132}, /* HOMEPAGE */
+ {138, 0x13b}, /* HELP# */
+ {213, 0x13c}, /* SOUND# => My Music/Office Home */
+ {360, 0x13c}, /* VENDOR# => My Music/Office Home */
+ {204, 0x13d}, /* DASHBOARD# => Task Pane */
+ {181, 0x13e}, /* NEW# */
+ {134, 0x13f}, /* OPEN# */
+ {206, 0x140}, /* CLOSE# */
+ {232, 0x141}, /* REPLY# */
+ {233, 0x142}, /* FORWARDMAIL# */
+ {231, 0x143}, /* SEND# */
+ {151, 0x144}, /* MSDOS# */
+ {112, 0x14c}, /* MACRO */
+ {179, 0x14c}, /* KPLEFTPAREN# */
+ {118, 0x14e}, /* KPPLUSMINUS */
+ {235, 0x155}, /* DOCUMENTS# => Logitech */
+ {234, 0x157}, /* SAVE# */
+ {210, 0x158}, /* PRINT# */
+ {116, 0x15e}, /* POWER */
+ {142, 0x15f}, /* SLEEP */
+ {143, 0x163}, /* WAKEUP */
+ {180, 0x164}, /* KPRIGHTPAREN# */
+ {212, 0x164}, /* CAMERA# => My Pictures */
+ {217, 0x165}, /* SEARCH */
+ {156, 0x166}, /* BOOKMARKS => Favorites */
+ {364, 0x166}, /* FAVORITES# */
+ {173, 0x167}, /* REFRESH */
+ {128, 0x168}, /* STOP */
+ {159, 0x169}, /* FORWARD */
+ {158, 0x16a}, /* BACK */
+ {157, 0x16b}, /* COMPUTER */
+ {155, 0x16c}, /* MAIL */
+ {215, 0x16c}, /* EMAIL# */
+ {226, 0x16d}, /* MEDIA */
+ {167, 0x178}, /* RECORD# => Logitech */
+ {152, 0x17a}, /* COFFEE/SCREENLOCK# */
+ {178, 0x18b}, /* SCROLLDOWN# => normal speed */
+};
+
+uint16_t
+evdev_translate(uint32_t keycode)
+{
+ /* "for 1-83 (0x01-0x53) scancode equals keycode" */
+ auto ret = (keycode <= 0x53) ? keycode : evdev_keycodes[keycode];
+
+ if (!ret)
+ qWarning() << "Evdev Keyboard: Unknown key" << keycode;
+#if 0
+ else
+ qInfo() << "Evdev Keyboard: Key" << keycode << "scancode" << QString::number(ret, 16);
+#endif
+
+ return ret;
+}
diff --git a/src/qt/evdev_keyboard.hpp b/src/qt/evdev_keyboard.hpp
new file mode 100644
index 000000000..5efe5958d
--- /dev/null
+++ b/src/qt/evdev_keyboard.hpp
@@ -0,0 +1,20 @@
+/*
+ * 86Box A hypervisor and IBM PC system emulator that specializes in
+ * running old operating systems and software designed for IBM
+ * PC systems and compatibles from 1981 through fairly recent
+ * system designs based on the PCI bus.
+ *
+ * This file is part of the 86Box distribution.
+ *
+ * Definitions for evdev keyboard input module.
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+#ifndef EVDEV_KEYBOARD_HPP
+#define EVDEV_KEYBOARD_HPP
+uint16_t evdev_translate(uint32_t keycode);
+#endif
diff --git a/src/qt/languages/zh-TW.po b/src/qt/languages/zh-TW.po
index b61613b89..1f7b7cfff 100644
--- a/src/qt/languages/zh-TW.po
+++ b/src/qt/languages/zh-TW.po
@@ -206,13 +206,13 @@ msgid "&About 86Box..."
msgstr "關於 86Box(&A)..."
msgid "&New image..."
-msgstr "新增é¡åƒ(&N)..."
+msgstr "æ–°å¢žæ˜ åƒ(&N)..."
msgid "&Existing image..."
-msgstr "開啟已å˜åœ¨çš„é¡åƒ(&E)..."
+msgstr "開啟已å˜åœ¨çš„æ˜ åƒ(&E)..."
msgid "Existing image (&Write-protected)..."
-msgstr "開啟已å˜åœ¨çš„é¡åƒä¸¦å¯«ä¿è·(&W)..."
+msgstr "開啟已å˜åœ¨çš„æ˜ åƒä¸¦å¯«ä¿è·(&W)..."
msgid "&Record"
msgstr "錄製(&R)"
@@ -227,10 +227,10 @@ msgid "&Fast forward to the end"
msgstr "快進至終點(&F)"
msgid "E&ject"
-msgstr "彈出(&J)"
+msgstr "退出(&J)"
msgid "&Image..."
-msgstr "é¡åƒ(&I)..."
+msgstr "æ˜ åƒ(&I)..."
msgid "E&xport to 86F..."
msgstr "匯出為 86F æ ¼å¼(&x)..."
@@ -242,7 +242,7 @@ msgid "E&mpty"
msgstr "空置光碟機(&M)"
msgid "&Reload previous image"
-msgstr "載入上一個é¡åƒ(&R)"
+msgstr "è¼‰å…¥ä¸Šä¸€å€‹æ˜ åƒ(&R)"
msgid "&Folder..."
msgstr "資料夾(&F)..."
@@ -272,7 +272,7 @@ msgid "&VSync"
msgstr "åž‚ç›´åŒæ¥(&V)"
msgid "&Select shader..."
-msgstr "鏿“‡è‘—色器(&S)..."
+msgstr "é¸å–著色器(&S)..."
msgid "&Remove shader"
msgstr "移除著色器(&R)"
@@ -284,7 +284,7 @@ msgid "Sound Gain"
msgstr "音é‡å¢žç›Š"
msgid "New Image"
-msgstr "新增é¡åƒ"
+msgstr "æ–°å¢žæ˜ åƒ"
msgid "Settings"
msgstr "è¨å®š"
@@ -533,7 +533,7 @@ msgid "&New..."
msgstr "新增(&N)..."
msgid "&Existing..."
-msgstr "已有é¡åƒ(&E)..."
+msgstr "å·²æœ‰æ˜ åƒ(&E)..."
msgid "&Remove"
msgstr "移除(&R)"
@@ -566,10 +566,10 @@ msgid "Type:"
msgstr "類型:"
msgid "Image Format:"
-msgstr "é¡åƒæ ¼å¼:"
+msgstr "æ˜ åƒæ ¼å¼:"
msgid "Block Size:"
-msgstr "塊大å°:"
+msgstr "å€å¡Šå¤§å°:"
msgid "Floppy drives:"
msgstr "軟碟機:"
@@ -647,10 +647,10 @@ msgid "ZIP %03i %i (%s): %ls"
msgstr "ZIP %03i %i (%s): %ls"
msgid "ZIP images"
-msgstr "ZIP é¡åƒ"
+msgstr "ZIP æ˜ åƒ"
msgid "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the \"roms\" directory."
-msgstr "86Box 找ä¸åˆ°ä»»ä½•å¯ç”¨çš„ ROM é¡åƒã€‚\n\n請下載ROM 包並將其解壓到 \"roms\" 資料夾。"
+msgstr "86Box 找ä¸åˆ°ä»»ä½•å¯ç”¨çš„ ROM æ˜ åƒã€‚\n\n請下載ROM 包並將其解壓到 \"roms\" 資料夾。"
msgid "(empty)"
msgstr "(空)"
@@ -668,13 +668,13 @@ msgid "Off"
msgstr "關"
msgid "All images"
-msgstr "所有é¡åƒ"
+msgstr "æ‰€æœ‰æ˜ åƒ"
msgid "Basic sector images"
-msgstr "基本ç£å€é¡åƒ"
+msgstr "基本ç£å€æ˜ åƒ"
msgid "Surface images"
-msgstr "表é¢é¡åƒ"
+msgstr "è¡¨é¢æ˜ åƒ"
msgid "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine."
msgstr "由於 roms/machines 資料夾ä¸ç¼ºå°‘åˆé©çš„ ROM,機型 \"%hs\" ä¸å¯ç”¨ã€‚將切æ›åˆ°å…¶ä»–å¯ç”¨æ©Ÿåž‹ã€‚"
@@ -710,7 +710,7 @@ msgid "Floppy & CD-ROM drives"
msgstr "軟碟/光碟機"
msgid "Other removable devices"
-msgstr "å…¶ä»–å¯ç§»é™¤è£ç½®"
+msgstr "å…¶ä»–å¸é™¤å¼è£ç½®"
msgid "Other peripherals"
msgstr "其他周邊è£ç½®"
@@ -806,10 +806,10 @@ msgid "Floppy %i (%s): %ls"
msgstr "軟碟 %i (%s): %ls"
msgid "Advanced sector images"
-msgstr "進階ç£å€é¡åƒ"
+msgstr "進階ç£å€æ˜ åƒ"
msgid "Flux images"
-msgstr "Flux é¡åƒ"
+msgstr "Flux æ˜ åƒ"
msgid "Unable to initialize FreeType"
msgstr "無法åˆå§‹åŒ– FreeType"
@@ -830,7 +830,7 @@ msgid "MO %i (%ls): %ls"
msgstr "ç£å…‰ç¢Ÿ %i (%ls): %ls"
msgid "MO images"
-msgstr "ç£å…‰ç¢Ÿé¡åƒ"
+msgstr "ç£å…‰ç¢Ÿæ˜ åƒ"
msgid "Welcome to 86Box!"
msgstr "æ¡è¿Žä½¿ç”¨ 86Boxï¼"
@@ -845,13 +845,13 @@ msgid "No ROMs found"
msgstr "找ä¸åˆ° ROM"
msgid "Do you want to save the settings?"
-msgstr "è¦ä¿å˜è¨å®šå—Žï¼Ÿ"
+msgstr "è¦å„²å˜è¨å®šå—Žï¼Ÿ"
msgid "This will hard reset the emulated machine."
msgstr "æ¤æ“作將硬é‡è¨æ¨¡æ“¬å™¨ã€‚"
msgid "Save"
-msgstr "ä¿å˜"
+msgstr "儲å˜"
msgid "About 86Box"
msgstr "關於 86Box"
@@ -893,7 +893,7 @@ msgid "libgs"
msgstr "libgs"
msgid " is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files."
-msgstr " 是將 PostScript 檔案轉æ›ç‚º PDF 所需è¦çš„庫。\n\n使用通用 PostScript å°è¡¨æ©Ÿåˆ—å°çš„æ–‡ä»¶å°‡è¢«ä¿å˜ç‚º PostScript (.ps) 檔案。"
+msgstr " 是將 PostScript 檔案轉æ›ç‚º PDF 所需è¦çš„庫。\n\n使用通用 PostScript å°è¡¨æ©Ÿåˆ—å°çš„æ–‡ä»¶å°‡è¢«å„²å˜ç‚º PostScript (.ps) 檔案。"
msgid "libfluidsynth.dll"
msgstr "libfluidsynth.dll"
@@ -920,7 +920,7 @@ msgid "Don't reset"
msgstr "ä¸é‡è¨"
msgid "CD-ROM images"
-msgstr "光碟é¡åƒ"
+msgstr "å…‰ç¢Ÿæ˜ åƒ"
msgid "%hs Device Configuration"
msgstr "%hs è£ç½®é…ç½®"
@@ -947,13 +947,13 @@ msgid "Cassette: %s"
msgstr "ç£å¸¶: %s"
msgid "Cassette images"
-msgstr "ç£å¸¶é¡åƒ"
+msgstr "ç£å¸¶æ˜ åƒ"
msgid "Cartridge %i: %ls"
msgstr "å¡å¸¶ %i: %ls"
msgid "Cartridge images"
-msgstr "å¡å¸¶é¡åƒ"
+msgstr "å¡å¸¶æ˜ åƒ"
msgid "Error initializing renderer"
msgstr "åˆå§‹åŒ–渲染器時出錯"
@@ -1004,13 +1004,13 @@ msgid "Add Existing Hard Disk"
msgstr "æ·»åŠ å·²å˜åœ¨çš„硬碟"
msgid "HDI disk images cannot be larger than 4 GB."
-msgstr "HDI ç£ç¢Ÿé¡åƒä¸èƒ½è¶…éŽ 4 GB。"
+msgstr "HDI ç£ç¢Ÿæ˜ åƒä¸èƒ½è¶…éŽ 4 GB。"
msgid "Disk images cannot be larger than 127 GB."
-msgstr "ç£ç¢Ÿé¡åƒä¸èƒ½è¶…éŽ 127 GB。"
+msgstr "ç£ç¢Ÿæ˜ åƒä¸èƒ½è¶…éŽ 127 GB。"
msgid "Hard disk images"
-msgstr "硬碟é¡åƒ"
+msgstr "ç¡¬ç¢Ÿæ˜ åƒ"
msgid "Unable to read file"
msgstr "ç„¡æ³•è®€å–æª”案"
@@ -1019,37 +1019,37 @@ msgid "Unable to write file"
msgstr "無法寫入檔案"
msgid "HDI or HDX images with a sector size other than 512 are not supported."
-msgstr "䏿”¯æ´éž 512 ä½å…ƒçµ„ç£å€å¤§å°çš„ HDI 或 HDX é¡åƒã€‚"
+msgstr "䏿”¯æ´éž 512 ä½å…ƒçµ„ç£å€å¤§å°çš„ HDI 或 HDX æ˜ åƒã€‚"
msgid "USB is not yet supported"
msgstr "å°šæœªæ”¯æ´ USB"
msgid "Disk image file already exists"
-msgstr "ç£ç¢Ÿé¡åƒæª”案已å˜åœ¨"
+msgstr "ç£ç¢Ÿæ˜ åƒæª”案已å˜åœ¨"
msgid "Please specify a valid file name."
msgstr "請指定有效的檔案å。"
msgid "Disk image created"
-msgstr "已創建ç£ç¢Ÿé¡åƒ"
+msgstr "已創建ç£ç¢Ÿæ˜ åƒ"
msgid "Make sure the file exists and is readable."
msgstr "è«‹ç¢ºå®šæ¤æª”案已å˜åœ¨ä¸¦å¯è®€å–。"
msgid "Make sure the file is being saved to a writable directory."
-msgstr "è«‹ç¢ºå®šæ¤æª”案ä¿å˜åœ¨å¯å¯«ç›®éŒ„ä¸ã€‚"
+msgstr "è«‹ç¢ºå®šæ¤æª”案儲å˜åœ¨å¯å¯«ç›®éŒ„ä¸ã€‚"
msgid "Disk image too large"
-msgstr "ç£ç¢Ÿé¡åƒå¤ªå¤§"
+msgstr "ç£ç¢Ÿæ˜ åƒå¤ªå¤§"
msgid "Remember to partition and format the newly-created drive."
-msgstr "請記得為新創建的é¡åƒåˆ†å€ä¸¦æ ¼å¼åŒ–。"
+msgstr "è«‹è¨˜å¾—ç‚ºæ–°å‰µå»ºçš„æ˜ åƒåˆ†å€ä¸¦æ ¼å¼åŒ–。"
msgid "The selected file will be overwritten. Are you sure you want to use it?"
msgstr "é¸å®šçš„æª”æ¡ˆå°‡è¢«è¦†è“‹ã€‚ç¢ºå®šç¹¼çºŒä½¿ç”¨æ¤æª”案嗎?"
msgid "Unsupported disk image"
-msgstr "䏿”¯æ´çš„ç£ç¢Ÿé¡åƒ"
+msgstr "䏿”¯æ´çš„ç£ç¢Ÿæ˜ åƒ"
msgid "Overwrite"
msgstr "覆蓋"
@@ -1058,13 +1058,13 @@ msgid "Don't overwrite"
msgstr "ä¸è¦†è“‹"
msgid "Raw image (.img)"
-msgstr "原始é¡åƒ (.img)"
+msgstr "åŽŸå§‹æ˜ åƒ (.img)"
msgid "HDI image (.hdi)"
-msgstr "HDI é¡åƒ (.hdi)"
+msgstr "HDI æ˜ åƒ (.hdi)"
msgid "HDX image (.hdx)"
-msgstr "HDX é¡åƒ (.hdx)"
+msgstr "HDX æ˜ åƒ (.hdx)"
msgid "Fixed-size VHD (.vhd)"
msgstr "å›ºå®šå¤§å° VHD (.vhd)"
@@ -1076,19 +1076,19 @@ msgid "Differencing VHD (.vhd)"
msgstr "差分 VHD (.vhd)"
msgid "Large blocks (2 MB)"
-msgstr "大塊 (2 MB)"
+msgstr "大å€å¡Š (2 MB)"
msgid "Small blocks (512 KB)"
-msgstr "å°å¡Š (512 KB)"
+msgstr "å°å€å¡Š (512 KB)"
msgid "VHD files"
msgstr "VHD 檔案"
msgid "Select the parent VHD"
-msgstr "鏿“‡çˆ¶ VHD 檔案"
+msgstr "é¸å–父 VHD 檔案"
msgid "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?"
-msgstr "çˆ¶æ˜ åƒå¯èƒ½åœ¨å‰µå»ºå·®ç•°é¡åƒå¾Œè¢«ä¿®æ”¹ã€‚\n\n如果é¡åƒæª”案被移動或複製,或創建æ¤ç£ç¢Ÿçš„程å¼ä¸å˜åœ¨éŒ¯èª¤ï¼Œä¹Ÿå¯èƒ½ç™¼ç”Ÿé€™ç¨®æƒ…æ³ã€‚\n\n是å¦éœ€è¦ä¿®å¾©æ™‚間戳?"
+msgstr "çˆ¶æ˜ åƒå¯èƒ½åœ¨å‰µå»ºå·®ç•°æ˜ åƒå¾Œè¢«ä¿®æ”¹ã€‚\n\nå¦‚æžœæ˜ åƒæª”案被移動或複製,或創建æ¤ç£ç¢Ÿçš„程å¼ä¸å˜åœ¨éŒ¯èª¤ï¼Œä¹Ÿå¯èƒ½ç™¼ç”Ÿé€™ç¨®æƒ…æ³ã€‚\n\n是å¦éœ€è¦ä¿®å¾©æ™‚間戳?"
msgid "Parent and child disk timestamps do not match"
msgstr "父碟與å碟的時間戳ä¸åŒ¹é…"
@@ -1175,34 +1175,34 @@ msgid "ZIP 100"
msgstr "ZIP 100"
msgid "3.5\" 128 MB (ISO 10090)"
-msgstr "3.5 英寸 128 MB (ISO 10090)"
+msgstr "3.5 è‹±å‹ 128 MB (ISO 10090)"
msgid "3.5\" 230 MB (ISO 13963)"
-msgstr "3.5 英寸 230 MB (ISO 13963)"
+msgstr "3.5 è‹±å‹ 230 MB (ISO 13963)"
msgid "3.5\" 540 MB (ISO 15498)"
-msgstr "3.5 英寸 540 MB (ISO 15498)"
+msgstr "3.5 è‹±å‹ 540 MB (ISO 15498)"
msgid "3.5\" 640 MB (ISO 15498)"
-msgstr "3.5 英寸 640 MB (ISO 15498)"
+msgstr "3.5 è‹±å‹ 640 MB (ISO 15498)"
msgid "3.5\" 1.3 GB (GigaMO)"
-msgstr "3.5 英寸 1.3 GB (GigaMO)"
+msgstr "3.5 è‹±å‹ 1.3 GB (GigaMO)"
msgid "3.5\" 2.3 GB (GigaMO 2)"
-msgstr "3.5 英寸 2.3 GB (GigaMO 2)"
+msgstr "3.5 è‹±å‹ 2.3 GB (GigaMO 2)"
msgid "5.25\" 600 MB"
-msgstr "5.25 英寸 600 MB"
+msgstr "5.25 è‹±å‹ 600 MB"
msgid "5.25\" 650 MB"
-msgstr "5.25 英寸 650 MB"
+msgstr "5.25 è‹±å‹ 650 MB"
msgid "5.25\" 1 GB"
-msgstr "5.25 英寸 1 GB"
+msgstr "5.25 è‹±å‹ 1 GB"
msgid "5.25\" 1.3 GB"
-msgstr "5.25 英寸 1.3 GB"
+msgstr "5.25 è‹±å‹ 1.3 GB"
msgid "Perfect RPM"
msgstr "標準轉速 (RPM)"
@@ -1218,4 +1218,3 @@ msgstr "低於標準轉速的 2%"
msgid "(System Default)"
msgstr "(系統é è¨)"
-
diff --git a/src/qt/qt_harddiskdialog.cpp b/src/qt/qt_harddiskdialog.cpp
index e8ccccd6f..088ef0413 100644
--- a/src/qt/qt_harddiskdialog.cpp
+++ b/src/qt/qt_harddiskdialog.cpp
@@ -23,7 +23,6 @@ extern "C" {
#include <86box/86box.h>
#include <86box/hdd.h>
#include "../disk/minivhd/minivhd.h"
-#include "../disk/minivhd/minivhd_util.h"
}
#include
diff --git a/src/qt/qt_main.cpp b/src/qt/qt_main.cpp
index 29f8af5aa..a41a3e889 100644
--- a/src/qt/qt_main.cpp
+++ b/src/qt/qt_main.cpp
@@ -138,7 +138,11 @@ main_thread_fn()
}
is_quit = 1;
- QTimer::singleShot(0, QApplication::instance(), []() { QApplication::instance()->quit(); });
+ if (gfxcard[1]) {
+ ui_deinit_monitor(1);
+ std::this_thread::sleep_for(std::chrono::milliseconds(500));
+ }
+ QTimer::singleShot(0, QApplication::instance(), []() { QApplication::processEvents(); QApplication::instance()->quit(); });
}
static std::thread *main_thread;
diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp
index 65af4d8d3..8df0dba3d 100644
--- a/src/qt/qt_mainwindow.cpp
+++ b/src/qt/qt_mainwindow.cpp
@@ -96,8 +96,17 @@ extern int qt_nvr_save(void);
#include "qt_util.hpp"
#if defined __unix__ && !defined __HAIKU__
-# ifdef WAYLAND
-# include "wl_mouse.hpp"
+# ifndef Q_OS_MACOS
+# include "evdev_keyboard.hpp"
+# endif
+# ifdef XKBCOMMON
+# include "xkbcommon_keyboard.hpp"
+# ifdef XKBCOMMON_X11
+# include "xkbcommon_x11_keyboard.hpp"
+# endif
+# ifdef WAYLAND
+# include "xkbcommon_wl_keyboard.hpp"
+# endif
# endif
# include
# include
@@ -106,6 +115,7 @@ extern int qt_nvr_save(void);
#endif
#ifdef Q_OS_MACOS
+# include "cocoa_keyboard.hpp"
// The namespace is required to avoid clashing typedefs; we only use this
// header for its #defines anyway.
namespace IOKit {
@@ -116,6 +126,7 @@ namespace IOKit {
#ifdef __HAIKU__
# include
# include
+# include "be_keyboard.hpp"
extern MainWindow *main_window;
@@ -569,7 +580,6 @@ MainWindow::MainWindow(QWidget *parent)
}
#ifdef Q_OS_MACOS
- ui->actionFullscreen->setShortcutVisibleInContextMenu(true);
ui->actionCtrl_Alt_Del->setShortcutVisibleInContextMenu(true);
ui->actionTake_screenshot->setShortcutVisibleInContextMenu(true);
#endif
@@ -648,6 +658,20 @@ MainWindow::MainWindow(QWidget *parent)
} else {
ui->actionCursor_Puck->setChecked(true);
}
+
+#ifdef XKBCOMMON
+# ifdef XKBCOMMON_X11
+ if (QApplication::platformName().contains("xcb"))
+ xkbcommon_x11_init();
+ else
+# endif
+# ifdef WAYLAND
+ if (QApplication::platformName().contains("wayland"))
+ xkbcommon_wl_init();
+ else
+# endif
+ {}
+#endif
}
void
@@ -733,7 +757,9 @@ MainWindow::initRendererMonitorSlot(int monitor_index)
secondaryRenderer->showMaximized();
}
secondaryRenderer->switchRenderer((RendererStack::Renderer) vid_api);
+ secondaryRenderer->setMouseTracking(true);
}
+ connect(this, &MainWindow::pollMouse, secondaryRenderer.get(), &RendererStack::mousePoll, Qt::DirectConnection);
}
}
@@ -880,652 +906,76 @@ MainWindow::on_actionSettings_triggered()
plat_pause(currentPause);
}
-#if defined(__unix__) && !defined(__HAIKU__)
-std::array x11_to_xt_base {
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x01,
- 0x02,
- 0x03,
- 0x04,
- 0x05,
- 0x06,
- 0x07,
- 0x08,
- 0x09,
- 0x0A,
- 0x0B,
- 0x0C,
- 0x0D,
- 0x0E,
- 0x0F,
- 0x10,
- 0x11,
- 0x12,
- 0x13,
- 0x14,
- 0x15,
- 0x16,
- 0x17,
- 0x18,
- 0x19,
- 0x1A,
- 0x1B,
- 0x1C,
- 0x1D,
- 0x1E,
- 0x1F,
- 0x20,
- 0x21,
- 0x22,
- 0x23,
- 0x24,
- 0x25,
- 0x26,
- 0x27,
- 0x28,
- 0x29,
- 0x2A,
- 0x2B,
- 0x2C,
- 0x2D,
- 0x2E,
- 0x2F,
- 0x30,
- 0x31,
- 0x32,
- 0x33,
- 0x34,
- 0x35,
- 0x36,
- 0x37,
- 0x38,
- 0x39,
- 0x3A,
- 0x3B,
- 0x3C,
- 0x3D,
- 0x3E,
- 0x3F,
- 0x40,
- 0x41,
- 0x42,
- 0x43,
- 0x44,
- 0x45,
- 0x46,
- 0x47,
- 0x48,
- 0x49,
- 0x4A,
- 0x4B,
- 0x4C,
- 0x4D,
- 0x4E,
- 0x4F,
- 0x50,
- 0x51,
- 0x52,
- 0x53,
- 0x54,
- 0x55,
- 0x56,
- 0x57,
- 0x58,
- 0x147,
- 0x148,
- 0x149,
- 0,
- 0x14B,
- 0,
- 0x14D,
- 0x14F,
- 0x150,
- 0x151,
- 0x152,
- 0x153,
- 0x11C,
- 0x11D,
- 0, // Pause/Break key.
- 0x137,
- 0x135,
- 0x138,
- 0, // Ditto as above comment.
- 0x15B,
- 0x15C,
- 0x15D,
-};
-
-std::array x11_to_xt_2 {
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x01,
- 0x02,
- 0x03,
- 0x04,
- 0x05,
- 0x06,
- 0x07,
- 0x08,
- 0x09,
- 0x0A,
- 0x0B,
- 0x0C,
- 0x0D,
- 0x0E,
- 0x0F,
- 0x10,
- 0x11,
- 0x12,
- 0x13,
- 0x14,
- 0x15,
- 0x16,
- 0x17,
- 0x18,
- 0x19,
- 0x1A,
- 0x1B,
- 0x1C,
- 0x1D,
- 0x1E,
- 0x1F,
- 0x20,
- 0x21,
- 0x22,
- 0x23,
- 0x24,
- 0x25,
- 0x26,
- 0x27,
- 0x28,
- 0x29,
- 0x2A,
- 0x2B,
- 0x2C,
- 0x2D,
- 0x2E,
- 0x2F,
- 0x30,
- 0x31,
- 0x32,
- 0x33,
- 0x34,
- 0x35,
- 0x36,
- 0x37,
- 0x38,
- 0x39,
- 0x3A,
- 0x3B,
- 0x3C,
- 0x3D,
- 0x3E,
- 0x3F,
- 0x40,
- 0x41,
- 0x42,
- 0x43,
- 0x44,
- 0x45,
- 0x46,
- 0x47,
- 0x48,
- 0x49,
- 0x4A,
- 0x4B,
- 0x4C,
- 0x4D,
- 0x4E,
- 0x4F,
- 0x50,
- 0x51,
- 0x52,
- 0x53,
- 0x138,
- 0x55,
- 0x56,
- 0x57,
- 0x58,
- 0x56,
- 0x70,
- 0x7B,
- 0x7D,
- 0x2B,
- 0x7E,
- 0,
- 0x11C,
- 0x11D,
- 0x135,
- 0x137,
- 0x138,
- 0,
- 0x147,
- 0x148,
- 0x149,
- 0x14B,
- 0x14D,
- 0x14F,
- 0x150,
- 0x151,
- 0x152,
- 0x153,
- 0,
- 0, /* Mute */
- 0, /* Volume Down */
- 0, /* Volume Up */
- 0, /* Power Off */
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x70,
- 0x7B,
- 0x73,
- 0x15B,
- 0x15C,
- 0x15D
-};
-
-std::array x11_to_xt_vnc {
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0x1D,
- 0x11D,
- 0x2A,
- 0x36,
- 0,
- 0,
- 0x38,
- 0x138,
- 0x39,
- 0x0B,
- 0x02,
- 0x03,
- 0x04,
- 0x05,
- 0x06,
- 0x07,
- 0x08,
- 0x09,
- 0x0A,
- 0x0C,
- 0x0D,
- 0x1A,
- 0x1B,
- 0x27,
- 0x28,
- 0x29,
- 0x33,
- 0x34,
- 0x35,
- 0x2B,
- 0x1E,
- 0x30,
- 0x2E,
- 0x20,
- 0x12,
- 0x21,
- 0x22,
- 0x23,
- 0x17,
- 0x24,
- 0x25,
- 0x26,
- 0x32,
- 0x31,
- 0x18,
- 0x19,
- 0x10,
- 0x13,
- 0x1F,
- 0x14,
- 0x16,
- 0x2F,
- 0x11,
- 0x2D,
- 0x15,
- 0x2C,
- 0x0E,
- 0x1C,
- 0x0F,
- 0x01,
- 0x153,
- 0x147,
- 0x14F,
- 0x149,
- 0x151,
- 0x148,
- 0x150,
- 0x14B,
- 0x14D,
-};
-#endif
-
-#ifdef Q_OS_MACOS
-std::array darwin_to_xt {
- 0x1E,
- 0x1F,
- 0x20,
- 0x21,
- 0x23,
- 0x22,
- 0x2C,
- 0x2D,
- 0x2E,
- 0x2F,
- 0x2B,
- 0x30,
- 0x10,
- 0x11,
- 0x12,
- 0x13,
- 0x15,
- 0x14,
- 0x02,
- 0x03,
- 0x04,
- 0x05,
- 0x07,
- 0x06,
- 0x0D,
- 0x0A,
- 0x08,
- 0x0C,
- 0x09,
- 0x0B,
- 0x1B,
- 0x18,
- 0x16,
- 0x1A,
- 0x17,
- 0x19,
- 0x1C,
- 0x26,
- 0x24,
- 0x28,
- 0x25,
- 0x27,
- 0x2B,
- 0x33,
- 0x35,
- 0x31,
- 0x32,
- 0x34,
- 0x0F,
- 0x39,
- 0x29,
- 0x0E,
- 0x11C,
- 0x01,
- 0x15C,
- 0x15B,
- 0x2A,
- 0x3A,
- 0x38,
- 0x1D,
- 0x36,
- 0x138,
- 0x11D,
- 0x15C,
- 0,
- 0x53,
- 0,
- 0x37,
- 0,
- 0x4E,
- 0,
- 0x45,
- 0x130,
- 0x12E,
- 0x120,
- 0x135,
- 0x11C,
- 0,
- 0x4A,
- 0,
- 0,
- 0,
- 0x52,
- 0x4F,
- 0x50,
- 0x51,
- 0x4B,
- 0x4C,
- 0x4D,
- 0x47,
- 0,
- 0x48,
- 0x49,
- 0,
- 0,
- 0,
- 0x3F,
- 0x40,
- 0x41,
- 0x3D,
- 0x42,
- 0x43,
- 0,
- 0x57,
- 0,
- 0x137,
- 0,
- 0x46,
- 0,
- 0x44,
- 0x15D,
- 0x58,
- 0,
- 0, // Pause/Break key.
- 0x152,
- 0x147,
- 0x149,
- 0x153,
- 0x3E,
- 0x14F,
- 0x3C,
- 0x151,
- 0x3B,
- 0x14B,
- 0x14D,
- 0x150,
- 0x148,
- 0,
-};
-#endif
-
-#if defined(__unix__) && !defined(__HAIKU__)
-static std::unordered_map evdev_to_xt = {
- {96, 0x11C},
- { 97, 0x11D},
- { 98, 0x135},
- { 99, 0x71 },
- { 100, 0x138},
- { 101, 0x1C },
- { 102, 0x147},
- { 103, 0x148},
- { 104, 0x149},
- { 105, 0x14B},
- { 106, 0x14D},
- { 107, 0x14F},
- { 108, 0x150},
- { 109, 0x151},
- { 110, 0x152},
- { 111, 0x153}
-};
-#endif
-
-#ifdef __HAIKU__
-static std::unordered_map be_to_xt = {
- {0x01, 0x01 },
- { B_F1_KEY, 0x3B },
- { B_F2_KEY, 0x3C },
- { B_F3_KEY, 0x3D },
- { B_F4_KEY, 0x3E },
- { B_F5_KEY, 0x3F },
- { B_F6_KEY, 0x40 },
- { B_F7_KEY, 0x41 },
- { B_F8_KEY, 0x42 },
- { B_F9_KEY, 0x43 },
- { B_F10_KEY, 0x44 },
- { B_F11_KEY, 0x57 },
- { B_F12_KEY, 0x58 },
- { 0x11, 0x29 },
- { 0x12, 0x02 },
- { 0x13, 0x03 },
- { 0x14, 0x04 },
- { 0x15, 0x05 },
- { 0x16, 0x06 },
- { 0x17, 0x07 },
- { 0x18, 0x08 },
- { 0x19, 0x09 },
- { 0x1A, 0x0A },
- { 0x1B, 0x0B },
- { 0x1C, 0x0C },
- { 0x1D, 0x0D },
- { 0x1E, 0x0E },
- { 0x1F, 0x152},
- { 0x20, 0x147},
- { 0x21, 0x149},
- { 0x22, 0x45 },
- { 0x23, 0x135},
- { 0x24, 0x37 },
- { 0x25, 0x4A },
- { 0x26, 0x0F },
- { 0x27, 0x10 },
- { 0x28, 0x11 },
- { 0x29, 0x12 },
- { 0x2A, 0x13 },
- { 0x2B, 0x14 },
- { 0x2C, 0x15 },
- { 0x2D, 0x16 },
- { 0x2E, 0x17 },
- { 0x2F, 0x18 },
- { 0x30, 0x19 },
- { 0x31, 0x1A },
- { 0x32, 0x1B },
- { 0x33, 0x2B },
- { 0x34, 0x153},
- { 0x35, 0x14F},
- { 0x36, 0x151},
- { 0x37, 0x47 },
- { 0x38, 0x48 },
- { 0x39, 0x49 },
- { 0x3A, 0x4E },
- { 0x3B, 0x3A },
- { 0x3C, 0x1E },
- { 0x3D, 0x1F },
- { 0x3E, 0x20 },
- { 0x3F, 0x21 },
- { 0x40, 0x22 },
- { 0x41, 0x23 },
- { 0x42, 0x24 },
- { 0x43, 0x25 },
- { 0x44, 0x26 },
- { 0x45, 0x27 },
- { 0x46, 0x28 },
- { 0x47, 0x1C },
- { 0x48, 0x4B },
- { 0x49, 0x4C },
- { 0x4A, 0x4D },
- { 0x4B, 0x2A },
- { 0x4C, 0x2C },
- { 0x4D, 0x2D },
- { 0x4E, 0x2E },
- { 0x4F, 0x2F },
- { 0x50, 0x30 },
- { 0x51, 0x31 },
- { 0x52, 0x32 },
- { 0x53, 0x33 },
- { 0x54, 0x34 },
- { 0x55, 0x35 },
- { 0x56, 0x36 },
- { 0x57, 0x148},
- { 0x58, 0x51 },
- { 0x59, 0x50 },
- { 0x5A, 0x4F },
- { 0x5B, 0x11C},
- { 0x5C, 0x1D },
- { 0x5D, 0x38 },
- { 0x5E, 0x39 },
- { 0x5F, 0x138},
- { 0x60, 0x11D},
- { 0x61, 0x14B},
- { 0x62, 0x150},
- { 0x63, 0x14D},
- { 0x64, 0x52 },
- { 0x65, 0x53 },
-
- { 0x0e, 0x137},
- { 0x0f, 0x46 },
- { 0x66, 0x15B},
- { 0x67, 0x15C},
- { 0x68, 0x15D},
- { 0x69, 0x56 }
-};
-#endif
-
-#if defined(__unix__) && !defined(__HAIKU__)
-static std::array &selected_keycode = x11_to_xt_base;
-#endif
-
-uint16_t
-x11_keycode_to_keysym(uint32_t keycode)
+void
+MainWindow::processKeyboardInput(bool down, uint32_t keycode)
{
- uint16_t finalkeycode = 0;
-#if defined(Q_OS_WINDOWS)
- finalkeycode = (keycode & 0xFFFF);
+#if defined(Q_OS_WINDOWS) /* non-raw input */
+ keycode &= 0xffff;
#elif defined(Q_OS_MACOS)
- finalkeycode = darwin_to_xt[keycode];
+ keycode = (keycode < 127) ? cocoa_keycodes[keycode] : 0;
#elif defined(__HAIKU__)
- finalkeycode = be_to_xt[keycode];
+ keycode = be_keycodes[keycode];
#else
- static Display *x11display = nullptr;
- if (QApplication::platformName().contains("wayland")) {
- selected_keycode = x11_to_xt_2;
- } else if (QApplication::platformName().contains("eglfs")) {
- keycode -= 8;
- if (keycode <= 88)
- finalkeycode = keycode;
- else
- finalkeycode = evdev_to_xt[keycode];
- } else if (!x11display) {
- x11display = XOpenDisplay(nullptr);
- if (XKeysymToKeycode(x11display, XK_Home) == 110) {
- selected_keycode = x11_to_xt_2;
- } else if (XKeysymToKeycode(x11display, XK_Home) == 69) {
- selected_keycode = x11_to_xt_vnc;
- }
- }
- if (!QApplication::platformName().contains("eglfs"))
- finalkeycode = selected_keycode[keycode];
+# ifdef XKBCOMMON
+ if (xkbcommon_keymap)
+ keycode = xkbcommon_translate(keycode);
+ else
+# endif
+# ifdef EVDEV_KEYBOARD_HPP
+ keycode = evdev_translate(keycode - 8);
+# else
+ keycode = 0;
+# endif
#endif
- if (rctrl_is_lalt && finalkeycode == 0x11D) {
- finalkeycode = 0x38;
+
+ /* Apply special cases. */
+ switch (keycode) {
+ case 0x54: /* Alt + Print Screen (special case, i.e. evdev SELECTIVE_SCREENSHOT) */
+ /* Send Alt as well. */
+ if (down) {
+ keyboard_input(down, 0x38);
+ } else {
+ keyboard_input(down, keycode);
+ keycode = 0x38;
+ }
+ break;
+
+ case 0x10b: /* Microsoft scroll up normal */
+ case 0x18b: /* Microsoft scroll down normal */
+ /* This abuses make/break codes. Send them manually, only on press. */
+ if (down) {
+ keyboard_send(0xe0);
+ keyboard_send(keycode & 0xff);
+ }
+ return;
+
+ case 0x11d: /* Right Ctrl */
+ if (rctrl_is_lalt)
+ keycode = 0x38; /* map to Left Alt */
+ break;
+
+ case 0x137: /* Print Screen */
+ if (keyboard_recv(0x38) || keyboard_recv(0x138)) { /* Alt+ */
+ keycode = 0x54;
+ } else if (down) {
+ keyboard_input(down, 0x12a);
+ } else {
+ keyboard_input(down, keycode);
+ keycode = 0x12a;
+ }
+ break;
+
+ case 0x145: /* Pause */
+ if (keyboard_recv(0x1d) || keyboard_recv(0x11d)) { /* Ctrl+ */
+ keycode = 0x146;
+ } else {
+ keyboard_input(down, 0xe11d);
+ keycode &= 0x00ff;
+ }
+ break;
}
- return finalkeycode;
+
+ keyboard_input(down, keycode);
}
#ifdef Q_OS_MACOS
@@ -1543,6 +993,7 @@ static std::unordered_map mac_modifiers_to_xt = {
{ NX_DEVICE_ALPHASHIFT_STATELESS_MASK, 0x3A },
{ NX_DEVICERCTLKEYMASK, 0x11D},
};
+static bool mac_iso_swap = false;
void
MainWindow::processMacKeyboardInput(bool down, const QKeyEvent *event)
@@ -1583,11 +1034,62 @@ MainWindow::processMacKeyboardInput(bool down, const QKeyEvent *event)
// It's possible that other lock keys get delivered in this way, but
// standard Apple keyboards don't have them, so this is untested.
if (event->key() == Qt::Key_CapsLock) {
- keyboard_input(1, 0x3A);
- keyboard_input(0, 0x3A);
+ keyboard_input(1, 0x3a);
+ keyboard_input(0, 0x3a);
}
} else {
- keyboard_input(down, x11_keycode_to_keysym(event->nativeVirtualKey()));
+ /* Apple ISO keyboards are notorious for swapping ISO_Section and ANSI_Grave
+ on *some* layouts and/or models. While macOS can sort this mess out at
+ keymap level, it still provides applications with unfiltered, ambiguous
+ keycodes, so we have to disambiguate them by making some bold assumptions
+ about the user's keyboard layout based on the OS-provided key mappings. */
+ auto nvk = event->nativeVirtualKey();
+ if ((nvk == 0x0a) || (nvk == 0x32)) {
+ /* Flaws:
+ - Layouts with `~ on ISO_Section are partially detected due to a conflict with ANSI
+ - Czech and Slovak are not detected as they have <> ANSI_Grave and \| ISO_Section (differing from PC actually)
+ - Italian is partially detected due to \| conflicting with Brazilian
+ - Romanian third level ANSI_Grave is unknown
+ - Russian clusters <>, plusminus and paragraph into a four-level ANSI_Grave, with the aforementioned `~ on ISO_Section */
+ auto key = event->key();
+ if ((nvk == 0x32) && ( /* system reports ANSI_Grave for ISO_Section keys: */
+ (key == Qt::Key_Less) || (key == Qt::Key_Greater) || /* Croatian, French, German, Icelandic, Italian, Norwegian, Portuguese, Spanish, Spanish Latin America, Turkish Q */
+ (key == Qt::Key_Ugrave) || /* French Canadian */
+ (key == Qt::Key_Icircumflex) || /* Romanian */
+ (key == Qt::Key_Iacute) || /* Hungarian */
+ (key == Qt::Key_BracketLeft) || (key == Qt::Key_BracketRight) || /* Russian upper two levels */
+ (key == Qt::Key_W) /* Turkish F */
+ ))
+ mac_iso_swap = true;
+ else if ((nvk == 0x0a) && ( /* system reports ISO_Section for ANSI_Grave keys: */
+ (key == Qt::Key_paragraph) || (key == Qt::Key_plusminus) || /* Arabic, British, Bulgarian, Danish shifted, Dutch, Greek, Hebrew, Hungarian shifted, International English, Norwegian shifted, Portuguese, Russian lower two levels, Swiss unshifted, Swedish unshifted, Turkish F */
+ (key == Qt::Key_At) || (key == Qt::Key_NumberSign) || /* Belgian, French */
+ (key == Qt::Key_Apostrophe) || /* Brazilian unshifted */
+ (key == Qt::Key_QuoteDbl) || /* Brazilian shifted, Turkish Q unshifted */
+ (key == Qt::Key_QuoteLeft) || /* Croatian (right quote unknown) */
+ (key == Qt::Key_Dollar) || /* Danish unshifted */
+ (key == Qt::Key_AsciiCircum) || (key == 0x1ffffff) || /* German unshifted (0x1ffffff according to one tester), Polish unshifted */
+ (key == Qt::Key_degree) || /* German shifted, Icelandic unshifted, Spanish Latin America shifted, Swiss shifted, Swedish shifted */
+ (key == Qt::Key_0) || /* Hungarian unshifted */
+ (key == Qt::Key_diaeresis) || /* Icelandic shifted */
+ (key == Qt::Key_acute) || /* Norwegian unshifted */
+ (key == Qt::Key_Asterisk) || /* Polish shifted */
+ (key == Qt::Key_masculine) || (key == Qt::Key_ordfeminine) || /* Spanish (masculine unconfirmed) */
+ (key == Qt::Key_Eacute) || /* Turkish Q shifted */
+ (key == Qt::Key_Slash) /* French Canadian unshifted, Ukrainian shifted */
+ ))
+ mac_iso_swap = true;
+#if 0
+ if (down) {
+ QMessageBox questionbox(QMessageBox::Icon::Information, QString("Mac key swap test"), QString("nativeVirtualKey 0x%1\nnativeScanCode 0x%2\nkey 0x%3\nmac_iso_swap %4").arg(nvk, 0, 16).arg(event->nativeScanCode(), 0, 16).arg(key, 0, 16).arg(mac_iso_swap ? "yes" : "no"), QMessageBox::Ok, this);
+ questionbox.exec();
+ }
+#endif
+ if (mac_iso_swap)
+ nvk = (nvk == 0x0a) ? 0x32 : 0x0a;
+ }
+
+ processKeyboardInput(down, nvk);
}
}
#endif
@@ -1731,33 +1233,21 @@ void
MainWindow::keyPressEvent(QKeyEvent *event)
{
if (send_keyboard_input && !(kbd_req_capture && !mouse_capture)) {
- // Windows keys in Qt have one-to-one mapping.
- if (event->key() == Qt::Key_Pause && !keyboard_recv(0x38) && !keyboard_recv(0x138)) {
- if ((keyboard_recv(0x1D) || keyboard_recv(0x11D))) {
- keyboard_input(1, 0x46);
- } else {
- keyboard_input(0, 0xE1);
- keyboard_input(0, 0x1D);
- keyboard_input(0, 0x45);
- keyboard_input(0, 0xE1);
- keyboard_input(1, 0x1D);
- keyboard_input(1, 0x45);
- }
- } else
#ifdef Q_OS_MACOS
- processMacKeyboardInput(true, event);
+ processMacKeyboardInput(true, event);
#else
- keyboard_input(1, x11_keycode_to_keysym(event->nativeScanCode()));
+ processKeyboardInput(true, event->nativeScanCode());
#endif
}
- if ((video_fullscreen > 0) && keyboard_isfsexit()) {
- ui->actionFullscreen->trigger();
- }
+ if (!fs_off_signal && (video_fullscreen > 0) && keyboard_isfsexit())
+ fs_off_signal = true;
- if (keyboard_ismsexit()) {
+ if (!fs_on_signal && (video_fullscreen == 0) && keyboard_isfsenter())
+ fs_on_signal = true;
+
+ if (keyboard_ismsexit())
plat_mouse_capture(0);
- }
if ((video_fullscreen > 0) && (keyboard_recv(0x1D) || keyboard_recv(0x11D))) {
if (keyboard_recv(0x57))
@@ -1789,13 +1279,24 @@ MainWindow::keyReleaseEvent(QKeyEvent *event)
plat_pause(dopause ^ 1);
}
}
+
+ if (fs_off_signal && (video_fullscreen > 0) && keyboard_isfsexit_down()) {
+ ui->actionFullscreen->trigger();
+ fs_off_signal = false;
+ }
+
+ if (fs_on_signal && (video_fullscreen == 0) && keyboard_isfsenter_down()) {
+ ui->actionFullscreen->trigger();
+ fs_on_signal = false;
+ }
+
if (!send_keyboard_input)
return;
#ifdef Q_OS_MACOS
processMacKeyboardInput(false, event);
#else
- keyboard_input(0, x11_keycode_to_keysym(event->nativeScanCode()));
+ processKeyboardInput(false, event->nativeScanCode());
#endif
}
diff --git a/src/qt/qt_mainwindow.hpp b/src/qt/qt_mainwindow.hpp
index bf4a30f1d..79b5d9dda 100644
--- a/src/qt/qt_mainwindow.hpp
+++ b/src/qt/qt_mainwindow.hpp
@@ -155,6 +155,7 @@ private:
std::unique_ptr status;
std::shared_ptr mm;
+ void processKeyboardInput(bool down, uint32_t keycode);
#ifdef Q_OS_MACOS
uint32_t last_modifiers = 0;
void processMacKeyboardInput(bool down, const QKeyEvent *event);
@@ -166,6 +167,10 @@ private:
bool resizableonce = false;
bool vnc_enabled = false;
+ /* Full screen ON and OFF signals */
+ bool fs_on_signal = false;
+ bool fs_off_signal = false;
+
friend class SpecifyDimensions;
friend class ProgSettings;
friend class RendererCommon;
diff --git a/src/qt/qt_mainwindow.ui b/src/qt/qt_mainwindow.ui
index 5cfaea14c..b61a974c6 100644
--- a/src/qt/qt_mainwindow.ui
+++ b/src/qt/qt_mainwindow.ui
@@ -362,12 +362,6 @@
&Fullscreen
-
- Ctrl+Alt+PgUp
-
-
- false
-
diff --git a/src/qt/qt_mediamenu.cpp b/src/qt/qt_mediamenu.cpp
index e898ea9d9..3ab5f9b60 100644
--- a/src/qt/qt_mediamenu.cpp
+++ b/src/qt/qt_mediamenu.cpp
@@ -572,7 +572,8 @@ MediaMenu::cdromUpdateMenu(int i)
auto childs = menu->children();
auto *muteMenu = dynamic_cast(childs[cdromMutePos]);
- muteMenu->setChecked(cdrom[i].sound_on == 0);
+ muteMenu->setIcon(QApplication::style()->standardIcon((cdrom[i].sound_on == 0) ? QStyle::SP_MediaVolume : QStyle::SP_MediaVolumeMuted));
+ muteMenu->setText((cdrom[i].sound_on == 0) ? tr("&Unmute") : tr("&Mute"));
auto *imageMenu = dynamic_cast(childs[cdromImagePos]);
imageMenu->setEnabled(!name.isEmpty());
diff --git a/src/qt/qt_platform.cpp b/src/qt/qt_platform.cpp
index 695531d5c..1fa3b5637 100644
--- a/src/qt/qt_platform.cpp
+++ b/src/qt/qt_platform.cpp
@@ -597,6 +597,7 @@ ProgSettings::reloadStrings()
translatedstrings[IDS_2115] = QCoreApplication::translate("", "Unable to initialize Ghostscript").toStdWString();
translatedstrings[IDS_2063] = QCoreApplication::translate("", "Machine \"%hs\" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine.").toStdWString();
translatedstrings[IDS_2064] = QCoreApplication::translate("", "Video card \"%hs\" is not available due to missing ROMs in the roms/video directory. Switching to an available video card.").toStdWString();
+ translatedstrings[IDS_2163] = QCoreApplication::translate("", "Video card #2 \"%hs\" is not available due to missing ROMs in the roms/video directory. Disabling the second video card.").toStdWString();
translatedstrings[IDS_2129] = QCoreApplication::translate("", "Hardware not available").toStdWString();
translatedstrings[IDS_2143] = QCoreApplication::translate("", "Monitor in sleep mode").toStdWString();
translatedstrings[IDS_2121] = QCoreApplication::translate("", "No ROMs found").toStdWString();
diff --git a/src/qt/qt_rendererstack.cpp b/src/qt/qt_rendererstack.cpp
index 9ebd891c3..b5ae84d71 100644
--- a/src/qt/qt_rendererstack.cpp
+++ b/src/qt/qt_rendererstack.cpp
@@ -127,7 +127,7 @@ qt_mouse_capture(int on)
{
if (!on) {
mouse_capture = 0;
- QApplication::setOverrideCursor(Qt::ArrowCursor);
+ if (QApplication::overrideCursor()) QApplication::restoreOverrideCursor();
#ifdef __APPLE__
CGAssociateMouseAndMouseCursorPosition(true);
#endif
@@ -144,6 +144,20 @@ qt_mouse_capture(int on)
void
RendererStack::mousePoll()
{
+ if (m_monitor_index >= 1) {
+ if (mouse_mode >= 1) {
+ mouse_x_abs = mousedata.x_abs;
+ mouse_y_abs = mousedata.y_abs;
+ if (!mouse_tablet_in_proximity) {
+ mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
+ }
+ if (mousedata.mouse_tablet_in_proximity) {
+ mouse_buttons = mousedata.mousebuttons;
+ }
+ }
+ return;
+ }
+
#ifdef Q_OS_WINDOWS
if (mouse_mode == 0) {
mouse_x_abs = mousedata.x_abs;
@@ -151,6 +165,7 @@ RendererStack::mousePoll()
return;
}
#endif
+
#ifndef __APPLE__
mouse_x = mousedata.deltax;
mouse_y = mousedata.deltay;
@@ -180,7 +195,7 @@ int ignoreNextMouseEvent = 1;
void
RendererStack::mouseReleaseEvent(QMouseEvent *event)
{
- if (this->geometry().contains(event->pos()) && event->button() == Qt::LeftButton && !mouse_capture && (isMouseDown & 1) && (mouse_get_buttons() != 0) && mouse_mode == 0) {
+ if (this->geometry().contains(event->pos()) && (event->button() == Qt::LeftButton) && !mouse_capture && (isMouseDown & 1) && (kbd_req_capture || (mouse_get_buttons() != 0)) && (mouse_mode == 0)) {
plat_mouse_capture(1);
this->setCursor(Qt::BlankCursor);
if (!ignoreNextMouseEvent)
@@ -270,8 +285,9 @@ void
RendererStack::leaveEvent(QEvent *event)
{
mousedata.mouse_tablet_in_proximity = 0;
- if (mouse_mode == 1)
- QApplication::setOverrideCursor(Qt::ArrowCursor);
+
+ if (mouse_mode == 1 && QApplication::overrideCursor())
+ QApplication::restoreOverrideCursor();
if (QApplication::platformName().contains("wayland")) {
event->accept();
return;
diff --git a/src/qt/qt_winrawinputfilter.cpp b/src/qt/qt_winrawinputfilter.cpp
index 522130432..3703f47d8 100644
--- a/src/qt/qt_winrawinputfilter.cpp
+++ b/src/qt/qt_winrawinputfilter.cpp
@@ -45,9 +45,11 @@
#include
#include
+#include "qt_rendererstack.hpp"
+
extern "C" void win_joystick_handle(PRAWINPUT);
std::unique_ptr
-WindowsRawInputFilter::Register(QMainWindow *window)
+WindowsRawInputFilter::Register(MainWindow *window)
{
HWND wnd = (HWND) window->winId();
@@ -70,7 +72,7 @@ WindowsRawInputFilter::Register(QMainWindow *window)
return inputfilter;
}
-WindowsRawInputFilter::WindowsRawInputFilter(QMainWindow *window)
+WindowsRawInputFilter::WindowsRawInputFilter(MainWindow *window)
{
this->window = window;
@@ -108,8 +110,18 @@ WindowsRawInputFilter::nativeEventFilter(const QByteArray &eventType, void *mess
MSG *msg = static_cast(message);
if (msg->message == WM_INPUT) {
+
if (window->isActiveWindow() && menus_open == 0)
handle_input((HRAWINPUT) msg->lParam);
+ else
+ {
+ for (auto &w : window->renderers) {
+ if (w && w->isActiveWindow()) {
+ handle_input((HRAWINPUT) msg->lParam);
+ break;
+ }
+ }
+ }
return true;
}
@@ -186,13 +198,13 @@ WindowsRawInputFilter::keyboard_handle(PRAWINPUT raw)
We use scan code 0xFFFF to mean a mapping that
has a prefix other than E0 and that is not E1 1D,
which is, for our purposes, invalid. */
- if ((scancode == 0x00F) && !(rawKB.Flags & RI_KEY_BREAK) && (recv_lalt || recv_ralt) && !mouse_capture) {
+ if ((scancode == 0x00f) && !(rawKB.Flags & RI_KEY_BREAK) && (recv_lalt || recv_ralt) && (!kbd_req_capture || mouse_capture)) {
/* We received a TAB while ALT was pressed, while the mouse
- is not captured, suppress the TAB and send an ALT key up. */
+ is not captured, suppress the TAB and send an ALT key up. */
if (recv_lalt) {
keyboard_input(0, 0x038);
/* Extra key press and release so the guest is not stuck in the
- menu bar. */
+ menu bar. */
keyboard_input(1, 0x038);
keyboard_input(0, 0x038);
recv_lalt = 0;
@@ -200,19 +212,19 @@ WindowsRawInputFilter::keyboard_handle(PRAWINPUT raw)
if (recv_ralt) {
keyboard_input(0, 0x138);
/* Extra key press and release so the guest is not stuck in the
- menu bar. */
+ menu bar. */
keyboard_input(1, 0x138);
keyboard_input(0, 0x138);
recv_ralt = 0;
}
- } else if (((scancode == 0x038) || (scancode == 0x138)) && !(rawKB.Flags & RI_KEY_BREAK) && recv_tab && !mouse_capture) {
+ } else if (((scancode == 0x038) || (scancode == 0x138)) && !(rawKB.Flags & RI_KEY_BREAK) && recv_tab && (!kbd_req_capture || mouse_capture)) {
/* We received an ALT while TAB was pressed, while the mouse
- is not captured, suppress the ALT and send a TAB key up. */
- keyboard_input(0, 0x00F);
+ is not captured, suppress the ALT and send a TAB key up. */
+ keyboard_input(0, 0x00f);
recv_tab = 0;
} else {
switch (scancode) {
- case 0x00F:
+ case 0x00f:
recv_tab = !(rawKB.Flags & RI_KEY_BREAK);
break;
case 0x038:
@@ -225,7 +237,7 @@ WindowsRawInputFilter::keyboard_handle(PRAWINPUT raw)
/* Translate right CTRL to left ALT if the user has so
chosen. */
- if ((scancode == 0x11D) && rctrl_is_lalt)
+ if ((scancode == 0x11d) && rctrl_is_lalt)
scancode = 0x038;
/* Normal scan code pass through, pass it through as is if
diff --git a/src/qt/qt_winrawinputfilter.hpp b/src/qt/qt_winrawinputfilter.hpp
index b03f6783e..81b2c0d48 100644
--- a/src/qt/qt_winrawinputfilter.hpp
+++ b/src/qt/qt_winrawinputfilter.hpp
@@ -41,6 +41,8 @@
#include
+#include "qt_mainwindow.hpp"
+
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
# define result_t qintptr
#else
@@ -51,7 +53,7 @@ class WindowsRawInputFilter : public QObject, public QAbstractNativeEventFilter
Q_OBJECT
public:
- static std::unique_ptr Register(QMainWindow *window);
+ static std::unique_ptr Register(MainWindow *window);
bool nativeEventFilter(const QByteArray &eventType, void *message, result_t *result) override;
@@ -61,7 +63,7 @@ public slots:
void mousePoll();
private:
- QMainWindow *window;
+ MainWindow *window;
uint16_t scancode_map[768];
int buttons = 0;
int dx = 0;
@@ -69,7 +71,7 @@ private:
int dwheel = 0;
int menus_open = 0;
- WindowsRawInputFilter(QMainWindow *window);
+ WindowsRawInputFilter(MainWindow *window);
void handle_input(HRAWINPUT input);
void keyboard_handle(PRAWINPUT raw);
diff --git a/src/qt/xkbcommon_keyboard.cpp b/src/qt/xkbcommon_keyboard.cpp
new file mode 100644
index 000000000..e2e51e7cf
--- /dev/null
+++ b/src/qt/xkbcommon_keyboard.cpp
@@ -0,0 +1,234 @@
+/*
+ * 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.
+ *
+ * xkbcommon keyboard input module.
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+extern "C" {
+#include
+};
+
+#include
+#include
+#include "evdev_keyboard.hpp"
+
+#define IS_DEC_DIGIT(c) (((c) >= '0') && ((c) <= '9'))
+#define IS_HEX_DIGIT(c) (IS_DEC_DIGIT(c) || (((c) >= 'A') && ((c) <= 'F')) || (((c) >= 'a') && ((c) <= 'f')))
+
+static std::unordered_map xkb_keycodes = {
+ {"ESC", 0x01},
+ {"AE01", 0x02},
+ {"AE02", 0x03},
+ {"AE03", 0x04},
+ {"AE04", 0x05},
+ {"AE05", 0x06},
+ {"AE06", 0x07},
+ {"AE07", 0x08},
+ {"AE08", 0x09},
+ {"AE09", 0x0a},
+ {"AE10", 0x0b},
+ {"AE11", 0x0c},
+ {"AE12", 0x0d},
+ {"BKSP", 0x0e},
+
+ {"TAB", 0x0f},
+ {"AD01", 0x10},
+ {"AD02", 0x11},
+ {"AD03", 0x12},
+ {"AD04", 0x13},
+ {"AD05", 0x14},
+ {"AD06", 0x15},
+ {"AD07", 0x16},
+ {"AD08", 0x17},
+ {"AD09", 0x18},
+ {"AD10", 0x19},
+ {"AD11", 0x1a},
+ {"AD12", 0x1b},
+ {"RTRN", 0x1c},
+ {"LNFD", 0x1c}, /* linefeed => Enter */
+
+ {"LCTL", 0x1d},
+ {"AC01", 0x1e},
+ {"AC02", 0x1f},
+ {"AC03", 0x20},
+ {"AC04", 0x21},
+ {"AC05", 0x22},
+ {"AC06", 0x23},
+ {"AC07", 0x24},
+ {"AC08", 0x25},
+ {"AC09", 0x26},
+ {"AC10", 0x27},
+ {"AC11", 0x28},
+
+ {"TLDE", 0x29},
+ {"LFSH", 0x2a},
+ {"BKSL", 0x2b},
+ {"AB01", 0x2c},
+ {"AB02", 0x2d},
+ {"AB03", 0x2e},
+ {"AB04", 0x2f},
+ {"AB05", 0x30},
+ {"AB06", 0x31},
+ {"AB07", 0x32},
+ {"AB08", 0x33},
+ {"AB09", 0x34},
+ {"AB10", 0x35},
+ {"RTSH", 0x36},
+
+ {"KPMU", 0x37},
+ {"LALT", 0x38},
+ {"SPCE", 0x39},
+ {"CAPS", 0x3a},
+ {"FK01", 0x3b},
+ {"FK02", 0x3c},
+ {"FK03", 0x3d},
+ {"FK04", 0x3e},
+ {"FK05", 0x3f},
+ {"FK06", 0x40},
+ {"FK07", 0x41},
+ {"FK08", 0x42},
+ {"FK09", 0x43},
+ {"FK10", 0x44},
+
+ {"NMLK", 0x45},
+ {"SCLK", 0x46},
+ {"FK14", 0x46}, /* F14 => Scroll Lock (for Apple keyboards) */
+ {"KP7", 0x47},
+ {"KP8", 0x48},
+ {"KP9", 0x49},
+ {"KPSU", 0x4a},
+ {"KP4", 0x4b},
+ {"KP5", 0x4c},
+ {"KP6", 0x4d},
+ {"KPAD", 0x4e},
+ {"KP1", 0x4f},
+ {"KP2", 0x50},
+ {"KP3", 0x51},
+ {"KP0", 0x52},
+ {"KPDL", 0x53},
+
+ {"LSGT", 0x56},
+ {"FK11", 0x57},
+ {"FK12", 0x58},
+ {"FK16", 0x5d}, /* F16 => F13 */
+ {"FK17", 0x5e}, /* F17 => F14 */
+ {"FK18", 0x5f}, /* F18 => F15 */
+
+ /* Japanese keys. */
+ {"JPCM", 0x5c}, /* Num, */
+ {"KPDC", 0x5c},
+ {"HKTG", 0x70}, /* hiragana-katakana toggle */
+ {"AB11", 0x73}, /* \_ and Brazilian /? */
+ {"HZTG", 0x76}, /* hankaku-zenkaku toggle */
+ {"HIRA", 0x77},
+ {"KATA", 0x78},
+ {"HENK", 0x79},
+ {"KANA", 0x79}, /* kana => henkan (for Apple keyboards) */
+ {"MUHE", 0x7b},
+ {"EISU", 0x7b}, /* eisu => muhenkan (for Apple keyboards) */
+ {"AE13", 0x7d}, /* \| */
+ {"KPPT", 0x7e}, /* Brazilian Num. */
+ {"I06", 0x7e}, /* alias of KPPT on keycodes/xfree86 (i.e. X11 forwarding) */
+
+ /* Korean keys. */
+ {"HJCV", 0xf1}, /* hancha toggle */
+ {"HNGL", 0xf2}, /* latin toggle */
+
+ {"KPEN", 0x11c},
+ {"RCTL", 0x11d},
+ {"KPDV", 0x135},
+ {"PRSC", 0x137},
+ {"SYRQ", 0x137},
+ {"FK13", 0x137}, /* F13 => SysRq (for Apple keyboards) */
+ {"RALT", 0x138},
+ {"ALGR", 0x138},
+ {"LVL3", 0x138}, /* observed on TigerVNC with AltGr-enabled layout */
+ {"PAUS", 0x145},
+ {"FK15", 0x145}, /* F15 => Pause (for Apple keyboards) */
+ {"BRK", 0x145},
+ {"HOME", 0x147},
+ {"UP", 0x148},
+ {"PGUP", 0x149},
+ {"LEFT", 0x14b},
+ {"RGHT", 0x14d},
+ {"END", 0x14f},
+ {"DOWN", 0x150},
+ {"PGDN", 0x151},
+ {"INS", 0x152},
+ {"DELE", 0x153},
+
+ {"LWIN", 0x15b},
+ {"LMTA", 0x15b},
+ {"RWIN", 0x15c},
+ {"RMTA", 0x15c},
+ {"MENU", 0x15d},
+ {"COMP", 0x15d}, /* Compose as Menu */
+
+ /* Multimedia keys. Same notes as evdev_keyboard apply here. */
+ {"KPEQ", 0x59}, /* Num= */
+ {"FRNT", 0x101}, /* # Logitech Task Select */
+ {"UNDO", 0x108}, /* # */
+ {"PAST", 0x10a}, /* # Paste */
+ {"FIND", 0x112}, /* # Logitech */
+ {"CUT", 0x117}, /* # */
+ {"COPY", 0x118}, /* # */
+ {"MUTE", 0x120},
+ {"VOL-", 0x12e},
+ {"VOL+", 0x130},
+ {"HELP", 0x13b},
+ {"OPEN", 0x13f},
+ {"POWR", 0x15e},
+ {"STOP", 0x168},
+};
+struct xkb_keymap *xkbcommon_keymap = nullptr;
+
+void
+xkbcommon_init(struct xkb_keymap *keymap)
+{
+ if (keymap)
+ xkbcommon_keymap = keymap;
+}
+
+void
+xkbcommon_close()
+{
+ xkbcommon_keymap = nullptr;
+}
+
+uint16_t
+xkbcommon_translate(uint32_t keycode)
+{
+ const char *key_name = xkb_keymap_key_get_name(xkbcommon_keymap, keycode);
+
+ /* If XKB doesn't know the key name for this keycode, assume an unnamed Ixxx key.
+ This is useful for older XKB versions with an incomplete evdev keycode map. */
+ auto key_name_s = key_name ? std::string(key_name) : QString("I%1").arg(keycode).toStdString();
+ auto ret = xkb_keycodes[key_name_s];
+
+ /* Observed with multimedia keys on Windows VcXsrv. */
+ if (!ret && (key_name_s.length() == 3) && (key_name_s[0] == 'I') && IS_HEX_DIGIT(key_name_s[1]) && IS_HEX_DIGIT(key_name_s[2]))
+ ret = 0x100 | stoi(key_name_s.substr(1), nullptr, 16);
+
+ /* Translate unnamed evdev-specific keycodes. */
+ if (!ret && (key_name_s.length() >= 2) && (key_name_s[0] == 'I') && IS_DEC_DIGIT(key_name_s[1]))
+ ret = evdev_translate(stoi(key_name_s.substr(1)) - 8);
+
+ if (!ret)
+ qWarning() << "XKB Keyboard: Unknown key" << QString::number(keycode, 16) << QString::fromStdString(key_name_s);
+#if 0
+ else
+ qInfo() << "XKB Keyboard: Key" << QString::number(keycode, 16) << QString::fromStdString(key_name_s) << "scancode" << QString::number(ret, 16);
+#endif
+
+ return ret;
+}
diff --git a/src/qt/xkbcommon_keyboard.hpp b/src/qt/xkbcommon_keyboard.hpp
new file mode 100644
index 000000000..c3b28eeec
--- /dev/null
+++ b/src/qt/xkbcommon_keyboard.hpp
@@ -0,0 +1,20 @@
+/*
+ * 86Box A hypervisor and IBM PC system emulator that specializes in
+ * running old operating systems and software designed for IBM
+ * PC systems and compatibles from 1981 through fairly recent
+ * system designs based on the PCI bus.
+ *
+ * This file is part of the 86Box distribution.
+ *
+ * Definitions for xkbcommon keyboard input module.
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+extern void *xkbcommon_keymap;
+void xkbcommon_init(struct xkb_keymap *keymap);
+void xkbcommon_close();
+uint16_t xkbcommon_translate(uint32_t keycode);
diff --git a/src/qt/xkbcommon_wl_keyboard.cpp b/src/qt/xkbcommon_wl_keyboard.cpp
new file mode 100644
index 000000000..9d2576ab1
--- /dev/null
+++ b/src/qt/xkbcommon_wl_keyboard.cpp
@@ -0,0 +1,241 @@
+/*
+ * 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.
+ *
+ * xkbcommon Wayland keyboard input module.
+ *
+ * Heavily inspired by libxkbcommon interactive-wayland.c
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+extern "C" {
+#include
+#include
+#include
+#include <86box/86box.h>
+};
+#include "xkbcommon_keyboard.hpp"
+#include
+#include
+
+#include
+#include
+#include
+
+typedef struct {
+ struct wl_seat *wl_seat;
+ struct wl_keyboard *wl_kbd;
+ uint32_t version;
+
+ struct xkb_keymap *keymap;
+
+ struct wl_list link;
+} seat_t;
+
+static bool wl_init_ok = false;
+static struct wl_list seats;
+static struct xkb_context *ctx;
+
+static void
+xkbcommon_wl_set_keymap()
+{
+ /* Grab keymap from the first seat with one. */
+ seat_t *seat, *tmp;
+ wl_list_for_each_safe(seat, tmp, &seats, link) {
+ if (seat->keymap) {
+ xkbcommon_init(seat->keymap);
+ return;
+ }
+ }
+ xkbcommon_close(); /* none found */
+}
+
+static void
+kbd_keymap(void *data, struct wl_keyboard *wl_kbd, uint32_t format,
+ int fd, uint32_t size)
+{
+ seat_t *seat = (seat_t *) data;
+
+ char *buf = (char *) mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
+ if (!buf) {
+ qWarning() << "XKB Keyboard: Failed to mmap keymap with error" << errno;
+ return;
+ }
+
+ if (seat->keymap) {
+ struct xkb_keymap *keymap = seat->keymap;
+ seat->keymap = NULL;
+ xkbcommon_wl_set_keymap();
+ xkb_keymap_unref(keymap);
+ }
+
+ seat->keymap = xkb_keymap_new_from_buffer(ctx, buf, size - 1,
+ XKB_KEYMAP_FORMAT_TEXT_V1,
+ XKB_KEYMAP_COMPILE_NO_FLAGS);
+ munmap(buf, size);
+ close(fd);
+ if (!seat->keymap)
+ qWarning() << "XKB Keyboard: Keymap compilation failed";
+
+ xkbcommon_wl_set_keymap();
+}
+
+static void
+kbd_enter(void *data, struct wl_keyboard *wl_kbd, uint32_t serial,
+ struct wl_surface *surf, struct wl_array *keys)
+{
+}
+
+static void
+kbd_leave(void *data, struct wl_keyboard *wl_kbd, uint32_t serial,
+ struct wl_surface *surf)
+{
+}
+
+static void
+kbd_key(void *data, struct wl_keyboard *wl_kbd, uint32_t serial, uint32_t time,
+ uint32_t key, uint32_t state)
+{
+}
+
+static void
+kbd_modifiers(void *data, struct wl_keyboard *wl_kbd, uint32_t serial,
+ uint32_t mods_depressed, uint32_t mods_latched,
+ uint32_t mods_locked, uint32_t group)
+{
+}
+
+static void
+kbd_repeat_info(void *data, struct wl_keyboard *wl_kbd, int32_t rate,
+ int32_t delay)
+{
+}
+
+static const struct wl_keyboard_listener kbd_listener = {
+ kbd_keymap,
+ kbd_enter,
+ kbd_leave,
+ kbd_key,
+ kbd_modifiers,
+ kbd_repeat_info
+};
+
+static void
+seat_capabilities(void *data, struct wl_seat *wl_seat, uint32_t caps)
+{
+ seat_t *seat = (seat_t *) data;
+
+ if (!seat->wl_kbd && (caps & WL_SEAT_CAPABILITY_KEYBOARD)) {
+ seat->wl_kbd = wl_seat_get_keyboard(seat->wl_seat);
+ wl_keyboard_add_listener(seat->wl_kbd, &kbd_listener, seat);
+ } else if (seat->wl_kbd && !(caps & WL_SEAT_CAPABILITY_KEYBOARD)) {
+ if (seat->version >= WL_SEAT_RELEASE_SINCE_VERSION)
+ wl_keyboard_release(seat->wl_kbd);
+ else
+ wl_keyboard_destroy(seat->wl_kbd);
+
+ struct xkb_keymap *keymap = seat->keymap;
+ seat->keymap = NULL;
+ xkbcommon_wl_set_keymap();
+ xkb_keymap_unref(keymap);
+
+ seat->wl_kbd = NULL;
+ }
+}
+
+static void
+seat_name(void *data, struct wl_seat *wl_seat, const char *name)
+{
+}
+
+static const struct wl_seat_listener seat_listener = {
+ seat_capabilities,
+ seat_name
+};
+
+static void
+display_handle_global(void *data, struct wl_registry *wl_registry, uint32_t id,
+ const char *interface, uint32_t version)
+{
+ if (!strcmp(interface, "wl_seat")) {
+ seat_t *seat = (seat_t *) malloc(sizeof(seat_t));
+ memset(seat, 0, sizeof(seat_t));
+
+ seat->wl_seat = (wl_seat *) wl_registry_bind(wl_registry, id, &wl_seat_interface, MIN(version, 5));
+ wl_seat_add_listener(seat->wl_seat, &seat_listener, seat);
+ wl_list_insert(&seats, &seat->link);
+ }
+}
+
+static void
+display_global_remove(void *data, struct wl_registry *wl_registry, uint32_t id)
+{
+ xkbcommon_close();
+
+ seat_t *seat, *tmp;
+ wl_list_for_each_safe(seat, tmp, &seats, link) {
+ if (seat->wl_kbd) {
+ if (seat->version >= WL_SEAT_RELEASE_SINCE_VERSION)
+ wl_keyboard_release(seat->wl_kbd);
+ else
+ wl_keyboard_destroy(seat->wl_kbd);
+
+ xkb_keymap_unref(seat->keymap);
+ }
+
+ if (seat->version >= WL_SEAT_RELEASE_SINCE_VERSION)
+ wl_seat_release(seat->wl_seat);
+ else
+ wl_seat_destroy(seat->wl_seat);
+
+ wl_list_remove(&seat->link);
+ free(seat);
+ }
+}
+
+static const struct wl_registry_listener registry_listener = {
+ display_handle_global,
+ display_global_remove
+};
+
+void
+xkbcommon_wl_init()
+{
+ if (wl_init_ok)
+ return;
+
+ wl_list_init(&seats);
+
+ ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
+ if (!ctx) {
+ qWarning() << "XKB Keyboard: XKB context creation failed";
+ return;
+ }
+
+ wl_display *display = (wl_display *) QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("wl_display");
+ if (display) {
+ auto registry = wl_display_get_registry(display);
+ if (registry) {
+ wl_registry_add_listener(registry, ®istry_listener, nullptr);
+ wl_display_roundtrip(display);
+ wl_display_roundtrip(display);
+ } else {
+ goto err_ctx;
+ }
+ } else {
+ goto err_ctx;
+ }
+ wl_init_ok = true;
+ return;
+
+err_ctx:
+ xkb_context_unref(ctx);
+}
diff --git a/src/qt/xkbcommon_wl_keyboard.hpp b/src/qt/xkbcommon_wl_keyboard.hpp
new file mode 100644
index 000000000..a70cb9e9b
--- /dev/null
+++ b/src/qt/xkbcommon_wl_keyboard.hpp
@@ -0,0 +1,17 @@
+/*
+ * 86Box A hypervisor and IBM PC system emulator that specializes in
+ * running old operating systems and software designed for IBM
+ * PC systems and compatibles from 1981 through fairly recent
+ * system designs based on the PCI bus.
+ *
+ * This file is part of the 86Box distribution.
+ *
+ * Definitions for xkbcommon Wayland keyboard input module.
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+void xkbcommon_wl_init();
diff --git a/src/qt/xkbcommon_x11_keyboard.cpp b/src/qt/xkbcommon_x11_keyboard.cpp
new file mode 100644
index 000000000..8e0167518
--- /dev/null
+++ b/src/qt/xkbcommon_x11_keyboard.cpp
@@ -0,0 +1,86 @@
+/*
+ * 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.
+ *
+ * xkbcommon-x11 keyboard input module.
+ *
+ * Heavily inspired by libxkbcommon interactive-x11.c
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+extern "C" {
+/* xkb.h has identifiers named "explicit", which is a C++ keyword now... */
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wkeyword-macro"
+#endif
+#define explicit explicit_
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+#include
+#undef explicit
+
+#include
+};
+#include "xkbcommon_keyboard.hpp"
+
+#include
+#include
+#include
+
+void
+xkbcommon_x11_init()
+{
+ xcb_connection_t *conn;
+ struct xkb_context *ctx;
+ int32_t core_kbd_device_id;
+ struct xkb_keymap *keymap;
+
+ conn = (xcb_connection_t *) QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("connection");
+ if (!conn) {
+ qWarning() << "XKB Keyboard: X server connection failed";
+ return;
+ }
+
+ int ret = xkb_x11_setup_xkb_extension(conn,
+ XKB_X11_MIN_MAJOR_XKB_VERSION, XKB_X11_MIN_MINOR_XKB_VERSION,
+ XKB_X11_SETUP_XKB_EXTENSION_NO_FLAGS,
+ NULL, NULL, NULL, NULL);
+ if (!ret) {
+ qWarning() << "XKB Keyboard: XKB extension setup failed";
+ return;
+ }
+
+ ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
+ if (!ctx) {
+ qWarning() << "XKB Keyboard: XKB context creation failed";
+ return;
+ }
+
+ core_kbd_device_id = xkb_x11_get_core_keyboard_device_id(conn);
+ if (core_kbd_device_id == -1) {
+ qWarning() << "XKB Keyboard: Core keyboard device not found";
+ goto err_ctx;
+ }
+
+ keymap = xkb_x11_keymap_new_from_device(ctx, conn, core_kbd_device_id, XKB_KEYMAP_COMPILE_NO_FLAGS);
+ if (!keymap) {
+ qWarning() << "XKB Keyboard: Keymap loading failed";
+ goto err_ctx;
+ }
+
+ xkbcommon_init(keymap);
+ return;
+
+err_ctx:
+ xkb_context_unref(ctx);
+}
diff --git a/src/qt/xkbcommon_x11_keyboard.hpp b/src/qt/xkbcommon_x11_keyboard.hpp
new file mode 100644
index 000000000..d8c063acb
--- /dev/null
+++ b/src/qt/xkbcommon_x11_keyboard.hpp
@@ -0,0 +1,17 @@
+/*
+ * 86Box A hypervisor and IBM PC system emulator that specializes in
+ * running old operating systems and software designed for IBM
+ * PC systems and compatibles from 1981 through fairly recent
+ * system designs based on the PCI bus.
+ *
+ * This file is part of the 86Box distribution.
+ *
+ * Definitions for xkbcommon-x11 keyboard input module.
+ *
+ *
+ *
+ * Authors: RichardG,
+ *
+ * Copyright 2023 RichardG.
+ */
+void xkbcommon_x11_init();
diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c
index 25939f06e..98716692b 100644
--- a/src/scsi/scsi_cdrom.c
+++ b/src/scsi/scsi_cdrom.c
@@ -63,138 +63,138 @@ typedef struct
/* Table of all SCSI commands and their flags, needed for the new disc change / not ready handler. */
uint8_t scsi_cdrom_command_flags[0x100] = {
- IMPLEMENTED | CHECK_READY | NONDATA, /* 0x00 */
- IMPLEMENTED | ALLOW_UA | NONDATA | SCSI_ONLY, /* 0x01 */
- 0, /* 0x02 */
- IMPLEMENTED | ALLOW_UA, /* 0x03 */
- 0, 0, 0, 0, /* 0x04-0x07 */
- IMPLEMENTED | CHECK_READY, /* 0x08 */
- 0, 0, /* 0x09-0x0A */
- IMPLEMENTED | CHECK_READY | NONDATA, /* 0x0B */
- 0, /* 0x0C */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0x0D */
- 0, 0, 0, 0, /* 0x0E-0x11 */
- IMPLEMENTED | ALLOW_UA, /* 0x12 */
- IMPLEMENTED | CHECK_READY | NONDATA | SCSI_ONLY, /* 0x13 */
- 0, /* 0x14 */
- IMPLEMENTED, /* 0x15 */
- 0, 0, 0, 0, /* 0x16-0x19 */
- IMPLEMENTED, /* 0x1A */
- IMPLEMENTED | CHECK_READY, /* 0x1B */
- 0, 0, /* 0x1C-0x1D */
- IMPLEMENTED | CHECK_READY, /* 0x1E */
- 0, 0, 0, /* 0x1F-0x21*/
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0x22*/
- 0, 0, /* 0x23-0x24 */
- IMPLEMENTED | CHECK_READY, /* 0x25 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0x26 */
- 0, /* 0x27 */
- IMPLEMENTED | CHECK_READY, /* 0x28 */
- 0, 0, /* 0x29-0x2A */
- IMPLEMENTED | CHECK_READY | NONDATA, /* 0x2B */
- 0, 0, 0, /* 0x2C-0x2E */
- IMPLEMENTED | CHECK_READY | NONDATA | SCSI_ONLY, /* 0x2F */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x30-0x3F */
- 0, 0, /* 0x40-0x41 */
- IMPLEMENTED | CHECK_READY, /* 0x42 */
- IMPLEMENTED | CHECK_READY, /* 0x43 - Read TOC - can get through UNIT_ATTENTION, per VIDE-CDD.SYS
- NOTE: The ATAPI reference says otherwise, but I think this is a question of
- interpreting things right - the UNIT ATTENTION condition we have here
- is a tradition from not ready to ready, by definition the drive
- eventually becomes ready, make the condition go away. */
- IMPLEMENTED | CHECK_READY, /* 0x44 */
- IMPLEMENTED | CHECK_READY, /* 0x45 */
- IMPLEMENTED | ALLOW_UA, /* 0x46 */
- IMPLEMENTED | CHECK_READY, /* 0x47 */
- IMPLEMENTED | CHECK_READY, /* 0x48 */
- IMPLEMENTED | CHECK_READY, /* 0x49 */
- IMPLEMENTED | ALLOW_UA, /* 0x4A */
- IMPLEMENTED | CHECK_READY, /* 0x4B */
- 0, 0, /* 0x4C-0x4D */
- IMPLEMENTED | CHECK_READY, /* 0x4E */
- 0, 0, /* 0x4F-0x50 */
- IMPLEMENTED | CHECK_READY, /* 0x51 */
- IMPLEMENTED | CHECK_READY, /* 0x52 */
- 0, 0, /* 0x53-0x54 */
- IMPLEMENTED, /* 0x55 */
- 0, 0, 0, 0, /* 0x56-0x59 */
- IMPLEMENTED, /* 0x5A */
- 0, 0, 0, 0, 0, /* 0x5B-0x5F */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60-0x6F */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x70-0x7F */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80-0x8F */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90-0x9F */
- 0, 0, 0, 0, 0, /* 0xA0-0xA4 */
- IMPLEMENTED | CHECK_READY, /* 0xA5 */
- 0, 0, /* 0xA6-0xA7 */
- IMPLEMENTED | CHECK_READY, /* 0xA8 */
- IMPLEMENTED | CHECK_READY, /* 0xA9 */
- 0, 0, 0, /* 0xAA-0xAC */
- IMPLEMENTED | CHECK_READY, /* 0xAD */
- 0, /* 0xAE */
- IMPLEMENTED | CHECK_READY | NONDATA | SCSI_ONLY, /* 0xAF */
- 0, 0, 0, 0, /* 0xB0-0xB3 */
- IMPLEMENTED | CHECK_READY | ATAPI_ONLY, /* 0xB4 */
- 0, 0, 0, /* 0xB5-0xB7 */
- IMPLEMENTED | CHECK_READY | ATAPI_ONLY, /* 0xB8 */
- IMPLEMENTED | CHECK_READY, /* 0xB9 */
- IMPLEMENTED | CHECK_READY, /* 0xBA */
- IMPLEMENTED, /* 0xBB */
- IMPLEMENTED | CHECK_READY, /* 0xBC */
- IMPLEMENTED, /* 0xBD */
- IMPLEMENTED | CHECK_READY, /* 0xBE */
- IMPLEMENTED | CHECK_READY, /* 0xBF */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC0 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC1 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC2 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC3 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC4 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC5 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC6 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC7 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC8 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC9 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCA */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCB */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCC */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCD */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xCE-0xD7 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xD8 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xD9 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDA */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDB */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDC */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDD */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDE */
- 0, /* 0xDF */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE0 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE1 */
- 0, /* 0xE2 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE3 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE4 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE5 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE6 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE7 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE8 */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE9 */
- 0, /* 0xEA */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xEB */
- 0, /* 0xEC */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xED */
- IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xEE */
- 0, /* 0xEF */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* 0xF0-0xFF */
+ IMPLEMENTED | CHECK_READY | NONDATA, /* 0x00 */
+ IMPLEMENTED | ALLOW_UA | NONDATA | SCSI_ONLY, /* 0x01 */
+ 0, /* 0x02 */
+ IMPLEMENTED | ALLOW_UA, /* 0x03 */
+ 0, 0, 0, 0, /* 0x04-0x07 */
+ IMPLEMENTED | CHECK_READY, /* 0x08 */
+ 0, 0, /* 0x09-0x0A */
+ IMPLEMENTED | CHECK_READY | NONDATA, /* 0x0B */
+ 0, /* 0x0C */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0x0D */
+ 0, 0, 0, 0, /* 0x0E-0x11 */
+ IMPLEMENTED | ALLOW_UA, /* 0x12 */
+ IMPLEMENTED | CHECK_READY | NONDATA | SCSI_ONLY, /* 0x13 */
+ 0, /* 0x14 */
+ IMPLEMENTED, /* 0x15 */
+ 0, 0, 0, 0, /* 0x16-0x19 */
+ IMPLEMENTED, /* 0x1A */
+ IMPLEMENTED | CHECK_READY, /* 0x1B */
+ 0, 0, /* 0x1C-0x1D */
+ IMPLEMENTED | CHECK_READY, /* 0x1E */
+ 0, 0, 0, /* 0x1F-0x21*/
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0x22*/
+ 0, 0, /* 0x23-0x24 */
+ IMPLEMENTED | CHECK_READY, /* 0x25 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0x26 */
+ 0, /* 0x27 */
+ IMPLEMENTED | CHECK_READY, /* 0x28 */
+ 0, 0, /* 0x29-0x2A */
+ IMPLEMENTED | CHECK_READY | NONDATA, /* 0x2B */
+ 0, 0, 0, /* 0x2C-0x2E */
+ IMPLEMENTED | CHECK_READY | NONDATA | SCSI_ONLY, /* 0x2F */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x30-0x3F */
+ 0, 0, /* 0x40-0x41 */
+ IMPLEMENTED | CHECK_READY, /* 0x42 */
+ IMPLEMENTED | CHECK_READY, /* 0x43 - Read TOC - can get through UNIT_ATTENTION, per VIDE-CDD.SYS
+ NOTE: The ATAPI reference says otherwise, but I think this is a question of
+ interpreting things right - the UNIT ATTENTION condition we have here
+ is a tradition from not ready to ready, by definition the drive
+ eventually becomes ready, make the condition go away. */
+ IMPLEMENTED | CHECK_READY, /* 0x44 */
+ IMPLEMENTED | CHECK_READY, /* 0x45 */
+ IMPLEMENTED | ALLOW_UA, /* 0x46 */
+ IMPLEMENTED | CHECK_READY, /* 0x47 */
+ IMPLEMENTED | CHECK_READY, /* 0x48 */
+ IMPLEMENTED | CHECK_READY, /* 0x49 */
+ IMPLEMENTED | ALLOW_UA, /* 0x4A */
+ IMPLEMENTED | CHECK_READY, /* 0x4B */
+ 0, 0, /* 0x4C-0x4D */
+ IMPLEMENTED | CHECK_READY, /* 0x4E */
+ 0, 0, /* 0x4F-0x50 */
+ IMPLEMENTED | CHECK_READY, /* 0x51 */
+ IMPLEMENTED | CHECK_READY, /* 0x52 */
+ 0, 0, /* 0x53-0x54 */
+ IMPLEMENTED, /* 0x55 */
+ 0, 0, 0, 0, /* 0x56-0x59 */
+ IMPLEMENTED, /* 0x5A */
+ 0, 0, 0, 0, 0, /* 0x5B-0x5F */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60-0x6F */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x70-0x7F */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80-0x8F */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90-0x9F */
+ 0, 0, 0, 0, 0, /* 0xA0-0xA4 */
+ IMPLEMENTED | CHECK_READY, /* 0xA5 */
+ 0, 0, /* 0xA6-0xA7 */
+ IMPLEMENTED | CHECK_READY, /* 0xA8 */
+ IMPLEMENTED | CHECK_READY, /* 0xA9 */
+ 0, 0, 0, /* 0xAA-0xAC */
+ IMPLEMENTED | CHECK_READY, /* 0xAD */
+ 0, /* 0xAE */
+ IMPLEMENTED | CHECK_READY | NONDATA | SCSI_ONLY, /* 0xAF */
+ 0, 0, 0, 0, /* 0xB0-0xB3 */
+ IMPLEMENTED | CHECK_READY | ATAPI_ONLY, /* 0xB4 */
+ 0, 0, 0, /* 0xB5-0xB7 */
+ IMPLEMENTED | CHECK_READY | ATAPI_ONLY, /* 0xB8 */
+ IMPLEMENTED | CHECK_READY, /* 0xB9 */
+ IMPLEMENTED | CHECK_READY, /* 0xBA */
+ IMPLEMENTED, /* 0xBB */
+ IMPLEMENTED | CHECK_READY, /* 0xBC */
+ IMPLEMENTED, /* 0xBD */
+ IMPLEMENTED | CHECK_READY, /* 0xBE */
+ IMPLEMENTED | CHECK_READY, /* 0xBF */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC0 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC1 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC2 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC3 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC4 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC5 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC6 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC7 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC8 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xC9 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCA */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCB */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCC */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xCD */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xCE-0xD7 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xD8 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xD9 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDA */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDB */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDC */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDD */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xDE */
+ 0, /* 0xDF */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE0 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE1 */
+ 0, /* 0xE2 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE3 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE4 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE5 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE6 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE7 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE8 */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xE9 */
+ 0, /* 0xEA */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xEB */
+ 0, /* 0xEC */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xED */
+ IMPLEMENTED | CHECK_READY | SCSI_ONLY, /* 0xEE */
+ 0, /* 0xEF */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* 0xF0-0xFF */
};
-static uint64_t scsi_cdrom_mode_sense_page_flags = (GPMODEP_R_W_ERROR_PAGE | GPMODEP_DISCONNECT_PAGE | GPMODEP_CDROM_PAGE | GPMODEP_CDROM_AUDIO_PAGE | (1ULL << 0x0fULL) | GPMODEP_CAPABILITIES_PAGE | GPMODEP_ALL_PAGES);
+static uint64_t scsi_cdrom_mode_sense_page_flags = (GPMODEP_R_W_ERROR_PAGE | GPMODEP_DISCONNECT_PAGE | GPMODEP_CDROM_PAGE | GPMODEP_CDROM_AUDIO_PAGE | (1ULL << 0x0fULL) | GPMODEP_CAPABILITIES_PAGE | GPMODEP_ALL_PAGES);
static uint64_t scsi_cdrom_mode_sense_page_flags_sony = (GPMODEP_R_W_ERROR_PAGE | GPMODEP_DISCONNECT_PAGE | GPMODEP_CDROM_PAGE_SONY | GPMODEP_CDROM_AUDIO_PAGE_SONY | (1ULL << 0x0fULL) | GPMODEP_CAPABILITIES_PAGE | GPMODEP_ALL_PAGES);
-static uint64_t scsi_cdrom_drive_status_page_flags = ((1ULL << 0x01ULL) | (1ULL << 0x02ULL) | (1ULL << 0x0fULL) | GPMODEP_ALL_PAGES);
+static uint64_t scsi_cdrom_drive_status_page_flags = ((1ULL << 0x01ULL) | (1ULL << 0x02ULL) | (1ULL << 0x0fULL) | GPMODEP_ALL_PAGES);
static const mode_sense_pages_t scsi_cdrom_drive_status_pages = {
{{ 0, 0 },
{ 0x01, 0, 2, 0x0f, 0xbf }, /*Drive Status Data Format*/
- { 0x02, 0, 1, 0}, /*Audio Play Status Format*/
- { 0, 0 },
+ { 0x02, 0, 1, 0 }, /*Audio Play Status Format*/
+ { 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
@@ -709,8 +709,8 @@ scsi_cdrom_drive_status(scsi_cdrom_t *dev, uint8_t *buf, uint32_t pos, uint8_t p
for (j = 0; j < msplen; j++) {
if (i == 0x01) {
buf[pos++] = scsi_cdrom_drive_status_read(dev, page_control, i, 3 + j);
- if (!(j & 1)) { /*MSB of Drive Status*/
- if (dev->drv->ops) /*Bit 11 of Drive Status, */
+ if (!(j & 1)) { /*MSB of Drive Status*/
+ if (dev->drv->ops) /*Bit 11 of Drive Status, */
buf[pos] &= ~0x08; /*Disc is present*/
else
buf[pos] |= 0x08; /*Disc not present*/
@@ -1702,13 +1702,13 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb)
int toc_format, block_desc = 0;
int ret, format = 0;
int real_pos, track = 0;
- char device_identify[9] = { '8', '6', 'B', '_', 'C', 'D', '0', '0', 0 };
- char device_identify_ex[15] = { '8', '6', 'B', '_', 'C', 'D', '0', '0', ' ', 'v', '1', '.', '0', '0', 0 };
- int32_t blen = 0, *BufLen;
- uint8_t *b;
- uint32_t profiles[2] = { MMC_PROFILE_CD_ROM, MMC_PROFILE_DVD_ROM };
- uint8_t scsi_bus = (dev->drv->scsi_device_id >> 4) & 0x0f;
- uint8_t scsi_id = dev->drv->scsi_device_id & 0x0f;
+ char device_identify[9] = { '8', '6', 'B', '_', 'C', 'D', '0', '0', 0 };
+ char device_identify_ex[15] = { '8', '6', 'B', '_', 'C', 'D', '0', '0', ' ', 'v', '1', '.', '0', '0', 0 };
+ int32_t blen = 0, *BufLen;
+ uint8_t *b;
+ uint32_t profiles[2] = { MMC_PROFILE_CD_ROM, MMC_PROFILE_DVD_ROM };
+ uint8_t scsi_bus = (dev->drv->scsi_device_id >> 4) & 0x0f;
+ uint8_t scsi_id = dev->drv->scsi_device_id & 0x0f;
if (dev->drv->bus_type == CDROM_BUS_SCSI) {
BufLen = &scsi_devices[scsi_bus][scsi_id].buffer_length;
@@ -1876,7 +1876,7 @@ begin:
case 0xC7:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_PLAY_AUDIO_MSF_MATSUSHITA*/
- cdb[0] = GPCMD_PLAY_AUDIO_MSF;
+ cdb[0] = GPCMD_PLAY_AUDIO_MSF;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -1884,10 +1884,10 @@ begin:
!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_PLAY_MSF_SONY*/
cdb[0] = GPCMD_PLAY_AUDIO_MSF;
dev->current_cdb[0] = cdb[0];
- dev->sony_vendor = 1;
+ dev->sony_vendor = 1;
goto begin;
break;
- } /*GPCMD_READ_DISC_INFORMATION_TOSHIBA*/
+ } /*GPCMD_READ_DISC_INFORMATION_TOSHIBA*/
case 0xDE: /*GPCMD_READ_DISC_INFORMATION_NEC*/
scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN);
scsi_cdrom_buf_alloc(dev, 4);
@@ -2405,7 +2405,7 @@ begin:
scsi_cdrom_command_complete(dev);
dev->sony_vendor = 1;
break;
- } /*GPCMD_AUDIO_TRACK_SEARCH_TOSHIBA and GPCMD_EJECT_CHINON*/
+ } /*GPCMD_AUDIO_TRACK_SEARCH_TOSHIBA and GPCMD_EJECT_CHINON*/
case 0xD8: /*GPCMD_AUDIO_TRACK_SEARCH_NEC*/
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42"))) {
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
@@ -2418,8 +2418,8 @@ begin:
scsi_cdrom_illegal_mode(dev);
break;
}
- pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5];
- ret = cdrom_audio_track_search(dev->drv, pos, cdb[9] & 0xc0, cdb[1] & 1);
+ pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5];
+ ret = cdrom_audio_track_search(dev->drv, pos, cdb[9] & 0xc0, cdb[1] & 1);
dev->drv->audio_op = (cdb[1] & 1) ? 0x03 : 0x02;
if (ret)
@@ -2438,7 +2438,7 @@ begin:
if (strcmp(cdrom_drive_types[dev->drv->type].internal_name, "PIONEER_CD-ROM_DRM-604X_2403")) {
dev->sony_vendor = 0;
} else {
- msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01;
+ msf = dev->ms_pages_saved_sony.pages[GPMODE_CDROM_PAGE_SONY][2] & 0x01;
dev->sony_vendor = 1;
}
@@ -2465,7 +2465,7 @@ begin:
scsi_cdrom_data_command_finish(dev, len, len, len, 0);
return;
- } /*GPCMD_PLAY_AUDIO_TOSHIBA*/
+ } /*GPCMD_PLAY_AUDIO_TOSHIBA*/
case 0xD9: /*GPCMD_PLAY_AUDIO_NEC*/
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) {
@@ -2648,7 +2648,7 @@ begin:
else
scsi_cdrom_illegal_mode(dev);
break;
- } /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_TOSHIBA and GPCMD_STOP_CHINON*/
+ } /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_TOSHIBA and GPCMD_STOP_CHINON*/
case 0xDD: /*GPCMD_READ_SUBCODEQ_PLAYING_STATUS_NEC*/
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "CHINON_CD-ROM_CDS-431_H42"))) {
scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS);
@@ -2658,7 +2658,7 @@ begin:
scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN);
alloc_length = cdb[1] & 0x1f;
- len = 10;
+ len = 10;
if (!dev->drv->ops) {
scsi_cdrom_not_ready(dev);
@@ -2753,7 +2753,7 @@ begin:
case 0xC4:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_READ_HEADER_MATSUSHITA*/
- cdb[0] = GPCMD_READ_HEADER;
+ cdb[0] = GPCMD_READ_HEADER;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -2772,10 +2772,10 @@ begin:
len = max_len;
memset(dev->buffer, 0, 10);
- dev->buffer[0] = 0x00; /*Reserved*/
- dev->buffer[1] = 0x00; /*Reserved*/
- dev->buffer[2] = cdb[7]; /*Audio Status data length*/
- dev->buffer[3] = cdb[8]; /*Audio Status data length*/
+ dev->buffer[0] = 0x00; /*Reserved*/
+ dev->buffer[1] = 0x00; /*Reserved*/
+ dev->buffer[2] = cdb[7]; /*Audio Status data length*/
+ dev->buffer[3] = cdb[8]; /*Audio Status data length*/
dev->buffer[4] = cdrom_get_audio_status_sony(dev->drv, &dev->buffer[6], msf); /*Audio status*/
dev->buffer[5] = 0x00;
@@ -2842,15 +2842,14 @@ begin:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")))
ide_padstr8(dev->buffer + idx, 8, EMU_NAME); /* Vendor */
else
- ide_padstr8(dev->buffer + idx, 8, cdrom_drive_types[dev->drv->type].vendor); /* Vendor */
+ ide_padstr8(dev->buffer + idx, 8, cdrom_drive_types[dev->drv->type].vendor); /* Vendor */
idx += 8;
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00")))
ide_padstr8(dev->buffer + idx, 40, device_identify_ex); /* Product */
else
- ide_padstr8(dev->buffer + idx, 40, cdrom_drive_types[dev->drv->type].model); /* Product */
-
+ ide_padstr8(dev->buffer + idx, 40, cdrom_drive_types[dev->drv->type].model); /* Product */
idx += 40;
ide_padstr8(dev->buffer + idx, 20, "53R141"); /* Serial */
@@ -2959,7 +2958,7 @@ begin:
else {
if (max_len == 96) {
dev->buffer[4] = 91;
- idx = 96;
+ idx = 96;
}
}
}
@@ -2995,7 +2994,7 @@ atapi_out:
case 0xC3:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_READ_TOC_MATSUSHITA*/
- cdb[0] = GPCMD_READ_TOC_PMA_ATIP;
+ cdb[0] = GPCMD_READ_TOC_PMA_ATIP;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -3009,11 +3008,11 @@ atapi_out:
dev->sector_len = 1;
dev->sector_pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5];
- real_pos = cdrom_lba_to_msf_accurate(dev->sector_pos);
- dev->buffer[0] = ((real_pos >> 16) & 0xff);
- dev->buffer[1] = ((real_pos >> 8) & 0xff);
- dev->buffer[2] = real_pos & 0xff;
- dev->buffer[3] = 1; /*2048 bytes user data*/
+ real_pos = cdrom_lba_to_msf_accurate(dev->sector_pos);
+ dev->buffer[0] = ((real_pos >> 16) & 0xff);
+ dev->buffer[1] = ((real_pos >> 8) & 0xff);
+ dev->buffer[2] = real_pos & 0xff;
+ dev->buffer[3] = 1; /*2048 bytes user data*/
len = 4;
len = MIN(len, alloc_length);
@@ -3030,7 +3029,7 @@ atapi_out:
case 0xC2:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_READ_SUBCHANNEL_MATSUSHITA*/
- cdb[0] = GPCMD_READ_SUBCHANNEL;
+ cdb[0] = GPCMD_READ_SUBCHANNEL;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -3135,7 +3134,7 @@ atapi_out:
case 0xC5:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_PLAY_AUDIO_MATSUSHITA*/
- cdb[0] = GPCMD_PLAY_AUDIO_10;
+ cdb[0] = GPCMD_PLAY_AUDIO_10;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -3149,7 +3148,7 @@ atapi_out:
}
case 0xC8:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_PLAY_AUDIO_TRACK_INDEX_MATSUSHITA*/
- cdb[0] = GPCMD_PLAY_AUDIO_TRACK_INDEX;
+ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_INDEX;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -3157,13 +3156,13 @@ atapi_out:
!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "SONY_CD-ROM_CDU-76S_1.00")) { /*GPCMD_PLAY_AUDIO_SONY*/
cdb[0] = GPCMD_PLAY_AUDIO_10;
dev->current_cdb[0] = cdb[0];
- dev->sony_vendor = 1;
+ dev->sony_vendor = 1;
goto begin;
break;
}
case 0xC9:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10_MATSUSHITA*/
- cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10;
+ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_10;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -3188,7 +3187,7 @@ atapi_out:
}
case 0xCB:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_PAUSE_RESUME_MATSUSHITA*/
- cdb[0] = GPCMD_PAUSE_RESUME;
+ cdb[0] = GPCMD_PAUSE_RESUME;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -3206,10 +3205,10 @@ atapi_out:
len = max_len;
memset(dev->buffer, 0, 10);
- dev->buffer[0] = 0x00; /*Reserved*/
- dev->buffer[1] = 0x00; /*Reserved*/
- dev->buffer[2] = cdb[7]; /*Audio Status data length*/
- dev->buffer[3] = cdb[8]; /*Audio Status data length*/
+ dev->buffer[0] = 0x00; /*Reserved*/
+ dev->buffer[1] = 0x00; /*Reserved*/
+ dev->buffer[2] = cdb[7]; /*Audio Status data length*/
+ dev->buffer[3] = cdb[8]; /*Audio Status data length*/
dev->buffer[4] = cdrom_get_audio_status_sony(dev->drv, &dev->buffer[6], msf); /*Audio status*/
dev->buffer[5] = 0x00;
@@ -3246,8 +3245,8 @@ atapi_out:
memset(dev->buffer, 0, len);
alloc_length = len;
- len = scsi_cdrom_drive_status(dev, dev->buffer, 0, cdb[2]);
- len = MIN(len, alloc_length);
+ len = scsi_cdrom_drive_status(dev, dev->buffer, 0, cdb[2]);
+ len = MIN(len, alloc_length);
scsi_cdrom_set_buf_len(dev, BufLen, &len);
@@ -3258,14 +3257,14 @@ atapi_out:
}
case 0xE5:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_PLAY_AUDIO_12_MATSUSHITA*/
- cdb[0] = GPCMD_PLAY_AUDIO_12;
+ cdb[0] = GPCMD_PLAY_AUDIO_12;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
}
case 0xE9:
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "MATSHITA_CD-ROM_CR-501_1.0b"))) { /*GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12_MATSUSHITA*/
- cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12;
+ cdb[0] = GPCMD_PLAY_AUDIO_TRACK_RELATIVE_12;
dev->current_cdb[0] = cdb[0];
goto begin;
break;
@@ -3484,7 +3483,7 @@ static void
scsi_cdrom_identify(ide_t *ide, int ide_has_dma)
{
scsi_cdrom_t *dev;
- char device_identify[9] = { '8', '6', 'B', '_', 'C', 'D', '0', '0', 0 };
+ char device_identify[9] = { '8', '6', 'B', '_', 'C', 'D', '0', '0', 0 };
dev = (scsi_cdrom_t *) ide->sc;
@@ -3492,13 +3491,13 @@ scsi_cdrom_identify(ide_t *ide, int ide_has_dma)
scsi_cdrom_log("ATAPI Identify: %s\n", device_identify);
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01")) || (!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.00"))) /*NEC only*/
- ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (1 << 5); /* ATAPI device, CD-ROM drive, removable media, interrupt DRQ */
+ ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (1 << 5); /* ATAPI device, CD-ROM drive, removable media, interrupt DRQ */
else
ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (2 << 5); /* ATAPI device, CD-ROM drive, removable media, accelerated DRQ */
- ide_padstr((char *) (ide->buffer + 10), "", 20); /* Serial Number */
+ ide_padstr((char *) (ide->buffer + 10), "", 20); /* Serial Number */
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "86BOX_CD-ROM_1.00"))) {
- ide_padstr((char *) (ide->buffer + 23), EMU_VERSION_EX, 8); /* Firmware */
+ ide_padstr((char *) (ide->buffer + 23), EMU_VERSION_EX, 8); /* Firmware */
ide_padstr((char *) (ide->buffer + 27), device_identify, 40); /* Model */
} else {
if ((!strcmp(cdrom_drive_types[dev->drv->type].internal_name, "NEC_CD-ROM_DRIVE260_1.01"))) {
diff --git a/src/scsi/scsi_ncr5380.c b/src/scsi/scsi_ncr5380.c
index c01d0bf36..faa91b093 100644
--- a/src/scsi/scsi_ncr5380.c
+++ b/src/scsi/scsi_ncr5380.c
@@ -880,10 +880,10 @@ memio_read(uint32_t addr, void *priv)
ncr_log("NCR status ctrl read=%02x\n", ncr_dev->status_ctrl & STATUS_BUFFER_NOT_READY);
if (!ncr_dev->ncr_busy)
ret |= STATUS_53C80_ACCESSIBLE;
- if (ncr->mode & 0x30) { /*Parity bits*/
+ if (ncr->mode & 0x30) { /*Parity bits*/
if (!(ncr->mode & MODE_DMA)) { /*This is to avoid RTBios 8.10R BIOS problems with the hard disk and detection.*/
- ret |= 0x01; /*If the parity bits are set, bit 0 of the 53c400 status port should be set as well.*/
- ncr->mode = 0; /*Required by RTASPI10.SYS otherwise it won't initialize.*/
+ ret |= 0x01; /*If the parity bits are set, bit 0 of the 53c400 status port should be set as well.*/
+ ncr->mode = 0; /*Required by RTASPI10.SYS otherwise it won't initialize.*/
}
}
ncr_log("NCR 53c400 status = %02x.\n", ret);
diff --git a/src/scsi/scsi_spock.c b/src/scsi/scsi_spock.c
index f8dc3282e..19fba0fb7 100644
--- a/src/scsi/scsi_spock.c
+++ b/src/scsi/scsi_spock.c
@@ -445,9 +445,9 @@ spock_process_imm_cmd(spock_t *scsi)
switch (scsi->command & CMD_MASK) {
case CMD_ASSIGN:
scsi->assign = 1;
- adapter_id = (scsi->command >> 16) & 15;
- phys_id = (scsi->command >> 20) & 7;
- lun_id = (scsi->command >> 24) & 7;
+ adapter_id = (scsi->command >> 16) & 15;
+ phys_id = (scsi->command >> 20) & 7;
+ lun_id = (scsi->command >> 24) & 7;
if (adapter_id == 15) {
if (phys_id == 7) /*Device 15 always adapter*/
spock_set_irq(scsi, scsi->attention & 0x0f, IRQ_TYPE_IMM_CMD_COMPLETE);
@@ -1175,7 +1175,7 @@ static const device_config_t spock_rom_config[] = {
},
},
{ .name = "", .description = "", .type = CONFIG_END }
-// clang-format on
+ // clang-format on
};
const device_t spock_device = {
diff --git a/src/scsi/scsi_x54x.c b/src/scsi/scsi_x54x.c
index ae049d921..2fa917bf8 100644
--- a/src/scsi/scsi_x54x.c
+++ b/src/scsi/scsi_x54x.c
@@ -675,7 +675,7 @@ x54x_rd_sge(x54x_t *dev, int Is24bit, uint32_t Address, SGE32 *SG)
memcpy((uint8_t *) &SGE24, bytes, sizeof(SGE));
} else {
/* 16-bit device, special handling not needed. */
- dma_bm_read(Address, (uint8_t *) &SGE24, 8, dev->transfer_size);
+ dma_bm_read(Address, (uint8_t *) &SGE24, 6, dev->transfer_size);
}
x54x_add_to_period(dev, sizeof(SGE));
diff --git a/src/sio/sio_ali5123.c b/src/sio/sio_ali5123.c
index ec5afdc98..33e4022c6 100644
--- a/src/sio/sio_ali5123.c
+++ b/src/sio/sio_ali5123.c
@@ -246,12 +246,14 @@ ali5123_write(uint16_t port, uint8_t val, void *priv)
/* Block writes to some logical devices. */
if (cur_ld > 0x0c)
return;
- else switch (cur_ld) {
- case 0x01: case 0x02:
- case 0x06:
- case 0x08 ... 0x0a:
- return;
- }
+ else
+ switch (cur_ld) {
+ case 0x01:
+ case 0x02:
+ case 0x06:
+ case 0x08 ... 0x0a:
+ return;
+ }
dev->ld_regs[cur_ld][dev->cur_reg] = val;
}
} else
@@ -409,7 +411,7 @@ ali5123_read(uint16_t port, void *priv)
ret = dev->regs[dev->cur_reg];
} else {
cur_ld = dev->regs[7];
- ret = dev->ld_regs[cur_ld][dev->cur_reg];
+ ret = dev->ld_regs[cur_ld][dev->cur_reg];
}
}
}
diff --git a/src/sound/CMakeLists.txt b/src/sound/CMakeLists.txt
index 10b8903bc..c530d7ac8 100644
--- a/src/sound/CMakeLists.txt
+++ b/src/sound/CMakeLists.txt
@@ -85,6 +85,12 @@ if(RTMIDI)
endif()
if(FLUIDSYNTH)
+ if(APPLE)
+ find_library(FLUIDSYNTH_LIB fluidsynth)
+ if (NOT FLUIDSYNTH_LIB)
+ message(WARNING "Could not find fluid synth. The library will not be bundled and any related features will not work.")
+ endif()
+ endif ()
target_compile_definitions(snd PRIVATE USE_FLUIDSYNTH)
target_sources(snd PRIVATE midi_fluidsynth.c)
endif()
diff --git a/src/sound/midi_fluidsynth.c b/src/sound/midi_fluidsynth.c
index 4336670c6..2372203d7 100644
--- a/src/sound/midi_fluidsynth.c
+++ b/src/sound/midi_fluidsynth.c
@@ -130,7 +130,7 @@ fluidsynth_poll(void)
{
fluidsynth_t *data = &fsdev;
data->midi_pos++;
- if (data->midi_pos == 48000 / RENDER_RATE) {
+ if (data->midi_pos == SOUND_FREQ / RENDER_RATE) {
data->midi_pos = 0;
thread_set_event(data->event);
}
diff --git a/src/sound/midi_mt32.c b/src/sound/midi_mt32.c
index 80b49112f..230914d72 100644
--- a/src/sound/midi_mt32.c
+++ b/src/sound/midi_mt32.c
@@ -202,7 +202,7 @@ void
mt32_poll(void)
{
midi_pos++;
- if (midi_pos == 48000 / RENDER_RATE) {
+ if (midi_pos == SOUND_FREQ / RENDER_RATE) {
midi_pos = 0;
thread_set_event(event);
}
diff --git a/src/sound/openal.c b/src/sound/openal.c
index 48e4ee818..a1b870480 100644
--- a/src/sound/openal.c
+++ b/src/sound/openal.c
@@ -34,7 +34,7 @@
#include <86box/midi.h>
#include <86box/sound.h>
-#define FREQ 48000
+#define FREQ SOUND_FREQ
#define BUFLEN SOUNDBUFLEN
ALuint buffers[4]; /* front and back buffers */
diff --git a/src/sound/snd_ac97_via.c b/src/sound/snd_ac97_via.c
index 9f83cd3f9..6106ebb0b 100644
--- a/src/sound/snd_ac97_via.c
+++ b/src/sound/snd_ac97_via.c
@@ -178,6 +178,7 @@ ac97_via_update_codec(ac97_via_t *dev)
/* Update volumes according to codec registers. */
ac97_codec_getattn(codec, 0x02, &dev->master_vol_l, &dev->master_vol_r);
ac97_codec_getattn(codec, 0x18, &dev->sgd[0].vol_l, &dev->sgd[0].vol_r);
+ ac97_codec_getattn(codec, 0x18, &dev->sgd[2].vol_l, &dev->sgd[2].vol_r); /* VIAFMTSR sets Master, CD and PCM volumes to 0 dB */
ac97_codec_getattn(codec, 0x12, &dev->cd_vol_l, &dev->cd_vol_r);
/* Update sample rate according to codec registers and the variable sample rate flag. */
@@ -315,13 +316,11 @@ ac97_via_sgd_write(uint16_t addr, uint8_t val, void *priv)
dev->sgd_regs[addr & 0xf0] |= 0x08;
} else {
/* Start SGD immediately. */
- dev->sgd_regs[addr & 0xf0] |= 0x80;
- dev->sgd_regs[addr & 0xf0] &= ~0x44;
+ dev->sgd_regs[addr & 0xf0] = (dev->sgd_regs[addr & 0xf0] & ~0x47) | 0x80;
/* Start at the specified entry pointer. */
- dev->sgd[addr >> 4].sample_ptr = 0;
dev->sgd[addr >> 4].entry_ptr = *((uint32_t *) &dev->sgd_regs[(addr & 0xf0) | 0x4]) & 0xfffffffe;
- dev->sgd[addr >> 4].restart = 1;
+ dev->sgd[addr >> 4].restart = 2;
/* Start the actual SGD process. */
ac97_via_sgd_process(&dev->sgd[addr >> 4]);
@@ -530,15 +529,14 @@ ac97_via_sgd_process(void *priv)
timer_on_auto(&sgd->dma_timer, 10.0);
/* Process SGD if it's active, and the FIFO has room or is disabled. */
- if ((sgd_status == 0x80) && (sgd->always_run || ((sgd->fifo_end - sgd->fifo_pos) <= (sizeof(sgd->fifo) - 4)))) {
+ if (((sgd_status & 0xc7) == 0x80) && (sgd->always_run || ((sgd->fifo_end - sgd->fifo_pos) <= (sizeof(sgd->fifo) - 4)))) {
/* Move on to the next block if no entry is present. */
if (sgd->restart) {
+ /* (Re)load entry pointer if required. */
+ if (sgd->restart & 2)
+ sgd->entry_ptr = *((uint32_t *) &dev->sgd_regs[sgd->id | 0x4]) & 0xfffffffe; /* TODO: probe real hardware - does "even addr" actually mean dword aligned? */
sgd->restart = 0;
- /* Start at first entry if no pointer is present. */
- if (!sgd->entry_ptr)
- sgd->entry_ptr = *((uint32_t *) &dev->sgd_regs[sgd->id | 0x4]) & 0xfffffffe;
-
/* Read entry. */
sgd->sample_ptr = mem_readl_phys(sgd->entry_ptr);
sgd->entry_ptr += 4;
@@ -573,6 +571,9 @@ ac97_via_sgd_process(void *priv)
if (sgd->sample_count <= 0) {
ac97_via_log("AC97 VIA: Ending SGD %d block", sgd->id >> 4);
+ /* Move on to the next block on the next run, unless overridden below. */
+ sgd->restart = 1;
+
if (sgd->entry_flags & 0x20) {
ac97_via_log(" with STOP");
@@ -583,8 +584,8 @@ ac97_via_sgd_process(void *priv)
if (sgd->entry_flags & 0x40) {
ac97_via_log(" with FLAG");
- /* Raise FLAG and STOP. */
- dev->sgd_regs[sgd->id] |= 0x05;
+ /* Raise FLAG to pause SGD. */
+ dev->sgd_regs[sgd->id] |= 0x01;
#ifdef ENABLE_AC97_VIA_LOG
if (dev->sgd_regs[sgd->id | 0x2] & 0x01)
@@ -610,8 +611,8 @@ ac97_via_sgd_process(void *priv)
/* Un-queue trigger. */
dev->sgd_regs[sgd->id] &= ~0x08;
- /* Go back to the starting block. */
- sgd->entry_ptr = 0; /* ugly, but Windows XP plays too fast if the pointer is reloaded now */
+ /* Go back to the starting block on the next run. */
+ sgd->restart = 2;
} else {
ac97_via_log(" finish");
@@ -623,9 +624,6 @@ ac97_via_sgd_process(void *priv)
/* Fire any requested status interrupts. */
ac97_via_update_irqs(dev);
-
- /* Move on to a new block on the next run. */
- sgd->restart = 1;
}
}
}
@@ -746,10 +744,10 @@ ac97_via_speed_changed(void *priv)
if (dev->vsr_enabled && dev->codec[0][0])
freq = ac97_codec_getrate(dev->codec[0][0], 0x2c);
else
- freq = 48000.0;
+ freq = (double) SOUND_FREQ;
dev->sgd[0].timer_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / freq));
- dev->sgd[2].timer_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / 24000.0));
+ dev->sgd[2].timer_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / 24000.0)); /* FM operates at a fixed 24 KHz */
}
static void *
@@ -775,10 +773,6 @@ ac97_via_init(const device_t *info)
if ((i != 0) && (i != 2))
dev->sgd[i].always_run = 1;
- /* No volume control on FM SGD that I know of. */
- if (i == 2)
- dev->sgd[i].vol_l = dev->sgd[i].vol_r = 32767;
-
timer_add(&dev->sgd[i].dma_timer, ac97_via_sgd_process, &dev->sgd[i], 0);
}
diff --git a/src/sound/snd_audiopci.c b/src/sound/snd_audiopci.c
index 7d029a169..105907ede 100644
--- a/src/sound/snd_audiopci.c
+++ b/src/sound/snd_audiopci.c
@@ -2045,7 +2045,7 @@ es1371_speed_changed(void *p)
{
es1371_t *dev = (es1371_t *) p;
- dev->dac[1].latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / 48000.0));
+ dev->dac[1].latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / (double) SOUND_FREQ));
}
static const device_config_t es1371_config[] = {
diff --git a/src/sound/snd_emu8k.c b/src/sound/snd_emu8k.c
index 528a3ad50..b58def3a9 100644
--- a/src/sound/snd_emu8k.c
+++ b/src/sound/snd_emu8k.c
@@ -1659,7 +1659,7 @@ emu8k_vol_slide(emu8k_slide_t *slide, int32_t target)
void
emu8k_update(emu8k_t *emu8k)
{
- int new_pos = (sound_pos_global * 44100) / 48000;
+ int new_pos = (sound_pos_global * FREQ_44100) / SOUND_FREQ;
if (emu8k->pos >= new_pos)
return;
diff --git a/src/sound/snd_opl_nuked.c b/src/sound/snd_opl_nuked.c
index 3c0d22131..35049836a 100644
--- a/src/sound/snd_opl_nuked.c
+++ b/src/sound/snd_opl_nuked.c
@@ -55,6 +55,8 @@
#define WRBUF_DELAY 1
#define RSM_FRAC 10
+#define OPL_FREQ FREQ_48000
+
// Channel types
enum {
ch_2op = 0,
@@ -1481,7 +1483,7 @@ nuked_drv_init(const device_t *info)
dev->status = 0x06;
/* Initialize the NukedOPL object. */
- nuked_init(&dev->opl, 48000);
+ nuked_init(&dev->opl, OPL_FREQ);
timer_add(&dev->timers[0], nuked_timer_1, dev, 0);
timer_add(&dev->timers[1], nuked_timer_2, dev, 0);
diff --git a/src/sound/snd_opl_ymfm.cpp b/src/sound/snd_opl_ymfm.cpp
index 012e77bdb..a446ab01e 100644
--- a/src/sound/snd_opl_ymfm.cpp
+++ b/src/sound/snd_opl_ymfm.cpp
@@ -42,6 +42,8 @@ extern "C" {
#define RSM_FRAC 10
+#define OPL_FREQ FREQ_48000
+
enum {
FLAG_CYCLES = (1 << 0)
};
@@ -294,15 +296,15 @@ ymfm_drv_init(const device_t *info)
switch (info->local) {
case FM_YM3812:
default:
- fm = (YMFMChipBase *) new YMFMChip(3579545, FM_YM3812, 48000);
+ fm = (YMFMChipBase *) new YMFMChip(3579545, FM_YM3812, OPL_FREQ);
break;
case FM_YMF262:
- fm = (YMFMChipBase *) new YMFMChip(14318181, FM_YMF262, 48000);
+ fm = (YMFMChipBase *) new YMFMChip(14318181, FM_YMF262, OPL_FREQ);
break;
case FM_YMF289B:
- fm = (YMFMChipBase *) new YMFMChip(33868800, FM_YMF289B, 48000);
+ fm = (YMFMChipBase *) new YMFMChip(33868800, FM_YMF289B, OPL_FREQ);
break;
case FM_YMF278B:
diff --git a/src/sound/snd_optimc.c b/src/sound/snd_optimc.c
index f83161bce..5f0de7673 100644
--- a/src/sound/snd_optimc.c
+++ b/src/sound/snd_optimc.c
@@ -70,14 +70,14 @@ typedef struct optimc_t {
} optimc_t, opti_82c929a_t;
static void
-optimc_filter_opl(void* priv, double* out_l, double* out_r)
+optimc_filter_opl(void *priv, double *out_l, double *out_r)
{
optimc_t *optimc = (optimc_t *) priv;
if (optimc->cur_wss_enabled) {
*out_l /= optimc->sb->mixer_sbpro.fm_l;
*out_r /= optimc->sb->mixer_sbpro.fm_r;
- ad1848_filter_aux2((void*)&optimc->ad1848, out_l, out_r);
+ ad1848_filter_aux2((void *) &optimc->ad1848, out_l, out_r);
}
}
@@ -167,7 +167,7 @@ optimc_reg_write(uint16_t addr, uint8_t val, void *p)
switch ((val >> 4) & 0x3) {
case 0: /* WSBase = 0x530 */
optimc->cur_wss_addr = 0x530;
- break;
+ break;
case 1: /* WSBase = 0xE80 */
optimc->cur_wss_addr = 0xE80;
break;
@@ -373,7 +373,7 @@ optimc_init(const device_t *info)
sb_ct1345_mixer_reset(optimc->sb);
optimc->sb->opl_mixer = optimc;
- optimc->sb->opl_mix = optimc_filter_opl;
+ optimc->sb->opl_mix = optimc_filter_opl;
optimc->fm_type = (info->local & OPTIMC_OPL4) ? FM_YMF278B : FM_YMF262;
fm_driver_get(optimc->fm_type, &optimc->sb->opl);
diff --git a/src/sound/snd_resid.cc b/src/sound/snd_resid.cc
index 173039098..da46b7634 100644
--- a/src/sound/snd_resid.cc
+++ b/src/sound/snd_resid.cc
@@ -7,6 +7,8 @@
#include <86box/plat.h>
#include <86box/snd_resid.h>
+#define RESID_FREQ 48000
+
typedef struct psid_t {
/* resid sid implementation */
SIDFP *sid;
@@ -42,7 +44,7 @@ sid_init(void)
psid->sid->write(c, 0);
if (!psid->sid->set_sampling_parameters((float) cycles_per_sec, method,
- (float) 48000, 0.9 * 48000.0 / 2.0)) {
+ (float) RESID_FREQ, 0.9 * (float) RESID_FREQ / 2.0)) {
// printf("reSID failed!\n");
}
@@ -93,7 +95,7 @@ sid_write(uint16_t addr, uint8_t val, UNUSED(void *p))
psid->sid->write(addr & 0x1f, val);
}
-#define CLOCK_DELTA(n) (int) (((14318180.0 * n) / 16.0) / 48000.0)
+#define CLOCK_DELTA(n) (int) (((14318180.0 * n) / 16.0) / (float) RESID_FREQ)
static void
fillbuf2(int &count, int16_t *buf, int len)
diff --git a/src/sound/snd_sb.c b/src/sound/snd_sb.c
index d67701180..086b954bb 100644
--- a/src/sound/snd_sb.c
+++ b/src/sound/snd_sb.c
@@ -364,7 +364,7 @@ sb_get_buffer_sb16_awe32(int32_t *buffer, int len, void *p)
out_l = 0.0, out_r = 0.0;
if (sb->dsp.sb_type > SB16)
- c_emu8k = ((((c / 2) * 44100) / 48000) * 2);
+ c_emu8k = ((((c / 2) * FREQ_44100) / SOUND_FREQ) * 2);
if (sb->opl_enabled) {
out_l = ((double) opl_buf[c]) * mixer->fm_l * 0.7171630859375;
@@ -433,7 +433,7 @@ sb_get_buffer_sb16_awe32(int32_t *buffer, int len, void *p)
}
if (sb->dsp.sb_enable_i) {
- c_record = dsp_rec_pos + ((c * sb->dsp.sb_freq) / 48000);
+ c_record = dsp_rec_pos + ((c * sb->dsp.sb_freq) / SOUND_FREQ);
in_l <<= mixer->input_gain_L;
in_r <<= mixer->input_gain_R;
diff --git a/src/sound/snd_sb_dsp.c b/src/sound/snd_sb_dsp.c
index 3832c4485..e6a7b8312 100644
--- a/src/sound/snd_sb_dsp.c
+++ b/src/sound/snd_sb_dsp.c
@@ -145,7 +145,7 @@ recalc_sb16_filter(int c, int playback_freq)
/* Cutoff frequency = playback / 2 */
int n;
double w, h;
- double fC = ((double) playback_freq) / 96000.0;
+ double fC = ((double) playback_freq) / (double) FREQ_96000;
double gain;
for (n = 0; n < SB16_NCoef; n++) {
@@ -1139,7 +1139,7 @@ sb_dsp_init(sb_dsp_t *dsp, int type, int subtype, void *parent)
/* Initialise SB16 filter to same cutoff as 8-bit SBs (3.2 kHz). This will be recalculated when
a set frequency command is sent. */
recalc_sb16_filter(0, 3200 * 2);
- recalc_sb16_filter(1, 44100);
+ recalc_sb16_filter(1, FREQ_44100);
/* Initialize SB16 8051 RAM and ASP internal RAM */
memset(dsp->sb_8051_ram, 0x00, sizeof(dsp->sb_8051_ram));
diff --git a/src/sound/snd_sn76489.c b/src/sound/snd_sn76489.c
index 3cbb44ec3..a28e5b848 100644
--- a/src/sound/snd_sn76489.c
+++ b/src/sound/snd_sn76489.c
@@ -192,7 +192,7 @@ sn76489_init(sn76489_t *sn76489, uint16_t base, uint16_t size, int type, int fre
sn76489->noise = 3;
sn76489->shift = 0x4000;
sn76489->type = type;
- sn76489->psgconst = (((double) freq / 64.0) / 48000.0);
+ sn76489->psgconst = (((double) freq / 64.0) / (double) FREQ_48000);
sn76489_mute = 0;
diff --git a/src/sound/sound.c b/src/sound/sound.c
index ecbb7e1a9..dbfaf0fdb 100644
--- a/src/sound/sound.c
+++ b/src/sound/sound.c
@@ -51,9 +51,9 @@ typedef struct {
void *priv;
} sound_handler_t;
-int sound_card_current[SOUND_CARD_MAX] = { 0, 0, 0, 0};
-int sound_pos_global = 0;
-int sound_gain = 0;
+int sound_card_current[SOUND_CARD_MAX] = { 0, 0, 0, 0 };
+int sound_pos_global = 0;
+int sound_gain = 0;
static sound_handler_t sound_handlers[8];
@@ -79,31 +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 = {
- .name = "None",
+ .name = "None",
.internal_name = "none",
- .flags = 0,
- .local = 0,
- .init = NULL,
- .close = NULL,
- .reset = NULL,
+ .flags = 0,
+ .local = 0,
+ .init = NULL,
+ .close = NULL,
+ .reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
- .force_redraw = NULL,
- .config = NULL
+ .force_redraw = NULL,
+ .config = NULL
};
static const device_t sound_internal_device = {
- .name = "Internal",
+ .name = "Internal",
.internal_name = "internal",
- .flags = 0,
- .local = 0,
- .init = NULL,
- .close = NULL,
- .reset = NULL,
+ .flags = 0,
+ .local = 0,
+ .init = NULL,
+ .close = NULL,
+ .reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
- .force_redraw = NULL,
- .config = NULL
+ .force_redraw = NULL,
+ .config = NULL
};
static const SOUND_CARD sound_cards[] = {
@@ -475,7 +475,7 @@ sound_poll(void *priv)
if (cd_thread_enable) {
cd_buf_update--;
if (!cd_buf_update) {
- cd_buf_update = (48000 / SOUNDBUFLEN) / (CD_FREQ / CD_BUFLEN);
+ cd_buf_update = (SOUND_FREQ / SOUNDBUFLEN) / (CD_FREQ / CD_BUFLEN);
thread_set_event(sound_cd_event);
}
}
@@ -487,7 +487,7 @@ sound_poll(void *priv)
void
sound_speed_changed(void)
{
- sound_poll_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / 48000.0));
+ sound_poll_latch = (uint64_t) ((double) TIMER_USEC * (1000000.0 / (double) SOUND_FREQ));
}
void
diff --git a/src/sound/xaudio2.c b/src/sound/xaudio2.c
index dbe0215eb..0045135fc 100644
--- a/src/sound/xaudio2.c
+++ b/src/sound/xaudio2.c
@@ -44,7 +44,7 @@ static dllimp_t xaudio2_imports[] = {
# define XAudio2Create pXAudio2Create
#endif
-static int midi_freq = 44100;
+static int midi_freq = FREQ_44100;
static int midi_buf_size = 4410;
static int initialized = 0;
static IXAudio2 *xaudio2 = NULL;
@@ -53,7 +53,7 @@ static IXAudio2SourceVoice *srcvoice = NULL;
static IXAudio2SourceVoice *srcvoicemidi = NULL;
static IXAudio2SourceVoice *srcvoicecd = NULL;
-#define FREQ 48000
+#define FREQ SOUND_FREQ
#define BUFLEN SOUNDBUFLEN
static void WINAPI
diff --git a/src/sound/ymfm/ymfm.h b/src/sound/ymfm/ymfm.h
index ae13faedd..bc0cf8b6c 100644
--- a/src/sound/ymfm/ymfm.h
+++ b/src/sound/ymfm/ymfm.h
@@ -40,11 +40,11 @@
#include
#include
#include
+#include
#include
#include
#include
#include
-#include
namespace ymfm
{
@@ -329,7 +329,7 @@ struct ymfm_output
// ======================> ymfm_wavfile
// this class is a debugging helper that accumulates data and writes it to wav files
-template
+template
class ymfm_wavfile
{
public:
@@ -361,10 +361,10 @@ public:
memcpy(&header[12], "fmt ", 4);
*(uint32_t *)&header[16] = 16;
*(uint16_t *)&header[20] = 1;
- *(uint16_t *)&header[22] = _Channels;
+ *(uint16_t *)&header[22] = Channels;
*(uint32_t *)&header[24] = m_samplerate;
- *(uint32_t *)&header[28] = m_samplerate * 2 * _Channels;
- *(uint16_t *)&header[32] = 2 * _Channels;
+ *(uint32_t *)&header[28] = m_samplerate * 2 * Channels;
+ *(uint16_t *)&header[32] = 2 * Channels;
*(uint16_t *)&header[34] = 16;
memcpy(&header[36], "data", 4);
*(uint32_t *)&header[40] = m_buffer.size() * 2 + 44 - 44;
@@ -377,24 +377,24 @@ public:
}
// add data to the file
- template
- void add(ymfm_output<_Outputs> output)
+ template
+ void add(ymfm_output output)
{
- int16_t sum[_Channels] = { 0 };
- for (int index = 0; index < _Outputs; index++)
- sum[index % _Channels] += output.data[index];
- for (int index = 0; index < _Channels; index++)
+ int16_t sum[Channels] = { 0 };
+ for (int index = 0; index < Outputs; index++)
+ sum[index % Channels] += output.data[index];
+ for (int index = 0; index < Channels; index++)
m_buffer.push_back(sum[index]);
}
// add data to the file, using a reference
- template
- void add(ymfm_output<_Outputs> output, ymfm_output<_Outputs> const &ref)
+ template
+ void add(ymfm_output output, ymfm_output const &ref)
{
- int16_t sum[_Channels] = { 0 };
- for (int index = 0; index < _Outputs; index++)
- sum[index % _Channels] += output.data[index] - ref.data[index];
- for (int index = 0; index < _Channels; index++)
+ int16_t sum[Channels] = { 0 };
+ for (int index = 0; index < Outputs; index++)
+ sum[index % Channels] += output.data[index] - ref.data[index];
+ for (int index = 0; index < Channels; index++)
m_buffer.push_back(sum[index]);
}
diff --git a/src/sound/ymfm/ymfm_fm.h b/src/sound/ymfm/ymfm_fm.h
index 7c92c0f82..81795f8fe 100644
--- a/src/sound/ymfm/ymfm_fm.h
+++ b/src/sound/ymfm/ymfm_fm.h
@@ -33,7 +33,7 @@
#pragma once
-#define DEBUG_LOG_WAVFILES (0)
+#define YMFM_DEBUG_LOG_WAVFILES (0)
namespace ymfm
{
@@ -401,7 +401,7 @@ public:
// compute sample rate
uint32_t sample_rate(uint32_t baseclock) const
{
-#if (DEBUG_LOG_WAVFILES)
+#if (YMFM_DEBUG_LOG_WAVFILES)
for (uint32_t chnum = 0; chnum < CHANNELS; chnum++)
m_wavfile[chnum].set_samplerate(baseclock / (m_clock_prescale * OPERATORS));
#endif
@@ -453,7 +453,7 @@ protected:
RegisterType m_regs; // register accessor
std::unique_ptr> m_channel[CHANNELS]; // channel pointers
std::unique_ptr> m_operator[OPERATORS]; // operator pointers
-#if (DEBUG_LOG_WAVFILES)
+#if (YMFM_DEBUG_LOG_WAVFILES)
mutable ymfm_wavfile<1> m_wavfile[CHANNELS]; // for debugging
#endif
};
diff --git a/src/sound/ymfm/ymfm_fm.ipp b/src/sound/ymfm/ymfm_fm.ipp
index 7e5109d59..14c1aa965 100644
--- a/src/sound/ymfm/ymfm_fm.ipp
+++ b/src/sound/ymfm/ymfm_fm.ipp
@@ -1185,6 +1185,7 @@ fm_engine_base::fm_engine_base(ymfm_interface &intf) :
m_irq_mask(STATUS_TIMERA | STATUS_TIMERB),
m_irq_state(0),
m_timer_running{0,0},
+ m_total_clocks(0),
m_active_channels(ALL_CHANNELS),
m_modified_channels(ALL_CHANNELS),
m_prepare_count(0)
@@ -1200,7 +1201,7 @@ fm_engine_base::fm_engine_base(ymfm_interface &intf) :
for (uint32_t opnum = 0; opnum < OPERATORS; opnum++)
m_operator[opnum] = std::make_unique>(*this, RegisterType::operator_offset(opnum));
-#if (DEBUG_LOG_WAVFILES)
+#if (YMFM_DEBUG_LOG_WAVFILES)
for (uint32_t chnum = 0; chnum < CHANNELS; chnum++)
m_wavfile[chnum].set_index(chnum);
#endif
@@ -1332,7 +1333,7 @@ void fm_engine_base::output(output_data &output, uint32_t rshift,
chanmask &= debug::GLOBAL_FM_CHANNEL_MASK;
// mask out inactive channels
- if (!DEBUG_LOG_WAVFILES)
+ if (!YMFM_DEBUG_LOG_WAVFILES)
chanmask &= m_active_channels;
// handle the rhythm case, where some of the operators are dedicated
@@ -1351,7 +1352,7 @@ void fm_engine_base::output(output_data &output, uint32_t rshift,
for (uint32_t chnum = 0; chnum < CHANNELS; chnum++)
if (bitfield(chanmask, chnum))
{
-#if (DEBUG_LOG_WAVFILES)
+#if (YMFM_DEBUG_LOG_WAVFILES)
auto reference = output;
#endif
if (chnum == 6)
@@ -1364,7 +1365,7 @@ void fm_engine_base::output(output_data &output, uint32_t rshift,
m_channel[chnum]->output_4op(output, rshift, clipmax);
else
m_channel[chnum]->output_2op(output, rshift, clipmax);
-#if (DEBUG_LOG_WAVFILES)
+#if (YMFM_DEBUG_LOG_WAVFILES)
m_wavfile[chnum].add(output, reference);
#endif
}
@@ -1375,14 +1376,14 @@ void fm_engine_base::output(output_data &output, uint32_t rshift,
for (uint32_t chnum = 0; chnum < CHANNELS; chnum++)
if (bitfield(chanmask, chnum))
{
-#if (DEBUG_LOG_WAVFILES)
+#if (YMFM_DEBUG_LOG_WAVFILES)
auto reference = output;
#endif
if (m_channel[chnum]->is4op())
m_channel[chnum]->output_4op(output, rshift, clipmax);
else
m_channel[chnum]->output_2op(output, rshift, clipmax);
-#if (DEBUG_LOG_WAVFILES)
+#if (YMFM_DEBUG_LOG_WAVFILES)
m_wavfile[chnum].add(output, reference);
#endif
}
diff --git a/src/sound/ymfm/ymfm_opl.cpp b/src/sound/ymfm/ymfm_opl.cpp
index 86215c5b2..499bfceef 100644
--- a/src/sound/ymfm/ymfm_opl.cpp
+++ b/src/sound/ymfm/ymfm_opl.cpp
@@ -100,6 +100,11 @@ opl_registers_base::opl_registers_base() :
}
}
}
+
+ // OPL3/OPL4 have dynamic operators, so initialize the fourop_enable value here
+ // since operator_map() is called right away, prior to reset()
+ if (Revision > 2)
+ m_regdata[0x104 % REGISTERS] = 0;
}
@@ -1710,9 +1715,15 @@ uint8_t ymf278b::read_status()
uint8_t ymf278b::read_data_pcm()
{
- // write to FM
+ // read from PCM
if (bitfield(m_address, 9) != 0)
- return m_pcm.read(m_address & 0xff);
+ {
+ uint8_t result = m_pcm.read(m_address & 0xff);
+ if ((m_address & 0xff) == 0x02)
+ result |= 0x20;
+
+ return result;
+ }
return 0;
}
diff --git a/src/sound/ymfm/ymfm_pcm.cpp b/src/sound/ymfm/ymfm_pcm.cpp
index 50595133b..34417490c 100644
--- a/src/sound/ymfm/ymfm_pcm.cpp
+++ b/src/sound/ymfm/ymfm_pcm.cpp
@@ -46,7 +46,6 @@ namespace ymfm
void pcm_registers::reset()
{
std::fill_n(&m_regdata[0], REGISTERS, 0);
- m_regdata[0x02] = 0x20;
m_regdata[0xf8] = 0x1b;
}
diff --git a/src/unix/assets/86Box.spec b/src/unix/assets/86Box.spec
index e994ca4a7..ede0d5bb6 100644
--- a/src/unix/assets/86Box.spec
+++ b/src/unix/assets/86Box.spec
@@ -12,7 +12,7 @@
# After a successful build, you can install the RPMs as follows:
# sudo dnf install RPMS/$(uname -m)/86Box-3* RPMS/noarch/86Box-roms*
-%global romver v3.11
+%global romver 3.11
Name: 86Box
Version: 4.0
@@ -21,8 +21,8 @@ Summary: Classic PC emulator
License: GPLv2+
URL: https://86box.net
-Source0: https://github.com/86Box/86Box/archive/refs/tags/v%%{version}.tar.gz
-Source1: https://github.com/86Box/roms/archive/refs/tags/%{romver}.zip
+Source0: https://github.com/86Box/86Box/archive/refs/tags/v%{version}.tar.gz
+Source1: https://github.com/86Box/roms/archive/refs/tags/v%{romver}.zip
BuildRequires: cmake
BuildRequires: desktop-file-utils
@@ -32,6 +32,7 @@ BuildRequires: gcc-c++
BuildRequires: libFAudio-devel
BuildRequires: libappstream-glib
BuildRequires: libevdev-devel
+BuildRequires: libxkbcommon-x11-devel
BuildRequires: libXi-devel
BuildRequires: ninja-build
BuildRequires: openal-soft-devel
@@ -98,7 +99,7 @@ cp src/unix/assets/net.86box.86Box.metainfo.xml %{buildroot}%{_metainfodir}
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/net.86box.86Box.metainfo.xml
# install roms
-pushd roms-%{version}
+pushd roms-%{romver}
mkdir -p %{buildroot}%{_datadir}/%{name}/roms
cp -a * %{buildroot}%{_datadir}/%{name}/roms/
popd
diff --git a/src/unix/unix.c b/src/unix/unix.c
index 7916ab044..23390fae9 100644
--- a/src/unix/unix.c
+++ b/src/unix/unix.c
@@ -814,9 +814,9 @@ void
plat_get_global_config_dir(char *strptr)
{
#ifdef __APPLE__
- char* prefPath = SDL_GetPrefPath(NULL, "net.86Box.86Box")
+ char *prefPath = SDL_GetPrefPath(NULL, "net.86Box.86Box");
#else
- char* prefPath = SDL_GetPrefPath(NULL, "86Box");
+ char *prefPath = SDL_GetPrefPath(NULL, "86Box");
#endif
strncpy(strptr, prefPath, 1024);
path_slash(strptr);
@@ -1089,7 +1089,7 @@ main(int argc, char **argv)
return 6;
}
- gfxcard[1] = 0;
+ gfxcard[1] = 0;
eventthread = SDL_ThreadID();
blitmtx = SDL_CreateMutex();
if (!blitmtx) {
diff --git a/src/unix/unix_serial_passthrough.c b/src/unix/unix_serial_passthrough.c
index 29e4b8317..13c695e83 100644
--- a/src/unix/unix_serial_passthrough.c
+++ b/src/unix/unix_serial_passthrough.c
@@ -200,8 +200,8 @@ plat_serpt_write(void *p, uint8_t data)
static int
open_pseudo_terminal(serial_passthrough_t *dev)
{
- int master_fd = open("/dev/ptmx", O_RDWR | O_NONBLOCK);
- char *ptname;
+ int master_fd = open("/dev/ptmx", O_RDWR | O_NONBLOCK);
+ char *ptname;
struct termios term_attr_raw;
if (!master_fd) {
diff --git a/src/video/vid_cl54xx.c b/src/video/vid_cl54xx.c
index d402050c7..bc12d988e 100644
--- a/src/video/vid_cl54xx.c
+++ b/src/video/vid_cl54xx.c
@@ -3945,7 +3945,10 @@ static void
}
if (info->flags & DEVICE_MCA) {
- vram = 1024;
+ if (id == CIRRUS_ID_CLGD5428)
+ vram = 1024;
+ else
+ vram = device_get_config_int("memory");
gd54xx->vram_size = vram << 10;
} else {
if (id <= CIRRUS_ID_CLGD5428) {
diff --git a/src/video/vid_ddc.c b/src/video/vid_ddc.c
index f6c4d4dac..e6fc4f175 100644
--- a/src/video/vid_ddc.c
+++ b/src/video/vid_ddc.c
@@ -24,7 +24,7 @@
#include <86box/86box.h>
#include <86box/i2c.h>
-#define PIXEL_MM(px) ((uint16_t) (((px) *25.4) / 96))
+#define PIXEL_MM(px) (((px) * 25.4) / 96.0)
#define STANDARD_TIMING(slot, width, aspect_ratio, refresh) \
do { \
edid->slot.horiz_pixels = ((width) >> 3) - 31; \
@@ -44,9 +44,9 @@
edid->slot.h_sync_pulse_lsb = (hsp) &0xff; \
edid->slot.v_front_porch_sync_pulse_lsb = (((vfp) &0x0f) << 4) | ((vsp) &0x0f); \
edid->slot.hv_front_porch_sync_pulse_msb = (((hfp) >> 2) & 0xc0) | (((hsp) >> 4) & 0x30) | (((vfp) >> 2) & 0x0c) | (((vsp) >> 4) & 0x03); \
- edid->slot.h_size_lsb = horiz_mm & 0xff; \
- edid->slot.v_size_lsb = vert_mm & 0xff; \
- edid->slot.hv_size_msb = ((horiz_mm >> 4) & 0xf0) | ((vert_mm >> 8) & 0x0f); \
+ edid->slot.h_size_lsb = (uint8_t) horiz_mm; \
+ edid->slot.v_size_lsb = (uint8_t) vert_mm; \
+ edid->slot.hv_size_msb = ((((uint16_t) horiz_mm) >> 4) & 0xf0) | ((((uint16_t) vert_mm) >> 8) & 0x0f); \
} while (0)
enum {
@@ -133,7 +133,7 @@ ddc_init(void *i2c)
memset(edid, 0, sizeof(edid_t));
uint8_t *edid_bytes = (uint8_t *) edid;
- uint16_t horiz_mm = PIXEL_MM(1366), vert_mm = PIXEL_MM(768);
+ double horiz_mm = PIXEL_MM(800), vert_mm = PIXEL_MM(600);
memset(&edid->magic[1], 0xff, sizeof(edid->magic) - 2);
@@ -142,11 +142,11 @@ ddc_init(void *i2c)
edid->mfg_week = 48;
edid->mfg_year = 2020 - 1990;
edid->edid_version = 0x01;
- edid->edid_rev = 0x03; /* EDID 1.3 */
+ edid->edid_rev = 0x04; /* EDID 1.4, required for Xorg on Linux to use the preferred mode timing */
edid->input_params = 0x0e; /* analog input; separate sync; composite sync; sync on green */
- edid->horiz_size = horiz_mm / 10;
- edid->vert_size = vert_mm / 10;
+ edid->horiz_size = round(horiz_mm / 10.0);
+ edid->vert_size = round(vert_mm / 10.0);
edid->features = 0xeb; /* DPMS standby/suspend/active-off; RGB color; first timing is preferred; GTF/CVT */
edid->red_green_lsb = 0x81;
diff --git a/src/video/vid_ega.c b/src/video/vid_ega.c
index bfac7d503..3da38da35 100644
--- a/src/video/vid_ega.c
+++ b/src/video/vid_ega.c
@@ -57,7 +57,7 @@ static uint8_t ega_rotate[8][256];
static uint32_t pallook16[256], pallook64[256];
static int ega_type = 0, old_overscan_color = 0;
-extern uint8_t edatlookup[4][4];
+uint8_t egaremap2bpp[256];
/* 3C2 controls default mode on EGA. On VGA, it determines monitor type (mono or colour):
7=CGA mode (200 lines), 9=EGA mode (350 lines), 8=EGA mode (200 lines). */
@@ -312,8 +312,25 @@ ega_in(uint16_t addr, void *p)
break;
case 0x3d1:
case 0x3d5:
- if (ega_type)
- ret = ega->crtc[ega->crtcreg];
+ switch(ega->crtcreg) {
+ case 0xc:
+ case 0xd:
+ case 0xe:
+ case 0xf:
+ ret = ega->crtc[ega->crtcreg];
+ break;
+
+ case 0x10:
+ case 0x11:
+ // TODO: Return light pen address once implemented
+ if (ega_type)
+ ret = ega->crtc[ega->crtcreg];
+ break;
+
+ default:
+ if (ega_type)
+ ret = ega->crtc[ega->crtcreg];
+ }
break;
case 0x3da:
ega->attrff = 0;
@@ -409,32 +426,16 @@ ega_recalctimings(ega_t *ega)
ega->render = ega_render_blank;
if (!ega->scrblank && ega->attr_palette_enable) {
if (!(ega->gdcreg[6] & 1)) {
- if (ega->seqregs[1] & 8) {
- ega->render = ega_render_text_40;
+ if (ega->seqregs[1] & 8)
ega->hdisp *= (ega->seqregs[1] & 1) ? 16 : 18;
- } else {
- ega->render = ega_render_text_80;
+ else
ega->hdisp *= (ega->seqregs[1] & 1) ? 8 : 9;
- }
+ ega->render = ega_render_text;
ega->hdisp_old = ega->hdisp;
} else {
ega->hdisp *= (ega->seqregs[1] & 8) ? 16 : 8;
+ ega->render = ega_render_graphics;
ega->hdisp_old = ega->hdisp;
-
- switch (ega->gdcreg[5] & 0x20) {
- case 0x00:
- if (ega->seqregs[1] & 8)
- ega->render = ega_render_4bpp_lowres;
- else
- ega->render = ega_render_4bpp_highres;
- break;
- case 0x20:
- if (ega->seqregs[1] & 8)
- ega->render = ega_render_2bpp_lowres;
- else
- ega->render = ega_render_2bpp_highres;
- break;
- }
}
}
@@ -752,6 +753,73 @@ ega_doblit(int wx, int wy, ega_t *ega)
ega->y_add >>= 1;
}
+uint32_t
+ega_remap_cpu_addr(uint32_t inaddr, ega_t *ega)
+{
+ int a0mux;
+ uint32_t addr = inaddr;
+
+ // The CPU A0 line is multiplexed via a 3-to-8 mux.
+ // Input bits are:
+ // bit 0: 1 = 64K, 0 = 128K+ (from memory expansion connector)
+ // bit 1: 1 = Odd/Even mode, 0 = normal mode (from GC reg 6 bit 1)
+ // bit 2: 1 = 128K mapping, 0 = other mapping (from memory decode PROM)
+ a0mux = 0;
+
+ if (ega->gdcreg[6] & 2) {
+ a0mux |= 2;
+ }
+ if (ega->vram_limit <= 64*1024) {
+ a0mux |= 1;
+ }
+
+ switch ((ega->gdcreg[6] & 0xC)) {
+ case 0x0: // 128K A000
+ addr &= 0xFFFF;
+ // TODO: Confirm the behaviour of this on actual hardware
+ a0mux |= 4;
+ break;
+ case 0x4: // 64K A000
+ addr &= 0xFFFF;
+ break;
+ case 0x8: // 32K B000
+ addr &= 0x7FFF;
+ break;
+ case 0xC: // 32K B800
+ addr &= 0x7FFF;
+ break;
+ }
+
+ switch (a0mux) {
+ case 0:
+ case 1:
+ case 4:
+ case 5:
+ case 7: // A0 becomes A0
+ break;
+ case 2:
+ // A0 becomes the inversion of PGSEL (reg 0x3C2, miscout, bit 5)
+ // That is, 1 selects the "low" 64k, and 0 selects the "high" 64k.
+ addr &= ~1;
+ addr |= (~ega->miscout>>5)&1;
+ break;
+ case 3: // A0 becomes A14
+ addr &= ~1;
+ addr |= (inaddr>>14)&1;
+ break;
+ case 6: // A0 becomes A16
+ addr &= ~1;
+ addr |= (inaddr>>16)&1;
+ break;
+ }
+
+ // In 64k mode, only select the first 16Kword/64KB bank
+ if (!(ega->seqregs[4] & 2)) {
+ addr &= 0x3FFF;
+ }
+ return addr;
+}
+
void
ega_write(uint32_t addr, uint8_t val, void *p)
{
@@ -761,21 +829,14 @@ ega_write(uint32_t addr, uint8_t val, void *p)
cycles -= video_timing_write_b;
- if (addr >= 0xB0000)
- addr &= 0x7fff;
- else
- addr &= 0xffff;
-
if (ega->chain2_write) {
writemask2 &= ~0xa;
if (addr & 1)
writemask2 <<= 1;
- addr &= ~1;
- if (addr & 0x4000)
- addr |= 1;
- addr &= ~0x4000;
}
+ addr = ega_remap_cpu_addr(addr, ega);
+
addr <<= 2;
if (addr >= ega->vram_limit)
@@ -939,19 +1000,13 @@ ega_read(uint32_t addr, void *p)
int readplane = ega->readplane;
cycles -= video_timing_read_b;
- if (addr >= 0xb0000)
- addr &= 0x7fff;
- else
- addr &= 0xffff;
if (ega->chain2_read) {
readplane = (readplane & 2) | (addr & 1);
- addr &= ~1;
- if (addr & 0x4000)
- addr |= 1;
- addr &= ~0x4000;
}
+ addr = ega_remap_cpu_addr(addr, ega);
+
addr <<= 2;
if (addr >= ega->vram_limit)
@@ -1009,6 +1064,18 @@ ega_init(ega_t *ega, int monitor_type, int is_mono)
}
}
+ for (c = 0; c < 256; c++) {
+ egaremap2bpp[c] = 0;
+ if (c & 0x01)
+ egaremap2bpp[c] |= 0x01;
+ if (c & 0x04)
+ egaremap2bpp[c] |= 0x02;
+ if (c & 0x10)
+ egaremap2bpp[c] |= 0x04;
+ if (c & 0x40)
+ egaremap2bpp[c] |= 0x08;
+ }
+
if (is_mono) {
for (c = 0; c < 256; c++) {
if (((c >> 3) & 3) == 0)
diff --git a/src/video/vid_ega_render.c b/src/video/vid_ega_render.c
index b2d5cb5c1..7db92b7d7 100644
--- a/src/video/vid_ega_render.c
+++ b/src/video/vid_ega_render.c
@@ -18,6 +18,7 @@
*/
#include
#include
+#include
#include
#include
#include <86box/86box.h>
@@ -105,16 +106,8 @@ ega_render_overscan_right(ega_t *ega)
}
void
-ega_render_text_40(ega_t *ega)
+ega_render_text(ega_t *ega)
{
- uint32_t *p;
- int x, xx;
- int drawcursor, xinc;
- uint8_t chr, attr, dat;
- uint32_t charaddr;
- int fg, bg;
- uint32_t addr;
-
if ((ega->displine + ega->y_add) < 0)
return;
@@ -123,25 +116,36 @@ ega_render_text_40(ega_t *ega)
ega->lastline_draw = ega->displine;
if (ega->fullchange) {
- p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
- xinc = (ega->seqregs[1] & 1) ? 16 : 18;
+ const bool doublewidth = ((ega->seqregs[1] & 8) != 0);
+ const bool attrblink = ((ega->attrregs[0x10] & 8) != 0);
+ const bool attrlinechars = (ega->attrregs[0x10] & 4);
+ const bool crtcreset = ((ega->crtc[0x17] & 0x80) == 0);
+ const bool seq9dot = ((ega->seqregs[1] & 1) == 0);
+ const int dwshift = doublewidth ? 1 : 0;
+ const int dotwidth = 1 << dwshift;
+ const int charwidth = dotwidth*(seq9dot ? 9 : 8);
+ const bool blinked = ega->blink & 0x10;
+ uint32_t *p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
- for (x = 0; x < (ega->hdisp + ega->scrollcache); x += xinc) {
- addr = ega->remap_func(ega, ega->ma) & ega->vrammask;
+ for (int x = 0; x < (ega->hdisp + ega->scrollcache); x += charwidth) {
+ uint32_t addr = ega->remap_func(ega, ega->ma) & ega->vrammask;
- drawcursor = ((ega->ma == ega->ca) && ega->con && ega->cursoron);
+ int drawcursor = ((ega->ma == ega->ca) && ega->con && ega->cursoron);
- if (ega->crtc[0x17] & 0x80) {
+ uint32_t chr, attr;
+ if (!crtcreset) {
chr = ega->vram[addr];
attr = ega->vram[addr + 1];
} else
chr = attr = 0;
+ uint32_t charaddr;
if (attr & 8)
charaddr = ega->charsetb + ((chr * 0x80));
else
charaddr = ega->charseta + ((chr * 0x80));
+ int fg, bg;
if (drawcursor) {
bg = ega->pallook[ega->egapal[attr & 0x0f]];
fg = ega->pallook[ega->egapal[attr >> 4]];
@@ -149,43 +153,31 @@ ega_render_text_40(ega_t *ega)
fg = ega->pallook[ega->egapal[attr & 0x0f]];
bg = ega->pallook[ega->egapal[attr >> 4]];
- if ((attr & 0x80) && ega->attrregs[0x10] & 8) {
+ if ((attr & 0x80) && attrblink) {
bg = ega->pallook[ega->egapal[(attr >> 4) & 7]];
- if (ega->blink & 0x10)
+ if (blinked)
fg = bg;
}
}
- dat = ega->vram[charaddr + (ega->sc << 2)];
- if (ega->seqregs[1] & 1) {
- for (xx = 0; xx < 16; xx += 2)
- p[xx] = p[xx + 1] = (dat & (0x80 >> (xx >> 1))) ? fg : bg;
- } else {
- for (xx = 0; xx < 16; xx += 2)
- p[xx] = p[xx + 1] = (dat & (0x80 >> (xx >> 1))) ? fg : bg;
- if ((chr & ~0x1f) != 0xc0 || !(ega->attrregs[0x10] & 4))
- p[16] = p[17] = bg;
- else
- p[16] = p[17] = (dat & 1) ? fg : bg;
- }
+ uint32_t dat = ega->vram[charaddr + (ega->sc << 2)];
+ dat <<= 1;
+ if ((chr & ~0x1F) == 0xC0 && attrlinechars)
+ dat |= (dat >> 1) & 1;
+
+ for (int xx = 0; xx < charwidth; xx++)
+ p[xx] = (dat & (0x100 >> (xx>>dwshift))) ? fg : bg;
+
ega->ma += 4;
- p += xinc;
+ p += charwidth;
}
- ega->ma &= ega->vrammask;
+ ega->ma &= 0x3ffff;
}
}
void
-ega_render_text_80(ega_t *ega)
+ega_render_graphics(ega_t *ega)
{
- uint32_t *p;
- int x, xx;
- int drawcursor, xinc;
- uint8_t chr, attr, dat;
- uint32_t charaddr;
- int fg, bg;
- uint32_t addr;
-
if ((ega->displine + ega->y_add) < 0)
return;
@@ -193,246 +185,66 @@ ega_render_text_80(ega_t *ega)
ega->firstline_draw = ega->displine;
ega->lastline_draw = ega->displine;
- if (ega->fullchange) {
- p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
- xinc = (ega->seqregs[1] & 1) ? 8 : 9;
+ const bool doublewidth = ((ega->seqregs[1] & 8) != 0);
+ const bool cga2bpp = ((ega->gdcreg[5] & 0x20) != 0);
+ const bool attrblink = ((ega->attrregs[0x10] & 8) != 0);
+ const bool blinked = ega->blink & 0x10;
+ const bool crtcreset = ((ega->crtc[0x17] & 0x80) == 0);
+ const bool seqoddeven = ((ega->seqregs[1] & 4) != 0);
+ const uint8_t blinkmask = (attrblink && blinked ? 0x8 : 0x0);
+ uint32_t *p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
+ const int dwshift = doublewidth ? 1 : 0;
+ const int dotwidth = 1 << dwshift;
+ const int charwidth = dotwidth*8;
+ int secondcclk = 0;
+ for (int x = 0; x <= (ega->hdisp + ega->scrollcache); x += charwidth) {
+ uint32_t addr = ega->remap_func(ega, ega->ma) & ega->vrammask;
- for (x = 0; x < (ega->hdisp + ega->scrollcache); x += xinc) {
- addr = ega->remap_func(ega, ega->ma) & ega->vrammask;
-
- drawcursor = ((ega->ma == ega->ca) && ega->con && ega->cursoron);
-
- if (ega->crtc[0x17] & 0x80) {
- chr = ega->vram[addr];
- attr = ega->vram[addr + 1];
- } else
- chr = attr = 0;
-
- if (attr & 0x08)
- charaddr = ega->charsetb + (chr * 0x80);
- else
- charaddr = ega->charseta + (chr * 0x80);
-
- if (drawcursor) {
- bg = ega->pallook[ega->egapal[attr & 0x0f]];
- fg = ega->pallook[ega->egapal[attr >> 4]];
- } else {
- fg = ega->pallook[ega->egapal[attr & 0x0f]];
- bg = ega->pallook[ega->egapal[attr >> 4]];
- if ((attr & 0x80) && ega->attrregs[0x10] & 8) {
- bg = ega->pallook[ega->egapal[(attr >> 4) & 7]];
- if (ega->blink & 16)
- fg = bg;
- }
- }
-
- dat = ega->vram[charaddr + (ega->sc << 2)];
- if (ega->seqregs[1] & 1) {
- for (xx = 0; xx < 8; xx++)
- p[xx] = (dat & (0x80 >> xx)) ? fg : bg;
- } else {
- for (xx = 0; xx < 8; xx++)
- p[xx] = (dat & (0x80 >> xx)) ? fg : bg;
- if ((chr & ~0x1F) != 0xC0 || !(ega->attrregs[0x10] & 4))
- p[8] = bg;
- else
- p[8] = (dat & 1) ? fg : bg;
- }
- ega->ma += 4;
- p += xinc;
- }
- ega->ma &= ega->vrammask;
- }
-}
-
-void
-ega_render_2bpp_lowres(ega_t *ega)
-{
- int x;
- uint8_t dat[2];
- uint32_t addr, *p;
-
- if ((ega->displine + ega->y_add) < 0)
- return;
-
- p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
-
- if (ega->firstline_draw == 2000)
- ega->firstline_draw = ega->displine;
- ega->lastline_draw = ega->displine;
-
- for (x = 0; x <= (ega->hdisp + ega->scrollcache); x += 16) {
- addr = ega->remap_func(ega, ega->ma);
-
- dat[0] = ega->vram[addr];
- dat[1] = ega->vram[addr | 0x1];
- if (ega->seqregs[1] & 4)
- ega->ma += 2;
- else
- ega->ma += 4;
-
- ega->ma &= ega->vrammask;
-
- if (ega->crtc[0x17] & 0x80) {
- p[0] = p[1] = ega->pallook[ega->egapal[(dat[0] >> 6) & 3]];
- p[2] = p[3] = ega->pallook[ega->egapal[(dat[0] >> 4) & 3]];
- p[4] = p[5] = ega->pallook[ega->egapal[(dat[0] >> 2) & 3]];
- p[6] = p[7] = ega->pallook[ega->egapal[dat[0] & 3]];
- p[8] = p[9] = ega->pallook[ega->egapal[(dat[1] >> 6) & 3]];
- p[10] = p[11] = ega->pallook[ega->egapal[(dat[1] >> 4) & 3]];
- p[12] = p[13] = ega->pallook[ega->egapal[(dat[1] >> 2) & 3]];
- p[14] = p[15] = ega->pallook[ega->egapal[dat[1] & 3]];
- } else
- memset(p, 0x00, 16 * sizeof(uint32_t));
-
- p += 16;
- }
-}
-
-void
-ega_render_2bpp_highres(ega_t *ega)
-{
- int x;
- uint8_t dat[2];
- uint32_t addr, *p;
-
- if ((ega->displine + ega->y_add) < 0)
- return;
-
- p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
-
- if (ega->firstline_draw == 2000)
- ega->firstline_draw = ega->displine;
- ega->lastline_draw = ega->displine;
-
- for (x = 0; x <= (ega->hdisp + ega->scrollcache); x += 8) {
- addr = ega->remap_func(ega, ega->ma);
-
- dat[0] = ega->vram[addr];
- dat[1] = ega->vram[addr | 0x1];
- if (ega->seqregs[1] & 4)
- ega->ma += 2;
- else
- ega->ma += 4;
-
- ega->ma &= ega->vrammask;
-
- if (ega->crtc[0x17] & 0x80) {
- p[0] = ega->pallook[ega->egapal[(dat[0] >> 6) & 3]];
- p[1] = ega->pallook[ega->egapal[(dat[0] >> 4) & 3]];
- p[2] = ega->pallook[ega->egapal[(dat[0] >> 2) & 3]];
- p[3] = ega->pallook[ega->egapal[dat[0] & 3]];
- p[4] = ega->pallook[ega->egapal[(dat[1] >> 6) & 3]];
- p[5] = ega->pallook[ega->egapal[(dat[1] >> 4) & 3]];
- p[6] = ega->pallook[ega->egapal[(dat[1] >> 2) & 3]];
- p[7] = ega->pallook[ega->egapal[dat[1] & 3]];
- } else
- memset(p, 0x00, 8 * sizeof(uint32_t));
-
- p += 8;
- }
-}
-
-void
-ega_render_4bpp_lowres(ega_t *ega)
-{
- int x, oddeven;
- uint8_t dat, edat[4];
- uint32_t addr, *p;
-
- if ((ega->displine + ega->y_add) < 0)
- return;
-
- p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
-
- if (ega->firstline_draw == 2000)
- ega->firstline_draw = ega->displine;
- ega->lastline_draw = ega->displine;
-
- for (x = 0; x <= (ega->hdisp + ega->scrollcache); x += 16) {
- addr = ega->remap_func(ega, ega->ma);
- oddeven = 0;
-
- if (ega->seqregs[1] & 4) {
- oddeven = (addr & 4) ? 1 : 0;
- edat[0] = ega->vram[addr | oddeven];
- edat[2] = ega->vram[addr | oddeven | 0x2];
- edat[1] = edat[3] = 0;
- ega->ma += 2;
+ uint8_t edat[4];
+ if (seqoddeven) {
+ // FIXME: Verify the behaviour of planes 1,3 on actual hardware
+ edat[0] = ega->vram[(addr | 0) ^ secondcclk];
+ edat[1] = ega->vram[(addr | 1) ^ secondcclk];
+ edat[2] = ega->vram[(addr | 2) ^ secondcclk];
+ edat[3] = ega->vram[(addr | 3) ^ secondcclk];
+ secondcclk = (secondcclk + 1) & 1;
+ if (secondcclk == 0)
+ ega->ma += 4;
} else {
*(uint32_t *) (&edat[0]) = *(uint32_t *) (&ega->vram[addr]);
ega->ma += 4;
}
- ega->ma &= ega->vrammask;
+ ega->ma &= 0x3ffff;
- if (ega->crtc[0x17] & 0x80) {
- dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
- p[0] = p[1] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[2] = p[3] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
- dat = edatlookup[(edat[0] >> 4) & 3][(edat[1] >> 4) & 3] | (edatlookup[(edat[2] >> 4) & 3][(edat[3] >> 4) & 3] << 2);
- p[4] = p[5] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[6] = p[7] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
- dat = edatlookup[(edat[0] >> 2) & 3][(edat[1] >> 2) & 3] | (edatlookup[(edat[2] >> 2) & 3][(edat[3] >> 2) & 3] << 2);
- p[8] = p[9] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[10] = p[11] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
- dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
- p[12] = p[13] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[14] = p[15] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
- } else
- memset(p, 0x00, 16 * sizeof(uint32_t));
-
- p += 16;
- }
-}
-
-void
-ega_render_4bpp_highres(ega_t *ega)
-{
- int x, oddeven;
- uint8_t dat, edat[4];
- uint32_t addr, *p;
-
- if ((ega->displine + ega->y_add) < 0)
- return;
-
- p = &buffer32->line[ega->displine + ega->y_add][ega->x_add];
-
- if (ega->firstline_draw == 2000)
- ega->firstline_draw = ega->displine;
- ega->lastline_draw = ega->displine;
-
- for (x = 0; x <= (ega->hdisp + ega->scrollcache); x += 8) {
- addr = ega->remap_func(ega, ega->ma);
- oddeven = 0;
-
- if (ega->seqregs[1] & 4) {
- oddeven = (addr & 4) ? 1 : 0;
- edat[0] = ega->vram[addr | oddeven];
- edat[2] = ega->vram[addr | oddeven | 0x2];
- edat[1] = edat[3] = 0;
- ega->ma += 2;
- } else {
- *(uint32_t *) (&edat[0]) = *(uint32_t *) (&ega->vram[addr]);
- ega->ma += 4;
+ if (cga2bpp) {
+ // Remap CGA 2bpp-chunky data into fully planar data
+ uint8_t dat0 = egaremap2bpp[edat[1] ] | (egaremap2bpp[edat[0] ] << 4);
+ uint8_t dat1 = egaremap2bpp[edat[1]>>1] | (egaremap2bpp[edat[0]>>1] << 4);
+ uint8_t dat2 = egaremap2bpp[edat[3] ] | (egaremap2bpp[edat[2] ] << 4);
+ uint8_t dat3 = egaremap2bpp[edat[3]>>1] | (egaremap2bpp[edat[2]>>1] << 4);
+ edat[0] = dat0;
+ edat[1] = dat1;
+ edat[2] = dat2;
+ edat[3] = dat3;
}
- ega->ma &= ega->vrammask;
- if (ega->crtc[0x17] & 0x80) {
- dat = edatlookup[edat[0] >> 6][edat[1] >> 6] | (edatlookup[edat[2] >> 6][edat[3] >> 6] << 2);
- p[0] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[1] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
- dat = edatlookup[(edat[0] >> 4) & 3][(edat[1] >> 4) & 3] | (edatlookup[(edat[2] >> 4) & 3][(edat[3] >> 4) & 3] << 2);
- p[2] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[3] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
- dat = edatlookup[(edat[0] >> 2) & 3][(edat[1] >> 2) & 3] | (edatlookup[(edat[2] >> 2) & 3][(edat[3] >> 2) & 3] << 2);
- p[4] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[5] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
- dat = edatlookup[edat[0] & 3][edat[1] & 3] | (edatlookup[edat[2] & 3][edat[3] & 3] << 2);
- p[6] = ega->pallook[ega->egapal[(dat >> 4) & ega->plane_mask]];
- p[7] = ega->pallook[ega->egapal[dat & ega->plane_mask]];
+ if (!crtcreset) {
+ for (int i = 0; i < 8; i += 2) {
+ const int outoffs = i << dwshift;
+ const int inshift = 6 - i;
+ uint8_t dat = (edatlookup[(edat[0] >> inshift) & 3][(edat[1] >> inshift) & 3] )
+ | (edatlookup[(edat[2] >> inshift) & 3][(edat[3] >> inshift) & 3] << 2);
+ // FIXME: Confirm blink behaviour is actually XOR on real hardware
+ uint32_t p0 = ega->pallook[ega->egapal[((dat >> 4) & ega->plane_mask) ^ blinkmask]];
+ uint32_t p1 = ega->pallook[ega->egapal[((dat ) & ega->plane_mask) ^ blinkmask]];
+ for (int subx = 0; subx < dotwidth; subx++)
+ p[outoffs + subx] = p0;
+ for (int subx = 0; subx < dotwidth; subx++)
+ p[outoffs + subx + dotwidth] = p1;
+ }
} else
- memset(p, 0x00, 8 * sizeof(uint32_t));
+ memset(p, 0x00, charwidth * sizeof(uint32_t));
- p += 8;
+ p += charwidth;
}
}
diff --git a/src/video/vid_et4000w32.c b/src/video/vid_et4000w32.c
index 2f6e6497c..6e6779283 100644
--- a/src/video/vid_et4000w32.c
+++ b/src/video/vid_et4000w32.c
@@ -96,12 +96,12 @@ typedef struct et4000w32p_t {
uint8_t suspend_terminate, osr;
uint8_t status;
uint16_t x_count, y_count;
+ uint16_t cpu_x_cnt, cpu_x_cnt_back, cpu_y_cnt;
int pattern_x, source_x, pattern_x_back, source_x_back,
pattern_y, source_y, cpu_dat_pos, pix_pos,
cpu_input_num, fifo_queue;
- int pattern_x_diff, pattern_y_diff, pattern_x_diff2, pattern_y_diff2;
- int patcnt, mmu_start;
+ int mmu_start;
uint32_t pattern_addr, source_addr, dest_addr, mix_addr,
pattern_back, source_back, dest_back, mix_back,
@@ -121,7 +121,7 @@ typedef struct et4000w32p_t {
static int et4000w32_vbus[4] = { 1, 2, 4, 4 };
static int et4000w32_max_x[8] = { 0, 0, 4, 8, 0x10, 0x20, 0x40, 0x70000000 };
-static int et4000w32_wrap_x[8] = { 0, 0, 3, 7, 0x0F, 0x1F, 0x3F, ~0 };
+static int et4000w32_wrap_x[8] = { 0, 0, 3, 7, 0x0f, 0x1f, 0x3f, ~0 };
static int et4000w32_wrap_y[8] = { 1, 2, 4, 8, ~0, ~0, ~0, ~0 };
static video_timings_t timing_et4000w32_vlb = { .type = VIDEO_BUS, .write_b = 4, .write_w = 4, .write_l = 4, .read_b = 10, .read_w = 10, .read_l = 10 };
@@ -272,14 +272,20 @@ et4000w32p_out(uint16_t addr, uint8_t val, void *p)
case 0x216b:
case 0x217b:
et4000->regs[et4000->index] = val;
- svga->hwcursor.cur_xsize = svga->hwcursor.cur_ysize = ((et4000->regs[0xEF] & 4) || (et4000->type == ET4000W32)) ? 128 : 64;
svga->hwcursor.x = et4000->regs[0xE0] | ((et4000->regs[0xE1] & 7) << 8);
svga->hwcursor.y = et4000->regs[0xE4] | ((et4000->regs[0xE5] & 7) << 8);
svga->hwcursor.ena = !!(et4000->regs[0xF7] & 0x80);
svga->hwcursor.xoff = et4000->regs[0xE2];
svga->hwcursor.yoff = et4000->regs[0xE6];
+ svga->hwcursor.cur_xsize = svga->hwcursor.cur_ysize = ((et4000->regs[0xEF] & 4) || ((et4000->type == ET4000W32) && et4000->regs[0xe2] && et4000->regs[0xe6])) ? 128 : 64;
if (et4000->type == ET4000W32) {
+ if ((svga->bpp == 15) || (svga->bpp == 16)) {
+ svga->hwcursor.cur_xsize = svga->hwcursor.cur_ysize = 128;
+ }
+ }
+
+ if (((et4000->type == ET4000W32) && (svga->hwcursor.cur_xsize == 128))) {
switch (svga->bpp) {
case 8:
svga->hwcursor.xoff += 32;
@@ -297,7 +303,7 @@ et4000w32p_out(uint16_t addr, uint8_t val, void *p)
}
} else {
if (et4000->type > ET4000W32P_REVC) {
- if (svga->bpp == 24 && et4000->adjust_cursor) {
+ if ((svga->bpp == 24) && et4000->adjust_cursor) {
et4000->adjust_cursor = 0;
}
}
@@ -674,40 +680,46 @@ et4000w32p_accel_write_fifo(et4000w32p_t *et4000, uint32_t addr, uint8_t val)
et4000->acl.fifo_queue++;
switch (addr & 0xff) {
case 0x80:
- et4000->acl.queued.pattern_addr = (et4000->acl.queued.pattern_addr & 0x3fff00) | val;
+ et4000->acl.queued.pattern_addr = (et4000->acl.queued.pattern_addr & 0xffffff00) | val;
break;
case 0x81:
- et4000->acl.queued.pattern_addr = (et4000->acl.queued.pattern_addr & 0x3f00ff) | (val << 8);
+ et4000->acl.queued.pattern_addr = (et4000->acl.queued.pattern_addr & 0xffff00ff) | (val << 8);
break;
case 0x82:
- et4000->acl.queued.pattern_addr = (et4000->acl.queued.pattern_addr & 0x00ffff) | ((val & 0x3f) << 16);
+ et4000->acl.queued.pattern_addr = (et4000->acl.queued.pattern_addr & 0xff00ffff) | (val << 16);
+ break;
+ case 0x83:
+ et4000->acl.queued.pattern_addr = (et4000->acl.queued.pattern_addr & 0x00ffffff) | (val << 24);
break;
case 0x84:
- et4000->acl.queued.source_addr = (et4000->acl.queued.source_addr & 0x3fff00) | val;
+ et4000->acl.queued.source_addr = (et4000->acl.queued.source_addr & 0xffffff00) | val;
break;
case 0x85:
- et4000->acl.queued.source_addr = (et4000->acl.queued.source_addr & 0x3f00ff) | (val << 8);
+ et4000->acl.queued.source_addr = (et4000->acl.queued.source_addr & 0xffff00ff) | (val << 8);
break;
case 0x86:
- et4000->acl.queued.source_addr = (et4000->acl.queued.source_addr & 0x00ffff) | ((val & 0x3f) << 16);
+ et4000->acl.queued.source_addr = (et4000->acl.queued.source_addr & 0xff00ffff) | (val << 16);
+ break;
+ case 0x87:
+ et4000->acl.queued.source_addr = (et4000->acl.queued.source_addr & 0x00ffffff) | (val << 24);
break;
case 0x88:
- et4000->acl.queued.pattern_off = (et4000->acl.queued.pattern_off & 0x0f00) | val;
+ et4000->acl.queued.pattern_off = (et4000->acl.queued.pattern_off & 0xff00) | val;
break;
case 0x89:
- et4000->acl.queued.pattern_off = (et4000->acl.queued.pattern_off & 0x00ff) | ((val & 0x0f) << 8);
+ et4000->acl.queued.pattern_off = (et4000->acl.queued.pattern_off & 0x00ff) | (val << 8);
break;
case 0x8a:
- et4000->acl.queued.source_off = (et4000->acl.queued.source_off & 0x0f00) | val;
+ et4000->acl.queued.source_off = (et4000->acl.queued.source_off & 0xff00) | val;
break;
case 0x8b:
- et4000->acl.queued.source_off = (et4000->acl.queued.source_off & 0x00ff) | ((val & 0x0f) << 8);
+ et4000->acl.queued.source_off = (et4000->acl.queued.source_off & 0x00ff) | (val << 8);
break;
case 0x8c:
- et4000->acl.queued.dest_off = (et4000->acl.queued.dest_off & 0x0f00) | val;
+ et4000->acl.queued.dest_off = (et4000->acl.queued.dest_off & 0xff00) | val;
break;
case 0x8d:
- et4000->acl.queued.dest_off = (et4000->acl.queued.dest_off & 0x00ff) | ((val & 0x0f) << 8);
+ et4000->acl.queued.dest_off = (et4000->acl.queued.dest_off & 0x00ff) | (val << 8);
break;
case 0x8e:
if (et4000->type >= ET4000W32P_REVC)
@@ -728,16 +740,16 @@ et4000w32p_accel_write_fifo(et4000w32p_t *et4000, uint32_t addr, uint8_t val)
et4000->acl.queued.source_wrap = val & 0x77;
break;
case 0x98:
- et4000->acl.queued.count_x = (et4000->acl.queued.count_x & 0x0f00) | val;
+ et4000->acl.queued.count_x = (et4000->acl.queued.count_x & 0xff00) | val;
break;
case 0x99:
- et4000->acl.queued.count_x = (et4000->acl.queued.count_x & 0x00ff) | ((val & 0x0f) << 8);
+ et4000->acl.queued.count_x = (et4000->acl.queued.count_x & 0x00ff) | (val << 8);
break;
case 0x9a:
- et4000->acl.queued.count_y = (et4000->acl.queued.count_y & 0x0f00) | val;
+ et4000->acl.queued.count_y = (et4000->acl.queued.count_y & 0xff00) | val;
break;
case 0x9b:
- et4000->acl.queued.count_y = (et4000->acl.queued.count_y & 0x00ff) | ((val & 0x0f) << 8);
+ et4000->acl.queued.count_y = (et4000->acl.queued.count_y & 0x00ff) | (val << 8);
break;
case 0x9c:
if (et4000->type >= ET4000W32P_REVC)
@@ -755,15 +767,16 @@ et4000w32p_accel_write_fifo(et4000w32p_t *et4000, uint32_t addr, uint8_t val)
et4000->acl.queued.rop_fg = val;
break;
case 0xa0:
- et4000->acl.queued.dest_addr = (et4000->acl.queued.dest_addr & 0x3fff00) | val;
+ et4000->acl.queued.dest_addr = (et4000->acl.queued.dest_addr & 0xffffff00) | val;
break;
case 0xa1:
- et4000->acl.queued.dest_addr = (et4000->acl.queued.dest_addr & 0x3f00ff) | (val << 8);
+ et4000->acl.queued.dest_addr = (et4000->acl.queued.dest_addr & 0xffff00ff) | (val << 8);
break;
case 0xa2:
- et4000->acl.queued.dest_addr = (et4000->acl.queued.dest_addr & 0x00ffff) | ((val & 0x3f) << 16);
+ et4000->acl.queued.dest_addr = (et4000->acl.queued.dest_addr & 0xff00ffff) | (val << 16);
break;
case 0xa3:
+ et4000->acl.queued.dest_addr = (et4000->acl.queued.dest_addr & 0x00ffffff) | (val << 24);
et4000->acl.internal = et4000->acl.queued;
if (et4000->type >= ET4000W32P_REVC) {
et4000w32p_blit_start(et4000);
@@ -778,9 +791,10 @@ et4000w32p_accel_write_fifo(et4000w32p_t *et4000, uint32_t addr, uint8_t val)
et4000w32_blit_start(et4000);
et4000->acl.cpu_input_num = 0;
if (!(et4000->acl.queued.ctrl_routing & 0x37)) {
- et4000->acl.mmu_start = 0;
+ et4000->acl.mmu_start = 1;
et4000w32_blit(-1, 0, 0, 0xffffffff, et4000);
- }
+ } else
+ et4000->acl.mmu_start = 0;
}
break;
case 0xa4:
@@ -843,11 +857,13 @@ et4000w32p_accel_write_mmu(et4000w32p_t *et4000, uint32_t addr, uint8_t val, uin
et4000->acl.queued.dest_addr = ((addr & 0x1fff) + et4000->mmu.base[bank]);
et4000->acl.internal = et4000->acl.queued;
et4000w32_blit_start(et4000);
- et4000w32_log("ET4000W32 Accelerated MMU aperture start XY Block (Implicit): bank = %i, patx = %i, paty = %i, wrap y = %i\n", et4000->bank, et4000->acl.pattern_x, et4000->acl.pattern_y, et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7]);
+ et4000w32_log("ET4000W32 Accelerated MMU aperture start XY Block (Implicit): bank = %i, patx = %i, paty = %i, wrap x = %i, wrap y = %i\n", et4000->bank, et4000->acl.pattern_x, et4000->acl.pattern_y, et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7], et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7]);
et4000->acl.cpu_input_num = 0;
if (!(et4000->acl.queued.ctrl_routing & 0x37)) {
et4000->acl.mmu_start = 1;
et4000w32_blit(-1, 0, 0, 0xffffffff, et4000);
+ } else {
+ et4000->acl.mmu_start = 0;
}
}
@@ -865,10 +881,19 @@ et4000w32p_accel_write_mmu(et4000w32p_t *et4000, uint32_t addr, uint8_t val, uin
et4000->acl.cpu_input_num = 0;
}
- if ((et4000->acl.internal.ctrl_routing & 7) == 4) /*CPU data is X Count*/
- et4000w32_blit(val | (et4000->acl.queued.count_x << 8), 0, 0, 0xffffffff, et4000);
- if ((et4000->acl.internal.ctrl_routing & 7) == 5) /*CPU data is Y Count*/
- et4000w32_blit(val | (et4000->acl.queued.count_y << 8), 0, 0, 0xffffffff, et4000);
+ if (et4000w32_vbus[et4000->acl.internal.vbus] == 1) {
+ if ((et4000->acl.internal.ctrl_routing & 7) == 4) { /*CPU data is X Count*/
+ et4000w32_log("ET4000W32 Accelerated MMU aperture routing = %02x: val = %02x, cx = %02x.\n", et4000->acl.internal.ctrl_routing, val, et4000->acl.internal.count_x);
+ et4000->acl.cpu_x_cnt = val + 1;
+ et4000->acl.cpu_x_cnt |= ((et4000->acl.queued.count_x >> 8) << 8);
+ et4000w32_blit(et4000->acl.cpu_x_cnt, 3, 0, 0xffffffff, et4000);
+ } else if ((et4000->acl.internal.ctrl_routing & 7) == 5) { /*CPU data is Y Count*/
+ et4000w32_log("ET4000W32 Accelerated MMU aperture routing = %02x: val = %02x, cy = %02x.\n", et4000->acl.internal.ctrl_routing, val, et4000->acl.internal.count_y);
+ et4000->acl.cpu_y_cnt = val + 1;
+ et4000->acl.cpu_y_cnt |= ((et4000->acl.queued.count_y >> 8) << 8);
+ et4000w32_blit(et4000->acl.cpu_y_cnt, 4, 0, 0xffffffff, et4000);
+ }
+ }
}
}
}
@@ -899,31 +924,40 @@ et4000w32p_mmu_write(uint32_t addr, uint8_t val, void *p)
} else {
switch (addr & 0xff) {
case 0x00:
- et4000->mmu.base[0] = (et4000->mmu.base[0] & 0x3fff00) | val;
+ et4000->mmu.base[0] = (et4000->mmu.base[0] & 0xffffff00) | val;
break;
case 0x01:
- et4000->mmu.base[0] = (et4000->mmu.base[0] & 0x3f00ff) | (val << 8);
+ et4000->mmu.base[0] = (et4000->mmu.base[0] & 0xffff00ff) | (val << 8);
break;
case 0x02:
- et4000->mmu.base[0] = (et4000->mmu.base[0] & 0x00ffff) | ((val & 0x3f) << 16);
+ et4000->mmu.base[0] = (et4000->mmu.base[0] & 0xff00ffff) | (val << 16);
+ break;
+ case 0x03:
+ et4000->mmu.base[0] = (et4000->mmu.base[0] & 0x00ffffff) | (val << 24);
break;
case 0x04:
- et4000->mmu.base[1] = (et4000->mmu.base[1] & 0x3fff00) | val;
+ et4000->mmu.base[1] = (et4000->mmu.base[1] & 0xffffff00) | val;
break;
case 0x05:
- et4000->mmu.base[1] = (et4000->mmu.base[1] & 0x3f00ff) | (val << 8);
+ et4000->mmu.base[1] = (et4000->mmu.base[1] & 0xffff00ff) | (val << 8);
break;
case 0x06:
- et4000->mmu.base[1] = (et4000->mmu.base[1] & 0x00ffff) | ((val & 0x3f) << 16);
+ et4000->mmu.base[1] = (et4000->mmu.base[1] & 0xff00ffff) | (val << 16);
+ break;
+ case 0x07:
+ et4000->mmu.base[1] = (et4000->mmu.base[1] & 0x00ffffff) | (val << 24);
break;
case 0x08:
- et4000->mmu.base[2] = (et4000->mmu.base[2] & 0x3fff00) | val;
+ et4000->mmu.base[2] = (et4000->mmu.base[2] & 0xffffff00) | val;
break;
case 0x09:
- et4000->mmu.base[2] = (et4000->mmu.base[2] & 0x3f00ff) | (val << 8);
+ et4000->mmu.base[2] = (et4000->mmu.base[2] & 0xffff00ff) | (val << 8);
break;
case 0x0a:
- et4000->mmu.base[2] = (et4000->mmu.base[2] & 0x00ffff) | ((val & 0x3f) << 16);
+ et4000->mmu.base[2] = (et4000->mmu.base[2] & 0xff00ffff) | (val << 16);
+ break;
+ case 0x0b:
+ et4000->mmu.base[2] = (et4000->mmu.base[2] & 0x00ffffff) | (val << 24);
break;
case 0x13:
et4000->mmu.ctrl = val;
@@ -1127,6 +1161,26 @@ et4000w32_blit_start(et4000w32p_t *et4000)
et4000->acl.source_back &= ~(((et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1) * et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7]) - 1);
}
et4000->acl.source_x_back = et4000->acl.source_x;
+
+ if ((et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] == 7) && !(et4000->acl.internal.ctrl_routing & 0x37) && (et4000->acl.internal.rop_fg == 0x5a)) {
+ if ((et4000->acl.internal.count_y > 0) && (et4000->acl.pattern_y > 0)) {
+ if (et4000->acl.pattern_addr == et4000->acl.pattern_back)
+ et4000->acl.pattern_y = 0;
+ else {
+ et4000->acl.pattern_y = (et4000->acl.pattern_addr - et4000->acl.pattern_back) & 0x70;
+ et4000->acl.pattern_y >>= 4;
+ }
+ }
+ } else if ((et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] == 15) && !(et4000->acl.internal.ctrl_routing & 0x37) && (et4000->acl.internal.rop_fg == 0x5a)) {
+ if ((et4000->acl.internal.count_y > 0) && (et4000->acl.pattern_y > 0)) {
+ if (et4000->acl.pattern_addr == et4000->acl.pattern_back)
+ et4000->acl.pattern_y = 0;
+ else {
+ et4000->acl.pattern_y = (et4000->acl.pattern_addr - et4000->acl.pattern_back) & 0xf0;
+ et4000->acl.pattern_y >>= 5;
+ }
+ }
+ }
}
static void
@@ -1137,6 +1191,7 @@ et4000w32p_blit_start(et4000w32p_t *et4000)
if (!(et4000->acl.queued.xy_dir & 0x20))
et4000->acl.internal.error = et4000->acl.internal.dmaj / 2;
+
et4000->acl.pattern_addr = et4000->acl.internal.pattern_addr;
et4000->acl.source_addr = et4000->acl.internal.source_addr;
et4000->acl.mix_addr = et4000->acl.internal.mix_addr;
@@ -1236,12 +1291,12 @@ et4000w32_decy(et4000w32p_t *et4000)
et4000->acl.mix_addr -= et4000->acl.internal.mix_off + 1;
et4000->acl.dest_addr -= et4000->acl.internal.dest_off + 1;
et4000->acl.pattern_y--;
- if (et4000->acl.pattern_y < 0 && !(et4000->acl.internal.pattern_wrap & 0x40)) {
+ if ((et4000->acl.pattern_y < 0) && !(et4000->acl.internal.pattern_wrap & 0x40)) {
et4000->acl.pattern_y = et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7] - 1;
et4000->acl.pattern_addr = et4000->acl.pattern_back + (et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] * (et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7] - 1));
}
et4000->acl.source_y--;
- if (et4000->acl.source_y < 0 && !(et4000->acl.internal.source_wrap & 0x40)) {
+ if ((et4000->acl.source_y < 0) && !(et4000->acl.internal.source_wrap & 0x40)) {
et4000->acl.source_y = et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7] - 1;
et4000->acl.source_addr = et4000->acl.source_back + (et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] * (et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7] - 1));
}
@@ -2030,99 +2085,168 @@ et4000w32_blit(int count, int cpu_input, uint32_t src_dat, uint32_t mix_dat, et4
uint8_t out;
int mixmap;
- while (count-- && et4000->acl.y_count >= 0) {
- pattern = svga->vram[(et4000->acl.pattern_addr + et4000->acl.pattern_x) & et4000->vram_mask];
+ if (!(et4000->acl.status & ACL_XYST) && !et4000->acl.mmu_start) {
+ et4000w32_log("XY Block not started\n");
+ return;
+ }
- if (cpu_input == 1) {
- source = src_dat & 0xff;
- src_dat >>= 8;
- } else /*The source data is from the display memory if the Control Routing register is not set to 1*/
+ if (cpu_input == 3) {
+ while (1) {
+ pattern = svga->vram[(et4000->acl.pattern_addr + et4000->acl.pattern_x) & et4000->vram_mask];
source = svga->vram[(et4000->acl.source_addr + et4000->acl.source_x) & et4000->vram_mask];
- dest = svga->vram[et4000->acl.dest_addr & et4000->vram_mask];
- mixmap = mix_dat & 1;
+ dest = svga->vram[et4000->acl.dest_addr & et4000->vram_mask];
+ mixmap = mix_dat & 1;
- /*Now determine the Raster Operation*/
- rop = mixmap ? et4000->acl.internal.rop_fg : et4000->acl.internal.rop_bg;
- mix_dat >>= 1;
- mix_dat |= 0x80000000;
+ rop = mixmap ? et4000->acl.internal.rop_fg : et4000->acl.internal.rop_bg;
+ mix_dat >>= 1;
+ mix_dat |= 0x80000000;
- ROPMIX(rop, dest, pattern, source, out);
+ ROPMIX(rop, dest, pattern, source, out);
- /*Write the data*/
- svga->vram[et4000->acl.dest_addr & et4000->vram_mask] = out;
- svga->changedvram[(et4000->acl.dest_addr & et4000->vram_mask) >> 12] = changeframecount;
+ /*Write the data*/
+ svga->vram[et4000->acl.dest_addr & et4000->vram_mask] = out;
+ svga->changedvram[(et4000->acl.dest_addr & et4000->vram_mask) >> 12] = changeframecount;
- if (et4000->acl.internal.xy_dir & 1) {
- et4000->acl.dest_addr--;
- et4000->acl.pattern_x--;
- et4000->acl.source_x--;
- if (et4000->acl.pattern_x < 0)
- et4000->acl.pattern_x += (et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] + 1);
- if (et4000->acl.source_x < 0)
- et4000->acl.source_x += (et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1);
- } else {
- et4000->acl.dest_addr++;
- et4000->acl.pattern_x++;
- et4000->acl.source_x++;
- if (et4000->acl.pattern_x >= (et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] + 1))
- et4000->acl.pattern_x -= (et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] + 1);
- if (et4000->acl.source_x >= (et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1))
- et4000->acl.source_x -= (et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] + 1);
+ if (et4000->acl.internal.xy_dir & 1)
+ et4000w32_decx(1, et4000);
+ else
+ et4000w32_incx(1, et4000);
+
+ count--;
+ if (!count) {
+ count = et4000->acl.cpu_x_cnt;
+
+ if (et4000->acl.internal.xy_dir & 2) {
+ et4000w32_decy(et4000);
+ et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back - (et4000->acl.internal.dest_off + 1);
+ } else {
+ et4000w32_incy(et4000);
+ et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back + et4000->acl.internal.dest_off + 1;
+ }
+
+ et4000->acl.pattern_x = et4000->acl.pattern_x_back;
+ et4000->acl.source_x = et4000->acl.source_x_back;
+
+ et4000->acl.y_count--;
+ if (et4000->acl.y_count == 0xffff) {
+ et4000->acl.status &= ~ACL_XYST;
+ if (!(et4000->acl.internal.ctrl_routing & 7) || (et4000->acl.internal.ctrl_routing & 4)) {
+ et4000w32_log("W32i: end blit, xcount = %i\n", et4000->acl.x_count);
+ et4000->acl.status &= ~ACL_SSO;
+ }
+ return;
+ }
+ }
}
+ } else if (cpu_input == 4) {
+ while (1) {
+ pattern = svga->vram[(et4000->acl.pattern_addr + et4000->acl.pattern_x) & et4000->vram_mask];
+ source = svga->vram[(et4000->acl.source_addr + et4000->acl.source_x) & et4000->vram_mask];
- et4000->acl.x_count--;
- if (et4000->acl.x_count == 0xffff) {
- et4000->acl.x_count = et4000->acl.internal.count_x;
+ dest = svga->vram[et4000->acl.dest_addr & et4000->vram_mask];
+ mixmap = mix_dat & 1;
- if (et4000->acl.internal.xy_dir & 2) {
- et4000->acl.pattern_addr -= (et4000->acl.internal.pattern_off + 1);
- et4000->acl.source_addr -= (et4000->acl.internal.source_off + 1);
- et4000->acl.dest_addr -= (et4000->acl.internal.dest_off + 1);
- et4000->acl.pattern_y--;
- if ((et4000->acl.pattern_y < 0) && !(et4000->acl.internal.pattern_wrap & 0x40)) {
- et4000->acl.pattern_y = et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7] - 1;
- et4000->acl.pattern_addr = et4000->acl.pattern_back + (et4000w32_wrap_x[et4000->acl.internal.pattern_wrap & 7] * (et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7] - 1));
+ rop = mixmap ? et4000->acl.internal.rop_fg : et4000->acl.internal.rop_bg;
+ mix_dat >>= 1;
+ mix_dat |= 0x80000000;
+
+ ROPMIX(rop, dest, pattern, source, out);
+
+ /*Write the data*/
+ svga->vram[et4000->acl.dest_addr & et4000->vram_mask] = out;
+ svga->changedvram[(et4000->acl.dest_addr & et4000->vram_mask) >> 12] = changeframecount;
+
+ if (et4000->acl.internal.xy_dir & 1)
+ et4000w32_decx(1, et4000);
+ else
+ et4000w32_incx(1, et4000);
+
+ et4000->acl.x_count--;
+ if (et4000->acl.x_count == 0xffff) {
+ et4000->acl.x_count = et4000->acl.internal.count_x;
+
+ if (et4000->acl.internal.xy_dir & 2) {
+ et4000w32_decy(et4000);
+ et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back - (et4000->acl.internal.dest_off + 1);
+ } else {
+ et4000w32_incy(et4000);
+ et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back + et4000->acl.internal.dest_off + 1;
}
- et4000->acl.source_y--;
- if ((et4000->acl.source_y < 0) && !(et4000->acl.internal.source_wrap & 0x40)) {
- et4000->acl.source_y = et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7] - 1;
- et4000->acl.source_addr = et4000->acl.source_back + (et4000w32_wrap_x[et4000->acl.internal.source_wrap & 7] * (et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7] - 1));
+
+ et4000->acl.pattern_x = et4000->acl.pattern_x_back;
+ et4000->acl.source_x = et4000->acl.source_x_back;
+
+ count--;
+ if (!count) {
+ et4000->acl.status &= ~ACL_XYST;
+ if (!(et4000->acl.internal.ctrl_routing & 7) || (et4000->acl.internal.ctrl_routing & 4)) {
+ et4000w32_log("W32i: end blit, xcount = %i\n", et4000->acl.x_count);
+ et4000->acl.status &= ~ACL_SSO;
+ }
+ return;
}
- et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back - (et4000->acl.internal.dest_off + 1);
- } else {
- et4000->acl.pattern_addr += (et4000->acl.internal.pattern_off + 1);
- et4000->acl.source_addr += (et4000->acl.internal.source_off + 1);
- et4000->acl.dest_addr += (et4000->acl.internal.dest_off + 1);
- et4000->acl.pattern_y++;
- if (et4000->acl.pattern_y == et4000w32_wrap_y[(et4000->acl.internal.pattern_wrap >> 4) & 7]) {
- et4000->acl.pattern_y = 0;
- et4000->acl.pattern_addr = et4000->acl.pattern_back;
- }
- et4000->acl.source_y++;
- if (et4000->acl.source_y == et4000w32_wrap_y[(et4000->acl.internal.source_wrap >> 4) & 7]) {
- et4000->acl.source_y = 0;
- et4000->acl.source_addr = et4000->acl.source_back;
- }
- et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back + (et4000->acl.internal.dest_off + 1);
}
+ }
+ } else {
+ while (count-- && (et4000->acl.y_count >= 0)) {
+ pattern = svga->vram[(et4000->acl.pattern_addr + et4000->acl.pattern_x) & et4000->vram_mask];
- et4000->acl.pattern_x = et4000->acl.pattern_x_back;
- et4000->acl.source_x = et4000->acl.source_x_back;
+ if (cpu_input == 1) {
+ source = src_dat & 0xff;
+ src_dat >>= 8;
+ } else /*The source data is from the display memory if the Control Routing register is not set to 1*/
+ source = svga->vram[(et4000->acl.source_addr + et4000->acl.source_x) & et4000->vram_mask];
- et4000->acl.y_count--;
- if (et4000->acl.y_count == 0xffff) {
- et4000->acl.status &= ~ACL_XYST;
- if (!(et4000->acl.internal.ctrl_routing & 7) || (et4000->acl.internal.ctrl_routing & 4)) {
- et4000w32_log("W32i: end blit, xcount = %i\n", et4000->acl.x_count);
- et4000->acl.status &= ~ACL_SSO;
+ dest = svga->vram[et4000->acl.dest_addr & et4000->vram_mask];
+ mixmap = mix_dat & 1;
+
+ /*Now determine the Raster Operation*/
+ rop = mixmap ? et4000->acl.internal.rop_fg : et4000->acl.internal.rop_bg;
+ mix_dat >>= 1;
+ mix_dat |= 0x80000000;
+
+ ROPMIX(rop, dest, pattern, source, out);
+
+ /*Write the data*/
+ svga->vram[et4000->acl.dest_addr & et4000->vram_mask] = out;
+ svga->changedvram[(et4000->acl.dest_addr & et4000->vram_mask) >> 12] = changeframecount;
+
+ if (et4000->acl.internal.xy_dir & 1)
+ et4000w32_decx(1, et4000);
+ else
+ et4000w32_incx(1, et4000);
+
+ et4000->acl.x_count--;
+ if (et4000->acl.x_count == 0xffff) {
+ et4000->acl.x_count = et4000->acl.internal.count_x;
+
+ if (et4000->acl.internal.xy_dir & 2) {
+ et4000w32_decy(et4000);
+ et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back - (et4000->acl.internal.dest_off + 1);
+ } else {
+ et4000w32_incy(et4000);
+ et4000->acl.dest_back = et4000->acl.dest_addr = et4000->acl.dest_back + et4000->acl.internal.dest_off + 1;
}
- et4000->acl.cpu_input_num = 0;
- return;
- }
- if (cpu_input)
- return;
+ et4000->acl.pattern_x = et4000->acl.pattern_x_back;
+ et4000->acl.source_x = et4000->acl.source_x_back;
+
+ et4000->acl.y_count--;
+ if (et4000->acl.y_count == 0xffff) {
+ et4000->acl.status &= ~ACL_XYST;
+ if (!(et4000->acl.internal.ctrl_routing & 7) || (et4000->acl.internal.ctrl_routing & 4)) {
+ et4000w32_log("W32i: end blit, xcount = %i\n", et4000->acl.x_count);
+ et4000->acl.status &= ~ACL_SSO;
+ }
+ et4000->acl.cpu_input_num = 0;
+ return;
+ }
+
+ if (cpu_input) {
+ return;
+ }
+ }
}
}
}
@@ -2334,7 +2458,7 @@ et4000w32p_hwcursor_draw(svga_t *svga, int displine)
uint8_t dat;
offset = svga->hwcursor_latch.xoff;
- if (et4000->type == ET4000W32) {
+ if ((et4000->type == ET4000W32) && (pitch == 32)) {
switch (svga->bpp) {
case 8:
minus_width = 0;
diff --git a/src/video/vid_mga.c b/src/video/vid_mga.c
index b557d1ce5..50ed4f5a3 100644
--- a/src/video/vid_mga.c
+++ b/src/video/vid_mga.c
@@ -896,9 +896,9 @@ mystique_recalctimings(svga_t *svga)
svga->ma = svga->maback = (svga->maback - (mystique->ma_latch_old << 2)) + (svga->ma_latch << 2);
mystique->ma_latch_old = svga->ma_latch;
}
-
+
svga->rowoffset <<= 1;
-
+
switch (mystique->xmulctrl & XMULCTRL_DEPTH_MASK) {
case XMULCTRL_DEPTH_8:
case XMULCTRL_DEPTH_2G8V16:
@@ -2249,7 +2249,8 @@ mystique_accel_ctrl_write_l(uint32_t addr, uint32_t val, void *p)
mystique->dwgreg.fcol = val;
break;
- case REG_SRC0: {
+ case REG_SRC0:
+ {
int x = 0, y = 0;
mystique->dwgreg.src[0] = val;
for (y = 0; y < 2; y++) {
@@ -2257,12 +2258,13 @@ mystique_accel_ctrl_write_l(uint32_t addr, uint32_t val, void *p)
mystique->dwgreg.pattern[y][x] = val & (1 << (x + (y * 16)));
}
}
- //pclog("SRC0 = 0x%08X\n", val);
+ // pclog("SRC0 = 0x%08X\n", val);
if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD)
blit_iload_write(mystique, mystique->dwgreg.src[0], 32);
}
break;
- case REG_SRC1: {
+ case REG_SRC1:
+ {
int x = 0, y = 0;
mystique->dwgreg.src[1] = val;
for (y = 2; y < 4; y++) {
@@ -2270,12 +2272,13 @@ mystique_accel_ctrl_write_l(uint32_t addr, uint32_t val, void *p)
mystique->dwgreg.pattern[y][x] = val & (1 << (x + ((y - 2) * 16)));
}
}
- //pclog("SRC1 = 0x%08X\n", val);
+ // pclog("SRC1 = 0x%08X\n", val);
if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD)
blit_iload_write(mystique, mystique->dwgreg.src[1], 32);
}
break;
- case REG_SRC2: {
+ case REG_SRC2:
+ {
int x = 0, y = 0;
mystique->dwgreg.src[2] = val;
for (y = 4; y < 6; y++) {
@@ -2283,12 +2286,13 @@ mystique_accel_ctrl_write_l(uint32_t addr, uint32_t val, void *p)
mystique->dwgreg.pattern[y][x] = val & (1 << (x + ((y - 4) * 16)));
}
}
- //pclog("SRC2 = 0x%08X\n", val);
+ // pclog("SRC2 = 0x%08X\n", val);
if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD)
blit_iload_write(mystique, mystique->dwgreg.src[2], 32);
break;
}
- case REG_SRC3: {
+ case REG_SRC3:
+ {
int x = 0, y = 0;
mystique->dwgreg.src[3] = val;
for (y = 6; y < 8; y++) {
@@ -2296,11 +2300,11 @@ mystique_accel_ctrl_write_l(uint32_t addr, uint32_t val, void *p)
mystique->dwgreg.pattern[y][x] = val & (1 << (x + ((y - 6) * 16)));
}
}
- //pclog("SRC3 = 0x%08X\n", val);
+ // pclog("SRC3 = 0x%08X\n", val);
if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD)
blit_iload_write(mystique, mystique->dwgreg.src[3], 32);
break;
- }
+ }
case REG_DMAPAD:
if (mystique->busy && (mystique->dwgreg.dwgctrl_running & DWGCTRL_OPCODE_MASK) == DWGCTRL_OPCODE_ILOAD)
@@ -5122,9 +5126,9 @@ mystique_hwcursor_draw(svga_t *svga, int displine)
case XCURCTRL_CURMODE_XGA:
for (x = 0; x < 64; x++) {
if (!(dat[1] & (1ull << 63)))
- buffer32->line[displine][offset + svga->x_add] = (dat[0] & (1ull << 63)) ? mystique->cursor.col[1] : mystique->cursor.col[0];
+ svga->monitor->target_buffer->line[displine][offset + svga->x_add] = (dat[0] & (1ull << 63)) ? mystique->cursor.col[1] : mystique->cursor.col[0];
else if (dat[0] & (1ull << 63))
- buffer32->line[displine][offset + svga->x_add] ^= 0xffffff;
+ svga->monitor->target_buffer->line[displine][offset + svga->x_add] ^= 0xffffff;
offset++;
dat[0] <<= 1;
diff --git a/src/video/vid_s3.c b/src/video/vid_s3.c
index c3eaa36a8..68b84d9db 100644
--- a/src/video/vid_s3.c
+++ b/src/video/vid_s3.c
@@ -5650,18 +5650,18 @@ polygon_setup(s3_t *s3)
out = (out & s3->accel.wrt_mask) | (old_dest_dat & ~s3->accel.wrt_mask); \
}
-#define WRITE(addr, dat) \
- if (s3->bpp == 0 && !s3->color_16bit) { \
- svga->vram[dword_remap(svga, addr) & s3->vram_mask] = dat; \
+#define WRITE(addr, dat) \
+ if (s3->bpp == 0 && !s3->color_16bit) { \
+ svga->vram[dword_remap(svga, addr) & s3->vram_mask] = dat; \
svga->changedvram[(dword_remap(svga, addr) & s3->vram_mask) >> 12] = svga->monitor->mon_changeframecount; \
- } else if (s3->bpp == 1 || s3->color_16bit) { \
- vram_w[dword_remap_w(svga, addr) & (s3->vram_mask >> 1)] = dat; \
+ } else if (s3->bpp == 1 || s3->color_16bit) { \
+ vram_w[dword_remap_w(svga, addr) & (s3->vram_mask >> 1)] = dat; \
svga->changedvram[(dword_remap_w(svga, addr) & (s3->vram_mask >> 1)) >> 11] = svga->monitor->mon_changeframecount; \
- } else if (s3->bpp == 2) { \
- svga->vram[dword_remap(svga, addr) & s3->vram_mask] = dat; \
+ } else if (s3->bpp == 2) { \
+ svga->vram[dword_remap(svga, addr) & s3->vram_mask] = dat; \
svga->changedvram[(dword_remap(svga, addr) & s3->vram_mask) >> 12] = svga->monitor->mon_changeframecount; \
- } else { \
- vram_l[dword_remap_l(svga, addr) & (s3->vram_mask >> 2)] = dat; \
+ } else { \
+ vram_l[dword_remap_l(svga, addr) & (s3->vram_mask >> 2)] = dat; \
svga->changedvram[(dword_remap_l(svga, addr) & (s3->vram_mask >> 2)) >> 10] = svga->monitor->mon_changeframecount; \
}
diff --git a/src/video/vid_s3_virge.c b/src/video/vid_s3_virge.c
index e2ecf8ae5..d79053f0e 100644
--- a/src/video/vid_s3_virge.c
+++ b/src/video/vid_s3_virge.c
@@ -4181,13 +4181,12 @@ s3_virge_init(const device_t *info)
s3_virge_overlay_draw);
virge->svga.hwcursor.cur_ysize = 64;
- if (bios_fn != NULL)
- {
- if (info->local == S3_VIRGE_GX2)
- rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x10000, 0xffff, 0, MEM_MAPPING_EXTERNAL);
- else
- rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
- }
+ if (bios_fn != NULL) {
+ if (info->local == S3_VIRGE_GX2)
+ rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x10000, 0xffff, 0, MEM_MAPPING_EXTERNAL);
+ else
+ rom_init(&virge->bios_rom, (char *) bios_fn, 0xc0000, 0x8000, 0x7fff, 0, MEM_MAPPING_EXTERNAL);
+ }
mem_mapping_disable(&virge->bios_rom.mapping);
diff --git a/src/video/vid_svga.c b/src/video/vid_svga.c
index 704c6f612..6f8cc0448 100644
--- a/src/video/vid_svga.c
+++ b/src/video/vid_svga.c
@@ -872,7 +872,7 @@ svga_poll(void *p)
svga->oddeven ^= 1;
svga->monitor->mon_changeframecount = svga->interlace ? 3 : 2;
- svga->vslines = 0;
+ svga->vslines = 0;
if (svga->interlace && svga->oddeven)
svga->ma = svga->maback = svga->ma_latch + (svga->rowoffset << 1) + ((svga->crtc[5] & 0x60) >> 5);
@@ -938,9 +938,9 @@ svga_init(const device_t *info, svga_t *svga, void *p, int memsize,
{
int c, d, e;
- svga->p = p;
+ svga->p = p;
svga->monitor_index = monitor_index_global;
- svga->monitor = &monitors[svga->monitor_index];
+ svga->monitor = &monitors[svga->monitor_index];
for (c = 0; c < 256; c++) {
e = c;
@@ -954,10 +954,10 @@ svga_init(const device_t *info, svga_t *svga, void *p, int memsize,
svga->attrregs[0x11] = 0;
svga->overscan_color = 0x000000;
- svga->monitor->mon_overscan_x = 16;
- svga->monitor->mon_overscan_y = 32;
- svga->x_add = 8;
- svga->y_add = 16;
+ svga->monitor->mon_overscan_x = 16;
+ svga->monitor->mon_overscan_y = 32;
+ svga->x_add = 8;
+ svga->y_add = 16;
svga->crtc[0] = 63;
svga->crtc[6] = 255;
diff --git a/src/video/vid_table.c b/src/video/vid_table.c
index fb6624ced..e4b53978b 100644
--- a/src/video/vid_table.c
+++ b/src/video/vid_table.c
@@ -199,7 +199,7 @@ video_cards[] = {
{ &s3_diamond_stealth_4000_pci_device },
{ &s3_trio3d2x_pci_device },
#if defined(DEV_BRANCH) && defined(USE_MGA)
- { &millennium_device },
+ { &millennium_device, VIDEO_FLAG_TYPE_SPECIAL },
{ &mystique_device },
{ &mystique_220_device },
#endif
diff --git a/src/video/vid_tvp3026_ramdac.c b/src/video/vid_tvp3026_ramdac.c
index 5ae5663f8..783b52abf 100644
--- a/src/video/vid_tvp3026_ramdac.c
+++ b/src/video/vid_tvp3026_ramdac.c
@@ -162,7 +162,7 @@ tvp3026_ramdac_out(uint16_t addr, int rs2, int rs3, uint8_t val, void *p, svga_t
case 0x0a: /* Indexed Data (RS value = 1010) */
switch (ramdac->ind_idx) {
case 0x06: /* Indirect Cursor Control */
- ramdac->ccr = val;
+ ramdac->ccr = val;
if (!(ramdac->ccr & 0x80)) {
svga->dac_hwcursor.cur_xsize = svga->dac_hwcursor.cur_ysize = 64;
svga->dac_hwcursor.x = ramdac->hwc_x - svga->dac_hwcursor.cur_xsize;
@@ -489,7 +489,7 @@ tvp3026_hwcursor_draw(svga_t *svga, int displine)
y_pos = displine;
x_pos = offset + svga->x_add;
- p = buffer32->line[y_pos];
+ p = svga->monitor->target_buffer->line[y_pos];
if (offset >= svga->dac_hwcursor_latch.x) {
switch (mode) {
diff --git a/src/video/vid_voodoo_banshee.c b/src/video/vid_voodoo_banshee.c
index 6b6af2a09..6ad91ad1f 100644
--- a/src/video/vid_voodoo_banshee.c
+++ b/src/video/vid_voodoo_banshee.c
@@ -1603,8 +1603,7 @@ banshee_read_linear(uint32_t addr, void *p)
cycles -= voodoo->read_time;
- if ((banshee->pci_regs[0x30] & 0x01) && addr >= banshee->bios_rom.mapping.base && addr < (banshee->bios_rom.mapping.base + banshee->bios_rom.sz))
- {
+ if ((banshee->pci_regs[0x30] & 0x01) && addr >= banshee->bios_rom.mapping.base && addr < (banshee->bios_rom.mapping.base + banshee->bios_rom.sz)) {
return rom_read(addr & (banshee->bios_rom.sz - 1), &banshee->bios_rom);
}
addr &= svga->decode_mask;
@@ -1639,8 +1638,7 @@ banshee_read_linear_w(uint32_t addr, void *p)
return banshee_read_linear(addr, p) | (banshee_read_linear(addr + 1, p) << 8);
cycles -= voodoo->read_time;
- if ((banshee->pci_regs[0x30] & 0x01) && addr >= banshee->bios_rom.mapping.base && addr < (banshee->bios_rom.mapping.base + banshee->bios_rom.sz))
- {
+ if ((banshee->pci_regs[0x30] & 0x01) && addr >= banshee->bios_rom.mapping.base && addr < (banshee->bios_rom.mapping.base + banshee->bios_rom.sz)) {
return rom_readw(addr & (banshee->bios_rom.sz - 1), &banshee->bios_rom);
}
addr &= svga->decode_mask;
@@ -1676,8 +1674,7 @@ banshee_read_linear_l(uint32_t addr, void *p)
cycles -= voodoo->read_time;
- if ((banshee->pci_regs[0x30] & 0x01) && addr >= banshee->bios_rom.mapping.base && addr < (banshee->bios_rom.mapping.base + banshee->bios_rom.sz))
- {
+ if ((banshee->pci_regs[0x30] & 0x01) && addr >= banshee->bios_rom.mapping.base && addr < (banshee->bios_rom.mapping.base + banshee->bios_rom.sz)) {
return rom_readl(addr & (banshee->bios_rom.sz - 1), &banshee->bios_rom);
}
addr &= svga->decode_mask;
@@ -2268,10 +2265,9 @@ banshee_overlay_draw(svga_t *svga, int displine)
case VIDPROCCFG_FILTER_MODE_DITHER_4X4:
if (banshee->voodoo->scrfilter && banshee->voodoo->scrfilterEnabled) {
- uint8_t fil[64 * 3];
- uint8_t fil3[64 * 3];
+ uint8_t fil[2048 * 3];
+ uint8_t fil3[2048 * 3];
- assert(svga->overlay_latch.cur_xsize <= 64);
if (banshee->vidProcCfg & VIDPROCCFG_H_SCALE_ENABLE) /* leilei HACK - don't know of real 4x1 hscaled behavior yet, double for now */
{
for (x = 0; x < svga->overlay_latch.cur_xsize; x++) {
@@ -2338,16 +2334,15 @@ banshee_overlay_draw(svga_t *svga, int displine)
case VIDPROCCFG_FILTER_MODE_DITHER_2X2:
if (banshee->voodoo->scrfilter && banshee->voodoo->scrfilterEnabled) {
- uint8_t fil[64 * 3];
- uint8_t soak[64 * 3];
- uint8_t soak2[64 * 3];
+ uint8_t fil[2048 * 3];
+ uint8_t soak[2048 * 3];
+ uint8_t soak2[2048 * 3];
- uint8_t samp1[64 * 3];
- uint8_t samp2[64 * 3];
- uint8_t samp3[64 * 3];
- uint8_t samp4[64 * 3];
+ uint8_t samp1[2048 * 3];
+ uint8_t samp2[2048 * 3];
+ uint8_t samp3[2048 * 3];
+ uint8_t samp4[2048 * 3];
- assert(svga->overlay_latch.cur_xsize <= 64);
src = &svga->vram[src_addr2 & svga->vram_mask];
OVERLAY_SAMPLE(banshee->overlay_buffer[1]);
for (x = 0; x < svga->overlay_latch.cur_xsize; x++) {
diff --git a/src/video/vid_voodoo_display.c b/src/video/vid_voodoo_display.c
index 34037605a..aded37e2d 100644
--- a/src/video/vid_voodoo_display.c
+++ b/src/video/vid_voodoo_display.c
@@ -493,8 +493,8 @@ voodoo_filterline_v2(voodoo_t *voodoo, uint8_t *fil, int column, uint16_t *src,
void
voodoo_callback(void *p)
{
- voodoo_t *voodoo = (voodoo_t *) p;
- monitor_t* monitor = &monitors[voodoo->monitor_index];
+ voodoo_t *voodoo = (voodoo_t *) p;
+ monitor_t *monitor = &monitors[voodoo->monitor_index];
if (voodoo->fbiInit0 & FBIINIT0_VGA_PASS) {
if (voodoo->line < voodoo->v_disp) {
diff --git a/src/video/video.c b/src/video/video.c
index d0e9ebb2c..0253e3c03 100644
--- a/src/video/video.c
+++ b/src/video/video.c
@@ -106,7 +106,6 @@ void *__cdecl (*video_copy)(void *_Dst, const void *_Src, size_t _Size) = memcpy
void *(*video_copy)(void *__restrict, const void *__restrict, size_t);
#endif
-
PALETTE cgapal = {
{0,0,0}, {0,42,0}, {42,0,0}, {42,21,0},
{0,0,0}, {0,42,42}, {42,0,42}, {42,42,42},
@@ -173,7 +172,6 @@ PALETTE cgapal_mono[6] = {
}
};
-
const uint32_t shade[5][256] =
{
{0}, // RGB Color (unused)
diff --git a/src/vnc.c b/src/vnc.c
index ef388939a..fcf966d65 100644
--- a/src/vnc.c
+++ b/src/vnc.c
@@ -88,8 +88,8 @@ vnc_mouse_poll(void)
mouse_x += ms.dx;
mouse_y += ms.dy;
- ms.dx = 0;
- ms.dy = 0;
+ ms.dx = 0;
+ ms.dy = 0;
// pclog("dx=%d, dy=%d, dwheel=%d\n", mouse_x, mouse_y, mouse_z);
}
@@ -98,6 +98,14 @@ vnc_mouse_poll(void)
mouse_buttons = ms.buttons;
b = ms.buttons;
}
+
+ mouse_x_abs = (double)ptr_x / (double)allowedX;
+ mouse_y_abs = (double)ptr_y / (double)allowedY;
+
+ if (mouse_x_abs > 1.0) mouse_x_abs = 1.0;
+ if (mouse_y_abs > 1.0) mouse_y_abs = 1.0;
+ if (mouse_x_abs < 0.0) mouse_x_abs = 0.0;
+ if (mouse_y_abs < 0.0) mouse_y_abs = 0.0;
}
static void
@@ -186,7 +194,7 @@ vnc_display(rfbClientPtr cl)
static void
vnc_blit(int x, int y, int w, int h, int monitor_index)
{
- int row;
+ int row;
if (monitor_index || (x < 0) || (y < 0) || (w < VNC_MIN_X) || (h < VNC_MIN_Y) || (w > VNC_MAX_X) || (h > VNC_MAX_Y) || (buffer32 == NULL)) {
video_blit_complete_monitor(monitor_index);
diff --git a/src/win/86Box.rc b/src/win/86Box.rc
index e180873ff..2932b7d62 100644
--- a/src/win/86Box.rc
+++ b/src/win/86Box.rc
@@ -42,7 +42,7 @@ BEGIN
#ifdef MTR_ENABLED
"T", IDM_ACTION_TRACE, CONTROL, VIRTKEY
#endif
- VK_PRIOR,IDM_VID_FULLSCREEN, VIRTKEY, CONTROL , ALT
+ // VK_PRIOR,IDM_VID_FULLSCREEN, VIRTKEY, CONTROL , ALT
VK_F11, IDM_ACTION_SCREENSHOT, VIRTKEY, CONTROL
VK_F12, IDM_ACTION_RESET_CAD, VIRTKEY, CONTROL
VK_PAUSE,IDM_ACTION_PAUSE, VIRTKEY
diff --git a/src/win/Makefile.mingw b/src/win/Makefile.mingw
index 3f6bf5cdb..76d402a83 100644
--- a/src/win/Makefile.mingw
+++ b/src/win/Makefile.mingw
@@ -631,9 +631,8 @@ HDDOBJ := hdd.o \
hdc_ide_cmd640.o hdc_ide_cmd646.o \
hdc_ide_sff8038i.o
-MINIVHDOBJ := cwalk.o libxml2_encoding.o minivhd_convert.o \
- minivhd_create.o minivhd_io.o minivhd_manage.o \
- minivhd_struct_rw.o minivhd_util.o
+MINIVHDOBJ := cwalk.o xml2_encoding.o convert.o \
+ create.o minivhd_io.o manage.o struct_rw.o minivhd_util.o
CDROMOBJ := cdrom.o \
cdrom_image_backend.o cdrom_image_viso.o cdrom_image.o cdrom_mitsumi.o
diff --git a/src/win/languages/cs-CZ.rc b/src/win/languages/cs-CZ.rc
index fe8a8a42b..a2fe0eaa6 100644
--- a/src/win/languages/cs-CZ.rc
+++ b/src/win/languages/cs-CZ.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Akce"
BEGIN
- MENUITEM "&Klávesnice vyžaduje záběr", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Pravý Ctrl je levý Alt", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Klávesnice vyžaduje záběr", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Pravý Ctrl je levý Alt", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Resetovat", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Resetovat", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "P&ozastavit", IDM_ACTION_PAUSE
+ MENUITEM "P&ozastavit", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&UkonÄit", IDM_ACTION_EXIT
+ MENUITEM "&UkonÄit", IDM_ACTION_EXIT
END
POPUP "&ZobrazenÃ"
BEGIN
- MENUITEM "&Schovat stavový řádek", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Schovat panel &nástrojů", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Schovat stavový řádek", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Schovat panel &nástrojů", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Měnitelná velikost okna", IDM_VID_RESIZE
- MENUITEM "&Pamatovat velikost a pozici", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Měnitelná velikost okna", IDM_VID_RESIZE
+ MENUITEM "&Pamatovat velikost a pozici", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Renderer"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "&Zadat velikost...", IDM_VID_SPECIFY_DIM
- MENUITEM "&Dodržovat poměr stran 4:3", IDM_VID_FORCE43
+ MENUITEM "&Zadat velikost...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&Dodržovat poměr stran 4:3", IDM_VID_FORCE43
POPUP "&Násobek zvětšenà okna"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Metoda &filtrovánÃ"
BEGIN
- MENUITEM "&NejbližšÃ", IDM_VID_FILTER_NEAREST
- MENUITEM "&LineárnÃ", IDM_VID_FILTER_LINEAR
+ MENUITEM "&NejbližšÃ", IDM_VID_FILTER_NEAREST
+ MENUITEM "&LineárnÃ", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Š&kálovánà HiDPI", IDM_VID_HIDPI
+ MENUITEM "Š&kálovánà HiDPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Celá obrazovka\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Celá obrazovka\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "RežÃm roztá&hnutà pÅ™i celé obrazovce"
BEGIN
- MENUITEM "&Roztáhnout", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
- MENUITEM "&Zachovat poměr stran", IDM_VID_FS_KEEPRATIO
- MENUITEM "&CeloÄÃselné Å¡kálovánÃ", IDM_VID_FS_INT
+ MENUITEM "&Roztáhnout", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Zachovat poměr stran", IDM_VID_FS_KEEPRATIO
+ MENUITEM "&CeloÄÃselné Å¡kálovánÃ", IDM_VID_FS_INT
END
POPUP "Nastavenà pro E&GA a (S)VGA"
BEGIN
- MENUITEM "&Převrátit barvy", IDM_VID_INVERT
+ MENUITEM "&Převrátit barvy", IDM_VID_INVERT
POPUP "&Typ VGA monitoru"
BEGIN
- MENUITEM "RGB &barevný", IDM_VID_GRAY_RGB
- MENUITEM "&OdstÃny Å¡edi", IDM_VID_GRAY_MONO
- MENUITEM "&Jantarová obrazovka", IDM_VID_GRAY_AMBER
- MENUITEM "&Zelená obrazovka", IDM_VID_GRAY_GREEN
- MENUITEM "&BÃlá obrazovka", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &barevný", IDM_VID_GRAY_RGB
+ MENUITEM "&OdstÃny Å¡edi", IDM_VID_GRAY_MONO
+ MENUITEM "&Jantarová obrazovka", IDM_VID_GRAY_AMBER
+ MENUITEM "&Zelená obrazovka", IDM_VID_GRAY_GREEN
+ MENUITEM "&BÃlá obrazovka", IDM_VID_GRAY_WHITE
END
POPUP "PÅ™evod na &odstÃny Å¡edi"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Průměr", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Průměr", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Přesah obrazu CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
- MENUITEM "&Upravit kontrast ÄernobÃlé obrazovky", IDM_VID_CGACON
+ MENUITEM "Přesah obrazu CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "&Upravit kontrast ÄernobÃlé obrazovky", IDM_VID_CGACON
END
- MENUITEM "&Média", IDM_MEDIA
+ MENUITEM "&Média", IDM_MEDIA
POPUP "&Nástroje"
BEGIN
- MENUITEM "&NastavenÃ...", IDM_CONFIG
- MENUITEM "&Aktualizovat ikony stavového řádku", IDM_UPDATE_ICONS
+ MENUITEM "&NastavenÃ...", IDM_CONFIG
+ MENUITEM "&Aktualizovat ikony stavového řádku", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "PoÅ™Ãdit &screenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "PoÅ™Ãdit &screenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Předvolby...", IDM_PREFERENCES
+ MENUITEM "&Předvolby...", IDM_PREFERENCES
#ifdef DISCORD
- MENUITEM "Povolit integraci s &Discordem", IDM_DISCORD
+ MENUITEM "Povolit integraci s &Discordem", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&ZesÃlenà zvuku", IDM_SND_GAIN
+ MENUITEM "&ZesÃlenà zvuku", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "ZaÄÃt trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Zastavit trace\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "ZaÄÃt trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Zastavit trace\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "Ná&pověda"
BEGIN
- MENUITEM "&Dokumentace", IDM_DOCS
- MENUITEM "&O programu 86Box", IDM_ABOUT
+ MENUITEM "&Dokumentace", IDM_DOCS
+ MENUITEM "&O programu 86Box", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nový obraz...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nový obraz...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ExistujÃcà obraz...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&ExistujÃcà obraz...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Nahrávat", IDM_CASSETTE_RECORD
- MENUITEM "&Přehrát", IDM_CASSETTE_PLAY
- MENUITEM "PÅ™etoÄit na &zaÄátek", IDM_CASSETTE_REWIND
- MENUITEM "PÅ™etoÄit na &konec", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Nahrávat", IDM_CASSETTE_RECORD
+ MENUITEM "&Přehrát", IDM_CASSETTE_PLAY
+ MENUITEM "PÅ™etoÄit na &zaÄátek", IDM_CASSETTE_REWIND
+ MENUITEM "PÅ™etoÄit na &konec", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "&Vyjmout", IDM_CASSETTE_EJECT
+ MENUITEM "&Vyjmout", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Obraz...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Obraz...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "&Vyjmout", IDM_CARTRIDGE_EJECT
+ MENUITEM "&Vyjmout", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nový obraz...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nový obraz...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ExistujÃcà obraz...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&ExistujÃcà obraz...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xportovat do 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xportovat do 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Vyjmout", IDM_FLOPPY_EJECT
+ MENUITEM "&Vyjmout", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ztišit", IDM_CDROM_MUTE
+ MENUITEM "&Ztišit", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&Vyjmout", IDM_CDROM_EMPTY
- MENUITEM "&NaÄÃst znova pÅ™edchozà obraz", IDM_CDROM_RELOAD
+ MENUITEM "&Vyjmout", IDM_CDROM_EMPTY
+ MENUITEM "&NaÄÃst znova pÅ™edchozà obraz", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Obraz...", IDM_CDROM_IMAGE
- MENUITEM "&Složka...", IDM_CDROM_DIR
+ MENUITEM "&Obraz...", IDM_CDROM_IMAGE
+ MENUITEM "&Složka...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nový obraz...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nový obraz...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ExistujÃcà obraz...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&ExistujÃcà obraz...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Vyjmout", IDM_ZIP_EJECT
- MENUITEM "&NaÄÃst znova pÅ™edchozà obraz", IDM_ZIP_RELOAD
+ MENUITEM "&Vyjmout", IDM_ZIP_EJECT
+ MENUITEM "&NaÄÃst znova pÅ™edchozà obraz", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nový obraz...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nový obraz...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ExistujÃcà obraz...", IDM_MO_IMAGE_EXISTING
- MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&ExistujÃcà obraz...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "ExistujÃcà obraz (&ochrana proti zápisu)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Vyjmout", IDM_MO_EJECT
- MENUITEM "&NaÄÃst znova pÅ™edchozà obraz", IDM_MO_RELOAD
+ MENUITEM "&Vyjmout", IDM_MO_EJECT
+ MENUITEM "&NaÄÃst znova pÅ™edchozà obraz", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Předvolby"
-#define STR_SND_GAIN "ZesÃlenà zvuku"
-#define STR_NEW_FLOPPY "Nový obraz"
-#define STR_CONFIG "NastavenÃ"
-#define STR_SPECIFY_DIM "Zadat rozmÄ›ry hlavnÃho okna"
+#define STR_PREFERENCES "Předvolby"
+#define STR_SND_GAIN "ZesÃlenà zvuku"
+#define STR_NEW_FLOPPY "Nový obraz"
+#define STR_CONFIG "NastavenÃ"
+#define STR_SPECIFY_DIM "Zadat rozmÄ›ry hlavnÃho okna"
-#define STR_OK "OK"
-#define STR_CANCEL "Storno"
-#define STR_GLOBAL "Uložit toto nastavenà jako &globálnà výchozà stav"
-#define STR_DEFAULT "&VýchozÃ"
-#define STR_LANGUAGE "Jazyk:"
-#define STR_ICONSET "Sada ikon:"
+#define STR_OK "OK"
+#define STR_CANCEL "Storno"
+#define STR_GLOBAL "Uložit toto nastavenà jako &globálnà výchozà stav"
+#define STR_DEFAULT "&VýchozÃ"
+#define STR_LANGUAGE "Jazyk:"
+#define STR_ICONSET "Sada ikon:"
-#define STR_GAIN "ZesÃlenÃ"
+#define STR_GAIN "ZesÃlenÃ"
-#define STR_FILE_NAME "Název souboru:"
-#define STR_DISK_SIZE "Velikost disku:"
-#define STR_RPM_MODE "RežÃm ot./m:"
-#define STR_PROGRESS "Průběh:"
+#define STR_FILE_NAME "Název souboru:"
+#define STR_DISK_SIZE "Velikost disku:"
+#define STR_RPM_MODE "RežÃm ot./m:"
+#define STR_PROGRESS "Průběh:"
-#define STR_WIDTH "Å ÃÅ™ka:"
-#define STR_HEIGHT "Výška:"
-#define STR_LOCK_TO_SIZE "Uzamknout na tyto rozměry"
+#define STR_WIDTH "Å ÃÅ™ka:"
+#define STR_HEIGHT "Výška:"
+#define STR_LOCK_TO_SIZE "Uzamknout na tyto rozměry"
-#define STR_MACHINE_TYPE "Typ poÄÃtaÄe:"
-#define STR_MACHINE "PoÄÃtaÄ:"
-#define STR_CONFIGURE "Nastavit"
-#define STR_CPU_TYPE "Procesor:"
-#define STR_CPU_SPEED "Rychlost:"
-#define STR_FPU "Koprocesor:"
-#define STR_WAIT_STATES "Čekacà stavy:"
-#define STR_MB "MB"
-#define STR_MEMORY "Pamět:"
-#define STR_TIME_SYNC "Synchronizace Äasu"
-#define STR_DISABLED "Vypnuta"
-#define STR_ENABLED_LOCAL "Zapnuta (mÃstnà Äas)"
-#define STR_ENABLED_UTC "Zapnuta (UTC)"
-#define STR_DYNAREC "Dynamický pÅ™ekladaÄ"
+#define STR_MACHINE_TYPE "Typ poÄÃtaÄe:"
+#define STR_MACHINE "PoÄÃtaÄ:"
+#define STR_CONFIGURE "Nastavit"
+#define STR_CPU_TYPE "Procesor:"
+#define STR_CPU_SPEED "Rychlost:"
+#define STR_FPU "Koprocesor:"
+#define STR_WAIT_STATES "Čekacà stavy:"
+#define STR_MB "MB"
+#define STR_MEMORY "Pamět:"
+#define STR_TIME_SYNC "Synchronizace Äasu"
+#define STR_DISABLED "Vypnuta"
+#define STR_ENABLED_LOCAL "Zapnuta (mÃstnà Äas)"
+#define STR_ENABLED_UTC "Zapnuta (UTC)"
+#define STR_DYNAREC "Dynamický pÅ™ekladaÄ"
-#define STR_VIDEO "Grafika:"
-#define STR_VIDEO_2 "Grafika 2:"
-#define STR_VOODOO "PoužÃt grafický akcelerátor Voodoo"
-#define STR_IBM8514 "Grafika IBM 8514/a"
-#define STR_XGA "Grafika XGA"
+#define STR_VIDEO "Grafika:"
+#define STR_VIDEO_2 "Grafika 2:"
+#define STR_VOODOO "PoužÃt grafický akcelerátor Voodoo"
+#define STR_IBM8514 "Grafika IBM 8514/a"
+#define STR_XGA "Grafika XGA"
-#define STR_MOUSE "Myš:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Myš:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "ZaÅ™Ãzenà na COM3:"
-#define STR_COM4 "ZaÅ™Ãzenà na COM4:"
-#define STR_LPT1 "ZaÅ™Ãzenà na LPT1:"
-#define STR_LPT2 "ZaÅ™Ãzenà na LPT2:"
-#define STR_LPT3 "ZaÅ™Ãzenà na LPT3:"
-#define STR_LPT4 "ZaÅ™Ãzenà na LPT4:"
-#define STR_SERIAL1 "Povolit port COM1"
-#define STR_SERIAL2 "Povolit port COM2"
-#define STR_SERIAL3 "Povolit port COM3"
-#define STR_SERIAL4 "Povolit port COM4"
-#define STR_PARALLEL1 "Povolit port LPT1"
-#define STR_PARALLEL2 "Povolit port LPT2"
-#define STR_PARALLEL3 "Povolit port LPT3"
-#define STR_PARALLEL4 "Povolit port LPT4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "ZaÅ™Ãzenà na COM1:"
+#define STR_COM2 "ZaÅ™Ãzenà na COM2:"
+#define STR_COM3 "ZaÅ™Ãzenà na COM3:"
+#define STR_COM4 "ZaÅ™Ãzenà na COM4:"
+#define STR_LPT1 "ZaÅ™Ãzenà na LPT1:"
+#define STR_LPT2 "ZaÅ™Ãzenà na LPT2:"
+#define STR_LPT3 "ZaÅ™Ãzenà na LPT3:"
+#define STR_LPT4 "ZaÅ™Ãzenà na LPT4:"
+#define STR_SERIAL1 "Povolit port COM1"
+#define STR_SERIAL2 "Povolit port COM2"
+#define STR_SERIAL3 "Povolit port COM3"
+#define STR_SERIAL4 "Povolit port COM4"
+#define STR_PARALLEL1 "Povolit port LPT1"
+#define STR_PARALLEL2 "Povolit port LPT2"
+#define STR_PARALLEL3 "Povolit port LPT3"
+#define STR_PARALLEL4 "Povolit port LPT4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "ŘadiÄ disku:"
-#define STR_FDC "Disketový Å™adiÄ:"
-#define STR_IDE_TER "TÅ™età řadiÄ IDE"
-#define STR_IDE_QUA "ÄŒtvrtý Å™adiÄ IDE"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "ŘadiÄ 1:"
-#define STR_SCSI_2 "ŘadiÄ 2:"
-#define STR_SCSI_3 "ŘadiÄ 3:"
-#define STR_SCSI_4 "ŘadiÄ 4:"
-#define STR_CASSETTE "Kazeta"
+#define STR_HDC "ŘadiÄ disku:"
+#define STR_FDC "Disketový Å™adiÄ:"
+#define STR_IDE_TER "TÅ™età řadiÄ IDE"
+#define STR_IDE_QUA "ÄŒtvrtý Å™adiÄ IDE"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "ŘadiÄ 1:"
+#define STR_SCSI_2 "ŘadiÄ 2:"
+#define STR_SCSI_3 "ŘadiÄ 3:"
+#define STR_SCSI_4 "ŘadiÄ 4:"
+#define STR_CASSETTE "Kazeta"
-#define STR_HDD "Pevné disky:"
-#define STR_NEW "&Nový..."
-#define STR_EXISTING "&ExistujÃcÃ..."
-#define STR_REMOVE "&Odebrat"
-#define STR_BUS "Sběrnice:"
-#define STR_CHANNEL "Kanál:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Pevné disky:"
+#define STR_NEW "&Nový..."
+#define STR_EXISTING "&ExistujÃcÃ..."
+#define STR_REMOVE "&Odebrat"
+#define STR_BUS "Sběrnice:"
+#define STR_CHANNEL "Kanál:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Zadat..."
-#define STR_SECTORS "Sektory:"
-#define STR_HEADS "Hlavy:"
-#define STR_CYLS "Cylindry:"
-#define STR_SIZE_MB "Velikost (MB):"
-#define STR_TYPE "Typ:"
-#define STR_IMG_FORMAT "Formát obrazu:"
-#define STR_BLOCK_SIZE "Velikost bloků:"
+#define STR_SPECIFY "&Zadat..."
+#define STR_SECTORS "Sektory:"
+#define STR_HEADS "Hlavy:"
+#define STR_CYLS "Cylindry:"
+#define STR_SIZE_MB "Velikost (MB):"
+#define STR_TYPE "Typ:"
+#define STR_IMG_FORMAT "Formát obrazu:"
+#define STR_BLOCK_SIZE "Velikost bloků:"
-#define STR_FLOPPY_DRIVES "Disketové mechaniky:"
-#define STR_TURBO "Turbo ÄasovánÃ"
-#define STR_CHECKBPB "Kontrola BPB"
-#define STR_CDROM_DRIVES "Mechaniky CD-ROM:"
-#define STR_CD_SPEED "Rychlost:"
-#define STR_EARLY "Časná mechanika"
+#define STR_FLOPPY_DRIVES "Disketové mechaniky:"
+#define STR_TURBO "Turbo ÄasovánÃ"
+#define STR_CHECKBPB "Kontrola BPB"
+#define STR_CDROM_DRIVES "Mechaniky CD-ROM:"
+#define STR_CD_SPEED "Rychlost:"
+#define STR_EARLY "Časná mechanika"
-#define STR_MO_DRIVES "Magnetooptické mechaniky:"
-#define STR_ZIP_DRIVES "Mechaniky ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Magnetooptické mechaniky:"
+#define STR_ZIP_DRIVES "Mechaniky ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA hodiny:"
-#define STR_ISAMEM "ISA rozÅ¡ÃÅ™enà pamÄ›ti"
-#define STR_ISAMEM_1 "Karta 1:"
-#define STR_ISAMEM_2 "Karta 2:"
-#define STR_ISAMEM_3 "Karta 3:"
-#define STR_ISAMEM_4 "Karta 4:"
-#define STR_BUGGER "ZaÅ™Ãzenà ISABugger"
-#define STR_POSTCARD "Karta pro kódy POST"
+#define STR_ISARTC "ISA hodiny:"
+#define STR_ISAMEM "ISA rozÅ¡ÃÅ™enà pamÄ›ti"
+#define STR_ISAMEM_1 "Karta 1:"
+#define STR_ISAMEM_2 "Karta 2:"
+#define STR_ISAMEM_3 "Karta 3:"
+#define STR_ISAMEM_4 "Karta 4:"
+#define STR_BUGGER "ZaÅ™Ãzenà ISABugger"
+#define STR_POSTCARD "Karta pro kódy POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Chyba"
- IDS_2050 "Kritická chyba"
- IDS_2051 " - PAUSED"
- IDS_2052 "Stiskněte Ctrl+Alt+PgDn pro návrat z režimu celé obrazovky."
- IDS_2053 "Rychlost"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Obrazy ZIP disků (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box nenalezl žádné použitelné image pamětà ROM.\n\nStáhněte sadu obrazů ROM a extrahujte ji do složky ""roms""."
- IDS_2057 "(prázdné)"
- IDS_2058 "Obrazy ZIP disků (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "Zap."
- IDS_2061 "Vyp."
- IDS_2062 "Všechny obrazy disků (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Základnà sektorové obrazy (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Obrazy povrchu (*.86F)\0*.86F\0"
- IDS_2063 "PoÄÃtaÄ ""%hs"" nenà dostupný, jelikož chybà obraz jeho pamÄ›ti ROM ve složce ""roms/machines"". Konfigurace se pÅ™epne na jiný dostupný poÄÃtaÄ."
+ 2048 "86Box"
+ IDS_2049 "Chyba"
+ IDS_2050 "Kritická chyba"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Stiskněte Ctrl+Alt+PgDn pro návrat z režimu celé obrazovky."
+ IDS_2053 "Rychlost"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Obrazy ZIP disků (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box nenalezl žádné použitelné image pamětà ROM.\n\nStáhněte sadu obrazů ROM a extrahujte ji do složky ""roms""."
+ IDS_2057 "(prázdné)"
+ IDS_2058 "Obrazy ZIP disků (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "Zap."
+ IDS_2061 "Vyp."
+ IDS_2062 "Všechny obrazy disků (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Základnà sektorové obrazy (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Obrazy povrchu (*.86F)\0*.86F\0"
+ IDS_2063 "PoÄÃtaÄ ""%hs"" nenà dostupný, jelikož chybà obraz jeho pamÄ›ti ROM ve složce ""roms/machines"". Konfigurace se pÅ™epne na jiný dostupný poÄÃtaÄ."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Video adaptér ""%hs"" nenà dostupný, jelikož chybà obraz jeho paměti ROM ve složce ""roms/video"". Konfigurace se přepne na jiný dostupný adaptér."
- IDS_2065 "PoÄÃtaÄ"
- IDS_2066 "Obraz"
- IDS_2067 "Vstupnà zaÅ™ÃzenÃ"
- IDS_2068 "Zvuk"
- IDS_2069 "SÃÅ¥"
- IDS_2070 "COM a LPT porty"
- IDS_2071 "ŘadiÄe úložiÅ¡tÄ›"
- IDS_2072 "Pevné disky"
- IDS_2073 "Disketové a CD-ROM mechaniky"
- IDS_2074 "Dalšà vymÄ›nitelná zaÅ™ÃzenÃ"
- IDS_2075 "Jiné pÅ™ÃsluÅ¡enstvÃ"
- IDS_2076 "Obrazy povrchu (*.86F)\0*.86F\0"
- IDS_2077 "Klikněte pro zabranà myši"
- IDS_2078 "Stiskněte F8+F12 pro uvolněnà myši"
- IDS_2079 "StisknÄ›te F8+F12 nebo prostÅ™ednà tlaÄÃtko pro uvolnÄ›nà myÅ¡i"
+ IDS_2064 "Video adaptér ""%hs"" nenà dostupný, jelikož chybà obraz jeho paměti ROM ve složce ""roms/video"". Konfigurace se přepne na jiný dostupný adaptér."
+ IDS_2065 "PoÄÃtaÄ"
+ IDS_2066 "Obraz"
+ IDS_2067 "Vstupnà zaÅ™ÃzenÃ"
+ IDS_2068 "Zvuk"
+ IDS_2069 "SÃÅ¥"
+ IDS_2070 "COM a LPT porty"
+ IDS_2071 "ŘadiÄe úložiÅ¡tÄ›"
+ IDS_2072 "Pevné disky"
+ IDS_2073 "Disketové a CD-ROM mechaniky"
+ IDS_2074 "Dalšà vymÄ›nitelná zaÅ™ÃzenÃ"
+ IDS_2075 "Jiné pÅ™ÃsluÅ¡enstvÃ"
+ IDS_2076 "Obrazy povrchu (*.86F)\0*.86F\0"
+ IDS_2077 "Klikněte pro zabranà myši"
+ IDS_2078 "Stiskněte F8+F12 pro uvolněnà myši"
+ IDS_2079 "StisknÄ›te F8+F12 nebo prostÅ™ednà tlaÄÃtko pro uvolnÄ›nà myÅ¡i"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Nastala chyba při inicializaci knihovny FluidSynth."
- IDS_2081 "Sběrnice"
- IDS_2082 "Soubor"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Nastala chyba při inicializaci knihovny FluidSynth."
+ IDS_2081 "Sběrnice"
+ IDS_2082 "Soubor"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Kontrola BPB"
- IDS_2089 "KB"
- IDS_2090 "Nastala chyba při inicializaci video rendereru."
- IDS_2091 "VýchozÃ"
- IDS_2092 "%i Äekacà stav(y)"
- IDS_2093 "Typ"
- IDS_2094 "Nastala chyba při inicializaci knihovny PCap"
- IDS_2095 "Nebyla nalezena žádná PCap zaÅ™ÃzenÃ"
- IDS_2096 "Neplatné PCap zaÅ™ÃzenÃ"
- IDS_2097 "Standardnà 2tlaÄÃtkový joystick"
- IDS_2098 "Standardnà 4tlaÄÃtkový joystick"
- IDS_2099 "Standardnà 6tlaÄÃtkový joystick"
- IDS_2100 "Standardnà 8tlaÄÃtkový joystick"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Žadné"
- IDS_2105 "Nebylo možné nahrát klávesnicové zkratky."
- IDS_2106 "Nebylo možné zaregistrovat raw input."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Disketová mechanika %i (%s): %ls"
- IDS_2110 "VÅ¡echny obrazy (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0RozÅ¡ÃÅ™ené sektorové obrazy (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Základnà sektorové obrazy (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Obrazy magnetického toku (*.FDI)\0*.FDI\0Obrazy povrchu (*.86F;*.MFM)\0*.86F;*.MFM\0VÅ¡echny soubory (*.*)\0*.*\0"
- IDS_2111 "Nastala chyba při inicializaci knihovny FreeType"
- IDS_2112 "Nastala chyba při inicializaci knihovny SDL, je potřeba SDL2.dll"
- IDS_2113 "Opravdu chcete resetovat emulovaný poÄÃtaÄ?"
- IDS_2114 "Opravdu chcete ukonÄit 86Box?"
- IDS_2115 "Nastala chyba při inicializaci knihovny Ghostscript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Všechny soubory (*.*)\0*.*\0"
- IDS_2118 "VÃtejte v programu 86Box!"
- IDS_2119 "VestavÄ›ný Å™adiÄ"
- IDS_2120 "UkonÄit"
- IDS_2121 "Nebyly nalezeny žádné obrazy ROM"
- IDS_2122 "Chcete uložit nastaven�"
- IDS_2123 "PokraÄovánÃm se resetuje emulovaný poÄÃtaÄ."
- IDS_2124 "Uložit"
- IDS_2125 "O programu 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Kontrola BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Nastala chyba při inicializaci video rendereru."
+ IDS_2091 "VýchozÃ"
+ IDS_2092 "%i Äekacà stav(y)"
+ IDS_2093 "Typ"
+ IDS_2094 "Nastala chyba při inicializaci knihovny PCap"
+ IDS_2095 "Nebyla nalezena žádná PCap zaÅ™ÃzenÃ"
+ IDS_2096 "Neplatné PCap zaÅ™ÃzenÃ"
+ IDS_2097 "Standardnà 2tlaÄÃtkový joystick"
+ IDS_2098 "Standardnà 4tlaÄÃtkový joystick"
+ IDS_2099 "Standardnà 6tlaÄÃtkový joystick"
+ IDS_2100 "Standardnà 8tlaÄÃtkový joystick"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Žadné"
+ IDS_2105 "Nebylo možné nahrát klávesnicové zkratky."
+ IDS_2106 "Nebylo možné zaregistrovat raw input."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Disketová mechanika %i (%s): %ls"
+ IDS_2110 "VÅ¡echny obrazy (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0RozÅ¡ÃÅ™ené sektorové obrazy (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Základnà sektorové obrazy (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Obrazy magnetického toku (*.FDI)\0*.FDI\0Obrazy povrchu (*.86F;*.MFM)\0*.86F;*.MFM\0VÅ¡echny soubory (*.*)\0*.*\0"
+ IDS_2111 "Nastala chyba při inicializaci knihovny FreeType"
+ IDS_2112 "Nastala chyba při inicializaci knihovny SDL, je potřeba SDL2.dll"
+ IDS_2113 "Opravdu chcete resetovat emulovaný poÄÃtaÄ?"
+ IDS_2114 "Opravdu chcete ukonÄit 86Box?"
+ IDS_2115 "Nastala chyba při inicializaci knihovny Ghostscript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Všechny soubory (*.*)\0*.*\0"
+ IDS_2118 "VÃtejte v programu 86Box!"
+ IDS_2119 "VestavÄ›ný Å™adiÄ"
+ IDS_2120 "UkonÄit"
+ IDS_2121 "Nebyly nalezeny žádné obrazy ROM"
+ IDS_2122 "Chcete uložit nastaven�"
+ IDS_2123 "PokraÄovánÃm se resetuje emulovaný poÄÃtaÄ."
+ IDS_2124 "Uložit"
+ IDS_2125 "O programu 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Emulátor starých poÄÃtaÄů\n\nAutoÅ™i: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nZveÅ™ejnÄ›no pod licencà GNU General Public License verze 2 nebo novÄ›jÅ¡Ã. Viz soubor LICENSE pro vÃce informacÃ."
- IDS_2128 "OK"
- IDS_2129 "Hardware nenà dostupný"
+ IDS_2127 "Emulátor starých poÄÃtaÄů\n\nAutoÅ™i: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nZveÅ™ejnÄ›no pod licencà GNU General Public License verze 2 nebo novÄ›jÅ¡Ã. Viz soubor LICENSE pro vÃce informacÃ."
+ IDS_2128 "OK"
+ IDS_2129 "Hardware nenà dostupný"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "UjistÄ›te se, že je nainstalován " LIB_NAME_PCAP " a použÃváte sÃÅ¥ové pÅ™ipojenà s nÃm kompatibilnÃ."
- IDS_2131 "Neplatná konfigurace"
+ IDS_2130 "UjistÄ›te se, že je nainstalován " LIB_NAME_PCAP " a použÃváte sÃÅ¥ové pÅ™ipojenà s nÃm kompatibilnÃ."
+ IDS_2131 "Neplatná konfigurace"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " je potřeba pro emulaci ESC/P tiskáren."
+ IDS_2132 LIB_NAME_FREETYPE " je potřeba pro emulaci ESC/P tiskáren."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " je potřeba pro automatický převod PostScript dokumentů do PDF.\n\nJakékoliv dokumenty vytisknuté přes obecnou PostScriptovou tiskárnu budou uloženy jako PostScript (.ps) soubory."
+ IDS_2133 LIB_NAME_GS " je potřeba pro automatický převod PostScript dokumentů do PDF.\n\nJakékoliv dokumenty vytisknuté přes obecnou PostScriptovou tiskárnu budou uloženy jako PostScript (.ps) soubory."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " je potřeba pro MIDI výstup přes knihovnu FluidSynth."
- IDS_2135 "Vstup do režimu celé obrazovky"
- IDS_2136 "Nezobrazovat dále tuto zprávu"
- IDS_2137 "NeukonÄovat"
- IDS_2138 "Resetovat"
- IDS_2139 "Neresetovat"
- IDS_2140 "Obraz magnetooptického disku (*.IM?;*.MDI)\0*.IM?;*.MDI\0Všechny soubory (*.*)\0*.*\0"
- IDS_2141 "Obraz CD-ROM disku (*.ISO;*.CUE)\0*.ISO;*.CUE\0Všechny soubory (*.*)\0*.*\0"
- IDS_2142 "Konfigurace zaÅ™Ãzenà %hs"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " je potřeba pro MIDI výstup přes knihovnu FluidSynth."
+ IDS_2135 "Vstup do režimu celé obrazovky"
+ IDS_2136 "Nezobrazovat dále tuto zprávu"
+ IDS_2137 "NeukonÄovat"
+ IDS_2138 "Resetovat"
+ IDS_2139 "Neresetovat"
+ IDS_2140 "Obraz magnetooptického disku (*.IM?;*.MDI)\0*.IM?;*.MDI\0Všechny soubory (*.*)\0*.*\0"
+ IDS_2141 "Obraz CD-ROM disku (*.ISO;*.CUE)\0*.ISO;*.CUE\0Všechny soubory (*.*)\0*.*\0"
+ IDS_2142 "Konfigurace zaÅ™Ãzenà %hs"
IDS_2143 "Monitor je v režimu spánku"
- IDS_2144 "Shadery OpenGL (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
- IDS_2145 "Možnosti OpenGL"
- IDS_2146 "PokouÅ¡Ãte se spustit nepodporovanou konfiguraci"
- IDS_2147 "Pro tuto konfiguraci bylo vypnuto filtrovánà procesorů podle zvoleného poÄÃtaÄe.\n\nToto umožňuje zvolit procesor, který by jinak se zvoleným poÄÃtaÄem nebyl kompatibilnÃ. Můžou vÅ¡ak nastat potÞe s BIOSem nebo jiným softwarem.\n\nPovolenà tohoto nastavenà nenà oficiálnÄ› podporováno a jakákoliv hlášenà o chybách mohou být uzavÅ™eny jako neplatné."
- IDS_2148 "PokraÄovat"
- IDS_2149 "Kazeta: %s"
- IDS_2150 "Kazetové nahrávky (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Všechny soubory (*.*)\0*.*\0"
- IDS_2151 "Cartridge %i: %ls"
- IDS_2152 "Obrazy cartridge (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Všechny soubory (*.*)\0*.*\0"
- IDS_2153 "Error initializing renderer"
- IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
- IDS_2155 "Obnovit"
- IDS_2156 "Pozastavit"
- IDS_2157 "Stisknout Ctrl+Alt+Delete"
- IDS_2158 "Stisknout Ctrl+Alt+Esc"
- IDS_2159 "Resetovat"
- IDS_2160 "Vypnout skrze rozhranà ACPI"
- IDS_2161 "NastavenÃ"
+ IDS_2144 "Shadery OpenGL (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
+ IDS_2145 "Možnosti OpenGL"
+ IDS_2146 "PokouÅ¡Ãte se spustit nepodporovanou konfiguraci"
+ IDS_2147 "Pro tuto konfiguraci bylo vypnuto filtrovánà procesorů podle zvoleného poÄÃtaÄe.\n\nToto umožňuje zvolit procesor, který by jinak se zvoleným poÄÃtaÄem nebyl kompatibilnÃ. Můžou vÅ¡ak nastat potÞe s BIOSem nebo jiným softwarem.\n\nPovolenà tohoto nastavenà nenà oficiálnÄ› podporováno a jakákoliv hlášenà o chybách mohou být uzavÅ™eny jako neplatné."
+ IDS_2148 "PokraÄovat"
+ IDS_2149 "Kazeta: %s"
+ IDS_2150 "Kazetové nahrávky (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Všechny soubory (*.*)\0*.*\0"
+ IDS_2151 "Cartridge %i: %ls"
+ IDS_2152 "Obrazy cartridge (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Všechny soubory (*.*)\0*.*\0"
+ IDS_2153 "Error initializing renderer"
+ IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+ IDS_2155 "Obnovit"
+ IDS_2156 "Pozastavit"
+ IDS_2157 "Stisknout Ctrl+Alt+Delete"
+ IDS_2158 "Stisknout Ctrl+Alt+Esc"
+ IDS_2159 "Resetovat"
+ IDS_2160 "Vypnout skrze rozhranà ACPI"
+ IDS_2161 "NastavenÃ"
IDS_2162 "Časná mechanika"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Pevný disk (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "CD-ROM mechaniky pro rozhranà MFM/RLL nebo ESDI nikdy neexistovaly"
- IDS_4100 "VlastnÃ..."
- IDS_4101 "Vlastnà (velký)..."
- IDS_4102 "Přidat nový pevný disk"
- IDS_4103 "PÅ™idat existujÃcà pevný disk"
- IDS_4104 "Obraz disku formátu HDI nemůžou být většà než 4 GB."
- IDS_4105 "Obraz disku nemůžou být většà než 127 GB."
- IDS_4106 "Obrazy pevného disku (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Všechny soubory (*.*)\0*.*\0"
- IDS_4107 "Nebylo možné pÅ™eÄÃst soubor"
- IDS_4108 "Nebylo možné zapisovat do souboru"
- IDS_4109 "Obraz disku ve formátu HDI nebo HDX s velikostà sektoru jinou než 512 bajtů nejsou podporovány."
- IDS_4110 "USB zatÃm nenà podporováno."
- IDS_4111 "Soubor obrazu disku již existuje"
- IDS_4112 "Zadejte platný název souboru."
- IDS_4113 "Obraz disku byl vytvořen"
- IDS_4114 "UjistÄ›te se, že soubor existuje a lze jej pÅ™eÄÃst."
- IDS_4115 "Ujistěte se, že se do složky, kde se má soubor uložit, dá zapisovat."
- IDS_4116 "Obraz disku je pÅ™ÃliÅ¡ velký"
- IDS_4117 "Nezapomeňte nově vytvořený disk rozdělit a naformátovat."
- IDS_4118 "Zvolený soubor bude pÅ™epsán. Opravdu jej chcete použÃt?"
- IDS_4119 "Nepodporovaný obraz disku"
- IDS_4120 "Přepsat"
- IDS_4121 "Nepřepisovat"
- IDS_4122 "Surový obraz (.img)"
- IDS_4123 "HDI obraz (.hdi)"
- IDS_4124 "HDX obraz (.hdx)"
- IDS_4125 "VHD s pevnou velikostà (.vhd)"
- IDS_4126 "VHD s dynamickou velikostà (.vhd)"
- IDS_4127 "RozdÃlový VHD (.vhd)"
- IDS_4128 "Velké bloky (2 MB)"
- IDS_4129 "Malé bloky (512 KB)"
- IDS_4130 "Soubory VHD (*.VHD)\0*.VHD\0Všechny soubory (*.*)\0*.*\0"
- IDS_4131 "Vyberte nadřazený virtuálnà disk"
- IDS_4132 "To může znamenat, že se obsahy nadÅ™azeného disku zmÄ›nily po vytvoÅ™enà rozdÃlového disku.\n\nTato chyba také může nastat, pokud byl obraz disku kopÃrován nebo pÅ™esunut, nebo kvůli chybÄ› v programu, který jej vytvoÅ™il.\n\nChcete Äasová razÃtka opravit?"
- IDS_4133 "ÄŒasová razÃtka nadÅ™azeného a podÅ™azeného disku nesouhlasÃ"
- IDS_4134 "Nebylo možné opravit Äasové razÃtko VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "CD-ROM mechaniky pro rozhranà MFM/RLL nebo ESDI nikdy neexistovaly"
+ IDS_4100 "VlastnÃ..."
+ IDS_4101 "Vlastnà (velký)..."
+ IDS_4102 "Přidat nový pevný disk"
+ IDS_4103 "PÅ™idat existujÃcà pevný disk"
+ IDS_4104 "Obraz disku formátu HDI nemůžou být většà než 4 GB."
+ IDS_4105 "Obraz disku nemůžou být většà než 127 GB."
+ IDS_4106 "Obrazy pevného disku (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Všechny soubory (*.*)\0*.*\0"
+ IDS_4107 "Nebylo možné pÅ™eÄÃst soubor"
+ IDS_4108 "Nebylo možné zapisovat do souboru"
+ IDS_4109 "Obraz disku ve formátu HDI nebo HDX s velikostà sektoru jinou než 512 bajtů nejsou podporovány."
+ IDS_4110 "USB zatÃm nenà podporováno."
+ IDS_4111 "Soubor obrazu disku již existuje"
+ IDS_4112 "Zadejte platný název souboru."
+ IDS_4113 "Obraz disku byl vytvořen"
+ IDS_4114 "UjistÄ›te se, že soubor existuje a lze jej pÅ™eÄÃst."
+ IDS_4115 "Ujistěte se, že se do složky, kde se má soubor uložit, dá zapisovat."
+ IDS_4116 "Obraz disku je pÅ™ÃliÅ¡ velký"
+ IDS_4117 "Nezapomeňte nově vytvořený disk rozdělit a naformátovat."
+ IDS_4118 "Zvolený soubor bude pÅ™epsán. Opravdu jej chcete použÃt?"
+ IDS_4119 "Nepodporovaný obraz disku"
+ IDS_4120 "Přepsat"
+ IDS_4121 "Nepřepisovat"
+ IDS_4122 "Surový obraz (.img)"
+ IDS_4123 "HDI obraz (.hdi)"
+ IDS_4124 "HDX obraz (.hdx)"
+ IDS_4125 "VHD s pevnou velikostà (.vhd)"
+ IDS_4126 "VHD s dynamickou velikostà (.vhd)"
+ IDS_4127 "RozdÃlový VHD (.vhd)"
+ IDS_4128 "Velké bloky (2 MB)"
+ IDS_4129 "Malé bloky (512 KB)"
+ IDS_4130 "Soubory VHD (*.VHD)\0*.VHD\0Všechny soubory (*.*)\0*.*\0"
+ IDS_4131 "Vyberte nadřazený virtuálnà disk"
+ IDS_4132 "To může znamenat, že se obsahy nadÅ™azeného disku zmÄ›nily po vytvoÅ™enà rozdÃlového disku.\n\nTato chyba také může nastat, pokud byl obraz disku kopÃrován nebo pÅ™esunut, nebo kvůli chybÄ› v programu, který jej vytvoÅ™il.\n\nChcete Äasová razÃtka opravit?"
+ IDS_4133 "ÄŒasová razÃtka nadÅ™azeného a podÅ™azeného disku nesouhlasÃ"
+ IDS_4134 "Nebylo možné opravit Äasové razÃtko VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Vypnuto"
- IDS_5381 "ATAPI"
+ IDS_5376 "Vypnuto"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Vypnuto"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Vypnuto"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "Dokonalé otáÄky za minutu"
- IDS_6145 "1% pod dokonalými ot./m"
- IDS_6146 "1.5% pod dokonalými ot./m"
- IDS_6147 "2% pod dokonalými ot./m"
+ IDS_6144 "Dokonalé otáÄky za minutu"
+ IDS_6145 "1% pod dokonalými ot./m"
+ IDS_6146 "1.5% pod dokonalými ot./m"
+ IDS_6147 "2% pod dokonalými ot./m"
- IDS_7168 "(Výchozà nastavenà systému)"
+ IDS_7168 "(Výchozà nastavenà systému)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Czech (Czech Republic) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/de-DE.rc b/src/win/languages/de-DE.rc
index 58d799539..735aac2b2 100644
--- a/src/win/languages/de-DE.rc
+++ b/src/win/languages/de-DE.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Aktionen"
BEGIN
- MENUITEM "&Tastatur benötigt das Einfangen des Mauszeigers", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Die rechte Strg-Taste ist die Linke Alt-Taste", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Tastatur benötigt das Einfangen des Mauszeigers", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Die rechte Strg-Taste ist die Linke Alt-Taste", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Hard-Reset...", IDM_ACTION_HRESET
- MENUITEM "&Strg+Alt+Entf\tStrg+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Hard-Reset...", IDM_ACTION_HRESET
+ MENUITEM "&Strg+Alt+Entf\tStrg+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Strg+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Strg+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pause", IDM_ACTION_PAUSE
+ MENUITEM "&Pause", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "Be&enden...", IDM_ACTION_EXIT
+ MENUITEM "Be&enden...", IDM_ACTION_EXIT
END
POPUP "&Ansicht"
BEGIN
- MENUITEM "&Statusleiste ausblenden", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "&Werkzeugleiste ausblenden", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Statusleiste ausblenden", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "&Werkzeugleiste ausblenden", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Größenverstellbares Fenster", IDM_VID_RESIZE
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Größenverstellbares Fenster", IDM_VID_RESIZE
MENUITEM "&Größe && Position merken", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "Re&nderer"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0-Kern)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0-Kern)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Fenstergröße einstellen...", IDM_VID_SPECIFY_DIM
- MENUITEM "&4:3-Seitenverhältnis erzwingen", IDM_VID_FORCE43
+ MENUITEM "Fenstergröße einstellen...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&4:3-Seitenverhältnis erzwingen", IDM_VID_FORCE43
POPUP "&Fensterskalierungsfaktor"
BEGIN
- MENUITEM "&0,5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1,&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0,5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1,&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Filteringmethode"
BEGIN
- MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Hi&DPI-Skalierung", IDM_VID_HIDPI
+ MENUITEM "Hi&DPI-Skalierung", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Vollbild\tStrg+Alt+Bild auf", IDM_VID_FULLSCREEN
+ MENUITEM "&Vollbild\tStrg+Alt+Bild auf", IDM_VID_FULLSCREEN
POPUP "&Stretching-Modus im Vollbildmodus"
BEGIN
- MENUITEM "&Vollbild-Stretching", IDM_VID_FS_FULL
- MENUITEM "&4:3-Seitenverhältnis erzwingen", IDM_VID_FS_43
+ MENUITEM "&Vollbild-Stretching", IDM_VID_FS_FULL
+ MENUITEM "&4:3-Seitenverhältnis erzwingen", IDM_VID_FS_43
MENUITEM "&Quadratische Pixel (Seitenverhältnis beibehalten)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Integer-Skalierung", IDM_VID_FS_INT
+ MENUITEM "&Integer-Skalierung", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGA-Einstellungen"
BEGIN
- MENUITEM "&Invertierte VGA-Anzeige", IDM_VID_INVERT
+ MENUITEM "&Invertierte VGA-Anzeige", IDM_VID_INVERT
POPUP "&VGA-Bildschirmtyp"
BEGIN
- MENUITEM "&RGB-Farbe", IDM_VID_GRAY_RGB
- MENUITEM "&RGB-Graustufen", IDM_VID_GRAY_MONO
- MENUITEM "&Bernstein-Monitor", IDM_VID_GRAY_AMBER
- MENUITEM "&Grüner Monitor", IDM_VID_GRAY_GREEN
- MENUITEM "&Weißer Monitor", IDM_VID_GRAY_WHITE
+ MENUITEM "&RGB-Farbe", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB-Graustufen", IDM_VID_GRAY_MONO
+ MENUITEM "&Bernstein-Monitor", IDM_VID_GRAY_AMBER
+ MENUITEM "&Grüner Monitor", IDM_VID_GRAY_GREEN
+ MENUITEM "&Weißer Monitor", IDM_VID_GRAY_WHITE
END
POPUP "Methode zur &Graustufenkonversion"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Durchschnittsmethode", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Durchschnittsmethode", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Overscan für CGA/PCjr/Tandy/E&GA/(S)VGA-Displays", IDM_VID_OVERSCAN
+ MENUITEM "Overscan für CGA/PCjr/Tandy/E&GA/(S)VGA-Displays", IDM_VID_OVERSCAN
MENUITEM "Kontrast für &monochrome Displays ändern", IDM_VID_CGACON
END
- MENUITEM "&Medien", IDM_MEDIA
+ MENUITEM "&Medien", IDM_MEDIA
POPUP "&Werkzeuge"
BEGIN
- MENUITEM "&Optionen...", IDM_CONFIG
- MENUITEM "&Statusleistenicons aktualisieren", IDM_UPDATE_ICONS
+ MENUITEM "&Optionen...", IDM_CONFIG
+ MENUITEM "&Statusleistenicons aktualisieren", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "S&creenshot aufnehmen\tStrg+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "S&creenshot aufnehmen\tStrg+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Einstellungen...", IDM_PREFERENCES
+ MENUITEM "&Einstellungen...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "&Discord-Integration aktivieren", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&Klangverstärkung...", IDM_SND_GAIN
+ MENUITEM "&Klangverstärkung...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Tracing starten\tStrg+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Tracing beenden\tStrg+T", IDM_ACTION_END_TRACE
+ MENUITEM "Tracing starten\tStrg+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Tracing beenden\tStrg+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Hilfe"
BEGIN
- MENUITEM "&Dokumentation...", IDM_DOCS
- MENUITEM "&Über 86Box...", IDM_ABOUT
+ MENUITEM "&Dokumentation...", IDM_DOCS
+ MENUITEM "&Über 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Neues Image...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Neues Image...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Bestehendes Image...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Bestehendes Image...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Aufnehmen", IDM_CASSETTE_RECORD
- MENUITEM "&Abspielen", IDM_CASSETTE_PLAY
- MENUITEM "&An den Anfang zurückspulen", IDM_CASSETTE_REWIND
- MENUITEM "&An das Ende vorspulen", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Aufnehmen", IDM_CASSETTE_RECORD
+ MENUITEM "&Abspielen", IDM_CASSETTE_PLAY
+ MENUITEM "&An den Anfang zurückspulen", IDM_CASSETTE_REWIND
+ MENUITEM "&An das Ende vorspulen", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "A&uswerfen", IDM_CASSETTE_EJECT
+ MENUITEM "A&uswerfen", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Cartridgeimage...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Cartridgeimage...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "A&uswerfen", IDM_CARTRIDGE_EJECT
+ MENUITEM "A&uswerfen", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Neues Image...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Neues Image...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Bestehendes Image...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Bestehendes Image...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&In das 86F-Format e&xportieren...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "&In das 86F-Format e&xportieren...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Auswerfen", IDM_FLOPPY_EJECT
+ MENUITEM "&Auswerfen", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Stummschalten", IDM_CDROM_MUTE
+ MENUITEM "&Stummschalten", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "L&eer", IDM_CDROM_EMPTY
- MENUITEM "&Voriges Image neu laden", IDM_CDROM_RELOAD
+ MENUITEM "L&eer", IDM_CDROM_EMPTY
+ MENUITEM "&Voriges Image neu laden", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Image...", IDM_CDROM_IMAGE
- MENUITEM "&Verzeichnis...", IDM_CDROM_DIR
+ MENUITEM "&Image...", IDM_CDROM_IMAGE
+ MENUITEM "&Verzeichnis...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Neues Image...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Neues Image...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Bestehendes Image...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Bestehendes Image...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "A&uswerfen", IDM_ZIP_EJECT
- MENUITEM "&Voriges Image neu laden", IDM_ZIP_RELOAD
+ MENUITEM "A&uswerfen", IDM_ZIP_EJECT
+ MENUITEM "&Voriges Image neu laden", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Neues Image...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Neues Image...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Bestehendes Image...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Bestehendes Image...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Bestehendes Image (&schreibgeschützt)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Auswerfen", IDM_MO_EJECT
- MENUITEM "&Bestehendes Image erneut laden", IDM_MO_RELOAD
+ MENUITEM "&Auswerfen", IDM_MO_EJECT
+ MENUITEM "&Bestehendes Image erneut laden", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Einstellungen"
-#define STR_SND_GAIN "Klangverstärkung"
-#define STR_NEW_FLOPPY "Neues Image"
-#define STR_CONFIG "Optionen"
-#define STR_SPECIFY_DIM "Fenstergröße einstellen"
+#define STR_PREFERENCES "Einstellungen"
+#define STR_SND_GAIN "Klangverstärkung"
+#define STR_NEW_FLOPPY "Neues Image"
+#define STR_CONFIG "Optionen"
+#define STR_SPECIFY_DIM "Fenstergröße einstellen"
-#define STR_OK "OK"
-#define STR_CANCEL "Abbrechen"
-#define STR_GLOBAL "Einstellungen als &globalen Standard speichern"
-#define STR_DEFAULT "&Standard"
-#define STR_LANGUAGE "Sprache:"
-#define STR_ICONSET "Icon-Satz:"
+#define STR_OK "OK"
+#define STR_CANCEL "Abbrechen"
+#define STR_GLOBAL "Einstellungen als &globalen Standard speichern"
+#define STR_DEFAULT "&Standard"
+#define STR_LANGUAGE "Sprache:"
+#define STR_ICONSET "Icon-Satz:"
-#define STR_GAIN "Verstärkung"
+#define STR_GAIN "Verstärkung"
-#define STR_FILE_NAME "Dateiname:"
-#define STR_DISK_SIZE "Plattengröße:"
-#define STR_RPM_MODE "Drehzahlmodus:"
-#define STR_PROGRESS "Fortschritt:"
+#define STR_FILE_NAME "Dateiname:"
+#define STR_DISK_SIZE "Plattengröße:"
+#define STR_RPM_MODE "Drehzahlmodus:"
+#define STR_PROGRESS "Fortschritt:"
-#define STR_WIDTH "Breite:"
-#define STR_HEIGHT "Höhe:"
-#define STR_LOCK_TO_SIZE "Feste Größe"
+#define STR_WIDTH "Breite:"
+#define STR_HEIGHT "Höhe:"
+#define STR_LOCK_TO_SIZE "Feste Größe"
-#define STR_MACHINE_TYPE "Systemtyp:"
-#define STR_MACHINE "System:"
-#define STR_CONFIGURE "Einstellen"
-#define STR_CPU_TYPE "CPU-Typ:"
-#define STR_CPU_SPEED "Takt:"
-#define STR_FPU "FPU-Einheit:"
-#define STR_WAIT_STATES "Wartezustände:"
-#define STR_MB "MB"
-#define STR_MEMORY "Hauptspeicher:"
-#define STR_TIME_SYNC "Zeitsynchronisierung"
-#define STR_DISABLED "Deaktiviert"
-#define STR_ENABLED_LOCAL "Aktiviert (Lokale Uhrzeit)"
-#define STR_ENABLED_UTC "Aktiviert (UTC)"
-#define STR_DYNAREC "Dynamischer Recompiler"
+#define STR_MACHINE_TYPE "Systemtyp:"
+#define STR_MACHINE "System:"
+#define STR_CONFIGURE "Einstellen"
+#define STR_CPU_TYPE "CPU-Typ:"
+#define STR_CPU_SPEED "Takt:"
+#define STR_FPU "FPU-Einheit:"
+#define STR_WAIT_STATES "Wartezustände:"
+#define STR_MB "MB"
+#define STR_MEMORY "Hauptspeicher:"
+#define STR_TIME_SYNC "Zeitsynchronisierung"
+#define STR_DISABLED "Deaktiviert"
+#define STR_ENABLED_LOCAL "Aktiviert (Lokale Uhrzeit)"
+#define STR_ENABLED_UTC "Aktiviert (UTC)"
+#define STR_DYNAREC "Dynamischer Recompiler"
-#define STR_VIDEO "Videokarte:"
-#define STR_VIDEO_2 "Videokarte 2:"
-#define STR_VOODOO "Voodoo-Grafik"
-#define STR_IBM8514 "IBM 8514/a-Grafik"
-#define STR_XGA "XGA-Grafik"
+#define STR_VIDEO "Videokarte:"
+#define STR_VIDEO_2 "Videokarte 2:"
+#define STR_VOODOO "Voodoo-Grafik"
+#define STR_IBM8514 "IBM 8514/a-Grafik"
+#define STR_XGA "XGA-Grafik"
-#define STR_MOUSE "Maus:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Maus:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "COM3-Gerät:"
-#define STR_COM4 "COM4-Gerät:"
-#define STR_LPT1 "LPT1-Gerät:"
-#define STR_LPT2 "LPT2-Gerät:"
-#define STR_LPT3 "LPT3-Gerät:"
-#define STR_LPT4 "LPT4-Gerät:"
-#define STR_SERIAL1 "Serielle Schnittstelle 1"
-#define STR_SERIAL2 "Serielle Schnittstelle 2"
-#define STR_SERIAL3 "Serielle Schnittstelle 3"
-#define STR_SERIAL4 "Serielle Schnittstelle 4"
-#define STR_PARALLEL1 "Parallelport 1"
-#define STR_PARALLEL2 "Parallelport 2"
-#define STR_PARALLEL3 "Parallelport 3"
-#define STR_PARALLEL4 "Parallelport 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1-Gerät:"
+#define STR_COM2 "COM2-Gerät:"
+#define STR_COM3 "COM3-Gerät:"
+#define STR_COM4 "COM4-Gerät:"
+#define STR_LPT1 "LPT1-Gerät:"
+#define STR_LPT2 "LPT2-Gerät:"
+#define STR_LPT3 "LPT3-Gerät:"
+#define STR_LPT4 "LPT4-Gerät:"
+#define STR_SERIAL1 "Serielle Schnittstelle 1"
+#define STR_SERIAL2 "Serielle Schnittstelle 2"
+#define STR_SERIAL3 "Serielle Schnittstelle 3"
+#define STR_SERIAL4 "Serielle Schnittstelle 4"
+#define STR_PARALLEL1 "Parallelport 1"
+#define STR_PARALLEL2 "Parallelport 2"
+#define STR_PARALLEL3 "Parallelport 3"
+#define STR_PARALLEL4 "Parallelport 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "HDD-Controller:"
-#define STR_FDC "FD-Controller:"
-#define STR_IDE_TER "Tertiärer IDE-Controller"
-#define STR_IDE_QUA "Quartärer IDE-Controller"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Controller 1:"
-#define STR_SCSI_2 "Controller 2:"
-#define STR_SCSI_3 "Controller 3:"
-#define STR_SCSI_4 "Controller 4:"
-#define STR_CASSETTE "Kassette"
+#define STR_HDC "HDD-Controller:"
+#define STR_FDC "FD-Controller:"
+#define STR_IDE_TER "Tertiärer IDE-Controller"
+#define STR_IDE_QUA "Quartärer IDE-Controller"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Controller 1:"
+#define STR_SCSI_2 "Controller 2:"
+#define STR_SCSI_3 "Controller 3:"
+#define STR_SCSI_4 "Controller 4:"
+#define STR_CASSETTE "Kassette"
-#define STR_HDD "Festplatten:"
-#define STR_NEW "&Neu..."
-#define STR_EXISTING "&Vorhanden..."
-#define STR_REMOVE "&Entfernen"
-#define STR_BUS "Bus:"
-#define STR_CHANNEL "Kanal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Festplatten:"
+#define STR_NEW "&Neu..."
+#define STR_EXISTING "&Vorhanden..."
+#define STR_REMOVE "&Entfernen"
+#define STR_BUS "Bus:"
+#define STR_CHANNEL "Kanal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Festlegen..."
-#define STR_SECTORS "Sektoren:"
-#define STR_HEADS "Köpfe:"
-#define STR_CYLS "Zylinder:"
-#define STR_SIZE_MB "Größe (MB):"
-#define STR_TYPE "Typ:"
-#define STR_IMG_FORMAT "Imageformat:"
-#define STR_BLOCK_SIZE "Blockgröße:"
+#define STR_SPECIFY "&Festlegen..."
+#define STR_SECTORS "Sektoren:"
+#define STR_HEADS "Köpfe:"
+#define STR_CYLS "Zylinder:"
+#define STR_SIZE_MB "Größe (MB):"
+#define STR_TYPE "Typ:"
+#define STR_IMG_FORMAT "Imageformat:"
+#define STR_BLOCK_SIZE "Blockgröße:"
-#define STR_FLOPPY_DRIVES "Diskettenlaufwerke:"
-#define STR_TURBO "Turbo-Timings"
-#define STR_CHECKBPB "BPB überprüfen"
-#define STR_CDROM_DRIVES "CD-ROM-Laufwerke:"
-#define STR_CD_SPEED "Geschwindigkeit:"
-#define STR_EARLY "Früheres Laufwerk"
+#define STR_FLOPPY_DRIVES "Diskettenlaufwerke:"
+#define STR_TURBO "Turbo-Timings"
+#define STR_CHECKBPB "BPB überprüfen"
+#define STR_CDROM_DRIVES "CD-ROM-Laufwerke:"
+#define STR_CD_SPEED "Geschwindigkeit:"
+#define STR_EARLY "Früheres Laufwerk"
-#define STR_MO_DRIVES "MO-Laufwerke:"
-#define STR_ZIP_DRIVES "ZIP-Laufwerke:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "MO-Laufwerke:"
+#define STR_ZIP_DRIVES "ZIP-Laufwerke:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA-Echtzeituhr:"
-#define STR_ISAMEM "ISA-Speichererweiterung:"
-#define STR_ISAMEM_1 "Steckkarte 1:"
-#define STR_ISAMEM_2 "Steckkarte 2:"
-#define STR_ISAMEM_3 "Steckkarte 3:"
-#define STR_ISAMEM_4 "Steckkarte 4:"
-#define STR_BUGGER "ISABugger-Gerät"
-#define STR_POSTCARD "POST-Code-Karte"
+#define STR_ISARTC "ISA-Echtzeituhr:"
+#define STR_ISAMEM "ISA-Speichererweiterung:"
+#define STR_ISAMEM_1 "Steckkarte 1:"
+#define STR_ISAMEM_2 "Steckkarte 2:"
+#define STR_ISAMEM_3 "Steckkarte 3:"
+#define STR_ISAMEM_4 "Steckkarte 4:"
+#define STR_BUGGER "ISABugger-Gerät"
+#define STR_POSTCARD "POST-Code-Karte"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Fehler"
- IDS_2050 "Fataler Fehler"
- IDS_2051 " - PAUSED"
- IDS_2052 "Bitte Strg+Alt+Bild ab zur Rückkehr in den Fenstermodus drücken."
- IDS_2053 "Geschwindigkeit"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP-Images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box konnte keine nutzbaren ROM-Dateien finden.\n\nBitte besuchen Sie download, laden ein ROM-Set herunter und extrahieren dies in das ""roms""-Verzeichnis."
- IDS_2057 "(leer)"
- IDS_2058 "ZIP-Images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Alle Dateien (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "An"
- IDS_2061 "Aus"
- IDS_2062 "Alle Images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basissektorimages (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Oberflächenimages (*.86F)\0*.86F\0"
- IDS_2063 "Das System ""%hs"" ist aufgrund von fehlenden ROMs im Verzeichnis roms/machines nicht verfügbar. Es wird auf ein verfügbares System gewechselt."
+ 2048 "86Box"
+ IDS_2049 "Fehler"
+ IDS_2050 "Fataler Fehler"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Bitte Strg+Alt+Bild ab zur Rückkehr in den Fenstermodus drücken."
+ IDS_2053 "Geschwindigkeit"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP-Images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box konnte keine nutzbaren ROM-Dateien finden.\n\nBitte besuchen Sie download, laden ein ROM-Set herunter und extrahieren dies in das ""roms""-Verzeichnis."
+ IDS_2057 "(leer)"
+ IDS_2058 "ZIP-Images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "An"
+ IDS_2061 "Aus"
+ IDS_2062 "Alle Images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basissektorimages (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Oberflächenimages (*.86F)\0*.86F\0"
+ IDS_2063 "Das System ""%hs"" ist aufgrund von fehlenden ROMs im Verzeichnis roms/machines nicht verfügbar. Es wird auf ein verfügbares System gewechselt."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Die Videokarte ""%hs"" ist aufgrund von fehlenden ROMs im Verzeichnis roms/video nicht verfügbar. Es wird auf eine verfügbare Videokarte gewechselt."
- IDS_2065 "System"
- IDS_2066 "Anzeige"
- IDS_2067 "Eingabegeräte"
- IDS_2068 "Multimedia"
- IDS_2069 "Netzwerk"
- IDS_2070 "Anschlüsse (COM & LPT)"
- IDS_2071 "Speichercontroller"
- IDS_2072 "Festplatten"
- IDS_2073 "Disketten- & CD-ROM-Laufwerke"
- IDS_2074 "Andere Wechsellaufwerke"
- IDS_2075 "Andere Peripheriegeräte"
- IDS_2076 "Oberflächenimages (*.86F)\0*.86F\0"
- IDS_2077 "Zum Einfangen des Mauszeigers bitte klicken"
- IDS_2078 "Bitte F8+F12 zur Mausfreigabe drücken"
- IDS_2079 "Bitte F8+F12 oder die mittlere Maustaste zur Mausfreigabe drücken"
+ IDS_2064 "Die Videokarte ""%hs"" ist aufgrund von fehlenden ROMs im Verzeichnis roms/video nicht verfügbar. Es wird auf eine verfügbare Videokarte gewechselt."
+ IDS_2065 "System"
+ IDS_2066 "Anzeige"
+ IDS_2067 "Eingabegeräte"
+ IDS_2068 "Multimedia"
+ IDS_2069 "Netzwerk"
+ IDS_2070 "Anschlüsse (COM & LPT)"
+ IDS_2071 "Speichercontroller"
+ IDS_2072 "Festplatten"
+ IDS_2073 "Disketten- & CD-ROM-Laufwerke"
+ IDS_2074 "Andere Wechsellaufwerke"
+ IDS_2075 "Andere Peripheriegeräte"
+ IDS_2076 "Oberflächenimages (*.86F)\0*.86F\0"
+ IDS_2077 "Zum Einfangen des Mauszeigers bitte klicken"
+ IDS_2078 "Bitte F8+F12 zur Mausfreigabe drücken"
+ IDS_2079 "Bitte F8+F12 oder die mittlere Maustaste zur Mausfreigabe drücken"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "FluidSynth konnte nicht initialisiert werden"
- IDS_2081 "Bus"
- IDS_2082 "Datei"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "FluidSynth konnte nicht initialisiert werden"
+ IDS_2081 "Bus"
+ IDS_2082 "Datei"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "BPB prüfen"
- IDS_2089 "KB"
- IDS_2090 "Der Videorenderer konnte nicht initialisiert werden."
- IDS_2091 "Standard"
- IDS_2092 "%i Wartezustände"
- IDS_2093 "Typ"
- IDS_2094 "PCap konnte nicht eingerichtet werden"
- IDS_2095 "Keine PCap-Geräte gefunden"
- IDS_2096 "Ungültiges PCap-Gerät"
- IDS_2097 "Standard 2-Tasten-Joystick(s)"
- IDS_2098 "Standard 4-Tasten-Joystick"
- IDS_2099 "Standard 6-Tasten-Joystick"
- IDS_2100 "Standard 8-Tasten-Joystick"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Ohne"
- IDS_2105 "Tastaturbeschleuniger konnten nicht geladen werden."
- IDS_2106 "Roheingaben konnten nicht registriert werden."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Diskette %i (%s): %ls"
- IDS_2110 "Alle Images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Fortgeschrittene Sektorimages (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basissektorimages (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Fluximages (*.FDI)\0*.FDI\0Oberflächenimages (*.86F;*.MFM)\0*.86F;*.MFM\0Alle Dateien (*.*)\0*.*\0"
- IDS_2111 "FreeType konnte nicht initialisiert werden"
- IDS_2112 "SDL konnte nicht initialisiert werden, die Datei SDL2.dll wird benötigt"
- IDS_2113 "Sind Sie sich sicher, dass Sie einen Hard-Reset für das emulierte System durchführen wollen?"
- IDS_2114 "Sind Sie sich sicher, dass Sie 86Box beenden wollen?"
- IDS_2115 "Ghostscript konnte nicht initialisiert werden"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "MO-Images (*.IM?;*.MDI)\0*.IM?;*.MDI\0Alle Dateien (*.*)\0*.*\0"
- IDS_2118 "Willkommen bei 86Box!"
- IDS_2119 "Interner Controller"
- IDS_2120 "Beenden"
- IDS_2121 "Keine ROMs gefunden"
- IDS_2122 "Möchten Sie die Einstellungen speichern?"
- IDS_2123 "Dies wird zu einem Hard-Reset des emulierten Systems führen."
- IDS_2124 "Speichern"
- IDS_2125 "Über 86Box"
- IDS_2126 "86Box Version " EMU_VERSION
+ IDS_2088 "BPB prüfen"
+ IDS_2089 "KB"
+ IDS_2090 "Der Videorenderer konnte nicht initialisiert werden."
+ IDS_2091 "Standard"
+ IDS_2092 "%i Wartezustände"
+ IDS_2093 "Typ"
+ IDS_2094 "PCap konnte nicht eingerichtet werden"
+ IDS_2095 "Keine PCap-Geräte gefunden"
+ IDS_2096 "Ungültiges PCap-Gerät"
+ IDS_2097 "Standard 2-Tasten-Joystick(s)"
+ IDS_2098 "Standard 4-Tasten-Joystick"
+ IDS_2099 "Standard 6-Tasten-Joystick"
+ IDS_2100 "Standard 8-Tasten-Joystick"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Ohne"
+ IDS_2105 "Tastaturbeschleuniger konnten nicht geladen werden."
+ IDS_2106 "Roheingaben konnten nicht registriert werden."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Diskette %i (%s): %ls"
+ IDS_2110 "Alle Images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Fortgeschrittene Sektorimages (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basissektorimages (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Fluximages (*.FDI)\0*.FDI\0Oberflächenimages (*.86F;*.MFM)\0*.86F;*.MFM\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2111 "FreeType konnte nicht initialisiert werden"
+ IDS_2112 "SDL konnte nicht initialisiert werden, die Datei SDL2.dll wird benötigt"
+ IDS_2113 "Sind Sie sich sicher, dass Sie einen Hard-Reset für das emulierte System durchführen wollen?"
+ IDS_2114 "Sind Sie sich sicher, dass Sie 86Box beenden wollen?"
+ IDS_2115 "Ghostscript konnte nicht initialisiert werden"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "MO-Images (*.IM?;*.MDI)\0*.IM?;*.MDI\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2118 "Willkommen bei 86Box!"
+ IDS_2119 "Interner Controller"
+ IDS_2120 "Beenden"
+ IDS_2121 "Keine ROMs gefunden"
+ IDS_2122 "Möchten Sie die Einstellungen speichern?"
+ IDS_2123 "Dies wird zu einem Hard-Reset des emulierten Systems führen."
+ IDS_2124 "Speichern"
+ IDS_2125 "Über 86Box"
+ IDS_2126 "86Box Version " EMU_VERSION
- IDS_2127 "Ein Emulator für alte Computer\n\nAutoren: Sarah Walker, Miran GrÄa, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho sowie andere.\n\nÜbersetzt von: dob205\n\nVeröffentlicht unter der GNU General Public License in der Version 2 oder neuer. Siehe LICENSE für mehr Informationen."
- IDS_2128 "OK"
- IDS_2129 "Hardware nicht verfügbar"
+ IDS_2127 "Ein Emulator für alte Computer\n\nAutoren: Sarah Walker, Miran GrÄa, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho sowie andere.\n\nÜbersetzt von: dob205\n\nVeröffentlicht unter der GNU General Public License in der Version 2 oder neuer. Siehe LICENSE für mehr Informationen."
+ IDS_2128 "OK"
+ IDS_2129 "Hardware nicht verfügbar"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Bitte stellen Sie sicher, dass " LIB_NAME_PCAP " installiert ist und sie eine " LIB_NAME_PCAP "-kompatible Netzwerkverbindung nutzen."
- IDS_2131 "Ungültige Konfiguration"
+ IDS_2130 "Bitte stellen Sie sicher, dass " LIB_NAME_PCAP " installiert ist und sie eine " LIB_NAME_PCAP "-kompatible Netzwerkverbindung nutzen."
+ IDS_2131 "Ungültige Konfiguration"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " wird für die ESC/P-Druckeremulation benötigt."
+ IDS_2132 LIB_NAME_FREETYPE " wird für die ESC/P-Druckeremulation benötigt."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " wird zur automatischen Konversion von PostScript-Dateien in das PDF-Format benötigt.\n\nSämtliche an den generischen PostScript-Drucker gesendete Dateien werden als PostScript (.ps)-Dateien gesichert."
+ IDS_2133 LIB_NAME_GS " wird zur automatischen Konversion von PostScript-Dateien in das PDF-Format benötigt.\n\nSämtliche an den generischen PostScript-Drucker gesendete Dateien werden als PostScript (.ps)-Dateien gesichert."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " wird für die FluidSynth-MIDI-Ausgabe benötigt."
- IDS_2135 "Vollbildmodus wird aktiviert"
- IDS_2136 "Diese Nachricht nicht mehr anzeigen"
- IDS_2137 "Nicht beenden"
- IDS_2138 "Zurücksetzen"
- IDS_2139 "Nicht zurücksetzen"
- IDS_2140 "MO-Images (*.IM?;*.MDI)\0*.IM?;*.MDI\0Alle Dateien (*.*)\0*.*\0"
- IDS_2141 "CD-ROM-Images (*.ISO;*.CUE)\0*.ISO;*.CUE\0Alle Dateien (*.*)\0*.*\0"
- IDS_2142 "%hs-Gerätekonfiguration"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " wird für die FluidSynth-MIDI-Ausgabe benötigt."
+ IDS_2135 "Vollbildmodus wird aktiviert"
+ IDS_2136 "Diese Nachricht nicht mehr anzeigen"
+ IDS_2137 "Nicht beenden"
+ IDS_2138 "Zurücksetzen"
+ IDS_2139 "Nicht zurücksetzen"
+ IDS_2140 "MO-Images (*.IM?;*.MDI)\0*.IM?;*.MDI\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2141 "CD-ROM-Images (*.ISO;*.CUE)\0*.ISO;*.CUE\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2142 "%hs-Gerätekonfiguration"
IDS_2143 "Monitor im Standbymodus"
- IDS_2144 "OpenGL-Shader (*.GLSL)\0*.GLSL\0Alle Dateien (*.*)\0*.*\0"
- IDS_2145 "OpenGL-Optionen"
- IDS_2146 "Sie laden gerade eine nicht unterstützte Konfiguration"
- IDS_2147 "Das Filtern der CPU-Typen basierend auf dem ausgewählten System ist für dieses System deaktiviert.\n\nDies ermöglicht es, dass man eine sonst nicht mit dem ausgewählten System inkompatible CPU auswählen kann. Allerdings kann dies zu Inkompatiblilitäten mit dem BIOS des Systems oder anderen Programmen kommen.\n\nDas Aktivieren dieser Einstellung wird nicht unterstützt und sämtliche Bugreports können als ""invalid"" geschlossen werden."
- IDS_2148 "Fortfahren"
- IDS_2149 "Kassette: %s"
- IDS_2150 "Kassettenimages (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Alle Dateien (*.*)\0*.*\0"
- IDS_2151 "Cartridge %i: %ls"
- IDS_2152 "Cartridgeimages (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Alle Dateien (*.*)\0*.*\0"
- IDS_2153 "Fehler bei der Rendererinitialisierung"
- IDS_2154 "Der OpenGL (3.0-Kern)-Renderer konnte nicht initialisiert werden. Bitte benutzen Sie einen anderen Renderer."
- IDS_2155 "Fortsetzen"
- IDS_2156 "Pausieren"
- IDS_2157 "Strg+Alt+Entf drücken"
- IDS_2158 "Strg+Alt+Esc drücken"
- IDS_2159 "Hard-Reset"
- IDS_2160 "ACPI-basiertes Herunterfahren"
- IDS_2161 "Optionen"
+ IDS_2144 "OpenGL-Shader (*.GLSL)\0*.GLSL\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2145 "OpenGL-Optionen"
+ IDS_2146 "Sie laden gerade eine nicht unterstützte Konfiguration"
+ IDS_2147 "Das Filtern der CPU-Typen basierend auf dem ausgewählten System ist für dieses System deaktiviert.\n\nDies ermöglicht es, dass man eine sonst nicht mit dem ausgewählten System inkompatible CPU auswählen kann. Allerdings kann dies zu Inkompatiblilitäten mit dem BIOS des Systems oder anderen Programmen kommen.\n\nDas Aktivieren dieser Einstellung wird nicht unterstützt und sämtliche Bugreports können als ""invalid"" geschlossen werden."
+ IDS_2148 "Fortfahren"
+ IDS_2149 "Kassette: %s"
+ IDS_2150 "Kassettenimages (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2151 "Cartridge %i: %ls"
+ IDS_2152 "Cartridgeimages (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Alle Dateien (*.*)\0*.*\0"
+ IDS_2153 "Fehler bei der Rendererinitialisierung"
+ IDS_2154 "Der OpenGL (3.0-Kern)-Renderer konnte nicht initialisiert werden. Bitte benutzen Sie einen anderen Renderer."
+ IDS_2155 "Fortsetzen"
+ IDS_2156 "Pausieren"
+ IDS_2157 "Strg+Alt+Entf drücken"
+ IDS_2158 "Strg+Alt+Esc drücken"
+ IDS_2159 "Hard-Reset"
+ IDS_2160 "ACPI-basiertes Herunterfahren"
+ IDS_2161 "Optionen"
IDS_2162 "Früheres Laufwerk"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Festplatte (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL- oder ESDI CD-ROM-Laufwerke hat es niemals gegeben"
- IDS_4100 "Angepasst..."
- IDS_4101 "Angepasst (Groß)..."
- IDS_4102 "Neue Festplatte hinzufügen"
- IDS_4103 "Bestehende Festplatte hinzufügen"
- IDS_4104 "HDI-Diskimages können nicht größer als 4 GB groß sein."
- IDS_4105 "Festplattenimages können nicht größer als 127 GB groß sein."
- IDS_4106 "Festplattenimages (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Alle Dateien (*.*)\0*.*\0"
- IDS_4107 "Die Datei konnte nicht gelesen werden"
- IDS_4108 "Die Datei konnte nicht beschrieben werden"
- IDS_4109 "HDI- oder HDX-Images mit einer Sektorgröße größer als 512 kB werden nicht unterstützt."
- IDS_4110 "USB wird noch nicht unterstützt"
- IDS_4111 "Die Festplattenimagedatei existiert bereits"
- IDS_4112 "Bitte geben Sie einen gültigen Dateinamen ein."
- IDS_4113 "Disk-Image wurde erstellt"
- IDS_4114 "Bitte stellen Sie sicher, dass die Datei existiert und lesbar ist."
- IDS_4115 "Bitte stellen Sie sicher, dass die Datei in ein Verzeichnis mit Schreibberechtigungen gespeichert wird."
- IDS_4116 "Festplattenimage ist zu groß"
- IDS_4117 "Bitte denken Sie an das Partitionieren und Formatieren des neu erstellten Laufwerks."
- IDS_4118 "Die ausgewählte Datei wird überschrieben. Möchten Sie diese Datei nutzen?"
- IDS_4119 "Nicht unterstütztes Festplattenimage"
- IDS_4120 "Überschreiben"
- IDS_4121 "Nicht überschreiben"
- IDS_4122 "Rohdatenimages (.img)"
- IDS_4123 "HDI-Images (.hdi)"
- IDS_4124 "HDX-Images (.hdx)"
- IDS_4125 "VHD mit fester Größe (.vhd)"
- IDS_4126 "VHD mit dynamischer Größe (.vhd)"
- IDS_4127 "Differenzierende VHD (.vhd)"
- IDS_4128 "Große Blöcke (2 MB)"
- IDS_4129 "Kleine Blöcke (512 KB)"
- IDS_4130 "VHD-Dateien (*.VHD)\0*.VHD\0Alle Dateien (*.*)\0*.*\0"
- IDS_4131 "Eltern-VHD-Datei bitte auswählen"
- IDS_4132 "Dies bedeutet, dass das Elternimage nach der Erstellung des differenzierenden Images erzeugt wurde.\n\nDies kann auch passieren, falls die Image-Dateien verschoben oder kopiert wurden. Ebenso kann auch dies durch einen Bug im Programm, welches das Image erstellt hat, passieren.\n\nMöchten Sie die Zeitstempel korrigieren?"
- IDS_4133 "Die Zeitstempel der Eltern- und der Kindesplatte stimmen nicht überein"
- IDS_4134 "Der Zeitstempel der VHD konnte nicht korrigiert werden."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL- oder ESDI CD-ROM-Laufwerke hat es niemals gegeben"
+ IDS_4100 "Angepasst..."
+ IDS_4101 "Angepasst (Groß)..."
+ IDS_4102 "Neue Festplatte hinzufügen"
+ IDS_4103 "Bestehende Festplatte hinzufügen"
+ IDS_4104 "HDI-Diskimages können nicht größer als 4 GB groß sein."
+ IDS_4105 "Festplattenimages können nicht größer als 127 GB groß sein."
+ IDS_4106 "Festplattenimages (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Alle Dateien (*.*)\0*.*\0"
+ IDS_4107 "Die Datei konnte nicht gelesen werden"
+ IDS_4108 "Die Datei konnte nicht beschrieben werden"
+ IDS_4109 "HDI- oder HDX-Images mit einer Sektorgröße größer als 512 kB werden nicht unterstützt."
+ IDS_4110 "USB wird noch nicht unterstützt"
+ IDS_4111 "Die Festplattenimagedatei existiert bereits"
+ IDS_4112 "Bitte geben Sie einen gültigen Dateinamen ein."
+ IDS_4113 "Disk-Image wurde erstellt"
+ IDS_4114 "Bitte stellen Sie sicher, dass die Datei existiert und lesbar ist."
+ IDS_4115 "Bitte stellen Sie sicher, dass die Datei in ein Verzeichnis mit Schreibberechtigungen gespeichert wird."
+ IDS_4116 "Festplattenimage ist zu groß"
+ IDS_4117 "Bitte denken Sie an das Partitionieren und Formatieren des neu erstellten Laufwerks."
+ IDS_4118 "Die ausgewählte Datei wird überschrieben. Möchten Sie diese Datei nutzen?"
+ IDS_4119 "Nicht unterstütztes Festplattenimage"
+ IDS_4120 "Überschreiben"
+ IDS_4121 "Nicht überschreiben"
+ IDS_4122 "Rohdatenimages (.img)"
+ IDS_4123 "HDI-Images (.hdi)"
+ IDS_4124 "HDX-Images (.hdx)"
+ IDS_4125 "VHD mit fester Größe (.vhd)"
+ IDS_4126 "VHD mit dynamischer Größe (.vhd)"
+ IDS_4127 "Differenzierende VHD (.vhd)"
+ IDS_4128 "Große Blöcke (2 MB)"
+ IDS_4129 "Kleine Blöcke (512 KB)"
+ IDS_4130 "VHD-Dateien (*.VHD)\0*.VHD\0Alle Dateien (*.*)\0*.*\0"
+ IDS_4131 "Eltern-VHD-Datei bitte auswählen"
+ IDS_4132 "Dies bedeutet, dass das Elternimage nach der Erstellung des differenzierenden Images erzeugt wurde.\n\nDies kann auch passieren, falls die Image-Dateien verschoben oder kopiert wurden. Ebenso kann auch dies durch einen Bug im Programm, welches das Image erstellt hat, passieren.\n\nMöchten Sie die Zeitstempel korrigieren?"
+ IDS_4133 "Die Zeitstempel der Eltern- und der Kindesplatte stimmen nicht überein"
+ IDS_4134 "Der Zeitstempel der VHD konnte nicht korrigiert werden."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Deaktiviert"
- IDS_5381 "ATAPI"
+ IDS_5376 "Deaktiviert"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Deaktiviert"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Deaktiviert"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1,2 MB"
- IDS_5895 "1,25 MB"
- IDS_5896 "1,44 MB"
- IDS_5897 "DMF (1024 Cluster)"
- IDS_5898 "DMF (2048 Cluster)"
- IDS_5899 "2,88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3,5-Zoll 128 MB (ISO 10090)"
- IDS_5903 "3,5-Zoll 230 MB (ISO 13963)"
- IDS_5904 "3,5-Zoll 540 MB (ISO 15498)"
- IDS_5905 "3,5-Zoll 640 MB (ISO 15498)"
- IDS_5906 "3,5-Zoll 1,3 GB (GigaMO)"
- IDS_5907 "3,5-Zoll 2,3 GB (GigaMO 2)"
- IDS_5908 "5,25-Zoll 600 MB"
- IDS_5909 "5,25-Zoll 650 MB"
- IDS_5910 "5,25-Zoll 1 GB"
- IDS_5911 "5,25-Zoll 1,3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1,2 MB"
+ IDS_5895 "1,25 MB"
+ IDS_5896 "1,44 MB"
+ IDS_5897 "DMF (1024 Cluster)"
+ IDS_5898 "DMF (2048 Cluster)"
+ IDS_5899 "2,88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3,5-Zoll 128 MB (ISO 10090)"
+ IDS_5903 "3,5-Zoll 230 MB (ISO 13963)"
+ IDS_5904 "3,5-Zoll 540 MB (ISO 15498)"
+ IDS_5905 "3,5-Zoll 640 MB (ISO 15498)"
+ IDS_5906 "3,5-Zoll 1,3 GB (GigaMO)"
+ IDS_5907 "3,5-Zoll 2,3 GB (GigaMO 2)"
+ IDS_5908 "5,25-Zoll 600 MB"
+ IDS_5909 "5,25-Zoll 650 MB"
+ IDS_5910 "5,25-Zoll 1 GB"
+ IDS_5911 "5,25-Zoll 1,3 GB"
- IDS_6144 "Perfekte Drehzahl"
- IDS_6145 "1% unterhalb der perfekten Drehzahl"
- IDS_6146 "1,5% unterhalb der perfekten Drehzahl"
- IDS_6147 "2% unterhalb der perfekten Drehzahl"
+ IDS_6144 "Perfekte Drehzahl"
+ IDS_6145 "1% unterhalb der perfekten Drehzahl"
+ IDS_6146 "1,5% unterhalb der perfekten Drehzahl"
+ IDS_6147 "2% unterhalb der perfekten Drehzahl"
- IDS_7168 "(Systemstandard)"
+ IDS_7168 "(Systemstandard)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// German (de-DE) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/dialogs.rc b/src/win/languages/dialogs.rc
index 1facfb10d..12613a04f 100644
--- a/src/win/languages/dialogs.rc
+++ b/src/win/languages/dialogs.rc
@@ -1003,6 +1003,10 @@ END
#undef STR_NET_TYPE
#undef STR_PCAP
#undef STR_NET
+#undef STR_NET1
+#undef STR_NET2
+#undef STR_NET3
+#undef STR_NET4
#undef STR_COM1
#undef STR_COM2
diff --git a/src/win/languages/en-GB.rc b/src/win/languages/en-GB.rc
index 005a8fc9c..f94c6ab3b 100644
--- a/src/win/languages/en-GB.rc
+++ b/src/win/languages/en-GB.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Action"
BEGIN
- MENUITEM "&Keyboard requires capture", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Right CTRL is left ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Keyboard requires capture", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Right CTRL is left ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pause", IDM_ACTION_PAUSE
+ MENUITEM "&Pause", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "E&xit...", IDM_ACTION_EXIT
+ MENUITEM "E&xit...", IDM_ACTION_EXIT
END
POPUP "&View"
BEGIN
- MENUITEM "&Hide status bar", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Hide status bar", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Resizeable window", IDM_VID_RESIZE
- MENUITEM "R&emember size && position", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Resizeable window", IDM_VID_RESIZE
+ MENUITEM "R&emember size && position", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "Re&nderer"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Specify dimensions...", IDM_VID_SPECIFY_DIM
- MENUITEM "F&orce 4:3 display ratio", IDM_VID_FORCE43
+ MENUITEM "Specify dimensions...", IDM_VID_SPECIFY_DIM
+ MENUITEM "F&orce 4:3 display ratio", IDM_VID_FORCE43
POPUP "&Window scale factor"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Filter method"
BEGIN
- MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Hi&DPI scaling", IDM_VID_HIDPI
+ MENUITEM "Hi&DPI scaling", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Fullscreen\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Fullscreen\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Fullscreen &stretch mode"
BEGIN
- MENUITEM "&Full screen stretch", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Full screen stretch", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Square pixels (Keep ratio)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Integer scale", IDM_VID_FS_INT
+ MENUITEM "&Integer scale", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGA settings"
BEGIN
- MENUITEM "&Inverted VGA monitor", IDM_VID_INVERT
+ MENUITEM "&Inverted VGA monitor", IDM_VID_INVERT
POPUP "VGA screen &type"
BEGIN
- MENUITEM "RGB &Colour", IDM_VID_GRAY_RGB
- MENUITEM "&RGB Greyscale", IDM_VID_GRAY_MONO
- MENUITEM "&Amber monitor", IDM_VID_GRAY_AMBER
- MENUITEM "&Green monitor", IDM_VID_GRAY_GREEN
- MENUITEM "&White monitor", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &Colour", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB Greyscale", IDM_VID_GRAY_MONO
+ MENUITEM "&Amber monitor", IDM_VID_GRAY_AMBER
+ MENUITEM "&Green monitor", IDM_VID_GRAY_GREEN
+ MENUITEM "&White monitor", IDM_VID_GRAY_WHITE
END
POPUP "Grayscale &conversion type"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Average", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Average", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
MENUITEM "Change contrast for &monochrome display", IDM_VID_CGACON
END
- MENUITEM "&Media", IDM_MEDIA
+ MENUITEM "&Media", IDM_MEDIA
POPUP "&Tools"
BEGIN
- MENUITEM "&Settings...", IDM_CONFIG
- MENUITEM "&Update status bar icons", IDM_UPDATE_ICONS
+ MENUITEM "&Settings...", IDM_CONFIG
+ MENUITEM "&Update status bar icons", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Preferences...", IDM_PREFERENCES
+ MENUITEM "&Preferences...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Enable &Discord integration", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "Sound &gain...", IDM_SND_GAIN
+ MENUITEM "Sound &gain...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Begin trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "End trace\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Begin trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "End trace\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Help"
BEGIN
- MENUITEM "&Documentation...", IDM_DOCS
- MENUITEM "&About 86Box...", IDM_ABOUT
+ MENUITEM "&Documentation...", IDM_DOCS
+ MENUITEM "&About 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&New image...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Record", IDM_CASSETTE_RECORD
- MENUITEM "&Play", IDM_CASSETTE_PLAY
- MENUITEM "&Rewind to the beginning", IDM_CASSETTE_REWIND
- MENUITEM "&Fast forward to the end", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Record", IDM_CASSETTE_RECORD
+ MENUITEM "&Play", IDM_CASSETTE_PLAY
+ MENUITEM "&Rewind to the beginning", IDM_CASSETTE_REWIND
+ MENUITEM "&Fast forward to the end", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_CASSETTE_EJECT
+ MENUITEM "E&ject", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Image...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Image...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_CARTRIDGE_EJECT
+ MENUITEM "E&ject", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&New image...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xport to 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xport to 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_FLOPPY_EJECT
+ MENUITEM "E&ject", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Mute", IDM_CDROM_MUTE
+ MENUITEM "&Mute", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "E&mpty", IDM_CDROM_EMPTY
- MENUITEM "&Reload previous image", IDM_CDROM_RELOAD
+ MENUITEM "E&mpty", IDM_CDROM_EMPTY
+ MENUITEM "&Reload previous image", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Image...", IDM_CDROM_IMAGE
- MENUITEM "&Folder...", IDM_CDROM_DIR
+ MENUITEM "&Image...", IDM_CDROM_IMAGE
+ MENUITEM "&Folder...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&New image...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_ZIP_EJECT
- MENUITEM "&Reload previous image", IDM_ZIP_RELOAD
+ MENUITEM "E&ject", IDM_ZIP_EJECT
+ MENUITEM "&Reload previous image", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_MO_IMAGE_NEW
+ MENUITEM "&New image...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_MO_EJECT
- MENUITEM "&Reload previous image", IDM_MO_RELOAD
+ MENUITEM "E&ject", IDM_MO_EJECT
+ MENUITEM "&Reload previous image", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Preferences"
-#define STR_SND_GAIN "Sound Gain"
-#define STR_NEW_FLOPPY "New Image"
-#define STR_CONFIG "Settings"
-#define STR_SPECIFY_DIM "Specify Main Window Dimensions"
+#define STR_PREFERENCES "Preferences"
+#define STR_SND_GAIN "Sound Gain"
+#define STR_NEW_FLOPPY "New Image"
+#define STR_CONFIG "Settings"
+#define STR_SPECIFY_DIM "Specify Main Window Dimensions"
-#define STR_OK "OK"
-#define STR_CANCEL "Cancel"
-#define STR_GLOBAL "Save these settings as &global defaults"
-#define STR_DEFAULT "&Default"
-#define STR_LANGUAGE "Language:"
-#define STR_ICONSET "Icon set:"
+#define STR_OK "OK"
+#define STR_CANCEL "Cancel"
+#define STR_GLOBAL "Save these settings as &global defaults"
+#define STR_DEFAULT "&Default"
+#define STR_LANGUAGE "Language:"
+#define STR_ICONSET "Icon set:"
-#define STR_GAIN "Gain"
+#define STR_GAIN "Gain"
-#define STR_FILE_NAME "File name:"
-#define STR_DISK_SIZE "Disk size:"
-#define STR_RPM_MODE "RPM mode:"
-#define STR_PROGRESS "Progress:"
+#define STR_FILE_NAME "File name:"
+#define STR_DISK_SIZE "Disk size:"
+#define STR_RPM_MODE "RPM mode:"
+#define STR_PROGRESS "Progress:"
-#define STR_WIDTH "Width:"
-#define STR_HEIGHT "Height:"
-#define STR_LOCK_TO_SIZE "Lock to this size"
+#define STR_WIDTH "Width:"
+#define STR_HEIGHT "Height:"
+#define STR_LOCK_TO_SIZE "Lock to this size"
-#define STR_MACHINE_TYPE "Machine type:"
-#define STR_MACHINE "Machine:"
-#define STR_CONFIGURE "Configure"
-#define STR_CPU_TYPE "CPU type:"
-#define STR_CPU_SPEED "Speed:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Wait states:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memory:"
-#define STR_TIME_SYNC "Time synchronization"
-#define STR_DISABLED "Disabled"
-#define STR_ENABLED_LOCAL "Enabled (local time)"
-#define STR_ENABLED_UTC "Enabled (UTC)"
-#define STR_DYNAREC "Dynamic Recompiler"
+#define STR_MACHINE_TYPE "Machine type:"
+#define STR_MACHINE "Machine:"
+#define STR_CONFIGURE "Configure"
+#define STR_CPU_TYPE "CPU type:"
+#define STR_CPU_SPEED "Speed:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Wait states:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memory:"
+#define STR_TIME_SYNC "Time synchronization"
+#define STR_DISABLED "Disabled"
+#define STR_ENABLED_LOCAL "Enabled (local time)"
+#define STR_ENABLED_UTC "Enabled (UTC)"
+#define STR_DYNAREC "Dynamic Recompiler"
-#define STR_VIDEO "Video:"
-#define STR_VIDEO_2 "Video 2:"
-#define STR_VOODOO "Voodoo Graphics"
-#define STR_IBM8514 "IBM 8514/a Graphics"
-#define STR_XGA "XGA Graphics"
+#define STR_VIDEO "Video:"
+#define STR_VIDEO_2 "Video 2:"
+#define STR_VOODOO "Voodoo Graphics"
+#define STR_IBM8514 "IBM 8514/a Graphics"
+#define STR_XGA "XGA Graphics"
-#define STR_MOUSE "Mouse:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Mouse:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "COM3 Device:"
-#define STR_COM4 "COM4 Device:"
-#define STR_LPT1 "LPT1 Device:"
-#define STR_LPT2 "LPT2 Device:"
-#define STR_LPT3 "LPT3 Device:"
-#define STR_LPT4 "LPT4 Device:"
-#define STR_SERIAL1 "Serial port 1"
-#define STR_SERIAL2 "Serial port 2"
-#define STR_SERIAL3 "Serial port 3"
-#define STR_SERIAL4 "Serial port 4"
-#define STR_PARALLEL1 "Parallel port 1"
-#define STR_PARALLEL2 "Parallel port 2"
-#define STR_PARALLEL3 "Parallel port 3"
-#define STR_PARALLEL4 "Parallel port 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1 Device:"
+#define STR_COM2 "COM2 Device:"
+#define STR_COM3 "COM3 Device:"
+#define STR_COM4 "COM4 Device:"
+#define STR_LPT1 "LPT1 Device:"
+#define STR_LPT2 "LPT2 Device:"
+#define STR_LPT3 "LPT3 Device:"
+#define STR_LPT4 "LPT4 Device:"
+#define STR_SERIAL1 "Serial port 1"
+#define STR_SERIAL2 "Serial port 2"
+#define STR_SERIAL3 "Serial port 3"
+#define STR_SERIAL4 "Serial port 4"
+#define STR_PARALLEL1 "Parallel port 1"
+#define STR_PARALLEL2 "Parallel port 2"
+#define STR_PARALLEL3 "Parallel port 3"
+#define STR_PARALLEL4 "Parallel port 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "HD Controller:"
-#define STR_FDC "FD Controller:"
-#define STR_IDE_TER "Tertiary IDE Controller"
-#define STR_IDE_QUA "Quaternary IDE Controller"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Controller 1:"
-#define STR_SCSI_2 "Controller 2:"
-#define STR_SCSI_3 "Controller 3:"
-#define STR_SCSI_4 "Controller 4:"
-#define STR_CASSETTE "Cassette"
+#define STR_HDC "HD Controller:"
+#define STR_FDC "FD Controller:"
+#define STR_IDE_TER "Tertiary IDE Controller"
+#define STR_IDE_QUA "Quaternary IDE Controller"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Controller 1:"
+#define STR_SCSI_2 "Controller 2:"
+#define STR_SCSI_3 "Controller 3:"
+#define STR_SCSI_4 "Controller 4:"
+#define STR_CASSETTE "Cassette"
-#define STR_HDD "Hard disks:"
-#define STR_NEW "&New..."
-#define STR_EXISTING "&Existing..."
-#define STR_REMOVE "&Remove"
-#define STR_BUS "Bus:"
-#define STR_CHANNEL "Channel:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Hard disks:"
+#define STR_NEW "&New..."
+#define STR_EXISTING "&Existing..."
+#define STR_REMOVE "&Remove"
+#define STR_BUS "Bus:"
+#define STR_CHANNEL "Channel:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Specify..."
-#define STR_SECTORS "Sectors:"
-#define STR_HEADS "Heads:"
-#define STR_CYLS "Cylinders:"
-#define STR_SIZE_MB "Size (MB):"
-#define STR_TYPE "Type:"
-#define STR_IMG_FORMAT "Image Format:"
-#define STR_BLOCK_SIZE "Block Size:"
+#define STR_SPECIFY "&Specify..."
+#define STR_SECTORS "Sectors:"
+#define STR_HEADS "Heads:"
+#define STR_CYLS "Cylinders:"
+#define STR_SIZE_MB "Size (MB):"
+#define STR_TYPE "Type:"
+#define STR_IMG_FORMAT "Image Format:"
+#define STR_BLOCK_SIZE "Block Size:"
-#define STR_FLOPPY_DRIVES "Floppy drives:"
-#define STR_TURBO "Turbo timings"
-#define STR_CHECKBPB "Check BPB"
-#define STR_CDROM_DRIVES "CD-ROM drives:"
-#define STR_CD_SPEED "Speed:"
-#define STR_EARLY "Earlier drive"
+#define STR_FLOPPY_DRIVES "Floppy drives:"
+#define STR_TURBO "Turbo timings"
+#define STR_CHECKBPB "Check BPB"
+#define STR_CDROM_DRIVES "CD-ROM drives:"
+#define STR_CD_SPEED "Speed:"
+#define STR_EARLY "Earlier drive"
-#define STR_MO_DRIVES "MO drives:"
-#define STR_ZIP_DRIVES "ZIP drives:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "MO drives:"
+#define STR_ZIP_DRIVES "ZIP drives:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "ISA Memory Expansion"
-#define STR_ISAMEM_1 "Card 1:"
-#define STR_ISAMEM_2 "Card 2:"
-#define STR_ISAMEM_3 "Card 3:"
-#define STR_ISAMEM_4 "Card 4:"
-#define STR_BUGGER "ISABugger device"
-#define STR_POSTCARD "POST card"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "ISA Memory Expansion"
+#define STR_ISAMEM_1 "Card 1:"
+#define STR_ISAMEM_2 "Card 2:"
+#define STR_ISAMEM_3 "Card 3:"
+#define STR_ISAMEM_4 "Card 4:"
+#define STR_BUGGER "ISABugger device"
+#define STR_POSTCARD "POST card"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Error"
- IDS_2050 "Fatal error"
- IDS_2051 " - PAUSED"
- IDS_2052 "Press Ctrl+Alt+PgDn to return to windowed mode."
- IDS_2053 "Speed"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the ""roms"" directory."
- IDS_2057 "(empty)"
- IDS_2058 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "On"
- IDS_2061 "Off"
- IDS_2062 "All images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
- IDS_2063 "Machine ""%hs"" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine."
+ 2048 "86Box"
+ IDS_2049 "Error"
+ IDS_2050 "Fatal error"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Press Ctrl+Alt+PgDn to return to windowed mode."
+ IDS_2053 "Speed"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the ""roms"" directory."
+ IDS_2057 "(empty)"
+ IDS_2058 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "On"
+ IDS_2061 "Off"
+ IDS_2062 "All images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
+ IDS_2063 "Machine ""%hs"" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Video card ""%hs"" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
- IDS_2065 "Machine"
- IDS_2066 "Display"
- IDS_2067 "Input devices"
- IDS_2068 "Sound"
- IDS_2069 "Network"
- IDS_2070 "Ports (COM & LPT)"
- IDS_2071 "Storage controllers"
- IDS_2072 "Hard disks"
- IDS_2073 "Floppy & CD-ROM drives"
- IDS_2074 "Other removable devices"
- IDS_2075 "Other peripherals"
- IDS_2076 "Surface images (*.86F)\0*.86F\0"
- IDS_2077 "Click to capture mouse"
- IDS_2078 "Press F8+F12 to release mouse"
- IDS_2079 "Press F8+F12 or middle button to release mouse"
+ IDS_2064 "Video card ""%hs"" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
+ IDS_2065 "Machine"
+ IDS_2066 "Display"
+ IDS_2067 "Input devices"
+ IDS_2068 "Sound"
+ IDS_2069 "Network"
+ IDS_2070 "Ports (COM & LPT)"
+ IDS_2071 "Storage controllers"
+ IDS_2072 "Hard disks"
+ IDS_2073 "Floppy & CD-ROM drives"
+ IDS_2074 "Other removable devices"
+ IDS_2075 "Other peripherals"
+ IDS_2076 "Surface images (*.86F)\0*.86F\0"
+ IDS_2077 "Click to capture mouse"
+ IDS_2078 "Press F8+F12 to release mouse"
+ IDS_2079 "Press F8+F12 or middle button to release mouse"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Unable to initialize FluidSynth"
- IDS_2081 "Bus"
- IDS_2082 "File"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Unable to initialize FluidSynth"
+ IDS_2081 "Bus"
+ IDS_2082 "File"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Check BPB"
- IDS_2089 "KB"
- IDS_2090 "Could not initialize the video renderer."
- IDS_2091 "Default"
- IDS_2092 "%i Wait state(s)"
- IDS_2093 "Type"
- IDS_2094 "Failed to set up PCap"
- IDS_2095 "No PCap devices found"
- IDS_2096 "Invalid PCap device"
- IDS_2097 "Standard 2-button joystick(s)"
- IDS_2098 "Standard 4-button joystick"
- IDS_2099 "Standard 6-button joystick"
- IDS_2100 "Standard 8-button joystick"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "None"
- IDS_2105 "Unable to load keyboard accelerators."
- IDS_2106 "Unable to register raw input."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Floppy %i (%s): %ls"
- IDS_2110 "All images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
- IDS_2111 "Unable to initialize FreeType"
- IDS_2112 "Unable to initialize SDL, SDL2.dll is required"
- IDS_2113 "Are you sure you want to hard reset the emulated machine?"
- IDS_2114 "Are you sure you want to exit 86Box?"
- IDS_2115 "Unable to initialize Ghostscript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2118 "Welcome to 86Box!"
- IDS_2119 "Internal controller"
- IDS_2120 "Exit"
- IDS_2121 "No ROMs found"
- IDS_2122 "Do you want to save the settings?"
- IDS_2123 "This will hard reset the emulated machine."
- IDS_2124 "Save"
- IDS_2125 "About 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Check BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Could not initialize the video renderer."
+ IDS_2091 "Default"
+ IDS_2092 "%i Wait state(s)"
+ IDS_2093 "Type"
+ IDS_2094 "Failed to set up PCap"
+ IDS_2095 "No PCap devices found"
+ IDS_2096 "Invalid PCap device"
+ IDS_2097 "Standard 2-button joystick(s)"
+ IDS_2098 "Standard 4-button joystick"
+ IDS_2099 "Standard 6-button joystick"
+ IDS_2100 "Standard 8-button joystick"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "None"
+ IDS_2105 "Unable to load keyboard accelerators."
+ IDS_2106 "Unable to register raw input."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Floppy %i (%s): %ls"
+ IDS_2110 "All images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
+ IDS_2111 "Unable to initialize FreeType"
+ IDS_2112 "Unable to initialize SDL, SDL2.dll is required"
+ IDS_2113 "Are you sure you want to hard reset the emulated machine?"
+ IDS_2114 "Are you sure you want to exit 86Box?"
+ IDS_2115 "Unable to initialize Ghostscript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2118 "Welcome to 86Box!"
+ IDS_2119 "Internal controller"
+ IDS_2120 "Exit"
+ IDS_2121 "No ROMs found"
+ IDS_2122 "Do you want to save the settings?"
+ IDS_2123 "This will hard reset the emulated machine."
+ IDS_2124 "Save"
+ IDS_2125 "About 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information."
- IDS_2128 "OK"
- IDS_2129 "Hardware not available"
+ IDS_2127 "An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information."
+ IDS_2128 "OK"
+ IDS_2129 "Hardware not available"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Make sure " LIB_NAME_PCAP " is installed and that you are on a " LIB_NAME_PCAP "-compatible network connection."
- IDS_2131 "Invalid configuration"
+ IDS_2130 "Make sure " LIB_NAME_PCAP " is installed and that you are on a " LIB_NAME_PCAP "-compatible network connection."
+ IDS_2131 "Invalid configuration"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " is required for ESC/P printer emulation."
+ IDS_2132 LIB_NAME_FREETYPE " is required for ESC/P printer emulation."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files."
+ IDS_2133 LIB_NAME_GS " is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " is required for FluidSynth MIDI output."
- IDS_2135 "Entering fullscreen mode"
- IDS_2136 "Don't show this message again"
- IDS_2137 "Don't exit"
- IDS_2138 "Reset"
- IDS_2139 "Don't reset"
- IDS_2140 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2141 "CD-ROM images (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
- IDS_2142 "%hs Device Configuration"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " is required for FluidSynth MIDI output."
+ IDS_2135 "Entering fullscreen mode"
+ IDS_2136 "Don't show this message again"
+ IDS_2137 "Don't exit"
+ IDS_2138 "Reset"
+ IDS_2139 "Don't reset"
+ IDS_2140 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2141 "CD-ROM images (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
+ IDS_2142 "%hs Device Configuration"
IDS_2143 "Monitor in sleep mode"
- IDS_2144 "OpenGL Shaders (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
- IDS_2145 "OpenGL options"
- IDS_2146 "You are loading an unsupported configuration"
- IDS_2147 "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid."
- IDS_2148 "Continue"
- IDS_2149 "Cassette: %s"
- IDS_2150 "Cassette images (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
- IDS_2151 "Cartridge %i: %ls"
- IDS_2152 "Cartridge images (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
- IDS_2153 "Error initializing renderer"
- IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
- IDS_2155 "Resume execution"
- IDS_2156 "Pause execution"
- IDS_2157 "Press Ctrl+Alt+Del"
- IDS_2158 "Press Ctrl+Alt+Esc"
- IDS_2159 "Hard reset"
- IDS_2160 "ACPI shutdown"
- IDS_2161 "Settings"
+ IDS_2144 "OpenGL Shaders (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
+ IDS_2145 "OpenGL options"
+ IDS_2146 "You are loading an unsupported configuration"
+ IDS_2147 "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid."
+ IDS_2148 "Continue"
+ IDS_2149 "Cassette: %s"
+ IDS_2150 "Cassette images (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
+ IDS_2151 "Cartridge %i: %ls"
+ IDS_2152 "Cartridge images (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
+ IDS_2153 "Error initializing renderer"
+ IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+ IDS_2155 "Resume execution"
+ IDS_2156 "Pause execution"
+ IDS_2157 "Press Ctrl+Alt+Del"
+ IDS_2158 "Press Ctrl+Alt+Esc"
+ IDS_2159 "Hard reset"
+ IDS_2160 "ACPI shutdown"
+ IDS_2161 "Settings"
IDS_2162 "Earlier drive"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Hard disk (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL or ESDI CD-ROM drives never existed"
- IDS_4100 "Custom..."
- IDS_4101 "Custom (large)..."
- IDS_4102 "Add New Hard Disk"
- IDS_4103 "Add Existing Hard Disk"
- IDS_4104 "HDI disk images cannot be larger than 4 GB."
- IDS_4105 "Disk images cannot be larger than 127 GB."
- IDS_4106 "Hard disk images (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
- IDS_4107 "Unable to read file"
- IDS_4108 "Unable to write file"
- IDS_4109 "HDI or HDX images with a sector size other than 512 are not supported."
- IDS_4110 "USB is not yet supported"
- IDS_4111 "Disk image file already exists"
- IDS_4112 "Please specify a valid file name."
- IDS_4113 "Disk image created"
- IDS_4114 "Make sure the file exists and is readable."
- IDS_4115 "Make sure the file is being saved to a writable directory."
- IDS_4116 "Disk image too large"
- IDS_4117 "Remember to partition and format the newly-created drive."
- IDS_4118 "The selected file will be overwritten. Are you sure you want to use it?"
- IDS_4119 "Unsupported disk image"
- IDS_4120 "Overwrite"
- IDS_4121 "Don't overwrite"
- IDS_4122 "Raw image (.img)"
- IDS_4123 "HDI image (.hdi)"
- IDS_4124 "HDX image (.hdx)"
- IDS_4125 "Fixed-size VHD (.vhd)"
- IDS_4126 "Dynamic-size VHD (.vhd)"
- IDS_4127 "Differencing VHD (.vhd)"
- IDS_4128 "Large blocks (2 MB)"
- IDS_4129 "Small blocks (512 KB)"
- IDS_4130 "VHD files (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
- IDS_4131 "Select the parent VHD"
- IDS_4132 "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?"
- IDS_4133 "Parent and child disk timestamps do not match"
- IDS_4134 "Could not fix VHD timestamp."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL or ESDI CD-ROM drives never existed"
+ IDS_4100 "Custom..."
+ IDS_4101 "Custom (large)..."
+ IDS_4102 "Add New Hard Disk"
+ IDS_4103 "Add Existing Hard Disk"
+ IDS_4104 "HDI disk images cannot be larger than 4 GB."
+ IDS_4105 "Disk images cannot be larger than 127 GB."
+ IDS_4106 "Hard disk images (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
+ IDS_4107 "Unable to read file"
+ IDS_4108 "Unable to write file"
+ IDS_4109 "HDI or HDX images with a sector size other than 512 are not supported."
+ IDS_4110 "USB is not yet supported"
+ IDS_4111 "Disk image file already exists"
+ IDS_4112 "Please specify a valid file name."
+ IDS_4113 "Disk image created"
+ IDS_4114 "Make sure the file exists and is readable."
+ IDS_4115 "Make sure the file is being saved to a writable directory."
+ IDS_4116 "Disk image too large"
+ IDS_4117 "Remember to partition and format the newly-created drive."
+ IDS_4118 "The selected file will be overwritten. Are you sure you want to use it?"
+ IDS_4119 "Unsupported disk image"
+ IDS_4120 "Overwrite"
+ IDS_4121 "Don't overwrite"
+ IDS_4122 "Raw image (.img)"
+ IDS_4123 "HDI image (.hdi)"
+ IDS_4124 "HDX image (.hdx)"
+ IDS_4125 "Fixed-size VHD (.vhd)"
+ IDS_4126 "Dynamic-size VHD (.vhd)"
+ IDS_4127 "Differencing VHD (.vhd)"
+ IDS_4128 "Large blocks (2 MB)"
+ IDS_4129 "Small blocks (512 KB)"
+ IDS_4130 "VHD files (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
+ IDS_4131 "Select the parent VHD"
+ IDS_4132 "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?"
+ IDS_4133 "Parent and child disk timestamps do not match"
+ IDS_4134 "Could not fix VHD timestamp."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Disabled"
- IDS_5381 "ATAPI"
+ IDS_5376 "Disabled"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Disabled"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Disabled"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "Perfect RPM"
- IDS_6145 "1% below perfect RPM"
- IDS_6146 "1.5% below perfect RPM"
- IDS_6147 "2% below perfect RPM"
+ IDS_6144 "Perfect RPM"
+ IDS_6145 "1% below perfect RPM"
+ IDS_6146 "1.5% below perfect RPM"
+ IDS_6147 "2% below perfect RPM"
- IDS_7168 "(System Default)"
+ IDS_7168 "(System Default)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// English (U.K.) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/en-US.rc b/src/win/languages/en-US.rc
index dcda2a1b4..a0719ac1d 100644
--- a/src/win/languages/en-US.rc
+++ b/src/win/languages/en-US.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Action"
BEGIN
- MENUITEM "&Keyboard requires capture", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Right CTRL is left ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Keyboard requires capture", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Right CTRL is left ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pause", IDM_ACTION_PAUSE
+ MENUITEM "&Pause", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "E&xit...", IDM_ACTION_EXIT
+ MENUITEM "E&xit...", IDM_ACTION_EXIT
END
POPUP "&View"
BEGIN
- MENUITEM "&Hide status bar", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Hide status bar", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Resizeable window", IDM_VID_RESIZE
- MENUITEM "R&emember size && position", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Resizeable window", IDM_VID_RESIZE
+ MENUITEM "R&emember size && position", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "Re&nderer"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Specify dimensions...", IDM_VID_SPECIFY_DIM
- MENUITEM "F&orce 4:3 display ratio", IDM_VID_FORCE43
+ MENUITEM "Specify dimensions...", IDM_VID_SPECIFY_DIM
+ MENUITEM "F&orce 4:3 display ratio", IDM_VID_FORCE43
POPUP "&Window scale factor"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Filter method"
BEGIN
- MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Hi&DPI scaling", IDM_VID_HIDPI
+ MENUITEM "Hi&DPI scaling", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Fullscreen\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Fullscreen\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Fullscreen &stretch mode"
BEGIN
- MENUITEM "&Full screen stretch", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Full screen stretch", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Square pixels (Keep ratio)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Integer scale", IDM_VID_FS_INT
+ MENUITEM "&Integer scale", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGA settings"
BEGIN
- MENUITEM "&Inverted VGA monitor", IDM_VID_INVERT
+ MENUITEM "&Inverted VGA monitor", IDM_VID_INVERT
POPUP "VGA screen &type"
BEGIN
- MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
- MENUITEM "&RGB Grayscale", IDM_VID_GRAY_MONO
- MENUITEM "&Amber monitor", IDM_VID_GRAY_AMBER
- MENUITEM "&Green monitor", IDM_VID_GRAY_GREEN
- MENUITEM "&White monitor", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB Grayscale", IDM_VID_GRAY_MONO
+ MENUITEM "&Amber monitor", IDM_VID_GRAY_AMBER
+ MENUITEM "&Green monitor", IDM_VID_GRAY_GREEN
+ MENUITEM "&White monitor", IDM_VID_GRAY_WHITE
END
POPUP "Grayscale &conversion type"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Average", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Average", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
MENUITEM "Change contrast for &monochrome display", IDM_VID_CGACON
END
- MENUITEM "&Media", IDM_MEDIA
+ MENUITEM "&Media", IDM_MEDIA
POPUP "&Tools"
BEGIN
- MENUITEM "&Settings...", IDM_CONFIG
- MENUITEM "&Update status bar icons", IDM_UPDATE_ICONS
+ MENUITEM "&Settings...", IDM_CONFIG
+ MENUITEM "&Update status bar icons", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Preferences...", IDM_PREFERENCES
+ MENUITEM "&Preferences...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Enable &Discord integration", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "Sound &gain...", IDM_SND_GAIN
+ MENUITEM "Sound &gain...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Begin trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "End trace\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Begin trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "End trace\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Help"
BEGIN
- MENUITEM "&Documentation...", IDM_DOCS
- MENUITEM "&About 86Box...", IDM_ABOUT
+ MENUITEM "&Documentation...", IDM_DOCS
+ MENUITEM "&About 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&New image...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Record", IDM_CASSETTE_RECORD
- MENUITEM "&Play", IDM_CASSETTE_PLAY
- MENUITEM "&Rewind to the beginning", IDM_CASSETTE_REWIND
- MENUITEM "&Fast forward to the end", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Record", IDM_CASSETTE_RECORD
+ MENUITEM "&Play", IDM_CASSETTE_PLAY
+ MENUITEM "&Rewind to the beginning", IDM_CASSETTE_REWIND
+ MENUITEM "&Fast forward to the end", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_CASSETTE_EJECT
+ MENUITEM "E&ject", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Image...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Image...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_CARTRIDGE_EJECT
+ MENUITEM "E&ject", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&New image...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xport to 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xport to 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_FLOPPY_EJECT
+ MENUITEM "E&ject", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Mute", IDM_CDROM_MUTE
+ MENUITEM "&Mute", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "E&mpty", IDM_CDROM_EMPTY
- MENUITEM "&Reload previous image", IDM_CDROM_RELOAD
+ MENUITEM "E&mpty", IDM_CDROM_EMPTY
+ MENUITEM "&Reload previous image", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Image...", IDM_CDROM_IMAGE
- MENUITEM "&Folder...", IDM_CDROM_DIR
+ MENUITEM "&Image...", IDM_CDROM_IMAGE
+ MENUITEM "&Folder...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&New image...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_ZIP_EJECT
- MENUITEM "&Reload previous image", IDM_ZIP_RELOAD
+ MENUITEM "E&ject", IDM_ZIP_EJECT
+ MENUITEM "&Reload previous image", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&New image...", IDM_MO_IMAGE_NEW
+ MENUITEM "&New image...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Existing image...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Existing image (&Write-protected)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Existing image...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Existing image (&Write-protected)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&ject", IDM_MO_EJECT
- MENUITEM "&Reload previous image", IDM_MO_RELOAD
+ MENUITEM "E&ject", IDM_MO_EJECT
+ MENUITEM "&Reload previous image", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Preferences"
-#define STR_SND_GAIN "Sound Gain"
-#define STR_NEW_FLOPPY "New Image"
-#define STR_CONFIG "Settings"
-#define STR_SPECIFY_DIM "Specify Main Window Dimensions"
+#define STR_PREFERENCES "Preferences"
+#define STR_SND_GAIN "Sound Gain"
+#define STR_NEW_FLOPPY "New Image"
+#define STR_CONFIG "Settings"
+#define STR_SPECIFY_DIM "Specify Main Window Dimensions"
-#define STR_OK "OK"
-#define STR_CANCEL "Cancel"
-#define STR_GLOBAL "Save these settings as &global defaults"
-#define STR_DEFAULT "&Default"
-#define STR_LANGUAGE "Language:"
-#define STR_ICONSET "Icon set:"
+#define STR_OK "OK"
+#define STR_CANCEL "Cancel"
+#define STR_GLOBAL "Save these settings as &global defaults"
+#define STR_DEFAULT "&Default"
+#define STR_LANGUAGE "Language:"
+#define STR_ICONSET "Icon set:"
-#define STR_GAIN "Gain"
+#define STR_GAIN "Gain"
-#define STR_FILE_NAME "File name:"
-#define STR_DISK_SIZE "Disk size:"
-#define STR_RPM_MODE "RPM mode:"
-#define STR_PROGRESS "Progress:"
+#define STR_FILE_NAME "File name:"
+#define STR_DISK_SIZE "Disk size:"
+#define STR_RPM_MODE "RPM mode:"
+#define STR_PROGRESS "Progress:"
-#define STR_WIDTH "Width:"
-#define STR_HEIGHT "Height:"
-#define STR_LOCK_TO_SIZE "Lock to this size"
+#define STR_WIDTH "Width:"
+#define STR_HEIGHT "Height:"
+#define STR_LOCK_TO_SIZE "Lock to this size"
-#define STR_MACHINE_TYPE "Machine type:"
-#define STR_MACHINE "Machine:"
-#define STR_CONFIGURE "Configure"
-#define STR_CPU_TYPE "CPU type:"
-#define STR_CPU_SPEED "Speed:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Wait states:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memory:"
-#define STR_TIME_SYNC "Time synchronization"
-#define STR_DISABLED "Disabled"
-#define STR_ENABLED_LOCAL "Enabled (local time)"
-#define STR_ENABLED_UTC "Enabled (UTC)"
-#define STR_DYNAREC "Dynamic Recompiler"
+#define STR_MACHINE_TYPE "Machine type:"
+#define STR_MACHINE "Machine:"
+#define STR_CONFIGURE "Configure"
+#define STR_CPU_TYPE "CPU type:"
+#define STR_CPU_SPEED "Speed:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Wait states:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memory:"
+#define STR_TIME_SYNC "Time synchronization"
+#define STR_DISABLED "Disabled"
+#define STR_ENABLED_LOCAL "Enabled (local time)"
+#define STR_ENABLED_UTC "Enabled (UTC)"
+#define STR_DYNAREC "Dynamic Recompiler"
-#define STR_VIDEO "Video:"
-#define STR_VIDEO_2 "Video 2:"
-#define STR_VOODOO "Voodoo Graphics"
-#define STR_IBM8514 "IBM 8514/a Graphics"
-#define STR_XGA "XGA Graphics"
+#define STR_VIDEO "Video:"
+#define STR_VIDEO_2 "Video 2:"
+#define STR_VOODOO "Voodoo Graphics"
+#define STR_IBM8514 "IBM 8514/a Graphics"
+#define STR_XGA "XGA Graphics"
-#define STR_MOUSE "Mouse:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Mouse:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "COM3 Device:"
-#define STR_COM4 "COM4 Device:"
-#define STR_LPT1 "LPT1 Device:"
-#define STR_LPT2 "LPT2 Device:"
-#define STR_LPT3 "LPT3 Device:"
-#define STR_LPT4 "LPT4 Device:"
-#define STR_SERIAL1 "Serial port 1"
-#define STR_SERIAL2 "Serial port 2"
-#define STR_SERIAL3 "Serial port 3"
-#define STR_SERIAL4 "Serial port 4"
-#define STR_PARALLEL1 "Parallel port 1"
-#define STR_PARALLEL2 "Parallel port 2"
-#define STR_PARALLEL3 "Parallel port 3"
-#define STR_PARALLEL4 "Parallel port 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1 Device:"
+#define STR_COM2 "COM2 Device:"
+#define STR_COM3 "COM3 Device:"
+#define STR_COM4 "COM4 Device:"
+#define STR_LPT1 "LPT1 Device:"
+#define STR_LPT2 "LPT2 Device:"
+#define STR_LPT3 "LPT3 Device:"
+#define STR_LPT4 "LPT4 Device:"
+#define STR_SERIAL1 "Serial port 1"
+#define STR_SERIAL2 "Serial port 2"
+#define STR_SERIAL3 "Serial port 3"
+#define STR_SERIAL4 "Serial port 4"
+#define STR_PARALLEL1 "Parallel port 1"
+#define STR_PARALLEL2 "Parallel port 2"
+#define STR_PARALLEL3 "Parallel port 3"
+#define STR_PARALLEL4 "Parallel port 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "HD Controller:"
-#define STR_FDC "FD Controller:"
-#define STR_IDE_TER "Tertiary IDE Controller"
-#define STR_IDE_QUA "Quaternary IDE Controller"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Controller 1:"
-#define STR_SCSI_2 "Controller 2:"
-#define STR_SCSI_3 "Controller 3:"
-#define STR_SCSI_4 "Controller 4:"
-#define STR_CASSETTE "Cassette"
+#define STR_HDC "HD Controller:"
+#define STR_FDC "FD Controller:"
+#define STR_IDE_TER "Tertiary IDE Controller"
+#define STR_IDE_QUA "Quaternary IDE Controller"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Controller 1:"
+#define STR_SCSI_2 "Controller 2:"
+#define STR_SCSI_3 "Controller 3:"
+#define STR_SCSI_4 "Controller 4:"
+#define STR_CASSETTE "Cassette"
-#define STR_HDD "Hard disks:"
-#define STR_NEW "&New..."
-#define STR_EXISTING "&Existing..."
-#define STR_REMOVE "&Remove"
-#define STR_BUS "Bus:"
-#define STR_CHANNEL "Channel:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Hard disks:"
+#define STR_NEW "&New..."
+#define STR_EXISTING "&Existing..."
+#define STR_REMOVE "&Remove"
+#define STR_BUS "Bus:"
+#define STR_CHANNEL "Channel:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Specify..."
-#define STR_SECTORS "Sectors:"
-#define STR_HEADS "Heads:"
-#define STR_CYLS "Cylinders:"
-#define STR_SIZE_MB "Size (MB):"
-#define STR_TYPE "Type:"
-#define STR_IMG_FORMAT "Image Format:"
-#define STR_BLOCK_SIZE "Block Size:"
+#define STR_SPECIFY "&Specify..."
+#define STR_SECTORS "Sectors:"
+#define STR_HEADS "Heads:"
+#define STR_CYLS "Cylinders:"
+#define STR_SIZE_MB "Size (MB):"
+#define STR_TYPE "Type:"
+#define STR_IMG_FORMAT "Image Format:"
+#define STR_BLOCK_SIZE "Block Size:"
-#define STR_FLOPPY_DRIVES "Floppy drives:"
-#define STR_TURBO "Turbo timings"
-#define STR_CHECKBPB "Check BPB"
-#define STR_CDROM_DRIVES "CD-ROM drives:"
-#define STR_CD_SPEED "Speed:"
-#define STR_EARLY "Earlier drive"
+#define STR_FLOPPY_DRIVES "Floppy drives:"
+#define STR_TURBO "Turbo timings"
+#define STR_CHECKBPB "Check BPB"
+#define STR_CDROM_DRIVES "CD-ROM drives:"
+#define STR_CD_SPEED "Speed:"
+#define STR_EARLY "Earlier drive"
-#define STR_MO_DRIVES "MO drives:"
-#define STR_ZIP_DRIVES "ZIP drives:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "MO drives:"
+#define STR_ZIP_DRIVES "ZIP drives:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "ISA Memory Expansion"
-#define STR_ISAMEM_1 "Card 1:"
-#define STR_ISAMEM_2 "Card 2:"
-#define STR_ISAMEM_3 "Card 3:"
-#define STR_ISAMEM_4 "Card 4:"
-#define STR_BUGGER "ISABugger device"
-#define STR_POSTCARD "POST card"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "ISA Memory Expansion"
+#define STR_ISAMEM_1 "Card 1:"
+#define STR_ISAMEM_2 "Card 2:"
+#define STR_ISAMEM_3 "Card 3:"
+#define STR_ISAMEM_4 "Card 4:"
+#define STR_BUGGER "ISABugger device"
+#define STR_POSTCARD "POST card"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Error"
- IDS_2050 "Fatal error"
- IDS_2051 " - PAUSED"
- IDS_2052 "Press Ctrl+Alt+PgDn to return to windowed mode."
- IDS_2053 "Speed"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the ""roms"" directory."
- IDS_2057 "(empty)"
- IDS_2058 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "On"
- IDS_2061 "Off"
- IDS_2062 "All images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
- IDS_2063 "Machine ""%hs"" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine."
+ 2048 "86Box"
+ IDS_2049 "Error"
+ IDS_2050 "Fatal error"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Press Ctrl+Alt+PgDn to return to windowed mode."
+ IDS_2053 "Speed"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box could not find any usable ROM images.\n\nPlease download a ROM set and extract it into the ""roms"" directory."
+ IDS_2057 "(empty)"
+ IDS_2058 "ZIP images (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "On"
+ IDS_2061 "Off"
+ IDS_2062 "All images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
+ IDS_2063 "Machine ""%hs"" is not available due to missing ROMs in the roms/machines directory. Switching to an available machine."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Video card ""%hs"" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
- IDS_2065 "Machine"
- IDS_2066 "Display"
- IDS_2067 "Input devices"
- IDS_2068 "Sound"
- IDS_2069 "Network"
- IDS_2070 "Ports (COM & LPT)"
- IDS_2071 "Storage controllers"
- IDS_2072 "Hard disks"
- IDS_2073 "Floppy & CD-ROM drives"
- IDS_2074 "Other removable devices"
- IDS_2075 "Other peripherals"
- IDS_2076 "Surface images (*.86F)\0*.86F\0"
- IDS_2077 "Click to capture mouse"
- IDS_2078 "Press F8+F12 to release mouse"
- IDS_2079 "Press F8+F12 or middle button to release mouse"
+ IDS_2064 "Video card ""%hs"" is not available due to missing ROMs in the roms/video directory. Switching to an available video card."
+ IDS_2065 "Machine"
+ IDS_2066 "Display"
+ IDS_2067 "Input devices"
+ IDS_2068 "Sound"
+ IDS_2069 "Network"
+ IDS_2070 "Ports (COM & LPT)"
+ IDS_2071 "Storage controllers"
+ IDS_2072 "Hard disks"
+ IDS_2073 "Floppy & CD-ROM drives"
+ IDS_2074 "Other removable devices"
+ IDS_2075 "Other peripherals"
+ IDS_2076 "Surface images (*.86F)\0*.86F\0"
+ IDS_2077 "Click to capture mouse"
+ IDS_2078 "Press F8+F12 to release mouse"
+ IDS_2079 "Press F8+F12 or middle button to release mouse"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Unable to initialize FluidSynth"
- IDS_2081 "Bus"
- IDS_2082 "File"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Unable to initialize FluidSynth"
+ IDS_2081 "Bus"
+ IDS_2082 "File"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Check BPB"
- IDS_2089 "KB"
- IDS_2090 "Could not initialize the video renderer."
- IDS_2091 "Default"
- IDS_2092 "%i Wait state(s)"
- IDS_2093 "Type"
- IDS_2094 "Failed to set up PCap"
- IDS_2095 "No PCap devices found"
- IDS_2096 "Invalid PCap device"
- IDS_2097 "Standard 2-button joystick(s)"
- IDS_2098 "Standard 4-button joystick"
- IDS_2099 "Standard 6-button joystick"
- IDS_2100 "Standard 8-button joystick"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "None"
- IDS_2105 "Unable to load keyboard accelerators."
- IDS_2106 "Unable to register raw input."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Floppy %i (%s): %ls"
- IDS_2110 "All images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
- IDS_2111 "Unable to initialize FreeType"
- IDS_2112 "Unable to initialize SDL, SDL2.dll is required"
- IDS_2113 "Are you sure you want to hard reset the emulated machine?"
- IDS_2114 "Are you sure you want to exit 86Box?"
- IDS_2115 "Unable to initialize Ghostscript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2118 "Welcome to 86Box!"
- IDS_2119 "Internal controller"
- IDS_2120 "Exit"
- IDS_2121 "No ROMs found"
- IDS_2122 "Do you want to save the settings?"
- IDS_2123 "This will hard reset the emulated machine."
- IDS_2124 "Save"
- IDS_2125 "About 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Check BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Could not initialize the video renderer."
+ IDS_2091 "Default"
+ IDS_2092 "%i Wait state(s)"
+ IDS_2093 "Type"
+ IDS_2094 "Failed to set up PCap"
+ IDS_2095 "No PCap devices found"
+ IDS_2096 "Invalid PCap device"
+ IDS_2097 "Standard 2-button joystick(s)"
+ IDS_2098 "Standard 4-button joystick"
+ IDS_2099 "Standard 6-button joystick"
+ IDS_2100 "Standard 8-button joystick"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "None"
+ IDS_2105 "Unable to load keyboard accelerators."
+ IDS_2106 "Unable to register raw input."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Floppy %i (%s): %ls"
+ IDS_2110 "All images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
+ IDS_2111 "Unable to initialize FreeType"
+ IDS_2112 "Unable to initialize SDL, SDL2.dll is required"
+ IDS_2113 "Are you sure you want to hard reset the emulated machine?"
+ IDS_2114 "Are you sure you want to exit 86Box?"
+ IDS_2115 "Unable to initialize Ghostscript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2118 "Welcome to 86Box!"
+ IDS_2119 "Internal controller"
+ IDS_2120 "Exit"
+ IDS_2121 "No ROMs found"
+ IDS_2122 "Do you want to save the settings?"
+ IDS_2123 "This will hard reset the emulated machine."
+ IDS_2124 "Save"
+ IDS_2125 "About 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information."
- IDS_2128 "OK"
- IDS_2129 "Hardware not available"
+ IDS_2127 "An emulator of old computers\n\nAuthors: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nReleased under the GNU General Public License version 2 or later. See LICENSE for more information."
+ IDS_2128 "OK"
+ IDS_2129 "Hardware not available"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Make sure " LIB_NAME_PCAP " is installed and that you are on a " LIB_NAME_PCAP "-compatible network connection."
- IDS_2131 "Invalid configuration"
+ IDS_2130 "Make sure " LIB_NAME_PCAP " is installed and that you are on a " LIB_NAME_PCAP "-compatible network connection."
+ IDS_2131 "Invalid configuration"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " is required for ESC/P printer emulation."
+ IDS_2132 LIB_NAME_FREETYPE " is required for ESC/P printer emulation."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files."
+ IDS_2133 LIB_NAME_GS " is required for automatic conversion of PostScript files to PDF.\n\nAny documents sent to the generic PostScript printer will be saved as PostScript (.ps) files."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " is required for FluidSynth MIDI output."
- IDS_2135 "Entering fullscreen mode"
- IDS_2136 "Don't show this message again"
- IDS_2137 "Don't exit"
- IDS_2138 "Reset"
- IDS_2139 "Don't reset"
- IDS_2140 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2141 "CD-ROM images (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
- IDS_2142 "%hs Device Configuration"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " is required for FluidSynth MIDI output."
+ IDS_2135 "Entering fullscreen mode"
+ IDS_2136 "Don't show this message again"
+ IDS_2137 "Don't exit"
+ IDS_2138 "Reset"
+ IDS_2139 "Don't reset"
+ IDS_2140 "MO images (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2141 "CD-ROM images (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
+ IDS_2142 "%hs Device Configuration"
IDS_2143 "Monitor in sleep mode"
- IDS_2144 "OpenGL Shaders (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
- IDS_2145 "OpenGL options"
- IDS_2146 "You are loading an unsupported configuration"
- IDS_2147 "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid."
- IDS_2148 "Continue"
- IDS_2149 "Cassette: %s"
- IDS_2150 "Cassette images (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
- IDS_2151 "Cartridge %i: %ls"
- IDS_2152 "Cartridge images (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
- IDS_2153 "Error initializing renderer"
- IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
- IDS_2155 "Resume execution"
- IDS_2156 "Pause execution"
- IDS_2157 "Press Ctrl+Alt+Del"
- IDS_2158 "Press Ctrl+Alt+Esc"
- IDS_2159 "Hard reset"
- IDS_2160 "ACPI shutdown"
- IDS_2161 "Settings"
+ IDS_2144 "OpenGL Shaders (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
+ IDS_2145 "OpenGL options"
+ IDS_2146 "You are loading an unsupported configuration"
+ IDS_2147 "CPU type filtering based on selected machine is disabled for this emulated machine.\n\nThis makes it possible to choose a CPU that is otherwise incompatible with the selected machine. However, you may run into incompatibilities with the machine BIOS or other software.\n\nEnabling this setting is not officially supported and any bug reports filed may be closed as invalid."
+ IDS_2148 "Continue"
+ IDS_2149 "Cassette: %s"
+ IDS_2150 "Cassette images (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
+ IDS_2151 "Cartridge %i: %ls"
+ IDS_2152 "Cartridge images (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
+ IDS_2153 "Error initializing renderer"
+ IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+ IDS_2155 "Resume execution"
+ IDS_2156 "Pause execution"
+ IDS_2157 "Press Ctrl+Alt+Del"
+ IDS_2158 "Press Ctrl+Alt+Esc"
+ IDS_2159 "Hard reset"
+ IDS_2160 "ACPI shutdown"
+ IDS_2161 "Settings"
IDS_2162 "Earlier drive"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Hard disk (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL or ESDI CD-ROM drives never existed"
- IDS_4100 "Custom..."
- IDS_4101 "Custom (large)..."
- IDS_4102 "Add New Hard Disk"
- IDS_4103 "Add Existing Hard Disk"
- IDS_4104 "HDI disk images cannot be larger than 4 GB."
- IDS_4105 "Disk images cannot be larger than 127 GB."
- IDS_4106 "Hard disk images (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
- IDS_4107 "Unable to read file"
- IDS_4108 "Unable to write file"
- IDS_4109 "HDI or HDX images with a sector size other than 512 are not supported."
- IDS_4110 "USB is not yet supported"
- IDS_4111 "Disk image file already exists"
- IDS_4112 "Please specify a valid file name."
- IDS_4113 "Disk image created"
- IDS_4114 "Make sure the file exists and is readable."
- IDS_4115 "Make sure the file is being saved to a writable directory."
- IDS_4116 "Disk image too large"
- IDS_4117 "Remember to partition and format the newly-created drive."
- IDS_4118 "The selected file will be overwritten. Are you sure you want to use it?"
- IDS_4119 "Unsupported disk image"
- IDS_4120 "Overwrite"
- IDS_4121 "Don't overwrite"
- IDS_4122 "Raw image (.img)"
- IDS_4123 "HDI image (.hdi)"
- IDS_4124 "HDX image (.hdx)"
- IDS_4125 "Fixed-size VHD (.vhd)"
- IDS_4126 "Dynamic-size VHD (.vhd)"
- IDS_4127 "Differencing VHD (.vhd)"
- IDS_4128 "Large blocks (2 MB)"
- IDS_4129 "Small blocks (512 KB)"
- IDS_4130 "VHD files (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
- IDS_4131 "Select the parent VHD"
- IDS_4132 "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?"
- IDS_4133 "Parent and child disk timestamps do not match"
- IDS_4134 "Could not fix VHD timestamp."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL or ESDI CD-ROM drives never existed"
+ IDS_4100 "Custom..."
+ IDS_4101 "Custom (large)..."
+ IDS_4102 "Add New Hard Disk"
+ IDS_4103 "Add Existing Hard Disk"
+ IDS_4104 "HDI disk images cannot be larger than 4 GB."
+ IDS_4105 "Disk images cannot be larger than 127 GB."
+ IDS_4106 "Hard disk images (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
+ IDS_4107 "Unable to read file"
+ IDS_4108 "Unable to write file"
+ IDS_4109 "HDI or HDX images with a sector size other than 512 are not supported."
+ IDS_4110 "USB is not yet supported"
+ IDS_4111 "Disk image file already exists"
+ IDS_4112 "Please specify a valid file name."
+ IDS_4113 "Disk image created"
+ IDS_4114 "Make sure the file exists and is readable."
+ IDS_4115 "Make sure the file is being saved to a writable directory."
+ IDS_4116 "Disk image too large"
+ IDS_4117 "Remember to partition and format the newly-created drive."
+ IDS_4118 "The selected file will be overwritten. Are you sure you want to use it?"
+ IDS_4119 "Unsupported disk image"
+ IDS_4120 "Overwrite"
+ IDS_4121 "Don't overwrite"
+ IDS_4122 "Raw image (.img)"
+ IDS_4123 "HDI image (.hdi)"
+ IDS_4124 "HDX image (.hdx)"
+ IDS_4125 "Fixed-size VHD (.vhd)"
+ IDS_4126 "Dynamic-size VHD (.vhd)"
+ IDS_4127 "Differencing VHD (.vhd)"
+ IDS_4128 "Large blocks (2 MB)"
+ IDS_4129 "Small blocks (512 KB)"
+ IDS_4130 "VHD files (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
+ IDS_4131 "Select the parent VHD"
+ IDS_4132 "This could mean that the parent image was modified after the differencing image was created.\n\nIt can also happen if the image files were moved or copied, or by a bug in the program that created this disk.\n\nDo you want to fix the timestamps?"
+ IDS_4133 "Parent and child disk timestamps do not match"
+ IDS_4134 "Could not fix VHD timestamp."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Disabled"
- IDS_5381 "ATAPI"
+ IDS_5376 "Disabled"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Disabled"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Disabled"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "Perfect RPM"
- IDS_6145 "1% below perfect RPM"
- IDS_6146 "1.5% below perfect RPM"
- IDS_6147 "2% below perfect RPM"
+ IDS_6144 "Perfect RPM"
+ IDS_6145 "1% below perfect RPM"
+ IDS_6146 "1.5% below perfect RPM"
+ IDS_6147 "2% below perfect RPM"
- IDS_7168 "(System Default)"
+ IDS_7168 "(System Default)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/es-ES.rc b/src/win/languages/es-ES.rc
index 112d5d89e..6bfce6e52 100644
--- a/src/win/languages/es-ES.rc
+++ b/src/win/languages/es-ES.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_SPANISH, SUBLANG_SPANISH
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Acción"
BEGIN
- MENUITEM "&Teclado requiere captura", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "CTRL &derecho es ALT izquierdo", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Teclado requiere captura", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "CTRL &derecho es ALT izquierdo", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pausa", IDM_ACTION_PAUSE
+ MENUITEM "&Pausa", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Salir...", IDM_ACTION_EXIT
+ MENUITEM "&Salir...", IDM_ACTION_EXIT
END
POPUP "&Vista"
BEGIN
- MENUITEM "&Ocultar barra de estado", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Ocultar barra de estado", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Ventana redimensionable", IDM_VID_RESIZE
- MENUITEM "&Recordar tamaño y posición", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Ventana redimensionable", IDM_VID_RESIZE
+ MENUITEM "&Recordar tamaño y posición", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "Re&nderizador"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "E&specificar dimensiones...", IDM_VID_SPECIFY_DIM
- MENUITEM "F&orzar ratio 4:3", IDM_VID_FORCE43
+ MENUITEM "E&specificar dimensiones...", IDM_VID_SPECIFY_DIM
+ MENUITEM "F&orzar ratio 4:3", IDM_VID_FORCE43
POPUP "&Factor de escalado de ventana"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "&Método de filtrado"
BEGIN
- MENUITEM "&Más cercano", IDM_VID_FILTER_NEAREST
- MENUITEM "&Lineal", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Más cercano", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Lineal", IDM_VID_FILTER_LINEAR
END
- MENUITEM "&Escalado alta densidad", IDM_VID_HIDPI
+ MENUITEM "&Escalado alta densidad", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Pantalla completa\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Pantalla completa\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Escalado pantalla completa"
BEGIN
- MENUITEM "&Estirar", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Estirar", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&PÃxeles cuadrados (Mant. aspecto)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Escalado valor entero", IDM_VID_FS_INT
+ MENUITEM "&Escalado valor entero", IDM_VID_FS_INT
END
POPUP "&Ajustes EGA/(S)VGA"
BEGIN
- MENUITEM "&Monitor VGA invertido", IDM_VID_INVERT
+ MENUITEM "&Monitor VGA invertido", IDM_VID_INVERT
POPUP "&Tipo de pantalla VGA"
BEGIN
- MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
- MENUITEM "RGB &Grises", IDM_VID_GRAY_MONO
- MENUITEM "Monitor &Ãmbar", IDM_VID_GRAY_AMBER
- MENUITEM "Monitor &Verde", IDM_VID_GRAY_GREEN
- MENUITEM "Monitor &Blanco", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
+ MENUITEM "RGB &Grises", IDM_VID_GRAY_MONO
+ MENUITEM "Monitor &Ãmbar", IDM_VID_GRAY_AMBER
+ MENUITEM "Monitor &Verde", IDM_VID_GRAY_GREEN
+ MENUITEM "Monitor &Blanco", IDM_VID_GRAY_WHITE
END
POPUP "&Conversión a grises"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Media", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Media", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "&Overscan CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "&Overscan CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Cambiar contraste para pantalla &monocroma", IDM_VID_CGACON
END
- MENUITEM "&Medios", IDM_MEDIA
+ MENUITEM "&Medios", IDM_MEDIA
POPUP "&Herramientas"
BEGIN
- MENUITEM "&Ajustes...", IDM_CONFIG
- MENUITEM "&Actualizar iconos en barra de estado", IDM_UPDATE_ICONS
+ MENUITEM "&Ajustes...", IDM_CONFIG
+ MENUITEM "&Actualizar iconos en barra de estado", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Tomar c&aptura\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Tomar c&aptura\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Preferencias...", IDM_PREFERENCES
+ MENUITEM "&Preferencias...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Habilitar integración con &Discord", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&Ganancia de sonido...", IDM_SND_GAIN
+ MENUITEM "&Ganancia de sonido...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Comenzar traza\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Terminar traza\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Comenzar traza\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Terminar traza\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Ayuda"
BEGIN
- MENUITEM "&Documentación...", IDM_DOCS
- MENUITEM "&Acerca de 86Box...", IDM_ABOUT
+ MENUITEM "&Documentación...", IDM_DOCS
+ MENUITEM "&Acerca de 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nueva imagen...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nueva imagen...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagen &Existente...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Imagen Existente (&Sólo-lectura)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "Imagen &Existente...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Imagen Existente (&Sólo-lectura)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Grabar", IDM_CASSETTE_RECORD
- MENUITEM "&Reproducir", IDM_CASSETTE_PLAY
- MENUITEM "&Rebobinar al inicio", IDM_CASSETTE_REWIND
- MENUITEM "&Avance rápido al final", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Grabar", IDM_CASSETTE_RECORD
+ MENUITEM "&Reproducir", IDM_CASSETTE_PLAY
+ MENUITEM "&Rebobinar al inicio", IDM_CASSETTE_REWIND
+ MENUITEM "&Avance rápido al final", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "E&xtraer", IDM_CASSETTE_EJECT
+ MENUITEM "E&xtraer", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Imagen...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Imagen...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "E&xtraer", IDM_CARTRIDGE_EJECT
+ MENUITEM "E&xtraer", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nueva imagen...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nueva imagen...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagen &existente...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Imagen existente (&sólo-lectura)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "Imagen &existente...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Imagen existente (&sólo-lectura)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xportar a 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xportar a 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "E&xtraer", IDM_FLOPPY_EJECT
+ MENUITEM "E&xtraer", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Silenciar", IDM_CDROM_MUTE
+ MENUITEM "&Silenciar", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "E&xtraer disco", IDM_CDROM_EMPTY
- MENUITEM "&Recargar imagen previa", IDM_CDROM_RELOAD
+ MENUITEM "E&xtraer disco", IDM_CDROM_EMPTY
+ MENUITEM "&Recargar imagen previa", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Imagen...", IDM_CDROM_IMAGE
- MENUITEM "&Carpeta...", IDM_CDROM_DIR
+ MENUITEM "&Imagen...", IDM_CDROM_IMAGE
+ MENUITEM "&Carpeta...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nueva imagen...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nueva imagen...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagen &existente...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Imagen existente (&sólo-lectura)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "Imagen &existente...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Imagen existente (&sólo-lectura)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xtraer", IDM_ZIP_EJECT
- MENUITEM "&Recargar imagen previa", IDM_ZIP_RELOAD
+ MENUITEM "E&xtraer", IDM_ZIP_EJECT
+ MENUITEM "&Recargar imagen previa", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nueva imagen...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nueva imagen...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagen &existente...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Imagen existente (&sólo-lectura)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "Imagen &existente...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Imagen existente (&sólo-lectura)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xtraer", IDM_MO_EJECT
- MENUITEM "&Recargar imagen previa", IDM_MO_RELOAD
+ MENUITEM "E&xtraer", IDM_MO_EJECT
+ MENUITEM "&Recargar imagen previa", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Preferencias"
-#define STR_SND_GAIN "Ganancia de Sonido"
-#define STR_NEW_FLOPPY "Nueva Imagen"
-#define STR_CONFIG "Ajustes"
-#define STR_SPECIFY_DIM "Especificar Dimensiones de la Ventana Principal"
+#define STR_PREFERENCES "Preferencias"
+#define STR_SND_GAIN "Ganancia de Sonido"
+#define STR_NEW_FLOPPY "Nueva Imagen"
+#define STR_CONFIG "Ajustes"
+#define STR_SPECIFY_DIM "Especificar Dimensiones de la Ventana Principal"
-#define STR_OK "Aceptar"
-#define STR_CANCEL "Cancelar"
-#define STR_GLOBAL "Salvar estos ajustes como por &defecto globalmente"
-#define STR_DEFAULT "&Por defecto"
-#define STR_LANGUAGE "Idioma:"
-#define STR_ICONSET "Juego de iconos:"
+#define STR_OK "Aceptar"
+#define STR_CANCEL "Cancelar"
+#define STR_GLOBAL "Salvar estos ajustes como por &defecto globalmente"
+#define STR_DEFAULT "&Por defecto"
+#define STR_LANGUAGE "Idioma:"
+#define STR_ICONSET "Juego de iconos:"
-#define STR_GAIN "Ganancia"
+#define STR_GAIN "Ganancia"
-#define STR_FILE_NAME "Nombre de archivo:"
-#define STR_DISK_SIZE "Tamaño de disco:"
-#define STR_RPM_MODE "Modo RPM:"
-#define STR_PROGRESS "Progreso:"
+#define STR_FILE_NAME "Nombre de archivo:"
+#define STR_DISK_SIZE "Tamaño de disco:"
+#define STR_RPM_MODE "Modo RPM:"
+#define STR_PROGRESS "Progreso:"
-#define STR_WIDTH "Ancho:"
-#define STR_HEIGHT "Alto:"
-#define STR_LOCK_TO_SIZE "Bloquear a este tamaño"
+#define STR_WIDTH "Ancho:"
+#define STR_HEIGHT "Alto:"
+#define STR_LOCK_TO_SIZE "Bloquear a este tamaño"
-#define STR_MACHINE_TYPE "Tipo de máquina:"
-#define STR_MACHINE "Máquina:"
-#define STR_CONFIGURE "Configurar"
-#define STR_CPU_TYPE "Tipo de CPU:"
-#define STR_CPU_SPEED "Velocidad:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Estados en espera:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memoria:"
-#define STR_TIME_SYNC "Sincronización horaria"
-#define STR_DISABLED "Deshabilitado"
-#define STR_ENABLED_LOCAL "Habilitado (hora local)"
-#define STR_ENABLED_UTC "Habilitado (UTC)"
-#define STR_DYNAREC "Recompilador Dinámico"
+#define STR_MACHINE_TYPE "Tipo de máquina:"
+#define STR_MACHINE "Máquina:"
+#define STR_CONFIGURE "Configurar"
+#define STR_CPU_TYPE "Tipo de CPU:"
+#define STR_CPU_SPEED "Velocidad:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Estados en espera:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memoria:"
+#define STR_TIME_SYNC "Sincronización horaria"
+#define STR_DISABLED "Deshabilitado"
+#define STR_ENABLED_LOCAL "Habilitado (hora local)"
+#define STR_ENABLED_UTC "Habilitado (UTC)"
+#define STR_DYNAREC "Recompilador Dinámico"
-#define STR_VIDEO "VÃdeo:"
-#define STR_VIDEO_2 "VÃdeo 2:"
-#define STR_VOODOO "Voodoo Graphics"
-#define STR_IBM8514 "IBM 8514/a Graphics"
-#define STR_XGA "XGA Graphics"
+#define STR_VIDEO "VÃdeo:"
+#define STR_VIDEO_2 "VÃdeo 2:"
+#define STR_VOODOO "Voodoo Graphics"
+#define STR_IBM8514 "IBM 8514/a Graphics"
+#define STR_XGA "XGA Graphics"
-#define STR_MOUSE "Ratón:"
-#define STR_JOYSTICK "Mando:"
-#define STR_JOY1 "Mando 1..."
-#define STR_JOY2 "Mando 2..."
-#define STR_JOY3 "Mando 3..."
-#define STR_JOY4 "Mando 4..."
+#define STR_MOUSE "Ratón:"
+#define STR_JOYSTICK "Mando:"
+#define STR_JOY1 "Mando 1..."
+#define STR_JOY2 "Mando 2..."
+#define STR_JOY3 "Mando 3..."
+#define STR_JOY4 "Mando 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "Dispositivo COM3:"
-#define STR_COM4 "Dispositivo COM4:"
-#define STR_LPT1 "Dispositivo LPT1:"
-#define STR_LPT2 "Dispositivo LPT2:"
-#define STR_LPT3 "Dispositivo LPT3:"
-#define STR_LPT4 "Dispositivo LPT4:"
-#define STR_SERIAL1 "Puerto serie 1"
-#define STR_SERIAL2 "Puerto serie 2"
-#define STR_SERIAL3 "Puerto serie 3"
-#define STR_SERIAL4 "Puerto serie 4"
-#define STR_PARALLEL1 "Puerto paralelo 1"
-#define STR_PARALLEL2 "Puerto paralelo 2"
-#define STR_PARALLEL3 "Puerto paralelo 3"
-#define STR_PARALLEL4 "Puerto paralelo 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "Dispositivo COM1:"
+#define STR_COM2 "Dispositivo COM2:"
+#define STR_COM3 "Dispositivo COM3:"
+#define STR_COM4 "Dispositivo COM4:"
+#define STR_LPT1 "Dispositivo LPT1:"
+#define STR_LPT2 "Dispositivo LPT2:"
+#define STR_LPT3 "Dispositivo LPT3:"
+#define STR_LPT4 "Dispositivo LPT4:"
+#define STR_SERIAL1 "Puerto serie 1"
+#define STR_SERIAL2 "Puerto serie 2"
+#define STR_SERIAL3 "Puerto serie 3"
+#define STR_SERIAL4 "Puerto serie 4"
+#define STR_PARALLEL1 "Puerto paralelo 1"
+#define STR_PARALLEL2 "Puerto paralelo 2"
+#define STR_PARALLEL3 "Puerto paralelo 3"
+#define STR_PARALLEL4 "Puerto paralelo 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Controladora HD:"
-#define STR_FDC "Controladora FD:"
-#define STR_IDE_TER "Tercera controladora IDE"
-#define STR_IDE_QUA "Cuarta controladora IDE"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Controladora 1:"
-#define STR_SCSI_2 "Controladora 2:"
-#define STR_SCSI_3 "Controladora 3:"
-#define STR_SCSI_4 "Controladora 4:"
-#define STR_CASSETTE "Cassette"
+#define STR_HDC "Controladora HD:"
+#define STR_FDC "Controladora FD:"
+#define STR_IDE_TER "Tercera controladora IDE"
+#define STR_IDE_QUA "Cuarta controladora IDE"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Controladora 1:"
+#define STR_SCSI_2 "Controladora 2:"
+#define STR_SCSI_3 "Controladora 3:"
+#define STR_SCSI_4 "Controladora 4:"
+#define STR_CASSETTE "Cassette"
-#define STR_HDD "Discos duros:"
-#define STR_NEW "&Nuevo..."
-#define STR_EXISTING "&Existente..."
-#define STR_REMOVE "E&liminar"
-#define STR_BUS "Bus:"
-#define STR_CHANNEL "Canal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Discos duros:"
+#define STR_NEW "&Nuevo..."
+#define STR_EXISTING "&Existente..."
+#define STR_REMOVE "E&liminar"
+#define STR_BUS "Bus:"
+#define STR_CHANNEL "Canal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "E&specificar..."
-#define STR_SECTORS "Sectores:"
-#define STR_HEADS "Cabezas:"
-#define STR_CYLS "Cilindros:"
-#define STR_SIZE_MB "Tamaño (MB):"
-#define STR_TYPE "Tipo:"
-#define STR_IMG_FORMAT "Formato de imagen:"
-#define STR_BLOCK_SIZE "Tamaño de bloque:"
+#define STR_SPECIFY "E&specificar..."
+#define STR_SECTORS "Sectores:"
+#define STR_HEADS "Cabezas:"
+#define STR_CYLS "Cilindros:"
+#define STR_SIZE_MB "Tamaño (MB):"
+#define STR_TYPE "Tipo:"
+#define STR_IMG_FORMAT "Formato de imagen:"
+#define STR_BLOCK_SIZE "Tamaño de bloque:"
-#define STR_FLOPPY_DRIVES "Unidades de disquete:"
-#define STR_TURBO "Temporizaciones Turbo"
-#define STR_CHECKBPB "Chequear BPB"
-#define STR_CDROM_DRIVES "Unidades de CD-ROM:"
-#define STR_CD_SPEED "Velocidad:"
-#define STR_EARLY "Unidad anterior"
+#define STR_FLOPPY_DRIVES "Unidades de disquete:"
+#define STR_TURBO "Temporizaciones Turbo"
+#define STR_CHECKBPB "Chequear BPB"
+#define STR_CDROM_DRIVES "Unidades de CD-ROM:"
+#define STR_CD_SPEED "Velocidad:"
+#define STR_EARLY "Unidad anterior"
-#define STR_MO_DRIVES "Unidades MO:"
-#define STR_ZIP_DRIVES "Unidades ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Unidades MO:"
+#define STR_ZIP_DRIVES "Unidades ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "Expansión de Memoria ISA"
-#define STR_ISAMEM_1 "Tarjeta 1:"
-#define STR_ISAMEM_2 "Tarjeta 2:"
-#define STR_ISAMEM_3 "Tarjeta 3:"
-#define STR_ISAMEM_4 "Tarjeta 4:"
-#define STR_BUGGER "Dispositivo ISABugger"
-#define STR_POSTCARD "Tarjeta POST"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "Expansión de Memoria ISA"
+#define STR_ISAMEM_1 "Tarjeta 1:"
+#define STR_ISAMEM_2 "Tarjeta 2:"
+#define STR_ISAMEM_3 "Tarjeta 3:"
+#define STR_ISAMEM_4 "Tarjeta 4:"
+#define STR_BUGGER "Dispositivo ISABugger"
+#define STR_POSTCARD "Tarjeta POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Error"
- IDS_2050 "Error fatal"
- IDS_2051 " - PAUSED"
- IDS_2052 "Pulsa Ctrl+Alt+PgDn para volver a modo ventana."
- IDS_2053 "Velocidad"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Imagenes ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box no pudo encontrar ninguna imagen ROM usable.\n\nPor favor descarga un grupo de imágenes y extráelas en el directorio ""roms""."
- IDS_2057 "(vacÃo)"
- IDS_2058 "Imagenes ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "On"
- IDS_2061 "Off"
- IDS_2062 "Todas las imagenes (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
- IDS_2063 "La máquina ""%hs"" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una máquina disponible."
+ 2048 "86Box"
+ IDS_2049 "Error"
+ IDS_2050 "Error fatal"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Pulsa Ctrl+Alt+PgDn para volver a modo ventana."
+ IDS_2053 "Velocidad"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Imagenes ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box no pudo encontrar ninguna imagen ROM usable.\n\nPor favor descarga un grupo de imágenes y extráelas en el directorio ""roms""."
+ IDS_2057 "(vacÃo)"
+ IDS_2058 "Imagenes ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "On"
+ IDS_2061 "Off"
+ IDS_2062 "Todas las imagenes (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basic sector images (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface images (*.86F)\0*.86F\0"
+ IDS_2063 "La máquina ""%hs"" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una máquina disponible."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "La tarjeta de vÃdeo ""%hs"" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una tarjeta de vÃdeo disponible."
- IDS_2065 "Máquina"
- IDS_2066 "VÃdeo"
- IDS_2067 "Dispositivos de Entrada"
- IDS_2068 "Sonido"
- IDS_2069 "Red"
- IDS_2070 "Puertos (COM y LPT)"
- IDS_2071 "Controladoras de Almacenamiento"
- IDS_2072 "Discos Duros"
- IDS_2073 "Disquetes y unidades de CD-ROM"
- IDS_2074 "Otros dispositivos extraÃbles"
- IDS_2075 "Otros periféricos"
- IDS_2076 "Imágenes de superficie (*.86F)\0*.86F\0"
- IDS_2077 "Haz click para capturar el ratón"
- IDS_2078 "Pulsa F8+F12 para liberar el ratón"
- IDS_2079 "Pulsa F8+F12 o el botón central para liberar el ratón"
+ IDS_2064 "La tarjeta de vÃdeo ""%hs"" no está disponible debido a ROMs faltantes en el directorio roms/machines. Cambiando a una tarjeta de vÃdeo disponible."
+ IDS_2065 "Máquina"
+ IDS_2066 "VÃdeo"
+ IDS_2067 "Dispositivos de Entrada"
+ IDS_2068 "Sonido"
+ IDS_2069 "Red"
+ IDS_2070 "Puertos (COM y LPT)"
+ IDS_2071 "Controladoras de Almacenamiento"
+ IDS_2072 "Discos Duros"
+ IDS_2073 "Disquetes y unidades de CD-ROM"
+ IDS_2074 "Otros dispositivos extraÃbles"
+ IDS_2075 "Otros periféricos"
+ IDS_2076 "Imágenes de superficie (*.86F)\0*.86F\0"
+ IDS_2077 "Haz click para capturar el ratón"
+ IDS_2078 "Pulsa F8+F12 para liberar el ratón"
+ IDS_2079 "Pulsa F8+F12 o el botón central para liberar el ratón"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Incapaz de inicializar FluidSynth"
- IDS_2081 "Bus"
- IDS_2082 "Archivo"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Incapaz de inicializar FluidSynth"
+ IDS_2081 "Bus"
+ IDS_2082 "Archivo"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Chequear BPB"
- IDS_2089 "KB"
- IDS_2090 "Incapaz de inicializar el renderizador de vÃdeo."
- IDS_2091 "Por defecto"
- IDS_2092 "%i estado(s) de Espera"
- IDS_2093 "Tipo"
- IDS_2094 "Incapaz de configurar PCap"
- IDS_2095 "No se encontraron dispositivos PCap"
- IDS_2096 "Dispositivo PCap inválido"
- IDS_2097 "Mando(s) de 2 botones estándar"
- IDS_2098 "Mando de 4 botones estándar"
- IDS_2099 "Mando de 6 botones estándar"
- IDS_2100 "Mando de 8 botones estándar"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Ninguno"
- IDS_2105 "Incapaz de cargar aceleradores de teclado."
- IDS_2106 "Incapaz de registrar entrada directa."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Disquete %i (%s): %ls"
- IDS_2110 "Todas las Imágenes (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
- IDS_2111 "Incapaz de inicializar FreeType"
- IDS_2112 "Incapaz de inicializar SDL, se requiere SDL2.dll"
- IDS_2113 "¿Seguro que quieres resetear la máquina emulada?"
- IDS_2114 "¿Seguro que quieres cerrar 86Box?"
- IDS_2115 "Incapaz de inicializar Ghostscript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "Imágenes de MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2118 "¡Bienvenido a 86Box!"
- IDS_2119 "Controladora interna"
- IDS_2120 "Salir"
- IDS_2121 "No se encontraron ROMs"
- IDS_2122 "¿Quieres guardar los ajustes?"
- IDS_2123 "Se hará hard reset de la máquina emulada."
- IDS_2124 "Guardar"
- IDS_2125 "Acerca de 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Chequear BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Incapaz de inicializar el renderizador de vÃdeo."
+ IDS_2091 "Por defecto"
+ IDS_2092 "%i estado(s) de Espera"
+ IDS_2093 "Tipo"
+ IDS_2094 "Incapaz de configurar PCap"
+ IDS_2095 "No se encontraron dispositivos PCap"
+ IDS_2096 "Dispositivo PCap inválido"
+ IDS_2097 "Mando(s) de 2 botones estándar"
+ IDS_2098 "Mando de 4 botones estándar"
+ IDS_2099 "Mando de 6 botones estándar"
+ IDS_2100 "Mando de 8 botones estándar"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Ninguno"
+ IDS_2105 "Incapaz de cargar aceleradores de teclado."
+ IDS_2106 "Incapaz de registrar entrada directa."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Disquete %i (%s): %ls"
+ IDS_2110 "Todas las Imágenes (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Advanced sector images (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basic sector images (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Surface images (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
+ IDS_2111 "Incapaz de inicializar FreeType"
+ IDS_2112 "Incapaz de inicializar SDL, se requiere SDL2.dll"
+ IDS_2113 "¿Seguro que quieres resetear la máquina emulada?"
+ IDS_2114 "¿Seguro que quieres cerrar 86Box?"
+ IDS_2115 "Incapaz de inicializar Ghostscript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "Imágenes de MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2118 "¡Bienvenido a 86Box!"
+ IDS_2119 "Controladora interna"
+ IDS_2120 "Salir"
+ IDS_2121 "No se encontraron ROMs"
+ IDS_2122 "¿Quieres guardar los ajustes?"
+ IDS_2123 "Se hará hard reset de la máquina emulada."
+ IDS_2124 "Guardar"
+ IDS_2125 "Acerca de 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Un emulador de ordenadores antigüos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, y otros.\n\nLiberado bajo la GNU General Public License versión 2 o posterior. Ver LICENSE para más información."
- IDS_2128 "Aceptar"
- IDS_2129 "Hardware no disponible"
+ IDS_2127 "Un emulador de ordenadores antigüos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, y otros.\n\nLiberado bajo la GNU General Public License versión 2 o posterior. Ver LICENSE para más información."
+ IDS_2128 "Aceptar"
+ IDS_2129 "Hardware no disponible"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Asegúrate de que " LIB_NAME_PCAP " está instalado y de que estás en una conexión de red compatible con " LIB_NAME_PCAP "."
- IDS_2131 "Configuración inválida"
+ IDS_2130 "Asegúrate de que " LIB_NAME_PCAP " está instalado y de que estás en una conexión de red compatible con " LIB_NAME_PCAP "."
+ IDS_2131 "Configuración inválida"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " es necesaria para emulación de impresión ESC/P."
+ IDS_2132 LIB_NAME_FREETYPE " es necesaria para emulación de impresión ESC/P."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " es necesaria para la conversión automática de archivos PostScript a PDF.\n\nCualquier documento enviado a la impresora genérica postScript se guardará como archivo PostScript (.ps)."
+ IDS_2133 LIB_NAME_GS " es necesaria para la conversión automática de archivos PostScript a PDF.\n\nCualquier documento enviado a la impresora genérica postScript se guardará como archivo PostScript (.ps)."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " es necesario para salida MIDI FluidSynth."
- IDS_2135 "Entrando en modo pantalla completa"
- IDS_2136 "No mostrar más este mensaje"
- IDS_2137 "No salir"
- IDS_2138 "Resetear"
- IDS_2139 "No resetear"
- IDS_2140 "Imágenes de MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2141 "Imágenes de CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
- IDS_2142 "%hs Configuración de Dispositivo"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " es necesario para salida MIDI FluidSynth."
+ IDS_2135 "Entrando en modo pantalla completa"
+ IDS_2136 "No mostrar más este mensaje"
+ IDS_2137 "No salir"
+ IDS_2138 "Resetear"
+ IDS_2139 "No resetear"
+ IDS_2140 "Imágenes de MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2141 "Imágenes de CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
+ IDS_2142 "%hs Configuración de Dispositivo"
IDS_2143 "Monitor en modo ahorro"
- IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
- IDS_2145 "Opciones OpenGL"
- IDS_2146 "Estás cargando una configuración no soportada"
- IDS_2147 "El Filtrado de tipo de CPU basado en máquina seleccionada está deshabilitado para la esta máquina.\n\nEsto hace posible seleccionar una CPU que sea incompatible con esta máquina. Por ello, pueden aparecer incompatibilidader con la BIOS de la máquina u otro software.\n\nActivar este ajuste no está oficialmente soportado y cualquier reporte de fallo puede ser cerrado como inválido."
- IDS_2148 "Continuar"
- IDS_2149 "Cassette: %s"
- IDS_2150 "Imágenes de Cassette (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
- IDS_2151 "Cartucho %i: %ls"
- IDS_2152 "Imágenes de Cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
- IDS_2153 "Error initializing renderer"
- IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
- IDS_2155 "Resume execution"
- IDS_2156 "Pause execution"
- IDS_2157 "Press Ctrl+Alt+Del"
- IDS_2158 "Press Ctrl+Alt+Esc"
- IDS_2159 "Hard reset"
- IDS_2160 "ACPI shutdown"
- IDS_2161 "Settings"
+ IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0All files (*.*)\0*.*\0"
+ IDS_2145 "Opciones OpenGL"
+ IDS_2146 "Estás cargando una configuración no soportada"
+ IDS_2147 "El Filtrado de tipo de CPU basado en máquina seleccionada está deshabilitado para la esta máquina.\n\nEsto hace posible seleccionar una CPU que sea incompatible con esta máquina. Por ello, pueden aparecer incompatibilidader con la BIOS de la máquina u otro software.\n\nActivar este ajuste no está oficialmente soportado y cualquier reporte de fallo puede ser cerrado como inválido."
+ IDS_2148 "Continuar"
+ IDS_2149 "Cassette: %s"
+ IDS_2150 "Imágenes de Cassette (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0All files (*.*)\0*.*\0"
+ IDS_2151 "Cartucho %i: %ls"
+ IDS_2152 "Imágenes de Cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0All files (*.*)\0*.*\0"
+ IDS_2153 "Error initializing renderer"
+ IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+ IDS_2155 "Resume execution"
+ IDS_2156 "Pause execution"
+ IDS_2157 "Press Ctrl+Alt+Del"
+ IDS_2158 "Press Ctrl+Alt+Esc"
+ IDS_2159 "Hard reset"
+ IDS_2160 "ACPI shutdown"
+ IDS_2161 "Settings"
IDS_2162 "Unidad anterior"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Disco duro (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "Nunca hubo unidades de CD-ROM MFM/RLL o ESDI"
- IDS_4100 "A medida..."
- IDS_4101 "A medida (grande)..."
- IDS_4102 "Añadir Nuevo Disco Duro"
- IDS_4103 "Añadir Disco Duro Existente"
- IDS_4104 "Las imágenes de disco HDI no pueden superar los 4 GB."
- IDS_4105 "Las imágenes de disco no pueden superar los 127 GB."
- IDS_4106 "Imágenes de Disco Duro (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
- IDS_4107 "No se pudo leer el archivo"
- IDS_4108 "No se pudo escribir el archivo"
- IDS_4109 "No se soportan las imágenes HDI o HDX con un tamaño de sector diferente a 512."
- IDS_4110 "No se soporta aún el USB"
- IDS_4111 "La imagen de disco ya existe"
- IDS_4112 "Por favor especifique un nombre de archivo válido."
- IDS_4113 "Imagen de disco creada"
- IDS_4114 "Asegúrese de que el archivo existe y es leÃble."
- IDS_4115 "Asegúrese de que el archivo en un directorio con permiso de escritura."
- IDS_4116 "Imagen de disco demasiado grande"
- IDS_4117 "Recuerde particionar y formatear la nueva unidad."
- IDS_4118 "El archivo selecionado será sobreescrito. ¿Está seguro de querer usarlo?"
- IDS_4119 "Imagen de disco no soportada"
- IDS_4120 "Sobreescribir"
- IDS_4121 "No sobreescribir"
- IDS_4122 "Imagen plana (.img)"
- IDS_4123 "Imagen HDI (.hdi)"
- IDS_4124 "Imagen HDX (.hdx)"
- IDS_4125 "VHD de tamaño fijo (.vhd)"
- IDS_4126 "VHD de tamaño dinámico (.vhd)"
- IDS_4127 "VHD diferencial (.vhd)"
- IDS_4128 "Bloques grandes (2 MB)"
- IDS_4129 "Bloques pequeños (512 KB)"
- IDS_4130 "Archivos VHD (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
- IDS_4131 "Seleccione el VHD padre"
- IDS_4132 "Esto puede deberse a que la imagen padre se modificó después de que la imagen diferencial se crease.\n\nTambién puede ocurrir si las imágenes fueron movidas o copiadas, o por un fallo en el programa que creó este disco.\n\n¿Quiere corregir los registros de tiempo?"
- IDS_4133 "Las marcas de tiempo del padre e hijo no coinciden"
- IDS_4134 "No se pudo corregir la marca de tiempo del VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "Nunca hubo unidades de CD-ROM MFM/RLL o ESDI"
+ IDS_4100 "A medida..."
+ IDS_4101 "A medida (grande)..."
+ IDS_4102 "Añadir Nuevo Disco Duro"
+ IDS_4103 "Añadir Disco Duro Existente"
+ IDS_4104 "Las imágenes de disco HDI no pueden superar los 4 GB."
+ IDS_4105 "Las imágenes de disco no pueden superar los 127 GB."
+ IDS_4106 "Imágenes de Disco Duro (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0All files (*.*)\0*.*\0"
+ IDS_4107 "No se pudo leer el archivo"
+ IDS_4108 "No se pudo escribir el archivo"
+ IDS_4109 "No se soportan las imágenes HDI o HDX con un tamaño de sector diferente a 512."
+ IDS_4110 "No se soporta aún el USB"
+ IDS_4111 "La imagen de disco ya existe"
+ IDS_4112 "Por favor especifique un nombre de archivo válido."
+ IDS_4113 "Imagen de disco creada"
+ IDS_4114 "Asegúrese de que el archivo existe y es leÃble."
+ IDS_4115 "Asegúrese de que el archivo en un directorio con permiso de escritura."
+ IDS_4116 "Imagen de disco demasiado grande"
+ IDS_4117 "Recuerde particionar y formatear la nueva unidad."
+ IDS_4118 "El archivo selecionado será sobreescrito. ¿Está seguro de querer usarlo?"
+ IDS_4119 "Imagen de disco no soportada"
+ IDS_4120 "Sobreescribir"
+ IDS_4121 "No sobreescribir"
+ IDS_4122 "Imagen plana (.img)"
+ IDS_4123 "Imagen HDI (.hdi)"
+ IDS_4124 "Imagen HDX (.hdx)"
+ IDS_4125 "VHD de tamaño fijo (.vhd)"
+ IDS_4126 "VHD de tamaño dinámico (.vhd)"
+ IDS_4127 "VHD diferencial (.vhd)"
+ IDS_4128 "Bloques grandes (2 MB)"
+ IDS_4129 "Bloques pequeños (512 KB)"
+ IDS_4130 "Archivos VHD (*.VHD)\0*.VHD\0All files (*.*)\0*.*\0"
+ IDS_4131 "Seleccione el VHD padre"
+ IDS_4132 "Esto puede deberse a que la imagen padre se modificó después de que la imagen diferencial se crease.\n\nTambién puede ocurrir si las imágenes fueron movidas o copiadas, o por un fallo en el programa que creó este disco.\n\n¿Quiere corregir los registros de tiempo?"
+ IDS_4133 "Las marcas de tiempo del padre e hijo no coinciden"
+ IDS_4134 "No se pudo corregir la marca de tiempo del VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Deshabilitado"
- IDS_5381 "ATAPI"
+ IDS_5376 "Deshabilitado"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Deshabilitado"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Deshabilitado"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "RPM perfectas"
- IDS_6145 "1% por debajo de RPM perfectas"
- IDS_6146 "1.5% por debajo de RPM perfectas"
- IDS_6147 "2% por debajo de RPM perfectas"
+ IDS_6144 "RPM perfectas"
+ IDS_6145 "1% por debajo de RPM perfectas"
+ IDS_6146 "1.5% por debajo de RPM perfectas"
+ IDS_6147 "2% por debajo de RPM perfectas"
- IDS_7168 "(Por defecto del sistema)"
+ IDS_7168 "(Por defecto del sistema)"
END
-#define IDS_LANG_ESES IDS_7168
+#define IDS_LANG_ESES IDS_7168
// Spanish (Spain) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/fi-FI.rc b/src/win/languages/fi-FI.rc
index 5494bffc5..8cd80a4e7 100644
--- a/src/win/languages/fi-FI.rc
+++ b/src/win/languages/fi-FI.rc
@@ -17,114 +17,114 @@ MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Toiminto"
BEGIN
- MENUITEM "&Vaadi näppäimistön kaappaus", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Oikea CTRL on vasen ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Vaadi näppäimistön kaappaus", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Oikea CTRL on vasen ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Uudelleenkäynnistys (kylmä)...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Uudelleenkäynnistys (kylmä)...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Tauko", IDM_ACTION_PAUSE
+ MENUITEM "&Tauko", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Poistu...", IDM_ACTION_EXIT
+ MENUITEM "&Poistu...", IDM_ACTION_EXIT
END
POPUP "&Näytä"
BEGIN
- MENUITEM "&Piilota tilapalkki", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Piilota &työkalupalkki", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Piilota tilapalkki", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Piilota &työkalupalkki", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Salli koon muuttaminen", IDM_VID_RESIZE
- MENUITEM "&Muista koko ja sijainti", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Salli koon muuttaminen", IDM_VID_RESIZE
+ MENUITEM "&Muista koko ja sijainti", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Renderöijä"
BEGIN
- MENUITEM "&SDL (ohjelmistopohjainen)", IDM_VID_SDL_SW
- MENUITEM "SDL (&laitteistokiihdytetty)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (ohjelmistopohjainen)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&laitteistokiihdytetty)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "&Määritä koko...", IDM_VID_SPECIFY_DIM
- MENUITEM "Pakota 4:3-näyttösuhde", IDM_VID_FORCE43
+ MENUITEM "&Määritä koko...", IDM_VID_SPECIFY_DIM
+ MENUITEM "Pakota 4:3-näyttösuhde", IDM_VID_FORCE43
POPUP "&Ikkunan kokokerroin"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "&Suodatusmetodi"
BEGIN
- MENUITEM "&Lähin naapuri", IDM_VID_FILTER_NEAREST
- MENUITEM "Li&neaarinen interpolaatio", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Lähin naapuri", IDM_VID_FILTER_NEAREST
+ MENUITEM "Li&neaarinen interpolaatio", IDM_VID_FILTER_LINEAR
END
- MENUITEM "&Suuri DPI-skaalaus", IDM_VID_HIDPI
+ MENUITEM "&Suuri DPI-skaalaus", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Koko näytön tila\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Koko näytön tila\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Koko näytön &skaalaustila"
BEGIN
- MENUITEM "&Venytä koko näyttöön", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
- MENUITEM "&Tasasivuiset kuvapisteet (säilytä kuvasuhde)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Kokonaislukuskaalaus", IDM_VID_FS_INT
+ MENUITEM "&Venytä koko näyttöön", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Tasasivuiset kuvapisteet (säilytä kuvasuhde)", IDM_VID_FS_KEEPRATIO
+ MENUITEM "&Kokonaislukuskaalaus", IDM_VID_FS_INT
END
POPUP "&EGA/(S)VGA-asetukset"
BEGIN
- MENUITEM "&VGA-näyttö käänteisillä väreillä", IDM_VID_INVERT
+ MENUITEM "&VGA-näyttö käänteisillä väreillä", IDM_VID_INVERT
POPUP "VGA-näytön &tyyppi"
BEGIN
- MENUITEM "RGB, &värit", IDM_VID_GRAY_RGB
- MENUITEM "&RGB, harmaasävy", IDM_VID_GRAY_MONO
- MENUITEM "&Meripihkanvärinen", IDM_VID_GRAY_AMBER
- MENUITEM "V&ihreä", IDM_VID_GRAY_GREEN
- MENUITEM "V&alkoinen", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB, &värit", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB, harmaasävy", IDM_VID_GRAY_MONO
+ MENUITEM "&Meripihkanvärinen", IDM_VID_GRAY_AMBER
+ MENUITEM "V&ihreä", IDM_VID_GRAY_GREEN
+ MENUITEM "V&alkoinen", IDM_VID_GRAY_WHITE
END
POPUP "&Harmaasävymuunnoksen tyyppi"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Keskiarvo", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Keskiarvo", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA &yliskannaus", IDM_VID_OVERSCAN
- MENUITEM "&Muuta harmaavärinäytön kontrastia", IDM_VID_CGACON
+ MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA &yliskannaus", IDM_VID_OVERSCAN
+ MENUITEM "&Muuta harmaavärinäytön kontrastia", IDM_VID_CGACON
END
- MENUITEM "&Media", IDM_MEDIA
+ MENUITEM "&Media", IDM_MEDIA
POPUP "Työ&kalut"
BEGIN
- MENUITEM "&Kokoonpano...", IDM_CONFIG
- MENUITEM "&Päivitä tilapalkin kuvakkeita", IDM_UPDATE_ICONS
+ MENUITEM "&Kokoonpano...", IDM_CONFIG
+ MENUITEM "&Päivitä tilapalkin kuvakkeita", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Ota &kuvakaappaus\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Ota &kuvakaappaus\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Sovellusasetukset...", IDM_PREFERENCES
+ MENUITEM "&Sovellusasetukset...", IDM_PREFERENCES
#ifdef DISCORD
- MENUITEM "Käytä &Discord-integraatiota", IDM_DISCORD
+ MENUITEM "Käytä &Discord-integraatiota", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&Äänitasot...", IDM_SND_GAIN
+ MENUITEM "&Äänitasot...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Aloita jäljitys\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Lopeta jäljitys\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Aloita jäljitys\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Lopeta jäljitys\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Ohje"
BEGIN
- MENUITEM "&Ohjekirja...", IDM_DOCS
- MENUITEM "&Tietoja 86Boxista...", IDM_ABOUT
+ MENUITEM "&Ohjekirja...", IDM_DOCS
+ MENUITEM "&Tietoja 86Boxista...", IDM_ABOUT
END
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Uusi kasettikuva...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Uusi kasettikuva...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Olemassaoleva kasettikuva...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Olemassaoleva kasettikuva (&kirjoitussuojattu)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Olemassaoleva kasettikuva...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Olemassaoleva kasettikuva (&kirjoitussuojattu)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Nauhoita", IDM_CASSETTE_RECORD
- MENUITEM "&Toista", IDM_CASSETTE_PLAY
- MENUITEM "Kelaa &alkuun", IDM_CASSETTE_REWIND
- MENUITEM "Kelaa &loppuun", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Nauhoita", IDM_CASSETTE_RECORD
+ MENUITEM "&Toista", IDM_CASSETTE_PLAY
+ MENUITEM "Kelaa &alkuun", IDM_CASSETTE_REWIND
+ MENUITEM "Kelaa &loppuun", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "&Poista kasettipesästä", IDM_CASSETTE_EJECT
+ MENUITEM "&Poista kasettipesästä", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&ROM-moduulikuva...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&ROM-moduulikuva...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "&Irrota", IDM_CARTRIDGE_EJECT
+ MENUITEM "&Irrota", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Uusi levykekuva...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Uusi levykekuva...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Olemassaoleva levykekuva...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Olemassaoleva levykekuva (&kirjoitussuojattu)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Olemassaoleva levykekuva...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Olemassaoleva levykekuva (&kirjoitussuojattu)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Vie 86F-tiedostoon...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "&Vie 86F-tiedostoon...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Poista asemasta", IDM_FLOPPY_EJECT
+ MENUITEM "&Poista asemasta", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Mykistä", IDM_CDROM_MUTE
+ MENUITEM "&Mykistä", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&Tyhjä", IDM_CDROM_EMPTY
- MENUITEM "&Lataa edellinen levykuva uudelleen", IDM_CDROM_RELOAD
+ MENUITEM "&Tyhjä", IDM_CDROM_EMPTY
+ MENUITEM "&Lataa edellinen levykuva uudelleen", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "L&evykuva...", IDM_CDROM_IMAGE
- MENUITEM "&Kansio...", IDM_CDROM_DIR
+ MENUITEM "L&evykuva...", IDM_CDROM_IMAGE
+ MENUITEM "&Kansio...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Uusi levykuva...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Uusi levykuva...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Olemassaoleva levykuva...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Olemassaoleva levykuva (&kirjoitussuojattu)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Olemassaoleva levykuva...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Olemassaoleva levykuva (&kirjoitussuojattu)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Poista asemasta", IDM_ZIP_EJECT
- MENUITEM "&Lataa edellinen levykuva uudelleen", IDM_ZIP_RELOAD
+ MENUITEM "&Poista asemasta", IDM_ZIP_EJECT
+ MENUITEM "&Lataa edellinen levykuva uudelleen", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Uusi levykuva...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Uusi levykuva...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Olemassaoleva levykuva...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Olemassaoleva levykuva (&kirjoitussuojattu)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Olemassaoleva levykuva...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Olemassaoleva levykuva (&kirjoitussuojattu)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Poista asemasta", IDM_MO_EJECT
- MENUITEM "&Lataa edellinen levykuva uudelleen", IDM_MO_RELOAD
+ MENUITEM "&Poista asemasta", IDM_MO_EJECT
+ MENUITEM "&Lataa edellinen levykuva uudelleen", IDM_MO_RELOAD
END
END
@@ -222,16 +222,16 @@ VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Kuvataajuustavoite"
BEGIN
- MENUITEM "&Synkronisoi videoon", IDM_VID_GL_FPS_BLITTER
- MENUITEM "&25 ruutua/s", IDM_VID_GL_FPS_25
- MENUITEM "&30 ruutua/s", IDM_VID_GL_FPS_30
- MENUITEM "&50 ruutua/s", IDM_VID_GL_FPS_50
- MENUITEM "&60 ruutua/s", IDM_VID_GL_FPS_60
- MENUITEM "&75 ruutua/s", IDM_VID_GL_FPS_75
+ MENUITEM "&Synkronisoi videoon", IDM_VID_GL_FPS_BLITTER
+ MENUITEM "&25 ruutua/s", IDM_VID_GL_FPS_25
+ MENUITEM "&30 ruutua/s", IDM_VID_GL_FPS_30
+ MENUITEM "&50 ruutua/s", IDM_VID_GL_FPS_50
+ MENUITEM "&60 ruutua/s", IDM_VID_GL_FPS_60
+ MENUITEM "&75 ruutua/s", IDM_VID_GL_FPS_75
END
- MENUITEM "&VSync", IDM_VID_GL_VSYNC
- MENUITEM "Valitse varjostin&ohjelma...", IDM_VID_GL_SHADER
- MENUITEM "&Poista varjostinohjelma", IDM_VID_GL_NOSHADER
+ MENUITEM "&VSync", IDM_VID_GL_VSYNC
+ MENUITEM "Valitse varjostin&ohjelma...", IDM_VID_GL_SHADER
+ MENUITEM "&Poista varjostinohjelma", IDM_VID_GL_NOSHADER
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Sovellusasetukset"
-#define STR_SND_GAIN "Äänen taso"
-#define STR_NEW_FLOPPY "Uusi levykuva"
-#define STR_CONFIG "Kokoonpano"
-#define STR_SPECIFY_DIM "Määritä pääikkunan koko"
+#define STR_PREFERENCES "Sovellusasetukset"
+#define STR_SND_GAIN "Äänen taso"
+#define STR_NEW_FLOPPY "Uusi levykuva"
+#define STR_CONFIG "Kokoonpano"
+#define STR_SPECIFY_DIM "Määritä pääikkunan koko"
-#define STR_OK "OK"
-#define STR_CANCEL "Peruuta"
-#define STR_GLOBAL "Tallenna nämä asetukset &globaaleiksi oletuksiksi"
-#define STR_DEFAULT "&Oletus"
-#define STR_LANGUAGE "Kieli:"
-#define STR_ICONSET "Kuvakkeet:"
+#define STR_OK "OK"
+#define STR_CANCEL "Peruuta"
+#define STR_GLOBAL "Tallenna nämä asetukset &globaaleiksi oletuksiksi"
+#define STR_DEFAULT "&Oletus"
+#define STR_LANGUAGE "Kieli:"
+#define STR_ICONSET "Kuvakkeet:"
-#define STR_GAIN "Taso"
+#define STR_GAIN "Taso"
-#define STR_FILE_NAME "Tiedostonimi:"
-#define STR_DISK_SIZE "Levyn koko:"
-#define STR_RPM_MODE "Kierroslukutila:"
-#define STR_PROGRESS "Edistyminen:"
+#define STR_FILE_NAME "Tiedostonimi:"
+#define STR_DISK_SIZE "Levyn koko:"
+#define STR_RPM_MODE "Kierroslukutila:"
+#define STR_PROGRESS "Edistyminen:"
-#define STR_WIDTH "Leveys:"
-#define STR_HEIGHT "Korkeus:"
-#define STR_LOCK_TO_SIZE "Lukitse tähän kokoon"
+#define STR_WIDTH "Leveys:"
+#define STR_HEIGHT "Korkeus:"
+#define STR_LOCK_TO_SIZE "Lukitse tähän kokoon"
-#define STR_MACHINE_TYPE "Tietokoneen tyyppi:"
-#define STR_MACHINE "Tietokone:"
-#define STR_CONFIGURE "Määritys"
-#define STR_CPU_TYPE "Suorittimen tyyppi:"
-#define STR_CPU_SPEED "Nopeus:"
-#define STR_FPU "Apusuoritin:"
-#define STR_WAIT_STATES "Odotustilat:"
-#define STR_MB "Mt"
-#define STR_MEMORY "Muisti:"
-#define STR_TIME_SYNC "Kellon synkronointi"
-#define STR_DISABLED "Ei käytössä"
-#define STR_ENABLED_LOCAL "Käytössä (paikallinen)"
-#define STR_ENABLED_UTC "Käytössä (UTC)"
-#define STR_DYNAREC "Dynaaminen uudelleenkääntäjä"
+#define STR_MACHINE_TYPE "Tietokoneen tyyppi:"
+#define STR_MACHINE "Tietokone:"
+#define STR_CONFIGURE "Määritys"
+#define STR_CPU_TYPE "Suorittimen tyyppi:"
+#define STR_CPU_SPEED "Nopeus:"
+#define STR_FPU "Apusuoritin:"
+#define STR_WAIT_STATES "Odotustilat:"
+#define STR_MB "Mt"
+#define STR_MEMORY "Muisti:"
+#define STR_TIME_SYNC "Kellon synkronointi"
+#define STR_DISABLED "Ei käytössä"
+#define STR_ENABLED_LOCAL "Käytössä (paikallinen)"
+#define STR_ENABLED_UTC "Käytössä (UTC)"
+#define STR_DYNAREC "Dynaaminen uudelleenkääntäjä"
-#define STR_VIDEO "Näytönohjain:"
-#define STR_VIDEO_2 "Näytönohjain 2:"
-#define STR_VOODOO "Voodoo-grafiikkasuoritin"
-#define STR_IBM8514 "IBM 8514/a-grafiikkasuoritin"
-#define STR_XGA "XGA-grafiikkasuoritin"
+#define STR_VIDEO "Näytönohjain:"
+#define STR_VIDEO_2 "Näytönohjain 2:"
+#define STR_VOODOO "Voodoo-grafiikkasuoritin"
+#define STR_IBM8514 "IBM 8514/a-grafiikkasuoritin"
+#define STR_XGA "XGA-grafiikkasuoritin"
-#define STR_MOUSE "Hiiri:"
-#define STR_JOYSTICK "Peliohjain:"
-#define STR_JOY1 "Peliohjain 1..."
-#define STR_JOY2 "Peliohjain 2..."
-#define STR_JOY3 "Peliohjain 3..."
-#define STR_JOY4 "Peliohjain 4..."
+#define STR_MOUSE "Hiiri:"
+#define STR_JOYSTICK "Peliohjain:"
+#define STR_JOY1 "Peliohjain 1..."
+#define STR_JOY2 "Peliohjain 2..."
+#define STR_JOY3 "Peliohjain 3..."
+#define STR_JOY4 "Peliohjain 4..."
-#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_FLOAT "Käytä FLOAT32-ääntä"
-#define STR_FM_DRIVER "FM-syntetisaattoriohjain"
-#define STR_FM_DRV_NUKED "Nuked (tarkempi)"
-#define STR_FM_DRV_YMFM "YMFM (nopeampi)"
+#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_FLOAT "Käytä FLOAT32-ääntä"
+#define STR_FM_DRIVER "FM-syntetisaattoriohjain"
+#define STR_FM_DRV_NUKED "Nuked (tarkempi)"
+#define STR_FM_DRV_YMFM "YMFM (nopeampi)"
-#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_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:"
-#define STR_COM3 "COM3-laite:"
-#define STR_COM4 "COM4-laite:"
-#define STR_LPT1 "LPT1-laite:"
-#define STR_LPT2 "LPT2-laite:"
-#define STR_LPT3 "LPT3-laite:"
-#define STR_LPT4 "LPT4-laite:"
-#define STR_SERIAL1 "Sarjaportti 1"
-#define STR_SERIAL2 "Sarjaportti 2"
-#define STR_SERIAL3 "Sarjaportti 3"
-#define STR_SERIAL4 "Sarjaportti 4"
-#define STR_PARALLEL1 "Rinnakkaisportti 1"
-#define STR_PARALLEL2 "Rinnakkaisportti 2"
-#define STR_PARALLEL3 "Rinnakkaisportti 3"
-#define STR_PARALLEL4 "Rinnakkaisportti 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1-laite:"
+#define STR_COM2 "COM2-laite:"
+#define STR_COM3 "COM3-laite:"
+#define STR_COM4 "COM4-laite:"
+#define STR_LPT1 "LPT1-laite:"
+#define STR_LPT2 "LPT2-laite:"
+#define STR_LPT3 "LPT3-laite:"
+#define STR_LPT4 "LPT4-laite:"
+#define STR_SERIAL1 "Sarjaportti 1"
+#define STR_SERIAL2 "Sarjaportti 2"
+#define STR_SERIAL3 "Sarjaportti 3"
+#define STR_SERIAL4 "Sarjaportti 4"
+#define STR_PARALLEL1 "Rinnakkaisportti 1"
+#define STR_PARALLEL2 "Rinnakkaisportti 2"
+#define STR_PARALLEL3 "Rinnakkaisportti 3"
+#define STR_PARALLEL4 "Rinnakkaisportti 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Kiintolevyohjain:"
-#define STR_FDC "Levykeohjain:"
-#define STR_IDE_TER "Kolmas IDE-ohjain"
-#define STR_IDE_QUA "Neljäs IDE-ohjain"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Ohjain 1:"
-#define STR_SCSI_2 "Ohjain 2:"
-#define STR_SCSI_3 "Ohjain 3:"
-#define STR_SCSI_4 "Ohjain 4:"
-#define STR_CASSETTE "Kasettiasema"
+#define STR_HDC "Kiintolevyohjain:"
+#define STR_FDC "Levykeohjain:"
+#define STR_IDE_TER "Kolmas IDE-ohjain"
+#define STR_IDE_QUA "Neljäs IDE-ohjain"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Ohjain 1:"
+#define STR_SCSI_2 "Ohjain 2:"
+#define STR_SCSI_3 "Ohjain 3:"
+#define STR_SCSI_4 "Ohjain 4:"
+#define STR_CASSETTE "Kasettiasema"
-#define STR_HDD "Kiintolevyt:"
-#define STR_NEW "&Uusi..."
-#define STR_EXISTING "&Olemassaoleva..."
-#define STR_REMOVE "&Poista"
-#define STR_BUS "Väylä:"
-#define STR_CHANNEL "Kanava:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Kiintolevyt:"
+#define STR_NEW "&Uusi..."
+#define STR_EXISTING "&Olemassaoleva..."
+#define STR_REMOVE "&Poista"
+#define STR_BUS "Väylä:"
+#define STR_CHANNEL "Kanava:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Määritä..."
-#define STR_SECTORS "Sektorit:"
-#define STR_HEADS "Lukupäät:"
-#define STR_CYLS "Sylinterit:"
-#define STR_SIZE_MB "Koko (Mt):"
-#define STR_TYPE "Tyyppi:"
-#define STR_IMG_FORMAT "Tiedostomuoto:"
-#define STR_BLOCK_SIZE "Lohkon koko:"
+#define STR_SPECIFY "&Määritä..."
+#define STR_SECTORS "Sektorit:"
+#define STR_HEADS "Lukupäät:"
+#define STR_CYLS "Sylinterit:"
+#define STR_SIZE_MB "Koko (Mt):"
+#define STR_TYPE "Tyyppi:"
+#define STR_IMG_FORMAT "Tiedostomuoto:"
+#define STR_BLOCK_SIZE "Lohkon koko:"
-#define STR_FLOPPY_DRIVES "Levykeasemat:"
-#define STR_TURBO "Turbo-ajoitukset"
-#define STR_CHECKBPB "Tarkista BPB"
-#define STR_CDROM_DRIVES "CD-ROM-asemat:"
-#define STR_CD_SPEED "Nopeus:"
-#define STR_EARLY "Aiemmat asemat"
+#define STR_FLOPPY_DRIVES "Levykeasemat:"
+#define STR_TURBO "Turbo-ajoitukset"
+#define STR_CHECKBPB "Tarkista BPB"
+#define STR_CDROM_DRIVES "CD-ROM-asemat:"
+#define STR_CD_SPEED "Nopeus:"
+#define STR_EARLY "Aiemmat asemat"
-#define STR_MO_DRIVES "Magneettisoptiset asemat (MO):"
-#define STR_ZIP_DRIVES "ZIP-asemat:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Magneettisoptiset asemat (MO):"
+#define STR_ZIP_DRIVES "ZIP-asemat:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA-RTC (kello):"
-#define STR_ISAMEM "ISA-muistilaajennus"
-#define STR_ISAMEM_1 "Kortti 1:"
-#define STR_ISAMEM_2 "Kortti 2:"
-#define STR_ISAMEM_3 "Kortti 3:"
-#define STR_ISAMEM_4 "Kortti 4:"
-#define STR_BUGGER "ISABugger-laite"
-#define STR_POSTCARD "POST-kortti"
+#define STR_ISARTC "ISA-RTC (kello):"
+#define STR_ISAMEM "ISA-muistilaajennus"
+#define STR_ISAMEM_1 "Kortti 1:"
+#define STR_ISAMEM_2 "Kortti 2:"
+#define STR_ISAMEM_3 "Kortti 3:"
+#define STR_ISAMEM_4 "Kortti 4:"
+#define STR_BUGGER "ISABugger-laite"
+#define STR_POSTCARD "POST-kortti"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -394,7 +394,7 @@ END
STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
+ 2048 "86Box"
IDS_2049 "Virhe"
IDS_2050 "Vakava virhe"
IDS_2051 " - TAUKO"
@@ -528,19 +528,20 @@ BEGIN
IDS_2150 "Kasettitiedostot (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Kaikki tiedostot (*.*)\0*.*\0"
IDS_2151 "ROM-moduuli %i: %ls"
IDS_2152 "ROM-moduulikuvat (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Kaikki tiedostot (*.*)\0*.*\0"
- IDS_2153 "Virhe renderöijän alustuksessa"
- IDS_2154 "OpenGL (3.0 Core) -renderöijän alustus epäonnistui. Käytä toista renderöijää."
- IDS_2155 "Jatka suoritusta"
- IDS_2156 "Pysäytä suoritus"
- IDS_2157 "Paina Ctrl+Alt+Del"
- IDS_2158 "Paina Ctrl+Alt+Esc"
- IDS_2159 "Kylmä uudelleenkäynnistys"
- IDS_2160 "ACPI-sammutus"
- IDS_2161 "Asetukset"
+ IDS_2153 "Virhe renderöijän alustuksessa"
+ IDS_2154 "OpenGL (3.0 Core) -renderöijän alustus epäonnistui. Käytä toista renderöijää."
+ IDS_2155 "Jatka suoritusta"
+ IDS_2156 "Pysäytä suoritus"
+ IDS_2157 "Paina Ctrl+Alt+Del"
+ IDS_2158 "Paina Ctrl+Alt+Esc"
+ IDS_2159 "Kylmä uudelleenkäynnistys"
+ IDS_2160 "ACPI-sammutus"
+ IDS_2161 "Asetukset"
IDS_2162 "Aiemmat asemat"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
STRINGTABLE DISCARDABLE
@@ -642,7 +643,7 @@ BEGIN
IDS_7168 "(Järjestelmän oletus)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc
index 970b4db01..9e0296c4c 100644
--- a/src/win/languages/fr-FR.rc
+++ b/src/win/languages/fr-FR.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Action"
BEGIN
- MENUITEM "&Capturer le clavier", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "CTRL &Droite devient ALT Gauche", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Capturer le clavier", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "CTRL &Droite devient ALT Gauche", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Hard Reset...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pause", IDM_ACTION_PAUSE
+ MENUITEM "&Pause", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Quitter...", IDM_ACTION_EXIT
+ MENUITEM "&Quitter...", IDM_ACTION_EXIT
END
POPUP "&Vue"
BEGIN
- MENUITEM "&Masquer la barre de status", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Masquer la barre de status", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "Fenètre &Retaillable", IDM_VID_RESIZE
- MENUITEM "S&auvegarder taille && position", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "Fenètre &Retaillable", IDM_VID_RESIZE
+ MENUITEM "S&auvegarder taille && position", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "Moteur de &rendu vidéo"
BEGIN
- MENUITEM "&SDL (Logiciel)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Materiel)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Logiciel)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Materiel)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Specifier dimensions...", IDM_VID_SPECIFY_DIM
- MENUITEM "F&orcer 4:3", IDM_VID_FORCE43
+ MENUITEM "Specifier dimensions...", IDM_VID_SPECIFY_DIM
+ MENUITEM "F&orcer 4:3", IDM_VID_FORCE43
POPUP "&Echelle facteur"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Methode Filtre"
BEGIN
- MENUITEM "&Plus proche", IDM_VID_FILTER_NEAREST
- MENUITEM "&Lineaire", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Plus proche", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Lineaire", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Mise à l'échelle Hi&DPI", IDM_VID_HIDPI
+ MENUITEM "Mise à l'échelle Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Plein Ecran\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Plein Ecran\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Mode &Elargi plein écran"
BEGIN
- MENUITEM "&Plein écran étiré", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Plein écran étiré", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "pixels &Carrés(Keep ratio)", IDM_VID_FS_KEEPRATIO
- MENUITEM "Echelle &Entière", IDM_VID_FS_INT
+ MENUITEM "Echelle &Entière", IDM_VID_FS_INT
END
POPUP "Réglages E&GA/(S)VGA"
BEGIN
- MENUITEM "Moniteur VGA &Inversé", IDM_VID_INVERT
+ MENUITEM "Moniteur VGA &Inversé", IDM_VID_INVERT
POPUP "&Type Ecran VGA"
BEGIN
- MENUITEM "RGB &Couleur", IDM_VID_GRAY_RGB
- MENUITEM "&RGB Ton de Gris", IDM_VID_GRAY_MONO
- MENUITEM "Moniteur &Ambre", IDM_VID_GRAY_AMBER
- MENUITEM "Moniteur &Vert", IDM_VID_GRAY_GREEN
- MENUITEM "Moniteur &Blanc", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &Couleur", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB Ton de Gris", IDM_VID_GRAY_MONO
+ MENUITEM "Moniteur &Ambre", IDM_VID_GRAY_AMBER
+ MENUITEM "Moniteur &Vert", IDM_VID_GRAY_GREEN
+ MENUITEM "Moniteur &Blanc", IDM_VID_GRAY_WHITE
END
POPUP "Grayscale &conversion type"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Moyenne", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Moyenne", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA overscan", IDM_VID_OVERSCAN
MENUITEM "Modifier contraste affichage &monochrome", IDM_VID_CGACON
END
- MENUITEM "&Media", IDM_MEDIA
+ MENUITEM "&Media", IDM_MEDIA
POPUP "Ou&tils"
BEGIN
- MENUITEM "&Réglages...", IDM_CONFIG
- MENUITEM "Mettre à jour la barre de stat&us", IDM_UPDATE_ICONS
+ MENUITEM "&Réglages...", IDM_CONFIG
+ MENUITEM "Mettre à jour la barre de stat&us", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Copie &Ecran\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Copie &Ecran\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Préférences...", IDM_PREFERENCES
+ MENUITEM "&Préférences...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Activer intégration &Discord", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&Gain Son...", IDM_SND_GAIN
+ MENUITEM "&Gain Son...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Démarrer traces\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Finir traces\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Démarrer traces\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Finir traces\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Aide"
BEGIN
- MENUITEM "&Documentation...", IDM_DOCS
- MENUITEM "&A Propos de 86Box...", IDM_ABOUT
+ MENUITEM "&Documentation...", IDM_DOCS
+ MENUITEM "&A Propos de 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nouvelle image...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nouvelle image...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Image &Existante...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Image Existante(&Lecture seule)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "Image &Existante...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Image Existante(&Lecture seule)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "En®istrer", IDM_CASSETTE_RECORD
- MENUITEM "&Jouer", IDM_CASSETTE_PLAY
- MENUITEM "&Revenir au debut", IDM_CASSETTE_REWIND
- MENUITEM "Aller à la &Fin", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "En®istrer", IDM_CASSETTE_RECORD
+ MENUITEM "&Jouer", IDM_CASSETTE_PLAY
+ MENUITEM "&Revenir au debut", IDM_CASSETTE_REWIND
+ MENUITEM "Aller à la &Fin", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "E&jecter", IDM_CASSETTE_EJECT
+ MENUITEM "E&jecter", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Image...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Image...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "E&jecter", IDM_CARTRIDGE_EJECT
+ MENUITEM "E&jecter", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nouvelle image...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nouvelle image...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Image &Existante...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Image Existante(&Lecture seule)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "Image &Existante...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Image Existante(&Lecture seule)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xport vers 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xport vers 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "E&jecter", IDM_FLOPPY_EJECT
+ MENUITEM "E&jecter", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Couper", IDM_CDROM_MUTE
+ MENUITEM "&Couper", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "E&jecter", IDM_CDROM_EMPTY
- MENUITEM "&Recharger image précedente", IDM_CDROM_RELOAD
+ MENUITEM "E&jecter", IDM_CDROM_EMPTY
+ MENUITEM "&Recharger image précedente", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Image...", IDM_CDROM_IMAGE
- MENUITEM "&Dossier...", IDM_CDROM_DIR
+ MENUITEM "&Image...", IDM_CDROM_IMAGE
+ MENUITEM "&Dossier...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nouvelle image...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nouvelle image...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Image &Existante...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Image Existante (&Lecture Seule)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "Image &Existante...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Image Existante (&Lecture Seule)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&jecter", IDM_ZIP_EJECT
- MENUITEM "&Recharger image précédente", IDM_ZIP_RELOAD
+ MENUITEM "E&jecter", IDM_ZIP_EJECT
+ MENUITEM "&Recharger image précédente", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nouvelle image...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nouvelle image...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Image &Existante...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Image Existante (&Lecture Seule)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "Image &Existante...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Image Existante (&Lecture Seule)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&jecter", IDM_MO_EJECT
- MENUITEM "&Recharger image précédente", IDM_MO_RELOAD
+ MENUITEM "E&jecter", IDM_MO_EJECT
+ MENUITEM "&Recharger image précédente", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Préférences"
-#define STR_SND_GAIN "Gain son"
-#define STR_NEW_FLOPPY "Nouvelle image"
-#define STR_CONFIG "Réglages"
-#define STR_SPECIFY_DIM "Spécifier le détournement de la fenêtre principale"
+#define STR_PREFERENCES "Préférences"
+#define STR_SND_GAIN "Gain son"
+#define STR_NEW_FLOPPY "Nouvelle image"
+#define STR_CONFIG "Réglages"
+#define STR_SPECIFY_DIM "Spécifier le détournement de la fenêtre principale"
-#define STR_OK "OK"
-#define STR_CANCEL "Annuler"
-#define STR_GLOBAL "Sauvegarder ces paramètres comme valeurs par défaut &globales"
-#define STR_DEFAULT "&Défaut"
-#define STR_LANGUAGE "Langue:"
-#define STR_ICONSET "Ensemble d'icônes:"
+#define STR_OK "OK"
+#define STR_CANCEL "Annuler"
+#define STR_GLOBAL "Sauvegarder ces paramètres comme valeurs par défaut &globales"
+#define STR_DEFAULT "&Défaut"
+#define STR_LANGUAGE "Langue:"
+#define STR_ICONSET "Ensemble d'icônes:"
-#define STR_GAIN "Gain"
+#define STR_GAIN "Gain"
-#define STR_FILE_NAME "Nom fichier:"
-#define STR_DISK_SIZE "Taille disque:"
-#define STR_RPM_MODE "Mode RPM:"
-#define STR_PROGRESS "Progrès:"
+#define STR_FILE_NAME "Nom fichier:"
+#define STR_DISK_SIZE "Taille disque:"
+#define STR_RPM_MODE "Mode RPM:"
+#define STR_PROGRESS "Progrès:"
-#define STR_WIDTH "Largeur:"
-#define STR_HEIGHT "Hauteur:"
-#define STR_LOCK_TO_SIZE "Verrouiller à cette taille"
+#define STR_WIDTH "Largeur:"
+#define STR_HEIGHT "Hauteur:"
+#define STR_LOCK_TO_SIZE "Verrouiller à cette taille"
-#define STR_MACHINE_TYPE "Type de machine:"
-#define STR_MACHINE "Machine:"
-#define STR_CONFIGURE "Configurer"
-#define STR_CPU_TYPE "Type du processeur:"
-#define STR_CPU_SPEED "Vitesse:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "États d'attente:"
-#define STR_MB "Mo"
-#define STR_MEMORY "Mémoire:"
-#define STR_TIME_SYNC "Synchronisation du temps"
-#define STR_DISABLED "Désactivé"
-#define STR_ENABLED_LOCAL "Activé (heure locale)"
-#define STR_ENABLED_UTC "Activé (UTC)"
-#define STR_DYNAREC "Recompilateur dynamique"
+#define STR_MACHINE_TYPE "Type de machine:"
+#define STR_MACHINE "Machine:"
+#define STR_CONFIGURE "Configurer"
+#define STR_CPU_TYPE "Type du processeur:"
+#define STR_CPU_SPEED "Vitesse:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "États d'attente:"
+#define STR_MB "Mo"
+#define STR_MEMORY "Mémoire:"
+#define STR_TIME_SYNC "Synchronisation du temps"
+#define STR_DISABLED "Désactivé"
+#define STR_ENABLED_LOCAL "Activé (heure locale)"
+#define STR_ENABLED_UTC "Activé (UTC)"
+#define STR_DYNAREC "Recompilateur dynamique"
-#define STR_VIDEO "Vidéo:"
-#define STR_VIDEO_2 "Vidéo 2:"
-#define STR_VOODOO "Graphique Voodoo"
-#define STR_IBM8514 "Graphique IBM 8514/a"
-#define STR_XGA "Graphique XGA"
+#define STR_VIDEO "Vidéo:"
+#define STR_VIDEO_2 "Vidéo 2:"
+#define STR_VOODOO "Graphique Voodoo"
+#define STR_IBM8514 "Graphique IBM 8514/a"
+#define STR_XGA "Graphique XGA"
-#define STR_MOUSE "Souris:"
-#define STR_JOYSTICK "Manette de commande:"
-#define STR_JOY1 "Manette 1..."
-#define STR_JOY2 "Manette 2..."
-#define STR_JOY3 "Manette 3..."
-#define STR_JOY4 "Manette 4..."
+#define STR_MOUSE "Souris:"
+#define STR_JOYSTICK "Manette de commande:"
+#define STR_JOY1 "Manette 1..."
+#define STR_JOY2 "Manette 2..."
+#define STR_JOY3 "Manette 3..."
+#define STR_JOY4 "Manette 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "Dispositif COM3:"
-#define STR_COM4 "Dispositif COM4:"
-#define STR_LPT1 "Dispositif LPT1:"
-#define STR_LPT2 "Dispositif LPT2:"
-#define STR_LPT3 "Dispositif LPT3:"
-#define STR_LPT4 "Dispositif LPT4:"
-#define STR_SERIAL1 "Port série 1"
-#define STR_SERIAL2 "Port série 2"
-#define STR_SERIAL3 "Port série 3"
-#define STR_SERIAL4 "Port série 4"
-#define STR_PARALLEL1 "Port parallèle 1"
-#define STR_PARALLEL2 "Port parallèle 2"
-#define STR_PARALLEL3 "Port parallèle 3"
-#define STR_PARALLEL4 "Port parallèle 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "Dispositif COM1:"
+#define STR_COM2 "Dispositif COM2:"
+#define STR_COM3 "Dispositif COM3:"
+#define STR_COM4 "Dispositif COM4:"
+#define STR_LPT1 "Dispositif LPT1:"
+#define STR_LPT2 "Dispositif LPT2:"
+#define STR_LPT3 "Dispositif LPT3:"
+#define STR_LPT4 "Dispositif LPT4:"
+#define STR_SERIAL1 "Port série 1"
+#define STR_SERIAL2 "Port série 2"
+#define STR_SERIAL3 "Port série 3"
+#define STR_SERIAL4 "Port série 4"
+#define STR_PARALLEL1 "Port parallèle 1"
+#define STR_PARALLEL2 "Port parallèle 2"
+#define STR_PARALLEL3 "Port parallèle 3"
+#define STR_PARALLEL4 "Port parallèle 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Contrôleur HD:"
-#define STR_FDC "Contrôleur FD:"
-#define STR_IDE_TER "Contrôleur IDE tertiaire"
-#define STR_IDE_QUA "Contrôleur IDE quaternair"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Contrôleur 1:"
-#define STR_SCSI_2 "Contrôleur 2:"
-#define STR_SCSI_3 "Contrôleur 3:"
-#define STR_SCSI_4 "Contrôleur 4:"
-#define STR_CASSETTE "Cassette"
+#define STR_HDC "Contrôleur HD:"
+#define STR_FDC "Contrôleur FD:"
+#define STR_IDE_TER "Contrôleur IDE tertiaire"
+#define STR_IDE_QUA "Contrôleur IDE quaternair"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Contrôleur 1:"
+#define STR_SCSI_2 "Contrôleur 2:"
+#define STR_SCSI_3 "Contrôleur 3:"
+#define STR_SCSI_4 "Contrôleur 4:"
+#define STR_CASSETTE "Cassette"
-#define STR_HDD "Disques durs:"
-#define STR_NEW "&Nouveau..."
-#define STR_EXISTING "&Existant..."
-#define STR_REMOVE "&Supprimer"
-#define STR_BUS "Bus:"
-#define STR_CHANNEL "Canal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Disques durs:"
+#define STR_NEW "&Nouveau..."
+#define STR_EXISTING "&Existant..."
+#define STR_REMOVE "&Supprimer"
+#define STR_BUS "Bus:"
+#define STR_CHANNEL "Canal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Spécifier..."
-#define STR_SECTORS "Secteurs:"
-#define STR_HEADS "Têtes:"
-#define STR_CYLS "Cylindres:"
-#define STR_SIZE_MB "Taille (Mo):"
-#define STR_TYPE "Type:"
-#define STR_IMG_FORMAT "Format Image:"
-#define STR_BLOCK_SIZE "Taille du bloc:"
+#define STR_SPECIFY "&Spécifier..."
+#define STR_SECTORS "Secteurs:"
+#define STR_HEADS "Têtes:"
+#define STR_CYLS "Cylindres:"
+#define STR_SIZE_MB "Taille (Mo):"
+#define STR_TYPE "Type:"
+#define STR_IMG_FORMAT "Format Image:"
+#define STR_BLOCK_SIZE "Taille du bloc:"
-#define STR_FLOPPY_DRIVES "Lecteurs de disquettes:"
-#define STR_TURBO "Turbo"
-#define STR_CHECKBPB "Vérifier BPB"
-#define STR_CDROM_DRIVES "Lecterus CD-ROM:"
-#define STR_CD_SPEED "Vitesse:"
-#define STR_EARLY "Lecteur plus tôt"
+#define STR_FLOPPY_DRIVES "Lecteurs de disquettes:"
+#define STR_TURBO "Turbo"
+#define STR_CHECKBPB "Vérifier BPB"
+#define STR_CDROM_DRIVES "Lecterus CD-ROM:"
+#define STR_CD_SPEED "Vitesse:"
+#define STR_EARLY "Lecteur plus tôt"
-#define STR_MO_DRIVES "Lecteurs magnéto-optiques:"
-#define STR_ZIP_DRIVES "Lecteurs ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Lecteurs magnéto-optiques:"
+#define STR_ZIP_DRIVES "Lecteurs ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "Horloge temps réel ISA:"
-#define STR_ISAMEM "Expansion de la mémoire ISA"
-#define STR_ISAMEM_1 "Carte 1:"
-#define STR_ISAMEM_2 "Carte 2:"
-#define STR_ISAMEM_3 "Carte 3:"
-#define STR_ISAMEM_4 "Carte 4:"
-#define STR_BUGGER "Dispositif ISABugger"
-#define STR_POSTCARD "Carte POST"
+#define STR_ISARTC "Horloge temps réel ISA:"
+#define STR_ISAMEM "Expansion de la mémoire ISA"
+#define STR_ISAMEM_1 "Carte 1:"
+#define STR_ISAMEM_2 "Carte 2:"
+#define STR_ISAMEM_3 "Carte 3:"
+#define STR_ISAMEM_4 "Carte 4:"
+#define STR_BUGGER "Dispositif ISABugger"
+#define STR_POSTCARD "Carte POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Erreur"
- IDS_2050 "Erreur fatale"
- IDS_2051 " - PAUSED"
- IDS_2052 "Appuyez sur Ctrl+Alt+PgDn pour revenir au mode fenêtré."
- IDS_2053 "Vitesse"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Images ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box n'a pas pu trouver d'images ROM utilisables.\n\nS'il vous plait, téléchargez un ensemble ROM et extrayez-le dans le répertoire ""roms""."
- IDS_2057 "(vide)"
- IDS_2058 "Images ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "Activé"
- IDS_2061 "Désactivé"
- IDS_2062 "Tous les images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Images basiques du secteur (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Images de la surface (*.86F)\0*.86F\0"
- IDS_2063 "La machine ""%hs"" n'est pas disponible en raison de l'absence de ROMs dans le répertoire roms/machines. Basculer vers une machine disponible."
+ 2048 "86Box"
+ IDS_2049 "Erreur"
+ IDS_2050 "Erreur fatale"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Appuyez sur Ctrl+Alt+PgDn pour revenir au mode fenêtré."
+ IDS_2053 "Vitesse"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Images ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box n'a pas pu trouver d'images ROM utilisables.\n\nS'il vous plait, téléchargez un ensemble ROM et extrayez-le dans le répertoire ""roms""."
+ IDS_2057 "(vide)"
+ IDS_2058 "Images ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "Activé"
+ IDS_2061 "Désactivé"
+ IDS_2062 "Tous les images (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Images basiques du secteur (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Images de la surface (*.86F)\0*.86F\0"
+ IDS_2063 "La machine ""%hs"" n'est pas disponible en raison de l'absence de ROMs dans le répertoire roms/machines. Basculer vers une machine disponible."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "La carte vidéo ""%hs"" n'est pas disponible en raison de l'absence de ROMs dans le répertoire roms/video. Basculer vers une carte vidéo disponible."
- IDS_2065 "Machine"
- IDS_2066 "Affichage"
- IDS_2067 "Dispositifs d'entrée"
- IDS_2068 "Son"
- IDS_2069 "Réseau"
- IDS_2070 "Ports (COM et LPT)"
- IDS_2071 "Contrôleurs de stockage"
- IDS_2072 "Disques durs"
- IDS_2073 "Lecteurs de disquette et CD-ROM"
- IDS_2074 "Autres dispositifs amovibles"
- IDS_2075 "Autres périfériques"
- IDS_2076 "Images de surface (*.86F)\0*.86F\0"
- IDS_2077 "Cliquer pour capturer la souris"
- IDS_2078 "Appuyer sur F8+F12 pour libérer la souris"
- IDS_2079 "Appuyer sur F8+F12 ou le bouton central pour libérer la souris"
+ IDS_2064 "La carte vidéo ""%hs"" n'est pas disponible en raison de l'absence de ROMs dans le répertoire roms/video. Basculer vers une carte vidéo disponible."
+ IDS_2065 "Machine"
+ IDS_2066 "Affichage"
+ IDS_2067 "Dispositifs d'entrée"
+ IDS_2068 "Son"
+ IDS_2069 "Réseau"
+ IDS_2070 "Ports (COM et LPT)"
+ IDS_2071 "Contrôleurs de stockage"
+ IDS_2072 "Disques durs"
+ IDS_2073 "Lecteurs de disquette et CD-ROM"
+ IDS_2074 "Autres dispositifs amovibles"
+ IDS_2075 "Autres périfériques"
+ IDS_2076 "Images de surface (*.86F)\0*.86F\0"
+ IDS_2077 "Cliquer pour capturer la souris"
+ IDS_2078 "Appuyer sur F8+F12 pour libérer la souris"
+ IDS_2079 "Appuyer sur F8+F12 ou le bouton central pour libérer la souris"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Impossible d'initialiser FluidSynth"
- IDS_2081 "Bus"
- IDS_2082 "File"
- IDS_2083 "C"
- IDS_2084 "T"
- IDS_2085 "S"
- IDS_2086 "Mo"
+ IDS_2080 "Impossible d'initialiser FluidSynth"
+ IDS_2081 "Bus"
+ IDS_2082 "File"
+ IDS_2083 "C"
+ IDS_2084 "T"
+ IDS_2085 "S"
+ IDS_2086 "Mo"
IDS_2087 "Speed"
- IDS_2088 "Vérifier BPB"
- IDS_2089 "Ko"
- IDS_2090 "Impossible d'initialiser le moteur de rendu vidéo."
- IDS_2091 "Défaut"
- IDS_2092 "%i état(s) d'attente"
- IDS_2093 "Type"
- IDS_2094 "Impossible d'initialiser PCap"
- IDS_2095 "Aucun dispositif PCap trouvé"
- IDS_2096 "Dispositif PCap non valide"
- IDS_2097 "Manette(s) standard avec 2 boutons"
- IDS_2098 "Manette standard avec 4 boutons"
- IDS_2099 "Manette standard avec 6 boutons"
- IDS_2100 "Manette standard avec 6 boutons"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Système de contrôle de vol Thrustmaster"
- IDS_2104 "Aucun"
- IDS_2105 "Impossible de charger les accélérateurs de clavier."
- IDS_2106 "Impossible de charger l'entrée raw."
- IDS_2107 "%u"
- IDS_2108 "%u Mo (CTS: %i, %i, %i)"
- IDS_2109 "Disquette %i (%s): %ls"
- IDS_2110 "Toutes les images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Images du secteur avancés (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Images du secteur basiques (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Images du flux (*.FDI)\0*.FDI\0Images de surface (*.86F;*.MFM)\0*.86F;*.MFM\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2111 "Impossible d'initialiser FreeType"
- IDS_2112 "Impossible d'initialiser SDL, SDL2.dll est nécessaire"
- IDS_2113 "Etes-vous sûr de vouloir réinitialiser la machine émulée ?"
- IDS_2114 "Etes-vous sûr de vouloir quitter 86Box?"
- IDS_2115 "Impossible d'initialiser Ghostscript"
- IDS_2116 "Magnéto-optique %i (%ls): %ls"
- IDS_2117 "Images magnéto-optiques (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2118 "Bienvenue dans 86Box !"
- IDS_2119 "Côntrolleur interne"
- IDS_2120 "Sortir"
- IDS_2121 "Pas de ROMs trouvées"
- IDS_2122 "Voulez-vous sauvegarder les paramètres ?"
- IDS_2123 "Cela entraînera la réinitialisation complète de la machine émulée."
- IDS_2124 "Sauvegarder"
- IDS_2125 "À propos de 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Vérifier BPB"
+ IDS_2089 "Ko"
+ IDS_2090 "Impossible d'initialiser le moteur de rendu vidéo."
+ IDS_2091 "Défaut"
+ IDS_2092 "%i état(s) d'attente"
+ IDS_2093 "Type"
+ IDS_2094 "Impossible d'initialiser PCap"
+ IDS_2095 "Aucun dispositif PCap trouvé"
+ IDS_2096 "Dispositif PCap non valide"
+ IDS_2097 "Manette(s) standard avec 2 boutons"
+ IDS_2098 "Manette standard avec 4 boutons"
+ IDS_2099 "Manette standard avec 6 boutons"
+ IDS_2100 "Manette standard avec 6 boutons"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Système de contrôle de vol Thrustmaster"
+ IDS_2104 "Aucun"
+ IDS_2105 "Impossible de charger les accélérateurs de clavier."
+ IDS_2106 "Impossible de charger l'entrée raw."
+ IDS_2107 "%u"
+ IDS_2108 "%u Mo (CTS: %i, %i, %i)"
+ IDS_2109 "Disquette %i (%s): %ls"
+ IDS_2110 "Toutes les images (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Images du secteur avancés (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Images du secteur basiques (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Images du flux (*.FDI)\0*.FDI\0Images de surface (*.86F;*.MFM)\0*.86F;*.MFM\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2111 "Impossible d'initialiser FreeType"
+ IDS_2112 "Impossible d'initialiser SDL, SDL2.dll est nécessaire"
+ IDS_2113 "Etes-vous sûr de vouloir réinitialiser la machine émulée ?"
+ IDS_2114 "Etes-vous sûr de vouloir quitter 86Box?"
+ IDS_2115 "Impossible d'initialiser Ghostscript"
+ IDS_2116 "Magnéto-optique %i (%ls): %ls"
+ IDS_2117 "Images magnéto-optiques (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2118 "Bienvenue dans 86Box !"
+ IDS_2119 "Côntrolleur interne"
+ IDS_2120 "Sortir"
+ IDS_2121 "Pas de ROMs trouvées"
+ IDS_2122 "Voulez-vous sauvegarder les paramètres ?"
+ IDS_2123 "Cela entraînera la réinitialisation complète de la machine émulée."
+ IDS_2124 "Sauvegarder"
+ IDS_2125 "À propos de 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Un émulateur de vieux ordinateurs\n\nAuteurs: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nLibéré sous la licence GNU General Public License version 2 ou ultérieure. Pour plus d'informations, voir le fichier LICENSE."
- IDS_2128 "OK"
- IDS_2129 "Matériel non disponible"
+ IDS_2127 "Un émulateur de vieux ordinateurs\n\nAuteurs: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nLibéré sous la licence GNU General Public License version 2 ou ultérieure. Pour plus d'informations, voir le fichier LICENSE."
+ IDS_2128 "OK"
+ IDS_2129 "Matériel non disponible"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Assurez-vous que " LIB_NAME_PCAP " est installé et que vou utilisez une connexion réseau compatible avec " LIB_NAME_PCAP "."
- IDS_2131 "Configuration non valide"
+ IDS_2130 "Assurez-vous que " LIB_NAME_PCAP " est installé et que vou utilisez une connexion réseau compatible avec " LIB_NAME_PCAP "."
+ IDS_2131 "Configuration non valide"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " est nécessaire pour l'émulation de l'imprimante ESC/P."
+ IDS_2132 LIB_NAME_FREETYPE " est nécessaire pour l'émulation de l'imprimante ESC/P."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " est nécessair pour la conversion automatique des fichiers PostScript dans PDF.\n\nTous les documents envoyés à l'imprimante générique PostScript seront sauvés comme des fichiers PostScript (.ps)."
+ IDS_2133 LIB_NAME_GS " est nécessair pour la conversion automatique des fichiers PostScript dans PDF.\n\nTous les documents envoyés à l'imprimante générique PostScript seront sauvés comme des fichiers PostScript (.ps)."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " est nécessaire pour la sortie MIDI FluidSynth."
- IDS_2135 "Entrer en mode plein écran"
- IDS_2136 "Ne pas montrer ce message à nouveau"
- IDS_2137 "Ne pas sortir"
- IDS_2138 "Réinitialiser"
- IDS_2139 "Ne pas réinitialiser"
- IDS_2140 "Images magnéto-optiques (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2141 "Images CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2142 "Configuration du dispositif %hs"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " est nécessaire pour la sortie MIDI FluidSynth."
+ IDS_2135 "Entrer en mode plein écran"
+ IDS_2136 "Ne pas montrer ce message à nouveau"
+ IDS_2137 "Ne pas sortir"
+ IDS_2138 "Réinitialiser"
+ IDS_2139 "Ne pas réinitialiser"
+ IDS_2140 "Images magnéto-optiques (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2141 "Images CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2142 "Configuration du dispositif %hs"
IDS_2143 "Moniteur en mode veille"
- IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2145 "Options OpenGL"
- IDS_2146 "Vous chargez une configuration non prise en charge"
- IDS_2147 "La filtrage du type du processeur sur la base de la machine sélectionné est désactivé pur cette machine émulée.\n\nCela permet de sélectionner une processeur que est sinon incompatible avec la machine sélectionné. Cependant, il pourrait y avoir des incompatibilités avec le BIOS de la machine ou autres logiciels.\n\nL'activatione de cette configuration non est officiellement prise en charge et tout rapport de bogue peut être fermé comme étant invalide."
- IDS_2148 "Continuer"
- IDS_2149 "Cassette: %s"
- IDS_2150 "Images cassette (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2151 "Cartouche %i: %ls"
- IDS_2152 "Images cartouche (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tous les fichiers (*.*)\0*.*\0"
- IDS_2153 "Error initializing renderer"
- IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
- IDS_2155 "Resume execution"
- IDS_2156 "Pause execution"
- IDS_2157 "Press Ctrl+Alt+Del"
- IDS_2158 "Press Ctrl+Alt+Esc"
- IDS_2159 "Hard reset"
- IDS_2160 "ACPI shutdown"
- IDS_2161 "Settings"
+ IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2145 "Options OpenGL"
+ IDS_2146 "Vous chargez une configuration non prise en charge"
+ IDS_2147 "La filtrage du type du processeur sur la base de la machine sélectionné est désactivé pur cette machine émulée.\n\nCela permet de sélectionner une processeur que est sinon incompatible avec la machine sélectionné. Cependant, il pourrait y avoir des incompatibilités avec le BIOS de la machine ou autres logiciels.\n\nL'activatione de cette configuration non est officiellement prise en charge et tout rapport de bogue peut être fermé comme étant invalide."
+ IDS_2148 "Continuer"
+ IDS_2149 "Cassette: %s"
+ IDS_2150 "Images cassette (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2151 "Cartouche %i: %ls"
+ IDS_2152 "Images cartouche (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_2153 "Error initializing renderer"
+ IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+ IDS_2155 "Resume execution"
+ IDS_2156 "Pause execution"
+ IDS_2157 "Press Ctrl+Alt+Del"
+ IDS_2158 "Press Ctrl+Alt+Esc"
+ IDS_2159 "Hard reset"
+ IDS_2160 "ACPI shutdown"
+ IDS_2161 "Settings"
IDS_2162 "Lecteur plus tôt"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Disque dur (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "Les lecteurs de CD-ROM MFM/RLL ou ESDI n'ont jamais existé"
- IDS_4100 "Personnalisé..."
- IDS_4101 "Personnalisé (grand)..."
- IDS_4102 "Ajouter un nouveau disque dur"
- IDS_4103 "Ajouter un disque dur existant"
- IDS_4104 "Les images de disque HDI ne peuvent pas avoir une taille supériure à Go."
- IDS_4105 "Les images de disque ne peuvent pas avoir un taille supérieure à 127 Go."
- IDS_4106 "Images de dique dur (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Tous les fichiers (*.*)\0*.*\0"
- IDS_4107 "Impossible de lire le fichier"
- IDS_4108 "Impossible d'écrire le fichier"
- IDS_4109 "Les images HDI ou HDX avec une taille de secteur différente de 512 non sont pas prises en charge."
- IDS_4110 "USB n'est pas encore pris en charge."
- IDS_4111 "Le fichier de l'image disque existe déjà ."
- IDS_4112 "Veuillez spécifier un nom de fichier valide."
- IDS_4113 "Image de disque créée"
- IDS_4114 "Assurez-vous que le fichier existe et est lisible."
- IDS_4115 "Assurez-vous que le fichier en cours d'enregistrement se trouve dans un répertoire accessible en écriture."
- IDS_4116 "Image disque trop grande"
- IDS_4117 "N'oubliez pas de partitionner et de formater le nouveau disque créé."
- IDS_4118 "Le fichier sélectionné sera écrasé. Etes-vous sûr de vouloir l'utiliser?"
- IDS_4119 "Image disque non prise en charge"
- IDS_4120 "Écraser"
- IDS_4121 "Ne pas écraser"
- IDS_4122 "Image brute (.img)"
- IDS_4123 "Image HDI (.hdi)"
- IDS_4124 "Image HDX (.hdx)"
- IDS_4125 "VHD Ã taille fixe (.vhd)"
- IDS_4126 "VHD Ã taille dynamique (.vhd)"
- IDS_4127 "VHD à différenciation (.vhd)"
- IDS_4128 "Blocs grands (2 Mo)"
- IDS_4129 "Blocs petits (512 Ko)"
- IDS_4130 "Fichiers VHD (*.VHD)\0*.VHD\0Tous les fichiers (*.*)\0*.*\0"
- IDS_4131 "Sélectionnez le VHD parent"
- IDS_4132 "Il est possible que l'image parente a été modifié après la création de l'image à différenciation.\n\nIl est même possible que les fichiers de l'mage ont été déplacés ou copiés ou il existe un bogue dans le programme que a créé ce disque.\n\nVoulez-vous réparer l'horodatage?"
- IDS_4133 "Les horodatages des disques parent et enfant ne correspondent pas"
- IDS_4134 "Impossible de réparer l'horodatage du VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "Les lecteurs de CD-ROM MFM/RLL ou ESDI n'ont jamais existé"
+ IDS_4100 "Personnalisé..."
+ IDS_4101 "Personnalisé (grand)..."
+ IDS_4102 "Ajouter un nouveau disque dur"
+ IDS_4103 "Ajouter un disque dur existant"
+ IDS_4104 "Les images de disque HDI ne peuvent pas avoir une taille supériure à Go."
+ IDS_4105 "Les images de disque ne peuvent pas avoir un taille supérieure à 127 Go."
+ IDS_4106 "Images de dique dur (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_4107 "Impossible de lire le fichier"
+ IDS_4108 "Impossible d'écrire le fichier"
+ IDS_4109 "Les images HDI ou HDX avec une taille de secteur différente de 512 non sont pas prises en charge."
+ IDS_4110 "USB n'est pas encore pris en charge."
+ IDS_4111 "Le fichier de l'image disque existe déjà ."
+ IDS_4112 "Veuillez spécifier un nom de fichier valide."
+ IDS_4113 "Image de disque créée"
+ IDS_4114 "Assurez-vous que le fichier existe et est lisible."
+ IDS_4115 "Assurez-vous que le fichier en cours d'enregistrement se trouve dans un répertoire accessible en écriture."
+ IDS_4116 "Image disque trop grande"
+ IDS_4117 "N'oubliez pas de partitionner et de formater le nouveau disque créé."
+ IDS_4118 "Le fichier sélectionné sera écrasé. Etes-vous sûr de vouloir l'utiliser?"
+ IDS_4119 "Image disque non prise en charge"
+ IDS_4120 "Écraser"
+ IDS_4121 "Ne pas écraser"
+ IDS_4122 "Image brute (.img)"
+ IDS_4123 "Image HDI (.hdi)"
+ IDS_4124 "Image HDX (.hdx)"
+ IDS_4125 "VHD Ã taille fixe (.vhd)"
+ IDS_4126 "VHD Ã taille dynamique (.vhd)"
+ IDS_4127 "VHD à différenciation (.vhd)"
+ IDS_4128 "Blocs grands (2 Mo)"
+ IDS_4129 "Blocs petits (512 Ko)"
+ IDS_4130 "Fichiers VHD (*.VHD)\0*.VHD\0Tous les fichiers (*.*)\0*.*\0"
+ IDS_4131 "Sélectionnez le VHD parent"
+ IDS_4132 "Il est possible que l'image parente a été modifié après la création de l'image à différenciation.\n\nIl est même possible que les fichiers de l'mage ont été déplacés ou copiés ou il existe un bogue dans le programme que a créé ce disque.\n\nVoulez-vous réparer l'horodatage?"
+ IDS_4133 "Les horodatages des disques parent et enfant ne correspondent pas"
+ IDS_4134 "Impossible de réparer l'horodatage du VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Désactivé"
- IDS_5381 "ATAPI"
+ IDS_5376 "Désactivé"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Désactivé"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Désactivé"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 Ko"
- IDS_5889 "180 Ko"
- IDS_5890 "320 Ko"
- IDS_5891 "360 Ko"
- IDS_5892 "640 Ko"
- IDS_5893 "720 Ko"
- IDS_5894 "1.2 Mo"
- IDS_5895 "1.25 Mo"
- IDS_5896 "1.44 Mo"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 Mo"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 Mo (ISO 10090)"
- IDS_5903 "3.5"" 230 Mo (ISO 13963)"
- IDS_5904 "3.5"" 540 Mo (ISO 15498)"
- IDS_5905 "3.5"" 640 Mo (ISO 15498)"
- IDS_5906 "3.5"" 1.3 Go (GigaMO)"
- IDS_5907 "3.5"" 2.3 Go (GigaMO 2)"
- IDS_5908 "5.25"" 600 Mo"
- IDS_5909 "5.25"" 650 Mo"
- IDS_5910 "5.25"" 1 Go"
- IDS_5911 "5.25"" 1.3 Go"
+ IDS_5888 "160 Ko"
+ IDS_5889 "180 Ko"
+ IDS_5890 "320 Ko"
+ IDS_5891 "360 Ko"
+ IDS_5892 "640 Ko"
+ IDS_5893 "720 Ko"
+ IDS_5894 "1.2 Mo"
+ IDS_5895 "1.25 Mo"
+ IDS_5896 "1.44 Mo"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 Mo"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 Mo (ISO 10090)"
+ IDS_5903 "3.5"" 230 Mo (ISO 13963)"
+ IDS_5904 "3.5"" 540 Mo (ISO 15498)"
+ IDS_5905 "3.5"" 640 Mo (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 Go (GigaMO)"
+ IDS_5907 "3.5"" 2.3 Go (GigaMO 2)"
+ IDS_5908 "5.25"" 600 Mo"
+ IDS_5909 "5.25"" 650 Mo"
+ IDS_5910 "5.25"" 1 Go"
+ IDS_5911 "5.25"" 1.3 Go"
- IDS_6144 "RPM précis"
- IDS_6145 "Précision RPM de moins 1%"
- IDS_6146 "Précision RPM de moins 1.5%"
- IDS_6147 "Précision RPM de moins 2%"
+ IDS_6144 "RPM précis"
+ IDS_6145 "Précision RPM de moins 1%"
+ IDS_6146 "Précision RPM de moins 1.5%"
+ IDS_6147 "Précision RPM de moins 2%"
- IDS_7168 "(Défaut du système)"
+ IDS_7168 "(Défaut du système)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// French (F.R.) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc
index 7afb7b26d..d8a19690e 100644
--- a/src/win/languages/hr-HR.rc
+++ b/src/win/languages/hr-HR.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_CROATIAN, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Radnje"
BEGIN
- MENUITEM "&Tipkovnica zahtijeva hvatanje miša", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Desni CTRL je lijevi ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Tipkovnica zahtijeva hvatanje miša", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Desni CTRL je lijevi ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Ponovno pokretanje...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Ponovno pokretanje...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pauza", IDM_ACTION_PAUSE
+ MENUITEM "&Pauza", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "Iz&laz...", IDM_ACTION_EXIT
+ MENUITEM "Iz&laz...", IDM_ACTION_EXIT
END
POPUP "&Pogled"
BEGIN
- MENUITEM "&Sakrij statusni redak", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "&Sakrij alatni redak", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Sakrij statusni redak", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "&Sakrij alatni redak", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Prozor s promjenjivim veliÄinama", IDM_VID_RESIZE
- MENUITEM "&Zapamtite veliÄinu i položaj", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Prozor s promjenjivim veliÄinama", IDM_VID_RESIZE
+ MENUITEM "&Zapamtite veliÄinu i položaj", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Renderer"
BEGIN
- MENUITEM "&SDL (Softver)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardver)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 jezgra)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Softver)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardver)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 jezgra)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Odrediti veliÄinu...", IDM_VID_SPECIFY_DIM
- MENUITEM "&4:3 omjer prikaza", IDM_VID_FORCE43
+ MENUITEM "Odrediti veliÄinu...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&4:3 omjer prikaza", IDM_VID_FORCE43
POPUP "&Faktor skaliranja prozora"
BEGIN
- MENUITEM "&0,5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1,&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0,5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1,&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Metoda filtriranja"
BEGIN
- MENUITEM "&Najbliža", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linearna", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Najbliža", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linearna", IDM_VID_FILTER_LINEAR
END
- MENUITEM "&HiDPI skaliranje", IDM_VID_HIDPI
+ MENUITEM "&HiDPI skaliranje", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Cijelozaslonski naÄin\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Cijelozaslonski naÄin\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "&NaÄin cijelozaslonskog rastezanja"
BEGIN
- MENUITEM "&Razvuci na cijeli zaslona", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Razvuci na cijeli zaslona", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Kvadratni pikseli (zadrži omjer)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Cijelobrojno skaliranje", IDM_VID_FS_INT
+ MENUITEM "&Cijelobrojno skaliranje", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGA postavke"
BEGIN
- MENUITEM "&Obrni boje zaslona VGA", IDM_VID_INVERT
+ MENUITEM "&Obrni boje zaslona VGA", IDM_VID_INVERT
POPUP "&Tip zaslona VGA"
BEGIN
- MENUITEM "RGB u &boji", IDM_VID_GRAY_RGB
- MENUITEM "&RGB u nijansama sive boje", IDM_VID_GRAY_MONO
- MENUITEM "&Jantarni zaslon", IDM_VID_GRAY_AMBER
- MENUITEM "&Zeleni zaslon", IDM_VID_GRAY_GREEN
- MENUITEM "&Bijeli zaslon", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB u &boji", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB u nijansama sive boje", IDM_VID_GRAY_MONO
+ MENUITEM "&Jantarni zaslon", IDM_VID_GRAY_AMBER
+ MENUITEM "&Zeleni zaslon", IDM_VID_GRAY_GREEN
+ MENUITEM "&Bijeli zaslon", IDM_VID_GRAY_WHITE
END
POPUP "&Vrsta konverzije nijansa sive boje"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Prosjek", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Prosjek", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "&Višak slike CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "&Višak slike CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "&Promjeni kontrast za crno-bijeli zaslon", IDM_VID_CGACON
END
- MENUITEM "&Mediji", IDM_MEDIA
+ MENUITEM "&Mediji", IDM_MEDIA
POPUP "&Alati"
BEGIN
- MENUITEM "&Opcije...", IDM_CONFIG
- MENUITEM "&Ažuriraj ikone statusnog redka", IDM_UPDATE_ICONS
+ MENUITEM "&Opcije...", IDM_CONFIG
+ MENUITEM "&Ažuriraj ikone statusnog redka", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Napravi &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Napravi &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Postavke...", IDM_PREFERENCES
+ 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
+ MENUITEM "&PojaÄanje zvuka...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Z&apoÄni praćenje\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "&Svrši praćenje\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Z&apoÄni praćenje\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "&Svrši praćenje\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Pomoć"
BEGIN
- MENUITEM "&Dokumentacija...", IDM_DOCS
- MENUITEM "&O programu 86Box...", IDM_ABOUT
+ MENUITEM "&Dokumentacija...", IDM_DOCS
+ MENUITEM "&O programu 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Postojeća slika...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Postojeća slika...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Snimi", IDM_CASSETTE_RECORD
- MENUITEM "&Pokreni", IDM_CASSETTE_PLAY
- MENUITEM "P&remotaj na poÄetak", IDM_CASSETTE_REWIND
- MENUITEM "&PreskoÄi do kraja", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Snimi", IDM_CASSETTE_RECORD
+ MENUITEM "&Pokreni", IDM_CASSETTE_PLAY
+ MENUITEM "P&remotaj na poÄetak", IDM_CASSETTE_REWIND
+ MENUITEM "&PreskoÄi do kraja", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "&Izbaci", IDM_CASSETTE_EJECT
+ MENUITEM "&Izbaci", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Slika...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Slika...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "&Izbaci", IDM_CARTRIDGE_EJECT
+ MENUITEM "&Izbaci", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Postojeća slika...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Postojeća slika...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Izvozi u 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "&Izvozi u 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Izbaci", IDM_FLOPPY_EJECT
+ MENUITEM "&Izbaci", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&IskljuÄi zvuk", IDM_CDROM_MUTE
+ MENUITEM "&IskljuÄi zvuk", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&Prazno", IDM_CDROM_EMPTY
- MENUITEM "&Ponovo uÄitaj prethodnu sliku", IDM_CDROM_RELOAD
+ MENUITEM "&Prazno", IDM_CDROM_EMPTY
+ MENUITEM "&Ponovo uÄitaj prethodnu sliku", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Slika...", IDM_CDROM_IMAGE
- MENUITEM "&Mapa...", IDM_CDROM_DIR
+ MENUITEM "&Slika...", IDM_CDROM_IMAGE
+ MENUITEM "&Mapa...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Postojeća slika...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Postojeća slika...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Izbaci", IDM_ZIP_EJECT
- MENUITEM "&Ponovo uÄitaj prethodnu sliku", IDM_ZIP_RELOAD
+ MENUITEM "&Izbaci", IDM_ZIP_EJECT
+ MENUITEM "&Ponovo uÄitaj prethodnu sliku", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Postojeća slika...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Postojeća slika...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Postojeća slika (&zaštićena od pisanja)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Izbaci", IDM_MO_EJECT
- MENUITEM "&Ponovo uÄitaj prethodnu sliku", IDM_MO_RELOAD
+ MENUITEM "&Izbaci", IDM_MO_EJECT
+ MENUITEM "&Ponovo uÄitaj prethodnu sliku", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Postavke"
-#define STR_SND_GAIN "PojaÄavanje zvuka"
-#define STR_NEW_FLOPPY "Nova slika"
-#define STR_CONFIG "Opcije"
-#define STR_SPECIFY_DIM "Odredite glavne dimenzije prozora"
+#define STR_PREFERENCES "Postavke"
+#define STR_SND_GAIN "PojaÄavanje zvuka"
+#define STR_NEW_FLOPPY "Nova slika"
+#define STR_CONFIG "Opcije"
+#define STR_SPECIFY_DIM "Odredite glavne dimenzije prozora"
-#define STR_OK "U redu"
-#define STR_CANCEL "Otkaži"
-#define STR_GLOBAL "Spremite ove postavke kao &globalne zadane postavke"
-#define STR_DEFAULT "Zadano"
-#define STR_LANGUAGE "Jezik:"
-#define STR_ICONSET "Paket ikona:"
+#define STR_OK "U redu"
+#define STR_CANCEL "Otkaži"
+#define STR_GLOBAL "Spremite ove postavke kao &globalne zadane postavke"
+#define STR_DEFAULT "Zadano"
+#define STR_LANGUAGE "Jezik:"
+#define STR_ICONSET "Paket ikona:"
-#define STR_GAIN "PojaÄavanje"
+#define STR_GAIN "PojaÄavanje"
-#define STR_FILE_NAME "Ime datoteke:"
-#define STR_DISK_SIZE "VeliÄina diska:"
-#define STR_RPM_MODE "NaÄin broja okretaja:"
-#define STR_PROGRESS "Napredak:"
+#define STR_FILE_NAME "Ime datoteke:"
+#define STR_DISK_SIZE "VeliÄina diska:"
+#define STR_RPM_MODE "NaÄin broja okretaja:"
+#define STR_PROGRESS "Napredak:"
-#define STR_WIDTH "Å irina:"
-#define STR_HEIGHT "Visina:"
-#define STR_LOCK_TO_SIZE "ZakljuÄajte na ovu veliÄinu"
+#define STR_WIDTH "Å irina:"
+#define STR_HEIGHT "Visina:"
+#define STR_LOCK_TO_SIZE "ZakljuÄajte na ovu veliÄinu"
-#define STR_MACHINE_TYPE "Tip sistema:"
-#define STR_MACHINE "Sistem:"
-#define STR_CONFIGURE "Namjesti"
-#define STR_CPU_TYPE "Tip procesora:"
-#define STR_CPU_SPEED "Brzina:"
-#define STR_FPU "FPU uređaj:"
-#define STR_WAIT_STATES "Stanja Äekanja:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memorija:"
-#define STR_TIME_SYNC "Sinkronizacija vremena"
-#define STR_DISABLED "IskljuÄeno"
-#define STR_ENABLED_LOCAL "UkljuÄeno (lokalno vrijeme)"
-#define STR_ENABLED_UTC "UkljuÄeno (UTC)"
-#define STR_DYNAREC "DinamiÄki rekompilator"
+#define STR_MACHINE_TYPE "Tip sistema:"
+#define STR_MACHINE "Sistem:"
+#define STR_CONFIGURE "Namjesti"
+#define STR_CPU_TYPE "Tip procesora:"
+#define STR_CPU_SPEED "Brzina:"
+#define STR_FPU "FPU uređaj:"
+#define STR_WAIT_STATES "Stanja Äekanja:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memorija:"
+#define STR_TIME_SYNC "Sinkronizacija vremena"
+#define STR_DISABLED "IskljuÄeno"
+#define STR_ENABLED_LOCAL "UkljuÄeno (lokalno vrijeme)"
+#define STR_ENABLED_UTC "UkljuÄeno (UTC)"
+#define STR_DYNAREC "DinamiÄki rekompilator"
-#define STR_VIDEO "Video:"
-#define STR_VIDEO_2 "Video 2:"
-#define STR_VOODOO "Voodoo grafika"
-#define STR_IBM8514 "IBM 8514/a grafika"
-#define STR_XGA "XGA grafika"
+#define STR_VIDEO "Video:"
+#define STR_VIDEO_2 "Video 2:"
+#define STR_VOODOO "Voodoo grafika"
+#define STR_IBM8514 "IBM 8514/a grafika"
+#define STR_XGA "XGA grafika"
-#define STR_MOUSE "Miš:"
-#define STR_JOYSTICK "Palica za igru:"
-#define STR_JOY1 "Palica za igru 1..."
-#define STR_JOY2 "Palica za igru 2..."
-#define STR_JOY3 "Palica za igru 3..."
-#define STR_JOY4 "Palica za igru 4..."
+#define STR_MOUSE "Miš:"
+#define STR_JOYSTICK "Palica za igru:"
+#define STR_JOY1 "Palica za igru 1..."
+#define STR_JOY2 "Palica za igru 2..."
+#define STR_JOY3 "Palica za igru 3..."
+#define STR_JOY4 "Palica za igru 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "Uređaj COM3:"
-#define STR_COM4 "Uređaj COM4:"
-#define STR_LPT1 "Uređaj LPT1:"
-#define STR_LPT2 "Uređaj LPT2:"
-#define STR_LPT3 "Uređaj LPT3:"
-#define STR_LPT4 "Uređaj LPT4:"
-#define STR_SERIAL1 "Serijska vrata 1"
-#define STR_SERIAL2 "Serijska vrata 2"
-#define STR_SERIAL3 "Serijska vrata 3"
-#define STR_SERIAL4 "Serijska vrata 4"
-#define STR_PARALLEL1 "Paralelna vrata 1"
-#define STR_PARALLEL2 "Paralelna vrata 2"
-#define STR_PARALLEL3 "Paralelna vrata 3"
-#define STR_PARALLEL4 "Paralelna vrata 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "Uređaj COM1:"
+#define STR_COM2 "Uređaj COM2:"
+#define STR_COM3 "Uređaj COM3:"
+#define STR_COM4 "Uređaj COM4:"
+#define STR_LPT1 "Uređaj LPT1:"
+#define STR_LPT2 "Uređaj LPT2:"
+#define STR_LPT3 "Uređaj LPT3:"
+#define STR_LPT4 "Uređaj LPT4:"
+#define STR_SERIAL1 "Serijska vrata 1"
+#define STR_SERIAL2 "Serijska vrata 2"
+#define STR_SERIAL3 "Serijska vrata 3"
+#define STR_SERIAL4 "Serijska vrata 4"
+#define STR_PARALLEL1 "Paralelna vrata 1"
+#define STR_PARALLEL2 "Paralelna vrata 2"
+#define STR_PARALLEL3 "Paralelna vrata 3"
+#define STR_PARALLEL4 "Paralelna vrata 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Kontroler tvrdog diska:"
-#define STR_FDC "Kontroler diskete:"
-#define STR_IDE_TER "Tercijarni IDE kontroler"
-#define STR_IDE_QUA "Kvaternarni IDE kontroler"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Kontroler 1:"
-#define STR_SCSI_2 "Kontroler 2:"
-#define STR_SCSI_3 "Kontroler 3:"
-#define STR_SCSI_4 "Kontroler 4:"
-#define STR_CASSETTE "Audio kaseta"
+#define STR_HDC "Kontroler tvrdog diska:"
+#define STR_FDC "Kontroler diskete:"
+#define STR_IDE_TER "Tercijarni IDE kontroler"
+#define STR_IDE_QUA "Kvaternarni IDE kontroler"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Kontroler 1:"
+#define STR_SCSI_2 "Kontroler 2:"
+#define STR_SCSI_3 "Kontroler 3:"
+#define STR_SCSI_4 "Kontroler 4:"
+#define STR_CASSETTE "Audio kaseta"
-#define STR_HDD "Tvrdi diskovi:"
-#define STR_NEW "&Novi..."
-#define STR_EXISTING "&Postojeći..."
-#define STR_REMOVE "&Ukloni"
-#define STR_BUS "Sabirnica:"
-#define STR_CHANNEL "Kanal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Tvrdi diskovi:"
+#define STR_NEW "&Novi..."
+#define STR_EXISTING "&Postojeći..."
+#define STR_REMOVE "&Ukloni"
+#define STR_BUS "Sabirnica:"
+#define STR_CHANNEL "Kanal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Odredi..."
-#define STR_SECTORS "Sektori:"
-#define STR_HEADS "Glave:"
-#define STR_CYLS "Cilindri:"
-#define STR_SIZE_MB "VeliÄina (MB):"
-#define STR_TYPE "Tip:"
-#define STR_IMG_FORMAT "Format slike:"
-#define STR_BLOCK_SIZE "VeliÄina slike:"
+#define STR_SPECIFY "&Odredi..."
+#define STR_SECTORS "Sektori:"
+#define STR_HEADS "Glave:"
+#define STR_CYLS "Cilindri:"
+#define STR_SIZE_MB "VeliÄina (MB):"
+#define STR_TYPE "Tip:"
+#define STR_IMG_FORMAT "Format slike:"
+#define STR_BLOCK_SIZE "VeliÄina slike:"
-#define STR_FLOPPY_DRIVES "Disketni pogoni:"
-#define STR_TURBO "Turbo vrijemena"
-#define STR_CHECKBPB "Provjeraj BPB"
-#define STR_CDROM_DRIVES "CD-ROM pogoni:"
-#define STR_CD_SPEED "Brzina:"
-#define STR_EARLY "Raniji pogon"
+#define STR_FLOPPY_DRIVES "Disketni pogoni:"
+#define STR_TURBO "Turbo vrijemena"
+#define STR_CHECKBPB "Provjeraj BPB"
+#define STR_CDROM_DRIVES "CD-ROM pogoni:"
+#define STR_CD_SPEED "Brzina:"
+#define STR_EARLY "Raniji pogon"
-#define STR_MO_DRIVES "MO pogoni:"
-#define STR_ZIP_DRIVES "ZIP pogoni:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "MO pogoni:"
+#define STR_ZIP_DRIVES "ZIP pogoni:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "Sat stvarnog vremena (RTC):"
-#define STR_ISAMEM "Proširenje memorije ISA"
-#define STR_ISAMEM_1 "Kartica 1:"
-#define STR_ISAMEM_2 "Kartica 2:"
-#define STR_ISAMEM_3 "Kartica 3:"
-#define STR_ISAMEM_4 "Kartica 4:"
-#define STR_BUGGER "Uređaj ISABugger"
-#define STR_POSTCARD "Kartica POST"
+#define STR_ISARTC "Sat stvarnog vremena (RTC):"
+#define STR_ISAMEM "Proširenje memorije ISA"
+#define STR_ISAMEM_1 "Kartica 1:"
+#define STR_ISAMEM_2 "Kartica 2:"
+#define STR_ISAMEM_3 "Kartica 3:"
+#define STR_ISAMEM_4 "Kartica 4:"
+#define STR_BUGGER "Uređaj ISABugger"
+#define STR_POSTCARD "Kartica POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Greška"
- IDS_2050 "Fatalna greška"
- IDS_2051 " - PAUSED"
- IDS_2052 "Pritisnite Ctrl+Alt+PgDn za povratak u prozorski naÄin rada."
- IDS_2053 "Brzina"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box nije mogao pronaći upotrebljive ROM datoteke.\n\nMolimte posjetite sknite paket s ROM datotekama i ekstrahirajte paket u ""roms"" mapu."
- IDS_2057 "(prazno)"
- IDS_2058 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Sve datoteke (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "UkljuÄeno"
- IDS_2061 "IskljuÄeno"
- IDS_2062 "Sve slike (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0BOsnovne sektorske slike (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Površinske slike (*.86F)\0*.86F\0"
- IDS_2063 "Sistem ""%hs"" nije dostupan jer ne postoje potrebni ROM-ovi u mapu roms/machines. Prebacivanje na dostupno raÄunalo."
+ 2048 "86Box"
+ IDS_2049 "Greška"
+ IDS_2050 "Fatalna greška"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Pritisnite Ctrl+Alt+PgDn za povratak u prozorski naÄin rada."
+ IDS_2053 "Brzina"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box nije mogao pronaći upotrebljive ROM datoteke.\n\nMolimte posjetite sknite paket s ROM datotekama i ekstrahirajte paket u ""roms"" mapu."
+ IDS_2057 "(prazno)"
+ IDS_2058 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Sve datoteke (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "UkljuÄeno"
+ IDS_2061 "IskljuÄeno"
+ IDS_2062 "Sve slike (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0BOsnovne sektorske slike (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Površinske slike (*.86F)\0*.86F\0"
+ IDS_2063 "Sistem ""%hs"" nije dostupan jer ne postoje potrebni ROM-ovi u mapu roms/machines. Prebacivanje na dostupno raÄunalo."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Video kartica ""%hs"" nije dostupna jer ne postoje potrebni ROM-ovi u mapu roms/video. Prebacivanje na dostupnu video karticu."
- IDS_2065 "Sistem"
- IDS_2066 "Video"
- IDS_2067 "Ulazni uređaji"
- IDS_2068 "Zvuk"
- IDS_2069 "Mreža"
- IDS_2070 "Vrata (COM & LPT)"
- IDS_2071 "Kontroleri za diskove"
- IDS_2072 "Tvrdi diskovi"
- IDS_2073 "Floppy & CD-ROM pogoni"
- IDS_2074 "Ostali uklonjivi uređaji"
- IDS_2075 "Ostali periferni uređaji"
- IDS_2076 "Površinske slike (*.86F)\0*.86F\0"
- IDS_2077 "Kliknite da uhvatite miš"
- IDS_2078 "Pritisnite F8+F12 za otpustanje miša"
- IDS_2079 "Pritisnite F8+F12 ili srednji gumb miša za otpuštanje miša"
+ IDS_2064 "Video kartica ""%hs"" nije dostupna jer ne postoje potrebni ROM-ovi u mapu roms/video. Prebacivanje na dostupnu video karticu."
+ IDS_2065 "Sistem"
+ IDS_2066 "Video"
+ IDS_2067 "Ulazni uređaji"
+ IDS_2068 "Zvuk"
+ IDS_2069 "Mreža"
+ IDS_2070 "Vrata (COM & LPT)"
+ IDS_2071 "Kontroleri za diskove"
+ IDS_2072 "Tvrdi diskovi"
+ IDS_2073 "Floppy & CD-ROM pogoni"
+ IDS_2074 "Ostali uklonjivi uređaji"
+ IDS_2075 "Ostali periferni uređaji"
+ IDS_2076 "Površinske slike (*.86F)\0*.86F\0"
+ IDS_2077 "Kliknite da uhvatite miš"
+ IDS_2078 "Pritisnite F8+F12 za otpustanje miša"
+ IDS_2079 "Pritisnite F8+F12 ili srednji gumb miša za otpuštanje miša"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Nije moguće inicijalizirati FluidSynth"
- IDS_2081 "Bus"
- IDS_2082 "Datoteka"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Nije moguće inicijalizirati FluidSynth"
+ IDS_2081 "Bus"
+ IDS_2082 "Datoteka"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Provjeri BPB"
- IDS_2089 "KB"
- IDS_2090 "Nije moguće inicijalizirati renderer."
- IDS_2091 "Standard"
- IDS_2092 "%i stanje Äekanja"
- IDS_2093 "Tip"
- IDS_2094 "Postavljanje PCap-a nije uspjelo"
- IDS_2095 "Nema PCap uređaja"
- IDS_2096 "Nevažeći PCap uređaj"
- IDS_2097 "Standardna palica za igru s 2 tipke"
- IDS_2098 "Standardna palica za igru s 4 tipke"
- IDS_2099 "Standardna palica za igru s 6 tipke"
- IDS_2100 "Standardna palica za igru s 8 tipke"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Bez"
- IDS_2105 "Nije moguće uÄitati ubrzivaÄe tipkovnice."
- IDS_2106 "Nije moguće registrirati neobrađeni unos."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Disketa %i (%s): %ls"
- IDS_2110 "Sve slike (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Napredne sektorske slike (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Osnovne sektorske slike (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux slike (*.FDI)\0*.FDI\0Površinske slike (*.86F;*.MFM)\0*.86F;*.MFM\0Sve datoteke (*.*)\0*.*\0"
- IDS_2111 "Nije moguće inicijalizirati FreeType"
- IDS_2112 "Nije moguće inicijalizirati SDL, SDL2.dll je potrebno"
- IDS_2113 "Jeste li sigurni da želite hard resetirati emulirani sistem?"
- IDS_2114 "Jeste li sigurni da želite zatvoriti 86Box?"
- IDS_2115 "Nije moguće inicijalizirati GhostScript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "MO slike (*.IM?;*.MDI)\0*.IM?;*.MDI\0Svi datoteke (*.*)\0*.*\0"
- IDS_2118 "Dobrodošli u 86Box!"
- IDS_2119 "Uunutarnji kontroler"
- IDS_2120 "Izlazi"
- IDS_2121 "Nisu pronađene ROM datoteke"
- IDS_2122 "Želite li spremiti postavke?"
- IDS_2123 "Ovo će napraviti hard resetiranje emuliranog sistema."
- IDS_2124 "Spremaj"
- IDS_2125 "O programu 86Box"
- IDS_2126 "86Box verzija " EMU_VERSION
+ IDS_2088 "Provjeri BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Nije moguće inicijalizirati renderer."
+ IDS_2091 "Standard"
+ IDS_2092 "%i stanje Äekanja"
+ IDS_2093 "Tip"
+ IDS_2094 "Postavljanje PCap-a nije uspjelo"
+ IDS_2095 "Nema PCap uređaja"
+ IDS_2096 "Nevažeći PCap uređaj"
+ IDS_2097 "Standardna palica za igru s 2 tipke"
+ IDS_2098 "Standardna palica za igru s 4 tipke"
+ IDS_2099 "Standardna palica za igru s 6 tipke"
+ IDS_2100 "Standardna palica za igru s 8 tipke"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Bez"
+ IDS_2105 "Nije moguće uÄitati ubrzivaÄe tipkovnice."
+ IDS_2106 "Nije moguće registrirati neobrađeni unos."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Disketa %i (%s): %ls"
+ IDS_2110 "Sve slike (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Napredne sektorske slike (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Osnovne sektorske slike (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux slike (*.FDI)\0*.FDI\0Površinske slike (*.86F;*.MFM)\0*.86F;*.MFM\0Sve datoteke (*.*)\0*.*\0"
+ IDS_2111 "Nije moguće inicijalizirati FreeType"
+ IDS_2112 "Nije moguće inicijalizirati SDL, SDL2.dll je potrebno"
+ IDS_2113 "Jeste li sigurni da želite hard resetirati emulirani sistem?"
+ IDS_2114 "Jeste li sigurni da želite zatvoriti 86Box?"
+ IDS_2115 "Nije moguće inicijalizirati GhostScript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "MO slike (*.IM?;*.MDI)\0*.IM?;*.MDI\0Svi datoteke (*.*)\0*.*\0"
+ IDS_2118 "Dobrodošli u 86Box!"
+ IDS_2119 "Uunutarnji kontroler"
+ IDS_2120 "Izlazi"
+ IDS_2121 "Nisu pronađene ROM datoteke"
+ IDS_2122 "Želite li spremiti postavke?"
+ IDS_2123 "Ovo će napraviti hard resetiranje emuliranog sistema."
+ IDS_2124 "Spremaj"
+ IDS_2125 "O programu 86Box"
+ IDS_2126 "86Box verzija " EMU_VERSION
- IDS_2127 "Emulator starih raÄunala\n\nAutori: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, i drugi.\n\nPreveo: dob205\n\nObjavljeno pod licencom GNU General Public License, verzija 2 ili novije. Za viÅ¡e informacija pogledajte datoteku LICENCE."
- IDS_2128 "U redu"
- IDS_2129 "Hardver nije dostupan"
+ IDS_2127 "Emulator starih raÄunala\n\nAutori: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, i drugi.\n\nPreveo: dob205\n\nObjavljeno pod licencom GNU General Public License, verzija 2 ili novije. Za viÅ¡e informacija pogledajte datoteku LICENCE."
+ IDS_2128 "U redu"
+ IDS_2129 "Hardver nije dostupan"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Provjerite je li " LIB_NAME_PCAP " instaliran i jeste li na mreži, kompadibilnoj s " LIB_NAME_PCAP "."
- IDS_2131 "Nevažeća konfiguracija"
+ IDS_2130 "Provjerite je li " LIB_NAME_PCAP " instaliran i jeste li na mreži, kompadibilnoj s " LIB_NAME_PCAP "."
+ IDS_2131 "Nevažeća konfiguracija"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " je potrebno za emuliranje ESC/P pisaÄa."
+ IDS_2132 LIB_NAME_FREETYPE " je potrebno za emuliranje ESC/P pisaÄa."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " je potrebno za automatsku konverziju PostScript datoteke u PDF datoteke.\n\nSvi dokumenti poslani na generiÄki PostScript pisaÄ bit će spremljeni kao PostScript (.ps) datoteke."
+ IDS_2133 LIB_NAME_GS " je potrebno za automatsku konverziju PostScript datoteke u PDF datoteke.\n\nSvi dokumenti poslani na generiÄki PostScript pisaÄ bit će spremljeni kao PostScript (.ps) datoteke."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " je potrebno za FluidSynth MIDI izlaz."
- IDS_2135 "Ulazim u cijelozaslonski naÄin"
- IDS_2136 "Ne pokazi više ovu poruku"
- IDS_2137 "Ne izlazi"
- IDS_2138 "Resetiraj"
- IDS_2139 "Ne resetiraj"
- IDS_2140 "MO slike (*.IM?;*.MDI)\0*.IM?;*.MDI\0Sve datoteke (*.*)\0*.*\0"
- IDS_2141 "CD-ROM slike (*.ISO;*.CUE)\0*.ISO;*.CUE\0Sve datoteke (*.*)\0*.*\0"
- IDS_2142 "Konfiguracija uređaja %hs "
+ IDS_2134 LIB_NAME_FLUIDSYNTH " je potrebno za FluidSynth MIDI izlaz."
+ IDS_2135 "Ulazim u cijelozaslonski naÄin"
+ IDS_2136 "Ne pokazi više ovu poruku"
+ IDS_2137 "Ne izlazi"
+ IDS_2138 "Resetiraj"
+ IDS_2139 "Ne resetiraj"
+ IDS_2140 "MO slike (*.IM?;*.MDI)\0*.IM?;*.MDI\0Sve datoteke (*.*)\0*.*\0"
+ IDS_2141 "CD-ROM slike (*.ISO;*.CUE)\0*.ISO;*.CUE\0Sve datoteke (*.*)\0*.*\0"
+ IDS_2142 "Konfiguracija uređaja %hs "
IDS_2143 "Ekran u stanju mirovanja"
- IDS_2144 "OpenGL shaderi (*.GLSL)\0*.GLSL\0Sve datoteke (*.*)\0*.*\0"
- IDS_2145 "OpenGL opcije"
- IDS_2146 "UÄitavate nepodržanu konfiguraciju"
- IDS_2147 "Filtriranje tipa CPU-a na temelju odabranog sistema onemogućeno je za ovaj emulirani sistem.\n\nOvo omogućuje odabir procesora koji inaÄe nisu kompatibilne s odabranog sistem. MeÄ‘utim, možete naići na na nekompatibilnosti s BIOS-om sustava ili drugim softverom.\n\nOmogućavanje ove postavke nije službeno podržano i sva prijava o greÅ¡kama mogu biti zatvorena kao ""invalid""."
- IDS_2148 "Nastavi"
- IDS_2149 "Audio kaseta: %s"
- IDS_2150 "Slike audio kasete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Sve datoteke (*.*)\0*.*\0"
- IDS_2151 "Kaseta %i: %ls"
- IDS_2152 "Slike kasete (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Sve datoteke (*.*)\0*.*\0"
- IDS_2153 "Nije moguće inicijalizirati renderer"
- IDS_2154 "Nije moguće inicijalizirati OpenGL (3.0 jezgra) renderer. Molimte koristite drugi renderer."
- IDS_2155 "Nastavi"
- IDS_2156 "Pauziraj"
- IDS_2157 "Stisni Ctrl+Alt+Del"
- IDS_2158 "Stisni Ctrl+Alt+Esc"
- IDS_2159 "Ponovno pokretanje"
- IDS_2160 "ACPI bazirano gašenje"
- IDS_2161 "Postavke"
+ IDS_2144 "OpenGL shaderi (*.GLSL)\0*.GLSL\0Sve datoteke (*.*)\0*.*\0"
+ IDS_2145 "OpenGL opcije"
+ IDS_2146 "UÄitavate nepodržanu konfiguraciju"
+ IDS_2147 "Filtriranje tipa CPU-a na temelju odabranog sistema onemogućeno je za ovaj emulirani sistem.\n\nOvo omogućuje odabir procesora koji inaÄe nisu kompatibilne s odabranog sistem. MeÄ‘utim, možete naići na na nekompatibilnosti s BIOS-om sustava ili drugim softverom.\n\nOmogućavanje ove postavke nije službeno podržano i sva prijava o greÅ¡kama mogu biti zatvorena kao ""invalid""."
+ IDS_2148 "Nastavi"
+ IDS_2149 "Audio kaseta: %s"
+ IDS_2150 "Slike audio kasete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Sve datoteke (*.*)\0*.*\0"
+ IDS_2151 "Kaseta %i: %ls"
+ IDS_2152 "Slike kasete (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Sve datoteke (*.*)\0*.*\0"
+ IDS_2153 "Nije moguće inicijalizirati renderer"
+ IDS_2154 "Nije moguće inicijalizirati OpenGL (3.0 jezgra) renderer. Molimte koristite drugi renderer."
+ IDS_2155 "Nastavi"
+ IDS_2156 "Pauziraj"
+ IDS_2157 "Stisni Ctrl+Alt+Del"
+ IDS_2158 "Stisni Ctrl+Alt+Esc"
+ IDS_2159 "Ponovno pokretanje"
+ IDS_2160 "ACPI bazirano gašenje"
+ IDS_2161 "Postavke"
IDS_2162 "Raniji pogon"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Tvrdi disk (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL ili ESDI CD-ROM pogoni nisu nikada postojali"
- IDS_4100 "Prilagođeno..."
- IDS_4101 "Prilagođeno (veliko)..."
- IDS_4102 "Dodajte novi tvrdi disk"
- IDS_4103 "Dodajte postojeći tvrdi disk"
- IDS_4104 "HDI disk image datoteke ne mogu biti veće od 4 GB."
- IDS_4105 "Slike tvrdog diska ne mogu biti veće od 127 GB."
- IDS_4106 "Slike za tvrde diskove (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Sve datoteke (*.*)\0*.*\0"
- IDS_4107 "Nije moguće proÄitati datoteku"
- IDS_4108 "Nije moguće napisati datoteku"
- IDS_4109 "HDI ili HDX slike s veliÄinom sektora koja nije 512 kB nisu podržane."
- IDS_4110 "USB nije još podržano"
- IDS_4111 "Slika diska već postoji"
- IDS_4112 "Molimte unesite važeći naziv datoteke."
- IDS_4113 "Slika je stvorena"
- IDS_4114 "Provjerite je li postoji datoteka i je li Äitljiva."
- IDS_4115 "Provjerite je li se datoteka sprema u mapu s dopuštenjima za pisanje."
- IDS_4116 "Slika diska je prevelika"
- IDS_4117 "Ne zaboravite stvoriti particije i formatirati ih na novom disku."
- IDS_4118 "Odabrana datoteka bit će prebrisana. Jeste li sigurni da želite koristiti ovu daoteku?"
- IDS_4119 "Nepodržana slika diska"
- IDS_4120 "Prepiši"
- IDS_4121 "Ne prepiši"
- IDS_4122 "Slika neobrađenih podataka (.img)"
- IDS_4123 "HDI slika (.hdi)"
- IDS_4124 "HDX slika (.hdx)"
- IDS_4125 "VHD fiksne veliÄine (.vhd)"
- IDS_4126 "VHD dinamiÄke veliÄine (.vhd)"
- IDS_4127 "RazliÄiti VHD (.vhd)"
- IDS_4128 "Veliki blokovi (2 MB)"
- IDS_4129 "Mali blokovi (512 KB)"
- IDS_4130 "VHD slike (*.VHD)\0*.VHD\0Sve datoteke (*.*)\0*.*\0"
- IDS_4131 "Izaberi matiÄnu sliku VHD"
- IDS_4132 "To bi moglo znaÄiti da je matiÄna slika promijenjena nakon Å¡to je stvorena razliÄita slika.\n\nTo se takoÄ‘er može dogoditi ako su slike premjeÅ¡tene ili kopirane, ili greÅ¡ka u programu koji je stvorio ovaj disk.\n\nŽelite li popraviti vremenske oznake?"
- IDS_4133 "Vremenske ozanke matiÄne i poreÄ‘enog diska ne odgovaraju."
- IDS_4134 "Ne mogu popraviti vremensku oznaku slike VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL ili ESDI CD-ROM pogoni nisu nikada postojali"
+ IDS_4100 "Prilagođeno..."
+ IDS_4101 "Prilagođeno (veliko)..."
+ IDS_4102 "Dodajte novi tvrdi disk"
+ IDS_4103 "Dodajte postojeći tvrdi disk"
+ IDS_4104 "HDI disk image datoteke ne mogu biti veće od 4 GB."
+ IDS_4105 "Slike tvrdog diska ne mogu biti veće od 127 GB."
+ IDS_4106 "Slike za tvrde diskove (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Sve datoteke (*.*)\0*.*\0"
+ IDS_4107 "Nije moguće proÄitati datoteku"
+ IDS_4108 "Nije moguće napisati datoteku"
+ IDS_4109 "HDI ili HDX slike s veliÄinom sektora koja nije 512 kB nisu podržane."
+ IDS_4110 "USB nije još podržano"
+ IDS_4111 "Slika diska već postoji"
+ IDS_4112 "Molimte unesite važeći naziv datoteke."
+ IDS_4113 "Slika je stvorena"
+ IDS_4114 "Provjerite je li postoji datoteka i je li Äitljiva."
+ IDS_4115 "Provjerite je li se datoteka sprema u mapu s dopuštenjima za pisanje."
+ IDS_4116 "Slika diska je prevelika"
+ IDS_4117 "Ne zaboravite stvoriti particije i formatirati ih na novom disku."
+ IDS_4118 "Odabrana datoteka bit će prebrisana. Jeste li sigurni da želite koristiti ovu daoteku?"
+ IDS_4119 "Nepodržana slika diska"
+ IDS_4120 "Prepiši"
+ IDS_4121 "Ne prepiši"
+ IDS_4122 "Slika neobrađenih podataka (.img)"
+ IDS_4123 "HDI slika (.hdi)"
+ IDS_4124 "HDX slika (.hdx)"
+ IDS_4125 "VHD fiksne veliÄine (.vhd)"
+ IDS_4126 "VHD dinamiÄke veliÄine (.vhd)"
+ IDS_4127 "RazliÄiti VHD (.vhd)"
+ IDS_4128 "Veliki blokovi (2 MB)"
+ IDS_4129 "Mali blokovi (512 KB)"
+ IDS_4130 "VHD slike (*.VHD)\0*.VHD\0Sve datoteke (*.*)\0*.*\0"
+ IDS_4131 "Izaberi matiÄnu sliku VHD"
+ IDS_4132 "To bi moglo znaÄiti da je matiÄna slika promijenjena nakon Å¡to je stvorena razliÄita slika.\n\nTo se takoÄ‘er može dogoditi ako su slike premjeÅ¡tene ili kopirane, ili greÅ¡ka u programu koji je stvorio ovaj disk.\n\nŽelite li popraviti vremenske oznake?"
+ IDS_4133 "Vremenske ozanke matiÄne i poreÄ‘enog diska ne odgovaraju."
+ IDS_4134 "Ne mogu popraviti vremensku oznaku slike VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Deaktivirano"
- IDS_5381 "ATAPI"
+ IDS_5376 "Deaktivirano"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Deaktivirano"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Deaktivirano"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1,2 MB"
- IDS_5895 "1,25 MB"
- IDS_5896 "1,44 MB"
- IDS_5897 "DMF (1024 clusteri)"
- IDS_5898 "DMF (2048 clusteri)"
- IDS_5899 "2,88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3,5"" 128 MB (ISO 10090)"
- IDS_5903 "3,5"" 230 MB (ISO 13963)"
- IDS_5904 "3,5"" 540 MB (ISO 15498)"
- IDS_5905 "3,5"" 640 MB (ISO 15498)"
- IDS_5906 "3,5"" 1.3 GB (GigaMO)"
- IDS_5907 "3,5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5,25"" 600 MB"
- IDS_5909 "5,25"" 650 MB"
- IDS_5910 "5,25"" 1 GB"
- IDS_5911 "5,25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1,2 MB"
+ IDS_5895 "1,25 MB"
+ IDS_5896 "1,44 MB"
+ IDS_5897 "DMF (1024 clusteri)"
+ IDS_5898 "DMF (2048 clusteri)"
+ IDS_5899 "2,88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3,5"" 128 MB (ISO 10090)"
+ IDS_5903 "3,5"" 230 MB (ISO 13963)"
+ IDS_5904 "3,5"" 540 MB (ISO 15498)"
+ IDS_5905 "3,5"" 640 MB (ISO 15498)"
+ IDS_5906 "3,5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3,5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5,25"" 600 MB"
+ IDS_5909 "5,25"" 650 MB"
+ IDS_5910 "5,25"" 1 GB"
+ IDS_5911 "5,25"" 1.3 GB"
- IDS_6144 "Savršeni broj okretaja u minuti"
- IDS_6145 "1% ispod savršenog broja okretaja"
- IDS_6146 "1,5% ispod savršenog broja okretaja"
- IDS_6147 "2% ispod savršenog broja okretaja"
+ IDS_6144 "Savršeni broj okretaja u minuti"
+ IDS_6145 "1% ispod savršenog broja okretaja"
+ IDS_6146 "1,5% ispod savršenog broja okretaja"
+ IDS_6147 "2% ispod savršenog broja okretaja"
- IDS_7168 "(Zadana postavka operativnog sustava)"
+ IDS_7168 "(Zadana postavka operativnog sustava)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Croatian (hr-HR) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/hu-HU.rc b/src/win/languages/hu-HU.rc
index 81fc034c4..b08797ab9 100644
--- a/src/win/languages/hu-HU.rc
+++ b/src/win/languages/hu-HU.rc
@@ -18,122 +18,122 @@ LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Művelet"
BEGIN
- MENUITEM "A &billentyűzet elfogást igényel", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "A &jobb oldali CTRL a bal ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "A &billentyűzet elfogást igényel", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "A &jobb oldali CTRL a bal ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "Hardveres &újraindÃtás...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "Hardveres &újraindÃtás...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Szüneteltetés", IDM_ACTION_PAUSE
+ MENUITEM "&Szüneteltetés", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Kilépés...", IDM_ACTION_EXIT
+ MENUITEM "&Kilépés...", IDM_ACTION_EXIT
END
POPUP "&Nézet"
BEGIN
- MENUITEM "Ãllapotsor &elrejtése", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "Ãllapotsor &elrejtése", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&ÃtméretezhetÅ‘ ablak", IDM_VID_RESIZE
- MENUITEM "Méret és pozÃció &megjegyzése", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&ÃtméretezhetÅ‘ ablak", IDM_VID_RESIZE
+ MENUITEM "Méret és pozÃció &megjegyzése", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&MegjelenÃtÅ‘"
BEGIN
- MENUITEM "&SDL (Szoftveres)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardveres)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Szoftveres)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardveres)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Méretek kézi megadása...", IDM_VID_SPECIFY_DIM
- MENUITEM "&RögzÃtett 4:3 képarány", IDM_VID_FORCE43
+ MENUITEM "Méretek kézi megadása...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&RögzÃtett 4:3 képarány", IDM_VID_FORCE43
POPUP "&Ablak méretezési tényező"
BEGIN
- MENUITEM "&0,5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1,&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0,5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1,&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Szűrési mód"
BEGIN
- MENUITEM "&Szomszédos", IDM_VID_FILTER_NEAREST
- MENUITEM "&Lineáris", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Szomszédos", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Lineáris", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Hi&DPI méretezés", IDM_VID_HIDPI
+ MENUITEM "Hi&DPI méretezés", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Teljes képernyő\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Teljes képernyő\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Teljes képernyős &méretezés"
BEGIN
- MENUITEM "&Nyújtás a teljes képernyőre", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Nyújtás a teljes képernyőre", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Négyzetes képpontok (aránytartás)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Egész tényezÅ‘s nagyÃtás", IDM_VID_FS_INT
+ MENUITEM "&Egész tényezÅ‘s nagyÃtás", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGA beállÃtások"
BEGIN
- MENUITEM "&Invertált VGA kijelző", IDM_VID_INVERT
+ MENUITEM "&Invertált VGA kijelző", IDM_VID_INVERT
POPUP "VGA képernyÅ‘ &tÃpusa"
BEGIN
- MENUITEM "RGB &szÃnes", IDM_VID_GRAY_RGB
- MENUITEM "&RGB szürkeárnyalatos", IDM_VID_GRAY_MONO
- MENUITEM "&Gyömbér kijelző", IDM_VID_GRAY_AMBER
- MENUITEM "&Zöld kijelző", IDM_VID_GRAY_GREEN
- MENUITEM "&Fehér kijelző", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &szÃnes", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB szürkeárnyalatos", IDM_VID_GRAY_MONO
+ MENUITEM "&Gyömbér kijelző", IDM_VID_GRAY_AMBER
+ MENUITEM "&Zöld kijelző", IDM_VID_GRAY_GREEN
+ MENUITEM "&Fehér kijelző", IDM_VID_GRAY_WHITE
END
POPUP "Szürkéskála &konzerziós eljárás"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Ãtlag szerint", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Ãtlag szerint", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA túlpásztázás", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA túlpásztázás", IDM_VID_OVERSCAN
MENUITEM "Kontraszt illesztése &monokróm kijelzőhöz", IDM_VID_CGACON
END
- MENUITEM "&Média", IDM_MEDIA
+ MENUITEM "&Média", IDM_MEDIA
POPUP "&Eszközök"
BEGIN
- MENUITEM "&Konfigurálás...", IDM_CONFIG
- MENUITEM "Ãllapotsori ikonok &frissÃtése", IDM_UPDATE_ICONS
+ MENUITEM "&Konfigurálás...", IDM_CONFIG
+ MENUITEM "Ãllapotsori ikonok &frissÃtése", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "&KépernyÅ‘kép készÃtése\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "&KépernyÅ‘kép készÃtése\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&BeállÃtások...", IDM_PREFERENCES
+ 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
+ MENUITEM "&Hangerőszabályzó...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Nyomkövetés megkezdése\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Nyomkövetés befejezése\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Nyomkövetés megkezdése\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Nyomkövetés befejezése\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Súgó"
BEGIN
- MENUITEM "&Dokumentáció...", IDM_DOCS
- MENUITEM "A 86Box &névjegye...", IDM_ABOUT
+ MENUITEM "&Dokumentáció...", IDM_DOCS
+ MENUITEM "A 86Box &névjegye...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -142,17 +142,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Új képfájl létrehozása...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Új képfájl létrehozása...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Meglévő képfájl &megnyitása...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "Meglévő képfájl &megnyitása...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Felvétel", IDM_CASSETTE_RECORD
- MENUITEM "&Lejátszás", IDM_CASSETTE_PLAY
- MENUITEM "&Visszatekerés az elejére", IDM_CASSETTE_REWIND
- MENUITEM "&Előretekerés a végére", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Felvétel", IDM_CASSETTE_RECORD
+ MENUITEM "&Lejátszás", IDM_CASSETTE_PLAY
+ MENUITEM "&Visszatekerés az elejére", IDM_CASSETTE_REWIND
+ MENUITEM "&Előretekerés a végére", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "&Kiadás", IDM_CASSETTE_EJECT
+ MENUITEM "&Kiadás", IDM_CASSETTE_EJECT
END
END
@@ -160,9 +160,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "Kép&fájl...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "Kép&fájl...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "&Kiadás", IDM_CARTRIDGE_EJECT
+ MENUITEM "&Kiadás", IDM_CARTRIDGE_EJECT
END
END
@@ -170,14 +170,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Új képfájl létrehozása...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Új képfájl létrehozása...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Meglévő képfájl &megnyitása...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "Meglévő képfájl &megnyitása...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xportálás 86F formátumba...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xportálás 86F formátumba...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Kiadás", IDM_FLOPPY_EJECT
+ MENUITEM "&Kiadás", IDM_FLOPPY_EJECT
END
END
@@ -185,13 +185,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&NémÃtás", IDM_CDROM_MUTE
+ MENUITEM "&NémÃtás", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&Kiadás", IDM_CDROM_EMPTY
- MENUITEM "Előző képfájl &újratöltése", IDM_CDROM_RELOAD
+ MENUITEM "&Kiadás", IDM_CDROM_EMPTY
+ MENUITEM "Előző képfájl &újratöltése", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Meglévő képfájl &megnyitása...", IDM_CDROM_IMAGE
- MENUITEM "&Mappa...", IDM_CDROM_DIR
+ MENUITEM "&Meglévő képfájl &megnyitása...", IDM_CDROM_IMAGE
+ MENUITEM "&Mappa...", IDM_CDROM_DIR
END
END
@@ -199,13 +199,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Új képfájl létrehozása...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Új képfájl létrehozása...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Meglévő képfájl &megnyitása...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Meglévő képfájl &megnyitása...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "Kiadás", IDM_ZIP_EJECT
- MENUITEM "Előző képfájl &újratöltése", IDM_ZIP_RELOAD
+ MENUITEM "Kiadás", IDM_ZIP_EJECT
+ MENUITEM "Előző képfájl &újratöltése", IDM_ZIP_RELOAD
END
END
@@ -213,13 +213,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Új képfájl létrehozása...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Új képfájl létrehozása...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Meglévő képfájl &megnyitása...", IDM_MO_IMAGE_EXISTING
- MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Meglévő képfájl &megnyitása...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "MeglévÅ‘ képfájl megnyitása (&Ãrásvédett)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "Kiadás", IDM_MO_EJECT
- MENUITEM "Előző képfájl &újratöltése", IDM_MO_RELOAD
+ MENUITEM "Kiadás", IDM_MO_EJECT
+ MENUITEM "Előző képfájl &újratöltése", IDM_MO_RELOAD
END
END
@@ -245,150 +245,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "BeállÃtások"
-#define STR_SND_GAIN "Hangerőszabályzó"
-#define STR_NEW_FLOPPY "Új képfájl létrehozása"
-#define STR_CONFIG "Konfigurálás"
-#define STR_SPECIFY_DIM "Főablak méreteinek megadása"
+#define STR_PREFERENCES "BeállÃtások"
+#define STR_SND_GAIN "Hangerőszabályzó"
+#define STR_NEW_FLOPPY "Új képfájl létrehozása"
+#define STR_CONFIG "Konfigurálás"
+#define STR_SPECIFY_DIM "Főablak méreteinek megadása"
-#define STR_OK "OK"
-#define STR_CANCEL "Mégse"
-#define STR_GLOBAL "BeállÃtások mentése &globális alapértékként"
-#define STR_DEFAULT "&Alapértelmezett"
-#define STR_LANGUAGE "Nyelv:"
-#define STR_ICONSET "Ikonkészlet:"
+#define STR_OK "OK"
+#define STR_CANCEL "Mégse"
+#define STR_GLOBAL "BeállÃtások mentése &globális alapértékként"
+#define STR_DEFAULT "&Alapértelmezett"
+#define STR_LANGUAGE "Nyelv:"
+#define STR_ICONSET "Ikonkészlet:"
-#define STR_GAIN "Hangerő"
+#define STR_GAIN "Hangerő"
-#define STR_FILE_NAME "Fájlnév:"
-#define STR_DISK_SIZE "Méret:"
-#define STR_RPM_MODE "RPM-mód:"
-#define STR_PROGRESS "Folyamat:"
+#define STR_FILE_NAME "Fájlnév:"
+#define STR_DISK_SIZE "Méret:"
+#define STR_RPM_MODE "RPM-mód:"
+#define STR_PROGRESS "Folyamat:"
-#define STR_WIDTH "Szélesség:"
-#define STR_HEIGHT "Magasság:"
-#define STR_LOCK_TO_SIZE "RögzÃtés a megadott méretre"
+#define STR_WIDTH "Szélesség:"
+#define STR_HEIGHT "Magasság:"
+#define STR_LOCK_TO_SIZE "RögzÃtés a megadott méretre"
-#define STR_MACHINE_TYPE "GéptÃpus:"
-#define STR_MACHINE "SzámÃtógép:"
-#define STR_CONFIGURE "BeállÃtások..."
-#define STR_CPU_TYPE "Processzor:"
-#define STR_CPU_SPEED "Seb.:"
-#define STR_FPU "FPU-egység:"
-#define STR_WAIT_STATES "Várak. ciklusok:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memória:"
-#define STR_TIME_SYNC "Idő szinkronizáció"
-#define STR_DISABLED "Letiltva"
-#define STR_ENABLED_LOCAL "Engedélyezve (helyi idő)"
-#define STR_ENABLED_UTC "Engedélyezve (UTC)"
-#define STR_DYNAREC "Dinamikus újrafordÃtás"
+#define STR_MACHINE_TYPE "GéptÃpus:"
+#define STR_MACHINE "SzámÃtógép:"
+#define STR_CONFIGURE "BeállÃtások..."
+#define STR_CPU_TYPE "Processzor:"
+#define STR_CPU_SPEED "Seb.:"
+#define STR_FPU "FPU-egység:"
+#define STR_WAIT_STATES "Várak. ciklusok:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memória:"
+#define STR_TIME_SYNC "Idő szinkronizáció"
+#define STR_DISABLED "Letiltva"
+#define STR_ENABLED_LOCAL "Engedélyezve (helyi idő)"
+#define STR_ENABLED_UTC "Engedélyezve (UTC)"
+#define STR_DYNAREC "Dinamikus újrafordÃtás"
-#define STR_VIDEO "Videokártya:"
-#define STR_VIDEO_2 "Videokártya 2:"
-#define STR_VOODOO "Voodoo-gyorsÃtókártya"
-#define STR_IBM8514 "IBM 8514/a-gyorsÃtókártya"
-#define STR_XGA "XGA-gyorsÃtókártya"
+#define STR_VIDEO "Videokártya:"
+#define STR_VIDEO_2 "Videokártya 2:"
+#define STR_VOODOO "Voodoo-gyorsÃtókártya"
+#define STR_IBM8514 "IBM 8514/a-gyorsÃtókártya"
+#define STR_XGA "XGA-gyorsÃtókártya"
-#define STR_MOUSE "Egér:"
-#define STR_JOYSTICK "Játékvezérlő:"
-#define STR_JOY1 "Játékvez. 1..."
-#define STR_JOY2 "Játékvez. 2..."
-#define STR_JOY3 "Játékvez. 3..."
-#define STR_JOY4 "Játékvez. 4..."
+#define STR_MOUSE "Egér:"
+#define STR_JOYSTICK "Játékvezérlő:"
+#define STR_JOY1 "Játékvez. 1..."
+#define STR_JOY2 "Játékvez. 2..."
+#define STR_JOY3 "Játékvez. 3..."
+#define STR_JOY4 "Játékvez. 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "COM3 eszköz:"
-#define STR_COM4 "COM4 eszköz:"
-#define STR_LPT1 "LPT1 eszköz:"
-#define STR_LPT2 "LPT2 eszköz:"
-#define STR_LPT3 "LPT3 eszköz:"
-#define STR_LPT4 "LPT4 eszköz:"
-#define STR_SERIAL1 "Soros port 1"
-#define STR_SERIAL2 "Soros port 2"
-#define STR_SERIAL3 "Soros port 3"
-#define STR_SERIAL4 "Soros port 4"
-#define STR_PARALLEL1 "Párhuzamos port 1"
-#define STR_PARALLEL2 "Párhuzamos port 2"
-#define STR_PARALLEL3 "Párhuzamos port 3"
-#define STR_PARALLEL4 "Párhuzamos port 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1 eszköz:"
+#define STR_COM2 "COM2 eszköz:"
+#define STR_COM3 "COM3 eszköz:"
+#define STR_COM4 "COM4 eszköz:"
+#define STR_LPT1 "LPT1 eszköz:"
+#define STR_LPT2 "LPT2 eszköz:"
+#define STR_LPT3 "LPT3 eszköz:"
+#define STR_LPT4 "LPT4 eszköz:"
+#define STR_SERIAL1 "Soros port 1"
+#define STR_SERIAL2 "Soros port 2"
+#define STR_SERIAL3 "Soros port 3"
+#define STR_SERIAL4 "Soros port 4"
+#define STR_PARALLEL1 "Párhuzamos port 1"
+#define STR_PARALLEL2 "Párhuzamos port 2"
+#define STR_PARALLEL3 "Párhuzamos port 3"
+#define STR_PARALLEL4 "Párhuzamos port 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Merevl.-vezérlő:"
-#define STR_FDC "Floppy-vezérlő:"
-#define STR_IDE_TER "Harmadlagos IDE-vezérlő"
-#define STR_IDE_QUA "Negyedleges IDE-vezérlő"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Gazdaadapt. 1:"
-#define STR_SCSI_2 "Gazdaadapt. 2:"
-#define STR_SCSI_3 "Gazdaadapt. 3:"
-#define STR_SCSI_4 "Gazdaadapt. 4:"
-#define STR_CASSETTE "Magnókazetta"
+#define STR_HDC "Merevl.-vezérlő:"
+#define STR_FDC "Floppy-vezérlő:"
+#define STR_IDE_TER "Harmadlagos IDE-vezérlő"
+#define STR_IDE_QUA "Negyedleges IDE-vezérlő"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Gazdaadapt. 1:"
+#define STR_SCSI_2 "Gazdaadapt. 2:"
+#define STR_SCSI_3 "Gazdaadapt. 3:"
+#define STR_SCSI_4 "Gazdaadapt. 4:"
+#define STR_CASSETTE "Magnókazetta"
-#define STR_HDD "Merevlemezek:"
-#define STR_NEW "&Új..."
-#define STR_EXISTING "&Megnyitás..."
-#define STR_REMOVE "&EltávolÃtás"
-#define STR_BUS "Busz:"
-#define STR_CHANNEL "Csatorna:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Merevlemezek:"
+#define STR_NEW "&Új..."
+#define STR_EXISTING "&Megnyitás..."
+#define STR_REMOVE "&EltávolÃtás"
+#define STR_BUS "Busz:"
+#define STR_CHANNEL "Csatorna:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Kiválasztás..."
-#define STR_SECTORS "Szektor:"
-#define STR_HEADS "Fej:"
-#define STR_CYLS "Cilinder:"
-#define STR_SIZE_MB "Méret (MB):"
-#define STR_TYPE "TÃpus:"
-#define STR_IMG_FORMAT "Formátum:"
-#define STR_BLOCK_SIZE "Blokkméret:"
+#define STR_SPECIFY "&Kiválasztás..."
+#define STR_SECTORS "Szektor:"
+#define STR_HEADS "Fej:"
+#define STR_CYLS "Cilinder:"
+#define STR_SIZE_MB "Méret (MB):"
+#define STR_TYPE "TÃpus:"
+#define STR_IMG_FORMAT "Formátum:"
+#define STR_BLOCK_SIZE "Blokkméret:"
-#define STR_FLOPPY_DRIVES "Floppy-meghajtók:"
-#define STR_TURBO "Turbó idÅ‘zÃtés"
-#define STR_CHECKBPB "BPB ellenőrzés"
-#define STR_CDROM_DRIVES "CD-ROM meghajtók:"
-#define STR_CD_SPEED "Seb.:"
-#define STR_EARLY "Korábbi meghajtó"
+#define STR_FLOPPY_DRIVES "Floppy-meghajtók:"
+#define STR_TURBO "Turbó idÅ‘zÃtés"
+#define STR_CHECKBPB "BPB ellenőrzés"
+#define STR_CDROM_DRIVES "CD-ROM meghajtók:"
+#define STR_CD_SPEED "Seb.:"
+#define STR_EARLY "Korábbi meghajtó"
-#define STR_MO_DRIVES "MO-meghajtók:"
-#define STR_ZIP_DRIVES "ZIP-meghajtók:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "MO-meghajtók:"
+#define STR_ZIP_DRIVES "ZIP-meghajtók:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC (óra):"
-#define STR_ISAMEM "ISA memóriabÅ‘vÃtÅ‘k"
-#define STR_ISAMEM_1 "Kártya 1:"
-#define STR_ISAMEM_2 "Kártya 2:"
-#define STR_ISAMEM_3 "Kártya 3:"
-#define STR_ISAMEM_4 "Kártya 4:"
-#define STR_BUGGER "ISABugger eszköz"
-#define STR_POSTCARD "POST kártya"
+#define STR_ISARTC "ISA RTC (óra):"
+#define STR_ISAMEM "ISA memóriabÅ‘vÃtÅ‘k"
+#define STR_ISAMEM_1 "Kártya 1:"
+#define STR_ISAMEM_2 "Kártya 2:"
+#define STR_ISAMEM_3 "Kártya 3:"
+#define STR_ISAMEM_4 "Kártya 4:"
+#define STR_BUGGER "ISABugger eszköz"
+#define STR_POSTCARD "POST kártya"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -397,198 +397,199 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Hiba"
- IDS_2050 "Végzetes hiba"
- IDS_2051 " - PAUSED"
- IDS_2052 "Használja a Ctrl+Alt+PgDn gombokat az ablakhoz való visszatéréshez."
- IDS_2053 "Sebesség"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP-lemezképek (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "A 86Box nem talált használható ROM-képeket\n\nKérem töltse le a ROM készletet és bontsa ki a ""roms"" könyvtárba."
- IDS_2057 "(üres)"
- IDS_2058 "ZIP-lemezképek (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Minden fájl (*.*)\0*.*\0"
- IDS_2059 "Turbó"
- IDS_2060 "Bekapcsolva"
- IDS_2061 "Kikapcsolva"
- IDS_2062 "Minden képfájl (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Alapvető szektor képfájlok (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Felületi képfájlok (*.86F)\0*.86F\0"
- IDS_2063 "A számÃtógép ""%hs"" nem elérhetÅ‘ a ""roms/machines"" mappából hiányzó ROM-képek miatt. Ehelyett egy másik gép kerül futtatásra."
+ 2048 "86Box"
+ IDS_2049 "Hiba"
+ IDS_2050 "Végzetes hiba"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Használja a Ctrl+Alt+PgDn gombokat az ablakhoz való visszatéréshez."
+ IDS_2053 "Sebesség"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP-lemezképek (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "A 86Box nem talált használható ROM-képeket\n\nKérem töltse le a ROM készletet és bontsa ki a ""roms"" könyvtárba."
+ IDS_2057 "(üres)"
+ IDS_2058 "ZIP-lemezképek (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Minden fájl (*.*)\0*.*\0"
+ IDS_2059 "Turbó"
+ IDS_2060 "Bekapcsolva"
+ IDS_2061 "Kikapcsolva"
+ IDS_2062 "Minden képfájl (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Alapvető szektor képfájlok (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Felületi képfájlok (*.86F)\0*.86F\0"
+ IDS_2063 "A számÃtógép ""%hs"" nem elérhetÅ‘ a ""roms/machines"" mappából hiányzó ROM-képek miatt. Ehelyett egy másik gép kerül futtatásra."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "A videokártya ""%hs"" nem elérhető a ""roms/video"" mappából hiányzó ROM-képek miatt. Ehelyett egy másik kártya kerül futtatásra."
- IDS_2065 "SzámÃtógép"
- IDS_2066 "MegjelenÃtÅ‘"
- IDS_2067 "Beviteli eszközök"
- IDS_2068 "Hang"
- IDS_2069 "Hálózat"
- IDS_2070 "Portok (COM és LPT)"
- IDS_2071 "Tárolóvezérlők"
- IDS_2072 "Merevlemezek"
- IDS_2073 "Floppy és CD-ROM meghajtók"
- IDS_2074 "Egyéb cserélhető tárolók"
- IDS_2075 "Egyéb perifériák"
- IDS_2076 "Felületi képfájlok (*.86F)\0*.86F\0"
- IDS_2077 "Kattintson az egér elfogásához"
- IDS_2078 "Nyomja meg az F8+F12-t az egér elengédéséhez"
- IDS_2079 "Nyomja meg az F8+F12-t vagy a középső gombot az egér elengédéséhez"
+ IDS_2064 "A videokártya ""%hs"" nem elérhető a ""roms/video"" mappából hiányzó ROM-képek miatt. Ehelyett egy másik kártya kerül futtatásra."
+ IDS_2065 "SzámÃtógép"
+ IDS_2066 "MegjelenÃtÅ‘"
+ IDS_2067 "Beviteli eszközök"
+ IDS_2068 "Hang"
+ IDS_2069 "Hálózat"
+ IDS_2070 "Portok (COM és LPT)"
+ IDS_2071 "Tárolóvezérlők"
+ IDS_2072 "Merevlemezek"
+ IDS_2073 "Floppy és CD-ROM meghajtók"
+ IDS_2074 "Egyéb cserélhető tárolók"
+ IDS_2075 "Egyéb perifériák"
+ IDS_2076 "Felületi képfájlok (*.86F)\0*.86F\0"
+ IDS_2077 "Kattintson az egér elfogásához"
+ IDS_2078 "Nyomja meg az F8+F12-t az egér elengédéséhez"
+ IDS_2079 "Nyomja meg az F8+F12-t vagy a középső gombot az egér elengédéséhez"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Nem sikerült a FluidSynth inicializálása"
- IDS_2081 "Busz"
- IDS_2082 "Fájl"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Nem sikerült a FluidSynth inicializálása"
+ IDS_2081 "Busz"
+ IDS_2082 "Fájl"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "BPB ellenőrzése"
- IDS_2089 "KB"
- IDS_2090 "Nem sikerült inicializálni a videó megjelenÃtÅ‘t."
- IDS_2091 "Alapértelmezett"
- IDS_2092 "%i várakozási ciklus(ok)"
- IDS_2093 "TÃpus"
- IDS_2094 "Nem sikerült a PCap beállÃtása"
- IDS_2095 "Nem találhatóak PCap eszközök"
- IDS_2096 "Érvénytelen PCap eszköz"
- IDS_2097 "Szabványos 2-gombos játékvezérlő(k)"
- IDS_2098 "Szabványos 4-gombos játékvezérlő"
- IDS_2099 "Szabványos 6-gombos játékvezérlő"
- IDS_2100 "Szabványos 8-gombos játékvezérlő"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Nincs"
- IDS_2105 "Nem lehet betölteni a billentyűzetgyorsÃtókat."
- IDS_2106 "A közvetlen nyers bevitel regisztrálása nem sikerült."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Floppy %i (%s): %ls"
- IDS_2110 "Minden képfájl (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Továbbfejlesztett szektor képek (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Alapvető szektor képek (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux képekfájlok (*.FDI)\0*.FDI\0Felületi képfájlok (*.86F;*.MFM)\0*.86F;*.MFM\0Minden fájl (*.*)\0*.*\0"
- IDS_2111 "A FreeType inicializálása nem lehetséges"
- IDS_2112 "Az SDL inicializálása nem lehetséges, az SDL2.dll fájl szükséges"
- IDS_2113 "Biztosan szeretné újraindÃtani az emulált gépet?"
- IDS_2114 "Biztos benne, hogy ki szeretne lépni a 86Box-ból?"
- IDS_2115 "Nem sikerült inicializálni a Ghostscript-et"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "MO-képfájlok (*.IM?;*.MDI)\0*.IM?;*.MDI\0Minden fájl (*.*)\0*.*\0"
- IDS_2118 "Üdvözli önt az 86Box!"
- IDS_2119 "Integrált vezérlő"
- IDS_2120 "Kilépés"
- IDS_2121 "Nem találhatóak meg a ROM-képek"
- IDS_2122 "Szeretné menteni a beállÃtásokat?"
- IDS_2123 "Ezzel hardveresen újraindÃtja az emulált gépet."
- IDS_2124 "Mentés"
- IDS_2125 "A 86Box névjegye"
- IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Régi számÃtógépek emulátora\n\nFejlesztÅ‘k: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nFordÃtotta: Laci bá'\n\nMegjelent a GNU General Public License v2 vagy újabb alatt. További információért lásd a LICENSE fájlt."
- IDS_2128 "OK"
- IDS_2129 "Hardver nem elérhető"
+ IDS_2088 "BPB ellenőrzése"
+ IDS_2089 "KB"
+ IDS_2090 "Nem sikerült inicializálni a videó megjelenÃtÅ‘t."
+ IDS_2091 "Alapértelmezett"
+ IDS_2092 "%i várakozási ciklus(ok)"
+ IDS_2093 "TÃpus"
+ IDS_2094 "Nem sikerült a PCap beállÃtása"
+ IDS_2095 "Nem találhatóak PCap eszközök"
+ IDS_2096 "Érvénytelen PCap eszköz"
+ IDS_2097 "Szabványos 2-gombos játékvezérlő(k)"
+ IDS_2098 "Szabványos 4-gombos játékvezérlő"
+ IDS_2099 "Szabványos 6-gombos játékvezérlő"
+ IDS_2100 "Szabványos 8-gombos játékvezérlő"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Nincs"
+ IDS_2105 "Nem lehet betölteni a billentyűzetgyorsÃtókat."
+ IDS_2106 "A közvetlen nyers bevitel regisztrálása nem sikerült."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Floppy %i (%s): %ls"
+ IDS_2110 "Minden képfájl (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Továbbfejlesztett szektor képek (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Alapvető szektor képek (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux képekfájlok (*.FDI)\0*.FDI\0Felületi képfájlok (*.86F;*.MFM)\0*.86F;*.MFM\0Minden fájl (*.*)\0*.*\0"
+ IDS_2111 "A FreeType inicializálása nem lehetséges"
+ IDS_2112 "Az SDL inicializálása nem lehetséges, az SDL2.dll fájl szükséges"
+ IDS_2113 "Biztosan szeretné újraindÃtani az emulált gépet?"
+ IDS_2114 "Biztos benne, hogy ki szeretne lépni a 86Box-ból?"
+ IDS_2115 "Nem sikerült inicializálni a Ghostscript-et"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "MO-képfájlok (*.IM?;*.MDI)\0*.IM?;*.MDI\0Minden fájl (*.*)\0*.*\0"
+ IDS_2118 "Üdvözli önt az 86Box!"
+ IDS_2119 "Integrált vezérlő"
+ IDS_2120 "Kilépés"
+ IDS_2121 "Nem találhatóak meg a ROM-képek"
+ IDS_2122 "Szeretné menteni a beállÃtásokat?"
+ IDS_2123 "Ezzel hardveresen újraindÃtja az emulált gépet."
+ IDS_2124 "Mentés"
+ IDS_2125 "A 86Box névjegye"
+ IDS_2126 "86Box v" EMU_VERSION
+ IDS_2127 "Régi számÃtógépek emulátora\n\nFejlesztÅ‘k: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nFordÃtotta: Laci bá'\n\nMegjelent a GNU General Public License v2 vagy újabb alatt. További információért lásd a LICENSE fájlt."
+ IDS_2128 "OK"
+ IDS_2129 "Hardver nem elérhető"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "GyÅ‘zÅ‘djön meg hogy a(z) " LIB_NAME_PCAP " telepÃtve van és jelenleg a " LIB_NAME_PCAP "-kompatibilis kapcsolatot használja."
- IDS_2131 "Érvénytelen konfiguráció"
+ IDS_2130 "GyÅ‘zÅ‘djön meg hogy a(z) " LIB_NAME_PCAP " telepÃtve van és jelenleg a " LIB_NAME_PCAP "-kompatibilis kapcsolatot használja."
+ IDS_2131 "Érvénytelen konfiguráció"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " szükséges az ESC/P nyomtató emulációhoz."
+ IDS_2132 LIB_NAME_FREETYPE " szükséges az ESC/P nyomtató emulációhoz."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " szükséges a PostScript fájlok PDF formátumba való automatikus konvertálásához.\n\nAz általános PostScript nyomtatóra küldött dokumentumok PostScript (.ps) fájlként kerülnek mentésre."
+ IDS_2133 LIB_NAME_GS " szükséges a PostScript fájlok PDF formátumba való automatikus konvertálásához.\n\nAz általános PostScript nyomtatóra küldött dokumentumok PostScript (.ps) fájlként kerülnek mentésre."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " szükséges a FluidSynth MIDI kimenethez."
- IDS_2135 "Teljes képernyős módra váltás"
- IDS_2136 "Ne jelenÃtse meg újra ezt az üzenetet "
- IDS_2137 "Ne lépjen ki"
- IDS_2138 "ÚjraindÃtás"
- IDS_2139 "Ne indÃtsa újra"
- IDS_2140 "MO-képfájlok (*.IM?;*.MDI)\0*.IM?;*.MDI\0Minden fájl (*.*)\0*.*\0"
- IDS_2141 "CD-ROM-képek (*.ISO;*.CUE)\0*.ISO;*.CUE\0Minden fájl (*.*)\0*.*\0"
- IDS_2142 "%hs eszközkonfiguráció"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " szükséges a FluidSynth MIDI kimenethez."
+ IDS_2135 "Teljes képernyős módra váltás"
+ IDS_2136 "Ne jelenÃtse meg újra ezt az üzenetet "
+ IDS_2137 "Ne lépjen ki"
+ IDS_2138 "ÚjraindÃtás"
+ IDS_2139 "Ne indÃtsa újra"
+ IDS_2140 "MO-képfájlok (*.IM?;*.MDI)\0*.IM?;*.MDI\0Minden fájl (*.*)\0*.*\0"
+ IDS_2141 "CD-ROM-képek (*.ISO;*.CUE)\0*.ISO;*.CUE\0Minden fájl (*.*)\0*.*\0"
+ IDS_2142 "%hs eszközkonfiguráció"
IDS_2143 "Képernyő alvó módban"
- IDS_2144 "OpenGL Shaderek (*.GLSL)\0*.GLSL\0Minden fájl (*.*)\0*.*\0"
- IDS_2145 "OpenGL beállÃtások"
- IDS_2146 "Egy nem támogatott konfigurációt tölt be"
- IDS_2147 "A kiválasztott gépen alapuló CPU-tÃpusszűrés le van tiltva ezen az emulált gépen.\n\nEz lehetÅ‘vé teszi olyan CPU kiválasztását, amely egyébként nem kompatibilis a kiválasztott géppel. ElÅ‘fordulhat azonban, hogy nem kompatibilis a gép BIOS-ával vagy más szoftverekkel.\n\nA beállÃtás engedélyezése hivatalosan nem támogatott, és a benyújtott hibajelentéseket érvénytelenként lezárhatjuk."
- IDS_2148 "Folytatás"
- IDS_2149 "Magnókazetta: %s"
- IDS_2150 "Magnókazetta-képek (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Minden fájl (*.*)\0*.*\0"
- IDS_2151 "ROM-kazetta %i: %ls"
- IDS_2152 "ROM-kazetta képek (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Minden fájl (*.*)\0*.*\0"
- IDS_2153 "Hiba történt a renderelő inicializálásakor"
- IDS_2154 "Az OpenGL (3.0 Core) megjelenÃtÅ‘-motort nem sikerült inicializálni. Kérem használjon másik renderelÅ‘t."
- IDS_2155 "Resume execution"
- IDS_2156 "Pause execution"
- IDS_2157 "Press Ctrl+Alt+Del"
- IDS_2158 "Press Ctrl+Alt+Esc"
- IDS_2159 "Hard reset"
- IDS_2160 "ACPI shutdown"
- IDS_2161 "Settings"
+ IDS_2144 "OpenGL Shaderek (*.GLSL)\0*.GLSL\0Minden fájl (*.*)\0*.*\0"
+ IDS_2145 "OpenGL beállÃtások"
+ IDS_2146 "Egy nem támogatott konfigurációt tölt be"
+ IDS_2147 "A kiválasztott gépen alapuló CPU-tÃpusszűrés le van tiltva ezen az emulált gépen.\n\nEz lehetÅ‘vé teszi olyan CPU kiválasztását, amely egyébként nem kompatibilis a kiválasztott géppel. ElÅ‘fordulhat azonban, hogy nem kompatibilis a gép BIOS-ával vagy más szoftverekkel.\n\nA beállÃtás engedélyezése hivatalosan nem támogatott, és a benyújtott hibajelentéseket érvénytelenként lezárhatjuk."
+ IDS_2148 "Folytatás"
+ IDS_2149 "Magnókazetta: %s"
+ IDS_2150 "Magnókazetta-képek (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Minden fájl (*.*)\0*.*\0"
+ IDS_2151 "ROM-kazetta %i: %ls"
+ IDS_2152 "ROM-kazetta képek (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Minden fájl (*.*)\0*.*\0"
+ IDS_2153 "Hiba történt a renderelő inicializálásakor"
+ IDS_2154 "Az OpenGL (3.0 Core) megjelenÃtÅ‘-motort nem sikerült inicializálni. Kérem használjon másik renderelÅ‘t."
+ IDS_2155 "Resume execution"
+ IDS_2156 "Pause execution"
+ IDS_2157 "Press Ctrl+Alt+Del"
+ IDS_2158 "Press Ctrl+Alt+Esc"
+ IDS_2159 "Hard reset"
+ IDS_2160 "ACPI shutdown"
+ IDS_2161 "Settings"
IDS_2162 "Korábbi meghajtó"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Merevlemez (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL vagy ESDI CD-ROM meghajtók soha nem léteztek"
- IDS_4100 "Egyéni..."
- IDS_4101 "Egyéni (nagy)..."
- IDS_4102 "Új merevlemez hozzáadása"
- IDS_4103 "Meglévő merevlemez hozzáadása"
- IDS_4104 "A HDI lemezképek nem lehetnek nagyobbak 4 GB-nál."
- IDS_4105 "A lemezképek mérete nem haladhatja meg a 127 GB-ot."
- IDS_4106 "Merevlemez-képfájlok (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Minden fájl (*.*)\0*.*\0"
- IDS_4107 "A fájl nem olvasható"
- IDS_4108 "A fájl nem Ãrható"
- IDS_4109 "Az 512-től eltérő szektorméretű HDI vagy HDX képek nem támogatottak."
- IDS_4110 "Az USB még nem támogatott"
- IDS_4111 "A lemezképfájl már létezik"
- IDS_4112 "Adjon meg egy érvényes fájlnevet."
- IDS_4113 "A lemezképfájl létrehozásra került"
- IDS_4114 "Győződjön meg arról, hogy a fájl létezik és olvasható."
- IDS_4115 "GyÅ‘zÅ‘djön meg arról, hogy a fájlt egy Ãrható könyvtárba menti."
- IDS_4116 "A lemezképfájl túl nagy"
- IDS_4117 "Ne felejtse el particionálni és formázni az újonnan létrehozott meghajtót."
- IDS_4118 "A kiválasztott fájl felülÃrásra kerül. Biztos, hogy ezt kÃvánja használni?"
- IDS_4119 "Nem támogatott lemezkép"
- IDS_4120 "FelülÃrás"
- IDS_4121 "Ne Ãrja felül"
- IDS_4122 "Nyers lemezkép (.img)"
- IDS_4123 "HDI-lemezkép (.hdi)"
- IDS_4124 "HDX-lemezkép (.hdx)"
- IDS_4125 "RögzÃtett méretű VHD (.vhd)"
- IDS_4126 "Dinamikusan bővülő VHD (.vhd)"
- IDS_4127 "Különbség-VHD (.vhd)"
- IDS_4128 "Nagy blokkméret (2 MB)"
- IDS_4129 "Kis blokkméret (512 KB)"
- IDS_4130 "VHD fájlok (*.VHD)\0*.VHD\0Minden fájl (*.*)\0*.*\0"
- IDS_4131 "Válassza ki a szülő VHD-t"
- IDS_4132 "Ez azt jelentheti, hogy a szülÅ‘kép módosult az eltérÅ‘ kép létrehozása után.\n\nEz akkor is elÅ‘fordulhat, ha a képfájlokat áthelyezték vagy másolták, vagy a lemezt létrehozó program hibája miatt.\n\nSzeretné kijavÃtani az idÅ‘bélyegeket?"
- IDS_4133 "A szülő- és a gyermeklemez időbélyegei nem egyeznek"
- IDS_4134 "Nem sikerült kijavÃtani a VHD idÅ‘bélyegét."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL vagy ESDI CD-ROM meghajtók soha nem léteztek"
+ IDS_4100 "Egyéni..."
+ IDS_4101 "Egyéni (nagy)..."
+ IDS_4102 "Új merevlemez hozzáadása"
+ IDS_4103 "Meglévő merevlemez hozzáadása"
+ IDS_4104 "A HDI lemezképek nem lehetnek nagyobbak 4 GB-nál."
+ IDS_4105 "A lemezképek mérete nem haladhatja meg a 127 GB-ot."
+ IDS_4106 "Merevlemez-képfájlok (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Minden fájl (*.*)\0*.*\0"
+ IDS_4107 "A fájl nem olvasható"
+ IDS_4108 "A fájl nem Ãrható"
+ IDS_4109 "Az 512-től eltérő szektorméretű HDI vagy HDX képek nem támogatottak."
+ IDS_4110 "Az USB még nem támogatott"
+ IDS_4111 "A lemezképfájl már létezik"
+ IDS_4112 "Adjon meg egy érvényes fájlnevet."
+ IDS_4113 "A lemezképfájl létrehozásra került"
+ IDS_4114 "Győződjön meg arról, hogy a fájl létezik és olvasható."
+ IDS_4115 "GyÅ‘zÅ‘djön meg arról, hogy a fájlt egy Ãrható könyvtárba menti."
+ IDS_4116 "A lemezképfájl túl nagy"
+ IDS_4117 "Ne felejtse el particionálni és formázni az újonnan létrehozott meghajtót."
+ IDS_4118 "A kiválasztott fájl felülÃrásra kerül. Biztos, hogy ezt kÃvánja használni?"
+ IDS_4119 "Nem támogatott lemezkép"
+ IDS_4120 "FelülÃrás"
+ IDS_4121 "Ne Ãrja felül"
+ IDS_4122 "Nyers lemezkép (.img)"
+ IDS_4123 "HDI-lemezkép (.hdi)"
+ IDS_4124 "HDX-lemezkép (.hdx)"
+ IDS_4125 "RögzÃtett méretű VHD (.vhd)"
+ IDS_4126 "Dinamikusan bővülő VHD (.vhd)"
+ IDS_4127 "Különbség-VHD (.vhd)"
+ IDS_4128 "Nagy blokkméret (2 MB)"
+ IDS_4129 "Kis blokkméret (512 KB)"
+ IDS_4130 "VHD fájlok (*.VHD)\0*.VHD\0Minden fájl (*.*)\0*.*\0"
+ IDS_4131 "Válassza ki a szülő VHD-t"
+ IDS_4132 "Ez azt jelentheti, hogy a szülÅ‘kép módosult az eltérÅ‘ kép létrehozása után.\n\nEz akkor is elÅ‘fordulhat, ha a képfájlokat áthelyezték vagy másolták, vagy a lemezt létrehozó program hibája miatt.\n\nSzeretné kijavÃtani az idÅ‘bélyegeket?"
+ IDS_4133 "A szülő- és a gyermeklemez időbélyegei nem egyeznek"
+ IDS_4134 "Nem sikerült kijavÃtani a VHD idÅ‘bélyegét."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -597,56 +598,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Letiltva"
- IDS_5381 "ATAPI"
+ IDS_5376 "Letiltva"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Letiltva"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Letiltva"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (1024 klaszter)"
- IDS_5898 "DMF (2048 klaszter)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (1024 klaszter)"
+ IDS_5898 "DMF (2048 klaszter)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "Tökéletes RPM"
- IDS_6145 "1%-kal a tökéletes RPM alatt"
- IDS_6146 "1.5%-kal a tökéletes RPM alatt"
- IDS_6147 "2%-kal a tökéletes RPM alatt"
+ IDS_6144 "Tökéletes RPM"
+ IDS_6145 "1%-kal a tökéletes RPM alatt"
+ IDS_6146 "1.5%-kal a tökéletes RPM alatt"
+ IDS_6147 "2%-kal a tökéletes RPM alatt"
- IDS_7168 "(A rendszer nyelve)"
+ IDS_7168 "(A rendszer nyelve)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Hungarian resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/it-IT.rc b/src/win/languages/it-IT.rc
index fd0441232..0790813a0 100644
--- a/src/win/languages/it-IT.rc
+++ b/src/win/languages/it-IT.rc
@@ -14,122 +14,122 @@ LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Azione"
BEGIN
- MENUITEM "&Tastiera richiede la cattura", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&CTRL destro è ALT sinistro", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Tastiera richiede la cattura", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&CTRL destro è ALT sinistro", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Riavvia...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Riavvia...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pausa", IDM_ACTION_PAUSE
+ MENUITEM "&Pausa", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "E&sci...", IDM_ACTION_EXIT
+ MENUITEM "E&sci...", IDM_ACTION_EXIT
END
POPUP "&Visualizza"
BEGIN
- MENUITEM "&Nascondi barra di stato", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Nascondi barra di stato", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Finestra ridimensionabile", IDM_VID_RESIZE
- MENUITEM "R&icorda dimensioni e posizione", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Finestra ridimensionabile", IDM_VID_RESIZE
+ MENUITEM "R&icorda dimensioni e posizione", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "Re&nderer"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Specifica dimensioni...", IDM_VID_SPECIFY_DIM
- MENUITEM "F&orza display 4:3", IDM_VID_FORCE43
+ MENUITEM "Specifica dimensioni...", IDM_VID_SPECIFY_DIM
+ MENUITEM "F&orza display 4:3", IDM_VID_FORCE43
POPUP "&Fattore scalare della finestra"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Metodo filtro"
BEGIN
- MENUITEM "&Dal più vicino", IDM_VID_FILTER_NEAREST
- MENUITEM "&Lineare", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Dal più vicino", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Lineare", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Scala Hi&DPI", IDM_VID_HIDPI
+ MENUITEM "Scala Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Schermo intero\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Schermo intero\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Modalità adattamento &schermo intero"
BEGIN
- MENUITEM "&Adatta a schermo intero", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Adatta a schermo intero", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Pixel quadrati (mantiene l'aspetto)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Scala intera", IDM_VID_FS_INT
+ MENUITEM "&Scala intera", IDM_VID_FS_INT
END
POPUP "Impostazioni E&GA/(S)VGA"
BEGIN
- MENUITEM "&Invertire monitor VGA", IDM_VID_INVERT
+ MENUITEM "&Invertire monitor VGA", IDM_VID_INVERT
POPUP "Schermi VGA &"
BEGIN
- MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
- MENUITEM "&RGB Monocroma", IDM_VID_GRAY_MONO
- MENUITEM "&Monitor ambra", IDM_VID_GRAY_AMBER
- MENUITEM "&Monitor verde", IDM_VID_GRAY_GREEN
- MENUITEM "&Monitor bianco", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &Color", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB Monocroma", IDM_VID_GRAY_MONO
+ MENUITEM "&Monitor ambra", IDM_VID_GRAY_AMBER
+ MENUITEM "&Monitor verde", IDM_VID_GRAY_GREEN
+ MENUITEM "&Monitor bianco", IDM_VID_GRAY_WHITE
END
POPUP "Conversione &scala grigia"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&AMedia", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&AMedia", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Sovrascansione CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "Sovrascansione CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Cambia il contrasto per &display monocromatici", IDM_VID_CGACON
END
- MENUITEM "&Dispositivi", IDM_MEDIA
+ MENUITEM "&Dispositivi", IDM_MEDIA
POPUP "&Strumenti"
BEGIN
- MENUITEM "&Impostazioni...", IDM_CONFIG
- MENUITEM "&Aggiorna icone della barra di stato", IDM_UPDATE_ICONS
+ MENUITEM "&Impostazioni...", IDM_CONFIG
+ MENUITEM "&Aggiorna icone della barra di stato", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Cattura schermata\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Cattura schermata\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Preferenze...", IDM_PREFERENCES
+ MENUITEM "&Preferenze...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Abilita &integrazione Discord", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "Guadagno &suono...", IDM_SND_GAIN
+ MENUITEM "Guadagno &suono...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Inizia traccia\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Ferma traccia\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Inizia traccia\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Ferma traccia\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&?"
BEGIN
- MENUITEM "&Documentazione...", IDM_DOCS
- MENUITEM "&Informazioni su 86Box...", IDM_ABOUT
+ MENUITEM "&Documentazione...", IDM_DOCS
+ MENUITEM "&Informazioni su 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -138,17 +138,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nuova immagine...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nuova immagine...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Immagine esistente...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Immagine esistente...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Registra", IDM_CASSETTE_RECORD
- MENUITEM "R&iproduci", IDM_CASSETTE_PLAY
- MENUITEM "Ri&avvolgi all'inizio", IDM_CASSETTE_REWIND
- MENUITEM "A&vanti veloce alla fine", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Registra", IDM_CASSETTE_RECORD
+ MENUITEM "R&iproduci", IDM_CASSETTE_PLAY
+ MENUITEM "Ri&avvolgi all'inizio", IDM_CASSETTE_REWIND
+ MENUITEM "A&vanti veloce alla fine", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "&Espelli", IDM_CASSETTE_EJECT
+ MENUITEM "&Espelli", IDM_CASSETTE_EJECT
END
END
@@ -156,9 +156,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Immagine...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Immagine...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "&Espelli", IDM_CARTRIDGE_EJECT
+ MENUITEM "&Espelli", IDM_CARTRIDGE_EJECT
END
END
@@ -166,14 +166,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nuova immagine...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nuova immagine...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Immagine esistente...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Immagine esistente...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&sporta in 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&sporta in 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Espelli", IDM_FLOPPY_EJECT
+ MENUITEM "&Espelli", IDM_FLOPPY_EJECT
END
END
@@ -181,13 +181,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Muto", IDM_CDROM_MUTE
+ MENUITEM "&Muto", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&Espelli", IDM_CDROM_EMPTY
- MENUITEM "&Ricarica l'immagine precedente", IDM_CDROM_RELOAD
+ MENUITEM "&Espelli", IDM_CDROM_EMPTY
+ MENUITEM "&Ricarica l'immagine precedente", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Immagine...", IDM_CDROM_IMAGE
- MENUITEM "&Cartella...", IDM_CDROM_DIR
+ MENUITEM "&Immagine...", IDM_CDROM_IMAGE
+ MENUITEM "&Cartella...", IDM_CDROM_DIR
END
END
@@ -195,13 +195,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nuova immagine...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nuova immagine...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Immagine esistente...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Immagine esistente...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Espelli", IDM_ZIP_EJECT
- MENUITEM "&Ricarica l'immagine precedente", IDM_ZIP_RELOAD
+ MENUITEM "&Espelli", IDM_ZIP_EJECT
+ MENUITEM "&Ricarica l'immagine precedente", IDM_ZIP_RELOAD
END
END
@@ -209,13 +209,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nuova immagine...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nuova immagine...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Immagine esistente...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Immagine esistente...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Immagine esistente (&protezione contro scrittura)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Espelli", IDM_MO_EJECT
- MENUITEM "&Ricarica l'immagine precedente", IDM_MO_RELOAD
+ MENUITEM "&Espelli", IDM_MO_EJECT
+ MENUITEM "&Ricarica l'immagine precedente", IDM_MO_RELOAD
END
END
@@ -241,150 +241,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Preferenze"
-#define STR_SND_GAIN "Guadagno del suono"
-#define STR_NEW_FLOPPY "Nuova immagine"
-#define STR_CONFIG "Impostazioni"
-#define STR_SPECIFY_DIM "Specifica dimensioni della finestra principale"
+#define STR_PREFERENCES "Preferenze"
+#define STR_SND_GAIN "Guadagno del suono"
+#define STR_NEW_FLOPPY "Nuova immagine"
+#define STR_CONFIG "Impostazioni"
+#define STR_SPECIFY_DIM "Specifica dimensioni della finestra principale"
-#define STR_OK "OK"
-#define STR_CANCEL "Annulla"
-#define STR_GLOBAL "Salva queste impostazioni come &predefinite globali"
-#define STR_DEFAULT "&Predefinito"
-#define STR_LANGUAGE "Lingua:"
-#define STR_ICONSET "Pacchetto di icone:"
+#define STR_OK "OK"
+#define STR_CANCEL "Annulla"
+#define STR_GLOBAL "Salva queste impostazioni come &predefinite globali"
+#define STR_DEFAULT "&Predefinito"
+#define STR_LANGUAGE "Lingua:"
+#define STR_ICONSET "Pacchetto di icone:"
-#define STR_GAIN "Guadagno"
+#define STR_GAIN "Guadagno"
-#define STR_FILE_NAME "Nome file:"
-#define STR_DISK_SIZE "Dimensioni disco:"
-#define STR_RPM_MODE "Modalità RPM:"
-#define STR_PROGRESS "Progresso:"
+#define STR_FILE_NAME "Nome file:"
+#define STR_DISK_SIZE "Dimensioni disco:"
+#define STR_RPM_MODE "Modalità RPM:"
+#define STR_PROGRESS "Progresso:"
-#define STR_WIDTH "Larghezza:"
-#define STR_HEIGHT "Altezza:"
-#define STR_LOCK_TO_SIZE "Blocca in queste dimensioni"
+#define STR_WIDTH "Larghezza:"
+#define STR_HEIGHT "Altezza:"
+#define STR_LOCK_TO_SIZE "Blocca in queste dimensioni"
-#define STR_MACHINE_TYPE "Tipo di piastra madre:"
-#define STR_MACHINE "Piastra madre:"
-#define STR_CONFIGURE "Configura"
-#define STR_CPU_TYPE "Tipo del CPU:"
-#define STR_CPU_SPEED "Veloc.:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Stati di attesa:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memoria:"
-#define STR_TIME_SYNC "Sincronizzazione dell'ora"
-#define STR_DISABLED "Disabilitata"
-#define STR_ENABLED_LOCAL "Abilitata (ora locale)"
-#define STR_ENABLED_UTC "Abilitata (UTC)"
-#define STR_DYNAREC "Ricompilatore dinamico"
+#define STR_MACHINE_TYPE "Tipo di piastra madre:"
+#define STR_MACHINE "Piastra madre:"
+#define STR_CONFIGURE "Configura"
+#define STR_CPU_TYPE "Tipo del CPU:"
+#define STR_CPU_SPEED "Veloc.:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Stati di attesa:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memoria:"
+#define STR_TIME_SYNC "Sincronizzazione dell'ora"
+#define STR_DISABLED "Disabilitata"
+#define STR_ENABLED_LOCAL "Abilitata (ora locale)"
+#define STR_ENABLED_UTC "Abilitata (UTC)"
+#define STR_DYNAREC "Ricompilatore dinamico"
-#define STR_VIDEO "Video:"
-#define STR_VIDEO_2 "Video 2:"
-#define STR_VOODOO "Grafica Voodoo"
-#define STR_IBM8514 "Grafica IBM 8514/a"
-#define STR_XGA "Grafica XGA"
+#define STR_VIDEO "Video:"
+#define STR_VIDEO_2 "Video 2:"
+#define STR_VOODOO "Grafica Voodoo"
+#define STR_IBM8514 "Grafica IBM 8514/a"
+#define STR_XGA "Grafica XGA"
-#define STR_MOUSE "Mouse:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Mouse:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "Dispositivo COM3:"
-#define STR_COM4 "Dispositivo COM4:"
-#define STR_LPT1 "Dispositivo LPT1:"
-#define STR_LPT2 "Dispositivo LPT2:"
-#define STR_LPT3 "Dispositivo LPT3:"
-#define STR_LPT4 "Dispositivo LPT4:"
-#define STR_SERIAL1 "Porta seriale 1"
-#define STR_SERIAL2 "Porta seriale 2"
-#define STR_SERIAL3 "Porta seriale 3"
-#define STR_SERIAL4 "Porta seriale 4"
-#define STR_PARALLEL1 "Porta parallela 1"
-#define STR_PARALLEL2 "Porta parallela 2"
-#define STR_PARALLEL3 "Porta parallela 3"
-#define STR_PARALLEL4 "Porta parallela 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "Dispositivo COM1:"
+#define STR_COM2 "Dispositivo COM2:"
+#define STR_COM3 "Dispositivo COM3:"
+#define STR_COM4 "Dispositivo COM4:"
+#define STR_LPT1 "Dispositivo LPT1:"
+#define STR_LPT2 "Dispositivo LPT2:"
+#define STR_LPT3 "Dispositivo LPT3:"
+#define STR_LPT4 "Dispositivo LPT4:"
+#define STR_SERIAL1 "Porta seriale 1"
+#define STR_SERIAL2 "Porta seriale 2"
+#define STR_SERIAL3 "Porta seriale 3"
+#define STR_SERIAL4 "Porta seriale 4"
+#define STR_PARALLEL1 "Porta parallela 1"
+#define STR_PARALLEL2 "Porta parallela 2"
+#define STR_PARALLEL3 "Porta parallela 3"
+#define STR_PARALLEL4 "Porta parallela 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Controller HD:"
-#define STR_FDC "Controller FD:"
-#define STR_IDE_TER "Controller IDE terziario"
-#define STR_IDE_QUA "Controller IDE quaternario"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Controller 1:"
-#define STR_SCSI_2 "Controller 2:"
-#define STR_SCSI_3 "Controller 3:"
-#define STR_SCSI_4 "Controller 4:"
-#define STR_CASSETTE "Cassetta"
+#define STR_HDC "Controller HD:"
+#define STR_FDC "Controller FD:"
+#define STR_IDE_TER "Controller IDE terziario"
+#define STR_IDE_QUA "Controller IDE quaternario"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Controller 1:"
+#define STR_SCSI_2 "Controller 2:"
+#define STR_SCSI_3 "Controller 3:"
+#define STR_SCSI_4 "Controller 4:"
+#define STR_CASSETTE "Cassetta"
-#define STR_HDD "Hard disk:"
-#define STR_NEW "&Nuovo..."
-#define STR_EXISTING "&Esistente..."
-#define STR_REMOVE "&Rimouvi"
-#define STR_BUS "Bus:"
-#define STR_CHANNEL "Canale:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Hard disk:"
+#define STR_NEW "&Nuovo..."
+#define STR_EXISTING "&Esistente..."
+#define STR_REMOVE "&Rimouvi"
+#define STR_BUS "Bus:"
+#define STR_CHANNEL "Canale:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Specifica..."
-#define STR_SECTORS "Settori:"
-#define STR_HEADS "Testine:"
-#define STR_CYLS "Cilindri:"
-#define STR_SIZE_MB "Dimensioni (MB):"
-#define STR_TYPE "Tipo:"
-#define STR_IMG_FORMAT "Formato immagine:"
-#define STR_BLOCK_SIZE "Dimensioni blocco:"
+#define STR_SPECIFY "&Specifica..."
+#define STR_SECTORS "Settori:"
+#define STR_HEADS "Testine:"
+#define STR_CYLS "Cilindri:"
+#define STR_SIZE_MB "Dimensioni (MB):"
+#define STR_TYPE "Tipo:"
+#define STR_IMG_FORMAT "Formato immagine:"
+#define STR_BLOCK_SIZE "Dimensioni blocco:"
-#define STR_FLOPPY_DRIVES "Unità floppy:"
-#define STR_TURBO "Turbo"
-#define STR_CHECKBPB "Verifica BPB"
-#define STR_CDROM_DRIVES "Unità CD-ROM:"
-#define STR_CD_SPEED "Veloc.:"
-#define STR_EARLY "Unità anteriore"
+#define STR_FLOPPY_DRIVES "Unità floppy:"
+#define STR_TURBO "Turbo"
+#define STR_CHECKBPB "Verifica BPB"
+#define STR_CDROM_DRIVES "Unità CD-ROM:"
+#define STR_CD_SPEED "Veloc.:"
+#define STR_EARLY "Unità anteriore"
-#define STR_MO_DRIVES "Unità magneto-ottiche:"
-#define STR_ZIP_DRIVES "Unità ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Unità magneto-ottiche:"
+#define STR_ZIP_DRIVES "Unità ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "RTC ISA:"
-#define STR_ISAMEM "Espansione memoria ISA"
-#define STR_ISAMEM_1 "Scheda 1:"
-#define STR_ISAMEM_2 "Scheda 2:"
-#define STR_ISAMEM_3 "Scheda 3:"
-#define STR_ISAMEM_4 "Scheda 4:"
-#define STR_BUGGER "Dispositivo ISABugger"
-#define STR_POSTCARD "Scheda POST"
+#define STR_ISARTC "RTC ISA:"
+#define STR_ISAMEM "Espansione memoria ISA"
+#define STR_ISAMEM_1 "Scheda 1:"
+#define STR_ISAMEM_2 "Scheda 2:"
+#define STR_ISAMEM_3 "Scheda 3:"
+#define STR_ISAMEM_4 "Scheda 4:"
+#define STR_BUGGER "Dispositivo ISABugger"
+#define STR_POSTCARD "Scheda POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -393,199 +393,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Errore"
- IDS_2050 "Errore fatale"
- IDS_2051 " - PAUSED"
- IDS_2052 "Usa Ctrl+Alt+PgDn per tornare alla modalità finestra."
- IDS_2053 "Velocità "
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Immagini ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box non può trovare immagini ROM utilizzabili.\n\nPlease download a ROM set and extract it into the ""roms"" directory."
- IDS_2057 "(empty)"
- IDS_2058 "Immagini ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Tutti i file (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "Acceso"
- IDS_2061 "Spento"
- IDS_2062 "Tutte le immagini (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Immagini di settori base (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Immagini di superficie (*.86F)\0*.86F\0"
- IDS_2063 "La macchina ""%hs"" non è disponibile a causa di immagini ROM mancanti nella directory roms/machines. Cambiando ad una macchina disponibile."
+ 2048 "86Box"
+ IDS_2049 "Errore"
+ IDS_2050 "Errore fatale"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Usa Ctrl+Alt+PgDn per tornare alla modalità finestra."
+ IDS_2053 "Velocità "
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Immagini ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box non può trovare immagini ROM utilizzabili.\n\nPlease download a ROM set and extract it into the ""roms"" directory."
+ IDS_2057 "(empty)"
+ IDS_2058 "Immagini ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Tutti i file (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "Acceso"
+ IDS_2061 "Spento"
+ IDS_2062 "Tutte le immagini (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Immagini di settori base (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Immagini di superficie (*.86F)\0*.86F\0"
+ IDS_2063 "La macchina ""%hs"" non è disponibile a causa di immagini ROM mancanti nella directory roms/machines. Cambiando ad una macchina disponibile."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "La scheda video ""%hs"" non è disponibile a causa di immagini ROM mancanti nella directory roms/video. Cambiando ad una scheda video disponibile."
- IDS_2065 "Piastra madre"
- IDS_2066 "Schermo"
- IDS_2067 "Dispositivi di entrata"
- IDS_2068 "Audio"
- IDS_2069 "Rete"
- IDS_2070 "Porte (COM & LPT)"
- IDS_2071 "Controller memoria"
- IDS_2072 "Hard disk"
- IDS_2073 "Unità CD-ROM e Floppy"
- IDS_2074 "Altri dispositivi rimuovibili"
- IDS_2075 "Altre periferiche"
- IDS_2076 "Immagini di superficie (*.86F)\0*.86F\0"
- IDS_2077 "Fare clic per catturare mouse"
- IDS_2078 "Premi F8+F12 per rilasciare il mouse"
- IDS_2079 "Premi F8+F12 o pulsante centrale per rilasciare il mouse"
+ IDS_2064 "La scheda video ""%hs"" non è disponibile a causa di immagini ROM mancanti nella directory roms/video. Cambiando ad una scheda video disponibile."
+ IDS_2065 "Piastra madre"
+ IDS_2066 "Schermo"
+ IDS_2067 "Dispositivi di entrata"
+ IDS_2068 "Audio"
+ IDS_2069 "Rete"
+ IDS_2070 "Porte (COM & LPT)"
+ IDS_2071 "Controller memoria"
+ IDS_2072 "Hard disk"
+ IDS_2073 "Unità CD-ROM e Floppy"
+ IDS_2074 "Altri dispositivi rimuovibili"
+ IDS_2075 "Altre periferiche"
+ IDS_2076 "Immagini di superficie (*.86F)\0*.86F\0"
+ IDS_2077 "Fare clic per catturare mouse"
+ IDS_2078 "Premi F8+F12 per rilasciare il mouse"
+ IDS_2079 "Premi F8+F12 o pulsante centrale per rilasciare il mouse"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Impossibile inizializzare FluidSynth"
- IDS_2081 "Bus"
- IDS_2082 "File"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Impossibile inizializzare FluidSynth"
+ IDS_2081 "Bus"
+ IDS_2082 "File"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Verifica BPB"
- IDS_2089 "KB"
- IDS_2090 "Impossibile inizializzare il renderer video."
- IDS_2091 "Predefinito"
- IDS_2092 "%i stati d'attesa"
- IDS_2093 "Tipo"
- IDS_2094 "Impossibile impostare PCap"
- IDS_2095 "Nessun dispositivo PCap trovato"
- IDS_2096 "Dispositivo PCap invalido"
- IDS_2097 "Joystick comune da 2 pulsanti"
- IDS_2098 "Joystick comune da 4 pulsanti"
- IDS_2099 "Joystick comune da 6 pulsanti"
- IDS_2100 "Joystick comune da 8 pulsanti"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Nessuno"
- IDS_2105 "Impossibile caricare gli acceleratori da tastiera."
- IDS_2106 "Impossibile registrare input raw."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Floppy %i (%s): %ls"
- IDS_2110 "Tutte le immagini (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Immagini da settori avanzati (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagini da settori basilari (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Immagini flusso (*.FDI)\0*.FDI\0Immagini da superficie (*.86F;*.MFM)\0*.86F;*.MFM\0Tutti i file (*.*)\0*.*\0"
- IDS_2111 "Impossibile inizializzare FreeType"
- IDS_2112 "Impossibile inizializzare SDL, SDL2.dll è necessario"
- IDS_2113 "Sei sicuro di voler riavviare la macchina emulata?"
- IDS_2114 "Sei sicuro di voler uscire da 86Box?"
- IDS_2115 "Impossibile inizializzare Ghostscript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "Immagini MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tutti i file (*.*)\0*.*\0"
- IDS_2118 "Benvenuti in 86Box!"
- IDS_2119 "Controller interno"
- IDS_2120 "Esci"
- IDS_2121 "Nessune immagini ROM trovate"
- IDS_2122 "Vuole salvare queste impostazioni?"
- IDS_2123 "Questo riavvierà la macchina emulata."
- IDS_2124 "Salva"
- IDS_2125 "Informazioni su 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Verifica BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Impossibile inizializzare il renderer video."
+ IDS_2091 "Predefinito"
+ IDS_2092 "%i stati d'attesa"
+ IDS_2093 "Tipo"
+ IDS_2094 "Impossibile impostare PCap"
+ IDS_2095 "Nessun dispositivo PCap trovato"
+ IDS_2096 "Dispositivo PCap invalido"
+ IDS_2097 "Joystick comune da 2 pulsanti"
+ IDS_2098 "Joystick comune da 4 pulsanti"
+ IDS_2099 "Joystick comune da 6 pulsanti"
+ IDS_2100 "Joystick comune da 8 pulsanti"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Nessuno"
+ IDS_2105 "Impossibile caricare gli acceleratori da tastiera."
+ IDS_2106 "Impossibile registrare input raw."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Floppy %i (%s): %ls"
+ IDS_2110 "Tutte le immagini (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Immagini da settori avanzati (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagini da settori basilari (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Immagini flusso (*.FDI)\0*.FDI\0Immagini da superficie (*.86F;*.MFM)\0*.86F;*.MFM\0Tutti i file (*.*)\0*.*\0"
+ IDS_2111 "Impossibile inizializzare FreeType"
+ IDS_2112 "Impossibile inizializzare SDL, SDL2.dll è necessario"
+ IDS_2113 "Sei sicuro di voler riavviare la macchina emulata?"
+ IDS_2114 "Sei sicuro di voler uscire da 86Box?"
+ IDS_2115 "Impossibile inizializzare Ghostscript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "Immagini MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tutti i file (*.*)\0*.*\0"
+ IDS_2118 "Benvenuti in 86Box!"
+ IDS_2119 "Controller interno"
+ IDS_2120 "Esci"
+ IDS_2121 "Nessune immagini ROM trovate"
+ IDS_2122 "Vuole salvare queste impostazioni?"
+ IDS_2123 "Questo riavvierà la macchina emulata."
+ IDS_2124 "Salva"
+ IDS_2125 "Informazioni su 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Un emulatore di computer vecchi\n\nAutori: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nTradotto da: explorerdotexe\n\nRilasciato sotto la Licenza Pubblica GNU versione 2 o dopo. Vedi LICENSE per maggior informazioni."
- IDS_2128 "OK"
- IDS_2129 "Hardware non disponibile"
+ IDS_2127 "Un emulatore di computer vecchi\n\nAutori: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nTradotto da: explorerdotexe\n\nRilasciato sotto la Licenza Pubblica GNU versione 2 o dopo. Vedi LICENSE per maggior informazioni."
+ IDS_2128 "OK"
+ IDS_2129 "Hardware non disponibile"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Controlla se " LIB_NAME_PCAP " è installato e che tu sia connesso ad una connessione " LIB_NAME_PCAP " compatibile."
- IDS_2131 "Configurazione invalida"
+ IDS_2130 "Controlla se " LIB_NAME_PCAP " è installato e che tu sia connesso ad una connessione " LIB_NAME_PCAP " compatibile."
+ IDS_2131 "Configurazione invalida"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " è richesto per l'emuazione di stampanti ESC/P."
+ IDS_2132 LIB_NAME_FREETYPE " è richesto per l'emuazione di stampanti ESC/P."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " è richiesto per la conversione automatica di file PostScript a file PDF.\n\nQualsiasi documento mandato alla stampante generica PostScript sarà salvato come file PostScript. (.ps)"
+ IDS_2133 LIB_NAME_GS " è richiesto per la conversione automatica di file PostScript a file PDF.\n\nQualsiasi documento mandato alla stampante generica PostScript sarà salvato come file PostScript. (.ps)"
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " è richiesto per l'output FluidSynth MIDI."
- IDS_2135 "Entrando nella modalità schermo intero"
- IDS_2136 "Non mostrare più questo messaggio"
- IDS_2137 "Non uscire"
- IDS_2138 "Riavvia"
- IDS_2139 "Non riavviare"
- IDS_2140 "Immagini MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tutti i file (*.*)\0*.*\0"
- IDS_2141 "Immagini CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Tutti i file (*.*)\0*.*\0"
- IDS_2142 "Configurazione del dispositivo %hs"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " è richiesto per l'output FluidSynth MIDI."
+ IDS_2135 "Entrando nella modalità schermo intero"
+ IDS_2136 "Non mostrare più questo messaggio"
+ IDS_2137 "Non uscire"
+ IDS_2138 "Riavvia"
+ IDS_2139 "Non riavviare"
+ IDS_2140 "Immagini MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tutti i file (*.*)\0*.*\0"
+ IDS_2141 "Immagini CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Tutti i file (*.*)\0*.*\0"
+ IDS_2142 "Configurazione del dispositivo %hs"
IDS_2143 "Monitor in modalità riposo"
- IDS_2144 "Shader OpenGL (*.GLSL)\0*.GLSL\0Tutti i file (*.*)\0*.*\0"
- IDS_2145 "Impostazioni OpenGL"
- IDS_2146 "Stai caricando una configurazione non supportata"
- IDS_2147 "Il filtraggio della tipologia di CPU è disabilitato per la macchina selezionata.\n\nQuesto lo rende possibile scegliere un CPU che è altrimenti incompatibile con la macchina selezionata. Tuttavia, portresti incorrere in incompatibilità con il BIOS della macchina o altri programmi. \n\nL'abilitare di questa impostazione non è ufficialmente supportato e tutte le segnalazioni di errori saranno considerate invalide."
- IDS_2148 "Continua"
- IDS_2149 "Cassetta: %s"
- IDS_2150 "Immagini cassetta (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tutti i file (*.*)\0*.*\0"
- IDS_2151 "Cartuccia %i: %ls"
- IDS_2152 "Immagini cartuccia (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tutti i file (*.*)\0*.*\0"
- IDS_2153 "Error initializing renderer"
- IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
- IDS_2155 "Resume execution"
- IDS_2156 "Pause execution"
- IDS_2157 "Press Ctrl+Alt+Del"
- IDS_2158 "Press Ctrl+Alt+Esc"
- IDS_2159 "Hard reset"
- IDS_2160 "ACPI shutdown"
- IDS_2161 "Settings"
+ IDS_2144 "Shader OpenGL (*.GLSL)\0*.GLSL\0Tutti i file (*.*)\0*.*\0"
+ IDS_2145 "Impostazioni OpenGL"
+ IDS_2146 "Stai caricando una configurazione non supportata"
+ IDS_2147 "Il filtraggio della tipologia di CPU è disabilitato per la macchina selezionata.\n\nQuesto lo rende possibile scegliere un CPU che è altrimenti incompatibile con la macchina selezionata. Tuttavia, portresti incorrere in incompatibilità con il BIOS della macchina o altri programmi. \n\nL'abilitare di questa impostazione non è ufficialmente supportato e tutte le segnalazioni di errori saranno considerate invalide."
+ IDS_2148 "Continua"
+ IDS_2149 "Cassetta: %s"
+ IDS_2150 "Immagini cassetta (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tutti i file (*.*)\0*.*\0"
+ IDS_2151 "Cartuccia %i: %ls"
+ IDS_2152 "Immagini cartuccia (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tutti i file (*.*)\0*.*\0"
+ IDS_2153 "Error initializing renderer"
+ IDS_2154 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer."
+ IDS_2155 "Resume execution"
+ IDS_2156 "Pause execution"
+ IDS_2157 "Press Ctrl+Alt+Del"
+ IDS_2158 "Press Ctrl+Alt+Esc"
+ IDS_2159 "Hard reset"
+ IDS_2160 "ACPI shutdown"
+ IDS_2161 "Settings"
IDS_2162 "Unità anteriore"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Hard disk (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "Le unità CD-ROM MFM/RLL o ESDI non sono mai esistite."
- IDS_4100 "Personalizzata..."
- IDS_4101 "Personalizzata (grande)..."
- IDS_4102 "Aggiungi un nuovo disco rigido"
- IDS_4103 "Aggiungi un disco rigido esistente"
- IDS_4104 "Le immagini HDI non possono essere più grandi di 4 GB."
- IDS_4105 "Le immmagini disco non possono essere più grandi di 127 GB."
- IDS_4106 "Immagini disco rigido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Tutti i file (*.*)\0*.*\0"
- IDS_4107 "Impossibile leggere il file"
- IDS_4108 "Impossibile scrivere al file"
- IDS_4109 "Le immagini HDI o HDX con settori di dimensioni diverse da 512 non sono supportati."
- IDS_4110 "USB non è ancora supportato"
- IDS_4111 "Immagine disco già esiste"
- IDS_4112 "Specifica un nome file valido."
- IDS_4113 "Immagine disco creata"
- IDS_4114 "Controlla che il file esiste e che sia leggibile."
- IDS_4115 "Controlla che il file viene salvato ad un percorso con diritti di scrittura"
- IDS_4116 "Immagine disco troppo grande"
- IDS_4117 "Ricordati di partizionare e formattare il disco appena creato."
- IDS_4118 "Il file selezionato sarà sovrascritto, sei sicuro di volerlo usare?"
- IDS_4119 "Immagine disco non supportata"
- IDS_4120 "Sovrascrivi"
- IDS_4121 "Non sovrascrivere"
- IDS_4122 "Immagine raw (.img)"
- IDS_4123 "Immagine HDI (.hdi)"
- IDS_4124 "Immagine HDX (.hdx)"
- IDS_4125 "VHD di dimensioni fisse (.vhd)"
- IDS_4126 "VHD di dimensioni dinamiche (.vhd)"
- IDS_4127 "VHD differenziato (.vhd)"
- IDS_4128 "Blocchi larghi (2 MB)"
- IDS_4129 "Blocchi piccoli (512 KB)"
- IDS_4130 "File VHD (*.VHD)\0*.VHD\0Tutti i file (*.*)\0*.*\0"
- IDS_4131 "Seleziona il VHD padre."
- IDS_4132 "Questo potrebbe significare che l'immagine padre sia stata modificata dopo la creazione dell'immagine di differenziazione.\n\nPuò anche succedere se i file immagini sono stati spostati o copiati, o da un errore nel programma che ha creato questo disco.\n\nVuoi aggiustare le marcature di tempo?"
- IDS_4133 "Le marcature di tempo padre e figlio non corrispondono"
- IDS_4134 "Impossibile aggiustare marcature di tempo VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "Le unità CD-ROM MFM/RLL o ESDI non sono mai esistite."
+ IDS_4100 "Personalizzata..."
+ IDS_4101 "Personalizzata (grande)..."
+ IDS_4102 "Aggiungi un nuovo disco rigido"
+ IDS_4103 "Aggiungi un disco rigido esistente"
+ IDS_4104 "Le immagini HDI non possono essere più grandi di 4 GB."
+ IDS_4105 "Le immmagini disco non possono essere più grandi di 127 GB."
+ IDS_4106 "Immagini disco rigido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Tutti i file (*.*)\0*.*\0"
+ IDS_4107 "Impossibile leggere il file"
+ IDS_4108 "Impossibile scrivere al file"
+ IDS_4109 "Le immagini HDI o HDX con settori di dimensioni diverse da 512 non sono supportati."
+ IDS_4110 "USB non è ancora supportato"
+ IDS_4111 "Immagine disco già esiste"
+ IDS_4112 "Specifica un nome file valido."
+ IDS_4113 "Immagine disco creata"
+ IDS_4114 "Controlla che il file esiste e che sia leggibile."
+ IDS_4115 "Controlla che il file viene salvato ad un percorso con diritti di scrittura"
+ IDS_4116 "Immagine disco troppo grande"
+ IDS_4117 "Ricordati di partizionare e formattare il disco appena creato."
+ IDS_4118 "Il file selezionato sarà sovrascritto, sei sicuro di volerlo usare?"
+ IDS_4119 "Immagine disco non supportata"
+ IDS_4120 "Sovrascrivi"
+ IDS_4121 "Non sovrascrivere"
+ IDS_4122 "Immagine raw (.img)"
+ IDS_4123 "Immagine HDI (.hdi)"
+ IDS_4124 "Immagine HDX (.hdx)"
+ IDS_4125 "VHD di dimensioni fisse (.vhd)"
+ IDS_4126 "VHD di dimensioni dinamiche (.vhd)"
+ IDS_4127 "VHD differenziato (.vhd)"
+ IDS_4128 "Blocchi larghi (2 MB)"
+ IDS_4129 "Blocchi piccoli (512 KB)"
+ IDS_4130 "File VHD (*.VHD)\0*.VHD\0Tutti i file (*.*)\0*.*\0"
+ IDS_4131 "Seleziona il VHD padre."
+ IDS_4132 "Questo potrebbe significare che l'immagine padre sia stata modificata dopo la creazione dell'immagine di differenziazione.\n\nPuò anche succedere se i file immagini sono stati spostati o copiati, o da un errore nel programma che ha creato questo disco.\n\nVuoi aggiustare le marcature di tempo?"
+ IDS_4133 "Le marcature di tempo padre e figlio non corrispondono"
+ IDS_4134 "Impossibile aggiustare marcature di tempo VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -594,56 +595,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Disabilitato"
- IDS_5381 "ATAPI"
+ IDS_5376 "Disabilitato"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Disabilitato"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Disabilitato"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "RPM perfette"
- IDS_6145 "RPM 1% sotto perfezione"
- IDS_6146 "RPM 1.5% sotto perfezione"
- IDS_6147 "RPM 2% sotto perfezione"
+ IDS_6144 "RPM perfette"
+ IDS_6145 "RPM 1% sotto perfezione"
+ IDS_6146 "RPM 1.5% sotto perfezione"
+ IDS_6147 "RPM 2% sotto perfezione"
- IDS_7168 "(Predefinito del sistema)"
+ IDS_7168 "(Predefinito del sistema)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Italian (IT-it) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc
index c1e0ee463..512bde8a0 100644
--- a/src/win/languages/ja-JP.rc
+++ b/src/win/languages/ja-JP.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "動作(&A)"
BEGIN
- MENUITEM "ã‚ーボードã¯ã‚ャプãƒãƒ£ãŒå¿…è¦(&K)", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "å³CTRLã‚’å·¦ALTã¸(&R)", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "ã‚ーボードã¯ã‚ャプãƒãƒ£ãŒå¿…è¦(&K)", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "å³CTRLã‚’å·¦ALTã¸(&R)", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "ãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆ(&H)...", IDM_ACTION_HRESET
- MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "ãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆ(&H)...", IDM_ACTION_HRESET
+ MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "ä¸€æ™‚åœæ¢(&P)", IDM_ACTION_PAUSE
+ MENUITEM "ä¸€æ™‚åœæ¢(&P)", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "終了(&X)...", IDM_ACTION_EXIT
+ MENUITEM "終了(&X)...", IDM_ACTION_EXIT
END
POPUP "表示(&V)"
BEGIN
- MENUITEM "ステータスãƒãƒ¼ã‚’éš ã™(&H)", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "ツールãƒãƒ¼ã‚’éš ã™(&T)", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "ステータスãƒãƒ¼ã‚’éš ã™(&H)", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "ツールãƒãƒ¼ã‚’éš ã™(&T)", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "ウィンドウã®ã‚µã‚¤ã‚ºã‚’リサイズå¯èƒ½(&R)", IDM_VID_RESIZE
- MENUITEM "ウィンドウã®ã‚µã‚¤ã‚ºã¨ä½ç½®ã‚’記憶(&E)", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "ウィンドウã®ã‚µã‚¤ã‚ºã‚’リサイズå¯èƒ½(&R)", IDM_VID_RESIZE
+ MENUITEM "ウィンドウã®ã‚µã‚¤ã‚ºã¨ä½ç½®ã‚’記憶(&E)", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "レンダラー(&N)"
BEGIN
- MENUITEM "SDL (ソフトウェア)(&S)", IDM_VID_SDL_SW
- MENUITEM "SDL (ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢)(&H)", IDM_VID_SDL_HW
- MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
- MENUITEM "OpenGL (3.0コア)(&G)", IDM_VID_OPENGL_CORE
+ MENUITEM "SDL (ソフトウェア)(&S)", IDM_VID_SDL_SW
+ MENUITEM "SDL (ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢)(&H)", IDM_VID_SDL_HW
+ MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
+ MENUITEM "OpenGL (3.0コア)(&G)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "VNC(&V)", IDM_VID_VNC
+ MENUITEM "VNC(&V)", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "ウィンドウã®ã‚µã‚¤ã‚ºã‚’指定...", IDM_VID_SPECIFY_DIM
- MENUITEM "4:3アスペクト比を固定(&O)", IDM_VID_FORCE43
+ MENUITEM "ウィンドウã®ã‚µã‚¤ã‚ºã‚’指定...", IDM_VID_SPECIFY_DIM
+ MENUITEM "4:3アスペクト比を固定(&O)", IDM_VID_FORCE43
POPUP "ウィンドウã®è¡¨ç¤ºå€çއ(&W)"
BEGIN
- MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X
- MENUITEM "1x(&1)", IDM_VID_SCALE_2X
- MENUITEM "1.5x(&5)", IDM_VID_SCALE_3X
- MENUITEM "2x(&2)", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X
+ MENUITEM "1x(&1)", IDM_VID_SCALE_2X
+ MENUITEM "1.5x(&5)", IDM_VID_SCALE_3X
+ MENUITEM "2x(&2)", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "フィルター方å¼"
BEGIN
- MENUITEM "最近å‚補間(&N)", IDM_VID_FILTER_NEAREST
- MENUITEM "線形補間(&L)", IDM_VID_FILTER_LINEAR
+ MENUITEM "最近å‚補間(&N)", IDM_VID_FILTER_NEAREST
+ MENUITEM "線形補間(&L)", IDM_VID_FILTER_LINEAR
END
- MENUITEM "HiDPIスケーリング(&D)", IDM_VID_HIDPI
+ MENUITEM "HiDPIスケーリング(&D)", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "フルスクリーン(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "フルスクリーン(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "フルスクリーンã®ã‚¹ã‚±ãƒ¼ãƒ«(&S)"
BEGIN
- MENUITEM "ãƒ•ãƒ«ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã«æ‹¡å¤§(&F)", IDM_VID_FS_FULL
- MENUITEM "4:3(&4)", IDM_VID_FS_43
+ MENUITEM "ãƒ•ãƒ«ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã«æ‹¡å¤§(&F)", IDM_VID_FS_FULL
+ MENUITEM "4:3(&4)", IDM_VID_FS_43
MENUITEM "æ£æ–¹å½¢ãƒ”クセル(ã‚¢ã‚¹ãƒšã‚¯ãƒˆæ¯”ã‚’ç¶æŒ)(&S)", IDM_VID_FS_KEEPRATIO
- MENUITEM "æ•´æ•°å€(&I)", IDM_VID_FS_INT
+ MENUITEM "æ•´æ•°å€(&I)", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGAã®è¨å®š"
BEGIN
- MENUITEM "色をå転(&I)", IDM_VID_INVERT
+ MENUITEM "色をå転(&I)", IDM_VID_INVERT
POPUP "ç”»é¢ã‚¿ã‚¤ãƒ—(&T)"
BEGIN
- MENUITEM "RGB(カラー)(&C)", IDM_VID_GRAY_RGB
- MENUITEM "RGB(グレースケール)(&R)", IDM_VID_GRAY_MONO
- MENUITEM "モニター(ç¥ç€è‰²)(&A)", IDM_VID_GRAY_AMBER
- MENUITEM "モニター(緑色)(&G)", IDM_VID_GRAY_GREEN
- MENUITEM "モニター(白色)(&W)", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB(カラー)(&C)", IDM_VID_GRAY_RGB
+ MENUITEM "RGB(グレースケール)(&R)", IDM_VID_GRAY_MONO
+ MENUITEM "モニター(ç¥ç€è‰²)(&A)", IDM_VID_GRAY_AMBER
+ MENUITEM "モニター(緑色)(&G)", IDM_VID_GRAY_GREEN
+ MENUITEM "モニター(白色)(&W)", IDM_VID_GRAY_WHITE
END
POPUP "グレースケール変æ›ã‚¿ã‚¤ãƒ—(&C)"
BEGIN
- MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
- MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
- MENUITEM "å¹³å‡(&A)", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
+ MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
+ MENUITEM "å¹³å‡(&A)", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGAオーãƒãƒ¼ã‚¹ã‚ャン(&G)", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGAオーãƒãƒ¼ã‚¹ã‚ャン(&G)", IDM_VID_OVERSCAN
MENUITEM "å˜è‰²ãƒ¢ãƒ‹ã‚¿ãƒ¼ç”¨ã‚³ãƒ³ãƒˆãƒ©ã‚¹ãƒˆã‚’変更(&M)", IDM_VID_CGACON
END
- MENUITEM "メディア(&M)", IDM_MEDIA
+ MENUITEM "メディア(&M)", IDM_MEDIA
POPUP "ツール(&T)"
BEGIN
- MENUITEM "è¨å®š(&S)...", IDM_CONFIG
- MENUITEM "ステータスãƒãƒ¼ã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’æ›´æ–°(&U)", IDM_UPDATE_ICONS
+ MENUITEM "è¨å®š(&S)...", IDM_CONFIG
+ MENUITEM "ステータスãƒãƒ¼ã®ã‚¢ã‚¤ã‚³ãƒ³ã‚’æ›´æ–°(&U)", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "スクリーンショットを撮る(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "スクリーンショットを撮る(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "環境è¨å®š(&P)...", IDM_PREFERENCES
+ MENUITEM "環境è¨å®š(&P)...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Discordã¨ã®é€£æºæ©Ÿèƒ½(&D)", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "音é‡ã‚’調節(&G)...", IDM_SND_GAIN
+ MENUITEM "音é‡ã‚’調節(&G)...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "トレース開始\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "トレース終了\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "トレース開始\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "トレース終了\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "ヘルプ(&H)"
BEGIN
- MENUITEM "ドã‚ュメント(&D)...", IDM_DOCS
- MENUITEM "86Boxã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±(&A)...", IDM_ABOUT
+ MENUITEM "ドã‚ュメント(&D)...", IDM_DOCS
+ MENUITEM "86Boxã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±(&A)...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "録音(&R)", IDM_CASSETTE_RECORD
- MENUITEM "å†ç”Ÿ(&P)", IDM_CASSETTE_PLAY
- MENUITEM "冒é ã«å·»ã戻ã™(&R)", IDM_CASSETTE_REWIND
- MENUITEM "最後ã¾ã§æ—©é€ã‚Š(&F)", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "録音(&R)", IDM_CASSETTE_RECORD
+ MENUITEM "å†ç”Ÿ(&P)", IDM_CASSETTE_PLAY
+ MENUITEM "冒é ã«å·»ã戻ã™(&R)", IDM_CASSETTE_REWIND
+ MENUITEM "最後ã¾ã§æ—©é€ã‚Š(&F)", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "å–り出ã™(&J)", IDM_CASSETTE_EJECT
+ MENUITEM "å–り出ã™(&J)", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "イメージ(&I)...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "イメージ(&I)...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "å–り出ã™(&J)", IDM_CARTRIDGE_EJECT
+ MENUITEM "å–り出ã™(&J)", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "86Fイメージã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ(&X)...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "86Fイメージã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ(&X)...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "å–り出ã™(&J)", IDM_FLOPPY_EJECT
+ MENUITEM "å–り出ã™(&J)", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "ミュート(&M)", IDM_CDROM_MUTE
+ MENUITEM "ミュート(&M)", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "空(&M)", IDM_CDROM_EMPTY
- MENUITEM "å‰ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å†èªã¿è¾¼ã¿(&R)", IDM_CDROM_RELOAD
+ MENUITEM "空(&M)", IDM_CDROM_EMPTY
+ MENUITEM "å‰ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å†èªã¿è¾¼ã¿(&R)", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "イメージ(&I)...", IDM_CDROM_IMAGE
- MENUITEM "フォルダ(&F)...", IDM_CDROM_DIR
+ MENUITEM "イメージ(&I)...", IDM_CDROM_IMAGE
+ MENUITEM "フォルダ(&F)...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "å–り出ã™(&J)", IDM_ZIP_EJECT
- MENUITEM "å‰ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å†èªã¿è¾¼ã¿(&R)", IDM_ZIP_RELOAD
+ MENUITEM "å–り出ã™(&J)", IDM_ZIP_EJECT
+ MENUITEM "å‰ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å†èªã¿è¾¼ã¿(&R)", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_MO_IMAGE_NEW
+ MENUITEM "æ–°è¦ã‚¤ãƒ¡ãƒ¼ã‚¸(&N)...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_MO_IMAGE_EXISTING
- MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(&E)...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "æ—¢å˜ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’é–‹ã(書ãè¾¼ã¿ä¿è·)(&W)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "å–り出ã™(&J)", IDM_MO_EJECT
- MENUITEM "å‰ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å†èªã¿è¾¼ã¿(&R)", IDM_MO_RELOAD
+ MENUITEM "å–り出ã™(&J)", IDM_MO_EJECT
+ MENUITEM "å‰ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã‚’å†èªã¿è¾¼ã¿(&R)", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "環境è¨å®š"
-#define STR_SND_GAIN "音é‡ã‚²ã‚¤ãƒ³"
-#define STR_NEW_FLOPPY "æ–°è¦ã®ã‚¤ãƒ¡ãƒ¼ã‚¸"
-#define STR_CONFIG "è¨å®š"
-#define STR_SPECIFY_DIM "メインウィンドウã®ã‚µã‚¤ã‚ºæŒ‡å®š"
+#define STR_PREFERENCES "環境è¨å®š"
+#define STR_SND_GAIN "音é‡ã‚²ã‚¤ãƒ³"
+#define STR_NEW_FLOPPY "æ–°è¦ã®ã‚¤ãƒ¡ãƒ¼ã‚¸"
+#define STR_CONFIG "è¨å®š"
+#define STR_SPECIFY_DIM "メインウィンドウã®ã‚µã‚¤ã‚ºæŒ‡å®š"
-#define STR_OK "OK"
-#define STR_CANCEL "ã‚ャンセル"
-#define STR_GLOBAL "ã“れらã®è¨å®šã‚’ã‚°ãƒãƒ¼ãƒãƒ«æ—¢å®šå€¤ã¨ã—ã¦ä¿å˜ã™ã‚‹(&G)"
-#define STR_DEFAULT "既定値(&D)"
-#define STR_LANGUAGE "言語:"
-#define STR_ICONSET "アイコンセット:"
+#define STR_OK "OK"
+#define STR_CANCEL "ã‚ャンセル"
+#define STR_GLOBAL "ã“れらã®è¨å®šã‚’ã‚°ãƒãƒ¼ãƒãƒ«æ—¢å®šå€¤ã¨ã—ã¦ä¿å˜ã™ã‚‹(&G)"
+#define STR_DEFAULT "既定値(&D)"
+#define STR_LANGUAGE "言語:"
+#define STR_ICONSET "アイコンセット:"
-#define STR_GAIN "ゲイン値"
+#define STR_GAIN "ゲイン値"
-#define STR_FILE_NAME "ファイルå:"
-#define STR_DISK_SIZE "ディスクサイズ:"
-#define STR_RPM_MODE "回転数モード:"
-#define STR_PROGRESS "進行状æ³:"
+#define STR_FILE_NAME "ファイルå:"
+#define STR_DISK_SIZE "ディスクサイズ:"
+#define STR_RPM_MODE "回転数モード:"
+#define STR_PROGRESS "進行状æ³:"
-#define STR_WIDTH "å¹…:"
-#define STR_HEIGHT "高ã•:"
-#define STR_LOCK_TO_SIZE "ã“ã®ã‚µã‚¤ã‚ºã‚’ãƒãƒƒã‚¯ã™ã‚‹"
+#define STR_WIDTH "å¹…:"
+#define STR_HEIGHT "高ã•:"
+#define STR_LOCK_TO_SIZE "ã“ã®ã‚µã‚¤ã‚ºã‚’ãƒãƒƒã‚¯ã™ã‚‹"
-#define STR_MACHINE_TYPE "マシンタイプ:"
-#define STR_MACHINE "マシン:"
-#define STR_CONFIGURE "è¨å®š"
-#define STR_CPU_TYPE "CPUタイプ:"
-#define STR_CPU_SPEED "速度:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "待機状態:"
-#define STR_MB "MB"
-#define STR_MEMORY "メモリ:"
-#define STR_TIME_SYNC "æ™‚åˆ»åŒæœŸæ©Ÿèƒ½"
-#define STR_DISABLED "無効ã«ã™ã‚‹"
-#define STR_ENABLED_LOCAL "有効ã«ã™ã‚‹ (ç¾åœ°æ™‚é–“)"
-#define STR_ENABLED_UTC "有効ã«ã™ã‚‹ (UTC)"
-#define STR_DYNAREC "動的リコンパイラ"
+#define STR_MACHINE_TYPE "マシンタイプ:"
+#define STR_MACHINE "マシン:"
+#define STR_CONFIGURE "è¨å®š"
+#define STR_CPU_TYPE "CPUタイプ:"
+#define STR_CPU_SPEED "速度:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "待機状態:"
+#define STR_MB "MB"
+#define STR_MEMORY "メモリ:"
+#define STR_TIME_SYNC "æ™‚åˆ»åŒæœŸæ©Ÿèƒ½"
+#define STR_DISABLED "無効ã«ã™ã‚‹"
+#define STR_ENABLED_LOCAL "有効ã«ã™ã‚‹ (ç¾åœ°æ™‚é–“)"
+#define STR_ENABLED_UTC "有効ã«ã™ã‚‹ (UTC)"
+#define STR_DYNAREC "動的リコンパイラ"
-#define STR_VIDEO "ビデオカード:"
-#define STR_VIDEO_2 "ビデオカード 2:"
-#define STR_VOODOO "Voodooグラフィック"
-#define STR_IBM8514 "IBM 8514/aグラフィック"
-#define STR_XGA "XGAグラフィック"
+#define STR_VIDEO "ビデオカード:"
+#define STR_VIDEO_2 "ビデオカード 2:"
+#define STR_VOODOO "Voodooグラフィック"
+#define STR_IBM8514 "IBM 8514/aグラフィック"
+#define STR_XGA "XGAグラフィック"
-#define STR_MOUSE "マウス:"
-#define STR_JOYSTICK "ジョイスティック:"
-#define STR_JOY1 "ジョイスティック1..."
-#define STR_JOY2 "ジョイスティック2..."
-#define STR_JOY3 "ジョイスティック3..."
-#define STR_JOY4 "ジョイスティック4..."
+#define STR_MOUSE "マウス:"
+#define STR_JOYSTICK "ジョイスティック:"
+#define STR_JOY1 "ジョイスティック1..."
+#define STR_JOY2 "ジョイスティック2..."
+#define STR_JOY3 "ジョイスティック3..."
+#define STR_JOY4 "ジョイスティック4..."
-#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_FLOAT "FLOAT32サウンドを使用ã™ã‚‹"
-#define STR_FM_DRIVER "FMシンセドライãƒãƒ¼"
-#define STR_FM_DRV_NUKED "Nuked (高精度化)"
-#define STR_FM_DRV_YMFM "YMFM (より速ã)"
+#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_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_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_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デãƒã‚¤ã‚¹:"
-#define STR_COM3 "COM3デãƒã‚¤ã‚¹:"
-#define STR_COM4 "COM4デãƒã‚¤ã‚¹:"
-#define STR_LPT1 "LPT1デãƒã‚¤ã‚¹:"
-#define STR_LPT2 "LPT2デãƒã‚¤ã‚¹:"
-#define STR_LPT3 "LPT3デãƒã‚¤ã‚¹:"
-#define STR_LPT4 "LPT4デãƒã‚¤ã‚¹:"
-#define STR_SERIAL1 "シリアルãƒãƒ¼ãƒˆ1"
-#define STR_SERIAL2 "シリアルãƒãƒ¼ãƒˆ2"
-#define STR_SERIAL3 "シリアルãƒãƒ¼ãƒˆ3"
-#define STR_SERIAL4 "シリアルãƒãƒ¼ãƒˆ4"
-#define STR_PARALLEL1 "パラレルãƒãƒ¼ãƒˆ1"
-#define STR_PARALLEL2 "パラレルãƒãƒ¼ãƒˆ2"
-#define STR_PARALLEL3 "パラレルãƒãƒ¼ãƒˆ3"
-#define STR_PARALLEL4 "パラレルãƒãƒ¼ãƒˆ4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1デãƒã‚¤ã‚¹:"
+#define STR_COM2 "COM2デãƒã‚¤ã‚¹:"
+#define STR_COM3 "COM3デãƒã‚¤ã‚¹:"
+#define STR_COM4 "COM4デãƒã‚¤ã‚¹:"
+#define STR_LPT1 "LPT1デãƒã‚¤ã‚¹:"
+#define STR_LPT2 "LPT2デãƒã‚¤ã‚¹:"
+#define STR_LPT3 "LPT3デãƒã‚¤ã‚¹:"
+#define STR_LPT4 "LPT4デãƒã‚¤ã‚¹:"
+#define STR_SERIAL1 "シリアルãƒãƒ¼ãƒˆ1"
+#define STR_SERIAL2 "シリアルãƒãƒ¼ãƒˆ2"
+#define STR_SERIAL3 "シリアルãƒãƒ¼ãƒˆ3"
+#define STR_SERIAL4 "シリアルãƒãƒ¼ãƒˆ4"
+#define STR_PARALLEL1 "パラレルãƒãƒ¼ãƒˆ1"
+#define STR_PARALLEL2 "パラレルãƒãƒ¼ãƒˆ2"
+#define STR_PARALLEL3 "パラレルãƒãƒ¼ãƒˆ3"
+#define STR_PARALLEL4 "パラレルãƒãƒ¼ãƒˆ4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "HDコントãƒãƒ¼ãƒ©ãƒ¼:"
-#define STR_FDC "FDコントãƒãƒ¼ãƒ©ãƒ¼:"
-#define STR_IDE_TER "第三ã®IDEコントãƒãƒ¼ãƒ©ãƒ¼"
-#define STR_IDE_QUA "第四ã®IDEコントãƒãƒ¼ãƒ©ãƒ¼"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "コントãƒãƒ¼ãƒ©ãƒ¼1:"
-#define STR_SCSI_2 "コントãƒãƒ¼ãƒ©ãƒ¼2:"
-#define STR_SCSI_3 "コントãƒãƒ¼ãƒ©ãƒ¼3:"
-#define STR_SCSI_4 "コントãƒãƒ¼ãƒ©ãƒ¼4:"
-#define STR_CASSETTE "カセット"
+#define STR_HDC "HDコントãƒãƒ¼ãƒ©ãƒ¼:"
+#define STR_FDC "FDコントãƒãƒ¼ãƒ©ãƒ¼:"
+#define STR_IDE_TER "第三ã®IDEコントãƒãƒ¼ãƒ©ãƒ¼"
+#define STR_IDE_QUA "第四ã®IDEコントãƒãƒ¼ãƒ©ãƒ¼"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "コントãƒãƒ¼ãƒ©ãƒ¼1:"
+#define STR_SCSI_2 "コントãƒãƒ¼ãƒ©ãƒ¼2:"
+#define STR_SCSI_3 "コントãƒãƒ¼ãƒ©ãƒ¼3:"
+#define STR_SCSI_4 "コントãƒãƒ¼ãƒ©ãƒ¼4:"
+#define STR_CASSETTE "カセット"
-#define STR_HDD "ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯:"
-#define STR_NEW "æ–°è¦(&N)..."
-#define STR_EXISTING "既定(&E)..."
-#define STR_REMOVE "除去(&R)"
-#define STR_BUS "ãƒã‚¹:"
-#define STR_CHANNEL "ãƒãƒ£ãƒ³ãƒãƒ«:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯:"
+#define STR_NEW "æ–°è¦(&N)..."
+#define STR_EXISTING "既定(&E)..."
+#define STR_REMOVE "除去(&R)"
+#define STR_BUS "ãƒã‚¹:"
+#define STR_CHANNEL "ãƒãƒ£ãƒ³ãƒãƒ«:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "å‚ç…§(&S)..."
-#define STR_SECTORS "セクター:"
-#define STR_HEADS "ヘッド:"
-#define STR_CYLS "シリンダー:"
-#define STR_SIZE_MB "サイズ(MB):"
-#define STR_TYPE "タイプ:"
-#define STR_IMG_FORMAT "イメージ形å¼:"
-#define STR_BLOCK_SIZE "ブãƒãƒƒã‚¯ã‚µã‚¤ã‚º:"
+#define STR_SPECIFY "å‚ç…§(&S)..."
+#define STR_SECTORS "セクター:"
+#define STR_HEADS "ヘッド:"
+#define STR_CYLS "シリンダー:"
+#define STR_SIZE_MB "サイズ(MB):"
+#define STR_TYPE "タイプ:"
+#define STR_IMG_FORMAT "イメージ形å¼:"
+#define STR_BLOCK_SIZE "ブãƒãƒƒã‚¯ã‚µã‚¤ã‚º:"
-#define STR_FLOPPY_DRIVES "フãƒãƒƒãƒ”ードライブ:"
-#define STR_TURBO "高速タイミング"
-#define STR_CHECKBPB "BPBã‚’ãƒã‚§ãƒƒã‚¯"
-#define STR_CDROM_DRIVES "CD-ROMドライブ:"
-#define STR_CD_SPEED "速度:"
-#define STR_EARLY "アーリードライブ"
+#define STR_FLOPPY_DRIVES "フãƒãƒƒãƒ”ードライブ:"
+#define STR_TURBO "高速タイミング"
+#define STR_CHECKBPB "BPBã‚’ãƒã‚§ãƒƒã‚¯"
+#define STR_CDROM_DRIVES "CD-ROMドライブ:"
+#define STR_CD_SPEED "速度:"
+#define STR_EARLY "アーリードライブ"
-#define STR_MO_DRIVES "å…‰ç£æ°—ドライブ:"
-#define STR_ZIP_DRIVES "ZIPドライブ:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "å…‰ç£æ°—ドライブ:"
+#define STR_ZIP_DRIVES "ZIPドライブ:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTCカード:"
-#define STR_ISAMEM "ISAメモリー拡張カード"
-#define STR_ISAMEM_1 "カード1:"
-#define STR_ISAMEM_2 "カード2:"
-#define STR_ISAMEM_3 "カード3:"
-#define STR_ISAMEM_4 "カード4:"
-#define STR_BUGGER "ISABuggerデãƒã‚¤ã‚¹"
-#define STR_POSTCARD "POSTカード"
+#define STR_ISARTC "ISA RTCカード:"
+#define STR_ISAMEM "ISAメモリー拡張カード"
+#define STR_ISAMEM_1 "カード1:"
+#define STR_ISAMEM_2 "カード2:"
+#define STR_ISAMEM_3 "カード3:"
+#define STR_ISAMEM_4 "カード4:"
+#define STR_BUGGER "ISABuggerデãƒã‚¤ã‚¹"
+#define STR_POSTCARD "POSTカード"
-#define FONT_SIZE 9
-#define FONT_NAME "Meiryo UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Meiryo UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "エラー"
- IDS_2050 "致命的ãªã‚¨ãƒ©ãƒ¼"
- IDS_2051 " - ä¸€æ™‚åœæ¢"
- IDS_2052 "Ctrl+Alt+PgDnã§ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãƒ¢ãƒ¼ãƒ‰ã«æˆ»ã‚Šã¾ã™ã€‚"
- IDS_2053 "速度"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIPイメージ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Boxã§ä½¿ç”¨å¯èƒ½ãªROMイメージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚\n\nROMセットをダウンãƒãƒ¼ãƒ‰ã—ã¦ã€ã€Œromsã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«è§£å‡ã—ã¦ãã ã•ã„。"
- IDS_2057 "(空)"
- IDS_2058 "ZIPイメージ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2059 "高速"
- IDS_2060 "オン"
- IDS_2061 "オフ"
- IDS_2062 "ã™ã¹ã¦ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本的ãªã‚»ã‚¯ã‚¿ãƒ¼ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表é¢ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F)\0*.86F\0"
- IDS_2063 "roms/machinesディレクトリã«ROMãŒãªã„ãŸã‚ã€ãƒžã‚·ãƒ³ã€Œ%hsã€ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。使用å¯èƒ½ãªãƒžã‚·ãƒ³ã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚"
+ 2048 "86Box"
+ IDS_2049 "エラー"
+ IDS_2050 "致命的ãªã‚¨ãƒ©ãƒ¼"
+ IDS_2051 " - ä¸€æ™‚åœæ¢"
+ IDS_2052 "Ctrl+Alt+PgDnã§ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ãƒ¢ãƒ¼ãƒ‰ã«æˆ»ã‚Šã¾ã™ã€‚"
+ IDS_2053 "速度"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIPイメージ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Boxã§ä½¿ç”¨å¯èƒ½ãªROMイメージãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚\n\nROMセットをダウンãƒãƒ¼ãƒ‰ã—ã¦ã€ã€Œromsã€ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«è§£å‡ã—ã¦ãã ã•ã„。"
+ IDS_2057 "(空)"
+ IDS_2058 "ZIPイメージ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2059 "高速"
+ IDS_2060 "オン"
+ IDS_2061 "オフ"
+ IDS_2062 "ã™ã¹ã¦ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本的ãªã‚»ã‚¯ã‚¿ãƒ¼ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表é¢ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F)\0*.86F\0"
+ IDS_2063 "roms/machinesディレクトリã«ROMãŒãªã„ãŸã‚ã€ãƒžã‚·ãƒ³ã€Œ%hsã€ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。使用å¯èƒ½ãªãƒžã‚·ãƒ³ã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "roms/videoディレクトリã«ROMãŒãªã„ãŸã‚ã€ãƒ“デオカード「%hsã€ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。使用å¯èƒ½ãªãƒ“デオカードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚"
- IDS_2065 "マシン"
- IDS_2066 "ç”»é¢è¡¨ç¤º"
- IDS_2067 "入力デãƒã‚¤ã‚¹"
- IDS_2068 "サウンド"
- IDS_2069 "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯"
- IDS_2070 "ãƒãƒ¼ãƒˆ (COM & LPT)"
- IDS_2071 "ストレージコントãƒãƒ¼ãƒ©"
- IDS_2072 "ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯"
- IDS_2073 "フãƒãƒƒãƒ”ー/CD-ROMドライブ"
- IDS_2074 "ãã®ä»–ã®ãƒªãƒ ーãƒãƒ–ルデãƒã‚¤ã‚¹"
- IDS_2075 "ãã®ä»–ã®å‘¨è¾ºè£…ç½®"
- IDS_2076 "表é¢ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F)\0*.86F\0"
- IDS_2077 "クリックã™ã‚‹ã¨ãƒžã‚¦ã‚¹ã‚’ã‚ャプãƒãƒ£ã—ã¾ã™"
- IDS_2078 "F8+F12ã‚ーã§ãƒžã‚¦ã‚¹ã‚’解放ã—ã¾ã™"
- IDS_2079 "F8+F12ã‚ーã¾ãŸã¯ä¸ãƒœã‚¿ãƒ³ã§ãƒžã‚¦ã‚¹ã‚’解放ã—ã¾ã™"
+ IDS_2064 "roms/videoディレクトリã«ROMãŒãªã„ãŸã‚ã€ãƒ“デオカード「%hsã€ã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。使用å¯èƒ½ãªãƒ“デオカードã«åˆ‡ã‚Šæ›¿ãˆã¾ã™ã€‚"
+ IDS_2065 "マシン"
+ IDS_2066 "ç”»é¢è¡¨ç¤º"
+ IDS_2067 "入力デãƒã‚¤ã‚¹"
+ IDS_2068 "サウンド"
+ IDS_2069 "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯"
+ IDS_2070 "ãƒãƒ¼ãƒˆ (COM & LPT)"
+ IDS_2071 "ストレージコントãƒãƒ¼ãƒ©"
+ IDS_2072 "ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯"
+ IDS_2073 "フãƒãƒƒãƒ”ー/CD-ROMドライブ"
+ IDS_2074 "ãã®ä»–ã®ãƒªãƒ ーãƒãƒ–ルデãƒã‚¤ã‚¹"
+ IDS_2075 "ãã®ä»–ã®å‘¨è¾ºè£…ç½®"
+ IDS_2076 "表é¢ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F)\0*.86F\0"
+ IDS_2077 "クリックã™ã‚‹ã¨ãƒžã‚¦ã‚¹ã‚’ã‚ャプãƒãƒ£ã—ã¾ã™"
+ IDS_2078 "F8+F12ã‚ーã§ãƒžã‚¦ã‚¹ã‚’解放ã—ã¾ã™"
+ IDS_2079 "F8+F12ã‚ーã¾ãŸã¯ä¸ãƒœã‚¿ãƒ³ã§ãƒžã‚¦ã‚¹ã‚’解放ã—ã¾ã™"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "FluidSynthãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“"
- IDS_2081 "ãƒã‚¹"
- IDS_2082 "ファイル"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "FluidSynthãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“"
+ IDS_2081 "ãƒã‚¹"
+ IDS_2082 "ファイル"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "BPBã‚’ãƒã‚§ãƒƒã‚¯"
- IDS_2089 "KB"
- IDS_2090 "ビデオレンダラーãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“。"
- IDS_2091 "既定値"
- IDS_2092 "%iã¤ã®å¾…機状態"
- IDS_2093 "タイプ"
- IDS_2094 "PCapã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã«å¤±æ•—ã—ã¾ã—ãŸ"
- IDS_2095 "PCapデãƒã‚¤ã‚¹ãŒã‚りã¾ã›ã‚“"
- IDS_2096 "䏿£ãªPCapデãƒã‚¤ã‚¹ã§ã™"
- IDS_2097 "標準ジョイスティック(2ボタン)"
- IDS_2098 "標準ジョイスティック(4ボタン)"
- IDS_2099 "標準ジョイスティック(6ボタン)"
- IDS_2100 "標準ジョイスティック(8ボタン)"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "ãªã—"
- IDS_2105 "ã‚ーボードアクセラレータをèªã¿è¾¼ã‚ã¾ã›ã‚“。"
- IDS_2106 "生ã®å…¥åŠ›ãŒç™»éŒ²ã§ãã¾ã›ã‚“。"
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "フãƒãƒƒãƒ”ー %i (%s): %ls"
- IDS_2110 "ã™ã¹ã¦ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0アドãƒãƒ³ã‚¹ãƒ‰ã‚»ã‚¯ã‚¿ãƒ¼ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本セクターイメージ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0フラックスイメージ (*.FDI)\0*.FDI\0表é¢ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F;*.MFM)\0*.86F;*.MFM\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2111 "FreeTypeãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“"
- IDS_2112 "SDLãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“。SDL2.dllãŒå¿…è¦ã§ã™"
- IDS_2113 "使用ä¸ã®ãƒžã‚·ãƒ³ã‚’ãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆã—ã¾ã™ã‹ï¼Ÿ"
- IDS_2114 "86Boxを終了ã—ã¾ã™ã‹ï¼Ÿ"
- IDS_2115 "GhostscriptãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“"
- IDS_2116 "å…‰ç£æ°— %i (%ls): %ls"
- IDS_2117 "å…‰ç£æ°—イメージ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2118 "86Boxã¸ã‚ˆã†ã“ãï¼"
- IDS_2119 "内蔵コントãƒãƒ¼ãƒ©ãƒ¼"
- IDS_2120 "終了"
- IDS_2121 "ROMãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
- IDS_2122 "è¨å®šã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ"
- IDS_2123 "ä¿å˜ã™ã‚‹ã¨ä½¿ç”¨ä¸ã®ãƒžã‚·ãƒ³ãŒãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆã•れã¾ã™ã€‚"
- IDS_2124 "ä¿å˜"
- IDS_2125 "86Boxã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "BPBã‚’ãƒã‚§ãƒƒã‚¯"
+ IDS_2089 "KB"
+ IDS_2090 "ビデオレンダラーãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“。"
+ IDS_2091 "既定値"
+ IDS_2092 "%iã¤ã®å¾…機状態"
+ IDS_2093 "タイプ"
+ IDS_2094 "PCapã®ã‚»ãƒƒãƒˆã‚¢ãƒƒãƒ—ã«å¤±æ•—ã—ã¾ã—ãŸ"
+ IDS_2095 "PCapデãƒã‚¤ã‚¹ãŒã‚りã¾ã›ã‚“"
+ IDS_2096 "䏿£ãªPCapデãƒã‚¤ã‚¹ã§ã™"
+ IDS_2097 "標準ジョイスティック(2ボタン)"
+ IDS_2098 "標準ジョイスティック(4ボタン)"
+ IDS_2099 "標準ジョイスティック(6ボタン)"
+ IDS_2100 "標準ジョイスティック(8ボタン)"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "ãªã—"
+ IDS_2105 "ã‚ーボードアクセラレータをèªã¿è¾¼ã‚ã¾ã›ã‚“。"
+ IDS_2106 "生ã®å…¥åŠ›ãŒç™»éŒ²ã§ãã¾ã›ã‚“。"
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "フãƒãƒƒãƒ”ー %i (%s): %ls"
+ IDS_2110 "ã™ã¹ã¦ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0アドãƒãƒ³ã‚¹ãƒ‰ã‚»ã‚¯ã‚¿ãƒ¼ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本セクターイメージ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0フラックスイメージ (*.FDI)\0*.FDI\0表é¢ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.86F;*.MFM)\0*.86F;*.MFM\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2111 "FreeTypeãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“"
+ IDS_2112 "SDLãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“。SDL2.dllãŒå¿…è¦ã§ã™"
+ IDS_2113 "使用ä¸ã®ãƒžã‚·ãƒ³ã‚’ãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆã—ã¾ã™ã‹ï¼Ÿ"
+ IDS_2114 "86Boxを終了ã—ã¾ã™ã‹ï¼Ÿ"
+ IDS_2115 "GhostscriptãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“"
+ IDS_2116 "å…‰ç£æ°— %i (%ls): %ls"
+ IDS_2117 "å…‰ç£æ°—イメージ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2118 "86Boxã¸ã‚ˆã†ã“ãï¼"
+ IDS_2119 "内蔵コントãƒãƒ¼ãƒ©ãƒ¼"
+ IDS_2120 "終了"
+ IDS_2121 "ROMãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
+ IDS_2122 "è¨å®šã‚’ä¿å˜ã—ã¾ã™ã‹ï¼Ÿ"
+ IDS_2123 "ä¿å˜ã™ã‚‹ã¨ä½¿ç”¨ä¸ã®ãƒžã‚·ãƒ³ãŒãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆã•れã¾ã™ã€‚"
+ IDS_2124 "ä¿å˜"
+ IDS_2125 "86Boxã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "å¤ã„パソコンã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ãƒ¼\n\n著者: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nGNU General Public License version 2以é™ã§ãƒªãƒªãƒ¼ã‚¹ã•れã¦ã„ã¾ã™ã€‚詳ã—ã㯠LICENSE ã‚’ã”覧ãã ã•ã„。"
- IDS_2128 "OK"
- IDS_2129 "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“"
+ IDS_2127 "å¤ã„パソコンã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚¿ãƒ¼\n\n著者: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nGNU General Public License version 2以é™ã§ãƒªãƒªãƒ¼ã‚¹ã•れã¦ã„ã¾ã™ã€‚詳ã—ã㯠LICENSE ã‚’ã”覧ãã ã•ã„。"
+ IDS_2128 "OK"
+ IDS_2129 "ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 LIB_NAME_PCAP "ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã‚‹ã‹ã€" LIB_NAME_PCAP "ã«å¯¾å¿œã—ãŸãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã•れã¦ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。"
- IDS_2131 "䏿£ãªè¨å®šã§ã™"
+ IDS_2130 LIB_NAME_PCAP "ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã‚‹ã‹ã€" LIB_NAME_PCAP "ã«å¯¾å¿œã—ãŸãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«æŽ¥ç¶šã•れã¦ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。"
+ IDS_2131 "䏿£ãªè¨å®šã§ã™"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 "ESC/Pプリンタã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯" LIB_NAME_FREETYPE "ãŒå¿…è¦ã§ã™ã€‚"
+ IDS_2132 "ESC/Pプリンタã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã«ã¯" LIB_NAME_FREETYPE "ãŒå¿…è¦ã§ã™ã€‚"
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 "PostScriptファイルをPDFã«è‡ªå‹•変æ›ã™ã‚‹ã«ã¯" LIB_NAME_GS "ãŒå¿…è¦ã§ã™ã€‚\n\n汎用PostScriptプリンターã«é€ä¿¡ã•れãŸãƒ‰ã‚ュメントã¯ã€PostScript(.ps)ファイルã¨ã—ã¦ä¿å˜ã•れã¾ã™ã€‚"
+ IDS_2133 "PostScriptファイルをPDFã«è‡ªå‹•変æ›ã™ã‚‹ã«ã¯" LIB_NAME_GS "ãŒå¿…è¦ã§ã™ã€‚\n\n汎用PostScriptプリンターã«é€ä¿¡ã•れãŸãƒ‰ã‚ュメントã¯ã€PostScript(.ps)ファイルã¨ã—ã¦ä¿å˜ã•れã¾ã™ã€‚"
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 "FluidSynthã®MIDI出力ã«ã¯" LIB_NAME_FLUIDSYNTH "ãŒå¿…è¦ã§ã™ã€‚"
- IDS_2135 "フルスクリーンã«åˆ‡ã‚Šæ›¿ãˆã¦ã„ã¾ã™"
- IDS_2136 "今後ã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ãªã„"
- IDS_2137 "終了ã—ãªã„"
- IDS_2138 "リセット"
- IDS_2139 "リセットã—ãªã„"
- IDS_2140 "å…‰ç£æ°—イメージ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2141 "CD-ROMイメージ (*.ISO;*.CUE)\0*.ISO;*.CUE\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2142 "%hs デãƒã‚¤ã‚¹ã®è¨å®š"
+ IDS_2134 "FluidSynthã®MIDI出力ã«ã¯" LIB_NAME_FLUIDSYNTH "ãŒå¿…è¦ã§ã™ã€‚"
+ IDS_2135 "フルスクリーンã«åˆ‡ã‚Šæ›¿ãˆã¦ã„ã¾ã™"
+ IDS_2136 "今後ã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’表示ã—ãªã„"
+ IDS_2137 "終了ã—ãªã„"
+ IDS_2138 "リセット"
+ IDS_2139 "リセットã—ãªã„"
+ IDS_2140 "å…‰ç£æ°—イメージ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2141 "CD-ROMイメージ (*.ISO;*.CUE)\0*.ISO;*.CUE\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2142 "%hs デãƒã‚¤ã‚¹ã®è¨å®š"
IDS_2143 "モニターã®ã‚¹ãƒªãƒ¼ãƒ—モード"
- IDS_2144 "OpenGLシェーダー (*.GLSL)\0*.GLSL\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2145 "OpenGLè¨å®š"
- IDS_2146 "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„è¨å®šã‚’èªã¿è¾¼ã‚“ã§ã„ã¾ã™"
- IDS_2147 "é¸æŠžã—ãŸãƒžã‚·ãƒ³ã«åŸºã¥ãCPUタイプã®ãƒ•ィルタリングã¯ã€ã“ã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ãƒˆã•れãŸãƒžã‚·ãƒ³ã§ã¯ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚\n\nã“れã«ã‚ˆã‚Šã€é¸æŠžã—ãŸãƒžã‚·ãƒ³ã¨äº’æ›æ€§ã®ãªã„CPUãŒé¸æŠžã§ãã¾ã™ã€‚ãŸã ã—ã€ãƒžã‚·ãƒ³ã®BIOSã¾ãŸã¯ä»–ã®ã‚½ãƒ•トウェアã¨ã®äº’æ›æ€§ãŒå¤±ã‚れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n\nã“ã®è¨å®šã®æœ‰åŠ¹åŒ–ã¯å…¬å¼ã‚µãƒãƒ¼ãƒˆãŒã§ãã¾ã›ã‚“。ã¾ãŸã€ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆãŒç„¡åйã¨ã—ã¦é–‰ã˜ã‚‰ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ã€‚"
- IDS_2148 "続行"
- IDS_2149 "カセット: %s"
- IDS_2150 "カセットイメージ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2151 "カートリッジ %i: %ls"
- IDS_2152 "カートリッジイメージ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_2153 "レンダラーã®åˆæœŸåŒ–エラー"
- IDS_2154 "OpenGL (3.0コア) レンダラーãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚別ã®ãƒ¬ãƒ³ãƒ€ãƒ©ãƒ¼ã‚’使用ã—ã¦ãã ã•ã„。"
- IDS_2155 "実行をå†é–‹"
- IDS_2156 "å®Ÿè¡Œã‚’ä¸€æ™‚åœæ¢"
- IDS_2157 "Ctrl+Alt+DELを押ã—"
- IDS_2158 "Ctrl+Alt+Escを押ã—"
- IDS_2159 "ãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆ"
- IDS_2160 "ACPIシャットダウン"
- IDS_2161 "è¨å®š"
+ IDS_2144 "OpenGLシェーダー (*.GLSL)\0*.GLSL\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2145 "OpenGLè¨å®š"
+ IDS_2146 "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„è¨å®šã‚’èªã¿è¾¼ã‚“ã§ã„ã¾ã™"
+ IDS_2147 "é¸æŠžã—ãŸãƒžã‚·ãƒ³ã«åŸºã¥ãCPUタイプã®ãƒ•ィルタリングã¯ã€ã“ã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ãƒˆã•れãŸãƒžã‚·ãƒ³ã§ã¯ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚\n\nã“れã«ã‚ˆã‚Šã€é¸æŠžã—ãŸãƒžã‚·ãƒ³ã¨äº’æ›æ€§ã®ãªã„CPUãŒé¸æŠžã§ãã¾ã™ã€‚ãŸã ã—ã€ãƒžã‚·ãƒ³ã®BIOSã¾ãŸã¯ä»–ã®ã‚½ãƒ•トウェアã¨ã®äº’æ›æ€§ãŒå¤±ã‚れるå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n\nã“ã®è¨å®šã®æœ‰åŠ¹åŒ–ã¯å…¬å¼ã‚µãƒãƒ¼ãƒˆãŒã§ãã¾ã›ã‚“。ã¾ãŸã€ãƒã‚°ãƒ¬ãƒãƒ¼ãƒˆãŒç„¡åйã¨ã—ã¦é–‰ã˜ã‚‰ã‚Œã‚‹å ´åˆãŒã‚りã¾ã™ã€‚"
+ IDS_2148 "続行"
+ IDS_2149 "カセット: %s"
+ IDS_2150 "カセットイメージ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2151 "カートリッジ %i: %ls"
+ IDS_2152 "カートリッジイメージ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_2153 "レンダラーã®åˆæœŸåŒ–エラー"
+ IDS_2154 "OpenGL (3.0コア) レンダラーãŒåˆæœŸåŒ–ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚別ã®ãƒ¬ãƒ³ãƒ€ãƒ©ãƒ¼ã‚’使用ã—ã¦ãã ã•ã„。"
+ IDS_2155 "実行をå†é–‹"
+ IDS_2156 "å®Ÿè¡Œã‚’ä¸€æ™‚åœæ¢"
+ IDS_2157 "Ctrl+Alt+DELを押ã—"
+ IDS_2158 "Ctrl+Alt+Escを押ã—"
+ IDS_2159 "ãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆ"
+ IDS_2160 "ACPIシャットダウン"
+ IDS_2161 "è¨å®š"
IDS_2162 "アーリードライブ"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLLã¾ãŸã¯ESDIã®CD-ROMドライブãŒå˜åœ¨ã—ã¾ã›ã‚“"
- IDS_4100 "カスタム..."
- IDS_4101 "カスタム(大型)..."
- IDS_4102 "æ–°è¦ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’è¿½åŠ "
- IDS_4103 "既定ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’è¿½åŠ "
- IDS_4104 "HDIディスクイメージã¯4GBã‚’è¶…ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
- IDS_4105 "ディスクイメージã¯127GBã‚’è¶…ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
- IDS_4106 "ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_4107 "ファイルã®èªã¿è¾¼ã¿ãŒã§ãã¾ã›ã‚“"
- IDS_4108 "ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›¸ãè¾¼ã¿ãŒã§ãã¾ã›ã‚“"
- IDS_4109 "512以外ã®ã‚»ã‚¯ã‚¿ã‚µã‚¤ã‚ºã‚’æŒã¤HDIã¾ãŸã¯HDXイメージã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。"
- IDS_4110 "USBã¯ã¾ã サãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“"
- IDS_4111 "ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å˜åœ¨ã—ã¾ã™"
- IDS_4112 "有効ãªãƒ•ァイルåを指定ã—ã¦ãã ã•ã„。"
- IDS_4113 "ディスクイメージãŒä½œæˆã•れã¾ã—ãŸ"
- IDS_4114 "ファイルãŒå˜åœ¨ã—ã€èªã¿å–りå¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
- IDS_4115 "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ›¸ãè¾¼ã¿å¯èƒ½ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å˜ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
- IDS_4116 "ディスクイメージã®ã‚µã‚¤ã‚ºãŒå¤§ãã™ãŽã¾ã™"
- IDS_4117 "æ–°è¦ãƒ‰ãƒ©ã‚¤ãƒ–をパーティション分割ã—ã€ãƒ•ォーマットを必ãšã—ã¨ã„ã¦ãã ã•ã„。"
- IDS_4118 "é¸æŠžã—ãŸãƒ•ァイルãŒä¸Šæ›¸ãã•れã¾ã™ã€‚使ã£ã¦ã„ã„ã§ã™ã‹ï¼Ÿ"
- IDS_4119 "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ディスクイメージ"
- IDS_4120 "上書ã"
- IDS_4121 "上書ãã—ãªã„"
- IDS_4122 "Rawイメージ (.img)"
- IDS_4123 "HDIイメージ (.hdi)"
- IDS_4124 "HDXイメージ (.hdx)"
- IDS_4125 "VHD(容é‡å›ºå®š)(.vhd)"
- IDS_4126 "VHD(容é‡å¯å¤‰)(.vhd)"
- IDS_4127 "VHD(差分)(.vhd)"
- IDS_4128 "大型ブãƒãƒƒã‚¯ (2 MB)"
- IDS_4129 "å°åž‹ãƒ–ãƒãƒƒã‚¯ (512 KB)"
- IDS_4130 "VHDファイル (*.VHD)\0*.VHD\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
- IDS_4131 "親VHDã®é¸æŠž"
- IDS_4132 "親イメージãŒãƒ‡ã‚£ãƒ•ァレンシングイメージã®ä½œæˆã®å¾Œã«ä¿®æ£ã—ãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n\nイメージファイルã®ç§»å‹•ã€ã‚³ãƒ”ーã¾ãŸã¯ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’作æˆã—ãŸãƒ—ãƒã‚°ãƒ©ãƒ ã«ãƒã‚°ãŒç™ºç”Ÿã—ãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n\nタイムスタンプを修æ£ã—ã¾ã™ã‹ï¼Ÿ"
- IDS_4133 "親ディスクã¨åディスクã®ã‚¿ã‚¤ãƒ スタンプãŒä¸€è‡´ã—ã¾ã›ã‚“"
- IDS_4134 "VHD ã®ã‚¿ã‚¤ãƒ スタンプを修æ£ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLLã¾ãŸã¯ESDIã®CD-ROMドライブãŒå˜åœ¨ã—ã¾ã›ã‚“"
+ IDS_4100 "カスタム..."
+ IDS_4101 "カスタム(大型)..."
+ IDS_4102 "æ–°è¦ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’è¿½åŠ "
+ IDS_4103 "既定ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’è¿½åŠ "
+ IDS_4104 "HDIディスクイメージã¯4GBã‚’è¶…ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+ IDS_4105 "ディスクイメージã¯127GBã‚’è¶…ãˆã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
+ IDS_4106 "ãƒãƒ¼ãƒ‰ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_4107 "ファイルã®èªã¿è¾¼ã¿ãŒã§ãã¾ã›ã‚“"
+ IDS_4108 "ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›¸ãè¾¼ã¿ãŒã§ãã¾ã›ã‚“"
+ IDS_4109 "512以外ã®ã‚»ã‚¯ã‚¿ã‚µã‚¤ã‚ºã‚’æŒã¤HDIã¾ãŸã¯HDXイメージã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。"
+ IDS_4110 "USBã¯ã¾ã サãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“"
+ IDS_4111 "ãƒ‡ã‚£ã‚¹ã‚¯ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å˜åœ¨ã—ã¾ã™"
+ IDS_4112 "有効ãªãƒ•ァイルåを指定ã—ã¦ãã ã•ã„。"
+ IDS_4113 "ディスクイメージãŒä½œæˆã•れã¾ã—ãŸ"
+ IDS_4114 "ファイルãŒå˜åœ¨ã—ã€èªã¿å–りå¯èƒ½ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
+ IDS_4115 "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ›¸ãè¾¼ã¿å¯èƒ½ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ä¿å˜ã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
+ IDS_4116 "ディスクイメージã®ã‚µã‚¤ã‚ºãŒå¤§ãã™ãŽã¾ã™"
+ IDS_4117 "æ–°è¦ãƒ‰ãƒ©ã‚¤ãƒ–をパーティション分割ã—ã€ãƒ•ォーマットを必ãšã—ã¨ã„ã¦ãã ã•ã„。"
+ IDS_4118 "é¸æŠžã—ãŸãƒ•ァイルãŒä¸Šæ›¸ãã•れã¾ã™ã€‚使ã£ã¦ã„ã„ã§ã™ã‹ï¼Ÿ"
+ IDS_4119 "サãƒãƒ¼ãƒˆã•れã¦ã„ãªã„ディスクイメージ"
+ IDS_4120 "上書ã"
+ IDS_4121 "上書ãã—ãªã„"
+ IDS_4122 "Rawイメージ (.img)"
+ IDS_4123 "HDIイメージ (.hdi)"
+ IDS_4124 "HDXイメージ (.hdx)"
+ IDS_4125 "VHD(容é‡å›ºå®š)(.vhd)"
+ IDS_4126 "VHD(容é‡å¯å¤‰)(.vhd)"
+ IDS_4127 "VHD(差分)(.vhd)"
+ IDS_4128 "大型ブãƒãƒƒã‚¯ (2 MB)"
+ IDS_4129 "å°åž‹ãƒ–ãƒãƒƒã‚¯ (512 KB)"
+ IDS_4130 "VHDファイル (*.VHD)\0*.VHD\0ã™ã¹ã¦ã®ãƒ•ァイル (*.*)\0*.*\0"
+ IDS_4131 "親VHDã®é¸æŠž"
+ IDS_4132 "親イメージãŒãƒ‡ã‚£ãƒ•ァレンシングイメージã®ä½œæˆã®å¾Œã«ä¿®æ£ã—ãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n\nイメージファイルã®ç§»å‹•ã€ã‚³ãƒ”ーã¾ãŸã¯ã“ã®ãƒ‡ã‚£ã‚¹ã‚¯ã‚’作æˆã—ãŸãƒ—ãƒã‚°ãƒ©ãƒ ã«ãƒã‚°ãŒç™ºç”Ÿã—ãŸå¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚\n\nタイムスタンプを修æ£ã—ã¾ã™ã‹ï¼Ÿ"
+ IDS_4133 "親ディスクã¨åディスクã®ã‚¿ã‚¤ãƒ スタンプãŒä¸€è‡´ã—ã¾ã›ã‚“"
+ IDS_4134 "VHD ã®ã‚¿ã‚¤ãƒ スタンプを修æ£ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "使用ã—ãªã„"
- IDS_5381 "ATAPI"
+ IDS_5376 "使用ã—ãªã„"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "使用ã—ãªã„"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "使用ã—ãªã„"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (クラスター1024)"
- IDS_5898 "DMF (クラスター2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (クラスター1024)"
+ IDS_5898 "DMF (クラスター2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "è¦å®šã®å›žè»¢æ•°"
- IDS_6145 "1%低ã„回転数"
- IDS_6146 "1.5%低ã„回転数"
- IDS_6147 "2%低ã„回転数"
+ IDS_6144 "è¦å®šã®å›žè»¢æ•°"
+ IDS_6145 "1%低ã„回転数"
+ IDS_6146 "1.5%低ã„回転数"
+ IDS_6147 "2%低ã„回転数"
- IDS_7168 "(システム既定値)"
+ IDS_7168 "(システム既定値)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Japanese resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/ko-KR.rc b/src/win/languages/ko-KR.rc
index d43056478..49dfe34ba 100644
--- a/src/win/languages/ko-KR.rc
+++ b/src/win/languages/ko-KR.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "ë™ìž‘(&A)"
BEGIN
- MENUITEM "키보드는 캡ì³ê°€ 필요함(&K)", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "우측CTRL로 좌측ALT ìž…ë ¥(&R)", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "키보드는 캡ì³ê°€ 필요함(&K)", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "우측 CTRL로 좌측 ALT ìž…ë ¥(&R)", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "재시작(&H)...", IDM_ACTION_HRESET
- MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "재시작(&H)...", IDM_ACTION_HRESET
+ MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "ì¼ì‹œì •ì§€(&P)", IDM_ACTION_PAUSE
+ MENUITEM "ì¼ì‹œì •ì§€(&P)", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "ë내기(&X)...", IDM_ACTION_EXIT
+ MENUITEM "ë내기(&X)...", IDM_ACTION_EXIT
END
POPUP "표시(&V)"
BEGIN
- MENUITEM "ìƒíƒœ ë°” 숨기기(&H)", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "ìƒíƒœ ë°” 숨기기(&H)", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "툴바 숨기기", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "ì°½ í¬ê¸° ì¡°ì ˆ 가능하게 하기(&R)", IDM_VID_RESIZE
- MENUITEM "ì°½ í¬ê¸°ì™€ 위치를 기억하기(&E)", IDM_VID_REMEMBER
+ MENUITEM "기본 모니터가 아닌 모니터 표시", IDM_VID_MONITORS
+ MENUITEM "ì°½ í¬ê¸° ì¡°ì ˆ 가능하게 하기(&R)", IDM_VID_RESIZE
+ MENUITEM "ì°½ í¬ê¸°ì™€ 위치를 기억하기(&E)", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "ë Œë”러(&N)"
BEGIN
- MENUITEM "SDL (소프트웨어)(&S)", IDM_VID_SDL_SW
- MENUITEM "SDL (하드웨어)(&H)", IDM_VID_SDL_HW
- MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
- MENUITEM "OpenGL (3.0 코어)(&G)", IDM_VID_OPENGL_CORE
+ MENUITEM "SDL (소프트웨어)(&S)", IDM_VID_SDL_SW
+ MENUITEM "SDL (하드웨어)(&H)", IDM_VID_SDL_HW
+ MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
+ MENUITEM "OpenGL (3.0 코어)(&G)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "VNC(&V)", IDM_VID_VNC
+ MENUITEM "VNC(&V)", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "ì°½ í¬ê¸° ì§€ì •í•˜ê¸°...", IDM_VID_SPECIFY_DIM
- MENUITEM "화면 ë¹„ìœ¨ì„ 4:3으로 맞추기(&O)", IDM_VID_FORCE43
+ MENUITEM "ì°½ í¬ê¸° ì§€ì •í•˜ê¸°...", IDM_VID_SPECIFY_DIM
+ MENUITEM "화면 ë¹„ìœ¨ì„ 4:3으로 맞추기(&O)", IDM_VID_FORCE43
POPUP "창 표시 배율(&W)"
BEGIN
- MENUITEM "0.5ë°°(&0)", IDM_VID_SCALE_1X
- MENUITEM "1ë°°(&1)", IDM_VID_SCALE_2X
- MENUITEM "1.5ë°°(&5)", IDM_VID_SCALE_3X
- MENUITEM "2ë°°(&2)", IDM_VID_SCALE_4X
- MENUITEM "&3ë°°", IDM_VID_SCALE_5X
- MENUITEM "&4ë°°", IDM_VID_SCALE_6X
- MENUITEM "&5ë°°", IDM_VID_SCALE_7X
- MENUITEM "&6ë°°", IDM_VID_SCALE_8X
- MENUITEM "&7ë°°", IDM_VID_SCALE_9X
- MENUITEM "&8ë°°", IDM_VID_SCALE_10X
+ MENUITEM "0.5ë°°(&0)", IDM_VID_SCALE_1X
+ MENUITEM "1ë°°(&1)", IDM_VID_SCALE_2X
+ MENUITEM "1.5ë°°(&5)", IDM_VID_SCALE_3X
+ MENUITEM "2ë°°(&2)", IDM_VID_SCALE_4X
+ MENUITEM "&3ë°°", IDM_VID_SCALE_5X
+ MENUITEM "&4ë°°", IDM_VID_SCALE_6X
+ MENUITEM "&5ë°°", IDM_VID_SCALE_7X
+ MENUITEM "&6ë°°", IDM_VID_SCALE_8X
+ MENUITEM "&7ë°°", IDM_VID_SCALE_9X
+ MENUITEM "&8ë°°", IDM_VID_SCALE_10X
END
POPUP "í•„í„° 형ì‹"
BEGIN
- MENUITEM "최근방 ì´ì›ƒ 보간법(&N)", IDM_VID_FILTER_NEAREST
- MENUITEM "ì„ í˜• 보간법(&L)", IDM_VID_FILTER_LINEAR
+ MENUITEM "최근방 ì´ì›ƒ 보간법(&N)", IDM_VID_FILTER_NEAREST
+ MENUITEM "ì„ í˜• 보간법(&L)", IDM_VID_FILTER_LINEAR
END
- MENUITEM "HiDPI 스케ì¼ë§(&D)", IDM_VID_HIDPI
+ MENUITEM "HiDPI 스케ì¼ë§(&D)", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "ì „ì²´ 화면(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "ì „ì²´ 화면(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "ì „ì²´ 화면 비율(&S)"
BEGIN
- MENUITEM "ì „ì²´ 화면으로 확대(&F)", IDM_VID_FS_FULL
- MENUITEM "4:3(&4)", IDM_VID_FS_43
+ MENUITEM "ì „ì²´ 화면으로 확대(&F)", IDM_VID_FS_FULL
+ MENUITEM "4:3(&4)", IDM_VID_FS_43
MENUITEM "ì •ì‚¬ê°í˜• 픽셀 (비율 ìœ ì§€)(&S)", IDM_VID_FS_KEEPRATIO
- MENUITEM "ì •ìˆ˜ë°° 확대(&I)", IDM_VID_FS_INT
+ MENUITEM "ì •ìˆ˜ë°° 확대(&I)", IDM_VID_FS_INT
END
POPUP "E&GA/(S)VGA ì„¤ì •"
BEGIN
- MENUITEM "ìƒ‰ìƒ ë°˜ì „ëœ VGA 모니터(&I)", IDM_VID_INVERT
+ MENUITEM "ìƒ‰ìƒ ë°˜ì „ëœ VGA 모니터(&I)", IDM_VID_INVERT
POPUP "VGA 화면 종류(&T)"
BEGIN
- MENUITEM "RGB 천연색(&C)", IDM_VID_GRAY_RGB
- MENUITEM "RGB 회색조(&R)", IDM_VID_GRAY_MONO
- MENUITEM "주황색 모니터(&A)", IDM_VID_GRAY_AMBER
- MENUITEM "녹색 모니터(&G)", IDM_VID_GRAY_GREEN
- MENUITEM "í°ìƒ‰ 모니터(&W)", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB 천연색(&C)", IDM_VID_GRAY_RGB
+ MENUITEM "RGB 회색조(&R)", IDM_VID_GRAY_MONO
+ MENUITEM "주황색 모니터(&A)", IDM_VID_GRAY_AMBER
+ MENUITEM "녹색 모니터(&G)", IDM_VID_GRAY_GREEN
+ MENUITEM "í°ìƒ‰ 모니터(&W)", IDM_VID_GRAY_WHITE
END
POPUP "회색조 표현방ì‹(&C)"
BEGIN
- MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
- MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
- MENUITEM "í‰ê· ê°’(&A)", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
+ MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
+ MENUITEM "í‰ê· ê°’(&A)", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGA 오버스캔(&G)", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGA 오버스캔(&G)", IDM_VID_OVERSCAN
MENUITEM "í‘ë°± 표시를 위한 ë°ê¸° ì¡°ì •(&M)", IDM_VID_CGACON
END
- MENUITEM "미디어(&M)", IDM_MEDIA
+ MENUITEM "미디어(&M)", IDM_MEDIA
POPUP "ë„구(&T)"
BEGIN
- MENUITEM "ì„¤ì •(&S)...", IDM_CONFIG
- MENUITEM "ìƒíƒœ ë°” ì•„ì´ì½˜ ê°±ì‹ í•˜ê¸°(&U)", IDM_UPDATE_ICONS
+ MENUITEM "ì„¤ì •(&S)...", IDM_CONFIG
+ MENUITEM "ìƒíƒœ ë°” ì•„ì´ì½˜ ê°±ì‹ í•˜ê¸°(&U)", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "스í¬ë¦°ìƒ· ì°ê¸°(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "스í¬ë¦°ìƒ· ì°ê¸°(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "í™˜ê²½ì„¤ì •(&P)...", IDM_PREFERENCES
+ MENUITEM "í™˜ê²½ì„¤ì •(&P)...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "디스코드 ì—°ë™ í™œì„±í™”í•˜ê¸°(&D)", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "ìŒëŸ‰ ì¦í(&G)...", IDM_SND_GAIN
+ MENUITEM "ìŒëŸ‰ ì¦í(&G)...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "ì¶”ì 시작하기\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "ì¶”ì ë내기\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "ì¶”ì 시작하기\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "ì¶”ì ë내기\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "ë„움ë§(&H)"
BEGIN
- MENUITEM "문서(&D)...", IDM_DOCS
- MENUITEM "86Boxì— ëŒ€í•´(&A)...", IDM_ABOUT
+ MENUITEM "문서(&D)...", IDM_DOCS
+ MENUITEM "86Boxì— ëŒ€í•´(&A)...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "ë…¹ìŒí•˜ê¸°(&R)", IDM_CASSETTE_RECORD
- MENUITEM "재ìƒí•˜ê¸°(&P)", IDM_CASSETTE_PLAY
- MENUITEM "맨앞으로 ë˜ê°ê¸°(&R)", IDM_CASSETTE_REWIND
- MENUITEM "맨ë으로 빨리ê°ê¸°(&F)", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "ë…¹ìŒí•˜ê¸°(&R)", IDM_CASSETTE_RECORD
+ MENUITEM "재ìƒí•˜ê¸°(&P)", IDM_CASSETTE_PLAY
+ MENUITEM "맨앞으로 ë˜ê°ê¸°(&R)", IDM_CASSETTE_REWIND
+ MENUITEM "맨ë으로 빨리ê°ê¸°(&F)", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "꺼내기(&J)", IDM_CASSETTE_EJECT
+ MENUITEM "꺼내기(&J)", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "ì´ë¯¸ì§€(&I)...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "ì´ë¯¸ì§€(&I)...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "꺼내기(&J)", IDM_CARTRIDGE_EJECT
+ MENUITEM "꺼내기(&J)", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "86F로 보내기(&X)...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "86F로 보내기(&X)...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "꺼내기(&J)", IDM_FLOPPY_EJECT
+ MENUITEM "꺼내기(&J)", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "ìŒì†Œê±°(&M)", IDM_CDROM_MUTE
+ MENUITEM "ìŒì†Œê±°(&M)", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "비었ìŒ(&M)", IDM_CDROM_EMPTY
- MENUITEM "ì´ì „ ì´ë¯¸ì§€ 다시 불러오기(&R)", IDM_CDROM_RELOAD
+ MENUITEM "비었ìŒ(&M)", IDM_CDROM_EMPTY
+ MENUITEM "ì´ì „ ì´ë¯¸ì§€ 다시 불러오기(&R)", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "ì´ë¯¸ì§€(&I)...", IDM_CDROM_IMAGE
- MENUITEM "í´ë”(&F)...", IDM_CDROM_DIR
+ MENUITEM "ì´ë¯¸ì§€(&I)...", IDM_CDROM_IMAGE
+ MENUITEM "í´ë”(&F)...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "꺼내기(&J)", IDM_ZIP_EJECT
- MENUITEM "ì´ì „ ì´ë¯¸ì§€ 다시 불러오기(&R)", IDM_ZIP_RELOAD
+ MENUITEM "꺼내기(&J)", IDM_ZIP_EJECT
+ MENUITEM "ì´ì „ ì´ë¯¸ì§€ 다시 불러오기(&R)", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_MO_IMAGE_NEW
+ MENUITEM "새 ì´ë¯¸ì§€(&N)...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_MO_IMAGE_EXISTING
- MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "ì´ë¯¸ì§€ 불러오기(&E)...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "ì´ë¯¸ì§€ 불러오기 (쓰기방지)(&W)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "꺼내기(&J)", IDM_MO_EJECT
- MENUITEM "ì´ì „ ì´ë¯¸ì§€ 다시 불러오기(&R)", IDM_MO_RELOAD
+ MENUITEM "꺼내기(&J)", IDM_MO_EJECT
+ MENUITEM "ì´ì „ ì´ë¯¸ì§€ 다시 불러오기(&R)", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "í™˜ê²½ì„¤ì •"
-#define STR_SND_GAIN "ìŒëŸ‰ ì¦í"
-#define STR_NEW_FLOPPY "새 ì´ë¯¸ì§€"
-#define STR_CONFIG "ì„¤ì •"
-#define STR_SPECIFY_DIM "ì°½ í¬ê¸° ì§€ì •"
+#define STR_PREFERENCES "í™˜ê²½ì„¤ì •"
+#define STR_SND_GAIN "ìŒëŸ‰ ì¦í"
+#define STR_NEW_FLOPPY "새 ì´ë¯¸ì§€"
+#define STR_CONFIG "ì„¤ì •"
+#define STR_SPECIFY_DIM "ì°½ í¬ê¸° ì§€ì •"
-#define STR_OK "확ì¸"
-#define STR_CANCEL "취소"
-#define STR_GLOBAL "ì´ ì„¤ì •ë“¤ì„ ì „ì— ê¸°ë³¸ê°’ìœ¼ë¡œ ì €ìž¥í•˜ê¸°(&G)"
-#define STR_DEFAULT "기본값(&D)"
-#define STR_LANGUAGE "언어:"
-#define STR_ICONSET "ì•„ì´ì½˜ì…‹:"
+#define STR_OK "확ì¸"
+#define STR_CANCEL "취소"
+#define STR_GLOBAL "ì´ ì„¤ì •ë“¤ì„ ì „ì— ê¸°ë³¸ê°’ìœ¼ë¡œ ì €ìž¥í•˜ê¸°(&G)"
+#define STR_DEFAULT "기본값(&D)"
+#define STR_LANGUAGE "언어:"
+#define STR_ICONSET "ì•„ì´ì½˜ì…‹:"
-#define STR_GAIN "ì¦ê°€ê°’"
+#define STR_GAIN "ì¦ê°€ê°’"
-#define STR_FILE_NAME "파ì¼ëª…:"
-#define STR_DISK_SIZE "ë””ìŠ¤í¬ ìš©ëŸ‰:"
-#define STR_RPM_MODE "RPM 모드:"
-#define STR_PROGRESS "ì§„í–‰:"
+#define STR_FILE_NAME "파ì¼ëª…:"
+#define STR_DISK_SIZE "ë””ìŠ¤í¬ ìš©ëŸ‰:"
+#define STR_RPM_MODE "RPM 모드:"
+#define STR_PROGRESS "ì§„í–‰:"
-#define STR_WIDTH "가로:"
-#define STR_HEIGHT "세로:"
-#define STR_LOCK_TO_SIZE "í¬ê¸° ê³ ì •"
+#define STR_WIDTH "가로:"
+#define STR_HEIGHT "세로:"
+#define STR_LOCK_TO_SIZE "í¬ê¸° ê³ ì •"
-#define STR_MACHINE_TYPE "ë¨¸ì‹ ì¢…ë¥˜:"
-#define STR_MACHINE "기종:"
-#define STR_CONFIGURE "ì„¤ì •"
-#define STR_CPU_TYPE "CPU 종류:"
-#define STR_CPU_SPEED "ì†ë„:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "대기 ìƒíƒœ:"
-#define STR_MB "MB"
-#define STR_MEMORY "메모리:"
-#define STR_TIME_SYNC "시간 ë™ê¸°í™”"
-#define STR_DISABLED "사용하지 않ìŒ"
-#define STR_ENABLED_LOCAL "사용 (현지 시간)"
-#define STR_ENABLED_UTC "사용 (UTC)"
-#define STR_DYNAREC "ë™ì 재컴파ì¼"
+#define STR_MACHINE_TYPE "ë¨¸ì‹ ì¢…ë¥˜:"
+#define STR_MACHINE "기종:"
+#define STR_CONFIGURE "ì„¤ì •"
+#define STR_CPU_TYPE "CPU 종류:"
+#define STR_CPU_SPEED "ì†ë„:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "대기 ìƒíƒœ:"
+#define STR_MB "MB"
+#define STR_MEMORY "메모리:"
+#define STR_TIME_SYNC "시간 ë™ê¸°í™”"
+#define STR_DISABLED "사용하지 않ìŒ"
+#define STR_ENABLED_LOCAL "사용 (현지 시간)"
+#define STR_ENABLED_UTC "사용 (UTC)"
+#define STR_DYNAREC "ë™ì 재컴파ì¼"
-#define STR_VIDEO "비디오 카드:"
-#define STR_VIDEO_2 "비디오 카드 2:"
-#define STR_VOODOO "Voodoo 그래픽"
-#define STR_IBM8514 "IBM 8514/a 그래픽"
-#define STR_XGA "XGA 그래픽"
+#define STR_VIDEO "비디오 카드:"
+#define STR_VIDEO_2 "비디오 카드 2:"
+#define STR_VOODOO "Voodoo 그래픽"
+#define STR_IBM8514 "IBM 8514/a 그래픽"
+#define STR_XGA "XGA 그래픽"
-#define STR_MOUSE "마우스:"
-#define STR_JOYSTICK "ì¡°ì´ìŠ¤í‹±:"
-#define STR_JOY1 "ì¡°ì´ìŠ¤í‹± 1..."
-#define STR_JOY2 "ì¡°ì´ìŠ¤í‹± 2..."
-#define STR_JOY3 "ì¡°ì´ìŠ¤í‹± 3..."
-#define STR_JOY4 "ì¡°ì´ìŠ¤í‹± 4..."
+#define STR_MOUSE "마우스:"
+#define STR_JOYSTICK "ì¡°ì´ìŠ¤í‹±:"
+#define STR_JOY1 "ì¡°ì´ìŠ¤í‹± 1..."
+#define STR_JOY2 "ì¡°ì´ìŠ¤í‹± 2..."
+#define STR_JOY3 "ì¡°ì´ìŠ¤í‹± 3..."
+#define STR_JOY4 "ì¡°ì´ìŠ¤í‹± 4..."
-#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_FLOAT "FLOAT32 사운드 사용"
-#define STR_FM_DRIVER "FM ì‹ ë””ì‚¬ì´ì € 드ë¼ì´ë²„"
-#define STR_FM_DRV_NUKED "Nuked (ë” ì •í™•í•œ)"
-#define STR_FM_DRV_YMFM "YMFM (ë” ë¹ ë¥´ê²Œ)"
+#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_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_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_NET_TYPE "ë„¤íŠ¸ì›Œí¬ ì¢…ë¥˜:"
+#define STR_PCAP "PCap 장치:"
+#define STR_NET "ë„¤íŠ¸ì›Œí¬ ì–´ëŒ‘í„°:"
+#define STR_NET1 "ë„¤íŠ¸ì›Œí¬ ì¹´ë“œ 1:"
+#define STR_NET2 "ë„¤íŠ¸ì›Œí¬ ì¹´ë“œ 2:"
+#define STR_NET3 "ë„¤íŠ¸ì›Œí¬ ì¹´ë“œ 3:"
+#define STR_NET4 "ë„¤íŠ¸ì›Œí¬ ì¹´ë“œ 4:"
-#define STR_COM1 "COM1 장치:"
-#define STR_COM2 "COM2 장치:"
-#define STR_COM3 "COM3 장치:"
-#define STR_COM4 "COM4 장치:"
-#define STR_LPT1 "LPT1 장치:"
-#define STR_LPT2 "LPT2 장치:"
-#define STR_LPT3 "LPT3 장치:"
-#define STR_LPT4 "LPT4 장치:"
-#define STR_SERIAL1 "ì§ë ¬ í¬íЏ 1"
-#define STR_SERIAL2 "ì§ë ¬ í¬íЏ 2"
-#define STR_SERIAL3 "ì§ë ¬ í¬íЏ 3"
-#define STR_SERIAL4 "ì§ë ¬ í¬íЏ 4"
-#define STR_PARALLEL1 "ë³‘ë ¬ í¬íЏ 1"
-#define STR_PARALLEL2 "ë³‘ë ¬ í¬íЏ 2"
-#define STR_PARALLEL3 "ë³‘ë ¬ í¬íЏ 3"
-#define STR_PARALLEL4 "ë³‘ë ¬ í¬íЏ 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1 장치:"
+#define STR_COM2 "COM2 장치:"
+#define STR_COM3 "COM3 장치:"
+#define STR_COM4 "COM4 장치:"
+#define STR_LPT1 "LPT1 장치:"
+#define STR_LPT2 "LPT2 장치:"
+#define STR_LPT3 "LPT3 장치:"
+#define STR_LPT4 "LPT4 장치:"
+#define STR_SERIAL1 "ì§ë ¬ í¬íЏ 1"
+#define STR_SERIAL2 "ì§ë ¬ í¬íЏ 2"
+#define STR_SERIAL3 "ì§ë ¬ í¬íЏ 3"
+#define STR_SERIAL4 "ì§ë ¬ í¬íЏ 4"
+#define STR_PARALLEL1 "ë³‘ë ¬ í¬íЏ 1"
+#define STR_PARALLEL2 "ë³‘ë ¬ í¬íЏ 2"
+#define STR_PARALLEL3 "ë³‘ë ¬ í¬íЏ 3"
+#define STR_PARALLEL4 "ë³‘ë ¬ í¬íЏ 4"
+#define STR_SERIAL_PASS1 "ì§ë ¬ í¬íЏ 패스쓰루 1"
+#define STR_SERIAL_PASS2 "ì§ë ¬ í¬íЏ 패스쓰루 2"
+#define STR_SERIAL_PASS3 "ì§ë ¬ í¬íЏ 패스쓰루 3"
+#define STR_SERIAL_PASS4 "ì§ë ¬ í¬íЏ 패스쓰루 4"
-#define STR_HDC "HD 컨트롤러:"
-#define STR_FDC "FD 컨트롤러:"
-#define STR_IDE_TER "ì œ3ì˜ IDE 컨트롤러"
-#define STR_IDE_QUA "ì œ4ì˜ IDE 컨트롤러"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "컨트롤러 1:"
-#define STR_SCSI_2 "컨트롤러 2:"
-#define STR_SCSI_3 "컨트롤러 3:"
-#define STR_SCSI_4 "컨트롤러 4:"
-#define STR_CASSETTE "카세트 í…Œì´í”„"
+#define STR_HDC "HD 컨트롤러:"
+#define STR_FDC "FD 컨트롤러:"
+#define STR_IDE_TER "ì œ3ì˜ IDE 컨트롤러"
+#define STR_IDE_QUA "ì œ4ì˜ IDE 컨트롤러"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "컨트롤러 1:"
+#define STR_SCSI_2 "컨트롤러 2:"
+#define STR_SCSI_3 "컨트롤러 3:"
+#define STR_SCSI_4 "컨트롤러 4:"
+#define STR_CASSETTE "카세트 í…Œì´í”„"
-#define STR_HDD "하드 디스í¬:"
-#define STR_NEW "새로 만들기(&N)..."
-#define STR_EXISTING "불러오기(&E)..."
-#define STR_REMOVE "목ë¡ì—서 ì œê±°(&R)"
-#define STR_BUS "버스:"
-#define STR_CHANNEL "채ë„:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "하드 디스í¬:"
+#define STR_NEW "새로 만들기(&N)..."
+#define STR_EXISTING "불러오기(&E)..."
+#define STR_REMOVE "목ë¡ì—서 ì œê±°(&R)"
+#define STR_BUS "버스:"
+#define STR_CHANNEL "채ë„:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "열기(&S)..."
-#define STR_SECTORS "섹터:"
-#define STR_HEADS "헤드:"
-#define STR_CYLS "실린ë”:"
-#define STR_SIZE_MB "용량(MB):"
-#define STR_TYPE "형ì‹:"
-#define STR_IMG_FORMAT "ì´ë¯¸ì§€ í¬ë§·:"
-#define STR_BLOCK_SIZE "ë¸”ë¡ í¬ê¸°:"
+#define STR_SPECIFY "열기(&S)..."
+#define STR_SECTORS "섹터:"
+#define STR_HEADS "헤드:"
+#define STR_CYLS "실린ë”:"
+#define STR_SIZE_MB "용량(MB):"
+#define STR_TYPE "형ì‹:"
+#define STR_IMG_FORMAT "ì´ë¯¸ì§€ í¬ë§·:"
+#define STR_BLOCK_SIZE "ë¸”ë¡ í¬ê¸°:"
-#define STR_FLOPPY_DRIVES "플로피 드ë¼ì´ë¸Œ:"
-#define STR_TURBO "ê³ ì† ë™ìž‘"
-#define STR_CHECKBPB "BPB 확ì¸"
-#define STR_CDROM_DRIVES "CD-ROM 드ë¼ì´ë¸Œ:"
-#define STR_CD_SPEED "ì†ë„:"
-#define STR_EARLY "ì´ì „ 드ë¼ì´ë¸Œ"
+#define STR_FLOPPY_DRIVES "플로피 드ë¼ì´ë¸Œ:"
+#define STR_TURBO "ê³ ì† ë™ìž‘"
+#define STR_CHECKBPB "BPB 확ì¸"
+#define STR_CDROM_DRIVES "CD-ROM 드ë¼ì´ë¸Œ:"
+#define STR_CD_SPEED "ì†ë„:"
+#define STR_EARLY "ì´ì „ 드ë¼ì´ë¸Œ"
-#define STR_MO_DRIVES "ê´‘ìžê¸° 드ë¼ì´ë¸Œ:"
-#define STR_ZIP_DRIVES "ZIP 드ë¼ì´ë¸Œ:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "ê´‘ìžê¸° 드ë¼ì´ë¸Œ:"
+#define STR_ZIP_DRIVES "ZIP 드ë¼ì´ë¸Œ:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC 카드:"
-#define STR_ISAMEM "ISA 메모리 확장 카드"
-#define STR_ISAMEM_1 "카드 1:"
-#define STR_ISAMEM_2 "카드 2:"
-#define STR_ISAMEM_3 "카드 3:"
-#define STR_ISAMEM_4 "카드 4:"
-#define STR_BUGGER "ISABugger 장치"
-#define STR_POSTCARD "POST 카드"
+#define STR_ISARTC "ISA RTC 카드:"
+#define STR_ISAMEM "ISA 메모리 확장 카드"
+#define STR_ISAMEM_1 "카드 1:"
+#define STR_ISAMEM_2 "카드 2:"
+#define STR_ISAMEM_3 "카드 3:"
+#define STR_ISAMEM_4 "카드 4:"
+#define STR_BUGGER "ISABugger 장치"
+#define STR_POSTCARD "POST 카드"
-#define FONT_SIZE 9
-#define FONT_NAME "Malgun Gothic"
+#define FONT_SIZE 9
+#define FONT_NAME "Malgun Gothic"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "오류"
- IDS_2050 "치명ì ì¸ ì˜¤ë¥˜"
- IDS_2051 " - PAUSED"
- IDS_2052 "Ctrl+Alt+PgDn 키를 누르면 ì°½ 모드로 ì „í™˜í•©ë‹ˆë‹¤."
- IDS_2053 "ì†ë„"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP ì´ë¯¸ì§€ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Boxì—서 사용 가능한 ROM ì´ë¯¸ì§€ë¥¼ ì°¾ì„ ìˆ˜ 없습니다.\n\nROM 세트를다운로드 후 ""roms"" ë””ë ‰í† ë¦¬ì— ì••ì¶•ì„ í’€ì–´ 주세요."
- IDS_2057 "(비었ìŒ)"
- IDS_2058 "ZIP ì´ë¯¸ì§€ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2059 "í„°ë³´"
- IDS_2060 "켜ì§"
- IDS_2061 "꺼ì§"
- IDS_2062 "ëª¨ë“ ì´ë¯¸ì§€ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0기본 섹터 ì´ë¯¸ì§€ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0표면 ì´ë¯¸ì§€ (*.86F)\0*.86F\0"
- IDS_2063 "roms/machines ë””ë ‰í† ë¦¬ì— í•„ìš”í•œ 롬파ì¼ì´ 없어 기종 ""%hs""ì„(를) ì‚¬ìš©í• ìˆ˜ 없습니다. 사용 가능한 기종으로 변경합니다."
+ 2048 "86Box"
+ IDS_2049 "오류"
+ IDS_2050 "치명ì ì¸ ì˜¤ë¥˜"
+ IDS_2051 " - ì¼ì‹œì¤‘ì§€"
+ IDS_2052 "Ctrl+Alt+PgDn 키를 누르면 ì°½ 모드로 ì „í™˜í•©ë‹ˆë‹¤."
+ IDS_2053 "ì†ë„"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP ì´ë¯¸ì§€ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Boxì—서 사용 가능한 ROM ì´ë¯¸ì§€ë¥¼ ì°¾ì„ ìˆ˜ 없습니다.\n\nROM 세트를다운로드 후 ""roms"" ë””ë ‰í† ë¦¬ì— ì••ì¶•ì„ í’€ì–´ 주세요."
+ IDS_2057 "(비었ìŒ)"
+ IDS_2058 "ZIP ì´ë¯¸ì§€ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2059 "í„°ë³´"
+ IDS_2060 "켜ì§"
+ IDS_2061 "꺼ì§"
+ IDS_2062 "ëª¨ë“ ì´ë¯¸ì§€ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0기본 섹터 ì´ë¯¸ì§€ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0표면 ì´ë¯¸ì§€ (*.86F)\0*.86F\0"
+ IDS_2063 "roms/machines ë””ë ‰í† ë¦¬ì— í•„ìš”í•œ 롬파ì¼ì´ 없어 기종 ""%hs""ì„(를) ì‚¬ìš©í• ìˆ˜ 없습니다. 사용 가능한 기종으로 변경합니다."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "roms/video ë””ë ‰í† ë¦¬ì— í•„ìš”í•œ 롬파ì¼ì´ 없어 비디오 카드 ""%hs""ì„(를) ì‚¬ìš©í• ìˆ˜ 없습니다. 사용 가능한 기종으로 변경합니다."
- IDS_2065 "기종"
- IDS_2066 "ë””ìŠ¤í”Œë ˆì´"
- IDS_2067 "ìž…ë ¥ 장치"
- IDS_2068 "사운드"
- IDS_2069 "네트워í¬"
- IDS_2070 "í¬íЏ (COM & LPT)"
- IDS_2071 "장치 컨트롤러"
- IDS_2072 "하드 디스í¬"
- IDS_2073 "플로피 / CD-ROM"
- IDS_2074 "기타 ì´ë™ì‹ ì €ìž¥ìž¥ì¹˜"
- IDS_2075 "기타 주변기기"
- IDS_2076 "표면 ì´ë¯¸ì§€ (*.86F)\0*.86F\0"
- IDS_2077 "ì´ ì°½ì„ í´ë¦í•˜ë©´ 마우스를 사용합니다"
- IDS_2078 "F12+F8키를 누르면 마우스를 í•´ì œí•©ë‹ˆë‹¤"
- IDS_2079 "F12+F8키 ë˜ëŠ” ê°€ìš´ë° ë²„íŠ¼ì„ í´ë¦í•˜ë©´ 마우스를 í•´ì œí•©ë‹ˆë‹¤"
+ IDS_2064 "roms/video ë””ë ‰í† ë¦¬ì— í•„ìš”í•œ 롬파ì¼ì´ 없어 비디오 카드 ""%hs""ì„(를) ì‚¬ìš©í• ìˆ˜ 없습니다. 사용 가능한 기종으로 변경합니다."
+ IDS_2065 "기종"
+ IDS_2066 "ë””ìŠ¤í”Œë ˆì´"
+ IDS_2067 "ìž…ë ¥ 장치"
+ IDS_2068 "사운드"
+ IDS_2069 "네트워í¬"
+ IDS_2070 "í¬íЏ (COM & LPT)"
+ IDS_2071 "장치 컨트롤러"
+ IDS_2072 "하드 디스í¬"
+ IDS_2073 "플로피 / CD-ROM"
+ IDS_2074 "기타 ì´ë™ì‹ ì €ìž¥ìž¥ì¹˜"
+ IDS_2075 "기타 주변기기"
+ IDS_2076 "표면 ì´ë¯¸ì§€ (*.86F)\0*.86F\0"
+ IDS_2077 "ì´ ì°½ì„ í´ë¦í•˜ë©´ 마우스를 사용합니다"
+ IDS_2078 "F12+F8키를 누르면 마우스를 í•´ì œí•©ë‹ˆë‹¤"
+ IDS_2079 "F12+F8키 ë˜ëŠ” ê°€ìš´ë° ë²„íŠ¼ì„ í´ë¦í•˜ë©´ 마우스를 í•´ì œí•©ë‹ˆë‹¤"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "FluidSynth를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다"
- IDS_2081 "버스"
- IDS_2082 "파ì¼"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "FluidSynth를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다"
+ IDS_2081 "버스"
+ IDS_2082 "파ì¼"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "BPB 확ì¸"
- IDS_2089 "KB"
- IDS_2090 "비디오 ë Œë”러를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다."
- IDS_2091 "기본값"
- IDS_2092 "%i 대기 ìƒíƒœ"
- IDS_2093 "형ì‹"
- IDS_2094 "PCap ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
- IDS_2095 "PCap 장치가 없습니다"
- IDS_2096 "PCap 장치가 올바르지 않습니다"
- IDS_2097 "표준 2버튼 ì¡°ì´ìŠ¤í‹±"
- IDS_2098 "표준 4버튼 ì¡°ì´ìŠ¤í‹±"
- IDS_2099 "표준 6버튼 ì¡°ì´ìŠ¤í‹±"
- IDS_2100 "표준 8버튼 ì¡°ì´ìŠ¤í‹±"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "ì—†ìŒ"
- IDS_2105 "키보드 ê°€ì†ê¸°ë¥¼ 불러올 수 없습니다."
- IDS_2106 "Raw ìž…ë ¥ì„ ë“±ë¡í• 수 없습니다."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "플로피 %i (%s): %ls"
- IDS_2110 "ëª¨ë“ ì´ë¯¸ì§€ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0어드밴스드 섹터 ì´ë¯¸ì§€ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0기본 섹터 ì´ë¯¸ì§€ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0플ëŸìФ ì´ë¯¸ì§€ (*.FDI)\0*.FDI\0표면 ì´ë¯¸ì§€ (*.86F;*.MFM)\0*.86F;*.MFM\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2111 "FreeTypeì„ ì´ˆê¸°í™”í• ìˆ˜ 없습니다"
- IDS_2112 "SDLì„ ì´ˆê¸°í™”í• ìˆ˜ 없습니다. SDL2.dllì´ í•„ìš”í•©ë‹ˆë‹¤"
- IDS_2113 "ì‹¤í–‰ì¤‘ì¸ ë¨¸ì‹ ì„ ìž¬ì‹œìž‘í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
- IDS_2114 "86Box를 ëë‚´ì‹œê² ìŠµë‹ˆê¹Œ?"
- IDS_2115 "Ghostscript를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다"
- IDS_2116 "ê´‘ìžê¸° %i (%ls): %ls"
- IDS_2117 "ê´‘ìžê¸° ì´ë¯¸ì§€ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2118 "86Boxì— ì–´ì„œì˜¤ì„¸ìš”!"
- IDS_2119 "내부 컨트롤러"
- IDS_2120 "ë내기"
- IDS_2121 "ROMì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다"
- IDS_2122 "ì„¤ì •ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
- IDS_2123 "ì‚¬ìš©ì¤‘ì¸ ë¨¸ì‹ ì´ ìž¬ë¶€íŒ…ë©ë‹ˆë‹¤."
- IDS_2124 "ì €ìž¥"
- IDS_2125 "86Boxì— ëŒ€í•´"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "BPB 확ì¸"
+ IDS_2089 "KB"
+ IDS_2090 "비디오 ë Œë”러를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다."
+ IDS_2091 "기본값"
+ IDS_2092 "%i 대기 ìƒíƒœ"
+ IDS_2093 "형ì‹"
+ IDS_2094 "PCap ì„¤ì •ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
+ IDS_2095 "PCap 장치가 없습니다"
+ IDS_2096 "PCap 장치가 올바르지 않습니다"
+ IDS_2097 "표준 2버튼 ì¡°ì´ìŠ¤í‹±"
+ IDS_2098 "표준 4버튼 ì¡°ì´ìŠ¤í‹±"
+ IDS_2099 "표준 6버튼 ì¡°ì´ìŠ¤í‹±"
+ IDS_2100 "표준 8버튼 ì¡°ì´ìŠ¤í‹±"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "ì—†ìŒ"
+ IDS_2105 "키보드 ê°€ì†ê¸°ë¥¼ 불러올 수 없습니다."
+ IDS_2106 "Raw ìž…ë ¥ì„ ë“±ë¡í• 수 없습니다."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "플로피 %i (%s): %ls"
+ IDS_2110 "ëª¨ë“ ì´ë¯¸ì§€ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0어드밴스드 섹터 ì´ë¯¸ì§€ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0기본 섹터 ì´ë¯¸ì§€ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0플ëŸìФ ì´ë¯¸ì§€ (*.FDI)\0*.FDI\0표면 ì´ë¯¸ì§€ (*.86F;*.MFM)\0*.86F;*.MFM\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2111 "FreeTypeì„ ì´ˆê¸°í™”í• ìˆ˜ 없습니다"
+ IDS_2112 "SDLì„ ì´ˆê¸°í™”í• ìˆ˜ 없습니다. SDL2.dllì´ í•„ìš”í•©ë‹ˆë‹¤"
+ IDS_2113 "ì‹¤í–‰ì¤‘ì¸ ë¨¸ì‹ ì„ ìž¬ì‹œìž‘í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+ IDS_2114 "86Box를 ëë‚´ì‹œê² ìŠµë‹ˆê¹Œ?"
+ IDS_2115 "Ghostscript를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다"
+ IDS_2116 "ê´‘ìžê¸° %i (%ls): %ls"
+ IDS_2117 "ê´‘ìžê¸° ì´ë¯¸ì§€ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2118 "86Boxì— ì–´ì„œì˜¤ì„¸ìš”!"
+ IDS_2119 "내부 컨트롤러"
+ IDS_2120 "ë내기"
+ IDS_2121 "ROMì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다"
+ IDS_2122 "ì„¤ì •ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+ IDS_2123 "ì‚¬ìš©ì¤‘ì¸ ë¨¸ì‹ ì´ ìž¬ë¶€íŒ…ë©ë‹ˆë‹¤."
+ IDS_2124 "ì €ìž¥"
+ IDS_2125 "86Boxì— ëŒ€í•´"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "ê³ ì „ 컴퓨터 ì—ë®¬ë ˆì´í„°\n\nì €ìž: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nGNU General Public ë¼ì´ì„ 스 (ë²„ì „ 2 ì´ìƒ)ì— ì˜í•´ ë°°í¬ë˜ì—ˆìŠµë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ LICENSE 파ì¼ì„ ì½ì–´ 주세요."
- IDS_2128 "확ì¸"
- IDS_2129 "하드웨어를 ì´ìš©í• 수 없습니다"
+ IDS_2127 "ê³ ì „ 컴퓨터 ì—ë®¬ë ˆì´í„°\n\nì €ìž: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nGNU General Public ë¼ì´ì„ 스 (ë²„ì „ 2 ì´ìƒ)ì— ì˜í•´ ë°°í¬ë˜ì—ˆìŠµë‹ˆë‹¤. ìžì„¸í•œ ë‚´ìš©ì€ LICENSE 파ì¼ì„ ì½ì–´ 주세요."
+ IDS_2128 "확ì¸"
+ IDS_2129 "하드웨어를 ì´ìš©í• 수 없습니다"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 LIB_NAME_PCAP "ì´ ì„¤ì¹˜ë˜ì—ˆëŠ”ì§€ " LIB_NAME_PCAP "ì— ëŒ€ì‘하는 네트워í¬ì— ì ‘ì†ë˜ì–´ 있는지 확ì¸í•´ 주세요."
- IDS_2131 "올바르지 ì•Šì€ ì„¤ì •ìž…ë‹ˆë‹¤"
+ IDS_2130 LIB_NAME_PCAP "ì´ ì„¤ì¹˜ë˜ì—ˆëŠ”ì§€ " LIB_NAME_PCAP "ì— ëŒ€ì‘하는 네트워í¬ì— ì ‘ì†ë˜ì–´ 있는지 확ì¸í•´ 주세요."
+ IDS_2131 "올바르지 ì•Šì€ ì„¤ì •ìž…ë‹ˆë‹¤"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 "ESC/P 프린터 ì—ë®¬ë ˆì´ì…˜ì— " LIB_NAME_FREETYPE "ì´(ê°€) 필요합니다."
+ IDS_2132 "ESC/P 프린터 ì—ë®¬ë ˆì´ì…˜ì— " LIB_NAME_FREETYPE "ì´(ê°€) 필요합니다."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS "ì€(는) PostScript 파ì¼ì„ PDF로 ìžë™ë³€í™˜í•˜ëŠ” ë°ì— 필요합니다.\n\n표준 PostScript 프린터로 ë³´ë‚´ì‹ ìž„ì˜ì˜ 문서는 PostScript (.ps) 파ì¼ë¡œ ì €ìž¥ë©ë‹ˆë‹¤."
+ IDS_2133 LIB_NAME_GS "ì€(는) PostScript 파ì¼ì„ PDF로 ìžë™ë³€í™˜í•˜ëŠ” ë°ì— 필요합니다.\n\n표준 PostScript 프린터로 ë³´ë‚´ì‹ ìž„ì˜ì˜ 문서는 PostScript (.ps) 파ì¼ë¡œ ì €ìž¥ë©ë‹ˆë‹¤."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 "FluidSynthì˜ MIDI ì¶œë ¥ì— " LIB_NAME_FLUIDSYNTH "ì´(ê°€) 필요합니다."
- IDS_2135 "ì „ì²´ 화면으로 ì „í™˜"
- IDS_2136 "ì´ ë©”ì‹œì§€ 그만 보기"
- IDS_2137 "ëë‚´ì§€ 않기"
- IDS_2138 "재시작"
- IDS_2139 "재시작 안함"
- IDS_2140 "ê´‘ìžê¸° ì´ë¯¸ì§€ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2141 "CD-ROM ì´ë¯¸ì§€ (*.ISO;*.CUE)\0*.ISO;*.CUE\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2142 "%hs 장치 ì„¤ì •"
+ IDS_2134 "FluidSynthì˜ MIDI ì¶œë ¥ì— " LIB_NAME_FLUIDSYNTH "ì´(ê°€) 필요합니다."
+ IDS_2135 "ì „ì²´ 화면으로 ì „í™˜"
+ IDS_2136 "ì´ ë©”ì‹œì§€ 그만 보기"
+ IDS_2137 "ëë‚´ì§€ 않기"
+ IDS_2138 "재시작"
+ IDS_2139 "재시작 안함"
+ IDS_2140 "ê´‘ìžê¸° ì´ë¯¸ì§€ (*.IM?;*.MDI)\0*.IM?;*.MDI\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2141 "CD-ROM ì´ë¯¸ì§€ (*.ISO;*.CUE)\0*.ISO;*.CUE\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2142 "%hs 장치 ì„¤ì •"
IDS_2143 "모니터 ì ˆì „ 모드"
- IDS_2144 "OpenGL ì‰ì´ë” (*.GLSL)\0*.GLSL\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2145 "OpenGL ì„¤ì •"
- IDS_2146 "ì§€ì›í•˜ì§€ 않는 ì„¤ì •ìž…ë‹ˆë‹¤"
- IDS_2147 "ì´ ì—ë®¬ë ˆì´íŠ¸ëœ ê¸°ì¢…ì— ëŒ€í•´ ì„ íƒí•œ ê¸°ì¢…ì„ ê¸°ë°˜ìœ¼ë¡œ 하는 CPU 종류 í•„í„°ë§ì´ 사용ë˜ì§€ 않ë„ë¡ ì„¤ì •ë˜ì—ˆìŠµë‹ˆë‹¤.\n\në”°ë¼ì„œ ì„ íƒëœ ë¨¸ì‹ ê³¼ 호환ë˜ì§€ 않는 CPU를 ì„ íƒí•˜ì‹¤ 수 있습니다. 하지만 BIOS ë˜ëŠ” 다른 소프트웨어와 호환ë˜ì§€ ì•Šì„ ìˆ˜ 있습니다.\n\nì´ ì„¤ì •ì„ í™œì„±í™”í•˜ëŠ” ê²ƒì€ ê³µì‹ì 으로 ì§€ì›ë˜ì§€ 않으며, ì œì¶œëœ ë²„ê·¸ ë³´ê³ ì„œëŠ” ìœ íš¨í•˜ì§€ 않ìŒìœ¼ë¡œ ë‹«íž ìˆ˜ 있습니다."
- IDS_2148 "계ì†"
- IDS_2149 "카세트: %s"
- IDS_2150 "카세트 ì´ë¯¸ì§€ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2151 "카트리지 %i: %ls"
- IDS_2152 "카트리지 ì´ë¯¸ì§€ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_2153 "ë Œë”러 초기화 오류"
- IDS_2154 "OpenGL (3.0 Core) ë Œë”러를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다. 다른 ë Œë”러를 사용하ì‹ì‹œì˜¤."
- IDS_2155 "실행 재개"
- IDS_2156 "실행 ì¼ì‹œ 중지"
- IDS_2157 "Ctrl+Alt+Del"
- IDS_2158 "Ctrl+Alt+Esc"
- IDS_2159 "재시작"
- IDS_2160 "ACPI 종료"
- IDS_2161 "ì„¤ì •"
+ IDS_2144 "OpenGL ì‰ì´ë” (*.GLSL)\0*.GLSL\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2145 "OpenGL ì„¤ì •"
+ IDS_2146 "ì§€ì›í•˜ì§€ 않는 ì„¤ì •ìž…ë‹ˆë‹¤"
+ IDS_2147 "ì´ ì—ë®¬ë ˆì´íŠ¸ëœ ê¸°ì¢…ì— ëŒ€í•´ ì„ íƒí•œ ê¸°ì¢…ì„ ê¸°ë°˜ìœ¼ë¡œ 하는 CPU 종류 í•„í„°ë§ì´ 사용ë˜ì§€ 않ë„ë¡ ì„¤ì •ë˜ì—ˆìŠµë‹ˆë‹¤.\n\në”°ë¼ì„œ ì„ íƒëœ ë¨¸ì‹ ê³¼ 호환ë˜ì§€ 않는 CPU를 ì„ íƒí•˜ì‹¤ 수 있습니다. 하지만 BIOS ë˜ëŠ” 다른 소프트웨어와 호환ë˜ì§€ ì•Šì„ ìˆ˜ 있습니다.\n\nì´ ì„¤ì •ì„ í™œì„±í™”í•˜ëŠ” ê²ƒì€ ê³µì‹ì 으로 ì§€ì›ë˜ì§€ 않으며, ì œì¶œëœ ë²„ê·¸ ë³´ê³ ì„œëŠ” ìœ íš¨í•˜ì§€ 않ìŒìœ¼ë¡œ ë‹«íž ìˆ˜ 있습니다."
+ IDS_2148 "계ì†"
+ IDS_2149 "카세트: %s"
+ IDS_2150 "카세트 ì´ë¯¸ì§€ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2151 "카트리지 %i: %ls"
+ IDS_2152 "카트리지 ì´ë¯¸ì§€ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_2153 "ë Œë”러 초기화 오류"
+ IDS_2154 "OpenGL (3.0 Core) ë Œë”러를 ì´ˆê¸°í™”í• ìˆ˜ 없습니다. 다른 ë Œë”러를 사용하ì‹ì‹œì˜¤."
+ IDS_2155 "실행 재개"
+ IDS_2156 "실행 ì¼ì‹œ 중지"
+ IDS_2157 "Ctrl+Alt+Del"
+ IDS_2158 "Ctrl+Alt+Esc"
+ IDS_2159 "재시작"
+ IDS_2160 "ACPI 종료"
+ IDS_2161 "ì„¤ì •"
IDS_2162 "ì´ì „ 드ë¼ì´ë¸Œ"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "ë‘번째 비디오카드 ""%hs""는 roms/video ë””ë ‰í† ë¦¬ì—서 ROMì´ ëˆ„ë½ë˜ì–´ ì‚¬ìš©í• ìˆ˜ 없습니다. ë‘번째 비디오 카드를 비활성화 합니다."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "하드 ë””ìŠ¤í¬ (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL ë˜ëŠ” ESDI CD-ROM 드ë¼ì´ë¸Œê°€ 존재하지 않습니다"
- IDS_4100 "ì‚¬ìš©ìž ì„¤ì •..."
- IDS_4101 "ì‚¬ìš©ìž ì„¤ì • (대용량)..."
- IDS_4102 "새로 ìƒì„±"
- IDS_4103 "기존 ì´ë¯¸ì§€ 사용"
- IDS_4104 "HDI ë””ìŠ¤í¬ ì´ë¯¸ì§€ëŠ” 4GB ì´ìƒìœ¼ë¡œ ì§€ì •í• ìˆ˜ 없습니다"
- IDS_4105 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ëŠ” 127GB ì´ìƒìœ¼ë¡œ ì§€ì •í• ìˆ˜ 없습니다"
- IDS_4106 "하드 ë””ìŠ¤í¬ ì´ë¯¸ì§€ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_4107 "파ì¼ì„ ì½ì„ 수 없습니다"
- IDS_4108 "파ì¼ì„ ì €ìž¥í• ìˆ˜ 없습니다"
- IDS_4109 "512 ë°”ì´íЏ ì´ì™¸ì˜ 섹터 í¬ê¸°ë¥¼ 가진 HDI ë˜ëŠ” HDX 형ì‹ì˜ ì´ë¯¸ì§€ë¥¼ ìƒì„±í• 수 없습니다"
- IDS_4110 "USB는 ì•„ì§ ì§€ì›í•˜ì§€ 않습니다"
- IDS_4111 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ 파ì¼ì´ ì´ë¯¸ 존재합니다"
- IDS_4112 "올바른 파ì¼ëª…ì„ ì§€ì •í•´ 주세요."
- IDS_4113 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ê°€ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤"
- IDS_4114 "파ì¼ì´ 존재하며 ì½ì„ 수 있는지 확ì¸í•©ë‹ˆë‹¤."
- IDS_4115 "파ì¼ì´ 쓰기 가능한 ë””ë ‰í† ë¦¬ì— ì €ìž¥ë˜ê³ 있는지 확ì¸í•©ë‹ˆë‹¤."
- IDS_4116 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ê°€ 너무 í½ë‹ˆë‹¤"
- IDS_4117 "새로 ìƒì„±í•œ 드ë¼ì´ë¸Œì˜ 파티션 ì„¤ì •ê³¼ í¬ë§·ì„ ê¼ í•´ì£¼ì„¸ìš”."
- IDS_4118 "ì„ íƒí•˜ì‹ 파ì¼ì„ ë®ì–´ì”Œì›ë‹ˆë‹¤. ì‚¬ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
- IDS_4119 "ì§€ì›í•˜ì§€ 않는 ë””ìŠ¤í¬ ì´ë¯¸ì§€ìž…니다"
- IDS_4120 "ë®ì–´ì“°ê¸°"
- IDS_4121 "ë®ì–´ì“°ì§€ 않ìŒ"
- IDS_4122 "Raw ì´ë¯¸ì§€ (.img)"
- IDS_4123 "HDI ì´ë¯¸ì§€ (.hdi)"
- IDS_4124 "HDX ì´ë¯¸ì§€ (.hdx)"
- IDS_4125 "ê³ ì • 사ì´ì¦ˆ VHD (.vhd)"
- IDS_4126 "ë™ì 사ì´ì¦ˆ VHD (.vhd)"
- IDS_4127 "ë””í¼ëŸ°ì‹± VHD (.vhd)"
- IDS_4128 "대형 ë¸”ë¡ (2 MB)"
- IDS_4129 "소형 ë¸”ë¡ (512 KB)"
- IDS_4130 "VHD íŒŒì¼ (*.VHD)\0*.VHD\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
- IDS_4131 "부모 VHD ì„ íƒ"
- IDS_4132 "ì´ëŠ” ë””í¼ëŸ°ì‹± ì´ë¯¸ì§€ê°€ ìƒì„±ëœ 후 부모 ì´ë¯¸ì§€ê°€ ìˆ˜ì •ë˜ì—ˆìŒì„ ì˜ë¯¸í• 수 있습니다.\n\nì´ë¯¸ì§€ 파ì¼ì´ ì´ë™ ë˜ëŠ” ë³µì‚¬ëœ ê²½ìš° ë˜ëŠ” ì´ ë””ìŠ¤í¬ë¥¼ ë§Œë“ í”„ë¡œê·¸ëž¨ì˜ ë²„ê·¸ë¡œ ì¸í•´ ë°œìƒí• ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.\n\n타임스탬프를 ìˆ˜ì •í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
- IDS_4133 "부모 디스í¬ì™€ ìžì‹ 디스í¬ì˜ 타임스탬프가 ì¼ì¹˜í•˜ì§€ 않습니다"
- IDS_4134 "VHD 타임스탬프를 ê³ ì¹ ìˆ˜ 없습니다"
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL ë˜ëŠ” ESDI CD-ROM 드ë¼ì´ë¸Œê°€ 존재하지 않습니다"
+ IDS_4100 "ì‚¬ìš©ìž ì„¤ì •..."
+ IDS_4101 "ì‚¬ìš©ìž ì„¤ì • (대용량)..."
+ IDS_4102 "새로 ìƒì„±"
+ IDS_4103 "기존 ì´ë¯¸ì§€ 사용"
+ IDS_4104 "HDI ë””ìŠ¤í¬ ì´ë¯¸ì§€ëŠ” 4GB ì´ìƒìœ¼ë¡œ ì§€ì •í• ìˆ˜ 없습니다"
+ IDS_4105 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ëŠ” 127GB ì´ìƒìœ¼ë¡œ ì§€ì •í• ìˆ˜ 없습니다"
+ IDS_4106 "하드 ë””ìŠ¤í¬ ì´ë¯¸ì§€ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_4107 "파ì¼ì„ ì½ì„ 수 없습니다"
+ IDS_4108 "파ì¼ì„ ì €ìž¥í• ìˆ˜ 없습니다"
+ IDS_4109 "512 ë°”ì´íЏ ì´ì™¸ì˜ 섹터 í¬ê¸°ë¥¼ 가진 HDI ë˜ëŠ” HDX 형ì‹ì˜ ì´ë¯¸ì§€ë¥¼ ìƒì„±í• 수 없습니다"
+ IDS_4110 "USB는 ì•„ì§ ì§€ì›í•˜ì§€ 않습니다"
+ IDS_4111 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ 파ì¼ì´ ì´ë¯¸ 존재합니다"
+ IDS_4112 "올바른 파ì¼ëª…ì„ ì§€ì •í•´ 주세요."
+ IDS_4113 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ê°€ ìƒì„±ë˜ì—ˆìŠµë‹ˆë‹¤"
+ IDS_4114 "파ì¼ì´ 존재하며 ì½ì„ 수 있는지 확ì¸í•©ë‹ˆë‹¤."
+ IDS_4115 "파ì¼ì´ 쓰기 가능한 ë””ë ‰í† ë¦¬ì— ì €ìž¥ë˜ê³ 있는지 확ì¸í•©ë‹ˆë‹¤."
+ IDS_4116 "ë””ìŠ¤í¬ ì´ë¯¸ì§€ê°€ 너무 í½ë‹ˆë‹¤"
+ IDS_4117 "새로 ìƒì„±í•œ 드ë¼ì´ë¸Œì˜ 파티션 ì„¤ì •ê³¼ í¬ë§·ì„ ê¼ í•´ì£¼ì„¸ìš”."
+ IDS_4118 "ì„ íƒí•˜ì‹ 파ì¼ì„ ë®ì–´ì”Œì›ë‹ˆë‹¤. ì‚¬ìš©í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+ IDS_4119 "ì§€ì›í•˜ì§€ 않는 ë””ìŠ¤í¬ ì´ë¯¸ì§€ìž…니다"
+ IDS_4120 "ë®ì–´ì“°ê¸°"
+ IDS_4121 "ë®ì–´ì“°ì§€ 않ìŒ"
+ IDS_4122 "Raw ì´ë¯¸ì§€ (.img)"
+ IDS_4123 "HDI ì´ë¯¸ì§€ (.hdi)"
+ IDS_4124 "HDX ì´ë¯¸ì§€ (.hdx)"
+ IDS_4125 "ê³ ì • 사ì´ì¦ˆ VHD (.vhd)"
+ IDS_4126 "ë™ì 사ì´ì¦ˆ VHD (.vhd)"
+ IDS_4127 "ë””í¼ëŸ°ì‹± VHD (.vhd)"
+ IDS_4128 "대형 ë¸”ë¡ (2 MB)"
+ IDS_4129 "소형 ë¸”ë¡ (512 KB)"
+ IDS_4130 "VHD íŒŒì¼ (*.VHD)\0*.VHD\0ëª¨ë“ íŒŒì¼ (*.*)\0*.*\0"
+ IDS_4131 "부모 VHD ì„ íƒ"
+ IDS_4132 "ì´ëŠ” ë””í¼ëŸ°ì‹± ì´ë¯¸ì§€ê°€ ìƒì„±ëœ 후 부모 ì´ë¯¸ì§€ê°€ ìˆ˜ì •ë˜ì—ˆìŒì„ ì˜ë¯¸í• 수 있습니다.\n\nì´ë¯¸ì§€ 파ì¼ì´ ì´ë™ ë˜ëŠ” ë³µì‚¬ëœ ê²½ìš° ë˜ëŠ” ì´ ë””ìŠ¤í¬ë¥¼ ë§Œë“ í”„ë¡œê·¸ëž¨ì˜ ë²„ê·¸ë¡œ ì¸í•´ ë°œìƒí• ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.\n\n타임스탬프를 ìˆ˜ì •í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+ IDS_4133 "부모 디스í¬ì™€ ìžì‹ 디스í¬ì˜ 타임스탬프가 ì¼ì¹˜í•˜ì§€ 않습니다"
+ IDS_4134 "VHD 타임스탬프를 ê³ ì¹ ìˆ˜ 없습니다"
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "사용하지 않ìŒ"
- IDS_5381 "ATAPI"
+ IDS_5376 "사용하지 않ìŒ"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "사용하지 않ìŒ"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "사용하지 않ìŒ"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (í´ëŸ¬ìŠ¤í„° 1024)"
- IDS_5898 "DMF (í´ëŸ¬ìŠ¤í„° 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (í´ëŸ¬ìŠ¤í„° 1024)"
+ IDS_5898 "DMF (í´ëŸ¬ìŠ¤í„° 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "완벽한 íšŒì „ìˆ˜"
- IDS_6145 "1% ë‚®ì€ íšŒì „ìˆ˜"
- IDS_6146 "1.5% ë‚®ì€ íšŒì „ìˆ˜"
- IDS_6147 "2% ë‚®ì€ íšŒì „ìˆ˜"
+ IDS_6144 "완벽한 íšŒì „ìˆ˜"
+ IDS_6145 "1% ë‚®ì€ íšŒì „ìˆ˜"
+ IDS_6146 "1.5% ë‚®ì€ íšŒì „ìˆ˜"
+ IDS_6147 "2% ë‚®ì€ íšŒì „ìˆ˜"
- IDS_7168 "(시스템 기본값)"
+ IDS_7168 "(시스템 기본값)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Korean resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/pl-PL.rc b/src/win/languages/pl-PL.rc
index 343ca929b..803971ee1 100644
--- a/src/win/languages/pl-PL.rc
+++ b/src/win/languages/pl-PL.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Akcje"
BEGIN
- MENUITEM "&Klawaitura wymaga przechwytu myszy", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Prawy CTRL to lewy Alt", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Klawaitura wymaga przechwytu myszy", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Prawy CTRL to lewy Alt", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Twardy reset...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Twardy reset...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pauza", IDM_ACTION_PAUSE
+ MENUITEM "&Pauza", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "W&yjdź...", IDM_ACTION_EXIT
+ MENUITEM "W&yjdź...", IDM_ACTION_EXIT
END
POPUP "&Widok"
BEGIN
- MENUITEM "&Ukryj pasek statusu", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Ukryj &pasek narzędzi", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Ukryj pasek statusu", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Ukryj &pasek narzędzi", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Okno o zmiennym rozmiarze", IDM_VID_RESIZE
- MENUITEM "P&amiętaj rozmiar &i pozycję", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Okno o zmiennym rozmiarze", IDM_VID_RESIZE
+ MENUITEM "P&amiętaj rozmiar &i pozycję", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "Re&nderer"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Określ rozmiary...", IDM_VID_SPECIFY_DIM
- MENUITEM "&Wymuś proporcje wyświetlania 4:3", IDM_VID_FORCE43
+ MENUITEM "Określ rozmiary...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&Wymuś proporcje wyświetlania 4:3", IDM_VID_FORCE43
POPUP "&Czynnik skalowania okna"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Metoda filtrowania"
BEGIN
- MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Nearest", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Skalowanie Hi&DPI", IDM_VID_HIDPI
+ MENUITEM "Skalowanie Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Pełny ekran\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Pełny ekran\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Fullscreen &stretch mode"
BEGIN
- MENUITEM "&Tryb rozciągania na pełnym ekranie", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Tryb rozciągania na pełnym ekranie", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Kwadratowe piksele (Zachowaj proporcje)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Skalowanie całkowite", IDM_VID_FS_INT
+ MENUITEM "&Skalowanie całkowite", IDM_VID_FS_INT
END
POPUP "Ustawienia E&GA/(S)VGA"
BEGIN
- MENUITEM "&Odwrócony monitor VGA", IDM_VID_INVERT
+ MENUITEM "&Odwrócony monitor VGA", IDM_VID_INVERT
POPUP "Rodzaj ekranu &VGA"
BEGIN
- MENUITEM "RGB - &Kolorowy", IDM_VID_GRAY_RGB
- MENUITEM "&RGB - Skala szarości", IDM_VID_GRAY_MONO
- MENUITEM "&Bursztynowy monitor", IDM_VID_GRAY_AMBER
- MENUITEM "&Zielony monitor", IDM_VID_GRAY_GREEN
- MENUITEM "&Biały monitor", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB - &Kolorowy", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB - Skala szarości", IDM_VID_GRAY_MONO
+ MENUITEM "&Bursztynowy monitor", IDM_VID_GRAY_AMBER
+ MENUITEM "&Zielony monitor", IDM_VID_GRAY_GREEN
+ MENUITEM "&Biały monitor", IDM_VID_GRAY_WHITE
END
POPUP "Typ konwersji &w skali szarości"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Åšredni", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Åšredni", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Overscan dla CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "Overscan dla CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Zmień kontrast dla &monochromatycznego ekranu", IDM_VID_CGACON
END
- MENUITEM "&Nośnik", IDM_MEDIA
+ MENUITEM "&Nośnik", IDM_MEDIA
POPUP "&Narzędzia"
BEGIN
- MENUITEM "&Ustawienia...", IDM_CONFIG
- MENUITEM "&Aktualizuj ikony na pasku statusu", IDM_UPDATE_ICONS
+ MENUITEM "&Ustawienia...", IDM_CONFIG
+ MENUITEM "&Aktualizuj ikony na pasku statusu", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Zrób &zrzut ekranu\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Zrób &zrzut ekranu\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Preferencje...", IDM_PREFERENCES
+ 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
+ MENUITEM "Wzmocnienie &dźwięku...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Rozpocznij śledzenie\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Zakończ śledzenie\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Rozpocznij śledzenie\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Zakończ śledzenie\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Pomoc"
BEGIN
- MENUITEM "&Dokumentacja...", IDM_DOCS
- MENUITEM "&O 86Box...", IDM_ABOUT
+ MENUITEM "&Dokumentacja...", IDM_DOCS
+ MENUITEM "&O 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nowy obraz...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nowy obraz...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&IstniejÄ…cy obraz...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&IstniejÄ…cy obraz...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Nagraj", IDM_CASSETTE_RECORD
- MENUITEM "&Odtwórz", IDM_CASSETTE_PLAY
- MENUITEM "&Przewiń do początku", IDM_CASSETTE_REWIND
- MENUITEM "&Przewiń do końca", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Nagraj", IDM_CASSETTE_RECORD
+ MENUITEM "&Odtwórz", IDM_CASSETTE_PLAY
+ MENUITEM "&Przewiń do początku", IDM_CASSETTE_REWIND
+ MENUITEM "&Przewiń do końca", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "W&yjmij", IDM_CASSETTE_EJECT
+ MENUITEM "W&yjmij", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Obraz...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Obraz...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "W&yjmij", IDM_CARTRIDGE_EJECT
+ MENUITEM "W&yjmij", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nowy obraz...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nowy obraz...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&IstniejÄ…cy obraz...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&IstniejÄ…cy obraz...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&ksportuj do 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&ksportuj do 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "W&yjmij", IDM_FLOPPY_EJECT
+ MENUITEM "W&yjmij", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Åšcisz", IDM_CDROM_MUTE
+ MENUITEM "&Åšcisz", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "P&usty", IDM_CDROM_EMPTY
- MENUITEM "&Przeładuj poprzedni obraz", IDM_CDROM_RELOAD
+ MENUITEM "P&usty", IDM_CDROM_EMPTY
+ MENUITEM "&Przeładuj poprzedni obraz", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Obraz...", IDM_CDROM_IMAGE
- MENUITEM "&Teczka...", IDM_CDROM_DIR
+ MENUITEM "&Obraz...", IDM_CDROM_IMAGE
+ MENUITEM "&Teczka...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nowy obraz...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nowy obraz...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&IstniejÄ…cy obraz...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&IstniejÄ…cy obraz...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "W&yjmij", IDM_ZIP_EJECT
- MENUITEM "&Przeładuj poprzedni obraz", IDM_ZIP_RELOAD
+ MENUITEM "W&yjmij", IDM_ZIP_EJECT
+ MENUITEM "&Przeładuj poprzedni obraz", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nowy obraz...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nowy obraz...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&IstniejÄ…cy obraz...", IDM_MO_IMAGE_EXISTING
- MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&IstniejÄ…cy obraz...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "IstniejÄ…cy obraz (&Chroniony przed zapisem)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "W&yjmij", IDM_MO_EJECT
- MENUITEM "&Przeładuj poprzedni obraz", IDM_MO_RELOAD
+ MENUITEM "W&yjmij", IDM_MO_EJECT
+ MENUITEM "&Przeładuj poprzedni obraz", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Preferencje"
-#define STR_SND_GAIN "Wzmocnienie dźwięku"
-#define STR_NEW_FLOPPY "Nowy obraz"
-#define STR_CONFIG "Ustawienia"
-#define STR_SPECIFY_DIM "Określ rozmiary okna"
+#define STR_PREFERENCES "Preferencje"
+#define STR_SND_GAIN "Wzmocnienie dźwięku"
+#define STR_NEW_FLOPPY "Nowy obraz"
+#define STR_CONFIG "Ustawienia"
+#define STR_SPECIFY_DIM "Określ rozmiary okna"
-#define STR_OK "OK"
-#define STR_CANCEL "Anuluj"
-#define STR_GLOBAL "Zapisz ustawienia jako &globalne ustawienia domyślne"
-#define STR_DEFAULT "&Domyślny"
-#define STR_LANGUAGE "Język:"
-#define STR_ICONSET "Zestaw ikon:"
+#define STR_OK "OK"
+#define STR_CANCEL "Anuluj"
+#define STR_GLOBAL "Zapisz ustawienia jako &globalne ustawienia domyślne"
+#define STR_DEFAULT "&Domyślny"
+#define STR_LANGUAGE "Język:"
+#define STR_ICONSET "Zestaw ikon:"
-#define STR_GAIN "Wzmacniacz"
+#define STR_GAIN "Wzmacniacz"
-#define STR_FILE_NAME "Nazwa pliku:"
-#define STR_DISK_SIZE "Rozmiar dysku:"
-#define STR_RPM_MODE "Tryb RPM:"
-#define STR_PROGRESS "Postęp:"
+#define STR_FILE_NAME "Nazwa pliku:"
+#define STR_DISK_SIZE "Rozmiar dysku:"
+#define STR_RPM_MODE "Tryb RPM:"
+#define STR_PROGRESS "Postęp:"
-#define STR_WIDTH "Szerokość:"
-#define STR_HEIGHT "Wysokość:"
-#define STR_LOCK_TO_SIZE "Stały rozmiar"
+#define STR_WIDTH "Szerokość:"
+#define STR_HEIGHT "Wysokość:"
+#define STR_LOCK_TO_SIZE "Stały rozmiar"
-#define STR_MACHINE_TYPE "Rodzaj maszyny:"
-#define STR_MACHINE "Maszyna:"
-#define STR_CONFIGURE "Konfiguruj"
-#define STR_CPU_TYPE "Rodzaj procesora:"
-#define STR_CPU_SPEED "Szybkość:"
-#define STR_FPU "Jednostka FPU:"
-#define STR_WAIT_STATES "Stany oczekiwania:"
-#define STR_MB "MB"
-#define STR_MEMORY "Pamięć:"
-#define STR_TIME_SYNC "Synchronizacja czasu"
-#define STR_DISABLED "Wyłączona"
-#define STR_ENABLED_LOCAL "Włączona (czas lokalny)"
-#define STR_ENABLED_UTC "Włączona (UTC)"
-#define STR_DYNAREC "Dynamiczny rekompilator"
+#define STR_MACHINE_TYPE "Rodzaj maszyny:"
+#define STR_MACHINE "Maszyna:"
+#define STR_CONFIGURE "Konfiguruj"
+#define STR_CPU_TYPE "Rodzaj procesora:"
+#define STR_CPU_SPEED "Szybkość:"
+#define STR_FPU "Jednostka FPU:"
+#define STR_WAIT_STATES "Stany oczekiwania:"
+#define STR_MB "MB"
+#define STR_MEMORY "Pamięć:"
+#define STR_TIME_SYNC "Synchronizacja czasu"
+#define STR_DISABLED "Wyłączona"
+#define STR_ENABLED_LOCAL "Włączona (czas lokalny)"
+#define STR_ENABLED_UTC "Włączona (UTC)"
+#define STR_DYNAREC "Dynamiczny rekompilator"
-#define STR_VIDEO "Wideo:"
-#define STR_VIDEO_2 "Wideo 2:"
-#define STR_VOODOO "Grafika Voodoo"
-#define STR_IBM8514 "Grafika IBM 8514/a"
-#define STR_XGA "Grafika XGA"
+#define STR_VIDEO "Wideo:"
+#define STR_VIDEO_2 "Wideo 2:"
+#define STR_VOODOO "Grafika Voodoo"
+#define STR_IBM8514 "Grafika IBM 8514/a"
+#define STR_XGA "Grafika XGA"
-#define STR_MOUSE "Mysz:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Mysz:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "UrzÄ…dzenie COM3:"
-#define STR_COM4 "UrzÄ…dzenie COM4:"
-#define STR_LPT1 "UrzÄ…dzenie LPT1:"
-#define STR_LPT2 "UrzÄ…dzenie LPT2:"
-#define STR_LPT3 "UrzÄ…dzenie LPT3:"
-#define STR_LPT4 "UrzÄ…dzenie LPT4:"
-#define STR_SERIAL1 "Port szeregowy 1"
-#define STR_SERIAL2 "Port szeregowy 2"
-#define STR_SERIAL3 "Port szeregowy 3"
-#define STR_SERIAL4 "Port Szeregowy 4"
-#define STR_PARALLEL1 "Port równoległy 1"
-#define STR_PARALLEL2 "Port równoległy 2"
-#define STR_PARALLEL3 "Port równoległy 3"
-#define STR_PARALLEL4 "Port równoległy 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "UrzÄ…dzenie COM1:"
+#define STR_COM2 "UrzÄ…dzenie COM2:"
+#define STR_COM3 "UrzÄ…dzenie COM3:"
+#define STR_COM4 "UrzÄ…dzenie COM4:"
+#define STR_LPT1 "UrzÄ…dzenie LPT1:"
+#define STR_LPT2 "UrzÄ…dzenie LPT2:"
+#define STR_LPT3 "UrzÄ…dzenie LPT3:"
+#define STR_LPT4 "UrzÄ…dzenie LPT4:"
+#define STR_SERIAL1 "Port szeregowy 1"
+#define STR_SERIAL2 "Port szeregowy 2"
+#define STR_SERIAL3 "Port szeregowy 3"
+#define STR_SERIAL4 "Port Szeregowy 4"
+#define STR_PARALLEL1 "Port równoległy 1"
+#define STR_PARALLEL2 "Port równoległy 2"
+#define STR_PARALLEL3 "Port równoległy 3"
+#define STR_PARALLEL4 "Port równoległy 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Kontroler dysku twardego:"
-#define STR_FDC "Kontroler dyskietek:"
-#define STR_IDE_TER "Trzeciorzędowy kontroler IDE"
-#define STR_IDE_QUA "Czwartorzędowy kontroler IDE"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Kontroler 1:"
-#define STR_SCSI_2 "Kontroler 2:"
-#define STR_SCSI_3 "Kontroler 3:"
-#define STR_SCSI_4 "Kontroler 4:"
-#define STR_CASSETTE "Kaseta"
+#define STR_HDC "Kontroler dysku twardego:"
+#define STR_FDC "Kontroler dyskietek:"
+#define STR_IDE_TER "Trzeciorzędowy kontroler IDE"
+#define STR_IDE_QUA "Czwartorzędowy kontroler IDE"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Kontroler 1:"
+#define STR_SCSI_2 "Kontroler 2:"
+#define STR_SCSI_3 "Kontroler 3:"
+#define STR_SCSI_4 "Kontroler 4:"
+#define STR_CASSETTE "Kaseta"
-#define STR_HDD "Dyski twarde:"
-#define STR_NEW "&Nowy..."
-#define STR_EXISTING "&IstniejÄ…cy..."
-#define STR_REMOVE "&Usuń"
-#define STR_BUS "Magistrala:"
-#define STR_CHANNEL "Kanał:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Dyski twarde:"
+#define STR_NEW "&Nowy..."
+#define STR_EXISTING "&IstniejÄ…cy..."
+#define STR_REMOVE "&Usuń"
+#define STR_BUS "Magistrala:"
+#define STR_CHANNEL "Kanał:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Określ..."
-#define STR_SECTORS "Sektory:"
-#define STR_HEADS "Głowice:"
-#define STR_CYLS "Cylindry:"
-#define STR_SIZE_MB "Rozmiar (MB):"
-#define STR_TYPE "Rodzaj:"
-#define STR_IMG_FORMAT "Format obrazu:"
-#define STR_BLOCK_SIZE "Rozmiar bloku:"
+#define STR_SPECIFY "&Określ..."
+#define STR_SECTORS "Sektory:"
+#define STR_HEADS "Głowice:"
+#define STR_CYLS "Cylindry:"
+#define STR_SIZE_MB "Rozmiar (MB):"
+#define STR_TYPE "Rodzaj:"
+#define STR_IMG_FORMAT "Format obrazu:"
+#define STR_BLOCK_SIZE "Rozmiar bloku:"
-#define STR_FLOPPY_DRIVES "Napędy dyskietek:"
-#define STR_TURBO "RozrzÄ…dy Turbo"
-#define STR_CHECKBPB "Sprawdzaj BPB"
-#define STR_CDROM_DRIVES "Napędy CD-ROM:"
-#define STR_CD_SPEED "Szybkość:"
-#define STR_EARLY "Wcześniejszy napęd"
+#define STR_FLOPPY_DRIVES "Napędy dyskietek:"
+#define STR_TURBO "RozrzÄ…dy Turbo"
+#define STR_CHECKBPB "Sprawdzaj BPB"
+#define STR_CDROM_DRIVES "Napędy CD-ROM:"
+#define STR_CD_SPEED "Szybkość:"
+#define STR_EARLY "Wcześniejszy napęd"
-#define STR_MO_DRIVES "Napędy MO:"
-#define STR_ZIP_DRIVES "Napędy ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Napędy MO:"
+#define STR_ZIP_DRIVES "Napędy ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "Rozszerzenie pamięci ISA"
-#define STR_ISAMEM_1 "Karta 1:"
-#define STR_ISAMEM_2 "Karta 2:"
-#define STR_ISAMEM_3 "Karta 3:"
-#define STR_ISAMEM_4 "Karta 4:"
-#define STR_BUGGER "UrzÄ…dzenie ISABugger"
-#define STR_POSTCARD "Karta POST"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "Rozszerzenie pamięci ISA"
+#define STR_ISAMEM_1 "Karta 1:"
+#define STR_ISAMEM_2 "Karta 2:"
+#define STR_ISAMEM_3 "Karta 3:"
+#define STR_ISAMEM_4 "Karta 4:"
+#define STR_BUGGER "UrzÄ…dzenie ISABugger"
+#define STR_POSTCARD "Karta POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Błąd"
- IDS_2050 "Fatalny błąd"
- IDS_2051 " - PAUSED"
- IDS_2052 "Naciśnij klawisze Ctrl+Alt+PgDn aby wrócić to trybu okna."
- IDS_2053 "Szybkość"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Obrazy ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box nie może znaleźć obrazów ROM nadających się do użytku.\n\nProszę pobrać zestaw obrazów ROM ze strony download, i rozpakować je do katalogu ""roms""."
- IDS_2057 "(pusty)"
- IDS_2058 "Obrazy ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Wszystkie pliki (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "Włącz"
- IDS_2061 "Wyłącz"
- IDS_2062 "Wszystkie obrazy (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Podstawowe obrazy sektorów(*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Obrazy powierzchniowe (*.86F)\0*.86F\0"
- IDS_2063 "Maszyna ""%hs"" nie jest dostępna, ponieważ brakuje obrazów ROM w katalogu roms/machines. Przełączanie na dostępną maszynę."
+ 2048 "86Box"
+ IDS_2049 "Błąd"
+ IDS_2050 "Fatalny błąd"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Naciśnij klawisze Ctrl+Alt+PgDn aby wrócić to trybu okna."
+ IDS_2053 "Szybkość"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Obrazy ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box nie może znaleźć obrazów ROM nadających się do użytku.\n\nProszę pobrać zestaw obrazów ROM ze strony download, i rozpakować je do katalogu ""roms""."
+ IDS_2057 "(pusty)"
+ IDS_2058 "Obrazy ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Wszystkie pliki (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "Włącz"
+ IDS_2061 "Wyłącz"
+ IDS_2062 "Wszystkie obrazy (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Podstawowe obrazy sektorów(*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Obrazy powierzchniowe (*.86F)\0*.86F\0"
+ IDS_2063 "Maszyna ""%hs"" nie jest dostępna, ponieważ brakuje obrazów ROM w katalogu roms/machines. Przełączanie na dostępną maszynę."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Karta wideo ""%hs"" nie jest dostępna, ponieważ brakuje obrazów ROM w katalogu roms/video. Przełączanie na dostępną kartę wideo."
- IDS_2065 "Maszyna"
- IDS_2066 "Ekran"
- IDS_2067 "Urządzenia wejściowe"
- IDS_2068 "Dźwięk"
- IDS_2069 "Sieć"
- IDS_2070 "Porty (COM & LPT)"
- IDS_2071 "Kontrolery pamięci"
- IDS_2072 "Dyski twarde"
- IDS_2073 "Napędy dyskietek i CD-ROM"
- IDS_2074 "Inne urzÄ…dzenia wymienne"
- IDS_2075 "Inne urzÄ…dzenia peryferyjne"
- IDS_2076 "Obrazy powierzchniowe (*.86F)\0*.86F\0"
- IDS_2077 "Kliknij w celu przechwycenia myszy"
- IDS_2078 "Naciśnij klawisze F8+F12 w celu uwolnienia myszy"
- IDS_2079 "Naciśnij klawisze F8+F12 lub środkowy przycisk w celu uwolnienia myszy"
+ IDS_2064 "Karta wideo ""%hs"" nie jest dostępna, ponieważ brakuje obrazów ROM w katalogu roms/video. Przełączanie na dostępną kartę wideo."
+ IDS_2065 "Maszyna"
+ IDS_2066 "Ekran"
+ IDS_2067 "Urządzenia wejściowe"
+ IDS_2068 "Dźwięk"
+ IDS_2069 "Sieć"
+ IDS_2070 "Porty (COM & LPT)"
+ IDS_2071 "Kontrolery pamięci"
+ IDS_2072 "Dyski twarde"
+ IDS_2073 "Napędy dyskietek i CD-ROM"
+ IDS_2074 "Inne urzÄ…dzenia wymienne"
+ IDS_2075 "Inne urzÄ…dzenia peryferyjne"
+ IDS_2076 "Obrazy powierzchniowe (*.86F)\0*.86F\0"
+ IDS_2077 "Kliknij w celu przechwycenia myszy"
+ IDS_2078 "Naciśnij klawisze F8+F12 w celu uwolnienia myszy"
+ IDS_2079 "Naciśnij klawisze F8+F12 lub środkowy przycisk w celu uwolnienia myszy"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Nie można zainicjować FluidSynth"
- IDS_2081 "Magistrala"
- IDS_2082 "Plik"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Nie można zainicjować FluidSynth"
+ IDS_2081 "Magistrala"
+ IDS_2082 "Plik"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Sprawdzaj BPB"
- IDS_2089 "KB"
- IDS_2090 "Nie można zainicjować renderera wideo."
- IDS_2091 "Domyślny"
- IDS_2092 "%i Stany oczekiwania"
- IDS_2093 "Rodzaj"
- IDS_2094 "Nie udało się ustawić PCap"
- IDS_2095 "Nie znaleziono urządzeń PCap"
- IDS_2096 "Nieprawidłowe urządzenie PCap"
- IDS_2097 "Standardowe joysticki 2-przyciskowe"
- IDS_2098 "Standardowy joystick 4-przyciskowy"
- IDS_2099 "Standardowy joystick 6-przyciskowy"
- IDS_2100 "Standardowy joystick 8-przyciskowy"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Żaden"
- IDS_2105 "Nie można załadować akceleratorów klawiaturowych."
- IDS_2106 "Nie można zarejestrować surowych danych wejściowych."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Dyskietka %i (%s): %ls"
- IDS_2110 "Wszystkie obrazy (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Zaawansowane obrazy sektorów (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Podstawowe obrazy sektorów (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Obrazy powierzchniowe (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
- IDS_2111 "Nie można zainicjować FreeType"
- IDS_2112 "Nie można zainicjować SDL, wymagany SDL2.dll"
- IDS_2113 "Jesteś pewien że chcesz wykonać twardy reset emulowanej maszyny?"
- IDS_2114 "Jesteś pewien że chcesz zakończyć 86Box?"
- IDS_2115 "Nie można zainicjować Ghostscript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2118 "Witamy w 86Box!"
- IDS_2119 "Kontroler wewnętrzny"
- IDS_2120 "Zakończ"
- IDS_2121 "Nie znaleziono obrazów ROM"
- IDS_2122 "Czy chcesz zapisać ustawienia?"
- IDS_2123 "To spowoduje twardy reset wirtualnej maszyny."
- IDS_2124 "Zapisz"
- IDS_2125 "O 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Sprawdzaj BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Nie można zainicjować renderera wideo."
+ IDS_2091 "Domyślny"
+ IDS_2092 "%i Stany oczekiwania"
+ IDS_2093 "Rodzaj"
+ IDS_2094 "Nie udało się ustawić PCap"
+ IDS_2095 "Nie znaleziono urządzeń PCap"
+ IDS_2096 "Nieprawidłowe urządzenie PCap"
+ IDS_2097 "Standardowe joysticki 2-przyciskowe"
+ IDS_2098 "Standardowy joystick 4-przyciskowy"
+ IDS_2099 "Standardowy joystick 6-przyciskowy"
+ IDS_2100 "Standardowy joystick 8-przyciskowy"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Żaden"
+ IDS_2105 "Nie można załadować akceleratorów klawiaturowych."
+ IDS_2106 "Nie można zarejestrować surowych danych wejściowych."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Dyskietka %i (%s): %ls"
+ IDS_2110 "Wszystkie obrazy (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Zaawansowane obrazy sektorów (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Podstawowe obrazy sektorów (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Obrazy powierzchniowe (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
+ IDS_2111 "Nie można zainicjować FreeType"
+ IDS_2112 "Nie można zainicjować SDL, wymagany SDL2.dll"
+ IDS_2113 "Jesteś pewien że chcesz wykonać twardy reset emulowanej maszyny?"
+ IDS_2114 "Jesteś pewien że chcesz zakończyć 86Box?"
+ IDS_2115 "Nie można zainicjować Ghostscript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2118 "Witamy w 86Box!"
+ IDS_2119 "Kontroler wewnętrzny"
+ IDS_2120 "Zakończ"
+ IDS_2121 "Nie znaleziono obrazów ROM"
+ IDS_2122 "Czy chcesz zapisać ustawienia?"
+ IDS_2123 "To spowoduje twardy reset wirtualnej maszyny."
+ IDS_2124 "Zapisz"
+ IDS_2125 "O 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Emulator starych komputerów\n\nAutorzy: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, i inni.\n\nPrzetłumaczony przez: Fanta-Shokata\n\nWydany na licencji GNU General Public License w wersji 2 lub nowszej. Zobacz LICENSE aby uzyskać więcej informacji."
- IDS_2128 "OK"
- IDS_2129 "Sprzęt niedostępny"
+ IDS_2127 "Emulator starych komputerów\n\nAutorzy: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, i inni.\n\nPrzetłumaczony przez: Fanta-Shokata\n\nWydany na licencji GNU General Public License w wersji 2 lub nowszej. Zobacz LICENSE aby uzyskać więcej informacji."
+ IDS_2128 "OK"
+ IDS_2129 "Sprzęt niedostępny"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Sprawdź, czy " LIB_NAME_PCAP " jest zainstalowany i czy posiadasz połączenie sieciowe kompatybilne z " LIB_NAME_PCAP "."
- IDS_2131 "Nieprawidłowa konfiguracja"
+ IDS_2130 "Sprawdź, czy " LIB_NAME_PCAP " jest zainstalowany i czy posiadasz połączenie sieciowe kompatybilne z " LIB_NAME_PCAP "."
+ IDS_2131 "Nieprawidłowa konfiguracja"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " jest wymagany do emulacji drukarki ESC-P."
+ IDS_2132 LIB_NAME_FREETYPE " jest wymagany do emulacji drukarki ESC-P."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " jest wymagany do automatycznej konwersji plików PostScript do PDF.\n\nDokumenty wysłane do ogólnej drukarki PostScript zostaną zapisane jako pliki PostScript (.ps)."
+ IDS_2133 LIB_NAME_GS " jest wymagany do automatycznej konwersji plików PostScript do PDF.\n\nDokumenty wysłane do ogólnej drukarki PostScript zostaną zapisane jako pliki PostScript (.ps)."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " jest wymagany dla wyjścia FluidSynth MIDI."
- IDS_2135 "Przechodzenie do trybu pełnoekranowego"
- IDS_2136 "Nie pokazuj więcej tego komunikatu"
- IDS_2137 "Nie kończ"
- IDS_2138 "Przywróć"
- IDS_2139 "Nie przywracaj"
- IDS_2140 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2141 "Obrazy CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
- IDS_2142 "Konfiguracja urzÄ…dzenia %hs"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " jest wymagany dla wyjścia FluidSynth MIDI."
+ IDS_2135 "Przechodzenie do trybu pełnoekranowego"
+ IDS_2136 "Nie pokazuj więcej tego komunikatu"
+ IDS_2137 "Nie kończ"
+ IDS_2138 "Przywróć"
+ IDS_2139 "Nie przywracaj"
+ IDS_2140 "Obrazy MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2141 "Obrazy CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0All files (*.*)\0*.*\0"
+ IDS_2142 "Konfiguracja urzÄ…dzenia %hs"
IDS_2143 "Monitor w trybie czuwania"
- IDS_2144 "Shadery OpenGL (*.GLSL)\0*.GLSL\0Wszystkie pliki (*.*)\0*.*\0"
- IDS_2145 "Opcje OpenGL"
- IDS_2146 "Åadujesz nieobsÅ‚ugiwanÄ… konfiguracjÄ™"
- IDS_2147 "Wybór rodzaju procesora oparty na wybranej maszynie jest wyłączony dla tej emulowanej maszyny.\n\nPozwala to na wybór procesora który jest niekompatybilny z wybraną maszyną. Jednak możesz napotkać niezgodności z BIOS-em maszyny lub innym oprogramowaniem.\n\nAktywacja tego ustawienia nie jest wspierana i każde zgłoszenie błędu może zostać zamknięte jako nieważne."
- IDS_2148 "Kontynuuj"
- IDS_2149 "Kaseta: %s"
- IDS_2150 "Obrazy kaset (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Wszystkie pliki (*.*)\0*.*\0"
- IDS_2151 "Kartrydż %i: %ls"
- IDS_2152 "Obrazy kartrydżu (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Wszystkie pliki (*.*)\0*.*\0"
- IDS_2153 "Błąd inicjalizacji renderera"
- IDS_2154 "Nie można zainicjować renderera OpenGL (3.0 Core). Użyj innego."
- IDS_2155 "Wznów wykonywanie"
- IDS_2156 "Zatrzymaj wykonywanie"
- IDS_2157 "Naciśnij Ctrl+Alt+Del"
- IDS_2158 "Naciśnij Ctrl+Alt+Esc"
- IDS_2159 "Twardy reset"
- IDS_2160 "Wyłączenie ACPI"
- IDS_2161 "Ustawienia"
+ IDS_2144 "Shadery OpenGL (*.GLSL)\0*.GLSL\0Wszystkie pliki (*.*)\0*.*\0"
+ IDS_2145 "Opcje OpenGL"
+ IDS_2146 "Åadujesz nieobsÅ‚ugiwanÄ… konfiguracjÄ™"
+ IDS_2147 "Wybór rodzaju procesora oparty na wybranej maszynie jest wyłączony dla tej emulowanej maszyny.\n\nPozwala to na wybór procesora który jest niekompatybilny z wybraną maszyną. Jednak możesz napotkać niezgodności z BIOS-em maszyny lub innym oprogramowaniem.\n\nAktywacja tego ustawienia nie jest wspierana i każde zgłoszenie błędu może zostać zamknięte jako nieważne."
+ IDS_2148 "Kontynuuj"
+ IDS_2149 "Kaseta: %s"
+ IDS_2150 "Obrazy kaset (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Wszystkie pliki (*.*)\0*.*\0"
+ IDS_2151 "Kartrydż %i: %ls"
+ IDS_2152 "Obrazy kartrydżu (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Wszystkie pliki (*.*)\0*.*\0"
+ IDS_2153 "Błąd inicjalizacji renderera"
+ IDS_2154 "Nie można zainicjować renderera OpenGL (3.0 Core). Użyj innego."
+ IDS_2155 "Wznów wykonywanie"
+ IDS_2156 "Zatrzymaj wykonywanie"
+ IDS_2157 "Naciśnij Ctrl+Alt+Del"
+ IDS_2158 "Naciśnij Ctrl+Alt+Esc"
+ IDS_2159 "Twardy reset"
+ IDS_2160 "Wyłączenie ACPI"
+ IDS_2161 "Ustawienia"
IDS_2162 "Wcześniejszy napęd"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Dysk twardy (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "Napędy CD-ROM MFM/RLL lub ESDI nigdy nie istniały"
- IDS_4100 "Niestandardowy..."
- IDS_4101 "Niestandardowy (duży)..."
- IDS_4102 "Dodaj nowy dysk twardy"
- IDS_4103 "Dodaj istniejÄ…cy dysk twardy"
- IDS_4104 "Obrazy dysków HDI nie mogą być większe niż 4 GB."
- IDS_4105 "Obrazy dysków nie mogą być większe niż 127 GB."
- IDS_4106 "Obrazy dysku twardego (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Wszystkie pliki (*.*)\0*.*\0"
- IDS_4107 "Nie można odczytać pliku"
- IDS_4108 "Nie można zapisać pliku"
- IDS_4109 "Obrazy HDI lub HDX z rozmiarem sektora innym niż 512 nie są wspierane."
- IDS_4110 "USB nie jest jeszcze wspierane"
- IDS_4111 "Plik obrazu dysku już istnieje"
- IDS_4112 "Określ prawidłową nazwę pliku."
- IDS_4113 "Utworzono obraz dysku"
- IDS_4114 "Sprawdź, czy plik istnieje i nadaje się do odczytu."
- IDS_4115 "Sprawdź, czy plik jest zapiyswany w katalogu z możliwością zapisu."
- IDS_4116 "Obraz dysku jest za duży"
- IDS_4117 "Nie zapomnij o partycjonowaniu i sformatowaniu nowo utworzego dysku"
- IDS_4118 "Wybrany plik zostanie nadpisany. Czy na pewno chcesz użyć tego pliku?"
- IDS_4119 "Niewspierany obraz dysku"
- IDS_4120 "Nadpisz"
- IDS_4121 "Nie nadpisuj"
- IDS_4122 "Obraz surowy (.img)"
- IDS_4123 "Obraz HDI (.hdi)"
- IDS_4124 "Obraz HDX (.hdx)"
- IDS_4125 "VHD o stałym rozmiarze (.vhd)"
- IDS_4126 "VHD o dynamicznym rozmiarze (.vhd)"
- IDS_4127 "VHD różnicujący (.vhd)"
- IDS_4128 "Duże bloki (2 MB)"
- IDS_4129 "Małe bloki (512 KB)"
- IDS_4130 "Pliki VHD (*.VHD)\0*.VHD\0Wszystkie pliki (*.*)\0*.*\0"
- IDS_4131 "Wybierz nadrzędny plik VHD"
- IDS_4132 "Może to oznaczać, że obraz nadrzędny został zmodyfikowany po utworzeniu obrazu różnicującego.\n\nMoże się to również zdarzyć, jeśli pliki obrazów zostały przeniesione lub skopiowane, lub wystąpił błąd w programie, który utworzył ten dysk\n\nCzy chcesz naprawić sygnatury czasowe?"
- IDS_4133 "Sygnatury czasowe dysku nadrzędnego i podrzędnego nie zgadzają się"
- IDS_4134 "Nie można naprawić sygnatury czasowej VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "Napędy CD-ROM MFM/RLL lub ESDI nigdy nie istniały"
+ IDS_4100 "Niestandardowy..."
+ IDS_4101 "Niestandardowy (duży)..."
+ IDS_4102 "Dodaj nowy dysk twardy"
+ IDS_4103 "Dodaj istniejÄ…cy dysk twardy"
+ IDS_4104 "Obrazy dysków HDI nie mogą być większe niż 4 GB."
+ IDS_4105 "Obrazy dysków nie mogą być większe niż 127 GB."
+ IDS_4106 "Obrazy dysku twardego (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Wszystkie pliki (*.*)\0*.*\0"
+ IDS_4107 "Nie można odczytać pliku"
+ IDS_4108 "Nie można zapisać pliku"
+ IDS_4109 "Obrazy HDI lub HDX z rozmiarem sektora innym niż 512 nie są wspierane."
+ IDS_4110 "USB nie jest jeszcze wspierane"
+ IDS_4111 "Plik obrazu dysku już istnieje"
+ IDS_4112 "Określ prawidłową nazwę pliku."
+ IDS_4113 "Utworzono obraz dysku"
+ IDS_4114 "Sprawdź, czy plik istnieje i nadaje się do odczytu."
+ IDS_4115 "Sprawdź, czy plik jest zapiyswany w katalogu z możliwością zapisu."
+ IDS_4116 "Obraz dysku jest za duży"
+ IDS_4117 "Nie zapomnij o partycjonowaniu i sformatowaniu nowo utworzego dysku"
+ IDS_4118 "Wybrany plik zostanie nadpisany. Czy na pewno chcesz użyć tego pliku?"
+ IDS_4119 "Niewspierany obraz dysku"
+ IDS_4120 "Nadpisz"
+ IDS_4121 "Nie nadpisuj"
+ IDS_4122 "Obraz surowy (.img)"
+ IDS_4123 "Obraz HDI (.hdi)"
+ IDS_4124 "Obraz HDX (.hdx)"
+ IDS_4125 "VHD o stałym rozmiarze (.vhd)"
+ IDS_4126 "VHD o dynamicznym rozmiarze (.vhd)"
+ IDS_4127 "VHD różnicujący (.vhd)"
+ IDS_4128 "Duże bloki (2 MB)"
+ IDS_4129 "Małe bloki (512 KB)"
+ IDS_4130 "Pliki VHD (*.VHD)\0*.VHD\0Wszystkie pliki (*.*)\0*.*\0"
+ IDS_4131 "Wybierz nadrzędny plik VHD"
+ IDS_4132 "Może to oznaczać, że obraz nadrzędny został zmodyfikowany po utworzeniu obrazu różnicującego.\n\nMoże się to również zdarzyć, jeśli pliki obrazów zostały przeniesione lub skopiowane, lub wystąpił błąd w programie, który utworzył ten dysk\n\nCzy chcesz naprawić sygnatury czasowe?"
+ IDS_4133 "Sygnatury czasowe dysku nadrzędnego i podrzędnego nie zgadzają się"
+ IDS_4134 "Nie można naprawić sygnatury czasowej VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Wyłączony"
- IDS_5381 "ATAPI"
+ IDS_5376 "Wyłączony"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Wyłączony"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Wyłączony"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1,2 MB"
- IDS_5895 "1,25 MB"
- IDS_5896 "1,44 MB"
- IDS_5897 "DMF (klaster 1024)"
- IDS_5898 "DMF (klaster 2048)"
- IDS_5899 "2,88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1,3 GB (GigaMO)"
- IDS_5907 "3.5"" 2,3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1,3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1,2 MB"
+ IDS_5895 "1,25 MB"
+ IDS_5896 "1,44 MB"
+ IDS_5897 "DMF (klaster 1024)"
+ IDS_5898 "DMF (klaster 2048)"
+ IDS_5899 "2,88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1,3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2,3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1,3 GB"
- IDS_6144 "Idealne obroty"
- IDS_6145 "1% poniżej idealnych obrotów"
- IDS_6146 "1.5% poniżej idealnych obrotów"
- IDS_6147 "2% poniżej idealnych obrotów"
+ IDS_6144 "Idealne obroty"
+ IDS_6145 "1% poniżej idealnych obrotów"
+ IDS_6146 "1.5% poniżej idealnych obrotów"
+ IDS_6147 "2% poniżej idealnych obrotów"
- IDS_7168 "(Domyślne ustawienie systemowe)"
+ IDS_7168 "(Domyślne ustawienie systemowe)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Polish (pl-PL) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/pt-BR.rc b/src/win/languages/pt-BR.rc
index 104c3648e..669bb91b3 100644
--- a/src/win/languages/pt-BR.rc
+++ b/src/win/languages/pt-BR.rc
@@ -16,122 +16,122 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Ação"
BEGIN
- MENUITEM "&Teclado requer captura", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "CTRL &direito é o ALT esquerdo", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Teclado requer captura", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "CTRL &direito é o ALT esquerdo", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Reinicialização completa...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Reinicialização completa...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pausar", IDM_ACTION_PAUSE
+ MENUITEM "&Pausar", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Sair...", IDM_ACTION_EXIT
+ MENUITEM "&Sair...", IDM_ACTION_EXIT
END
POPUP "&Exibir"
BEGIN
- MENUITEM "&Ocultar barra de status", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Ocultar &barra de ferramenta", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Ocultar barra de status", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Ocultar &barra de ferramenta", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Mostrar monitores não-primários", IDM_VID_MONITORS
- MENUITEM "&Janela redimensionável", IDM_VID_RESIZE
- MENUITEM "&Lembrar tamanho e posição", IDM_VID_REMEMBER
+ MENUITEM "&Mostrar monitores não-primários", IDM_VID_MONITORS
+ MENUITEM "&Janela redimensionável", IDM_VID_RESIZE
+ MENUITEM "&Lembrar tamanho e posição", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Renderizador"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (Núcleo 3.0)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (Núcleo 3.0)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Especificar as dimensões...", IDM_VID_SPECIFY_DIM
- MENUITEM "F&orçar proporção de tela em 4:3", IDM_VID_FORCE43
+ MENUITEM "Especificar as dimensões...", IDM_VID_SPECIFY_DIM
+ MENUITEM "F&orçar proporção de tela em 4:3", IDM_VID_FORCE43
POPUP "&Fator de redimensionamento da janela"
BEGIN
- MENUITEM "&0,5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1,&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0,5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1,&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Método de filtragem"
BEGIN
- MENUITEM "&Mais próximo", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Mais próximo", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Escala Hi&DPI", IDM_VID_HIDPI
+ MENUITEM "Escala Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Tela cheia\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Tela cheia\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Modo de &redimensionamento da tela cheia"
BEGIN
- MENUITEM "&Tela cheia esticada", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Tela cheia esticada", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "Pixel&s quadrados (manter proporção)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Redimensionamento com valores inteiros", IDM_VID_FS_INT
+ MENUITEM "&Redimensionamento com valores inteiros", IDM_VID_FS_INT
END
POPUP "Configurações E&GA/(S)VGA"
BEGIN
- MENUITEM "Monitor VGA &invertido", IDM_VID_INVERT
+ MENUITEM "Monitor VGA &invertido", IDM_VID_INVERT
POPUP "&Tipo de tela VGA"
BEGIN
- MENUITEM "&Cores RGB", IDM_VID_GRAY_RGB
- MENUITEM "Tons de cinza &RGB", IDM_VID_GRAY_MONO
- MENUITEM "Monitor &âmbar", IDM_VID_GRAY_AMBER
- MENUITEM "Monitor &verde", IDM_VID_GRAY_GREEN
- MENUITEM "Monitor &branco", IDM_VID_GRAY_WHITE
+ MENUITEM "&Cores RGB", IDM_VID_GRAY_RGB
+ MENUITEM "Tons de cinza &RGB", IDM_VID_GRAY_MONO
+ MENUITEM "Monitor &âmbar", IDM_VID_GRAY_AMBER
+ MENUITEM "Monitor &verde", IDM_VID_GRAY_GREEN
+ MENUITEM "Monitor &branco", IDM_VID_GRAY_WHITE
END
POPUP "Tipo de &conversão de tons de cinza"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Média", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Média", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Overscan do CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "Overscan do CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Alterar contraste para exibição &monocromática", IDM_VID_CGACON
END
- MENUITEM "&MÃdia", IDM_MEDIA
+ MENUITEM "&MÃdia", IDM_MEDIA
POPUP "&Ferramentas"
BEGIN
- MENUITEM "&Configurações...", IDM_CONFIG
- MENUITEM "&Atualizar Ãcones da barra de status", IDM_UPDATE_ICONS
+ MENUITEM "&Configurações...", IDM_CONFIG
+ MENUITEM "&Atualizar Ãcones da barra de status", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Capturar &tela\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Capturar &tela\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Preferências...", IDM_PREFERENCES
+ 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
+ MENUITEM "&Ganho de som...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Inicio do rastreamento\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Fim do rastreamento\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Inicio do rastreamento\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Fim do rastreamento\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Ajuda"
BEGIN
- MENUITEM "&Documentação...", IDM_DOCS
- MENUITEM "&Sobre o 86Box...", IDM_ABOUT
+ MENUITEM "&Documentação...", IDM_DOCS
+ MENUITEM "&Sobre o 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -140,17 +140,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Imagem existente...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Imagem existente...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Gravar", IDM_CASSETTE_RECORD
- MENUITEM "&Reproduzir", IDM_CASSETTE_PLAY
- MENUITEM "&Rebobinar até o começo", IDM_CASSETTE_REWIND
- MENUITEM "&Avançar até o fim", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Gravar", IDM_CASSETTE_RECORD
+ MENUITEM "&Reproduzir", IDM_CASSETTE_PLAY
+ MENUITEM "&Rebobinar até o começo", IDM_CASSETTE_REWIND
+ MENUITEM "&Avançar até o fim", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_CASSETTE_EJECT
+ MENUITEM "E&jetar", IDM_CASSETTE_EJECT
END
END
@@ -158,9 +158,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Imagem...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Imagem...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_CARTRIDGE_EJECT
+ MENUITEM "E&jetar", IDM_CARTRIDGE_EJECT
END
END
@@ -168,14 +168,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Imagem existente...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Imagem existente...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xportar para 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xportar para 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_FLOPPY_EJECT
+ MENUITEM "E&jetar", IDM_FLOPPY_EJECT
END
END
@@ -183,13 +183,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Sem som", IDM_CDROM_MUTE
+ MENUITEM "&Sem som", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&Vazio", IDM_CDROM_EMPTY
- MENUITEM "&Recarregar imagem anterior", IDM_CDROM_RELOAD
+ MENUITEM "&Vazio", IDM_CDROM_EMPTY
+ MENUITEM "&Recarregar imagem anterior", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Imagem...", IDM_CDROM_IMAGE
- MENUITEM "&Pasta...", IDM_CDROM_DIR
+ MENUITEM "&Imagem...", IDM_CDROM_IMAGE
+ MENUITEM "&Pasta...", IDM_CDROM_DIR
END
END
@@ -197,13 +197,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Imagem existente...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Imagem existente...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_ZIP_EJECT
- MENUITEM "&Recarregar imagem anterior", IDM_ZIP_RELOAD
+ MENUITEM "E&jetar", IDM_ZIP_EJECT
+ MENUITEM "&Recarregar imagem anterior", IDM_ZIP_RELOAD
END
END
@@ -211,13 +211,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Imagem existente...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Imagem existente...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&protegida contra escrita)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_MO_EJECT
- MENUITEM "&Recarregar imagem anterior", IDM_MO_RELOAD
+ MENUITEM "E&jetar", IDM_MO_EJECT
+ MENUITEM "&Recarregar imagem anterior", IDM_MO_RELOAD
END
END
@@ -243,150 +243,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Preferências"
-#define STR_SND_GAIN "Ganho de som"
-#define STR_NEW_FLOPPY "Nova imagem de disquete"
-#define STR_CONFIG "Configurações"
-#define STR_SPECIFY_DIM "Especifique as dimensões da janela principal"
+#define STR_PREFERENCES "Preferências"
+#define STR_SND_GAIN "Ganho de som"
+#define STR_NEW_FLOPPY "Nova imagem de disquete"
+#define STR_CONFIG "Configurações"
+#define STR_SPECIFY_DIM "Especifique as dimensões da janela principal"
-#define STR_OK "OK"
-#define STR_CANCEL "Cancelar"
-#define STR_GLOBAL "Usar estas configurações como &padrões globais"
-#define STR_DEFAULT "&Padrão"
-#define STR_LANGUAGE "Idioma:"
-#define STR_ICONSET "Pacote de Ãcones:"
+#define STR_OK "OK"
+#define STR_CANCEL "Cancelar"
+#define STR_GLOBAL "Usar estas configurações como &padrões globais"
+#define STR_DEFAULT "&Padrão"
+#define STR_LANGUAGE "Idioma:"
+#define STR_ICONSET "Pacote de Ãcones:"
-#define STR_GAIN "Ganho"
+#define STR_GAIN "Ganho"
-#define STR_FILE_NAME "Nome:"
-#define STR_DISK_SIZE "Tamanho:"
-#define STR_RPM_MODE "Modo RPM:"
-#define STR_PROGRESS "Progresso:"
+#define STR_FILE_NAME "Nome:"
+#define STR_DISK_SIZE "Tamanho:"
+#define STR_RPM_MODE "Modo RPM:"
+#define STR_PROGRESS "Progresso:"
-#define STR_WIDTH "Largura:"
-#define STR_HEIGHT "Altura:"
-#define STR_LOCK_TO_SIZE "Travar nesse tamanho"
+#define STR_WIDTH "Largura:"
+#define STR_HEIGHT "Altura:"
+#define STR_LOCK_TO_SIZE "Travar nesse tamanho"
-#define STR_MACHINE_TYPE "Tipo de máquina:"
-#define STR_MACHINE "Máquina:"
-#define STR_CONFIGURE "Configurar"
-#define STR_CPU_TYPE "Tipo de CPU:"
-#define STR_CPU_SPEED "Veloc.:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Estados de espera:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memória:"
-#define STR_TIME_SYNC "Sincronização da hora"
-#define STR_DISABLED "Desativar"
-#define STR_ENABLED_LOCAL "Ativar (hora local)"
-#define STR_ENABLED_UTC "Ativar (UTC)"
-#define STR_DYNAREC "Recompilador dinâmico"
+#define STR_MACHINE_TYPE "Tipo de máquina:"
+#define STR_MACHINE "Máquina:"
+#define STR_CONFIGURE "Configurar"
+#define STR_CPU_TYPE "Tipo de CPU:"
+#define STR_CPU_SPEED "Veloc.:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Estados de espera:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memória:"
+#define STR_TIME_SYNC "Sincronização da hora"
+#define STR_DISABLED "Desativar"
+#define STR_ENABLED_LOCAL "Ativar (hora local)"
+#define STR_ENABLED_UTC "Ativar (UTC)"
+#define STR_DYNAREC "Recompilador dinâmico"
-#define STR_VIDEO "VÃdeo:"
-#define STR_VIDEO_2 "VÃdeo 2:"
-#define STR_VOODOO "3DFX Voodoo"
-#define STR_IBM8514 "Gráficos IBM 8514/a"
-#define STR_XGA "Gráficos XGA"
+#define STR_VIDEO "VÃdeo:"
+#define STR_VIDEO_2 "VÃdeo 2:"
+#define STR_VOODOO "3DFX Voodoo"
+#define STR_IBM8514 "Gráficos IBM 8514/a"
+#define STR_XGA "Gráficos XGA"
-#define STR_MOUSE "Mouse:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Mouse:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_FLOAT "Usar som FLOAT32"
-#define STR_FM_DRIVER "Controlador de sint. FM"
-#define STR_FM_DRV_NUKED "Nuked (mais preciso)"
-#define STR_FM_DRV_YMFM "YMFM (mais rápido)"
+#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_FLOAT "Usar som FLOAT32"
+#define STR_FM_DRIVER "Controlador de sint. FM"
+#define STR_FM_DRV_NUKED "Nuked (mais preciso)"
+#define STR_FM_DRV_YMFM "YMFM (mais rápido)"
-#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_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:"
-#define STR_COM3 "Dispositivo COM3:"
-#define STR_COM4 "Dispositivo COM4:"
-#define STR_LPT1 "Dispositivo LPT1:"
-#define STR_LPT2 "Dispositivo LPT2:"
-#define STR_LPT3 "Dispositivo LPT3:"
-#define STR_LPT4 "Dispositivo LPT4:"
-#define STR_SERIAL1 "Porta serial 1"
-#define STR_SERIAL2 "Porta serial 2"
-#define STR_SERIAL3 "Porta serial 3"
-#define STR_SERIAL4 "Porta serial 4"
-#define STR_PARALLEL1 "Porta paralela 1"
-#define STR_PARALLEL2 "Porta paralela 2"
-#define STR_PARALLEL3 "Porta paralela 3"
-#define STR_PARALLEL4 "Porta paralela 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "Dispositivo COM1:"
+#define STR_COM2 "Dispositivo COM2:"
+#define STR_COM3 "Dispositivo COM3:"
+#define STR_COM4 "Dispositivo COM4:"
+#define STR_LPT1 "Dispositivo LPT1:"
+#define STR_LPT2 "Dispositivo LPT2:"
+#define STR_LPT3 "Dispositivo LPT3:"
+#define STR_LPT4 "Dispositivo LPT4:"
+#define STR_SERIAL1 "Porta serial 1"
+#define STR_SERIAL2 "Porta serial 2"
+#define STR_SERIAL3 "Porta serial 3"
+#define STR_SERIAL4 "Porta serial 4"
+#define STR_PARALLEL1 "Porta paralela 1"
+#define STR_PARALLEL2 "Porta paralela 2"
+#define STR_PARALLEL3 "Porta paralela 3"
+#define STR_PARALLEL4 "Porta paralela 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Controlador HD:"
-#define STR_FDC "Controlador FD:"
-#define STR_IDE_TER "Controlador IDE terciário"
-#define STR_IDE_QUA "Controlador IDE quaternário"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Controlador 1:"
-#define STR_SCSI_2 "Controlador 2:"
-#define STR_SCSI_3 "Controlador 3:"
-#define STR_SCSI_4 "Controlador 4:"
-#define STR_CASSETTE "Cassete"
+#define STR_HDC "Controlador HD:"
+#define STR_FDC "Controlador FD:"
+#define STR_IDE_TER "Controlador IDE terciário"
+#define STR_IDE_QUA "Controlador IDE quaternário"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Controlador 1:"
+#define STR_SCSI_2 "Controlador 2:"
+#define STR_SCSI_3 "Controlador 3:"
+#define STR_SCSI_4 "Controlador 4:"
+#define STR_CASSETTE "Cassete"
-#define STR_HDD "Discos rÃgidos:"
-#define STR_NEW "&Novo..."
-#define STR_EXISTING "&Existente..."
-#define STR_REMOVE "&Remover"
-#define STR_BUS "Bar.:"
-#define STR_CHANNEL "Canal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Velocidade:"
+#define STR_HDD "Discos rÃgidos:"
+#define STR_NEW "&Novo..."
+#define STR_EXISTING "&Existente..."
+#define STR_REMOVE "&Remover"
+#define STR_BUS "Bar.:"
+#define STR_CHANNEL "Canal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Velocidade:"
-#define STR_SPECIFY "&Especificar..."
-#define STR_SECTORS "Setores:"
-#define STR_HEADS "Cabeças:"
-#define STR_CYLS "Cilindros:"
-#define STR_SIZE_MB "Tamanho (MB):"
-#define STR_TYPE "Tipo:"
-#define STR_IMG_FORMAT "Formato:"
-#define STR_BLOCK_SIZE "Blocos:"
+#define STR_SPECIFY "&Especificar..."
+#define STR_SECTORS "Setores:"
+#define STR_HEADS "Cabeças:"
+#define STR_CYLS "Cilindros:"
+#define STR_SIZE_MB "Tamanho (MB):"
+#define STR_TYPE "Tipo:"
+#define STR_IMG_FORMAT "Formato:"
+#define STR_BLOCK_SIZE "Blocos:"
-#define STR_FLOPPY_DRIVES "Unidades de disquete:"
-#define STR_TURBO "Turbo"
-#define STR_CHECKBPB "Verificar BPB"
-#define STR_CDROM_DRIVES "Unidades de CD-ROM:"
-#define STR_CD_SPEED "Veloc.:"
-#define STR_EARLY "Unidade anterior"
+#define STR_FLOPPY_DRIVES "Unidades de disquete:"
+#define STR_TURBO "Turbo"
+#define STR_CHECKBPB "Verificar BPB"
+#define STR_CDROM_DRIVES "Unidades de CD-ROM:"
+#define STR_CD_SPEED "Veloc.:"
+#define STR_EARLY "Unidade anterior"
-#define STR_MO_DRIVES "Unidades magneto-ópticas:"
-#define STR_ZIP_DRIVES "Unidades ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Unidades magneto-ópticas:"
+#define STR_ZIP_DRIVES "Unidades ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "RTC ISA:"
-#define STR_ISAMEM "Expansão de memória ISA"
-#define STR_ISAMEM_1 "Placa 1:"
-#define STR_ISAMEM_2 "Placa 2:"
-#define STR_ISAMEM_3 "Placa 3:"
-#define STR_ISAMEM_4 "Placa 4:"
-#define STR_BUGGER "Dispositivo ISABugger"
-#define STR_POSTCARD "Placa de diagnóstico"
+#define STR_ISARTC "RTC ISA:"
+#define STR_ISAMEM "Expansão de memória ISA"
+#define STR_ISAMEM_1 "Placa 1:"
+#define STR_ISAMEM_2 "Placa 2:"
+#define STR_ISAMEM_3 "Placa 3:"
+#define STR_ISAMEM_4 "Placa 4:"
+#define STR_BUGGER "Dispositivo ISABugger"
+#define STR_POSTCARD "Placa de diagnóstico"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -395,199 +395,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Erro"
- IDS_2050 "Erro fatal"
- IDS_2051 " - PAUSADO"
- IDS_2052 "Use Ctrl+Alt+PgDn para retornar ao modo janela"
- IDS_2053 "Velocidade"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "O 86Box não conseguiu encontrar nenhuma imagem de ROM utilizável.\n\nPor favor, baixe um conjunto de ROM e extraia no diretório ""roms""."
- IDS_2057 "(vazio)"
- IDS_2058 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "Lig."
- IDS_2061 "Desl."
- IDS_2062 "Todas as imagens (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Imagens de setor básico (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Imagens de superfÃcie (*.86F)\0*.86F\0"
- IDS_2063 "A máquina ""%hs"" não está disponÃvel devido à falta de ROMs no diretório roms/machines. Mudando para uma máquina disponÃvel."
+ 2048 "86Box"
+ IDS_2049 "Erro"
+ IDS_2050 "Erro fatal"
+ IDS_2051 " - PAUSADO"
+ IDS_2052 "Use Ctrl+Alt+PgDn para retornar ao modo janela"
+ IDS_2053 "Velocidade"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "O 86Box não conseguiu encontrar nenhuma imagem de ROM utilizável.\n\nPor favor, baixe um conjunto de ROM e extraia no diretório ""roms""."
+ IDS_2057 "(vazio)"
+ IDS_2058 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "Lig."
+ IDS_2061 "Desl."
+ IDS_2062 "Todas as imagens (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Imagens de setor básico (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Imagens de superfÃcie (*.86F)\0*.86F\0"
+ IDS_2063 "A máquina ""%hs"" não está disponÃvel devido à falta de ROMs no diretório roms/machines. Mudando para uma máquina disponÃvel."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "A placa de vÃdeo ""%hs"" não está disponÃvel devido à falta de ROMs no diretório roms/video. Mudando para uma placa de vÃdeo disponÃvel."
- IDS_2065 "Máquina"
- IDS_2066 "VÃdeo"
- IDS_2067 "Dispositivos de entrada"
- IDS_2068 "Som"
- IDS_2069 "Rede"
- IDS_2070 "Portas (COM & LPT)"
- IDS_2071 "Controladores de armaz."
- IDS_2072 "Discos rÃgidos"
- IDS_2073 "Disquete & CD-ROM"
- IDS_2074 "Dispos. removÃveis"
- IDS_2075 "Outros periféricos"
- IDS_2076 "Imagens de superfÃcie (*.86F)\0*.86F\0"
- IDS_2077 "Clique para capturar o mouse"
- IDS_2078 "Aperte F8+F12 para liberar o mouse"
- IDS_2079 "Aperte F8+F12 ou botão do meio para liberar o mouse"
+ IDS_2064 "A placa de vÃdeo ""%hs"" não está disponÃvel devido à falta de ROMs no diretório roms/video. Mudando para uma placa de vÃdeo disponÃvel."
+ IDS_2065 "Máquina"
+ IDS_2066 "VÃdeo"
+ IDS_2067 "Dispositivos de entrada"
+ IDS_2068 "Som"
+ IDS_2069 "Rede"
+ IDS_2070 "Portas (COM & LPT)"
+ IDS_2071 "Controladores de armaz."
+ IDS_2072 "Discos rÃgidos"
+ IDS_2073 "Disquete & CD-ROM"
+ IDS_2074 "Dispos. removÃveis"
+ IDS_2075 "Outros periféricos"
+ IDS_2076 "Imagens de superfÃcie (*.86F)\0*.86F\0"
+ IDS_2077 "Clique para capturar o mouse"
+ IDS_2078 "Aperte F8+F12 para liberar o mouse"
+ IDS_2079 "Aperte F8+F12 ou botão do meio para liberar o mouse"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Não foi possÃvel inicializar o FluidSynth"
- IDS_2081 "Barramento"
- IDS_2082 "Arquivo"
- IDS_2083 "CI"
- IDS_2084 "CA"
- IDS_2085 "SE"
- IDS_2086 "MB"
+ IDS_2080 "Não foi possÃvel inicializar o FluidSynth"
+ IDS_2081 "Barramento"
+ IDS_2082 "Arquivo"
+ IDS_2083 "CI"
+ IDS_2084 "CA"
+ IDS_2085 "SE"
+ IDS_2086 "MB"
IDS_2087 "Velocidade"
- IDS_2088 "Verificar BPB"
- IDS_2089 "KB"
- IDS_2090 "Não foi possÃvel inicializar o renderizador de vÃdeo."
- IDS_2091 "Padrão"
- IDS_2092 "%i estado(s) de espera"
- IDS_2093 "Tipo"
- IDS_2094 "Não foi possÃvel configurar o PCap"
- IDS_2095 "Nenhum dispositivo PCap encontrado"
- IDS_2096 "Dispositivo PCap inválido"
- IDS_2097 "Joystick padrão de 2 botões"
- IDS_2098 "Joystick padrão de 4 botões"
- IDS_2099 "Joystick padrão de 6 botões"
- IDS_2100 "Joystick padrão de 8 botões"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Sistema de Controle de Voo Thrustmaster"
- IDS_2104 "Nada"
- IDS_2105 "Não foi possÃvel carregar os aceleradores do teclado."
- IDS_2106 "Não foi possÃvel registrar a entrada bruta."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Disquete %i (%s): %ls"
- IDS_2110 "Todas as imagens (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Imagens de setor avançado (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagens de setor básico (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Imagens de fluxo (*.FDI)\0*.FDI\0Imagens de superfÃcie (*.86F;*.MFM)\0*.86F;*.MFM\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2111 "Não foi possÃvel inicializar o FreeType"
- IDS_2112 "Não é possÃvel inicializar o SDL, é necessário o SDL2.dll"
- IDS_2113 "Tem certeza de que deseja reiniciar completamente a máquina emulada?"
- IDS_2114 "Tem certeza de que deseja sair do 86Box?"
- IDS_2115 "Não é possÃvel inicializar o Ghostscript"
- IDS_2116 "Magneto-óptico %i (%ls): %ls"
- IDS_2117 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2118 "Bem-vindo ao 86Box!"
- IDS_2119 "Controlador interno"
- IDS_2120 "Sair"
- IDS_2121 "Nenhum ROM encontrada"
- IDS_2122 "Você deseja salvar as configurações?"
- IDS_2123 "Isto fará com que a máquina emulada seja reinicializada."
- IDS_2124 "Salvar"
- IDS_2125 "Sobre o 86Box"
- IDS_2126 "86Box versão" EMU_VERSION
+ IDS_2088 "Verificar BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Não foi possÃvel inicializar o renderizador de vÃdeo."
+ IDS_2091 "Padrão"
+ IDS_2092 "%i estado(s) de espera"
+ IDS_2093 "Tipo"
+ IDS_2094 "Não foi possÃvel configurar o PCap"
+ IDS_2095 "Nenhum dispositivo PCap encontrado"
+ IDS_2096 "Dispositivo PCap inválido"
+ IDS_2097 "Joystick padrão de 2 botões"
+ IDS_2098 "Joystick padrão de 4 botões"
+ IDS_2099 "Joystick padrão de 6 botões"
+ IDS_2100 "Joystick padrão de 8 botões"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Sistema de Controle de Voo Thrustmaster"
+ IDS_2104 "Nada"
+ IDS_2105 "Não foi possÃvel carregar os aceleradores do teclado."
+ IDS_2106 "Não foi possÃvel registrar a entrada bruta."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Disquete %i (%s): %ls"
+ IDS_2110 "Todas as imagens (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Imagens de setor avançado (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagens de setor básico (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Imagens de fluxo (*.FDI)\0*.FDI\0Imagens de superfÃcie (*.86F;*.MFM)\0*.86F;*.MFM\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2111 "Não foi possÃvel inicializar o FreeType"
+ IDS_2112 "Não é possÃvel inicializar o SDL, é necessário o SDL2.dll"
+ IDS_2113 "Tem certeza de que deseja reiniciar completamente a máquina emulada?"
+ IDS_2114 "Tem certeza de que deseja sair do 86Box?"
+ IDS_2115 "Não é possÃvel inicializar o Ghostscript"
+ IDS_2116 "Magneto-óptico %i (%ls): %ls"
+ IDS_2117 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2118 "Bem-vindo ao 86Box!"
+ IDS_2119 "Controlador interno"
+ IDS_2120 "Sair"
+ IDS_2121 "Nenhum ROM encontrada"
+ IDS_2122 "Você deseja salvar as configurações?"
+ IDS_2123 "Isto fará com que a máquina emulada seja reinicializada."
+ IDS_2124 "Salvar"
+ IDS_2125 "Sobre o 86Box"
+ IDS_2126 "86Box versão" EMU_VERSION
- IDS_2127 "Um emulador de computadores antigos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, e outros.\n\nTraduzido por: Altieres Lima da Silva\n\nLançado sob a Licença Pública Geral GNU versão 2 ou posterior. Veja o arquivo LICENSE para mais informações."
- IDS_2128 "OK"
- IDS_2129 "Hardware não disponÃvel"
+ IDS_2127 "Um emulador de computadores antigos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, e outros.\n\nTraduzido por: Altieres Lima da Silva\n\nLançado sob a Licença Pública Geral GNU versão 2 ou posterior. Veja o arquivo LICENSE para mais informações."
+ IDS_2128 "OK"
+ IDS_2129 "Hardware não disponÃvel"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Certifique-se de que " LIB_NAME_PCAP " esteja instalado e que você tenha uma conexão de rede compatÃvel com " LIB_NAME_PCAP "."
- IDS_2131 "Configuração inválida"
+ IDS_2130 "Certifique-se de que " LIB_NAME_PCAP " esteja instalado e que você tenha uma conexão de rede compatÃvel com " LIB_NAME_PCAP "."
+ IDS_2131 "Configuração inválida"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " é necessário para emulação de impressora ESC/P."
+ IDS_2132 LIB_NAME_FREETYPE " é necessário para emulação de impressora ESC/P."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " é necessário para a conversão automática de arquivos PostScript para PDF.\n\nQualquer documento enviado para a impressora genérica PostScript será salvo como arquivos PostScript (.ps)."
+ IDS_2133 LIB_NAME_GS " é necessário para a conversão automática de arquivos PostScript para PDF.\n\nQualquer documento enviado para a impressora genérica PostScript será salvo como arquivos PostScript (.ps)."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " é necessário para a saÃda MIDI FluidSynth."
- IDS_2135 "Entrando no modo de tela cheia"
- IDS_2136 "Não exibir esta mensagem novamente"
- IDS_2137 "Não sair"
- IDS_2138 "Reiniciar"
- IDS_2139 "Não reiniciar"
- IDS_2140 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2141 "Imagens de CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2142 "Configuração do dispositivo %hs"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " é necessário para a saÃda MIDI FluidSynth."
+ IDS_2135 "Entrando no modo de tela cheia"
+ IDS_2136 "Não exibir esta mensagem novamente"
+ IDS_2137 "Não sair"
+ IDS_2138 "Reiniciar"
+ IDS_2139 "Não reiniciar"
+ IDS_2140 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2141 "Imagens de CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2142 "Configuração do dispositivo %hs"
IDS_2143 "Monitor em modo de suspensão"
- IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2145 "Opções do OpenGL"
- IDS_2146 "Você está carregando uma configuração não suportada"
- IDS_2147 "A filtragem do tipo CPU baseada na máquina selecionada é desativada para esta máquina emulada.\n\nIsto torna possÃvel escolher uma CPU que de outra forma seria incompatÃvel com a máquina selecionada. Entretanto, você pode encontrar incompatibilidades com a BIOS da máquina ou outro software.\n\nA ativação desta configuração não é oficialmente suportada e qualquer relatório de erro arquivado pode ser fechado como inválido."
- IDS_2148 "Continuar"
- IDS_2149 "Cassete: %s"
- IDS_2150 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2151 "Cartucho %i: %ls"
- IDS_2152 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os arquivos (*.*)\0*.*\0"
- IDS_2153 "Erro ao inicializar o renderizador"
- IDS_2154 "O renderizador OpenGL (Núcleo 3.0) não pôde ser inicializado. Use outro renderizador."
- IDS_2155 "Continuar a execução"
- IDS_2156 "Pausar a execução"
- IDS_2157 "Pressionar Ctrl+Alt+Del"
- IDS_2158 "Pressionar Ctrl+Alt+Esc"
- IDS_2159 "Reinicialização completa"
- IDS_2160 "Desligamento por ACPI"
- IDS_2161 "Configurações"
+ IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2145 "Opções do OpenGL"
+ IDS_2146 "Você está carregando uma configuração não suportada"
+ IDS_2147 "A filtragem do tipo CPU baseada na máquina selecionada é desativada para esta máquina emulada.\n\nIsto torna possÃvel escolher uma CPU que de outra forma seria incompatÃvel com a máquina selecionada. Entretanto, você pode encontrar incompatibilidades com a BIOS da máquina ou outro software.\n\nA ativação desta configuração não é oficialmente suportada e qualquer relatório de erro arquivado pode ser fechado como inválido."
+ IDS_2148 "Continuar"
+ IDS_2149 "Cassete: %s"
+ IDS_2150 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2151 "Cartucho %i: %ls"
+ IDS_2152 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_2153 "Erro ao inicializar o renderizador"
+ IDS_2154 "O renderizador OpenGL (Núcleo 3.0) não pôde ser inicializado. Use outro renderizador."
+ IDS_2155 "Continuar a execução"
+ IDS_2156 "Pausar a execução"
+ IDS_2157 "Pressionar Ctrl+Alt+Del"
+ IDS_2158 "Pressionar Ctrl+Alt+Esc"
+ IDS_2159 "Reinicialização completa"
+ IDS_2160 "Desligamento por ACPI"
+ IDS_2161 "Configurações"
IDS_2162 "Unidade anterior"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Disco rÃgido (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "As unidades de CD-ROM MFM/RLL ou ESDI nunca existiram"
- IDS_4100 "Personalizado..."
- IDS_4101 "Personalizado (grande)..."
- IDS_4102 "Adicionar novo disco rÃgido"
- IDS_4103 "Adicionar disco rÃgido existente"
- IDS_4104 "As imagens de disco HDI não podem ser maiores do que 4GB."
- IDS_4105 "As imagens de disco não podem ser maiores do que 127GB."
- IDS_4106 "Imagens de disco rÃgido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Todos os arquivos (*.*)\0*.*\0"
- IDS_4107 "Não foi possÃvel ler o arquivo"
- IDS_4108 "Não foi possÃvel escrever o arquivo"
- IDS_4109 "Imagens HDI ou HDX com um tamanho de setor que não seja 512 não são suportadas."
- IDS_4110 "O USB ainda não é suportado"
- IDS_4111 "Esta imagem existe"
- IDS_4112 "Digite um nome de arquivo válido."
- IDS_4113 "A imagem foi criada com sucesso"
- IDS_4114 "Certifique-se de que o arquivo existe e é legÃvel."
- IDS_4115 "Certifique-se de que o arquivo está sendo salvo em um diretório gravável."
- IDS_4116 "A imagem do disco é muito grande"
- IDS_4117 "Lembre-se de particionar e formatar a unidade recém-criada."
- IDS_4118 "O arquivo selecionado será sobrescrito. Você tem certeza de que deseja usá-lo?"
- IDS_4119 "Imagem de disco sem suporte"
- IDS_4120 "Sobrescrever"
- IDS_4121 "Não sobrescrever"
- IDS_4122 "Imagem bruta (.img)"
- IDS_4123 "Imagem HDI (.hdi)"
- IDS_4124 "Imagem HDX (.hdx)"
- IDS_4125 "VHD de tamanho fixo (.vhd)"
- IDS_4126 "VHD de tamanho dinâmico (.vhd)"
- IDS_4127 "VHD diferencial (.vhd)"
- IDS_4128 "Blocos grandes (2 MB)"
- IDS_4129 "Blocos pequenos (512 KB)"
- IDS_4130 "Arquivos VHD (*.VHD)\0*.VHD\0Todos os arquivos (*.*)\0*.*\0"
- IDS_4131 "Selecione o VHD pai"
- IDS_4132 "Isto pode significar que a imagem de origem foi modificada após a criação da imagem diferencial.\n\nTambém pode acontecer caso os arquivos de imagem tenham sido movidos ou copiados, ou por um erro no programa que criou este disco.\n\nVocê quer consertar os marcadores de tempo?"
- IDS_4133 "A data/hora dos arquivos de pais e filhos não correspondem"
- IDS_4134 "Não foi possÃvel consertar o carimbo de data/hora da VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "As unidades de CD-ROM MFM/RLL ou ESDI nunca existiram"
+ IDS_4100 "Personalizado..."
+ IDS_4101 "Personalizado (grande)..."
+ IDS_4102 "Adicionar novo disco rÃgido"
+ IDS_4103 "Adicionar disco rÃgido existente"
+ IDS_4104 "As imagens de disco HDI não podem ser maiores do que 4GB."
+ IDS_4105 "As imagens de disco não podem ser maiores do que 127GB."
+ IDS_4106 "Imagens de disco rÃgido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_4107 "Não foi possÃvel ler o arquivo"
+ IDS_4108 "Não foi possÃvel escrever o arquivo"
+ IDS_4109 "Imagens HDI ou HDX com um tamanho de setor que não seja 512 não são suportadas."
+ IDS_4110 "O USB ainda não é suportado"
+ IDS_4111 "Esta imagem existe"
+ IDS_4112 "Digite um nome de arquivo válido."
+ IDS_4113 "A imagem foi criada com sucesso"
+ IDS_4114 "Certifique-se de que o arquivo existe e é legÃvel."
+ IDS_4115 "Certifique-se de que o arquivo está sendo salvo em um diretório gravável."
+ IDS_4116 "A imagem do disco é muito grande"
+ IDS_4117 "Lembre-se de particionar e formatar a unidade recém-criada."
+ IDS_4118 "O arquivo selecionado será sobrescrito. Você tem certeza de que deseja usá-lo?"
+ IDS_4119 "Imagem de disco sem suporte"
+ IDS_4120 "Sobrescrever"
+ IDS_4121 "Não sobrescrever"
+ IDS_4122 "Imagem bruta (.img)"
+ IDS_4123 "Imagem HDI (.hdi)"
+ IDS_4124 "Imagem HDX (.hdx)"
+ IDS_4125 "VHD de tamanho fixo (.vhd)"
+ IDS_4126 "VHD de tamanho dinâmico (.vhd)"
+ IDS_4127 "VHD diferencial (.vhd)"
+ IDS_4128 "Blocos grandes (2 MB)"
+ IDS_4129 "Blocos pequenos (512 KB)"
+ IDS_4130 "Arquivos VHD (*.VHD)\0*.VHD\0Todos os arquivos (*.*)\0*.*\0"
+ IDS_4131 "Selecione o VHD pai"
+ IDS_4132 "Isto pode significar que a imagem de origem foi modificada após a criação da imagem diferencial.\n\nTambém pode acontecer caso os arquivos de imagem tenham sido movidos ou copiados, ou por um erro no programa que criou este disco.\n\nVocê quer consertar os marcadores de tempo?"
+ IDS_4133 "A data/hora dos arquivos de pais e filhos não correspondem"
+ IDS_4134 "Não foi possÃvel consertar o carimbo de data/hora da VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -596,56 +597,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Desativado"
- IDS_5381 "ATAPI"
+ IDS_5376 "Desativado"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Desativado"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Desativado"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "RPM perfeita"
- IDS_6145 "1% abaixo das RPM perfeita"
- IDS_6146 "1.5% abaixo das RPM perfeita"
- IDS_6147 "2% abaixo das RPM perfeita"
+ IDS_6144 "RPM perfeita"
+ IDS_6145 "1% abaixo das RPM perfeita"
+ IDS_6146 "1.5% abaixo das RPM perfeita"
+ IDS_6147 "2% abaixo das RPM perfeita"
- IDS_7168 "(Padrão do sistema)"
+ IDS_7168 "(Padrão do sistema)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Portuguese (pt-BR) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/pt-PT.rc b/src/win/languages/pt-PT.rc
index 31c68fbd0..50f2852c8 100644
--- a/src/win/languages/pt-PT.rc
+++ b/src/win/languages/pt-PT.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Ação"
BEGIN
- MENUITEM "&Teclado requere captura", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Teclado requere captura", IDM_ACTION_KBD_REQ_CAPTURE
MENUITEM "&CTRL direito é ALT esquerdo",IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
MENUITEM "&Reinicialização completa...",IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Pausa", IDM_ACTION_PAUSE
+ MENUITEM "&Pausa", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Sair...", IDM_ACTION_EXIT
+ MENUITEM "&Sair...", IDM_ACTION_EXIT
END
POPUP "&Ver"
BEGIN
- MENUITEM "&Ocultar barra de estado", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Ocultar barra de estado", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Janela redimensionável", IDM_VID_RESIZE
- MENUITEM "&Lembrar tamanho e posição", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Janela redimensionável", IDM_VID_RESIZE
+ MENUITEM "&Lembrar tamanho e posição", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Renderizador"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (Núcleo 3.0)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (Núcleo 3.0)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "&Especificar dimensões...", IDM_VID_SPECIFY_DIM
- MENUITEM "&Forçar rácio de visualização 4:3", IDM_VID_FORCE43
+ MENUITEM "&Especificar dimensões...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&Forçar rácio de visualização 4:3", IDM_VID_FORCE43
POPUP "F&actor de escala de janela"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Método de filtragem"
BEGIN
- MENUITEM "&Mais próximo", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Mais próximo", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linear", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Escala Hi&DPI", IDM_VID_HIDPI
+ MENUITEM "Escala Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "E&crã cheio\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "E&crã cheio\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Modo &de estiramento em ecrã cheio"
BEGIN
- MENUITEM "&Estiramento em ecrã cheio", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Estiramento em ecrã cheio", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "Pixels &quadrados (Manter rácio)", IDM_VID_FS_KEEPRATIO
- MENUITEM "Escala &inteira", IDM_VID_FS_INT
+ MENUITEM "Escala &inteira", IDM_VID_FS_INT
END
POPUP "Definições E&GA/(S)VGA"
BEGIN
- MENUITEM "Monitor VGA &invertido", IDM_VID_INVERT
+ MENUITEM "Monitor VGA &invertido", IDM_VID_INVERT
POPUP "&Tipo de ecrã VGA"
BEGIN
- MENUITEM "&Cores RGB", IDM_VID_GRAY_RGB
- MENUITEM "&RGB em escala de cinzentos", IDM_VID_GRAY_MONO
- MENUITEM "Monitor âmb&ar", IDM_VID_GRAY_AMBER
- MENUITEM "Monitor &verde", IDM_VID_GRAY_GREEN
- MENUITEM "Monitor &branco", IDM_VID_GRAY_WHITE
+ MENUITEM "&Cores RGB", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB em escala de cinzentos", IDM_VID_GRAY_MONO
+ MENUITEM "Monitor âmb&ar", IDM_VID_GRAY_AMBER
+ MENUITEM "Monitor &verde", IDM_VID_GRAY_GREEN
+ MENUITEM "Monitor &branco", IDM_VID_GRAY_WHITE
END
POPUP "Tipo de &conversão para escala de cinzentos"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Media", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Media", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Overscan de CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "Overscan de CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Mudar &contraste para ecrã monocromático", IDM_VID_CGACON
END
- MENUITEM "&Media", IDM_MEDIA
+ MENUITEM "&Media", IDM_MEDIA
POPUP "&Ferramentas"
BEGIN
- MENUITEM "&Definições...", IDM_CONFIG
- MENUITEM "&Atualizar Ãcones da barra de estado", IDM_UPDATE_ICONS
+ MENUITEM "&Definições...", IDM_CONFIG
+ MENUITEM "&Atualizar Ãcones da barra de estado", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Gravar imagem de ecrã\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Gravar imagem de ecrã\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Preferências...", IDM_PREFERENCES
+ 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
+ MENUITEM "&Ganho de som...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Iniciar o rastreio\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Terminar o rastreio\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Iniciar o rastreio\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Terminar o rastreio\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Ajuda"
BEGIN
- MENUITEM "&Documentação...", IDM_DOCS
- MENUITEM "&Acerca do 86Box...", IDM_ABOUT
+ MENUITEM "&Documentação...", IDM_DOCS
+ MENUITEM "&Acerca do 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagem &existente...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "Imagem &existente...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Gravar", IDM_CASSETTE_RECORD
- MENUITEM "&Reproduzir", IDM_CASSETTE_PLAY
- MENUITEM "Re&bobinar para o inÃcio", IDM_CASSETTE_REWIND
- MENUITEM "&Avanço rápido para o fim", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Gravar", IDM_CASSETTE_RECORD
+ MENUITEM "&Reproduzir", IDM_CASSETTE_PLAY
+ MENUITEM "Re&bobinar para o inÃcio", IDM_CASSETTE_REWIND
+ MENUITEM "&Avanço rápido para o fim", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_CASSETTE_EJECT
+ MENUITEM "E&jetar", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Imagem...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Imagem...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_CARTRIDGE_EJECT
+ MENUITEM "E&jetar", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagem &existente...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "Imagem &existente...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&xportar para 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "E&xportar para 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_FLOPPY_EJECT
+ MENUITEM "E&jetar", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Mute", IDM_CDROM_MUTE
+ MENUITEM "&Mute", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&CDROM vazio", IDM_CDROM_EMPTY
- MENUITEM "&Recarregar imagem anterior", IDM_CDROM_RELOAD
+ MENUITEM "&CDROM vazio", IDM_CDROM_EMPTY
+ MENUITEM "&Recarregar imagem anterior", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Imagem...", IDM_CDROM_IMAGE
- MENUITEM "&Pasta...", IDM_CDROM_DIR
+ MENUITEM "&Imagem...", IDM_CDROM_IMAGE
+ MENUITEM "&Pasta...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagem &existente...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "Imagem &existente...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_ZIP_EJECT
- MENUITEM "&Recarregar imagem anterior", IDM_ZIP_RELOAD
+ MENUITEM "E&jetar", IDM_ZIP_EJECT
+ MENUITEM "&Recarregar imagem anterior", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova imagem...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nova imagem...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "Imagem &existente...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "Imagem &existente...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Imagem existente (&Proteção contra escrita)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "E&jetar", IDM_MO_EJECT
- MENUITEM "&Recarregar imagem anterior", IDM_MO_RELOAD
+ MENUITEM "E&jetar", IDM_MO_EJECT
+ MENUITEM "&Recarregar imagem anterior", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Preferências"
-#define STR_SND_GAIN "Ganho de som"
-#define STR_NEW_FLOPPY "Nova imagem"
-#define STR_CONFIG "Definições"
-#define STR_SPECIFY_DIM "Especificar dimensões da janela principal"
+#define STR_PREFERENCES "Preferências"
+#define STR_SND_GAIN "Ganho de som"
+#define STR_NEW_FLOPPY "Nova imagem"
+#define STR_CONFIG "Definições"
+#define STR_SPECIFY_DIM "Especificar dimensões da janela principal"
-#define STR_OK "OK"
-#define STR_CANCEL "Cancelar"
-#define STR_GLOBAL "Guardar estas definições como padrões &globais"
-#define STR_DEFAULT "&Padrão"
-#define STR_LANGUAGE "Idioma:"
-#define STR_ICONSET "Pacote de Ãcones:"
+#define STR_OK "OK"
+#define STR_CANCEL "Cancelar"
+#define STR_GLOBAL "Guardar estas definições como padrões &globais"
+#define STR_DEFAULT "&Padrão"
+#define STR_LANGUAGE "Idioma:"
+#define STR_ICONSET "Pacote de Ãcones:"
-#define STR_GAIN "Ganho"
+#define STR_GAIN "Ganho"
-#define STR_FILE_NAME "Nome:"
-#define STR_DISK_SIZE "Tamanho:"
-#define STR_RPM_MODE "Modo RPM:"
-#define STR_PROGRESS "Progresso:"
+#define STR_FILE_NAME "Nome:"
+#define STR_DISK_SIZE "Tamanho:"
+#define STR_RPM_MODE "Modo RPM:"
+#define STR_PROGRESS "Progresso:"
-#define STR_WIDTH "Largura:"
-#define STR_HEIGHT "Altura:"
-#define STR_LOCK_TO_SIZE "Fixar neste tamanho"
+#define STR_WIDTH "Largura:"
+#define STR_HEIGHT "Altura:"
+#define STR_LOCK_TO_SIZE "Fixar neste tamanho"
-#define STR_MACHINE_TYPE "Tipo de máquina:"
-#define STR_MACHINE "Máquina:"
-#define STR_CONFIGURE "Configurar"
-#define STR_CPU_TYPE "Tipo do CPU:"
-#define STR_CPU_SPEED "Velocidade:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Estados de espera:"
-#define STR_MB "MB"
-#define STR_MEMORY "Memória:"
-#define STR_TIME_SYNC "Sincronização da hora"
-#define STR_DISABLED "Desativada"
-#define STR_ENABLED_LOCAL "Ativada (hora local)"
-#define STR_ENABLED_UTC "Ativada (UTC)"
-#define STR_DYNAREC "Recompilador dinâmico"
+#define STR_MACHINE_TYPE "Tipo de máquina:"
+#define STR_MACHINE "Máquina:"
+#define STR_CONFIGURE "Configurar"
+#define STR_CPU_TYPE "Tipo do CPU:"
+#define STR_CPU_SPEED "Velocidade:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Estados de espera:"
+#define STR_MB "MB"
+#define STR_MEMORY "Memória:"
+#define STR_TIME_SYNC "Sincronização da hora"
+#define STR_DISABLED "Desativada"
+#define STR_ENABLED_LOCAL "Ativada (hora local)"
+#define STR_ENABLED_UTC "Ativada (UTC)"
+#define STR_DYNAREC "Recompilador dinâmico"
-#define STR_VIDEO "VÃdeo:"
-#define STR_VIDEO_2 "VÃdeo 2:"
-#define STR_VOODOO "Gráficos Voodoo"
-#define STR_IBM8514 "Gráficos IBM 8514/a"
-#define STR_XGA "Gráficos XGA"
+#define STR_VIDEO "VÃdeo:"
+#define STR_VIDEO_2 "VÃdeo 2:"
+#define STR_VOODOO "Gráficos Voodoo"
+#define STR_IBM8514 "Gráficos IBM 8514/a"
+#define STR_XGA "Gráficos XGA"
-#define STR_MOUSE "Rato:"
-#define STR_JOYSTICK "Joystick:"
-#define STR_JOY1 "Joystick 1..."
-#define STR_JOY2 "Joystick 2..."
-#define STR_JOY3 "Joystick 3..."
-#define STR_JOY4 "Joystick 4..."
+#define STR_MOUSE "Rato:"
+#define STR_JOYSTICK "Joystick:"
+#define STR_JOY1 "Joystick 1..."
+#define STR_JOY2 "Joystick 2..."
+#define STR_JOY3 "Joystick 3..."
+#define STR_JOY4 "Joystick 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "Dispositivo COM3:"
-#define STR_COM4 "Dispositivo COM4:"
-#define STR_LPT1 "Dispositivo LPT1:"
-#define STR_LPT2 "Dispositivo LPT2:"
-#define STR_LPT3 "Dispositivo LPT3:"
-#define STR_LPT4 "Dispositivo LPT4:"
-#define STR_SERIAL1 "Porta de série 1"
-#define STR_SERIAL2 "Porta de série 2"
-#define STR_SERIAL3 "Porta de série 3"
-#define STR_SERIAL4 "Porta de série 4"
-#define STR_PARALLEL1 "Porta paralela 1"
-#define STR_PARALLEL2 "Porta paralela 2"
-#define STR_PARALLEL3 "Porta paralela 3"
-#define STR_PARALLEL4 "Porta paralela 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "Dispositivo COM1:"
+#define STR_COM2 "Dispositivo COM2:"
+#define STR_COM3 "Dispositivo COM3:"
+#define STR_COM4 "Dispositivo COM4:"
+#define STR_LPT1 "Dispositivo LPT1:"
+#define STR_LPT2 "Dispositivo LPT2:"
+#define STR_LPT3 "Dispositivo LPT3:"
+#define STR_LPT4 "Dispositivo LPT4:"
+#define STR_SERIAL1 "Porta de série 1"
+#define STR_SERIAL2 "Porta de série 2"
+#define STR_SERIAL3 "Porta de série 3"
+#define STR_SERIAL4 "Porta de série 4"
+#define STR_PARALLEL1 "Porta paralela 1"
+#define STR_PARALLEL2 "Porta paralela 2"
+#define STR_PARALLEL3 "Porta paralela 3"
+#define STR_PARALLEL4 "Porta paralela 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Controlador HD:"
-#define STR_FDC "Controlador FD:"
-#define STR_IDE_TER "Controlador IDE terciário"
-#define STR_IDE_QUA "Controlador IDE quaternário"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Controlador 1:"
-#define STR_SCSI_2 "Controlador 2:"
-#define STR_SCSI_3 "Controlador 3:"
-#define STR_SCSI_4 "Controlador 4:"
-#define STR_CASSETTE "Cassete"
+#define STR_HDC "Controlador HD:"
+#define STR_FDC "Controlador FD:"
+#define STR_IDE_TER "Controlador IDE terciário"
+#define STR_IDE_QUA "Controlador IDE quaternário"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Controlador 1:"
+#define STR_SCSI_2 "Controlador 2:"
+#define STR_SCSI_3 "Controlador 3:"
+#define STR_SCSI_4 "Controlador 4:"
+#define STR_CASSETTE "Cassete"
-#define STR_HDD "Discos rÃgidos:"
-#define STR_NEW "&Novo..."
-#define STR_EXISTING "&Existente..."
-#define STR_REMOVE "&Remover"
-#define STR_BUS "Barram.:"
-#define STR_CHANNEL "Canal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Discos rÃgidos:"
+#define STR_NEW "&Novo..."
+#define STR_EXISTING "&Existente..."
+#define STR_REMOVE "&Remover"
+#define STR_BUS "Barram.:"
+#define STR_CHANNEL "Canal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Especificar..."
-#define STR_SECTORS "Sectores:"
-#define STR_HEADS "Cabeças:"
-#define STR_CYLS "Cilindros:"
-#define STR_SIZE_MB "Tamanho (MB):"
-#define STR_TYPE "Tipo:"
-#define STR_IMG_FORMAT "Formato de imagem:"
-#define STR_BLOCK_SIZE "Tamanho de bloco:"
+#define STR_SPECIFY "&Especificar..."
+#define STR_SECTORS "Sectores:"
+#define STR_HEADS "Cabeças:"
+#define STR_CYLS "Cilindros:"
+#define STR_SIZE_MB "Tamanho (MB):"
+#define STR_TYPE "Tipo:"
+#define STR_IMG_FORMAT "Formato de imagem:"
+#define STR_BLOCK_SIZE "Tamanho de bloco:"
-#define STR_FLOPPY_DRIVES "Unidades de disquete:"
-#define STR_TURBO "Velocidade turbo"
-#define STR_CHECKBPB "Verificar BPB"
-#define STR_CDROM_DRIVES "Unidades CD-ROM:"
-#define STR_CD_SPEED "Velocidade:"
-#define STR_EARLY "Unidade anterior"
+#define STR_FLOPPY_DRIVES "Unidades de disquete:"
+#define STR_TURBO "Velocidade turbo"
+#define STR_CHECKBPB "Verificar BPB"
+#define STR_CDROM_DRIVES "Unidades CD-ROM:"
+#define STR_CD_SPEED "Velocidade:"
+#define STR_EARLY "Unidade anterior"
-#define STR_MO_DRIVES "Unidades magneto-ópticas:"
-#define STR_ZIP_DRIVES "Unidades ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Unidades magneto-ópticas:"
+#define STR_ZIP_DRIVES "Unidades ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "Expansão de memória ISA"
-#define STR_ISAMEM_1 "Placa 1:"
-#define STR_ISAMEM_2 "Placa 2:"
-#define STR_ISAMEM_3 "Placa 3:"
-#define STR_ISAMEM_4 "Placa 4:"
-#define STR_BUGGER "Dispositivo ISABugger"
-#define STR_POSTCARD "Placa POST"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "Expansão de memória ISA"
+#define STR_ISAMEM_1 "Placa 1:"
+#define STR_ISAMEM_2 "Placa 2:"
+#define STR_ISAMEM_3 "Placa 3:"
+#define STR_ISAMEM_4 "Placa 4:"
+#define STR_BUGGER "Dispositivo ISABugger"
+#define STR_POSTCARD "Placa POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Erro"
- IDS_2050 "Erro fatal"
- IDS_2051 " - PAUSED"
- IDS_2052 "Pressione Ctrl+Alt+PgDn para voltar ao modo de janela."
- IDS_2053 "Velocidade"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "O 86Box não conseguiu encontrar nenhuma imagem ROM utilizável.\n\nPor favor, vá a href=""https://github.com/86Box/roms/releases/latest"">descarregue um pacote ROM e instale-o na pasta ""roms""."
- IDS_2057 "(empty)"
- IDS_2058 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "Ativado"
- IDS_2061 "Desativado"
- IDS_2062 "Todas as imagens (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Imagens básicas de sector (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Imagens de superfÃcie (*.86F)\0*.86F\0"
- IDS_2063 "A máquina ""%hs"" não está disponÃvel devido à falta de ROMs na pasta roms/machines. A mudar para uma máquina disponÃvel."
+ 2048 "86Box"
+ IDS_2049 "Erro"
+ IDS_2050 "Erro fatal"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Pressione Ctrl+Alt+PgDn para voltar ao modo de janela."
+ IDS_2053 "Velocidade"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "O 86Box não conseguiu encontrar nenhuma imagem ROM utilizável.\n\nPor favor, vá a href=""https://github.com/86Box/roms/releases/latest"">descarregue um pacote ROM e instale-o na pasta ""roms""."
+ IDS_2057 "(empty)"
+ IDS_2058 "Imagens ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "Ativado"
+ IDS_2061 "Desativado"
+ IDS_2062 "Todas as imagens (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Imagens básicas de sector (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Imagens de superfÃcie (*.86F)\0*.86F\0"
+ IDS_2063 "A máquina ""%hs"" não está disponÃvel devido à falta de ROMs na pasta roms/machines. A mudar para uma máquina disponÃvel."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "A placa vÃdeo ""%hs"" não está disponÃvel devido à falta de ROMs na pasta roms/video. A mudar para uma placa vÃdeo disponÃvel."
- IDS_2065 "Máquina"
- IDS_2066 "Apresentação"
- IDS_2067 "Dispositivos de entrada"
- IDS_2068 "Som"
- IDS_2069 "Rede"
- IDS_2070 "Portas (COM e LPT)"
- IDS_2071 "Dispositivos de armazenamento"
- IDS_2072 "Discos rÃgidos"
- IDS_2073 "Unidades de disquete e CD-ROM"
- IDS_2074 "Outros dispostivos removÃveis"
- IDS_2075 "Outros dispositivos"
- IDS_2076 "Imagens de superfÃcie (*.86F)\0*.86F\0"
- IDS_2077 "Clique para capturar o rato"
- IDS_2078 "Pressione F8+F12 para soltar o rato"
- IDS_2079 "Pressione F8+F12 ou tecla média para soltar o rato"
+ IDS_2064 "A placa vÃdeo ""%hs"" não está disponÃvel devido à falta de ROMs na pasta roms/video. A mudar para uma placa vÃdeo disponÃvel."
+ IDS_2065 "Máquina"
+ IDS_2066 "Apresentação"
+ IDS_2067 "Dispositivos de entrada"
+ IDS_2068 "Som"
+ IDS_2069 "Rede"
+ IDS_2070 "Portas (COM e LPT)"
+ IDS_2071 "Dispositivos de armazenamento"
+ IDS_2072 "Discos rÃgidos"
+ IDS_2073 "Unidades de disquete e CD-ROM"
+ IDS_2074 "Outros dispostivos removÃveis"
+ IDS_2075 "Outros dispositivos"
+ IDS_2076 "Imagens de superfÃcie (*.86F)\0*.86F\0"
+ IDS_2077 "Clique para capturar o rato"
+ IDS_2078 "Pressione F8+F12 para soltar o rato"
+ IDS_2079 "Pressione F8+F12 ou tecla média para soltar o rato"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Não foi possÃvel inicializar o FluidSynth"
- IDS_2081 "Barramento"
- IDS_2082 "Ficheiro"
- IDS_2083 "C"
- IDS_2084 "C"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Não foi possÃvel inicializar o FluidSynth"
+ IDS_2081 "Barramento"
+ IDS_2082 "Ficheiro"
+ IDS_2083 "C"
+ IDS_2084 "C"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Verificar BPB"
- IDS_2089 "KB"
- IDS_2090 "Não foi possÃvel inicializar o renderizador vÃdeo."
- IDS_2091 "Padrão"
- IDS_2092 "%i estado(s) de espera"
- IDS_2093 "Tipo"
- IDS_2094 "Falha na configuração de PCap"
- IDS_2095 "Não foi encontrado um dispositivo PCap"
- IDS_2096 "Dispositivo PCap inválido"
- IDS_2097 "Joystick(s) standard de 2 botões"
- IDS_2098 "Joystick(s) standard de 4 botões"
- IDS_2099 "Joystick(s) standard de 6 botões"
- IDS_2100 "Joystick(s) standard de 8 botões"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Nenhum"
- IDS_2105 "Não foi possÃvel inicializar os aceleradores de teclado."
- IDS_2106 "Não foi possÃvel registar a entrada bruta."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CCS: %i, %i, %i)"
- IDS_2109 "Disquete %i (%s): %ls"
- IDS_2110 "Todas as imagens (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Imagens avançadas de sector (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagens básicas de sector (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Imagens de fluxo (*.FDI)\0*.FDI\0Imagens de superfÃcie (*.86F;*.MFM)\0*.86F;*.MFM\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_2111 "Não foi possÃvel inicializar o FreeType"
- IDS_2112 "Não foi possÃvel inicializar o SDL. O ficheiro SDL2.dll é necessário!"
- IDS_2113 "Tem a certeza de que quer um reinÃcio completo da máquina emulada?"
- IDS_2114 "Tem a certeza de que quer sair do 86Box?"
- IDS_2115 "Não foi possÃvel inicializar o Ghostscript"
- IDS_2116 "Magneto-óptico %i (%ls): %ls"
- IDS_2117 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todas as imagens (*.*)\0*.*\0"
- IDS_2118 "Bem-vindos ao 86Box!"
- IDS_2119 "Controlador interno"
- IDS_2120 "Sair"
- IDS_2121 "Não foi encontrada nenhuma ROM"
- IDS_2122 "Deseja guardar as definições?"
- IDS_2123 "Isto irá causar um reinÃcio completo da máquina emulada."
- IDS_2124 "Guardar"
- IDS_2125 "Acerca do 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Verificar BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Não foi possÃvel inicializar o renderizador vÃdeo."
+ IDS_2091 "Padrão"
+ IDS_2092 "%i estado(s) de espera"
+ IDS_2093 "Tipo"
+ IDS_2094 "Falha na configuração de PCap"
+ IDS_2095 "Não foi encontrado um dispositivo PCap"
+ IDS_2096 "Dispositivo PCap inválido"
+ IDS_2097 "Joystick(s) standard de 2 botões"
+ IDS_2098 "Joystick(s) standard de 4 botões"
+ IDS_2099 "Joystick(s) standard de 6 botões"
+ IDS_2100 "Joystick(s) standard de 8 botões"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Nenhum"
+ IDS_2105 "Não foi possÃvel inicializar os aceleradores de teclado."
+ IDS_2106 "Não foi possÃvel registar a entrada bruta."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CCS: %i, %i, %i)"
+ IDS_2109 "Disquete %i (%s): %ls"
+ IDS_2110 "Todas as imagens (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Imagens avançadas de sector (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Imagens básicas de sector (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Imagens de fluxo (*.FDI)\0*.FDI\0Imagens de superfÃcie (*.86F;*.MFM)\0*.86F;*.MFM\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_2111 "Não foi possÃvel inicializar o FreeType"
+ IDS_2112 "Não foi possÃvel inicializar o SDL. O ficheiro SDL2.dll é necessário!"
+ IDS_2113 "Tem a certeza de que quer um reinÃcio completo da máquina emulada?"
+ IDS_2114 "Tem a certeza de que quer sair do 86Box?"
+ IDS_2115 "Não foi possÃvel inicializar o Ghostscript"
+ IDS_2116 "Magneto-óptico %i (%ls): %ls"
+ IDS_2117 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todas as imagens (*.*)\0*.*\0"
+ IDS_2118 "Bem-vindos ao 86Box!"
+ IDS_2119 "Controlador interno"
+ IDS_2120 "Sair"
+ IDS_2121 "Não foi encontrada nenhuma ROM"
+ IDS_2122 "Deseja guardar as definições?"
+ IDS_2123 "Isto irá causar um reinÃcio completo da máquina emulada."
+ IDS_2124 "Guardar"
+ IDS_2125 "Acerca do 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Um emulador de computadores antigos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nUsado sob a licença GNU General Public License versão 2 ou posterior. Veja o ficheiro LICENSE para mais informações."
- IDS_2128 "OK"
- IDS_2129 "Hardware não disponÃvel"
+ IDS_2127 "Um emulador de computadores antigos\n\nAutores: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nUsado sob a licença GNU General Public License versão 2 ou posterior. Veja o ficheiro LICENSE para mais informações."
+ IDS_2128 "OK"
+ IDS_2129 "Hardware não disponÃvel"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "Certifique-se de que a biblioteca " LIB_NAME_PCAP " está instalada e de que está a utilizar uma ligação de rede compatÃvel com a biblioteca " LIB_NAME_PCAP "."
- IDS_2131 "Configuração inválida"
+ IDS_2130 "Certifique-se de que a biblioteca " LIB_NAME_PCAP " está instalada e de que está a utilizar uma ligação de rede compatÃvel com a biblioteca " LIB_NAME_PCAP "."
+ IDS_2131 "Configuração inválida"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " é requerida para a emulação de impressora ESC/P."
+ IDS_2132 LIB_NAME_FREETYPE " é requerida para a emulação de impressora ESC/P."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " é requerido para a conversão automática de ficheiros PostScript para ficheiros PDF.\n\nQualquer documento enviado para a impressora PostScript genérica será gravado como um ficheiro PostScript (.ps)."
+ IDS_2133 LIB_NAME_GS " é requerido para a conversão automática de ficheiros PostScript para ficheiros PDF.\n\nQualquer documento enviado para a impressora PostScript genérica será gravado como um ficheiro PostScript (.ps)."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " é necessário para a saÃda MIDI FluidSynth MIDI."
- IDS_2135 "A entrar no modo de ecrã cheio"
- IDS_2136 "Não mostrar mais esta mensagem"
- IDS_2137 "Não sair"
- IDS_2138 "Reiniciar"
- IDS_2139 "Não reiniciar"
- IDS_2140 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_2141 "Imagens CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_2142 "Configuração de dispositivo %hs"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " é necessário para a saÃda MIDI FluidSynth MIDI."
+ IDS_2135 "A entrar no modo de ecrã cheio"
+ IDS_2136 "Não mostrar mais esta mensagem"
+ IDS_2137 "Não sair"
+ IDS_2138 "Reiniciar"
+ IDS_2139 "Não reiniciar"
+ IDS_2140 "Imagens magneto-ópticas (*.IM?;*.MDI)\0*.IM?;*.MDI\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_2141 "Imagens CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_2142 "Configuração de dispositivo %hs"
IDS_2143 "Ecrã em modo de sono"
- IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_2145 "Opções de OpenGL"
- IDS_2146 "Está a carregar uma configuração sem suporte!"
- IDS_2147 "A filtragem do tipo de CPU baseada na máquina escolhida está desativada para esta máquina emulada.\n\nIsto torna possÃvel escolher um CPU que, de outra forma, não seria compatÃvel com a máquina escolhida. No entanto, pode não ser compatÃvel com a BIOS da máquina ou outros programas.\n\nA activação desta definição não tem suporte oficial e qualquer relatório de erros pode ser fechado como inválido."
- IDS_2148 "Continuar"
- IDS_2149 "Cassete: %s"
- IDS_2150 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_2151 "Cartucho %i: %ls"
- IDS_2152 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_2153 "Erro na inicialização do renderizador"
- IDS_2154 "Não foi possÃvel inicializar o renderizador OpenGL (3.0 Core). Utilize outro renderizador."
- IDS_2155 "Retomar execução"
- IDS_2156 "Pausar execução"
- IDS_2157 "Ctrl+Alt+Del"
- IDS_2158 "Ctrl+Alt+Esc"
- IDS_2159 "Reinicialização completa"
- IDS_2160 "Encerramento ACPI"
- IDS_2161 "Definições"
+ IDS_2144 "Shaders OpenGL (*.GLSL)\0*.GLSL\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_2145 "Opções de OpenGL"
+ IDS_2146 "Está a carregar uma configuração sem suporte!"
+ IDS_2147 "A filtragem do tipo de CPU baseada na máquina escolhida está desativada para esta máquina emulada.\n\nIsto torna possÃvel escolher um CPU que, de outra forma, não seria compatÃvel com a máquina escolhida. No entanto, pode não ser compatÃvel com a BIOS da máquina ou outros programas.\n\nA activação desta definição não tem suporte oficial e qualquer relatório de erros pode ser fechado como inválido."
+ IDS_2148 "Continuar"
+ IDS_2149 "Cassete: %s"
+ IDS_2150 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_2151 "Cartucho %i: %ls"
+ IDS_2152 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_2153 "Erro na inicialização do renderizador"
+ IDS_2154 "Não foi possÃvel inicializar o renderizador OpenGL (3.0 Core). Utilize outro renderizador."
+ IDS_2155 "Retomar execução"
+ IDS_2156 "Pausar execução"
+ IDS_2157 "Ctrl+Alt+Del"
+ IDS_2158 "Ctrl+Alt+Esc"
+ IDS_2159 "Reinicialização completa"
+ IDS_2160 "Encerramento ACPI"
+ IDS_2161 "Definições"
IDS_2162 "Unidade anterior"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Disco rÃgido (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "Unidades CD-ROM com barramento MFM/RLL ou ESDI nunca existiram!"
- IDS_4100 "Personalizado..."
- IDS_4101 "Personalizado (grande)..."
- IDS_4102 "Adicionar novo disco rÃgido"
- IDS_4103 "Adicionar disco rÃgido existente"
- IDS_4104 "As imagens de disco HDI não podem ter mais de 4 GB."
- IDS_4105 "As imagens de disco não podem ter mais de 127 GB."
- IDS_4106 "Imagens de disco rÃgido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_4107 "Não foi possÃvel ler o ficheiro"
- IDS_4108 "Não foi possÃvel escrever o ficheiro"
- IDS_4109 "Imagens HDI ou HDX com um tamanho de sector diferente de 512 não são suportadas."
- IDS_4110 "O barramento USB ainda não tem suporte"
- IDS_4111 "A imagem de disco já existe"
- IDS_4112 "Por favor, especifique um nome de ficheiro válido."
- IDS_4113 "Imagem de disco criada"
- IDS_4114 "Certifique-se de que o ficheiro existe e é legÃvel."
- IDS_4115 "Certifique-se de que o ficheiro está a ser guardado numa pasta editável."
- IDS_4116 "Imagem de disco muito grande"
- IDS_4117 "Lembre-se de particionar e formatar o novo disco criado."
- IDS_4118 "O ficheiro selecionado será sobrescrito. Tem a certeza de que quer utilizá-lo?"
- IDS_4119 "Imagem de disco sem suporte"
- IDS_4120 "Sobrescrever"
- IDS_4121 "Não sobrescrever"
- IDS_4122 "Imagem bruta (.img)"
- IDS_4123 "Imagem HDI (.hdi)"
- IDS_4124 "Imagem HDX (.hdx)"
- IDS_4125 "VHD com tamanho fixo (.vhd)"
- IDS_4126 "VHD com tamanho dinâmico (.vhd)"
- IDS_4127 "VHD diferenciador (.vhd)"
- IDS_4128 "Blocos grandes (2 MB)"
- IDS_4129 "Blocos pequenos (512 KB)"
- IDS_4130 "Ficheiros VHD (*.VHD)\0*.VHD\0Todos os ficheiros (*.*)\0*.*\0"
- IDS_4131 "Seleccione o VHD pai"
- IDS_4132 "Isto pode significar que a imagem pai foi modificada depois da criação da imagem diferenciadora.\n\nTambém pode acontecer se os ficheiros da imagem foram movidos ou copiados ou por causa de um erro no programa que criou este disco.\n\nQuer corrigir os carimbos de data/hora?"
- IDS_4133 "Os carimbos de data/hora dos discos pai e filho não correspondem!"
- IDS_4134 "Não foi possÃvel corrigir o carimbo de data/hora do VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "Unidades CD-ROM com barramento MFM/RLL ou ESDI nunca existiram!"
+ IDS_4100 "Personalizado..."
+ IDS_4101 "Personalizado (grande)..."
+ IDS_4102 "Adicionar novo disco rÃgido"
+ IDS_4103 "Adicionar disco rÃgido existente"
+ IDS_4104 "As imagens de disco HDI não podem ter mais de 4 GB."
+ IDS_4105 "As imagens de disco não podem ter mais de 127 GB."
+ IDS_4106 "Imagens de disco rÃgido (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_4107 "Não foi possÃvel ler o ficheiro"
+ IDS_4108 "Não foi possÃvel escrever o ficheiro"
+ IDS_4109 "Imagens HDI ou HDX com um tamanho de sector diferente de 512 não são suportadas."
+ IDS_4110 "O barramento USB ainda não tem suporte"
+ IDS_4111 "A imagem de disco já existe"
+ IDS_4112 "Por favor, especifique um nome de ficheiro válido."
+ IDS_4113 "Imagem de disco criada"
+ IDS_4114 "Certifique-se de que o ficheiro existe e é legÃvel."
+ IDS_4115 "Certifique-se de que o ficheiro está a ser guardado numa pasta editável."
+ IDS_4116 "Imagem de disco muito grande"
+ IDS_4117 "Lembre-se de particionar e formatar o novo disco criado."
+ IDS_4118 "O ficheiro selecionado será sobrescrito. Tem a certeza de que quer utilizá-lo?"
+ IDS_4119 "Imagem de disco sem suporte"
+ IDS_4120 "Sobrescrever"
+ IDS_4121 "Não sobrescrever"
+ IDS_4122 "Imagem bruta (.img)"
+ IDS_4123 "Imagem HDI (.hdi)"
+ IDS_4124 "Imagem HDX (.hdx)"
+ IDS_4125 "VHD com tamanho fixo (.vhd)"
+ IDS_4126 "VHD com tamanho dinâmico (.vhd)"
+ IDS_4127 "VHD diferenciador (.vhd)"
+ IDS_4128 "Blocos grandes (2 MB)"
+ IDS_4129 "Blocos pequenos (512 KB)"
+ IDS_4130 "Ficheiros VHD (*.VHD)\0*.VHD\0Todos os ficheiros (*.*)\0*.*\0"
+ IDS_4131 "Seleccione o VHD pai"
+ IDS_4132 "Isto pode significar que a imagem pai foi modificada depois da criação da imagem diferenciadora.\n\nTambém pode acontecer se os ficheiros da imagem foram movidos ou copiados ou por causa de um erro no programa que criou este disco.\n\nQuer corrigir os carimbos de data/hora?"
+ IDS_4133 "Os carimbos de data/hora dos discos pai e filho não correspondem!"
+ IDS_4134 "Não foi possÃvel corrigir o carimbo de data/hora do VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Desativado"
- IDS_5381 "ATAPI"
+ IDS_5376 "Desativado"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Desativado"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Desativado"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "RPM perfeito"
- IDS_6145 "RPM 1% abaixo do RPM perfeito"
- IDS_6146 "RPM 1.5% abaixo do RPM perfeito"
- IDS_6147 "RPM 2% abaixo do RPM perfeito"
+ IDS_6144 "RPM perfeito"
+ IDS_6145 "RPM 1% abaixo do RPM perfeito"
+ IDS_6146 "RPM 1.5% abaixo do RPM perfeito"
+ IDS_6147 "RPM 2% abaixo do RPM perfeito"
- IDS_7168 "(Padrão do sistema)"
+ IDS_7168 "(Padrão do sistema)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Portuguese (Portugal) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/ru-RU.rc b/src/win/languages/ru-RU.rc
index 8ae6b20b6..741e6466e 100644
--- a/src/win/languages/ru-RU.rc
+++ b/src/win/languages/ru-RU.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&ДейÑтвие"
BEGIN
- MENUITEM "&Клавиатура требует захвата", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Правый CTRL - Ñто левый ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Клавиатура требует захвата", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Правый CTRL - Ñто левый ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Ð¥Ð¾Ð»Ð¾Ð´Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Ð¥Ð¾Ð»Ð¾Ð´Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Пауза", IDM_ACTION_PAUSE
+ MENUITEM "&Пауза", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Выход...", IDM_ACTION_EXIT
+ MENUITEM "&Выход...", IDM_ACTION_EXIT
END
POPUP "&Вид"
BEGIN
- MENUITEM "&Скрыть Ñтроку ÑоÑтоÑниÑ", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "С&крыть панель инÑтрументов", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Скрыть Ñтроку ÑоÑтоÑниÑ", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "С&крыть панель инÑтрументов", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&ИзменÑемый размер окна", IDM_VID_RESIZE
- MENUITEM "&Запомнить размер и положение", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&ИзменÑемый размер окна", IDM_VID_RESIZE
+ MENUITEM "&Запомнить размер и положение", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Рендеринг"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "&Указать размеры...", IDM_VID_SPECIFY_DIM
- MENUITEM "У&Ñтановить Ñоотношение Ñторон 4:3", IDM_VID_FORCE43
+ MENUITEM "&Указать размеры...", IDM_VID_SPECIFY_DIM
+ MENUITEM "У&Ñтановить Ñоотношение Ñторон 4:3", IDM_VID_FORCE43
POPUP "&МаÑштаб окна"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Метод фильтрации"
BEGIN
- MENUITEM "&Ближайший", IDM_VID_FILTER_NEAREST
- MENUITEM "&Линейный", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Ближайший", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Линейный", IDM_VID_FILTER_LINEAR
END
- MENUITEM "МаÑштабирование Hi&DPI", IDM_VID_HIDPI
+ MENUITEM "МаÑштабирование Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&ПолноÑкранный режим\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&ПолноÑкранный режим\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "&РаÑÑ‚Ñгивание в полноÑкранном режиме"
BEGIN
- MENUITEM "&Ðа веÑÑŒ Ñкран", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Ðа веÑÑŒ Ñкран", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Квадратные пикÑели (Ñохранить Ñоотношение)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&ЦелочиÑленное маÑштабирование", IDM_VID_FS_INT
+ MENUITEM "&ЦелочиÑленное маÑштабирование", IDM_VID_FS_INT
END
POPUP "ÐаÑтройки E&GA/(S)VGA"
BEGIN
- MENUITEM "&Инвертировать цвета VGA", IDM_VID_INVERT
+ MENUITEM "&Инвертировать цвета VGA", IDM_VID_INVERT
POPUP "&Тип Ñкрана VGA"
BEGIN
- MENUITEM "RGB &цветной", IDM_VID_GRAY_RGB
- MENUITEM "&RGB монохромный", IDM_VID_GRAY_MONO
- MENUITEM "&Янтарный оттенок", IDM_VID_GRAY_AMBER
- MENUITEM "&Зелёный оттенок", IDM_VID_GRAY_GREEN
- MENUITEM "&Белый оттенок", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &цветной", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB монохромный", IDM_VID_GRAY_MONO
+ MENUITEM "&Янтарный оттенок", IDM_VID_GRAY_AMBER
+ MENUITEM "&Зелёный оттенок", IDM_VID_GRAY_GREEN
+ MENUITEM "&Белый оттенок", IDM_VID_GRAY_WHITE
END
POPUP "Тип монохромного &конвертированиÑ"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&УÑреднённый", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&УÑреднённый", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Вылеты развёртки CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "Вылеты развёртки CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Изменить контраÑтноÑть &монохромного диÑплеÑ", IDM_VID_CGACON
END
- MENUITEM "&ÐоÑители", IDM_MEDIA
+ MENUITEM "&ÐоÑители", IDM_MEDIA
POPUP "&ИнÑтрументы"
BEGIN
- MENUITEM "&ÐаÑтройки машины...", IDM_CONFIG
- MENUITEM "&Обновление значков Ñтроки ÑоÑтоÑниÑ", IDM_UPDATE_ICONS
+ MENUITEM "&ÐаÑтройки машины...", IDM_CONFIG
+ MENUITEM "&Обновление значков Ñтроки ÑоÑтоÑниÑ", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Сделать Ñ&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Сделать Ñ&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Параметры...", IDM_PREFERENCES
+ MENUITEM "&Параметры...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Включить интеграцию &Discord", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&УÑиление звука...", IDM_SND_GAIN
+ MENUITEM "&УÑиление звука...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Ðачать траÑÑировку\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Завершить траÑÑировку\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Ðачать траÑÑировку\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Завершить траÑÑировку\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Помощь"
BEGIN
- MENUITEM "&ДокументациÑ...", IDM_DOCS
- MENUITEM "&О программе 86Box...", IDM_ABOUT
+ MENUITEM "&ДокументациÑ...", IDM_DOCS
+ MENUITEM "&О программе 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовый образ...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Ðовый образ...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Выбрать образ...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Выбрать образ...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&ЗапиÑÑŒ", IDM_CASSETTE_RECORD
- MENUITEM "&ВоÑпроизведение", IDM_CASSETTE_PLAY
- MENUITEM "&Перемотка на начало", IDM_CASSETTE_REWIND
- MENUITEM "&Перемотка в конец", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&ЗапиÑÑŒ", IDM_CASSETTE_RECORD
+ MENUITEM "&ВоÑпроизведение", IDM_CASSETTE_PLAY
+ MENUITEM "&Перемотка на начало", IDM_CASSETTE_REWIND
+ MENUITEM "&Перемотка в конец", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "И&звлечь", IDM_CASSETTE_EJECT
+ MENUITEM "И&звлечь", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Образ...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Образ...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "И&звлечь", IDM_CARTRIDGE_EJECT
+ MENUITEM "И&звлечь", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовый образ...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Ðовый образ...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Выбрать образ...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Выбрать образ...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "Ð&кÑпорт в 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "Ð&кÑпорт в 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "И&звлечь", IDM_FLOPPY_EJECT
+ MENUITEM "И&звлечь", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "О&тключить звук", IDM_CDROM_MUTE
+ MENUITEM "О&тключить звук", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "П&уÑтой", IDM_CDROM_EMPTY
- MENUITEM "&Снова загрузить предыдущий образ", IDM_CDROM_RELOAD
+ MENUITEM "П&уÑтой", IDM_CDROM_EMPTY
+ MENUITEM "&Снова загрузить предыдущий образ", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Образ...", IDM_CDROM_IMAGE
- MENUITEM "&Папка...", IDM_CDROM_DIR
+ MENUITEM "&Образ...", IDM_CDROM_IMAGE
+ MENUITEM "&Папка...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовый образ...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Ðовый образ...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Выбрать образ...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Выбрать образ...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "И&звлечь", IDM_ZIP_EJECT
- MENUITEM "&Снова загрузить предыдущий образ", IDM_ZIP_RELOAD
+ MENUITEM "И&звлечь", IDM_ZIP_EJECT
+ MENUITEM "&Снова загрузить предыдущий образ", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовый образ...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Ðовый образ...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Выбрать образ...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Выбрать образ...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Выбрать образ (&Защита от запиÑи)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "И&звлечь", IDM_MO_EJECT
- MENUITEM "&Снова загрузить предыдущий образ", IDM_MO_RELOAD
+ MENUITEM "И&звлечь", IDM_MO_EJECT
+ MENUITEM "&Снова загрузить предыдущий образ", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Параметры"
-#define STR_SND_GAIN "УÑиление звука"
-#define STR_NEW_FLOPPY "Ðовый образ"
-#define STR_CONFIG "ÐаÑтройки"
-#define STR_SPECIFY_DIM "Указать размеры главного окна"
+#define STR_PREFERENCES "Параметры"
+#define STR_SND_GAIN "УÑиление звука"
+#define STR_NEW_FLOPPY "Ðовый образ"
+#define STR_CONFIG "ÐаÑтройки"
+#define STR_SPECIFY_DIM "Указать размеры главного окна"
-#define STR_OK "OK"
-#define STR_CANCEL "Отмена"
-#define STR_GLOBAL "Сохранить Ñти параметры как &глобальные по умолчанию"
-#define STR_DEFAULT "&По умолчанию"
-#define STR_LANGUAGE "Язык:"
-#define STR_ICONSET "Ðабор иконок:"
+#define STR_OK "OK"
+#define STR_CANCEL "Отмена"
+#define STR_GLOBAL "Сохранить Ñти параметры как &глобальные по умолчанию"
+#define STR_DEFAULT "&По умолчанию"
+#define STR_LANGUAGE "Язык:"
+#define STR_ICONSET "Ðабор иконок:"
-#define STR_GAIN "УÑиление"
+#define STR_GAIN "УÑиление"
-#define STR_FILE_NAME "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:"
-#define STR_DISK_SIZE "Размер диÑка:"
-#define STR_RPM_MODE "RPM режим:"
-#define STR_PROGRESS "ПрогреÑÑ:"
+#define STR_FILE_NAME "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:"
+#define STR_DISK_SIZE "Размер диÑка:"
+#define STR_RPM_MODE "RPM режим:"
+#define STR_PROGRESS "ПрогреÑÑ:"
-#define STR_WIDTH "Ширина:"
-#define STR_HEIGHT "Ð’Ñ‹Ñота:"
-#define STR_LOCK_TO_SIZE "ЗафикÑировать размер"
+#define STR_WIDTH "Ширина:"
+#define STR_HEIGHT "Ð’Ñ‹Ñота:"
+#define STR_LOCK_TO_SIZE "ЗафикÑировать размер"
-#define STR_MACHINE_TYPE "Тип машины:"
-#define STR_MACHINE "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿Ð»Ð°Ñ‚Ð°:"
-#define STR_CONFIGURE "ÐаÑтройка"
-#define STR_CPU_TYPE "Тип ЦП:"
-#define STR_CPU_SPEED "СкороÑть:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Циклы ожиданиÑ:"
-#define STR_MB "МБ"
-#define STR_MEMORY "ПамÑть:"
-#define STR_TIME_SYNC "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸"
-#define STR_DISABLED "Отключить"
-#define STR_ENABLED_LOCAL "Включить (меÑтное)"
-#define STR_ENABLED_UTC "Включить (UTC)"
-#define STR_DYNAREC "ДинамичеÑкий рекомпилÑтор"
+#define STR_MACHINE_TYPE "Тип машины:"
+#define STR_MACHINE "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿Ð»Ð°Ñ‚Ð°:"
+#define STR_CONFIGURE "ÐаÑтройка"
+#define STR_CPU_TYPE "Тип ЦП:"
+#define STR_CPU_SPEED "СкороÑть:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Циклы ожиданиÑ:"
+#define STR_MB "МБ"
+#define STR_MEMORY "ПамÑть:"
+#define STR_TIME_SYNC "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸"
+#define STR_DISABLED "Отключить"
+#define STR_ENABLED_LOCAL "Включить (меÑтное)"
+#define STR_ENABLED_UTC "Включить (UTC)"
+#define STR_DYNAREC "ДинамичеÑкий рекомпилÑтор"
-#define STR_VIDEO "Видеокарта:"
-#define STR_VIDEO_2 "Видеокарта 2:"
-#define STR_VOODOO "УÑкоритель Voodoo"
-#define STR_IBM8514 "УÑкоритель IBM 8514/a"
-#define STR_XGA "УÑкоритель XGA"
+#define STR_VIDEO "Видеокарта:"
+#define STR_VIDEO_2 "Видеокарта 2:"
+#define STR_VOODOO "УÑкоритель Voodoo"
+#define STR_IBM8514 "УÑкоритель IBM 8514/a"
+#define STR_XGA "УÑкоритель XGA"
-#define STR_MOUSE "Мышь:"
-#define STR_JOYSTICK "ДжойÑтик:"
-#define STR_JOY1 "ДжойÑтик 1..."
-#define STR_JOY2 "ДжойÑтик 2..."
-#define STR_JOY3 "ДжойÑтик 3..."
-#define STR_JOY4 "ДжойÑтик 4..."
+#define STR_MOUSE "Мышь:"
+#define STR_JOYSTICK "ДжойÑтик:"
+#define STR_JOY1 "ДжойÑтик 1..."
+#define STR_JOY2 "ДжойÑтик 2..."
+#define STR_JOY3 "ДжойÑтик 3..."
+#define STR_JOY4 "ДжойÑтик 4..."
-#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_FLOAT "FLOAT32 звук"
-#define STR_FM_DRIVER "Драйвер FM-Ñинтезатора"
-#define STR_FM_DRV_NUKED "Nuked (более точный)"
-#define STR_FM_DRV_YMFM "YMFM (быÑтрей)"
+#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_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_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_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:"
-#define STR_COM3 "УÑтройÑтво COM3:"
-#define STR_COM4 "УÑтройÑтво COM4:"
-#define STR_LPT1 "УÑтройÑтво LPT1:"
-#define STR_LPT2 "УÑтройÑтво LPT2:"
-#define STR_LPT3 "УÑтройÑтво LPT3:"
-#define STR_LPT4 "УÑтройÑтво LPT4:"
-#define STR_SERIAL1 "ПоÑледов. порт COM1"
-#define STR_SERIAL2 "ПоÑледов. порт COM2"
-#define STR_SERIAL3 "ПоÑледов. порт COM3"
-#define STR_SERIAL4 "ПоÑледов. порт COM4"
-#define STR_PARALLEL1 "Параллельный порт LPT1"
-#define STR_PARALLEL2 "Параллельный порт LPT2"
-#define STR_PARALLEL3 "Параллельный порт LPT3"
-#define STR_PARALLEL4 "Параллельный порт LPT4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "УÑтройÑтво COM1:"
+#define STR_COM2 "УÑтройÑтво COM2:"
+#define STR_COM3 "УÑтройÑтво COM3:"
+#define STR_COM4 "УÑтройÑтво COM4:"
+#define STR_LPT1 "УÑтройÑтво LPT1:"
+#define STR_LPT2 "УÑтройÑтво LPT2:"
+#define STR_LPT3 "УÑтройÑтво LPT3:"
+#define STR_LPT4 "УÑтройÑтво LPT4:"
+#define STR_SERIAL1 "ПоÑледов. порт COM1"
+#define STR_SERIAL2 "ПоÑледов. порт COM2"
+#define STR_SERIAL3 "ПоÑледов. порт COM3"
+#define STR_SERIAL4 "ПоÑледов. порт COM4"
+#define STR_PARALLEL1 "Параллельный порт LPT1"
+#define STR_PARALLEL2 "Параллельный порт LPT2"
+#define STR_PARALLEL3 "Параллельный порт LPT3"
+#define STR_PARALLEL4 "Параллельный порт LPT4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Контроллер HD:"
-#define STR_FDC "Контроллер FD:"
-#define STR_IDE_TER "Третичный IDE контроллер"
-#define STR_IDE_QUA "Четвертичный IDE контроллер"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Контроллер 1:"
-#define STR_SCSI_2 "Контроллер 2:"
-#define STR_SCSI_3 "Контроллер 3:"
-#define STR_SCSI_4 "Контроллер 4:"
-#define STR_CASSETTE "КаÑÑета"
+#define STR_HDC "Контроллер HD:"
+#define STR_FDC "Контроллер FD:"
+#define STR_IDE_TER "Третичный IDE контроллер"
+#define STR_IDE_QUA "Четвертичный IDE контроллер"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Контроллер 1:"
+#define STR_SCSI_2 "Контроллер 2:"
+#define STR_SCSI_3 "Контроллер 3:"
+#define STR_SCSI_4 "Контроллер 4:"
+#define STR_CASSETTE "КаÑÑета"
-#define STR_HDD "ЖёÑткие диÑки:"
-#define STR_NEW "&Создать..."
-#define STR_EXISTING "&Выбрать..."
-#define STR_REMOVE "&Убрать"
-#define STR_BUS "Шина:"
-#define STR_CHANNEL "Канал:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "ЖёÑткие диÑки:"
+#define STR_NEW "&Создать..."
+#define STR_EXISTING "&Выбрать..."
+#define STR_REMOVE "&Убрать"
+#define STR_BUS "Шина:"
+#define STR_CHANNEL "Канал:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Указать..."
-#define STR_SECTORS "Сектора:"
-#define STR_HEADS "Головки:"
-#define STR_CYLS "Цилиндры:"
-#define STR_SIZE_MB "Размер (МБ):"
-#define STR_TYPE "Тип:"
-#define STR_IMG_FORMAT "Тип образа:"
-#define STR_BLOCK_SIZE "Размер блока:"
+#define STR_SPECIFY "&Указать..."
+#define STR_SECTORS "Сектора:"
+#define STR_HEADS "Головки:"
+#define STR_CYLS "Цилиндры:"
+#define STR_SIZE_MB "Размер (МБ):"
+#define STR_TYPE "Тип:"
+#define STR_IMG_FORMAT "Тип образа:"
+#define STR_BLOCK_SIZE "Размер блока:"
-#define STR_FLOPPY_DRIVES "Гибкие диÑки:"
-#define STR_TURBO "Турбо тайминги"
-#define STR_CHECKBPB "ПроверÑть BPB"
-#define STR_CDROM_DRIVES "ДиÑководы CD-ROM:"
-#define STR_CD_SPEED "СкороÑть:"
-#define STR_EARLY "Предыдущий диÑковод"
+#define STR_FLOPPY_DRIVES "Гибкие диÑки:"
+#define STR_TURBO "Турбо тайминги"
+#define STR_CHECKBPB "ПроверÑть BPB"
+#define STR_CDROM_DRIVES "ДиÑководы CD-ROM:"
+#define STR_CD_SPEED "СкороÑть:"
+#define STR_EARLY "Предыдущий диÑковод"
-#define STR_MO_DRIVES "МагнитооптичеÑкие диÑководы:"
-#define STR_ZIP_DRIVES "ZIP диÑководы:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "МагнитооптичеÑкие диÑководы:"
+#define STR_ZIP_DRIVES "ZIP диÑководы:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "Карта раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти (ISA)"
-#define STR_ISAMEM_1 "Карта 1:"
-#define STR_ISAMEM_2 "Карта 2:"
-#define STR_ISAMEM_3 "Карта 3:"
-#define STR_ISAMEM_4 "Карта 4:"
-#define STR_BUGGER "УÑтройÑтво ISABugger"
-#define STR_POSTCARD "Карта POST"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "Карта раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти (ISA)"
+#define STR_ISAMEM_1 "Карта 1:"
+#define STR_ISAMEM_2 "Карта 2:"
+#define STR_ISAMEM_3 "Карта 3:"
+#define STR_ISAMEM_4 "Карта 4:"
+#define STR_BUGGER "УÑтройÑтво ISABugger"
+#define STR_POSTCARD "Карта POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Ошибка"
- IDS_2050 "ÐеуÑÑ‚Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
- IDS_2051 " - ПÐУЗÐ"
- IDS_2052 "Ðажмите Ctrl+Alt+PgDn Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° в оконный режим."
- IDS_2053 "СкороÑть"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Образы ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box не Ñмог найти ни одного подходÑщего Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° Ñ ÐŸÐ—Ð£.\n\nПожалуйÑта Ñкачайте набор ПЗУ и извлеките его в каталог ""roms""."
- IDS_2057 "(пуÑто)"
- IDS_2058 "Образы ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2059 "Турбо"
- IDS_2060 "Вкл"
- IDS_2061 "Выкл"
- IDS_2062 "Ð’Ñе образы (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0ПроÑтые поÑекторные образы (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface образы (*.86F)\0*.86F\0"
- IDS_2063 "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿Ð»Ð°Ñ‚Ð° ""%hs"" недоÑтупна из-за отÑутÑÑ‚Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° её ПЗУ в каталоге roms/machines. Переключение на доÑтупную ÑиÑтемную плату."
+ 2048 "86Box"
+ IDS_2049 "Ошибка"
+ IDS_2050 "ÐеуÑÑ‚Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
+ IDS_2051 " - ПÐУЗÐ"
+ IDS_2052 "Ðажмите Ctrl+Alt+PgDn Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° в оконный режим."
+ IDS_2053 "СкороÑть"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Образы ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box не Ñмог найти ни одного подходÑщего Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° Ñ ÐŸÐ—Ð£.\n\nПожалуйÑта Ñкачайте набор ПЗУ и извлеките его в каталог ""roms""."
+ IDS_2057 "(пуÑто)"
+ IDS_2058 "Образы ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2059 "Турбо"
+ IDS_2060 "Вкл"
+ IDS_2061 "Выкл"
+ IDS_2062 "Ð’Ñе образы (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0ПроÑтые поÑекторные образы (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Surface образы (*.86F)\0*.86F\0"
+ IDS_2063 "СиÑÑ‚ÐµÐ¼Ð½Ð°Ñ Ð¿Ð»Ð°Ñ‚Ð° ""%hs"" недоÑтупна из-за отÑутÑÑ‚Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° её ПЗУ в каталоге roms/machines. Переключение на доÑтупную ÑиÑтемную плату."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Видеокарта ""%hs"" недоÑтупна из-за отÑутÑÑ‚Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° её ПЗУ в каталоге roms/video. Переключение на доÑтупную видеокарту."
- IDS_2065 "Компьютер"
- IDS_2066 "ДиÑплей"
- IDS_2067 "УÑтройÑтва ввода"
- IDS_2068 "Звук"
- IDS_2069 "Сеть"
- IDS_2070 "Порты (COM и LPT)"
- IDS_2071 "Контроллеры диÑков"
- IDS_2072 "ЖёÑткие диÑки"
- IDS_2073 "Гибкие диÑки и CD-ROM"
- IDS_2074 "Другие Ñъёмные уÑтр-ва"
- IDS_2075 "Ð”Ñ€ÑƒÐ³Ð°Ñ Ð¿ÐµÑ€Ð¸Ñ„ÐµÑ€Ð¸Ñ"
- IDS_2076 "Образы Surface (*.86F)\0*.86F\0"
- IDS_2077 "Щёлкните мышью Ð´Ð»Ñ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð° курÑора"
- IDS_2078 "Ðажмите F8+F12 чтобы оÑвободить курÑор"
- IDS_2079 "Ðажмите F8+F12 или Ñреднюю кнопку мыши чтобы оÑвободить курÑор"
+ IDS_2064 "Видеокарта ""%hs"" недоÑтупна из-за отÑутÑÑ‚Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° её ПЗУ в каталоге roms/video. Переключение на доÑтупную видеокарту."
+ IDS_2065 "Компьютер"
+ IDS_2066 "ДиÑплей"
+ IDS_2067 "УÑтройÑтва ввода"
+ IDS_2068 "Звук"
+ IDS_2069 "Сеть"
+ IDS_2070 "Порты (COM и LPT)"
+ IDS_2071 "Контроллеры диÑков"
+ IDS_2072 "ЖёÑткие диÑки"
+ IDS_2073 "Гибкие диÑки и CD-ROM"
+ IDS_2074 "Другие Ñъёмные уÑтр-ва"
+ IDS_2075 "Ð”Ñ€ÑƒÐ³Ð°Ñ Ð¿ÐµÑ€Ð¸Ñ„ÐµÑ€Ð¸Ñ"
+ IDS_2076 "Образы Surface (*.86F)\0*.86F\0"
+ IDS_2077 "Щёлкните мышью Ð´Ð»Ñ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ð° курÑора"
+ IDS_2078 "Ðажмите F8+F12 чтобы оÑвободить курÑор"
+ IDS_2079 "Ðажмите F8+F12 или Ñреднюю кнопку мыши чтобы оÑвободить курÑор"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Ðевозможно инициализировать FluidSynth"
- IDS_2081 "Шина"
- IDS_2082 "Файл"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "МБ"
+ IDS_2080 "Ðевозможно инициализировать FluidSynth"
+ IDS_2081 "Шина"
+ IDS_2082 "Файл"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "МБ"
IDS_2087 "Speed"
- IDS_2088 "ПроверÑть BPB"
- IDS_2089 "КБ"
- IDS_2090 "Ðе удалоÑÑŒ инициализировать рендерер видео."
- IDS_2091 "По умолчанию"
- IDS_2092 "%i WS"
- IDS_2093 "Тип"
- IDS_2094 "Ðе удалоÑÑŒ наÑтроить PCap"
- IDS_2095 "УÑтройÑтва PCap не найдены"
- IDS_2096 "Ðеверное уÑтройÑтво PCap"
- IDS_2097 "Стандартный 2-кнопочный джойÑтик"
- IDS_2098 "Стандартный 4-кнопочный джойÑтик"
- IDS_2099 "Стандартный 6-кнопочный джойÑтик"
- IDS_2100 "Стандартный 8-кнопочный джойÑтик"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "СиÑтема ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÑ‚Ð¾Ð¼ Thrustmaster"
- IDS_2104 "Ðет"
- IDS_2105 "Ðевозможно загрузить уÑкорители клавиатуры."
- IDS_2106 "Ðевозможно зарегиÑтрировать необработанный (RAW) ввод."
- IDS_2107 "%u"
- IDS_2108 "%u МБ (CHS: %i, %i, %i)"
- IDS_2109 "ДиÑковод %i (%s): %ls"
- IDS_2110 "Ð’Ñе образы (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0РаÑширенные образы Ñекторов (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0ОÑновные образы Ñекторов (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Образы Flux (*.FDI)\0*.FDI\0Образы Surface (*.86F;*.MFM)\0*.86F;*.MFM\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2111 "Ðевозможно инициализировать FreeType"
- IDS_2112 "Ðевозможно инициализировать SDL, требуетÑÑ SDL2.dll"
- IDS_2113 "Ð’Ñ‹ уверены, что хотите выполнить холодную перезагрузку Ñмулируемой машины?"
- IDS_2114 "Вы уверены, что хотите выйти из 86Box?"
- IDS_2115 "Ðевозможно инициализировать Ghostscript"
- IDS_2116 "МагнитооптичеÑкий %i (%ls): %ls"
- IDS_2117 "Образы магнитооптичеÑких диÑков (*.IM?;*.MDI)\0*.IM?;*.MDI\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2118 "Добро пожаловать в 86Box!"
- IDS_2119 "Ð’Ñтроенный контроллер"
- IDS_2120 "Выход"
- IDS_2121 "ПЗУ не найдены"
- IDS_2122 "Хотите ли вы Ñохранить наÑтройки?"
- IDS_2123 "Ðто приведет к холодной перезагрузке Ñмулируемой машины."
- IDS_2124 "Сохранить"
- IDS_2125 "О 86Box"
- IDS_2126 "86Box v." EMU_VERSION
+ IDS_2088 "ПроверÑть BPB"
+ IDS_2089 "КБ"
+ IDS_2090 "Ðе удалоÑÑŒ инициализировать рендерер видео."
+ IDS_2091 "По умолчанию"
+ IDS_2092 "%i WS"
+ IDS_2093 "Тип"
+ IDS_2094 "Ðе удалоÑÑŒ наÑтроить PCap"
+ IDS_2095 "УÑтройÑтва PCap не найдены"
+ IDS_2096 "Ðеверное уÑтройÑтво PCap"
+ IDS_2097 "Стандартный 2-кнопочный джойÑтик"
+ IDS_2098 "Стандартный 4-кнопочный джойÑтик"
+ IDS_2099 "Стандартный 6-кнопочный джойÑтик"
+ IDS_2100 "Стандартный 8-кнопочный джойÑтик"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "СиÑтема ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÐµÑ‚Ð¾Ð¼ Thrustmaster"
+ IDS_2104 "Ðет"
+ IDS_2105 "Ðевозможно загрузить уÑкорители клавиатуры."
+ IDS_2106 "Ðевозможно зарегиÑтрировать необработанный (RAW) ввод."
+ IDS_2107 "%u"
+ IDS_2108 "%u МБ (CHS: %i, %i, %i)"
+ IDS_2109 "ДиÑковод %i (%s): %ls"
+ IDS_2110 "Ð’Ñе образы (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0РаÑширенные образы Ñекторов (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0ОÑновные образы Ñекторов (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Образы Flux (*.FDI)\0*.FDI\0Образы Surface (*.86F;*.MFM)\0*.86F;*.MFM\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2111 "Ðевозможно инициализировать FreeType"
+ IDS_2112 "Ðевозможно инициализировать SDL, требуетÑÑ SDL2.dll"
+ IDS_2113 "Ð’Ñ‹ уверены, что хотите выполнить холодную перезагрузку Ñмулируемой машины?"
+ IDS_2114 "Вы уверены, что хотите выйти из 86Box?"
+ IDS_2115 "Ðевозможно инициализировать Ghostscript"
+ IDS_2116 "МагнитооптичеÑкий %i (%ls): %ls"
+ IDS_2117 "Образы магнитооптичеÑких диÑков (*.IM?;*.MDI)\0*.IM?;*.MDI\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2118 "Добро пожаловать в 86Box!"
+ IDS_2119 "Ð’Ñтроенный контроллер"
+ IDS_2120 "Выход"
+ IDS_2121 "ПЗУ не найдены"
+ IDS_2122 "Хотите ли вы Ñохранить наÑтройки?"
+ IDS_2123 "Ðто приведет к холодной перезагрузке Ñмулируемой машины."
+ IDS_2124 "Сохранить"
+ IDS_2125 "О 86Box"
+ IDS_2126 "86Box v." EMU_VERSION
- IDS_2127 "ÐмулÑтор Ñтарых компьютеров\n\nÐвторы: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nВыпуÑкаетÑÑ Ð¿Ð¾Ð´ лицензией GNU General Public License верÑии 2 или более поздней. Дополнительную информацию Ñм. в файле LICENSE."
- IDS_2128 "OK"
- IDS_2129 "Оборудование недоÑтупно"
+ IDS_2127 "ÐмулÑтор Ñтарых компьютеров\n\nÐвторы: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nВыпуÑкаетÑÑ Ð¿Ð¾Ð´ лицензией GNU General Public License верÑии 2 или более поздней. Дополнительную информацию Ñм. в файле LICENSE."
+ IDS_2128 "OK"
+ IDS_2129 "Оборудование недоÑтупно"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "УбедитеÑÑŒ, что " LIB_NAME_PCAP " уÑтановлен и ваше Ñетевое Ñоединение, ÑовмеÑтимо Ñ " LIB_NAME_PCAP "."
- IDS_2131 "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ"
+ IDS_2130 "УбедитеÑÑŒ, что " LIB_NAME_PCAP " уÑтановлен и ваше Ñетевое Ñоединение, ÑовмеÑтимо Ñ " LIB_NAME_PCAP "."
+ IDS_2131 "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 "Ð”Ð»Ñ ÑмулÑции принтера ESC/P требуетÑÑ " LIB_NAME_FREETYPE "."
+ IDS_2132 "Ð”Ð»Ñ ÑмулÑции принтера ESC/P требуетÑÑ " LIB_NAME_FREETYPE "."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " требуетÑÑ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² PostScript в PDF.\n\nÐ’Ñе документы, отправленные на общий принтер PostScript, будут Ñохранены в виде файлов PostScript (.ps)."
+ IDS_2133 LIB_NAME_GS " требуетÑÑ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² PostScript в PDF.\n\nÐ’Ñе документы, отправленные на общий принтер PostScript, будут Ñохранены в виде файлов PostScript (.ps)."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 "Ð”Ð»Ñ FluidSynth MIDI-вывода требуетÑÑ " LIB_NAME_FLUIDSYNTH "."
- IDS_2135 "Вход в полноÑкранный режим"
- IDS_2136 "Больше не показывать Ñто Ñообщение"
- IDS_2137 "Ðе выходить"
- IDS_2138 "Перезагрузить"
- IDS_2139 "Ðе перезагружать"
- IDS_2140 "Образы магнитооптичеÑких диÑков (*.IM?;*.MDI)\0*.IM?;*.MDI\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2141 "Образы CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2142 "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑƒÑтройÑтва %hs"
+ IDS_2134 "Ð”Ð»Ñ FluidSynth MIDI-вывода требуетÑÑ " LIB_NAME_FLUIDSYNTH "."
+ IDS_2135 "Вход в полноÑкранный режим"
+ IDS_2136 "Больше не показывать Ñто Ñообщение"
+ IDS_2137 "Ðе выходить"
+ IDS_2138 "Перезагрузить"
+ IDS_2139 "Ðе перезагружать"
+ IDS_2140 "Образы магнитооптичеÑких диÑков (*.IM?;*.MDI)\0*.IM?;*.MDI\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2141 "Образы CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2142 "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑƒÑтройÑтва %hs"
IDS_2143 "Монитор в ÑпÑщем режиме"
- IDS_2144 "Шейдеры OpenGL (*.GLSL)\0*.GLSL\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2145 "Параметры OpenGL"
- IDS_2146 "Вы загружаете неподдерживаемую конфигурацию"
- IDS_2147 "Выбор типов ЦП Ð´Ð»Ñ Ñтой ÑиÑтемной платы на данной Ñмулируемой машине отключен.\n\nÐто позволÑет выбрать процеÑÑор, который в противном Ñлучае неÑовмеÑтим Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ материнÑкой платой. Однако, вы можете ÑтолкнутьÑÑ Ñ Ð½ÐµÑовмеÑтимоÑтью Ñ BIOS материнÑкой платы или другим ПО.\n\nВключение Ñтого параметра официально не поддерживаетÑÑ, и вÑе поданные отчеты об ошибках могут быть закрыты как недейÑтвительные."
- IDS_2148 "Продолжить"
- IDS_2149 "КаÑÑета: %s"
- IDS_2150 "Образы каÑÑет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2151 "Картридж %i: %ls"
- IDS_2152 "Образы картриджей (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2153 "Ошибка инициализации рендерера"
- IDS_2154 "Ðевозможно инициализировать рендерер OpenGL (3.0). ПожалуйÑта, иÑпользуйте другой рендерер."
- IDS_2155 "Возобновить выполнение"
- IDS_2156 "ПриоÑтановить выполнение"
- IDS_2157 "Ðажать Ctrl+Alt+Del"
- IDS_2158 "Ðажать Ctrl+Alt+Esc"
- IDS_2159 "Ð¥Ð¾Ð»Ð¾Ð´Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°"
- IDS_2160 "Сигнал Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ACPI"
- IDS_2161 "ÐаÑтройки машины"
+ IDS_2144 "Шейдеры OpenGL (*.GLSL)\0*.GLSL\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2145 "Параметры OpenGL"
+ IDS_2146 "Вы загружаете неподдерживаемую конфигурацию"
+ IDS_2147 "Выбор типов ЦП Ð´Ð»Ñ Ñтой ÑиÑтемной платы на данной Ñмулируемой машине отключен.\n\nÐто позволÑет выбрать процеÑÑор, который в противном Ñлучае неÑовмеÑтим Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ материнÑкой платой. Однако, вы можете ÑтолкнутьÑÑ Ñ Ð½ÐµÑовмеÑтимоÑтью Ñ BIOS материнÑкой платы или другим ПО.\n\nВключение Ñтого параметра официально не поддерживаетÑÑ, и вÑе поданные отчеты об ошибках могут быть закрыты как недейÑтвительные."
+ IDS_2148 "Продолжить"
+ IDS_2149 "КаÑÑета: %s"
+ IDS_2150 "Образы каÑÑет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2151 "Картридж %i: %ls"
+ IDS_2152 "Образы картриджей (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2153 "Ошибка инициализации рендерера"
+ IDS_2154 "Ðевозможно инициализировать рендерер OpenGL (3.0). ПожалуйÑта, иÑпользуйте другой рендерер."
+ IDS_2155 "Возобновить выполнение"
+ IDS_2156 "ПриоÑтановить выполнение"
+ IDS_2157 "Ðажать Ctrl+Alt+Del"
+ IDS_2158 "Ðажать Ctrl+Alt+Esc"
+ IDS_2159 "Ð¥Ð¾Ð»Ð¾Ð´Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°"
+ IDS_2160 "Сигнал Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ ACPI"
+ IDS_2161 "ÐаÑтройки машины"
IDS_2162 "Предыдущий диÑковод"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "ЖёÑткий диÑк (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL или ESDI диÑководов CD-ROM никогда не ÑущеÑтвовало"
- IDS_4100 "Задать вручную..."
- IDS_4101 "Задать вручную (large)..."
- IDS_4102 "Создать новый жёÑткий диÑк"
- IDS_4103 "Выбрать ÑущеÑтвующий жёÑткий диÑк"
- IDS_4104 "Размер образов диÑков HDI не может превышать 4 ГБ."
- IDS_4105 "Размер образов диÑков не может превышать 127 ГБ."
- IDS_4106 "Образы жёÑтких диÑков (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_4107 "Ðевозможно прочитать файл"
- IDS_4108 "Ðевозможно запиÑать файл"
- IDS_4109 "Образы HDI или HDX Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ Ñектора, отличным от 512, не поддерживаютÑÑ."
- IDS_4110 "USB пока не поддерживаетÑÑ"
- IDS_4111 "Файл образа диÑка уже ÑущеÑтвует"
- IDS_4112 "ПожалуйÑта, укажите правильное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°."
- IDS_4113 "Образ диÑка Ñоздан"
- IDS_4114 "УбедитеÑÑŒ, что файл ÑущеÑтвует и доÑтупен Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ."
- IDS_4115 "УбедитеÑÑŒ, что файл ÑохранÑетÑÑ Ð² директории доÑтупной Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
- IDS_4116 "Слишком большой образ диÑка"
- IDS_4117 "Ðе забудьте разметить и отформатировать вновь Ñозданный диÑк."
- IDS_4118 "Выбранный файл будет перезапиÑан. Ð’Ñ‹ уверены, что хотите иÑпользовать его?"
- IDS_4119 "Ðеподдерживаемый образ диÑка"
- IDS_4120 "ПерезапиÑать"
- IDS_4121 "Ðе перезапиÑывать"
- IDS_4122 "RAW образ (.img)"
- IDS_4123 "Образ HDI (.hdi)"
- IDS_4124 "Образ HDX (.hdx)"
- IDS_4125 "VHD фикÑированного размера (.vhd)"
- IDS_4126 "VHD динамичеÑкого размера (.vhd)"
- IDS_4127 "Дифференцированный образ VHD (.vhd)"
- IDS_4128 "Большие блоки (2 МБ)"
- IDS_4129 "Маленькие блоки (512 КБ)"
- IDS_4130 "Файлы VHD (*.VHD)\0*.VHD\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_4131 "Выберите родительÑкий VHD"
- IDS_4132 "Ðто может означать, что родительÑкий образ был изменён поÑле того, как был Ñоздан дифференцированный образ.\n\nÐто также может произойти, еÑли файлы образа были перемещены или Ñкопированы, или из-за ошибки в программе, Ñоздавшей Ñтот диÑк.\n\nÐ’Ñ‹ хотите иÑправить временные метки?"
- IDS_4133 "Временные метки родительÑкого и дочернего диÑков не Ñовпадают"
- IDS_4134 "Ðе удалоÑÑŒ иÑправить временную метку VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL или ESDI диÑководов CD-ROM никогда не ÑущеÑтвовало"
+ IDS_4100 "Задать вручную..."
+ IDS_4101 "Задать вручную (large)..."
+ IDS_4102 "Создать новый жёÑткий диÑк"
+ IDS_4103 "Выбрать ÑущеÑтвующий жёÑткий диÑк"
+ IDS_4104 "Размер образов диÑков HDI не может превышать 4 ГБ."
+ IDS_4105 "Размер образов диÑков не может превышать 127 ГБ."
+ IDS_4106 "Образы жёÑтких диÑков (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_4107 "Ðевозможно прочитать файл"
+ IDS_4108 "Ðевозможно запиÑать файл"
+ IDS_4109 "Образы HDI или HDX Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ Ñектора, отличным от 512, не поддерживаютÑÑ."
+ IDS_4110 "USB пока не поддерживаетÑÑ"
+ IDS_4111 "Файл образа диÑка уже ÑущеÑтвует"
+ IDS_4112 "ПожалуйÑта, укажите правильное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°."
+ IDS_4113 "Образ диÑка Ñоздан"
+ IDS_4114 "УбедитеÑÑŒ, что файл ÑущеÑтвует и доÑтупен Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ."
+ IDS_4115 "УбедитеÑÑŒ, что файл ÑохранÑетÑÑ Ð² директории доÑтупной Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
+ IDS_4116 "Слишком большой образ диÑка"
+ IDS_4117 "Ðе забудьте разметить и отформатировать вновь Ñозданный диÑк."
+ IDS_4118 "Выбранный файл будет перезапиÑан. Ð’Ñ‹ уверены, что хотите иÑпользовать его?"
+ IDS_4119 "Ðеподдерживаемый образ диÑка"
+ IDS_4120 "ПерезапиÑать"
+ IDS_4121 "Ðе перезапиÑывать"
+ IDS_4122 "RAW образ (.img)"
+ IDS_4123 "Образ HDI (.hdi)"
+ IDS_4124 "Образ HDX (.hdx)"
+ IDS_4125 "VHD фикÑированного размера (.vhd)"
+ IDS_4126 "VHD динамичеÑкого размера (.vhd)"
+ IDS_4127 "Дифференцированный образ VHD (.vhd)"
+ IDS_4128 "Большие блоки (2 МБ)"
+ IDS_4129 "Маленькие блоки (512 КБ)"
+ IDS_4130 "Файлы VHD (*.VHD)\0*.VHD\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_4131 "Выберите родительÑкий VHD"
+ IDS_4132 "Ðто может означать, что родительÑкий образ был изменён поÑле того, как был Ñоздан дифференцированный образ.\n\nÐто также может произойти, еÑли файлы образа были перемещены или Ñкопированы, или из-за ошибки в программе, Ñоздавшей Ñтот диÑк.\n\nÐ’Ñ‹ хотите иÑправить временные метки?"
+ IDS_4133 "Временные метки родительÑкого и дочернего диÑков не Ñовпадают"
+ IDS_4134 "Ðе удалоÑÑŒ иÑправить временную метку VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Отключён"
- IDS_5381 "ATAPI"
+ IDS_5376 "Отключён"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Отключён"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Отключён"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 кБ"
- IDS_5889 "180 кБ"
- IDS_5890 "320 кБ"
- IDS_5891 "360 кБ"
- IDS_5892 "640 кБ"
- IDS_5893 "720 кБ"
- IDS_5894 "1.2 МБ"
- IDS_5895 "1.25 МБ"
- IDS_5896 "1.44 МБ"
- IDS_5897 "DMF (клаÑтер 1024)"
- IDS_5898 "DMF (клаÑтер 2048)"
- IDS_5899 "2.88 МБ"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 МБ (ISO 10090)"
- IDS_5903 "3.5"" 230 МБ (ISO 13963)"
- IDS_5904 "3.5"" 540 МБ (ISO 15498)"
- IDS_5905 "3.5"" 640 МБ (ISO 15498)"
- IDS_5906 "3.5"" 1.3 ГБ (GigaMO)"
- IDS_5907 "3.5"" 2.3 ГБ (GigaMO 2)"
- IDS_5908 "5.25"" 600 МБ"
- IDS_5909 "5.25"" 650 МБ"
- IDS_5910 "5.25"" 1 ГБ"
- IDS_5911 "5.25"" 1.3 ГБ"
+ IDS_5888 "160 кБ"
+ IDS_5889 "180 кБ"
+ IDS_5890 "320 кБ"
+ IDS_5891 "360 кБ"
+ IDS_5892 "640 кБ"
+ IDS_5893 "720 кБ"
+ IDS_5894 "1.2 МБ"
+ IDS_5895 "1.25 МБ"
+ IDS_5896 "1.44 МБ"
+ IDS_5897 "DMF (клаÑтер 1024)"
+ IDS_5898 "DMF (клаÑтер 2048)"
+ IDS_5899 "2.88 МБ"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 МБ (ISO 10090)"
+ IDS_5903 "3.5"" 230 МБ (ISO 13963)"
+ IDS_5904 "3.5"" 540 МБ (ISO 15498)"
+ IDS_5905 "3.5"" 640 МБ (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 ГБ (GigaMO)"
+ IDS_5907 "3.5"" 2.3 ГБ (GigaMO 2)"
+ IDS_5908 "5.25"" 600 МБ"
+ IDS_5909 "5.25"" 650 МБ"
+ IDS_5910 "5.25"" 1 ГБ"
+ IDS_5911 "5.25"" 1.3 ГБ"
- IDS_6144 "Точный RPM"
- IDS_6145 "Ðа 1% медленнее точного RPM"
- IDS_6146 "Ðа 1.5% медленнее точного RPM"
- IDS_6147 "Ðа 2% медленнее точного RPM"
+ IDS_6144 "Точный RPM"
+ IDS_6145 "Ðа 1% медленнее точного RPM"
+ IDS_6146 "Ðа 1.5% медленнее точного RPM"
+ IDS_6147 "Ðа 2% медленнее точного RPM"
- IDS_7168 "(СиÑтемный)"
+ IDS_7168 "(СиÑтемный)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Russian resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/sl-SI.rc b/src/win/languages/sl-SI.rc
index f1badf570..3f632f84c 100644
--- a/src/win/languages/sl-SI.rc
+++ b/src/win/languages/sl-SI.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Dejanja"
BEGIN
- MENUITEM "&Tipkovnica potrebuje zajem", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Desni CTRL je levi ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Tipkovnica potrebuje zajem", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Desni CTRL je levi ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Ponovni zagon...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Ponovni zagon...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Premor", IDM_ACTION_PAUSE
+ MENUITEM "&Premor", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "Iz&hod...", IDM_ACTION_EXIT
+ MENUITEM "Iz&hod...", IDM_ACTION_EXIT
END
POPUP "&Pogled"
BEGIN
- MENUITEM "&Skrij statusno vrstico", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Skrij statusno vrstico", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "S&premenljiva velikost okna", IDM_VID_RESIZE
- MENUITEM "&Zapomni si velikost in položaj", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "S&premenljiva velikost okna", IDM_VID_RESIZE
+ MENUITEM "&Zapomni si velikost in položaj", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Upodabljanje"
BEGIN
- MENUITEM "&SDL (programsko)", IDM_VID_SDL_SW
- MENUITEM "SDL (s&trojno)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (Jedro 3.0)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (programsko)", IDM_VID_SDL_SW
+ MENUITEM "SDL (s&trojno)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (Jedro 3.0)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "&DoloÄi velikost...", IDM_VID_SPECIFY_DIM
- MENUITEM "&Vsili 4:3 razmerje zaslona", IDM_VID_FORCE43
+ MENUITEM "&DoloÄi velikost...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&Vsili 4:3 razmerje zaslona", IDM_VID_FORCE43
POPUP "&Faktor velikosti okna"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "&Metoda filtriranja"
BEGIN
- MENUITEM "&Najbližja", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linearna", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Najbližja", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linearna", IDM_VID_FILTER_LINEAR
END
- MENUITEM "&Raztezanje za visok DPI", IDM_VID_HIDPI
+ MENUITEM "&Raztezanje za visok DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Celozaslonski naÄin\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Celozaslonski naÄin\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "&NaÄin celozaslonskega raztezanja"
BEGIN
- MENUITEM "&Raztegni na celoten zaslon", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Raztegni na celoten zaslon", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Kvadratni piksli (ohrani razmerje)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&Celoštevilsko raztezanje", IDM_VID_FS_INT
+ MENUITEM "&Celoštevilsko raztezanje", IDM_VID_FS_INT
END
POPUP "Nastavitve E&GA/(S)VGA"
BEGIN
- MENUITEM "&Obrni barve zaslona VGA", IDM_VID_INVERT
+ MENUITEM "&Obrni barve zaslona VGA", IDM_VID_INVERT
POPUP "&Vrsta zaslona VGA"
BEGIN
- MENUITEM "&Barvni RGB", IDM_VID_GRAY_RGB
- MENUITEM "&Sivinski RGB", IDM_VID_GRAY_MONO
- MENUITEM "&Rumeni zaslon", IDM_VID_GRAY_AMBER
- MENUITEM "&Zeleni zaslon", IDM_VID_GRAY_GREEN
- MENUITEM "B&eli zaslon", IDM_VID_GRAY_WHITE
+ MENUITEM "&Barvni RGB", IDM_VID_GRAY_RGB
+ MENUITEM "&Sivinski RGB", IDM_VID_GRAY_MONO
+ MENUITEM "&Rumeni zaslon", IDM_VID_GRAY_AMBER
+ MENUITEM "&Zeleni zaslon", IDM_VID_GRAY_GREEN
+ MENUITEM "B&eli zaslon", IDM_VID_GRAY_WHITE
END
POPUP "V&rsta pretvorbe sivin"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&PovpreÄje", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&PovpreÄje", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "&Presežek slike CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "&Presežek slike CGA/PCjr/Tandy/EGA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "&Spremeni contrast za Ärno-beli zaslon", IDM_VID_CGACON
END
- MENUITEM "&Mediji", IDM_MEDIA
+ MENUITEM "&Mediji", IDM_MEDIA
POPUP "&Orodja"
BEGIN
- MENUITEM "&Nastavitve...", IDM_CONFIG
- MENUITEM "&Posodabljaj ikone statusne vrstice", IDM_UPDATE_ICONS
+ MENUITEM "&Nastavitve...", IDM_CONFIG
+ MENUITEM "&Posodabljaj ikone statusne vrstice", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "&Zajemi posnetek zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "&Zajemi posnetek zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Možnosti...", IDM_PREFERENCES
+ 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
+ MENUITEM "&OjaÄanje zvoka...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Z&aÄni sledenje\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "&KonÄaj sledenje\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Z&aÄni sledenje\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "&KonÄaj sledenje\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&PomoÄ"
BEGIN
- MENUITEM "&Dokumentacija...", IDM_DOCS
- MENUITEM "&O programu 86Box...", IDM_ABOUT
+ MENUITEM "&Dokumentacija...", IDM_DOCS
+ MENUITEM "&O programu 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ObstojeÄa slika...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&ObstojeÄa slika...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "Snemaj", IDM_CASSETTE_RECORD
- MENUITEM "Predvajaj", IDM_CASSETTE_PLAY
- MENUITEM "Previj na zaÄetek", IDM_CASSETTE_REWIND
- MENUITEM "PreskoÄi na konec", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "Snemaj", IDM_CASSETTE_RECORD
+ MENUITEM "Predvajaj", IDM_CASSETTE_PLAY
+ MENUITEM "Previj na zaÄetek", IDM_CASSETTE_REWIND
+ MENUITEM "PreskoÄi na konec", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "Izvrzi", IDM_CASSETTE_EJECT
+ MENUITEM "Izvrzi", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "Slika...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "Slika...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "Izvrzi", IDM_CARTRIDGE_EJECT
+ MENUITEM "Izvrzi", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ObstojeÄa slika...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&ObstojeÄa slika...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Izvozi v 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "&Izvozi v 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "I&zvrzi", IDM_FLOPPY_EJECT
+ MENUITEM "I&zvrzi", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Utišaj", IDM_CDROM_MUTE
+ MENUITEM "&Utišaj", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&Prazen", IDM_CDROM_EMPTY
- MENUITEM "&Naloži zadnjo sliko", IDM_CDROM_RELOAD
+ MENUITEM "&Prazen", IDM_CDROM_EMPTY
+ MENUITEM "&Naloži zadnjo sliko", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Slika...", IDM_CDROM_IMAGE
- MENUITEM "&Mapa...", IDM_CDROM_DIR
+ MENUITEM "&Slika...", IDM_CDROM_IMAGE
+ MENUITEM "&Mapa...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ObstojeÄa slika...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&ObstojeÄa slika...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "I&zvrzi", IDM_ZIP_EJECT
- MENUITEM "&Naloži zadnjo sliko", IDM_ZIP_RELOAD
+ MENUITEM "I&zvrzi", IDM_ZIP_EJECT
+ MENUITEM "&Naloži zadnjo sliko", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Nova slika...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Nova slika...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&ObstojeÄa slika...", IDM_MO_IMAGE_EXISTING
- MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&ObstojeÄa slika...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "ObstojeÄa slika (&samo za branje)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "I&zvrzi", IDM_MO_EJECT
- MENUITEM "&Naloži zadnjo sliko", IDM_MO_RELOAD
+ MENUITEM "I&zvrzi", IDM_MO_EJECT
+ MENUITEM "&Naloži zadnjo sliko", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Možnosti"
-#define STR_SND_GAIN "OjaÄanje zvoka"
-#define STR_NEW_FLOPPY "Nova slika"
-#define STR_CONFIG "Nastavitve"
-#define STR_SPECIFY_DIM "DoloÄi velikost glavnega okna"
+#define STR_PREFERENCES "Možnosti"
+#define STR_SND_GAIN "OjaÄanje zvoka"
+#define STR_NEW_FLOPPY "Nova slika"
+#define STR_CONFIG "Nastavitve"
+#define STR_SPECIFY_DIM "DoloÄi velikost glavnega okna"
-#define STR_OK "V redu"
-#define STR_CANCEL "PrekliÄi"
-#define STR_GLOBAL "Shrani te nastavitve kot globalne privzete"
-#define STR_DEFAULT "Privzeto"
-#define STR_LANGUAGE "Jezik:"
-#define STR_ICONSET "Komplet ikon:"
+#define STR_OK "V redu"
+#define STR_CANCEL "PrekliÄi"
+#define STR_GLOBAL "Shrani te nastavitve kot globalne privzete"
+#define STR_DEFAULT "Privzeto"
+#define STR_LANGUAGE "Jezik:"
+#define STR_ICONSET "Komplet ikon:"
-#define STR_GAIN "OjaÄanje"
+#define STR_GAIN "OjaÄanje"
-#define STR_FILE_NAME "Ime datoteke:"
-#define STR_DISK_SIZE "Velikost diska:"
-#define STR_RPM_MODE "NaÄin Å¡tevila obratov:"
-#define STR_PROGRESS "Napredek:"
+#define STR_FILE_NAME "Ime datoteke:"
+#define STR_DISK_SIZE "Velikost diska:"
+#define STR_RPM_MODE "NaÄin Å¡tevila obratov:"
+#define STR_PROGRESS "Napredek:"
-#define STR_WIDTH "Å irina:"
-#define STR_HEIGHT "Višina:"
-#define STR_LOCK_TO_SIZE "Zakleni na to velikost"
+#define STR_WIDTH "Å irina:"
+#define STR_HEIGHT "Višina:"
+#define STR_LOCK_TO_SIZE "Zakleni na to velikost"
-#define STR_MACHINE_TYPE "Vrsta sistema:"
-#define STR_MACHINE "Sistem:"
-#define STR_CONFIGURE "Nastavi"
-#define STR_CPU_TYPE "Vrsta procesorja:"
-#define STR_CPU_SPEED "Hitrost:"
-#define STR_FPU "Procesor plavajoÄe vejice:"
-#define STR_WAIT_STATES "ÄŒakalna stanja:"
-#define STR_MB "MB"
-#define STR_MEMORY "Spomin:"
-#define STR_TIME_SYNC "Sinhronizacija Äasa"
-#define STR_DISABLED "OnemogoÄeno"
-#define STR_ENABLED_LOCAL "OmogoÄeno (lokalni Äas)"
-#define STR_ENABLED_UTC "OmogoÄeno (UTC)"
-#define STR_DYNAREC "DinamiÄni prevajalnik"
+#define STR_MACHINE_TYPE "Vrsta sistema:"
+#define STR_MACHINE "Sistem:"
+#define STR_CONFIGURE "Nastavi"
+#define STR_CPU_TYPE "Vrsta procesorja:"
+#define STR_CPU_SPEED "Hitrost:"
+#define STR_FPU "Procesor plavajoÄe vejice:"
+#define STR_WAIT_STATES "ÄŒakalna stanja:"
+#define STR_MB "MB"
+#define STR_MEMORY "Spomin:"
+#define STR_TIME_SYNC "Sinhronizacija Äasa"
+#define STR_DISABLED "OnemogoÄeno"
+#define STR_ENABLED_LOCAL "OmogoÄeno (lokalni Äas)"
+#define STR_ENABLED_UTC "OmogoÄeno (UTC)"
+#define STR_DYNAREC "DinamiÄni prevajalnik"
-#define STR_VIDEO "Video:"
-#define STR_VIDEO_2 "Video 2:"
-#define STR_VOODOO "Voodoo grafika"
-#define STR_IBM8514 "IBM 8514/a grafika"
-#define STR_XGA "XGA grafika"
+#define STR_VIDEO "Video:"
+#define STR_VIDEO_2 "Video 2:"
+#define STR_VOODOO "Voodoo grafika"
+#define STR_IBM8514 "IBM 8514/a grafika"
+#define STR_XGA "XGA grafika"
-#define STR_MOUSE "Miška:"
-#define STR_JOYSTICK "Igralna palica:"
-#define STR_JOY1 "Igralna palica 1..."
-#define STR_JOY2 "Igralna palica 2..."
-#define STR_JOY3 "Igralna palica 3..."
-#define STR_JOY4 "Igralna palica 4..."
+#define STR_MOUSE "Miška:"
+#define STR_JOYSTICK "Igralna palica:"
+#define STR_JOY1 "Igralna palica 1..."
+#define STR_JOY2 "Igralna palica 2..."
+#define STR_JOY3 "Igralna palica 3..."
+#define STR_JOY4 "Igralna palica 4..."
-#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_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_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_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_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_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:"
-#define STR_COM3 "Naprava COM3:"
-#define STR_COM4 "Naprava COM4:"
-#define STR_LPT1 "Naprava LPT1:"
-#define STR_LPT2 "Naprava LPT2:"
-#define STR_LPT3 "Naprava LPT3:"
-#define STR_LPT4 "Naprava LPT4:"
-#define STR_SERIAL1 "Serijska vrata 1"
-#define STR_SERIAL2 "Serijska vrata 2"
-#define STR_SERIAL3 "Serijska vrata 3"
-#define STR_SERIAL4 "Serijska vrata 4"
-#define STR_PARALLEL1 "Paralelna vrata 1"
-#define STR_PARALLEL2 "Paralelna vrata 2"
-#define STR_PARALLEL3 "Paralelna vrata 3"
-#define STR_PARALLEL4 "Paralelna vrata 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "Naprava COM1:"
+#define STR_COM2 "Naprava COM2:"
+#define STR_COM3 "Naprava COM3:"
+#define STR_COM4 "Naprava COM4:"
+#define STR_LPT1 "Naprava LPT1:"
+#define STR_LPT2 "Naprava LPT2:"
+#define STR_LPT3 "Naprava LPT3:"
+#define STR_LPT4 "Naprava LPT4:"
+#define STR_SERIAL1 "Serijska vrata 1"
+#define STR_SERIAL2 "Serijska vrata 2"
+#define STR_SERIAL3 "Serijska vrata 3"
+#define STR_SERIAL4 "Serijska vrata 4"
+#define STR_PARALLEL1 "Paralelna vrata 1"
+#define STR_PARALLEL2 "Paralelna vrata 2"
+#define STR_PARALLEL3 "Paralelna vrata 3"
+#define STR_PARALLEL4 "Paralelna vrata 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Krmilnik trdega diska:"
-#define STR_FDC "Krmilnik disketnika:"
-#define STR_IDE_TER "Terciarni krmilnik IDE"
-#define STR_IDE_QUA "Kvartarni krmilnik IDE"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Krmilnik 1:"
-#define STR_SCSI_2 "Krmilnik 2:"
-#define STR_SCSI_3 "Krmilnik 3:"
-#define STR_SCSI_4 "Krmilnik 4:"
-#define STR_CASSETTE "Kasetnik"
+#define STR_HDC "Krmilnik trdega diska:"
+#define STR_FDC "Krmilnik disketnika:"
+#define STR_IDE_TER "Terciarni krmilnik IDE"
+#define STR_IDE_QUA "Kvartarni krmilnik IDE"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Krmilnik 1:"
+#define STR_SCSI_2 "Krmilnik 2:"
+#define STR_SCSI_3 "Krmilnik 3:"
+#define STR_SCSI_4 "Krmilnik 4:"
+#define STR_CASSETTE "Kasetnik"
-#define STR_HDD "Trdi diski:"
-#define STR_NEW "Nov..."
-#define STR_EXISTING "ObstojeÄ..."
-#define STR_REMOVE "Odstrani"
-#define STR_BUS "Vodilo:"
-#define STR_CHANNEL "Kanal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Trdi diski:"
+#define STR_NEW "Nov..."
+#define STR_EXISTING "ObstojeÄ..."
+#define STR_REMOVE "Odstrani"
+#define STR_BUS "Vodilo:"
+#define STR_CHANNEL "Kanal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "DoloÄi..."
-#define STR_SECTORS "Sektorji:"
-#define STR_HEADS "Glave:"
-#define STR_CYLS "Cilindri:"
-#define STR_SIZE_MB "Velikost (MB):"
-#define STR_TYPE "Vrsta:"
-#define STR_IMG_FORMAT "Format slike:"
-#define STR_BLOCK_SIZE "Velikost bloka:"
+#define STR_SPECIFY "DoloÄi..."
+#define STR_SECTORS "Sektorji:"
+#define STR_HEADS "Glave:"
+#define STR_CYLS "Cilindri:"
+#define STR_SIZE_MB "Velikost (MB):"
+#define STR_TYPE "Vrsta:"
+#define STR_IMG_FORMAT "Format slike:"
+#define STR_BLOCK_SIZE "Velikost bloka:"
-#define STR_FLOPPY_DRIVES "Disketni pogoni:"
-#define STR_TURBO "Turbo Äasovniki"
-#define STR_CHECKBPB "Preverjaj BPB"
-#define STR_CDROM_DRIVES "Pogoni CD-ROM:"
-#define STR_CD_SPEED "Hitrost:"
-#define STR_EARLY "Zgodnejši pogon"
+#define STR_FLOPPY_DRIVES "Disketni pogoni:"
+#define STR_TURBO "Turbo Äasovniki"
+#define STR_CHECKBPB "Preverjaj BPB"
+#define STR_CDROM_DRIVES "Pogoni CD-ROM:"
+#define STR_CD_SPEED "Hitrost:"
+#define STR_EARLY "Zgodnejši pogon"
-#define STR_MO_DRIVES "Magnetno-optiÄni pogoni:"
-#define STR_ZIP_DRIVES "Pogoni ZIP:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Magnetno-optiÄni pogoni:"
+#define STR_ZIP_DRIVES "Pogoni ZIP:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "Ura v realnem Äasu ISA:"
-#define STR_ISAMEM "Razširitev spomina ISA"
-#define STR_ISAMEM_1 "Kartica 1:"
-#define STR_ISAMEM_2 "Kartica 2:"
-#define STR_ISAMEM_3 "Kartica 3:"
-#define STR_ISAMEM_4 "Kartica 4:"
-#define STR_BUGGER "Naprava ISABugger"
-#define STR_POSTCARD "Kartica POST"
+#define STR_ISARTC "Ura v realnem Äasu ISA:"
+#define STR_ISAMEM "Razširitev spomina ISA"
+#define STR_ISAMEM_1 "Kartica 1:"
+#define STR_ISAMEM_2 "Kartica 2:"
+#define STR_ISAMEM_3 "Kartica 3:"
+#define STR_ISAMEM_4 "Kartica 4:"
+#define STR_BUGGER "Naprava ISABugger"
+#define STR_POSTCARD "Kartica POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Napaka"
- IDS_2050 "KritiÄna napaka"
- IDS_2051 " - PAUSED"
- IDS_2052 "Pritisnite Ctrl+Alt+PgDn za povratek iz celozaslonskega naÄina."
- IDS_2053 "Hitrost"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box ni našel nobenih uporabnih ROM slik.\n\nProsim prenesite set ROM-ov in ga razširite v mapo ""roms""."
- IDS_2057 "(prazno)"
- IDS_2058 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Vse datoteke (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "VkljuÄeno"
- IDS_2061 "IzkljuÄeno"
- IDS_2062 "Vse slike (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Osnovne sektorske slike (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Površinske slike (*.86F)\0*.86F\0"
- IDS_2063 "Sistem ""%hs"" ni na voljo zaradi manjkajoÄih ROM-ov v mapi roms/machines. Preklapljam na drug sistem, ki je na voljo."
+ 2048 "86Box"
+ IDS_2049 "Napaka"
+ IDS_2050 "KritiÄna napaka"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Pritisnite Ctrl+Alt+PgDn za povratek iz celozaslonskega naÄina."
+ IDS_2053 "Hitrost"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box ni našel nobenih uporabnih ROM slik.\n\nProsim prenesite set ROM-ov in ga razširite v mapo ""roms""."
+ IDS_2057 "(prazno)"
+ IDS_2058 "ZIP slike (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "VkljuÄeno"
+ IDS_2061 "IzkljuÄeno"
+ IDS_2062 "Vse slike (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Osnovne sektorske slike (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Površinske slike (*.86F)\0*.86F\0"
+ IDS_2063 "Sistem ""%hs"" ni na voljo zaradi manjkajoÄih ROM-ov v mapi roms/machines. Preklapljam na drug sistem, ki je na voljo."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "GrafiÄna kartica ""%hs"" ni na voljo zaradi manjkajoÄih ROM-ov v mapi roms/video. Preklapljam na drugo grafiÄno kartico, ki je na voljo.."
- IDS_2065 "Sistem"
- IDS_2066 "Zaslon"
- IDS_2067 "Vhodne naprave"
- IDS_2068 "Zvok"
- IDS_2069 "Omrežje"
- IDS_2070 "Vrata (COM & LPT)"
- IDS_2071 "Krmilniki shrambe"
- IDS_2072 "Trdi diski"
- IDS_2073 "Disketni in CD-ROM pogoni"
- IDS_2074 "Druge odstranljive naprave"
- IDS_2075 "Druga periferija"
- IDS_2076 "Površinske slike (*.86F)\0*.86F\0"
- IDS_2077 "Kliknite za zajem miške"
- IDS_2078 "Pritisnite F8+F12 za izpust miške"
- IDS_2079 "Pritisnite F8+F12 ali srednji gumb za izpust miške"
+ IDS_2064 "GrafiÄna kartica ""%hs"" ni na voljo zaradi manjkajoÄih ROM-ov v mapi roms/video. Preklapljam na drugo grafiÄno kartico, ki je na voljo.."
+ IDS_2065 "Sistem"
+ IDS_2066 "Zaslon"
+ IDS_2067 "Vhodne naprave"
+ IDS_2068 "Zvok"
+ IDS_2069 "Omrežje"
+ IDS_2070 "Vrata (COM & LPT)"
+ IDS_2071 "Krmilniki shrambe"
+ IDS_2072 "Trdi diski"
+ IDS_2073 "Disketni in CD-ROM pogoni"
+ IDS_2074 "Druge odstranljive naprave"
+ IDS_2075 "Druga periferija"
+ IDS_2076 "Površinske slike (*.86F)\0*.86F\0"
+ IDS_2077 "Kliknite za zajem miške"
+ IDS_2078 "Pritisnite F8+F12 za izpust miške"
+ IDS_2079 "Pritisnite F8+F12 ali srednji gumb za izpust miške"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Ne morem inicializirati FluidSynth"
- IDS_2081 "Vodilo"
- IDS_2082 "Datoteka"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "Ne morem inicializirati FluidSynth"
+ IDS_2081 "Vodilo"
+ IDS_2082 "Datoteka"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "Preveri BPB"
- IDS_2089 "KB"
- IDS_2090 "Ne morem inicializirati pogona upodabljanja."
- IDS_2091 "Privzeto"
- IDS_2092 "%i stanj Äakanja"
- IDS_2093 "Vrsta"
- IDS_2094 "Nastavitev PCap ni uspela"
- IDS_2095 "Nobena naprava PCap ni bila najdena"
- IDS_2096 "Neveljavna naprava PCap"
- IDS_2097 "Standardna krmilna palica z 2 gumboma"
- IDS_2098 "Standardna krmilna palica s 4 gumbi"
- IDS_2099 "Standardna krmilna palica s 6 gumbi"
- IDS_2100 "Standardna krmilna palica z 8 gumbi"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "Brez"
- IDS_2105 "Ne morem naložiti pospeševalnikov tipkovnice."
- IDS_2106 "Ne morem registrirati neobdelanega vnosa."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Disketa %i (%s): %ls"
- IDS_2110 "Vse slike (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Napredne sektorske slike (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Osnovne sektorske slike (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Tokovne slike (*.FDI)\0*.FDI\0Površinske slike (*.86F;*.MFM)\0*.86F;*.MFM\0Vse datoteke (*.*)\0*.*\0"
- IDS_2111 "Ne morem inicializirati FreeType"
- IDS_2112 "Ne morem inicializirati SDL, potrebna je knjižica SDL2.dll"
- IDS_2113 "Ste prepriÄani, da želite ponovno zagnati emulirani sistem?"
- IDS_2114 "Ste prepriÄani, da želite zapreti 86Box?"
- IDS_2115 "Ne morem inicializirati Ghostscript"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "Slike MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Vse datoteke (*.*)\0*.*\0"
- IDS_2118 "Dobrodošli v 86Box!"
- IDS_2119 "Notranji krmilnik"
- IDS_2120 "Izhod"
- IDS_2121 "Nobeni ROM-i niso bili najdeni"
- IDS_2122 "Želite shraniti nastavitve?"
- IDS_2123 "To bo ponovno zagnalo emuliran sistem."
- IDS_2124 "Shrani"
- IDS_2125 "O programu 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "Preveri BPB"
+ IDS_2089 "KB"
+ IDS_2090 "Ne morem inicializirati pogona upodabljanja."
+ IDS_2091 "Privzeto"
+ IDS_2092 "%i stanj Äakanja"
+ IDS_2093 "Vrsta"
+ IDS_2094 "Nastavitev PCap ni uspela"
+ IDS_2095 "Nobena naprava PCap ni bila najdena"
+ IDS_2096 "Neveljavna naprava PCap"
+ IDS_2097 "Standardna krmilna palica z 2 gumboma"
+ IDS_2098 "Standardna krmilna palica s 4 gumbi"
+ IDS_2099 "Standardna krmilna palica s 6 gumbi"
+ IDS_2100 "Standardna krmilna palica z 8 gumbi"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "Brez"
+ IDS_2105 "Ne morem naložiti pospeševalnikov tipkovnice."
+ IDS_2106 "Ne morem registrirati neobdelanega vnosa."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Disketa %i (%s): %ls"
+ IDS_2110 "Vse slike (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Napredne sektorske slike (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Osnovne sektorske slike (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Tokovne slike (*.FDI)\0*.FDI\0Površinske slike (*.86F;*.MFM)\0*.86F;*.MFM\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2111 "Ne morem inicializirati FreeType"
+ IDS_2112 "Ne morem inicializirati SDL, potrebna je knjižica SDL2.dll"
+ IDS_2113 "Ste prepriÄani, da želite ponovno zagnati emulirani sistem?"
+ IDS_2114 "Ste prepriÄani, da želite zapreti 86Box?"
+ IDS_2115 "Ne morem inicializirati Ghostscript"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "Slike MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2118 "Dobrodošli v 86Box!"
+ IDS_2119 "Notranji krmilnik"
+ IDS_2120 "Izhod"
+ IDS_2121 "Nobeni ROM-i niso bili najdeni"
+ IDS_2122 "Želite shraniti nastavitve?"
+ IDS_2123 "To bo ponovno zagnalo emuliran sistem."
+ IDS_2124 "Shrani"
+ IDS_2125 "O programu 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Emulator starih raÄunalnikov\n\nAvtorji: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho in drugi.\n\nIzdano pod licenco GNU General Public License razliÄica 2 ali novejÅ¡a. Glej datoteko LICENSE za veÄ informacij."
- IDS_2128 "V redu"
- IDS_2129 "Strojna oprema ni na voljo"
+ IDS_2127 "Emulator starih raÄunalnikov\n\nAvtorji: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho in drugi.\n\nIzdano pod licenco GNU General Public License razliÄica 2 ali novejÅ¡a. Glej datoteko LICENSE za veÄ informacij."
+ IDS_2128 "V redu"
+ IDS_2129 "Strojna oprema ni na voljo"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "PrepiÄajte se, da je nameÅ¡Äen " LIB_NAME_PCAP " in da ste na omrežni povezavi, združljivi z " LIB_NAME_PCAP
- IDS_2131 "Neveljavna konfiguracija"
+ IDS_2130 "PrepiÄajte se, da je nameÅ¡Äen " LIB_NAME_PCAP " in da ste na omrežni povezavi, združljivi z " LIB_NAME_PCAP
+ IDS_2131 "Neveljavna konfiguracija"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " je potreben za emuliranje ESC/P tiskalnika."
+ IDS_2132 LIB_NAME_FREETYPE " je potreben za emuliranje ESC/P tiskalnika."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " je potreben za samodejno pretvorbo PostScript datotek v PDF.\n\nVsi dokumenti, poslani generiÄnemu PostScript tiskalniku bodo shranjeni kot PostScript (.ps) datoteke."
+ IDS_2133 LIB_NAME_GS " je potreben za samodejno pretvorbo PostScript datotek v PDF.\n\nVsi dokumenti, poslani generiÄnemu PostScript tiskalniku bodo shranjeni kot PostScript (.ps) datoteke."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " je potreben za FluidSynth MIDI izhod."
- IDS_2135 "Preklapljam v celozaslonski naÄin"
- IDS_2136 "Ne pokaži veÄ tega sporoÄila"
- IDS_2137 "PrekliÄi izhod"
- IDS_2138 "Resetiraj"
- IDS_2139 "Ne resetiraj"
- IDS_2140 "Slike MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Vse datoteke (*.*)\0*.*\0"
- IDS_2141 "Slike CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Vse datoteke (*.*)\0*.*\0"
- IDS_2142 "Konfiguracija naprave %hs"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " je potreben za FluidSynth MIDI izhod."
+ IDS_2135 "Preklapljam v celozaslonski naÄin"
+ IDS_2136 "Ne pokaži veÄ tega sporoÄila"
+ IDS_2137 "PrekliÄi izhod"
+ IDS_2138 "Resetiraj"
+ IDS_2139 "Ne resetiraj"
+ IDS_2140 "Slike MO (*.IM?;*.MDI)\0*.IM?;*.MDI\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2141 "Slike CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2142 "Konfiguracija naprave %hs"
IDS_2143 "Zaslon v naÄinu spanja"
- IDS_2144 "SenÄilniki OpenGL (*.GLSL)\0*.GLSL\0Vse datoteke (*.*)\0*.*\0"
- IDS_2145 "Možnosti OpenGL"
- IDS_2146 "Nalagate nepodprto konfiguracijo"
- IDS_2147 "Filtriranje vrste procesorja glede na izbran sistem je onemogoÄeno za ta emuliran sistem.\n\nTako lahko izberete procesor, ki je sicer nezdružljiv z izbranim sistemom. Vendar lahko naletite na nezdružljivosti z BIOS-om sistema ali drugo programsko opremo\n\nOmogoÄanje te nastavitve ni uradno podprto, vsa poroÄila o hroÅ¡Äih iz tega naslova pa bodo zaprta kot neveljavna."
- IDS_2148 "Nadaljuj"
- IDS_2149 "Kaseta: %s"
- IDS_2150 "Slike kaset (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Vse datoteke (*.*)\0*.*\0"
- IDS_2151 "Spominski vložek %i: %ls"
- IDS_2152 "Slike spominskega vložka (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Vse datoteke (*.*)\0*.*\0"
- IDS_2153 "Napaka pri zagonu sistema za upodabljanje"
- IDS_2154 "Sistema za upodabljanje OpenGL (3.0 Core) ni bilo mogoÄe zagnati. Uporabite drug sistem za upodabljanje."
- IDS_2155 "Nadaljuj izvajanje"
- IDS_2156 "Prekini izvajanje"
- IDS_2157 "Press Ctrl+Alt+Del"
- IDS_2158 "Press Ctrl+Alt+Esc"
- IDS_2159 "Ponovni zagon"
- IDS_2160 "Zaustavitev ACPI"
- IDS_2161 "Nastavitve"
+ IDS_2144 "SenÄilniki OpenGL (*.GLSL)\0*.GLSL\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2145 "Možnosti OpenGL"
+ IDS_2146 "Nalagate nepodprto konfiguracijo"
+ IDS_2147 "Filtriranje vrste procesorja glede na izbran sistem je onemogoÄeno za ta emuliran sistem.\n\nTako lahko izberete procesor, ki je sicer nezdružljiv z izbranim sistemom. Vendar lahko naletite na nezdružljivosti z BIOS-om sistema ali drugo programsko opremo\n\nOmogoÄanje te nastavitve ni uradno podprto, vsa poroÄila o hroÅ¡Äih iz tega naslova pa bodo zaprta kot neveljavna."
+ IDS_2148 "Nadaljuj"
+ IDS_2149 "Kaseta: %s"
+ IDS_2150 "Slike kaset (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2151 "Spominski vložek %i: %ls"
+ IDS_2152 "Slike spominskega vložka (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Vse datoteke (*.*)\0*.*\0"
+ IDS_2153 "Napaka pri zagonu sistema za upodabljanje"
+ IDS_2154 "Sistema za upodabljanje OpenGL (3.0 Core) ni bilo mogoÄe zagnati. Uporabite drug sistem za upodabljanje."
+ IDS_2155 "Nadaljuj izvajanje"
+ IDS_2156 "Prekini izvajanje"
+ IDS_2157 "Press Ctrl+Alt+Del"
+ IDS_2158 "Press Ctrl+Alt+Esc"
+ IDS_2159 "Ponovni zagon"
+ IDS_2160 "Zaustavitev ACPI"
+ IDS_2161 "Nastavitve"
IDS_2162 "Zgodnejši pogon"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Trdi disk (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL ali ESDI pogoni CD-ROM niso nikoli obstajali"
- IDS_4100 "Po meri..."
- IDS_4101 "Po meri (velik)..."
- IDS_4102 "Dodaj nov trdi disk"
- IDS_4103 "Dodaj obstojeÄ trdi disk"
- IDS_4104 "Slike diska HDI ne morejo biti veÄje od 4 GB."
- IDS_4105 "Slike diska ne morejo biti veÄje od 127 GB."
- IDS_4106 "Slike trdega diska (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Vse datoteke (*.*)\0*.*\0"
- IDS_4107 "Ne morem prebrati datoteke"
- IDS_4108 "Ne morem pisati v datoteko"
- IDS_4109 "Slike HDI ali HDX, ki nimajo sektorjev velikosti 512 bajtov, niso podprte."
- IDS_4110 "USB še ni podprt"
- IDS_4111 "Datoteka s sliko diska že obstaja"
- IDS_4112 "Prosim, navedite veljavno ime datoteke."
- IDS_4113 "Slika diska ustvarjena"
- IDS_4114 "PrepriÄajte se, da datoteka obstaja in je berljiva."
- IDS_4115 "PrepriÄajte se, da datoteko shranjujete v zapisljivo mapo."
- IDS_4116 "Slika diska je prevelika"
- IDS_4117 "Ne pozabite na novem disku ustvariti particij in jih formatirati."
- IDS_4118 "Izbrana datoteka bo prepisana. Ali jo res želite uporabiti?"
- IDS_4119 "Nepodprta slika diska"
- IDS_4120 "Prepiši"
- IDS_4121 "Ne prepiši"
- IDS_4122 "Surova slika (.img)"
- IDS_4123 "Slika HDI (.hdi)"
- IDS_4124 "Slika HDX (.hdx)"
- IDS_4125 "VHD fiksne velikosti (.vhd)"
- IDS_4126 "DinamiÄen VHD (.vhd)"
- IDS_4127 "Diferencialni VHD (.vhd)"
- IDS_4128 "Veliki bloki (2 MB)"
- IDS_4129 "Mali bloki (512 KB)"
- IDS_4130 "Datoteke VHD (*.VHD)\0*.VHD\0Vse datoteke (*.*)\0*.*\0"
- IDS_4131 "Izberite starševsko sliko VHD"
- IDS_4132 "To lahko pomeni, da je bila starÅ¡evska slika spremenjena potem, ko je že bila ustvarjena diferencialna slika.\n\nDo tega lahko pride tudi kadar so datoteke slik diska premaknjene ali kopirane, ali pa gre za hroÅ¡Äa v programu, ki je ustvaril ta disk.\n\nŽelite popraviti Äasovni žig?"
- IDS_4133 "Časovna žiga starševske slike diska in slike diska otroka se ne ujemata"
- IDS_4134 "Ne morem popraviti Äasovnega žiga slike VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL ali ESDI pogoni CD-ROM niso nikoli obstajali"
+ IDS_4100 "Po meri..."
+ IDS_4101 "Po meri (velik)..."
+ IDS_4102 "Dodaj nov trdi disk"
+ IDS_4103 "Dodaj obstojeÄ trdi disk"
+ IDS_4104 "Slike diska HDI ne morejo biti veÄje od 4 GB."
+ IDS_4105 "Slike diska ne morejo biti veÄje od 127 GB."
+ IDS_4106 "Slike trdega diska (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Vse datoteke (*.*)\0*.*\0"
+ IDS_4107 "Ne morem prebrati datoteke"
+ IDS_4108 "Ne morem pisati v datoteko"
+ IDS_4109 "Slike HDI ali HDX, ki nimajo sektorjev velikosti 512 bajtov, niso podprte."
+ IDS_4110 "USB še ni podprt"
+ IDS_4111 "Datoteka s sliko diska že obstaja"
+ IDS_4112 "Prosim, navedite veljavno ime datoteke."
+ IDS_4113 "Slika diska ustvarjena"
+ IDS_4114 "PrepriÄajte se, da datoteka obstaja in je berljiva."
+ IDS_4115 "PrepriÄajte se, da datoteko shranjujete v zapisljivo mapo."
+ IDS_4116 "Slika diska je prevelika"
+ IDS_4117 "Ne pozabite na novem disku ustvariti particij in jih formatirati."
+ IDS_4118 "Izbrana datoteka bo prepisana. Ali jo res želite uporabiti?"
+ IDS_4119 "Nepodprta slika diska"
+ IDS_4120 "Prepiši"
+ IDS_4121 "Ne prepiši"
+ IDS_4122 "Surova slika (.img)"
+ IDS_4123 "Slika HDI (.hdi)"
+ IDS_4124 "Slika HDX (.hdx)"
+ IDS_4125 "VHD fiksne velikosti (.vhd)"
+ IDS_4126 "DinamiÄen VHD (.vhd)"
+ IDS_4127 "Diferencialni VHD (.vhd)"
+ IDS_4128 "Veliki bloki (2 MB)"
+ IDS_4129 "Mali bloki (512 KB)"
+ IDS_4130 "Datoteke VHD (*.VHD)\0*.VHD\0Vse datoteke (*.*)\0*.*\0"
+ IDS_4131 "Izberite starševsko sliko VHD"
+ IDS_4132 "To lahko pomeni, da je bila starÅ¡evska slika spremenjena potem, ko je že bila ustvarjena diferencialna slika.\n\nDo tega lahko pride tudi kadar so datoteke slik diska premaknjene ali kopirane, ali pa gre za hroÅ¡Äa v programu, ki je ustvaril ta disk.\n\nŽelite popraviti Äasovni žig?"
+ IDS_4133 "Časovna žiga starševske slike diska in slike diska otroka se ne ujemata"
+ IDS_4134 "Ne morem popraviti Äasovnega žiga slike VHD."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "OnemogoÄeno"
- IDS_5381 "ATAPI"
+ IDS_5376 "OnemogoÄeno"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "OnemogoÄeno"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "OnemogoÄeno"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (grozd 1024)"
- IDS_5898 "DMF (grozd 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (grozd 1024)"
+ IDS_5898 "DMF (grozd 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "Popolni obrati na minuto"
- IDS_6145 "1% pod popolnimi obrati"
- IDS_6146 "1.5% pod popolnimi obrati"
- IDS_6147 "2% pod popolnimi obrati"
+ IDS_6144 "Popolni obrati na minuto"
+ IDS_6145 "1% pod popolnimi obrati"
+ IDS_6146 "1.5% pod popolnimi obrati"
+ IDS_6147 "2% pod popolnimi obrati"
- IDS_7168 "(Sistemsko privzeto)"
+ IDS_7168 "(Sistemsko privzeto)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Slovenian resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/tr-TR.rc b/src/win/languages/tr-TR.rc
index a168d2f30..38f9bd16d 100644
--- a/src/win/languages/tr-TR.rc
+++ b/src/win/languages/tr-TR.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Komutlar"
BEGIN
- MENUITEM "&Klavye sadece fare yakalandığında çalışsın", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&SaÄŸ CTRL tuÅŸunu sol ALT tuÅŸu olarak ayarla", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Klavye sadece fare yakalandığında çalışsın", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&SaÄŸ CTRL tuÅŸunu sol ALT tuÅŸu olarak ayarla", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Makineyi yeniden baÅŸlat...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Makineyi yeniden baÅŸlat...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Duraklat", IDM_ACTION_PAUSE
+ MENUITEM "&Duraklat", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "Emülatörden &çık...", IDM_ACTION_EXIT
+ MENUITEM "Emülatörden &çık...", IDM_ACTION_EXIT
END
POPUP "&Görüntüleme"
BEGIN
- MENUITEM "&Durum çubuğunu gizle", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Durum çubuğunu gizle", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "Hide &toolbar", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Yeniden boyutlandırılabilir pencere", IDM_VID_RESIZE
- MENUITEM "&Pencere boyut ve pozisyonunu hatırla", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Yeniden boyutlandırılabilir pencere", IDM_VID_RESIZE
+ MENUITEM "&Pencere boyut ve pozisyonunu hatırla", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&İşleyici"
BEGIN
- MENUITEM "&SDL (Yazılım)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Donanım)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Yazılım)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Donanım)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "Pencere &boyutunu belirle...", IDM_VID_SPECIFY_DIM
- MENUITEM "&4:3 görüntüleme oranına zorla", IDM_VID_FORCE43
+ MENUITEM "Pencere &boyutunu belirle...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&4:3 görüntüleme oranına zorla", IDM_VID_FORCE43
POPUP "Pencere &ölçek çarpanı"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "&Filtre metodu"
BEGIN
- MENUITEM "&Nearest (En yakın)", IDM_VID_FILTER_NEAREST
- MENUITEM "&Linear (DoÄŸrusal)", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Nearest (En yakın)", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Linear (DoÄŸrusal)", IDM_VID_FILTER_LINEAR
END
- MENUITEM "Hi&DPI ölçeklemesi", IDM_VID_HIDPI
+ MENUITEM "Hi&DPI ölçeklemesi", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Tam ekran\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Tam ekran\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "Tam ekran &germe modu"
BEGIN
- MENUITEM "&Tam ekrana ger", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Tam ekrana ger", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Kare piksel (ölçeği koru)", IDM_VID_FS_KEEPRATIO
- MENUITEM "Tam &sayı ölçeklemesi", IDM_VID_FS_INT
+ MENUITEM "Tam &sayı ölçeklemesi", IDM_VID_FS_INT
END
POPUP "EGA/&(S)VGA ayarları"
BEGIN
- MENUITEM "Ters &renk VGA monitör", IDM_VID_INVERT
+ MENUITEM "Ters &renk VGA monitör", IDM_VID_INVERT
POPUP "VGA ekran &tipi"
BEGIN
- MENUITEM "RGB (&renkli)", IDM_VID_GRAY_RGB
- MENUITEM "RGB (&gri tonlama)", IDM_VID_GRAY_MONO
- MENUITEM "&Kehribar rengi monitör", IDM_VID_GRAY_AMBER
- MENUITEM "&Yeşil renk monitör", IDM_VID_GRAY_GREEN
- MENUITEM "&Beyaz renk monitör", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB (&renkli)", IDM_VID_GRAY_RGB
+ MENUITEM "RGB (&gri tonlama)", IDM_VID_GRAY_MONO
+ MENUITEM "&Kehribar rengi monitör", IDM_VID_GRAY_AMBER
+ MENUITEM "&Yeşil renk monitör", IDM_VID_GRAY_GREEN
+ MENUITEM "&Beyaz renk monitör", IDM_VID_GRAY_WHITE
END
POPUP "&Gri tonlama dönüştürme tipi"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&Ortalama", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&Ortalama", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA aşırı taraması", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/E&GA/(S)VGA aşırı taraması", IDM_VID_OVERSCAN
MENUITEM "Gri to&nlamalı görüntü için kontrastı değiştir", IDM_VID_CGACON
END
- MENUITEM "&Medya", IDM_MEDIA
+ MENUITEM "&Medya", IDM_MEDIA
POPUP "&Araçlar"
BEGIN
- MENUITEM "&Ayarlar...", IDM_CONFIG
- MENUITEM "Durum &çubuğu ikonlarını güncelle", IDM_UPDATE_ICONS
+ MENUITEM "&Ayarlar...", IDM_CONFIG
+ MENUITEM "Durum &çubuğu ikonlarını güncelle", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "&Ekran görüntüsü al\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "&Ekran görüntüsü al\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Tercihler...", IDM_PREFERENCES
+ MENUITEM "&Tercihler...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "&Discord entegrasyonunu etkinleÅŸtir", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&Ses yükseltici...", IDM_SND_GAIN
+ MENUITEM "&Ses yükseltici...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Begin trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "End trace\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Begin trace\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "End trace\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Yardım"
BEGIN
- MENUITEM "&Dökümanlar...", IDM_DOCS
- MENUITEM "&86Box Hakkında...", IDM_ABOUT
+ MENUITEM "&Dökümanlar...", IDM_DOCS
+ MENUITEM "&86Box Hakkında...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Yeni imaj oluÅŸtur...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Yeni imaj oluÅŸtur...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&İmaj seç...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&İmaj seç...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Kaydet", IDM_CASSETTE_RECORD
- MENUITEM "&Oynat", IDM_CASSETTE_PLAY
- MENUITEM "&Başlangıca geri sar", IDM_CASSETTE_REWIND
- MENUITEM "Sona doÄŸru &ileri sar", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&Kaydet", IDM_CASSETTE_RECORD
+ MENUITEM "&Oynat", IDM_CASSETTE_PLAY
+ MENUITEM "&Başlangıca geri sar", IDM_CASSETTE_REWIND
+ MENUITEM "Sona doÄŸru &ileri sar", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "&Çıkar", IDM_CASSETTE_EJECT
+ MENUITEM "&Çıkar", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&İmaj...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&İmaj...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "&Çıkar", IDM_CARTRIDGE_EJECT
+ MENUITEM "&Çıkar", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Yeni imaj oluÅŸtur...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Yeni imaj oluÅŸtur...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&İmaj seç...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&İmaj seç...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&86F dosyası olarak aktar...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "&86F dosyası olarak aktar...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Çıkar", IDM_FLOPPY_EJECT
+ MENUITEM "&Çıkar", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Sesi kapat", IDM_CDROM_MUTE
+ MENUITEM "&Sesi kapat", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "İmajı &çıkar", IDM_CDROM_EMPTY
- MENUITEM "&Önceki imajı seç", IDM_CDROM_RELOAD
+ MENUITEM "İmajı &çıkar", IDM_CDROM_EMPTY
+ MENUITEM "&Önceki imajı seç", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&İmaj seç...", IDM_CDROM_IMAGE
- MENUITEM "&Klasör...", IDM_CDROM_DIR
+ MENUITEM "&İmaj seç...", IDM_CDROM_IMAGE
+ MENUITEM "&Klasör...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Yeni imaj...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Yeni imaj...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&İmaj seç...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&İmaj seç...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Çıkar", IDM_ZIP_EJECT
- MENUITEM "&Önceki imajı seç", IDM_ZIP_RELOAD
+ MENUITEM "&Çıkar", IDM_ZIP_EJECT
+ MENUITEM "&Önceki imajı seç", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Yeni imaj...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Yeni imaj...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&İmaj seç...", IDM_MO_IMAGE_EXISTING
- MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&İmaj seç...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "İmaj &seç (Yazma-korumalı)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Çıkar", IDM_MO_EJECT
- MENUITEM "&Önceki imajı seç", IDM_MO_RELOAD
+ MENUITEM "&Çıkar", IDM_MO_EJECT
+ MENUITEM "&Önceki imajı seç", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Tercihler"
-#define STR_SND_GAIN "Ses Artırma"
-#define STR_NEW_FLOPPY "Yeni İmaj"
-#define STR_CONFIG "Ayarlar"
-#define STR_SPECIFY_DIM "Ana Pencere Boyutunu Belirle"
+#define STR_PREFERENCES "Tercihler"
+#define STR_SND_GAIN "Ses Artırma"
+#define STR_NEW_FLOPPY "Yeni İmaj"
+#define STR_CONFIG "Ayarlar"
+#define STR_SPECIFY_DIM "Ana Pencere Boyutunu Belirle"
-#define STR_OK "Tamam"
-#define STR_CANCEL "İptal et"
-#define STR_GLOBAL "Bu ayarları &varsayılan olarak kaydet"
-#define STR_DEFAULT "&Varsayılan"
-#define STR_LANGUAGE "Dil:"
-#define STR_ICONSET "Simge seti:"
+#define STR_OK "Tamam"
+#define STR_CANCEL "İptal et"
+#define STR_GLOBAL "Bu ayarları &varsayılan olarak kaydet"
+#define STR_DEFAULT "&Varsayılan"
+#define STR_LANGUAGE "Dil:"
+#define STR_ICONSET "Simge seti:"
-#define STR_GAIN "Artırma"
+#define STR_GAIN "Artırma"
-#define STR_FILE_NAME "Dosya adı:"
-#define STR_DISK_SIZE "Disk boyutu:"
-#define STR_RPM_MODE "RPM modu:"
-#define STR_PROGRESS "İşlem:"
+#define STR_FILE_NAME "Dosya adı:"
+#define STR_DISK_SIZE "Disk boyutu:"
+#define STR_RPM_MODE "RPM modu:"
+#define STR_PROGRESS "İşlem:"
-#define STR_WIDTH "GeniÅŸlik:"
-#define STR_HEIGHT "Yükseklik:"
-#define STR_LOCK_TO_SIZE "Bu boyuta kilitle"
+#define STR_WIDTH "GeniÅŸlik:"
+#define STR_HEIGHT "Yükseklik:"
+#define STR_LOCK_TO_SIZE "Bu boyuta kilitle"
-#define STR_MACHINE_TYPE "Makine türü:"
-#define STR_MACHINE "Makine:"
-#define STR_CONFIGURE "Ayarla"
-#define STR_CPU_TYPE "CPU türü:"
-#define STR_CPU_SPEED "Hız:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Bekleme süreleri:"
-#define STR_MB "MB"
-#define STR_MEMORY "Bellek:"
-#define STR_TIME_SYNC "Zaman senkronizasyonu"
-#define STR_DISABLED "Devre dışı"
-#define STR_ENABLED_LOCAL "Etkin (yerel zaman)"
-#define STR_ENABLED_UTC "Etkin (UTC)"
-#define STR_DYNAREC "Dinamik Derleyici"
+#define STR_MACHINE_TYPE "Makine türü:"
+#define STR_MACHINE "Makine:"
+#define STR_CONFIGURE "Ayarla"
+#define STR_CPU_TYPE "CPU türü:"
+#define STR_CPU_SPEED "Hız:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Bekleme süreleri:"
+#define STR_MB "MB"
+#define STR_MEMORY "Bellek:"
+#define STR_TIME_SYNC "Zaman senkronizasyonu"
+#define STR_DISABLED "Devre dışı"
+#define STR_ENABLED_LOCAL "Etkin (yerel zaman)"
+#define STR_ENABLED_UTC "Etkin (UTC)"
+#define STR_DYNAREC "Dinamik Derleyici"
-#define STR_VIDEO "Ekran kartı:"
-#define STR_VIDEO_2 "Ekran kartı 2:"
-#define STR_VOODOO "Voodoo Grafikleri"
-#define STR_IBM8514 "IBM 8514/a Grafikleri"
-#define STR_XGA "XGA Grafikleri"
+#define STR_VIDEO "Ekran kartı:"
+#define STR_VIDEO_2 "Ekran kartı 2:"
+#define STR_VOODOO "Voodoo Grafikleri"
+#define STR_IBM8514 "IBM 8514/a Grafikleri"
+#define STR_XGA "XGA Grafikleri"
-#define STR_MOUSE "Fare:"
-#define STR_JOYSTICK "Oyun kolu:"
-#define STR_JOY1 "Oyun kolu 1..."
-#define STR_JOY2 "Oyun kolu 2..."
-#define STR_JOY3 "Oyun kolu 3..."
-#define STR_JOY4 "Oyun kolu 4..."
+#define STR_MOUSE "Fare:"
+#define STR_JOYSTICK "Oyun kolu:"
+#define STR_JOY1 "Oyun kolu 1..."
+#define STR_JOY2 "Oyun kolu 2..."
+#define STR_JOY3 "Oyun kolu 3..."
+#define STR_JOY4 "Oyun kolu 4..."
-#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_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_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_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_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_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ı:"
-#define STR_COM3 "COM3 Cihazı:"
-#define STR_COM4 "COM4 Cihazı:"
-#define STR_LPT1 "LPT1 Cihazı:"
-#define STR_LPT2 "LPT2 Cihazı:"
-#define STR_LPT3 "LPT3 Cihazı:"
-#define STR_LPT4 "LPT4 Cihazı:"
-#define STR_SERIAL1 "Seri port 1"
-#define STR_SERIAL2 "Seri port 2"
-#define STR_SERIAL3 "Seri port 3"
-#define STR_SERIAL4 "Seri port 4"
-#define STR_PARALLEL1 "Paralel port 1"
-#define STR_PARALLEL2 "Paralel port 2"
-#define STR_PARALLEL3 "Paralel port 3"
-#define STR_PARALLEL4 "Paralel port 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1 Cihazı:"
+#define STR_COM2 "COM2 Cihazı:"
+#define STR_COM3 "COM3 Cihazı:"
+#define STR_COM4 "COM4 Cihazı:"
+#define STR_LPT1 "LPT1 Cihazı:"
+#define STR_LPT2 "LPT2 Cihazı:"
+#define STR_LPT3 "LPT3 Cihazı:"
+#define STR_LPT4 "LPT4 Cihazı:"
+#define STR_SERIAL1 "Seri port 1"
+#define STR_SERIAL2 "Seri port 2"
+#define STR_SERIAL3 "Seri port 3"
+#define STR_SERIAL4 "Seri port 4"
+#define STR_PARALLEL1 "Paralel port 1"
+#define STR_PARALLEL2 "Paralel port 2"
+#define STR_PARALLEL3 "Paralel port 3"
+#define STR_PARALLEL4 "Paralel port 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "HD Kontrolcüsü:"
-#define STR_FDC "FD Kontrolcüsü:"
-#define STR_IDE_TER "Üçlü IDE Kontrolcüsü"
-#define STR_IDE_QUA "Dörtlü IDE Kontrolcüsü"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Kontrolcü 1:"
-#define STR_SCSI_2 "Kontrolcü 2:"
-#define STR_SCSI_3 "Kontrolcü 3:"
-#define STR_SCSI_4 "Kontrolcü 4:"
-#define STR_CASSETTE "Kaset"
+#define STR_HDC "HD Kontrolcüsü:"
+#define STR_FDC "FD Kontrolcüsü:"
+#define STR_IDE_TER "Üçlü IDE Kontrolcüsü"
+#define STR_IDE_QUA "Dörtlü IDE Kontrolcüsü"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Kontrolcü 1:"
+#define STR_SCSI_2 "Kontrolcü 2:"
+#define STR_SCSI_3 "Kontrolcü 3:"
+#define STR_SCSI_4 "Kontrolcü 4:"
+#define STR_CASSETTE "Kaset"
-#define STR_HDD "Hard diskler:"
-#define STR_NEW "&Yeni..."
-#define STR_EXISTING "&Var olan..."
-#define STR_REMOVE "&Kaldır"
-#define STR_BUS "Veri yolu:"
-#define STR_CHANNEL "Kanal:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "Hard diskler:"
+#define STR_NEW "&Yeni..."
+#define STR_EXISTING "&Var olan..."
+#define STR_REMOVE "&Kaldır"
+#define STR_BUS "Veri yolu:"
+#define STR_CHANNEL "Kanal:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Belirle..."
-#define STR_SECTORS "Sektörler:"
-#define STR_HEADS "Veri Kafaları:"
-#define STR_CYLS "Silindirler:"
-#define STR_SIZE_MB "Boyut (MB):"
-#define STR_TYPE "Tip:"
-#define STR_IMG_FORMAT "İmaj Düzeni:"
-#define STR_BLOCK_SIZE "Blok Boyutu:"
+#define STR_SPECIFY "&Belirle..."
+#define STR_SECTORS "Sektörler:"
+#define STR_HEADS "Veri Kafaları:"
+#define STR_CYLS "Silindirler:"
+#define STR_SIZE_MB "Boyut (MB):"
+#define STR_TYPE "Tip:"
+#define STR_IMG_FORMAT "İmaj Düzeni:"
+#define STR_BLOCK_SIZE "Blok Boyutu:"
-#define STR_FLOPPY_DRIVES "Disket sürücüleri:"
-#define STR_TURBO "Turbo zamanlamaları"
-#define STR_CHECKBPB "BPB'yi denetle"
-#define STR_CDROM_DRIVES "CD-ROM sürücüleri:"
-#define STR_CD_SPEED "Hız:"
-#define STR_EARLY "Daha erken sürüş"
+#define STR_FLOPPY_DRIVES "Disket sürücüleri:"
+#define STR_TURBO "Turbo zamanlamaları"
+#define STR_CHECKBPB "BPB'yi denetle"
+#define STR_CDROM_DRIVES "CD-ROM sürücüleri:"
+#define STR_CD_SPEED "Hız:"
+#define STR_EARLY "Daha erken sürüş"
-#define STR_MO_DRIVES "MO sürücüleri:"
-#define STR_ZIP_DRIVES "ZIP sürücüleri:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "MO sürücüleri:"
+#define STR_ZIP_DRIVES "ZIP sürücüleri:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "ISA Bellek Artırma"
-#define STR_ISAMEM_1 "Kart 1:"
-#define STR_ISAMEM_2 "Kart 2:"
-#define STR_ISAMEM_3 "Kart 3:"
-#define STR_ISAMEM_4 "Kart 4:"
-#define STR_BUGGER "ISABugger cihazı"
-#define STR_POSTCARD "POST kartı"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "ISA Bellek Artırma"
+#define STR_ISAMEM_1 "Kart 1:"
+#define STR_ISAMEM_2 "Kart 2:"
+#define STR_ISAMEM_3 "Kart 3:"
+#define STR_ISAMEM_4 "Kart 4:"
+#define STR_BUGGER "ISABugger cihazı"
+#define STR_POSTCARD "POST kartı"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Hata"
- IDS_2050 "Kritik hata"
- IDS_2051 " - PAUSED"
- IDS_2052 "Pencere moduna geri dönmek için Ctrl+Alt+PgDn tuşlarına basın."
- IDS_2053 "Hız"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP imajları (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box hiç bir kullanılabilir ROM imajı bulamadı.\n\nLütfen ROM setini indirin ve onu ""Roms"" klasörüne çıkarın."
- IDS_2057 "(empty)"
- IDS_2058 "ZIP imajları (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
- IDS_2059 "Turbo"
- IDS_2060 "Açık"
- IDS_2061 "Kapalı"
- IDS_2062 "Tüm imajlar (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basit sektör imajları (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Yüzey imajları (*.86F)\0*.86F\0"
- IDS_2063 """%hs"" makinesi roms/machines klasöründe mevcut olmayan ROM imajı yüzünden mevcut değil. Mevcut olan bir makineye geçiş yapılıyor."
+ 2048 "86Box"
+ IDS_2049 "Hata"
+ IDS_2050 "Kritik hata"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "Pencere moduna geri dönmek için Ctrl+Alt+PgDn tuşlarına basın."
+ IDS_2053 "Hız"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP imajları (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box hiç bir kullanılabilir ROM imajı bulamadı.\n\nLütfen ROM setini indirin ve onu ""Roms"" klasörüne çıkarın."
+ IDS_2057 "(empty)"
+ IDS_2058 "ZIP imajları (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0All files (*.*)\0*.*\0"
+ IDS_2059 "Turbo"
+ IDS_2060 "Açık"
+ IDS_2061 "Kapalı"
+ IDS_2062 "Tüm imajlar (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0Basit sektör imajları (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Yüzey imajları (*.86F)\0*.86F\0"
+ IDS_2063 """%hs"" makinesi roms/machines klasöründe mevcut olmayan ROM imajı yüzünden mevcut değil. Mevcut olan bir makineye geçiş yapılıyor."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 """%hs"" ekran kartı roms/video klasöründe mevcut olmayan ROM imajı yüzünden mevcut değil. Mevcut olan bir ekran kartına geçiş yapılıyor."
- IDS_2065 "Makine"
- IDS_2066 "Görüntü"
- IDS_2067 "Giriş aygıtları"
- IDS_2068 "Ses"
- IDS_2069 "AÄŸ"
- IDS_2070 "Portlar (COM & LPT)"
- IDS_2071 "Depolama kontrolcüleri"
- IDS_2072 "Hard diskler"
- IDS_2073 "Disket & CD-ROM sürücüleri"
- IDS_2074 "Diğer kaldırılabilir cihazlar"
- IDS_2075 "DiÄŸer cihazlar"
- IDS_2076 "Yüzey imajları (*.86F)\0*.86F\0"
- IDS_2077 "Farenin yakalanması için tıklayın"
- IDS_2078 "Farenin bırakılması için F8+F12 tuşlarına basın"
- IDS_2079 "Farenin bırakılması için F8+F12 veya farenin orta tuşuna basın"
+ IDS_2064 """%hs"" ekran kartı roms/video klasöründe mevcut olmayan ROM imajı yüzünden mevcut değil. Mevcut olan bir ekran kartına geçiş yapılıyor."
+ IDS_2065 "Makine"
+ IDS_2066 "Görüntü"
+ IDS_2067 "Giriş aygıtları"
+ IDS_2068 "Ses"
+ IDS_2069 "AÄŸ"
+ IDS_2070 "Portlar (COM & LPT)"
+ IDS_2071 "Depolama kontrolcüleri"
+ IDS_2072 "Hard diskler"
+ IDS_2073 "Disket & CD-ROM sürücüleri"
+ IDS_2074 "Diğer kaldırılabilir cihazlar"
+ IDS_2075 "DiÄŸer cihazlar"
+ IDS_2076 "Yüzey imajları (*.86F)\0*.86F\0"
+ IDS_2077 "Farenin yakalanması için tıklayın"
+ IDS_2078 "Farenin bırakılması için F8+F12 tuşlarına basın"
+ IDS_2079 "Farenin bırakılması için F8+F12 veya farenin orta tuşuna basın"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "FluidSynth başlatılamadı"
- IDS_2081 "Veri yolu"
- IDS_2082 "Dosya"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "FluidSynth başlatılamadı"
+ IDS_2081 "Veri yolu"
+ IDS_2082 "Dosya"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "BPB'yi kontrol et"
- IDS_2089 "KB"
- IDS_2090 "Video işleyici başlatılamadı."
- IDS_2091 "Varsayılan"
- IDS_2092 "%i Bekleme durumları"
- IDS_2093 "Tür"
- IDS_2094 "PCap ayarlanamadı"
- IDS_2095 "Herhangi bir PCap cihazı bulunamadı"
- IDS_2096 "Geçersiz PCap cihazı"
- IDS_2097 "Standart 2-button oyun kolları"
- IDS_2098 "Standart 4-button oyun kolu"
- IDS_2099 "Standart 6-button oyun kolu"
- IDS_2100 "Standart 8-button oyun kolu"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Kontrol Sistemi"
- IDS_2104 "Hiçbiri"
- IDS_2105 "Klavye ivdirgeçleri yüklenemedi."
- IDS_2106 "Ham girdi kaydedilemedi."
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "Disket %i (%s): %ls"
- IDS_2110 "Tüm imajlar (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Gelişmiş sektör imajları (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basit sektör imajları (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Yüzey imajları (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
- IDS_2111 "FreeType başlatılamadı"
- IDS_2112 "SDL başlatılamadı, SDL2.dll gerekmektedir"
- IDS_2113 "Emüle edilen makineyi yeniden başlatmak istediğinizden emin misiniz?"
- IDS_2114 "86Box'tan çıkmak istediğinize emin misiniz?"
- IDS_2115 "Ghostscript başlatılamadı"
- IDS_2116 "MO %i (%ls): %ls"
- IDS_2117 "MO imajları (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
- IDS_2118 "86Box'a hoÅŸgeldiniz!"
- IDS_2119 "Dahili kontrolcü"
- IDS_2120 "Çıkış"
- IDS_2121 "Hiçbir ROM imajı bulunamadı"
- IDS_2122 "Ayarları kaydetmek istediğinizden emin misiniz?"
- IDS_2123 "Bu makineyi yeniden baÅŸlatacak."
- IDS_2124 "Kaydet"
- IDS_2125 "86Box Hakkında"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "BPB'yi kontrol et"
+ IDS_2089 "KB"
+ IDS_2090 "Video işleyici başlatılamadı."
+ IDS_2091 "Varsayılan"
+ IDS_2092 "%i Bekleme durumları"
+ IDS_2093 "Tür"
+ IDS_2094 "PCap ayarlanamadı"
+ IDS_2095 "Herhangi bir PCap cihazı bulunamadı"
+ IDS_2096 "Geçersiz PCap cihazı"
+ IDS_2097 "Standart 2-button oyun kolları"
+ IDS_2098 "Standart 4-button oyun kolu"
+ IDS_2099 "Standart 6-button oyun kolu"
+ IDS_2100 "Standart 8-button oyun kolu"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Kontrol Sistemi"
+ IDS_2104 "Hiçbiri"
+ IDS_2105 "Klavye ivdirgeçleri yüklenemedi."
+ IDS_2106 "Ham girdi kaydedilemedi."
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "Disket %i (%s): %ls"
+ IDS_2110 "Tüm imajlar (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Gelişmiş sektör imajları (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0Basit sektör imajları (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux images (*.FDI)\0*.FDI\0Yüzey imajları (*.86F;*.MFM)\0*.86F;*.MFM\0All files (*.*)\0*.*\0"
+ IDS_2111 "FreeType başlatılamadı"
+ IDS_2112 "SDL başlatılamadı, SDL2.dll gerekmektedir"
+ IDS_2113 "Emüle edilen makineyi yeniden başlatmak istediğinizden emin misiniz?"
+ IDS_2114 "86Box'tan çıkmak istediğinize emin misiniz?"
+ IDS_2115 "Ghostscript başlatılamadı"
+ IDS_2116 "MO %i (%ls): %ls"
+ IDS_2117 "MO imajları (*.IM?;*.MDI)\0*.IM?;*.MDI\0All files (*.*)\0*.*\0"
+ IDS_2118 "86Box'a hoÅŸgeldiniz!"
+ IDS_2119 "Dahili kontrolcü"
+ IDS_2120 "Çıkış"
+ IDS_2121 "Hiçbir ROM imajı bulunamadı"
+ IDS_2122 "Ayarları kaydetmek istediğinizden emin misiniz?"
+ IDS_2123 "Bu makineyi yeniden baÅŸlatacak."
+ IDS_2124 "Kaydet"
+ IDS_2125 "86Box Hakkında"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "Bir eski bilgisayar emülatörü\n\nYapanlar: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, ve diğerleri.\n\nGNU Genel Kamu Lisansı versiyon 2 veya sonrası altında yayınlanmıştır. Daha fazla bilgi için LICENSE'ı gözden geçirin."
- IDS_2128 "Tamam"
- IDS_2129 "Donanım mevcut değil"
+ IDS_2127 "Bir eski bilgisayar emülatörü\n\nYapanlar: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, ve diğerleri.\n\nGNU Genel Kamu Lisansı versiyon 2 veya sonrası altında yayınlanmıştır. Daha fazla bilgi için LICENSE'ı gözden geçirin."
+ IDS_2128 "Tamam"
+ IDS_2129 "Donanım mevcut değil"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "" LIB_NAME_PCAP " kurulu olduğundan ve " LIB_NAME_PCAP "-uyumlu bir internet ağında bulunduğunuzdan emin olun."
- IDS_2131 "Geçersiz konfigürasyon"
+ IDS_2130 "" LIB_NAME_PCAP " kurulu olduğundan ve " LIB_NAME_PCAP "-uyumlu bir internet ağında bulunduğunuzdan emin olun."
+ IDS_2131 "Geçersiz konfigürasyon"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 LIB_NAME_FREETYPE " ESC/P yazıcı emülasyonu için gereklidir."
+ IDS_2132 LIB_NAME_FREETYPE " ESC/P yazıcı emülasyonu için gereklidir."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " PostScript dosyalarının otomatik olarak PDF dosyalarına çevirilmesi için gereklidir.\n\nGenel PostScript yazıcısına gönderilen tüm dökümanlar PostScript (.ps) dosyaları olarak kaydedilecektir."
+ IDS_2133 LIB_NAME_GS " PostScript dosyalarının otomatik olarak PDF dosyalarına çevirilmesi için gereklidir.\n\nGenel PostScript yazıcısına gönderilen tüm dökümanlar PostScript (.ps) dosyaları olarak kaydedilecektir."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 LIB_NAME_FLUIDSYNTH " FluidSynth MIDI çıkışı için gereklidir."
- IDS_2135 "Tam ekran moduna geçiliyor"
- IDS_2136 "Bu mesajı bir daha gösterme"
- IDS_2137 "Çıkış yapma"
- IDS_2138 "Yeniden baÅŸlat"
- IDS_2139 "Yeniden baÅŸlatma"
- IDS_2140 "MO imajları (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tüm dosyalar (*.*)\0*.*\0"
- IDS_2141 "CD-ROM imajları (*.ISO;*.CUE)\0*.ISO;*.CUE\0Tüm dosyalar (*.*)\0*.*\0"
- IDS_2142 "%hs Cihaz Konfigürasyonu"
+ IDS_2134 LIB_NAME_FLUIDSYNTH " FluidSynth MIDI çıkışı için gereklidir."
+ IDS_2135 "Tam ekran moduna geçiliyor"
+ IDS_2136 "Bu mesajı bir daha gösterme"
+ IDS_2137 "Çıkış yapma"
+ IDS_2138 "Yeniden baÅŸlat"
+ IDS_2139 "Yeniden baÅŸlatma"
+ IDS_2140 "MO imajları (*.IM?;*.MDI)\0*.IM?;*.MDI\0Tüm dosyalar (*.*)\0*.*\0"
+ IDS_2141 "CD-ROM imajları (*.ISO;*.CUE)\0*.ISO;*.CUE\0Tüm dosyalar (*.*)\0*.*\0"
+ IDS_2142 "%hs Cihaz Konfigürasyonu"
IDS_2143 "Monitör uyku modunda"
- IDS_2144 "OpenGL Gölgelendiricileri (*.GLSL)\0*.GLSL\0Tüm dosyalar (*.*)\0*.*\0"
- IDS_2145 "OpenGL ayarları"
- IDS_2146 "Desteklenmeyen bir konfigürasyon yüklüyorsunuz"
- IDS_2147 "Seçtiğiniz makineye uygun CPU (işlemci) türü filtrelemesi bu emülasyon için devre dışı bırakıldı.\n\nBu, normalde seçilen makine ile uyumlu olmayan bir CPU seçmenizi mümkün kılmaktadır. Ancak, bundan dolayı seçilen makinenin BIOS'u veya diğer yazılımlar ile uyumsuzluk sorunu yaşayabilirsiniz.\n\nBu filtrelemeyi devre dışı bırakmak emülatör tarafından resmi olarak desteklenmemektedir ve açtığınız bug (hata) raporları geçersiz olarak kapatılabilir."
- IDS_2148 "Devam et"
- IDS_2149 "Kaset: %s"
- IDS_2150 "Kaset imajları (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tüm dosyalar (*.*)\0*.*\0"
- IDS_2151 "KartuÅŸ %i: %ls"
- IDS_2152 "Kartuş imajları (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tüm dosyalar (*.*)\0*.*\0"
- IDS_2153 "Oluşturucu başlatılırken hata oluştu"
- IDS_2154 "OpenGL (3.0 Core) görüntüleyici başlatılamadı. Başka bir görüntüleyici kullanın."
- IDS_2155 "Yürütmeye devam et"
- IDS_2156 "Yürütmeyi duraklat"
- IDS_2157 "Ctrl+Alt+Del"
- IDS_2158 "Ctrl+Alt+Esc"
- IDS_2159 "Makineyi yeniden baÅŸlat"
- IDS_2160 "ACPI kapatma"
- IDS_2161 "Ayarlar"
+ IDS_2144 "OpenGL Gölgelendiricileri (*.GLSL)\0*.GLSL\0Tüm dosyalar (*.*)\0*.*\0"
+ IDS_2145 "OpenGL ayarları"
+ IDS_2146 "Desteklenmeyen bir konfigürasyon yüklüyorsunuz"
+ IDS_2147 "Seçtiğiniz makineye uygun CPU (işlemci) türü filtrelemesi bu emülasyon için devre dışı bırakıldı.\n\nBu, normalde seçilen makine ile uyumlu olmayan bir CPU seçmenizi mümkün kılmaktadır. Ancak, bundan dolayı seçilen makinenin BIOS'u veya diğer yazılımlar ile uyumsuzluk sorunu yaşayabilirsiniz.\n\nBu filtrelemeyi devre dışı bırakmak emülatör tarafından resmi olarak desteklenmemektedir ve açtığınız bug (hata) raporları geçersiz olarak kapatılabilir."
+ IDS_2148 "Devam et"
+ IDS_2149 "Kaset: %s"
+ IDS_2150 "Kaset imajları (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tüm dosyalar (*.*)\0*.*\0"
+ IDS_2151 "KartuÅŸ %i: %ls"
+ IDS_2152 "Kartuş imajları (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tüm dosyalar (*.*)\0*.*\0"
+ IDS_2153 "Oluşturucu başlatılırken hata oluştu"
+ IDS_2154 "OpenGL (3.0 Core) görüntüleyici başlatılamadı. Başka bir görüntüleyici kullanın."
+ IDS_2155 "Yürütmeye devam et"
+ IDS_2156 "Yürütmeyi duraklat"
+ IDS_2157 "Ctrl+Alt+Del"
+ IDS_2158 "Ctrl+Alt+Esc"
+ IDS_2159 "Makineyi yeniden baÅŸlat"
+ IDS_2160 "ACPI kapatma"
+ IDS_2161 "Ayarlar"
IDS_2162 "Daha erken sürüş"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Hard disk (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL veya ESDI CD-ROM sürücüleri hiçbir zaman var olmamıştır"
- IDS_4100 "DiÄŸer..."
- IDS_4101 "Diğer (büyük)..."
- IDS_4102 "Yeni Hard Disk Dosyası Oluştur"
- IDS_4103 "Var Olan Hard Disk Dosyası Ekle"
- IDS_4104 "HDI disk imajları 4 GB'tan daha büyük olamaz."
- IDS_4105 "Disk imajları 127 GB'tan daha büyük olamaz."
- IDS_4106 "Hard disk imajları (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Tüm dosyalar (*.*)\0*.*\0"
- IDS_4107 "Dosya okunamıyor"
- IDS_4108 "Dosyanın üzerine yazılamıyor"
- IDS_4109 "512 dışında sektör boyutu olan HDI veya HDX imajları desteklenmemektedir."
- IDS_4110 "USB ÅŸu anda desteklenmemektedir"
- IDS_4111 "Disk imaj dosyası zaten var olmakta"
- IDS_4112 "Lütfen geçerli bir dosya ismi belirleyin."
- IDS_4113 "Disk imajı oluşturuldu"
- IDS_4114 "Dosyanın var olduğuna ve okunabildiğine emin olun."
- IDS_4115 "Dosyanın yazılabilir bir klasöre kaydedildiğinden emin olun."
- IDS_4116 "Disk imajı çok büyük"
- IDS_4117 "Yeni oluşturulan diski bölmeyi ve formatlamayı unutmayın."
- IDS_4118 "Seçili dosyanın üzerine yazılacaktır. Bunu yapmak istediğinizden emin misiniz?"
- IDS_4119 "Desteklenmeyen disk imajı"
- IDS_4120 "Üzerine yaz"
- IDS_4121 "Üzerine yazma"
- IDS_4122 "Ham imaj (.img)"
- IDS_4123 "HDI imajı (.hdi)"
- IDS_4124 "HDX imajı (.hdx)"
- IDS_4125 "Sabit-boyutlu VHD (.vhd)"
- IDS_4126 "Dinamik-boyutlu VHD (.vhd)"
- IDS_4127 "Differencing VHD (.vhd)"
- IDS_4128 "Büyük bloklar (2 MB)"
- IDS_4129 "Küçük bloklar (512 KB)"
- IDS_4130 "VHD dosyaları (*.VHD)\0*.VHD\0Tüm dosyalar (*.*)\0*.*\0"
- IDS_4131 "Ana VHD dosyasını seçin"
- IDS_4132 "Bu, farkı alınan imaj oluşturulduktan sonra ana imaj dosyasının düzenlendiği anlamına geliyor olabilir.\n\nBu durum ayrıca imaj dosyaları kopyalandığında veya yerleri değiştirildiğinde veya imaj dosyalarını oluşturan programdaki bir hatadan dolayı olmuş olabilir.\n\nZaman damgalarını düzeltmek ister misiniz?"
- IDS_4133 "Ana ve ek disk zaman damgaları uyuşmuyor"
- IDS_4134 "VHD zaman damgası düzeltilemedi."
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL veya ESDI CD-ROM sürücüleri hiçbir zaman var olmamıştır"
+ IDS_4100 "DiÄŸer..."
+ IDS_4101 "Diğer (büyük)..."
+ IDS_4102 "Yeni Hard Disk Dosyası Oluştur"
+ IDS_4103 "Var Olan Hard Disk Dosyası Ekle"
+ IDS_4104 "HDI disk imajları 4 GB'tan daha büyük olamaz."
+ IDS_4105 "Disk imajları 127 GB'tan daha büyük olamaz."
+ IDS_4106 "Hard disk imajları (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Tüm dosyalar (*.*)\0*.*\0"
+ IDS_4107 "Dosya okunamıyor"
+ IDS_4108 "Dosyanın üzerine yazılamıyor"
+ IDS_4109 "512 dışında sektör boyutu olan HDI veya HDX imajları desteklenmemektedir."
+ IDS_4110 "USB ÅŸu anda desteklenmemektedir"
+ IDS_4111 "Disk imaj dosyası zaten var olmakta"
+ IDS_4112 "Lütfen geçerli bir dosya ismi belirleyin."
+ IDS_4113 "Disk imajı oluşturuldu"
+ IDS_4114 "Dosyanın var olduğuna ve okunabildiğine emin olun."
+ IDS_4115 "Dosyanın yazılabilir bir klasöre kaydedildiğinden emin olun."
+ IDS_4116 "Disk imajı çok büyük"
+ IDS_4117 "Yeni oluşturulan diski bölmeyi ve formatlamayı unutmayın."
+ IDS_4118 "Seçili dosyanın üzerine yazılacaktır. Bunu yapmak istediğinizden emin misiniz?"
+ IDS_4119 "Desteklenmeyen disk imajı"
+ IDS_4120 "Üzerine yaz"
+ IDS_4121 "Üzerine yazma"
+ IDS_4122 "Ham imaj (.img)"
+ IDS_4123 "HDI imajı (.hdi)"
+ IDS_4124 "HDX imajı (.hdx)"
+ IDS_4125 "Sabit-boyutlu VHD (.vhd)"
+ IDS_4126 "Dinamik-boyutlu VHD (.vhd)"
+ IDS_4127 "Differencing VHD (.vhd)"
+ IDS_4128 "Büyük bloklar (2 MB)"
+ IDS_4129 "Küçük bloklar (512 KB)"
+ IDS_4130 "VHD dosyaları (*.VHD)\0*.VHD\0Tüm dosyalar (*.*)\0*.*\0"
+ IDS_4131 "Ana VHD dosyasını seçin"
+ IDS_4132 "Bu, farkı alınan imaj oluşturulduktan sonra ana imaj dosyasının düzenlendiği anlamına geliyor olabilir.\n\nBu durum ayrıca imaj dosyaları kopyalandığında veya yerleri değiştirildiğinde veya imaj dosyalarını oluşturan programdaki bir hatadan dolayı olmuş olabilir.\n\nZaman damgalarını düzeltmek ister misiniz?"
+ IDS_4133 "Ana ve ek disk zaman damgaları uyuşmuyor"
+ IDS_4134 "VHD zaman damgası düzeltilemedi."
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Devre dışı"
- IDS_5381 "ATAPI"
+ IDS_5376 "Devre dışı"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "Devre dışı"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "Devre dışı"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (cluster 1024)"
- IDS_5898 "DMF (cluster 2048)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 MB (ISO 10090)"
- IDS_5903 "3.5"" 230 MB (ISO 13963)"
- IDS_5904 "3.5"" 540 MB (ISO 15498)"
- IDS_5905 "3.5"" 640 MB (ISO 15498)"
- IDS_5906 "3.5"" 1.3 GB (GigaMO)"
- IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25"" 600 MB"
- IDS_5909 "5.25"" 650 MB"
- IDS_5910 "5.25"" 1 GB"
- IDS_5911 "5.25"" 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (cluster 1024)"
+ IDS_5898 "DMF (cluster 2048)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 MB (ISO 10090)"
+ IDS_5903 "3.5"" 230 MB (ISO 13963)"
+ IDS_5904 "3.5"" 540 MB (ISO 15498)"
+ IDS_5905 "3.5"" 640 MB (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 GB (GigaMO)"
+ IDS_5907 "3.5"" 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25"" 600 MB"
+ IDS_5909 "5.25"" 650 MB"
+ IDS_5910 "5.25"" 1 GB"
+ IDS_5911 "5.25"" 1.3 GB"
- IDS_6144 "Mükemmel RPM"
- IDS_6145 "mükemmel RPM değerinin 1% altı"
- IDS_6146 "mükemmel RPM değerinin 1.5% altı"
- IDS_6147 "mükemmel RPM değerinin 2% altı"
+ IDS_6144 "Mükemmel RPM"
+ IDS_6145 "mükemmel RPM değerinin 1% altı"
+ IDS_6146 "mükemmel RPM değerinin 1.5% altı"
+ IDS_6147 "mükemmel RPM değerinin 2% altı"
- IDS_7168 "(Sistem Varsayılanı)"
+ IDS_7168 "(Sistem Varsayılanı)"
END
-#define IDS_LANG_TRTR IDS_7168
+#define IDS_LANG_TRTR IDS_7168
// Turkish (TR) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/uk-UA.rc b/src/win/languages/uk-UA.rc
index db2604860..b3c7f4017 100644
--- a/src/win/languages/uk-UA.rc
+++ b/src/win/languages/uk-UA.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "&ДіÑ"
BEGIN
- MENUITEM "&Клавіатура потребує захвату", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "&Правий CTRL - це лівий ALT", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "&Клавіатура потребує захвату", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "&Правий CTRL - це лівий ALT", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "&Холодне перезавантаженнÑ...", IDM_ACTION_HRESET
- MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "&Холодне перезавантаженнÑ...", IDM_ACTION_HRESET
+ MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "&Пауза", IDM_ACTION_PAUSE
+ MENUITEM "&Пауза", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "&Вихід...", IDM_ACTION_EXIT
+ MENUITEM "&Вихід...", IDM_ACTION_EXIT
END
POPUP "&ВиглÑд"
BEGIN
- MENUITEM "&Приховати Ñ€Ñдок Ñтану", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "&Приховати панель інÑтрументів", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "&Приховати Ñ€Ñдок Ñтану", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "&Приховати панель інÑтрументів", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
- MENUITEM "&Змінний розмір вікна", IDM_VID_RESIZE
- MENUITEM "&Запам'Ñтати розмір Ñ– Ñтановище", IDM_VID_REMEMBER
+ MENUITEM "&Show non-primary monitors", IDM_VID_MONITORS
+ MENUITEM "&Змінний розмір вікна", IDM_VID_RESIZE
+ MENUITEM "&Запам'Ñтати розмір Ñ– Ñтановище", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "&Рендеринг"
BEGIN
- MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
- MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
- MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
- MENUITEM "Open&GL (3.0)", IDM_VID_OPENGL_CORE
+ MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
+ MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
+ MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
+ MENUITEM "Open&GL (3.0)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "&VNC", IDM_VID_VNC
+ MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "&Вказати розміри...", IDM_VID_SPECIFY_DIM
- MENUITEM "&Ð’Ñтановити Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін 4:3", IDM_VID_FORCE43
+ MENUITEM "&Вказати розміри...", IDM_VID_SPECIFY_DIM
+ MENUITEM "&Ð’Ñтановити Ð²Ñ–Ð´Ð½Ð¾ÑˆÐµÐ½Ð½Ñ Ñторін 4:3", IDM_VID_FORCE43
POPUP "&МаÑштаб вікна"
BEGIN
- MENUITEM "&0.5x", IDM_VID_SCALE_1X
- MENUITEM "&1x", IDM_VID_SCALE_2X
- MENUITEM "1.&5x", IDM_VID_SCALE_3X
- MENUITEM "&2x", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "&0.5x", IDM_VID_SCALE_1X
+ MENUITEM "&1x", IDM_VID_SCALE_2X
+ MENUITEM "1.&5x", IDM_VID_SCALE_3X
+ MENUITEM "&2x", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "Метод фільтрації"
BEGIN
- MENUITEM "&Ðайближчий", IDM_VID_FILTER_NEAREST
- MENUITEM "&Лінійний", IDM_VID_FILTER_LINEAR
+ MENUITEM "&Ðайближчий", IDM_VID_FILTER_NEAREST
+ MENUITEM "&Лінійний", IDM_VID_FILTER_LINEAR
END
- MENUITEM "МаÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Hi&DPI", IDM_VID_HIDPI
+ MENUITEM "МаÑÑˆÑ‚Ð°Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "&Повноекранний режим\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "&Повноекранний режим\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "&РозÑÑ‚ÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ повноекранному режимі"
BEGIN
- MENUITEM "&Ðа веÑÑŒ екран", IDM_VID_FS_FULL
- MENUITEM "&4:3", IDM_VID_FS_43
+ MENUITEM "&Ðа веÑÑŒ екран", IDM_VID_FS_FULL
+ MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Квадратні пікÑелі (зберегти відношеннÑ)", IDM_VID_FS_KEEPRATIO
- MENUITEM "&ЦіліÑночиÑленне маÑштабуваннÑ", IDM_VID_FS_INT
+ MENUITEM "&ЦіліÑночиÑленне маÑштабуваннÑ", IDM_VID_FS_INT
END
POPUP "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ E&GA/(S)VGA"
BEGIN
- MENUITEM "&Інвертувати кольори VGA", IDM_VID_INVERT
+ MENUITEM "&Інвертувати кольори VGA", IDM_VID_INVERT
POPUP "&Тип екрана VGA"
BEGIN
- MENUITEM "RGB &кольоровий", IDM_VID_GRAY_RGB
- MENUITEM "&RGB монохромний", IDM_VID_GRAY_MONO
- MENUITEM "&Бурштиновий відтінок", IDM_VID_GRAY_AMBER
- MENUITEM "&Зелений відтінок", IDM_VID_GRAY_GREEN
- MENUITEM "&Білий відтінок", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB &кольоровий", IDM_VID_GRAY_RGB
+ MENUITEM "&RGB монохромний", IDM_VID_GRAY_MONO
+ MENUITEM "&Бурштиновий відтінок", IDM_VID_GRAY_AMBER
+ MENUITEM "&Зелений відтінок", IDM_VID_GRAY_GREEN
+ MENUITEM "&Білий відтінок", IDM_VID_GRAY_WHITE
END
POPUP "Тип монохромного &конвертуваннÑ"
BEGIN
- MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
- MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
- MENUITEM "&УÑереднений", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601
+ MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709
+ MENUITEM "&УÑереднений", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "Вильоти розгортки CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
+ MENUITEM "Вильоти розгортки CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Змінити контраÑтніÑть &монохромного диÑплеÑ", IDM_VID_CGACON
END
- MENUITEM "&ÐоÑÑ–Ñ—", IDM_MEDIA
+ MENUITEM "&ÐоÑÑ–Ñ—", IDM_MEDIA
POPUP "&ІнÑтрументи"
BEGIN
- MENUITEM "&ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð¸...", IDM_CONFIG
- MENUITEM "&ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐºÑ–Ð² Ñ€Ñдка Ñтану", IDM_UPDATE_ICONS
+ MENUITEM "&ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð¸...", IDM_CONFIG
+ MENUITEM "&ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐºÑ–Ð² Ñ€Ñдка Ñтану", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "Зробити &знімок\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "Зробити &знімок\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "&Параметри...", IDM_PREFERENCES
+ MENUITEM "&Параметри...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "Увімкнути інтеграцію &Discord", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "&ПоÑÐ¸Ð»ÐµÐ½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ...", IDM_SND_GAIN
+ MENUITEM "&ПоÑÐ¸Ð»ÐµÐ½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "Почати траÑуваннÑ\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "Завершити траÑуваннÑ\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "Почати траÑуваннÑ\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "Завершити траÑуваннÑ\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "&Допомога"
BEGIN
- MENUITEM "&ДокументаціÑ...", IDM_DOCS
- MENUITEM "&Про програму 86Box...", IDM_ABOUT
+ MENUITEM "&ДокументаціÑ...", IDM_DOCS
+ MENUITEM "&Про програму 86Box...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовий образ...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "&Ðовий образ...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Вибрати образ...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "&Вибрати образ...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&ЗапиÑ", IDM_CASSETTE_RECORD
- MENUITEM "&ВідтвореннÑ", IDM_CASSETTE_PLAY
- MENUITEM "&ÐŸÐµÑ€ÐµÐ¼Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° початок", IDM_CASSETTE_REWIND
- MENUITEM "&ÐŸÐµÑ€ÐµÐ¼Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ кінець", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "&ЗапиÑ", IDM_CASSETTE_RECORD
+ MENUITEM "&ВідтвореннÑ", IDM_CASSETTE_PLAY
+ MENUITEM "&ÐŸÐµÑ€ÐµÐ¼Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° початок", IDM_CASSETTE_REWIND
+ MENUITEM "&ÐŸÐµÑ€ÐµÐ¼Ð¾Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ кінець", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "&Вилучити", IDM_CASSETTE_EJECT
+ MENUITEM "&Вилучити", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Образ...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "&Образ...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "&Вилучити", IDM_CARTRIDGE_EJECT
+ MENUITEM "&Вилучити", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовий образ...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "&Ðовий образ...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Вибрати образ...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "&Вибрати образ...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&ЕкÑпорт в 86F...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "&ЕкÑпорт в 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "&Вилучити", IDM_FLOPPY_EJECT
+ MENUITEM "&Вилучити", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Відключити звук", IDM_CDROM_MUTE
+ MENUITEM "&Відключити звук", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "&ПуÑтий", IDM_CDROM_EMPTY
- MENUITEM "&Знову завантажити попередній образ", IDM_CDROM_RELOAD
+ MENUITEM "&ПуÑтий", IDM_CDROM_EMPTY
+ MENUITEM "&Знову завантажити попередній образ", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "&Образ...", IDM_CDROM_IMAGE
- MENUITEM "&Тека...", IDM_CDROM_DIR
+ MENUITEM "&Образ...", IDM_CDROM_IMAGE
+ MENUITEM "&Тека...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовий образ...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "&Ðовий образ...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Вибрати образ...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "&Вибрати образ...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Вилучити", IDM_ZIP_EJECT
- MENUITEM "&Знову завантажити попередній образ", IDM_ZIP_RELOAD
+ MENUITEM "&Вилучити", IDM_ZIP_EJECT
+ MENUITEM "&Знову завантажити попередній образ", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "&Ðовий образ...", IDM_MO_IMAGE_NEW
+ MENUITEM "&Ðовий образ...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "&Вибрати образ...", IDM_MO_IMAGE_EXISTING
- MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "&Вибрати образ...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "Вибрати образ (&ЗахиÑÑ‚ від запиÑу)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "&Вилучити", IDM_MO_EJECT
- MENUITEM "&Знову завантажити попередній образ", IDM_MO_RELOAD
+ MENUITEM "&Вилучити", IDM_MO_EJECT
+ MENUITEM "&Знову завантажити попередній образ", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "Параметри"
-#define STR_SND_GAIN "ПоÑÐ¸Ð»ÐµÐ½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ"
-#define STR_NEW_FLOPPY "Ðовий образ"
-#define STR_CONFIG "ÐалаштуваннÑ"
-#define STR_SPECIFY_DIM "Вказати розміри головного вікна"
+#define STR_PREFERENCES "Параметри"
+#define STR_SND_GAIN "ПоÑÐ¸Ð»ÐµÐ½Ð½Ñ Ð·Ð²ÑƒÐºÑƒ"
+#define STR_NEW_FLOPPY "Ðовий образ"
+#define STR_CONFIG "ÐалаштуваннÑ"
+#define STR_SPECIFY_DIM "Вказати розміри головного вікна"
-#define STR_OK "OK"
-#define STR_CANCEL "Відміна"
-#define STR_GLOBAL "Зберегти ці параметри Ñк &глобальні за замовчуваннÑм"
-#define STR_DEFAULT "&За замовчуваннÑм"
-#define STR_LANGUAGE "Язык:"
-#define STR_ICONSET "Ðабір іконок:"
+#define STR_OK "OK"
+#define STR_CANCEL "Відміна"
+#define STR_GLOBAL "Зберегти ці параметри Ñк &глобальні за замовчуваннÑм"
+#define STR_DEFAULT "&За замовчуваннÑм"
+#define STR_LANGUAGE "Язык:"
+#define STR_ICONSET "Ðабір іконок:"
-#define STR_GAIN "ПоÑиленнÑ"
+#define STR_GAIN "ПоÑиленнÑ"
-#define STR_FILE_NAME "Ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
-#define STR_DISK_SIZE "Розмір диÑка:"
-#define STR_RPM_MODE "RPM режим:"
-#define STR_PROGRESS "ПрогреÑ:"
+#define STR_FILE_NAME "Ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ:"
+#define STR_DISK_SIZE "Розмір диÑка:"
+#define STR_RPM_MODE "RPM режим:"
+#define STR_PROGRESS "ПрогреÑ:"
-#define STR_WIDTH "Ширина:"
-#define STR_HEIGHT "ВиÑота:"
-#define STR_LOCK_TO_SIZE "ЗафікÑувати розмір"
+#define STR_WIDTH "Ширина:"
+#define STR_HEIGHT "ВиÑота:"
+#define STR_LOCK_TO_SIZE "ЗафікÑувати розмір"
-#define STR_MACHINE_TYPE "Тип машини:"
-#define STR_MACHINE "СиÑтемна плата:"
-#define STR_CONFIGURE "ÐалаштуваннÑ"
-#define STR_CPU_TYPE "Тип ЦП:"
-#define STR_CPU_SPEED "ШвидкіÑть:"
-#define STR_FPU "FPU:"
-#define STR_WAIT_STATES "Цикли очікуваннÑ:"
-#define STR_MB "МБ"
-#define STR_MEMORY "Пам'Ñть:"
-#define STR_TIME_SYNC "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ñ‡Ð°Ñу"
-#define STR_DISABLED "Відключити"
-#define STR_ENABLED_LOCAL "Увімкнути (міÑцеве)"
-#define STR_ENABLED_UTC "Увімкнути (UTC)"
-#define STR_DYNAREC "Динамічний рекомпілÑтор"
+#define STR_MACHINE_TYPE "Тип машини:"
+#define STR_MACHINE "СиÑтемна плата:"
+#define STR_CONFIGURE "ÐалаштуваннÑ"
+#define STR_CPU_TYPE "Тип ЦП:"
+#define STR_CPU_SPEED "ШвидкіÑть:"
+#define STR_FPU "FPU:"
+#define STR_WAIT_STATES "Цикли очікуваннÑ:"
+#define STR_MB "МБ"
+#define STR_MEMORY "Пам'Ñть:"
+#define STR_TIME_SYNC "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ Ñ‡Ð°Ñу"
+#define STR_DISABLED "Відключити"
+#define STR_ENABLED_LOCAL "Увімкнути (міÑцеве)"
+#define STR_ENABLED_UTC "Увімкнути (UTC)"
+#define STR_DYNAREC "Динамічний рекомпілÑтор"
-#define STR_VIDEO "Відеокарта:"
-#define STR_VIDEO_2 "Відеокарта 2:"
-#define STR_VOODOO "ПриÑкорювач Voodoo"
-#define STR_IBM8514 "ПриÑкорювач IBM 8514/a"
-#define STR_XGA "ПриÑкорювач XGA"
+#define STR_VIDEO "Відеокарта:"
+#define STR_VIDEO_2 "Відеокарта 2:"
+#define STR_VOODOO "ПриÑкорювач Voodoo"
+#define STR_IBM8514 "ПриÑкорювач IBM 8514/a"
+#define STR_XGA "ПриÑкорювач XGA"
-#define STR_MOUSE "Миша:"
-#define STR_JOYSTICK "ДжойÑтик:"
-#define STR_JOY1 "ДжойÑтик 1..."
-#define STR_JOY2 "ДжойÑтик 2..."
-#define STR_JOY3 "ДжойÑтик 3..."
-#define STR_JOY4 "ДжойÑтик 4..."
+#define STR_MOUSE "Миша:"
+#define STR_JOYSTICK "ДжойÑтик:"
+#define STR_JOY1 "ДжойÑтик 1..."
+#define STR_JOY2 "ДжойÑтик 2..."
+#define STR_JOY3 "ДжойÑтик 3..."
+#define STR_JOY4 "ДжойÑтик 4..."
-#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_FLOAT "FLOAT32 звук"
-#define STR_FM_DRIVER "Драйвер FM-Ñинтезатора"
-#define STR_FM_DRV_NUKED "Nuked (більш точний)"
-#define STR_FM_DRV_YMFM "YMFM (швидший)"
+#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_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_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_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:"
-#define STR_COM3 "ПриÑтрій COM3:"
-#define STR_COM4 "ПриÑтрій COM4:"
-#define STR_LPT1 "ПриÑтрій LPT1:"
-#define STR_LPT2 "ПриÑтрій LPT2:"
-#define STR_LPT3 "ПриÑтрій LPT3:"
-#define STR_LPT4 "ПриÑтрій LPT4:"
-#define STR_SERIAL1 "ПоÑлідов. порт COM1"
-#define STR_SERIAL2 "ПоÑлідов. порт COM2"
-#define STR_SERIAL3 "ПоÑлідов. порт COM3"
-#define STR_SERIAL4 "ПоÑлідов. порт COM4"
-#define STR_PARALLEL1 "Паралельний порт LPT1"
-#define STR_PARALLEL2 "Паралельний порт LPT2"
-#define STR_PARALLEL3 "Паралельний порт LPT3"
-#define STR_PARALLEL4 "Паралельний порт LPT4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "ПриÑтрій COM1:"
+#define STR_COM2 "ПриÑтрій COM2:"
+#define STR_COM3 "ПриÑтрій COM3:"
+#define STR_COM4 "ПриÑтрій COM4:"
+#define STR_LPT1 "ПриÑтрій LPT1:"
+#define STR_LPT2 "ПриÑтрій LPT2:"
+#define STR_LPT3 "ПриÑтрій LPT3:"
+#define STR_LPT4 "ПриÑтрій LPT4:"
+#define STR_SERIAL1 "ПоÑлідов. порт COM1"
+#define STR_SERIAL2 "ПоÑлідов. порт COM2"
+#define STR_SERIAL3 "ПоÑлідов. порт COM3"
+#define STR_SERIAL4 "ПоÑлідов. порт COM4"
+#define STR_PARALLEL1 "Паралельний порт LPT1"
+#define STR_PARALLEL2 "Паралельний порт LPT2"
+#define STR_PARALLEL3 "Паралельний порт LPT3"
+#define STR_PARALLEL4 "Паралельний порт LPT4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "Контролер HD:"
-#define STR_FDC "Контролер FD:"
-#define STR_IDE_TER "Третинний IDE контролер"
-#define STR_IDE_QUA "Четвертинний IDE контролер"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "Контролер 1:"
-#define STR_SCSI_2 "Контролер 2:"
-#define STR_SCSI_3 "Контролер 3:"
-#define STR_SCSI_4 "Контролер 4:"
-#define STR_CASSETTE "КаÑета"
+#define STR_HDC "Контролер HD:"
+#define STR_FDC "Контролер FD:"
+#define STR_IDE_TER "Третинний IDE контролер"
+#define STR_IDE_QUA "Четвертинний IDE контролер"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "Контролер 1:"
+#define STR_SCSI_2 "Контролер 2:"
+#define STR_SCSI_3 "Контролер 3:"
+#define STR_SCSI_4 "Контролер 4:"
+#define STR_CASSETTE "КаÑета"
-#define STR_HDD "ЖорÑткі диÑки:"
-#define STR_NEW "&Створити..."
-#define STR_EXISTING "&Вибрати..."
-#define STR_REMOVE "&Прибрати"
-#define STR_BUS "Шина:"
-#define STR_CHANNEL "Канал:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "ЖорÑткі диÑки:"
+#define STR_NEW "&Створити..."
+#define STR_EXISTING "&Вибрати..."
+#define STR_REMOVE "&Прибрати"
+#define STR_BUS "Шина:"
+#define STR_CHANNEL "Канал:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "&Вказати..."
-#define STR_SECTORS "Сектора:"
-#define STR_HEADS "Головки:"
-#define STR_CYLS "Циліндри:"
-#define STR_SIZE_MB "Розмір (МБ):"
-#define STR_TYPE "Тип:"
-#define STR_IMG_FORMAT "Тип образу:"
-#define STR_BLOCK_SIZE "Розмір блоку:"
+#define STR_SPECIFY "&Вказати..."
+#define STR_SECTORS "Сектора:"
+#define STR_HEADS "Головки:"
+#define STR_CYLS "Циліндри:"
+#define STR_SIZE_MB "Розмір (МБ):"
+#define STR_TYPE "Тип:"
+#define STR_IMG_FORMAT "Тип образу:"
+#define STR_BLOCK_SIZE "Розмір блоку:"
-#define STR_FLOPPY_DRIVES "Гнучкі диÑки:"
-#define STR_TURBO "Турбо таймінги"
-#define STR_CHECKBPB "ПеревірÑти BPB"
-#define STR_CDROM_DRIVES "ДиÑководи CD-ROM:"
-#define STR_CD_SPEED "ШвидкіÑть:"
-#define STR_EARLY "Більш ранній диÑковод"
+#define STR_FLOPPY_DRIVES "Гнучкі диÑки:"
+#define STR_TURBO "Турбо таймінги"
+#define STR_CHECKBPB "ПеревірÑти BPB"
+#define STR_CDROM_DRIVES "ДиÑководи CD-ROM:"
+#define STR_CD_SPEED "ШвидкіÑть:"
+#define STR_EARLY "Більш ранній диÑковод"
-#define STR_MO_DRIVES "Магнітооптичні диÑководи:"
-#define STR_ZIP_DRIVES "ZIP диÑководи:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "Магнітооптичні диÑководи:"
+#define STR_ZIP_DRIVES "ZIP диÑководи:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA RTC:"
-#define STR_ISAMEM "Карта Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð°Ð¼'Ñті (ISA)"
-#define STR_ISAMEM_1 "Карта 1:"
-#define STR_ISAMEM_2 "Карта 2:"
-#define STR_ISAMEM_3 "Карта 3:"
-#define STR_ISAMEM_4 "Карта 4:"
-#define STR_BUGGER "ПриÑтрій ISABugger"
-#define STR_POSTCARD "Карта POST"
+#define STR_ISARTC "ISA RTC:"
+#define STR_ISAMEM "Карта Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ð¿Ð°Ð¼'Ñті (ISA)"
+#define STR_ISAMEM_1 "Карта 1:"
+#define STR_ISAMEM_2 "Карта 2:"
+#define STR_ISAMEM_3 "Карта 3:"
+#define STR_ISAMEM_4 "Карта 4:"
+#define STR_BUGGER "ПриÑтрій ISABugger"
+#define STR_POSTCARD "Карта POST"
-#define FONT_SIZE 9
-#define FONT_NAME "Segoe UI"
+#define FONT_SIZE 9
+#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
@@ -392,255 +392,256 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "Помилка"
- IDS_2050 "Ðепереробна помилка"
- IDS_2051 " - PAUSED"
- IDS_2052 "ÐатиÑніть Ctrl+Alt+PgDn Ð´Ð»Ñ Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ñƒ віконний режим."
- IDS_2053 "ШвидкіÑть"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "Образи ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box не зміг знайти жодного відповідного Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ з ПЗУ.\n\nБудь лаÑка завантажте набір ПЗУ Ñ– витÑгніть його в каталог ""roms""."
- IDS_2057 "(порожньо)"
- IDS_2058 "Образи ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Ð’ÑÑ– файли (*.*)\0*.*\0"
- IDS_2059 "Турбо"
- IDS_2060 "Увімк"
- IDS_2061 "Вимк"
- IDS_2062 "Ð’ÑÑ– образи (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0ПроÑті поÑекторні образи (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Образ поверхні (*.86F)\0*.86F\0"
- IDS_2063 "СиÑтемна плата ""%hs"" недоÑтупна через відÑутніÑть файлу Ñ—Ñ— ПЗУ в каталозі roms/machines. ÐŸÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð½Ð° доÑтупну ÑиÑтемну плату."
+ 2048 "86Box"
+ IDS_2049 "Помилка"
+ IDS_2050 "Ðепереробна помилка"
+ IDS_2051 " - PAUSED"
+ IDS_2052 "ÐатиÑніть Ctrl+Alt+PgDn Ð´Ð»Ñ Ð¿Ð¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ Ñƒ віконний режим."
+ IDS_2053 "ШвидкіÑть"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "Образи ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box не зміг знайти жодного відповідного Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ з ПЗУ.\n\nБудь лаÑка завантажте набір ПЗУ Ñ– витÑгніть його в каталог ""roms""."
+ IDS_2057 "(порожньо)"
+ IDS_2058 "Образи ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0Ð’ÑÑ– файли (*.*)\0*.*\0"
+ IDS_2059 "Турбо"
+ IDS_2060 "Увімк"
+ IDS_2061 "Вимк"
+ IDS_2062 "Ð’ÑÑ– образи (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0ПроÑті поÑекторні образи (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0Образ поверхні (*.86F)\0*.86F\0"
+ IDS_2063 "СиÑтемна плата ""%hs"" недоÑтупна через відÑутніÑть файлу Ñ—Ñ— ПЗУ в каталозі roms/machines. ÐŸÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð½Ð° доÑтупну ÑиÑтемну плату."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "Відеокарта ""%hs"" недоÑтупна через відÑутніÑть файлу Ñ—Ñ— ПЗУ в каталозі roms/video. ÐŸÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð½Ð° доÑтупну відеокарту."
- IDS_2065 "Комп'ютер"
- IDS_2066 "ДиÑплей"
- IDS_2067 "ПриÑтрій введеннÑ"
- IDS_2068 "Звук"
- IDS_2069 "Мережа"
- IDS_2070 "Порти (COM и LPT)"
- IDS_2071 "Контролери диÑків"
- IDS_2072 "ЖорÑткі диÑки"
- IDS_2073 "Гнучкі диÑки Ñ– CD-ROM"
- IDS_2074 "Інші знімні при-ої"
- IDS_2075 "Інша периферіÑ"
- IDS_2076 "Образи Surface (*.86F)\0*.86F\0"
- IDS_2077 "Клацніть мишею Ð´Ð»Ñ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ñƒ курÑора"
- IDS_2078 "ÐатиÑніть F8+F12, щоб звільнити курÑор"
- IDS_2079 "ÐатиÑніть F8+F12 або Ñередню кнопку миші, щоб звільнити курÑор"
+ IDS_2064 "Відеокарта ""%hs"" недоÑтупна через відÑутніÑть файлу Ñ—Ñ— ПЗУ в каталозі roms/video. ÐŸÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð½Ð° доÑтупну відеокарту."
+ IDS_2065 "Комп'ютер"
+ IDS_2066 "ДиÑплей"
+ IDS_2067 "ПриÑтрій введеннÑ"
+ IDS_2068 "Звук"
+ IDS_2069 "Мережа"
+ IDS_2070 "Порти (COM и LPT)"
+ IDS_2071 "Контролери диÑків"
+ IDS_2072 "ЖорÑткі диÑки"
+ IDS_2073 "Гнучкі диÑки Ñ– CD-ROM"
+ IDS_2074 "Інші знімні при-ої"
+ IDS_2075 "Інша периферіÑ"
+ IDS_2076 "Образи Surface (*.86F)\0*.86F\0"
+ IDS_2077 "Клацніть мишею Ð´Ð»Ñ Ð·Ð°Ñ…Ð²Ð°Ñ‚Ñƒ курÑора"
+ IDS_2078 "ÐатиÑніть F8+F12, щоб звільнити курÑор"
+ IDS_2079 "ÐатиÑніть F8+F12 або Ñередню кнопку миші, щоб звільнити курÑор"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "Ðеможливо ініціалізувати FluidSynth"
- IDS_2081 "Шина"
- IDS_2082 "Файл"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "МБ"
+ IDS_2080 "Ðеможливо ініціалізувати FluidSynth"
+ IDS_2081 "Шина"
+ IDS_2082 "Файл"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "МБ"
IDS_2087 "Speed"
- IDS_2088 "ПеревірÑти BPB"
- IDS_2089 "КБ"
- IDS_2090 "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ рендер відео."
- IDS_2091 "За замовчуваннÑм"
- IDS_2092 "%i WS"
- IDS_2093 "Тип"
- IDS_2094 "Ðе вдалоÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ñ‚Ð¸ PCap"
- IDS_2095 "ПриÑтрої PCap не знайдені"
- IDS_2096 "Ðевірний приÑтрій PCap"
- IDS_2097 "Стандартний 2-кнопковий джойÑтик"
- IDS_2098 "Стандартний 4-кнопковий джойÑтик"
- IDS_2099 "Стандартний 6-кнопковий джойÑтик"
- IDS_2100 "Стандартний 8-кнопковий джойÑтик"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "СиÑтема ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ð¾Ð»ÑŒÐ¾Ñ‚Ð¾Ð¼ Thrustmaster"
- IDS_2104 "ÐÑ–"
- IDS_2105 "Ðеможливо завантажити приÑкорювачі клавіатури."
- IDS_2106 "Ðеможливо зарреєÑтрувати необроблене (RAW) введеннÑ."
- IDS_2107 "%u"
- IDS_2108 "%u МБ (CHS: %i, %i, %i)"
- IDS_2109 "ДиÑковод %i (%s): %ls"
- IDS_2110 "Ð’ÑÑ– образи (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Розширені образи Ñекторів (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0ОÑновні образи Ñекторів (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Образи Flux (*.FDI)\0*.FDI\0Образи Surface (*.86F;*.MFM)\0*.86F;*.MFM\0Ð’ÑÑ– файли (*.*)\0*.*\0"
- IDS_2111 "Ðеможливо ініціалізувати FreeType"
- IDS_2112 "Ðеможливо ініціалізувати SDL, потрібно SDL2.dll"
- IDS_2113 "Ви впевнені, що хочете виконати холодне Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÐµÐ¼ÑƒÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¾Ñ— машини?"
- IDS_2114 "Ви впевнені, що хочете вийти з 86Box?"
- IDS_2115 "Ðеможливо ініціалізувати Ghostscript"
- IDS_2116 "Магнітооптичний %i (%ls): %ls"
- IDS_2117 "Образи магнітооптичних диÑків (*.IM?;*.MDI)\0*.IM?;*.MDI\0Ð’Ñе файлы (*.*)\0*.*\0"
- IDS_2118 "ЛаÑкаво проÑимо в 86Box!"
- IDS_2119 "Вбудований контролер"
- IDS_2120 "Вихід"
- IDS_2121 "ПЗУ не знайдені"
- IDS_2122 "Чи бажаєте ви зберегти налаштуваннÑ?"
- IDS_2123 "Це призведе до холодної перезагрузки емульованої машини."
- IDS_2124 "Зберегти"
- IDS_2125 "Про 86Box"
- IDS_2126 "86Box v." EMU_VERSION
+ IDS_2088 "ПеревірÑти BPB"
+ IDS_2089 "КБ"
+ IDS_2090 "Ðе вдалоÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ рендер відео."
+ IDS_2091 "За замовчуваннÑм"
+ IDS_2092 "%i WS"
+ IDS_2093 "Тип"
+ IDS_2094 "Ðе вдалоÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ñ‚Ð¸ PCap"
+ IDS_2095 "ПриÑтрої PCap не знайдені"
+ IDS_2096 "Ðевірний приÑтрій PCap"
+ IDS_2097 "Стандартний 2-кнопковий джойÑтик"
+ IDS_2098 "Стандартний 4-кнопковий джойÑтик"
+ IDS_2099 "Стандартний 6-кнопковий джойÑтик"
+ IDS_2100 "Стандартний 8-кнопковий джойÑтик"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "СиÑтема ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ð¾Ð»ÑŒÐ¾Ñ‚Ð¾Ð¼ Thrustmaster"
+ IDS_2104 "ÐÑ–"
+ IDS_2105 "Ðеможливо завантажити приÑкорювачі клавіатури."
+ IDS_2106 "Ðеможливо зарреєÑтрувати необроблене (RAW) введеннÑ."
+ IDS_2107 "%u"
+ IDS_2108 "%u МБ (CHS: %i, %i, %i)"
+ IDS_2109 "ДиÑковод %i (%s): %ls"
+ IDS_2110 "Ð’ÑÑ– образи (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0Розширені образи Ñекторів (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0ОÑновні образи Ñекторів (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Образи Flux (*.FDI)\0*.FDI\0Образи Surface (*.86F;*.MFM)\0*.86F;*.MFM\0Ð’ÑÑ– файли (*.*)\0*.*\0"
+ IDS_2111 "Ðеможливо ініціалізувати FreeType"
+ IDS_2112 "Ðеможливо ініціалізувати SDL, потрібно SDL2.dll"
+ IDS_2113 "Ви впевнені, що хочете виконати холодне Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÐµÐ¼ÑƒÐ»ÑŒÐ¾Ð²Ð°Ð½Ð¾Ñ— машини?"
+ IDS_2114 "Ви впевнені, що хочете вийти з 86Box?"
+ IDS_2115 "Ðеможливо ініціалізувати Ghostscript"
+ IDS_2116 "Магнітооптичний %i (%ls): %ls"
+ IDS_2117 "Образи магнітооптичних диÑків (*.IM?;*.MDI)\0*.IM?;*.MDI\0Ð’Ñе файлы (*.*)\0*.*\0"
+ IDS_2118 "ЛаÑкаво проÑимо в 86Box!"
+ IDS_2119 "Вбудований контролер"
+ IDS_2120 "Вихід"
+ IDS_2121 "ПЗУ не знайдені"
+ IDS_2122 "Чи бажаєте ви зберегти налаштуваннÑ?"
+ IDS_2123 "Це призведе до холодної перезагрузки емульованої машини."
+ IDS_2124 "Зберегти"
+ IDS_2125 "Про 86Box"
+ IDS_2126 "86Box v." EMU_VERSION
- IDS_2127 "ЕмулÑтор Ñтарих комп'ютерів\n\nÐвтори: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nВипуÑкаєтÑÑ Ð¿Ñ–Ð´ ліцензією GNU General Public License верÑÑ–Ñ— 2 або більше пізніше. Додадкову інформацію Ñм. у файлі LICENSE."
- IDS_2128 "OK"
- IDS_2129 "ÐžÐ±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупне"
+ IDS_2127 "ЕмулÑтор Ñтарих комп'ютерів\n\nÐвтори: Sarah Walker, Miran Grca, Fred N. van Kempen (waltje), SA1988, Tiseno100, reenigne, leilei, JohnElliott, greatpsycho, and others.\n\nВипуÑкаєтÑÑ Ð¿Ñ–Ð´ ліцензією GNU General Public License верÑÑ–Ñ— 2 або більше пізніше. Додадкову інформацію Ñм. у файлі LICENSE."
+ IDS_2128 "OK"
+ IDS_2129 "ÐžÐ±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупне"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "ПереконайтеÑÑŒ, що " LIB_NAME_PCAP " вÑтановлений Ñ– ваше мережеве з'єднаннÑ, ÑуміÑне з " LIB_NAME_PCAP "."
- IDS_2131 "ÐеприпуÑтима конфігураціÑ"
+ IDS_2130 "ПереконайтеÑÑŒ, що " LIB_NAME_PCAP " вÑтановлений Ñ– ваше мережеве з'єднаннÑ, ÑуміÑне з " LIB_NAME_PCAP "."
+ IDS_2131 "ÐеприпуÑтима конфігураціÑ"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 "Ð”Ð»Ñ ÐµÐ¼ÑƒÐ»Ñції принтера ESC/P потрібно " LIB_NAME_FREETYPE "."
+ IDS_2132 "Ð”Ð»Ñ ÐµÐ¼ÑƒÐ»Ñції принтера ESC/P потрібно " LIB_NAME_FREETYPE "."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " потрібно Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² PostScript в PDF.\n\nÐ’ÑÑ– документи, відправлені на загальний принтер PostScript, будуть збережені у виглÑді файлів PostScript (.ps)."
+ IDS_2133 LIB_NAME_GS " потрібно Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² PostScript в PDF.\n\nÐ’ÑÑ– документи, відправлені на загальний принтер PostScript, будуть збережені у виглÑді файлів PostScript (.ps)."
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 "Ð”Ð»Ñ FluidSynth MIDI-виÑновку потрібно " LIB_NAME_FLUIDSYNTH "."
- IDS_2135 "Вхід у повноекранний режим"
- IDS_2136 "Більше не показувати це повідомленнÑ"
- IDS_2137 "Ðе виходити"
- IDS_2138 "Перезавантажити"
- IDS_2139 "Ðе перезавантажувати"
- IDS_2140 "Образи магнітооптичних диÑків (*.IM?;*.MDI)\0*.IM?;*.MDI\0УÑÑ– файли (*.*)\0*.*\0"
- IDS_2141 "Образи CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0УÑÑ– файли (*.*)\0*.*\0"
- IDS_2142 "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¸Ñтрою %hs"
+ IDS_2134 "Ð”Ð»Ñ FluidSynth MIDI-виÑновку потрібно " LIB_NAME_FLUIDSYNTH "."
+ IDS_2135 "Вхід у повноекранний режим"
+ IDS_2136 "Більше не показувати це повідомленнÑ"
+ IDS_2137 "Ðе виходити"
+ IDS_2138 "Перезавантажити"
+ IDS_2139 "Ðе перезавантажувати"
+ IDS_2140 "Образи магнітооптичних диÑків (*.IM?;*.MDI)\0*.IM?;*.MDI\0УÑÑ– файли (*.*)\0*.*\0"
+ IDS_2141 "Образи CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0УÑÑ– файли (*.*)\0*.*\0"
+ IDS_2142 "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¸Ñтрою %hs"
IDS_2143 "Монітор у ÑплÑчому режимі"
- IDS_2144 "Шейдери OpenGL (*.GLSL)\0*.GLSL\0УÑÑ– файли (*.*)\0*.*\0"
- IDS_2145 "Параметри OpenGL"
- IDS_2146 "Ви завантажуєте непідтримувану конфігурацію"
- IDS_2147 "Вибір типів ЦП Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— ÑиÑтемної плати на даній емульованій машині відключено.\n\nЦе дозволÑÑ” вибрати процеÑор, Ñкий в іншому випадку не ÑуміÑний з вибраною материнÑькою платою. Однак, ви можете зіткнутиÑÑ Ð· неÑуміÑніÑтю з BIOS материнÑької плати або іншим ПО.\n\nÐ’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ параметра офіційно не підтримуєтьÑÑ, Ñ– вÑÑ– подані звіти про помилки можуть бути закриті Ñк недійÑні."
- IDS_2148 "Продовжити"
- IDS_2149 "КаÑета: %s"
- IDS_2150 "Образи каÑет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0УÑÑ– файли (*.*)\0*. *\0"
- IDS_2151 "Картридж %i: %ls"
- IDS_2152 "Образи картриджів (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Ð’ÑÑ– файли (*.*)\0*.*\0"
- IDS_2153 "Помилка ініціалізації рендерера"
- IDS_2154 "Ðеможливо ініціалізувати рендерер OpenGL (3.0). Будь лаÑка, викориÑтовуйте інший рендерер."
- IDS_2155 "Відновити виконаннÑ"
- IDS_2156 "Призупинити виконаннÑ"
- IDS_2157 "ÐатиÑнути Ctrl+Alt+Del"
- IDS_2158 "ÐатиÑнути Ctrl+Alt+Esc"
- IDS_2159 "Холодне перезавантаженнÑ"
- IDS_2160 "Сигнал Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ACPI"
- IDS_2161 "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð¸"
+ IDS_2144 "Шейдери OpenGL (*.GLSL)\0*.GLSL\0УÑÑ– файли (*.*)\0*.*\0"
+ IDS_2145 "Параметри OpenGL"
+ IDS_2146 "Ви завантажуєте непідтримувану конфігурацію"
+ IDS_2147 "Вибір типів ЦП Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— ÑиÑтемної плати на даній емульованій машині відключено.\n\nЦе дозволÑÑ” вибрати процеÑор, Ñкий в іншому випадку не ÑуміÑний з вибраною материнÑькою платою. Однак, ви можете зіткнутиÑÑ Ð· неÑуміÑніÑтю з BIOS материнÑької плати або іншим ПО.\n\nÐ’ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ параметра офіційно не підтримуєтьÑÑ, Ñ– вÑÑ– подані звіти про помилки можуть бути закриті Ñк недійÑні."
+ IDS_2148 "Продовжити"
+ IDS_2149 "КаÑета: %s"
+ IDS_2150 "Образи каÑет (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0УÑÑ– файли (*.*)\0*. *\0"
+ IDS_2151 "Картридж %i: %ls"
+ IDS_2152 "Образи картриджів (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Ð’ÑÑ– файли (*.*)\0*.*\0"
+ IDS_2153 "Помилка ініціалізації рендерера"
+ IDS_2154 "Ðеможливо ініціалізувати рендерер OpenGL (3.0). Будь лаÑка, викориÑтовуйте інший рендерер."
+ IDS_2155 "Відновити виконаннÑ"
+ IDS_2156 "Призупинити виконаннÑ"
+ IDS_2157 "ÐатиÑнути Ctrl+Alt+Del"
+ IDS_2158 "ÐатиÑнути Ctrl+Alt+Esc"
+ IDS_2159 "Холодне перезавантаженнÑ"
+ IDS_2160 "Сигнал Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ACPI"
+ IDS_2161 "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð¸"
IDS_2162 "Більш ранній диÑковод"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
STRINGTABLE DISCARDABLE
BEGIN
- IDS_4096 "ЖорÑткий диÑк (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "MFM/RLL або ESDI диÑководів CD-ROM ніколи не Ñ–Ñнувало"
- IDS_4100 "Задати вручну..."
- IDS_4101 "Задати вручну (large)..."
- IDS_4102 "Створити новий жорÑткий диÑк"
- IDS_4103 "Вибрати Ñ–Ñнуючий жорÑткий диÑк"
- IDS_4104 "Розмір образів диÑків HDI не може перевищувати 4 ГБ."
- IDS_4105 "Розмір образів диÑків не може перевищувати 127 ГБ."
- IDS_4106 "Образи жорÑтких диÑків (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Ð’ÑÑ– файли (*.*)\0*.*\0 "
- IDS_4107 "Ðеможливо прочитати файл"
- IDS_4108 "Ðеможливо запиÑати файл"
- IDS_4109 "Образи HDI або HDX з розміром Ñектора, відмінним від 512, не підтримуютьÑÑ."
- IDS_4110 "USB поки не підтримуєтьÑÑ"
- IDS_4111 "Файл образу диÑка вже Ñ–Ñнує"
- IDS_4112 "Вкажіть правильне ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ."
- IDS_4113 "Образ диÑку Ñтворено"
- IDS_4114 "ПереконайтеÑÑ, що файл Ñ” доÑтупним Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ."
- IDS_4115 "ПереконайтеÑÑ, що файл зберігаєтьÑÑ Ð² каталог, Ñкий Ñ” доÑтупним Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу."
- IDS_4116 "Занадто великий образ диÑка"
- IDS_4117 "Ðе забудьте розмітити та відформатувати новоÑтворений диÑк."
- IDS_4118 "Вибраний файл буде перезапиÑано. Ви впевнені, що хочете викориÑтовувати його?"
- IDS_4119 "Образ диÑка, що не підтримуєтьÑÑ"
- IDS_4120 "ПерезапиÑати"
- IDS_4121 "Ðе перезапиÑувати"
- IDS_4122 "RAW образ (.img)"
- IDS_4123 "Образ HDI (.hdi)"
- IDS_4124 "Образ HDX (.hdx)"
- IDS_4125 "VHD фікÑованого розміру (.vhd)"
- IDS_4126 "VHD динамічного розміру (.vhd)"
- IDS_4127 "Диференційований образ VHD (.vhd)"
- IDS_4128 "Великі блоки (2 МБ)"
- IDS_4129 "Маленькі блоки (512 КБ)"
- IDS_4130 "Файли VHD (*.VHD)\0*.VHD\0Ð’ÑÑ– файли (*.*)\0*.*\0"
- IDS_4131 "Виберіть батьківÑький VHD"
- IDS_4132 "Це може означати, що батьківÑький образ був змінений піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк було Ñтворено диференційований образ.\n\nЦе також може ÑтатиÑÑ, Ñкщо файли Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¸ переміщені або Ñкопійовані, або через помилку в програмі, що Ñтворила цей диÑк.\n \nВи хочете виправити тимчаÑові позначки?"
- IDS_4133 "ТимчаÑові мітки батьківÑького та дочірнього диÑків не Ñпівпадають"
- IDS_4134 "Ðе вдалоÑÑ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ тимчаÑову позначку VHD."
- IDS_4135 "%01i:%02i"
+ IDS_4096 "ЖорÑткий диÑк (%s)"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "MFM/RLL або ESDI диÑководів CD-ROM ніколи не Ñ–Ñнувало"
+ IDS_4100 "Задати вручну..."
+ IDS_4101 "Задати вручну (large)..."
+ IDS_4102 "Створити новий жорÑткий диÑк"
+ IDS_4103 "Вибрати Ñ–Ñнуючий жорÑткий диÑк"
+ IDS_4104 "Розмір образів диÑків HDI не може перевищувати 4 ГБ."
+ IDS_4105 "Розмір образів диÑків не може перевищувати 127 ГБ."
+ IDS_4106 "Образи жорÑтких диÑків (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0Ð’ÑÑ– файли (*.*)\0*.*\0 "
+ IDS_4107 "Ðеможливо прочитати файл"
+ IDS_4108 "Ðеможливо запиÑати файл"
+ IDS_4109 "Образи HDI або HDX з розміром Ñектора, відмінним від 512, не підтримуютьÑÑ."
+ IDS_4110 "USB поки не підтримуєтьÑÑ"
+ IDS_4111 "Файл образу диÑка вже Ñ–Ñнує"
+ IDS_4112 "Вкажіть правильне ім'Ñ Ñ„Ð°Ð¹Ð»Ñƒ."
+ IDS_4113 "Образ диÑку Ñтворено"
+ IDS_4114 "ПереконайтеÑÑ, що файл Ñ” доÑтупним Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ."
+ IDS_4115 "ПереконайтеÑÑ, що файл зберігаєтьÑÑ Ð² каталог, Ñкий Ñ” доÑтупним Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу."
+ IDS_4116 "Занадто великий образ диÑка"
+ IDS_4117 "Ðе забудьте розмітити та відформатувати новоÑтворений диÑк."
+ IDS_4118 "Вибраний файл буде перезапиÑано. Ви впевнені, що хочете викориÑтовувати його?"
+ IDS_4119 "Образ диÑка, що не підтримуєтьÑÑ"
+ IDS_4120 "ПерезапиÑати"
+ IDS_4121 "Ðе перезапиÑувати"
+ IDS_4122 "RAW образ (.img)"
+ IDS_4123 "Образ HDI (.hdi)"
+ IDS_4124 "Образ HDX (.hdx)"
+ IDS_4125 "VHD фікÑованого розміру (.vhd)"
+ IDS_4126 "VHD динамічного розміру (.vhd)"
+ IDS_4127 "Диференційований образ VHD (.vhd)"
+ IDS_4128 "Великі блоки (2 МБ)"
+ IDS_4129 "Маленькі блоки (512 КБ)"
+ IDS_4130 "Файли VHD (*.VHD)\0*.VHD\0Ð’ÑÑ– файли (*.*)\0*.*\0"
+ IDS_4131 "Виберіть батьківÑький VHD"
+ IDS_4132 "Це може означати, що батьківÑький образ був змінений піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк було Ñтворено диференційований образ.\n\nЦе також може ÑтатиÑÑ, Ñкщо файли Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¸ переміщені або Ñкопійовані, або через помилку в програмі, що Ñтворила цей диÑк.\n \nВи хочете виправити тимчаÑові позначки?"
+ IDS_4133 "ТимчаÑові мітки батьківÑького та дочірнього диÑків не Ñпівпадають"
+ IDS_4134 "Ðе вдалоÑÑ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ тимчаÑову позначку VHD."
+ IDS_4135 "%01i:%02i"
- IDS_4352 "MFM/RLL"
- IDS_4353 "XTA"
- IDS_4354 "ESDI"
- IDS_4355 "IDE"
- IDS_4356 "ATAPI"
- IDS_4357 "SCSI"
+ IDS_4352 "MFM/RLL"
+ IDS_4353 "XTA"
+ IDS_4354 "ESDI"
+ IDS_4355 "IDE"
+ IDS_4356 "ATAPI"
+ IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "CD-ROM %i (%s): %s"
+ IDS_5120 "CD-ROM %i (%s): %s"
- IDS_5376 "Відключено"
- IDS_5381 "ATAPI"
- IDS_5382 "SCSI"
+ IDS_5376 "Відключено"
+ IDS_5381 "ATAPI"
+ IDS_5382 "SCSI"
- IDS_5632 "Відключено"
- IDS_5637 "ATAPI (%01i:%01i)"
- IDS_5638 "SCSI (%01i:%02i)"
+ IDS_5632 "Відключено"
+ IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 кБ"
- IDS_5889 "180 кБ"
- IDS_5890 "320 кБ"
- IDS_5891 "360 кБ"
- IDS_5892 "640 кБ"
- IDS_5893 "720 кБ"
- IDS_5894 "1.2 МБ"
- IDS_5895 "1.25 МБ"
- IDS_5896 "1.44 МБ"
- IDS_5897 "DMF (клаÑтер 1024)"
- IDS_5898 "DMF (клаÑтер 2048)"
- IDS_5899 "2.88 МБ"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5"" 128 МБ (ISO 10090)"
- IDS_5903 "3.5"" 230 МБ (ISO 13963)"
- IDS_5904 "3.5"" 540 МБ (ISO 15498)"
- IDS_5905 "3.5"" 640 МБ (ISO 15498)"
- IDS_5906 "3.5"" 1.3 ГБ (GigaMO)"
- IDS_5907 "3.5"" 2.3 ГБ (GigaMO 2)"
- IDS_5908 "5.25"" 600 МБ"
- IDS_5909 "5.25"" 650 МБ"
- IDS_5910 "5.25"" 1 ГБ"
- IDS_5911 "5.25"" 1.3 ГБ"
+ IDS_5888 "160 кБ"
+ IDS_5889 "180 кБ"
+ IDS_5890 "320 кБ"
+ IDS_5891 "360 кБ"
+ IDS_5892 "640 кБ"
+ IDS_5893 "720 кБ"
+ IDS_5894 "1.2 МБ"
+ IDS_5895 "1.25 МБ"
+ IDS_5896 "1.44 МБ"
+ IDS_5897 "DMF (клаÑтер 1024)"
+ IDS_5898 "DMF (клаÑтер 2048)"
+ IDS_5899 "2.88 МБ"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5"" 128 МБ (ISO 10090)"
+ IDS_5903 "3.5"" 230 МБ (ISO 13963)"
+ IDS_5904 "3.5"" 540 МБ (ISO 15498)"
+ IDS_5905 "3.5"" 640 МБ (ISO 15498)"
+ IDS_5906 "3.5"" 1.3 ГБ (GigaMO)"
+ IDS_5907 "3.5"" 2.3 ГБ (GigaMO 2)"
+ IDS_5908 "5.25"" 600 МБ"
+ IDS_5909 "5.25"" 650 МБ"
+ IDS_5910 "5.25"" 1 ГБ"
+ IDS_5911 "5.25"" 1.3 ГБ"
- IDS_6144 "Точний RPM"
- IDS_6145 "Ðа 1% повільніше точного RPM"
- IDS_6146 "Ðа 1.5% повільніше точного RPM"
- IDS_6147 "Ðа 2% повільніше точного RPM"
+ IDS_6144 "Точний RPM"
+ IDS_6145 "Ðа 1% повільніше точного RPM"
+ IDS_6146 "Ðа 1.5% повільніше точного RPM"
+ IDS_6147 "Ðа 2% повільніше точного RPM"
- IDS_7168 "(СиÑтемний)"
+ IDS_7168 "(СиÑтемний)"
END
#define IDS_LANG_ENUS IDS_7168
diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc
index f72177a81..7a69ccbac 100644
--- a/src/win/languages/zh-CN.rc
+++ b/src/win/languages/zh-CN.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "æ“作(&A)"
BEGIN
- MENUITEM "é”®ç›˜éœ€è¦æ•æ‰(&K)", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "å°†å³ CTRL é”®æ˜ å°„ä¸ºå·¦ ALT é”®(&R)", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "é”®ç›˜éœ€è¦æ•æ‰(&K)", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "å°†å³ CTRL é”®æ˜ å°„ä¸ºå·¦ ALT é”®(&R)", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "硬é‡ç½®(&H)...", IDM_ACTION_HRESET
- MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "硬é‡ç½®(&H)...", IDM_ACTION_HRESET
+ MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "æš‚åœ(&P)", IDM_ACTION_PAUSE
+ MENUITEM "æš‚åœ(&P)", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "退出(&X)...", IDM_ACTION_EXIT
+ MENUITEM "退出(&X)...", IDM_ACTION_EXIT
END
POPUP "查看(&V)"
BEGIN
- MENUITEM "éšè—çŠ¶æ€æ (&H)", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "éšè—工具æ (&T)", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "éšè—çŠ¶æ€æ (&H)", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "éšè—工具æ (&T)", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "Show non-primary monitors(&S)", IDM_VID_MONITORS
- MENUITEM "窗å£å¤§å°å¯è°ƒ(&R)", IDM_VID_RESIZE
- MENUITEM "è®°ä½çª—å£å¤§å°å’Œä½ç½®(&E)", IDM_VID_REMEMBER
+ MENUITEM "Show non-primary monitors(&S)", IDM_VID_MONITORS
+ MENUITEM "窗å£å¤§å°å¯è°ƒ(&R)", IDM_VID_RESIZE
+ MENUITEM "è®°ä½çª—å£å¤§å°å’Œä½ç½®(&E)", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "渲染器(&N)"
BEGIN
- MENUITEM "SDL (软件)(&S)", IDM_VID_SDL_SW
- MENUITEM "SDL (硬件)(&H)", IDM_VID_SDL_HW
- MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
- MENUITEM "OpenGL (3.0 æ ¸å¿ƒ)(&G)", IDM_VID_OPENGL_CORE
+ MENUITEM "SDL (软件)(&S)", IDM_VID_SDL_SW
+ MENUITEM "SDL (硬件)(&H)", IDM_VID_SDL_HW
+ MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
+ MENUITEM "OpenGL (3.0 æ ¸å¿ƒ)(&G)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "VNC(&V)", IDM_VID_VNC
+ MENUITEM "VNC(&V)", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "指定窗å£å¤§å°...", IDM_VID_SPECIFY_DIM
- MENUITEM "强制 4:3 显示比例(&O)", IDM_VID_FORCE43
+ MENUITEM "指定窗å£å¤§å°...", IDM_VID_SPECIFY_DIM
+ MENUITEM "强制 4:3 显示比例(&O)", IDM_VID_FORCE43
POPUP "窗å£ç¼©æ”¾ç³»æ•°(&W)"
BEGIN
- MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X
- MENUITEM "1x(&1)", IDM_VID_SCALE_2X
- MENUITEM "1.5x(&5)", IDM_VID_SCALE_3X
- MENUITEM "2x(&2)", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X
+ MENUITEM "1x(&1)", IDM_VID_SCALE_2X
+ MENUITEM "1.5x(&5)", IDM_VID_SCALE_3X
+ MENUITEM "2x(&2)", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "过滤方å¼"
BEGIN
- MENUITEM "邻近(&N)", IDM_VID_FILTER_NEAREST
- MENUITEM "线性(&L)", IDM_VID_FILTER_LINEAR
+ MENUITEM "邻近(&N)", IDM_VID_FILTER_NEAREST
+ MENUITEM "线性(&L)", IDM_VID_FILTER_LINEAR
END
- MENUITEM "HiDPI 缩放(&D)", IDM_VID_HIDPI
+ MENUITEM "HiDPI 缩放(&D)", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "å…¨å±(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "å…¨å±(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "免屿‹‰ä¼¸æ¨¡å¼(&S)"
BEGIN
- MENUITEM "免屿‹‰ä¼¸(&F)", IDM_VID_FS_FULL
- MENUITEM "4:3(&4)", IDM_VID_FS_43
+ MENUITEM "免屿‹‰ä¼¸(&F)", IDM_VID_FS_FULL
+ MENUITEM "4:3(&4)", IDM_VID_FS_43
MENUITEM "ä¿æŒæ¯”例(&S)", IDM_VID_FS_KEEPRATIO
- MENUITEM "整数比例(&I)", IDM_VID_FS_INT
+ MENUITEM "整数比例(&I)", IDM_VID_FS_INT
END
POPUP "EGA/(S)VGA 设置(&G)"
BEGIN
- MENUITEM "VGA 显示器å色显示(&I)", IDM_VID_INVERT
+ MENUITEM "VGA 显示器å色显示(&I)", IDM_VID_INVERT
POPUP "VGA å±å¹•类型(&T)"
BEGIN
- MENUITEM "RGB 彩色(&C)", IDM_VID_GRAY_RGB
- MENUITEM "RGB ç°åº¦(&R)", IDM_VID_GRAY_MONO
- MENUITEM "ç¥ç€è‰²å•色显示器(&A)", IDM_VID_GRAY_AMBER
- MENUITEM "绿色å•色显示器(&G)", IDM_VID_GRAY_GREEN
- MENUITEM "白色å•色显示器(&W)", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB 彩色(&C)", IDM_VID_GRAY_RGB
+ MENUITEM "RGB ç°åº¦(&R)", IDM_VID_GRAY_MONO
+ MENUITEM "ç¥ç€è‰²å•色显示器(&A)", IDM_VID_GRAY_AMBER
+ MENUITEM "绿色å•色显示器(&G)", IDM_VID_GRAY_GREEN
+ MENUITEM "白色å•色显示器(&W)", IDM_VID_GRAY_WHITE
END
POPUP "ç°åº¦è½¬æ¢ç±»åž‹(&C)"
BEGIN
- MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
- MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
- MENUITEM "å¹³å‡(&A)", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
+ MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
+ MENUITEM "å¹³å‡(&A)", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGA 过扫æ(&G)", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGA 过扫æ(&G)", IDM_VID_OVERSCAN
MENUITEM "更改å•色显示对比度(&M)", IDM_VID_CGACON
END
- MENUITEM "介质(&M)", IDM_MEDIA
+ MENUITEM "介质(&M)", IDM_MEDIA
POPUP "工具(&T)"
BEGIN
- MENUITEM "设置(&S)...", IDM_CONFIG
- MENUITEM "æ›´æ–°çŠ¶æ€æ å›¾æ ‡(&U)", IDM_UPDATE_ICONS
+ MENUITEM "设置(&S)...", IDM_CONFIG
+ MENUITEM "æ›´æ–°çŠ¶æ€æ å›¾æ ‡(&U)", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "截图(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "截图(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "首选项(&P)...", IDM_PREFERENCES
+ MENUITEM "首选项(&P)...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "å¯ç”¨ Discord 集æˆ(&D)", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "音é‡å¢žç›Š(&G)...", IDM_SND_GAIN
+ MENUITEM "音é‡å¢žç›Š(&G)...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "开始追踪\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "结æŸè¿½è¸ª\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "开始追踪\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "结æŸè¿½è¸ª\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "帮助(&H)"
BEGIN
- MENUITEM "文档(&D)...", IDM_DOCS
- MENUITEM "关于 86Box(&A)...", IDM_ABOUT
+ MENUITEM "文档(&D)...", IDM_DOCS
+ MENUITEM "关于 86Box(&A)...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新建镜åƒ(&N)...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "新建镜åƒ(&N)...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "录制(&R)", IDM_CASSETTE_RECORD
- MENUITEM "æ’æ”¾(&P)", IDM_CASSETTE_PLAY
- MENUITEM "倒带至起点(&R)", IDM_CASSETTE_REWIND
- MENUITEM "快进至终点(&F)", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "录制(&R)", IDM_CASSETTE_RECORD
+ MENUITEM "æ’æ”¾(&P)", IDM_CASSETTE_PLAY
+ MENUITEM "倒带至起点(&R)", IDM_CASSETTE_REWIND
+ MENUITEM "快进至终点(&F)", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "弹出(&J)", IDM_CASSETTE_EJECT
+ MENUITEM "弹出(&J)", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "镜åƒ(&I)...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "镜åƒ(&I)...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "弹出(&J)", IDM_CARTRIDGE_EJECT
+ MENUITEM "弹出(&J)", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新建镜åƒ(&N)...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "新建镜åƒ(&N)...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "导出为 86F æ ¼å¼(&x)...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "导出为 86F æ ¼å¼(&x)...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "弹出(&J)", IDM_FLOPPY_EJECT
+ MENUITEM "弹出(&J)", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "é™éŸ³(&M)", IDM_CDROM_MUTE
+ MENUITEM "é™éŸ³(&M)", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "空置驱动器(&M)", IDM_CDROM_EMPTY
- MENUITEM "载入上一个镜åƒ(&R)", IDM_CDROM_RELOAD
+ MENUITEM "空置驱动器(&M)", IDM_CDROM_EMPTY
+ MENUITEM "载入上一个镜åƒ(&R)", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "镜åƒ(&I)...", IDM_CDROM_IMAGE
- MENUITEM "文件夹(&F)...", IDM_CDROM_DIR
+ MENUITEM "镜åƒ(&I)...", IDM_CDROM_IMAGE
+ MENUITEM "文件夹(&F)...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新建镜åƒ(&N)...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "新建镜åƒ(&N)...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "弹出(&J)", IDM_ZIP_EJECT
- MENUITEM "载入上一个镜åƒ(&R)", IDM_ZIP_RELOAD
+ MENUITEM "弹出(&J)", IDM_ZIP_EJECT
+ MENUITEM "载入上一个镜åƒ(&R)", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新建镜åƒ(&N)...", IDM_MO_IMAGE_NEW
+ MENUITEM "新建镜åƒ(&N)...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_MO_IMAGE_EXISTING
- MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "打开已å˜åœ¨çš„镜åƒ(&E)...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "打开已å˜åœ¨çš„镜åƒå¹¶å†™ä¿æŠ¤(&W)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "弹出(&J)", IDM_MO_EJECT
- MENUITEM "载入上一个镜åƒ(&R)", IDM_MO_RELOAD
+ MENUITEM "弹出(&J)", IDM_MO_EJECT
+ MENUITEM "载入上一个镜åƒ(&R)", IDM_MO_RELOAD
END
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "首选项"
-#define STR_SND_GAIN "音é‡å¢žç›Š"
-#define STR_NEW_FLOPPY "新建镜åƒ"
-#define STR_CONFIG "设置"
-#define STR_SPECIFY_DIM "指定主窗å£å¤§å°"
+#define STR_PREFERENCES "首选项"
+#define STR_SND_GAIN "音é‡å¢žç›Š"
+#define STR_NEW_FLOPPY "新建镜åƒ"
+#define STR_CONFIG "设置"
+#define STR_SPECIFY_DIM "指定主窗å£å¤§å°"
-#define STR_OK "确定"
-#define STR_CANCEL "å–æ¶ˆ"
-#define STR_GLOBAL "将以上设置å˜å‚¨ä¸ºå…¨å±€é»˜è®¤å€¼(&G)"
-#define STR_DEFAULT "默认(&D)"
-#define STR_LANGUAGE "è¯è¨€:"
-#define STR_ICONSET "å›¾æ ‡é›†:"
+#define STR_OK "确定"
+#define STR_CANCEL "å–æ¶ˆ"
+#define STR_GLOBAL "将以上设置å˜å‚¨ä¸ºå…¨å±€é»˜è®¤å€¼(&G)"
+#define STR_DEFAULT "默认(&D)"
+#define STR_LANGUAGE "è¯è¨€:"
+#define STR_ICONSET "å›¾æ ‡é›†:"
-#define STR_GAIN "增益"
+#define STR_GAIN "增益"
-#define STR_FILE_NAME "文件å:"
-#define STR_DISK_SIZE "ç£ç›˜å¤§å°:"
-#define STR_RPM_MODE "转速 (RPM) 模å¼:"
-#define STR_PROGRESS "进度:"
+#define STR_FILE_NAME "文件å:"
+#define STR_DISK_SIZE "ç£ç›˜å¤§å°:"
+#define STR_RPM_MODE "转速 (RPM) 模å¼:"
+#define STR_PROGRESS "进度:"
-#define STR_WIDTH "宽度:"
-#define STR_HEIGHT "高度:"
-#define STR_LOCK_TO_SIZE "é”定æ¤å¤§å°"
+#define STR_WIDTH "宽度:"
+#define STR_HEIGHT "高度:"
+#define STR_LOCK_TO_SIZE "é”定æ¤å¤§å°"
-#define STR_MACHINE_TYPE "机器类型:"
-#define STR_MACHINE "机型:"
-#define STR_CONFIGURE "é…ç½®"
-#define STR_CPU_TYPE "CPU 类型:"
-#define STR_CPU_SPEED "速度:"
-#define STR_FPU "浮点处ç†å™¨ (FPU):"
-#define STR_WAIT_STATES "ç‰å¾…çŠ¶æ€ (WS):"
-#define STR_MB "MB"
-#define STR_MEMORY "内å˜:"
-#define STR_TIME_SYNC "æ—¶é—´åŒæ¥"
-#define STR_DISABLED "ç¦ç”¨"
-#define STR_ENABLED_LOCAL "å¯ç”¨ (本地时间)"
-#define STR_ENABLED_UTC "å¯ç”¨ (UTC)"
-#define STR_DYNAREC "动æ€é‡ç¼–译器"
+#define STR_MACHINE_TYPE "机器类型:"
+#define STR_MACHINE "机型:"
+#define STR_CONFIGURE "é…ç½®"
+#define STR_CPU_TYPE "CPU 类型:"
+#define STR_CPU_SPEED "速度:"
+#define STR_FPU "浮点处ç†å™¨ (FPU):"
+#define STR_WAIT_STATES "ç‰å¾…çŠ¶æ€ (WS):"
+#define STR_MB "MB"
+#define STR_MEMORY "内å˜:"
+#define STR_TIME_SYNC "æ—¶é—´åŒæ¥"
+#define STR_DISABLED "ç¦ç”¨"
+#define STR_ENABLED_LOCAL "å¯ç”¨ (本地时间)"
+#define STR_ENABLED_UTC "å¯ç”¨ (UTC)"
+#define STR_DYNAREC "动æ€é‡ç¼–译器"
-#define STR_VIDEO "显å¡:"
-#define STR_VIDEO_2 "æ˜¾å¡ 2:"
-#define STR_VOODOO "Voodoo Graphics"
-#define STR_IBM8514 "IBM 8514/a Graphics"
-#define STR_XGA "XGA Graphics"
+#define STR_VIDEO "显å¡:"
+#define STR_VIDEO_2 "æ˜¾å¡ 2:"
+#define STR_VOODOO "Voodoo Graphics"
+#define STR_IBM8514 "IBM 8514/a Graphics"
+#define STR_XGA "XGA Graphics"
-#define STR_MOUSE "é¼ æ ‡:"
-#define STR_JOYSTICK "æ“纵æ†:"
-#define STR_JOY1 "æ“çºµæ† 1..."
-#define STR_JOY2 "æ“çºµæ† 2..."
-#define STR_JOY3 "æ“çºµæ† 3..."
-#define STR_JOY4 "æ“çºµæ† 4..."
+#define STR_MOUSE "é¼ æ ‡:"
+#define STR_JOYSTICK "æ“纵æ†:"
+#define STR_JOY1 "æ“çºµæ† 1..."
+#define STR_JOY2 "æ“çºµæ† 2..."
+#define STR_JOY3 "æ“çºµæ† 3..."
+#define STR_JOY4 "æ“çºµæ† 4..."
-#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_FLOAT "使用å•精度浮点 (FLOAT32)"
-#define STR_FM_DRIVER "è°ƒé¢‘åˆæˆå™¨é©±åЍ噍"
-#define STR_FM_DRV_NUKED "Nuked (更准确)"
-#define STR_FM_DRV_YMFM "YMFM (æ›´å¿«)"
+#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_FLOAT "使用å•精度浮点 (FLOAT32)"
+#define STR_FM_DRIVER "è°ƒé¢‘åˆæˆå™¨é©±åЍ噍"
+#define STR_FM_DRV_NUKED "Nuked (更准确)"
+#define STR_FM_DRV_YMFM "YMFM (æ›´å¿«)"
-#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_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 设备:"
-#define STR_COM3 "COM3 设备:"
-#define STR_COM4 "COM4 设备:"
-#define STR_LPT1 "LPT1 设备:"
-#define STR_LPT2 "LPT2 设备:"
-#define STR_LPT3 "LPT3 设备:"
-#define STR_LPT4 "LPT4 设备:"
-#define STR_SERIAL1 "ä¸²å£ 1"
-#define STR_SERIAL2 "ä¸²å£ 2"
-#define STR_SERIAL3 "ä¸²å£ 3"
-#define STR_SERIAL4 "ä¸²å£ 4"
-#define STR_PARALLEL1 "å¹¶å£ 1"
-#define STR_PARALLEL2 "å¹¶å£ 2"
-#define STR_PARALLEL3 "å¹¶å£ 3"
-#define STR_PARALLEL4 "å¹¶å£ 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1 设备:"
+#define STR_COM2 "COM2 设备:"
+#define STR_COM3 "COM3 设备:"
+#define STR_COM4 "COM4 设备:"
+#define STR_LPT1 "LPT1 设备:"
+#define STR_LPT2 "LPT2 设备:"
+#define STR_LPT3 "LPT3 设备:"
+#define STR_LPT4 "LPT4 设备:"
+#define STR_SERIAL1 "ä¸²å£ 1"
+#define STR_SERIAL2 "ä¸²å£ 2"
+#define STR_SERIAL3 "ä¸²å£ 3"
+#define STR_SERIAL4 "ä¸²å£ 4"
+#define STR_PARALLEL1 "å¹¶å£ 1"
+#define STR_PARALLEL2 "å¹¶å£ 2"
+#define STR_PARALLEL3 "å¹¶å£ 3"
+#define STR_PARALLEL4 "å¹¶å£ 4"
+#define STR_SERIAL_PASS1 "Serial port passthrough 1"
+#define STR_SERIAL_PASS2 "Serial port passthrough 2"
+#define STR_SERIAL_PASS3 "Serial port passthrough 3"
+#define STR_SERIAL_PASS4 "Serial port passthrough 4"
-#define STR_HDC "硬盘控制器:"
-#define STR_FDC "软盘控制器:"
-#define STR_IDE_TER "第三 IDE 控制器"
-#define STR_IDE_QUA "第四 IDE 控制器"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "控制器 1:"
-#define STR_SCSI_2 "控制器 2:"
-#define STR_SCSI_3 "控制器 3:"
-#define STR_SCSI_4 "控制器 4:"
-#define STR_CASSETTE "ç£å¸¦"
+#define STR_HDC "硬盘控制器:"
+#define STR_FDC "软盘控制器:"
+#define STR_IDE_TER "第三 IDE 控制器"
+#define STR_IDE_QUA "第四 IDE 控制器"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "控制器 1:"
+#define STR_SCSI_2 "控制器 2:"
+#define STR_SCSI_3 "控制器 3:"
+#define STR_SCSI_4 "控制器 4:"
+#define STR_CASSETTE "ç£å¸¦"
-#define STR_HDD "硬盘:"
-#define STR_NEW "新建(&N)..."
-#define STR_EXISTING "已有镜åƒ(&E)..."
-#define STR_REMOVE "移除(&R)"
-#define STR_BUS "总线:"
-#define STR_CHANNEL "通é“:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "硬盘:"
+#define STR_NEW "新建(&N)..."
+#define STR_EXISTING "已有镜åƒ(&E)..."
+#define STR_REMOVE "移除(&R)"
+#define STR_BUS "总线:"
+#define STR_CHANNEL "通é“:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "指定(&S)..."
-#define STR_SECTORS "扇区(S):"
-#define STR_HEADS "ç£å¤´(H):"
-#define STR_CYLS "柱é¢(C):"
-#define STR_SIZE_MB "å¤§å° (MB):"
-#define STR_TYPE "类型:"
-#define STR_IMG_FORMAT "é•œåƒæ ¼å¼:"
-#define STR_BLOCK_SIZE "å—大å°:"
+#define STR_SPECIFY "指定(&S)..."
+#define STR_SECTORS "扇区(S):"
+#define STR_HEADS "ç£å¤´(H):"
+#define STR_CYLS "柱é¢(C):"
+#define STR_SIZE_MB "å¤§å° (MB):"
+#define STR_TYPE "类型:"
+#define STR_IMG_FORMAT "é•œåƒæ ¼å¼:"
+#define STR_BLOCK_SIZE "å—大å°:"
-#define STR_FLOPPY_DRIVES "软盘驱动器:"
-#define STR_TURBO "åŠ é€Ÿæ—¶åº"
-#define STR_CHECKBPB "检查 BPB"
-#define STR_CDROM_DRIVES "光盘驱动器:"
-#define STR_CD_SPEED "速度:"
-#define STR_EARLY "早先的驱动器"
+#define STR_FLOPPY_DRIVES "软盘驱动器:"
+#define STR_TURBO "åŠ é€Ÿæ—¶åº"
+#define STR_CHECKBPB "检查 BPB"
+#define STR_CDROM_DRIVES "光盘驱动器:"
+#define STR_CD_SPEED "速度:"
+#define STR_EARLY "早先的驱动器"
-#define STR_MO_DRIVES "ç£å…‰ç›˜é©±åЍ噍:"
-#define STR_ZIP_DRIVES "ZIP 驱动器:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "ç£å…‰ç›˜é©±åЍ噍:"
+#define STR_ZIP_DRIVES "ZIP 驱动器:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA 实时时钟:"
-#define STR_ISAMEM "ISA å†…å˜æ‰©å……"
-#define STR_ISAMEM_1 "æ‰©å±•å¡ 1:"
-#define STR_ISAMEM_2 "æ‰©å±•å¡ 2:"
-#define STR_ISAMEM_3 "æ‰©å±•å¡ 3:"
-#define STR_ISAMEM_4 "æ‰©å±•å¡ 4:"
-#define STR_BUGGER "ISABugger 设备"
-#define STR_POSTCARD "自检 (POST) å¡"
+#define STR_ISARTC "ISA 实时时钟:"
+#define STR_ISAMEM "ISA å†…å˜æ‰©å……"
+#define STR_ISAMEM_1 "æ‰©å±•å¡ 1:"
+#define STR_ISAMEM_2 "æ‰©å±•å¡ 2:"
+#define STR_ISAMEM_3 "æ‰©å±•å¡ 3:"
+#define STR_ISAMEM_4 "æ‰©å±•å¡ 4:"
+#define STR_BUGGER "ISABugger 设备"
+#define STR_POSTCARD "自检 (POST) å¡"
-#define FONT_SIZE 9
-#define FONT_NAME "Microsoft YaHei"
+#define FONT_SIZE 9
+#define FONT_NAME "Microsoft YaHei"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "错误"
- IDS_2050 "致命错误"
- IDS_2051 " - 已暂åœ"
- IDS_2052 "按下 Ctrl+Alt+PgDn è¿”å›žåˆ°çª—å£æ¨¡å¼ã€‚"
- IDS_2053 "速度"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP é•œåƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box 找ä¸åˆ°ä»»ä½•å¯ç”¨çš„ ROM 镜åƒã€‚\n\n请下载ROM 包并将其解压到 ""roms"" 文件夹。"
- IDS_2057 "(空)"
- IDS_2058 "ZIP é•œåƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有文件 (*.*)\0*.*\0"
- IDS_2059 "åŠ é€Ÿ"
- IDS_2060 "å¼€"
- IDS_2061 "å…³"
- IDS_2062 "æ‰€æœ‰é•œåƒ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0åŸºæœ¬æ‰‡åŒºé•œåƒ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表é¢é•œåƒ (*.86F)\0*.86F\0"
- IDS_2063 "由于 roms/machines 文件夹ä¸ç¼ºå°‘åˆé€‚çš„ ROM,机型 ""%hs"" ä¸å¯ç”¨ã€‚将切æ¢åˆ°å…¶ä»–å¯ç”¨æœºåž‹ã€‚"
+ 2048 "86Box"
+ IDS_2049 "错误"
+ IDS_2050 "致命错误"
+ IDS_2051 " - 已暂åœ"
+ IDS_2052 "按下 Ctrl+Alt+PgDn è¿”å›žåˆ°çª—å£æ¨¡å¼ã€‚"
+ IDS_2053 "速度"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP é•œåƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box 找ä¸åˆ°ä»»ä½•å¯ç”¨çš„ ROM 镜åƒã€‚\n\n请下载ROM 包并将其解压到 ""roms"" 文件夹。"
+ IDS_2057 "(空)"
+ IDS_2058 "ZIP é•œåƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有文件 (*.*)\0*.*\0"
+ IDS_2059 "åŠ é€Ÿ"
+ IDS_2060 "å¼€"
+ IDS_2061 "å…³"
+ IDS_2062 "æ‰€æœ‰é•œåƒ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0åŸºæœ¬æ‰‡åŒºé•œåƒ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表é¢é•œåƒ (*.86F)\0*.86F\0"
+ IDS_2063 "由于 roms/machines 文件夹ä¸ç¼ºå°‘åˆé€‚çš„ ROM,机型 ""%hs"" ä¸å¯ç”¨ã€‚将切æ¢åˆ°å…¶ä»–å¯ç”¨æœºåž‹ã€‚"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "由于 roms/video 文件夹ä¸ç¼ºå°‘åˆé€‚çš„ ROMï¼Œæ˜¾å¡ ""%hs"" ä¸å¯ç”¨ã€‚将切æ¢åˆ°å…¶ä»–å¯ç”¨æ˜¾å¡ã€‚"
- IDS_2065 "机型"
- IDS_2066 "显示"
- IDS_2067 "输入设备"
- IDS_2068 "声音"
- IDS_2069 "网络"
- IDS_2070 "ç«¯å£ (COM å’Œ LPT)"
- IDS_2071 "å˜å‚¨æŽ§åˆ¶å™¨"
- IDS_2072 "硬盘"
- IDS_2073 "软盘/光盘驱动器"
- IDS_2074 "å…¶ä»–å¯ç§»åŠ¨è®¾å¤‡"
- IDS_2075 "其他外围设备"
- IDS_2076 "表é¢é•œåƒ (*.86F)\0*.86F\0"
- IDS_2077 "å•å‡»çª—å£æ•æ‰é¼ æ ‡"
- IDS_2078 "按下 F8+F12 é‡Šæ”¾é¼ æ ‡"
- IDS_2079 "按下 F8+F12 æˆ–é¼ æ ‡ä¸é”®é‡Šæ”¾é¼ æ ‡"
+ IDS_2064 "由于 roms/video 文件夹ä¸ç¼ºå°‘åˆé€‚çš„ ROMï¼Œæ˜¾å¡ ""%hs"" ä¸å¯ç”¨ã€‚将切æ¢åˆ°å…¶ä»–å¯ç”¨æ˜¾å¡ã€‚"
+ IDS_2065 "机型"
+ IDS_2066 "显示"
+ IDS_2067 "输入设备"
+ IDS_2068 "声音"
+ IDS_2069 "网络"
+ IDS_2070 "ç«¯å£ (COM å’Œ LPT)"
+ IDS_2071 "å˜å‚¨æŽ§åˆ¶å™¨"
+ IDS_2072 "硬盘"
+ IDS_2073 "软盘/光盘驱动器"
+ IDS_2074 "å…¶ä»–å¯ç§»åŠ¨è®¾å¤‡"
+ IDS_2075 "其他外围设备"
+ IDS_2076 "表é¢é•œåƒ (*.86F)\0*.86F\0"
+ IDS_2077 "å•å‡»çª—å£æ•æ‰é¼ æ ‡"
+ IDS_2078 "按下 F8+F12 é‡Šæ”¾é¼ æ ‡"
+ IDS_2079 "按下 F8+F12 æˆ–é¼ æ ‡ä¸é”®é‡Šæ”¾é¼ æ ‡"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "æ— æ³•åˆå§‹åŒ– FluidSynth"
- IDS_2081 "总线"
- IDS_2082 "文件"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "æ— æ³•åˆå§‹åŒ– FluidSynth"
+ IDS_2081 "总线"
+ IDS_2082 "文件"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "检查 BPB"
- IDS_2089 "KB"
- IDS_2090 "æ— æ³•åˆå§‹åŒ–视频渲染器。"
- IDS_2091 "默认"
- IDS_2092 "%i ç‰å¾…çŠ¶æ€ (WS)"
- IDS_2093 "类型"
- IDS_2094 "设置 PCap 失败"
- IDS_2095 "未找到 PCap 设备"
- IDS_2096 "æ— æ•ˆ PCap 设备"
- IDS_2097 "æ ‡å‡† 2 é”®æ“纵æ†"
- IDS_2098 "æ ‡å‡† 4 é”®æ“纵æ†"
- IDS_2099 "æ ‡å‡† 6 é”®æ“纵æ†"
- IDS_2100 "æ ‡å‡† 8 é”®æ“纵æ†"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "æ— "
- IDS_2105 "æ— æ³•åŠ è½½é”®ç›˜åŠ é€Ÿå™¨ã€‚"
- IDS_2106 "æ— æ³•æ³¨å†ŒåŽŸå§‹è¾“å…¥ã€‚"
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "软盘 %i (%s): %ls"
- IDS_2110 "æ‰€æœ‰é•œåƒ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0é«˜çº§æ‰‡åŒºé•œåƒ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0åŸºæœ¬æ‰‡åŒºé•œåƒ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux é•œåƒ (*.FDI)\0*.FDI\0表é¢é•œåƒ (*.86F;*.MFM)\0*.86F;*.MFM\0所有文件 (*.*)\0*.*\0"
- IDS_2111 "æ— æ³•åˆå§‹åŒ– FreeType"
- IDS_2112 "æ— æ³•åˆå§‹åŒ– SDLï¼Œéœ€è¦ SDL2.dll"
- IDS_2113 "确定è¦ç¡¬é‡ç½®æ¨¡æ‹Ÿå™¨å—?"
- IDS_2114 "确定è¦é€€å‡º 86Box å—?"
- IDS_2115 "æ— æ³•åˆå§‹åŒ– Ghostscript"
- IDS_2116 "ç£å…‰ç›˜ %i (%ls): %ls"
- IDS_2117 "ç£å…‰ç›˜é•œåƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0"
- IDS_2118 "欢迎使用 86Boxï¼"
- IDS_2119 "内部控制器"
- IDS_2120 "退出"
- IDS_2121 "找ä¸åˆ° ROM"
- IDS_2122 "è¦ä¿å˜è®¾ç½®å—?"
- IDS_2123 "æ¤æ“作将硬é‡ç½®æ¨¡æ‹Ÿå™¨ã€‚"
- IDS_2124 "ä¿å˜"
- IDS_2125 "关于 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "检查 BPB"
+ IDS_2089 "KB"
+ IDS_2090 "æ— æ³•åˆå§‹åŒ–视频渲染器。"
+ IDS_2091 "默认"
+ IDS_2092 "%i ç‰å¾…çŠ¶æ€ (WS)"
+ IDS_2093 "类型"
+ IDS_2094 "设置 PCap 失败"
+ IDS_2095 "未找到 PCap 设备"
+ IDS_2096 "æ— æ•ˆ PCap 设备"
+ IDS_2097 "æ ‡å‡† 2 é”®æ“纵æ†"
+ IDS_2098 "æ ‡å‡† 4 é”®æ“纵æ†"
+ IDS_2099 "æ ‡å‡† 6 é”®æ“纵æ†"
+ IDS_2100 "æ ‡å‡† 8 é”®æ“纵æ†"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "æ— "
+ IDS_2105 "æ— æ³•åŠ è½½é”®ç›˜åŠ é€Ÿå™¨ã€‚"
+ IDS_2106 "æ— æ³•æ³¨å†ŒåŽŸå§‹è¾“å…¥ã€‚"
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "软盘 %i (%s): %ls"
+ IDS_2110 "æ‰€æœ‰é•œåƒ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0é«˜çº§æ‰‡åŒºé•œåƒ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0åŸºæœ¬æ‰‡åŒºé•œåƒ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux é•œåƒ (*.FDI)\0*.FDI\0表é¢é•œåƒ (*.86F;*.MFM)\0*.86F;*.MFM\0所有文件 (*.*)\0*.*\0"
+ IDS_2111 "æ— æ³•åˆå§‹åŒ– FreeType"
+ IDS_2112 "æ— æ³•åˆå§‹åŒ– SDLï¼Œéœ€è¦ SDL2.dll"
+ IDS_2113 "确定è¦ç¡¬é‡ç½®æ¨¡æ‹Ÿå™¨å—?"
+ IDS_2114 "确定è¦é€€å‡º 86Box å—?"
+ IDS_2115 "æ— æ³•åˆå§‹åŒ– Ghostscript"
+ IDS_2116 "ç£å…‰ç›˜ %i (%ls): %ls"
+ IDS_2117 "ç£å…‰ç›˜é•œåƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0"
+ IDS_2118 "欢迎使用 86Boxï¼"
+ IDS_2119 "内部控制器"
+ IDS_2120 "退出"
+ IDS_2121 "找ä¸åˆ° ROM"
+ IDS_2122 "è¦ä¿å˜è®¾ç½®å—?"
+ IDS_2123 "æ¤æ“作将硬é‡ç½®æ¨¡æ‹Ÿå™¨ã€‚"
+ IDS_2124 "ä¿å˜"
+ IDS_2125 "关于 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "一个旧å¼è®¡ç®—机模拟器\n\n作者: Sarah Walkerã€Miran Grcaã€Fred N. van Kempen (waltje)ã€SA1988ã€Tiseno100ã€reenigneã€leileiã€JohnElliottã€greatpsycho ç‰äººã€‚\n\næœ¬è½¯ä»¶ä¾æ® GNU 通用公共许å¯è¯ç¬¬äºŒç‰ˆæˆ–更新版本å‘å¸ƒã€‚è¯¦æƒ…è§ LICENSE 文件。"
- IDS_2128 "确定"
- IDS_2129 "硬件ä¸å¯ç”¨"
+ IDS_2127 "一个旧å¼è®¡ç®—机模拟器\n\n作者: Sarah Walkerã€Miran Grcaã€Fred N. van Kempen (waltje)ã€SA1988ã€Tiseno100ã€reenigneã€leileiã€JohnElliottã€greatpsycho ç‰äººã€‚\n\næœ¬è½¯ä»¶ä¾æ® GNU 通用公共许å¯è¯ç¬¬äºŒç‰ˆæˆ–更新版本å‘å¸ƒã€‚è¯¦æƒ…è§ LICENSE 文件。"
+ IDS_2128 "确定"
+ IDS_2129 "硬件ä¸å¯ç”¨"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "请确认 " LIB_NAME_PCAP " 已安装且使用兼容 " LIB_NAME_PCAP " 的网络连接。"
- IDS_2131 "æ— æ•ˆé…ç½®"
+ IDS_2130 "请确认 " LIB_NAME_PCAP " 已安装且使用兼容 " LIB_NAME_PCAP " 的网络连接。"
+ IDS_2131 "æ— æ•ˆé…ç½®"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 "ESC/P æ‰“å°æœºæ¨¡æ‹Ÿéœ€è¦" LIB_NAME_FREETYPE
+ IDS_2132 "ESC/P æ‰“å°æœºæ¨¡æ‹Ÿéœ€è¦" LIB_NAME_FREETYPE
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " 是将 PostScript 文件转æ¢ä¸º PDF 所需è¦çš„库。\n\n使用通用 PostScript æ‰“å°æœºæ‰“å°çš„æ–‡æ¡£å°†è¢«ä¿å˜ä¸º PostScript (.ps) 文件。"
+ IDS_2133 LIB_NAME_GS " 是将 PostScript 文件转æ¢ä¸º PDF 所需è¦çš„库。\n\n使用通用 PostScript æ‰“å°æœºæ‰“å°çš„æ–‡æ¡£å°†è¢«ä¿å˜ä¸º PostScript (.ps) 文件。"
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 "FluidSynth MIDI 输出需è¦" LIB_NAME_FLUIDSYNTH
- IDS_2135 "æ£åœ¨è¿›å…¥å…¨å±æ¨¡å¼"
- IDS_2136 "ä¸è¦å†æ˜¾ç¤ºæ¤æ¶ˆæ¯"
- IDS_2137 "ä¸é€€å‡º"
- IDS_2138 "é‡ç½®"
- IDS_2139 "ä¸é‡ç½®"
- IDS_2140 "ç£å…‰ç›˜é•œåƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0"
- IDS_2141 "å…‰ç›˜é•œåƒ (*.ISO;*.CUE)\0*.ISO;*.CUE\0所有文件 (*.*)\0*.*\0"
- IDS_2142 "%hs 设备é…ç½®"
+ IDS_2134 "FluidSynth MIDI 输出需è¦" LIB_NAME_FLUIDSYNTH
+ IDS_2135 "æ£åœ¨è¿›å…¥å…¨å±æ¨¡å¼"
+ IDS_2136 "ä¸è¦å†æ˜¾ç¤ºæ¤æ¶ˆæ¯"
+ IDS_2137 "ä¸é€€å‡º"
+ IDS_2138 "é‡ç½®"
+ IDS_2139 "ä¸é‡ç½®"
+ IDS_2140 "ç£å…‰ç›˜é•œåƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0"
+ IDS_2141 "å…‰ç›˜é•œåƒ (*.ISO;*.CUE)\0*.ISO;*.CUE\0所有文件 (*.*)\0*.*\0"
+ IDS_2142 "%hs 设备é…ç½®"
IDS_2143 "显示器处在ç¡çœ 状æ€"
- IDS_2144 "OpenGL ç€è‰²å™¨ (*.GLSL)\0*.GLSL\0所有文件 (*.*)\0*.*\0"
- IDS_2145 "OpenGL 选项"
- IDS_2146 "æ£åœ¨è½½å…¥ä¸€ä¸ªä¸å—支æŒçš„é…ç½®"
- IDS_2147 "æ¤æ¨¡æ‹Ÿè®¡ç®—机ç¦ç”¨äº†åŸºäºŽé€‰å®šè®¡ç®—机的 CPU 类型过滤。\n\n能够选ä¸ä¸Žæ‰€é€‰æœºå™¨æœ¬ä¸å…¼å®¹çš„ CPU,但是å¯èƒ½ä¼šé‡åˆ°ä¸Žæœºå™¨ BIOS 或其他软件ä¸å…¼å®¹çš„问题。\n\nå¯ç”¨æ¤è®¾ç½®ä¸å—官方支æŒï¼Œå¹¶ä¸”æäº¤çš„任何错误报告å¯èƒ½ä¼šè§†ä¸ºæ— 效而关é—。"
- IDS_2148 "ç»§ç»"
- IDS_2149 "ç£å¸¦: %s"
- IDS_2150 "ç£å¸¦é•œåƒ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0所有文件 (*.*)\0*.*\0"
- IDS_2151 "å¡å¸¦ %i: %ls"
- IDS_2152 "å¡å¸¦é•œåƒ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0所有文件 (*.*)\0*.*\0"
- IDS_2153 "åˆå§‹åŒ–渲染器时出错"
- IDS_2154 "æ— æ³•åˆå§‹åŒ– OpenGL (3.0 æ ¸å¿ƒ) 渲染器。请使用其他渲染器。"
- IDS_2155 "æ¢å¤æ‰§è¡Œ"
- IDS_2156 "æš‚åœæ‰§è¡Œ"
- IDS_2157 "按下 Ctrl+Alt+Del"
- IDS_2158 "按下 Ctrl+Alt+Esc"
- IDS_2159 "硬é‡ç½®"
- IDS_2160 "ACPI 关机"
- IDS_2161 "设置"
+ IDS_2144 "OpenGL ç€è‰²å™¨ (*.GLSL)\0*.GLSL\0所有文件 (*.*)\0*.*\0"
+ IDS_2145 "OpenGL 选项"
+ IDS_2146 "æ£åœ¨è½½å…¥ä¸€ä¸ªä¸å—支æŒçš„é…ç½®"
+ IDS_2147 "æ¤æ¨¡æ‹Ÿè®¡ç®—机ç¦ç”¨äº†åŸºäºŽé€‰å®šè®¡ç®—机的 CPU 类型过滤。\n\n能够选ä¸ä¸Žæ‰€é€‰æœºå™¨æœ¬ä¸å…¼å®¹çš„ CPU,但是å¯èƒ½ä¼šé‡åˆ°ä¸Žæœºå™¨ BIOS 或其他软件ä¸å…¼å®¹çš„问题。\n\nå¯ç”¨æ¤è®¾ç½®ä¸å—官方支æŒï¼Œå¹¶ä¸”æäº¤çš„任何错误报告å¯èƒ½ä¼šè§†ä¸ºæ— 效而关é—。"
+ IDS_2148 "ç»§ç»"
+ IDS_2149 "ç£å¸¦: %s"
+ IDS_2150 "ç£å¸¦é•œåƒ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0所有文件 (*.*)\0*.*\0"
+ IDS_2151 "å¡å¸¦ %i: %ls"
+ IDS_2152 "å¡å¸¦é•œåƒ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0所有文件 (*.*)\0*.*\0"
+ IDS_2153 "åˆå§‹åŒ–渲染器时出错"
+ IDS_2154 "æ— æ³•åˆå§‹åŒ– OpenGL (3.0 æ ¸å¿ƒ) 渲染器。请使用其他渲染器。"
+ IDS_2155 "æ¢å¤æ‰§è¡Œ"
+ IDS_2156 "æš‚åœæ‰§è¡Œ"
+ IDS_2157 "按下 Ctrl+Alt+Del"
+ IDS_2158 "按下 Ctrl+Alt+Esc"
+ IDS_2159 "硬é‡ç½®"
+ IDS_2160 "ACPI 关机"
+ IDS_2161 "设置"
IDS_2162 "早先的驱动器"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "硬盘 (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "ä¸å˜åœ¨ MFM/RLL 或 ESDI CD-ROM 驱动器"
- IDS_4100 "自定义..."
- IDS_4101 "自定义 (大容é‡)..."
- IDS_4102 "æ·»åŠ æ–°ç¡¬ç›˜"
- IDS_4103 "æ·»åŠ å·²å˜åœ¨çš„硬盘"
- IDS_4104 "HDI ç£ç›˜é•œåƒä¸èƒ½è¶…过 4 GB。"
- IDS_4105 "ç£ç›˜é•œåƒä¸èƒ½è¶…过 127 GB。"
- IDS_4106 "ç¡¬ç›˜é•œåƒ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0所有文件 (*.*)\0*.*\0"
- IDS_4107 "æ— æ³•è¯»å–æ–‡ä»¶"
- IDS_4108 "æ— æ³•å†™å…¥æ–‡ä»¶"
- IDS_4109 "䏿”¯æŒéž 512 å—节扇区大å°çš„ HDI 或 HDX 镜åƒã€‚"
- IDS_4110 "å°šæœªæ”¯æŒ USB"
- IDS_4111 "ç£ç›˜é•œåƒæ–‡ä»¶å·²å˜åœ¨"
- IDS_4112 "请指定有效的文件å。"
- IDS_4113 "已创建ç£ç›˜é•œåƒ"
- IDS_4114 "è¯·ç¡®å®šæ¤æ–‡ä»¶å·²å˜åœ¨å¹¶å¯è¯»å–。"
- IDS_4115 "è¯·ç¡®å®šæ¤æ–‡ä»¶ä¿å˜åœ¨å¯å†™ç›®å½•ä¸ã€‚"
- IDS_4116 "ç£ç›˜é•œåƒå¤ªå¤§"
- IDS_4117 "请记得为新创建的镜åƒåˆ†åŒºå¹¶æ ¼å¼åŒ–。"
- IDS_4118 "选定的文件将被覆盖。确定继ç»ä½¿ç”¨æ¤æ–‡ä»¶å—?"
- IDS_4119 "䏿”¯æŒçš„ç£ç›˜é•œåƒ"
- IDS_4120 "覆盖"
- IDS_4121 "ä¸è¦†ç›–"
- IDS_4122 "åŽŸå§‹é•œåƒ (.img)"
- IDS_4123 "HDI é•œåƒ (.hdi)"
- IDS_4124 "HDX é•œåƒ (.hdx)"
- IDS_4125 "å›ºå®šå¤§å° VHD (.vhd)"
- IDS_4126 "动æ€å¤§å° VHD (.vhd)"
- IDS_4127 "差分 VHD (.vhd)"
- IDS_4128 "å¤§å— (2 MB)"
- IDS_4129 "å°å— (512 KB)"
- IDS_4130 "VHD 文件 (*.VHD)\0*.VHD\0所有文件 (*.*)\0*.*\0"
- IDS_4131 "选择父 VHD 文件"
- IDS_4132 "çˆ¶æ˜ åƒå¯èƒ½åœ¨åˆ›å»ºå·®å¼‚镜åƒåŽè¢«ä¿®æ”¹ã€‚\n\nå¦‚æžœé•œåƒæ–‡ä»¶è¢«ç§»åŠ¨æˆ–å¤åˆ¶ï¼Œæˆ–创建æ¤ç£ç›˜çš„程åºä¸å˜åœ¨é”™è¯¯ï¼Œä¹Ÿå¯èƒ½å‘ç”Ÿè¿™ç§æƒ…况。\n\n是å¦éœ€è¦ä¿®å¤æ—¶é—´æˆ³ï¼Ÿ"
- IDS_4133 "父盘与å盘的时间戳ä¸åŒ¹é…"
- IDS_4134 "æ— æ³•ä¿®å¤ VHD 时间戳。"
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "ä¸å˜åœ¨ MFM/RLL 或 ESDI CD-ROM 驱动器"
+ IDS_4100 "自定义..."
+ IDS_4101 "自定义 (大容é‡)..."
+ IDS_4102 "æ·»åŠ æ–°ç¡¬ç›˜"
+ IDS_4103 "æ·»åŠ å·²å˜åœ¨çš„硬盘"
+ IDS_4104 "HDI ç£ç›˜é•œåƒä¸èƒ½è¶…过 4 GB。"
+ IDS_4105 "ç£ç›˜é•œåƒä¸èƒ½è¶…过 127 GB。"
+ IDS_4106 "ç¡¬ç›˜é•œåƒ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0所有文件 (*.*)\0*.*\0"
+ IDS_4107 "æ— æ³•è¯»å–æ–‡ä»¶"
+ IDS_4108 "æ— æ³•å†™å…¥æ–‡ä»¶"
+ IDS_4109 "䏿”¯æŒéž 512 å—节扇区大å°çš„ HDI 或 HDX 镜åƒã€‚"
+ IDS_4110 "å°šæœªæ”¯æŒ USB"
+ IDS_4111 "ç£ç›˜é•œåƒæ–‡ä»¶å·²å˜åœ¨"
+ IDS_4112 "请指定有效的文件å。"
+ IDS_4113 "已创建ç£ç›˜é•œåƒ"
+ IDS_4114 "è¯·ç¡®å®šæ¤æ–‡ä»¶å·²å˜åœ¨å¹¶å¯è¯»å–。"
+ IDS_4115 "è¯·ç¡®å®šæ¤æ–‡ä»¶ä¿å˜åœ¨å¯å†™ç›®å½•ä¸ã€‚"
+ IDS_4116 "ç£ç›˜é•œåƒå¤ªå¤§"
+ IDS_4117 "请记得为新创建的镜åƒåˆ†åŒºå¹¶æ ¼å¼åŒ–。"
+ IDS_4118 "选定的文件将被覆盖。确定继ç»ä½¿ç”¨æ¤æ–‡ä»¶å—?"
+ IDS_4119 "䏿”¯æŒçš„ç£ç›˜é•œåƒ"
+ IDS_4120 "覆盖"
+ IDS_4121 "ä¸è¦†ç›–"
+ IDS_4122 "åŽŸå§‹é•œåƒ (.img)"
+ IDS_4123 "HDI é•œåƒ (.hdi)"
+ IDS_4124 "HDX é•œåƒ (.hdx)"
+ IDS_4125 "å›ºå®šå¤§å° VHD (.vhd)"
+ IDS_4126 "动æ€å¤§å° VHD (.vhd)"
+ IDS_4127 "差分 VHD (.vhd)"
+ IDS_4128 "å¤§å— (2 MB)"
+ IDS_4129 "å°å— (512 KB)"
+ IDS_4130 "VHD 文件 (*.VHD)\0*.VHD\0所有文件 (*.*)\0*.*\0"
+ IDS_4131 "选择父 VHD 文件"
+ IDS_4132 "çˆ¶æ˜ åƒå¯èƒ½åœ¨åˆ›å»ºå·®å¼‚镜åƒåŽè¢«ä¿®æ”¹ã€‚\n\nå¦‚æžœé•œåƒæ–‡ä»¶è¢«ç§»åŠ¨æˆ–å¤åˆ¶ï¼Œæˆ–创建æ¤ç£ç›˜çš„程åºä¸å˜åœ¨é”™è¯¯ï¼Œä¹Ÿå¯èƒ½å‘ç”Ÿè¿™ç§æƒ…况。\n\n是å¦éœ€è¦ä¿®å¤æ—¶é—´æˆ³ï¼Ÿ"
+ IDS_4133 "父盘与å盘的时间戳ä¸åŒ¹é…"
+ IDS_4134 "æ— æ³•ä¿®å¤ VHD 时间戳。"
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "光盘 %i (%s): %s"
+ IDS_5120 "光盘 %i (%s): %s"
- IDS_5376 "ç¦ç”¨"
- IDS_5381 "ATAPI"
+ IDS_5376 "ç¦ç”¨"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "ç¦ç”¨"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "ç¦ç”¨"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (1024 ç°‡)"
- IDS_5898 "DMF (2048 ç°‡)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5 英寸 128 MB (ISO 10090)"
- IDS_5903 "3.5 英寸 230 MB (ISO 13963)"
- IDS_5904 "3.5 英寸 540 MB (ISO 15498)"
- IDS_5905 "3.5 英寸 640 MB (ISO 15498)"
- IDS_5906 "3.5 英寸 1.3 GB (GigaMO)"
- IDS_5907 "3.5 英寸 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25 英寸 600 MB"
- IDS_5909 "5.25 英寸 650 MB"
- IDS_5910 "5.25 英寸 1 GB"
- IDS_5911 "5.25 英寸 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (1024 ç°‡)"
+ IDS_5898 "DMF (2048 ç°‡)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5 英寸 128 MB (ISO 10090)"
+ IDS_5903 "3.5 英寸 230 MB (ISO 13963)"
+ IDS_5904 "3.5 英寸 540 MB (ISO 15498)"
+ IDS_5905 "3.5 英寸 640 MB (ISO 15498)"
+ IDS_5906 "3.5 英寸 1.3 GB (GigaMO)"
+ IDS_5907 "3.5 英寸 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25 英寸 600 MB"
+ IDS_5909 "5.25 英寸 650 MB"
+ IDS_5910 "5.25 英寸 1 GB"
+ IDS_5911 "5.25 英寸 1.3 GB"
- IDS_6144 "æ ‡å‡†è½¬é€Ÿ (RPM)"
- IDS_6145 "ä½ŽäºŽæ ‡å‡†è½¬é€Ÿçš„ 1%"
- IDS_6146 "ä½ŽäºŽæ ‡å‡†è½¬é€Ÿçš„ 1.5%"
- IDS_6147 "ä½ŽäºŽæ ‡å‡†è½¬é€Ÿçš„ 2%"
+ IDS_6144 "æ ‡å‡†è½¬é€Ÿ (RPM)"
+ IDS_6145 "ä½ŽäºŽæ ‡å‡†è½¬é€Ÿçš„ 1%"
+ IDS_6146 "ä½ŽäºŽæ ‡å‡†è½¬é€Ÿçš„ 1.5%"
+ IDS_6147 "ä½ŽäºŽæ ‡å‡†è½¬é€Ÿçš„ 2%"
- IDS_7168 "(系统默认)"
+ IDS_7168 "(系统默认)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Simplified Chinese resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/languages/zh-TW.rc b/src/win/languages/zh-TW.rc
index 6c2d87545..eda95096f 100644
--- a/src/win/languages/zh-TW.rc
+++ b/src/win/languages/zh-TW.rc
@@ -13,122 +13,122 @@ LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL
// Menu
//
-MainMenu MENU DISCARDABLE
+MainMenu MENU DISCARDABLE
BEGIN
POPUP "動作(&A)"
BEGIN
- MENUITEM "éµç›¤éœ€è¦æ•æ‰(&K)", IDM_ACTION_KBD_REQ_CAPTURE
- MENUITEM "å°‡å³ CTRL 鵿˜ 射為左 ALT éµ(&R)", IDM_ACTION_RCTRL_IS_LALT
+ MENUITEM "éµç›¤éœ€è¦æ•æ‰(&K)", IDM_ACTION_KBD_REQ_CAPTURE
+ MENUITEM "å°‡å³ CTRL 鵿˜ 射為左 ALT éµ(&R)", IDM_ACTION_RCTRL_IS_LALT
MENUITEM SEPARATOR
- MENUITEM "硬é‡è¨(&H)...", IDM_ACTION_HRESET
- MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
+ MENUITEM "硬é‡è¨(&H)...", IDM_ACTION_HRESET
+ MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD
MENUITEM SEPARATOR
- MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
+ MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
- MENUITEM "æš«åœ(&P)", IDM_ACTION_PAUSE
+ MENUITEM "æš«åœ(&P)", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
- MENUITEM "退出(&X)...", IDM_ACTION_EXIT
+ MENUITEM "退出(&X)...", IDM_ACTION_EXIT
END
POPUP "檢視(&V)"
BEGIN
- MENUITEM "éš±è—狀態列(&H)", IDM_VID_HIDE_STATUS_BAR
- MENUITEM "éš±è—工具列(&T)", IDM_VID_HIDE_TOOLBAR
+ MENUITEM "éš±è—狀態列(&H)", IDM_VID_HIDE_STATUS_BAR
+ MENUITEM "éš±è—工具列(&T)", IDM_VID_HIDE_TOOLBAR
MENUITEM SEPARATOR
- MENUITEM "Show non-primary monitors(&S)", IDM_VID_MONITORS
- MENUITEM "視窗大å°å¯èª¿(&R)", IDM_VID_RESIZE
- MENUITEM "記ä½è¦–窗大å°å’Œä½ç½®(&E)", IDM_VID_REMEMBER
+ MENUITEM "Show non-primary monitors(&S)", IDM_VID_MONITORS
+ MENUITEM "視窗大å°å¯èª¿(&R)", IDM_VID_RESIZE
+ MENUITEM "記ä½è¦–窗大å°å’Œä½ç½®(&E)", IDM_VID_REMEMBER
MENUITEM SEPARATOR
POPUP "渲染器(&N)"
BEGIN
- MENUITEM "SDL (軟體)(&S)", IDM_VID_SDL_SW
- MENUITEM "SDL (硬體)(&H)", IDM_VID_SDL_HW
- MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
- MENUITEM "OpenGL (3.0 æ ¸å¿ƒ)(&G)", IDM_VID_OPENGL_CORE
+ MENUITEM "SDL (軟體)(&S)", IDM_VID_SDL_SW
+ MENUITEM "SDL (硬體)(&H)", IDM_VID_SDL_HW
+ MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
+ MENUITEM "OpenGL (3.0 æ ¸å¿ƒ)(&G)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
- MENUITEM "VNC(&V)", IDM_VID_VNC
+ MENUITEM "VNC(&V)", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
- MENUITEM "指定視窗大å°...", IDM_VID_SPECIFY_DIM
- MENUITEM "強制 4:3 顯示比例(&O)", IDM_VID_FORCE43
+ MENUITEM "指定視窗大å°...", IDM_VID_SPECIFY_DIM
+ MENUITEM "強制 4:3 顯示比例(&O)", IDM_VID_FORCE43
POPUP "視窗縮放係數(&W)"
BEGIN
- MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X
- MENUITEM "1x(&1)", IDM_VID_SCALE_2X
- MENUITEM "1.5x(&5)", IDM_VID_SCALE_3X
- MENUITEM "2x(&2)", IDM_VID_SCALE_4X
- MENUITEM "&3x", IDM_VID_SCALE_5X
- MENUITEM "&4x", IDM_VID_SCALE_6X
- MENUITEM "&5x", IDM_VID_SCALE_7X
- MENUITEM "&6x", IDM_VID_SCALE_8X
- MENUITEM "&7x", IDM_VID_SCALE_9X
- MENUITEM "&8x", IDM_VID_SCALE_10X
+ MENUITEM "0.5x(&0)", IDM_VID_SCALE_1X
+ MENUITEM "1x(&1)", IDM_VID_SCALE_2X
+ MENUITEM "1.5x(&5)", IDM_VID_SCALE_3X
+ MENUITEM "2x(&2)", IDM_VID_SCALE_4X
+ MENUITEM "&3x", IDM_VID_SCALE_5X
+ MENUITEM "&4x", IDM_VID_SCALE_6X
+ MENUITEM "&5x", IDM_VID_SCALE_7X
+ MENUITEM "&6x", IDM_VID_SCALE_8X
+ MENUITEM "&7x", IDM_VID_SCALE_9X
+ MENUITEM "&8x", IDM_VID_SCALE_10X
END
POPUP "éŽæ¿¾æ–¹å¼"
BEGIN
- MENUITEM "é„°è¿‘(&N)", IDM_VID_FILTER_NEAREST
- MENUITEM "線性(&L)", IDM_VID_FILTER_LINEAR
+ MENUITEM "é„°è¿‘(&N)", IDM_VID_FILTER_NEAREST
+ MENUITEM "線性(&L)", IDM_VID_FILTER_LINEAR
END
- MENUITEM "HiDPI 縮放(&D)", IDM_VID_HIDPI
+ MENUITEM "HiDPI 縮放(&D)", IDM_VID_HIDPI
MENUITEM SEPARATOR
- MENUITEM "全螢幕(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
+ MENUITEM "全螢幕(&F)\tCtrl+Alt+PgUp", IDM_VID_FULLSCREEN
POPUP "全螢幕拉伸模å¼(&S)"
BEGIN
- MENUITEM "全螢幕拉伸(&F)", IDM_VID_FS_FULL
- MENUITEM "4:3(&4)", IDM_VID_FS_43
+ MENUITEM "全螢幕拉伸(&F)", IDM_VID_FS_FULL
+ MENUITEM "4:3(&4)", IDM_VID_FS_43
MENUITEM "ä¿æŒæ¯”例(&S)", IDM_VID_FS_KEEPRATIO
- MENUITEM "整數比例(&I)", IDM_VID_FS_INT
+ MENUITEM "整數比例(&I)", IDM_VID_FS_INT
END
POPUP "EGA/(S)VGA è¨å®š(&G)"
BEGIN
- MENUITEM "VGA 顯示器å色顯示(&I)", IDM_VID_INVERT
+ MENUITEM "VGA 顯示器å色顯示(&I)", IDM_VID_INVERT
POPUP "VGA 螢幕類型(&T)"
BEGIN
- MENUITEM "RGB 彩色(&C)", IDM_VID_GRAY_RGB
- MENUITEM "RGB ç°åº¦(&R)", IDM_VID_GRAY_MONO
- MENUITEM "ç¥ç€è‰²å–®è‰²é¡¯ç¤ºå™¨(&A)", IDM_VID_GRAY_AMBER
- MENUITEM "ç¶ è‰²å–®è‰²é¡¯ç¤ºå™¨(&G)", IDM_VID_GRAY_GREEN
- MENUITEM "白色單色顯示器(&W)", IDM_VID_GRAY_WHITE
+ MENUITEM "RGB 彩色(&C)", IDM_VID_GRAY_RGB
+ MENUITEM "RGB ç°åº¦(&R)", IDM_VID_GRAY_MONO
+ MENUITEM "ç¥ç€è‰²å–®è‰²é¡¯ç¤ºå™¨(&A)", IDM_VID_GRAY_AMBER
+ MENUITEM "ç¶ è‰²å–®è‰²é¡¯ç¤ºå™¨(&G)", IDM_VID_GRAY_GREEN
+ MENUITEM "白色單色顯示器(&W)", IDM_VID_GRAY_WHITE
END
POPUP "ç°åº¦è½‰æ›é¡žåž‹(&C)"
BEGIN
- MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
- MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
- MENUITEM "å¹³å‡(&A)", IDM_VID_GRAYCT_AVE
+ MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601
+ MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709
+ MENUITEM "å¹³å‡(&A)", IDM_VID_GRAYCT_AVE
END
END
MENUITEM SEPARATOR
- MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGA éŽæŽƒæ(&G)", IDM_VID_OVERSCAN
+ MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGA éŽæŽƒæ(&G)", IDM_VID_OVERSCAN
MENUITEM "è®Šæ›´å–®è‰²é¡¯ç¤ºå°æ¯”度(&M)", IDM_VID_CGACON
END
- MENUITEM "介質(&M)", IDM_MEDIA
+ MENUITEM "介質(&M)", IDM_MEDIA
POPUP "工具(&T)"
BEGIN
- MENUITEM "è¨å®š(&S)...", IDM_CONFIG
- MENUITEM "更新狀態列圖示(&U)", IDM_UPDATE_ICONS
+ MENUITEM "è¨å®š(&S)...", IDM_CONFIG
+ MENUITEM "更新狀態列圖示(&U)", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
- MENUITEM "擷圖(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
+ MENUITEM "擷圖(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
- MENUITEM "首é¸é …(&P)...", IDM_PREFERENCES
+ MENUITEM "首é¸é …(&P)...", IDM_PREFERENCES
#ifdef DISCORD
MENUITEM "啟用 Discord æ•´åˆ(&D)", IDM_DISCORD
#endif
MENUITEM SEPARATOR
- MENUITEM "音é‡å¢žç›Š(&G)...", IDM_SND_GAIN
+ MENUITEM "音é‡å¢žç›Š(&G)...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
- MENUITEM "開始追踪\tCtrl+T", IDM_ACTION_BEGIN_TRACE
- MENUITEM "çµæŸè¿½è¸ª\tCtrl+T", IDM_ACTION_END_TRACE
+ MENUITEM "開始追踪\tCtrl+T", IDM_ACTION_BEGIN_TRACE
+ MENUITEM "çµæŸè¿½è¸ª\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
POPUP "說明(&H)"
BEGIN
- MENUITEM "文件(&D)...", IDM_DOCS
- MENUITEM "關於 86Box(&A)...", IDM_ABOUT
+ MENUITEM "文件(&D)...", IDM_DOCS
+ MENUITEM "關於 86Box(&A)...", IDM_ABOUT
END
END
-StatusBarMenu MENU DISCARDABLE
+StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
@@ -137,17 +137,17 @@ CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新增é¡åƒ(&N)...", IDM_CASSETTE_IMAGE_NEW
+ MENUITEM "æ–°å¢žæ˜ åƒ(&N)...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒ(&E)...", IDM_CASSETTE_IMAGE_EXISTING
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒä¸¦å¯«ä¿è·(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒ(&E)...", IDM_CASSETTE_IMAGE_EXISTING
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒä¸¦å¯«ä¿è·(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "錄製(&R)", IDM_CASSETTE_RECORD
- MENUITEM "æ’æ”¾(&P)", IDM_CASSETTE_PLAY
- MENUITEM "倒帶至起點(&R)", IDM_CASSETTE_REWIND
- MENUITEM "快進至終點(&F)", IDM_CASSETTE_FAST_FORWARD
+ MENUITEM "錄製(&R)", IDM_CASSETTE_RECORD
+ MENUITEM "æ’æ”¾(&P)", IDM_CASSETTE_PLAY
+ MENUITEM "倒帶至起點(&R)", IDM_CASSETTE_REWIND
+ MENUITEM "快進至終點(&F)", IDM_CASSETTE_FAST_FORWARD
MENUITEM SEPARATOR
- MENUITEM "彈出(&J)", IDM_CASSETTE_EJECT
+ MENUITEM "退出(&J)", IDM_CASSETTE_EJECT
END
END
@@ -155,9 +155,9 @@ CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "é¡åƒ(&I)...", IDM_CARTRIDGE_IMAGE
+ MENUITEM "æ˜ åƒ(&I)...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
- MENUITEM "彈出(&J)", IDM_CARTRIDGE_EJECT
+ MENUITEM "退出(&J)", IDM_CARTRIDGE_EJECT
END
END
@@ -165,14 +165,14 @@ FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新增é¡åƒ(&N)...", IDM_FLOPPY_IMAGE_NEW
+ MENUITEM "æ–°å¢žæ˜ åƒ(&N)...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒ(&E)...", IDM_FLOPPY_IMAGE_EXISTING
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒä¸¦å¯«ä¿è·(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒ(&E)...", IDM_FLOPPY_IMAGE_EXISTING
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒä¸¦å¯«ä¿è·(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "匯出為 86F æ ¼å¼(&x)...", IDM_FLOPPY_EXPORT_TO_86F
+ MENUITEM "匯出為 86F æ ¼å¼(&x)...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
- MENUITEM "彈出(&J)", IDM_FLOPPY_EJECT
+ MENUITEM "退出(&J)", IDM_FLOPPY_EJECT
END
END
@@ -180,13 +180,13 @@ CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "éœéŸ³(&M)", IDM_CDROM_MUTE
+ MENUITEM "éœéŸ³(&M)", IDM_CDROM_MUTE
MENUITEM SEPARATOR
- MENUITEM "空置光碟機(&M)", IDM_CDROM_EMPTY
- MENUITEM "載入上一個é¡åƒ(&R)", IDM_CDROM_RELOAD
+ MENUITEM "空置光碟機(&M)", IDM_CDROM_EMPTY
+ MENUITEM "è¼‰å…¥ä¸Šä¸€å€‹æ˜ åƒ(&R)", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
- MENUITEM "é¡åƒ(&I)...", IDM_CDROM_IMAGE
- MENUITEM "資料夾(&F)...", IDM_CDROM_DIR
+ MENUITEM "æ˜ åƒ(&I)...", IDM_CDROM_IMAGE
+ MENUITEM "資料夾(&F)...", IDM_CDROM_DIR
END
END
@@ -194,13 +194,13 @@ ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新增é¡åƒ(&N)...", IDM_ZIP_IMAGE_NEW
+ MENUITEM "æ–°å¢žæ˜ åƒ(&N)...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒ(&E)...", IDM_ZIP_IMAGE_EXISTING
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒä¸¦å¯«ä¿è·(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒ(&E)...", IDM_ZIP_IMAGE_EXISTING
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒä¸¦å¯«ä¿è·(&W)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "彈出(&J)", IDM_ZIP_EJECT
- MENUITEM "載入上一個é¡åƒ(&R)", IDM_ZIP_RELOAD
+ MENUITEM "退出(&J)", IDM_ZIP_EJECT
+ MENUITEM "è¼‰å…¥ä¸Šä¸€å€‹æ˜ åƒ(&R)", IDM_ZIP_RELOAD
END
END
@@ -208,13 +208,13 @@ MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
- MENUITEM "新增é¡åƒ(&N)...", IDM_MO_IMAGE_NEW
+ MENUITEM "æ–°å¢žæ˜ åƒ(&N)...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒ(&E)...", IDM_MO_IMAGE_EXISTING
- MENUITEM "開啟已å˜åœ¨çš„é¡åƒä¸¦å¯«ä¿è·(&W)...", IDM_MO_IMAGE_EXISTING_WP
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒ(&E)...", IDM_MO_IMAGE_EXISTING
+ MENUITEM "開啟已å˜åœ¨çš„æ˜ åƒä¸¦å¯«ä¿è·(&W)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
- MENUITEM "é¡åƒ(&J)", IDM_MO_EJECT
- MENUITEM "載入上一個é¡åƒ(&R)", IDM_MO_RELOAD
+ MENUITEM "退出(&J)", IDM_MO_EJECT
+ MENUITEM "è¼‰å…¥ä¸Šä¸€å€‹æ˜ åƒ(&R)", IDM_MO_RELOAD
END
END
@@ -230,7 +230,7 @@ BEGIN
MENUITEM "75 fps(&7)", IDM_VID_GL_FPS_75
END
MENUITEM "åž‚ç›´åŒæ¥(&V)", IDM_VID_GL_VSYNC
- MENUITEM "鏿“‡è‘—色器(&S)...", IDM_VID_GL_SHADER
+ MENUITEM "é¸å–著色器(&S)...", IDM_VID_GL_SHADER
MENUITEM "移除著色器(&R)", IDM_VID_GL_NOSHADER
END
@@ -240,150 +240,150 @@ END
// Dialog
//
-#define STR_PREFERENCES "首é¸é …"
-#define STR_SND_GAIN "音é‡å¢žç›Š"
-#define STR_NEW_FLOPPY "新增é¡åƒ"
-#define STR_CONFIG "è¨å®š"
-#define STR_SPECIFY_DIM "指定主視窗大å°"
+#define STR_PREFERENCES "首é¸é …"
+#define STR_SND_GAIN "音é‡å¢žç›Š"
+#define STR_NEW_FLOPPY "æ–°å¢žæ˜ åƒ"
+#define STR_CONFIG "è¨å®š"
+#define STR_SPECIFY_DIM "指定主視窗大å°"
-#define STR_OK "確定"
-#define STR_CANCEL "å–æ¶ˆ"
-#define STR_GLOBAL "將以上è¨å®šå˜å„²ç‚ºå…¨å±€é è¨å€¼(&G)"
-#define STR_DEFAULT "é è¨(&D)"
-#define STR_LANGUAGE "語言:"
-#define STR_ICONSET "圖示集:"
+#define STR_OK "確定"
+#define STR_CANCEL "å–æ¶ˆ"
+#define STR_GLOBAL "將以上è¨å®šå˜å„²ç‚ºå…¨å±€é è¨å€¼(&G)"
+#define STR_DEFAULT "é è¨(&D)"
+#define STR_LANGUAGE "語言:"
+#define STR_ICONSET "圖示集:"
-#define STR_GAIN "增益"
+#define STR_GAIN "增益"
-#define STR_FILE_NAME "檔案å:"
-#define STR_DISK_SIZE "ç£ç¢Ÿå¤§å°:"
-#define STR_RPM_MODE "轉速 (RPM) 模å¼:"
-#define STR_PROGRESS "進度:"
+#define STR_FILE_NAME "檔案å:"
+#define STR_DISK_SIZE "ç£ç¢Ÿå¤§å°:"
+#define STR_RPM_MODE "轉速 (RPM) 模å¼:"
+#define STR_PROGRESS "進度:"
-#define STR_WIDTH "寬度:"
-#define STR_HEIGHT "高度:"
-#define STR_LOCK_TO_SIZE "鎖定æ¤å¤§å°"
+#define STR_WIDTH "寬度:"
+#define STR_HEIGHT "高度:"
+#define STR_LOCK_TO_SIZE "鎖定æ¤å¤§å°"
-#define STR_MACHINE_TYPE "機器類型:"
-#define STR_MACHINE "機型:"
-#define STR_CONFIGURE "é…ç½®"
-#define STR_CPU_TYPE "CPU 類型:"
-#define STR_CPU_SPEED "速度:"
-#define STR_FPU "浮點處ç†å™¨ (FPU):"
-#define STR_WAIT_STATES "ç‰å¾…狀態 (WS):"
-#define STR_MB "MB"
-#define STR_MEMORY "記憶體:"
-#define STR_TIME_SYNC "æ™‚é–“åŒæ¥"
-#define STR_DISABLED "ç¦ç”¨"
-#define STR_ENABLED_LOCAL "啟用 (本地時間)"
-#define STR_ENABLED_UTC "啟用 (UTC)"
-#define STR_DYNAREC "å‹•æ…‹é‡ç·¨è¯å™¨"
+#define STR_MACHINE_TYPE "機器類型:"
+#define STR_MACHINE "機型:"
+#define STR_CONFIGURE "é…ç½®"
+#define STR_CPU_TYPE "CPU 類型:"
+#define STR_CPU_SPEED "速度:"
+#define STR_FPU "浮點處ç†å™¨ (FPU):"
+#define STR_WAIT_STATES "ç‰å¾…狀態 (WS):"
+#define STR_MB "MB"
+#define STR_MEMORY "記憶體:"
+#define STR_TIME_SYNC "æ™‚é–“åŒæ¥"
+#define STR_DISABLED "ç¦ç”¨"
+#define STR_ENABLED_LOCAL "啟用 (本地時間)"
+#define STR_ENABLED_UTC "啟用 (UTC)"
+#define STR_DYNAREC "å‹•æ…‹é‡ç·¨è¯å™¨"
-#define STR_VIDEO "顯示å¡:"
-#define STR_VIDEO_2 "é¡¯ç¤ºå¡ 2:"
-#define STR_VOODOO "Voodoo Graphics"
-#define STR_IBM8514 "IBM 8514/a Graphics"
-#define STR_XGA "XGA Graphics"
+#define STR_VIDEO "顯示å¡:"
+#define STR_VIDEO_2 "é¡¯ç¤ºå¡ 2:"
+#define STR_VOODOO "Voodoo Graphics"
+#define STR_IBM8514 "IBM 8514/a Graphics"
+#define STR_XGA "XGA Graphics"
-#define STR_MOUSE "æ»‘é¼ :"
-#define STR_JOYSTICK "æ–æ¡¿:"
-#define STR_JOY1 "æ–æ¡¿ 1..."
-#define STR_JOY2 "æ–æ¡¿ 2..."
-#define STR_JOY3 "æ–æ¡¿ 3..."
-#define STR_JOY4 "æ–æ¡¿ 4..."
+#define STR_MOUSE "æ»‘é¼ :"
+#define STR_JOYSTICK "æ–æ¡¿:"
+#define STR_JOY1 "æ–æ¡¿ 1..."
+#define STR_JOY2 "æ–æ¡¿ 2..."
+#define STR_JOY3 "æ–æ¡¿ 3..."
+#define STR_JOY4 "æ–æ¡¿ 4..."
-#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_FLOAT "使用單精度浮點 (FLOAT32)"
-#define STR_FM_DRIVER "èª¿é »åˆæˆå™¨é©…動器"
-#define STR_FM_DRV_NUKED "Nuked (更準確)"
-#define STR_FM_DRV_YMFM "YMFM (æ›´å¿«)"
+#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_FLOAT "使用單精度浮點 (FLOAT32)"
+#define STR_FM_DRIVER "èª¿é »åˆæˆå™¨é©…動器"
+#define STR_FM_DRV_NUKED "Nuked (更準確)"
+#define STR_FM_DRV_YMFM "YMFM (æ›´å¿«)"
-#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_NET_TYPE "網路類型:"
+#define STR_PCAP "PCap è£ç½®:"
+#define STR_NET "ç¶²è·¯é…æŽ¥å™¨:"
+#define STR_NET1 "ç¶²è·¯å¡ 1:"
+#define STR_NET2 "ç¶²è·¯å¡ 2:"
+#define STR_NET3 "ç¶²è·¯å¡ 3:"
+#define STR_NET4 "ç¶²è·¯å¡ 4:"
-#define STR_COM1 "COM1 è£ç½®:"
-#define STR_COM2 "COM2 è£ç½®:"
-#define STR_COM3 "COM3 è£ç½®:"
-#define STR_COM4 "COM4 è£ç½®:"
-#define STR_LPT1 "LPT1 è£ç½®:"
-#define STR_LPT2 "LPT2 è£ç½®:"
-#define STR_LPT3 "LPT3 è£ç½®:"
-#define STR_LPT4 "LPT4 è£ç½®:"
-#define STR_SERIAL1 "åºåˆ—åŸ 1"
-#define STR_SERIAL2 "åºåˆ—åŸ 2"
-#define STR_SERIAL3 "åºåˆ—åŸ 3"
-#define STR_SERIAL4 "åºåˆ—åŸ 4"
-#define STR_PARALLEL1 "ä¸¦åˆ—åŸ 1"
-#define STR_PARALLEL2 "ä¸¦åˆ—åŸ 2"
-#define STR_PARALLEL3 "ä¸¦åˆ—åŸ 3"
-#define STR_PARALLEL4 "ä¸¦åˆ—åŸ 4"
-#define STR_SERIAL_PASS1 "Serial port passthrough 1"
-#define STR_SERIAL_PASS2 "Serial port passthrough 2"
-#define STR_SERIAL_PASS3 "Serial port passthrough 3"
-#define STR_SERIAL_PASS4 "Serial port passthrough 4"
+#define STR_COM1 "COM1 è£ç½®:"
+#define STR_COM2 "COM2 è£ç½®:"
+#define STR_COM3 "COM3 è£ç½®:"
+#define STR_COM4 "COM4 è£ç½®:"
+#define STR_LPT1 "LPT1 è£ç½®:"
+#define STR_LPT2 "LPT2 è£ç½®:"
+#define STR_LPT3 "LPT3 è£ç½®:"
+#define STR_LPT4 "LPT4 è£ç½®:"
+#define STR_SERIAL1 "åºåˆ—åŸ 1"
+#define STR_SERIAL2 "åºåˆ—åŸ 2"
+#define STR_SERIAL3 "åºåˆ—åŸ 3"
+#define STR_SERIAL4 "åºåˆ—åŸ 4"
+#define STR_PARALLEL1 "ä¸¦åˆ—åŸ 1"
+#define STR_PARALLEL2 "ä¸¦åˆ—åŸ 2"
+#define STR_PARALLEL3 "ä¸¦åˆ—åŸ 3"
+#define STR_PARALLEL4 "ä¸¦åˆ—åŸ 4"
+#define STR_SERIAL_PASS1 "åºåˆ—åŸ ç›´é€š 1"
+#define STR_SERIAL_PASS2 "åºåˆ—åŸ ç›´é€š 2"
+#define STR_SERIAL_PASS3 "åºåˆ—åŸ ç›´é€š 3"
+#define STR_SERIAL_PASS4 "åºåˆ—åŸ ç›´é€š 4"
-#define STR_HDC "硬碟控制器:"
-#define STR_FDC "軟碟控制器:"
-#define STR_IDE_TER "第三 IDE 控制器"
-#define STR_IDE_QUA "第四 IDE 控制器"
-#define STR_SCSI "SCSI"
-#define STR_SCSI_1 "控制器 1:"
-#define STR_SCSI_2 "控制器 2:"
-#define STR_SCSI_3 "控制器 3:"
-#define STR_SCSI_4 "控制器 4:"
-#define STR_CASSETTE "ç£å¸¶"
+#define STR_HDC "硬碟控制器:"
+#define STR_FDC "軟碟控制器:"
+#define STR_IDE_TER "第三 IDE 控制器"
+#define STR_IDE_QUA "第四 IDE 控制器"
+#define STR_SCSI "SCSI"
+#define STR_SCSI_1 "控制器 1:"
+#define STR_SCSI_2 "控制器 2:"
+#define STR_SCSI_3 "控制器 3:"
+#define STR_SCSI_4 "控制器 4:"
+#define STR_CASSETTE "ç£å¸¶"
-#define STR_HDD "硬碟:"
-#define STR_NEW "新增(&N)..."
-#define STR_EXISTING "已有é¡åƒ(&E)..."
-#define STR_REMOVE "移除(&R)"
-#define STR_BUS "åŒ¯æµæŽ’:"
-#define STR_CHANNEL "通é“:"
-#define STR_ID "ID:"
-#define STR_SPEED "Speed:"
+#define STR_HDD "硬碟:"
+#define STR_NEW "新增(&N)..."
+#define STR_EXISTING "å·²æœ‰æ˜ åƒ(&E)..."
+#define STR_REMOVE "移除(&R)"
+#define STR_BUS "åŒ¯æµæŽ’:"
+#define STR_CHANNEL "通é“:"
+#define STR_ID "ID:"
+#define STR_SPEED "Speed:"
-#define STR_SPECIFY "指定(&S)..."
-#define STR_SECTORS "ç£å€(S):"
-#define STR_HEADS "ç£é (H):"
-#define STR_CYLS "柱é¢(C):"
-#define STR_SIZE_MB "å¤§å° (MB):"
-#define STR_TYPE "類型:"
-#define STR_IMG_FORMAT "é¡åƒæ ¼å¼:"
-#define STR_BLOCK_SIZE "塊大å°:"
+#define STR_SPECIFY "指定(&S)..."
+#define STR_SECTORS "ç£å€(S):"
+#define STR_HEADS "ç£é (H):"
+#define STR_CYLS "柱é¢(C):"
+#define STR_SIZE_MB "å¤§å° (MB):"
+#define STR_TYPE "類型:"
+#define STR_IMG_FORMAT "æ˜ åƒæ ¼å¼:"
+#define STR_BLOCK_SIZE "å€å¡Šå¤§å°:"
-#define STR_FLOPPY_DRIVES "軟碟機:"
-#define STR_TURBO "åŠ é€Ÿæ™‚åº"
-#define STR_CHECKBPB "檢查 BPB"
-#define STR_CDROM_DRIVES "光碟機:"
-#define STR_CD_SPEED "速度:"
-#define STR_EARLY "早先的光碟機"
+#define STR_FLOPPY_DRIVES "軟碟機:"
+#define STR_TURBO "åŠ é€Ÿæ™‚åº"
+#define STR_CHECKBPB "檢查 BPB"
+#define STR_CDROM_DRIVES "光碟機:"
+#define STR_CD_SPEED "速度:"
+#define STR_EARLY "早先的光碟機"
-#define STR_MO_DRIVES "ç£å…‰ç¢Ÿæ©Ÿ:"
-#define STR_ZIP_DRIVES "ZIP ç£ç¢Ÿæ©Ÿ:"
-#define STR_250 "ZIP 250"
+#define STR_MO_DRIVES "ç£å…‰ç¢Ÿæ©Ÿ:"
+#define STR_ZIP_DRIVES "ZIP ç£ç¢Ÿæ©Ÿ:"
+#define STR_250 "ZIP 250"
-#define STR_ISARTC "ISA 實時時é˜:"
-#define STR_ISAMEM "ISA 記憶體擴充"
-#define STR_ISAMEM_1 "æ“´å……å¡ 1:"
-#define STR_ISAMEM_2 "æ“´å……å¡ 2:"
-#define STR_ISAMEM_3 "æ“´å……å¡ 3:"
-#define STR_ISAMEM_4 "æ“´å……å¡ 4:"
-#define STR_BUGGER "ISABugger è£ç½®"
-#define STR_POSTCARD "自檢 (POST) å¡"
+#define STR_ISARTC "ISA 實時時é˜:"
+#define STR_ISAMEM "ISA 記憶體擴充"
+#define STR_ISAMEM_1 "æ“´å……å¡ 1:"
+#define STR_ISAMEM_2 "æ“´å……å¡ 2:"
+#define STR_ISAMEM_3 "æ“´å……å¡ 3:"
+#define STR_ISAMEM_4 "æ“´å……å¡ 4:"
+#define STR_BUGGER "ISABugger è£ç½®"
+#define STR_POSTCARD "自檢 (POST) å¡"
-#define FONT_SIZE 9
-#define FONT_NAME "Microsoft JhengHei"
+#define FONT_SIZE 9
+#define FONT_NAME "Microsoft JhengHei"
#include "dialogs.rc"
@@ -392,199 +392,200 @@ END
// String Table
//
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- 2048 "86Box"
- IDS_2049 "錯誤"
- IDS_2050 "致命錯誤"
- IDS_2051 " - 已暫åœ"
- IDS_2052 "按下 Ctrl+Alt+PgDn 返回到視窗模å¼ã€‚"
- IDS_2053 "速度"
- IDS_2054 "ZIP %03i %i (%s): %ls"
- IDS_2055 "ZIP é¡åƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
- IDS_2056 "86Box 找ä¸åˆ°ä»»ä½•å¯ç”¨çš„ ROM é¡åƒã€‚\n\n請下載ROM 包並將其解壓到 ""roms"" 資料夾。"
- IDS_2057 "(空)"
- IDS_2058 "ZIP é¡åƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有檔案 (*.*)\0*.*\0"
- IDS_2059 "åŠ é€Ÿ"
- IDS_2060 "é–‹"
- IDS_2061 "關"
- IDS_2062 "所有é¡åƒ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本ç£å€é¡åƒ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表é¢é¡åƒ (*.86F)\0*.86F\0"
- IDS_2063 "由於 roms/machines 資料夾ä¸ç¼ºå°‘åˆé©çš„ ROM,機型 ""%hs"" ä¸å¯ç”¨ã€‚將切æ›åˆ°å…¶ä»–å¯ç”¨æ©Ÿåž‹ã€‚"
+ 2048 "86Box"
+ IDS_2049 "錯誤"
+ IDS_2050 "致命錯誤"
+ IDS_2051 " - 已暫åœ"
+ IDS_2052 "按下 Ctrl+Alt+PgDn 返回到視窗模å¼ã€‚"
+ IDS_2053 "速度"
+ IDS_2054 "ZIP %03i %i (%s): %ls"
+ IDS_2055 "ZIP æ˜ åƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
+ IDS_2056 "86Box 找ä¸åˆ°ä»»ä½•å¯ç”¨çš„ ROM æ˜ åƒã€‚\n\n請下載ROM 包並將其解壓到 ""roms"" 資料夾。"
+ IDS_2057 "(空)"
+ IDS_2058 "ZIP æ˜ åƒ (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有檔案 (*.*)\0*.*\0"
+ IDS_2059 "åŠ é€Ÿ"
+ IDS_2060 "é–‹"
+ IDS_2061 "關"
+ IDS_2062 "æ‰€æœ‰æ˜ åƒ (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本ç£å€æ˜ åƒ (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0è¡¨é¢æ˜ åƒ (*.86F)\0*.86F\0"
+ IDS_2063 "由於 roms/machines 資料夾ä¸ç¼ºå°‘åˆé©çš„ ROM,機型 ""%hs"" ä¸å¯ç”¨ã€‚將切æ›åˆ°å…¶ä»–å¯ç”¨æ©Ÿåž‹ã€‚"
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2064 "由於 roms/video 資料夾ä¸ç¼ºå°‘åˆé©çš„ ROMï¼Œé¡¯ç¤ºå¡ ""%hs"" ä¸å¯ç”¨ã€‚將切æ›åˆ°å…¶ä»–å¯ç”¨é¡¯ç¤ºå¡ã€‚"
- IDS_2065 "機型"
- IDS_2066 "顯示"
- IDS_2067 "輸入è£ç½®"
- IDS_2068 "è²éŸ³"
- IDS_2069 "網路"
- IDS_2070 "é€£æŽ¥åŸ (COM å’Œ LPT)"
- IDS_2071 "å˜å„²æŽ§åˆ¶å™¨"
- IDS_2072 "硬碟"
- IDS_2073 "軟碟/光碟機"
- IDS_2074 "å…¶ä»–å¯ç§»é™¤è£ç½®"
- IDS_2075 "其他周邊è£ç½®"
- IDS_2076 "表é¢é¡åƒ (*.86F)\0*.86F\0"
- IDS_2077 "é»žæ“Šè¦–çª—æ•æ‰æ»‘é¼ "
- IDS_2078 "按下 F8+F12 é‡‹æ”¾æ»‘é¼ "
- IDS_2079 "按下 F8+F12 æˆ–æ»‘é¼ ä¸éµé‡‹æ”¾æ»‘é¼ "
+ IDS_2064 "由於 roms/video 資料夾ä¸ç¼ºå°‘åˆé©çš„ ROMï¼Œé¡¯ç¤ºå¡ ""%hs"" ä¸å¯ç”¨ã€‚將切æ›åˆ°å…¶ä»–å¯ç”¨é¡¯ç¤ºå¡ã€‚"
+ IDS_2065 "機型"
+ IDS_2066 "顯示"
+ IDS_2067 "輸入è£ç½®"
+ IDS_2068 "è²éŸ³"
+ IDS_2069 "網路"
+ IDS_2070 "é€£æŽ¥åŸ (COM å’Œ LPT)"
+ IDS_2071 "å˜å„²æŽ§åˆ¶å™¨"
+ IDS_2072 "硬碟"
+ IDS_2073 "軟碟/光碟機"
+ IDS_2074 "å…¶ä»–å¯ç§»é™¤è£ç½®"
+ IDS_2075 "其他周邊è£ç½®"
+ IDS_2076 "è¡¨é¢æ˜ åƒ (*.86F)\0*.86F\0"
+ IDS_2077 "é»žæ“Šè¦–çª—æ•æ‰æ»‘é¼ "
+ IDS_2078 "按下 F8+F12 é‡‹æ”¾æ»‘é¼ "
+ IDS_2079 "按下 F8+F12 æˆ–æ»‘é¼ ä¸éµé‡‹æ”¾æ»‘é¼ "
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
- IDS_2080 "無法åˆå§‹åŒ– FluidSynth"
- IDS_2081 "åŒ¯æµæŽ’"
- IDS_2082 "檔案"
- IDS_2083 "C"
- IDS_2084 "H"
- IDS_2085 "S"
- IDS_2086 "MB"
+ IDS_2080 "無法åˆå§‹åŒ– FluidSynth"
+ IDS_2081 "åŒ¯æµæŽ’"
+ IDS_2082 "檔案"
+ IDS_2083 "C"
+ IDS_2084 "H"
+ IDS_2085 "S"
+ IDS_2086 "MB"
IDS_2087 "Speed"
- IDS_2088 "檢查 BPB"
- IDS_2089 "KB"
- IDS_2090 "無法åˆå§‹åŒ–視訊渲染器。"
- IDS_2091 "é è¨"
- IDS_2092 "%i ç‰å¾…狀態 (WS)"
- IDS_2093 "類型"
- IDS_2094 "è¨å®š PCap 失敗"
- IDS_2095 "未找到 PCap è£ç½®"
- IDS_2096 "無效 PCap è£ç½®"
- IDS_2097 "標準 2 鵿–æ¡¿"
- IDS_2098 "標準 4 鵿–æ¡¿"
- IDS_2099 "標準 6 鵿–æ¡¿"
- IDS_2100 "標準 8 鵿–æ¡¿"
- IDS_2101 "CH Flightstick Pro"
- IDS_2102 "Microsoft SideWinder Pad"
- IDS_2103 "Thrustmaster Flight Control System"
- IDS_2104 "ç„¡"
- IDS_2105 "無法載入éµç›¤åŠ é€Ÿå™¨ã€‚"
- IDS_2106 "無法註冊原始輸入。"
- IDS_2107 "%u"
- IDS_2108 "%u MB (CHS: %i, %i, %i)"
- IDS_2109 "軟碟 %i (%s): %ls"
- IDS_2110 "所有é¡åƒ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0進階ç£å€é¡åƒ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本ç£å€é¡åƒ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux é¡åƒ (*.FDI)\0*.FDI\0表é¢é¡åƒ (*.86F;*.MFM)\0*.86F;*.MFM\0所有檔案 (*.*)\0*.*\0"
- IDS_2111 "無法åˆå§‹åŒ– FreeType"
- IDS_2112 "無法åˆå§‹åŒ– SDLï¼Œéœ€è¦ SDL2.dll"
- IDS_2113 "確定è¦ç¡¬é‡è¨æ¨¡æ“¬å™¨å—Žï¼Ÿ"
- IDS_2114 "確定è¦é€€å‡º 86Box 嗎?"
- IDS_2115 "無法åˆå§‹åŒ– Ghostscript"
- IDS_2116 "ç£å…‰ç¢Ÿ %i (%ls): %ls"
- IDS_2117 "ç£å…‰ç¢Ÿé¡åƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有檔案 (*.*)\0*.*\0"
- IDS_2118 "æ¡è¿Žä½¿ç”¨ 86Boxï¼"
- IDS_2119 "內部控制器"
- IDS_2120 "退出"
- IDS_2121 "找ä¸åˆ° ROM"
- IDS_2122 "è¦ä¿å˜è¨å®šå—Žï¼Ÿ"
- IDS_2123 "æ¤æ“作將硬é‡è¨æ¨¡æ“¬å™¨ã€‚"
- IDS_2124 "ä¿å˜"
- IDS_2125 "關於 86Box"
- IDS_2126 "86Box v" EMU_VERSION
+ IDS_2088 "檢查 BPB"
+ IDS_2089 "KB"
+ IDS_2090 "無法åˆå§‹åŒ–視訊渲染器。"
+ IDS_2091 "é è¨"
+ IDS_2092 "%i ç‰å¾…狀態 (WS)"
+ IDS_2093 "類型"
+ IDS_2094 "è¨å®š PCap 失敗"
+ IDS_2095 "未找到 PCap è£ç½®"
+ IDS_2096 "無效 PCap è£ç½®"
+ IDS_2097 "標準 2 鵿–æ¡¿"
+ IDS_2098 "標準 4 鵿–æ¡¿"
+ IDS_2099 "標準 6 鵿–æ¡¿"
+ IDS_2100 "標準 8 鵿–æ¡¿"
+ IDS_2101 "CH Flightstick Pro"
+ IDS_2102 "Microsoft SideWinder Pad"
+ IDS_2103 "Thrustmaster Flight Control System"
+ IDS_2104 "ç„¡"
+ IDS_2105 "無法載入éµç›¤åŠ é€Ÿå™¨ã€‚"
+ IDS_2106 "無法註冊原始輸入。"
+ IDS_2107 "%u"
+ IDS_2108 "%u MB (CHS: %i, %i, %i)"
+ IDS_2109 "軟碟 %i (%s): %ls"
+ IDS_2110 "æ‰€æœ‰æ˜ åƒ (*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF)\0*.0??;*.1??;*.??0;*.86F;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.JSON;*.TD0;*.*FD?;*.MFM;*.XDF\0進階ç£å€æ˜ åƒ (*.IMD;*.JSON;*.TD0)\0*.IMD;*.JSON;*.TD0\0基本ç£å€æ˜ åƒ (*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?)\0*.0??;*.1??;*.??0;*.BIN;*.CQ?;*.D??;*.FLP;*.HDM;*.IM?;*.XDF;*.*FD?\0Flux æ˜ åƒ (*.FDI)\0*.FDI\0è¡¨é¢æ˜ åƒ (*.86F;*.MFM)\0*.86F;*.MFM\0所有檔案 (*.*)\0*.*\0"
+ IDS_2111 "無法åˆå§‹åŒ– FreeType"
+ IDS_2112 "無法åˆå§‹åŒ– SDLï¼Œéœ€è¦ SDL2.dll"
+ IDS_2113 "確定è¦ç¡¬é‡è¨æ¨¡æ“¬å™¨å—Žï¼Ÿ"
+ IDS_2114 "確定è¦é€€å‡º 86Box 嗎?"
+ IDS_2115 "無法åˆå§‹åŒ– Ghostscript"
+ IDS_2116 "ç£å…‰ç¢Ÿ %i (%ls): %ls"
+ IDS_2117 "ç£å…‰ç¢Ÿæ˜ åƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有檔案 (*.*)\0*.*\0"
+ IDS_2118 "æ¡è¿Žä½¿ç”¨ 86Boxï¼"
+ IDS_2119 "內部控制器"
+ IDS_2120 "退出"
+ IDS_2121 "找ä¸åˆ° ROM"
+ IDS_2122 "è¦å„²å˜è¨å®šå—Žï¼Ÿ"
+ IDS_2123 "æ¤æ“作將硬é‡è¨æ¨¡æ“¬å™¨ã€‚"
+ IDS_2124 "儲å˜"
+ IDS_2125 "關於 86Box"
+ IDS_2126 "86Box v" EMU_VERSION
- IDS_2127 "一個舊å¼é›»è…¦æ¨¡æ“¬å™¨\n\n作者: Sarah Walkerã€Miran Grcaã€Fred N. van Kempen (waltje)ã€SA1988ã€Tiseno100ã€reenigneã€leileiã€JohnElliottã€greatpsycho ç‰äººã€‚\n\næœ¬è»Ÿé«”ä¾æ“š GNU 通用公共授權第二版或更新版本發布。詳情見 LICENSE 檔案。"
- IDS_2128 "確定"
- IDS_2129 "硬體ä¸å¯ç”¨"
+ IDS_2127 "一個舊å¼é›»è…¦æ¨¡æ“¬å™¨\n\n作者: Sarah Walkerã€Miran Grcaã€Fred N. van Kempen (waltje)ã€SA1988ã€Tiseno100ã€reenigneã€leileiã€JohnElliottã€greatpsycho ç‰äººã€‚\n\næœ¬è»Ÿé«”ä¾æ“š GNU 通用公共授權第二版或更新版本發布。詳情見 LICENSE 檔案。"
+ IDS_2128 "確定"
+ IDS_2129 "硬體ä¸å¯ç”¨"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
- IDS_2130 "è«‹ç¢ºèª " LIB_NAME_PCAP " 已安è£ä¸”使用相容 " LIB_NAME_PCAP " 的網路連線。"
- IDS_2131 "無效é…ç½®"
+ IDS_2130 "è«‹ç¢ºèª " LIB_NAME_PCAP " 已安è£ä¸”使用相容 " LIB_NAME_PCAP " 的網路連線。"
+ IDS_2131 "無效é…ç½®"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
- IDS_2132 "ESC/P å°è¡¨æ©Ÿæ¨¡æ“¬éœ€è¦" LIB_NAME_FREETYPE
+ IDS_2132 "ESC/P å°è¡¨æ©Ÿæ¨¡æ“¬éœ€è¦" LIB_NAME_FREETYPE
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
- IDS_2133 LIB_NAME_GS " 是將 PostScript 檔案轉æ›ç‚º PDF 所需è¦çš„庫。\n\n使用通用 PostScript å°è¡¨æ©Ÿåˆ—å°çš„æ–‡ä»¶å°‡è¢«ä¿å˜ç‚º PostScript (.ps) 檔案。"
+ IDS_2133 LIB_NAME_GS " 是將 PostScript 檔案轉æ›ç‚º PDF 所需è¦çš„庫。\n\n使用通用 PostScript å°è¡¨æ©Ÿåˆ—å°çš„æ–‡ä»¶å°‡è¢«å„²å˜ç‚º PostScript (.ps) 檔案。"
#ifdef _WIN32
#define LIB_NAME_FLUIDSYNTH "libfluidsynth.dll"
#else
#define LIB_NAME_FLUIDSYNTH "libfluidsynth"
#endif
- IDS_2134 "FluidSynth MIDI 輸出需è¦" LIB_NAME_FLUIDSYNTH
- IDS_2135 "æ£åœ¨é€²å…¥å…¨èž¢å¹•模å¼"
- IDS_2136 "ä¸è¦å†é¡¯ç¤ºæ¤æ¶ˆæ¯"
- IDS_2137 "ä¸é€€å‡º"
- IDS_2138 "é‡è¨"
- IDS_2139 "ä¸é‡è¨"
- IDS_2140 "ç£å…‰ç¢Ÿé¡åƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有檔案 (*.*)\0*.*\0"
- IDS_2141 "光碟é¡åƒ (*.ISO;*.CUE)\0*.ISO;*.CUE\0所有檔案 (*.*)\0*.*\0"
- IDS_2142 "%hs è£ç½®é…ç½®"
+ IDS_2134 "FluidSynth MIDI 輸出需è¦" LIB_NAME_FLUIDSYNTH
+ IDS_2135 "æ£åœ¨é€²å…¥å…¨èž¢å¹•模å¼"
+ IDS_2136 "ä¸è¦å†é¡¯ç¤ºæ¤æ¶ˆæ¯"
+ IDS_2137 "ä¸é€€å‡º"
+ IDS_2138 "é‡è¨"
+ IDS_2139 "ä¸é‡è¨"
+ IDS_2140 "ç£å…‰ç¢Ÿæ˜ åƒ (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有檔案 (*.*)\0*.*\0"
+ IDS_2141 "å…‰ç¢Ÿæ˜ åƒ (*.ISO;*.CUE)\0*.ISO;*.CUE\0所有檔案 (*.*)\0*.*\0"
+ IDS_2142 "%hs è£ç½®é…ç½®"
IDS_2143 "顯示器處在ç¡çœ 狀態"
- IDS_2144 "OpenGL 著色器 (*.GLSL)\0*.GLSL\0所有檔案 (*.*)\0*.*\0"
- IDS_2145 "OpenGL é¸é …"
- IDS_2146 "æ£åœ¨è¼‰å…¥ä¸€å€‹ä¸å—支æ´çš„é…ç½®"
- IDS_2147 "æ¤æ¨¡æ“¬é›»è…¦ç¦ç”¨äº†åŸºæ–¼é¸å®šé›»è…¦çš„ CPU é¡žåž‹éŽæ¿¾ã€‚\n\nèƒ½å¤ é¸ä¸èˆ‡æ‰€é¸æ©Ÿå™¨æœ¬ä¸ç›¸å®¹çš„ CPU,但是å¯èƒ½æœƒé‡åˆ°èˆ‡æ©Ÿå™¨ BIOS 或其他軟體ä¸ç›¸å®¹çš„å•題。\n\n啟用æ¤è¨å®šä¸å—官方支æ´ï¼Œä¸¦ä¸”æäº¤çš„ä»»ä½•éŒ¯èª¤å ±å‘Šå¯èƒ½æœƒè¦–為無效而關閉。"
- IDS_2148 "繼續"
- IDS_2149 "ç£å¸¶: %s"
- IDS_2150 "ç£å¸¶é¡åƒ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0所有檔案 (*.*)\0*.*\0"
- IDS_2151 "å¡å¸¶ %i: %ls"
- IDS_2152 "å¡å¸¶é¡åƒ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0所有檔案 (*.*)\0*.*\0"
- IDS_2153 "åˆå§‹åŒ–渲染器時出錯"
- IDS_2154 "無法åˆå§‹åŒ– OpenGL (3.0 æ ¸å¿ƒ) 渲染器。請使用其他渲染器。"
- IDS_2155 "æ¢å¾©åŸ·è¡Œ"
- IDS_2156 "æš«åœåŸ·è¡Œ"
- IDS_2157 "按下 Ctrl+Alt+Del"
- IDS_2158 "按下 Ctrl+Alt+Esc"
- IDS_2159 "硬é‡è¨"
- IDS_2160 "ACPI 關機"
- IDS_2161 "è¨å®š"
+ IDS_2144 "OpenGL 著色器 (*.GLSL)\0*.GLSL\0所有檔案 (*.*)\0*.*\0"
+ IDS_2145 "OpenGL é¸é …"
+ IDS_2146 "æ£åœ¨è¼‰å…¥ä¸€å€‹ä¸å—支æ´çš„é…ç½®"
+ IDS_2147 "æ¤æ¨¡æ“¬é›»è…¦ç¦ç”¨äº†åŸºæ–¼é¸å®šé›»è…¦çš„ CPU é¡žåž‹éŽæ¿¾ã€‚\n\nèƒ½å¤ é¸ä¸èˆ‡æ‰€é¸æ©Ÿå™¨æœ¬ä¸ç›¸å®¹çš„ CPU,但是å¯èƒ½æœƒé‡åˆ°èˆ‡æ©Ÿå™¨ BIOS 或其他軟體ä¸ç›¸å®¹çš„å•題。\n\n啟用æ¤è¨å®šä¸å—官方支æ´ï¼Œä¸¦ä¸”æäº¤çš„ä»»ä½•éŒ¯èª¤å ±å‘Šå¯èƒ½æœƒè¦–為無效而關閉。"
+ IDS_2148 "繼續"
+ IDS_2149 "ç£å¸¶: %s"
+ IDS_2150 "ç£å¸¶æ˜ åƒ (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0所有檔案 (*.*)\0*.*\0"
+ IDS_2151 "å¡å¸¶ %i: %ls"
+ IDS_2152 "å¡å¸¶æ˜ åƒ (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0所有檔案 (*.*)\0*.*\0"
+ IDS_2153 "åˆå§‹åŒ–渲染器時出錯"
+ IDS_2154 "無法åˆå§‹åŒ– OpenGL (3.0 æ ¸å¿ƒ) 渲染器。請使用其他渲染器。"
+ IDS_2155 "æ¢å¾©åŸ·è¡Œ"
+ IDS_2156 "æš«åœåŸ·è¡Œ"
+ IDS_2157 "按下 Ctrl+Alt+Del"
+ IDS_2158 "按下 Ctrl+Alt+Esc"
+ IDS_2159 "硬é‡è¨"
+ IDS_2160 "ACPI 關機"
+ IDS_2161 "è¨å®š"
IDS_2162 "早先的光碟機"
- IDS_2163 "no dynarec"
- IDS_2164 "old dynarec"
- IDS_2165 "new dynarec"
+ IDS_2163 "No Dynarec"
+ IDS_2164 "Old Dynarec"
+ IDS_2165 "New Dynarec"
+ IDS_2166 "Video card #2 ""%hs"" is not available due to missing ROMs in the roms/video directory. Disabling the second video card."
END
-STRINGTABLE DISCARDABLE
+STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "硬碟 (%s)"
- IDS_4097 "%01i:%01i"
- IDS_4098 "%01i"
- IDS_4099 "ä¸å˜åœ¨ MFM/RLL 或 ESDI CD-ROM 光碟機"
- IDS_4100 "自訂..."
- IDS_4101 "自訂 (大容é‡)..."
- IDS_4102 "æ·»åŠ æ–°ç¡¬ç¢Ÿ"
- IDS_4103 "æ·»åŠ å·²å˜åœ¨çš„硬碟"
- IDS_4104 "HDI ç£ç¢Ÿé¡åƒä¸èƒ½è¶…éŽ 4 GB。"
- IDS_4105 "ç£ç¢Ÿé¡åƒä¸èƒ½è¶…éŽ 127 GB。"
- IDS_4106 "硬碟é¡åƒ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0所有檔案 (*.*)\0*.*\0"
- IDS_4107 "ç„¡æ³•è®€å–æª”案"
- IDS_4108 "無法寫入檔案"
- IDS_4109 "䏿”¯æ´éž 512 ä½å…ƒçµ„ç£å€å¤§å°çš„ HDI 或 HDX é¡åƒã€‚"
- IDS_4110 "å°šæœªæ”¯æ´ USB"
- IDS_4111 "ç£ç¢Ÿé¡åƒæª”案已å˜åœ¨"
- IDS_4112 "請指定有效的檔案å。"
- IDS_4113 "已創建ç£ç¢Ÿé¡åƒ"
- IDS_4114 "è«‹ç¢ºå®šæ¤æª”案已å˜åœ¨ä¸¦å¯è®€å–。"
- IDS_4115 "è«‹ç¢ºå®šæ¤æª”案ä¿å˜åœ¨å¯å¯«ç›®éŒ„ä¸ã€‚"
- IDS_4116 "ç£ç¢Ÿé¡åƒå¤ªå¤§"
- IDS_4117 "請記得為新創建的é¡åƒåˆ†å€ä¸¦æ ¼å¼åŒ–。"
- IDS_4118 "é¸å®šçš„æª”æ¡ˆå°‡è¢«è¦†è“‹ã€‚ç¢ºå®šç¹¼çºŒä½¿ç”¨æ¤æª”案嗎?"
- IDS_4119 "䏿”¯æ´çš„ç£ç¢Ÿé¡åƒ"
- IDS_4120 "覆蓋"
- IDS_4121 "ä¸è¦†è“‹"
- IDS_4122 "原始é¡åƒ (.img)"
- IDS_4123 "HDI é¡åƒ (.hdi)"
- IDS_4124 "HDX é¡åƒ (.hdx)"
- IDS_4125 "å›ºå®šå¤§å° VHD (.vhd)"
- IDS_4126 "å‹•æ…‹å¤§å° VHD (.vhd)"
- IDS_4127 "差分 VHD (.vhd)"
- IDS_4128 "大塊 (2 MB)"
- IDS_4129 "å°å¡Š (512 KB)"
- IDS_4130 "VHD 檔案 (*.VHD)\0*.VHD\0所有檔案 (*.*)\0*.*\0"
- IDS_4131 "鏿“‡çˆ¶ VHD 檔案"
- IDS_4132 "çˆ¶æ˜ åƒå¯èƒ½åœ¨å‰µå»ºå·®ç•°é¡åƒå¾Œè¢«ä¿®æ”¹ã€‚\n\n如果é¡åƒæª”案被移動或複製,或創建æ¤ç£ç¢Ÿçš„程å¼ä¸å˜åœ¨éŒ¯èª¤ï¼Œä¹Ÿå¯èƒ½ç™¼ç”Ÿé€™ç¨®æƒ…æ³ã€‚\n\n是å¦éœ€è¦ä¿®å¾©æ™‚間戳?"
- IDS_4133 "父碟與å碟的時間戳ä¸åŒ¹é…"
- IDS_4134 "無法修復 VHD 時間戳。"
- IDS_4135 "%01i:%02i"
+ IDS_4097 "%01i:%01i"
+ IDS_4098 "%01i"
+ IDS_4099 "ä¸å˜åœ¨ MFM/RLL 或 ESDI CD-ROM 光碟機"
+ IDS_4100 "自訂..."
+ IDS_4101 "自訂 (大容é‡)..."
+ IDS_4102 "æ·»åŠ æ–°ç¡¬ç¢Ÿ"
+ IDS_4103 "æ·»åŠ å·²å˜åœ¨çš„硬碟"
+ IDS_4104 "HDI ç£ç¢Ÿæ˜ åƒä¸èƒ½è¶…éŽ 4 GB。"
+ IDS_4105 "ç£ç¢Ÿæ˜ åƒä¸èƒ½è¶…éŽ 127 GB。"
+ IDS_4106 "ç¡¬ç¢Ÿæ˜ åƒ (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0所有檔案 (*.*)\0*.*\0"
+ IDS_4107 "ç„¡æ³•è®€å–æª”案"
+ IDS_4108 "無法寫入檔案"
+ IDS_4109 "䏿”¯æ´éž 512 ä½å…ƒçµ„ç£å€å¤§å°çš„ HDI 或 HDX æ˜ åƒã€‚"
+ IDS_4110 "å°šæœªæ”¯æ´ USB"
+ IDS_4111 "ç£ç¢Ÿæ˜ åƒæª”案已å˜åœ¨"
+ IDS_4112 "請指定有效的檔案å。"
+ IDS_4113 "已創建ç£ç¢Ÿæ˜ åƒ"
+ IDS_4114 "è«‹ç¢ºå®šæ¤æª”案已å˜åœ¨ä¸¦å¯è®€å–。"
+ IDS_4115 "è«‹ç¢ºå®šæ¤æª”案儲å˜åœ¨å¯å¯«ç›®éŒ„ä¸ã€‚"
+ IDS_4116 "ç£ç¢Ÿæ˜ åƒå¤ªå¤§"
+ IDS_4117 "è«‹è¨˜å¾—ç‚ºæ–°å‰µå»ºçš„æ˜ åƒåˆ†å€ä¸¦æ ¼å¼åŒ–。"
+ IDS_4118 "é¸å®šçš„æª”æ¡ˆå°‡è¢«è¦†è“‹ã€‚ç¢ºå®šç¹¼çºŒä½¿ç”¨æ¤æª”案嗎?"
+ IDS_4119 "䏿”¯æ´çš„ç£ç¢Ÿæ˜ åƒ"
+ IDS_4120 "覆蓋"
+ IDS_4121 "ä¸è¦†è“‹"
+ IDS_4122 "åŽŸå§‹æ˜ åƒ (.img)"
+ IDS_4123 "HDI æ˜ åƒ (.hdi)"
+ IDS_4124 "HDX æ˜ åƒ (.hdx)"
+ IDS_4125 "å›ºå®šå¤§å° VHD (.vhd)"
+ IDS_4126 "å‹•æ…‹å¤§å° VHD (.vhd)"
+ IDS_4127 "差分 VHD (.vhd)"
+ IDS_4128 "大å€å¡Š (2 MB)"
+ IDS_4129 "å°å€å¡Š (512 KB)"
+ IDS_4130 "VHD 檔案 (*.VHD)\0*.VHD\0所有檔案 (*.*)\0*.*\0"
+ IDS_4131 "é¸å–父 VHD 檔案"
+ IDS_4132 "çˆ¶æ˜ åƒå¯èƒ½åœ¨å‰µå»ºå·®ç•°æ˜ åƒå¾Œè¢«ä¿®æ”¹ã€‚\n\nå¦‚æžœæ˜ åƒæª”案被移動或複製,或創建æ¤ç£ç¢Ÿçš„程å¼ä¸å˜åœ¨éŒ¯èª¤ï¼Œä¹Ÿå¯èƒ½ç™¼ç”Ÿé€™ç¨®æƒ…æ³ã€‚\n\n是å¦éœ€è¦ä¿®å¾©æ™‚間戳?"
+ IDS_4133 "父碟與å碟的時間戳ä¸åŒ¹é…"
+ IDS_4134 "無法修復 VHD 時間戳。"
+ IDS_4135 "%01i:%02i"
IDS_4352 "MFM/RLL"
IDS_4353 "XTA"
@@ -593,56 +594,56 @@ BEGIN
IDS_4356 "ATAPI"
IDS_4357 "SCSI"
- IDS_4608 "MFM/RLL (%01i:%01i)"
- IDS_4609 "XTA (%01i:%01i)"
- IDS_4610 "ESDI (%01i:%01i)"
- IDS_4611 "IDE (%01i:%01i)"
- IDS_4612 "ATAPI (%01i:%01i)"
- IDS_4613 "SCSI (%01i:%02i)"
+ IDS_4608 "MFM/RLL (%01i:%01i)"
+ IDS_4609 "XTA (%01i:%01i)"
+ IDS_4610 "ESDI (%01i:%01i)"
+ IDS_4611 "IDE (%01i:%01i)"
+ IDS_4612 "ATAPI (%01i:%01i)"
+ IDS_4613 "SCSI (%01i:%02i)"
- IDS_5120 "光碟 %i (%s): %s"
+ IDS_5120 "光碟 %i (%s): %s"
- IDS_5376 "ç¦ç”¨"
- IDS_5381 "ATAPI"
+ IDS_5376 "ç¦ç”¨"
+ IDS_5381 "ATAPI"
IDS_5382 "SCSI"
- IDS_5632 "ç¦ç”¨"
- IDS_5637 "ATAPI (%01i:%01i)"
+ IDS_5632 "ç¦ç”¨"
+ IDS_5637 "ATAPI (%01i:%01i)"
IDS_5638 "SCSI (%01i:%02i)"
- IDS_5888 "160 kB"
- IDS_5889 "180 kB"
- IDS_5890 "320 kB"
- IDS_5891 "360 kB"
- IDS_5892 "640 kB"
- IDS_5893 "720 kB"
- IDS_5894 "1.2 MB"
- IDS_5895 "1.25 MB"
- IDS_5896 "1.44 MB"
- IDS_5897 "DMF (1024 ç°‡)"
- IDS_5898 "DMF (2048 ç°‡)"
- IDS_5899 "2.88 MB"
- IDS_5900 "ZIP 100"
- IDS_5901 "ZIP 250"
- IDS_5902 "3.5 英寸 128 MB (ISO 10090)"
- IDS_5903 "3.5 英寸 230 MB (ISO 13963)"
- IDS_5904 "3.5 英寸 540 MB (ISO 15498)"
- IDS_5905 "3.5 英寸 640 MB (ISO 15498)"
- IDS_5906 "3.5 英寸 1.3 GB (GigaMO)"
- IDS_5907 "3.5 英寸 2.3 GB (GigaMO 2)"
- IDS_5908 "5.25 英寸 600 MB"
- IDS_5909 "5.25 英寸 650 MB"
- IDS_5910 "5.25 英寸 1 GB"
- IDS_5911 "5.25 英寸 1.3 GB"
+ IDS_5888 "160 kB"
+ IDS_5889 "180 kB"
+ IDS_5890 "320 kB"
+ IDS_5891 "360 kB"
+ IDS_5892 "640 kB"
+ IDS_5893 "720 kB"
+ IDS_5894 "1.2 MB"
+ IDS_5895 "1.25 MB"
+ IDS_5896 "1.44 MB"
+ IDS_5897 "DMF (1024 ç°‡)"
+ IDS_5898 "DMF (2048 ç°‡)"
+ IDS_5899 "2.88 MB"
+ IDS_5900 "ZIP 100"
+ IDS_5901 "ZIP 250"
+ IDS_5902 "3.5 è‹±å‹ 128 MB (ISO 10090)"
+ IDS_5903 "3.5 è‹±å‹ 230 MB (ISO 13963)"
+ IDS_5904 "3.5 è‹±å‹ 540 MB (ISO 15498)"
+ IDS_5905 "3.5 è‹±å‹ 640 MB (ISO 15498)"
+ IDS_5906 "3.5 è‹±å‹ 1.3 GB (GigaMO)"
+ IDS_5907 "3.5 è‹±å‹ 2.3 GB (GigaMO 2)"
+ IDS_5908 "5.25 è‹±å‹ 600 MB"
+ IDS_5909 "5.25 è‹±å‹ 650 MB"
+ IDS_5910 "5.25 è‹±å‹ 1 GB"
+ IDS_5911 "5.25 è‹±å‹ 1.3 GB"
- IDS_6144 "標準轉速 (RPM)"
- IDS_6145 "低於標準轉速的 1%"
- IDS_6146 "低於標準轉速的 1.5%"
- IDS_6147 "低於標準轉速的 2%"
+ IDS_6144 "標準轉速 (RPM)"
+ IDS_6145 "低於標準轉速的 1%"
+ IDS_6146 "低於標準轉速的 1.5%"
+ IDS_6147 "低於標準轉速的 2%"
- IDS_7168 "(系統é è¨)"
+ IDS_7168 "(系統é è¨)"
END
-#define IDS_LANG_ENUS IDS_7168
+#define IDS_LANG_ENUS IDS_7168
// Traditional Chinese resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/win/win.c b/src/win/win.c
index 69561036d..7c06d3710 100644
--- a/src/win/win.c
+++ b/src/win/win.c
@@ -884,12 +884,12 @@ plat_mmap(size_t size, uint8_t executable)
}
void
-plat_get_global_config_dir(char* strptr)
+plat_get_global_config_dir(char *strptr)
{
wchar_t appdata_dir[1024] = { L'\0' };
if (_wgetenv(L"LOCALAPPDATA") && _wgetenv(L"LOCALAPPDATA")[0] != L'\0') {
- size_t len = 0;
+ size_t len = 0;
wcsncpy(appdata_dir, _wgetenv(L"LOCALAPPDATA"), 1024);
len = wcslen(appdata_dir);
if (appdata_dir[len - 1] != L'\\') {
diff --git a/src/win/win_devconf.c b/src/win/win_devconf.c
index 849bf62f1..6573e8400 100644
--- a/src/win/win_devconf.c
+++ b/src/win/win_devconf.c
@@ -251,7 +251,7 @@ deviceconfig_dlgproc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
id += 2;
break;
case CONFIG_BIOS:
- bios = config->bios;
+ bios = config->bios;
val_str = config_get_string((char *) config_device.name,
(char *) config->name, (char *) config->default_string);
@@ -378,8 +378,8 @@ deviceconfig_dlgproc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
id += 2;
break;
case CONFIG_BIOS:
- bios = config->bios;
- c = combo_to_struct[SendMessage(h, CB_GETCURSEL, 0, 0)];
+ bios = config->bios;
+ c = combo_to_struct[SendMessage(h, CB_GETCURSEL, 0, 0)];
for (; c > 0; c--)
bios++;
config_set_string((char *) config_device.name, (char *) config->name, (char *) bios->internal_name);
diff --git a/src/win/win_keyboard.c b/src/win/win_keyboard.c
index 6b7e00b57..010da5c81 100644
--- a/src/win/win_keyboard.c
+++ b/src/win/win_keyboard.c
@@ -133,7 +133,7 @@ keyboard_handle(PRAWINPUT raw)
We use scan code 0xFFFF to mean a mapping that
has a prefix other than E0 and that is not E1 1D,
which is, for our purposes, invalid. */
- if ((scancode == 0x00F) && !(rawKB.Flags & RI_KEY_BREAK) && (recv_lalt || recv_ralt) && !mouse_capture) {
+ if ((scancode == 0x00f) && !(rawKB.Flags & RI_KEY_BREAK) && (recv_lalt || recv_ralt) && (!kbd_req_capture || mouse_capture)) {
/* We received a TAB while ALT was pressed, while the mouse
is not captured, suppress the TAB and send an ALT key up. */
if (recv_lalt) {
@@ -152,14 +152,14 @@ keyboard_handle(PRAWINPUT raw)
keyboard_input(0, 0x138);
recv_ralt = 0;
}
- } else if (((scancode == 0x038) || (scancode == 0x138)) && !(rawKB.Flags & RI_KEY_BREAK) && recv_tab && !mouse_capture) {
+ } else if (((scancode == 0x038) || (scancode == 0x138)) && !(rawKB.Flags & RI_KEY_BREAK) && recv_tab && (!kbd_req_capture || mouse_capture)) {
/* We received an ALT while TAB was pressed, while the mouse
is not captured, suppress the ALT and send a TAB key up. */
- keyboard_input(0, 0x00F);
+ keyboard_input(0, 0x00f);
recv_tab = 0;
} else {
switch (scancode) {
- case 0x00F:
+ case 0x00f:
recv_tab = !(rawKB.Flags & RI_KEY_BREAK);
break;
case 0x038:
@@ -172,7 +172,7 @@ keyboard_handle(PRAWINPUT raw)
/* Translate right CTRL to left ALT if the user has so
chosen. */
- if ((scancode == 0x11D) && rctrl_is_lalt)
+ if ((scancode == 0x11d) && rctrl_is_lalt)
scancode = 0x038;
/* Normal scan code pass through, pass it through as is if
diff --git a/src/win/win_serial_passthrough.c b/src/win/win_serial_passthrough.c
index f80c5936d..1e190956d 100644
--- a/src/win/win_serial_passthrough.c
+++ b/src/win/win_serial_passthrough.c
@@ -47,7 +47,7 @@ plat_serpt_close(void *p)
if (dev->mode == SERPT_MODE_VCON)
DisconnectNamedPipe((HANDLE) dev->master_fd);
if (dev->mode == SERPT_MODE_HOSTSER) {
- SetCommState((HANDLE)dev->master_fd, (DCB*)dev->backend_priv);
+ SetCommState((HANDLE) dev->master_fd, (DCB *) dev->backend_priv);
free(dev->backend_priv);
}
CloseHandle((HANDLE) dev->master_fd);
@@ -80,41 +80,44 @@ plat_serpt_write_vcon(serial_passthrough_t *dev, uint8_t data)
void
plat_serpt_set_params(void *p)
{
- serial_passthrough_t *dev = (serial_passthrough_t *)p;
+ serial_passthrough_t *dev = (serial_passthrough_t *) p;
- if (dev->mode == SERPT_MODE_HOSTSER) {
- DCB serialattr = {};
- GetCommState((HANDLE)dev->master_fd, &serialattr);
-#define BAUDRATE_RANGE(baud_rate, min, max) if (baud_rate >= min && baud_rate < max) { serialattr.BaudRate = min; }
+ if (dev->mode == SERPT_MODE_HOSTSER) {
+ DCB serialattr = {};
+ GetCommState((HANDLE) dev->master_fd, &serialattr);
+#define BAUDRATE_RANGE(baud_rate, min, max) \
+ if (baud_rate >= min && baud_rate < max) { \
+ serialattr.BaudRate = min; \
+ }
- BAUDRATE_RANGE(dev->baudrate, 110, 300);
- BAUDRATE_RANGE(dev->baudrate, 300, 600);
- BAUDRATE_RANGE(dev->baudrate, 600, 1200);
- BAUDRATE_RANGE(dev->baudrate, 1200, 2400);
- BAUDRATE_RANGE(dev->baudrate, 2400, 4800);
- BAUDRATE_RANGE(dev->baudrate, 4800, 9600);
- BAUDRATE_RANGE(dev->baudrate, 9600, 14400);
- BAUDRATE_RANGE(dev->baudrate, 14400, 19200);
- BAUDRATE_RANGE(dev->baudrate, 19200, 38400);
- BAUDRATE_RANGE(dev->baudrate, 38400, 57600);
- BAUDRATE_RANGE(dev->baudrate, 57600, 115200);
- BAUDRATE_RANGE(dev->baudrate, 115200, 0xFFFFFFFF);
+ BAUDRATE_RANGE(dev->baudrate, 110, 300);
+ BAUDRATE_RANGE(dev->baudrate, 300, 600);
+ BAUDRATE_RANGE(dev->baudrate, 600, 1200);
+ BAUDRATE_RANGE(dev->baudrate, 1200, 2400);
+ BAUDRATE_RANGE(dev->baudrate, 2400, 4800);
+ BAUDRATE_RANGE(dev->baudrate, 4800, 9600);
+ BAUDRATE_RANGE(dev->baudrate, 9600, 14400);
+ BAUDRATE_RANGE(dev->baudrate, 14400, 19200);
+ BAUDRATE_RANGE(dev->baudrate, 19200, 38400);
+ BAUDRATE_RANGE(dev->baudrate, 38400, 57600);
+ BAUDRATE_RANGE(dev->baudrate, 57600, 115200);
+ BAUDRATE_RANGE(dev->baudrate, 115200, 0xFFFFFFFF);
- serialattr.ByteSize = dev->data_bits;
- serialattr.StopBits = (dev->serial->lcr & 0x04) ? TWOSTOPBITS : ONESTOPBIT;
- if (!(dev->serial->lcr & 0x08)) {
- serialattr.fParity = 0;
- serialattr.Parity = NOPARITY;
- } else {
- serialattr.fParity = 1;
- if (dev->serial->lcr & 0x20) {
- serialattr.Parity = (MARKPARITY) + !!(dev->serial->lcr & 0x10);
- } else {
- serialattr.Parity = (ODDPARITY) + !!(dev->serial->lcr & 0x10);
- }
- }
+ serialattr.ByteSize = dev->data_bits;
+ serialattr.StopBits = (dev->serial->lcr & 0x04) ? TWOSTOPBITS : ONESTOPBIT;
+ if (!(dev->serial->lcr & 0x08)) {
+ serialattr.fParity = 0;
+ serialattr.Parity = NOPARITY;
+ } else {
+ serialattr.fParity = 1;
+ if (dev->serial->lcr & 0x20) {
+ serialattr.Parity = (MARKPARITY) + !!(dev->serial->lcr & 0x10);
+ } else {
+ serialattr.Parity = (ODDPARITY) + !!(dev->serial->lcr & 0x10);
+ }
+ }
- SetCommState((HANDLE)dev->master_fd, &serialattr);
+ SetCommState((HANDLE) dev->master_fd, &serialattr);
#undef BAUDRATE_RANGE
}
}
@@ -168,7 +171,7 @@ open_pseudo_terminal(serial_passthrough_t *dev)
if (dev->master_fd == (intptr_t) INVALID_HANDLE_VALUE) {
wchar_t errorMsg[1024] = { 0 };
wchar_t finalMsg[1024] = { 0 };
- DWORD error = GetLastError();
+ DWORD error = GetLastError();
FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), errorMsg, 1024, NULL);
swprintf(finalMsg, 1024, L"Named Pipe (server, named_pipe=\"%hs\", port=COM%d): %ls\n", ascii_pipe_name, dev->port + 1, errorMsg);
ui_msgbox(MBX_ERROR | MBX_FATAL, finalMsg);
@@ -188,8 +191,9 @@ open_host_serial_port(serial_passthrough_t *dev)
.WriteTotalTimeoutMultiplier = 0,
.WriteTotalTimeoutConstant = 1000
};
- DCB* serialattr = calloc(1, sizeof(DCB));
- if (!serialattr) return 0;
+ DCB *serialattr = calloc(1, sizeof(DCB));
+ if (!serialattr)
+ return 0;
dev->master_fd = (intptr_t) CreateFileA(dev->host_serial_path, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (dev->master_fd == (intptr_t) INVALID_HANDLE_VALUE) {
free(serialattr);
@@ -201,7 +205,7 @@ open_host_serial_port(serial_passthrough_t *dev)
free(serialattr);
return 0;
}
- GetCommState((HANDLE)dev->master_fd, serialattr);
+ GetCommState((HANDLE) dev->master_fd, serialattr);
dev->backend_priv = serialattr;
return 1;
}
diff --git a/src/win/win_settings.c b/src/win/win_settings.c
index 4901b283c..7129230a3 100644
--- a/src/win/win_settings.c
+++ b/src/win/win_settings.c
@@ -73,7 +73,6 @@
#include <86box/win.h>
#include <86box/serial_passthrough.h>
#include "../disk/minivhd/minivhd.h"
-#include "../disk/minivhd/minivhd_util.h"
/* Icon, Bus, File, C, H, S, Size, Speed */
#define C_COLUMNS_HARD_DISKS 7
@@ -101,21 +100,29 @@ static int temp_mouse, temp_joystick;
/* Sound category */
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;
+static int temp_midi_output_device;
+static int temp_midi_input_device;
+static int temp_mpu401;
+static int temp_float;
+static int temp_fm_driver;
/* Network category */
-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];
+static int temp_net_type[NET_CARD_MAX];
+static uint16_t temp_net_card[NET_CARD_MAX];
+static char temp_pcap_dev[NET_CARD_MAX][128];
/* Ports category */
-static int temp_lpt_devices[PARALLEL_MAX];
-static int temp_serial[SERIAL_MAX], temp_lpt[PARALLEL_MAX];
-static int temp_serial_passthrough_enabled[SERIAL_MAX];
+static int temp_lpt_devices[PARALLEL_MAX];
+static uint8_t temp_serial[SERIAL_MAX];
+static uint8_t temp_lpt[PARALLEL_MAX];
+static int temp_serial_passthrough_enabled[SERIAL_MAX];
/* Other peripherals category */
-static int temp_fdc_card, temp_hdc, temp_ide_ter, temp_ide_qua, temp_cassette;
+static int temp_fdc_card;
+static int temp_hdc;
+static int temp_ide_ter;
+static int temp_ide_qua;
+static int temp_cassette;
static int temp_scsi_card[SCSI_BUS_MAX];
static int temp_bugger;
static int temp_postcard;
@@ -328,11 +335,11 @@ win_settings_init(void)
temp_sync = time_sync;
/* Video category */
- temp_gfxcard[0] = gfxcard[0];
+ temp_gfxcard[0] = gfxcard[0];
temp_gfxcard[1] = gfxcard[1];
- temp_voodoo = voodoo_enabled;
- temp_ibm8514 = ibm8514_enabled;
- temp_xga = xga_enabled;
+ temp_voodoo = voodoo_enabled;
+ temp_ibm8514 = ibm8514_enabled;
+ temp_xga = xga_enabled;
/* Input devices category */
temp_mouse = mouse_type;
@@ -351,17 +358,17 @@ win_settings_init(void)
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
+#ifdef ENABLE_SETTINGS_LOG
assert(sizeof(temp_pcap_dev[i]) == sizeof(net_cards_conf[i].host_dev_name));
-# endif
+#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++) {
- temp_lpt_devices[i] = lpt_ports[i].device;
- temp_lpt[i] = lpt_ports[i].enabled;
+ temp_lpt_devices[i] = lpt_ports[i].device;
+ temp_lpt[i] = lpt_ports[i].enabled;
}
for (i = 0; i < SERIAL_MAX; i++) {
temp_serial[i] = com_ports[i].enabled;
@@ -442,7 +449,7 @@ win_settings_init(void)
static int
win_settings_changed(void)
{
- int i = 0, j = 0;
+ int i = 0;
/* Machine category */
i = i || (machine != temp_machine);
@@ -468,7 +475,7 @@ win_settings_changed(void)
i = i || (joystick_type != temp_joystick);
/* Sound category */
- for (j = 0; j < SOUND_CARD_MAX; j++)
+ for (uint8_t 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);
@@ -477,24 +484,24 @@ win_settings_changed(void)
i = i || (fm_driver != temp_fm_driver);
/* Network category */
- for (j = 0; j < NET_CARD_MAX; j++) {
+ for (uint8_t 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++) {
+ for (uint8_t j = 0; j < PARALLEL_MAX; j++) {
i = i || (temp_lpt_devices[j] != lpt_ports[j].device);
i = i || (temp_lpt[j] != lpt_ports[j].enabled);
}
- for (j = 0; j < SERIAL_MAX; j++) {
+ for (uint8_t j = 0; j < SERIAL_MAX; j++) {
i = i || (temp_serial[j] != com_ports[j].enabled);
i = i || (temp_serial_passthrough_enabled[i] != serial_passthrough_enabled[i]);
}
/* Storage devices category */
- for (j = 0; j < SCSI_BUS_MAX; j++)
+ for (uint8_t j = 0; j < SCSI_BUS_MAX; j++)
i = i || (temp_scsi_card[j] != scsi_card_current[j]);
i = i || (fdc_type != temp_fdc_card);
i = i || (hdc_current != temp_hdc);
@@ -506,7 +513,7 @@ win_settings_changed(void)
i = i || memcmp(hdd, temp_hdd, HDD_NUM * sizeof(hard_disk_t));
/* Floppy drives category */
- for (j = 0; j < FDD_NUM; j++) {
+ for (uint8_t j = 0; j < FDD_NUM; j++) {
i = i || (temp_fdd_types[j] != fdd_get_type(j));
i = i || (temp_fdd_turbo[j] != fdd_get_turbo(j));
i = i || (temp_fdd_check_bpb[j] != fdd_get_check_bpb(j));
@@ -523,7 +530,7 @@ win_settings_changed(void)
i = i || (temp_isartc != isartc_type);
/* ISA memory boards. */
- for (j = 0; j < ISAMEM_MAX; j++)
+ for (uint8_t j = 0; j < ISAMEM_MAX; j++)
i = i || (temp_isamem[j] != isamem_type[j]);
i = i || !!temp_deviceconfig;
@@ -535,8 +542,6 @@ win_settings_changed(void)
static void
win_settings_save(void)
{
- int i = 0;
-
pc_reset_hard_close();
/* Machine category */
@@ -552,8 +557,8 @@ win_settings_save(void)
time_sync = temp_sync;
/* Video category */
- gfxcard[0] = temp_gfxcard[0];
- gfxcard[1] = temp_gfxcard[1];
+ gfxcard[0] = temp_gfxcard[0];
+ gfxcard[1] = temp_gfxcard[1];
voodoo_enabled = temp_voodoo;
ibm8514_enabled = temp_ibm8514;
xga_enabled = temp_xga;
@@ -563,7 +568,7 @@ win_settings_save(void)
joystick_type = temp_joystick;
/* Sound category */
- for (i = 0; i < SOUND_CARD_MAX; i++)
+ for (uint8_t 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;
@@ -572,7 +577,7 @@ win_settings_save(void)
fm_driver = temp_fm_driver;
/* Network category */
- for (i = 0; i < NET_CARD_MAX; i++) {
+ for (uint8_t 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]);
@@ -580,17 +585,17 @@ win_settings_save(void)
}
/* Ports category */
- for (i = 0; i < PARALLEL_MAX; i++) {
+ for (uint8_t i = 0; i < PARALLEL_MAX; i++) {
lpt_ports[i].device = temp_lpt_devices[i];
lpt_ports[i].enabled = temp_lpt[i];
}
- for (i = 0; i < SERIAL_MAX; i++) {
- com_ports[i].enabled = temp_serial[i];
+ for (uint8_t i = 0; i < SERIAL_MAX; i++) {
+ com_ports[i].enabled = temp_serial[i];
serial_passthrough_enabled[i] = temp_serial_passthrough_enabled[i];
}
/* Storage devices category */
- for (i = 0; i < SCSI_BUS_MAX; i++)
+ for (uint8_t i = 0; i < SCSI_BUS_MAX; i++)
scsi_card_current[i] = temp_scsi_card[i];
hdc_current = temp_hdc;
fdc_type = temp_fdc_card;
@@ -600,11 +605,11 @@ win_settings_save(void)
/* Hard disks category */
memcpy(hdd, temp_hdd, HDD_NUM * sizeof(hard_disk_t));
- for (i = 0; i < HDD_NUM; i++)
+ for (uint8_t i = 0; i < HDD_NUM; i++)
hdd[i].priv = NULL;
/* Floppy drives category */
- for (i = 0; i < FDD_NUM; i++) {
+ for (uint8_t i = 0; i < FDD_NUM; i++) {
fdd_set_type(i, temp_fdd_types[i]);
fdd_set_turbo(i, temp_fdd_turbo[i]);
fdd_set_check_bpb(i, temp_fdd_check_bpb[i]);
@@ -612,7 +617,7 @@ win_settings_save(void)
/* Removable devices category */
memcpy(cdrom, temp_cdrom, CDROM_NUM * sizeof(cdrom_t));
- for (i = 0; i < CDROM_NUM; i++) {
+ for (uint8_t i = 0; i < CDROM_NUM; i++) {
cdrom[i].is_dir = 0;
cdrom[i].priv = NULL;
cdrom[i].ops = NULL;
@@ -623,12 +628,12 @@ win_settings_save(void)
cdrom[i].get_channel = NULL;
}
memcpy(zip_drives, temp_zip_drives, ZIP_NUM * sizeof(zip_drive_t));
- for (i = 0; i < ZIP_NUM; i++) {
+ for (uint8_t i = 0; i < ZIP_NUM; i++) {
zip_drives[i].f = NULL;
zip_drives[i].priv = NULL;
}
memcpy(mo_drives, temp_mo_drives, MO_NUM * sizeof(mo_drive_t));
- for (i = 0; i < MO_NUM; i++) {
+ for (uint8_t i = 0; i < MO_NUM; i++) {
mo_drives[i].f = NULL;
mo_drives[i].priv = NULL;
}
@@ -639,7 +644,7 @@ win_settings_save(void)
isartc_type = temp_isartc;
/* ISA memory boards. */
- for (i = 0; i < ISAMEM_MAX; i++)
+ for (uint8_t i = 0; i < ISAMEM_MAX; i++)
isamem_type[i] = temp_isamem[i];
/* Mark configuration as changed. */
@@ -1801,7 +1806,7 @@ win_settings_ports_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
}
for (i = 0; i < SERIAL_MAX; i++) {
- temp_serial[i] = settings_get_check(hdlg, IDC_CHECK_SERIAL1 + i);
+ temp_serial[i] = settings_get_check(hdlg, IDC_CHECK_SERIAL1 + i);
temp_serial_passthrough_enabled[i] = settings_get_check(hdlg, IDC_CHECK_SERIAL_PASS1 + i);
}
@@ -2025,10 +2030,10 @@ network_recalc_combos(HWND hdlg)
#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))));
+ 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
@@ -2053,44 +2058,44 @@ win_settings_network_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
#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);
+ 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_PCAP1, (LPARAM) lptsTemp);
- }
- settings_set_cur_sel(hdlg, IDC_COMBO_PCAP1, network_dev_to_id(temp_pcap_dev[0]));
+ 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_NET1);
- 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_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++;
+ 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++;
}
- settings_enable_window(hdlg, IDC_COMBO_NET1, d);
- network_recalc_combos(hdlg);
- free(lptsTemp);
+ c++;
+ }
+
+ settings_enable_window(hdlg, IDC_COMBO_NET1, d);
+ network_recalc_combos(hdlg);
+ free(lptsTemp);
#if 0
}
#endif
@@ -2157,10 +2162,10 @@ win_settings_network_proc(HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam)
#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)];
+ 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
@@ -2486,7 +2491,7 @@ static BOOL
win_settings_hard_disks_recalc_list(HWND hdlg)
{
LVITEM lvI;
- int i, j = 0;
+ int j = 0;
WCHAR szText[256], usr_path_w[1024];
HWND hwndList = GetDlgItem(hdlg, IDC_LIST_HARD_DISKS);
@@ -2500,7 +2505,7 @@ win_settings_hard_disks_recalc_list(HWND hdlg)
lvI.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvI.stateMask = lvI.iSubItem = lvI.state = 0;
- for (i = 0; i < HDD_NUM; i++) {
+ for (uint8_t i = 0; i < HDD_NUM; i++) {
if (temp_hdd[i].bus > 0) {
hdc_id_to_listview_index[i] = j;
lvI.iSubItem = 0;
diff --git a/src/win/win_ui.c b/src/win/win_ui.c
index 3144c8ef3..7deaf7738 100644
--- a/src/win/win_ui.c
+++ b/src/win/win_ui.c
@@ -45,7 +45,7 @@
#include <86box/win.h>
#include <86box/version.h>
#ifdef DISCORD
-# include <86box/discord.h>
+# include <86box/discord.h>
#endif
#ifdef MTR_ENABLED
@@ -1183,6 +1183,7 @@ ui_init(int nCmdShow)
{IDCANCEL, MAKEINTRESOURCE(IDS_2120)}
};
uint32_t helper_lang;
+ static int fs_on_signal = 0, fs_off_signal = 0;
/* Load DPI related Windows 10 APIs */
user32_handle = dynld_module("user32.dll", user32_imports);
@@ -1461,9 +1462,20 @@ ui_init(int nCmdShow)
plat_mouse_capture(0);
}
- if (video_fullscreen && keyboard_isfsexit()) {
+ if (!fs_off_signal && video_fullscreen && keyboard_isfsexit()) {
/* Signal "exit fullscreen mode". */
+ fs_off_signal = 1;
+ } else if (fs_off_signal && video_fullscreen && keyboard_isfsexit_down()) {
plat_setfullscreen(0);
+ fs_off_signal = 0;
+ }
+
+ if (!fs_on_signal && !video_fullscreen && keyboard_isfsenter()) {
+ /* Signal "enter fullscreen mode". */
+ fs_on_signal = 1;
+ } else if (fs_on_signal && !video_fullscreen && keyboard_isfsenter_down()) {
+ plat_setfullscreen(1);
+ fs_on_signal = 0;
}
#ifdef DISCORD