GithubHelp home page GithubHelp logo

julianxhokaxhiu / ffnx Goto Github PK

View Code? Open in Web Editor NEW
319.0 15.0 45.0 9.1 MB

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

License: GNU General Public License v3.0

CMake 3.53% C++ 85.13% C 7.64% GLSL 2.51% SuperCollider 0.03% Shell 1.16%
modding-games final-fantasy modding modding-framework vulkan directx12 modding-library directx11 opengl

ffnx's Introduction

License Overall Downloads Latest Stable Downloads Latest Canary Downloads GitHub Actions Workflow Status

FFNx

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

Introduction

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

The Team

FFNx is developed by a core team, currently composed of:

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.

Features

As a user

FF7/FF8

  • /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

FF7

  • 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

FF8

  • 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

As a modder

  • 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

Documentation

For a more in-depth documentation feel free to visit the docs/ folder.

Screenshots

Vanilla/Steam
Final Fantasy VII running on Vulkan
Final Fantasy VIII running on Vulkan
Final Fantasy VIII Worldmap graphical patches

Tech Stack

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)

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

Preparation

Please note:

FFNx uses vcpkg as a package manager to resolve dependencies. Failing to follow these steps will result in build errors.

  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

NuGet

Please note:

This step will speed up your compilation times by avoiding the vcpkg dependencies rebuild.

  1. Make sure you have NuGet CLI installed.
  2. Create a Personal Access token ( classic ) with the write:packages permission.
  3. Open a cmd window and run the following commands ( replace YOUR_GITHUB_USERNAME and YOUR_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"

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 components required 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
  5. Choose as preset in the status bar the one you desire
  6. 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 preset in the status bar the one you desire
  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
  • 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.

License

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.

ffnx's People

Contributors

chthonvii avatar clanofartisans avatar cosmosxiii avatar dotaxis avatar eve-atum avatar extapathy avatar iniquitatis avatar jeffbittle avatar julianxhokaxhiu avatar lazar00 avatar maciej-trebacz avatar myst6re avatar sebanisu avatar sithlord48 avatar tangtang95 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ffnx's Issues

[ FF7 ] Add a soft reset (with start + select for example)

In the psx version a soft reset is possible with start+select+l1+l2+r1+r2
This is a great feature so a new save can be loaded instead of quit then launch the game again.

Even better would be to be able the show the load / new game option from start + select for exemple (not the full key combination like in psx or it'll be hard to do in keyboard because of keys multiplexing in most keyboards)

Steam v.1.5.2.0 - FF7 crashes at launch

Did a clean install of FF7 on Steam and placed the driver files in the C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII folder, but the game immediately crashes at launch. Here`s the log:

[00000000] INFO: FFNx driver version 1.5.2.0
[00000000] TRACE: v1: 0x99CE0805, v2: 0xAC0D8B00
[00000000] INFO: Auto-detected version: FF7 1.02 US English
[00000000] INFO: Max texture size: 16384x16384
[00000000] INFO: Original resolution 640x480, New resolution 640x480
[00000000] INFO: FFMpeg movie player plugin loaded
[00000000] INFO: FFMpeg version 4.2.2, Copyright (c) 2000-2020 Fabrice Bellard, et al.
[00000000] INFO: VGMStream music plugin loaded
[00000000] LOCK UNLOCK TEST
[00000001] MATRIX INITIALIZE
[00000001] TRACE: *** Exception 0xc0000005, address 0x7625c6a2 ***
[00000001] TRACE: in "C:\WINDOWS\System32\KERNELBASE.dll"
[00000001] TRACE: at PathAppendA, address 0x7625c690
[00000001] TRACE: at open_file in C:\projects\ffnx\src\ff7\file.cpp: line: 373: address: 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\Program Files (x86)\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x630aac60
[00000001] TRACE: in "C:\WINDOWS\System32\KERNEL32.DLL"
[00000001] TRACE: at BaseThreadInitThunk, address 0x755b6340
[00000001] TRACE: in "C:\WINDOWS\SYSTEM32\ntdll.dll"
[00000001] TRACE: at RtlGetAppContainerNamedObjectPath, address 0x77a27a90
[00000001] TRACE: in "C:\WINDOWS\SYSTEM32\ntdll.dll"
[00000001] TRACE: at RtlGetAppContainerNamedObjectPath, address 0x77a27a90
[00000001] ERROR: Unhandled Exception. See dumped information above.

System info:
Windows 10 1909
Ryzen 7 3700X
16GB RAM
AMD Radeon RX 5700 XT Driver version: 20.4.1

crash.zip

crash with windows xp compatibility mode

Just installed lastest canary and tried to skip the intro video by click outside the ff7 window

then went back to the ff7 window and hit + then crashed

[00000000] INFO: FFNx driver version 0.0.0.31
[00000000] TRACE: v1: 0x99CE0805, v2: 0xAC0D8B00
[00000000] INFO: Auto-detected version: FF7 1.02 US English
[00000000] INFO: OpenGL debug context created.
[00000000] INFO: ATI Technologies Inc. AMD Mobility Radeon HD 5000 Series 4.5.13399 Compatibility Profile/Debug Context 15.201.1151.1008
[00000000] INFO: OpenGL 2.0 support detected
[00000000] INFO: Found swap_control extension
[00000000] INFO: OpenGL debugging supported.
[00000000] INFO: Max texture size: 16384x16384
[00000000] INFO: Original resolution 640x480, window size 1280x720, output resolution 960x720, internal resolution 3840x2160
[00000000] INFO: Shader limits: varying 128, vert uniform 16384, frag uniform 16384
[00000000] INFO: FFMpeg movie player plugin loaded
[00000000] INFO: FFMpeg version 4.2.1, Copyright (c) 2000-2019 Fabrice Bellard, et al.
[00000000] INFO: VGMStream music plugin loaded
[00000000] LOCK UNLOCK TEST 
[00000001] MATRIX INITIALIZE 
[00000001] INITIALIZE DD/D3D END 
[00000001] initializing sound...
[00000001] creating dsound primary buffer
[00000001] reading audio file
[00000001] loading static sounds
[00000001] sound initialized
[00000001] set music volume: 127
[00000001] set music volume: 127
[00000001] Entering MAIN
[00000001] Exiting MAIN
[00000001] START OF CREDITS!!!
[00000001] TRACE: [NULL @ 01140C40] Opening 'C:\Games\Final7\data\movies\eidoslogo.avi' for reading
[00000001] TRACE: [file @ 06D7DB00] Setting default whitelist 'file,crypto'
[00000001] TRACE: [avi @ 01140C40] Format avi probed with size=2048 and score=100
[00000001] TRACE: [avi @ 06DF0900] use odml:1
[00000001] TRACE: st:1 removing common factor 2 from timebase
[00000001] TRACE: [avi @ 01140C40] Before avformat_find_stream_info() pos: 4096 bytes read:136916 seeks:6 nb_streams:2
[00000001] TRACE: [avi @ 01140C40] parser not found for codec truemotion2, packets or times may be invalid.
[00000001] TRACE: [avi @ 01140C40] parser not found for codec pcm_u8, packets or times may be invalid.
[00000001] TRACE: [avi @ 01140C40] parser not found for codec pcm_u8, packets or times may be invalid.
[00000001] TRACE: [avi @ 01140C40] parser not found for codec truemotion2, packets or times may be invalid.
[00000001] TRACE: [avi @ 01140C40] All info found
[00000001] TRACE: [avi @ 01140C40] After avformat_find_stream_info() pos: 48308 bytes read:169684 seeks:6 frames:23
[00000001] INFO: prepare_movie: C:\Games\Final7\data\movies\eidoslogo.avi; truemotion2/pcm_u8 320x240, 15.000000 FPS, duration: 10.133333, frames: 152
[00000215] set music volume trans: 127->0, step=60
[00000215] TRACE: set volume trans: 0 (60)
[00000280] TRACE: [AVIOContext @ 070530C0] Statistics: 1054420 bytes read, 6 seeks
[00000280] TRACE: *** Exception 0xc0000005, address 0x776ebf39 ***
[00000280] TRACE: in C:\WINDOWS\SYSTEM32\ntdll.dll
[00000280] TRACE: 	at RtlSizeHeap, address 0x776ebe70
[00000280] TRACE: in C:\WINDOWS\SYSTEM32\AcLayers.DLL
[00000280] TRACE: 	at RtlSizeHeap, address 0x776ebe70
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at RtlSizeHeap, address 0x776ebe70
[00000280] TRACE: 	at destroy_tex_header in C:\projects\ffnx\src\ff7\loaders.cpp: line: 203: address: 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\Games\Final7\ff7.exe
[00000280] TRACE: 	at destroy_tex_header, address 0x1017dc60
[00000280] TRACE: in C:\WINDOWS\System32\KERNEL32.DLL
[00000280] TRACE: 	at BaseThreadInitThunk, address 0x77026340
[00000280] TRACE: in C:\WINDOWS\SYSTEM32\ntdll.dll
[00000280] TRACE: 	at RtlGetAppContainerNamedObjectPath, address 0x776f7a90
[00000280] TRACE: in C:\WINDOWS\SYSTEM32\ntdll.dll
[00000280] TRACE: 	at RtlGetAppContainerNamedObjectPath, address 0x776f7a90
[00000280] ERROR: Unhandled Exception. See dumped information above.

[ FF8 ] Vibration support

This topic has been a hot potato across various communities and forums. It seems that the game does not simply provide a vibration functionality OOB.

But...the engine on the other hand, it seems it has all the wires connected to actually do the vibration ( aka Force Feedback, talking in Direct Input language ).

In order to trigger it, the engine loads two files: icon.sp1 and vibration.vib. While both files seems to be there inside of the menu.fs file, they seems to be actually zeroed/non-valid.

The function at 0x4A29A0 seems to be the one which is triggered everytime the controller is supposed to vibrate ( GF summons, Gunblade trigger, etc. ), although it does not because at a certain point it checks for a value in a struct, which it happens to be the vibrate.vib file in memory. As this file is mostly zeroed, the game thinks there's no vibration and so it moves on.

If we manage to pull out this file from the PSX release, there's a good chance we could get the vibration functionality back and/or implement only the missing bits to actually vibrate the controller.

[ FF7 ] Add support for custom sound effects

The driver for now is fully able to replace music in-game but this is not enough.

Until now, in order to replace in-game sound effects, there's a need to fully pack a custom audio.dat file with all the tracks inside.

We should implement a layer to load those files from directories, like it happens with Music.

[ FF8 ] Black screen on lost focus in Battle mode

When FF8 is run in windowed mode, if you try to focus another window while the game is running, the game usually pauses everything.

For some unknown reason though, in Battle mode only it pauses the game but it also blacks out everything,

[ FF7 ] Music and Sound lost passing from field to animation.

Hi. I reported this in Discord:
https://discordapp.com/channels/318179907098116106/391640497954750474/739872387272671283

Hi. At the beginning of FF7, after putting bomb, going up the stairs, going up elevator, opening the two doors, and exiting the reactor, Jessie falls to the ground, and then begins a cinematic with reactor exploding. When the cinematic begins, I lose the sound and music. This happens using MMPEG. When I use original renderer it does not happen. I'm using original .avis extracted from the CDs of the PC98 release. I'm using also MIDI Standard with Yamaha XG and DirectX11. Using 7H 2.2BETA and FFNx Canary 1.7.2.91.

If I save before entering the elevator and follow all the path again it works (with any renderer). Only happens after having putting the bomb and following all the path until exiting the reactor.

Here is the FFNx.log (I have a slow connection):
https://cdn.discordapp.com/attachments/391640497954750474/739887635929235597/FFNx.7z

[ FF7 ] SFX sound bug

In the game SFX sounds are randomly played
The SFX sound volume is not applyied too

[ Core ] Full C++ codebase

The driver at the current status is written with a mix of C and C++ code.

Ideally we need to move forward the code to be fully C++, by deprecating malloc/calloc logics, as well as replacing char[] with std::string.

Those are just hints for the direction, so more topics have to be explored.

The idea is make sure this code is compatible and can be built with both MSVC and MinGW, with no extra effort.

[ FF7 ] Add support for animated textures

The engine by default has support for animated field textures, and that is done by interpolating their color in field scripts, which is then paletted by the driver.

Most notable place where this happens is Aerith House scene, where the light and the waterfall are animated. When those textures are replaced, both of them are fully static.

[ FF8 ] Custom texture override

Like we do on FF7, also on FF8 we need to provide a way to override textures around the game.

Current overridden modules:

  • Battle/Magic
  • Field
  • Menu
  • World
  • PubIntro
  • CDCheck
  • Triple Triad

[ Rendering ] Vulkan/DX12 rendering should be smooth like DX11/OGL

The driver at the current state is able to successfully run the game at full fps ( depending on the scene ), using OpenGL and DirectX 11 rendering backends.

Vulkan and DirectX 12 are implemented as Tech Preview in order to allow development on top of those.

Enable those backends to perform on par as with DirectX11/OpenGL.

Crash on game launch from 7th Heaven (2.0)

I'm getting an "Oops, something bad happened" crash. The game window opens but is still black when it happens. Setup attached:

Fresh and working install of FF7 Steam + 7th Heaven (2.0). Followed OatBran's guide for install, converted Qhimm packages to DDS files, and have been playing since yesterday. Woke computer up earlier and couldn't get it to start again.

Links:
FFNx.log: https://drive.google.com/file/d/1Gne-Uh0Lc_0H_u_sojtPMhM4FKwSURKZ/view?usp=sharing
Crash.ff7: https://drive.google.com/file/d/1ZqRxTfwTUqtCPXxdE7T0Oy9wb61-JG0D/view?usp=sharing

Immediate Crash when trying to launch

Greetings,

I installed everything needed, I believe I pointed to the correct mod path, however I am not seeing an emergency save to save/crash.ff7 dir. I checked both directories where the save files are in my hard disk D drive and the install folder. And I am not seeing a save directory.

This is what is in the log:

[00000000] INFO: FFNx driver version 1.5.1.0
[00000000] TRACE: v1: 0x99CE0805, v2: 0xAC0D8B00
[00000000] INFO: Auto-detected version: FF7 1.02 US English
[00000000] INFO: Max texture size: 32768x32768
[00000000] INFO: Original resolution 640x480, New resolution 640x480
[00000000] INFO: FFMpeg movie player plugin loaded
[00000000] INFO: FFMpeg version 4.2.2, Copyright (c) 2000-2020 Fabrice Bellard, et al.
[00000000] INFO: VGMStream music plugin loaded
[00000000] LOCK UNLOCK TEST
[00000001] MATRIX INITIALIZE
[00000001] TRACE: *** Exception 0xc0000005, address 0x75f2c6a2 ***
[00000001] TRACE: in "C:\Windows\System32\KERNELBASE.dll"
[00000001] TRACE: at PathAppendA, address 0x75f2c690
[00000001] TRACE: at open_file in C:\projects\ffnx\src\ff7\file.cpp: line: 373: address: 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "F:\Steam\steamapps\common\FINAL FANTASY VII\FF7_EN.exe"
[00000001] TRACE: at open_file, address 0x2f3ac50
[00000001] TRACE: in "C:\Windows\System32\KERNEL32.DLL"
[00000001] TRACE: at BaseThreadInitThunk, address 0x74a36340
[00000001] TRACE: in "C:\Windows\SYSTEM32\ntdll.dll"
[00000001] TRACE: at RtlGetAppContainerNamedObjectPath, address 0x77287a90
[00000001] TRACE: in "C:\Windows\SYSTEM32\ntdll.dll"
[00000001] TRACE: at RtlGetAppContainerNamedObjectPath, address 0x77287a90

Edit: More info:

Debug Assertion Failed!

Program: F:\Steam\steamapps\common\FINAL FANTASY VII\AF3DN.P
File: minkernel\crts\ucrt\src\appcrt\stdio\fwrite.cpp
Line: 31

Expression: stream != nullptr

Edit 2: Manually created a save folder inside my install folder and it wrote a crash.ff7 file to it. I have attached the file.

crashfiles.zip

Let me know what else you need.

[ FF7 ] Japanese support

Square-Enix did release an eStore Japanese edition of the game, although in order to inject Japanese fonts they had to customize completely the driver.

It seems that the eStore release, different than Steam has a bigger stock AF3DN.P driver, which has the code to inject into the font system. What it does it seems to inject some special TEX files that you can find inside of menu_ja.lgp named jafont_X.tex ( X goes from 1 to 6 ).

image

There is a need to figure out how to achieve this on our end without requiring to patch the overall font engine, but maybe fixing correctly the relative window.bin file.

[FF7] Game crashes on close, on latest canary

The issue does not occur on 1.7.2.30 a previous canary build as well as builds before that. Have not tested on builds in between.

Canary build 1.7.2.59
Windows 8.1 64bit
Nvidia 1080ti GPU
Tested with default ffnx.cfg no adjustments. Tested with opengl renderer as well.

Either alt-f4 or clicking the close icon, the game crashes, so not a clean close, nothing is logged to the ffnx.log.

[ FF7 ] Broken lastmap field

This field show stanrge contrast issue in vanilla game.
No issue with external modded texture.
Probably related to the light animation palette (as not used with external textures files)

Screen_Shot_004

FF7 info not displaying

	if(gl_draw_text(8, 75, popup_color, (popup_ttl * 255) / POPUP_TTL_MAX, popup_msg))
	{

common.c probably the issue.

In your implementation it seems X and Y are not absolute but rows and columns? 75 is outside the visible range on my display. Is it possible to put absolute pixels back as there's no way to calculate the correct placement on screen otherwise when offsetting?

Additionally, the Gamma parameter is not implemented.

FF7 Steam crashes at launch

I have FF7 Steam I applied FFNx Steam v1.6.1.0 but the game immediately crashes at launch.

can I somehow create a log?

[ FF8 ] Add support for Horizon concert instrument replacement

Happens at Horizon during the concert: instruments are selected by script, via the choice_music opcode.

We can hook to a subfunction of opcode_choice_music, but this means rewrite this opcode almost completely. Or hook to the four subs that interact with DirectMusic segments directly (but for this solution we need to find a way to know the filename of each instruments).

This opcode should be the last one using DirectMusic, everything else (SFX and music) use DirectSound with the external_music plugin enabled.

[ FF7 ] MIDI not being played if use_external_music is false

If music/vgmstream exists (which it will for 7h mods), even if empty, then FFNx still attempts to play back OGG or there is no music playback when use_external_music = no. I either have to delete the music/vgmstream folder structure, or I have to set use_external_music = no AND external_music_path = some non-existent folder in the config to get MIDI playback.

I would think expected behavior is use_external_music = no would force ignoring external_music_path completely and go straight to MIDI playback.

Why Winamp?

Hello, I think it's great that you decided to use a plugin system for audio. It's definitely the most flexible way.
I just wanted to know why did you choose Winamp for it.
Sure it has many plugins, but most of them haven't been updated in quite a few years, so if there's a problem with the plugin, nobody will be able to properly fix it.
Maybe support for foobar2000 plugins could also be added? Or maybe you guys could get in touch with kode54. He has been writing audio plugins for a lot of projects for many years, including porting vgmstream to foobar, so I think he could give you guys some more ideas about this.
I'm looking forward to the development of FFNx!

[Common] OpenGL Green lines while rendering on Intel GPUs

#60

in steam version the same

(stop me talking about legality, I'm licensed in steam), pc2000 I can't play without a cd drive. because I don't have one. L-logic, so this bug and without cdfix is also repeated)
FFNx.log

I'm just trying to help fix a mistake, why i don't understand.

using ffnx with 7th heaven causes gamepad configurations to stop working

i did a clean 7th heaven + ffnx install without mods and when i activate ffnx the gamepad config from 7th heaven stops working and i get a strange controller configuration where X is B, B is A and A is X (using a x360 gamepad) i tried to use every single control profile and every single one is overwritten with that strange profile with swapped buttons

this happens with a untouched FFNx.cfg and using 7th heaven v2.0.3.406 + FFNx-FF7_1998-v1.7.2.0, if i change the dll to the normal 7H_GameDriver.dll controls start working again instantly

[Steam] FFNx does not run when game installed on another HDD path

Hi,

I know it's not supported, but I'm having trouble installing FFNx alongside 7th heaven 2.0.

The game (from steam) is installed at D:\SteamLibrary\steamapps\common\FINAL FANTASY VII, and 7th Heaven 2.0 at C:\Program Files (x86)\7th Heaven. I am following these instructions from this website, using a fresh install of FF7 from Steam and 7th heaven 2.0 (no mods used yet):

How to install on 7h 2.x
WARNING: This method is NOT SUPPORTED officially by 7h team. Please use at your own risk. DO NOT approach 7h team if something is not working properly.

  1. Go to your 7h installation path
  2. Go to Resources\Game Driver
  3. Rename 7H_GameDriver.dll to _7H_GameDriver.dll
  4. Install FFNx following instructions here: https://github.com/julianxhokaxhiu/FFNx#1998-eidos-release

(from these instructions):
4.1 Install the game on this path: C:\Games\Final Fantasy VII
4.2 Update your game to v1.02 ( https://www.gamefront.com/games/final-fantasy-7-advent-children/file/final-fantasy-7-retail-v1-02-patch )
4.3 Download the latest FFNx-FF7_1998 release here: https://github.com/julianxhokaxhiu/FFNx/releases
4.4 Extract the ZIP content next to ff7.exe file
4.5 Double click on FFNx.reg
4.6 Click on Yes.
Enjoy!

  1. Rename FFNx.dll to 7H_GameDriver.dll
  2. Click Play and enjoy!

Does that mean that I also need to install the v1.02 patch? Do I have to rename FF7.exe from that patch to ff7_en.exe, or both need to be in the game directory? Should 7th heaven then point to FF7.exe or ff7_en.exe?

Regarding point 5. That file is in the game dir, not in 7th heaven's dir, right?

In any case, I can't seem to launch FFVII using Vulkan...

[ FF7 ] Moiré effect

It seems that on FF7 when you walk slowly in fields ( mostly noticeable on Kalm Town ), in some places ( like Houses Roofs ) there's a Moiré pattern on top. Seems like a rendering glitch but it's not related to texture nor to pipeline.

In order to trigger this effect, set your Window resolution to 1600x900 and run the game with default settings.

[ FF7] Cetra Mod causes repeated crashes during screen transition after North Mako Reactor

I've yet to make it through this screen transition, crashed 3 times. It's right after Barret leaves the party when you're headed to regroup on the train after blowing up the first reactor in Midgar. Attached is the FFNx.log and auto generated crash save file. Renamed the save file from .ff7 to .txt to get around github being a jerk about attachments. Hope it helps development, in the mean time I appear to be stuck, will try disabling FFNx to get past this transition in my playthrough :c

crash.txt

FFNx.log

[ FF7 ] No Encounter toggle

Since the Steam/PC version of FF7 does not have:

  1. Speed-up functionality
  2. No random encounters

It would be nice if this project enables them for the players. The speed-up already is in the dev-builds so that leaves the No-random encounter functionality.

The "No-random-encounters" booster is on PS4 FF7 and gets toggled via L3+R3, maybe that can be adapted here.

No that sure about the state of FF8, I think the steam version has both of these features but the "non-steam" version doesnt.

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.