Skip to content

ariankordi/ffl

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FFL Arian Fork

This is my fork of AboodXD's FFL decompilation, which was originally decompiled from FFL 1.3.10 in New SUPER MARIO BROS. U v1.3.0.

View the original README contents here. TL;DR, FFL is the library that renders Miis and manages Mii data on Wii U and is only accessible to approved developers.

FFL

Decompilation of Wii U Face Library v1.3.10, used in New Super Mario Bros. U v1.3.0.

FFL is a library that is part of nn (Nintendo SDK C++ API Namespace?), used for dealing with Mii data. While most of nn is already open to developers as part of the Cafe SDK by Nintendo, FFL is a closed-source library that is sent to developers on demand.

This decompilation aims to provide more information on Mii data, as well as to further push the progress on the New Super Mario Bros. U decompilation project.

See Sead for matching policy.

Specifically, this is Abood's port to RIO (OpenGL 3.3) which works on PC alongside Wii U.

Dependencies

Both of the below are originally by Abood, but I am linking to my forks since that's what is expected.

Building

Also see the FFL-Testing CMakeLists.

  1. Clone this repo and dependencies.
git clone https://github.com/ariankordi/ffl  # This repo.
git clone https://github.com/ariankordi/rio  # RIO framework.
git clone https://github.com/ariankordi/ninTexUtils  # ninTexUtils for deswizzling.

The CMake assumes that RIO is located at ../rio, but you can also pass -DFFL_WITH_RIO=path/to/rio (Exact same for ninTexUtils)

  1. Choose a build mode. Here are your options:
  • For a RIO program/game.
  • For an OpenGL program, bundling RIO code with it.
  • Without RIO or OpenGL.
    • Standalone, for something like FFLSharp.
    • Will most likely use the dynamic library: -DFFL_BUILD_SHARED=1
  1. Head into the ffl folder and use CMake to build.
  • cmake -S . -B build (Add any extra args at the end)
  • cmake --build build
  1. Your library is in build/
> ls build
CMakeCache.txt  CMakeFiles/  cmake_install.cmake  libffl.so*  Makefile
                                                  ^^^^^^^^^^
  • In my case on Linux, it's in libffl.so but I think on Windows it will be ffl.dll.
    • For the shared library of course not static
    • There will be extra prefixes if it's for RIO or OpenGL.
    • Copy this to your program's directory or include the CMakeLists as a dependency.

More instructions are TBD.

New Changes

Over time, I've added new features that are not included in Abood's original decomp. As of writing (December 2024), these include:

Definitions

This documents all of the definitions that this supports to add/remove functionality, as of December 2024.

  • FFL_ADD_GLAD_GL_IMPLEMENTATION - Adds GLAD implementation, enabling FFLGladLoadGL (dynamic linking)
  • FFL_ENABLE_NEW_MASK_ONLY_FLAG - Enables new mask only flag which does not initialize shapes.
  • FFL_NO_DATABASE_DEFAULT - disables default guest Miis
  • FFL_NO_DATABASE_FILE - Disables opening and use of hidden/official databases.
  • FFL_NO_DATABASE_RANDOM - Disables use of random database and FFLiGetRandomCharInfo.
  • FFL_NO_MIDDLE_DB - Disables FFLMiddleDB functionality (^^)
  • FFL_NO_RENDER_TEXTURE - Do not use FFLiRenderTexture (breaks FFLInitCharModelGPUStep)
  • FFL_NO_FS - Disables FFL's use of RIO filesystem.
    • This is used for databases and non-cached resource loading.
  • FFL_NO_NINTEXUTILS - Disables ninTexUtils, which is needed for Wii U/FFLRes resource file support.
    • Specifically, this library deswizzles Wii U format textures. You can still use AFL resources with this.
  • FFL_NO_DRAW_MASK_ALPHA_VALUES - Skip drawing alpha values on mask (FFL default behavior)...
    • This makes zero difference to the mask's appearance for me.
  • FFL_MLC_PATH - Takes a quoted string. Defines the MLC path if FS is not disabled.
  • FFL_PART_INDEX_WRAP - When out of bounds part indexes are passed in (invalid CharInfo)...
    • ... This option will choose to wrap that part index.

Not documented (slash useless):

  • FFL_USE_ADJUST_MTX
  • FFL_USE_MINIZ
  • FFL_USE_MODULATE_EYEBROW_EX
  • FFL_LOG_CHARMODEL_CLEANUP

License Note

All of the changes that I have made to FFL in this repo are hereby licensed under the Unlicense. However, this does not account for changes made by Abood when porting the decompilation, or the library to begin with.

About

FFL 64 bit/Linux port

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 74.5%
  • Python 13.5%
  • C 10.2%
  • CMake 1.8%