Preliminary SB AWE64 Value and Standard, also, correct memory sizes

Also add 2MB option for AWE64 Value and Standard.

People sometimes removed the onboard RAM and replaced it with a 2MB chip.
This commit is contained in:
Jasmine Iwanek
2022-02-12 19:08:02 -05:00
parent 199a5a2b7b
commit 63066a9084
4 changed files with 169 additions and 16 deletions

View File

@@ -120,6 +120,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 */

View File

@@ -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)

View File

@@ -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;
}
@@ -2591,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[] =
{
{
@@ -2609,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
},
{
""
@@ -2787,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,

View File

@@ -101,28 +101,30 @@ 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
{ &pssj_isa_device },
{ &wss_device },
{ &wss_device },
{ &adlib_mca_device },
{ &ncr_business_audio_device },
{ &sb_mcv_device },
@@ -130,7 +132,7 @@ static const SOUND_CARD sound_cards[] =
{ &es1371_device },
{ &ad1881_device },
{ &cs4297a_device },
{ NULL }
{ NULL }
};