Merge pull request #3 from Cacodemon345/qt

Fix macOS builds
This commit is contained in:
Joakim L. Gilje
2021-12-01 22:33:14 +01:00
committed by GitHub
49 changed files with 918 additions and 413 deletions

View File

@@ -167,9 +167,7 @@ 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 */
#ifdef USE_DISCORD
int enable_discord = 0; /* (C) enable Discord integration */
#endif
int enable_crashdump = 0; /* (C) enable crash dump */
/* Statistics. */

View File

@@ -131,18 +131,25 @@ opti283_shadow_recalc(opti283_t *dev)
shadowbios = shadowbios_write = 0;
dev->shadow_high = 0;
opti283_log("OPTI 283: %02X %02X %02X %02X\n", dev->regs[0x11], dev->regs[0x12], dev->regs[0x13], dev->regs[0x14]);
if (dev->regs[0x11] & 0x80) {
mem_set_mem_state_both(0xf0000, 0x10000, MEM_READ_EXTANY | MEM_WRITE_INTERNAL);
opti283_log("OPTI 283: F0000-FFFFF READ_EXTANY, WRITE_INTERNAL\n");
shadowbios_write = 1;
} else {
shadowbios = 1;
if (dev->regs[0x14] & 0x80) {
mem_set_mem_state_both(0xf0000, 0x01000, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
opti283_log("OPTI 283: F0000-F0FFF READ_INTERNAL, WRITE_INTERNAL\n");
shadowbios_write = 1;
} else
} else {
mem_set_mem_state_both(0xf0000, 0x01000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED);
opti283_log("OPTI 283: F0000-F0FFF READ_INTERNAL, WRITE_DISABLED\n");
}
mem_set_mem_state_both(0xf1000, 0x0f000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED);
opti283_log("OPTI 283: F1000-FFFFF READ_INTERNAL, WRITE_DISABLED\n");
}
sh_copy = dev->regs[0x11] & 0x08;
@@ -154,7 +161,7 @@ opti283_shadow_recalc(opti283_t *dev)
sh_enable = dev->regs[0x13] & (1 << (i + 4));
sh_mode = dev->regs[0x11] & (1 << (i >> 2));
rom = dev->regs[0x11] & (1 << ((i >> 2) + 4));
pclog("OPTI 283: %i/%08X: %i, %i, %i\n", i, base, (i >= 4) ? (1 << (i - 4)) : (1 << (i + 4)), (1 << (i >> 2)), (1 << ((i >> 2) + 4)));
opti283_log("OPTI 283: %i/%08X: %i, %i, %i\n", i, base, (i >= 4) ? (1 << (i - 4)) : (1 << (i + 4)), (1 << (i >> 2)), (1 << ((i >> 2) + 4)));
if (sh_enable && rom) {
if (base >= 0x000e0000)
@@ -163,20 +170,28 @@ opti283_shadow_recalc(opti283_t *dev)
dev->shadow_high |= 1;
if (sh_mode) {
mem_set_mem_state_both(base, 0x4000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED);
opti283_log("OPTI 283: %08X-%08X READ_INTERNAL, WRITE_DISABLED\n", base, base + 0x3fff);
} else {
if (base >= 0x000e0000)
shadowbios_write |= 1;
if (sh_copy)
if (sh_copy) {
mem_set_mem_state_both(base, 0x4000, MEM_READ_INTERNAL | MEM_WRITE_INTERNAL);
else
opti283_log("OPTI 283: %08X-%08X READ_INTERNAL, WRITE_INTERNAL\n", base, base + 0x3fff);
} else {
mem_set_mem_state_both(base, 0x4000, MEM_READ_INTERNAL | MEM_WRITE_EXTERNAL);
} else
mem_set_mem_state_both(base, 0x4000, MEM_READ_INTERNAL | MEM_WRITE_DISABLED);
opti283_log("OPTI 283: %08X-%08X READ_INTERNAL, WRITE_EXTERNAL\n", base, base + 0x3fff);
}
}
} else {
if (base >= 0xe0000)
if (base >= 0xe0000) {
mem_set_mem_state_both(base, 0x4000, MEM_READ_EXTANY | MEM_WRITE_DISABLED);
else
opti283_log("OPTI 283: %08X-%08X READ_EXTANY, WRITE_DISABLED\n", base, base + 0x3fff);
} else {
mem_set_mem_state_both(base, 0x4000, MEM_READ_EXTERNAL | MEM_WRITE_DISABLED);
opti283_log("OPTI 283: %08X-%08X READ_EXTERNAL, WRITE_DISABLED\n", base, base + 0x3fff);
}
}
}
@@ -196,6 +211,8 @@ opti283_shadow_recalc(opti283_t *dev)
mem_mapping_disable(&dev->mem_mappings[0]);
mem_mapping_disable(&dev->mem_mappings[1]);
}
flushmmucache_nopc();
}

View File

@@ -608,7 +608,7 @@ static void
ide_sec_disable();
if (info->local)
dev->nvr = device_add(&ls486e_nvr_device);
dev->nvr = device_add(&ami_1994_nvr_device);
else
dev->nvr = device_add(&at_nvr_device);

View File

@@ -579,15 +579,11 @@ load_general(void)
else
strcpy(icon_set, "");
#if USE_DISCORD
enable_discord = !!config_get_int(cat, "enable_discord", 0);
#endif
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
video_framerate = config_get_int(cat, "video_gl_framerate", -1);
video_vsync = config_get_int(cat, "video_gl_vsync", 0);
strcpy_s(video_shader, sizeof(video_shader), config_get_string(cat, "video_gl_shader", ""));
#endif
strncpy(video_shader, config_get_string(cat, "video_gl_shader", ""), sizeof(video_shader));
}
@@ -1159,12 +1155,12 @@ load_storage_controllers(void)
if (strlen(p) > 511)
fatal("load_storage_controllers(): strlen(p) > 511\n");
else
strncpy(cassette_fname, p, MIN(511, strlen(p) + 1));
strncpy(cassette_fname, p, MIN(512, strlen(p) + 1));
p = config_get_string(cat, "cassette_mode", "");
if (strlen(p) > 511)
fatal("load_storage_controllers(): strlen(p) > 511\n");
else
strncpy(cassette_mode, p, MIN(511, strlen(p) + 1));
strncpy(cassette_mode, p, MIN(512, strlen(p) + 1));
cassette_pos = config_get_int(cat, "cassette_position", 0);
cassette_srate = config_get_int(cat, "cassette_srate", 44100);
cassette_append = !!config_get_int(cat, "cassette_append", 0);
@@ -2243,14 +2239,11 @@ save_general(void)
else
config_set_string(cat, "iconset", icon_set);
#if USE_DISCORD
if (enable_discord)
config_set_int(cat, "enable_discord", enable_discord);
else
config_delete_var(cat, "enable_discord");
#endif
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
if (video_framerate != -1)
config_set_int(cat, "video_gl_framerate", video_framerate);
else
@@ -2263,7 +2256,6 @@ save_general(void)
config_set_string(cat, "video_gl_shader", video_shader);
else
config_delete_var(cat, "video_gl_shader");
#endif
delete_section_if_empty(cat);
}

View File

@@ -679,17 +679,21 @@ add_to_kbc_queue_front(atkbd_t *dev, uint8_t val, uint8_t channel, uint8_t stat_
if (channel == 2) {
if (dev->mem[0] & 0x02)
picint(0x1000);
dev->last_irq = 0x1000;
if (kbc_ven != KBC_VEN_OLIVETTI)
dev->last_irq = 0x1000;
} else {
if (dev->mem[0] & 0x01)
picint(2);
dev->last_irq = 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;
}
@@ -1382,7 +1386,7 @@ write64_ami(void *priv, uint8_t val)
case 0xa1: /* get controller version */
kbd_log("ATkbc: AMI - get controller version\n");
add_data(dev, 'Z');
add_data(dev, 'H');
return 0;
case 0xa2: /* clear keyboard controller lines P22/P23 */

View File

@@ -174,7 +174,7 @@ sermouse_callback(struct serial_s *serial, void *priv)
dev->transmit_period = sermouse_transmit_period(dev, 1200, -1);
timer_stop(&dev->command_timer);
#ifdef USE_NEW_DYNAREC
sermouse_timer_on(dev, 5000.0, 0);
sermouse_timer_on(dev, cpu_use_dynarec ? 5000.0 : dev->transmit_period, 0);
#else
sermouse_timer_on(dev, dev->transmit_period, 0);
#endif

View File

@@ -134,9 +134,7 @@ extern int hdd_format_type; /* (C) hard disk file format */
extern int confirm_reset, /* (C) enable reset confirmation */
confirm_exit, /* (C) enable exit confirmation */
confirm_save; /* (C) enable save confirmation */
#ifdef USE_DISCORD
extern int enable_discord; /* (C) enable Discord integration */
#endif
extern int enable_crashdump; /* (C) enable crash dump */
extern int is_pentium; /* TODO: Move back to cpu/cpu.h when it's figured out,

View File

@@ -92,8 +92,9 @@ extern const device_t ps_nvr_device;
extern const device_t amstrad_nvr_device;
extern const device_t ibmat_nvr_device;
extern const device_t piix4_nvr_device;
extern const device_t ls486e_nvr_device;
extern const device_t ami_apollo_nvr_device;
extern const device_t ami_1992_nvr_device;
extern const device_t ami_1994_nvr_device;
extern const device_t ami_1995_nvr_device;
extern const device_t via_nvr_device;
extern const device_t p6rp4_nvr_device;
#endif

View File

@@ -353,13 +353,10 @@
#define IDM_MEDIA 40087
#define IDM_DOCS 40088
#ifdef USE_DISCORD
#define IDM_DISCORD 40090
#endif
#define IDM_PREFERENCES 40091
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
#define IDM_VID_GL_FPS_BLITTER 40100
#define IDM_VID_GL_FPS_25 40101
#define IDM_VID_GL_FPS_30 40102
@@ -369,7 +366,6 @@
#define IDM_VID_GL_VSYNC 40106
#define IDM_VID_GL_SHADER 40107
#define IDM_VID_GL_NOSHADER 40108
#endif
#define IDM_LOG_BREAKPOINT 51201
#define IDM_DUMP_VRAM 51202 // should be an Action

View File

@@ -66,9 +66,7 @@ DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
#define ZIP_SUBMENU_NAME L"ZIPSubmenu"
#define MO_SUBMENU_NAME L"MOSubmenu"
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
#define VID_GL_SUBMENU L"VidGLSubMenu"
#endif
/* Application-specific window messages.

View File

@@ -253,7 +253,7 @@ machine_at_rycleopardlx_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_ide_init(model);
machine_at_common_init(model);
device_add(&opti283_device);
device_add(&keyboard_at_ami_device);
@@ -609,7 +609,7 @@ machine_at_403tg_common_init(const machine_t *model, int nvr_hack)
{
if (nvr_hack) {
machine_at_common_init_ex(model, 2);
device_add(&ls486e_nvr_device);
device_add(&ami_1994_nvr_device);
} else
machine_at_common_init(model);
@@ -1158,7 +1158,8 @@ machine_at_pci400cb_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
device_add(&ide_isa_device);
pci_init(PCI_CONFIG_TYPE_1);
@@ -1190,7 +1191,8 @@ machine_at_g486ip_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
machine_at_common_init_ex(model, 2);
device_add(&ami_1992_nvr_device);
device_add(&ide_isa_device);
pci_init(PCI_CONFIG_TYPE_1);

View File

@@ -433,7 +433,8 @@ machine_at_excaliburpci2_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -145,7 +145,7 @@ machine_at_apollo_init(const machine_t *model)
return ret;
machine_at_common_init_ex(model, 2);
device_add(&ami_apollo_nvr_device);
device_add(&ami_1995_nvr_device);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);
@@ -293,7 +293,8 @@ machine_at_hawk_init(const machine_t *model)
if (bios_only || !ret)
return ret;
machine_at_common_init(model);
machine_at_common_init_ex(model, 2);
device_add(&ami_1994_nvr_device);
pci_init(PCI_CONFIG_TYPE_1);
pci_register_slot(0x00, PCI_CARD_NORTHBRIDGE, 0, 0, 0, 0);

View File

@@ -292,7 +292,7 @@ const machine_t machines[] = {
/* 486SLC machines */
/* 486SLC machines with just the ISA slot */
/* Has AMIKey H KBC firmware. */
{ "[OPTi 283] RYC Leopard LX", "rycleopardlx", MACHINE_TYPE_486SLC, CPU_PKG_486SLC_IBM, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT | MACHINE_IDE, 1024, 16384, 1024, 127, machine_at_rycleopardlx_init, NULL },
{ "[OPTi 283] RYC Leopard LX", "rycleopardlx", MACHINE_TYPE_486SLC, CPU_PKG_486SLC_IBM, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 1024, 16384, 1024, 127, machine_at_rycleopardlx_init, NULL },
/* 386DX machines */
{ "[ACC 2168] AMI 386DX clone", "acc386", MACHINE_TYPE_386DX, CPU_PKG_386DX, 0, 0, 0, 0, 0, 0, 0, MACHINE_AT, 1024, 16384, 1024, 127, machine_at_acc386_init, NULL },

View File

@@ -290,10 +290,11 @@
#define RTC_REGS 14 /* number of registers */
#define FLAG_LS_HACK 0x01
#define FLAG_APOLLO_HACK 0x02
#define FLAG_P6RP4_HACK 0x04
#define FLAG_PIIX4 0x08
#define FLAG_AMI_1992_HACK 0x01
#define FLAG_AMI_1994_HACK 0x02
#define FLAG_AMI_1995_HACK 0x04
#define FLAG_P6RP4_HACK 0x08
#define FLAG_PIIX4 0x10
typedef struct {
@@ -563,9 +564,11 @@ timer_tick(nvr_t *nvr)
static void
nvr_reg_common_write(uint16_t reg, uint8_t val, nvr_t *nvr, local_t *local)
{
if ((reg == 0x2c) && (local->flags & FLAG_LS_HACK))
if ((reg == 0x2c) && (local->flags & FLAG_AMI_1994_HACK))
nvr->new = 0;
if ((reg == 0x52) && (local->flags & FLAG_APOLLO_HACK))
if ((reg == 0x2d) && (local->flags & FLAG_AMI_1992_HACK))
nvr->new = 0;
if ((reg == 0x52) && (local->flags & FLAG_AMI_1995_HACK))
nvr->new = 0;
if ((reg >= 0x38) && (reg <= 0x3f) && local->wp[0])
return;
@@ -587,8 +590,7 @@ nvr_reg_write(uint16_t reg, uint8_t val, void *priv)
nvr_t *nvr = (nvr_t *)priv;
local_t *local = (local_t *)nvr->data;
struct tm tm;
uint8_t old, i;
uint16_t checksum = 0x0000;
uint8_t old;
old = nvr->regs[reg];
switch(reg) {
@@ -599,7 +601,7 @@ nvr_reg_write(uint16_t reg, uint8_t val, void *priv)
case RTC_REGB:
nvr->regs[RTC_REGB] = val;
if (((old^val) & REGB_SET) && (val&REGB_SET)) {
if (((old^val) & REGB_SET) && (val & REGB_SET)) {
/* According to the datasheet... */
nvr->regs[RTC_REGA] &= ~REGA_UIP;
nvr->regs[RTC_REGB] &= ~REGB_UIE;
@@ -615,19 +617,6 @@ nvr_reg_write(uint16_t reg, uint8_t val, void *priv)
nvr->regs[RTC_REGD] = val & 0x80;
break;
case 0x2e:
case 0x2f:
if (local->flags & FLAG_LS_HACK) {
/* 2E and 2F are a simple sum of the values of 0E to 2D. */
for (i = 0x0e; i < 0x2e; i++)
checksum += (uint16_t) nvr->regs[i];
nvr->regs[0x2e] = checksum >> 8;
nvr->regs[0x2f] = checksum & 0xff;
break;
}
nvr_reg_common_write(reg, val, nvr, local);
break;
case 0x32:
if ((reg == 0x32) && (local->cent == RTC_CENTURY_VIA) && local->wp_32)
break;
@@ -717,15 +706,33 @@ nvr_read(uint16_t addr, void *priv)
break;
case 0x2c:
if (!nvr->new && (local->flags & FLAG_LS_HACK))
if (!nvr->new && (local->flags & FLAG_AMI_1994_HACK))
ret = nvr->regs[local->addr[addr_id]] & 0x7f;
else
ret = nvr->regs[local->addr[addr_id]];
break;
case 0x2d:
if (!nvr->new && (local->flags & FLAG_AMI_1992_HACK))
ret = nvr->regs[local->addr[addr_id]] & 0xf7;
else
ret = nvr->regs[local->addr[addr_id]];
break;
case 0x2e:
case 0x2f:
if (!nvr->new && (local->flags & FLAG_LS_HACK)) {
if (!nvr->new && (local->flags & FLAG_AMI_1992_HACK)) {
for (i = 0x10; i <= 0x2d; i++) {
if (i == 0x2d)
checksum += (nvr->regs[i] & 0xf7);
else
checksum += nvr->regs[i];
}
if (local->addr[addr_id] == 0x2e)
ret = checksum >> 8;
else
ret = checksum & 0xff;
} else if (!nvr->new && (local->flags & FLAG_AMI_1994_HACK)) {
for (i = 0x10; i <= 0x2d; i++) {
if (i == 0x2c)
checksum += (nvr->regs[i] & 0x7f);
@@ -742,7 +749,7 @@ nvr_read(uint16_t addr, void *priv)
case 0x3e:
case 0x3f:
if (!nvr->new && (local->flags & FLAG_APOLLO_HACK)) {
if (!nvr->new && (local->flags & FLAG_AMI_1995_HACK)) {
/* The checksum at 3E-3F is for 37-3D and 40-7F. */
for (i = 0x37; i <= 0x3d; i++)
checksum += nvr->regs[i];
@@ -782,7 +789,7 @@ nvr_read(uint16_t addr, void *priv)
break;
case 0x52:
if (!nvr->new && (local->flags & FLAG_APOLLO_HACK))
if (!nvr->new && (local->flags & FLAG_AMI_1995_HACK))
ret = nvr->regs[local->addr[addr_id]] & 0xf3;
else
ret = nvr->regs[local->addr[addr_id]];
@@ -1005,16 +1012,16 @@ nvr_at_init(const device_t *info)
break;
case 1: /* standard AT */
case 5: /* Lucky Star LS-486E */
case 6: /* AMI Apollo */
case 5: /* AMI WinBIOS 1994 */
case 6: /* AMI BIOS 1995 */
if (info->local == 9)
local->flags |= FLAG_PIIX4;
else {
local->def = 0x00;
if ((info->local & 7) == 5)
local->flags |= FLAG_LS_HACK;
local->flags |= FLAG_AMI_1994_HACK;
else if ((info->local & 7) == 6)
local->flags |= FLAG_APOLLO_HACK;
local->flags |= FLAG_AMI_1995_HACK;
else
local->def = 0xff;
}
@@ -1035,9 +1042,13 @@ nvr_at_init(const device_t *info)
break;
case 4: /* IBM AT */
if (info->local == 12) {
local->def = 0x00;
local->flags |= FLAG_AMI_1992_HACK;
} else
local->def = 0xff;
nvr->irq = 8;
local->cent = RTC_CENTURY_AT;
local->def = 0xff;
break;
case 7: /* VIA VT82C586B */
@@ -1164,8 +1175,17 @@ const device_t piix4_nvr_device = {
NULL
};
const device_t ls486e_nvr_device = {
"Lucky Star LS-486E PC/AT NVRAM",
const device_t ami_1992_nvr_device = {
"AMI Color 1992 PC/AT NVRAM",
DEVICE_ISA | DEVICE_AT,
12,
nvr_at_init, nvr_at_close, nvr_at_reset,
{ NULL }, nvr_at_speed_changed,
NULL
};
const device_t ami_1994_nvr_device = {
"AMI WinBIOS 1994 PC/AT NVRAM",
DEVICE_ISA | DEVICE_AT,
13,
nvr_at_init, nvr_at_close, nvr_at_reset,
@@ -1173,8 +1193,8 @@ const device_t ls486e_nvr_device = {
NULL
};
const device_t ami_apollo_nvr_device = {
"AMI Apollo PC/AT NVRAM",
const device_t ami_1995_nvr_device = {
"AMI WinBIOS 1995 PC/AT NVRAM",
DEVICE_ISA | DEVICE_AT,
14,
nvr_at_init, nvr_at_close, nvr_at_reset,

View File

@@ -17,7 +17,7 @@ add_library(ui STATIC
qt_mainwindow.ui
qt_machinestatus.cpp
qt_machinestatus.hpp
qt_machinestatus.ui
#qt_machinestatus.ui
qt_gleswidget.cpp
qt_gleswidget.hpp

View File

@@ -7,4 +7,4 @@ public:
CocoaEventFilter() {};
~CocoaEventFilter();
virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override;
};
};

View File

@@ -1,5 +1,5 @@
#include <SDL.h>
#include "86box/plat.h"
//#include "86box/plat.h"
#include "cocoa_mouse.hpp"
#import <AppKit/AppKit.h>
extern "C"
@@ -15,6 +15,7 @@ extern "C"
#include <86box/ui.h>
#include <86box/video.h>
extern int mouse_capture;
extern void plat_mouse_capture(int);
}
typedef struct mouseinputdata
@@ -23,8 +24,7 @@ typedef struct mouseinputdata
int mousebuttons;
} mouseinputdata;
extern SDL_mutex* mousemutex;
extern mouseinputdata mousedata;
static mouseinputdata mousedata;
CocoaEventFilter::~CocoaEventFilter()
{
@@ -40,17 +40,13 @@ bool CocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *mess
NSEvent* event = (NSEvent*)message;
if ([event type] == NSEventTypeMouseMoved)
{
SDL_LockMutex(mousemutex);
mousedata.deltax += [event deltaX];
mousedata.deltay += [event deltaY];
SDL_UnlockMutex(mousemutex);
return true;
}
if ([event type] == NSEventTypeScrollWheel)
{
SDL_LockMutex(mousemutex);
mousedata.deltaz += [event deltaY];
SDL_UnlockMutex(mousemutex);
return true;
}
switch ([event type])
@@ -58,45 +54,33 @@ bool CocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *mess
default: return false;
case NSEventTypeLeftMouseDown:
{
SDL_LockMutex(mousemutex);
mousedata.mousebuttons |= 1;
SDL_UnlockMutex(mousemutex);
break;
}
case NSEventTypeLeftMouseUp:
{
SDL_LockMutex(mousemutex);
mousedata.mousebuttons &= ~1;
SDL_UnlockMutex(mousemutex);
break;
}
case NSEventTypeRightMouseDown:
{
SDL_LockMutex(mousemutex);
mousedata.mousebuttons |= 2;
SDL_UnlockMutex(mousemutex);
break;
}
case NSEventTypeRightMouseUp:
{
SDL_LockMutex(mousemutex);
mousedata.mousebuttons &= ~2;
SDL_UnlockMutex(mousemutex);
break;
}
case NSEventTypeOtherMouseDown:
{
SDL_LockMutex(mousemutex);
mousedata.mousebuttons |= 4;
SDL_UnlockMutex(mousemutex);
break;
}
case NSEventTypeOtherMouseUp:
{
if (mouse_get_buttons() < 3) { plat_mouse_capture(0); return true; }
SDL_LockMutex(mousemutex);
mousedata.mousebuttons &= ~4;
SDL_UnlockMutex(mousemutex);
break;
}
}
@@ -105,3 +89,12 @@ bool CocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *mess
}
return false;
}
extern "C" void macos_poll_mouse()
{
mouse_x = mousedata.deltax;
mouse_y = mousedata.deltay;
mouse_z = mousedata.deltaz;
mousedata.deltax = mousedata.deltay = mousedata.deltaz = 0;
mouse_buttons = mousedata.mousebuttons;
}

View File

@@ -1,4 +1,5 @@
#include <QApplication>
#include <QImage>
#include "qt_gleswidget.hpp"
#ifdef __APPLE__
#include <CoreGraphics/CoreGraphics.h>
@@ -11,7 +12,7 @@ extern "C"
#include <86box/video.h>
}
extern "C" void macos_poll_mouse();
void
qt_mouse_capture(int on)
{
@@ -34,11 +35,15 @@ qt_mouse_capture(int on)
void GLESWidget::qt_mouse_poll()
{
#ifdef __APPLE__
return macos_poll_mouse();
#else
mouse_x = mousedata.deltax;
mouse_y = mousedata.deltay;
mouse_z = mousedata.deltaz;
mousedata.deltax = mousedata.deltay = mousedata.deltaz = 0;
mouse_buttons = mousedata.mousebuttons;
#endif
}
void GLESWidget::resizeGL(int w, int h)
@@ -49,13 +54,20 @@ void GLESWidget::resizeGL(int w, int h)
void GLESWidget::initializeGL()
{
initializeOpenGLFunctions();
connect(this, &GLESWidget::reqUpdate, this, &GLESWidget::reqUpdate_);
}
void GLESWidget::paintGL()
{
QPainter painter(this);
//painter.fillRect(rect, QColor(0, 0, 0));
painter.drawImage(QRect(0, 0, width(), height()), m_image.convertToFormat(QImage::Format_RGBA8888), QRect(sx, sy, sw, sh));
painter.drawImage(QRect(0, 0, width(), height()), m_image.convertToFormat(QImage::Format_RGBX8888), QRect(sx, sy, sw, sh));
painter.end();
firstupdate = true;
}
void GLESWidget::reqUpdate_()
{
update();
}
void GLESWidget::mouseReleaseEvent(QMouseEvent *event)
@@ -110,8 +122,7 @@ void GLESWidget::mouseMoveEvent(QMouseEvent *event)
void GLESWidget::qt_real_blit(int x, int y, int w, int h)
{
// printf("Offpainter thread ID: %X\n", SDL_ThreadID());
if ((w <= 0) || (h <= 0) || (w > 2048) || (h > 2048) || (buffer32 == NULL))
if ((w <= 0) || (h <= 0) || (w > 2048) || (h > 2048) || (buffer32 == NULL) || !firstupdate)
{
video_blit_complete();
return;
@@ -120,7 +131,7 @@ void GLESWidget::qt_real_blit(int x, int y, int w, int h)
sy = y;
sw = this->w = w;
sh = this->h = h;
auto imagebits = m_image.bits();
static auto imagebits = m_image.bits();
for (int y1 = y; y1 < (y + h - 1); y1++)
{
auto scanline = imagebits + (y1 * (2048 + 64) * 4);
@@ -131,5 +142,5 @@ void GLESWidget::qt_real_blit(int x, int y, int w, int h)
video_screenshot((uint32_t *)imagebits, 0, 0, 2048 + 64);
}
video_blit_complete();
update();
this->reqUpdate();
}

View File

@@ -6,6 +6,8 @@
#include <QEvent>
#include <QKeyEvent>
#include <atomic>
class GLESWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
@@ -38,9 +40,13 @@ public:
{
event->ignore();
}
signals:
void reqUpdate();
public slots:
void qt_real_blit(int x, int y, int w, int h);
void qt_mouse_poll();
void reqUpdate_();
private:
struct mouseinputdata {
@@ -48,5 +54,5 @@ private:
int mousebuttons;
};
mouseinputdata mousedata;
std::atomic<bool> firstupdate{false};
};

View File

@@ -29,6 +29,8 @@ extern uint64_t tsc;
#include <QTimer>
#include <QStatusBar>
#include <array>
namespace {
struct PixmapSetActive {
QPixmap normal;

View File

@@ -13,6 +13,7 @@
#include "SDL.h"
#include "SDL_mutex.h"
#include "SDL_timer.h"
#include "qt_mainwindow.hpp"
#include "qt_sdl.h"
#include "cocoa_mouse.hpp"
@@ -76,6 +77,12 @@ main_thread_fn()
is_quit = 1;
}
uint32_t timer_onesec(uint32_t interval, void* param)
{
pc_onesec();
return interval;
}
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
#ifdef __APPLE__
@@ -97,6 +104,7 @@ int main(int argc, char* argv[]) {
/* Set the PAUSE mode depending on the renderer. */
// plat_pause(0);
SDL_AddTimer(1000, timer_onesec, nullptr);
/* Initialize the rendering window, or fullscreen. */
QTimer::singleShot(50, []() { plat_resize(640, 480); } );

View File

@@ -44,10 +44,11 @@ MainWindow::MainWindow(QWidget *parent) :
video_setblit(qt_blit);
ui->glesWidget->setMouseTracking(true);
connect(this, &MainWindow::blitToWidget, ui->glesWidget, &GLESWidget::qt_real_blit);
connect(this, &MainWindow::showMessageForNonQtThread, this, &MainWindow::showMessage_, Qt::BlockingQueuedConnection);
connect(this, &MainWindow::setTitleForNonQtThread, this, &MainWindow::setTitle_, Qt::BlockingQueuedConnection);
connect(this, &MainWindow::getTitleForNonQtThread, this, &MainWindow::getTitle_, Qt::BlockingQueuedConnection);
connect(this, &MainWindow::pollMouse, ui->glesWidget, &GLESWidget::qt_mouse_poll);
connect(this, &MainWindow::setMouseCapture, this, [this](bool state) {
@@ -116,7 +117,11 @@ void MainWindow::on_actionExit_triggered() {
}
void MainWindow::on_actionSettings_triggered() {
Settings settings;
int currentPause = dopause;
plat_pause(1);
Settings settings(this);
settings.setModal(true);
settings.setWindowModality(Qt::WindowModal);
settings.exec();
switch (settings.result()) {
@@ -135,6 +140,7 @@ void MainWindow::on_actionSettings_triggered() {
case QDialog::Rejected:
break;
}
plat_pause(currentPause);
}
std::array<uint32_t, 256> x11_to_xt_base
@@ -636,6 +642,34 @@ void MainWindow::on_actionFullscreen_triggered() {
}
}
void MainWindow::setTitle_(const wchar_t *title)
{
this->setWindowTitle(QString::fromWCharArray(title));
}
void MainWindow::setTitle(const wchar_t *title)
{
if (QThread::currentThread() == this->thread()) {
setTitle_(title);
} else {
emit setTitleForNonQtThread(title);
}
}
void MainWindow::getTitle_(wchar_t *title)
{
this->windowTitle().toWCharArray(title);
}
void MainWindow::getTitle(wchar_t *title)
{
if (QThread::currentThread() == this->thread()) {
getTitle_(title);
} else {
emit getTitleForNonQtThread(title);
}
}
void MainWindow::showMessage(const QString& header, const QString& message) {
if (QThread::currentThread() == this->thread()) {
showMessage_(header, message);
@@ -666,6 +700,11 @@ void MainWindow::keyPressEvent(QKeyEvent* event)
}
}
void MainWindow::blitToWidget(int x, int y, int w, int h)
{
ui->glesWidget->qt_real_blit(x, y, w, h);
}
void MainWindow::keyReleaseEvent(QKeyEvent* event)
{
#ifdef __APPLE__

View File

@@ -20,9 +20,11 @@ public:
~MainWindow();
void showMessage(const QString& header, const QString& message);
void setTitle(const wchar_t* title);
void getTitle(wchar_t* title);
void blitToWidget(int x, int y, int w, int h);
signals:
void paint(const QImage& image);
void blitToWidget(int x, int y, int w, int h);
void resizeContents(int w, int h);
void pollMouse();
void updateStatusBarPanes();
@@ -33,6 +35,8 @@ signals:
void setMouseCapture(bool state);
void showMessageForNonQtThread(const QString& header, const QString& message);
void setTitleForNonQtThread(const wchar_t* title);
void getTitleForNonQtThread(wchar_t* title);
private slots:
void on_actionFullscreen_triggered();
void on_actionSettings_triggered();
@@ -45,6 +49,8 @@ private slots:
void on_actionKeyboard_requires_capture_triggered();
void showMessage_(const QString& header, const QString& message);
void setTitle_(const wchar_t* title);
void getTitle_(wchar_t* title);
protected:
void keyPressEvent(QKeyEvent* event) override;
void keyReleaseEvent(QKeyEvent* event) override;

View File

@@ -283,10 +283,10 @@ plat_mmap(size_t size, uint8_t executable)
void *ret = mmap(0, size, PROT_READ | PROT_WRITE | (executable ? PROT_EXEC : 0), MAP_ANON | MAP_PRIVATE | (executable ? MAP_JIT : 0), 0, 0);
#else
void *ret = mmap(0, size, PROT_READ | PROT_WRITE | (executable ? PROT_EXEC : 0), MAP_ANON | MAP_PRIVATE, 0, 0);
#endif
auto retval = *reinterpret_cast<int*>(ret);
return (retval < 0) ? nullptr : ret;
#endif
#endif
}
void

View File

@@ -27,11 +27,11 @@ wchar_t* ui_window_title(wchar_t* str)
{
if (str == nullptr) {
static wchar_t title[512];
int chars = main_window->windowTitle().toWCharArray(title);
title[chars] = 0;
memset(title, 0, sizeof(title));
main_window->getTitle(title);
str = title;
} else {
main_window->setWindowTitle(QString::fromWCharArray(str));
main_window->setTitle(str);
}
return str;
}

View File

@@ -475,9 +475,9 @@ graphics_line(herculesplus_t *dev)
dev->ma++;
for (c = 0; c < 16; c++) {
val >>= 1;
buffer32->line[dev->displine][(x << 4) + c] = (val & 0x8000) ? 7 : 0;
buffer32->line[dev->displine][(x << 4) + c] = (val & 1) ? 7 : 0;
val <<= 1;
}
for (c = 0; c < 16; c += 8)

View File

@@ -373,6 +373,7 @@ END
#include "languages/ja-JP.rc"
#include "languages/pt-BR.rc"
#include "languages/pt-PT.rc"
#include "languages/ru-RU.rc"
#include "languages/sl-SI.rc"
#include "languages/es-ES.rc"
#include "languages/tr-TR.rc"

View File

@@ -20,7 +20,8 @@ add_library(plat OBJECT win.c win_dynld.c win_cdrom.c win_thread.c
add_library(ui OBJECT win_ui.c win_icon.c win_stbar.c win_sdl.c win_dialog.c win_about.c
win_settings.c win_devconf.c win_snd_gain.c win_specify_dim.c win_new_floppy.c
win_jsconf.c win_media_menu.c win_preferences.c 86Box.rc)
win_jsconf.c win_media_menu.c win_preferences.c win_discord.c glad.c win_opengl.c
win_opengl_glslp.c 86Box.rc)
if(MSVC)
# MSVC complains when we include the manifest from 86Box.rc...
@@ -44,19 +45,5 @@ else()
target_sources(plat PRIVATE win_joystick_rawinput.c)
endif()
if(DISCORD)
# PUBLIC due to config.c and 86box.c
target_compile_definitions(ui PUBLIC USE_DISCORD)
target_sources(ui PRIVATE win_discord.c)
endif()
if(OPENGL)
target_compile_definitions(ui PUBLIC USE_OPENGL)
target_compile_definitions(plat PRIVATE USE_OPENGL)
target_sources(ui PRIVATE glad.c win_opengl.c win_opengl_glslp.c)
endif()
target_link_libraries(86Box advapi32 comctl32 comdlg32 gdi32 shell32 iphlpapi
dxguid imm32 hid setupapi uxtheme version winmm psapi)

View File

@@ -54,9 +54,6 @@ ifeq ($(DEV_BUILD), y)
ifndef OPEN_AT
OPEN_AT := y
endif
ifndef OPENGL
OPENGL := y
endif
ifndef PAS16
PAS16 := n
endif
@@ -106,9 +103,6 @@ else
ifndef OPEN_AT
OPEN_AT := n
endif
ifndef OPENGL
OPENGL := n
endif
ifndef PAS16
PAS16 := n
endif
@@ -151,9 +145,6 @@ endif
ifndef ARM64
ARM64 := n
endif
ifndef WX
WX := n
endif
ifndef DINPUT
DINPUT := n
endif
@@ -184,9 +175,6 @@ ifeq ($(DYNAREC), y)
endif
endif
endif
ifndef DISCORD
DISCORD := y
endif
# Path to the dynamic recompiler code.
@@ -198,45 +186,7 @@ endif
# Name of the executable.
ifndef PROG
ifneq ($(WX), n)
PROG := Wx86Box
else
PROG := 86Box
endif
endif
# WxWidgets basic info. Extract using the config program.
ifneq ($(WX), n)
EXPATH += wx
WX_CONFIG := wx-config.exe
ifeq ($(WX), y)
WX_PATH := C:/MinGW32/WxWidgets
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
-I$(WX_PATH)/include/wx-3.0 \
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
-lwx_mswu-3.0.dll \
-lrpcrt4 -loleaut32 -lole32 -luuid \
-lwinspool -lwinmm -lshell32 -lcomctl32 \
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
endif
ifeq ($(WX), static)
WX_PATH := C:/MinGW32/WxWidgets
WX_FLAGS := -I$(WX_PATH)/lib/wx/include/msw-unicode-3.0 \
-I$(WX_PATH)/include/wx-3.0 \
-D__WXMSW__ -DWX_PRECOMP -D_FILE_OFFSET_BITS=64 -pthread
# -lwx_mswu_gl-3.0 -lwxtiff-3.0 -llzma
WX_LIBS := -mwindows -mthreads -L$(WX_PATH)/lib \
-lwx_mswu-3.0 -lwxscintilla-3.0 \
-lwxjpeg-3.0 -lwxpng-3.0 -lwxzlib-3.0 \
-lwxregexu-3.0 -lwxexpat-3.0 \
-lrpcrt4 -loleaut32 -lole32 -luuid \
-lwinspool -lwinmm -lshell32 -lcomctl32 \
-lcomdlg32 -ladvapi32 -lwsock32 -lgdi32
endif
endif
PROG := 86Box
#########################################################################
@@ -400,18 +350,6 @@ else
endif
endif
ifeq ($(WX), y)
OPTS += -DUSE_WX $(WX_FLAGS)
LIBS += $(WX_LIBS)
UIOBJ := wx_main.o wx_ui.o wx_stbar.o wx_render.o
else
UIOBJ := win_ui.o win_icon.o win_stbar.o \
win_sdl.o \
win_dialog.o win_about.o \
win_settings.o win_devconf.o win_snd_gain.o win_specify_dim.o win_preferences.o \
win_new_floppy.o win_jsconf.o win_media_menu.o
endif
ifeq ($(OPENAL), y)
OPTS += -DUSE_OPENAL
endif
@@ -443,12 +381,6 @@ VNCLIB += -lvncserver
VNCOBJ := vnc.o vnc_keymap.o
endif
ifeq ($(DISCORD), y)
OPTS += -DUSE_DISCORD
RFLAGS += -DUSE_DISCORD
DISCORDOBJ := win_discord.o
endif
ifeq ($(MINITRACE), y)
OPTS += -DMTR_ENABLED
RFLAGS += -DMTR_ENABLED
@@ -491,12 +423,6 @@ ifeq ($(OPEN_AT), y)
OPTS += -DUSE_OPEN_AT
endif
ifeq ($(OPENGL), y)
OPTS += -DUSE_OPENGL
RFLAGS += -DUSE_OPENGL
DEVBROBJ += win_opengl.o win_opengl_glslp.o glad.o
endif
ifeq ($(PAS16), y)
OPTS += -DUSE_PAS16
DEVBROBJ += snd_pas16.o
@@ -525,7 +451,7 @@ endif
# Final versions of the toolchain flags.
CFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
CFLAGS := $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \
$(AFLAGS) -fomit-frame-pointer -mstackrealign -Wall \
-fno-strict-aliasing
@@ -751,6 +677,13 @@ PLATOBJ := win.o \
win_crashdump.o win_midi.o \
win_mouse.o
UIOBJ := win_ui.o win_icon.o win_stbar.o win_discord.o \
win_sdl.o win_opengl.o win_opengl_glslp.o glad.o \
win_dialog.o win_about.o \
win_settings.o win_devconf.o win_snd_gain.o win_specify_dim.o win_preferences.o \
win_new_floppy.o win_jsconf.o \
win_media_menu.o
ifeq ($(DINPUT), y)
PLATOBJ += win_joystick.o
else
@@ -760,8 +693,7 @@ endif
OBJ := $(MAINOBJ) $(CPUOBJ) $(CHIPSETOBJ) $(MCHOBJ) $(DEVOBJ) $(MEMOBJ) \
$(FDDOBJ) $(GAMEOBJ) $(CDROMOBJ) $(ZIPOBJ) $(MOOBJ) $(HDDOBJ) $(MINIVHDOBJ) \
$(NETOBJ) $(PRINTOBJ) $(SCSIOBJ) $(SIOOBJ) $(SNDOBJ) $(VIDOBJ) $(VOODOOOBJ) \
$(PLATOBJ) $(UIOBJ) $(FSYNTHOBJ) $(MUNTOBJ) $(DEVBROBJ) \
$(DISCORDOBJ) $(MINITRACEOBJ)
$(PLATOBJ) $(UIOBJ) $(FSYNTHOBJ) $(MUNTOBJ) $(DEVBROBJ) $(MINITRACEOBJ)
ifdef EXOBJ
OBJ += $(EXOBJ)
endif
@@ -772,9 +704,6 @@ LIBS := -mwindows -lcomctl32 \
ifeq ($(VNC), y)
LIBS += $(VNCLIB) -lws2_32
endif
ifneq ($(WX), n)
LIBS += $(WX_LIBS) -lm
endif
LIBS += -lpng -lz -lwsock32 -lshell32 -liphlpapi -lpsapi -lSDL2 -limm32 -lhid -lsetupapi -loleaut32 -luxtheme -lversion -lwinmm -static -lstdc++
ifneq ($(X64), y)
ifneq ($(ARM64), y)
@@ -861,7 +790,7 @@ ifneq ($(DEBUG), y)
endif
hello.exe: hello.o
$(CXX) $(LDFLAGS) -o hello.exe hello.o $(WXLIBS) $(LIBS)
$(CXX) $(LDFLAGS) -o hello.exe hello.o $(LIBS)
ifneq ($(DEBUG), y)
@$(STRIP) hello.exe
endif

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Nastavení...", IDM_CONFIG
MENUITEM "&Aktualizovat ikony stavového řádku", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Předvolby...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Povolit integraci s &Discordem", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Pořídit &screenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Předvolby...", IDM_PREFERENCES
MENUITEM "Povolit integraci s &Discordem", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Zesílení zvuku", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Cílová snímková frekvence"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Zvolit shader...", IDM_VID_GL_SHADER
MENUITEM "&Odebrat shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3-Kern)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Optionen...", IDM_CONFIG
MENUITEM "&Statusleistenicons aktualisieren", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Einstellungen...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Discord-Integration aktivieren", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "S&creenshot aufnehmen\tStrg+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Einstellungen...", IDM_PREFERENCES
MENUITEM "&Discord-Integration aktivieren", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Schallverstärkung...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "Ziel&framerate"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Shader auswählen...", IDM_VID_GL_SHADER
MENUITEM "&Shader entfernen", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Settings...", IDM_CONFIG
MENUITEM "&Update status bar icons", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Preferences...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Enable &Discord integration", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Preferences...", IDM_PREFERENCES
MENUITEM "Enable &Discord integration", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "Sound &gain...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "Target &framerate"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Select shader...", IDM_VID_GL_SHADER
MENUITEM "&Remove shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Settings...", IDM_CONFIG
MENUITEM "&Update status bar icons", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Preferences...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Enable &Discord integration", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Take s&creenshot\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Preferences...", IDM_PREFERENCES
MENUITEM "Enable &Discord integration", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "Sound &gain...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "Target &framerate"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Select shader...", IDM_VID_GL_SHADER
MENUITEM "&Remove shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Ajustes...", IDM_CONFIG
MENUITEM "&Actualizar iconos en barra de estado", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Preferencias...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Habilitar integración con &Discord", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Tomar c&aptura\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Preferencias...", IDM_PREFERENCES
MENUITEM "Habilitar integración con &Discord", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Ganancia de sonido...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Tasa de refresco objetivo"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Seleccionar shader...", IDM_VID_GL_SHADER
MENUITEM "&Eliminar shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (ohjelmistopohjainen)", IDM_VID_SDL_SW
MENUITEM "SDL (&laitteistokiihdytetty)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Kokoonpano...", IDM_CONFIG
MENUITEM "&Päivitä tilapalkin kuvakkeita", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Sovellusasetukset...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Käytä &Discord integraatiota", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Ota &kuvakaappaus\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Sovellusasetukset...", IDM_PREFERENCES
MENUITEM "Käytä &Discord integraatiota", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Äänen tulotaso...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Kuvataajuustavoite"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "Valitse varjostin&ohjelma...", IDM_VID_GL_SHADER
MENUITEM "&Poista varjostinohjelma", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Logiciel)", IDM_VID_SDL_SW
MENUITEM "SDL (&Materiel)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Réglages...", IDM_CONFIG
MENUITEM "Mettre à jour la barre de stat&us", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Préférences...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Activer intégration &Discord", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Copie &Ecran\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Préférences...", IDM_PREFERENCES
MENUITEM "Activer intégration &Discord", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Gain Son...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Taux de rafraîchissement cible"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "Sé&lectionnez le shader...", IDM_VID_GL_SHADER
MENUITEM "S&upprimer le shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Softver)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardver)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 jezgra)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Opcije...", IDM_CONFIG
MENUITEM "&Ažuriranje ikone statusne trake", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Postavke...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Omogući integraciju &Discord-a", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Napravite &snimku zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Postavke...", IDM_PREFERENCES
MENUITEM "Omogući integraciju &Discord-a", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Pojačanje zvuka...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Ciljni framerate"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Odaberi shader...", IDM_VID_GL_SHADER
MENUITEM "&Ukloni shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -44,9 +44,7 @@ BEGIN
MENUITEM "&SDL (Szoftveres)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardveres)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -103,15 +101,12 @@ BEGIN
BEGIN
MENUITEM "&Konfigurálás...", IDM_CONFIG
MENUITEM "Állapotsori ikonok &frissítése", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Beállítások...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Discord integráció engedélyezése", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "&Képernyőkép készítése\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Beállítások...", IDM_PREFERENCES
MENUITEM "&Discord integráció engedélyezése", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Hangerőszabályzó...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -252,7 +247,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "Cél &képkockasebesség"
@@ -268,7 +262,6 @@ BEGIN
MENUITEM "Shader &kiválasztása...", IDM_VID_GL_SHADER
MENUITEM "Shader &eltávolítása", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Impostazioni...", IDM_CONFIG
MENUITEM "&Aggiorna icone della barra di stato", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Preferenze...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Abilita &integrazione Discord", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Cattura schermata\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Preferenze...", IDM_PREFERENCES
MENUITEM "Abilita &integrazione Discord", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "Guadagno &suono...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "Imposta obiettivo &fotogrammi"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Seleziona shader...", IDM_VID_GL_SHADER
MENUITEM "&Rimuovi shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "SDL (ソフトウェア)(&S)", IDM_VID_SDL_SW
MENUITEM "SDL (ハードウェア)(&H)", IDM_VID_SDL_HW
MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "OpenGL (3.3コア)(&G)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "VNC(&V)", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "設定(&S)...", IDM_CONFIG
MENUITEM "ステータスバーアイコンの更新(&U)", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "環境設定(&P)...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Discordとの連携を可能にする(&D)", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "クリーンショットを撮る(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "環境設定(&P)...", IDM_PREFERENCES
MENUITEM "Discordとの連携を可能にする(&D)", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "サウンドゲイン(&G)...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "目標フレームレート(&F)"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "シェーダの選択(&S)...", IDM_VID_GL_SHADER
MENUITEM "シェーダの削除(&R)", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -42,9 +42,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (Núcleo 3.3)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -101,15 +99,12 @@ BEGIN
BEGIN
MENUITEM "&Configurações...", IDM_CONFIG
MENUITEM "&Atualizar ícones da barra de status", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Preferências...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Ativar integração com o &Discord", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Capturar &tela\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Preferências...", IDM_PREFERENCES
MENUITEM "Ativar integração com o &Discord", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Ganho de som...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -250,7 +245,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Taxa de quadro pretendida"
@@ -266,7 +260,6 @@ BEGIN
MENUITEM "&Selecionar shader...", IDM_VID_GL_SHADER
MENUITEM "&Remover shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (Software)", IDM_VID_SDL_SW
MENUITEM "SDL (&Hardware)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (Núcleo 3.3)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Definições...", IDM_CONFIG
MENUITEM "&Atualizar ícones da barra de estado", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Preferências...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Ativar integração com &Discord", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "Gravar imagem de ecrã\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Preferências...", IDM_PREFERENCES
MENUITEM "Ativar integração com &Discord", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Ganho de som...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Taxa de quadros de destino"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Selecionar shader...", IDM_VID_GL_SHADER
MENUITEM "&Remover shader", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

637
src/win/languages/ru-RU.rc Normal file
View File

@@ -0,0 +1,637 @@
////////////////////////////////////////////////////////////////////////////
// Russian resources
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(65001)
#endif //_WIN32
#define AUTHORS
/////////////////////////////////////////////////////////////////////////////
//
// Menu
//
MainMenu MENU DISCARDABLE
BEGIN
POPUP "&Действие"
BEGIN
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 SEPARATOR
MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC
MENUITEM SEPARATOR
MENUITEM "&Пауза", IDM_ACTION_PAUSE
MENUITEM SEPARATOR
MENUITEM "&Выход...", IDM_ACTION_EXIT
END
POPUP "&Вид"
BEGIN
MENUITEM "&Скрыть строку статуса", IDM_VID_HIDE_STATUS_BAR
MENUITEM SEPARATOR
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.3)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
END
MENUITEM SEPARATOR
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
END
POPUP "Метод фильтрации"
BEGIN
MENUITEM "&Ближайший", IDM_VID_FILTER_NEAREST
MENUITEM "&Линейный", IDM_VID_FILTER_LINEAR
END
MENUITEM "Масштабирование Hi&DPI", IDM_VID_HIDPI
MENUITEM SEPARATOR
MENUITEM "&Полноэкранный режим\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN
POPUP "&Режим растягивания в полноэкранном режиме"
BEGIN
MENUITEM "&Растянуть на весь экран", IDM_VID_FS_FULL
MENUITEM "&4:3", IDM_VID_FS_43
MENUITEM "&Квадратные пиксели (сохранить соотношение)", IDM_VID_FS_KEEPRATIO
MENUITEM "&Целочисленная шкала", IDM_VID_FS_INT
END
POPUP "Настройки E&GA/(S)VGA"
BEGIN
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
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
END
END
MENUITEM SEPARATOR
MENUITEM "Оверскан CGA/PCjr/Tandy/E&GA/(S)VGA", IDM_VID_OVERSCAN
MENUITEM "Изменить контрастность &монохромного дисплея", IDM_VID_CGACON
END
MENUITEM "&Носители", IDM_MEDIA
POPUP "&Инструменты"
BEGIN
MENUITEM "&Настройки...", IDM_CONFIG
MENUITEM "&Обновление иконок строки статуса", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "Сделать с&криншот\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Параметры...", IDM_PREFERENCES
MENUITEM "Включить интеграцию &Discord", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Усиление звука...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
MENUITEM "Начать трассировку\tCtrl+T", IDM_ACTION_BEGIN_TRACE
MENUITEM "Завершить трассировку\tCtrl+T", IDM_ACTION_END_TRACE
#endif
END
#if defined(ENABLE_LOG_TOGGLES) || defined(ENABLE_LOG_COMMANDS)
POPUP "&Ведение журнала"
BEGIN
# ifdef ENABLE_BUSLOGIC_LOG
MENUITEM "Включить журналы BusLogic\tCtrl+F4", IDM_LOG_BUSLOGIC
# endif
# ifdef ENABLE_CDROM_LOG
MENUITEM "Включить журналы CD-ROM\tCtrl+F5", IDM_LOG_CDROM
# endif
# ifdef ENABLE_D86F_LOG
MENUITEM "Включить журналы дискет (86F)\tCtrl+F6", IDM_LOG_D86F
# endif
# ifdef ENABLE_FDC_LOG
MENUITEM "Включить журналы контроллера дискет\tCtrl+F7", IDM_LOG_FDC
# endif
# ifdef ENABLE_IDE_LOG
MENUITEM "Включить журналы IDE\tCtrl+F8", IDM_LOG_IDE
# endif
# ifdef ENABLE_SERIAL_LOG
MENUITEM "Включить журналы последовательного порта\tCtrl+F3", IDM_LOG_SERIAL
# endif
# ifdef ENABLE_NIC_LOG
MENUITEM "Включить журналы сети\tCtrl+F9", IDM_LOG_NIC
# endif
# ifdef ENABLE_LOG_COMMANDS
# ifdef ENABLE_LOG_TOGGLES
MENUITEM SEPARATOR
# endif
# ifdef ENABLE_LOG_BREAKPOINT
MENUITEM "&Точка останова журнала\tCtrl+F10", IDM_LOG_BREAKPOINT
# endif
# ifdef ENABLE_VRAM_DUMP
MENUITEM "&Выгрузка видео ОЗУ\tCtrl+F1", IDM_DUMP_VRAM
# endif
# endif
END
#endif
POPUP "&Помощь"
BEGIN
MENUITEM "&Документация...", IDM_DOCS
MENUITEM "&О программе 86Box...", IDM_ABOUT
END
END
StatusBarMenu MENU DISCARDABLE
BEGIN
MENUITEM SEPARATOR
END
CassetteSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "&Новый образ...", IDM_CASSETTE_IMAGE_NEW
MENUITEM SEPARATOR
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 SEPARATOR
MENUITEM "В&ыброс", IDM_CASSETTE_EJECT
END
END
CartridgeSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "&Образ...", IDM_CARTRIDGE_IMAGE
MENUITEM SEPARATOR
MENUITEM "В&ыброс", IDM_CARTRIDGE_EJECT
END
END
FloppySubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "&Новый образ...", IDM_FLOPPY_IMAGE_NEW
MENUITEM SEPARATOR
MENUITEM "&Существующий образ...", IDM_FLOPPY_IMAGE_EXISTING
MENUITEM "Существующий образ (&Защищенный от записи)...", IDM_FLOPPY_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
MENUITEM "Э&кспорт в 86F...", IDM_FLOPPY_EXPORT_TO_86F
MENUITEM SEPARATOR
MENUITEM "В&ыброс", IDM_FLOPPY_EJECT
END
END
CdromSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "&Mute", IDM_CDROM_MUTE
MENUITEM SEPARATOR
MENUITEM "П&устой", IDM_CDROM_EMPTY
MENUITEM "&Перезагрузка предыдущего образа", IDM_CDROM_RELOAD
MENUITEM SEPARATOR
MENUITEM "&Образ", IDM_CDROM_IMAGE
END
END
ZIPSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "&Новый образ...", IDM_ZIP_IMAGE_NEW
MENUITEM SEPARATOR
MENUITEM "&Существующий образ...", IDM_ZIP_IMAGE_EXISTING
MENUITEM "Существующий образ (&Защищенный от записи)...", IDM_ZIP_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
MENUITEM "В&ыброс", IDM_ZIP_EJECT
MENUITEM "&Перезагрузка предыдущего образа", IDM_ZIP_RELOAD
END
END
MOSubmenu MENU DISCARDABLE
BEGIN
POPUP ""
BEGIN
MENUITEM "&Новый образ...", IDM_MO_IMAGE_NEW
MENUITEM SEPARATOR
MENUITEM "&Существующий образ...", IDM_MO_IMAGE_EXISTING
MENUITEM "Существующий образ (&Защищенный от записи)...", IDM_MO_IMAGE_EXISTING_WP
MENUITEM SEPARATOR
MENUITEM "В&ыброс", IDM_MO_EJECT
MENUITEM "&Перезагрузка предыдущего образа", IDM_MO_RELOAD
END
END
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "Целевая &частота кадров"
BEGIN
MENUITEM "&Синхронизация с видео", IDM_VID_GL_FPS_BLITTER
MENUITEM "&25 кадров в секунду", IDM_VID_GL_FPS_25
MENUITEM "&30 кадров в секунду", IDM_VID_GL_FPS_30
MENUITEM "&50 кадров в секунду", IDM_VID_GL_FPS_50
MENUITEM "&60 кадров в секунду", IDM_VID_GL_FPS_60
MENUITEM "&75 кадров в секунду", IDM_VID_GL_FPS_75
END
MENUITEM "&VSync", IDM_VID_GL_VSYNC
MENUITEM "&Выбор шейдера...", IDM_VID_GL_SHADER
MENUITEM "&Удалить шейдер", IDM_VID_GL_NOSHADER
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
#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_GAIN "Усиление"
#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_MACHINE_TYPE "Тип материнской платы:"
#define STR_MACHINE "Материнская плата:"
#define STR_CONFIGURE "Настройка"
#define STR_CPU_TYPE "Тип CPU:"
#define STR_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_VOODOO "Графика Voodoo"
#define STR_MOUSE "Мышь:"
#define STR_JOYSTICK "Джойстик:"
#define STR_JOY1 "Джойстик 1..."
#define STR_JOY2 "Джойстик 2..."
#define STR_JOY3 "Джойстик 3..."
#define STR_JOY4 "Джойстик 4..."
#define STR_SOUND "Звуковая карта:"
#define STR_MIDI "MIDI Out-устройство:"
#define STR_MIDI_IN "MIDI In-устройство:"
#define STR_MPU401 "Отдельный MPU-401"
#define STR_SSI "Innovation SSI-2001"
#define STR_CMS "CMS / Game Blaster"
#define STR_GUS "Gravis Ultrasound"
#define STR_FLOAT "Использовать FLOAT32 звук"
#define STR_NET_TYPE "Тип сети:"
#define STR_PCAP "Устройство PCap:"
#define STR_NET "Сетевой адаптер:"
#define STR_LPT1 "Устройство LPT1:"
#define STR_LPT2 "Устройство LPT2:"
#define STR_LPT3 "Устройство LPT3:"
#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_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_SPECIFY "&Указать..."
#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 "Оптические дисководы:"
#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 FONT_SIZE 9
#define FONT_NAME "Segoe UI"
#include "dialogs.rc"
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
2048 "86Box"
IDS_2049 "Ошибка"
IDS_2050 "Неустранимая ошибка"
IDS_2051 "<зарезервировано>"
IDS_2052 "Нажмите CTRL+ALT+PAGE DOWN для возврата в оконный режим."
IDS_2053 "Скорость"
IDS_2054 "ZIP %03i %i (%s): %ls"
IDS_2055 "Образы ZIP (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0"
IDS_2056 "86Box не смог найти ни одного пригодного для использования образа ПЗУ.\n\nПожалуйста <a href=""https://github.com/86Box/roms/releases/latest"">скачайте</a> набор ПЗУ и извлеките его в каталог ""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
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 "Изображения поверхности (*.86F)\0*.86F\0"
IDS_2077 "Щёлкните мышью для захвата курсора"
IDS_2078 "Нажмите F8+F12 чтобы освободить курсор"
IDS_2079 "Нажмите F8+F12 или среднюю кнопку мыши чтобы освободить курсор"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_2080 "Невозможно инициализировать FluidSynth"
IDS_2081 "Шина"
IDS_2082 "Файл"
IDS_2083 "Ц"
IDS_2084 "Г"
IDS_2085 "С"
IDS_2086 "МБ"
IDS_2087 "Проверять BPB"
IDS_2088 "КБ"
IDS_2089 "Не удалось инициализировать рендерер видео."
IDS_2090 "По умолчанию"
IDS_2091 "%i циклов ожидания"
IDS_2092 "Тип"
IDS_2093 "Не удалось настроить PCap"
IDS_2094 "Устройства PCap не найдены"
IDS_2095 "Неверное устройство PCap"
IDS_2096 "Стандартный 2-кнопочный джойстик"
IDS_2097 "Стандартный 4-кнопочный джойстик"
IDS_2098 "Стандартный 6-кнопочный джойстик"
IDS_2099 "Стандартный 8-кнопочный джойстик"
IDS_2100 "CH Flightstick Pro"
IDS_2101 "Microsoft SideWinder Pad"
IDS_2102 "Система управления полетом Thrustmaster"
IDS_2103 "Нет"
IDS_2104 "Невозможно загрузить ускорители клавиатуры."
IDS_2105 "Невозможно зарегистрировать необработанный вход."
IDS_2106 "%u"
IDS_2107 "%u MB (CHS: %i, %i, %i)"
IDS_2108 "Флоппи %i (%s): %ls"
IDS_2109 "Все образы (*.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_2110 "Невозможно инициализировать FreeType"
IDS_2111 "Невозможно инициализировать SDL, требуется SDL2.dll"
IDS_2112 "Вы уверены, что хотите выполнить жесткую перезагрузку эмулируемой машины?"
IDS_2113 "Вы уверены, что хотите выйти из 86Box?"
IDS_2114 "Невозможно инициализировать Ghostscript"
IDS_2115 "Магнитооптический %i (%ls): %ls"
IDS_2116 "Образы магнитооптических дисков (*.IM?;*.MDI)\0*.IM?;*.MDI\0Все файлы (*.*)\0*.*\0"
IDS_2117 "Добро пожаловать в 86Box!"
IDS_2118 "Внутренний контроллер"
IDS_2119 "Выход"
IDS_2120 "ПЗУ не найдено"
IDS_2121 "Хотите ли вы сохранить настройки?"
IDS_2122 "Это приведет к жесткой перезагрузке эмулируемой машины."
IDS_2123 "Сохранить"
IDS_2124 "О программе 86Box"
IDS_2125 "86Box v" EMU_VERSION
IDS_2126 "Эмулятор старых компьютеров\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_2127 "OK"
IDS_2128 "Оборудование недоступно"
#ifdef _WIN32
#define LIB_NAME_PCAP "WinPcap"
#else
#define LIB_NAME_PCAP "libpcap"
#endif
IDS_2129 "Убедитесь, что " LIB_NAME_PCAP " установлен и что вы находитесь на сетевом соединении, совместимом с " LIB_NAME_PCAP "."
IDS_2130 "Недопустимая конфигурация"
#ifdef _WIN32
#define LIB_NAME_FREETYPE "freetype.dll"
#else
#define LIB_NAME_FREETYPE "libfreetype"
#endif
IDS_2131 LIB_NAME_FREETYPE " требуется для эмуляции принтера ESC/P."
#ifdef _WIN32
#define LIB_NAME_GS "gsdll32.dll"
#else
#define LIB_NAME_GS "libgs"
#endif
IDS_2132 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_2133 LIB_NAME_FLUIDSYNTH " требуется для вывода MIDI FluidSynth."
IDS_2134 "Идёт вход в полноэкранный режим"
IDS_2135 "Не показывайте это сообщение снова"
IDS_2136 "Не выходить"
IDS_2137 "Перезагрузить"
IDS_2138 "Не перезагрузить"
IDS_2139 "Образы магнитооптических дисков (*.IM?;*.MDI)\0*.IM?;*.MDI\0Все файлы (*.*)\0*.*\0"
IDS_2140 "Образы CD-ROM (*.ISO;*.CUE)\0*.ISO;*.CUE\0Все файлы (*.*)\0*.*\0"
IDS_2141 "Конфигурация устройства %hs"
IDS_2142 "Монитор в спящем режиме"
IDS_2143 "Шейдеры OpenGL (*.GLSL)\0*.GLSL\0Все файлы (*.*)\0*.*\0"
IDS_2144 "Параметры OpenGL"
IDS_2145 "Вы загружаете неподдерживаемую конфигурацию"
IDS_2146 "Фильтрация типов CPU на основе выбранной материнской платы отключена для этой эмулируемой машины.\n\nЭто позволяет выбрать процессор, который в противном случае несовместим с выбранной материнской платой. Однако, вы можете столкнуться с несовместимостью с BIOS материнской платы или другим программным обеспечением.\n\nВключение этого параметра официально не поддерживается, и все поданные отчеты об ошибках могут быть закрыты как недействительные."
IDS_2147 "Продолжить"
IDS_2148 "Кассета: %s"
IDS_2149 "Образы кассеты (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Все файлы (*.*)\0*.*\0"
IDS_2150 "Картридж %i: %ls"
IDS_2151 "Образы картриджа (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Все файлы (*.*)\0*.*\0"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_4096 "Жесткий диск (%s)"
IDS_4097 "%01i:%01i"
IDS_4098 "%01i"
IDS_4099 "Оптические дисководы MFM/RLL или ESDI никогда не существовали"
IDS_4100 "Параметры..."
IDS_4101 "Параметры (большой)..."
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 "Необработанный образ (.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"
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_5120 "CD-ROM %i (%s): %s"
IDS_5376 "Выключен"
IDS_5381 "ATAPI"
IDS_5382 "SCSI"
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"" 128Mb M.O. (ISO 10090)"
IDS_5903 "3.5"" 230Mb M.O. (ISO 13963)"
IDS_5904 "3.5"" 540Mb M.O. (ISO 15498)"
IDS_5905 "3.5"" 640Mb M.O. (ISO 15498)"
IDS_5906 "3.5"" 1.3Gb M.O. (GigaMO)"
IDS_5907 "3.5"" 2.3Gb M.O. (GigaMO 2)"
IDS_5908 "5.25"" 600Mb M.O."
IDS_5909 "5.25"" 650Mb M.O."
IDS_5910 "5.25"" 1Gb M.O."
IDS_5911 "5.25"" 1.3Gb M.O."
IDS_6144 "Точный RPM"
IDS_6145 "На 1% медленнее точного RPM"
IDS_6146 "На 1.5% медленнее точного RPM"
IDS_6147 "На 2% медленнее точного RPM"
IDS_7168 "(По умолчанию системы)"
END
#define IDS_LANG_ENUS IDS_7168
// English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ BEGIN
MENUITEM "&SDL (programsko)", IDM_VID_SDL_SW
MENUITEM "SDL (s&trojno)", IDM_VID_SDL_HW
MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
MENUITEM "Open&GL (Jedro 3.3)", IDM_VID_OPENGL_CORE
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Nastavitve...", IDM_CONFIG
MENUITEM "&Posodabljaj ikone statusne vrstice", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Možnosti...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "Omogoči integracijo s programom &Discord", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "&Zajemi posnetek zaslona\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Možnosti...", IDM_PREFERENCES
MENUITEM "Omogoči integracijo s programom &Discord", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Ojačanje zvoka...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "&Ciljno št. sličic na sekundo"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "&Izberi senčilnik...", IDM_VID_GL_SHADER
MENUITEM "&Odstrani senčilnik", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@@ -41,9 +41,7 @@ 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
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
MENUITEM "Open&GL (3.3 Core)", IDM_VID_OPENGL_CORE
#endif
#ifdef USE_VNC
MENUITEM "&VNC", IDM_VID_VNC
#endif
@@ -100,15 +98,12 @@ BEGIN
BEGIN
MENUITEM "&Ayarlar...", IDM_CONFIG
MENUITEM "Durum &çubuğu ikonlarını güncelle", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "&Tercihler...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Discord entegrasyonunu etkinleştir", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "&Ekran görüntüsü al\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "&Tercihler...", IDM_PREFERENCES
MENUITEM "&Discord entegrasyonunu etkinleştir", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "&Ses yükseltici...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR
@@ -249,7 +244,6 @@ BEGIN
END
END
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
VidGLSubMenu MENU DISCARDABLE
BEGIN
POPUP "Hedef &kare oranı"
@@ -265,7 +259,6 @@ BEGIN
MENUITEM "Gölgelendirici &seç...", IDM_VID_GL_SHADER
MENUITEM "&Gölgelendiriciyi kaldır", IDM_VID_GL_NOSHADER
END
#endif
/////////////////////////////////////////////////////////////////////////////
@@ -485,7 +478,7 @@ BEGIN
IDS_2118 "Dahili kontrolcü"
IDS_2119 "Çıkış"
IDS_2120 "Hiçbir ROM imajı bulunamadı"
IDS_2121 "Ayarlary kaydetmek istediğinizden emin misiniz?"
IDS_2121 "Ayarları kaydetmek istediğinizden emin misiniz?"
IDS_2122 "Bu makineyi yeniden başlatacak."
IDS_2123 "Kaydet"
IDS_2124 "86Box Hakkında"

View File

@@ -100,15 +100,12 @@ BEGIN
BEGIN
MENUITEM "设置(&S)...", IDM_CONFIG
MENUITEM "更新状态栏图标(&U)", IDM_UPDATE_ICONS
MENUITEM SEPARATOR
MENUITEM "首选项(&P)...", IDM_PREFERENCES
# ifdef USE_DISCORD
MENUITEM SEPARATOR
MENUITEM "启用 Discord 集成(&D)", IDM_DISCORD
# endif
MENUITEM SEPARATOR
MENUITEM "截图(&c)\tCtrl+F11", IDM_ACTION_SCREENSHOT
MENUITEM SEPARATOR
MENUITEM "首选项(&P)...", IDM_PREFERENCES
MENUITEM "启用 Discord 集成(&D)", IDM_DISCORD
MENUITEM SEPARATOR
MENUITEM "音量增益(&g)...", IDM_SND_GAIN
#ifdef MTR_ENABLED
MENUITEM SEPARATOR

View File

@@ -106,11 +106,7 @@ static const struct {
{ "SDL_Software", 1, (int(*)(void*))sdl_inits, sdl_close, NULL, sdl_pause, sdl_enable, sdl_set_fs, sdl_reload },
{ "SDL_Hardware", 1, (int(*)(void*))sdl_inith, sdl_close, NULL, sdl_pause, sdl_enable, sdl_set_fs, sdl_reload },
{ "SDL_OpenGL", 1, (int(*)(void*))sdl_initho, sdl_close, NULL, sdl_pause, sdl_enable, sdl_set_fs, sdl_reload }
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
,{ "OpenGL_Core", 1, (int(*)(void*))opengl_init, opengl_close, opengl_resize, opengl_pause, NULL, opengl_set_fs, opengl_reload}
#else
,{ "OpenGL_Core", 1, (int(*)(void*))sdl_initho, sdl_close, NULL, sdl_pause, sdl_enable, sdl_set_fs, NULL } /* fall back to SDL_OpenGL */
#endif
#ifdef USE_VNC
,{ "VNC", 0, vnc_init, vnc_close, vnc_resize, vnc_pause, NULL, NULL }
#endif
@@ -1005,15 +1001,9 @@ plat_vidapi_name(int api)
case 2:
name = "sdl_opengl";
break;
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
case 3:
name = "opengl_core";
break;
#else
case 3:
name = "sdl_opengl"; /* fall back to SDL_OpenGL */
break;
#endif
#ifdef USE_VNC
case 4:
name = "vnc";

View File

@@ -44,9 +44,7 @@
#include <86box/ui.h>
#include <86box/win.h>
#include <86box/version.h>
#ifdef USE_DISCORD
# include <86box/win_discord.h>
#endif
#ifdef MTR_ENABLED
#include <minitrace/minitrace.h>
@@ -163,7 +161,6 @@ video_toggle_option(HMENU h, int *val, int id)
device_force_redraw();
}
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
/* Recursively finds and deletes target submenu */
static int
delete_submenu(HMENU parent, HMENU target)
@@ -191,7 +188,6 @@ delete_submenu(HMENU parent, HMENU target)
return 0;
}
#endif
static int menu_vidapi = -1;
static HMENU cur_menu = NULL;
@@ -199,7 +195,6 @@ static HMENU cur_menu = NULL;
static void
show_render_options_menu()
{
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
if (vid_api == menu_vidapi)
return;
@@ -215,7 +210,7 @@ show_render_options_menu()
{
case IDM_VID_OPENGL_CORE:
cur_menu = LoadMenu(hinstance, VID_GL_SUBMENU);
InsertMenu(GetSubMenu(menuMain, 1), 4, MF_BYPOSITION | MF_STRING | MF_POPUP, (UINT_PTR)cur_menu, plat_get_string(IDS_2144));
InsertMenu(GetSubMenu(menuMain, 1), 6, MF_BYPOSITION | MF_STRING | MF_POPUP, (UINT_PTR)cur_menu, plat_get_string(IDS_2144));
CheckMenuItem(menuMain, IDM_VID_GL_FPS_BLITTER, video_framerate == -1 ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(menuMain, IDM_VID_GL_FPS_25, video_framerate == 25 ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(menuMain, IDM_VID_GL_FPS_30, video_framerate == 30 ? MF_CHECKED : MF_UNCHECKED);
@@ -229,7 +224,6 @@ show_render_options_menu()
}
menu_vidapi = vid_api;
#endif
}
static void
@@ -282,13 +276,11 @@ ResetAllMenus(void)
CheckMenuItem(menuMain, IDM_VID_SDL_SW, MF_UNCHECKED);
CheckMenuItem(menuMain, IDM_VID_SDL_HW, MF_UNCHECKED);
CheckMenuItem(menuMain, IDM_VID_SDL_OPENGL, MF_UNCHECKED);
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
CheckMenuItem(menuMain, IDM_VID_OPENGL_CORE, MF_UNCHECKED);
menu_vidapi = -1;
cur_menu = NULL;
menu_vidapi = -1;
cur_menu = NULL;
show_render_options_menu();
#endif
#ifdef USE_VNC
CheckMenuItem(menuMain, IDM_VID_VNC, MF_UNCHECKED);
#endif
@@ -362,12 +354,10 @@ ResetAllMenus(void)
video_set_filter_menu(menuMain);
#ifdef USE_DISCORD
if (discord_loaded)
CheckMenuItem(menuMain, IDM_DISCORD, enable_discord ? MF_CHECKED : MF_UNCHECKED);
else
EnableMenuItem(menuMain, IDM_DISCORD, MF_DISABLED);
#endif
#ifdef MTR_ENABLED
EnableMenuItem(menuMain, IDM_ACTION_END_TRACE, MF_DISABLED);
#endif
@@ -704,9 +694,7 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
case IDM_VID_SDL_SW:
case IDM_VID_SDL_HW:
case IDM_VID_SDL_OPENGL:
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
case IDM_VID_OPENGL_CORE:
#endif
#ifdef USE_VNC
case IDM_VID_VNC:
#endif
@@ -718,7 +706,6 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
show_render_options_menu();
break;
#if defined(DEV_BRANCH) && defined(USE_OPENGL)
case IDM_VID_GL_FPS_BLITTER:
case IDM_VID_GL_FPS_25:
case IDM_VID_GL_FPS_30:
@@ -757,7 +744,6 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
EnableMenuItem(menuMain, IDM_VID_GL_NOSHADER, MF_DISABLED);
plat_vid_reload_options();
break;
#endif
case IDM_VID_FULLSCREEN:
plat_setfullscreen(1);
@@ -858,7 +844,6 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
config_save();
break;
#ifdef USE_DISCORD
case IDM_DISCORD:
if (! discord_loaded) break;
enable_discord ^= 1;
@@ -869,7 +854,6 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
} else
discord_close();
break;
#endif
#ifdef ENABLE_LOG_TOGGLES
# ifdef ENABLE_BUSLOGIC_LOG
@@ -1287,7 +1271,6 @@ ui_init(int nCmdShow)
return(0);
}
#ifdef USE_DISCORD
if(! discord_load()) {
enable_discord = 0;
} else if (enable_discord) {
@@ -1297,7 +1280,6 @@ ui_init(int nCmdShow)
/* Update Discord status */
discord_update_activity(dopause);
}
#endif
/* Create our main window's class and register it. */
wincl.hInstance = hinstance;
@@ -1534,11 +1516,9 @@ ui_init(int nCmdShow)
plat_setfullscreen(0);
}
#ifdef USE_DISCORD
/* Run Discord API callbacks */
if (enable_discord)
discord_run_callbacks();
#endif
}
timeEndPeriod(1);
@@ -1556,13 +1536,11 @@ ui_init(int nCmdShow)
win_mouse_close();
#ifdef USE_DISCORD
/* Shut down the Discord integration */
discord_close();
#endif
if (user32_handle != NULL)
dynld_close(user32_handle);
if (user32_handle != NULL)
dynld_close(user32_handle);
return(messages.wParam);
}
@@ -1622,11 +1600,9 @@ plat_pause(int p)
CheckMenuItem(menuMain, IDM_ACTION_PAUSE,
(dopause) ? MF_CHECKED : MF_UNCHECKED);
#if USE_DISCORD
/* Update Discord status */
if(enable_discord)
if (enable_discord)
discord_update_activity(dopause);
#endif
/* Send the WM to a manager if needed. */
if (source_hwnd)