tsunamods-codes / 7th-Heaven

The Ultimate Mod Manager for Final Fantasy VII PC
https://7thheaven.rocks/
Microsoft Public License
129 stars 25 forks source link

Linux modding tutorial (Wine, Proton, Lutris)...maybe? #19

Closed junglized closed 1 year ago

junglized commented 3 years ago

It's not really a bug but rather tutorial request. I'm on Pop!_OS using Lutris for gaming. Everything works just fine. Unfortunately I can't figure out how to run 7th Heaven with any version of FF7. Could anyone provide a simple tutorial on how to mod FF VII with Wine or Steam + Ptoton version?

Thanks a lot!

julianxhokaxhiu commented 1 year ago

I updated the priority as a reminder for a follow up. Great job there, looking forward to an easy installer.

SeongGino commented 1 year ago

Please advise on how to resolve this popup when attempting to start modded FF7 on latest canary & wine-staging *with a Linux native .NET 7.0.x instance installed on the host. 2023_01-14 Error-123958 Aside from dinput through Winetricks, prefix is only using what 7H canary installer provides.

CLARIFICATION: this resolved itself after uninstalling any dotnet related native packages from my system; however, one of my (unrelated) apps has dependence on native .NET, so the environment variable that directs to the native Linux versions of the packages throws Wine off. This was a problem I have come across with Vortex Mod Manager in the past, which had the exact same issue of detecting Wine's .NET despite it being installed properly until I force-fed it the proper path in the prefix rather than my host system (though this resolved itself as the native instance turned over to .NET 7, while Vortex continues to use .NET Desktop 6.x) Seems like 7H is unable to find the 32-bit half of .NET 7.0.1, hence the error in launching w/ mods despite being able to run the launcher.

sjenkins7 commented 1 year ago

Seems like 7H is unable to find the 32-bit half of .NET 7.0.1, hence the error in launching w/ mods despite being able to run the launcher.

Hopefully these kind of things will be less of an issue going forward, as wine shouldn't be able to see the native install in the proposed Flatpak

ChthonVII commented 1 year ago

May I ask for a recap of this very long thread? It sounds like there have been fully working configurations at a couple points, but it's not super clear what's actually needed at this point.

It sounds like the following should be a working configuration. Please correct what's wrong and missing:

sjenkins7 commented 1 year ago

There are 2 trains ongoing, which is likely where the confusion is coming from. For simplicity sake, I'll focus just on the Canary, as this will eventually become the new stable.

If you have .NET 7.0 installed natively, it may interfere ( see https://github.com/tsunamods-codes/7th-Heaven/issues/19#issuecomment-1382869290 )

If you wish to use DXVK, bear in mind config is required ( see https://github.com/tsunamods-codes/7th-Heaven/issues/19#issuecomment-1345712192 )

Please note that generally speaking - closing FF7 will cause the app to hang.

Any further talk in here is likely to be about packaging & potentially usable wine versions ( because staging is not available as a Flatpak, which is currently stalling progress )

EDIT: missed a step

dotaxis commented 1 year ago

Running 7th Heaven Stable with Bottles: https://www.youtube.com/watch?v=ZtZNSPygxyY

Running 7th Heaven Canary with GE-Proton: https://www.youtube.com/watch?v=Wfh-pE_TvGw

SeongGino commented 1 year ago
* the following installed via winetricks:
    winetricks -q d3dx9
    winetricks -q msls31
    winetricks -q riched20
    winetricks -q corefonts
    winetricks -q d3dcompiler_43
    winetricks -q d3dcompiler_47
    winetricks -q dinput

FWIW, I haven't needed to do any of the noted above Winetricks in the clean prefix I made, apart from dinput - the prereqs provided from/installed by the Canary installer (and having no native Linux .NET 7 install) makes it work out of the box with either Wine-GE or Wine-Staging (with just the former crashing the catalog downloader module for whatever reason, at least until it's updated?). Though this is on Lutris w/ DXVK & VKD3D installed in the prefix.

But, yeah--other than that, just use a clean prefix with dinput, install 7H using the Canary installer version, make a Wine virtual drive with the FF7DISC1 label, and it'll basically 'just werk'* at this point. Been working great with mods, and loads a hell of a lot faster than the old Stable version using the geriatric specific Wine version it required.

ChthonVII commented 1 year ago

@sjenkins7:

I followed you instructions with minor deviations, but I'm afraid 7H crashes with a stack overflow when I try to execute it: 0108:err:virtual:virtual_setup_exception stack overflow 1808 bytes addr 0x1d36898 stack 0x208f0 (0x20000-0x21000-0x1a0000)

Deviations:

If anyone could toss up a .86 download somewhere, I'd appreciate it.

Also, do I absolutely need 7H? Is it possible to manually unpack the iro files into FFNx's mod directories and achieve the same result? Or does 7H have some functionality above and beyond what FFNx does? (On further thought, it would probably work better to unpack them elsewhere and then symlink stuff into the FFNx directories. That way I could simulate a "load order" change without having to re-unpack stuff that had been overwritten.)

julianxhokaxhiu commented 1 year ago

Also, do I absolutely need 7H? Is it possible to manually unpack the iro files into FFNx's mod directories and achieve the same result? Or does 7H have some functionality above and beyond what FFNx does?

7th has an internal way to ensure you load files based on how many mods you load, and there are some dynamic behavior done that mods do use to provide special functionalities. So dropping files manually unfortunately won't make the mods work as you might expect.

Related to the 7th version, nothing critical changed between .86 and .89. I suspect the major difference here is Wine. Consider using the version suggested by @sjenkins7 and feel free to join the Discord channels for better support.

sjenkins7 commented 1 year ago

I followed you instructions with minor deviations, but I'm afraid 7H crashes with a stack overflow when I try to execute it: 0108:err:virtual:virtual_setup_exception stack overflow 1808 bytes addr 0x1d36898 stack 0x208f0 (0x20000-0x21000-0x1a0000)

I've just run .89 locally to make sure & it launches fine using:

$ wine --version
wine-7.22 (Staging)

I would suggest making sure you use this for now. I'm not aware of any distribution that has decent staging packages beyond this yet.

If I get time, it might prove useful for me to understand the staging patching process, so I can narrow down which patch(es) we require, in order to know when we can switch to a normal / stable build. On the face of it, that looks like a pretty big task though, so that will take some time.

SeongGino commented 1 year ago

Also checked to make sure, using versions that report as wine-7.22 (Staging) and wine-8.0rc4.r0.g89374093 ( TkG Staging Esync Fsync ) (in Arch these are wine-staging from multilib and wine-tkg-staging-fsync-git from AUR, respectively), 7H and modded FF7 are definitely working fine with either as of current Canary.

ChthonVII commented 1 year ago

Still getting nowhere with 7.22

export WINEPREFIX=~/.wine-ff7h
export WINEVERPATH="/home/<username>/Programs/wineforks/vanilla722/dist"
export WINELOADER="/home/<username>/Programs/wineforks/vanilla722/dist/bin/wine"
export WINESERVER="/home/<username>/Programs/wineforks/vanilla722/dist/bin/wineserver"
export WINEDLLPATH="/home/<username>/Programs/wineforks/vanilla722/dist/lib64/wine":"/home/<username>/Programs/wineforks/vanilla722/dist/lib/wine":"/home/<username>/Programs/wineforks/vanilla722/dist/lib64/wine/x86_64-windows":"/home/<username>/Programs/wineforks/vanilla722/dist/lib/wine/i386-windows"
export LD_LIBRARY_PATH="/home/<username>/Programs/wineforks/vanilla722/dist/lib64":"/home/<username>/Programs/wineforks/vanilla722/dist/lib":"/home/<username>/Programs/wineforks/vanilla722/dist/lib64/wine/x86_64-unix":"/home/<username>/Programs/wineforks/vanilla722/dist/lib/wine/i386-unix"
export PATH="/home/<username>/Programs/wineforks/vanilla722/dist/bin:$PATH"
export WINE="/home/<username>/Programs/wineforks/vanilla722/dist/bin/wine"
wine --version
<output: wine-7.22>

winecfg
<prefix is created>
cd .wine-ff7h/drive_c/
mkdir Temp
cd Temp
cp ~/Installs/WINE/FF7/7thHeaven/v2fork/windowsdesktop-runtime-7.0.2-win-x* .
cp ~/Installs/WINE/FF7/7thHeaven/v2fork/7thHeaven-v2.9.9.89_Release.exe .
wine windowsdesktop-runtime-7.0.2-win-x86.exe
<click through installer>
wine windowsdesktop-runtime-7.0.2-win-x64.exe 
<click through installer>
wine 7thHeaven-v2.9.9.89_Release.exe
<click through installer>
<leave "run 7th Heaven" checkbox checked>
<crash: 01cc:err:virtual:virtual_setup_exception stack overflow 1808 bytes addr 0x1d46898 stack 0x208f0 (0x20000-0x21000-0x1a0000)>
sjenkins7 commented 1 year ago

You are using a non-staging release, which is likely why it doesn't work.

Need to make sure that wine --version specifically reports (Staging).

If you do not have a distribution that packages this for you, then you will have to build it yourself sadly - As far as I know, the WineHQ website doesn't have premade packages for this

ChthonVII commented 1 year ago

You are using a non-staging release, which is likely why it doesn't work.

Yep. That was it. I grabbed the devel binaries by mistake. Always thought devel had the staging patches, though... Guess not.

If you do not have a distribution that packages this for you, then you will have to build it yourself sadly - As far as I know, the WineHQ website doesn't have premade packages for this

They've got binaries for at least some distros. Here are the Debian files. (Just use dpkg-deb to extract the two i386 packages to one directory, and the two x86-64 packages to another directory, then cut/paste the x86-64 directory over the top of the i386 one, overwriting conflicts.)

I'm seeing 3 bugs right now, none of them fatal:

  1. FF7 always hangs on exit.
  2. Sometimes 7H renders its modal dialogs with black text/buttons on a black background, which is unusable. (This is using the light theme, so it's the background that's wrong.) Closing and restarting the program restores the correct behavior.
  3. The DX11 renderer does not work out of the box. The opening movies have incorrect colors (seems like the wrong pixel format) and the first menu screen is a jumbled mess. I'm guessing this is due to the lack of DVXK. OpenGL and Vulkan both appear to work fine though (at least for the first 10 minutes or so that I've tested). Is there any reason to prefer DX11?
julianxhokaxhiu commented 1 year ago
  1. FF7 always hangs on exit.

Update FFNx to the latest canary.

SeongGino commented 1 year ago
  1. The DX11 renderer does not work out of the box. The opening movies have incorrect colors (seems like the wrong pixel format) and the first menu screen is a jumbled mess. I'm guessing this is due to the lack of DVXK. OpenGL and Vulkan both appear to work fine though (at least for the first 10 minutes or so that I've tested). Is there any reason to prefer DX11?

@ChthonVII Assuming you're not using Lutris to set up the prefix, that would be correct. I'm using the Vulkan backend, but another suggested the DX12 backend with VKD3D if you have stability problems.

julianxhokaxhiu commented 1 year ago

I'll close this issue as the hardest part to make it work has now been done and it has been proved to be effective. Anything else regarding Linux packaging and so on will be continued on Discord. Thanks to everyone for the effort in achieving this huge milestone!

SeongGino commented 8 months ago

I'd received a notif about someone saying the .NET8 update not working.

Just coming in to say: still works here. 2024_03-01 114744-7th Heaven v3 4 0 0 - Mod Manager for Final Fantasy 7 ( Maintained by the Tsunamods Team )  Default  2024_03-01 115134