naom: VMU support (vonot, sf3zu). Fix otrigger inputs.

This commit is contained in:
Flyinghead 2020-03-23 17:48:43 +01:00
parent c5b56b874c
commit 09c439bbe8
4 changed files with 31 additions and 6 deletions

View File

@ -135,7 +135,13 @@ void mcfg_CreateNAOMIJamma()
mcfg_DestroyDevices();
mcfg_Create(MDT_NaomiJamma, 0, 5);
if (settings.input.JammaSetup == JVS::Keyboard)
mcfg_Create(MDT_Keyboard, 2, 5);
mcfg_Create(MDT_Keyboard, 1, 5);
else
{
// Connect VMU B1
mcfg_Create(MDT_SegaController, 1, 5);
mcfg_Create(MDT_SegaVMU, 1, 0);
}
}
void mcfg_CreateAtomisWaveControllers()
@ -166,7 +172,7 @@ void mcfg_CreateAtomisWaveControllers()
mcfg_Create(MDT_LightGun, 2, 5, 0);
mcfg_Create(MDT_LightGun, 3, 5, 1);
}
else if (settings.input.JammaSetup == JVS::SegaMarineFishing)
else if (settings.input.JammaSetup == JVS::SegaMarineFishing || settings.input.JammaSetup == JVS::RotaryEncoders)
{
// Sega Bass Fishing Challenge needs a mouse (track-ball) on port 2
mcfg_Create(MDT_Mouse, 2, 5, 0);

View File

@ -1518,6 +1518,16 @@ protected:
};
class jvs_837_13551_noanalog : public jvs_837_13551
{
public:
jvs_837_13551_noanalog(u8 node_id, maple_naomi_jamma *parent, int first_player = 0)
: jvs_837_13551(node_id, parent, first_player)
{
analog_count = 0;
}
};
// Same in 4-player mode
class jvs_837_13551_4P : public jvs_837_13551
{
@ -1828,6 +1838,10 @@ struct maple_naomi_jamma : maple_sega_controller
io_boards.emplace_back(new jvs_837_13938(1, this));
io_boards.emplace_back(new jvs_837_13551(2, this));
break;
case JVS::OutTrigger:
io_boards.emplace_back(new jvs_837_13938(1, this));
io_boards.emplace_back(new jvs_837_13551_noanalog(2, this));
break;
case JVS::SegaMarineFishing:
io_boards.emplace_back(new jvs_837_13844(1, this));
break;

View File

@ -367,12 +367,10 @@ void LoadSpecialSettings()
if (!strcmp("DYNAMIC GOLF", naomi_game_id)
|| !strcmp("SHOOTOUT POOL", naomi_game_id)
|| !strcmp("SHOOTOUT POOL MEDAL", naomi_game_id)
|| !strcmp("OUTTRIGGER JAPAN", naomi_game_id)
|| !strcmp("CRACKIN'DJ ver JAPAN", naomi_game_id)
|| !strcmp("CRACKIN'DJ PART2 ver JAPAN", naomi_game_id)
|| !strcmp("KICK '4' CASH", naomi_game_id)
|| !strcmp("DRIVE", naomi_game_id) // Waiwai drive
|| !strcmp("BASS FISHING SIMULATOR VER.A", naomi_game_id))
|| !strcmp("DRIVE", naomi_game_id)) // Waiwai drive
{
INFO_LOG(BOOT, "Enabling JVS rotary encoders for game %s", naomi_game_id);
settings.input.JammaSetup = JVS::RotaryEncoders;
@ -429,6 +427,12 @@ void LoadSpecialSettings()
INFO_LOG(BOOT, "Enabling keyboard for game %s", naomi_game_id);
settings.input.JammaSetup = JVS::Keyboard;
}
else if (!strcmp("OUTTRIGGER JAPAN", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling JVS rotary encoders for game %s", naomi_game_id);
settings.input.JammaSetup = JVS::OutTrigger;
}
if (!strcmp("COSMIC SMASH IN JAPAN", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling translucent depth multipass for game %s", naomi_game_id);

View File

@ -390,7 +390,8 @@ enum class JVS {
TouchDeUno,
WorldKicks,
WorldKicksPCB,
Keyboard
Keyboard,
OutTrigger
};
struct settings_t