原本有 4cd 的實體版本, 所以一直沒買 steam 版。
後來看到 list 1 的消息, 就購入 steam 版本 ff7, 賭新版本的好處。主要是持有舊版 ff7, 會送新版 ff7 (不是 ff7 remake/rebirth), 是送新版 ff7 original。
 |
| fig 1. 20260130 購入 steam 版 ff7 original, 140nt |
不過後來發現每次玩都要登入 Square Enix account (購買頁面有注明: 需要第三方帳戶: Requires a Square Enix account), 為此還要註冊一個 Square Enix account, 而 ff8 remaster 卻不需要登錄就能玩。
用 steam deck 執行, 每次玩都要打一次帳號密碼, 蠻麻煩的, steam deck 又沒有實體鍵盤, 不好打字, 而我的環境並不一定會有網路, 如果我在火車上想玩, 但沒有網路, 就不能玩了, 我很厭惡這樣的機制, 一般有這種機制, 就不想買, 這次算中招了, 其他 ff 系列都不需要登錄, 不知道為什麼 ff7 original 會需要登錄, 讓我購買時大意沒看到這點。
用 7th Heaven Mod Manager 解決這問題, 每次都要登錄真的很煩。
麻煩的來了, 在 windows 上很容易安裝 7th Heaven Mod Manager, 在 steam deck/linux 怎麼辦?
事實上安裝 7th Heaven Mod Manager 也真的比我想的還要複雜。
https://github.com/dotaxis/7thDeck 提供了一個 script, 可以輕鬆安裝 7th Heaven Mod Manager, 可惜不知道什麼緣故, 我沒能成功透過這個 script 安裝成功。不過透過安裝一個非 steam 遊戲倒是把 7th Heaven Mod Manager 3.5 成功安裝起來。以下是 debug 安裝 7th Heaven Mod Manager 過程。
以下影片介紹如何用 https://github.com/dotaxis/7thDeck 安裝 7th Heaven Mod Manager, 也成功執行 ff7。
影片很有趣還拿 ff7 重製版當開頭畫面, 都玩 ff7 original, 怎麼不拿 ff7 original 的片頭畫面。
透過安裝一個非 steam 遊戲安裝起來的的 app id 是 4176347364, STEAM_COMPAT_DATA_PATH: /home/deck/.steam/steam/steamapps/compatdata/4176347364。
ff7 是 39140, STEAM_COMPAT_DATA_PATH 有 2 個地方, 我不確定是不是因為把 ff7 安裝在 sd card 的關係。
-
/home/deck/.local/share/Steam/steamapps/compatdata/39140
-
/run/media/deck/SPCC/steamapps/compatdata/39140
而安裝一套遊戲除了建立 compatdata 還有其他目錄, 例如遊戲本身安裝在哪個目錄: "/run/media/deck/SPCC/steamapps/common/FINAL FANTASY VII"
compatdata 是一個 windows 環境, 對應到 windows 那些目錄, 大概像 list 2:
我本來以為遊戲本身會和 wine 一樣, 安裝在 drive_c 裡頭, 不過 proton 看來不是這麼做。需要用 z: 來存取到 linux 根目錄。
這個 z: 不是 windows 磁碟 z 槽, 是一個 symbolic links, 名稱為 z:, 指向 / 。不熟悉 linux 的使用者可能會覺得很奇怪, 不過單純就是這樣。
安裝 7th Heaven Mod Manager 應該要把程式裝到 39140 環境才是, 但透過非 steam 遊戲會有一個新的 app id。
查看 https://github.com/dotaxis/7thDeck install.sh, 改寫為 r7th.sh, 把 7th Heaven Mod Manager 安裝到 39140 環境, 主要是需要 STEAM_COMPAT_DATA_PATH, STEAM_COMPAT_CLIENT_INSTALL_PATH 這2個環境變數, 並透過 proton 9.0 執行 ./7thHeaven-v3.5.1.0_Release.exe, ./7thHeaven-v3.5.1.0_Release.exe 會下載 c++ runtime, .NET Desktop Runtime, 所以省下手動安裝這些 dll 的功夫。當然, 現在我知道怎麼安裝 .NET Desktop Runtime 到特定 app id 了, 甚至只要其中一個 app id 有裝過, 可以透過 symbolic link 就好, 其他 app id 不用重新安裝。
注意: .NET Desktop Runtime 和 .NET Runtime 是 2 套 dll, 不是相同的東西。
裝好之後要怎麼執行 7th Heaven Mod Manager 也是個問題, https://github.com/dotaxis/7thDeck 在安裝後會提供一個 script "7th Heaven.sh" 來執行, 稍微修改一下, 就可以成功執行 7th Heaven Mod Manager。
再來便是把 ./7thHeaven-v3.5.1.0_Release.exe 提供的 ff7.exe 換到 steam ff7, steam ff7 執行檔是 ff7_en.exe, 我的環境在 /run/media/deck/SPCC/steamapps/common/FINAL FANTASY VII, 再來便是透過 7th Heaven Mod Manager 執行這個 ff7.exe。
7th Heaven Mod Manager 提供以下的 exe 檔案。
./SeventhHeavenUI/Resources/WinCDEmu/PortableWinCDEmu.exe
./SeventhHeavenUI/Resources/FF7_1.02_Eng_Patch/FF7Config.exe
./SeventhHeavenUI/Resources/FF7_1.02_Eng_Patch/ff7.exe
./SeventhHeavenUI/Resources/VBusDriver/ScpDriver.exe
./SeventhHeavenUI/Resources/ulgp_v1.3.2/ulgp.exe
./.iss/netcorecheck.exe
./.iss/netcorecheck_x64.exe
成功從 7th Heaven Mod Manager 執行 ff7.exe 之後, 遇到 mount 遊戲光碟失敗問題, list 3 的訊息, 這個是最難的一關, 透過 ai 查詢, 都沒屁用, 還說在 linux 無法透過 powershell mount 光碟。
mount 方法有 3 種, 在 7th Heaven Mod Manager 可以設定, 但都沒用。
https://forums.qhimm.com/index.php?topic=19831.0
1. Mount-DiskImage -ImagePath "C:\7th Heaven\Resources\FF7DISC1.ISO"
2. SeventhHeavenUI/Resources/WinCDEmu/PortableWinCDEmu.exe
第3種應該是程式自己 mount。7th Heaven Mod Manager 是 C# 寫的, 我有去追 7th Heaven Mod Manager source code mount disc 相關部份。
FF7DISC1.ISO 是 7th Heaven Mod Manager 提供的 iso, 主要是騙過 ff7.exe 的檢查光碟機制, FF7DISC1.ISO 裡頭只有一個文字檔案。
最 tricky 的地方來了, 查看 https://github.com/dotaxis/7thDeck install.sh, 有類似 list 5 L1, L2 的修改, 看到後欣喜若狂, 終於被我找到差異點, 補上後, 一樣 mount 不到 FF7DISC1.ISO, 非常洩氣。
後來想到 compatdata 還有另外一個路徑, 就是 list 5 L3, 修改之後, 神奇的事情發生了, 可以 mount FF7DISC1.ISO, 終於可以成功進入 ff7 遊戲畫面, 玩個遊戲好像在 debug, 好累。
透過 ai 查詢, 大概知道 list 5 的意思:
在 Wine / Proton 的 prefix 裡,.windows-label 是一個非官方但被廣泛使用的慣例檔案。
用途:
👉 指定「虛擬 C: 磁碟的 Volume Label(磁碟標籤)」
在真正的 Windows 裡,你在「本機磁碟 (C:)」看到的那個名字,就是 volume label。
相當於 label C: FF7DISC1
.windows-serial 這個檔案用來指定:
👉 虛擬磁碟的 Volume Serial Number(磁碟序號)
在真正的 Windows 裡,你可以用: vol C:
之前搞不定 wine 執行 4cd ff7 版本, 再透過 winecfg 設定 .windows-label/.windows-serial, 之後, 就可以通過 mount cd 的檢查機制了。
安裝 7th Heaven Mod Manager, 除了移除登錄之外, 主要還可以安裝中文 mod, 成功安裝之後, 把中文 mod 也加入測試, 嘗試一陣子, 還是只能對話中文, 選單指令是英文的結果, 就先這樣吧!
 |
| fig 11. 在 steam deck 安裝 7th Heaven Mod Manager 並安裝中文化 mod |
https://github.com/auntiepickle/ff7seventhheavensteamdeck 這邊是另外一個安裝文件, 這個我沒看, 步驟太複雜。
steam deck 實機執行
https://github.com/dotaxis/7thDeck install.sh 惠我良多, 讓我知道要設定什麼環境變數才可以正確執行 proton。
自己安裝的 7th heaven 是裝在 STEAM_COMPAT_DATA_PATH: /home/deck/.steam/steam/steamapps/compatdata/4176347364。
相關的目錄
/home/deck/.local/share/Steam/steamapps/shadercache/4176347364
/home/deck/.local/share/Steam/steamapps/compatdata/4176347364
ff7 相關安裝目錄:
(130)(deck@steamdeck ~)$ sudo find / -name 39140
/home/deck/.local/share/Steam/userdata/138196433/760/remote/39140
/home/deck/.local/share/Steam/steamapps/shadercache/39140
/home/deck/.local/share/Steam/steamapps/downloading/39140
/home/deck/.local/share/Steam/steamapps/common/Steam Controller Configs/138196433/config/39140
/home/deck/.local/share/Steam/steamapps/compatdata/39140
/home/deck/.local/share/Steam/appcache/librarycache/39140
/run/media/deck/SPCC/steamapps/temp/39140
/run/media/deck/SPCC/steamapps/compatdata/39140
ff7 dir : /run/media/deck/SPCC/steamapps/common/FINAL FANTASY VII
從 install.sh 挖出來的相關路徑:
ff7 dir : /run/media/deck/SPCC/steamapps/common/FINAL FANTASY VII
ff7 WINEPATH: /run/media/deck/SPCC/steamapps/compatdata/39140/pfx
ff7 RUNTIME: /home/deck/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/run
ff7 LIBRARY: /home/deck/.local/share/Steam
/home/deck/.local/share/Steam/steamapps/compatdata/39140/pfx/drive_c.org
STEAM_COMPAT_DATA_PATH=/run/media/deck/SPCC/steamapps/compatdata/39140
STEAM_COMPAT_DATA_PATH=/home/deck/.steam/steam/steamapps/compatdata/39140
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/deck/.local/share/Steam
額外一個 pfx
/home/deck/.local/share/Steam/steamapps/compatdata/39140/pfx/drive_c.org
STEAM_COMPAT_APP_ID=39140
STEAM_COMPAT_DATA_PATH=/run/media/deck/SPCC/steamapps/compatdata/39140
STEAM_COMPAT_CLIENT_INSTALL_PATH=/home/deck/.local/share/Steam
/home/deck/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/run -- /home/deck/.local/share/Steam/steamapps/common/Proton\ 9.0/proton waitforexitandrun /VERYSILENT /DIR="Z:$INSTALL_PATH" /LOG="7thHeaven.log" # 需要 STEAM_COMPAT_DATA_PATH, STEAM_COMPAT_CLIENT_INSTALL_PATH 才能正確執行
/home/deck/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper/run -- /home/deck/.local/share/Steam/steamapps/common/Proton 9.0 (Beta)/proton waitforexitandrun /home/deck/7th/7th Heaven.exe