-
Notifications
You must be signed in to change notification settings - Fork 52
Project Overview
This project, dubbed "Final Fantasy IX Engine", is a complete rewrite of the game's engine in C#. It maintains binary compatibility with the native parts of the game and the serialized data within the game archives, allowing the compiled version to be used in place of the original DLLs.
The primary goal of this project is to provide mod makers with a convenient framework for developing gameplay mods, replacing game assets, expand original content, localizing the game into native languages, and fixing bugs of the original.
Memoria addresses numerous bugs in the existing game port across various aspects like rendering, audio, and abilities. It includes built-in mods (turn-based battles, gameplay mechanics changes, a new card game system, cheat disablers, etc.) and provides a framework for integrating third-party mods, supporting import/export and modification of game resources.
The engine integrates seamlessly with Unity, allowing the use of features ranging from loading external AssetBundles to manual manipulation of GameObjects and Components. However, many game elements like the event interpreter or animation pipelines emulate the PSX assembler, meaning significant modifications such as importing custom models, shaders, sounds, etc., require creating workarounds to either transform external data into the game's native format or completely alter the approach by transforming game resources into compatible formats and implementing custom rendering mechanisms.
The engine introduces a new audio API, extending the native engine with the dynamic library soloud.dll, enhancing audio capabilities.
- Assembly-CSharp, Memoria.Prime, and Memoria.Scripts: These handle the core game code and battle script assembly.
- Memoria.Compiler: Allows users to modify Memoria.Scripts without an IDE.
- Memoria.XInputDotNetPure and UnityEngine.UI: Extend original assemblies by providing new APIs.
- Memoria.MSBuild: Aids in build process automation, including patcher packaging and dependency deployment.
- Memoria.Debugger and Memoria.Injection: Enable debugging by injecting into the game process and establishing a debugging server.
- Memoria.Client: Facilitates game object manipulation via a GUI similar to UnityExplorer (Alt+Ctrl+Shift+F12 to start in-game server).
- Memoria.Patcher: A custom self-extracting archive used for Memoria installation.
- Memoria.Launcher and Memoria.SteamFix: Components of an alternative launcher that allows use it without disabling the Steam Overlay.
To perform the following actions you require Windows Administrative user permissions. When trying to use custom font's Unity does not have access to user font's it uses the C:\Windows\Fonts
path to install a font into this location you can open it and copy the font file into this window, or Right Click the Font File and Install For All Users
do not install it for only your user it wont work.
To use this engine, owning a licensed copy of the game is necessary as it requires several native DLLs and a set of original assets to function properly. This ensures compatibility with all APIs and serialized data, essential for correct operation with the game's scenes and other assets.