{"id":19649181,"url":"https://github.com/xan1242/nfsu-xtendedinput","last_synced_at":"2025-04-28T16:30:34.366Z","repository":{"id":40676098,"uuid":"477160953","full_name":"xan1242/NFSU-XtendedInput","owner":"xan1242","description":"NFS Underground \u0026 Underground 2 - XInput Plugin","archived":false,"fork":false,"pushed_at":"2024-01-16T13:39:21.000Z","size":121,"stargazers_count":104,"open_issues_count":25,"forks_count":8,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-05T09:34:07.226Z","etag":null,"topics":["game-controller","game-input","game-mod","need-for-speed","nfs-underground","nfs-underground-2","xinput"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xan1242.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-02T20:12:00.000Z","updated_at":"2025-03-05T23:52:49.000Z","dependencies_parsed_at":"2023-02-09T23:00:24.420Z","dependency_job_id":null,"html_url":"https://github.com/xan1242/NFSU-XtendedInput","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FNFSU-XtendedInput","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FNFSU-XtendedInput/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FNFSU-XtendedInput/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xan1242%2FNFSU-XtendedInput/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xan1242","download_url":"https://codeload.github.com/xan1242/NFSU-XtendedInput/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251345745,"owners_count":21574767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-controller","game-input","game-mod","need-for-speed","nfs-underground","nfs-underground-2","xinput"],"created_at":"2024-11-11T14:51:58.307Z","updated_at":"2025-04-28T16:30:33.762Z","avatar_url":"https://github.com/xan1242.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Need for Speed Underground \u0026 Underground 2 - Xtended Input\n\nThis is a plugin for NFS Underground \u0026 Underground 2 which brings XInput support to the games!\n\nCurrently a work in progress, but fully usable and playable!\n\nFor the newer NFS titles by Black Box, check out [NFS_XtendedInput](https://github.com/xan1242/NFS-XtendedInput)\n\n## Features\n\n- Automatic texture and text swapping for button icons - dynamically detects when you use either a keyboard or a controller (Disable Widescreen Fix's button icons to see the effect)\n\n- Choice between Xbox and PS4 icons (from WS Fix)\n\n- Player 2 controls restored\n\n- Console control feature parity (except rumble): restored debug camera analog control\n\n- Access to some leftover features from Hot Pursuit 2\n\n- Re-done keyboard input code - not using DInput8 anymore. Now talks directly over Win32 (GetAsyncKeyState, GetKeyboardState or raw input)\n\n- (UG2 only) Re-done mouse input - also using Win32 for mouse input (with auto hiding after 5 seconds)\n\n## Button mappings\n\nYou may remap the buttons in the configuration file (NFSU_XtendedInput.ini), however as of now there is 1 limitation: you may only assign 1 button to an event. Refer to the EventReference.txt file to see what's available.\n\n### About in-game controller settings menu (UG1 only)\n\nYou can also remap the buttons via the in-game settings menu. Keep in mind that you'll only be able to remap the buttons visible in that menu (you will not be able to remap FE events).\n\nIt does NOT block duplicate mappings, so you *can bind multiple actions to 1 button*.\n\nFor keyboards: only the Primary map is bindable and supported. This is subject to change in the future when secondary maps become possible.\n\nFor controllers: you may also bind only Primary maps, except for: Steering, Throttle and Brake. Secondary maps for those actions are their digital counterparts exclusively, so they will only respond to buttons. Primary maps for those actions are exclusively analog, so they will only map to analog axis.\n\nTo unbind any button: activate an action for rebinding and then press F5. As F5 is the \"unbind\" button, it is not bindable via the game unto itself. If you wish to bind it, you must edit the configuration file manually.\n\nAny changes made in this menu will be saved to the configuration file.\n\nDefault controller button mappings are:\n\n### Ingame\n\n- Throttle: Right Trigger\n\n- Brake: Left Trigger\n\n- Steering: Left Stick X axis\n\n- E-Brake: A button\n\n- NOS: B button\n\n- Look back: X button\n\n- Change camera: Y button\n\n- Shift up/down: Right Stick Y axis up/down\n\n- Pause/Unpause: Menu/Start\n\n- Quit game: Windows/Back button\n\n- Car honk (missing playback code): Left Stick (L3)\n\nUnderground only:\n\n- Cycle HUD: D-Pad Up\n\n- Zone Slowmo (HP2): D-Pad Down\n\n- Zone Freeze (HP2): Left shoulder (L1)\n\n- Zone Preview (HP2): Right shoulder (R1)\n\nUnderground 2 only:\n\n- SMS/Map/Status/Engage Event: D-Pad\n\n- Car Hydraulics activate: Left Stick click (L3)\n\n- Car Hydraulics control: Right Stick X/Y\n\n- Car Bounce activate: Right Stick click (R3)\n\n- Car Bounce control: Left Stick X/Y\n\n### FrontEnd\n\nPlease note that some menus may not advertise their functions properly, but they should be fully functional and controllable like in the console versions.\n\n- Navigation: D-Pad \u0026 Left Analog Stick\n\n- Accept: A button\n\n- Back: B button\n\n- Left shoulder \u0026 Right shoulder buttons: mapped to their respective equivalents\n\n- L2: Left Trigger\n\n- R2: Right Trigger\n\n- Car orbit: Right Stick\n\n- Button 0: Y\n\n- Button 1: X (used for accessing submenus)\n\n- Help: Right Stick (R3)\n\n- Quit game: Windows/Back button\n\n### Debug camera\n\nYou must use a controller on the second port to invoke it and use it\n\n- Activation: Windows/Back\n\n- Move forward: A button\n\n- Move backward: Y button\n\n- Move left: X button\n\n- Move right: B button\n\n- Move up: Left Shoulder\n\n- Move down: Left Trigger\n\n- Look up/down/left/right: D-Pad\n\n- Turbo: Right Shoulder\n\n- Super Turbo: Right Trigger\n\n- Movement (analog): Left Stick X/Y\n\n- Look (analog): Right stick X/Y\n\n- Drop car: Start\n\n## Keyboard controls\n\nThey're slightly changed from default.\n\nAlso the second player can be controlled with another keyboard (raw input mode only).\n\nThe first used keyboard will be assigned to the first player (and subsequently the second one to the second player)\n\nBy default it'll use GetAsyncKeyState (unbuffered) to read keys which might cause some issues with other hooks to the WndProc of this game, but will deliver the most optimal performance. A key's status is being read as it's being scanned in this mode.\n\nSecond mode is GetKeyboardState (buffered). This will store all keys in a buffer and read them during ActualReadJoystickData (which starts right before eDisplayFrame). Use this if you have some issues.\n\nThird mode is raw input reading. This is read during WM_INPUT. It currently exhibits mediocre performance due to the implementation, but allows for differentiating between different keyboards. Use this if you really need it.\n\n### Ingame\n\n- Throttle: Up\n\n- Brake: Down\n\n- Steering: Left/Right\n\n- E-Brake: Space\n\n- NOS: Left Alt\n\n- Look back: X\n\n- Change camera: C\n\n- Shift up/down: Right Shift / Right Control\n\n- Pause: Escape\n\n- Quit game: Q\n\n- Car honk (missing playback code): H\n\nUnderground only:\n\n- Zone Freeze (HP2): Page Down\n\n- Zone Preview (HP2): Delete\n\nUnderground 2:\n\n- SMS: Tab\n\n- Map: M\n\n- Career progress: 1\n\n- Engage event: Enter\n\n### FrontEnd\n\n- Navigation: Navigation keys (U/D/L/R)\n\n- Accept: Enter\n\n- Back: Escape\n\n- Left shoulder \u0026 Right shoulder buttons: 9 \u0026 0\n\n- L2: O\n\n- R2: P\n\n- Car orbit: WASD\n\n- Button 0: G\n\n- Button 1: F (used for accessing submenus)\n\n- Help: H\n\n- Quit game: Q\n\n### Debug camera\n\n- Activation (UG1): M\n\n- Activation (UG2): Backspace\n\n- Move forward: W\n\n- Move backward: S\n\n- Move left: A\n\n- Move right: D\n\n- Move up: Space\n\n- Move down: Left Control\n\n- Look up: I\n\n- Look down: K\n\n- Look left: J\n\n- Look right: L\n\n- Turbo: Right Shift\n\n- Super Turbo: F\n\n- Drop car: 5\n\n## Windows 7 compatibility\n\nTo use in Windows 7 (and maybe Vista \u0026 XP), you need to use the \"Win7\" builds.\n\nRequirements are:\n\n- [Xbox 360 Controller Driver](https://archive.org/details/xbox-360-64-engwin-7)\n\n- [DirectX Runtime](https://www.microsoft.com/en-us/download/details.aspx?id=8109) (for XInput 9.1.0)\n\n- [Visual C++ Redistributable](https://aka.ms/vs/17/release/vc_redist.x86.exe) (2019 is used by ASI Loader, 2015 is used by XtendedInput, both are included in the installation package)\n\nThis was tested on a Pentium 3 machine running Windows 7 and it is fully working.\n\nThese builds are made with SSE instructions enabled (and other extensions disabled), so it should also work on Athlon XP as well.\n\nThe release package comes with a special build of ASI loader which is made without any CPU extensions required. It is also patched to work in Windows XP.\n\nThese builds may or may not work in Windows XP with some hacks, YMMV as it wasn't tested. Follow the instructions found [here](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) to find out more. TLDR: \"The last version of the Visual C++ Redistributable that works on Windows XP shipped in Visual Studio 2019 version 16.7 (file versions starting with **14.27**).\"\n\n## TODO list:\n\n- Check the top of the source file\n\n- Currently KILLS Direct Input, beware\n\n# Credits\n\n- ThirteenAG \u0026 AeroWidescreen - for the great button icons!\n\n- LINK/2012 - injector\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxan1242%2Fnfsu-xtendedinput","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxan1242%2Fnfsu-xtendedinput","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxan1242%2Fnfsu-xtendedinput/lists"}