keyboard support for totd and luptype

This commit is contained in:
Flyinghead 2020-03-23 14:09:50 +01:00
parent f99d7fa262
commit 39d81923c9
4 changed files with 57 additions and 34 deletions

View File

@ -134,7 +134,8 @@ void mcfg_CreateNAOMIJamma()
{
mcfg_DestroyDevices();
mcfg_Create(MDT_NaomiJamma, 0, 5);
// mcfg_Create(MDT_Keyboard, 2, 5);
if (settings.input.JammaSetup == JVS::Keyboard)
mcfg_Create(MDT_Keyboard, 2, 5);
}
void mcfg_CreateAtomisWaveControllers()
@ -152,20 +153,20 @@ void mcfg_CreateAtomisWaveControllers()
// Faster Than Speed needs 1 std controller on port 0 (digital inputs) and one on port 2 (analog axes)
// Maximum Speed same
}
else if (settings.input.JammaSetup == 1)
else if (settings.input.JammaSetup == JVS::FourPlayers)
{
// 4 players
mcfg_Create(MDT_SegaController, 2, 5);
mcfg_Create(MDT_SegaController, 3, 5);
}
else if (settings.input.JammaSetup == 5)
else if (settings.input.JammaSetup == JVS::LightGun)
{
// Clay Challenge needs 2 std controllers on port 0 & 1 (digital in) and light guns on port 2 & 3
// Sports Shooting same
mcfg_Create(MDT_LightGun, 2, 5, 0);
mcfg_Create(MDT_LightGun, 3, 5, 1);
}
else if (settings.input.JammaSetup == 3)
else if (settings.input.JammaSetup == JVS::SegaMarineFishing)
{
// Sega Bass Fishing Challenge needs a mouse (track-ball) on port 2
mcfg_Create(MDT_Mouse, 2, 5, 0);

View File

@ -1817,47 +1817,48 @@ struct maple_naomi_jamma : maple_sega_controller
{
switch (settings.input.JammaSetup)
{
case 0:
case JVS::Default:
default:
io_boards.emplace_back(new jvs_837_13551(1, this));
break;
case 1:
case JVS::FourPlayers:
io_boards.emplace_back(new jvs_837_13551_4P(1, this));
break;
case 2:
case JVS::RotaryEncoders:
io_boards.emplace_back(new jvs_837_13938(1, this));
io_boards.emplace_back(new jvs_837_13551(2, this));
break;
case 3: // Sega Marine Fishing
case JVS::SegaMarineFishing:
io_boards.emplace_back(new jvs_837_13844(1, this));
break;
case 4:
case JVS::DualIOBoards4P:
io_boards.emplace_back(new jvs_837_13551(1, this));
io_boards.emplace_back(new jvs_837_13551(2, this, 2));
break;
case 5: // Ninja Assault
case JVS::LightGun:
io_boards.emplace_back(new jvs_namco_jyu(1, this));
break;
case 6: // Mazan
case JVS::Mazan:
io_boards.emplace_back(new jvs_namco_fcb(1, this));
io_boards.emplace_back(new jvs_namco_fcb(2, this));
break;
case 7: // Gun Survivor
case JVS::GunSurvivor:
io_boards.emplace_back(new jvs_namco_fca(1, this));
break;
case 8: // Dog Walking
case JVS::DogWalking:
io_boards.emplace_back(new jvs_837_13844_encoders(1, this));
break;
case 9: // Touch de Uno
case JVS::TouchDeUno:
io_boards.emplace_back(new jvs_837_13844_touch(1, this));
break;
case 10: // World Kicks
case JVS::WorldKicks:
io_boards.emplace_back(new jvs_namco_v226(1, this));
break;
case 11: // World Kicks PCB
case JVS::WorldKicksPCB:
io_boards.emplace_back(new jvs_namco_v226_pcb(1, this));
break;
}
if (settings.input.JammaSetup != 6)
if (settings.input.JammaSetup != JVS::Mazan)
for (int bus = 0; bus < MAPLE_PORTS; ++bus)
if ((MapleDeviceType)settings.input.maple_devices[bus] == MDT_LightGun)
{

View File

@ -375,24 +375,24 @@ void LoadSpecialSettings()
|| !strcmp("BASS FISHING SIMULATOR VER.A", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling JVS rotary encoders for game %s", naomi_game_id);
settings.input.JammaSetup = 2;
settings.input.JammaSetup = JVS::RotaryEncoders;
}
else if (!strcmp("POWER STONE 2 JAPAN", naomi_game_id) // Naomi
|| !strcmp("GUILTY GEAR isuka", naomi_game_id)) // AW
{
INFO_LOG(BOOT, "Enabling 4-player setup for game %s", naomi_game_id);
settings.input.JammaSetup = 1;
settings.input.JammaSetup = JVS::FourPlayers;
}
else if (!strcmp("SEGA MARINE FISHING JAPAN", naomi_game_id)
|| !strcmp(naomi_game_id, "BASS FISHING SIMULATOR VER.A")) // AW
{
INFO_LOG(BOOT, "Enabling specific JVS setup for game %s", naomi_game_id);
settings.input.JammaSetup = 3;
settings.input.JammaSetup = JVS::SegaMarineFishing;
}
else if (!strcmp("RINGOUT 4X4 JAPAN", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling specific JVS setup for game %s", naomi_game_id);
settings.input.JammaSetup = 4;
settings.input.JammaSetup = JVS::DualIOBoards4P;
}
else if (!strcmp("NINJA ASSAULT", naomi_game_id)
|| !strcmp(naomi_game_id, "Sports Shooting USA") // AW
@ -401,27 +401,33 @@ void LoadSpecialSettings()
|| !strcmp(naomi_game_id, "EXTREME HUNTING")) // AW
{
INFO_LOG(BOOT, "Enabling lightgun setup for game %s", naomi_game_id);
settings.input.JammaSetup = 5;
settings.input.JammaSetup = JVS::LightGun;
}
else if (!strcmp("MAZAN", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling specific JVS setup for game %s", naomi_game_id);
settings.input.JammaSetup = 6;
settings.input.JammaSetup = JVS::Mazan;
}
else if (!strcmp(" BIOHAZARD GUN SURVIVOR2", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling specific JVS setup for game %s", naomi_game_id);
settings.input.JammaSetup = 7;
settings.input.JammaSetup = JVS::GunSurvivor;
}
else if (!strcmp("WORLD KICKS", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling specific JVS setup for game %s", naomi_game_id);
settings.input.JammaSetup = 10;
settings.input.JammaSetup = JVS::WorldKicks;
}
else if (!strcmp("WORLD KICKS PCB", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling specific JVS setup for game %s", naomi_game_id);
settings.input.JammaSetup = 11;
settings.input.JammaSetup = JVS::WorldKicksPCB;
}
else if (!strcmp("THE TYPING OF THE DEAD", naomi_game_id)
|| !strcmp(" LUPIN THE THIRD -THE TYPING-", naomi_game_id))
{
INFO_LOG(BOOT, "Enabling keyboard for game %s", naomi_game_id);
settings.input.JammaSetup = JVS::Keyboard;
}
if (!strcmp("COSMIC SMASH IN JAPAN", naomi_game_id))
{
@ -806,7 +812,7 @@ void InitSettings()
settings.validate.OpenGlChecks = false;
settings.input.MouseSensitivity = 100;
settings.input.JammaSetup = 0;
settings.input.JammaSetup = JVS::Default;
settings.input.VirtualGamepadVibration = 20;
for (int i = 0; i < MAPLE_PORTS; i++)
{
@ -905,7 +911,7 @@ void LoadSettings(bool game_specific)
settings.validate.OpenGlChecks = cfgLoadBool(game_specific ? cfgGetGameId() : "validate", "OpenGlChecks", settings.validate.OpenGlChecks);
settings.input.MouseSensitivity = cfgLoadInt(input_section, "MouseSensitivity", settings.input.MouseSensitivity);
settings.input.JammaSetup = cfgLoadInt(input_section, "JammaSetup", settings.input.JammaSetup);
settings.input.JammaSetup = (JVS)cfgLoadInt(input_section, "JammaSetup", (int)settings.input.JammaSetup);
settings.input.VirtualGamepadVibration = cfgLoadInt(input_section, "VirtualGamepadVibration", settings.input.VirtualGamepadVibration);
for (int i = 0; i < MAPLE_PORTS; i++)
{

View File

@ -377,6 +377,22 @@ struct RegisterStruct
}
};
enum class JVS {
Default,
FourPlayers,
RotaryEncoders,
SegaMarineFishing,
DualIOBoards4P,
LightGun,
Mazan,
GunSurvivor,
DogWalking,
TouchDeUno,
WorldKicks,
WorldKicksPCB,
Keyboard
};
struct settings_t
{
struct {
@ -513,8 +529,7 @@ struct settings_t
struct {
u32 MouseSensitivity;
u32 JammaSetup; // 0: standard, 1: 4-players, 2: rotary encoders, 3: Sega Marine Fishing,
// 4: dual I/O boards (4P), 5: Namco JYU board (Ninja Assault)
JVS JammaSetup;
int maple_devices[4];
int maple_expansion_devices[4][2];
int VirtualGamepadVibration;
@ -595,12 +610,12 @@ u32 libExtDevice_ReadMem_A0_006(u32 addr,u32 size);
void libExtDevice_WriteMem_A0_006(u32 addr,u32 data,u32 size);
//Area 0 , 0x01000000- 0x01FFFFFF [Ext. Device]
static u32 libExtDevice_ReadMem_A0_010(u32 addr,u32 size) { return 0; }
static void libExtDevice_WriteMem_A0_010(u32 addr,u32 data,u32 size) { }
static inline u32 libExtDevice_ReadMem_A0_010(u32 addr,u32 size) { return 0; }
static inline void libExtDevice_WriteMem_A0_010(u32 addr,u32 data,u32 size) { }
//Area 5
static u32 libExtDevice_ReadMem_A5(u32 addr,u32 size){ return 0; }
static void libExtDevice_WriteMem_A5(u32 addr,u32 data,u32 size) { }
static inline u32 libExtDevice_ReadMem_A5(u32 addr,u32 size){ return 0; }
static inline void libExtDevice_WriteMem_A5(u32 addr,u32 data,u32 size) { }
//ARM
s32 libARM_Init();