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
, which is an .mpq
compatible file. This separation the data from the executable follows modern design practices and that it is more mod friendly. All one needs to do is supply a patch .otr
and the system will automatically replace the data.
LUS accepts any and all contributions. You can interact with the project via PRs, issues, email ([email protected]), or Discord. Please see CONTRIBUTING.md file for more information.
We use semantic versioning. We have defined the API as: every C linkage function, variable, struct, class, public class method, or enum included from libultraship.h.
cmake -H. -Bbuild
cmake --build build
# Visual Studio 2022
& 'C:\Program Files\CMake\bin\cmake' -DUSE_AUTO_VCPKG=true -S . -B "build/x64" -G "Visual Studio 17 2022" -T v142 -A x64
# Visual Studio 2019
& 'C:\Program Files\CMake\bin\cmake' -DUSE_AUTO_VCPKG=true -S . -B "build/x64" -G "Visual Studio 16 2019" -T v142 -A x64
& 'C:\Program Files\CMake\bin\cmake' --build .\build\x64
Thankyou to JetBrains for providing their IDE CLion to me for free!
LUS is licensed under the MIT license.
LUS makes use of the following third party libraries and resources:
- Fast3D (MIT) render display lists.
- ImGui (MIT) display UI.
- StormLib (MIT) create and read
.mpq
compatible archive files. - StrHash64 (MIT, zlib, BSD-3-Clause) provide crc64 implementation.
- ZAPD (MIT) asset utilities.
- dr_libs (MIT-0) mp3 and wav file conversion.
- metal-cpp (Apache 2.0) interface to the Apple Metal rendering backend.
- nlohmann-json (MIT) json parsing and saving.
- spdlog (MIT) logging
- stb (MIT) image conversion
- thread-pool (MIT) thread pool for the resource manager
- tinyxml2 (zlib) parse XML files for resource loaders
- zlib (zlib) compression used in StormLib
- bzip2 (bzip2) compression used in StormLib
- sdl2 (zlib) window manager, controllers, and audio player
- glew (modified BSD-3-Clause and MIT) OpenGL extension loading library.
- libzip (BSD-3-Clause) read
.zip
compatible archives - glob_match (Dual MIT/GPL) Glob pattern matching.