You may want to check Linux version - #79 by Iswad
as mentioned in my last sentence: I do know this script, but I would rather understand what the underlying problem is than to just run some random script.
(edit)
The trick in that script seems to be to patch those DLLs. Interestingly, I see no documentation on that anywhere. I did not see anyone suggesting this on the forums. The IDS filnames are not something thatās commonly found discussed a lot; certainly not with this applied patch.
Each of the IDS dlls is checked for offset 0x3C (e_lfanew), which gives us the location of the actual start of the NT header. Then we write zero in the place where the PE-Header plus 40 bytes, according to ImHexās patterns, this is the majorOperatingSystem field. We seem to be overwriting this with . Thatās where I was wrong. I looked at the wrong offset!0 instead of 6 (likely meaning Windows Vista and later)
I performed these changes manually, but Iām still getting the errors regarding ids_peak_ipl.dll while starting TD.
Hi, Iām the author and maintainer of the TouchDesigner-Linux repo on GitHub.
The ids_peak_ipl.dll crash happens because those DLLs use an entrypoint that Wine canāt handle. The fix (which the script applies automatically) zeroes out the AddressOfEntryPoint. Thatās what makes them load without crashing.
The script also uses Soda instead of Proton or Wine-GE, which works out of the box for TouchDesigner (with an automatic font fix applied on top). Proton works for many things, but for TD specifically, Soda has been more reliable in my testing.
Iām currently working on adding Wine-GE and Proton as supported runners to the project. Should give users more flexibility, better performance, and make the setup more future-proof.
You raised a good point though. The details of these fixes arenāt documented anywhere in a standalone way. I should put together a dedicated page explaining exactly what the installer patches and why. That way people who prefer manual setups can understand and apply the fixes themselves without running the script.
Thanks for the feedback.
Thank you so much for the explanation. I have now understood my error. I added 40 (decimal) on top of (for example) 0x110 offset (hexadecimal) and wrongly ended up at 0x150 when I should have looked at 0x138. ![]()
edit: once you do it right it actually works! ![]()
@Iswad I added a brief explanation to my blogpost (tiny note at the top and two short paragraphs at the bottom):
Thanks for the mention, glad the explanation helped!
I actually discovered your blog post after I had already released the automated version.
Funny how we were both working on the same problem at the same time without knowing.
