mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-05-09 20:01:19 +08:00
Add dosbox.conf option to choose which FM board to emulate in PC-98 mode, or if at all
This commit is contained in:
parent
dbcdb5c127
commit
140e2dfcdc
@ -866,6 +866,7 @@ void DOSBOX_SetupConfigSections(void) {
|
|||||||
const char* tandys[] = { "auto", "on", "off", 0};
|
const char* tandys[] = { "auto", "on", "off", 0};
|
||||||
const char* ps1opt[] = { "on", "off", 0};
|
const char* ps1opt[] = { "on", "off", 0};
|
||||||
const char* truefalseautoopt[] = { "true", "false", "1", "0", "auto", 0};
|
const char* truefalseautoopt[] = { "true", "false", "1", "0", "auto", 0};
|
||||||
|
const char* pc98fmboards[] = { "auto", "off", "false", "board26k", "board86", "board86c", 0};
|
||||||
|
|
||||||
const char* irqssbhack[] = {
|
const char* irqssbhack[] = {
|
||||||
"none", "cs_equ_ds", 0
|
"none", "cs_equ_ds", 0
|
||||||
@ -1151,6 +1152,10 @@ void DOSBOX_SetupConfigSections(void) {
|
|||||||
" or 386DX and 486 systems where the CPU communicated directly with the ISA bus (A24-A31 tied off)\n"
|
" or 386DX and 486 systems where the CPU communicated directly with the ISA bus (A24-A31 tied off)\n"
|
||||||
" 26: 64MB aliasing. Some 486s had only 26 external address bits, some motherboards tied off A26-A31");
|
" 26: 64MB aliasing. Some 486s had only 26 external address bits, some motherboards tied off A26-A31");
|
||||||
|
|
||||||
|
Pstring = secprop->Add_string("pc-98 fm board",Property::Changeable::Always,"auto");
|
||||||
|
Pstring->Set_values(pc98fmboards);
|
||||||
|
Pstring->Set_help("In PC-98 mode, selects the FM music board to emulate.");
|
||||||
|
|
||||||
Pbool = secprop->Add_bool("pc-98 buffer page flip",Property::Changeable::WhenIdle,false);
|
Pbool = secprop->Add_bool("pc-98 buffer page flip",Property::Changeable::WhenIdle,false);
|
||||||
Pbool->Set_help("If set, the game's request to page flip will be delayed to vertical retrace, which can eliminate tearline artifacts.\n"
|
Pbool->Set_help("If set, the game's request to page flip will be delayed to vertical retrace, which can eliminate tearline artifacts.\n"
|
||||||
"Note that this is NOT the behavior of actual hardware. This option is provided for the user's preference.");
|
"Note that this is NOT the behavior of actual hardware. This option is provided for the user's preference.");
|
||||||
|
@ -178,7 +178,14 @@ static void pc98_mix_CallBack(Bitu len) {
|
|||||||
static bool pc98fm_init = false;
|
static bool pc98fm_init = false;
|
||||||
|
|
||||||
void PC98_FM_OnEnterPC98(Section *sec) {
|
void PC98_FM_OnEnterPC98(Section *sec) {
|
||||||
|
Section_prop * section=static_cast<Section_prop *>(control->GetSection("dosbox"));
|
||||||
|
|
||||||
if (!pc98fm_init) {
|
if (!pc98fm_init) {
|
||||||
|
std::string board;
|
||||||
|
|
||||||
|
board = section->Get_string("pc-98 fm board");
|
||||||
|
if (board == "off" || board == "false") return;
|
||||||
|
|
||||||
pc98fm_init = true;
|
pc98fm_init = true;
|
||||||
|
|
||||||
unsigned int rate = 44100;
|
unsigned int rate = 44100;
|
||||||
@ -211,7 +218,23 @@ void PC98_FM_OnEnterPC98(Section *sec) {
|
|||||||
pcm86gen_initialize(rate);
|
pcm86gen_initialize(rate);
|
||||||
pcm86gen_setvol(pccore.vol_pcm);
|
pcm86gen_setvol(pccore.vol_pcm);
|
||||||
|
|
||||||
|
if (board == "board86c" || board == "auto") {
|
||||||
|
LOG_MSG("PC-98 FM board is PC-9801-86c");
|
||||||
fmboard_reset(&np2cfg, 0x14);
|
fmboard_reset(&np2cfg, 0x14);
|
||||||
|
}
|
||||||
|
else if (board == "board86") {
|
||||||
|
LOG_MSG("PC-98 FM board is PC-9801-86");
|
||||||
|
fmboard_reset(&np2cfg, 0x04);
|
||||||
|
}
|
||||||
|
else if (board == "board26k") {
|
||||||
|
LOG_MSG("PC-98 FM board is PC-9801-26k");
|
||||||
|
fmboard_reset(&np2cfg, 0x02);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
LOG_MSG("PC-98 FM board is PC-9801-86c");
|
||||||
|
fmboard_reset(&np2cfg, 0x14); // board86c, a good default
|
||||||
|
}
|
||||||
|
|
||||||
fmboard_extenable(true);
|
fmboard_extenable(true);
|
||||||
|
|
||||||
fmboard_bind();
|
fmboard_bind();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user