Repository navigation
Releases
v1.0.0-alpha12
Important
This release build, and all future ones, are signed. Signing ensures your Fahrenheit binaries were not tampered with. Look for a digital signature by 'Open Source Developer Fran Kelava' to know you are working with an official Fahrenheit release.
This release features contributions from many members of the ever-expanding Fahrenheit crew:
What's Changed
We've got full support for the October 1st, 2026 update to FF X/X-2 HD.
- The old, 2019 game version is no longer supported.
- All functionality has been fully restored to its pre-update state.
Done in #330, #336, #337, #338, #339, #340, #341.
We've got more X-2 definitions.
- How about an
Actor? - How about some IDs?
- How about many, many Excel types?
We've got more delegates.
- Which mods based on Fahrenheit graciously delegate to us for further maintenance.
Done in #312.
We've got more custom UI goodness.
- Both save UI styles now work in the opposite game as well.
- Many fine details have been improved in both games' save UIs.
- More GUI helpers are available for all your UI building needs.
- You can no longer accidentally open the Esc menu while in the save UI.
Done in #343, #346, #361, #363, #367.
We've given our launcher a can of bug spray.
- It provides mixed stack traces and guaranteed core dumps under Windows and WINE/Proton.
- Launch arguments have changed. To engage an external debugger, pass
--extdbg. To wait on launch for attach, pass--wait. To pass arguments to the game, place them after a--to separate them from Stage 0 arguments. - Stage 0 will no longer accidentally leak a game process if killed at an inopportune time.
We've set up some settings.
- You can now define your own classes for settings with
FhSettingProvider<T>. - But be aware that the mod configuration UI and the final setting design is yet to be decided.
Done in #322.
We've gone on a diet.
- A 20MB+ diet, to be exact. Fahrenheit is now positively slim, going from a 33MB assembly to 13MB.
Done in #327.
We're keeping a very close eye on the clock.
- Fahrenheit now makes sure certain operations can only be performed at certain times.
- This removes a class of subtle bugs caused by mods doing things out of order.
Done in #323.
We've got all ATEL call targets for FF X in FhCall.
- All 1,516 of them, to be exact.
Done in #316.
We've got one less manifest field, and a slightly more robust loader.
LoadAfteris no longer a manifest field. The SDK has been amended accordingly.- A Fahrenheit mod can no longer accidentally end up loaded twice depending on load order.
Done in #348.
We've got two new names for two beloved objects.
- Call-related objects now generally use that term. Therefore...
FhMethodHandle<T>is nowFhCallHandle<T>.FhMethodLocationis nowFhCallLocation.
Done in #359.
...and many other minor changes, cleanups and bugfixes.
- For those, see the full changelog beneath.
Full Changelog: v1.0.0-alpha11...v1.0.0-alpha12
v1.0.0-alpha11
Important
This release build, and all future ones, are signed. Signing ensures your Fahrenheit binaries were not tampered with. Look for a digital signature by 'Open Source Developer Fran Kelava' to know you are working with an official Fahrenheit release.
This release features contributions from many members of the ever-expanding Fahrenheit crew:
This release is dedicated to a good friend who is no longer with us. So long, Garrett. May your soul find peace among the stars.
What's Changed
Fahrenheit is now licensed under the LGPL, version 3 or later.
We have a new save UI!
- All three games now come with a fully custom, lovingly hand-made save UI.
- And if you want to make your own, a save UI API is provided.
- Player names are now displayed properly for saves in foreign languages. Tidus? ティーダ? Fine by us.
More structures, and more structure.
- Need to read Excel types at runtime?
ExcelReader<T>is ready. - Almost all Excel types for FF X now have mappings.
- X-2 structures have also received numerous improvements.
- We've generated a few new structures from Last Mission header files.
Done in #184, #185, #228, #235, #245, #264, #269, #277, #282, and more.
More functions have vetted delegates now.
- A number of mods have generously upstreamed the fruits of their reversing work for all to use.
Done in #160, #229, #239, #263.
We're compatible with everything now. All the time. Some of the time. If you read the manual.
- We've rechecked and made sure Untitled Project X, RivaTuner Statistics Server, and ffgriever's EFL work with us.
- Read the compatibility guide for important details. Avoid it at your own peril.
Method handles have been reworked.
- They are now generated for all functions.
- They are idempotent. All method handles share the same, consistent view of the target method.
- A revised, flexible chain syntax allows continuation from any point under your control.
- Functions identical between games have been fused into a single call stub.
- The framework now keeps hook delegates alive on behalf of the user.
- Hook ordering now properly follows load order instead of inverting it.
The mod settings API is tentatively available.
- Mods can now load and store a few types of basic settings, accessible through the F7 menu in-game.
- This system and menu are a heavy work-in-progress and do not have a finished interface.
Localization API has been improved.
- Localization is now split per-module for ease of maintenance.
- There are new rules for referring to your own localization versus another mod's localization.
Done in #196.
The SDK has been improved.
- Manifests are now autogenerated based on a mix of well-known and custom MSBuild properties.
- Symbols are no longer embedded in DLLs, but given alongside mod DLLs as portable PDBs.
- Symbols are uploaded to NuGet as symbol packages for ease of consumption.
Done in #166.
Tools have received a lot of love too, and run natively on both Windows and Linux.
- Our tools no longer use Win32 program stubs, but an OpenGL3 + SDL3 base.
- As a result, you can now run them natively on
win-x86,win-x64, andlinux-x64. - DEdit now features a standalone macro decompilation mode.
- STEP has been comprehensively reworked to ease import of Ghidra data.
Done in #205, #213, #214, #216, #217.
Exception handling has been improved for Windows systems.
- The game should no longer randomly fail to produce core dumps.
- The produced core dumps should contain more useful information.
- On Linux systems, unfortunately, WINE/Proton limitations render these improvements moot.
The game's memory allocation behavior has been improved.
- The game should no longer require the 4GB patch to run Fahrenheit. Green-screens will occur much less frequently.
- We still recommend that you use the patch for the moment, though.
The (External) File Loader has been vastly improved.
- EFL file matching is now done case-insensitively. No more worrying about whether it's
FFX_Dataorffx_data. - Remember that silly
../../..you had to prepend to most paths? It's just/now. - You can now load any file from the VBF at runtime.
- You can now load any file from the other game's VBF at runtime. You heard us right; X-2 assets in X, and vice versa.
- In both cases, the EFL will automatically activate when required and provide replacements for both games' assets.
The save manager has a few extra tricks up its sleeve.
- The autosave is no longer counted as a full save.
- Set limit? What set limit? Save as many times as you like to a single set. Be our guest!
- Note, however, that you use extremely large set sizes at your own peril. Performance may be substantially degraded.
Eastern languages are better supported.
- We now ship CJK variants of Noto Sans so those languages' glyphs can properly render.
- The text encoder now supports automatic extension of Unicode Basic Plane characters into their full-width, CJK forms.
...and many other minor changes, cleanups and bugfixes.
- For those, see the full changelog beneath.
New Contributors
Full Changelog: v1.0.0-alpha10...v1.0.0-alpha11
v1.0.0-alpha10
An automatic test release so latest binaries are available for consumption.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
Important
This release build, and all future ones, are signed. Signing ensures your Fahrenheit binaries were not tampered with. Look for a digital signature by 'Open Source Developer Fran Kelava' to know you are working with an official Fahrenheit release.
What's Changed
- Add Phyre interop layer, allow game asset loading by @fkelava in #119
- Add
MessageCue, implement custom message cues by @EvelynTSMG in #139 - Generate call stubs for all functions by @fkelava in #145
and a number of other housekeeping and maintenance PRs.
Full Changelog: v1.0.0-alpha09...v1.0.0-alpha10
v1.0.0-alpha09
An automatic test release so latest binaries are available for consumption.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
Important
This release build, and all future ones, are signed. Signing ensures your Fahrenheit binaries were not tampered with. Look for a digital signature by 'Open Source Developer Fran Kelava' to know you are working with an official Fahrenheit release.
Full Changelog: v1.0.0-alpha08...v1.0.0-alpha09
v1.0.0-alpha08
An automatic test release so latest binaries are available for consumption.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
Important
This release build, and all future ones, are signed. Signing ensures your Fahrenheit binaries were not tampered with. Look for a digital signature by 'Open Source Developer Fran Kelava' to know you are working with an official Fahrenheit release.
What's Changed
- Update StNumber, SaveData, Command and PlySave Fields by @cxldalyy in #89
- Adjust logging level for FhLocalStateModule by @EvelynTSMG in #94
- Update LpAbilityMapEngine and Sphere Grid element structs by @EvelynTSMG in #95
- Add TkWindow, TkMenu, Sphere Grid related fields by @Rurusachi in #96
Full Changelog: v1.0.0-alpha07...v1.0.0-alpha08
v1.0.0-alpha07
An automatic test release so latest binaries are available for consumption.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
v1.0.0-alpha06
An automatic test release so latest binaries are available for consumption.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
v1.0.0-alpha05
An automatic test release so latest binaries are available for consumption.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
v1.0.0-alpha04
An automatic test release so latest binaries are available for consumption.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
v1.0.0-alpha03
An automatic test release to let people grab finished binaries of the latest DEdit.
As usual, prerelease builds may be used at your leisure, but are not officially supported in any way, shape or form.
Changelog: v1.0.0-alpha02...v1.0.0-alpha03