Releases: shaddatic/sa2b-input-controls
Releases · shaddatic/sa2b-input-controls
Input Controls v1.0.0.1
Hotfix release to fix a small vDreamcast controller calculation oversight, and refresh SDL2 library version
Changes
- Updated SDL2 library to 2.30.6
Fixes
- Fixed a small calculation oversight when calculating vDreamcast analog stick values, causing exact axis input on the vDreamcast controller to be nearly impossible
SA2 Input Controls v1.0
The initial release!
At long last SA2 has an input mod of it's own! And it brings with it many long deserved features, enhancements, and most importantly bug fixes. This mod has everything from SDL2 to... restoring the Dreamcast analog bug (?). Well, I guess you can't say the first release isn't packed with features haha! But, I've already taken up too much of your time. So please, read through the feature list and enjoy SA2 Input Controls!
Features
Core Features
- Switches the game over to
SDL2
, allowing for basically any gamepad to work as-is! - Configurable Gamepad settings through
SDL
controller mappings! - All-new Gamepad input code!
- Industry standard 'Scaled Radial Deadzone', called 'Circular' in-mod, which allows for extremely fine and responsive analog controls!
- More traditional 'Axial Deadzone', called 'Square' in-mod, which allows for easier exact cardinal movement at the cost of finer control
- Inner deadzone size settings, and hidden outer deadzone settings (by modifying
config.ini
)! - Vibration intensity settings
- Extended virtual Dreamcast controller button support:
C
, which is mapped toLB
/L1
/ZL
(XB/PS/GC)D
, which is mapped toRB
/R1
/ZR
orZ
(XB/PS/GC)Z
, which is mapped toBack
/Select
orShare
(XB/PS)
- All-new Keyboard input code!
- Keyboard controls are now set inside Input Controls' config menu
- Keyboard settings are now based on a controller, and not weird colors (?)
- Buttons/Analogs that before weren't configurable now are!
- D-pad buttons
- Right analog stick
Back
/Select
button- Shoulder buttons
- Analog stick buttonms
- All-new Mouse input code!
- Analog emulation, allowing the mouse to emulate an analog stick!
- Mouse Movement: use the raw mouse movement as an analog value
- Click & Drag: click & drag a virtual analog stick
- On-screen visualizer, for visual feedback!
- Arrow: an arrow points in the direction of analog input, and slowly fills with color to represent magnitude
- Point: a point tethered to the center of the screen gives you exact analog positioning, and turns red when the analog stick is fully 'pushed'
- Analog emulation, allowing the mouse to emulate an analog stick!
- Enhanced input code!
- Game can now optionally read the raw analog values directly from the controller, allowing for significantly finer control than the virtual Dreamcast controller can provide!
- Camera is now equiped with analog controls, just like on GameCube! But can now additionally read the right analog stick
- Right stick camera input can now be flipped to better match other games
- Debug settings
- Gamepad print axis: for testing deadzone settings!
X
andY
are the analog coordinates,M
is the magnitude of the analog input - Keyboard print key: for getting the key index of a pressed key in the case it's not labled in the config menu! (by modifiying
config.ini
)
- Gamepad print axis: for testing deadzone settings!
Input Controls API
- Config API
- For reading the mod's user-config file directly
- Feature API
- For checking the on-state of Input Controls features
- User API
- For getting raw input from the user (Gamepad+Keyboard), and for getting their gamepad and keyboard index settings
- Gamepad API
- For reading directly from the gamepad, checking validity, and sending force feedback messages
- Keyboard API
- For getting key input from the keyboard with 'Down', 'Press', 'Release' functions
- Mouse API
- For getting raw input from the mouse, including buttons, wheel input X and Y, mouse vector and mouse position on the game window surface
- Window API
- For registering window message handlers and translating window surface coordinates to the game's internal 640x480 screen coordinates
- SDL API
- For registering SDL_Event handlers, and getting DLL exports from the mounted library
Changes From Vanilla
- Virtual Dreamcast Controller
- Analog stick value ranges are now
-128
to128
- Opposing Dpad directions cancel each other out
PDD_DGT_TR
/L
now turn on and turn off at different values, which matches Dreamcast
- Analog stick value ranges are now
- Gamepad Controls
- The right analog stick no longer sets the L/R trigger analog values too, the two are now wholly seperate
- Keyboard Controls
- The left analog stick directions and d-pad buttons no longer map to the same keys at all times
- The L/R trigger keys no longer just set the
PDD_DGT_TR
/L
button flags, they now also correctly set the L/R analog values too
Bug Fixes
- Fixed the hyper sensitive analog movement. This was caused by a division bug introduced in the GameCube version
- This also fixed rail grinding being very hard to perform, a major complaint about the game
- Fixed the "8 directional analog movement". It never actually was, it was always fully analog, but poor deadzone code added in the HD releases mixed with the deadzone code left from the GameCube version led to very "sticky" directional movement
- Fixed cart controls being stiffer by about 12%. The HD releases broke the virtual Dreamcast controller's analog range (
-128~128
to-225~224
) and this caused the carts to turn much more than intended. SoC (the HD dev)'s solution was to divide all cart input by2
. But, since225
isn't double128
, it caused the carts to turn less than intended. If you struggled with those cart missions, now you can say it wasn't you; it was the game!