diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 35800ea83..0c85655c1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -252,7 +252,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Install dependencies - run: sudo apt update && sudo apt install gcc-11 g++-11 libfreetype-dev libsdl2-dev libpng-dev libopenal-dev libc6-dev librtmidi-dev qtbase5-dev + run: sudo apt update && sudo apt install gcc-11 g++-11 libfreetype-dev libsdl2-dev libpng-dev libopenal-dev libc6-dev librtmidi-dev qtbase5-dev qttools5-dev - name: Configure CMake run: >- cmake -S . -B build diff --git a/src/device/ibm_5161.c b/src/device/ibm_5161.c index 31a2e7bf9..d18b93cc2 100644 --- a/src/device/ibm_5161.c +++ b/src/device/ibm_5161.c @@ -116,7 +116,7 @@ const device_t ibm_5161_device = { "IBM Expansion Unit (5161)", "ibm_5161", - 0, + DEVICE_ISA, 0, ibm_5161_init, ibm_5161_close, diff --git a/src/include/86box/sound.h b/src/include/86box/sound.h index 9583123b0..cbf380901 100644 --- a/src/include/86box/sound.h +++ b/src/include/86box/sound.h @@ -103,6 +103,7 @@ extern const device_t pas16_device; extern const device_t ps1snd_device; /* Tandy PSSJ */ +extern const device_t tndy_device; extern const device_t pssj_device; extern const device_t pssj_isa_device; @@ -120,6 +121,8 @@ extern const device_t sb_16_pnp_device; extern const device_t sb_32_pnp_device; extern const device_t sb_awe32_device; extern const device_t sb_awe32_pnp_device; +extern const device_t sb_awe64_value_device; +extern const device_t sb_awe64_device; extern const device_t sb_awe64_gold_device; /* Innovation SSI-2001 */ diff --git a/src/sound/snd_gus.c b/src/sound/snd_gus.c index 6cdf26ff6..a20d7fd50 100644 --- a/src/sound/snd_gus.c +++ b/src/sound/snd_gus.c @@ -1201,7 +1201,7 @@ void *gus_init(const device_t *info) io_sethandler(gus->base, 0x0010, readgus, NULL, NULL, writegus, NULL, NULL, gus); io_sethandler(0x0100+gus->base, 0x0010, readgus, NULL, NULL, writegus, NULL, NULL, gus); - io_sethandler(0x0506+gus->base, 0x0001, readgus, NULL, NULL, writegus, NULL, NULL, gus); + io_sethandler(0x0506+gus->base, 0x0001, readgus, NULL, NULL, writegus, NULL, NULL, gus); io_sethandler(0x0388, 0x0002, readgus, NULL, NULL, writegus, NULL, NULL, gus); #if defined(DEV_BRANCH) && defined(USE_GUSMAX) diff --git a/src/sound/snd_pssj.c b/src/sound/snd_pssj.c index 703c19341..8c93125ea 100644 --- a/src/sound/snd_pssj.c +++ b/src/sound/snd_pssj.c @@ -241,7 +241,7 @@ void pssj_close(void *p) static const device_config_t pssj_isa_config[] = { { - "base", "Address", CONFIG_HEX16, "", 0xC0, "", { 0 }, + "base", "Address", CONFIG_HEX16, "", 0x2C0, "", { 0 }, { { "0xC0", 0xC0 diff --git a/src/sound/snd_sb.c b/src/sound/snd_sb.c index 5d49c9a62..fd0e0a929 100644 --- a/src/sound/snd_sb.c +++ b/src/sound/snd_sb.c @@ -1730,6 +1730,20 @@ sb_awe32_pnp_available() } +static int +sb_awe64_value_available() +{ + return sb_awe32_available() && rom_present("roms/sound/CT4520 PnP.BIN"); +} + + +static int +sb_awe64_available() +{ + return sb_awe32_available() && rom_present("roms/sound/CT4520 PnP.BIN"); +} + + static int sb_awe64_gold_available() { @@ -1802,7 +1816,7 @@ sb_awe32_pnp_init(const device_t *info) sb->opl_enabled = 1; opl3_init(&sb->opl); - sb_dsp_init(&sb->dsp, (info->local == 2) ? SBAWE64 : SBAWE32, SB_SUBTYPE_DEFAULT, sb); + sb_dsp_init(&sb->dsp, ((info->local == 2) || (info->local == 3) || (info->local == 4)) ? SBAWE64 : SBAWE32, SB_SUBTYPE_DEFAULT, sb); sb_ct1745_mixer_reset(sb); sb->mixer_enabled = 1; @@ -1821,7 +1835,7 @@ sb_awe32_pnp_init(const device_t *info) sb->gameport = gameport_add(&gameport_pnp_device); - if (info->local != 2) + if ((info->local != 2) && (info->local != 3) && (info->local != 4)) device_add(&ide_ter_pnp_device); char *pnp_rom_file = NULL; @@ -1834,7 +1848,11 @@ sb_awe32_pnp_init(const device_t *info) pnp_rom_file = "roms/sound/CT3980 PnP.BIN"; break; - case 2: + case 2: case 3: + pnp_rom_file = "roms/sound/CT4520 PnP.BIN"; + break; + + case 4: pnp_rom_file = "roms/sound/CT4540 PnP.BIN"; break; } @@ -1858,7 +1876,7 @@ sb_awe32_pnp_init(const device_t *info) isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe32_pnp_config_changed, NULL, NULL, NULL, sb); break; - case 2: + case 2: case 3: case 4: isapnp_add_card(pnp_rom, sizeof(sb->pnp_rom), sb_awe64_gold_pnp_config_changed, NULL, NULL, NULL, sb); break; } @@ -2377,6 +2395,9 @@ static const device_config_t sb_32_pnp_config[] = { "None", 0 }, + { + "512 KB", 512 + }, { "2 MB", 2048 }, @@ -2588,6 +2609,105 @@ static const device_config_t sb_awe32_pnp_config[] = } }; +static const device_config_t sb_awe64_value_config[] = +{ + { + "onboard_ram", "Onboard RAM", CONFIG_SELECTION, "", 512, "", { 0 }, + { + { + "512 KB", 512 + }, + { + "1 MB", 1024 + }, + { + "2 MB", 2048 + }, + { + "4 MB", 4096 + }, + { + "8 MB", 8192 + }, + { + "12 MB", 12288 + }, + { + "16 MB", 16384 + }, + { + "20 MB", 20480 + }, + { + "24 MB", 24576 + }, + { + "28 MB", 28672 + }, + { + "" + } + } + }, + { + "receive_input", "Receive input (SB MIDI)", CONFIG_BINARY, "", 1 + }, + { + "receive_input401", "Receive input (MPU-401)", CONFIG_BINARY, "", 0 + }, + { + "", "", -1 + } +}; + +static const device_config_t sb_awe64_config[] = +{ + { + "onboard_ram", "Onboard RAM", CONFIG_SELECTION, "", 1024, "", { 0 }, + { + { + "1 MB", 1024 + }, + { + "2 MB", 2048 + }, + { + "4 MB", 4096 + }, + { + "8 MB", 8192 + }, + { + "12 MB", 12288 + }, + { + "16 MB", 16384 + }, + { + "20 MB", 20480 + }, + { + "24 MB", 24576 + }, + { + "28 MB", 28672 + }, + { + "" + } + } + }, + { + "receive_input", "Receive input (SB MIDI)", CONFIG_BINARY, "", 1 + }, + { + "receive_input401", "Receive input (MPU-401)", CONFIG_BINARY, "", 0 + }, + { + "", "", -1 + } +}; + static const device_config_t sb_awe64_gold_config[] = { { @@ -2606,7 +2726,13 @@ static const device_config_t sb_awe64_gold_config[] = "16 MB", 16384 }, { - "28 MB", 28*1024 + "20 MB", 20480 + }, + { + "24 MB", 24576 + }, + { + "28 MB", 28672 }, { "" @@ -2784,12 +2910,38 @@ const device_t sb_awe32_pnp_device = sb_awe32_pnp_config }; +const device_t sb_awe64_value_device = +{ + "Sound Blaster AWE64 Value", + "sbawe64_value", + DEVICE_ISA | DEVICE_AT, + 2, + sb_awe32_pnp_init, sb_awe32_close, NULL, + { sb_awe64_value_available }, + sb_speed_changed, + NULL, + sb_awe64_value_config +}; + +const device_t sb_awe64_device = +{ + "Sound Blaster AWE64", + "sbawe64", + DEVICE_ISA | DEVICE_AT, + 3, + sb_awe32_pnp_init, sb_awe32_close, NULL, + { sb_awe64_available }, + sb_speed_changed, + NULL, + sb_awe64_config +}; + const device_t sb_awe64_gold_device = { "Sound Blaster AWE64 Gold", "sbawe64_gold", DEVICE_ISA | DEVICE_AT, - 2, + 4, sb_awe32_pnp_init, sb_awe32_close, NULL, { sb_awe64_gold_available }, sb_speed_changed, diff --git a/src/sound/snd_sn76489.c b/src/sound/snd_sn76489.c index 6f60a077e..c2aa2a52d 100644 --- a/src/sound/snd_sn76489.c +++ b/src/sound/snd_sn76489.c @@ -224,6 +224,18 @@ void *ncr8496_device_init(const device_t *info) return sn76489; } +void *tndy_device_init(const device_t *info) +{ + sn76489_t *sn76489 = malloc(sizeof(sn76489_t)); + memset(sn76489, 0, sizeof(sn76489_t)); + + uint16_t addr = device_get_config_hex16("base"); + + sn76489_init(sn76489, addr, 0x0008, SN76496, 3579545); + + return sn76489; +} + void sn76489_device_close(void *p) { sn76489_t *sn76489 = (sn76489_t *)p; @@ -231,6 +243,30 @@ void sn76489_device_close(void *p) free(sn76489); } +static const device_config_t tndy_config[] = +{ + { + "base", "Address", CONFIG_HEX16, "", 0x0C0, "", { 0 }, + { + { + "0x0C0", 0x0C0 + }, + { + "0x1E0", 0x1E0 + }, + { + "0x2C0", 0x2C0 + }, + { + "" + } + } + }, + { + "", "", -1 + } +}; + const device_t sn76489_device = { "TI SN74689 PSG", @@ -242,6 +278,7 @@ const device_t sn76489_device = NULL, { NULL }, NULL, NULL }; + const device_t ncr8496_device = { "NCR8496 PSG", @@ -253,3 +290,15 @@ const device_t ncr8496_device = NULL, { NULL }, NULL, NULL }; + +const device_t tndy_device = +{ + "TNDY", + "tndy", + DEVICE_ISA, + 0, + tndy_device_init, + sn76489_device_close, + NULL, { NULL }, NULL, + tndy_config +}; diff --git a/src/sound/sound.c b/src/sound/sound.c index 9ff3036ff..b2b9c4fca 100644 --- a/src/sound/sound.c +++ b/src/sound/sound.c @@ -101,28 +101,31 @@ static const device_t sound_internal_device = { static const SOUND_CARD sound_cards[] = { { &sound_none_device }, - { &sound_internal_device }, - { &adlib_device }, + { &sound_internal_device }, + { &adlib_device }, { &adgold_device }, { &azt2316a_device }, { &azt1605_device }, { &cs4236b_device }, - { &sb_1_device }, - { &sb_15_device }, - { &sb_2_device }, + { &sb_1_device }, + { &sb_15_device }, + { &sb_2_device }, { &sb_pro_v1_device }, { &sb_pro_v2_device }, - { &sb_16_device }, + { &sb_16_device }, { &sb_16_pnp_device }, { &sb_32_pnp_device }, { &sb_awe32_device }, { &sb_awe32_pnp_device }, + { &sb_awe64_value_device }, + { &sb_awe64_device }, { &sb_awe64_gold_device }, #if defined(DEV_BRANCH) && defined(USE_PAS16) - { &pas16_device }, + { &pas16_device }, #endif + { &tndy_device }, { &pssj_isa_device }, - { &wss_device }, + { &wss_device }, { &adlib_mca_device }, { &ncr_business_audio_device }, { &sb_mcv_device }, @@ -130,7 +133,7 @@ static const SOUND_CARD sound_cards[] = { &es1371_device }, { &ad1881_device }, { &cs4297a_device }, - { NULL } + { NULL } }; diff --git a/src/win/languages/de-DE.rc b/src/win/languages/de-DE.rc index 63186994f..c841a78cd 100644 --- a/src/win/languages/de-DE.rc +++ b/src/win/languages/de-DE.rc @@ -341,7 +341,7 @@ END #define STR_TURBO "Turbo-Timings" #define STR_CHECKBPB "BPB überprüfen" #define STR_CDROM_DRIVES "CD-ROM-Laufwerke:" -#define STR_CD_SPEED "Geschwindigkeit:" +#define STR_CD_SPEED "Takt:" #define STR_MO_DRIVES "MO-Laufwerke:" #define STR_ZIP_DRIVES "ZIP-Laufwerke:" diff --git a/src/win/languages/dialogs.rc b/src/win/languages/dialogs.rc index 4f838014c..4a4c132fc 100644 --- a/src/win/languages/dialogs.rc +++ b/src/win/languages/dialogs.rc @@ -584,7 +584,7 @@ BEGIN END -DLG_CFG_HARD_DISKS_ADD DIALOG DISCARDABLE 0, 0, 219, 151 +DLG_CFG_HARD_DISKS_ADD DIALOG DISCARDABLE 0, 0, 239, 151 STYLE DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Add Hard Disk" FONT FONT_SIZE, FONT_NAME @@ -592,61 +592,61 @@ BEGIN LTEXT STR_FILE_NAME, IDT_FILE_NAME, 7, 7, 204, 12 EDITTEXT IDC_EDIT_HD_FILE_NAME, - 7, 18, 153, 12 + 7, 18, 173, 12 PUSHBUTTON STR_SPECIFY, IDC_CFILE, - 167, 18, 44, CFG_BTN_HEIGHT + 187, 18, 44, CFG_BTN_HEIGHT LTEXT STR_CYLS, IDT_CYLS, - 7, 37, 32, 12 + 7, 37, 42, 12 EDITTEXT IDC_EDIT_HD_CYL, - 42, 36, 28, 12 + 50, 36, 28, 12 LTEXT STR_HEADS, IDT_HEADS, - 81, 37, 29, 12 + 86, 37, 29, 12 EDITTEXT IDC_EDIT_HD_HPC, - 112, 36, 28, 12 + 122, 36, 28, 12 LTEXT STR_SECTORS, IDT_SECTORS, - 154, 37, 27, 12 + 164, 37, 33, 12 EDITTEXT IDC_EDIT_HD_SPT, - 183, 36, 28, 12 + 197, 36, 28, 12 LTEXT STR_SIZE_MB, IDT_SIZE_MB, - 7, 56, 33, 12 + 7, 56, 48, 12 EDITTEXT IDC_EDIT_HD_SIZE, - 42, 54, 28, 12 + 50, 54, 28, 12 LTEXT STR_TYPE, IDT_TYPE, 86, 56, 24, 12 COMBOBOX IDC_COMBO_HD_TYPE, - 113, 54, 98, 12, + 133, 54, 98, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_BUS,IDT_BUS, 7, 75, 24, 12 COMBOBOX IDC_COMBO_HD_BUS, - 33, 73, 58, 12, + 43, 73, 58, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_CHANNEL, IDT_CHANNEL, - 99, 75, 34, 12 + 109, 75, 34, 12 COMBOBOX IDC_COMBO_HD_CHANNEL, - 134, 73, 77, 12, + 144, 73, 87, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO_HD_CHANNEL_IDE, - 134, 73, 77, 12, + 144, 73, 87, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_ID, IDT_ID, - 99, 75, 34, 12 + 109, 75, 34, 12 COMBOBOX IDC_COMBO_HD_ID, - 134, 73, 77, 12, + 144, 73, 87, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_IMG_FORMAT, IDT_IMG_FORMAT, - 7, 94, 50, 12 + 7, 94, 70, 12 COMBOBOX IDC_COMBO_HD_IMG_FORMAT, - 58, 92, 153, 12, + 78, 92, 153, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_BLOCK_SIZE, IDT_BLOCK_SIZE, @@ -663,9 +663,9 @@ BEGIN 7, 16, 204, 12 DEFPUSHBUTTON STR_OK, IDOK, - 55, 129, 50, CFG_BTN_HEIGHT + 75, 129, 50, CFG_BTN_HEIGHT PUSHBUTTON STR_CANCEL, IDCANCEL, - 112, 129, 50, CFG_BTN_HEIGHT + 132, 129, 50, CFG_BTN_HEIGHT END DLG_CFG_FLOPPY_AND_CDROM_DRIVES DIALOG DISCARDABLE CFG_PANE_LEFT, CFG_PANE_TOP, CFG_PANE_WIDTH, CFG_PANE_HEIGHT @@ -721,9 +721,9 @@ BEGIN CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT STR_CD_SPEED, IDT_CD_SPEED, - CFG_HMARGIN, 207, 24, CFG_PANE_LTEXT_HEIGHT + CFG_HMARGIN, 207, 34, CFG_PANE_LTEXT_HEIGHT COMBOBOX IDC_COMBO_CD_SPEED, - 33, 205, 328, 12, + 43, 205, 328, 12, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP END