From a3c64581cf99094fda68e9993ca2aab05f940089 Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Thu, 9 Oct 2025 20:11:38 -0400 Subject: [PATCH] Add 8BitDo vanilla M30 control layout --- src/command.c | 1 + src/k_menudraw.c | 19 +++++++++++-------- src/v_draw.cpp | 3 +++ src/v_draw.hpp | 15 +++++++++++++++ 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/command.c b/src/command.c index 6159fa4dc..d91f4f381 100644 --- a/src/command.c +++ b/src/command.c @@ -113,6 +113,7 @@ CV_PossibleValue_t descriptiveinput_cons_t[] = { {7, "6Bt. (D)"}, {8, "6Bt. (E)"}, {9, "6Bt. (F)"}, + {10, "6Bt. (G)"}, {0, NULL} }; diff --git a/src/k_menudraw.c b/src/k_menudraw.c index 839955d4c..ca23b8cb0 100644 --- a/src/k_menudraw.c +++ b/src/k_menudraw.c @@ -2325,7 +2325,7 @@ static void M_DrawCharSelectCursor(UINT8 num) if (selectframesb[(setup_animcounter-1) % SELECTLEN] != NULL) V_DrawMappedPatch(x, y, V_TRANSLUCENT, W_CachePatchName(selectframesb[(setup_animcounter-1) % SELECTLEN], PU_CACHE), colormap); } - + } else { @@ -5670,22 +5670,25 @@ void M_DrawProfileControls(void) help = va("6Bt. (Auto): Tries to guess your 6-button pad's layout."); break; case 4: - help = va("6Bt. (A): Saturn buttons, Retro-Bit Wired DInput layout."); + help = va("6Bt. (A): Saturn (Retro-Bit Wired DInput) - C/Z = RB/RT"); break; case 5: - help = va("6Bt. (B): Saturn buttons, Retro-Bit Wireless DInput layout."); + help = va("6Bt. (B): Saturn (Retro-Bit Wireless DInput) - C/Z = LB/RB"); break; case 6: - help = va("6Bt. (C): Saturn buttons, Retro-Bit XInput layout."); + help = va("6Bt. (C): Saturn (Retro-Bit XInput) - C/Z = RT/LT"); break; case 7: - help = va("6Bt. (D): Saturn buttons, arcade/8BitDo layout. (C/Z = RT/RB)"); + help = va("6Bt. (D): Saturn (arcade / 8BitDo) - C/Z = RT/RB"); break; case 8: - help = va("6Bt. (E): Saturn buttons, Hori/M30X layout. (LB/LT = LS/RS)"); + help = va("6Bt. (E): Saturn (Hori/M30X) - C/Z = RT/RB, LB/LT = LS/RS"); break; case 9: - help = va("6Bt. (F): Saturn buttons, Mayflash layout. (C/Z = RS/LS)"); + help = va("6Bt. (F): Saturn (Mayflash) - C/Z = RS/LS"); + break; + case 10: + help = va("6Bt. (G): Saturn (orig M30) - C/Z = RB/LB"); break; } @@ -6102,7 +6105,7 @@ static char *M_GetGameplayMode(void) return va("Intense"); return va("Relaxed"); } - + if (franticitems) { if (cv_4thgear.value) diff --git a/src/v_draw.cpp b/src/v_draw.cpp index be32bc445..2864579b1 100644 --- a/src/v_draw.cpp +++ b/src/v_draw.cpp @@ -266,6 +266,9 @@ Draw::TextElement& Draw::TextElement::parse(std::string_view raw) case 9: padconfig = saturntypeF; break; + case 10: + padconfig = saturntypeG; + break; } if (auto pretty = prettyinputs.find(bind); pretty != prettyinputs.end()) // Gamepad direction or keyboard arrow, use something nice-looking diff --git a/src/v_draw.hpp b/src/v_draw.hpp index 8875fe95a..d2ee9bb48 100644 --- a/src/v_draw.hpp +++ b/src/v_draw.hpp @@ -201,6 +201,21 @@ static const srb2::HashMap saturntypeF = { {nc_back, gb_back}, }; +// Saturn Type G - 8BitDo M30 (non-Xbox) +// Cannot be disambiguated. +static const srb2::HashMap saturntypeG = { + {nc_a, sb_a}, + {nc_b, sb_b}, + {nc_x, sb_x}, + {nc_y, sb_y}, + {nc_rt, gb_rt}, + {nc_lt, gb_lt}, + {nc_lb, sb_z}, + {nc_rb, sb_c}, + {nc_start, gb_start}, + {nc_back, gb_back}, +}; + namespace srb2 {