diff --git a/core/hw/maple/maple_cfg.cpp b/core/hw/maple/maple_cfg.cpp index b1a50528a..4a5160177 100644 --- a/core/hw/maple/maple_cfg.cpp +++ b/core/hw/maple/maple_cfg.cpp @@ -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); diff --git a/core/hw/maple/maple_devs.cpp b/core/hw/maple/maple_devs.cpp index 30c7e536c..54c844684 100755 --- a/core/hw/maple/maple_devs.cpp +++ b/core/hw/maple/maple_devs.cpp @@ -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; diff --git a/core/nullDC.cpp b/core/nullDC.cpp index 6ee77fa30..7dff8873b 100755 --- a/core/nullDC.cpp +++ b/core/nullDC.cpp @@ -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); diff --git a/core/types.h b/core/types.h index ff4739873..360d8eb33 100644 --- a/core/types.h +++ b/core/types.h @@ -390,7 +390,8 @@ enum class JVS { TouchDeUno, WorldKicks, WorldKicksPCB, - Keyboard + Keyboard, + OutTrigger }; struct settings_t