From 4d19b8a1e4011720e01107f2ad66b5f2d53eaae9 Mon Sep 17 00:00:00 2001 From: OBattler Date: Sat, 29 Oct 2022 06:44:30 +0200 Subject: [PATCH] Added the ability to select earlier CD-ROM drive (emulates Chinon CDS-431 for SCSI and NEC CDR-260 for ATAPI) - needs to be ported to QT. --- src/cdrom/cdrom.c | 117 +++++++++++++++--- src/config.c | 11 +- src/disk/hdc_ide.c | 9 +- src/include/86box/cdrom.h | 2 +- src/include/86box/language.h | 5 +- src/include/86box/resource.h | 64 +++++----- src/include/86box/scsi_cdrom.h | 2 +- src/include/86box/scsi_device.h | 4 + src/scsi/scsi_cdrom.c | 213 ++++++++++++++++++++------------ src/win/languages/cs-CZ.rc | 14 ++- src/win/languages/de-DE.rc | 18 +-- src/win/languages/dialogs.rc | 7 +- src/win/languages/en-GB.rc | 2 + src/win/languages/en-US.rc | 2 + src/win/languages/es-ES.rc | 14 ++- src/win/languages/fi-FI.rc | 14 ++- src/win/languages/fr-FR.rc | 16 +-- src/win/languages/hr-HR.rc | 16 +-- src/win/languages/hu-HU.rc | 16 +-- src/win/languages/it-IT.rc | 16 +-- src/win/languages/ja-JP.rc | 16 +-- src/win/languages/ko-KR.rc | 34 ++--- src/win/languages/pl-PL.rc | 16 +-- src/win/languages/pt-BR.rc | 10 +- src/win/languages/pt-PT.rc | 34 ++--- src/win/languages/ru-RU.rc | 16 +-- src/win/languages/sl-SI.rc | 30 ++--- src/win/languages/tr-TR.rc | 34 ++--- src/win/languages/uk-UA.rc | 14 ++- src/win/languages/zh-CN.rc | 12 +- src/win/win_settings.c | 56 +++++++-- 31 files changed, 539 insertions(+), 295 deletions(-) diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index 86907c2e4..f4da5ce13 100644 --- a/src/cdrom/cdrom.c +++ b/src/cdrom/cdrom.c @@ -321,6 +321,34 @@ cdrom_audio_callback(cdrom_t *dev, int16_t *output, int len) return ret; } +static __inline int +bin2bcd (int x) +{ + return (x % 10) | ((x / 10) << 4); +} + +static __inline int +bcd2bin (int x) +{ + return (x >> 4) * 10 + (x & 0x0f); +} + +static void +msf_from_bcd(int *m, int *s, int *f) +{ + *m = bcd2bin(*m); + *s = bcd2bin(*s); + *f = bcd2bin(*f); +} + +static void +msf_to_bcd(int *m, int *s, int *f) +{ + *m = bin2bcd(*m); + *s = bin2bcd(*s); + *f = bin2bcd(*f); +} + uint8_t cdrom_audio_play(cdrom_t *dev, uint32_t pos, uint32_t len, int ismsf) { @@ -347,6 +375,10 @@ cdrom_audio_play(cdrom_t *dev, uint32_t pos, uint32_t len, int ismsf) s = (pos >> 8) & 0xff; f = pos & 0xff; + /* NEC CDR-260 speaks BCD. */ + if ((dev->bus_type == CDROM_BUS_ATAPI) && dev->early) + msf_from_bcd(&m, &s, &f); + if (pos == 0xffffff) { cdrom_log("CD-ROM %i: Playing from current position (MSF)\n", dev->id); pos = dev->seek_pos; @@ -356,6 +388,11 @@ cdrom_audio_play(cdrom_t *dev, uint32_t pos, uint32_t len, int ismsf) m = (len >> 16) & 0xff; s = (len >> 8) & 0xff; f = len & 0xff; + + /* NEC CDR-260 speaks BCD. */ + if ((dev->bus_type == CDROM_BUS_ATAPI) && dev->early) + msf_from_bcd(&m, &s, &f); + len = MSFtoLBA(m, s, f) - 150; cdrom_log("CD-ROM %i: MSF - pos = %08X len = %08X\n", dev->id, pos, len); @@ -462,7 +499,7 @@ cdrom_get_current_subchannel(cdrom_t *dev, uint8_t *b, int msf) { uint8_t ret; subchannel_t subc; - int pos = 1; + int pos = 1, m, s, f; uint32_t dat; dev->ops->get_subchannel(dev, dev->seek_pos, &subc); @@ -488,14 +525,41 @@ cdrom_get_current_subchannel(cdrom_t *dev, uint8_t *b, int msf) if (msf) { b[pos] = 0; - b[pos + 1] = subc.abs_m; - b[pos + 2] = subc.abs_s; - b[pos + 3] = subc.abs_f; + + /* NEC CDR-260 speaks BCD. */ + if ((dev->bus_type == CDROM_BUS_ATAPI) && dev->early) { + m = subc.abs_m; + s = subc.abs_s; + f = subc.abs_f; + msf_to_bcd(&m, &s, &f); + b[pos + 1] = m; + b[pos + 2] = s; + b[pos + 3] = f; + } else { + b[pos + 1] = subc.abs_m; + b[pos + 2] = subc.abs_s; + b[pos + 3] = subc.abs_f; + } + pos += 4; + b[pos] = 0; - b[pos + 1] = subc.rel_m; - b[pos + 2] = subc.rel_s; - b[pos + 3] = subc.rel_f; + + /* NEC CDR-260 speaks BCD. */ + if ((dev->bus_type == CDROM_BUS_ATAPI) && dev->early) { + m = subc.rel_m; + s = subc.rel_s; + f = subc.rel_f; + msf_to_bcd(&m, &s, &f); + b[pos + 1] = m; + b[pos + 2] = s; + b[pos + 3] = f; + } else { + b[pos + 1] = subc.rel_m; + b[pos + 2] = subc.rel_s; + b[pos + 3] = subc.rel_f; + } + pos += 4; } else { dat = MSFtoLBA(subc.abs_m, subc.abs_s, subc.abs_f) - 150; @@ -550,6 +614,7 @@ read_toc_normal(cdrom_t *dev, unsigned char *b, unsigned char start_track, int m { track_info_t ti; int i, len = 4; + int m, s, f; int first_track, last_track; uint32_t temp; @@ -600,9 +665,21 @@ read_toc_normal(cdrom_t *dev, unsigned char *b, unsigned char start_track, int m if (msf) { b[len++] = 0; - b[len++] = ti.m; - b[len++] = ti.s; - b[len++] = ti.f; + + /* NEC CDR-260 speaks BCD. */ + if ((dev->bus_type == CDROM_BUS_ATAPI) && dev->early) { + m = ti.m; + s = ti.s; + f = ti.f; + msf_to_bcd(&m, &s, &f); + b[len++] = m; + b[len++] = s; + b[len++] = f; + } else { + b[len++] = ti.m; + b[len++] = ti.s; + b[len++] = ti.f; + } } else { temp = MSFtoLBA(ti.m, ti.s, ti.f) - 150; b[len++] = temp >> 24; @@ -619,7 +696,7 @@ static int read_toc_session(cdrom_t *dev, unsigned char *b, int msf) { track_info_t ti; - int len = 4; + int len = 4, m, s, f; uint32_t temp; cdrom_log("read_toc_session(%08X, %08X, %i)\n", dev, b, msf); @@ -638,9 +715,21 @@ read_toc_session(cdrom_t *dev, unsigned char *b, int msf) if (msf) { b[len++] = 0; - b[len++] = ti.m; - b[len++] = ti.s; - b[len++] = ti.f; + + /* NEC CDR-260 speaks BCD. */ + if ((dev->bus_type == CDROM_BUS_ATAPI) && dev->early) { + m = ti.m; + s = ti.s; + f = ti.f; + msf_to_bcd(&m, &s, &f); + b[len++] = m; + b[len++] = s; + b[len++] = f; + } else { + b[len++] = ti.m; + b[len++] = ti.s; + b[len++] = ti.f; + } } else { temp = MSFtoLBA(ti.m, ti.s, ti.f) - 150; b[len++] = temp >> 24; diff --git a/src/config.c b/src/config.c index 702f41fe4..9c9779984 100644 --- a/src/config.c +++ b/src/config.c @@ -1321,6 +1321,8 @@ load_floppy_and_cdrom_drives(void) sprintf(temp, "cdrom_%02i_speed", c + 1); cdrom[c].speed = ini_section_get_int(cat, temp, 8); + sprintf(temp, "cdrom_%02i_early", c + 1); + cdrom[c].early = ini_section_get_int(cat, temp, 0); /* Default values, needed for proper operation of the Settings dialog. */ cdrom[c].ide_channel = cdrom[c].scsi_device_id = c + 2; @@ -2637,7 +2639,7 @@ save_hard_disks(void) if (!hdd_is_valid(c) || (hdd[c].bus != HDD_BUS_IDE && hdd[c].bus != HDD_BUS_ESDI)) ini_section_delete_var(cat, temp); else - ini_section_set_string(cat, temp, hdd_preset_get_internal_name(hdd[c].speed_preset)); + ini_section_set_string(cat, temp, (char *) hdd_preset_get_internal_name(hdd[c].speed_preset)); } ini_delete_section_if_empty(config, cat); @@ -2714,6 +2716,13 @@ save_floppy_and_cdrom_drives(void) ini_section_set_int(cat, temp, cdrom[c].speed); } + sprintf(temp, "cdrom_%02i_early", c + 1); + if ((cdrom[c].bus_type == 0) || (cdrom[c].early == 1)) { + ini_section_delete_var(cat, temp); + } else { + ini_section_set_int(cat, temp, cdrom[c].early); + } + sprintf(temp, "cdrom_%02i_parameters", c + 1); if (cdrom[c].bus_type == 0) { ini_section_delete_var(cat, temp); diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index 8cb9fd951..35dfe5dcd 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -2157,11 +2157,10 @@ ide_callback(void *priv) ide_set_signature(ide); if (ide->type == IDE_ATAPI) { -#ifdef EARLY_ATAPI - ide->sc->status = DRDY_STAT | DSC_STAT; -#else - ide->sc->status = 0; -#endif + if (ide->sc->pad0) /* pad0 = early */ + ide->sc->status = DRDY_STAT | DSC_STAT; + else + ide->sc->status = 0; ide->sc->error = 1; if (ide->device_reset) ide->device_reset(ide->sc); diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index 3be2910c8..c74e8eb76 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -111,7 +111,7 @@ typedef struct cdrom { char *image_history[CD_IMAGE_HISTORY]; uint32_t sound_on, cdrom_capacity, - pad, seek_pos, + early, seek_pos, seek_diff, cd_end; int host_drive, prev_host_drive, diff --git a/src/include/86box/language.h b/src/include/86box/language.h index 7ba19e630..6c7ad728f 100644 --- a/src/include/86box/language.h +++ b/src/include/86box/language.h @@ -134,6 +134,7 @@ #define IDS_2158 2158 // "Hard reset" #define IDS_2159 2159 // "ACPI shutdown" #define IDS_2160 2160 // "Settings" +#define IDS_2161 2161 // "Early drive" #define IDS_4096 4096 // "Hard disk (%s)" #define IDS_4097 4097 // "%01i:%01i" @@ -242,8 +243,8 @@ #define IDS_LANG_ENUS IDS_7168 -#define STR_NUM_2048 106 -#define STR_NUM_3072 11 +#define STR_NUM_2048 114 +// UNUSED: #define STR_NUM_3072 11 #define STR_NUM_4096 40 #define STR_NUM_4352 6 #define STR_NUM_4608 6 diff --git a/src/include/86box/resource.h b/src/include/86box/resource.h index 27207a157..c45f7cf60 100644 --- a/src/include/86box/resource.h +++ b/src/include/86box/resource.h @@ -130,9 +130,8 @@ #define IDT_CD_DRIVES 1754 /* CD-ROM drives: */ #define IDT_CD_BUS 1755 /* Bus: */ #define IDT_CD_ID 1756 /* ID: */ -#define IDT_CD_LUN 1757 /* LUN: */ -#define IDT_CD_CHANNEL 1758 /* Channel: */ -#define IDT_CD_SPEED 1759 /* Speed: */ +#define IDT_CD_CHANNEL 1757 /* Channel: */ +#define IDT_CD_SPEED 1758 /* Speed: */ /* DLG_CFG_OTHER_REMOVABLE_DEVICES */ #define IDT_MO_DRIVES 1760 /* MO drives: */ @@ -277,38 +276,39 @@ #define IDC_COMBO_CD_ID 1127 #define IDC_COMBO_CD_LUN 1128 #define IDC_COMBO_CD_CHANNEL_IDE 1129 +#define IDC_CHECKEARLY 1130 -#define IDC_LIST_ZIP_DRIVES 1130 /* other removable devices config */ -#define IDC_COMBO_ZIP_BUS 1131 -#define IDC_COMBO_ZIP_ID 1132 -#define IDC_COMBO_ZIP_LUN 1133 -#define IDC_COMBO_ZIP_CHANNEL_IDE 1134 -#define IDC_CHECK250 1135 -#define IDC_COMBO_CD_SPEED 1136 -#define IDC_LIST_MO_DRIVES 1137 -#define IDC_COMBO_MO_BUS 1138 -#define IDC_COMBO_MO_ID 1139 -#define IDC_COMBO_MO_LUN 1140 -#define IDC_COMBO_MO_CHANNEL_IDE 1141 -#define IDC_COMBO_MO_TYPE 1142 +#define IDC_LIST_ZIP_DRIVES 1140 /* other removable devices config */ +#define IDC_COMBO_ZIP_BUS 1141 +#define IDC_COMBO_ZIP_ID 1142 +#define IDC_COMBO_ZIP_LUN 1143 +#define IDC_COMBO_ZIP_CHANNEL_IDE 1144 +#define IDC_CHECK250 1145 +#define IDC_COMBO_CD_SPEED 1146 +#define IDC_LIST_MO_DRIVES 1147 +#define IDC_COMBO_MO_BUS 1148 +#define IDC_COMBO_MO_ID 1149 +#define IDC_COMBO_MO_LUN 1150 +#define IDC_COMBO_MO_CHANNEL_IDE 1151 +#define IDC_COMBO_MO_TYPE 1152 -#define IDC_CHECK_BUGGER 1150 /* other periph config */ -#define IDC_CHECK_POSTCARD 1151 -#define IDC_COMBO_ISARTC 1152 -#define IDC_CONFIGURE_ISARTC 1153 -#define IDC_COMBO_FDC 1154 -#define IDC_CONFIGURE_FDC 1155 -#define IDC_GROUP_ISAMEM 1156 -#define IDC_COMBO_ISAMEM_1 1157 -#define IDC_COMBO_ISAMEM_2 1158 -#define IDC_COMBO_ISAMEM_3 1159 -#define IDC_COMBO_ISAMEM_4 1160 -#define IDC_CONFIGURE_ISAMEM_1 1161 -#define IDC_CONFIGURE_ISAMEM_2 1162 -#define IDC_CONFIGURE_ISAMEM_3 1163 -#define IDC_CONFIGURE_ISAMEM_4 1164 +#define IDC_CHECK_BUGGER 1160 /* other periph config */ +#define IDC_CHECK_POSTCARD 1161 +#define IDC_COMBO_ISARTC 1162 +#define IDC_CONFIGURE_ISARTC 1163 +#define IDC_COMBO_FDC 1164 +#define IDC_CONFIGURE_FDC 1165 +#define IDC_GROUP_ISAMEM 1166 +#define IDC_COMBO_ISAMEM_1 1167 +#define IDC_COMBO_ISAMEM_2 1168 +#define IDC_COMBO_ISAMEM_3 1169 +#define IDC_COMBO_ISAMEM_4 1170 +#define IDC_CONFIGURE_ISAMEM_1 1171 +#define IDC_CONFIGURE_ISAMEM_2 1172 +#define IDC_CONFIGURE_ISAMEM_3 1173 +#define IDC_CONFIGURE_ISAMEM_4 1174 -#define IDC_SLIDER_GAIN 1170 /* sound gain dialog */ +#define IDC_SLIDER_GAIN 1180 /* sound gain dialog */ #define IDC_EDIT_FILE_NAME 1200 /* new floppy image dialog */ #define IDC_COMBO_DISK_SIZE 1201 diff --git a/src/include/86box/scsi_cdrom.h b/src/include/86box/scsi_cdrom.h index f278a2f42..e991ccc36 100644 --- a/src/include/86box/scsi_cdrom.h +++ b/src/include/86box/scsi_cdrom.h @@ -36,7 +36,7 @@ typedef struct { uint8_t status, phase, error, id, features, cur_lun, - pad0, pad1; + early, pad1; uint16_t request_length, max_transfer_len; diff --git a/src/include/86box/scsi_device.h b/src/include/86box/scsi_device.h index bef94ed96..650215cb5 100644 --- a/src/include/86box/scsi_device.h +++ b/src/include/86box/scsi_device.h @@ -64,6 +64,7 @@ #define GPCMD_PREVENT_REMOVAL 0x1e #define GPCMD_READ_FORMAT_CAPACITIES 0x23 #define GPCMD_READ_CDROM_CAPACITY 0x25 +#define GPCMD_CHINON_UNKNOWN 0x26 #define GPCMD_READ_10 0x28 #define GPCMD_READ_GENERATION 0x29 #define GPCMD_WRITE_10 0x2a @@ -105,11 +106,13 @@ #define GPCMD_MECHANISM_STATUS 0xbd #define GPCMD_READ_CD 0xbe #define GPCMD_SEND_DVD_STRUCTURE 0xbf /* This is for writing only, irrelevant to 86Box. */ +#define GPCMD_CHINON_EJECT 0xc0 /* Chinon Vendor Unique command */ #define GPCMD_AUDIO_TRACK_SEARCH 0xc0 /* Toshiba Vendor Unique command */ #define GPCMD_TOSHIBA_PLAY_AUDIO 0xc1 /* Toshiba Vendor Unique command */ #define GPCMD_PAUSE_RESUME_ALT 0xc2 #define GPCMD_STILL 0xc2 /* Toshiba Vendor Unique command */ #define GPCMD_CADDY_EJECT 0xc4 /* Toshiba Vendor Unique command */ +#define GPCMD_CHINON_STOP 0xc6 /* Chinon Vendor Unique command */ #define GPCMD_READ_SUBCODEQ_PLAYING_STATUS 0xc6 /* Toshiba Vendor Unique command */ #define GPCMD_READ_DISC_INFORMATION_TOSHIBA 0xc7 /* Toshiba Vendor Unique command */ #define GPCMD_SCAN_ALT 0xcd /* Should be equivalent to 0xba */ @@ -249,6 +252,7 @@ #define MMC_PROFILE_HDDVD_RW_DL 0x005A #define MMC_PROFILE_INVALID 0xFFFF +#define EARLY_ONLY 64 #define SCSI_ONLY 32 #define ATAPI_ONLY 16 #define IMPLEMENTED 8 diff --git a/src/scsi/scsi_cdrom.c b/src/scsi/scsi_cdrom.c index 6e983e720..553291263 100644 --- a/src/scsi/scsi_cdrom.c +++ b/src/scsi/scsi_cdrom.c @@ -81,7 +81,8 @@ const uint8_t scsi_cdrom_command_flags[0x100] = { IMPLEMENTED | CHECK_READY, /* 0x1E */ 0, 0, 0, 0, 0, 0, /* 0x1F-0x24 */ IMPLEMENTED | CHECK_READY, /* 0x25 */ - 0, 0, /* 0x26-0x27 */ + IMPLEMENTED | CHECK_READY | SCSI_ONLY | EARLY_ONLY,/* 0x26 */ + 0, /* 0x27 */ IMPLEMENTED | CHECK_READY, /* 0x28 */ 0, 0, /* 0x29-0x2A */ IMPLEMENTED | CHECK_READY | NONDATA, /* 0x2B */ @@ -349,11 +350,10 @@ scsi_cdrom_init(scsi_cdrom_t *dev) dev->sense[0] = 0xf0; dev->sense[7] = 10; -#ifdef POSSIBLE_EARLY_ATAPI - dev->status = READY_STAT | DSC_STAT; -#else - dev->status = 0; -#endif + if (dev->early) + dev->status = READY_STAT | DSC_STAT; + else + dev->status = 0; dev->pos = 0; dev->packet_status = PHASE_NONE; scsi_cdrom_sense_key = scsi_cdrom_asc = scsi_cdrom_ascq = dev->unit_attention = 0; @@ -1174,6 +1174,12 @@ scsi_cdrom_pre_execution_check(scsi_cdrom_t *dev, uint8_t *cdb) return 0; } + if (!dev->early && (scsi_cdrom_command_flags[cdb[0]] & EARLY_ONLY)) { + scsi_cdrom_log("CD-ROM %i: Attempting to execute SCSI-only command %02X over ATAPI\n", dev->id, cdb[0]); + scsi_cdrom_illegal_opcode(dev); + return 0; + } + if ((dev->drv->bus_type < CDROM_BUS_SCSI) && (scsi_cdrom_command_flags[cdb[0]] & SCSI_ONLY)) { scsi_cdrom_log("CD-ROM %i: Attempting to execute SCSI-only command %02X over ATAPI\n", dev->id, cdb[0]); scsi_cdrom_illegal_opcode(dev); @@ -1998,19 +2004,27 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb) scsi_cdrom_data_command_finish(dev, len, len, max_len, 0); break; + /* GPCMD_CHINON_EJECT on Chinon */ case GPCMD_AUDIO_TRACK_SEARCH: - scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { - scsi_cdrom_illegal_mode(dev); - break; - } - pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; - ret = cdrom_audio_track_search(dev->drv, pos, cdb[9], cdb[1] & 1); - - if (ret) + if (dev->early) { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + cdrom_eject(dev->id); scsi_cdrom_command_complete(dev); - else - scsi_cdrom_illegal_mode(dev); + } else { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + if ((dev->drv->host_drive < 1) || (dev->drv->cd_status <= CD_STATUS_DATA_ONLY)) { + scsi_cdrom_illegal_mode(dev); + break; + } + pos = (cdb[2] << 24) | (cdb[3] << 16) | (cdb[4] << 8) | cdb[5]; + ret = cdrom_audio_track_search(dev->drv, pos, cdb[9], cdb[1] & 1); + + if (ret) + scsi_cdrom_command_complete(dev); + else + scsi_cdrom_illegal_mode(dev); + } break; case GPCMD_TOSHIBA_PLAY_AUDIO: @@ -2149,13 +2163,13 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb) dev->buffer[1] = 0x11; break; case CD_STATUS_PAUSED: - dev->buffer[1] = 0x12; + dev->buffer[1] = ((dev->drv->bus_type == CDROM_BUS_SCSI) && dev->early) ? 0x15 : 0x12; break; case CD_STATUS_DATA_ONLY: - dev->buffer[1] = 0x15; + dev->buffer[1] = ((dev->drv->bus_type == CDROM_BUS_SCSI) && dev->early) ? 0x00 : 0x15; break; default: - dev->buffer[1] = 0x13; + dev->buffer[1] = ((dev->drv->bus_type == CDROM_BUS_SCSI) && dev->early) ? 0x00 : 0x13; break; } @@ -2168,35 +2182,42 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb) scsi_cdrom_data_command_finish(dev, len, len, len, 0); break; + /* GPCMD_CHINON_STOP on Chinon */ case GPCMD_READ_SUBCODEQ_PLAYING_STATUS: - scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); - - alloc_length = cdb[1] & 0x1f; - - scsi_cdrom_buf_alloc(dev, alloc_length); - - if (!dev->drv->ops) { - scsi_cdrom_not_ready(dev); - return; - } - - if (!alloc_length) { + if (dev->early) { scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); - scsi_cdrom_log("CD-ROM %i: All done - callback set\n", dev->id); - dev->packet_status = PHASE_COMPLETE; - dev->callback = 20.0 * CDROM_TIME; - scsi_cdrom_set_callback(dev); - break; + scsi_cdrom_stop(sc); + scsi_cdrom_command_complete(dev); + } else { + scsi_cdrom_set_phase(dev, SCSI_PHASE_DATA_IN); + + alloc_length = cdb[1] & 0x1f; + + scsi_cdrom_buf_alloc(dev, alloc_length); + + if (!dev->drv->ops) { + scsi_cdrom_not_ready(dev); + return; + } + + if (!alloc_length) { + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_log("CD-ROM %i: All done - callback set\n", dev->id); + dev->packet_status = PHASE_COMPLETE; + dev->callback = 20.0 * CDROM_TIME; + scsi_cdrom_set_callback(dev); + break; + } + + len = alloc_length; + + memset(dev->buffer, 0, len); + dev->buffer[0] = cdrom_get_current_subcodeq_playstatus(dev->drv, &dev->buffer[1]); + scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); + + scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); + scsi_cdrom_data_command_finish(dev, len, len, len, 0); } - - len = alloc_length; - - memset(dev->buffer, 0, len); - dev->buffer[0] = cdrom_get_current_subcodeq_playstatus(dev->drv, &dev->buffer[1]); - scsi_cdrom_log("Audio Status = %02x\n", dev->buffer[0]); - - scsi_cdrom_set_buf_len(dev, BufLen, &alloc_length); - scsi_cdrom_data_command_finish(dev, len, len, len, 0); break; case GPCMD_READ_DVD_STRUCTURE: @@ -2235,6 +2256,12 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb) } break; + case GPCMD_CHINON_UNKNOWN: + scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); + scsi_cdrom_stop(sc); + scsi_cdrom_command_complete(dev); + break; + case GPCMD_START_STOP_UNIT: scsi_cdrom_set_phase(dev, SCSI_PHASE_STATUS); @@ -2309,22 +2336,36 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb) dev->buffer[idx++] = 0x01; dev->buffer[idx++] = 0x00; dev->buffer[idx++] = 68; - if (dev->drv->bus_type == CDROM_BUS_SCSI) - ide_padstr8(dev->buffer + idx, 8, "TOSHIBA"); /* Vendor */ - else #ifdef USE_86BOX_CD - ide_padstr8(dev->buffer + idx, 8, EMU_NAME); /* Vendor */ + ide_padstr8(dev->buffer + idx, 8, EMU_NAME); /* Vendor */ #else - ide_padstr8(dev->buffer + idx, 8, "HITACHI"); /* Vendor */ + if (dev->drv->bus_type == CDROM_BUS_SCSI) { + if (dev->early) + ide_padstr8(dev->buffer + idx, 8, "CHINON"); /* Vendor */ + else + ide_padstr8(dev->buffer + idx, 8, "TOSHIBA"); /* Vendor */ + } else { + if (dev->early) + ide_padstr8(dev->buffer + idx, 8, "NEC"); /* Vendor */ + else + ide_padstr8(dev->buffer + idx, 8, "HITACHI"); /* Vendor */ + } #endif idx += 8; - if (dev->drv->bus_type == CDROM_BUS_SCSI) - ide_padstr8(dev->buffer + idx, 40, "XM6201TASUN32XCD1103"); /* Product */ - else #ifdef USE_86BOX_CD ide_padstr8(dev->buffer + idx, 40, device_identify_ex); /* Product */ #else - ide_padstr8(dev->buffer + idx, 40, "CDR-8130"); /* Product */ + if (dev->drv->bus_type == CDROM_BUS_SCSI) { + if (dev->early) + ide_padstr8(dev->buffer + idx, 40, "CD-ROM CDS-431"); /* Product */ + else + ide_padstr8(dev->buffer + idx, 40, "XM6201TASUN32XCD1103"); /* Product */ + } else { + if (dev->early) + ide_padstr8(dev->buffer + idx, 40, "CD-ROM DRIVE:260"); /* Product */ + else + ide_padstr8(dev->buffer + idx, 40, "CDR-8130"); /* Product */ + } #endif idx += 40; ide_padstr8(dev->buffer + idx, 20, "53R141"); /* Product */ @@ -2359,21 +2400,33 @@ scsi_cdrom_command(scsi_common_t *sc, uint8_t *cdb) dev->buffer[7] = 0x20; /* Wide bus supported */ } - if (dev->drv->bus_type == CDROM_BUS_SCSI) { - ide_padstr8(dev->buffer + 8, 8, "TOSHIBA"); /* Vendor */ - ide_padstr8(dev->buffer + 16, 16, "XM6201TASUN32XCD"); /* Product */ - ide_padstr8(dev->buffer + 32, 4, "1103"); /* Revision */ - } else { #ifdef USE_86BOX_CD - ide_padstr8(dev->buffer + 8, 8, EMU_NAME); /* Vendor */ - ide_padstr8(dev->buffer + 16, 16, device_identify); /* Product */ - ide_padstr8(dev->buffer + 32, 4, EMU_VERSION_EX); /* Revision */ + ide_padstr8(dev->buffer + 8, 8, EMU_NAME); /* Vendor */ + ide_padstr8(dev->buffer + 16, 16, device_identify); /* Product */ + ide_padstr8(dev->buffer + 32, 4, EMU_VERSION_EX); /* Revision */ #else - ide_padstr8(dev->buffer + 8, 8, "HITACHI"); /* Vendor */ - ide_padstr8(dev->buffer + 16, 16, "CDR-8130"); /* Product */ - ide_padstr8(dev->buffer + 32, 4, "0020"); /* Revision */ -#endif + if (dev->drv->bus_type == CDROM_BUS_SCSI) { + if (dev->early) { + ide_padstr8(dev->buffer + 8, 8, "CHINON"); /* Vendor */ + ide_padstr8(dev->buffer + 16, 16, "CD-ROM CDS-431"); /* Product */ + ide_padstr8(dev->buffer + 32, 4, "H42"); /* Revision */ + } else { + ide_padstr8(dev->buffer + 8, 8, "TOSHIBA"); /* Vendor */ + ide_padstr8(dev->buffer + 16, 16, "XM6201TASUN32XCD"); /* Product */ + ide_padstr8(dev->buffer + 32, 4, "1103"); /* Revision */ + } + } else { + if (dev->early) { + ide_padstr8(dev->buffer + 8, 8, "NEC"); /* Vendor */ + ide_padstr8(dev->buffer + 16, 16, "CD-ROM DRIVE:260"); /* Product */ + ide_padstr8(dev->buffer + 32, 4, "1.01"); /* Revision */ + } else { + ide_padstr8(dev->buffer + 8, 8, "HITACHI"); /* Vendor */ + ide_padstr8(dev->buffer + 16, 16, "CDR-8130"); /* Product */ + ide_padstr8(dev->buffer + 32, 4, "0020"); /* Revision */ + } } +#endif idx = 36; @@ -2645,25 +2698,30 @@ scsi_cdrom_identify(ide_t *ide, int ide_has_dma) scsi_cdrom_t *dev; char device_identify[9] = { '8', '6', 'B', '_', 'C', 'D', '0', '0', 0 }; - dev = (scsi_cdrom_t *) ide->p; + dev = (scsi_cdrom_t *) ide->sc; device_identify[7] = dev->id + 0x30; scsi_cdrom_log("ATAPI Identify: %s\n", device_identify); +#else + scsi_cdrom_t *dev = (scsi_cdrom_t *) ide->sc; #endif - ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (2 << 5); /* ATAPI device, CD-ROM drive, removable media, accelerated DRQ */ + if (dev->early) + ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (1 << 5); /* ATAPI device, CD-ROM drive, removable media, interrupt DRQ */ + else + ide->buffer[0] = 0x8000 | (5 << 8) | 0x80 | (2 << 5); /* ATAPI device, CD-ROM drive, removable media, accelerated DRQ */ ide_padstr((char *) (ide->buffer + 10), "", 20); /* Serial Number */ #ifdef USE_86BOX_CD ide_padstr((char *) (ide->buffer + 23), EMU_VERSION_EX, 8); /* Firmware */ ide_padstr((char *) (ide->buffer + 27), device_identify, 40); /* Model */ #else - #ifdef USE_NEC_CD - ide_padstr((char *) (ide->buffer + 23), "4.20 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:273 ", 40); /* Model */ - #else - ide_padstr((char *) (ide->buffer + 23), "0020 ", 8); /* Firmware */ - ide_padstr((char *) (ide->buffer + 27), "HITACHI CDR-8130 ", 40); /* Model */ - #endif + if (dev->early) { + ide_padstr((char *) (ide->buffer + 23), "1.01 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "NEC CD-ROM DRIVE:260 ", 40); /* Model */ + } else { + ide_padstr((char *) (ide->buffer + 23), "0020 ", 8); /* Firmware */ + ide_padstr((char *) (ide->buffer + 27), "HITACHI CDR-8130 ", 40); /* Model */ + } #endif ide->buffer[49] = 0x200; /* LBA supported */ ide->buffer[126] = 0xfffe; /* Interpret zero byte count limit as maximum length */ @@ -2711,6 +2769,7 @@ scsi_cdrom_drive_reset(int c) dev->drv = drv; dev->cur_lun = SCSI_LUN_USE_CDB; + dev->early = dev->drv->early; drv->insert = scsi_cdrom_insert; drv->get_volume = scsi_cdrom_get_volume; @@ -2749,7 +2808,7 @@ scsi_cdrom_drive_reset(int c) id->phase_data_out = scsi_cdrom_phase_data_out; id->command_stop = scsi_cdrom_command_stop; id->bus_master_error = scsi_cdrom_bus_master_error; - id->interrupt_drq = 0; + id->interrupt_drq = !dev->early; ide_atapi_attach(id); } diff --git a/src/win/languages/cs-CZ.rc b/src/win/languages/cs-CZ.rc index 63279611c..1c431281b 100644 --- a/src/win/languages/cs-CZ.rc +++ b/src/win/languages/cs-CZ.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Načíst znova předchozí obraz", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Obraz...", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Složka", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Grafika:" #define STR_VOODOO "Použít grafický akcelerátor Voodoo" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "Grafika IBM 8514/a" +#define STR_XGA "Grafika XGA" #define STR_MOUSE "Myš:" #define STR_JOYSTICK "Joystick:" @@ -283,7 +283,7 @@ END #define STR_JOY4 "Joystick 4..." #define STR_SOUND "Zvuková karta:" -#define STR_MIDI_OUT "MIDI výstup:" +#define STR_MIDI_OUT "MIDI výstup:" #define STR_MIDI_IN "MIDI vstup:" #define STR_MPU401 "Samostatný MPU-401" #define STR_SSI "Innovation SSI-2001" @@ -291,8 +291,8 @@ END #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Použít zvuk FLOAT32" #define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRV_NUKED "Nuked (přesnější)" +#define STR_FM_DRV_YMFM "YMFM (rychlejší)" #define STR_NET_TYPE "Druh sítě:" #define STR_PCAP "PCap zařízení:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Kontrola BPB" #define STR_CDROM_DRIVES "Mechaniky CD-ROM:" #define STR_CD_SPEED "Rychlost:" +#define STR_EARLY "Časná mechanika" #define STR_MO_DRIVES "Magnetooptické mechaniky:" #define STR_ZIP_DRIVES "Mechaniky ZIP:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Resetovat" IDS_2159 "Vypnout skrze rozhraní ACPI" IDS_2160 "Nastavení" + IDS_2161 "Časná mechanika" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/de-DE.rc b/src/win/languages/de-DE.rc index a2436fb3e..ff67041b5 100644 --- a/src/win/languages/de-DE.rc +++ b/src/win/languages/de-DE.rc @@ -171,13 +171,13 @@ CdromSubmenu MENU DISCARDABLE BEGIN POPUP "" BEGIN - MENUITEM "&Stummschalten", IDM_CDROM_MUTE + MENUITEM "&Stummschalten", IDM_CDROM_MUTE MENUITEM SEPARATOR MENUITEM "L&eer", IDM_CDROM_EMPTY MENUITEM "&Voriges Image neu laden", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Image", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Verzeichnis", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Videokarte:" #define STR_VOODOO "Voodoo-Grafik" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/a-Grafik" +#define STR_XGA "XGA-Grafik" #define STR_MOUSE "Maus:" #define STR_JOYSTICK "Joystick:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Joystick 4..." #define STR_SOUND "Soundkarte:" -#define STR_MIDI_OUT "MIDI Out-Gerät:" +#define STR_MIDI_OUT "MIDI Out-Gerät:" #define STR_MIDI_IN "MIDI In-Gerät:" #define STR_MPU401 "Standalone-MPU-401-Gerät" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32-Wiedergabe benutzen" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "FM-Synth-Treiber" +#define STR_FM_DRV_NUKED "Nuked (genauer)" +#define STR_FM_DRV_YMFM "YMFM (schneller)" #define STR_NET_TYPE "Netzwerktyp:" #define STR_PCAP "PCap-Gerät:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "BPB überprüfen" #define STR_CDROM_DRIVES "CD-ROM-Laufwerke:" #define STR_CD_SPEED "Takt:" +#define STR_EARLY "Früheres Laufwerk" #define STR_MO_DRIVES "MO-Laufwerke:" #define STR_ZIP_DRIVES "ZIP-Laufwerke:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Hard-Reset" IDS_2159 "ACPI-basiertes Herunterfahren" IDS_2160 "Optionen" + IDS_2161 "Früheres Laufwerk" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/dialogs.rc b/src/win/languages/dialogs.rc index bd1eb87bd..3f3811c25 100644 --- a/src/win/languages/dialogs.rc +++ b/src/win/languages/dialogs.rc @@ -744,8 +744,12 @@ BEGIN LTEXT STR_CD_SPEED, IDT_CD_SPEED, CFG_HMARGIN, 207, 34, CFG_PANE_LTEXT_HEIGHT COMBOBOX IDC_COMBO_CD_SPEED, - 33, 205, 328, 12, + 33, 205, 140, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + + CONTROL STR_EARLY, IDC_CHECKEARLY, + "Button", BS_AUTOCHECKBOX | WS_TABSTOP, + 186, 206, 84, CFG_CHECKBOX_HEIGHT END DLG_CFG_OTHER_REMOVABLE_DEVICES DIALOG DISCARDABLE CFG_PANE_LEFT, CFG_PANE_TOP, CFG_PANE_WIDTH, CFG_PANE_HEIGHT @@ -1011,6 +1015,7 @@ END #undef STR_CHECKBPB #undef STR_CDROM_DRIVES #undef STR_CD_SPEED +#undef STR_EARLY #undef STR_MO_DRIVES #undef STR_ZIP_DRIVES diff --git a/src/win/languages/en-GB.rc b/src/win/languages/en-GB.rc index 3eed04ed1..0321e6dea 100644 --- a/src/win/languages/en-GB.rc +++ b/src/win/languages/en-GB.rc @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Check BPB" #define STR_CDROM_DRIVES "CD-ROM drives:" #define STR_CD_SPEED "Speed:" +#define STR_EARLY "Earlier drive" #define STR_MO_DRIVES "MO drives:" #define STR_ZIP_DRIVES "ZIP drives:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Hard reset" IDS_2159 "ACPI shutdown" IDS_2160 "Settings" + IDS_2161 "Earlier drive" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/en-US.rc b/src/win/languages/en-US.rc index ac8b1f6ee..f061a061b 100644 --- a/src/win/languages/en-US.rc +++ b/src/win/languages/en-US.rc @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Check BPB" #define STR_CDROM_DRIVES "CD-ROM drives:" #define STR_CD_SPEED "Speed:" +#define STR_EARLY "Earlier drive" #define STR_MO_DRIVES "MO drives:" #define STR_ZIP_DRIVES "ZIP drives:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Hard reset" IDS_2159 "ACPI shutdown" IDS_2160 "Settings" + IDS_2161 "Earlier drive" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/es-ES.rc b/src/win/languages/es-ES.rc index 0aa8b3533..893759d62 100644 --- a/src/win/languages/es-ES.rc +++ b/src/win/languages/es-ES.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Recargar imagen previa", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Imagen...", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Carpeta", IDM_CDROM_DIR END END @@ -241,7 +241,7 @@ END #define STR_CANCEL "Cancelar" #define STR_GLOBAL "Salvar estos ajustes como por &defecto globalmente" #define STR_DEFAULT "&Por defecto" -#define STR_LANGUAGE "Idioma:" +#define STR_LANGUAGE "Idioma:" #define STR_ICONSET "Juego de iconos:" #define STR_GAIN "Ganancia" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Mando 4..." #define STR_SOUND "Tarjeta de sonido:" -#define STR_MIDI_OUT "Dispositivo MIDI de salida:" +#define STR_MIDI_OUT "Dispositivo MIDI de salida:" #define STR_MIDI_IN "Dispositivo MIDI de entrada:" #define STR_MPU401 "MPU-401 independiente" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Usar sonido FLOAT32" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Controlador de sintet. FM" +#define STR_FM_DRV_NUKED "Nuked (más preciso)" +#define STR_FM_DRV_YMFM "YMFM (más rápido)" #define STR_NET_TYPE "Tipo de red:" #define STR_PCAP "Dispositivo PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Chequear BPB" #define STR_CDROM_DRIVES "Unidades de CD-ROM:" #define STR_CD_SPEED "Velocidad:" +#define STR_EARLY "Unidad anterior" #define STR_MO_DRIVES "Unidades MO:" #define STR_ZIP_DRIVES "Unidades ZIP:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Hard reset" IDS_2159 "ACPI shutdown" IDS_2160 "Settings" + IDS_2161 "Unidad anterior" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/fi-FI.rc b/src/win/languages/fi-FI.rc index 43ddbc6da..ccf1a5940 100644 --- a/src/win/languages/fi-FI.rc +++ b/src/win/languages/fi-FI.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Lataa edellinen levykuva uudelleen", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "L&evykuva", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Kansio", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Näytönohjain:" #define STR_VOODOO "Voodoo-grafiikkasuoritin" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/a-grafiikkasuoritin" +#define STR_XGA "XGA-grafiikkasuoritin" #define STR_MOUSE "Hiiri:" #define STR_JOYSTICK "Peliohjain:" @@ -290,9 +290,9 @@ END #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Käytä FLOAT32-ääntä" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "FM-syntetisaattoriohjain" +#define STR_FM_DRV_NUKED "Nuked (tarkempi)" +#define STR_FM_DRV_YMFM "YMFM (nopeampi)" #define STR_NET_TYPE "Verkon tyyppi:" #define STR_PCAP "PCap-laite:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Tarkista BPB" #define STR_CDROM_DRIVES "CD-ROM-asemat:" #define STR_CD_SPEED "Nopeus:" +#define STR_EARLY "Aiemmat asemat" #define STR_MO_DRIVES "Magneettisoptiset asemat (MO):" #define STR_ZIP_DRIVES "ZIP-asemat:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Kylmä uudelleenkäynnistys" IDS_2159 "ACPI-sammutus" IDS_2160 "Asetukset" + IDS_2161 "Aiemmat asemat" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/fr-FR.rc b/src/win/languages/fr-FR.rc index ddcb22341..858a2dacf 100644 --- a/src/win/languages/fr-FR.rc +++ b/src/win/languages/fr-FR.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Recharger image précedente", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Image", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Dossier", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Vidéo:" #define STR_VOODOO "Graphique Voodoo" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "Graphique IBM 8514/a" +#define STR_XGA "Graphique XGA" #define STR_MOUSE "Souris:" #define STR_JOYSTICK "Manette de commande:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Manette 4..." #define STR_SOUND "Carte son:" -#define STR_MIDI_OUT "Sortie MIDI:" +#define STR_MIDI_OUT "Sortie MIDI:" #define STR_MIDI_IN "Entrée MIDI:" #define STR_MPU401 "MPU-401 autonome" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Utiliser le son FLOAT32" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Pilote de synthétiseur FM" +#define STR_FM_DRV_NUKED "Nuked (plus précis)" +#define STR_FM_DRV_YMFM "YMFM (plus rapide)" #define STR_NET_TYPE "Type de réseau:" #define STR_PCAP "Dispositif PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Vérifier BPB" #define STR_CDROM_DRIVES "Lecterus CD-ROM:" #define STR_CD_SPEED "Vitesse:" +#define STR_EARLY "Lecteur plus tôt" #define STR_MO_DRIVES "Lecteurs magnéto-optiques:" #define STR_ZIP_DRIVES "Lecteurs ZIP:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Hard reset" IDS_2159 "ACPI shutdown" IDS_2160 "Settings" + IDS_2161 "Lecteur plus tôt" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/hr-HR.rc b/src/win/languages/hr-HR.rc index d608a079a..fcd4f9293 100644 --- a/src/win/languages/hr-HR.rc +++ b/src/win/languages/hr-HR.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Ponovo učitaj prethodnu sliku", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Slika", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Mapa", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Video:" #define STR_VOODOO "Voodoo grafika" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/a grafika" +#define STR_XGA "XGA grafika" #define STR_MOUSE "Miš:" #define STR_JOYSTICK "Palica za igru:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Palica za igru 4..." #define STR_SOUND "Zvučna kartica:" -#define STR_MIDI_OUT "Izlazni uređaj MIDI:" +#define STR_MIDI_OUT "Izlazni uređaj MIDI:" #define STR_MIDI_IN "Ulazni uređaj MIDI:" #define STR_MPU401 "Samostalni MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Koristi FLOAT32 za zvuk" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Drajver za FM sintisajzer" +#define STR_FM_DRV_NUKED "Nuked (precizniji)" +#define STR_FM_DRV_YMFM "YMFM (brži)" #define STR_NET_TYPE "Tip mreže:" #define STR_PCAP "Uređaj PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Provjeraj BPB" #define STR_CDROM_DRIVES "CD-ROM pogoni:" #define STR_CD_SPEED "Brzina:" +#define STR_EARLY "Raniji pogon" #define STR_MO_DRIVES "MO pogoni:" #define STR_ZIP_DRIVES "ZIP pogoni:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Ponovno pokretanje" IDS_2159 "ACPI bazirano gašenje" IDS_2160 "Postavke" + IDS_2161 "Raniji pogon" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/hu-HU.rc b/src/win/languages/hu-HU.rc index a35209d1f..bdf122d5e 100644 --- a/src/win/languages/hu-HU.rc +++ b/src/win/languages/hu-HU.rc @@ -182,7 +182,7 @@ BEGIN MENUITEM "Előző képfájl &újratöltése", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Meglévő képfájl &megnyitása...", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Mappa", IDM_CDROM_DIR END END @@ -277,8 +277,8 @@ END #define STR_VIDEO "Videokártya:" #define STR_VOODOO "Voodoo-gyorsítókártya" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/a-gyorsítókártya" +#define STR_XGA "XGA-gyorsítókártya" #define STR_MOUSE "Egér:" #define STR_JOYSTICK "Játékvezérlő:" @@ -288,16 +288,16 @@ END #define STR_JOY4 "Játékvez. 4..." #define STR_SOUND "Hangkártya:" -#define STR_MIDI_OUT "MIDI-kimenet:" +#define STR_MIDI_OUT "MIDI-kimenet:" #define STR_MIDI_IN "MIDI-bemenet:" #define STR_MPU401 "Különálló MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32 használata" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "FM szintetizátor meghajtó" +#define STR_FM_DRV_NUKED "Nuked (pontosabb)" +#define STR_FM_DRV_YMFM "YMFM (gyorsabb)" #define STR_NET_TYPE "Hálózati típusa:" #define STR_PCAP "PCap eszköz:" @@ -353,6 +353,7 @@ END #define STR_CHECKBPB "BPB ellenőrzés" #define STR_CDROM_DRIVES "CD-ROM meghajtók:" #define STR_CD_SPEED "Seb.:" +#define STR_EARLY "Korábbi meghajtó" #define STR_MO_DRIVES "MO-meghajtók:" #define STR_ZIP_DRIVES "ZIP-meghajtók:" @@ -520,6 +521,7 @@ BEGIN IDS_2158 "Hard reset" IDS_2159 "ACPI shutdown" IDS_2160 "Settings" + IDS_2161 "Korábbi meghajtó" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/it-IT.rc b/src/win/languages/it-IT.rc index fb3f36b66..ffcfe64d9 100644 --- a/src/win/languages/it-IT.rc +++ b/src/win/languages/it-IT.rc @@ -178,7 +178,7 @@ BEGIN MENUITEM "&Ricarica l'immagine precedente", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Immagine", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Cartella", IDM_CDROM_DIR END END @@ -273,8 +273,8 @@ END #define STR_VIDEO "Video:" #define STR_VOODOO "Grafica Voodoo" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "Grafica IBM 8514/a" +#define STR_XGA "Grafica XGA" #define STR_MOUSE "Mouse:" #define STR_JOYSTICK "Joystick:" @@ -284,16 +284,16 @@ END #define STR_JOY4 "Joystick 4..." #define STR_SOUND "Scheda audio:" -#define STR_MIDI_OUT "Uscita MIDI:" +#define STR_MIDI_OUT "Uscita MIDI:" #define STR_MIDI_IN "Entrata MIDI:" #define STR_MPU401 "MPU-401 autonomo" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Usa suono FLOAT32" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Driver sint. FM" +#define STR_FM_DRV_NUKED "Nuked (più accurato)" +#define STR_FM_DRV_YMFM "YMFM (più veloce)" #define STR_NET_TYPE "Tipo di rete:" #define STR_PCAP "Dispositivo PCap:" @@ -349,6 +349,7 @@ END #define STR_CHECKBPB "Verifica BPB" #define STR_CDROM_DRIVES "Unità CD-ROM:" #define STR_CD_SPEED "Veloc.:" +#define STR_EARLY "Unità anteriore" #define STR_MO_DRIVES "Unità magneto-ottiche:" #define STR_ZIP_DRIVES "Unità ZIP:" @@ -517,6 +518,7 @@ BEGIN IDS_2158 "Hard reset" IDS_2159 "ACPI shutdown" IDS_2160 "Settings" + IDS_2161 "Unità anteriore" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/ja-JP.rc b/src/win/languages/ja-JP.rc index f66055707..c1bd10e18 100644 --- a/src/win/languages/ja-JP.rc +++ b/src/win/languages/ja-JP.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "前のイメージを再読み込み(&R)", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "イメージ(&I)", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "フォルダ(&F)", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "ビデオカード:" #define STR_VOODOO "Voodooグラフィック" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/aグラフィック" +#define STR_XGA "XGAグラフィック" #define STR_MOUSE "マウス:" #define STR_JOYSTICK "ジョイスティック:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "ジョイスティック4..." #define STR_SOUND "サウンドカード:" -#define STR_MIDI_OUT "MIDI出力デバイス:" +#define STR_MIDI_OUT "MIDI出力デバイス:" #define STR_MIDI_IN "MIDI入力デバイス:" #define STR_MPU401 "独立型MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32サウンドを使用する" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "FMシンセドライバー" +#define STR_FM_DRV_NUKED "Nuked (高精度化)" +#define STR_FM_DRV_YMFM "YMFM (より速く)" #define STR_NET_TYPE "ネットワークタイプ:" #define STR_PCAP "PCapデバイス:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "BPBをチェック" #define STR_CDROM_DRIVES "CD-ROMドライブ:" #define STR_CD_SPEED "速度:" +#define STR_EARLY "アーリードライブ" #define STR_MO_DRIVES "光磁気ドライブ:" #define STR_ZIP_DRIVES "ZIPドライブ:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "ハードリセット" IDS_2159 "ACPIシャットダウン" IDS_2160 "設定" + IDS_2161 "アーリードライブ" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/ko-KR.rc b/src/win/languages/ko-KR.rc index 2cc4fdf7b..a43c9e3af 100644 --- a/src/win/languages/ko-KR.rc +++ b/src/win/languages/ko-KR.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "이전 이미지 다시 불러오기(&R)", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "이미지(&I)", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "폴더(&F)", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "비디오 카드:" #define STR_VOODOO "Voodoo 그래픽" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/a 그래픽" +#define STR_XGA "XGA 그래픽" #define STR_MOUSE "마우스:" #define STR_JOYSTICK "조이스틱:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "조이스틱 4..." #define STR_SOUND "사운드 카드:" -#define STR_MIDI_OUT "MIDI 출력 장치:" +#define STR_MIDI_OUT "MIDI 출력 장치:" #define STR_MIDI_IN "MIDI 입력 장치:" #define STR_MPU401 "MPU-401 단독 사용" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32 사운드 사용" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "FM 신디사이저 드라이버" +#define STR_FM_DRV_NUKED "Nuked (더 정확한)" +#define STR_FM_DRV_YMFM "YMFM (더 빠르게)" #define STR_NET_TYPE "네트워크 종류:" #define STR_PCAP "PCap 장치:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "BPB 확인" #define STR_CDROM_DRIVES "CD-ROM 드라이브:" #define STR_CD_SPEED "속도:" +#define STR_EARLY "이전 드라이브" #define STR_MO_DRIVES "광자기 드라이브:" #define STR_ZIP_DRIVES "ZIP 드라이브:" @@ -507,15 +508,16 @@ BEGIN 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_2154 "Resume execution" - IDS_2155 "Pause execution" - IDS_2156 "Press Ctrl+Alt+Del" - IDS_2157 "Press Ctrl+Alt+Esc" - IDS_2158 "Hard reset" - IDS_2159 "ACPI shutdown" - IDS_2160 "Settings" + IDS_2152 "렌더러 초기화 오류" + IDS_2153 "OpenGL (3.0 Core) 렌더러를 초기화할 수 없습니다. 다른 렌더러를 사용하십시오." + IDS_2154 "실행 재개" + IDS_2155 "실행 일시 중지" + IDS_2156 "Ctrl+Alt+Del" + IDS_2157 "Ctrl+Alt+Esc" + IDS_2158 "재시작" + IDS_2159 "ACPI 종료" + IDS_2160 "설정" + IDS_2161 "이전 드라이브" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/pl-PL.rc b/src/win/languages/pl-PL.rc index 9fb82438c..9218936b9 100644 --- a/src/win/languages/pl-PL.rc +++ b/src/win/languages/pl-PL.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Przeładuj poprzedni obraz", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Obraz", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Teczka", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Wideo:" #define STR_VOODOO "Grafika Voodoo" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "Grafika IBM 8514/a" +#define STR_XGA "Grafika XGA" #define STR_MOUSE "Mysz:" #define STR_JOYSTICK "Joystick:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Joystick 4..." #define STR_SOUND "Karta dźwiękowa:" -#define STR_MIDI_OUT "Urządzenie wyjściowe MIDI:" +#define STR_MIDI_OUT "Urządzenie wyjściowe MIDI:" #define STR_MIDI_IN "Urządzenie wejściowe MIDI:" #define STR_MPU401 "Samodzielne urządzenie MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Użyj dźwięku FLOAT32" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Sterownik syntezy FM" +#define STR_FM_DRV_NUKED "Nuked (dokładniejszy)" +#define STR_FM_DRV_YMFM "YMFM (szybszy)" #define STR_NET_TYPE "Rodzaj sieci:" #define STR_PCAP "Urządzenie PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Sprawdzaj BPB" #define STR_CDROM_DRIVES "Napędy CD-ROM:" #define STR_CD_SPEED "Szybkość:" +#define STR_EARLY "Wcześniejszy napęd" #define STR_MO_DRIVES "Napędy MO:" #define STR_ZIP_DRIVES "Napędy ZIP:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Twardy reset" IDS_2159 "Wyłączenie ACPI" IDS_2160 "Ustawienia" + IDS_2161 "Wcześniejszy napęd" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/pt-BR.rc b/src/win/languages/pt-BR.rc index 3a5af87f8..9c5f65a56 100644 --- a/src/win/languages/pt-BR.rc +++ b/src/win/languages/pt-BR.rc @@ -286,16 +286,16 @@ END #define STR_JOY4 "Joystick 4..." #define STR_SOUND "Placa de som:" -#define STR_MIDI_OUT "Disp. saída MIDI:" +#define STR_MIDI_OUT "Disp. saída MIDI:" #define STR_MIDI_IN "Disp. entrada MIDI:" #define STR_MPU401 "MPU-401 autônomo" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Usar som FLOAT32" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Controlador de sint. FM" +#define STR_FM_DRV_NUKED "Nuked (mais preciso)" +#define STR_FM_DRV_YMFM "YMFM (mais rápido)" #define STR_NET_TYPE "Tipo de rede:" #define STR_PCAP "Dispositivo PCap:" @@ -351,6 +351,7 @@ END #define STR_CHECKBPB "Verificar BPB" #define STR_CDROM_DRIVES "Unidades de CD-ROM:" #define STR_CD_SPEED "Veloc.:" +#define STR_EARLY "Unidade anterior" #define STR_MO_DRIVES "Unidades magneto-ópticas:" #define STR_ZIP_DRIVES "Unidades ZIP:" @@ -519,6 +520,7 @@ BEGIN IDS_2158 "Reinicialização completa" IDS_2159 "Desligamento por ACPI" IDS_2160 "Configurações" + IDS_2161 "Unidade anterior" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/pt-PT.rc b/src/win/languages/pt-PT.rc index 81b27665e..55b81c8d3 100644 --- a/src/win/languages/pt-PT.rc +++ b/src/win/languages/pt-PT.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Recarregar imagem anterior", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Imagem", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Pasta", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Vídeo:" #define STR_VOODOO "Gráficos Voodoo" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "Gráficos IBM 8514/a" +#define STR_XGA "Gráficos XGA" #define STR_MOUSE "Rato:" #define STR_JOYSTICK "Joystick:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Joystick 4..." #define STR_SOUND "Placa de som:" -#define STR_MIDI_OUT "Disp. saída MIDI:" +#define STR_MIDI_OUT "Disp. saída MIDI:" #define STR_MIDI_IN "Disp. entrada MIDI:" #define STR_MPU401 "MPU-401 autónomo" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Utilizar som FLOAT32" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Controlador de sint. FM" +#define STR_FM_DRV_NUKED "Nuked (mais exacto)" +#define STR_FM_DRV_YMFM "YMFM (mais rápido)" #define STR_NET_TYPE "Tipo de rede:" #define STR_PCAP "Dispositivo PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Verificar BPB" #define STR_CDROM_DRIVES "Unidades CD-ROM:" #define STR_CD_SPEED "Velocidade:" +#define STR_EARLY "Unidade anterior" #define STR_MO_DRIVES "Unidades magneto-ópticas:" #define STR_ZIP_DRIVES "Unidades ZIP:" @@ -507,15 +508,16 @@ BEGIN IDS_2149 "Imagens de cassete (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Todos os ficheiros (*.*)\0*.*\0" IDS_2150 "Cartucho %i: %ls" IDS_2151 "Imagens de cartucho (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Todos os ficheiros (*.*)\0*.*\0" - IDS_2152 "Error initializing renderer" - IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer." - IDS_2154 "Resume execution" - IDS_2155 "Pause execution" - IDS_2156 "Press Ctrl+Alt+Del" - IDS_2157 "Press Ctrl+Alt+Esc" - IDS_2158 "Hard reset" - IDS_2159 "ACPI shutdown" - IDS_2160 "Settings" + IDS_2152 "Erro na inicialização do renderizador" + IDS_2153 "Não foi possível inicializar o renderizador OpenGL (3.0 Core). Utilize outro renderizador." + IDS_2154 "Retomar execução" + IDS_2155 "Pausar execução" + IDS_2156 "Ctrl+Alt+Del" + IDS_2157 "Ctrl+Alt+Esc" + IDS_2158 "Reinicialização completa" + IDS_2159 "Encerramento ACPI" + IDS_2160 "Definições" + IDS_2161 "Unidade anterior" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/ru-RU.rc b/src/win/languages/ru-RU.rc index 868f9c4b3..95b550dce 100644 --- a/src/win/languages/ru-RU.rc +++ b/src/win/languages/ru-RU.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Снова загрузить предыдущий образ", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Образ...", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Папка", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Видеокарта:" #define STR_VOODOO "Ускоритель Voodoo" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "Ускоритель IBM 8514/a" +#define STR_XGA "Ускоритель XGA" #define STR_MOUSE "Мышь:" #define STR_JOYSTICK "Джойстик:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Джойстик 4..." #define STR_SOUND "Звуковая карта:" -#define STR_MIDI_OUT "MIDI Out устр-во:" +#define STR_MIDI_OUT "MIDI Out устр-во:" #define STR_MIDI_IN "MIDI In устр-во:" #define STR_MPU401 "Отдельный MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32 звук" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Драйвер FM-синтезатора" +#define STR_FM_DRV_NUKED "Nuked (более точный)" +#define STR_FM_DRV_YMFM "YMFM (быстрей)" #define STR_NET_TYPE "Тип сети:" #define STR_PCAP "Устройство PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Проверять BPB" #define STR_CDROM_DRIVES "Дисководы CD-ROM:" #define STR_CD_SPEED "Скорость:" +#define STR_EARLY "Предыдущий дисковод" #define STR_MO_DRIVES "Магнитооптические дисководы:" #define STR_ZIP_DRIVES "ZIP дисководы:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Холодная перезагрузка" IDS_2159 "Сигнал завершения ACPI" IDS_2160 "Настройки машины" + IDS_2161 "Предыдущий дисковод" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/sl-SI.rc b/src/win/languages/sl-SI.rc index b6713d3da..7b957cf0d 100644 --- a/src/win/languages/sl-SI.rc +++ b/src/win/languages/sl-SI.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Naloži zadnjo sliko", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Slika", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Mapa", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Video:" #define STR_VOODOO "Voodoo grafika" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/a grafika" +#define STR_XGA "XGA grafika" #define STR_MOUSE "Miška:" #define STR_JOYSTICK "Igralna palica:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Igralna palica 4..." #define STR_SOUND "Zvočna kartica:" -#define STR_MIDI_OUT "Izhodna naprava MIDI:" +#define STR_MIDI_OUT "Izhodna naprava MIDI:" #define STR_MIDI_IN "Vhodna naprava MIDI:" #define STR_MPU401 "Samostojen MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "Uporabi FLOAT32 za zvok" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Gonilnik sintetizacije FM" +#define STR_FM_DRV_NUKED "Nuked (točnejši)" +#define STR_FM_DRV_YMFM "YMFM (hitrejši)" #define STR_NET_TYPE "Vrsta omrežja:" #define STR_PCAP "Naprava PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Preverjaj BPB" #define STR_CDROM_DRIVES "Pogoni CD-ROM:" #define STR_CD_SPEED "Hitrost:" +#define STR_EARLY "Zgodnejši pogon" #define STR_MO_DRIVES "Magnetno-optični pogoni:" #define STR_ZIP_DRIVES "Pogoni ZIP:" @@ -507,15 +508,16 @@ BEGIN IDS_2149 "Slike kaset (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Vse datoteke (*.*)\0*.*\0" IDS_2150 "Spominski vložek %i: %ls" IDS_2151 "Slike spominskega vložka (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Vse datoteke (*.*)\0*.*\0" - IDS_2152 "Error initializing renderer" - IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer." - IDS_2154 "Resume execution" - IDS_2155 "Pause execution" + IDS_2152 "Napaka pri zagonu sistema za upodabljanje" + IDS_2153 "Sistema za upodabljanje OpenGL (3.0 Core) ni bilo mogoče zagnati. Uporabite drug sistem za upodabljanje." + IDS_2154 "Nadaljuj izvajanje" + IDS_2155 "Prekini izvajanje" IDS_2156 "Press Ctrl+Alt+Del" IDS_2157 "Press Ctrl+Alt+Esc" - IDS_2158 "Hard reset" - IDS_2159 "ACPI shutdown" - IDS_2160 "Settings" + IDS_2158 "Ponovni zagon" + IDS_2159 "Zaustavitev ACPI" + IDS_2160 "Nastavitve" + IDS_2161 "Zgodnejši pogon" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/tr-TR.rc b/src/win/languages/tr-TR.rc index 2317d5a6e..4578dc771 100644 --- a/src/win/languages/tr-TR.rc +++ b/src/win/languages/tr-TR.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Önceki imajı seç", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&İmaj seç", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Klasör", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Ekran kartı:" #define STR_VOODOO "Voodoo Grafikleri" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "IBM 8514/a Grafikleri" +#define STR_XGA "XGA Grafikleri" #define STR_MOUSE "Fare:" #define STR_JOYSTICK "Oyun kolu:" @@ -283,16 +283,16 @@ END #define STR_JOY4 "Oyun kolu 4..." #define STR_SOUND "Ses kartı:" -#define STR_MIDI_OUT "MIDI Çıkış Cihazı:" +#define STR_MIDI_OUT "MIDI Çıkış Cihazı:" #define STR_MIDI_IN "MIDI Giriş Cihazı:" #define STR_MPU401 "Bağımsız MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32 ses kullan" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "FM sentez sürücüsü" +#define STR_FM_DRV_NUKED "Nuked (daha doğru)" +#define STR_FM_DRV_YMFM "YMFM (daha hızlı)" #define STR_NET_TYPE "Ağ tipi:" #define STR_PCAP "PCap cihazı:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "BPB'yi denetle" #define STR_CDROM_DRIVES "CD-ROM sürücüleri:" #define STR_CD_SPEED "Hız:" +#define STR_EARLY "Daha erken sürüş" #define STR_MO_DRIVES "MO sürücüleri:" #define STR_ZIP_DRIVES "ZIP sürücüleri:" @@ -507,15 +508,16 @@ BEGIN IDS_2149 "Kaset imajları (*.PCM;*.RAW;*.WAV;*.CAS)\0*.PCM;*.RAW;*.WAV;*.CAS\0Tüm dosyalar (*.*)\0*.*\0" IDS_2150 "Kartuş %i: %ls" IDS_2151 "Kartuş imajları (*.A;*.B;*.JRC)\0*.A;*.B;*.JRC\0Tüm dosyalar (*.*)\0*.*\0" - IDS_2152 "Error initializing renderer" - IDS_2153 "OpenGL (3.0 Core) renderer could not be initialized. Use another renderer." - IDS_2154 "Resume execution" - IDS_2155 "Pause execution" - IDS_2156 "Press Ctrl+Alt+Del" - IDS_2157 "Press Ctrl+Alt+Esc" - IDS_2158 "Hard reset" - IDS_2159 "ACPI shutdown" - IDS_2160 "Settings" + IDS_2152 "Oluşturucu başlatılırken hata oluştu" + IDS_2153 "OpenGL (3.0 Core) görüntüleyici başlatılamadı. Başka bir görüntüleyici kullanın." + IDS_2154 "Yürütmeye devam et" + IDS_2155 "Yürütmeyi duraklat" + IDS_2156 "Ctrl+Alt+Del" + IDS_2157 "Ctrl+Alt+Esc" + IDS_2158 "Makineyi yeniden başlat" + IDS_2159 "ACPI kapatma" + IDS_2160 "Ayarlar" + IDS_2161 "Daha erken sürüş" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/uk-UA.rc b/src/win/languages/uk-UA.rc index dd4171611..3b20ba1ee 100644 --- a/src/win/languages/uk-UA.rc +++ b/src/win/languages/uk-UA.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "&Знову завантажити попередній образ", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "&Образ...", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "&Тека", IDM_CDROM_DIR END END @@ -272,8 +272,8 @@ END #define STR_VIDEO "Відеокарта:" #define STR_VOODOO "Прискорювач Voodoo" -#define STR_IBM8514 "IBM 8514/a Graphics" -#define STR_XGA "XGA Graphics" +#define STR_IBM8514 "Прискорювач IBM 8514/a" +#define STR_XGA "Прискорювач XGA" #define STR_MOUSE "Миша:" #define STR_JOYSTICK "Джойстик:" @@ -290,9 +290,9 @@ END #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "FLOAT32 звук" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "Драйвер FM-синтезатора" +#define STR_FM_DRV_NUKED "Nuked (більш точний)" +#define STR_FM_DRV_YMFM "YMFM (швидший)" #define STR_NET_TYPE "Тип мережі:" #define STR_PCAP "Пристрій PCap:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "Перевіряти BPB" #define STR_CDROM_DRIVES "Дисководи CD-ROM:" #define STR_CD_SPEED "Швидкість:" +#define STR_EARLY "Більш ранній дисковод" #define STR_MO_DRIVES "Магнітооптичні дисководи:" #define STR_ZIP_DRIVES "ZIP дисководи:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "Холодне перезавантаження" IDS_2159 "Сигнал завершення ACPI" IDS_2160 "Налаштування машини" + IDS_2161 "Більш ранній дисковод" END STRINGTABLE DISCARDABLE diff --git a/src/win/languages/zh-CN.rc b/src/win/languages/zh-CN.rc index d2566ac15..6a1a2a55a 100644 --- a/src/win/languages/zh-CN.rc +++ b/src/win/languages/zh-CN.rc @@ -177,7 +177,7 @@ BEGIN MENUITEM "载入上一个镜像(&R)", IDM_CDROM_RELOAD MENUITEM SEPARATOR MENUITEM "镜像(&I)", IDM_CDROM_IMAGE - MENUITEM "&Folder", IDM_CDROM_DIR + MENUITEM "文件夹(&F)", IDM_CDROM_DIR END END @@ -283,16 +283,16 @@ END #define STR_JOY4 "操纵杆 4..." #define STR_SOUND "声卡:" -#define STR_MIDI_OUT "MIDI 输出设备:" +#define STR_MIDI_OUT "MIDI 输出设备:" #define STR_MIDI_IN "MIDI 输入设备:" #define STR_MPU401 "独立 MPU-401" #define STR_SSI "Innovation SSI-2001" #define STR_CMS "CMS / Game Blaster" #define STR_GUS "Gravis Ultrasound" #define STR_FLOAT "使用单精度浮点 (FLOAT32)" -#define STR_FM_DRIVER "FM synth driver" -#define STR_FM_DRV_NUKED "Nuked (more accurate)" -#define STR_FM_DRV_YMFM "YMFM (faster)" +#define STR_FM_DRIVER "调频合成器驱动器" +#define STR_FM_DRV_NUKED "Nuked (更准确)" +#define STR_FM_DRV_YMFM "YMFM (更快)" #define STR_NET_TYPE "网络类型:" #define STR_PCAP "PCap 设备:" @@ -348,6 +348,7 @@ END #define STR_CHECKBPB "检查 BPB" #define STR_CDROM_DRIVES "光盘驱动器:" #define STR_CD_SPEED "速度:" +#define STR_EARLY "早先的驱动器" #define STR_MO_DRIVES "磁光盘驱动器:" #define STR_ZIP_DRIVES "ZIP 驱动器:" @@ -516,6 +517,7 @@ BEGIN IDS_2158 "硬重置" IDS_2159 "ACPI 关机" IDS_2160 "设置" + IDS_2161 "早先的驱动器" END STRINGTABLE DISCARDABLE diff --git a/src/win/win_settings.c b/src/win/win_settings.c index a1c83ca52..724222bb0 100644 --- a/src/win/win_settings.c +++ b/src/win/win_settings.c @@ -3635,6 +3635,14 @@ win_settings_cdrom_drives_recalc_list(HWND hdlg) lvI.iItem = i; lvI.iImage = 0; + if (ListView_SetItem(hwndList, &lvI) == -1) + return FALSE; + + lvI.iSubItem = 2; + lvI.pszText = plat_get_string(temp_cdrom[i].early ? IDS_2060 : IDS_2061); + lvI.iItem = i; + lvI.iImage = 0; + if (ListView_SetItem(hwndList, &lvI) == -1) return FALSE; } @@ -3815,15 +3823,19 @@ win_settings_floppy_drives_init_columns(HWND hdlg) static void win_settings_cdrom_drives_resize_columns(HWND hdlg) { - int width[2] = { 292, 147 }; + int iCol, width[3] = { 292, 58, 89 }; + int total = 0; HWND hwndList = GetDlgItem(hdlg, IDC_LIST_CDROM_DRIVES); RECT r; GetWindowRect(hwndList, &r); - width[0] = MulDiv(width[0], dpi, 96); - ListView_SetColumnWidth(hwndList, 0, MulDiv(width[0], dpi, 96)); - width[1] = (r.right - r.left) - 4 - width[0]; - ListView_SetColumnWidth(hwndList, 1, width[1]); + for (iCol = 0; iCol < 2; iCol++) { + width[iCol] = MulDiv(width[iCol], dpi, 96); + total += width[iCol]; + ListView_SetColumnWidth(hwndList, iCol, MulDiv(width[iCol], dpi, 96)); + } + width[2] = (r.right - r.left) - 4 - total; + ListView_SetColumnWidth(hwndList, 2, width[2]); } static BOOL @@ -3846,12 +3858,21 @@ win_settings_cdrom_drives_init_columns(HWND hdlg) lvc.iSubItem = 1; lvc.pszText = plat_get_string(IDS_2053); - lvc.cx = 147; + lvc.cx = 58; lvc.fmt = LVCFMT_LEFT; if (ListView_InsertColumn(hwndList, 1, &lvc) == -1) return FALSE; + lvc.iSubItem = 2; + lvc.pszText = plat_get_string(IDS_2161); + + lvc.cx = 89; + lvc.fmt = LVCFMT_LEFT; + + if (ListView_InsertColumn(hwndList, 2, &lvc) == -1) + return FALSE; + win_settings_cdrom_drives_resize_columns(hdlg); return TRUE; } @@ -4051,6 +4072,14 @@ win_settings_cdrom_drives_update_item(HWND hdlg, int i) lvI.iItem = i; lvI.iImage = 0; + if (ListView_SetItem(hwndList, &lvI) == -1) + return; + + lvI.iSubItem = 2; + lvI.pszText = plat_get_string(temp_cdrom[i].early ? IDS_2060 : IDS_2061); + lvI.iItem = i; + lvI.iImage = 0; + if (ListView_SetItem(hwndList, &lvI) == -1) return; } @@ -4196,19 +4225,22 @@ cdrom_recalc_location_controls(HWND hdlg, int assign_id) int i = 0; int bus = temp_cdrom[lv2_current_sel].bus_type; - for (i = IDT_CD_ID; i <= (IDT_CD_LUN); i++) + for (i = IDT_CD_ID; i <= IDT_CD_CHANNEL; i++) settings_show_window(hdlg, i, FALSE); settings_show_window(hdlg, IDC_COMBO_CD_ID, FALSE); settings_show_window(hdlg, IDC_COMBO_CD_CHANNEL_IDE, FALSE); settings_show_window(hdlg, IDC_COMBO_CD_SPEED, bus != CDROM_BUS_DISABLED); settings_show_window(hdlg, IDT_CD_SPEED, bus != CDROM_BUS_DISABLED); + settings_show_window(hdlg, IDC_CHECKEARLY, bus != CDROM_BUS_DISABLED); - if (bus != CDROM_BUS_DISABLED) + if (bus != CDROM_BUS_DISABLED) { settings_set_cur_sel(hdlg, IDC_COMBO_CD_SPEED, temp_cdrom[lv2_current_sel].speed - 1); + settings_set_check(hdlg, IDC_CHECKEARLY, temp_cdrom[lv2_current_sel].early); + } switch (bus) { case CDROM_BUS_ATAPI: /* ATAPI */ - settings_show_window(hdlg, IDT_CD_LUN, TRUE); + settings_show_window(hdlg, IDT_CD_CHANNEL, TRUE); settings_show_window(hdlg, IDC_COMBO_CD_CHANNEL_IDE, TRUE); if (assign_id) @@ -4593,6 +4625,12 @@ win_settings_floppy_and_cdrom_drives_proc(HWND hdlg, UINT message, WPARAM wParam temp_cdrom[lv2_current_sel].speed = settings_get_cur_sel(hdlg, IDC_COMBO_CD_SPEED) + 1; win_settings_cdrom_drives_update_item(hdlg, lv2_current_sel); break; + + case IDC_CHECKEARLY: + temp_cdrom[lv2_current_sel].early = settings_get_check(hdlg, IDC_CHECKEARLY); + win_settings_cdrom_drives_update_item(hdlg, lv2_current_sel); + break; + } ignore_change = 0;