GUS: Add the UltraSound ACE
This commit is contained in:
@@ -203,9 +203,10 @@ extern const device_t es1373_onboard_device;
|
||||
extern const device_t ct5880_device;
|
||||
extern const device_t ct5880_onboard_device;
|
||||
|
||||
/* Gravis UltraSound and UltraSound Max */
|
||||
/* Gravis UltraSound family */
|
||||
extern const device_t gus_device;
|
||||
extern const device_t gus_max_device;
|
||||
extern const device_t gus_ace_device;
|
||||
|
||||
/* IBM PS/1 Audio Card */
|
||||
extern const device_t ps1snd_device;
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr ""
|
||||
msgid "Enable Game port"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr ""
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Nízký DMA kanál"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Povolit herní port"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Povolit porty Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Model SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Niedrige DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Game-Port einschalten"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Adlib-Ports einschalten"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID-Modell"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "DMA bajo"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Habilitar puerto de juegos"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Habilitar puertos Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Modelo de SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Matala DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Peliportti"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Adlib-portit"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID-malli"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "DMA bas"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Activer le port de jeu"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Activer les ports Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Modèle SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Niski DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Omogoći vrata za igru"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Omogući Adlib portove"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Model SID-a"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "DMA basso"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Abilita la porta giochi"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Abilita porte Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Modello SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "低DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "ゲームポートを有効にする"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Adlibポートを有効にする"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SIDモデル"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "낮은 DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "게임 포트 사용"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Adlib 포트 활성화"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID 모델"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Lav DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Aktiver spillport"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Aktiver Adlib-porter"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID-modell"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Lage DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Game-poort inschakelen"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Adlib-poorten inschakelen"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID-model"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Niski poziom DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Włącz port gier"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Włącz porty Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Model SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "DMA baixo"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Ativar a porta do jogo"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Ativar portas Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Modelo do SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "DMA baixo"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Ativar a porta de jogos"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Ativar portas Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Modelo do SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Низкий DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Включить игровой порт"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Включить порты Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Модель SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Nízka hodnota DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Povolenie herného portu"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Povoliť porty Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Model SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Nizki DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Omogočanje igralnih vrat"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Omogoči vrata Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Model SID-a"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Låg DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Aktivera spelport"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Aktivera Adlib-portar"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID-modell"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Düşük DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Gameport'ı etkinleştir"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Adlib bağlantı noktalarını etkinleştir"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID Modeli"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "Низький рівень DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Увімкнути ігровий порт"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Увімкнути порти Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Модель SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "DMA thấp"
|
||||
msgid "Enable Game port"
|
||||
msgstr "Bật cổng trò chơi"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "Bật cổng Adlib"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "Mẫu SID"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "低 DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "启用游戏端口"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "启用 Adlib 端口"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID 芯片型号"
|
||||
|
||||
|
||||
@@ -2136,6 +2136,9 @@ msgstr "低 DMA"
|
||||
msgid "Enable Game port"
|
||||
msgstr "啟用遊戲埠"
|
||||
|
||||
msgid "Enable Adlib ports"
|
||||
msgstr "啟用 Adlib 連接埠"
|
||||
|
||||
msgid "SID Model"
|
||||
msgstr "SID 型號"
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ enum {
|
||||
enum {
|
||||
GUS_CLASSIC = 0,
|
||||
GUS_MAX = 1,
|
||||
GUS_ACE = 2,
|
||||
};
|
||||
|
||||
typedef struct gus_t {
|
||||
@@ -651,15 +652,17 @@ gus_write(uint16_t addr, uint8_t val, void *priv)
|
||||
break;
|
||||
case 6:
|
||||
if (gus->type > GUS_CLASSIC) {
|
||||
if (!(val & 0x2) && (gus->jumper & 0x2))
|
||||
io_removehandler(0x0100 + gus->base, 0x0002, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
else if ((val & 0x2) && !(gus->jumper & 0x2))
|
||||
io_sethandler(0x0100 + gus->base, 0x0002, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
if (gus->type != GUS_ACE) {
|
||||
if (!(val & 0x2) && (gus->jumper & 0x2))
|
||||
io_removehandler(0x0100 + gus->base, 0x0002, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
else if ((val & 0x2) && !(gus->jumper & 0x2))
|
||||
io_sethandler(0x0100 + gus->base, 0x0002, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
|
||||
if (!(val & 0x4) && (gus->jumper & 0x4))
|
||||
gameport_remap(gus->gameport, 0x0);
|
||||
else if ((val & 0x4) && !(gus->jumper & 0x4))
|
||||
gameport_remap(gus->gameport, 0x201);
|
||||
if (!(val & 0x4) && (gus->jumper & 0x4))
|
||||
gameport_remap(gus->gameport, 0x0);
|
||||
else if ((val & 0x4) && !(gus->jumper & 0x4))
|
||||
gameport_remap(gus->gameport, 0x201);
|
||||
}
|
||||
|
||||
gus->jumper = val;
|
||||
}
|
||||
@@ -899,6 +902,8 @@ gus_read(uint16_t addr, void *priv)
|
||||
case 0x706:
|
||||
if (gus->type == GUS_MAX)
|
||||
val = 0x0a; /* GUS MAX */
|
||||
else if (gus->type == GUS_ACE)
|
||||
val = 0x30; /* GUS ACE */
|
||||
else
|
||||
val = 0xff; /*Pre 3.7 - no mixer*/
|
||||
break;
|
||||
@@ -943,8 +948,11 @@ gus_read(uint16_t addr, void *priv)
|
||||
case 0x20e:
|
||||
return gus->sb_2xe;
|
||||
|
||||
case 0x208:
|
||||
case 0x388:
|
||||
if ((gus->type == GUS_ACE) && !device_get_config_int("adlib_ports"))
|
||||
break;
|
||||
fallthrough;
|
||||
case 0x208:
|
||||
if (gus->tctrl & GUS_TIMER_CTRL_AUTO)
|
||||
val = gus->sb_2xa;
|
||||
else {
|
||||
@@ -959,10 +967,12 @@ gus_read(uint16_t addr, void *priv)
|
||||
#ifdef OLD_NMI_BEHAVIOR
|
||||
nmi = 0;
|
||||
#endif /* OLD_NMI_BEHAVIOR */
|
||||
fallthrough;
|
||||
case 0x389:
|
||||
val = gus->ad_data;
|
||||
break;
|
||||
case 0x389:
|
||||
if ((gus->type != GUS_ACE) || device_get_config_int("adlib_ports"))
|
||||
val = gus->ad_data;
|
||||
break;
|
||||
|
||||
case 0x20A:
|
||||
val = gus->adcommand;
|
||||
@@ -1393,13 +1403,14 @@ gus_init(UNUSED(const device_t *info))
|
||||
gus->base = device_get_config_hex16("base");
|
||||
|
||||
io_sethandler(gus->base, 0x0010, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
io_sethandler(0x0100 + gus->base, 0x0002, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
if (gus->type != GUS_ACE)
|
||||
io_sethandler(0x0100 + gus->base, 0x0002, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
io_sethandler(0x0102 + gus->base, 0x000e, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
io_sethandler(0x0506 + gus->base, 0x0001, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
io_sethandler(0x0388, 0x0002, gus_read, NULL, NULL, gus_write, NULL, NULL, gus);
|
||||
if (gus->type == GUS_CLASSIC && device_get_config_int("gameport"))
|
||||
gus->gameport = gameport_add(&gameport_201_device);
|
||||
else {
|
||||
else if (gus->type != GUS_ACE) {
|
||||
gus->gameport = gameport_add(&gameport_pnp_1io_device);
|
||||
gameport_remap(gus->gameport, 0x201);
|
||||
}
|
||||
@@ -1418,7 +1429,7 @@ gus_init(UNUSED(const device_t *info))
|
||||
|
||||
sound_add_handler(gus_get_buffer, gus);
|
||||
|
||||
if (device_get_config_int("receive_input"))
|
||||
if ((gus->type != GUS_ACE) && (device_get_config_int("receive_input")))
|
||||
midi_in_handler(1, gus_input_msg, gus_input_sysex, gus);
|
||||
|
||||
return gus;
|
||||
@@ -1561,6 +1572,57 @@ static const device_config_t gus_max_config[] = {
|
||||
// clang-format off
|
||||
};
|
||||
|
||||
static const device_config_t gus_ace_config[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.name = "base",
|
||||
.description = "Address",
|
||||
.type = CONFIG_HEX16,
|
||||
.default_string = NULL,
|
||||
.default_int = 0x260,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "210H", .value = 0x210 },
|
||||
{ .description = "220H", .value = 0x220 },
|
||||
{ .description = "230H", .value = 0x230 },
|
||||
{ .description = "240H", .value = 0x240 },
|
||||
{ .description = "250H", .value = 0x250 },
|
||||
{ .description = "260H", .value = 0x260 },
|
||||
{ NULL }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "gus_ram",
|
||||
.description = "Memory size",
|
||||
.type = CONFIG_SELECTION,
|
||||
.default_string = NULL,
|
||||
.default_int = 1,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = {
|
||||
{ .description = "512 KB", .value = 1 },
|
||||
{ .description = "1 MB", .value = 2 },
|
||||
{ NULL }
|
||||
},
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{
|
||||
.name = "adlib_ports",
|
||||
.description = "Enable Adlib ports",
|
||||
.type = CONFIG_BINARY,
|
||||
.default_string = NULL,
|
||||
.default_int = 0,
|
||||
.file_filter = NULL,
|
||||
.spinner = { 0 },
|
||||
.selection = { { 0 } },
|
||||
.bios = { { 0 } }
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
// clang-format off
|
||||
};
|
||||
|
||||
const device_t gus_device = {
|
||||
.name = "Gravis UltraSound",
|
||||
.internal_name = "gus",
|
||||
@@ -1588,3 +1650,17 @@ const device_t gus_max_device = {
|
||||
.force_redraw = NULL,
|
||||
.config = gus_max_config
|
||||
};
|
||||
|
||||
const device_t gus_ace_device = {
|
||||
.name = "Gravis UltraSound ACE",
|
||||
.internal_name = "gusace",
|
||||
.flags = DEVICE_ISA16,
|
||||
.local = GUS_ACE,
|
||||
.init = gus_init,
|
||||
.close = gus_close,
|
||||
.reset = gus_reset,
|
||||
.available = NULL,
|
||||
.speed_changed = gus_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = gus_ace_config
|
||||
};
|
||||
|
||||
@@ -139,6 +139,7 @@ static const SOUND_CARD sound_cards[] = {
|
||||
{ &cs4236b_device },
|
||||
{ &gus_device },
|
||||
{ &gus_max_device },
|
||||
{ &gus_ace_device },
|
||||
{ &mirosound_pcm10_device },
|
||||
{ &pas16_device },
|
||||
{ &pas16d_device },
|
||||
|
||||
Reference in New Issue
Block a user