From 39759575905084916d78ffc1612a7ef67f5da037 Mon Sep 17 00:00:00 2001 From: TC1995 Date: Thu, 23 Dec 2021 17:38:58 +0100 Subject: [PATCH 1/4] Added Kingston MC64 memory expansion card (adf 71d0) which allows up to 64MB of RAM in the MCA-based 386DX-based models as well as a IBM CPU planar upgrade which allows 486DX cpu's to be used on the 386DX-based 80 models. Fixed missing part of the width in the Compaq CGA cards. --- src/machine/m_ps2_mca.c | 67 +++++++++++++++++++++++++++++-------- src/machine/machine_table.c | 6 ++-- src/video/vid_compaq_cga.c | 4 +-- 3 files changed, 58 insertions(+), 19 deletions(-) diff --git a/src/machine/m_ps2_mca.c b/src/machine/m_ps2_mca.c index e6e659176..549168ffb 100644 --- a/src/machine/m_ps2_mca.c +++ b/src/machine/m_ps2_mca.c @@ -862,13 +862,8 @@ static void ps2_mca_mem_fffc_init(int start_mb) { uint32_t planar_size, expansion_start; - if (start_mb == 2) { - planar_size = 0x160000; - expansion_start = 0x260000; - } else { - planar_size = (start_mb - 1) << 20; - expansion_start = start_mb << 20; - } + planar_size = (start_mb - 1) << 20; + expansion_start = start_mb << 20; mem_mapping_set_addr(&ram_high_mapping, 0x100000, planar_size); @@ -919,6 +914,36 @@ static void ps2_mca_mem_fffc_init(int start_mb) mem_mapping_disable(&ps2.expansion_mapping); } +static void ps2_mca_mem_d071_init(int start_mb) +{ + uint32_t planar_size, expansion_start; + + planar_size = (start_mb - 1) << 20; + expansion_start = start_mb << 20; + + mem_mapping_set_addr(&ram_high_mapping, 0x100000, planar_size); + + ps2.mem_pos_regs[0] = 0xd0; + ps2.mem_pos_regs[1] = 0x71; + ps2.mem_pos_regs[4] = (mem_size / 1024) - start_mb; + + mca_add(ps2_mem_expansion_read, ps2_mem_expansion_write, ps2_mem_expansion_feedb, NULL, NULL); + mem_mapping_add(&ps2.expansion_mapping, + expansion_start, + (mem_size - (start_mb << 10)) << 10, + mem_read_ram, + mem_read_ramw, + mem_read_raml, + mem_write_ram, + mem_write_ramw, + mem_write_raml, + &ram[expansion_start], + MEM_MAPPING_INTERNAL, + NULL); + mem_mapping_disable(&ps2.expansion_mapping); +} + + static void ps2_mca_board_model_50_init() { ps2_mca_board_common_init(); @@ -995,7 +1020,7 @@ static void ps2_mca_board_model_55sx_init() model_55sx_mem_recalc(); } -static void mem_encoding_update() +static void mem_encoding_update(void) { mem_mapping_disable(&ps2.split_mapping); @@ -1005,6 +1030,8 @@ static void mem_encoding_update() mem_set_mem_state(1 << 20, (mem_size << 10) - (1 << 20), MEM_READ_INTERNAL | MEM_WRITE_INTERNAL); ps2.split_addr = ((uint32_t) (ps2.mem_regs[0] & 0xf)) << 20; + if (!ps2.split_addr) + ps2.split_addr = 1 << 20; if (ps2.mem_regs[1] & 2) { mem_set_mem_state(0xe0000, 0x20000, MEM_READ_EXTANY | MEM_WRITE_INTERNAL); @@ -1210,14 +1237,22 @@ static void ps2_mca_board_model_70_type34_init(int is_type4, int slots) if (ps2.planar_id == 0xfff9) { if (mem_size > 4096) { - /* Only 4 MB supported on planar, create a memory expansion card for the rest */ - ps2_mca_mem_fffc_init(4); + /* Only 4 MB supported on planar, create a memory expansion card for the rest */ + if (mem_size > 12288) { + ps2_mca_mem_d071_init(4); + } else { + ps2_mca_mem_fffc_init(4); + } } } else { if (mem_size > 8192) { - /* Only 8 MB supported on planar, create a memory expansion card for the rest */ - ps2_mca_mem_fffc_init(8); + /* Only 8 MB supported on planar, create a memory expansion card for the rest */ + if (mem_size > 16384) + ps2_mca_mem_d071_init(8); + else { + ps2_mca_mem_fffc_init(8); + } } } @@ -1288,8 +1323,12 @@ static void ps2_mca_board_model_80_type2_init(int is486) if ((mem_size > 4096) && !is486) { - /* Only 4 MB supported on planar, create a memory expansion card for the rest */ - ps2_mca_mem_fffc_init(4); + /* Only 4 MB supported on planar, create a memory expansion card for the rest */ + if (mem_size > 12288) + ps2_mca_mem_d071_init(4); + else { + ps2_mca_mem_fffc_init(4); + } } if (gfxcard == VID_INTERNAL) diff --git a/src/machine/machine_table.c b/src/machine/machine_table.c index 74260d668..17a3dc335 100644 --- a/src/machine/machine_table.c +++ b/src/machine/machine_table.c @@ -309,11 +309,11 @@ const machine_t machines[] = { /* 386DX machines which utilize the MCA bus */ /* Has IBM PS/2 Type 1 KBC firmware. */ - { "[MCA] IBM PS/2 model 70 (type 3)", "ibmps2_m70_type3", MACHINE_TYPE_386DX, CPU_PKG_386DX | CPU_PKG_486BL, 0, 0, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 2048, 16384, 2048, 63, machine_ps2_model_70_type3_init, NULL }, + { "[MCA] IBM PS/2 model 70 (type 3)", "ibmps2_m70_type3", MACHINE_TYPE_386DX, CPU_PKG_386DX | CPU_PKG_486BL, 0, 0, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 2048, 65536, 2048, 63, machine_ps2_model_70_type3_init, NULL }, /* Has IBM PS/2 Type 1 KBC firmware. */ - { "[MCA] IBM PS/2 model 80", "ibmps2_m80", MACHINE_TYPE_386DX, CPU_PKG_386DX | CPU_PKG_486BL, 0, 0, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 1024, 12288, 1024, 63, machine_ps2_model_80_init, NULL }, + { "[MCA] IBM PS/2 model 80 (type 2)", "ibmps2_m80", MACHINE_TYPE_386DX, CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, 0, 0, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 1024, 65536, 1024, 63, machine_ps2_model_80_init, NULL }, /* Has IBM PS/2 Type 1 KBC firmware. */ - { "[MCA] IBM PS/2 model 80 (type 3)", "ibmps2_m80_type3", MACHINE_TYPE_386DX, CPU_PKG_386DX | CPU_PKG_486BL, 0, 0, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 2048, 12288, 2048, 63, machine_ps2_model_80_axx_init, NULL }, + { "[MCA] IBM PS/2 model 80 (type 3)", "ibmps2_m80_type3", MACHINE_TYPE_386DX, CPU_PKG_386DX | CPU_PKG_486BL | CPU_PKG_SOCKET1, 0, 0, 0, 0, 0, 0, 0, MACHINE_MCA | MACHINE_BUS_PS2 | MACHINE_VIDEO, 2048, 65536, 2048, 63, machine_ps2_model_80_axx_init, NULL }, /* 386DX/486 machines */ /* The BIOS sends commands C9 without a parameter and D5, both of which are diff --git a/src/video/vid_compaq_cga.c b/src/video/vid_compaq_cga.c index d971a6af4..99655b551 100644 --- a/src/video/vid_compaq_cga.c +++ b/src/video/vid_compaq_cga.c @@ -315,8 +315,8 @@ compaq_cga_poll(void *p) compaq_cga_log("Lastline %i Firstline %i %i\n", self->cga.lastline, self->cga.firstline ,self->cga.lastline - self->cga.firstline); - if (self->cga.cgamode & 1) x = (self->cga.crtc[1] << 3); - else x = (self->cga.crtc[1] << 4); + if (self->cga.cgamode & 1) x = (self->cga.crtc[1] << 3) + 16; + else x = (self->cga.crtc[1] << 4) + 16; self->cga.lastline++; From 32ae26dc6d29ccc43a05f2f79c679fdfc95906ae Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 24 Dec 2021 01:43:11 +0800 Subject: [PATCH 2/4] Updated and standardized Simp. Chinese translation --- src/win/languages/zh-CN.rc | 196 ++++++++++++++++++------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 10a0a1672..963ab4b8a 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -27,7 +27,7 @@ BEGIN MENUITEM SEPARATOR MENUITEM "暂停(&P)", IDM_ACTION_PAUSE MENUITEM SEPARATOR - MENUITEM "退出(&x)...", IDM_ACTION_EXIT + MENUITEM "退出(&X)...", IDM_ACTION_EXIT END POPUP "显示(&V)" BEGIN @@ -36,19 +36,19 @@ BEGIN MENUITEM "窗口尺寸可调(&R)", IDM_VID_RESIZE MENUITEM "记忆窗口尺寸和位置(&e)", IDM_VID_REMEMBER MENUITEM SEPARATOR - POPUP "渲染器(&n)" + POPUP "渲染器(&N)" BEGIN MENUITEM "&SDL (软件)", IDM_VID_SDL_SW MENUITEM "SDL (硬件 &H)", IDM_VID_SDL_HW MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE #ifdef USE_VNC - MENUITEM "&VNC", IDM_VID_VNC + MENUITEM "VNC(&V)", IDM_VID_VNC #endif END MENUITEM SEPARATOR MENUITEM "指定窗口大小...", IDM_VID_SPECIFY_DIM - MENUITEM "强制以 4:3 显示画面(&o)", IDM_VID_FORCE43 + MENUITEM "强制以 4:3 显示画面(&O)", IDM_VID_FORCE43 POPUP "窗口缩放比例(&W)" BEGIN MENUITEM "&0.5x", IDM_VID_SCALE_1X @@ -61,20 +61,20 @@ BEGIN MENUITEM "邻近(&N)", IDM_VID_FILTER_NEAREST MENUITEM "线性(&L)", IDM_VID_FILTER_LINEAR END - MENUITEM "Hi&DPI 缩放", IDM_VID_HIDPI + MENUITEM "HiDPI 缩放(&D)", IDM_VID_HIDPI MENUITEM SEPARATOR MENUITEM "全屏(&F)\tCtrl+Alt+PageUP", IDM_VID_FULLSCREEN - POPUP "全屏拉伸模式(&s)" + POPUP "全屏拉伸模式(&S)" BEGIN MENUITEM "全屏拉伸(&F)", IDM_VID_FS_FULL - MENUITEM "&4:3", IDM_VID_FS_43 + MENUITEM "4:3(&$)", IDM_VID_FS_43 MENUITEM "保持比例(&S)", IDM_VID_FS_KEEPRATIO MENUITEM "整数倍放大(&I)", IDM_VID_FS_INT END POPUP "E&GA/(S)VGA 设置" BEGIN - MENUITEM "反色 VGA 显示器(&I)", IDM_VID_INVERT - POPUP "VGA 屏幕类型(&t)" + MENUITEM "VGA 显示器反色显示(&I)", IDM_VID_INVERT + POPUP "VGA 屏幕类型(&T)" BEGIN MENUITEM "RGB 彩色(&C)", IDM_VID_GRAY_RGB MENUITEM "RGB 灰度(&R)", IDM_VID_GRAY_MONO @@ -84,14 +84,14 @@ BEGIN END POPUP "灰度转换类型(&c)" BEGIN - MENUITEM "BT&601 (NTSC/PAL)", IDM_VID_GRAYCT_601 - MENUITEM "BT&709 (HDTV)", IDM_VID_GRAYCT_709 + MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601 + MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709 MENUITEM "平均(&A)", IDM_VID_GRAYCT_AVE END END MENUITEM SEPARATOR MENUITEM "CGA/PCjr/Tandy/EGA/(S)VGA 过扫描(&G)", IDM_VID_OVERSCAN - MENUITEM "更改灰度显示器对比度(&m)", IDM_VID_CGACON + MENUITEM "更改灰度显示器对比度(&M)", IDM_VID_CGACON END MENUITEM "介质(&M)", IDM_MEDIA POPUP "工具(&T)" @@ -99,12 +99,12 @@ BEGIN MENUITEM "设置(&S)...", IDM_CONFIG MENUITEM "更新状态栏图标(&U)", IDM_UPDATE_ICONS MENUITEM SEPARATOR - MENUITEM "截图(&c)\tCtrl+F11", IDM_ACTION_SCREENSHOT + MENUITEM "截图(&C)\tCtrl+F11", IDM_ACTION_SCREENSHOT MENUITEM SEPARATOR MENUITEM "首选项(&P)...", IDM_PREFERENCES MENUITEM "启用 Discord 集成(&D)", IDM_DISCORD MENUITEM SEPARATOR - MENUITEM "音量增益(&g)...", IDM_SND_GAIN + MENUITEM "音量增益(&G)...", IDM_SND_GAIN #ifdef MTR_ENABLED MENUITEM SEPARATOR MENUITEM "开始追踪\tCtrl+T", IDM_ACTION_BEGIN_TRACE @@ -121,10 +121,10 @@ BEGIN MENUITEM "启用 CD-ROM 日志\tCtrl+F5", IDM_LOG_CDROM # endif # ifdef ENABLE_D86F_LOG - MENUITEM "启用 软盘(86F) 日志\tCtrl+F6", IDM_LOG_D86F + MENUITEM "启用软盘 (86F) 日志\tCtrl+F6", IDM_LOG_D86F # endif # ifdef ENABLE_FDC_LOG - MENUITEM "启用软驱控制器日志\tCtrl+F7", IDM_LOG_FDC + MENUITEM "启用软盘控制器日志\tCtrl+F7", IDM_LOG_FDC # endif # ifdef ENABLE_IDE_LOG MENUITEM "启用 IDE 日志\tCtrl+F8", IDM_LOG_IDE @@ -143,7 +143,7 @@ BEGIN MENUITEM "日志断点(&L)\tCtrl+F10", IDM_LOG_BREAKPOINT # endif # ifdef ENABLE_VRAM_DUMP - MENUITEM "创建显示内存转储(&v)\tCtrl+F1", IDM_DUMP_VRAM + MENUITEM "创建显卡内存转储(&V)\tCtrl+F1", IDM_DUMP_VRAM # endif # endif END @@ -151,7 +151,7 @@ BEGIN POPUP "帮助(&H)" BEGIN MENUITEM "文档(&D)...", IDM_DOCS - MENUITEM "关于(&A)...", IDM_ABOUT + MENUITEM "关于 86Box(&A)...", IDM_ABOUT END END @@ -167,14 +167,14 @@ BEGIN MENUITEM "新建镜像(&N)...", IDM_CASSETTE_IMAGE_NEW MENUITEM SEPARATOR MENUITEM "打开已存在的镜像(&E)...", IDM_CASSETTE_IMAGE_EXISTING - MENUITEM "写保护打开已存在的镜像(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP + MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_CASSETTE_IMAGE_EXISTING_WP MENUITEM SEPARATOR MENUITEM "录制(&R)", IDM_CASSETTE_RECORD MENUITEM "播放(&P)", IDM_CASSETTE_PLAY MENUITEM "倒带至起点(&R)", IDM_CASSETTE_REWIND MENUITEM "快进至终点(&F)", IDM_CASSETTE_FAST_FORWARD MENUITEM SEPARATOR - MENUITEM "弹出(&j)", IDM_CASSETTE_EJECT + MENUITEM "弹出(&J)", IDM_CASSETTE_EJECT END END @@ -184,7 +184,7 @@ BEGIN BEGIN MENUITEM "镜像(&I)...", IDM_CARTRIDGE_IMAGE MENUITEM SEPARATOR - MENUITEM "弹出(&j)", IDM_CARTRIDGE_EJECT + MENUITEM "弹出(&J)", IDM_CARTRIDGE_EJECT END END @@ -195,11 +195,11 @@ BEGIN MENUITEM "新建镜像(&N)...", IDM_FLOPPY_IMAGE_NEW MENUITEM SEPARATOR MENUITEM "打开已存在的镜像(&E)...", IDM_FLOPPY_IMAGE_EXISTING - MENUITEM "写保护打开已存在的镜像(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP + MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_FLOPPY_IMAGE_EXISTING_WP MENUITEM SEPARATOR - MENUITEM "导出为86F格式(&x)...", IDM_FLOPPY_EXPORT_TO_86F + MENUITEM "导出为 86F 格式(&x)...", IDM_FLOPPY_EXPORT_TO_86F MENUITEM SEPARATOR - MENUITEM "弹出(&j)", IDM_FLOPPY_EJECT + MENUITEM "弹出(&J)", IDM_FLOPPY_EJECT END END @@ -209,7 +209,7 @@ BEGIN BEGIN MENUITEM "静音(&M)", IDM_CDROM_MUTE MENUITEM SEPARATOR - MENUITEM "空置驱动器(&m)", IDM_CDROM_EMPTY + MENUITEM "空置驱动器(&M)", IDM_CDROM_EMPTY MENUITEM "载入上一个镜像(&R)", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "镜像(&I)", IDM_CDROM_IMAGE @@ -223,9 +223,9 @@ BEGIN MENUITEM "新建镜像(&N)...", IDM_ZIP_IMAGE_NEW MENUITEM SEPARATOR MENUITEM "打开已存在的镜像(&E)...", IDM_ZIP_IMAGE_EXISTING - MENUITEM "写保护打开已存在的镜像(&W)...", IDM_ZIP_IMAGE_EXISTING_WP + MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_ZIP_IMAGE_EXISTING_WP MENUITEM SEPARATOR - MENUITEM "弹出(&j)", IDM_ZIP_EJECT + MENUITEM "弹出(&J)", IDM_ZIP_EJECT MENUITEM "载入上一个镜像(&R)", IDM_ZIP_RELOAD END END @@ -237,25 +237,25 @@ BEGIN MENUITEM "新建镜像(&N)...", IDM_MO_IMAGE_NEW MENUITEM SEPARATOR MENUITEM "打开已存在的镜像(&E)...", IDM_MO_IMAGE_EXISTING - MENUITEM "写保护打开已存在的镜像(&W)...", IDM_MO_IMAGE_EXISTING_WP + MENUITEM "打开已存在的镜像并写保护(&W)...", IDM_MO_IMAGE_EXISTING_WP MENUITEM SEPARATOR - MENUITEM "弹出(&j)", IDM_MO_EJECT + MENUITEM "弹出(&J)", IDM_MO_EJECT MENUITEM "载入上一个镜像(&R)", IDM_MO_RELOAD END END VidGLSubMenu MENU DISCARDABLE BEGIN - POPUP "目标帧率(&f)" + POPUP "目标帧率(&F)" BEGIN MENUITEM "与视频同步(&S)", IDM_VID_GL_FPS_BLITTER - MENUITEM "&25 fps", IDM_VID_GL_FPS_25 - MENUITEM "&30 fps", IDM_VID_GL_FPS_30 - MENUITEM "&50 fps", IDM_VID_GL_FPS_50 - MENUITEM "&60 fps", IDM_VID_GL_FPS_60 - MENUITEM "&75 fps", IDM_VID_GL_FPS_75 + MENUITEM "25 fps(&2)", IDM_VID_GL_FPS_25 + MENUITEM "30 fps(&3)", IDM_VID_GL_FPS_30 + MENUITEM "50 fps(&5)", IDM_VID_GL_FPS_50 + MENUITEM "60 fps(&6)", IDM_VID_GL_FPS_60 + MENUITEM "75 fps(&7)", IDM_VID_GL_FPS_75 END - MENUITEM "VSync 垂直同步(&V)", IDM_VID_GL_VSYNC + MENUITEM "垂直同步(&V)", IDM_VID_GL_VSYNC MENUITEM "选择着色器(&S)...", IDM_VID_GL_SHADER MENUITEM "移除着色器(&R)", IDM_VID_GL_NOSHADER END @@ -274,7 +274,7 @@ END #define STR_OK "确定" #define STR_CANCEL "取消" -#define STR_GLOBAL "将以上设定存储为全局默认值(&g)" +#define STR_GLOBAL "将以上设置存储为全局默认值(&G)" #define STR_DEFAULT "默认(&D)" #define STR_LANGUAGE "语言:" #define STR_ICONSET "图标集:" @@ -283,26 +283,26 @@ END #define STR_FILE_NAME "文件名:" #define STR_DISK_SIZE "磁盘大小:" -#define STR_RPM_MODE "转速(RPM)模式:" +#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_TYPE "机器类型:" #define STR_MACHINE "机型:" #define STR_CONFIGURE "配置" #define STR_CPU_TYPE "CPU 类型:" #define STR_SPEED "速度:" -#define STR_FPU "浮点处理器(FPU):" -#define STR_WAIT_STATES "等待状态(WS):" +#define STR_FPU "浮点处理器 (FPU):" +#define STR_WAIT_STATES "等待状态 (WS):" #define STR_MB "MB" #define STR_MEMORY "内存:" #define STR_TIME_SYNC "时间同步" #define STR_DISABLED "禁用" -#define STR_ENABLED_LOCAL "启用(本地时间)" -#define STR_ENABLED_UTC "启用(UTC)" +#define STR_ENABLED_LOCAL "启用 (本地时间)" +#define STR_ENABLED_UTC "启用 (UTC)" #define STR_DYNAREC "动态重编译器" #define STR_VIDEO "显卡:" @@ -322,11 +322,11 @@ END #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" -#define STR_FLOAT "使用 FLOAT32 音频" +#define STR_FLOAT "使用单精度浮点 (FLOAT32) 音频" #define STR_NET_TYPE "网络类型:" #define STR_PCAP "PCap 设备:" -#define STR_NET "网卡类型:" +#define STR_NET "网络适配器:" #define STR_LPT1 "LPT1 设备:" #define STR_LPT2 "LPT2 设备:" @@ -340,7 +340,7 @@ END #define STR_PARALLEL3 "并口 3" #define STR_HDC "硬盘控制器:" -#define STR_FDC "软驱控制器:" +#define STR_FDC "软盘控制器:" #define STR_IDE_TER "第三 IDE 控制器" #define STR_IDE_QUA "第四 IDE 控制器" #define STR_SCSI "SCSI" @@ -348,7 +348,7 @@ END #define STR_SCSI_2 "控制器 2:" #define STR_SCSI_3 "控制器 3:" #define STR_SCSI_4 "控制器 4:" -#define STR_CASSETTE "磁带" +#define STR_CASSETTE "卡带" #define STR_HDD "硬盘:" #define STR_NEW "新建(&N)..." @@ -362,12 +362,12 @@ END #define STR_SECTORS "扇区(S):" #define STR_HEADS "磁头(H):" #define STR_CYLS "柱面(C):" -#define STR_SIZE_MB "大小(MB):" +#define STR_SIZE_MB "大小 (MB):" #define STR_TYPE "类型:" #define STR_IMG_FORMAT "镜像格式:" #define STR_BLOCK_SIZE "块大小:" -#define STR_FLOPPY_DRIVES "软驱设备:" +#define STR_FLOPPY_DRIVES "软盘驱动器:" #define STR_TURBO "加速时序" #define STR_CHECKBPB "检查 BPB" #define STR_CDROM_DRIVES "CD-ROM 设备:" @@ -376,14 +376,14 @@ END #define STR_ZIP_DRIVES "ZIP 设备:" #define STR_250 "ZIP 250" -#define STR_ISARTC "ISA RTC:" +#define STR_ISARTC "ISA 实时时钟 (RTC):" #define STR_ISAMEM "ISA 内存扩充" #define STR_ISAMEM_1 "扩展卡 1:" #define STR_ISAMEM_2 "扩展卡 2:" #define STR_ISAMEM_3 "扩展卡 3:" #define STR_ISAMEM_4 "扩展卡 4:" #define STR_BUGGER "ISABugger 设备" -#define STR_POSTCARD "自检卡(POST)" +#define STR_POSTCARD "自检 (POST) 卡" #define FONT_SIZE 9 #define FONT_NAME "Microsoft YaHei" @@ -400,39 +400,39 @@ BEGIN 2048 "86Box" IDS_2049 "错误" IDS_2050 "致命错误" - IDS_2051 "<保留>" - IDS_2052 "按 CTRL+ALT+PAGE DOWN 组合键返回窗口模式." + 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 找不到支持的 ROM 镜像.\n\n请下载ROM包并解压到 ""roms"" 文件夹." + IDS_2056 "86Box 找不到任何可用的 ROM 镜像。\n\n请下载ROM 包并将其解压到 ""roms"" 文件夹。" IDS_2057 "(空)" IDS_2058 "ZIP 镜像 (*.IM?;*.ZDI)\0*.IM?;*.ZDI\0所有文件 (*.*)\0*.*\0" IDS_2059 "加速" IDS_2060 "开" IDS_2061 "关" IDS_2062 "所有镜像 (*.86F;*.DSK;*.FLP;*.IM?;*.*FD?)\0*.86F;*.DSK;*.FLP;*.IM?;*.*FD?\0基本扇区镜像 (*.DSK;*.FLP;*.IM?;*.*FD?)\0*.DSK;*.FLP;*.IM?;*.IMG;*.*FD?\0表面镜像 (*.86F)\0*.86F\0" - IDS_2063 "由于 roms/machines 文件夹中缺少合适的ROM, ""%hs"" 机型不可用. 将切换到其他可用机型." + IDS_2063 "由于 roms/machines 文件夹中缺少合适的 ROM,机型 ""%hs"" 不可用。将切换到其他可用机型。" END STRINGTABLE DISCARDABLE BEGIN - IDS_2064 "由于 roms/video 文件夹中缺少合适的ROM, ""%hs"" 机型不可用. 将切换到其他可用的显卡." + IDS_2064 "由于 roms/video 文件夹中缺少合适的 ROM,显卡 ""%hs"" 不可用。将切换到其他可用显卡。" IDS_2065 "机型" IDS_2066 "显示" IDS_2067 "输入设备" IDS_2068 "声音" IDS_2069 "网络" - IDS_2070 "端口 (COM 与 LPT)" + IDS_2070 "端口 (COM / LPT)" IDS_2071 "存储控制器" IDS_2072 "硬盘" IDS_2073 "软驱和光驱" IDS_2074 "其他可移动存储设备" - IDS_2075 "其他附件" + IDS_2075 "其他外围设备" IDS_2076 "表面镜像 (*.86F)\0*.86F\0" IDS_2077 "单击窗口捕捉鼠标" IDS_2078 "按 F8+F12 释放鼠标" - IDS_2079 "按 F8+F12 或中键释放鼠标" + IDS_2079 "按 F8+F12 或鼠标中键释放鼠标" END STRINGTABLE DISCARDABLE @@ -446,9 +446,9 @@ BEGIN IDS_2086 "MB" IDS_2087 "检查 BPB" IDS_2088 "KB" - IDS_2089 "无法初始化视频渲染器." + IDS_2089 "无法初始化视频渲染器。" IDS_2090 "默认" - IDS_2091 "%i 等待状态(WS)" + IDS_2091 "%i 等待状态 (WS)" IDS_2092 "类型" IDS_2093 "设置 PCap 失败" IDS_2094 "未找到 PCap 设备" @@ -461,30 +461,30 @@ BEGIN IDS_2101 "Microsoft SideWinder Pad" IDS_2102 "Thrustmaster Flight Control System" IDS_2103 "无" - IDS_2104 "无法加载键盘加速器." - IDS_2105 "无法注册原始(raw)输入." + 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?\0Flux images (*.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_2111 "无法初始化 SDL,需要 SDL2.dll" + IDS_2112 "确定要硬重置模拟器吗?" + IDS_2113 "确定要退出 86Box 吗?" IDS_2114 "无法初始化 Ghostscript" IDS_2115 "MO %i (%ls): %ls" IDS_2116 "MO 镜像 (*.IM?;*.MDI)\0*.IM?;*.MDI\0所有文件 (*.*)\0*.*\0" IDS_2117 "欢迎使用 86Box!" IDS_2118 "内部控制器" IDS_2119 "退出" - IDS_2120 "未找到ROM" - IDS_2121 "您要保存设置吗?" + IDS_2120 "未找到 ROM" + 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 通用公共许可证第二版或更新版本发布. 详情见 LICENSE 文件." + IDS_2126 "一个旧式计算机模拟器\n\n作者: Sarah Walker、Miran Grca、Fred N. van Kempen (waltje)、SA1988、Tiseno100、reenigne、leilei、JohnElliott、greatpsycho 等人。\n\n本软件依据 GNU 通用公共许可证第二版或更新版本发布。详情见 LICENSE 文件。" IDS_2127 "确定" IDS_2128 "硬件不可用" #ifdef _WIN32 @@ -492,28 +492,28 @@ BEGIN #else #define LIB_NAME_PCAP "libpcap" #endif - IDS_2129 "请确认 " LIB_NAME_PCAP " 已安装且使用兼容 " LIB_NAME_PCAP " 的网络连接." + 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 "ESC/P 打印机模拟需要." LIB_NAME_FREETYPE + IDS_2131 "ESC/P 打印机模拟需要" LIB_NAME_FREETYPE #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) 文件." + 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 "FluidSynth MIDI 输出需要" LIB_NAME_FLUIDSYNTH - IDS_2134 "即将进入全屏模式" - IDS_2135 "请勿再显示此提示" + IDS_2134 "正在进入全屏模式" + IDS_2135 "不要再显示此消息" IDS_2136 "不退出" IDS_2137 "重置" IDS_2138 "不重置" @@ -523,15 +523,15 @@ BEGIN IDS_2142 "显示器处在睡眠状态" IDS_2143 "OpenGL 着色器 (*.GLSL)\0*.GLSL\0所有文件 (*.*)\0*.*\0" IDS_2144 "OpenGL 选项" - IDS_2145 "您正在载入一个不受支持的配置" - IDS_2146 "此模拟计算机禁用了基于选定计算机的 CPU 类型过滤. \n\n这使得选择与选定计算机不兼容的 CPU 成为可能. 但是, 您可能会遇到与机器 BIOS 或其他软件不兼容的问题. \n\n官方不支持启用此设置, 并且提交的任何错误报告可能会因无效而关闭." + IDS_2145 "正在载入一个不受支持的配置" + IDS_2146 "此模拟计算机禁用了基于选定计算机的 CPU 类型过滤。\n\n能够选中与所选机器本不兼容的 CPU,但是可能会遇到与机器 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" - IDS_2152 "Error initializing renderer" - IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer." + IDS_2152 "初始化渲染器时出错" + IDS_2153 "无法初始化 OpenGL (3.0 Core) 渲染器。请使用其他渲染器。" END STRINGTABLE DISCARDABLE @@ -539,26 +539,26 @@ BEGIN IDS_4096 "硬盘 (%s)" IDS_4097 "%01i:%01i" IDS_4098 "%01i" - IDS_4099 "历史上没有出现过 MFM/RLL 或 ESDI CD-ROM 驱动器" + IDS_4099 "不存在 MFM/RLL 或 ESDI CD-ROM 驱动器" IDS_4100 "自定义..." - IDS_4101 "自定义 (large)..." + IDS_4101 "自定义 (大容量)..." IDS_4102 "添加新硬盘" IDS_4103 "添加已存在的硬盘" - IDS_4104 "HDI 磁盘镜像不能超过 4 GB." - IDS_4105 "磁盘镜像不能超过 127 GB." + IDS_4104 "HDI 磁盘镜像不能超过 4 GB。" + IDS_4105 "磁盘镜像不能超过 127 GB。" IDS_4106 "硬盘镜像 (*.HD?;*.IM?;*.VHD)\0*.HD?;*.IM?;*.VHD\0所有文件 (*.*)\0*.*\0" IDS_4107 "无法读取文件" IDS_4108 "无法写入文件" - IDS_4109 "不支持非 512 字节扇区的 HDI 或 HDX 镜像." - IDS_4110 "尚不支持 USB" + IDS_4109 "不支持非 512 字节扇区的 HDI 或 HDX 镜像。" + IDS_4110 "尚未支持 USB" IDS_4111 "磁盘镜像文件已存在" - IDS_4112 "请指定有效的文件名." - IDS_4113 "磁盘镜像创建完成" + IDS_4112 "请指定有效的文件名。" + IDS_4113 "已创建磁盘镜像" IDS_4114 "请确定此文件已存在并可读取" - IDS_4115 "请确定此文件保存在可写的文件夹中." + IDS_4115 "请确定此文件保存在可写的文件夹中。" IDS_4116 "磁盘镜像太大" - IDS_4117 "请记得为新创建的镜像分区并格式化." - IDS_4118 "选定的文件将被覆盖. 您确定继续使用此文件吗?" + IDS_4117 "请记得为新创建的镜像分区并格式化。" + IDS_4118 "选定的文件将被覆盖。您确定继续使用此文件吗?" IDS_4119 "不支持的磁盘镜像" IDS_4120 "覆盖" IDS_4121 "不覆盖" @@ -572,9 +572,9 @@ BEGIN 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_4132 "父映像可能在创建差异镜像后被修改。\n\n如果镜像文件被移动或复制,或由于创建此磁盘的程序中存在错误,也可能发生这种情况。\n\n是否需要修复时间戳?" + IDS_4133 "父盘与子盘的时间戳不匹配。" + IDS_4134 "无法修复 VHD 时间戳。" IDS_4135 "%01i:%02i" IDS_4352 "MFM/RLL" @@ -593,11 +593,11 @@ BEGIN IDS_5120 "CD-ROM %i (%s): %s" - IDS_5376 "禁用" + IDS_5376 "已禁用" IDS_5381 "ATAPI" IDS_5382 "SCSI" - IDS_5632 "禁用" + IDS_5632 "已禁用" IDS_5637 "ATAPI (%01i:%01i)" IDS_5638 "SCSI (%01i:%02i)" @@ -626,10 +626,10 @@ BEGIN IDS_5910 "5.25"" 1Gb M.O." IDS_5911 "5.25"" 1.3Gb M.O." - IDS_6144 "标准转速(RPM)" - IDS_6145 "低于标准转速 1%%" - IDS_6146 "低于标准转速 1.5%%" - IDS_6147 "低于标准转速 2%%" + IDS_6144 "标准转速 (RPM)" + IDS_6145 "低于标准转速的 1%%" + IDS_6146 "低于标准转速的 1.5%%" + IDS_6147 "低于标准转速的 2%%" IDS_7168 "(系统默认)" END From 3f30155c6dd8d64943ce7c1a10bd2ff9bbb53530 Mon Sep 17 00:00:00 2001 From: EmpyreusX <36258024+EmpyreusX@users.noreply.github.com> Date: Fri, 24 Dec 2021 01:45:49 +0800 Subject: [PATCH 3/4] Update zh-CN.rc --- src/win/languages/zh-CN.rc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index 963ab4b8a..9fba123da 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -21,9 +21,9 @@ BEGIN MENUITEM "将右 CTRL 键映射为左 ALT 键(&R)", IDM_ACTION_RCTRL_IS_LALT MENUITEM SEPARATOR MENUITEM "硬重置(&H)...", IDM_ACTION_HRESET - MENUITEM "&Ctrl+Alt+Del\tCtrl+F12", IDM_ACTION_RESET_CAD + MENUITEM "Ctrl+Alt+Del(&C)\tCtrl+F12", IDM_ACTION_RESET_CAD MENUITEM SEPARATOR - MENUITEM "Ctrl+Alt+&Esc", IDM_ACTION_CTRL_ALT_ESC + MENUITEM "Ctrl+Alt+Esc(&E)", IDM_ACTION_CTRL_ALT_ESC MENUITEM SEPARATOR MENUITEM "暂停(&P)", IDM_ACTION_PAUSE MENUITEM SEPARATOR @@ -34,14 +34,14 @@ BEGIN MENUITEM "隐藏状态栏(&H)", IDM_VID_HIDE_STATUS_BAR MENUITEM SEPARATOR MENUITEM "窗口尺寸可调(&R)", IDM_VID_RESIZE - MENUITEM "记忆窗口尺寸和位置(&e)", IDM_VID_REMEMBER + MENUITEM "记忆窗口尺寸和位置(&E)", IDM_VID_REMEMBER MENUITEM SEPARATOR POPUP "渲染器(&N)" BEGIN - MENUITEM "&SDL (软件)", IDM_VID_SDL_SW - MENUITEM "SDL (硬件 &H)", IDM_VID_SDL_HW - MENUITEM "SDL (&OpenGL)", IDM_VID_SDL_OPENGL - MENUITEM "Open&GL (3.0 Core)", IDM_VID_OPENGL_CORE + MENUITEM "SDL (软件)(&S)", IDM_VID_SDL_SW + MENUITEM "SDL (硬件)(&H)", IDM_VID_SDL_HW + MENUITEM "SDL (OpenGL)(&O)", IDM_VID_SDL_OPENGL + MENUITEM "OpenGL (3.0 Core)(&G)", IDM_VID_OPENGL_CORE #ifdef USE_VNC MENUITEM "VNC(&V)", IDM_VID_VNC #endif @@ -67,11 +67,11 @@ BEGIN POPUP "全屏拉伸模式(&S)" BEGIN MENUITEM "全屏拉伸(&F)", IDM_VID_FS_FULL - MENUITEM "4:3(&$)", IDM_VID_FS_43 + MENUITEM "4:3(&4)", IDM_VID_FS_43 MENUITEM "保持比例(&S)", IDM_VID_FS_KEEPRATIO MENUITEM "整数倍放大(&I)", IDM_VID_FS_INT END - POPUP "E&GA/(S)VGA 设置" + POPUP "EGA/(S)VGA 设置(&G)" BEGIN MENUITEM "VGA 显示器反色显示(&I)", IDM_VID_INVERT POPUP "VGA 屏幕类型(&T)" @@ -82,7 +82,7 @@ BEGIN MENUITEM "绿色单色显示器(&G)", IDM_VID_GRAY_GREEN MENUITEM "白色单色显示器(&W)", IDM_VID_GRAY_WHITE END - POPUP "灰度转换类型(&c)" + POPUP "灰度转换类型(&C)" BEGIN MENUITEM "BT601 (NTSC/PAL)(&6)", IDM_VID_GRAYCT_601 MENUITEM "BT709 (HDTV)(&7)", IDM_VID_GRAYCT_709 From 2a61133a9ec6dc2425955667fb92038d1dcd149e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hrdli=C4=8Dka?= Date: Thu, 23 Dec 2021 22:01:26 +0100 Subject: [PATCH 4/4] Fix manifest inclusion on CMake <3.22 --- src/win/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/win/CMakeLists.txt b/src/win/CMakeLists.txt index ff59612ce..36c3dc9ac 100644 --- a/src/win/CMakeLists.txt +++ b/src/win/CMakeLists.txt @@ -27,13 +27,17 @@ if(NOT CPPTHREADS) target_sources(plat PRIVATE win_thread.c) endif() -if(NOT MINGW) +# CMake 3.22 messed this up for clang/clang++ +# See https://gitlab.kitware.com/cmake/cmake/-/issues/22611 +if(MSVC OR (NOT MINGW AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.22)) # MSVC linker adds its own manifest to the executable, which fails if # we include ours in 86Box.rc. We therefore need to pass the manifest # directly as as a source file, so the linker can use that instead. set_property(SOURCE 86Box.rc PROPERTY COMPILE_DEFINITIONS NO_INCLUDE_MANIFEST) target_sources(86Box PRIVATE 86Box.manifest) +endif() +if(NOT MINGW) # Append null to resource strings (fixes file dialogs) set_property(SOURCE 86Box.rc PROPERTY COMPILE_FLAGS -n)