Repository navigation
Conversation
… entries A library entry that names one of FINAL FANTASY XIV's own programs gets a Square Enix section. Play then opens a sign-in sheet that checks server status and the boot version, signs in (one-time passwords and free trial accounts included), registers the session and starts game/ffxiv_dx11.exe with it. Sign-in can optionally be remembered in the iOS Keychain. Under a Windows license, a patched arm64ec ntdll hides wine_get_host_version from GetProcAddress, and the game starts in the Wine desktop because its Windows version restarts itself. Under a Mac license the game starts as is. docs/SQUARE_ENIX_SIGNIN.md records the protocol, the license findings and where each fact came from. tools/sqex-signin-probe.py runs the sign-in once from a Mac, and tests/host/check-square-enix-signin.py covers the protocol. Signed-off-by: Trey Boyer <17682352+wwboyer@users.noreply.github.com>
wwboyer
force-pushed
the
feat/square-enix-login
branch
from
October 30, 2026 16:39
724d6c2 to
f52634b
Compare
wwboyer
marked this pull request as ready for review
October 30, 2026 16:48
When sign-in or the gate is closed, the message now tells the user to check the FFXIV Lodestone for details instead of only to try again later. Signed-off-by: Trey Boyer <17682352+wwboyer@users.noreply.github.com>
An outdated game's session registration replies 200 with a patch list and an X-Patch-Unique-Id, so the header alone let an outdated client launch. A reply whose body lists patches now ends the sign-in with "The game needs an update", naming the newest target version. Found with the probe's --save-reply for game version 2012.01.01.0000.0000. Signed-off-by: Trey Boyer <17682352+wwboyer@users.noreply.github.com>
Session registration answers a current game with 204 and the session ID, seen on the iPhone with the patch-list check in place; sign-in and launch still work with both licenses. Signed-off-by: Trey Boyer <17682352+wwboyer@users.noreply.github.com>
125hz
added a commit
that referenced
this pull request
Nov 2, 2026
Their changes are already on main as squashed commits, one per pull request, each authored by its author, in the order the wave's integration branch merged them: #516, #517 and #515 (125hz), #512, #484, #490, #491, #493, #511, #485, #494, #499, #475, #489 and #498 (insertfloppy), #510 (alantangok), #501 and #486 (Jelly-RayTian), #477 (intraducine), #505 (llamajose), #496 (g6c8jfntbc-dotcom) and #521 (125hz). #473's entitlement fix is on main as its one commit; the rest of that branch is stacked on another PR's branch and already on main through #476 and #483. This merge only adds the pull requests' heads as parents (the ours strategy changes no files), so GitHub shows them as merged. Three maintainer commits sit between them: the dxmt and FEX pins after the submodule merges, the background keep-alive leaving an endpoint iOS stopped alone (#498 follow-up), the frame generation fix with the rebuilt arm64ec kernelbase.dll and d3d9.dll, and the Settings pages for the sections this wave adds (#521 follow-up). The submodule pins were fast-forwarded onto their branches so the pinned commits stay as they are: willfaust/wine#69 and #67 (madeira-lgpl), willfaust/FEX#37 and #36 (ios-port-2607), willfaust/dxmt#53, #52 and #54 (ios-port) and willfaust/madeira-dock#8 (main). The tree is the one the wave's IPA was built from and tested on device. Not in this wave: #518, #519, #520, #523 and #524 came in after the device test and wait for the next one; #488 waits for a decision; #522 conflicts. Pull requests: #516 #517 #515 #512 #510 #501 #486 #477 #484 #490 #491 #493 #505 #511 #485 #494 #496 #499 #475 #489 #498 #521 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Author
|
Closing this for now - I got a lot closer to a full download and patching system much more quickly than I thought I would given that I'm no longer trying to utilize code from other projects, so I'm going to continue working on that and open a PR for a complete solution rather than have this half-baked one merged. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Square Enix sign-in support for FINAL FANTASY XIV library entries, so the game can start from Madeira without Square Enix's launcher. Square Enix's launcher doesn't run in Madeira's Wine setup (It's a CEF/WebView2 app that just shows a webpage), but the actual game itself runs incredibly well in Wine.
What it does
game/ffxiv_dx11.exewith that launch's session.wine_get_host_version, which returnsDarwinunder Mac OS and (obviously) doesn't exist on Windows.Darwin.ntdll(build/wine-pe/patches/ntdll-hide-wine-host-version.patch, applied bybuild-ntdll.shfor its build only) hides that function fromGetProcAddress. Load-time imports still resolve.What it doesn't do (for now)
drive_c.Downloading and patching would fit on top of this later: the boot check already parses the patch list (target version and download URL).
Details
docs/SQUARE_ENIX_SIGNIN.mdcovers the protocol, the license findings and where every fact came from.app/Madeira/SquareEnixSignIn.swift(the protocol; Foundation and CryptoKit only)app/Madeira/SquareEnixSignInView.swift(the UI and Keychain)tests/host/check-square-enix-signin.pytools/sqex-signin-probe.py(runs the sign-in once from a Mac, without starting the game)LibraryEntrygains three optional fields, plus a transient program next to its transient arguments.Info.plistallows plain HTTP topatch-bootver.ffxiv.comonly. In the login process, there is a specific boot update check that requires a GET request to an HTTP endpoint. HTTPS requests will fail, so an exception needs to be made forpatch-bootver.ffxiv.com.DEV.TestSID.ntdll.dll, rebuilt with the patch, is committed.Testing
check-square-enix-signin.py --require-swiftpasses, along withcheck-frontend,check-epic-games,check-game-recommendations,check-runtime-settings,check-control-presets,check-config-catalog,check-log-redaction's new case andcheck-doc-links.check-steam-games("no Launch arguments for a Steam game") fails onmainas well, and so doescheck-log-redaction's ntdll wiring count.Disclosure
The code, documentation, and this pull request were written with the help of Claude Opus 5.5 (Anthropic).