The reason this is in the FFL-Testing repo under another branch is that it's built off of the FFL-Testing sample by Abood - really, it's hackily patched from it.
In 2026 a rewrite is coming soon that will have its own built-in web server among other things, so bare with me, and try to make this a "modular" component of your "stack". Or whatever.
> There is also a docker-compose.yml if you prefer to use that.
FFLResHigh.dat before building (sorry)docker-compose up, cross your fingers, and it should be running at port 5000.server-impl/ffl-testing-web-server-old.pyserver-impl just go run . or run the Go file-DCMAKE_CXX_FLAGS="-O3 -march=native" -DRIO_USE_HEADLESS_GLFW=ONgit clone -b ffl-renderer-proto-integrate https://github.com/ariankordi/nwf-mii-cemu-toy, build and run.systemctl start ffl-testing@31100 - where 31100 is the port number, which you can change, and also enable the service to start it at boot.USE_SYSTEMD_SOCKET enabled.
cmake -S . -B build -DCMAKE_CXX_FLAGS="-O3 -march=native" -DRIO_USE_HEADLESS_GLFW=ON -DUSE_SYSTEMD_SOCKET=ONffl-testing@.service. Adjust the WorkingDirectory, ExecStart (program path), and potentially user.sudo cp ffl-testing@.service ffl-testing@.socket /etc/systemd/system/Please be aware of the limitations to this in production - probably won't scale well. * TBD: Improved accuracy (accurate per-bone body scaling), server rewrite, multi-threading, all-in-one renderer and HTTP server in the same binary.
Note: For the frontend on mii-unsecure.ariankordi.net, I am using nwf-mii-cemu-toy, ffl-renderer-proto-integrate branch as the HTTP server for now, where I've more or less copied the Go server. It supports load balancing to multiple instances of this server. That is where my client-side HTML, JS, and NNID fetch API and more are hosted, so if you want to rehost any of that, PLEASE see that repo's readme!
Sample using the FFL decomp and RIO framework, all originally written by AboodXD, to render Miis on PC and Wii U via WUT.
https://github.com/user-attachments/assets/cdc358e4-0b1f-4b93-b7fd-f61fa4d215e1
git clone --recursive https://github.com/ariankordi/FFL-Testing
If you forgot or want to update, then after git pull, do this: git submodule update --init
Install requirements.
This project needs GLFW3 and zlib. The commands below will install them.
sudo apt install libglfw3-dev zlib1g-dev libgl1-mesa-devsudo dnf install glfw-devel zlib-devel mesa-libGL-develsudo pacman -S glew glfw zlib (⚠️ UNTESTED)pacman -S mingw-w64-x86_64-glfw mingw-w64-x86_64-zlib
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-pkg-config (untested)vcpkg install glfw3 zlibCMAKE_TOOLCHAIN_FILE when you use vcpkg with CMake. Read here for more info: https://learn.microsoft.com/en-us/vcpkg/users/buildsystems/cmake-integrationBuild using the CMake.
If you don't already have them, you will also need: git, g++, cmake, pkg-config.
cmake -S . -B build # Configure project.
cmake --build build # Compile to "build".
Here are some additional things to know.
To list options, use cmake -LH.
cmake -S . -B build -DRIO_GLES=1 -DNO_GLTF=1, etc.Settings:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Releasecmake -S . -B build -DCMAKE_CXX_FLAGS="-O3 -march=native"undefined reference to symbol...:
cmake -S . -B build -DCMAKE_EXE_LINKER_FLAGS="-ldl" (Needed on Debian 11??)cmake --build build -j4 (4 = num of jobs/cores)Clean:
rm -r build(On Visual Studio: As long as you have vcpkg configured and everything installed, it should? just work by loading the folder)
Run ffl_testing_2, and pray that it works.
FFLResHigh.dat and it can open it.AFLResHigh_2_3.dat to FFLResHigh.dat.sys/title/0005001b/10056000/content/FFLResHigh.dat
dwango/projects/マルチデバイス/品証/WiiU/Tool/FFL/downloadimage/FFLUtilityJP_p01 - if you decrypt it with dev keys, then in fs/content/nonproduct/miicapture/resource/, you will find FFLResPoster.dat. This is a copy of FFLResHigh.dat with extremely high quality (512px) textures. If you successfully find this, share the love and enjoy.FFLResHigh.dat and placed in the root of this repo.
As of 2024-06-14, I added a change that would let you change which Miis this program renders, by reading files in the place_ffsd_files_here folder.
As the name implies, you should be able to take any Mii in a 96 byte FFSD/FFLStoreData file, and place it in that folder.
Only the length of the file is checked, not the extension or name. It needs to be 96 bytes.
Then, it will just read each file sequentially, looping through all of them.
You can also just put one file there and that one Mii will spin continuously.
You can search for any *.ffsd or *.cfsd (CFLStoreData = FFLStoreData) file in this repo:
Grab the Mii from your Nintendo Network ID using the mii-unsecure.ariankordi.net API, if it is still up by the time you are reading this.
curl --verbose --header "Accept: application/octet-stream" https://mii-unsecure.ariankordi.net/mii_data/JasmineChlora --output JasmineChlora.ffsd
JasmineChlora with your own NNID, of course.I believe this script decrypts Mii QR Code data directly to FFSD/CFSD format: https://gist.github.com/jaames/96ce8daa11b61b758b6b0227b55f9f78
zbarimg --quiet --raw --oneshot -Sbinary image.jpg | python3 mii-qr.py /dev/stdin ./mii.ffsd
image.jpg, mii.ffsdIf you can't install it (not on Linux or MSYS2), or need the latest version, let's build it.
(You probably don't need to follow these)
git clone https://github.com/glfw/glfw && cd glfwcmake -S . -B build
-D CMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake -D CMAKE_INSTALL_PREFIX=/usr/local/x86_64-w64-mingw32/cmake --build build -j8cmake --install buildTry: pkg-config --libs zlib glfw3
(Unless it complains about needing glu)
NOTE from 2024-06-02: To cross compile this from Linux to Windows, I used the following command:
TOOLCHAIN_PREFIX=x86_64-w64-mingw32- make LDFLAGS="-L/dev/shm/glfw/build/src/ -lz -L/dev/shm/glew/lib/ -lglew32 -lglfw3 -lopengl32 -lgdi32 -lws2_32
Where I have glew and glfw built at /dev/shm.
While pkg-config worked, letting me need only the TOOLCHAIN_PREFIX set, for whatever reason it wasn't building and threw lots of linking errors saying it couldn't link tons of symbols from glew32 even though it literally finds it and opens the library, so... IDK.
137 commits
8 commits
C++
89.5%
C
4.0%
GLSL
2.9%
Go
1.9%
Python
1.1%
The reason this is in the FFL-Testing repo under another branch is that it's built off of the FFL-Testing sample by Abood - really, it's hackily patched from it.
In 2026 a rewrite is coming soon that will have its own built-in web server among other things, so bare with me, and try to make this a "modular" component of your "stack". Or whatever.
> There is also a docker-compose.yml if you prefer to use that.
FFLResHigh.dat before building (sorry)docker-compose up, cross your fingers, and it should be running at port 5000.server-impl/ffl-testing-web-server-old.pyserver-impl just go run . or run the Go file-DCMAKE_CXX_FLAGS="-O3 -march=native" -DRIO_USE_HEADLESS_GLFW=ONgit clone -b ffl-renderer-proto-integrate https://github.com/ariankordi/nwf-mii-cemu-toy, build and run.systemctl start ffl-testing@31100 - where 31100 is the port number, which you can change, and also enable the service to start it at boot.USE_SYSTEMD_SOCKET enabled.
cmake -S . -B build -DCMAKE_CXX_FLAGS="-O3 -march=native" -DRIO_USE_HEADLESS_GLFW=ON -DUSE_SYSTEMD_SOCKET=ONffl-testing@.service. Adjust the WorkingDirectory, ExecStart (program path), and potentially user.sudo cp ffl-testing@.service ffl-testing@.socket /etc/systemd/system/Please be aware of the limitations to this in production - probably won't scale well. * TBD: Improved accuracy (accurate per-bone body scaling), server rewrite, multi-threading, all-in-one renderer and HTTP server in the same binary.
Note: For the frontend on mii-unsecure.ariankordi.net, I am using nwf-mii-cemu-toy, ffl-renderer-proto-integrate branch as the HTTP server for now, where I've more or less copied the Go server. It supports load balancing to multiple instances of this server. That is where my client-side HTML, JS, and NNID fetch API and more are hosted, so if you want to rehost any of that, PLEASE see that repo's readme!
Sample using the FFL decomp and RIO framework, all originally written by AboodXD, to render Miis on PC and Wii U via WUT.
https://github.com/user-attachments/assets/cdc358e4-0b1f-4b93-b7fd-f61fa4d215e1
git clone --recursive https://github.com/ariankordi/FFL-Testing
If you forgot or want to update, then after git pull, do this: git submodule update --init
Install requirements.
This project needs GLFW3 and zlib. The commands below will install them.
sudo apt install libglfw3-dev zlib1g-dev libgl1-mesa-devsudo dnf install glfw-devel zlib-devel mesa-libGL-develsudo pacman -S glew glfw zlib (⚠️ UNTESTED)pacman -S mingw-w64-x86_64-glfw mingw-w64-x86_64-zlib
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-pkg-config (untested)vcpkg install glfw3 zlibCMAKE_TOOLCHAIN_FILE when you use vcpkg with CMake. Read here for more info: https://learn.microsoft.com/en-us/vcpkg/users/buildsystems/cmake-integrationBuild using the CMake.
If you don't already have them, you will also need: git, g++, cmake, pkg-config.
cmake -S . -B build # Configure project.
cmake --build build # Compile to "build".
Here are some additional things to know.
To list options, use cmake -LH.
cmake -S . -B build -DRIO_GLES=1 -DNO_GLTF=1, etc.Settings:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Releasecmake -S . -B build -DCMAKE_CXX_FLAGS="-O3 -march=native"undefined reference to symbol...:
cmake -S . -B build -DCMAKE_EXE_LINKER_FLAGS="-ldl" (Needed on Debian 11??)cmake --build build -j4 (4 = num of jobs/cores)Clean:
rm -r build(On Visual Studio: As long as you have vcpkg configured and everything installed, it should? just work by loading the folder)
Run ffl_testing_2, and pray that it works.
FFLResHigh.dat and it can open it.AFLResHigh_2_3.dat to FFLResHigh.dat.sys/title/0005001b/10056000/content/FFLResHigh.dat
dwango/projects/マルチデバイス/品証/WiiU/Tool/FFL/downloadimage/FFLUtilityJP_p01 - if you decrypt it with dev keys, then in fs/content/nonproduct/miicapture/resource/, you will find FFLResPoster.dat. This is a copy of FFLResHigh.dat with extremely high quality (512px) textures. If you successfully find this, share the love and enjoy.FFLResHigh.dat and placed in the root of this repo.
As of 2024-06-14, I added a change that would let you change which Miis this program renders, by reading files in the place_ffsd_files_here folder.
As the name implies, you should be able to take any Mii in a 96 byte FFSD/FFLStoreData file, and place it in that folder.
Only the length of the file is checked, not the extension or name. It needs to be 96 bytes.
Then, it will just read each file sequentially, looping through all of them.
You can also just put one file there and that one Mii will spin continuously.
You can search for any *.ffsd or *.cfsd (CFLStoreData = FFLStoreData) file in this repo:
Grab the Mii from your Nintendo Network ID using the mii-unsecure.ariankordi.net API, if it is still up by the time you are reading this.
curl --verbose --header "Accept: application/octet-stream" https://mii-unsecure.ariankordi.net/mii_data/JasmineChlora --output JasmineChlora.ffsd
JasmineChlora with your own NNID, of course.I believe this script decrypts Mii QR Code data directly to FFSD/CFSD format: https://gist.github.com/jaames/96ce8daa11b61b758b6b0227b55f9f78
zbarimg --quiet --raw --oneshot -Sbinary image.jpg | python3 mii-qr.py /dev/stdin ./mii.ffsd
image.jpg, mii.ffsdIf you can't install it (not on Linux or MSYS2), or need the latest version, let's build it.
(You probably don't need to follow these)
git clone https://github.com/glfw/glfw && cd glfwcmake -S . -B build
-D CMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake -D CMAKE_INSTALL_PREFIX=/usr/local/x86_64-w64-mingw32/cmake --build build -j8cmake --install buildTry: pkg-config --libs zlib glfw3
(Unless it complains about needing glu)
NOTE from 2024-06-02: To cross compile this from Linux to Windows, I used the following command:
TOOLCHAIN_PREFIX=x86_64-w64-mingw32- make LDFLAGS="-L/dev/shm/glfw/build/src/ -lz -L/dev/shm/glew/lib/ -lglew32 -lglfw3 -lopengl32 -lgdi32 -lws2_32
Where I have glew and glfw built at /dev/shm.
While pkg-config worked, letting me need only the TOOLCHAIN_PREFIX set, for whatever reason it wasn't building and threw lots of linking errors saying it couldn't link tons of symbols from glew32 even though it literally finds it and opens the library, so... IDK.
137 commits
8 commits
C++
89.5%
C
4.0%
GLSL
2.9%
Go
1.9%
Python
1.1%