Code Monkey home page Code Monkey logo

ffnx's Introduction

FFNx

Next generation modding platform for Final Fantasy VII and Final Fantasy VIII ( with native Steam 2013 release support! )

Introduction

FFNx is an attempt to move forward what you were used to know as FF7_OpenGL driver, made by Aali.

In general, what you can expect out of FFNx is:

  • One single .dll file to be copied
  • Support for 7h 1.x/2.x
  • Support for newest video and audio codecs ( WEBM, H.265, etc.)
  • VGMStream built-in library WITH LOOP support for .ogg files!
  • Five different Rendering Backends:
    • OpenGL ( safe default )
    • DirectX 9 ( Tech Preview: Not Recommended )
    • DirectX 11 ( suggested alternative to OpenGL )
    • DirectX 12
    • Vulkan
  • ...and much more!

For a more detailed feature list, feel free to check the related Features wiki page.

Documentation

Installation instructions, configuration and much more can be found at this address: https://github.com/julianxhokaxhiu/FFNx/wiki

Screenshots

Vanilla/Steam
Final Fantasy VII running on Vulkan
Final Fantasy VIII running on Vulkan

Tech Stack

If you're curious to know it, FFNx is made with:

  • C++ code base
  • Latest MSVC available on Visual Studio 2022 Community Edition
  • vcpkg ( as dependency manager )
  • CMake ( as make files )
  • BGFX ( as backend renderer )
  • BIMG ( for custom textures )
  • FFMpeg with H/W Accelleration support
  • VGMStream using FFMpeg as backend (with loop support!)
  • tomlplusplus ( for the configuration management )
  • StackWalker ( for stack traces in the log file )
  • pugixml ( for the Steam XML manifest )
  • md5 ( for the Steam XML manifest )
  • libpng ( for a better and faster PNG texture support )
  • imgui ( to better debug the in-game engine )
  • discohash ( to extract an hash from palette game textures data known as animated textures )
  • SoLoud ( as the audio engine used to playback audio, music or voice files )
  • openpsf ( as the MINIPSF emulation engine to playback PSX/PS2 music files )
  • Steamworks SDK ( used to support Steam achievements for the Steam edition of games )

How to build

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 build you can find the output in this path: .build/bin

Preparation

Please note:

FFNx will now use vcpkg as a package manager to resolve dependencies. Failing to follow these steps will fail your builds.

  1. Clone the vcpkg project in the root folder of your C: drive ( git clone https://github.com/Microsoft/vcpkg.git )
  2. Go inside the C:\vcpkg folder and double click bootstrap-vcpkg.bat
  3. Open a cmd window in C:\vcpkg and run the following command: vcpkg integrate install

Visual Studio

Please note:

By default Visual Studio will pick the x86-Release build configuration, but you can choose any other profile available.

  1. Download the the latest Visual Studio Community installer
  2. Run the installer and import this .vsconfig file in the installer to pick the required components to build this project
  3. Make sure you select the English Language pack in the language list before clicking Install
  4. Once installed, open this repository as a folder in Visual Studio 2022 and click the build button

Visual Studio Code

  1. REQUIRED! Follow up the steps to install Visual Studio, which will also install the MSVC toolchain
  2. Download and install the latest Visual Studio Code release
  3. Install the following extensions:
  4. Open this repository as a folder in Visual Studio code
  5. Choose as build profile in the status bar CMake: [Release] ( or one of the aforementioned profiles )
  6. Click the button on the status bar Build

Auto-Formatting

CMake Files

  1. REQUIRED! Install Python
  2. Install cmake-format and make sure the binary is available in your PATH environment variable
  3. OPTIONAL! Integrate it in your own IDE ( eg. for Visual Studio Code use the relative extension )

Support

FFNx offers multiple support channels, pick the one you prefer

Forums

Discord

Github

Credits

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

I'm sure I forgot many others through the route. 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.

License

FFNx is released under GPLv3 license, and you can get a copy of the license here: COPYING.txt

If you paid for it, remember to ask for a refund to the person who sold you a copy. Make also sure you get a copy of the source code if you got it as a binary only.

If the person who gave you a copy will refuse to give you the source code, report it here: https://www.gnu.org/licenses/gpl-violation.html

All rights belong to their respective owners.

ffnx's People

Contributors

julianxhokaxhiu avatar myst6re avatar tangtang95 avatar cosmosxiii avatar sithlord48 avatar extapathy avatar clanofartisans avatar iniquitatis avatar sebanisu avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.