Files
sgiannop 106c62ecb6 input: make KEY_* mappings work
No keyboard mapping has ever worked in this core. CInputSystem strips
the KEY_ prefix before calling GetKeyIndex(), so the core received
"D" while its table compared "KEY_D", and every KEY_* entry in
Supermodel.ini was ignored. The keyboard only worked through
RetroArch's keyboard-to-RetroPad binds.

GetKeyIndex() now covers every key name Supermodel accepts (as in the
SDL build, the generic SHIFT, CTRL and ALT have no single libretro key
and stay unmapped). It returns the key's position in the table rather
than a RETROK code, because CInputSystem uses the value to index its
key source arrays; IsKeyPressed() and GetKeyName() translate it back.

The default mappings keep the keys that cannot clash with RetroArch's
default binds: 1-8 (start, coin, service, test) and the arrow keys,
which only repeat what the D-pad already does. The letter keys and
Space are dropped. With RetroArch's default binds they would have fired
together with the pad buttons the same keys are bound to (in Virtua
Fighter 3, A would press Punch and Guard together), and F is
RetroArch's fullscreen hotkey. Players keep today's behaviour, and
KEY_* entries added to Supermodel.ini now work. The bundled
Supermodel.ini is regenerated to match.

Tested: Virtua Fighter 3 with RetroArch's default keyboard binds: 3
inserts a coin and 1 starts, arrows move, z/x/a/s each trigger one
action through the pad binds, d does nothing and f only toggles
fullscreen, 6 enters and leaves the test menu. Star Wars Trilogy, Scud
Race and The Lost World load and run.
2026-11-08 15:25:41 +02:00

300 lines
9.1 KiB
INI

;;
;; Supermodel Configuration File
;; Default settings for Version 0.3a.
;;
;
; Quick Overview
; --------------
;
; All settings are case sensitive. Numbers must be integers. Check your
; spelling carefully because invalid settings are silently ignored. To verify
; that your settings are being parsed correctly, check the contents of
; error.log.
;
; Global options apply to all games. To create configuration profiles for
; individual games, place settings under sections with the same name as the
; corresponding MAME ROM set, like so:
;
; ; Scud Race
; [ scud ]
;
; SoundVolume = 50
; MusicVolume = 200
; ; ... etc. ...
;
; Input mappings are an exceptional case: they are only allowed in the global
; section. Per-game input mappings are not supported.
;
; For a list of all valid settings, please consult README.txt. Only default
; inputs are assigned here.
;
[ Global ] ; Input settings can only be read from the global section!
; Global Settings
GameXMLFile = Config/Games.xml
InitStateFile =
PowerPCFrequency = 0
MultiThreaded = 1
GPUMultiThreaded = 1
MultiTexture = 0
VertexShader =
FragmentShader =
EmulateSound = 1
EmulateDSB = 1
SoundVolume = 100
MusicVolume = 100
SoundFreq = 57.5242
LegacySoundDSP = 0
Balance = 0
BalanceLeftRight = 0
BalanceFrontRear = 0
NbSoundChannels = 4
; Video/Display Settings
New3DEngine = 1
QuadRendering = 0
XResolution = 1924
YResolution = 768
FullScreen = 0
BorderlessWindow = 0
Supersampling = 1
CRTcolors = 0
UpscaleMode = 2
WideScreen = 0
Stretch = 0
WideBackground = 0
VSync = 1
Throttle = 1
RefreshRate = 60
ShowFrameRate = 0
Crosshairs = 0
CrosshairStyle = vector
NoWhiteFlash = 0
FlipStereo = 0
; Input Settings
InputSystem = libretro
InputDigitalSensitivity = 25
InputDigitalDecaySpeed = 50
InputMouseXDeadZone = 0
InputMouseYDeadZone = 0
InputMouseZDeadZone = 0
; Common
InputStart1 = "KEY_1,JOY1_BUTTON9"
InputStart2 = "KEY_2,JOY2_BUTTON9"
InputCoin1 = "KEY_3,JOY1_BUTTON10"
InputCoin2 = "KEY_4,JOY2_BUTTON10"
InputServiceA = "KEY_5,JOY1_BUTTON21" ; Changed from BUTTON5 to BUTTON21
InputServiceB = "KEY_7,JOY1_BUTTON23" ; Changed from BUTTON7 to BUTTON23
InputTestA = "KEY_6,JOY1_BUTTON22" ; Changed from BUTTON6 to BUTTON22
InputTestB = "KEY_8,JOY1_BUTTON24" ; Changed from BUTTON8 to BUTTON24
; 4-way digital joysticks
; We map D-Pad to BUTTON11-14 instead of POV UP/DOWN
InputJoyUp = "KEY_UP,JOY1_BUTTON11"
InputJoyDown = "KEY_DOWN,JOY1_BUTTON12"
InputJoyLeft = "KEY_LEFT,JOY1_BUTTON13"
InputJoyRight = "KEY_RIGHT,JOY1_BUTTON14"
; Player 2 (if needed)
InputJoyUp2 = "JOY2_BUTTON11"
InputJoyDown2 = "JOY2_BUTTON12"
InputJoyLeft2 = "JOY2_BUTTON13"
InputJoyRight2 = "JOY2_BUTTON14"
; Fighting game buttons
InputPunch = "JOY1_BUTTON1"
InputKick = "JOY1_BUTTON2"
InputGuard = "JOY1_BUTTON3"
InputEscape = "JOY1_BUTTON4"
InputPunch2 = "JOY2_BUTTON1"
InputKick2 = "JOY2_BUTTON2"
InputGuard2 = "JOY2_BUTTON3"
InputEscape2 = "JOY2_BUTTON4"
; Spikeout buttons
InputShift = "JOY1_BUTTON1"
InputBeat = "JOY1_BUTTON2"
InputCharge = "JOY1_BUTTON3"
InputJump = "JOY1_BUTTON4"
; Virtua Striker buttons
InputShortPass = "JOY1_BUTTON1"
InputLongPass = "JOY1_BUTTON2"
InputShoot = "JOY1_BUTTON3"
InputShortPass2 = "JOY2_BUTTON1"
InputLongPass2 = "JOY2_BUTTON2"
InputShoot2 = "JOY2_BUTTON3"
; Steering wheel
InputSteeringLeft = "KEY_LEFT" ; digital, turn wheel left
InputSteeringRight = "KEY_RIGHT" ; digital, turn wheel right
InputSteering = "JOY1_XAXIS" ; analog, full steering range
; Pedals
InputAccelerator = "KEY_UP,JOY1_UP"
InputBrake = "KEY_DOWN,JOY1_DOWN"
; Up/down shifter manual transmission (all racers)
InputGearShiftUp = "NONE" ; sequential shift up
InputGearShiftDown = "NONE" ; sequential shift down
; 4-Speed manual transmission (Daytona 2, Sega Rally 2, Scud Race)
InputGearShift1 = "JOY1_BUTTON5"
InputGearShift2 = "JOY1_BUTTON6"
InputGearShift3 = "JOY1_BUTTON7"
InputGearShift4 = "JOY1_BUTTON8"
InputGearShiftN = "NONE"
; VR4 view change buttons (Daytona 2, Le Mans 24, Scud Race)
InputVR1 = "JOY1_BUTTON1"
InputVR2 = "JOY1_BUTTON2"
InputVR3 = "JOY1_BUTTON3"
InputVR4 = "JOY1_BUTTON4"
; Single view change button (Dirt Devils, ECA, Harley-Davidson, Sega Rally 2)
InputViewChange = "JOY1_BUTTON1"
; Handbrake (Dirt Devils, Sega Rally 2)
InputHandBrake = "JOY1_BUTTON2"
; Harley-Davidson controls
InputRearBrake = "JOY1_BUTTON2"
InputMusicSelect = "JOY1_BUTTON3"
; Virtual On macros
InputTwinJoyTurnLeft = "JOY1_RXAXIS_NEG"
InputTwinJoyTurnRight = "JOY1_RXAXIS_POS"
InputTwinJoyForward = "KEY_UP"
InputTwinJoyReverse = "KEY_DOWN,JOY1_BUTTON12"
InputTwinJoyStrafeLeft = "KEY_LEFT,JOY1_BUTTON13"
InputTwinJoyStrafeRight = "KEY_RIGHT,JOY1_BUTTON14"
InputTwinJoyJump = "JOY1_BUTTON1"
InputTwinJoyCrouch = "JOY1_BUTTON2"
; Virtual On individual joystick mapping
InputTwinJoyLeft1 = "NONE"
InputTwinJoyLeft2 = "NONE"
InputTwinJoyRight1 = "NONE"
InputTwinJoyRight2 = "NONE"
InputTwinJoyUp1 = "NONE"
InputTwinJoyUp2 = "NONE"
InputTwinJoyDown1 = "NONE"
InputTwinJoyDown2 = "NONE"
; Virtual On buttons
InputTwinJoyShot1 = "JOY1_BUTTON5"
InputTwinJoyShot2 = "JOY1_BUTTON6"
InputTwinJoyTurbo1 = "JOY1_BUTTON7"
InputTwinJoyTurbo2 = "JOY1_BUTTON8"
; Analog joystick (Star Wars Trilogy)
InputAnalogJoyUp = "KEY_UP"
InputAnalogJoyDown = "KEY_DOWN,JOY1_BUTTON12"
InputAnalogJoyLeft = "KEY_LEFT,JOY1_BUTTON13"
InputAnalogJoyRight = "KEY_RIGHT,JOY1_BUTTON14"
InputAnalogJoyX = "MOUSE7_XAXIS" ; analog, full X axis (yoke: mouse or stick)
InputAnalogJoyY = "MOUSE7_YAXIS" ; analog, full Y axis (yoke: mouse or stick)
InputAnalogJoyTrigger = "MOUSE7_LEFT_BUTTON"
InputAnalogJoyEvent = "MOUSE7_RIGHT_BUTTON"
InputAnalogJoyTrigger2 = "MOUSE7_BUTTON4"
InputAnalogJoyEvent2 = "MOUSE7_BUTTON5"
; Light guns (Lost World)
InputGunLeft = "KEY_LEFT" ; digital, move gun left
InputGunRight = "KEY_RIGHT" ; digital, move gun right
InputGunUp = "KEY_UP" ; digital, move gun up
InputGunDown = "KEY_DOWN" ; digital, move gun down
InputGunX = "MOUSE_XAXIS,JOY1_XAXIS" ; analog, full X axis
InputGunY = "MOUSE_YAXIS,JOY1_YAXIS" ; analog, full Y axis
InputTrigger = "JOY1_BUTTON1,MOUSE_LEFT_BUTTON"
InputOffscreen = "JOY1_BUTTON2,MOUSE_RIGHT_BUTTON" ; point off-screen
InputAutoTrigger = 0 ; automatic reload when off-screen
InputGunLeft2 = "NONE"
InputGunRight2 = "NONE"
InputGunUp2 = "NONE"
InputGunDown2 = "NONE"
InputGunX2 = "JOY2_XAXIS"
InputGunY2 = "JOY2_YAXIS"
InputTrigger2 = "JOY2_BUTTON1"
InputOffscreen2 = "JOY2_BUTTON2"
InputAutoTrigger2 = 0
; Analog guns (Ocean Hunter, LA Machineguns)
InputAnalogGunLeft = "KEY_LEFT" ; digital, move gun left
InputAnalogGunRight = "KEY_RIGHT" ; digital, move gun right
InputAnalogGunUp = "KEY_UP" ; digital, move gun up
InputAnalogGunDown = "KEY_DOWN" ; digital, move gun down
InputAnalogGunX = "MOUSE5_XAXIS" ; analog, full X axis (P1 gun cursor)
InputAnalogGunY = "MOUSE5_YAXIS" ; analog, full Y axis (P1 gun cursor)
InputAnalogTriggerLeft = "MOUSE5_LEFT_BUTTON"
InputAnalogTriggerRight = "MOUSE5_RIGHT_BUTTON"
InputAnalogGunLeft2 = "NONE"
InputAnalogGunRight2 = "NONE"
InputAnalogGunUp2 = "NONE"
InputAnalogGunDown2 = "NONE"
InputAnalogGunX2 = "MOUSE6_XAXIS" ; analog, full X axis (P2 gun cursor)
InputAnalogGunY2 = "MOUSE6_YAXIS" ; analog, full Y axis (P2 gun cursor)
InputAnalogTriggerLeft2 = "MOUSE6_LEFT_BUTTON"
InputAnalogTriggerRight2 = "MOUSE6_RIGHT_BUTTON"
; Ski Champ controls
InputSkiLeft = "KEY_LEFT"
InputSkiRight = "KEY_RIGHT"
InputSkiUp = "KEY_UP"
InputSkiDown = "KEY_DOWN"
InputSkiX = "JOY1_XAXIS"
InputSkiY = "JOY1_YAXIS"
InputSkiPollLeft = "JOY1_BUTTON1"
InputSkiPollRight = "JOY1_BUTTON2"
InputSkiSelect1 = "JOY1_BUTTON3"
InputSkiSelect2 = "JOY1_BUTTON4"
InputSkiSelect3 = "JOY1_BUTTON5"
; Magical Truck Adventure controls
InputMagicalLeverUp1 = "KEY_UP"
InputMagicalLeverDown1 = "KEY_DOWN"
InputMagicalLeverUp2 = "NONE"
InputMagicalLeverDown2 = "NONE"
InputMagicalLever1 = "JOY1_YAXIS"
InputMagicalLever2 = "JOY2_YAXIS"
InputMagicalPedal1 = "JOY1_BUTTON1"
InputMagicalPedal2 = "JOY2_BUTTON1"
; Sega Bass Fishing / Get Bass controls
InputFishingRodLeft = "KEY_LEFT"
InputFishingRodRight = "KEY_RIGHT"
InputFishingRodUp = "KEY_UP"
InputFishingRodDown = "KEY_DOWN"
InputFishingStickLeft = "NONE"
InputFishingStickRight = "NONE"
InputFishingStickUp = "NONE"
InputFishingStickDown = "NONE"
InputFishingRodX = "JOY1_XAXIS"
InputFishingRodY = "JOY1_YAXIS"
InputFishingStickX = "JOY1_RXAXIS"
InputFishingStickY = "JOY1_RYAXIS"
InputFishingReel = "JOY1_ZAXIS_POS"
InputFishingCast = "JOY1_BUTTON1"
InputFishingSelect = "JOY1_BUTTON2"
ForceFeedback = 1
SDLConstForceMax = 100
SDLSelfCenterMax = 100
SDLFrictionMax = 100
SDLVibrateMax = 100
Outputs = libretro
; Network board - experimental build for win32 only
EmulateNet = 0
port_in = 1970
port_out = 1971
addr_out = "127.0.0.1"