No description
  • C++ 75.5%
  • C 20.1%
  • CMake 3%
  • HLSL 0.4%
  • Metal 0.4%
  • Other 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Zach Bacon a0b6e26257
Some checks failed
build-validation / build-linux (push) Failing after 6s
build-validation / build-android (push) Failing after 3s
docs / build (push) Failing after 16s
test-validation / test-linux (push) Failing after 3s
build-validation / build-macos (push) Has been cancelled
build-validation / build-ios (push) Has been cancelled
build-validation / build-windows-x64 (push) Has been cancelled
build-validation / build-windows-arm64 (push) Has been cancelled
test-validation / test-windows (push) Has been cancelled
Mark root Context initialized in CreateDefaultInstance
Fast3dGui::Init() (invoked synchronously via window->Init() further down
in this same factory) requires its Context dependency to satisfy
IsInitialized(), not just be non-null. Nothing else in this factory
calls MarkInitialized() on the root Context, so any consumer using
Fast3dWindow via CreateDefaultInstance hits 'Component Fast3dGui
requires dependency Context to be initialized before use' before the
factory even returns.
2026-09-19 12:35:19 -04:00
.github/workflows Fixes documentation build deployment. (#1245) 2026-08-16 13:14:09 -04:00
cmake Load TCC-compiled scripts in-memory to avoid antivirus false-positives (#1266) 2026-09-02 18:49:06 -04:00
docs Clarified versioning scope and updated epoch rules in documentation. 2026-08-16 13:21:52 -04:00
include Load TCC-compiled scripts in-memory to avoid antivirus false-positives (#1266) 2026-09-02 18:49:06 -04:00
keys/script Implemented dynamic loading (#1051) 2026-04-13 22:40:35 -04:00
src Mark root Context initialized in CreateDefaultInstance 2026-09-19 12:35:19 -04:00
tests Resolve .meta aliases by archive priority (port #1168 to main) (#1218) 2026-08-09 11:11:43 -04:00
tools Replace Python key-header generation with a host-compiled C++ tool (#1259) 2026-08-30 11:00:03 -04:00
.clang-format Standalone build (#9) 2022-11-03 18:26:17 -04:00
.clang-tidy Adds C bridges to LUS C++ code to their own files. Additionally organizes headers for more organic includes. (#29) 2022-11-17 07:57:16 -05:00
.gitignore Cleans up doc file names and paths (#1237) 2026-08-09 17:20:13 -04:00
CMakeLists.txt Load TCC-compiled scripts in-memory to avoid antivirus false-positives (#1266) 2026-09-02 18:49:06 -04:00
CODE_OF_CONDUCT.md Adds CONTRIBUTING.md (#295) 2023-05-29 01:42:11 -04:00
CONTRIBUTING.md docs: sync Fast3D README, expand build instructions, fix CONTRIBUTING (#1071) 2026-04-15 18:22:58 -04:00
Doxyfile Component system (#1174) 2026-07-29 18:32:03 -04:00
LICENSE Licenses libultraship as MIT 2022-01-11 21:04:35 -05:00
README.md Updates Versioning documentation to cover epoch semver. (#1194) 2026-08-15 13:59:10 -04:00
requirements.txt Implemented dynamic loading (#1051) 2026-04-13 22:40:35 -04:00

libultraship

libultraship (LUS) is a library meant to provide reimplementations of libultra (n64 sdk) functions that run on modern hardware.

LUS uses an asset loading system where data is stored separately from the executable in an archive file ending in .otr or .o2r. .otr files are .mpq compatible files. .o2r files are .zip compatible files. This separation of data from executable follows modern design practices which are more mod friendly. All one needs to do is supply a patch .otr or .o2r and the system will automatically replace the data.

Documentation

Full Documentation | API Reference

Contributing

LUS accepts any and all contributions. You can interact with the project via PRs, issues, email (kenixwhisperwind@gmail.com), or Discord. Please see CONTRIBUTING.md file for more information.

Versioning

We use epoch semantic versioning. Please see our versioning page for more information..

Building

Prerequisites

Install system dependencies before building.

Linux (Debian/Ubuntu):

sudo apt-get install $(cat .github/workflows/apt-deps.txt)

macOS:

brew install $(cat .github/workflows/brew-deps.txt)

Then install the required Python packages (needed to generate asset keys):

pip install -r requirements.txt

Linux / macOS

cmake -H. -Bbuild
cmake --build build

Windows

On Windows, LUS uses vcpkg to manage C++ dependencies. Pass -DUSE_AUTO_VCPKG=ON to have CMake download and bootstrap vcpkg automatically. Alternatively, install the required ports manually with an existing vcpkg installation and pass -DCMAKE_TOOLCHAIN_FILE=%VCPKG_ROOT%/scripts/buildsystems/vcpkg.cmake instead.

Generating a Visual Studio solution (x64)

& 'C:\Program Files\CMake\bin\cmake' -DUSE_AUTO_VCPKG=ON -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64

Building

& 'C:\Program Files\CMake\bin\cmake' --build .\build\x64

iOS

Requires Xcode on macOS. Set CMAKE_OSX_DEPLOYMENT_TARGET to the minimum iOS version you wish to support.

cmake -H. -Bbuild -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0
cmake --build build --config Release

Android

Requires the Android NDK. Set ANDROID_NDK_HOME to the path of the extracted NDK directory.

cmake -S . -Bbuild-android -GNinja \
  -DCMAKE_SYSTEM_NAME=Android \
  -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
  -DANDROID_NDK=$ANDROID_NDK_HOME \
  -DANDROID_ABI=arm64-v8a \
  -DANDROID_PLATFORM=latest \
  -DANDROID_STL=c++_static \
  -DCMAKE_BUILD_TYPE=Release
cmake --build build-android

License

LUS is licensed under the MIT license.

LUS makes use of the following third party libraries and resources:

  • Fast3D (MIT) render display lists.
  • prism-processor (MIT) shader preprocessor.
  • ImGui (MIT) display UI.
    • SDL3 (zlib) windowing and input backend.
    • glew (modified BSD-3-Clause and MIT) OpenGL extension loading backend (Windows/macOS).
    • metal-cpp (Apache 2.0) Apple Metal rendering backend (macOS/iOS).
  • StormLib (MIT) create and read .mpq compatible archive files.
    • zlib (zlib) compression.
    • bzip2 (bzip2) compression.
  • libzip (BSD-3-Clause) create and read .zip compatible archives.
    • zlib (zlib) compression.
  • StrHash64 (MIT, zlib, BSD-3-Clause) provide crc64 implementation.
  • nlohmann-json (MIT) json parsing and saving.
  • spdlog (MIT) logging.
    • {fmt} (MIT) text formatting (bundled).
  • stb (MIT) image conversion.
  • thread-pool (MIT) thread pool for the resource manager.
  • tinyxml2 (zlib) parse XML files for resource loaders.
  • SDL3 (zlib) window manager, controllers, and audio player.
  • glob_match (Dual MIT/GPL) Glob pattern matching.
  • libgfxd (MIT) display list disassembler.
  • libtcc (LGPL-2.1) C compiler used for the script system.
  • monocypher (CC-0) cryptography library used for the modding system.