mirror of
https://github.com/86Box/86Box.git
synced 2026-02-23 01:48:21 -07:00
Merge remote-tracking branch 'upstream/master' into feature/mtrr
This commit is contained in:
41
.ci/build.sh
41
.ci/build.sh
@@ -156,7 +156,18 @@ do
|
||||
|
||||
-p)
|
||||
shift
|
||||
dep_report=1
|
||||
|
||||
# Check for lddtree and install it if required.
|
||||
which lddtree > /dev/null || DEBIAN_FRONTEND=noninteractive sudo apt-get -y install pax-utils
|
||||
|
||||
# Default to main binary.
|
||||
binary="$1"
|
||||
[ -z "$binary" ] && binary="archive_tmp/usr/local/bin/$project"
|
||||
|
||||
# Run lddtree with AppImage lib directories included in the search path.
|
||||
LD_LIBRARY_PATH=$(find "$(pwd)/archive_tmp" -type d -name lib -o -name lib64 | while read dir; do find "$dir" -type d; done | tr '\n' ':') \
|
||||
lddtree "$binary"
|
||||
exit $?
|
||||
;;
|
||||
|
||||
-s)
|
||||
@@ -198,6 +209,7 @@ if [ -z "$package_name" -a -z "$tarball_name" ] || [ -n "$package_name" -a -z "$
|
||||
then
|
||||
echo '[!] Usage: build.sh -b {package_name} {architecture} [-t] [cmake_flags...]'
|
||||
echo ' build.sh -s {source_tarball_name}'
|
||||
echo 'Dep. tree: build.sh -p [archive_tmp/path/to/binary]'
|
||||
exit 100
|
||||
fi
|
||||
|
||||
@@ -316,7 +328,7 @@ 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
|
||||
|
||||
@@ -560,16 +572,15 @@ else
|
||||
|
||||
# Establish general dependencies.
|
||||
pkgs="cmake ninja-build pkg-config git wget p7zip-full extra-cmake-modules wayland-protocols tar gzip file appstream"
|
||||
[ $dep_report -ne 0 ] && pkgs="$pkgs pax-utils"
|
||||
if [ "$(dpkg --print-architecture)" = "$arch_deb" ]
|
||||
then
|
||||
pkgs="$pkgs build-essential"
|
||||
else
|
||||
# Add foreign architecture if required.
|
||||
if ! dpkg --print-foreign-architectures | grep -qE '^'"$arch_deb"'$'
|
||||
if ! dpkg --print-foreign-architectures | grep -Fx "$arch_deb"
|
||||
then
|
||||
sudo dpkg --add-architecture "$arch_deb"
|
||||
|
||||
|
||||
# Force an apt-get update.
|
||||
save_buildtag aptupdate "arch_$arch_deb"
|
||||
fi
|
||||
@@ -874,6 +885,11 @@ else
|
||||
cwd_root="$(pwd)"
|
||||
check_buildtag "libs.$arch_deb"
|
||||
|
||||
cp cmake/flags-gcc.cmake cmake/flags-gcc.cmake.old
|
||||
sed -i -e 's/ -Werror=.*\([" ]\)/\1/g' cmake/flags-gcc.cmake # temporary hack for -Werror=old-style-definition non-compliance on FluidSynth and SDL2
|
||||
sed -i -e 's/ C;CXX/ IGNORED/' cmake/flags-gcc.cmake # workaround for dynamic c(xx)flags system overwriting library flags and breaking (at least) openal-soft
|
||||
sed -i -e 's/_INIT / /g' cmake/flags-gcc.cmake # still append our own flags
|
||||
|
||||
if grep -q "OPENAL:BOOL=ON" build/CMakeCache.txt
|
||||
then
|
||||
# Build openal-soft 1.23.1 manually to fix audio issues. This is a temporary
|
||||
@@ -890,7 +906,7 @@ else
|
||||
sed -i -e 's/PW_KEY_CONFIG_NAME/"config.name"/g' "$prefix/alc/backends/pipewire.cpp"
|
||||
|
||||
prefix_build="$prefix/build-$arch_deb"
|
||||
cmake -G Ninja -D ALSOFT_UTILS=OFF -D ALSOFT_EXAMPLES=OFF -D "CMAKE_TOOLCHAIN_FILE=$toolchain_file" -D "CMAKE_INSTALL_PREFIX=$cwd_root/archive_tmp/usr" -S "$prefix" -B "$prefix_build" || exit 99
|
||||
cmake -G Ninja -D "CMAKE_TOOLCHAIN_FILE=$toolchain_file" -D "CMAKE_INSTALL_PREFIX=$cwd_root/archive_tmp/usr" -S "$prefix" -B "$prefix_build" || exit 99
|
||||
cmake --build "$prefix_build" -j$(nproc) || exit 99
|
||||
cmake --install "$prefix_build" || exit 99
|
||||
|
||||
@@ -939,8 +955,6 @@ else
|
||||
rm -rf "$cache_dir/fluidsynth-"* # remove old versions
|
||||
wget -qO - https://github.com/FluidSynth/fluidsynth/archive/refs/tags/v2.3.0.tar.gz | tar zxf - -C "$cache_dir" || rm -rf "$prefix"
|
||||
fi
|
||||
cp cmake/flags-gcc.cmake cmake/flags-gcc.cmake.old
|
||||
sed -i -e 's/ -Werror=.*\([" ]\)/\1/g' cmake/flags-gcc.cmake # temporary hack for -Werror=old-style-definition non-compliance on FluidSynth and SDL2
|
||||
prefix_build="$prefix/build-$arch_deb"
|
||||
cmake -G Ninja -D enable-dbus=OFF -D enable-jack=OFF -D enable-oss=OFF -D enable-sdl2=OFF -D enable-pulseaudio=OFF -D enable-pipewire=OFF -D enable-alsa=OFF \
|
||||
-D "CMAKE_TOOLCHAIN_FILE=$toolchain_file" -D "CMAKE_INSTALL_PREFIX=$cwd_root/archive_tmp/usr" \
|
||||
@@ -978,6 +992,7 @@ else
|
||||
-S "$prefix" -B "$prefix_build" || exit 99
|
||||
cmake --build "$prefix_build" -j$(nproc) || exit 99
|
||||
cmake --install "$prefix_build" || exit 99
|
||||
|
||||
mv cmake/flags-gcc.cmake.old cmake/flags-gcc.cmake
|
||||
|
||||
# Archive Discord Game SDK library.
|
||||
@@ -1142,16 +1157,6 @@ EOF
|
||||
|
||||
# Remove appimage-builder binary on failure, just in case it's corrupted.
|
||||
[ $status -ne 0 ] && rm -f "$appimage_builder_binary"
|
||||
|
||||
# Generate library dependency report if requested.
|
||||
if [ $dep_report -ne 0 ]
|
||||
then
|
||||
echo '[-] Library dependency report:'
|
||||
|
||||
# Run lddtree with AppImage lib directories included in the search path.
|
||||
LD_LIBRARY_PATH=$(find "$(pwd)/archive_tmp" -type d -name lib -o -name lib64 | while read dir; do find "$dir" -type d; done | tr '\n' ':') \
|
||||
lddtree "archive_tmp/usr/local/bin/$project" 2>&1 | tee depreport.txt
|
||||
fi
|
||||
fi
|
||||
|
||||
# Check if the archival succeeded.
|
||||
|
||||
@@ -768,7 +768,7 @@ cdi_add_track(cd_img_t *cdi, track_t *cur, uint64_t *shift, uint64_t prestart, u
|
||||
}
|
||||
|
||||
/* First track (track number must be 1). */
|
||||
if (cdi->tracks_num == 0) {
|
||||
if ((prev == NULL) || (cdi->tracks_num == 0)) {
|
||||
/* I guess this makes sure the structure is not filled with invalid data. */
|
||||
if (cur->number != 1)
|
||||
return 0;
|
||||
|
||||
@@ -166,7 +166,7 @@ ali1429_write(uint16_t addr, uint8_t val, void *priv)
|
||||
dev->cfg_locked = (val != 0xc5);
|
||||
|
||||
if (!dev->cfg_locked) {
|
||||
pclog("M1429: dev->regs[%02x] = %02x\n", dev->index, val);
|
||||
ali1429_log("M1429: dev->regs[%02x] = %02x\n", dev->index, val);
|
||||
|
||||
/* Common M1429 Registers */
|
||||
switch (dev->index) {
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t index, regs[6];
|
||||
uint8_t index, regs[256];
|
||||
} et6000_t;
|
||||
|
||||
#ifdef ENABLE_ET6000_LOG
|
||||
|
||||
@@ -140,12 +140,16 @@ codeblock_tree_add(codeblock_t *new_block)
|
||||
block = block->right ? &codeblock[block->right] : NULL;
|
||||
}
|
||||
|
||||
if (a < old_block_cmp)
|
||||
old_block->left = get_block_nr(new_block);
|
||||
else
|
||||
old_block->right = get_block_nr(new_block);
|
||||
if (old_block != NULL) {
|
||||
if (a < old_block_cmp)
|
||||
old_block->left = get_block_nr(new_block);
|
||||
else
|
||||
old_block->right = get_block_nr(new_block);
|
||||
|
||||
new_block->parent = get_block_nr(old_block);
|
||||
} else
|
||||
new_block->parent = BLOCK_INVALID;
|
||||
|
||||
new_block->parent = get_block_nr(old_block);
|
||||
new_block->left = new_block->right = BLOCK_INVALID;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -866,6 +866,8 @@ load_network(void)
|
||||
ui_msgbox_header(MBX_ERROR, (wchar_t *) IDS_2096, (wchar_t *) IDS_2130);
|
||||
}
|
||||
strcpy(net_cards_conf[c].host_dev_name, "none");
|
||||
} else {
|
||||
strncpy(net_cards_conf[c].host_dev_name, p, sizeof(net_cards_conf[c].host_dev_name) - 1);
|
||||
}
|
||||
} else {
|
||||
strncpy(net_cards_conf[c].host_dev_name, p, sizeof(net_cards_conf[c].host_dev_name) - 1);
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#define _386_COMMON_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
#define readmemb_n(s, a, b) ((readlookup2[(uint32_t) ((s) + (a)) >> 12] == (uintptr_t) LOOKUP_INV || (s) == 0xFFFFFFFF) ? readmembl_no_mmut((s) + (a), b) : *(uint8_t *) (readlookup2[(uint32_t) ((s) + (a)) >> 12] + (uintptr_t) ((s) + (a))))
|
||||
#define readmemw_n(s, a, b) ((readlookup2[(uint32_t) ((s) + (a)) >> 12] == (uintptr_t) LOOKUP_INV || (s) == 0xFFFFFFFF || (((s) + (a)) & 1)) ? readmemwl_no_mmut((s) + (a), b) : *(uint16_t *) (readlookup2[(uint32_t) ((s) + (a)) >> 12] + (uint32_t) ((s) + (a))))
|
||||
@@ -196,13 +197,21 @@ fastreadb(uint32_t a)
|
||||
uint8_t *t;
|
||||
|
||||
if ((a >> 12) == pccache)
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint8_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint8_t *) &pccache2[a]);
|
||||
#endif
|
||||
t = getpccache(a);
|
||||
if (cpu_state.abrt)
|
||||
return 0;
|
||||
pccache = a >> 12;
|
||||
pccache2 = t;
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint8_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint8_t *) &pccache2[a]);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline uint16_t
|
||||
@@ -216,14 +225,22 @@ fastreadw(uint32_t a)
|
||||
return val;
|
||||
}
|
||||
if ((a >> 12) == pccache)
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint16_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint16_t *) &pccache2[a]);
|
||||
#endif
|
||||
t = getpccache(a);
|
||||
if (cpu_state.abrt)
|
||||
return 0;
|
||||
|
||||
pccache = a >> 12;
|
||||
pccache2 = t;
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint16_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint16_t *) &pccache2[a]);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline uint32_t
|
||||
@@ -239,7 +256,11 @@ fastreadl(uint32_t a)
|
||||
pccache2 = t;
|
||||
pccache = a >> 12;
|
||||
}
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint32_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint32_t *) &pccache2[a]);
|
||||
#endif
|
||||
}
|
||||
val = fastreadw(a);
|
||||
val |= (fastreadw(a + 2) << 16);
|
||||
@@ -250,10 +271,18 @@ static __inline void *
|
||||
get_ram_ptr(uint32_t a)
|
||||
{
|
||||
if ((a >> 12) == pccache)
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return (void *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL));
|
||||
#else
|
||||
return &pccache2[a];
|
||||
#endif
|
||||
else {
|
||||
uint8_t *t = getpccache(a);
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return (void *) (((uintptr_t) &t[a] & 0x00000000ffffffffULL) | ((uintptr_t) &t[0] & 0xffffffff00000000ULL));
|
||||
#else
|
||||
return &t[a];
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -271,14 +300,22 @@ fastreadw_fetch(uint32_t a)
|
||||
return val;
|
||||
}
|
||||
if ((a >> 12) == pccache)
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint16_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint16_t *) &pccache2[a]);
|
||||
#endif
|
||||
t = getpccache(a);
|
||||
if (cpu_state.abrt)
|
||||
return 0;
|
||||
|
||||
pccache = a >> 12;
|
||||
pccache2 = t;
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint16_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint16_t *) &pccache2[a]);
|
||||
#endif
|
||||
}
|
||||
|
||||
static __inline uint32_t
|
||||
@@ -294,7 +331,11 @@ fastreadl_fetch(uint32_t a)
|
||||
pccache2 = t;
|
||||
pccache = a >> 12;
|
||||
}
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
return *((uint32_t *) (((uintptr_t) &pccache2[a] & 0x00000000ffffffffULL) | ((uintptr_t) &pccache2[0] & 0xffffffff00000000ULL)));
|
||||
#else
|
||||
return *((uint32_t *) &pccache2[a]);
|
||||
#endif
|
||||
}
|
||||
val = fastreadw_fetch(a);
|
||||
if (opcode_length[val & 0xff] > 2)
|
||||
|
||||
@@ -150,8 +150,10 @@ device_add_common(const device_t *d, const device_t *cd, void *p, void *params,
|
||||
if (devices[c] == NULL)
|
||||
break;
|
||||
}
|
||||
if (c >= DEVICE_MAX)
|
||||
if ((c >= DEVICE_MAX) || (c >= 256)) {
|
||||
fatal("DEVICE: too many devices\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Do this so that a chained device_add will not identify the same ID
|
||||
its master device is already trying to assign. */
|
||||
|
||||
@@ -214,13 +214,14 @@ sermouse_data_mmseries(mouse_t *dev, int x, int y, int b)
|
||||
dev->data[0] = 0x80;
|
||||
if (x >= 0)
|
||||
dev->data[0] |= 0x10;
|
||||
if (y >= 0)
|
||||
/* It appears we have inverted Y polarity. */
|
||||
if (y < 0)
|
||||
dev->data[0] |= 0x08;
|
||||
dev->data[0] |= (b & 0x01) ? 0x04 : 0x00; /* left button */
|
||||
dev->data[0] |= (b & 0x04) ? 0x02 : 0x00; /* middle button */
|
||||
dev->data[0] |= (b & 0x02) ? 0x01 : 0x00; /* right button */
|
||||
dev->data[1] = abs(x);
|
||||
dev->data[2] = abs(y);
|
||||
dev->data[1] = abs(x) & 0x7f;
|
||||
dev->data[2] = abs(y) & 0x7f;
|
||||
|
||||
return 3;
|
||||
}
|
||||
|
||||
@@ -161,6 +161,10 @@ hdd_seek_get_time(hard_disk_t *hdd, uint32_t dst_addr, uint8_t operation, uint8_
|
||||
return HDD_OVERHEAD_TIME;
|
||||
|
||||
hdd_zone_t *zone = NULL;
|
||||
if (hdd->num_zones <= 0) {
|
||||
fatal("hdd_seek_get_time(): hdd->num_zones < 0)\n");
|
||||
return 0.0;
|
||||
}
|
||||
for (int i = 0; i < hdd->num_zones; i++) {
|
||||
zone = &hdd->zones[i];
|
||||
if (zone->end_sector >= dst_addr)
|
||||
|
||||
@@ -1593,10 +1593,8 @@ machine_at_hot433_init(const machine_t *model)
|
||||
device_add(&umc_hb4_device);
|
||||
device_add(&umc_8886af_device);
|
||||
device_add(&um8669f_device);
|
||||
// device_add(&intel_flash_bxt_device);
|
||||
device_add(&sst_flash_29ee010_device);
|
||||
// device_add(&keyboard_at_ami_device);
|
||||
device_add(&keyboard_ps2_ami_device);
|
||||
device_add(&winbond_flash_w29c010_device);
|
||||
device_add(&keyboard_at_ami_device);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1790,17 +1788,13 @@ machine_at_tg486gp_init(const machine_t *model)
|
||||
int
|
||||
machine_at_tg486g_init(const machine_t *model)
|
||||
{
|
||||
int ret;
|
||||
int ret, i;
|
||||
|
||||
ret = bios_load_linear("roms/machines/tg486g/tg486g.bin",
|
||||
0x000c0000, 262144, 0);
|
||||
|
||||
if (bios_only || !ret)
|
||||
return ret;
|
||||
else {
|
||||
mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000);
|
||||
mem_mapping_set_exec(&bios_mapping, rom);
|
||||
}
|
||||
|
||||
machine_at_common_init(model);
|
||||
device_add(&sis_85c471_device);
|
||||
@@ -1808,5 +1802,12 @@ machine_at_tg486g_init(const machine_t *model)
|
||||
device_add(&fdc37c651_ide_device);
|
||||
device_add(&keyboard_ps2_tg_ami_pci_device);
|
||||
|
||||
if (gfxcard[0] != VID_INTERNAL) {
|
||||
for (i = 0; i < 32768; i++)
|
||||
rom[i] = mem_readb_phys(0x000c0000 + i);
|
||||
}
|
||||
mem_mapping_set_addr(&bios_mapping, 0x0c0000, 0x40000);
|
||||
mem_mapping_set_exec(&bios_mapping, rom);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -662,6 +662,9 @@ uint8_t *
|
||||
getpccache(uint32_t a)
|
||||
{
|
||||
uint64_t a64 = (uint64_t) a;
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
uint8_t *p;
|
||||
#endif
|
||||
uint32_t a2;
|
||||
|
||||
a2 = a;
|
||||
@@ -682,7 +685,12 @@ getpccache(uint32_t a)
|
||||
cpu_prefetch_cycles = cpu_mem_prefetch_cycles;
|
||||
}
|
||||
|
||||
#if (defined __amd64__ || defined _M_X64 || defined __aarch64__ || defined _M_ARM64)
|
||||
p = &_mem_exec[a64 >> MEM_GRANULARITY_BITS][(uintptr_t) (a64 & MEM_GRANULARITY_PAGE) - (uintptr_t) (a2 & ~0xfff)];
|
||||
return (uint8_t *) (((uintptr_t) p & 0x00000000ffffffffULL) | ((uintptr_t) &_mem_exec[a64 >> MEM_GRANULARITY_BITS][0] & 0xffffffff00000000ULL));
|
||||
#else
|
||||
return &_mem_exec[a64 >> MEM_GRANULARITY_BITS][(uintptr_t) (a64 & MEM_GRANULARITY_PAGE) - (uintptr_t) (a2 & ~0xfff)];
|
||||
#endif
|
||||
}
|
||||
|
||||
mem_log("Bad getpccache %08X%08X\n", (uint32_t) (a64 >> 32), (uint32_t) (a64 & 0xffffffffULL));
|
||||
|
||||
@@ -1208,6 +1208,7 @@ pcnetReceiveNoSync(void *priv, uint8_t *buf, int size)
|
||||
uint32_t iRxDesc;
|
||||
int cbPacket;
|
||||
uint8_t buf1[60];
|
||||
RMD rmd = { 0 };
|
||||
|
||||
if (CSR_DRX(dev) || CSR_STOP(dev) || CSR_SPND(dev) || !size)
|
||||
return 0;
|
||||
@@ -1254,7 +1255,6 @@ pcnetReceiveNoSync(void *priv, uint8_t *buf, int size)
|
||||
iRxDesc = CSR_RCVRL(dev);
|
||||
|
||||
while (iRxDesc-- > 0) {
|
||||
RMD rmd;
|
||||
pcnetRmdLoad(dev, &rmd, PHYSADDR(dev, GCPhys), 0);
|
||||
GCPhys += cb;
|
||||
}
|
||||
|
||||
@@ -341,7 +341,7 @@ msgid "Machine:"
|
||||
msgstr "機型:"
|
||||
|
||||
msgid "Configure"
|
||||
msgstr "配置"
|
||||
msgstr "設定"
|
||||
|
||||
msgid "CPU type:"
|
||||
msgstr "CPU 類型:"
|
||||
@@ -650,7 +650,7 @@ msgid "ZIP images"
|
||||
msgstr "ZIP 映像"
|
||||
|
||||
msgid "86Box could not find any usable ROM images.\n\nPlease <a href=\"https://github.com/86Box/roms/releases/latest\">download</a> a ROM set and extract it into the \"roms\" directory."
|
||||
msgstr "86Box 找不到任何可用的 ROM 映像。\n\n請<a href=\"https://github.com/86Box/roms/releases/latest\">下載</a>ROM 包並將其解壓到 \"roms\" 資料夾。"
|
||||
msgstr "86Box 找不到任何可用的 ROM 映像。\n\n請<a href=\"https://github.com/86Box/roms/releases/latest\">下載</a> ROM 套件並將其解壓到 \"roms\" 資料夾。"
|
||||
|
||||
msgid "(empty)"
|
||||
msgstr "(空)"
|
||||
@@ -875,7 +875,7 @@ msgid "Make sure libpcap is installed and that you are on a libpcap-compatible n
|
||||
msgstr "請確認 libpcap 已安裝且使用相容 libpcap 的網路連線。"
|
||||
|
||||
msgid "Invalid configuration"
|
||||
msgstr "無效配置"
|
||||
msgstr "無效設定"
|
||||
|
||||
msgid "freetype.dll"
|
||||
msgstr "freetype.dll"
|
||||
@@ -923,7 +923,7 @@ msgid "CD-ROM images"
|
||||
msgstr "光碟映像"
|
||||
|
||||
msgid "%hs Device Configuration"
|
||||
msgstr "%hs 裝置配置"
|
||||
msgstr "%hs 裝置設定"
|
||||
|
||||
msgid "Monitor in sleep mode"
|
||||
msgstr "顯示器處在睡眠狀態"
|
||||
@@ -935,7 +935,7 @@ msgid "OpenGL options"
|
||||
msgstr "OpenGL 選項"
|
||||
|
||||
msgid "You are loading an unsupported configuration"
|
||||
msgstr "正在載入一個不受支援的配置"
|
||||
msgstr "正在載入一個不受支援的設定"
|
||||
|
||||
msgid "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."
|
||||
msgstr "此模擬電腦禁用了基於選定電腦的 CPU 類型過濾。\n\n能夠選中與所選機器本不相容的 CPU,但是可能會遇到與機器 BIOS 或其他軟體不相容的問題。\n\n啟用此設定不受官方支援,並且提交的任何錯誤報告可能會視為無效而關閉。"
|
||||
@@ -998,10 +998,10 @@ msgid "Custom (large)..."
|
||||
msgstr "自訂 (大容量)..."
|
||||
|
||||
msgid "Add New Hard Disk"
|
||||
msgstr "添加新硬碟"
|
||||
msgstr "增加新硬碟"
|
||||
|
||||
msgid "Add Existing Hard Disk"
|
||||
msgstr "添加已存在的硬碟"
|
||||
msgstr "增加已存在的硬碟"
|
||||
|
||||
msgid "HDI disk images cannot be larger than 4 GB."
|
||||
msgstr "HDI 磁碟映像不能超過 4 GB。"
|
||||
|
||||
@@ -66,8 +66,8 @@ MediaHistoryManager::getHistoryListForDeviceIndex(int index, ui::MediaType type)
|
||||
if ((index >= 0) && (index < master_list[type].size())) {
|
||||
return master_list[type][index];
|
||||
} else {
|
||||
qWarning("Media device index %i for device type %s was requested but index %i is out of range (valid range: >= 0 && < %i)",
|
||||
index, mediaTypeToString(type).toUtf8().constData(), index, master_list[type].size());
|
||||
qWarning("Media device index %i for device type %s was requested but index %i is out of range (valid range: >= 0 && < %lli)",
|
||||
index, mediaTypeToString(type).toUtf8().constData(), index, static_cast<long long>(master_list[type].size()));
|
||||
}
|
||||
}
|
||||
// Failure gets an empty list
|
||||
@@ -88,8 +88,8 @@ MediaHistoryManager::getImageForSlot(int index, int slot, ui::MediaType type)
|
||||
if ((slot >= 0) && (slot < device_history.size())) {
|
||||
image_name = device_history[slot];
|
||||
} else {
|
||||
qWarning("Media history slot %i, index %i for device type %s was requested but slot %i is out of range (valid range: >= 0 && < %i, device_history.size() is %i)",
|
||||
slot, index, mediaTypeToString(type).toUtf8().constData(), slot, maxDevicesSupported(type), device_history.size());
|
||||
qWarning("Media history slot %i, index %i for device type %s was requested but slot %i is out of range (valid range: >= 0 && < %i, device_history.size() is %lli)",
|
||||
slot, index, mediaTypeToString(type).toUtf8().constData(), slot, maxDevicesSupported(type), static_cast<long long>(device_history.size()));
|
||||
}
|
||||
return image_name;
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ it8661_ldn(uint16_t addr, uint8_t val, it8661f_t *dev)
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
it8661_serial(LDN & 2, addr, val, dev);
|
||||
it8661_serial((LDN & 2) - 1, addr, val, dev);
|
||||
break;
|
||||
case 3:
|
||||
it8661_lpt(addr, val, dev);
|
||||
|
||||
@@ -587,6 +587,7 @@ ac97_codec_init(const device_t *info)
|
||||
/* Associate this codec to the current controller. */
|
||||
if (!ac97_codec || (ac97_codec_count <= 0)) {
|
||||
pclog("AC97 Codec %d: No controller to associate codec\n", ac97_codec_id);
|
||||
free(dev);
|
||||
return NULL;
|
||||
}
|
||||
*ac97_codec = dev;
|
||||
|
||||
@@ -327,7 +327,7 @@ draw_char_ram4(herculesplus_t *dev, int x, uint8_t chr, uint8_t attr)
|
||||
if ((attr & 0x77) == 0)
|
||||
cfg = ibg; /* 'blank' attribute */
|
||||
|
||||
buffer32->line[dev->displine][x * cw + i] = dev->cols[attr][blink][cfg];
|
||||
buffer32->line[dev->displine][x * cw + i] = dev->cols[attr][!!blink][cfg];
|
||||
val = val << 1;
|
||||
}
|
||||
}
|
||||
@@ -423,7 +423,7 @@ draw_char_ram48(herculesplus_t *dev, int x, uint8_t chr, uint8_t attr)
|
||||
else
|
||||
cfg |= ibg;
|
||||
|
||||
buffer32->line[dev->displine][(x * cw) + i] = dev->cols[attr][blink][cfg];
|
||||
buffer32->line[dev->displine][(x * cw) + i] = dev->cols[attr][!!blink][cfg];
|
||||
val = val << 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,8 +53,8 @@ ics2494_getclock(int clock, void *p)
|
||||
{
|
||||
ics2494_t *ics2494 = (ics2494_t *) p;
|
||||
|
||||
if (clock > 16)
|
||||
clock = 16;
|
||||
if (clock > 15)
|
||||
clock = 15;
|
||||
|
||||
return ics2494->freq[clock];
|
||||
}
|
||||
|
||||
@@ -266,7 +266,7 @@ END
|
||||
|
||||
#define STR_MACHINE_TYPE "機器類型:"
|
||||
#define STR_MACHINE "機型:"
|
||||
#define STR_CONFIGURE "配置"
|
||||
#define STR_CONFIGURE "設定"
|
||||
#define STR_CPU_TYPE "CPU 類型:"
|
||||
#define STR_CPU_SPEED "速度:"
|
||||
#define STR_FPU "浮點處理器 (FPU):"
|
||||
@@ -402,7 +402,7 @@ BEGIN
|
||||
IDS_2053 "速度"
|
||||
IDS_2054 "ZIP %03i %i (%s): %ls"
|
||||
IDS_2055 "ZIP 映像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
|
||||
IDS_2056 "86Box 找不到任何可用的 ROM 映像。\n\n請<a href=""https://github.com/86Box/roms/releases/latest"">下載</a>ROM 包並將其解壓到 ""roms"" 資料夾。"
|
||||
IDS_2056 "86Box 找不到任何可用的 ROM 映像。\n\n請<a href=""https://github.com/86Box/roms/releases/latest"">下載</a> ROM 套件並將其解壓到 ""roms"" 資料夾。"
|
||||
IDS_2057 "(空)"
|
||||
IDS_2058 "ZIP 映像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有檔案 (*.*)\0*.*\0"
|
||||
IDS_2059 "加速"
|
||||
@@ -491,7 +491,7 @@ BEGIN
|
||||
#define LIB_NAME_PCAP "libpcap"
|
||||
#endif
|
||||
IDS_2130 "請確認 " LIB_NAME_PCAP " 已安裝且使用相容 " LIB_NAME_PCAP " 的網路連線。"
|
||||
IDS_2131 "無效配置"
|
||||
IDS_2131 "無效設定"
|
||||
#ifdef _WIN32
|
||||
#define LIB_NAME_FREETYPE "freetype.dll"
|
||||
#else
|
||||
@@ -517,11 +517,11 @@ BEGIN
|
||||
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_2142 "%hs 裝置設定"
|
||||
IDS_2143 "顯示器處在睡眠狀態"
|
||||
IDS_2144 "OpenGL 著色器 (*.GLSL)\0*.GLSL\0所有檔案 (*.*)\0*.*\0"
|
||||
IDS_2145 "OpenGL 選項"
|
||||
IDS_2146 "正在載入一個不受支援的配置"
|
||||
IDS_2146 "正在載入一個不受支援的設定"
|
||||
IDS_2147 "此模擬電腦禁用了基於選定電腦的 CPU 類型過濾。\n\n能夠選中與所選機器本不相容的 CPU,但是可能會遇到與機器 BIOS 或其他軟體不相容的問題。\n\n啟用此設定不受官方支援,並且提交的任何錯誤報告可能會視為無效而關閉。"
|
||||
IDS_2148 "繼續"
|
||||
IDS_2149 "磁帶: %s"
|
||||
@@ -554,8 +554,8 @@ BEGIN
|
||||
IDS_4099 "不存在 MFM/RLL 或 ESDI CD-ROM 光碟機"
|
||||
IDS_4100 "自訂..."
|
||||
IDS_4101 "自訂 (大容量)..."
|
||||
IDS_4102 "添加新硬碟"
|
||||
IDS_4103 "添加已存在的硬碟"
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user