briankendall/devreorder

Having trouble getting this to work

Kinghumpy opened this issue · 8 comments

I am building 2 pc 4 player arcades and this is my salvation to fix this issue I have had for years but I am having no luck with it. Its definitely the naming of my joysticks. I have the same issue as someone else with the framework error on device lister. Any help would be awesome so I can get these arcades done. Thanks

Can you post the full text of the error?

Microsoft .Net Framework

Unhandel exception has occured in your application. If you click continue theapplication will ignore this error and attempt to continue. If you click quit the application will close immediately.
Could not load file or assembly microsoft.DirectX.DirectInput.
Version=1.0.2902.0 Culture=neutral
PublicKey Token=31bf3856ad364e35 or one of its dependendencies. The system cannot find the file specified.

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.DirectX.DirectInput, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.DirectX.DirectInput, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
at DeviceLister.DeviceListerForm.DeviceListerForm_Load(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9148 (WinRelRS6.050727-9100)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

DeviceLister
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/humst/Downloads/devreorder-1.0.2/devreorder-1.0.2/release/DeviceLister.exe

System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9147 (WinRelRS6.050727-9100)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll

System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Could you try downloading and installing the DirectX 9 End User Runtime and see if it resolves the issue? Here's a link: https://www.microsoft.com/en-us/download/details.aspx?id=8109

Awesome. device lister is working now. so this is how it appears in the app.

"USB Joystick ": {447911b0-fe73-11e9-8001-444553540000}
"USB Joystick ": {447938c0-fe73-11e9-8002-444553540000}
"USB Joystick ": {24f07990-21dd-11ea-8001-444553540000}
"USB Joystick ": {24f07990-21dd-11ea-8002-444553540000}

At the moment in usb game controllers my controllers are in this order 1,3,4,2.
Obviously i need it 1,2,3,4. I run retroarch which is 64 bit an i take the
64 bit dinput8.dll and the devreorder.ini and i place it in the same directory as the .exe.
My devreorder.ini looks like this.

; devreorder settings
; Any line starting with ; is a comment and will be ignored

[order]
; In this section write the names or GUIDs of your controllers
; in the order you want them to be detected, one per line.
; Make sure any names exactly match the name printed in the
; Game Controllers control panel or in DeviceLister.exe,
; including any capital letters and punctuation. If you use
; a device's GUID instead of its name, make sure the GUID is
; enclosed in curly braces, just like in DeviceLister.exe.
; Example:
; vJoy Device
; Controller (XBOX 360 For Windows)
; {01234567-89ab-cdef-0123-456789abcdef}
{447911b0-fe73-11e9-8001-444553540000}
{24f07990-21dd-11ea-8001-444553540000}
{24f07990-21dd-11ea-8002-444553540000}
{447938c0-fe73-11e9-8002-444553540000}
[hidden]
; In this section, write the names or GUIDs of controllers
; that you want to be hidden. Again their name must exactly
; match the name printed in the Game Controllers control
; panel or in DeviceLister.exe, and GUIDs must be in the
; same format as above.
; Example:
; Wireless Controller
; {01234567-89ab-cdef-0123-456789abcdef}

The controllers act the same as before. am I doing something wrong?

Are you sure you have the correct order for your controllers in devreorder.ini? It looks like the order you have is 1,4,2,3, if I understand correctly. Try moving {24f07990-21dd-11ea-8001-444553540000} to the bottom of the list.

If that doesn't help, it may be that retroarch isn't finding devreorder's dll. In that case I'd recommend to try following the instructions for installing it system-wide and see if that fixes things.

If it's installed system-wide, one way you can tell it's working is that if you press Win+R and type in joy.cpl, it should display your controllers in the correct order. (And you can double click them to see their input and confirm they're in the correct order, which is helpful if they all have the same name such as in your case.

I'll give that a try and I'll will let you know. Thanks for your help on this.

Man you are a genius. System setup worked perfectly. I appreciate your work on this and you helping me through the problems I was having.

@Kinghumpy Great, glad to hear it! Some apps don't seem to load dlls from the same folder as their exe, and I'm not 100% sure why, but installing system-wide usually takes care of apps like this.