Skip to content

FF8 Field Map Editor - A front-end tool for editing `.map` files, managing tile data, and swizzling/deswizzling textures using a method based on Pupu, with modifications that may produce different IDs in some cases.

License

Notifications You must be signed in to change notification settings

Sebanisu/Field-Map-Editor

Repository files navigation

Field Map Editor

Build status C++ 23 Contributions Welcome

Test Application for editing the tiles of a FF8 field. See releases to download the most recent build. Everything is in constant flux. You might want to backup your current build of the program before upgrading as their maybe breaking changes.

Possible Issue: with saving and loading of filters. If you have problems, clear out the .toml file or the imgui.ini to reset the settings to defaults. If you want to send me your .toml in an issue. I might be able to figure out why it was bugging out.

Pupu Compatibility Notes

The original Pupu application generates IDs differently. I’ve tried to stay mostly consistent, but there are a few differences to be aware of:

  • 2025.JAN.13 — Issue #121
    Fixed a bug that could cause Pupu IDs to be insufficiently unique, potentially breaking exports.
    If you are upgrading, you may need to convert your data to the swizzled format in your current version first.

  • 2022.SEP.12 — Issue #80, Issue #122
    I used 2 bits to record whether a tile is misaligned with the 16Ă—16 grid along the X-axis or Y-axis.


Graphics Drivers

This project makes use of GPU rendering. Outdated or broken graphics drivers may cause crashes, display issues, or poor performance.
If you run into problems, please update your graphics drivers before reporting issues.

Tested Hardware

  • NVIDIA GeForce GTX 980 Ti (released in 2015–2016 era)
    Works reliably. Other GPUs from NVIDIA or AMD from around the same time or newer should also work.
  • Intel integrated graphics: one user reported issues. I cannot fully test this at the moment, so please ensure you are on the latest drivers.

Driver Update Links


⚠️ If you experience graphical issues, always update your drivers first before assuming it’s a problem with this software.

Main Application

This was formerly the SFML version, but it now uses OpenGL with GLEW, GLFW, and ImGui, just like the Experimental Application. It is the more feature-complete version and is recommended for most users.

It receives regular updates, as it’s the version most people use. New features are developed and tested here first to ensure stability and reliability.

If you notice any missing features or have suggestions, feel free to share your feedback — it directly shapes development.

Note: This version requires the fonts folder.

Note: This version also requires the res folder, which contains essential shaders and textures.

image

Hotkeys

I added a help menu that lists out keyboard shortcuts.

image

Batch Operation Window

The Batch Operation Window allows you to take input in one format and output it in another.


Supported Input Formats:

  • .mim — Mim is the storage format of the field textures in Final Fantasy VIII. Selecting this option means you are using the original low-resolution textures.
  • Deswizzle — Load a directory of deswizzled textures, including .map files if present.
  • Swizzle — Load a directory of swizzled textures, including .map files if present.
  • Swizzle as One Image — Load a directory of swizzled “as one image” textures, including .map files if present.
    • ⚠️ May not load correctly without a .map file. Might require enforcing FFNX formatting when .map is missing.
  • Full Filename Image — Load a directory of full filename textures, including .map files if present (.toml supported).
    • Uses the Deswizzle.toml configuration file to read filenames and PupuIDs.

Supported Output Formats:

  • Deswizzle — Output in deswizzled format.
  • Swizzle — Output in swizzled format.
  • Swizzle as One Image — Output swizzled textures combined into a single image.
  • Deswizzle + Generate TOML — Output deswizzled textures and generate a new deswizzle.toml configuration.
  • Deswizzle (Full Filename) — Output deswizzled textures using the full filename convention (based on deswizzle.toml).
  • CSV — Outputs a .csv file containing a dump of all the tiles found in the .map file.

image

Deswizzle.toml Editor (NEW)

The Deswizzle.toml Editor provides a configuration interface for defining image combinations used during batch generation.

  • PupuIDs are the primary keys used to group images together and later separate them back into individual components.
  • Filters:
    • Filters can be applied to output images only.
    • Input images do not support filters other than PupuIDs.
  • Masks (batch output only):
    • Multi-colored masks can be generated to define cut regions.
    • White-on-black masks can also be generated for external editing tools (e.g., Photoshop).
    • White-on-black masks are output-only and are not accepted as input for batch operations.

You may edit the deswizzle.toml file directly to customize configurations.

  • Configurations can be shared with others or contributed back via a pull request.
  • The current version of deswizzle.toml is preliminary and may contain bugs; it was created in limited time for the initial release.

⚠️ Note: The deswizzle.toml included with this release is an initial draft.
Expect incomplete mappings or errors. Contributions and improvements are welcome.

image
image

Impot Window WIP

Feature is disabled for now needs reworked! This feature needs more work. I did have a working test where I used this to add tiles to the swizzle, loaded in the game. You might still be able to get it to work in an older build of this program.

image

History Window

The History Window lets you see opreations performed that you can undo or redo. The undo and redo only effect the edits to the .map currently loaded in memory.

image

Draw and Control Panel Window

The Draw window shows the current rendering of the field. The Control Panel controls the Draw window. You can also access more detailed configuration in the main menu at the top.

image

Custom Paths Window

The Custom Paths Window lets you configure how the Field Map Editor search for 3rd party textures, or .map files.

image

Field File Window WIP

This window lets you see what files are in this field. I plan to make this alittle more useful. You can copy and paste lines of the text.

image


Experimental Application

This was formerly the OpenGL version and now serves as a testing ground for experimental features. Like the Main Application, it also uses OpenGL, GLEW, GLFW, and ImGui.

Experimental features are often trialed here first, then refined and ported to the Main Application if successful. While the Main Application is the recommended choice, the Experimental Application may include features not yet available there.

If you find something in the Experimental version that you'd like to see in the Main Application, let me know — your feedback helps guide future development.

Note: This version requires the res folder, which contains essential shaders and textures.

image


Credits

This project is based on the work of the following developers. I referenced their code or videos in the development of this project:

Developer Forum / Profile Source
Omzy Link GitHub
myst6re Link GitHub
Maki Link GitHub
TheCherno Link GitHub
TrueOdin Link GitHub

Build Info

OpenGL 4.3 C++23 Conan

Libraries (via Conan)

lz4 1.10.0 spdlog 1.15.0 glfw 3.4 glew 2.2.0 glm 0.9.9.8 imgui 1.91.8-docking boost.ut 2.1.0 toml++ 3.0.1 libpng 1.6.44 stb iconfontcppheaders ctre 3.9.0

Libraries (via CMake FetchContent)

imgui-filebrowser fork ImGuizmo eb90849 OpenVIII_CPP_WIP ToolsLibrary

Build Tools

CMake 3.31.6 Ninja 1.12.1 Visual Studio 2022 v17.14 GCC 15.1.1


Windows Build Instructions

This guide provides detailed instructions for building the project on Windows using the provided build scripts and dependencies.

Prerequisites

Ensure the following tools and software are installed on your system:

  • Microsoft Visual Studio 2022 (Community Edition or higher)
  • Python 3.8 or newer
  • Conan 2.x or newer
  • CMake

Build Steps

Step 1: Setup Environment

Run the Visual Studio vcvars64.bat script to configure the environment variables for 64-bit builds:

"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"

Step 2: Install Conan Dependencies

Ensure Conan 2.x or newer is installed and set up:

python -m venv .\venv
.\venv\Scripts\activate
python -m pip install --user "conan>=2.0" --upgrade

Configure Conan and detect profiles:

conan config home
conan profile detect --name windows_msvc > nul 2> nul & exit 0
conan profile list

Install project dependencies with Conan:

conan install . -pr windows_msvc -pr:b windows_msvc --build=missing -s compiler.cppstd=23 -s build_type=Release -of build/Release
conan install . -pr windows_msvc -pr:b windows_msvc --build=missing -s compiler.cppstd=23 -s build_type=RelWithDebInfo -of build/RelWithDebInfo
conan install . -pr windows_msvc -pr:b windows_msvc --build=missing -s compiler.cppstd=23 -s build_type=Debug -of build/Debug
deactivate

Step 3: Configure and Build with CMake

Check the CMake version and list available presets:

cmake --version
cmake --list-presets

Configure and generate build files using the preset: (Conan loves to add default to the preset.)

cmake --preset conan_windows-release-default

Step 4: Build the Project

Navigate to the build directory and build the solution:

cd build
msbuild Field-Map-Editor.sln /p:Configuration=Release
cd ..
dir /s /b bin\*.exe

Additional Notes

  • The resulting executables will be located in the bin directory.
  • Ensure all paths and configurations match your local setup.
  • For troubleshooting, review the output logs during each step.

Running on Arch Linux

Linux Build Instructions (WIP)

  • Make sure you have atleast GCC 15.
gcc --version

Step 1. Update and install required packages

Ubuntu

sudo apt update
sudo apt install -y python3 python3-venv python3-pip cmake build-essential
```p

Arch
```sh
pacman -Syu sudo
sudo pacman -Syu
sudo pacman -Syu --needed python python-virtualenv python-pip cmake base-devel python-pipx libglvnd libxcb libfontenc libice libsm libxaw libxcomposite libxcursor libxdamage libxtst libxinerama libxkbfile libxrandr libxres libxss libxv xcb-util xcb-util-cursor xcb-util-wm xcb-util-keysyms git less

Step 2. Create and activate a Python virtual environment

Ubuntu

python3 -m venv venv
source venv/bin/activate

Step 3. Install Conan package manager

pip install conan

Arch

pipx install conan
pipx ensurepath
source ~/.bashrc

Step 3.5 Copy dev files to your home directory.

I was getting permission errors in wsl. So I copied my files to my home directory to try again. I donno why it was happening. Below I am making the projects folder and i'm removing existing files and i'm cloning the files. The remove step is optional. I had old files in that directory.

mkdir -p ~/projects
rm -rf ~/projects/Field-Map-Editor
git clone --branch remove_sfml https://github.com/Sebanisu/Field-Map-Editor.git ~/projects/Field-Map-Editor
cd ~/projects/Field-Map-Editor
git status
git pull

Step 4. Configure and Install dependencies using Conan

Set Conan's home directory (optional, useful for CI environments)

conan config home

Detect a Conan profile and name it ubuntu24 if it doesn't already exist

Replace ubuntu24 with the appropriate profile name if necessary

Redirect stdout and stderr to /dev/null and ensure the script continues regardless of errors

Ubuntu

conan profile detect --name ubuntu24 > /dev/null 2>&1 || true

Arch

conan profile detect --name arch > /dev/null 2>&1 || true

List all available Conan profiles

conan profile list

Install dependencies using Conan

Ubuntu

conan install . -pr ubuntu24 -pr:b ubuntu24 --build=missing -s compiler.cppstd=23 -of ./linux

Arch

conan install . -pr arch -pr:b arch --build=missing -s compiler.cppstd=23 -of ./archlinux -c tools.system.package_manager:mode=install

Step 5. Deactivate the virtual environment

deactivate

Step 6. Check available CMake presets (optional)

cmake --list-presets

Step 7. Configure the build with CMake

rm -rf ./archlinux/build/Release/
cmake --preset=conan_linux_release-release

Step 8. Build the project

cmake --build ./archlinux/build/Release/

Additional Notes

  • The compiled binaries can be found in the ./bin/ directory.

About

FF8 Field Map Editor - A front-end tool for editing `.map` files, managing tile data, and swizzling/deswizzling textures using a method based on Pupu, with modifications that may produce different IDs in some cases.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors 2

  •  
  •  

Languages