Skip to content

Commit

Permalink
Merge pull request #11 from OOPMan/issue_7_rename_project_and_add_git…
Browse files Browse the repository at this point in the history
…hub_pages

Issue 7 rename project and add GitHub pages
  • Loading branch information
OOPMan authored Aug 8, 2019
2 parents dcad459 + 12c5e70 commit 7329e1d
Show file tree
Hide file tree
Showing 90 changed files with 445 additions and 123 deletions.
123 changes: 7 additions & 116 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,119 +1,10 @@
# Razer Atrox WinUSB VigEm Feeder
This tool is a simple console application which processes WinUSB input from the **Razer Atrox XBO** controller through
to a VigEm Virtual XB360 gamepad. This allows you to use your **Razer Atrox XBO** in any game that supports a XB360
controller. All 8 face buttons work without any need to install ancient, beta drivers and rewire buttons.
# XBOFS.win
**XBOFS.win** allows you to use your **XBO Fight Stick** controller on Windows without having to install ancient, beta drivers
and rewire buttons

In order to compile this project you will need at least [Microsoft Visual Studio Community 2017](https://visualstudio.microsoft.com)

## Requirements
Compilation is quite simple:

1. Windows 7 or newer
2. **Razer Atrox XBO**


## Installation

1. Head over to https://github.com/ViGEm/ViGEmBus/releases/ and download the latest VigEmBus installer
2. Install **VigEmBus** and reboot
3. Head over to https://zadig.akeo.ie and download **Zadig 2.4**
4. Head over to https://github.com/OOPMan/RazorAtroxWinUSBVigEmFeeder/releases and download the latest versions of

1. ``RazorAtroxWinUSBVigEmFeeder_x64.exe``
2. ``razer_atrox_zadig_preset.cfg``

5. Plug in your **Razer Atrox XBO**
6. Head over to the *RazerAtroxWinUSBVigEmFeeder ZaDig guide* at https://imgur.com/a/F8XqFXx and follow the instructions
there to install a WinUSB driver for your **Razer Atrox XBO**
7. If, for some reason, the ZaDig guide does not work for you, then you will need to do the following:

1. Head over to https://github.com/OOPMan/RazorAtroxWinUSBVigEmFeeder/releases and download
the latest ``Razer.Atrox.WinUSB.Driver.zip``
2. Follow the instructions at http://jbcomp.com/disable-device-driver-signing-in-windows-10/ to disable the
requirement for signed device drivers
3. Extract the contents of the ``Razer.Atrox.WinUSB.Driver.zip`` file somewhere and then open the
``Razer Atrox WinUSB Drivers`` folder that was extracted
4. Right-click on the file ``Razer\_Atrox\_Arcade\_Stick.inf`` and select *Install* from the menu
5. You should get a message stating the driver was installed correctly
8. Run ``RazorAtroxWinUSBVigEmFeeder_x64.exe`` and wait for both status lines to state ``CONNECTED``. You may
see a pop-up notification about a new XB360 controller being detected. This is created by the tool using VigEmBus
and is a virtual controller that all input from the Atrox will be directed to
9. You should now be able to play any of your fighting games in Steam. They will detect the Atrox as a standard XB360
controller. Note that the input from the stick is mapped to the D-Pad on the virtual XB360 controller not the analog
stick. Additionally, Windows Store games like Killer Instinct will work fine too.
10. When you are done playing, activate the *RazorAtroxWinUSBVigEmFeeder_x64.exe* window, hit *Q* and press a button on the Atrox. The application will exit and the virtual XB360 controller will disappear


## Uninstallation

If you want to revert to either of the MS XBO controller drivers for this device it's quite simple to do so:

1. Hit *Win* \+ *R*
2. Enter *devmgmt.msc* in the Run box and press enter
3. Click *View* and then click *Show hidden devices*
4. Locate the item in the tree labelled *Universal Serial Bus devices*
5. Right-click the *Razer Atrox Arcade Stick* item and click *Uninstall device*
6. In the dialog box, mark the checkbox labelled *Delete the driver software for this device*
7. Click *Uninstall*
8. Replug your Razer Atrox. It will now use whichever MS driver you previously configured for it


## Interface
The application provides a simple text-mode UI. When running the UI appears as follows:

```
WinUSB Status: CONNECTED
VigEm Status: CONNECTED
Press:
* Q and then a button on the controller to exit
```

### WinUSB Status
* **DISCONNECTED**: The Razer Atrox is not connected or has disconnected
* **INIT**: The Razer Atrox is connected and the INIT packet has been sent
* **CONNECTED**: The Razer Atrox is connected and data from it has been received

### VigEm Status:
* **DISCONNECTED**: VigEm Virtual XB360 controller is disconnected
* **CONNECTED**: VigEm Virtual XB360 controller is connected


## Operation
Upon starting the application will attempt to establish a connection with the Razer Atrox via WinUSB. Once a connection
has been established it will create a VigEm XB360 controller and begin processing input through.


## Roadmap

1. Improved GUI (Text-mode first, later a proper Win32 GUI)
2. Advanced Input rebinding and presets system
3. Input modifier system to allow a button on the controller to be used to trigger alternate input mode.
Similar to the *Shift* key on a keyboard
4. Support up to 8 controllers
5. Integrate ``libwdi`` to integrate WinUSB driver generation and installation into the application
6. Support other XBO Arcade Stick controllers that do not work correctly on Windows


## Credits

I'd like to thank the following people for their assistance on this project:

* *Nefarius*, *!ϻega*, *evilC*, *Snoothy* and *Sylveon* of the [Nefarius Software Solutions](https://discord.vigem.org/) Discord server for their assistance with with VigEm, WinUSB and C++
* [ZaDig](https://zadig.akeo.ie) for the tool used to generate the WinUSB driver for the Razer Atrox
* The developers of the *xpad* driver for Linux which provided some useful information on interacting with XBO controllers
* The developers of *Device Monitoring Studio*, which I used to capture the USB packet data sent and received by the Razer Atrox


## Contact Details

I would love for anyone testing this tool to provide feedback on the following:

* Did you notice any input lag or similar issues?
* Did the tool fail to work in any games you tried?
* Do you have any ideas or suggestion to improve the tool?

You can contact me via the following avenues:

* The [Nefarius Software Solutions](https://discord.vigem.org/) Discord server
* The GitHub issue tracker for the tool is here: https://github.com/OOPMan/RazorAtroxWinUSBVigEmFeeder/issues
* You can also leave a message on the forum thread https://forums.vigem.org/topic/282/xbo-arcade-sticks-vigem-and-a-whole-ton-of-fun/
* The Reddit post for this software is here: https://www.reddit.com/r/Fighters/comments/bjmca9/attention_razer_atrox_xbo_owners_other_xbo_arcade/
1. Open the **XBOXFS.win.sln** file using Visual Studio
2. In *Solution Explorer*, right-click on the **XBOFS.win** project and click *Build*
20 changes: 19 additions & 1 deletion RazorAtroxWinUSBVigEmFeeder.sln → XBOFS.win.sln
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,33 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.572
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RazorAtroxWinUSBVigEmFeeder", "RazorAtroxWinUSBVigEmFeeder\RazorAtroxWinUSBVigEmFeeder.vcxproj", "{F6104731-5815-4BBA-A558-E859DD039413}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XBOFS.win", "XBOFS.win\XBOFS.win.vcxproj", "{F6104731-5815-4BBA-A558-E859DD039413}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ViGEmClient", "ViGEmClient\src\ViGEmClient.vcxproj", "{7DB06674-1F4F-464B-8E1C-172E9587F9DC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1E0515A5-B0AA-4821-90DE-C764A2C35AF2}"
ProjectSection(SolutionItems) = preProject
.gitignore = .gitignore
_config.yml = _config.yml
CNAME = CNAME
LICENSE.txt = LICENSE.txt
pre-build.cmd = pre-build.cmd
README.md = README.md
VigEmClient.patch = VigEmClient.patch
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{B758C57A-D285-4991-96CF-8B166A4FE290}"
ProjectSection(SolutionItems) = preProject
docs\device_contributor_guide.md = docs\device_contributor_guide.md
docs\index.md = docs\index.md
docs\zadig.md = docs\zadig.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "presets", "presets", "{98CB9F55-4522-4F47-8C9F-79070A0C1464}"
ProjectSection(SolutionItems) = preProject
presets\razer_atrox_zadig_preset.cfg = presets\razer_atrox_zadig_preset.cfg
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_DLL|x64 = Debug_DLL|x64
Expand Down Expand Up @@ -84,6 +98,10 @@ Global
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{B758C57A-D285-4991-96CF-8B166A4FE290} = {1E0515A5-B0AA-4821-90DE-C764A2C35AF2}
{98CB9F55-4522-4F47-8C9F-79070A0C1464} = {1E0515A5-B0AA-4821-90DE-C764A2C35AF2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B5964061-63A6-4D2B-9142-462BCF9B6748}
EndGlobalSection
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ int PDCursesUIManager::checkMailbox()
void PDCursesUIManager::render(bool exiting)
{
erase();
mvwprintw(this->window, 0, 0, "Razer Atrox WinUSB VigEm Feeder %s", exiting ? "" : "(Press Q to exit)");
mvwprintw(this->window, 0, 0, "XBOFS.win v0.3 %s", exiting ? "" : "(Press Q to exit)");
mvwprintw(this->window, 2, 0, "WinUSB Device Manager (Thread ID %d) status: %s", this->winUsbDeviceManager->getThreadId(), threadMessageToString(this->winUsbDeviceManagerStatus).c_str());
auto counter = 0;
for (auto threadId : this->winUsbDeviceThreadIdList) {
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<MinimumVisualStudioVersion>12.0</MinimumVisualStudioVersion>
<Configuration>Debug</Configuration>
<Platform Condition="'$(Platform)' == ''">Win32</Platform>
<RootNamespace>RazorAtroxWinUSBVigEmFeeder</RootNamespace>
<RootNamespace>XBOFS.win</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
* GLOBAL:
FILENAME = "razeratroxwinusbvigemfeeder.log"
FILENAME = "xbofs.win.log"
ENABLED = true
TO_FILE = true
TO_STANDARD_OUTPUT = false
Expand All @@ -8,4 +8,4 @@
MAX_LOG_FILE_SIZE = 5242880 ## 5MB - Comment starts with two hashes (##)
LOG_FLUSH_THRESHOLD = 100 ## Flush after every 100 logs
* DEBUG:
FILENAME = "razeratroxwinusbvigemfeeder.debug.log"
FILENAME = "xbofs.win.debug.log"
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading

0 comments on commit 7329e1d

Please sign in to comment.