Jump to content




Photo
* * * * * 1 votes

Grander Unified-er DOF R3++


  • Please log in to reply
382 replies to this topic

#1 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 27 January 2018 - 12:07 AM

I'm please to announce a new, unofficial DOF update.

 

It's unofficial because it doesn't come from DOF's creator, SwissLizard.

 

I created it because I don't think we'll be seeing any more official updates, with SwissLizard on indefinite and maybe permanent hiatus, and we really need some kind of update at this point.  So unofficial will have to do.  The pressing need for a new One True DOF comes from the splintering of the DOF family tree that's happened over the two years since my now-ironically named Grand Unified version.

 

This new version merges all of the known third-party forks of DOF on GitHub into one, unified, hopefully harmonious whole.  It incorporates:

 

- Djrobx's fixes for PWM outputs connected to boolean effects

 

- Rambo3's UltimateIO support, Philips Hue support, and SainSmart auto-config (I'm not sure if the last one is actually working or just an experiment in progress, from the comments in the source control log)

 

- Freezy's ProPinball bridge

 

 

This is an early beta version.  It's had only the lightest testing so far, on my own machine, so there's a good chance there are major problems yet to be shaken out.  But of course the only way to shake them out is to test it on other machines, so it would be great if you wanted to volunteer to give it a try.  Please be aware of the risk of destabilizing your configuration, though - I'd only recommend trying it if you're experienced with DOF and comfortable tinkering with the setup, so that it won't cost you too much time to restore your old configuration if this hoses you down.

 

So with those warnings in mind, the download link - look for the "Grander Unified-er DOF R3++" link:

 

http://mjrnet.org/pi...ll-updates.html

 

 

I've tested with Pinscape and LedWiz, and those appear to be working well.

 

haven't tested (and am not equipped to) with PacLed, UltimateIO, SainSmart, Hue, or Teensy.  So your testing would be particularly helpful if you have any of those in your system.  If you have a SainSmart, it would also be great to hear if the SainSmart autoconfig is working.

 

If you do try it out, please post your findings here.  Please post positive findings as well as problems, so that we'll know if it's working for anyone.  The usual tendency is only to report problems, which is fine once there's some confidence that it's working at all, but for this early version it would be very helpful to know exactly how much testing it's had and in what configurations.

 

Thanks in advance for the testing help!

 



#2 DDH69

DDH69

    Pinball Fan

  • Platinum Supporter
  • 1,911 posts
  • Location:DOFLinx HQ, Adelaide

  • Flag: Australia

  • Favorite Pinball: Monster Bash

Posted 27 January 2018 - 12:26 AM

Thank you mjr.  I look forward to a new single DOF R3++

 

I've just run it up on my development machine, looking good.  I have a Pinscape (native, no LEDWiz emulation) and a teensy config, but no device.  All tests well with DOFLinx.

 

I will get it on my cabinet (2 x LEDWiz, Pinscape native and a teensy) later today and try it all out then report back.

 

I did notice no LEDWiz.dll packaged, is that intentional?  I suppose I'll find out later today!



#3 DDH69

DDH69

    Pinball Fan

  • Platinum Supporter
  • 1,911 posts
  • Location:DOFLinx HQ, Adelaide

  • Flag: Australia

  • Favorite Pinball: Monster Bash

Posted 27 January 2018 - 01:00 AM

Unfortunately the news on the cabinet is bad.  The new R3++ version reintroduces a bug from a previous branch where "DoubleExtensions" fail.  I have no idea what these are, but understand they are somewhere deep in the DirectOutput.dll and when DOFLinx tries to use DOF it fails with these not found in that dll.  I have attached a copy of the error message from the calling program.

 

I can swap in / out the R3++ and the Pinscape version of DOF to make this work / fail at will on my cabinet.

 

In DOFLinx I do not reference, call, or even identify anything vaguely called a "Double Extension".  I believe its related to the LEDWiz, not the teensy, as when I saw this some time ago I didn't have a Teensy in my cabinet.

 

Happy to continue testing and contributing as best I can.

Attached Files



#4 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 27 January 2018 - 01:27 AM

> I did notice no LEDWiz.dll packaged, is that intentional?

 

Yes - I eliminated that in my original R3+ version two years ago, although the other forks were still based on the root DOF fork, so you would have still had it if you were on one of the other forks.  (It's much better to be rid of it.  I was able to trace the root cause of the infamous LedWiz timing issues - turned out to be hardware bugs in the LedWiz USB client - and put in some fairly solid workarounds.  So LedWiz operation is more reliable than with ledwiz.dll.)

 

> Unfortunately the news on the cabinet is bad.  The new R3++ version

> reintroduces a bug from a previous branch where "DoubleExtensions" fail.

 

That's just a part of DOF, and should just get loaded from the included DLL file Extensions.dll.  So it sounds like there's some mismatch between file versions.  The first thing to look at is that Extensions.dll is up to date:

 

1 - check that Extensions.dll got unzipped into your DOF folder with everything else

 

2 - check that it's the current version (should have today's timestamp)

 

3 - check that it isn't blocked (that annoying right-click / properties / Unblock button business)

 

It's probably not #3 since that would usually produce a DLL load failure instead of a .Net dependency error like this.

 

If none of that helps, there might be a .Net caching problem...  try running gacutil /L from a CMD prompt and see if you see any DirectOutput items in the list.  If you find any, it might help to run gacutil /U <the listed assemblies> to remove them from the cache.  Hopefully there's a simpler explanation though.


Oh, wait a minute - DOFLinx is a separate project, isn't it?  That's where the error in the stack trace is coming from.

 

It's possible that DOFLinx can only be used with the EXACT version of DOF that it was compiled against, so it might be impossible for you to use this version until they recompile against it.

 

This is the downside of C# - this cross-assembly stuff can really brittle.  There have got to be ways to make the two more interoperable, but I haven't gotten into the bowels of .Net enough to know what would be required.


Edited by mjr, 27 January 2018 - 01:32 AM.


#5 DDH69

DDH69

    Pinball Fan

  • Platinum Supporter
  • 1,911 posts
  • Location:DOFLinx HQ, Adelaide

  • Flag: Australia

  • Favorite Pinball: Monster Bash

Posted 27 January 2018 - 02:14 AM

@mjr, thanks for the speedy reply.

 

1. Yes Extensions.dll got unzipped

2. Yes its today's version

3. Not blocked

 

DOFLinx is happy for the DirectOutput version to be changed underneath it, it just requires a stop and start.  I can change versions around at will, ie SwisssLizard's original R3, Pinscape version circa 4/7/17, Rambo3's Ultimate IO version.  In the code I test for the existence of Pinscape and Ultimate IO functions to ensure I don't try and call them if someone has the original SwizzLizard R3 version, or try and call Ultimate IO functions if they have your Pinscape version.  I have the various versions  in different folders for testing purposes to move in / out as required.

 

To be thorough, I will recompile with the new R3++ version later when I put my cabinet back together (a few cabling fixes today).  I am however not hopeful, as last time this error arose in the DOF branch that caused it recompilation did nothing (as expected).



#6 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 27 January 2018 - 03:15 AM

Oh, I get it, DOFLinx is your project.  This should be easy, then.  Or at least doable.

 

Let me explain what's going on.  In his last check-in before the great abandonment, SwissLizard did some refactoring of a bunch of his utility code, specifically in his type extension classes.  That's what the troublesome DoubleExtensions is - a C# class that extends the primitive 'double' type with additional utility methods.  You were protesting that "I'm not referencing that anywhere", but actually you are, implicitly, because you're using the primitive 'double' type.  In the context of calling the DirectOutput assembly, 'double' becomes SwissLizard's extended double type even though you didn't use the word DoubleExtensions anywhere.  Passing a 'double' constant as a parameter was all you had to do to reference the type.  Anyway, in older DOF versions, all of those type extensions were inside the main DirectOutput.dll.  In his final check-in, SL refactored all of that into a new, separate DLL called Extensions.dll.  This wasn't just some capricious parting shot to hose everyone down; it was meant to be a code-sharing improvement so other subsystems within DOF could use the same code.  

 

So what this means to you:  You basically need to go through three steps in your Visual Studio project to fix this up.  I assume you're using VS, anyway - are you on VB? C#?  Probably has to be one of those given that you're consuming a C# assembly.  So what you need to do is go to the References list in your project tree.  Open it up.  Find DirectOutput.dll.  Remove it from the list (right click -> Remove).  Right click the main References section and select Add Reference.  Click the Browse button.  Navigate to and select the NEW DirectOutput.dll. Repeat with the new Extensions.dll.  Now do a Build > Clean Solution, Build > Build Solution.

 

I think that should fix it up.  The downside is that you're going to have the opposite problem if you try to run this against an older version of DOF, because it won't have an Extensions.dll, which you'll now have an explicit dependency on.  I don't know a way to work around that and create a common version.  Probably the ideal would be to put your code in github and let me just integrate it with the DOF build, so that it can get built and released in sync with DOF.


Edited by mjr, 27 January 2018 - 03:27 AM.


#7 DDH69

DDH69

    Pinball Fan

  • Platinum Supporter
  • 1,911 posts
  • Location:DOFLinx HQ, Adelaide

  • Flag: Australia

  • Favorite Pinball: Monster Bash

Posted 27 January 2018 - 05:33 AM

@mjr thank you for the explanation, that makes sense.  Nothing like calling something when you don't even know it!  I've never delved into the depths of DOF code, so was blissfully unaware.

 

I have made a version of DOFLinx for the R3++ version and can confirm that it works with Pinscape, LEDWiz and Teensy MX. (my cabinet has 2 x LEDWiz a Pinscape in native mode and a Teensy).  I've successfully run FX3, FX2, FP and VPX games all with full force feedback and addressable LEDs running.  I've attached that beta 6.20 of DOFLinx to this post for anyone else who wants to try it in conjunction with R3++

 

As I said earlier, I am right behind a single unified version.  I'll keep an eye on this thread, and likely make the next version of DOFLinx for the R3++ version.

Attached Files



#8 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 27 January 2018 - 06:13 AM

I have made a version of DOFLinx for the R3++ version and can confirm that it works with Pinscape, LEDWiz and Teensy MX. (my cabinet has 2 x LEDWiz a Pinscape in native mode and a Teensy).  I've successfully run FX3, FX2, FP and VPX games all with full force feedback and addressable LEDs running.  I've attached that beta 6.20 of DOFLinx to this post for anyone else who wants to try it in conjunction with R3++

 

That's great!  Thanks for getting that together so quickly - I'm really glad you caught the incompatibility early.

 

And thanks for testing all those different combinations.

 

 

As I said earlier, I am right behind a single unified version.  I'll keep an eye on this thread, and likely make the next version of DOFLinx for the R3++ version.

 

Great - thanks.  I hope it won't be necessary to do this on every rebuild - hopefully we'll be back to the experience you had before where the different DOF builds were mostly interchangeable.  I suspect that the separation of existing code into a new DLL must have violated some .Net rule or convention, because this kind of backwards compatibility problem isn't supposed to happen any more - .Net was supposed to save us from the bad old days of DLL-Hell.  But I don't know what should have been done instead, other than just not changing it (and I hope that's not the answer, because if that's Microsoft's idea of how to maintain compatibility, it's not as too-clever-by-half as they usually are).


Edited by mjr, 27 January 2018 - 06:15 AM.


#9 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 30 January 2018 - 01:37 AM

New feature:  MSI Installer

 

I've added a brand new Windows Setup (MSI) installer for DOF that will hopefully make the install process vastly simpler than in the past.  You can find it linked on my DOF Grand Unified page, in the "Grander Unified-er R3++" section:

 

http://mjrnet.org/pi...ll-updates.html

 

It would be great if a few people could test it to see if it works on more machines than just my own!  It would be particularly helpful to try this on BRAND NEW installations that don't already have DOF installed, to make sure that I caught all of the odd little details that have given us all so many uncounted hours of fun installing DOF manually.

 

The Setup installer does the following automatically:

 

- Copies all files

- Finds your active B2S Server DLL based on the COM registry keys

- Creates a B2S Plugins\DirectOutput shortcut 

- Activates Plugins in the B2S registry configuration

- Turns off "missing backglass" errors in the B2S configuration files

- Registers the DirectOutputComObject COM class

 

In other words, there should be absolutely nothing left to do manually to set this up on a new machine.  Just run the VPX installer, then run the new DOF installer, and you should be fully set up with DOF.  All that's left is setting up the DOF Config Tool files.  This should hopefully make it a lot more pleasant to set up DOF on a new machine, and should especially reduce the chances of human error that so often lead to hours of troubleshooting.


Edited by mjr, 30 January 2018 - 01:43 AM.


#10 Onevox

Onevox

    VP Zealot

  • Members
  • PipPipPip
  • 226 posts

  • Flag: United States of America

  • Favorite Pinball: The Clash. But I'm biased.

Posted 30 January 2018 - 02:27 AM

I ran the "setup" file without incident after renaming and parking my old DOF folder elsewhere on my hard drive. That may not be helpful in understanding its stability.  I had unrelated DOF issues last night, which I'll ask about in another thread so this one stays on topic. 


Edited by Onevox, 31 January 2018 - 01:13 PM.

_____________________

 

My build: The Joker Poker.

http://www.vpforums....showtopic=37574


#11 TerryRed

TerryRed

    Pinball Fan

  • Silver Supporter
  • 760 posts

  • Flag: Canada

  • Favorite Pinball: Too many to choose...

Posted 04 February 2018 - 02:27 AM

New feature:  MSI Installer

 

I've added a brand new Windows Setup (MSI) installer for DOF that will hopefully make the install process vastly simpler than in the past.  You can find it linked on my DOF Grand Unified page, in the "Grander Unified-er R3++" section:

 

http://mjrnet.org/pi...ll-updates.html

 

It would be great if a few people could test it to see if it works on more machines than just my own!  It would be particularly helpful to try this on BRAND NEW installations that don't already have DOF installed, to make sure that I caught all of the odd little details that have given us all so many uncounted hours of fun installing DOF manually.

 

The Setup installer does the following automatically:

 

- Copies all files

- Finds your active B2S Server DLL based on the COM registry keys

- Creates a B2S Plugins\DirectOutput shortcut 

- Activates Plugins in the B2S registry configuration

- Turns off "missing backglass" errors in the B2S configuration files

- Registers the DirectOutputComObject COM class

 

In other words, there should be absolutely nothing left to do manually to set this up on a new machine.  Just run the VPX installer, then run the new DOF installer, and you should be fully set up with DOF.  All that's left is setting up the DOF Config Tool files.  This should hopefully make it a lot more pleasant to set up DOF on a new machine, and should especially reduce the chances of human error that so often lead to hours of troubleshooting.

 

OH.... MY....GOD....

 

This page is the answer to so many questions that I get asked by sooooooooo many people.

 

With DOFLinx and now PinUP Player working with DOF, I get a lot of requests fro others on how to setup DOF...and I have always just given them the links to the DOF R3 wiki, as its just to much to be made simple into an ALL in One type of setup....until now!

 

Now I can simply point newcomers to the VPX AIO installer...then I can point them to this DOF installer. SO MUCH EASIER for them!

 

Thank you mjr for providing a solid singular location for updated DOF R3++ and now its awesome installer!



#12 psmiraglia

psmiraglia

    Enthusiast

  • Members
  • PipPipPip
  • 111 posts

  • Flag: Argentina

  • Favorite Pinball: Star Trek

Posted 05 February 2018 - 02:21 AM

pbx dof plugin throws:

 

18.02.04 09:11:17.528 PBX config data loaded
18.02.04 09:11:17.528 Initializing DOF
18.02.04 09:11:17.555 Init failed: Exception has been thrown by the target of an invocation.
18.02.04 09:12:18.064 Initializing plugin
18.02.04 09:12:18.066 Loading PBX config data
18.02.04 09:12:18.081 PBX config data loaded
18.02.04 09:12:18.081 Initializing DOF
18.02.04 09:12:18.129 Init failed: Exception has been thrown by the target of an invocation.
18.02.04 09:13:11.818 Plugin config loaded
18.02.04 09:13:11.818 Initializing plugin
18.02.04 09:13:11.819 Loading PBX config data
18.02.04 09:13:11.828 PBX config data loaded
18.02.04 09:13:11.828 Initializing DOF
18.02.04 09:13:11.848 Init failed: Exception has been thrown by the target of an invocation.
 
wit this dof version.
 
also, dofslave.exe does not fire wit the timeshock table


#13 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 05 February 2018 - 03:00 AM

pbx dof plugin throws:

 

There's not much to go on in that log trace, unfortunately, so we'll have to do some guesswork...

 

1.  Does the PBX plugin work with other versions of DOF for you?  Which version one were you successfully using previously?

 

2.  Did you go through the full install procedure for DOF and PBX as outlined in the DOF manual?  There are a bunch of extra setup steps there to get everything in sync, such as copying the new version of the DOF PBX plugin to the appropriate directory.  You should probably follow through the setup instructions step by step, treating it like a brand new installation, even if you think you already did everything, to make sure you didn't miss any steps.  The thing that makes DOF tough to set up is that it has all of these DLLs and COM objects that have to work together, and any single file is from a different version, the whole thing falls over with mysterious error messages like you're getting.

 

 

also, dofslave.exe does not fire wit the timeshock table

 

Same question as #1 on this - did that one ever work previously?



#14 psmiraglia

psmiraglia

    Enthusiast

  • Members
  • PipPipPip
  • 111 posts

  • Flag: Argentina

  • Favorite Pinball: Star Trek

Posted 05 February 2018 - 04:02 AM

 

 

 

There's not much to go on in that log trace, unfortunately, so we'll have to do some guesswork...

 

1.  Does the PBX plugin work with other versions of DOF for you?  Which version one were you successfully using previously?

 

2.  Did you go through the full install procedure for DOF and PBX as outlined in the DOF manual?  There are a bunch of extra setup steps there to get everything in sync, such as copying the new version of the DOF PBX plugin to the appropriate directory.  You should probably follow through the setup instructions step by step, treating it like a brand new installation, even if you think you already did everything, to make sure you didn't miss any steps.  The thing that makes DOF tough to set up is that it has all of these DLLs and COM objects that have to work together, and any single file is from a different version, the whole thing falls over with mysterious error messages like you're getting.

 

pbx was working with the 11/33/2015 version of the dll. this new pack dos not seem to have a new one. it has been working with directoutput.dll v0.9.6521.40352 dated 11/9/2017

 

i re registered the com object, but had no new dll to copy to pinballx/plugins


 


also, dofslave.exe does not fire wit the timeshock table

 

Same question as #1 on this - did that one ever work previously?

 

 

working well with dofslave.exe from 9/10/2017 v1.0.0.0



#15 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 05 February 2018 - 04:29 AM

i re registered the com object, but had no new dll to copy to pinballx/plugins

 

That's probably the problem, then - I probably just left it out.  Which DLL is missing?

 

...Answered my own question: looks like the PinballX plugin DLL was missing from the ZIP version.  (It looks like it *was* in the setup version, so I assume you're working from the ZIP.)  I just added to the ZIP. Give it a try and see if that helps.


Edited by mjr, 05 February 2018 - 07:06 AM.


#16 psmiraglia

psmiraglia

    Enthusiast

  • Members
  • PipPipPip
  • 111 posts

  • Flag: Argentina

  • Favorite Pinball: Star Trek

Posted 05 February 2018 - 01:05 PM

It is called DirectOutputPinballxPlugin.dll

#17 psmiraglia

psmiraglia

    Enthusiast

  • Members
  • PipPipPip
  • 111 posts

  • Flag: Argentina

  • Favorite Pinball: Star Trek

Posted 06 February 2018 - 03:54 AM

Grabbed te new zip and the plugin dll did not work for me, same with dofslave.exe

#18 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 06 February 2018 - 05:13 AM

Grabbed te new zip and the plugin dll did not work for me, same with dofslave.exe

 

Okay - let me know if you come up with any more information that might help track it down.

 

For what it's worth, PinballX is loading DOF correctly on my machine, so maybe you still a configuration issue with the right versions of the right files being in the right places?  Like I said, those mystery load errors usually mean that you have a mix of different DLL versions, since .Net needs everything to be matching versions.  Sometimes it helps to do a full search of your entire hard disk to look for other copies of each DLL, since sometimes the one that's getting loaded isn't the one that you *think* is getting loaded, if there's another copy somewhere.

 

Freezy did say that the ProPinball plugin was beta-ish at best and that he might get back to it and finish it at some point, so if that's not working I'll probably just back that out until it's finished.


Edited by mjr, 06 February 2018 - 05:30 AM.


#19 psmiraglia

psmiraglia

    Enthusiast

  • Members
  • PipPipPip
  • 111 posts

  • Flag: Argentina

  • Favorite Pinball: Star Trek

Posted 06 February 2018 - 09:59 PM

I'll wait a bit and keep an eye on other users experiences...  At first sight, I don't have DOF-related DLL dups, but honestly, I cannot tell what other DLLs could be involved.

 

thanks.



#20 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 2,222 posts

  • Flag: United States of America

  • Favorite Pinball: Theatre of Magic

Posted 07 February 2018 - 05:25 AM

@psmiraglia - if you want to help debug this further, you can try the new version of Setup installer here:

 

mjrnet.org/pinscape/downloads/DOFSetup_20180206A.msi

 

That now has integrated PinballX plugin setup, so don't do any of the manual steps with it.  Just run it.  When do you, though, it would be helpful if you ran it with logging enabled so I can verify what it's doing:

 

1. Open a CMD prompt window

2. CD to the folder where you downloaded the MSI

3. At the prompt, type:   DOFSetup_20180206A.msi /L install.log

 

If it's still not working, it would also be helpful if you could post your DirectOutput.log file, from the PinballX folder.  Not the plugin log as before - that doesn't contain any particularly useful information, unfortunately.  If there's anything useful it'll probably be in DirectOutput.log.


And re the ProPinball stuff - I'm afraid I'm not able to look into that at all right now; that'll have to wait for Freezy to get back to it.  It's all published open source code if you want to look into it yourself, of course.