Next generation modding platform for Final Fantasy VII and Final Fantasy VIII (with native Steam 2013 release support)
FFNx is a continuing evolution of the FF7_OpenGL driver, made by Aali.
FFNx today in a nutshell:
- Uses an easy, drag-n-drop installation experience, see How to Install
- Comes built-in with 7th Heaven v2.3 and higher
- Supports the newest video and audio codecs (WEBM, H.265, Ogg, etc.)
- Drastically enhances the gameplay experience compared to the vanilla experience
- Provides four stable and one experimental rendering backends:
- DirectX 11 (default)
- DirectX 12
- Vulkan
- OpenGL
FFNx is developed by a core team, currently composed of:
- Julian Xhokaxhiu (TrueOdin, 🇪🇸 Spain)
- Tang-Tang Zhou (vertex2995, 🇮🇹 Italy)
- Jérôme Arzel (myst6re, 🇫🇷 France)
- CosmosXIII (Cosmos, 🇯🇵 Japan)
We are always open for contributions via PRs, and in case you want to join the core team, feel free to approach us on Discord and we will evaluate on a case-by-case basis.
- /LARGEADDRESSAWARE support. Up to 3.5GB of RAM available for mods (this requires the 4GB Patch in your ff7.exe).
- High DPI support
- HDR support
- Up to 16x anisotropic support
- Up to 16x antialiasing support
- 5.1/7.1 audio output support
- Steam support; no game converter required
- Steam savegame preservation (you no longer lose saves created while FFNx is active)
- XInput controller support (Xbox 360 and compatible) with D-Pad working out-of-the-box
- Native speedhack support
- External music loading to replace original MIDIs
- The game continues to run within an inactive window
- 60 FPS
- eStore support! No game converter required
- Vertical centering for fields and movies
- Fullscreen battle scenes
- Menu cursor vertically aligned on the center of words
- Movies continue to play while running in an inactive window
- Movie volume respects global sound volume
- Steam sound and music volume configuration preservation (configure at your pleasure and on the next run it will be inherited)
- Configurable background transparency in battle dialogs (by default set to 75%)
- SFX volume change applies in real-time, instead of requiring a game reload
- Support for animated textures (like Aerith's waterfall, light fading, etc.)
- Support for soft-reset while you're playing, just like the PSX
- Support for battle toggle (enable/disable at your own pleasure)
- Voice acting! Echo-S was the first mod to take advantage of this!
- Support for external SFX audio effects
- Support for external ambient audio effects
- Support for external movie audio files (allows multiple videos to share the same audio)
- Support for external movie voice acting (dedicated audio layer only for voice acting on top of movies)
- Steam achievements can be unlocked while playing within FFNx
- Real-time light engine - You can now feel the game visually like never before
- Real-time camera control in battles
- Analogue controls using the full axis of your left analog stick
- Vibration support
- Analog controls improved support
- Voice acting! Echo-S was the first mod to take advantage of this!
- Various graphical patches for worldmap included
- Enable the VRAM debug window while playing in order to see how the engine uploads textures
- Support for external SFX audio effects
- Support for external movie audio files (allows multiple videos to share the same audio)
- Support for external movie voice acting (dedicated audio layer only for voice acting on top of movies)
- Support for external music audio with music resume after battle and improved volume transitions
- Game rendering inspection through RenderDoc
- DDS Texture support up to BC7 format, with PNG support as fallback
- Support for configurable external textures path using mod_path
- Support for an override layer of the data directory using override_path
- Support for MINIPSF audio files using the emulated PSX/PS2 AKAO Engine
- Support for Hext patching files inside of the hext_patching_path
- Debug in-game engine data through imgui integration
For a more in-depth documentation feel free to visit the docs/ folder.
Vanilla/Steam |
---|
If you're curious to know, FFNx makes use of:
- C++ code base
- Latest MSVC available on Visual Studio 2022 Community Edition
- vcpkg (dependency manager)
- CMake (make files)
- BGFX (backend renderer)
- BIMG (custom textures)
- FFMpeg with H/W accelleration support
- VGMStream using FFMpeg as backend (with loop support!)
- tomlplusplus (configuration management)
- StackWalker (log file stack traces)
- pugixml (Steam XML manifest)
- md5 (Steam XML manifest)
- libpng (better and faster PNG texture support)
- imgui (DevTools in-game interface)
- imgui_club (imgui Memory Editor Widget)
- xxhash (fast hash extraction from paletted game texture data, aka animated textures)
- SoLoud (audio engine used to playback audio, music or voice files)
- openpsf (MINIPSF emulation engine to playback PSX/PS2 music files)
- Steamworks SDK (support achievements for the Steam editions of games)
- mimalloc (a compact general purpose allocator with excellent performance)
Available build profiles:
- x86-Release (default, the same used to release artifacts in this Github page)
- x86-RelWithDebInfo (used while developing to better debug some issues)
- x86-MinSizeRel
- x86-Debug (prefer it if you want to use a debugger attached to the game)
Once the project is built you can find the output in this path: .build/bin
Please note:
FFNx uses vcpkg as a package manager to resolve dependencies. Failing to follow these steps will result in build errors.
- Clone the vcpkg project in the root folder of your
C:
drive (git clone https://github.com/Microsoft/vcpkg.git
) - Go inside the
C:\vcpkg
folder and double clickbootstrap-vcpkg.bat
- Open a
cmd
window inC:\vcpkg
and run the following command:vcpkg integrate install
Please note:
This step will speed up your compilation times by avoiding the vcpkg dependencies rebuild.
- Make sure you have NuGet CLI installed.
- Create a Personal Access token ( classic ) with the
write:packages
permission. - Open a
cmd
window and run the following commands ( replaceYOUR_GITHUB_USERNAME
andYOUR_GITHUB_PAT
accordingly ):
$ nuget sources add -Name github -Source "https://nuget.pkg.github.com/julianxhokaxhiu/index.json" -Username YOUR_GITHUB_USERNAME -Password YOUR_GITHUB_PAT -StorePasswordInClearText
$ nuget setApiKey YOUR_GITHUB_PAT -Source "https://nuget.pkg.github.com/julianxhokaxhiu/index.json"
Please note:
By default Visual Studio will pick the x86-Release build configuration, but you can choose any other profile available.
- Download the the latest Visual Studio Community installer
- Run the installer and import this .vsconfig file in the installer to pick the components required to build this project
- Make sure you select the English Language pack in the language list before clicking Install
- Once installed, open this repository as a folder in Visual Studio
- Choose as preset in the status bar the one you desire
- Click the
Build
button
- REQUIRED! Follow up the steps to install Visual Studio, which will also install the MSVC toolchain
- Download and install the latest Visual Studio Code release
- Install the following extensions:
- Open this repository as a folder in Visual Studio Code
- Choose as preset in the status bar the one you desire
- Click the button on the status bar
Build
- REQUIRED! Install Python
- Install cmake-format and make sure the binary is available in your PATH environment variable
- OPTIONAL! Integrate it in your own IDE (eg. for Visual Studio Code use the relative extension)
FFNx offers multiple support channels, pick the one you prefer
- Qhimm Forum: http://forums.qhimm.com/index.php?topic=19970.0
- Tsunamods Forum: https://forum.tsunamods.com/viewtopic.php?p=41#p41
- Qhimm FFNx-FF7 (Final Fantasy VII only): https://discord.gg/N6M6pKS
- Qhimm FFNx-FF8 (Final Fantasy VIII only): https://discord.gg/u6M7DnY
- Tsunamods FFNx: https://discord.gg/Urq67Uz (remember to hit the Red Chocobo reaction!)
This project could have not been a reality if those people would have not worked on FF7 and FF8 with their deep passion and knowledge. FFNx makes use also of their work, and I will never be enough grateful to those people. The order is purely Alphabetical.
These people are:
- Aali:
- for the original Driver code FFNx is based on.
- Chrysalis:
- for the battle fullscreen hext patch
- for the menu cursor vertical centering in menu
- CosmosXIII
- for the real-time light engine
- for the real-time camera control in battles
- for the analogue controls in FF7
- DLPB:
- for original Hext concept and specification that FFNx implemented as well
- for the field vertical centering hext patch, which FFNx provides a default patch for
- for the Soft-Reset original concept
- for the no battle original concept
- dziugo:
- for the original FMV skip concept
- ficedula:
- for 7h 1.x which FFNx provides support for
- Iros:
- for 7h 1.x which FFNx provides support for
- JWP:
- for imgui integration within FFNx
- Kranmer
- for PHS save everywhere Hext patch
- for the no battle original concept
- Maki:
- for FF8 UV Hext Patch in the world map, which FFNx provides a default patch for
- for the help in getting the first iterations of FFNx running on FF8 2000/2013 release
- myst6re:
- for the great tools like Makou Reactor, Deling and many others he did which helped a lot in improving FF8 while working on the code
- for the great help in the code implementing the MINIPSF emulation layer being present inside FFNx
- for the heavy testing and lifting of a lot of bugs being catched in FFNx, for FF8
- for the Steam savegame logic in the manifest.xml for FF8
- for the real-time SFX volume change for FF7
- quantumpencil and Nax:
- for the original CMake files FFNx has based its work upon
- for all the help in getting some logics wired up in the game engine and a lot of hex addresses I would never been able to figure out myself
- Satsuki:
- for the heavy testing and lifting of a lot of bugs being catched in FFNx, for FF7
- for the field vertical centering hext patch, which FFNx provides a default patch for
- for a lot of hex addresses I would have never been able to figure out myself otherwise
- for the original Speedhack concept and help in getting it natively into FFNx
- Sebanisu:
- for the help in getting the first iterations of FFNx running on FF8 2000/2013 release
- for the heavy testing and lifting of a lot of bugs being catched in FFNx, for FF8
- sithlord48:
- for the Steam savegame logic in the manifest.xml for FF7
- TurBoss:
- for 7h 1.x source code release and FFNx enablement
- unab0mb:
- for the official integration of FFNx within 7thHeaven 2.3+
- tangtang95
- for the 60FPS support in FF7
- for the Steam achievements in FF7
- Lord UrQuan
- for finding new and inventive ways to crash our test builds
- for general documentation clean-up
- LaZar00
- for the Snowboard TMD structures
- ChthonVII
- for the R&D needed to match modern display gamuts to the original PSX release
I'm sure I forgot many others. In case you feel you're missing here, feel free to open a PR! I'll be happy to include you because you deserve this.
FFNx is released under GPLv3 license. You can get a copy of the license here: COPYING.txt
If you paid for FFNx, remember to ask for a refund from the person who sold you a copy. Also make sure you get a copy of the source code (if it was provided as binary only).
If the person who gave you this copy refuses to give you the source code, report it here: https://www.gnu.org/licenses/gpl-violation.html
All rights belong to their respective owners.