vbousquet / flexdmd

A DMD renderer for Visual Pinball original tables.
Apache License 2.0
61 stars 13 forks source link

PinballY integration is broken #8

Closed mkalkbrenner closed 4 years ago

mkalkbrenner commented 4 years ago

I recently updated FlexDMD to 1.0.0 and Freezy's DLL to 1.8.0. While FlexDMD still works perfectly well with VPX tables, the Pinball Y integration seems to be broken. The DMD doesn't appear anymore, even if I replace my enhanced main.js with the latest one you provide. BTW I run the 64Bit version of Pinball Y.

BTW How can I access log files?

mkalkbrenner commented 4 years ago

It seems that this single line added to main.js causes the Javascript engine to "crash":

let dmd = createAutomationObject("FlexDMD.FlexDMD");
Checking for Javascript main script file C:\Pinball\PinballY\scripts\main.js
. Main script file exists; initializing Javascript engine
. Loading system script file C:\Pinball\PinballY\scripts\system\CParser.js
. Loading system script file C:\Pinball\PinballY\scripts\system\SystemClasses.js
. Loading main script file C:\Pinball\PinballY\scripts\main.js
[Javascript] Loading module from file C:\Pinball\PinballY\scripts\main.js
[Javascript] Error executing module C:\Pinball\PinballY\scripts\main.js

[Javascript]: Uncaught exception:
Error: createAutomationObject("FlexDMD.FlexDMD"): creating instance: 
   at Anonymous function (file:///C:\Pinball\PinballY\Scripts\main.js:1:1)
   at module (file:///C:\Pinball\PinballY\Scripts\main.js:1:1)
fR33Styler-1971 commented 4 years ago

thx mkalkbrenner for open this issue (same for me)

vbousquet commented 4 years ago

Hi, this looks like an installation problem. Likely a conflict between the beta version and the release one. Could you check with RegEdit.exe (registry editor) that you have the 2 following entries with the same structure; Flex-1 Flex-2

If you see something else, like a node 1.4.0 (this used to be the number used by the beta) under the InProcServer32, could you remove it and retry to see if the bug disappears ?

vbousquet commented 4 years ago

I have changed the version of FlexDMD to be 1.5 to avoid these conflicts. You can find a prebuilt version below. @mkalkbrenner: Could you confirm, that this solve the issue ? If it's the case, I will publish it. Thanks FlexDMD 1.5.0.zip

fR33Styler-1971 commented 4 years ago

Thank you for answering @vbousquet !

I have both parts in my registry (exactly the same, but i started with 1.0 - no version before installed)

Behavior in my case (with FlexDMD 1.5.0 and main.js PinballY script):

No crash... but: PinballY Fallback DMD Logo -> only Highscores shown But nothing more.. no Company-Logo, no Insert Coins/Loading etc.

Maybe @mkalkbrenner can tell his behavior

vbousquet commented 4 years ago

@fR33Styler-1971 it seems you are seeing the DMD provided by PinballY (not the one created from the script). You should disable it first (right click on it and hide, or simply close its window), and ensure that you have the script enabled.

Another point to check is that your dlls are unblocked (right click and check that they are not marked as blocked)

vbousquet commented 4 years ago

You will find below an updated version with an improved script for PinballY. This should make everything clean. The only thing to worry about is to check that all the DLL are "unblocked" after installing them. As always, feedback is welcomed !

FlexDMD.zip

vbousquet commented 4 years ago

New update with better script again, supporting custom title screens: FlexDMD.zip

fR33Styler-1971 commented 4 years ago

Thank you very much @vbousquet

It stays still black, even when i "hide dmd @ PinballY" with the new script.

Log says: `Checking for Javascript main script file C:\PinballY\scripts\main.js . Main script file exists; initializing Javascript engine . Loading system script file C:\PinballY\scripts\system\CParser.js . Loading system script file C:\PinballY\scripts\system\SystemClasses.js . Loading main script file C:\PinballY\scripts\main.js [Javascript] Loading module from file C:\PinballY\scripts\main.js [Javascript] Error executing module C:\PinballY\scripts\main.js

[Javascript]: Uncaught exception: Error: createAutomationObject("FlexDMD.FlexDMD"): creating instance: at Anonymous function (file:///C:\PinballY\Scripts\main.js:323:1) at module (file:///C:\PinballY\Scripts\main.js:251:1)`

and here the relevant lines (my main.js has a few Pinball FX3 scripts thats why it´s longer):

323: let dmd = createAutomationObject("FlexDMD.FlexDMD"); .. . 251: let checkPinballYUpdate = false;

Edit: both DLLs and Exe is "unblocked"

vbousquet commented 4 years ago

@fR33Styler-1971 The error you get shows an installation problem ; either blocked dll (perhaps dmddevice64.dll), or mismatch between the versions in the registry, or perhaps mismatch between FlexUDMD.dll & FlexDMD.dll. This is not in the script but on the install. If everything is working fine in 32 bits (i.e. outside of PinballY which is the only 64 bits app using FlexDMD from the script), then you should look to the 64 bits dll (dmddevice64.dll).

fR33Styler-1971 commented 4 years ago

Thank you so much again for the help.

You´re right... there was a blocked dmddevice64.dll... i unblocked this dll (my bad sorry).

Then i tried Diablo-Table... and it doesnt work

so i unregistered "FlexDMD & UltraDMD" (with FlexDMD.exe) and registered again --> Diablo Table works fine.

Then i tried PinballY and the same result as @mkalkbrenner mentioned in the beginning: "Crash of PinballY". (tried with the current main.js)

vbousquet commented 4 years ago

@fR33Styler-1971 I have just released the 1.5 version with a largely improved installer. Please try it. It will check and should be able to repair most of the problem you have with your installation. If everything is ok, please teel me and I will close the issue (or search a new fix :))

fR33Styler-1971 commented 4 years ago

@vbousquet Thank you again for your effort for this community!!!

With the offical 1.5 it´s still the same behavior: PinballY crash.

PinballY Log shows: `Sonntag, 30. August 2020, 16:28:01: Session started PinballY 1.0.0 (Release), build 9375 (x64, 20200723-1914)

DOF (DirectOutput): initializing DOF client

DOF: creating DOF COM object (a23bfdbc-9a8a-46c0-8672-60f23d54ffb6) DOF: got table mapping file: C:\DirectOutput\config\tablemappings.xml

Checking for Javascript main script file C:\PinballY\scripts\main.js . Main script file exists; initializing Javascript engine . Loading system script file C:\PinballY\scripts\system\CParser.js . Loading system script file C:\PinballY\scripts\system\SystemClasses.js . Loading main script file C:\PinballY\scripts\main.js [Javascript] Loading module from file C:\PinballY\scripts\main.js [Script] > highscoresready [Script] > scores received [Script] > gameselect`

and FlexDMD.log shows: [20] 2020/08/30 16:27:41.523 INFO | FlexDMD version 1.5.0.0 [20] 2020/08/30 16:27:41.523 INFO | Game name set to Designer [20] 2020/08/30 16:27:41.533 INFO | Show DMD [20] 2020/08/30 16:27:41.533 INFO | Starting render thread for game 'Designer' [21] 2020/08/30 16:27:41.533 INFO | RenderThread start [20] 2020/08/30 16:27:43.265 INFO | New font added to asset manager: FontDef [path=FlexDMD.Resources.teeny_tiny_pixls-5.fnt, tint=Color [White], border tint=Color [White], border size=0] [20] 2020/08/30 16:27:43.269 INFO | New bitmap added to asset manager: FlexDMD.Resources.dmds.black.png [20] 2020/08/30 16:27:57.381 INFO | Hide DMD [20] 2020/08/30 16:27:57.392 INFO | Stopping render thread [21] 2020/08/30 16:27:57.407 INFO | RenderThread end

Any Idea?

mkalkbrenner commented 4 years ago

@vbousquet sorry for the delay, here's my feedback.

Just "updating" to 1.5.0 by replacing the files still leads to

[Javascript]: Uncaught exception:
Error: createAutomationObject("FlexDMD.FlexDMD"): creating instance: 
   at Anonymous function (file:///C:\Pinball\PinballY\Scripts\main.js:1:1)
   at module (file:///C:\Pinball\PinballY\Scripts\main.js:1:1)

But FlexDMDUI.exe shows installation "errors" that could be fixed by two clicks. After doing so, this one line main.js succeeds and PinballY works without any errors in the log:

let dmd = createAutomationObject("FlexDMD.FlexDMD");

But as soon as I use your new main.js as you provide it as part of 1.5.0, PinballY crashes! The log contains no errors. But the last thing you could see is that the HiScores were loaded and handed over to the Javascript engine.

So the first bug I reported here is fixed now by 1.5.0. But now PinballY is unusable. Could it be that we're now affected by https://github.com/mjrgh/PinballY/issues/122 ?

vbousquet commented 4 years ago

@mkalkbrenner thanks for the feed back, and that's good news that 1.5.0 fixed the initial bug !

Just a few more questions;

Hopefully, one of them should show an exception and tell us which of the three has a bug and hint us to a solution.

mkalkbrenner commented 4 years ago

I took a closer look at the script and isolated the line. The exact line that causes the crash is https://github.com/vbousquet/flexdmd/blob/ba2c0fe2803710cc2f43e635d9876d1b27feefde/Scripts/PinballY/main.js#L134

So the crash is not related to any new feature in main.js. Unfortunatley I could not find any crash related messages in the logs.

Additional information: I use your DMDext version you provided at https://github.com/freezy/dmd-extensions/pull/249.

One thing I'll have to check later is if I did turn real DMD support in PinballY on or off for testing.

mkalkbrenner commented 4 years ago

Just some more info. THe real DMD support in Pinball Y is turned off and Pinball Y is running in 64bit mode.

vbousquet commented 4 years ago

@mkalkbrenner after a deeper look, I think the bug is on the Freezy's DmdExtension side; the x64 version is missing a native library. You can follow the progress here : https://github.com/freezy/dmd-extensions/issues/212. This needs to built the Skia library which I did not performed. I will try to have a look and provide a PR to Freezy. I will close this issue since the progress should be on the other opened at Freezy