Menu

Disney Infinity 3.0

Kataah
2018-01-06
2020-04-20
  • Kataah

    Kataah - 2018-01-06

    And another one. This time it´s Disney Infinity 3.0. And only the 3.0 Version. The other two (1.0 and 2.0) runs without problem in DxWnd and DirectX9 ticked. This is good since the games have no option or registry possibility to run in windowed mode, so DxWnd is the only option. While the first two games runs flawlessy, the third in the series won´t run in a Window even if it´s hooked in DxWnd. I tried all DxWnd Versions already. And it´s strange cause 3.0 is based on 2.0 and that runs in a Window.

     

    Last edit: Kataah 2018-01-06
    • gho

      gho - 2018-01-07

      The game appears to be discontinued and, though the website (with security exceptions for expired certificate) tells it's possible to keep using Disney Infinity 3.0, there is no link to download the free client (and there's no way to push me buying a game box for 25-30 euros!).
      So, I may ask some support to borrow some client setup.

       
  • Kataah

    Kataah - 2020-04-17

    I´m trying to get into this Game one last time.
    Still after testing "Infinity 1.0" and "Infinity 2.0" are working in DxWnd, and only "Infinity 3.0" makes Problems despite beeing the same Engine.
    I even tried out D3DWindow, which failed too.
    Here is the log for it.
    Good luck.

    If you need the Game to test it, i have the links to it.
    The Game is abandoned anyways.

     

    Last edit: Kataah 2020-04-17
    • gho

      gho - 2020-04-17

      Abandoned? Good, but wasn't it a online game? I thought it would require active servers in order to register an run.
      Anyway, please send me a PM with all the details and links if you have some.
      Looking at the logs, it seems that the game uses D3D11. The problem could be that the hooking of more recent D3D interfaces is not completed yet in DxWnd, it's possible that the 3.0 version is compatible with some newer interface and that I have some wrapper to add. That sounds interesting.

       
  • Kataah

    Kataah - 2020-04-17

    PM Sent.
    Thank you.

     
  • gho

    gho - 2020-04-17

    The problem with the new Disney Infinity 3.0 must be some video codec that makes an early change of screen resolution just before or without that DxWnd can stop it.
    The attached export seems to work well enough: the "Hot patch" flag intercepts the video resolution change and the "Video / Locked size" flag avoids window size changes after a minimize / restore operation.
    p.s. tested with new v2.05.49, but I doubt it makes the difference.
    What else? Enjoy ....

     
  • Kataah

    Kataah - 2020-04-17

    This is wonderful.
    Yet it somehow still refuses to work.
    Hmmm, at this point i ask myself why this is constantly happening on my end. Same with the South Park Game, which "huh" even tested on his Windows 10 System and it worked on his side but not for me.
    Something must been different on my system. I don´t know. But it´s a freash 5 days old Reinstall...

    With the "Hot Patch" it even refuses comletely to even start. :(

     

    Last edit: Kataah 2020-04-18
    • gho

      gho - 2020-04-19

      Hot patch can cause big troubles. I'll explain you why ....
      Let's take a generic system call (let's call it "Call") that has a widestring / ansi implementation. So, You'll have in the system dll two entries, like CallA and CallW (Windows is plenty of such situations).
      So, your game references CallA and this call is hooked by DxWnd to activate a wrapper. The same thing DxWnd does for CallW. The two calls have an independent implementation in the system dll. If you use hot patch, both functions (CallA and CallW) are hooked, but only one hook is activated by the game.
      Now your Window system receive a patch that makes CallA calling CallW internally: that is legitimate, since CallA still works correctly. But now through hot patching the wrapper will be called call twice, once for CallA and later for CallW! This causes troubes like endless recursive loops.

      I'm not sure this reasonong is easy to follow, but the point is this: you may have your game / DxWnd / Window system that works perfectly through a hot patched hook, and then all of the sudden you get a Windows update that changes something in a system library implementation and the toy is broken.

      Anyway, maybe it's possible to detect something from the logs. Can you collect some?

       
  • Kataah

    Kataah - 2020-04-20

    I created 2 Logs. One with the Hot Patch and one without.

     

    Last edit: Kataah 2020-04-20
    • gho

      gho - 2020-04-20

      The hotpatch.log file is quite similar to my log file, but it stops after the CreateDeviceAndSwapChain while in my case the processing goes on. Look at a chunk of my log: you can see the operations after the CreateDeviceAndSwapChain line.

      DXWND: Initial display mode WxH=(1920x1080) BitsPerPel=32
      DXWND: set screen size=(800,600)
      InitScreenParameters: dxversion=0 RGBBitCount=32
      SetBltTransformations: colors=32->32 renderer=3("primary surface") filter=0(none) scaling=(0,0) supported=YES
      SetWindowLong: hwnd=0x90bf0, Index=0xfffffffe() Val=0x3bf20828
      SetWindowLong: hwnd=0x90bf0, nIndex=0xfffffffe, Val=0x3bf20828, res=0
      Registered DLL FileName=d3d11.dll
      LoadLibraryA: push idx=0x10 library=d3d11.dll hdl=0x68610000
      HookDirect3D11: module=0x68610000 version=0
      CreateDeviceAndSwapChain(D3D11): DriverType=0x1 Flags=0 FeatureLevels=0x4 SDKVersion=0x7
      CreateDXGIFactory2: flags=0x80000000 riid={7B7166EC-21C7-44AE-B21A-C9AE321AE369}(IID_IDXGIFactory)
      EnumDisplayDevicesW: device=(null) devnum=0 flags=0x2
      EnumDisplayDevicesW: cb=0x348 devname=\\.\DISPLAY1 devstring=Intel(R) UHD Graphics 620 stateflags=0x900005
      EnumDisplayDevicesW: device=(null) devnum=1 flags=0x2
      EnumDisplayDevicesW: cb=0x348 devname=\\.\DISPLAY2 devstring=Intel(R) UHD Graphics 620 stateflags=0x800000
      EnumDisplayDevicesW: device=(null) devnum=2 flags=0x2
      

      it should be noted that whatever follows is a tracing of the CreateDeviceAndSwapChain internal processing, up to the call conclusion that is later on at this line (in my log):

      CreateDeviceAndSwapChain(D3D11) OK: device=0x3373af4 immcontext=0x337c424 swapchain=0x3cd0f638
      

      In your computer the flow never reaches the CreateDXGIFactory2 operation.
      The other log file instead shows a successful completion:

      CreateDeviceAndSwapChain(D3D11): DriverType=0x1 Flags=0 FeatureLevels=0x4 SDKVersion=0x7
      SetClipCursor:
      SetClipCursor: ASSERT hWnd==NULL
      CreateDeviceAndSwapChain(D3D11) OK: device=0x3cf476e4 immcontext=0x3ce29798 swapchain=0x3cf28ab8
      

      but the DXGI operations inside the call are not traced and not hooked, so DxWnd can't tell DXGI to set a window mode device and the game starts fullscreen.
      If you don't mind you could do a third test: run the game with hot patching but unchecking the "Run in window" flag. The game would start in fullscreen mode, but if it doesn't crash I may get a clue about what goes different from your machine and mine.

       

      Last edit: gho 2020-04-20
  • Kataah

    Kataah - 2020-04-20

    Okay, here it is.

     
  • gho

    gho - 2020-04-20

    So, the facts:
    1) the game works perfectly without DxWnd
    2) the game works when hooked with DxWnd without hot patching, but in fullscreen mode only
    3) if the game is hooked by DxWnd with hot patch it crashes, no matter if in window or fullscreen mode
    4) the game crashes within D3D11CreateDeviceAndSwapChain function call
    5) on my computer, hot patch imply the hooking of the internal method CreateDXGIFactory2 and it works
    6) on your computer in hot patch, the game never reaches CreateDXGIFactory2 (there's no log about it)

    I found this: https://android.developreference.com/article/14964060/IDXGIFactory+versions : I'm wonderig if by chance your computer has a newer DXGI setting and the game is using some of the newer interfaces ... I'll try to wrap them as well, it's a boring job and it's not sure it will fix your situation, but it has to be done....

    Finally, if you google "CreateDXGIFactory2 error" you get flooded by a big number of web pages. Maybe one of these could tell something useful in your case?

     

    Last edit: gho 2020-04-20

Log in to post a comment.

MongoDB Logo MongoDB