Compare commits

...

159 Commits

Author SHA1 Message Date
briaguya e1462b07e6 fix and improve test builds on distros workflow (#6748)
* Make distro test matrix dynamic

Resolve Ubuntu LTS and Fedora releases from endoflife.date at workflow
run time so the matrix tracks in-support versions automatically, and use
Debian's rolling oldstable/stable/testing tags. Switch install-step
gating from image-string equality to a packageManager key on each
distro entry. Drop the fedora:39 nlohmann workaround now that fedora:39
is no longer in the matrix.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Bootstrap git and read apt deps from apt-deps.txt

Add a per-package-manager step that installs git first so the checkout
can fetch submodules inside the container, then move checkout above the
main install steps so they have repo files on disk. The apt install now
sources its package list from .github/workflows/apt-deps.txt, matching
generate-builds.yml. Drop the redundant echo-the-command-then-run-it
lines from each install step.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Move libzip deps into apt-deps.txt

The libzip family (libzip-dev, zipcmp, zipmerge, ziptool) was previously
appended to each workflow's apt install line because the appimage build
needs libzip without crypto support. Add it to apt-deps.txt instead and
have the appimage build job apt-remove libzip-dev before its from-source
rebuild, mirroring the existing tinyxml2 pattern.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Drop libopengl-dev from distro test workflow

libglew-dev (in apt-deps.txt) already pulls in the OpenGL headers via
libgl-dev / libglvnd-dev, and generate-builds.yml has been building
without libopengl-dev for a long time. The line was originally added on
a guess; removing it brings the test workflow into alignment.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Move git, cmake, lsb-release into apt-deps.txt

These are real build-time deps (git for submodule checkout, cmake for
the build, lsb-release for soh CMakeLists distro detection). Moving them
into apt-deps.txt makes the file a single canonical answer to what apt
packages are needed to build, and reduces the distro test workflow's
apt install line to just the compiler plus the file.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Move apt deps file out of .github and point BUILDING.md at it

Rename .github/workflows/apt-deps.txt to linux-build-deps/apt.txt so the
canonical list lives at a path users can reasonably be told to look at.
Update both workflows to the new path. BUILDING.md grows a "Clone the
repo and enter the directory" section before Install dependencies so
its apt commands can source from the file via $(cat ...) — the clone
snippet is dropped from the later Build block to avoid duplication.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add cmake version verification section to BUILDING.md

Older distros ship cmake too old for this project; point users at how to
check their version against the project's minimum and link to a few ways
to install a newer cmake (pypi, kitware apt repo, Homebrew).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add cmake verify/update step to distro test workflow

ubuntu:22.04 and debian:oldstable ship cmake older than the project's
minimum (3.26+), failing at configure time. Add a step before Build SoH
that compares the installed cmake to the project minimum and, if too
old, installs a newer cmake via pipx (per-distro pipx package). The new
cmake's bin dir is added to GITHUB_PATH so the Build SoH step picks it
up. Mirrors the BUILDING.md guidance pointing users at pypi cmake.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Set ccache on PATH once per job in generate-builds

Replace the repeated per-step `export PATH="/usr/lib/ccache:..."` with
a single "Add ccache to PATH" step in each Linux job that writes both
ccache dirs to GITHUB_PATH. From there it persists for every subsequent
step in that job, so each from-source build (SDL, SDL_net, tinyxml2,
libzip) and the final cmake compile pick up ccache automatically.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Extract tinyxml2 from-source build into a composite action

generate-builds had the same 13-line tinyxml2 install block in both the
generate-soh-otr and build-linux jobs, and the distro test workflow is
about to need the same logic conditionally. Move it into a composite
action at .github/actions/install-tinyxml2 and have generate-builds use
it. The action only builds and installs from source; removing the
distro package stays in the caller since that command is package-manager
specific.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add tinyxml2 troubleshooting tip to BUILDING.md

Older distros ship tinyxml2 pre-10.0.0 which doesn't include the cmake
config file the project's find_package call needs. Point users at either
brew or the install-tinyxml2 composite action script when they hit the
"Could not find a package configuration file" error.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Install latest tinyxml2 in distro test workflow when missing

ubuntu:22.04 ships libtinyxml2-dev 9.0.0, which is before tinyxml2
started providing a cmake config file, so find_package(tinyxml2) fails.
Add a step (apt-only) that checks for tinyxml2Config.cmake on disk and,
if missing, removes the distro package and calls the install-tinyxml2
composite action to build 10.0.0 from source.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Extract SDL2_net from-source build into a composite action

Same shape as the install-tinyxml2 action: generate-builds had identical
SDL2_net install blocks in both the generate-soh-otr and build-linux
jobs, and the distro test workflow is about to need the same logic
conditionally. Move it into a composite action at
.github/actions/install-sdl2-net. The cp of /usr/local/lib/libSDL* into
the multiarch lib dir stays in the caller since it's appimage-specific.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Refactor cmake-config troubleshooting tip and add SDL2_net

Restructure the troubleshooting tip into a generic "older distros ship
packages without the cmake config files" framing with a list of known
failing package versions, then two paths to install a newer version:
Homebrew (with a note about CMAKE_PREFIX_PATH) or building from source
using the install-* composite actions as reference. Add SDL2_net to the
list alongside tinyxml2.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Install latest SDL2_net in distro test workflow when missing

ubuntu:22.04 ships libsdl2-net-dev 2.0.x, which is before SDL2_net
started providing a cmake config file, so find_package(SDL2_net) fails
silently and the link step errors on the missing SDL2_net::SDL2_net
target. Mirror the tinyxml2 pattern: an apt-only check for
sdl2_net-config.cmake on disk that triggers the install-sdl2-net
composite action when missing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Document minimum GCC and Clang versions

Minimums pinned empirically by walking up versions on the test-gcc-10
test branch until each compiler built clean. The version numbers live
in linux-build-deps/minimum-{gcc,clang}-version.txt so the workflow can
read them and BUILDING.md can link to a single source of truth.

Test runs that pinned the floors:
- GCC 9 failure (missing <compare> header):
  https://github.com/briaguya0/Shipwright/actions/runs/27491491936
- GCC 10 success:
  https://github.com/briaguya0/Shipwright/actions/runs/27490774081
- Clang 15 failure (structured-binding-capture in lambda):
  https://github.com/briaguya0/Shipwright/actions/runs/27491715930
- Clang 16 success:
  https://github.com/briaguya0/Shipwright/actions/runs/27492790573

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add verify-compiler and install-newer-compiler actions

Two composite actions that work together to keep the compiler used by
the build at or above the project minimum. verify-compiler reads
linux-build-deps/minimum-${compiler}-version.txt, compares against the
installed default, and emits four outputs: needs_install,
available_in_distro, cc, cxx, version. install-newer-compiler consumes
those and installs ${compiler}-${version} either from the distro repos
(apt or zypper) or via apt.llvm.org for clang on apt distros. Any
combination without a known install path fails with "Minimum version
not readily available. An alternative installation method for
${compiler} ${version} is needed."

Validated on the test-verify-compiler branch via two dedicated test
workflows that exercise every reachable matrix combination and assert
expected outputs / install outcomes:

- verify-compiler: https://github.com/briaguya0/Shipwright/actions/runs/27510863067
- install-newer-compiler: https://github.com/briaguya0/Shipwright/actions/runs/27512420765

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Wire verify-compiler and install-newer-compiler into distro test workflow

Between the dependency-install step and the cmake verify step, run
verify-compiler and (conditionally) install-newer-compiler so distros
that ship a compiler below the project minimum get a newer one. Build
SoH's CC/CXX env now reads the resolved binary names from
verify-compiler's outputs instead of using matrix.cc/cxx directly, so a
freshly-installed gcc-N/clang-N actually gets used by cmake.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add fmt/clang consteval workaround tip to BUILDING.md

Point users at the fmtlib/fmt#4807 issue and the
-DCMAKE_CXX_FLAGS=-DFMT_CONSTEVAL=constexpr workaround when they hit the
"call to consteval function" error while building with clang. Affects
distros that ship libfmt 10.x with newer clang.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Probe fmt/clang consteval compat and apply workaround when needed

Self-checking version of the BUILDING.md tip: between the dep-install
steps and Build SoH, try to compile the minimal repro from
fmtlib/fmt#4807. If the compile fails, the build job adds
-DCMAKE_CXX_FLAGS=-DFMT_CONSTEVAL=constexpr to cmake's invocation;
otherwise the flag stays empty. The probe uses the resolved CXX from
verify-compiler, so it works regardless of whether the compiler came
from the distro or a freshly-installed newer version.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Move Arch packages into linux-build-deps/pacman.txt

Mirror the apt pattern: extract the Arch package list to
linux-build-deps/pacman.txt (everything except the compiler) and point
both BUILDING.md and the distro test workflow at it. Also brings the
workflow's Arch install up to parity with BUILDING.md — it was missing
opusfile and libvorbis.

Add linux-build-deps/README.md explaining that apt.txt is verified on
every push but the other per-distro lists can drift, and inviting PRs /
issues / Discord messages when something's missing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Move Fedora packages into linux-build-deps/dnf.txt

Mirror the apt/pacman pattern: extract the Fedora package list to
linux-build-deps/dnf.txt (everything except the compiler and the
gcc-c++ companion package) and point both BUILDING.md and the distro
test workflow at it. Brings the workflow's Fedora install up to parity
with BUILDING.md — it was missing SDL2_net-devel, nlohmann-json-devel,
opusfile-devel, and libvorbis-devel. Also drops the leftover wget that
was only needed for an old from-source workaround.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Move openSUSE packages into linux-build-deps/zypper.txt

Mirror the apt/pacman/dnf pattern: extract the openSUSE package list
to linux-build-deps/zypper.txt and point the distro test workflow at
it. The list adds SDL2_net-devel and the audio family (libogg-devel,
libvorbis-devel, libopus-devel, opusfile-devel) that the workflow's
inline list was missing — package names verified in a Tumbleweed
distrobox.

Also adds a new openSUSE section to BUILDING.md (it wasn't there
before), with libstdc++-devel in the clang line because clang on
openSUSE doesn't pull in libstdc++ headers transitively the way it
does on other distros.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add in-support openSUSE Leap releases to the distro test matrix

Fetch openSUSE cycles from endoflife.date and include any with an EOL
date in the future as opensuse/leap:${cycle} images alongside the
rolling Tumbleweed entry. Today that's just Leap 16.0 (15.6 went EOL
2026-04-30); new Leap releases will appear automatically as they ship
and old ones drop off as they EOL.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Move Nix flake into linux-build-deps/flake.nix

Extract the flake.nix content out of BUILDING.md's inline code block
into linux-build-deps/flake.nix and update the Nix section to point at
it. Users run `nix develop ./linux-build-deps` from the repo root
instead of copying the flake out to a file they have to maintain
themselves.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Add build-nix job to distro test workflow

Verifies that `nix develop ./linux-build-deps` produces a shell that
builds SoH. Runs on its own (no distro matrix) and uses
cachix/install-nix-action per nix.dev's CI guidance.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* Drop LINUX_RUNNER override from distro test workflow

vars.LINUX_RUNNER isn't referenced anywhere else in .github/ — the
override is dead code. Replace all three call sites with plain
ubuntu-latest.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-16 11:57:13 -04:00
Brian adf31d5eb1 Fix Bottom of the Well Coffin Logic (#6743) 2026-06-15 14:31:31 +00:00
Reppan 0e5083931f [Modding] Refactor CustomEquipment (#6708) 2026-06-15 14:23:48 +00:00
aMannus 6bf5ec5145 Fix bean guy showing in check tracker when unshuffled (#6742) 2026-06-14 19:47:47 +00:00
ph fc2f525052 fix halfmilk RBA (#6670) 2026-06-14 18:55:37 +00:00
Jordan Longstaff 3250cc27f5 [Enhancement] Restore Saria's gesture animation in her house (#6569)
under Graphical Restorations
2026-06-14 18:14:17 +00:00
David Racine 71d1f5a9f9 fix(audio): Properly filter-out unavailable audio backends from UI (#6705) 2026-06-14 18:08:11 +00:00
David Racine 4415537deb fix(audio): Fix audio stutter when gfx hitches (#6704)
The audio thread will now self-pump every 5 ms in case the rendering loop
takes too much time before waking up the audio thread, causing audio
starvation.

This is what was causing audio stutters/cuts during world loading.
I had the issue constantly the first time I pressed start to get the game
menu.

To avoid issues, the first wakeup of the audio thread is behind a `primed`
flag and will wait unconditionnally for the rendering loop to wake us up.
This is to make sure the game has initialized properly and avoid a crash
on boot.
2026-06-14 18:06:44 +00:00
Pepper0ni 041295f058 Fix Guard pots being breakable with hookshot in logic (#6671)
implement ItemUseAllowed
2026-06-14 17:15:01 +00:00
Philip Dubé 360f4882d2 rando: option to allow swordless epona items (#6727) 2026-06-14 14:21:16 +00:00
David Racine 1894ffca46 docs: fix missing sdl2-net (#6740)
Add the sdl2-net dev package that was missing from the Fedora and macOS lists
2026-06-14 03:49:54 +00:00
Shishu the Dragon 8a1547a6e5 Ivan: New Farore’s Wind (#6735) 2026-06-13 04:41:50 +00:00
David Racine eb4142835e Fix custom music corruption past 256 sequences (#5989) (#6736)
The resolved replacement id (which can exceed 255) rode a single
per-player seqToPlay slot, written at enqueue but consumed
asynchronously on the audio thread; back-to-back starts and
priority-queue promotions clobbered it. sSeqFlags[0x6F] was also indexed
by raw id, reading out of bounds past the authentic range.

- func_800F9280 resolves the replacement and packs the full 16-bit id
  into the 0x82/0x85 play command; the handler reads opArgs & 0xFFFF.
  Audio_QueueSeqCmd no longer pre-writes the shared slot.
- SyncInitSeqPlayerInternal uses the command-carried id and bounds-checks
  it against the calloc'd sequence map (+0xF headroom for reserved-range
  skips).
- Route sSeqFlags reads through a bounded Audio_GetSeqFlags helper.
- Warn and skip gracefully past the 16-bit id limit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 03:36:25 +00:00
aMannus f3413bfd26 Remove REMOTE_CONTROL flags while building (#6732) 2026-06-13 01:52:26 +00:00
ItsHeckinPat e2e51ade18 Move Owl Locations to where they are in the world (#6725) 2026-06-13 00:19:35 +00:00
aMannus e9268c4467 Fix Outside ToT crash when using din's or dying (#6731) 2026-06-12 11:55:38 +00:00
Philip Dubé 2da8cf50c9 Fix rando code not using rando rng (#6730) 2026-06-12 06:06:58 +00:00
Philip Dubé 739225d222 Add 6th notch to text speed which makes text speed instant (#6694)
Helps frustration trying to read hints faster without skipping
2026-06-12 05:09:24 +00:00
Philip Dubé 7b01a7bf2e Early Granny's Potion Shop (#6693)
ZFG thinks it makes more sense not requiring Claim Check, so add option
2026-06-12 05:05:37 +00:00
Philip Dubé 8499286899 Only store grotto entrance for voiding out when grottos mixed, or in decoupled (#6721)
Does some bookkeeping for shuffled spawns / warp songs / owl
2026-06-12 04:59:19 +00:00
Amber Burton 319207e795 Co op syncing and tower collapse softlock fixes. (#6684)
We now have both tower collapse corrected, and other potential softlocks and bugs that would occur from weird network timing causing an UNSET of values in the game with these fixes.
2026-06-12 03:01:10 +00:00
Philip Dubé 255ea2da26 fix recent refactoring regression (#6724) 2026-06-11 19:58:41 +00:00
Pepe20129 8470f41c29 Increase warnings in Windows and fix most of them (#5858)
/W3
2026-06-11 15:05:33 +00:00
Pepe20129 7c42a63ceb Add the 2 "decoy" crates as NL crates (#6672) 2026-06-11 12:49:55 +00:00
xxAtrain223 8b7109f603 Hard Code Small Key Doors (#6578) 2026-06-11 04:01:53 +00:00
Chris 483849b977 Single bombchu bag mode should give refills (#6717) 2026-06-11 02:30:47 +00:00
ItsHeckinPat 54d7ed365b [Bug Fix] Fix Dark Link Crash/Missing Trails Bug (#6720)
Delete Unused Effect Slot
2026-06-11 02:27:26 +00:00
Garrett Cox 7022eca36b More MacOS CI iteration (#6382) 2026-06-10 01:48:09 +00:00
Shishu the Dragon 1c58bcc3e9 Ivan: Hookify and improve spawning (#6707)
Spawn/despawn Ivan immediately (not on next scene)

Move Ivan’s boomerang code out of z_player.c
2026-06-10 01:41:38 +00:00
Philip Dubé 44888584c4 Fix extended file select info showing random triforce piece counts (#6687) 2026-06-10 01:36:08 +00:00
Philip Dubé de170e9746 skip text: cancel in shops (#6703) 2026-06-10 01:24:15 +00:00
Philip Dubé 29b9b4a5a7 Skip Epona Race: don't set EVENTCHKINF_EPONA_OBTAINED until collecting Epona's Song (#6706)
Most notably this doesn't despawn gates allowing itemless epona steal
2026-06-10 01:23:47 +00:00
Philip Dubé 35a2ce4bfe Merge pull request #6715 from serprex/ackbar
merge ackbar to develop
2026-06-10 01:23:01 +00:00
Demur Rumed 17f5983771 Merge remote-tracking branch 'origin/develop' into develop-ackbar 2026-06-09 22:57:16 +00:00
Philip Dubé d901223ade Crop input viewer images (#6695)
Addresses complaint that it's hard to stash in corner without getting black box
2026-06-09 20:34:57 +00:00
lepideble 88a5b3ff48 Add an option to limit the location of triforce pieces (#6710) 2026-06-09 20:30:35 +00:00
Pepe20129 e93ea5b919 Enemy rando cleanup 3 (#6518)
* Fix bari's biris not respecting the seeded option
* Randomize Peehat Larvas
* Refactor `IsEnemyAllowedToSpawn`
* Fix the issue where some enemies spawn above the ceiling
* Partially fix twisted hallway issue
* Prevent Baris from spawning Baris
2026-06-09 19:52:25 +00:00
Philip Dubé 5875ed880a Fix Malformed Preset Filenames (#6712)
Sanitize preset names for filesystem safety, log errors without crashing

Co-authored-by: Unreference <87878910+unreference@users.noreply.github.com>
2026-06-09 19:51:15 +00:00
Philip Dubé 8649085862 add option gating shields / tunics in shop behind finding one first (#6700) 2026-06-09 19:45:04 +00:00
Philip Dubé eaad45879a remove unused code from option.cpp (#6690) 2026-06-09 16:19:06 +00:00
Philip Dubé 3e1318edc0 uncomment code in z_camera.c (#6709)
pointed out by Evangelia, cause of discrepancy in crawlspace glitch
* [Console](https://www.youtube.com/watch?v=2_tFHeEvXI0)
* [SoH](https://www.youtube.com/watch?v=-u3TzbdUr3c)
2026-06-09 16:17:22 +00:00
A Green Spoon 47e386197d Fix random seed string gen (#6697) 2026-06-09 01:59:02 +00:00
Chris 43777996a8 Fix Ocarina Time Travel Registration (#6698) 2026-06-09 00:11:25 +00:00
Pepe20129 b424e4d57e Sort some files into their correct folder (#6689) 2026-06-08 16:26:24 +00:00
Reppan 228f9fecea [Modding] Add Adult Mask DL for mod compability (#6642) 2026-06-08 00:42:03 +00:00
Philip Dubé b6151c131a Allow all 8 items in shop to be randomized in No Logic (#6688) 2026-06-07 06:13:09 +00:00
Jordan Longstaff 38e12a33c4 Child Link cycles arrow types (#6686) 2026-06-07 04:35:28 +00:00
Pepper0ni 8215b97cb8 Add MQ water lock fix, force it in rando (#6575) 2026-06-07 01:35:43 +00:00
Pepper0ni 91769a0e3e boss key hint typo (#6583) 2026-06-07 01:35:07 +00:00
louist103 dd2e952cf5 Don't use shared pointers for the CS helpers (#6685) 2026-06-07 00:51:47 +00:00
Chris 8bc72638c3 Add 2nd water control switch and sync floating key (#6568) 2026-06-06 21:38:56 +00:00
Pepper0ni 8a14cd1096 Move to port-maintainance LUS branch to fix crash on close (#6629) 2026-06-06 21:30:55 +00:00
Jordan Longstaff d4d88de827 Change trial barrier cutscene skip to Story (#6592) 2026-06-06 20:26:53 +00:00
Pepe20129 10e429d8f7 Don't Spoil Ice Trap (#6597) 2026-06-06 20:23:11 +00:00
Aaron Gamache db60f64f8e Compile with -ffp-contract=off on arm64 macOS (#6584) 2026-06-06 20:01:54 +00:00
Qshadow f45d65381f Add Windows ARM64 build support (#6635) 2026-06-06 20:01:40 +00:00
Shishu the Dragon ef014a35e6 Enhancement to disable heat haze (#6663) 2026-06-06 19:56:31 +00:00
Pepe20129 2d962bbb8c Split up mods.cpp (#6677) 2026-06-06 03:47:41 +00:00
Matt Jakubowski 8a0315a2df Fix Crowd Control Wolfos despawning when scene switch 0 is set (#6591)
Crowd Control passed actor params 0 for EN_WF, so EnWf_Init treated
switchFlag 0 and killed the actor when scene switch 0 was set. Match
vanilla EnEncount1 Wolfos spawns: (0xFF << 8) | 0x00

Also prevent crowd control effects from triggering when link is not in controllable state
2026-06-05 06:18:26 +00:00
Philip Dubé b61db77020 more hardening of code in Network/ (#6650)
also unique_ptr
2026-06-05 06:16:11 +00:00
Pepe20129 90823fad5a Identify clean up (#6673)
Can't move `IdentifyShopItem` as it's used all over the place.
2026-06-04 02:35:43 +00:00
A Green Spoon 1f16987215 extend NTSC10 spawn to NTSC11 (#6675) 2026-06-04 02:35:10 +00:00
A Green Spoon 1ee0f5a654 Fix anchor get item crash (#6678)
* remove Roc's GID and prevent OOB from prior versions

* change OOB gi to stone of agony
2026-06-04 02:34:50 +00:00
Pepper0ni ec27775e81 Fix Logic issues in DMC > Fire Temple and DMC wall PoH (#6679)
* DMC logic: wall poh needs climb

Include jumpslash as unintuitive jump
Leave one note about getting there with hovers or acrobatics

* Handle fire temple boulders properly, add some new cases to skip climb with the wall

---------

Co-authored-by: Demur Rumed <159546+serprex@users.noreply.github.com>
2026-06-04 02:33:26 +00:00
A Green Spoon abcb3ad94b adult-only crate (#6674) 2026-06-03 03:17:30 +00:00
Pepper0ni fe78ae21a6 Properly send Link to the beginning to the dungeon in boss room shuffle (#6676) 2026-06-03 03:12:31 +00:00
Philip Dubé 80d3114f79 Fix logic placing item on saving carpenters when carpenters start free (#6661)
Set flag on savefile, fill location when freed, don't junk check when card shuffled

Also fix other misc issues in fill logic
2026-05-31 13:46:37 +00:00
Philip Dubé 1de22d816c OTRGlobals.h: include stdint.h (#6656)
standardize on stdint.h over cstdint
2026-05-30 14:29:39 +00:00
Pepper0ni 004adaae14 Update LUS to build in GCC 16 (#6601) 2026-05-30 13:38:58 +00:00
Philip Dubé a3ab0e2bdf Eradicate rand (#6553)
Random seed: always generate 10 digits

Reduce max seed size, this is getting hashed so it's not valuable to have so many characters
2026-05-29 21:50:19 +00:00
Philip Dubé b8a3998c51 Fix master sword timing info (#6552)
General fix: don't reset timestamp if already set,
this is particularly important for retrieving master sword vs ganon

Also fix master sword timing not being set when shuffled
2026-05-29 02:51:57 +00:00
Philip Dubé 31cbeb929b Fix bean merchant check not being listed in tracker when bean merchant only shuffled (#6557) 2026-05-29 02:51:15 +00:00
Philip Dubé d09cd4ffcd Fix sword scaling (#6558)
Don't apply transforms when scale 1.0, adjust translation to be gradual
2026-05-29 02:50:02 +00:00
Pepe20129 a57cdc6f77 Update Hell Mode Preset (#6570) 2026-05-29 02:39:56 +00:00
Philip Dubé 5bccc8a340 avoid ganon's castle blue warp dropping Link in lava (#6647) 2026-05-29 02:24:54 +00:00
aMannus dc4b27d65a Fix gossip stone check (#6648) 2026-05-29 02:14:17 +00:00
Philip Dubé 0dcd52e5c7 Fix warp shuffle without warp hint text (#6551)
Issue was needing to hook on RSK_SHUFFLE_WARP_SONGS, but cleaned up code
2026-05-27 18:28:43 +00:00
Chris e5ad4e6f11 Fix ending audio shuffle (#6608) 2026-05-27 15:58:17 +00:00
Unreference e3ee258a92 fix(actors): Restore vanilla default for Kokiri Forest quest state hook (#6614) 2026-05-27 14:02:32 +00:00
Jameriquiah 30dcd7946f add fps custom equips (#6543) 2026-05-25 03:31:29 +00:00
Chris b728e671bf Fix blank text on carpet salesman (#6605) 2026-05-25 03:30:31 +00:00
xxAtrain223 2845baad6c Identify checks for Merchants and Scrubs (#6641)
Identify checks for merchants and deku scrubs to show their prices and non-mysterious checks in the check tracker.
2026-05-24 22:49:00 +00:00
Pepe20129 1785a70f22 Clean OTRGlobals 2 (#6636)
The main effect of this PR is completely decoupling OTRGlobals.h from any non-std header making it so that the "everything is being rebuilt because I changed a header that at some point gets included in OTRGlobals" problem doesn't happen anymore.
2026-05-23 20:32:51 +00:00
A Green Spoon 772fe2bb92 add grotto butterflies (#6619) 2026-05-18 06:44:35 +00:00
Chris 37db034815 Use singular on message for 1 token (#6567) 2026-05-09 22:25:09 +00:00
Pepper0ni 5b4d8edf51 fix bad merge with the suns song fairy in spirit (#6590) 2026-05-04 02:02:21 +00:00
Jameriquiah 1a46d2ec96 hyrule field typo fix (#6574) 2026-04-29 09:37:20 -07:00
Pepper0ni a6ceda989e Fix KF to LW sign region (#6571) 2026-04-28 20:16:49 +00:00
Pepper0ni 4b90ae48c7 Add missing hint logic, cleanup ganon's tower and mido logic, change LA rock name (#6565) 2026-04-26 14:39:01 +00:00
Pepper0ni ea76550fc7 Fix owl talk logic to include kokiri (#6564) 2026-04-25 15:30:27 +00:00
Philip Dubé ccfa31a245 Fix drag&drop not updating excluded locations (#6559) 2026-04-23 22:48:12 +00:00
Philip Dubé 806398a65b Fix OGC great fairy reward in vanilla with skip misc interactions when fish is not obtainable (#6556)
Item_CheckObtainability should only be called with MOD_NONE GI

For RG_DOUBLE_DEFENSE that became ITEM_FISH. Nonsense ensued

To reproduce issue, create debug save & go straight to OGC great fairy with only magic/ocarina/lullaby
2026-04-23 12:34:26 +00:00
Philip Dubé eeca7626d8 rocksanity (#5015)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-04-22 14:50:14 +00:00
Philip Dubé f3d60e0ddd use bool over s8 (#6547) 2026-04-22 13:36:18 +00:00
Philip Dubé 92ba43d675 fix seed generation regression (#6549)
seedString is some unused variable, correct variable is seed
2026-04-22 03:11:07 +00:00
Philip Dubé 18bf4b315f RC_HF_OCARINA_OF_TIME_ITEM gated on RSK_OOT_HINT (#6546)
forgot to push in hint refactor
2026-04-21 23:07:59 +00:00
Pepper0ni 3221d8a988 Fix bean fairies + start with beans generation (#6548) 2026-04-21 23:04:37 +00:00
Philip Dubé 5d8c3c8883 Refactor hints (#6540)
small hint logic cleanup
share code for bridge requirements
refactor DistributeAndPlaceHints
2026-04-21 16:31:41 +00:00
Philip Dubé 69681e608f Fix swimvoid in grottos to just respawn in grotto (#6529) 2026-04-21 16:02:33 +00:00
Philip Dubé 719bb87eda add hint text for sun song fairies in spirit temple (#6544) 2026-04-21 15:30:33 +00:00
Philip Dubé fa875596f2 pool_functions cleanup (#6536)
remove 3drando/rando_main
2026-04-21 15:29:36 +00:00
Philip Dubé 94a5311cba port text.hpp to custom-message as text.cpp/text.h (#6541)
remove unused logic, leaving Text pretty bare bones
2026-04-20 18:37:05 +00:00
Philip Dubé 461cc0930f don't use 3drando/random.hpp outside 3drando (#6537) 2026-04-20 17:18:48 +00:00
Philip Dubé aa5379a8e0 remove 3drando/custom_messages (#6538) 2026-04-20 17:18:25 +00:00
Reppan bf37645d72 Fix mirror shield color editor (#6542)
Oversight on my end that customequipment.cpp unloaded and reloaded assets abit to aggressive.

Adds a guard to make sure to only unload if custom asset is used and to not unload then reload vanilla asset.

Have tested it with fados customequipment and confirmed that mirrorshield is working as intended.
2026-04-20 17:18:08 +00:00
Philip Dubé 3b65eaa4ef Fix cutscene skips causing credits to spawn player in Lake Hylia (#6534)
SkipBlueWarp was intercepting credits. Disable during GAMEMODE_END_CREDITS
2026-04-19 20:50:11 +00:00
Philip Dubé c7ef690bc2 func_$hex renaming from upstream (#6498) 2026-04-19 18:56:01 +00:00
Chris 3be7eff02c Arrow cycle should check for sufficient magic (#6532) 2026-04-19 15:04:13 +00:00
Philip Dubé 39dcc0a73c Triforce Hunt: drain queue before credits (#6519) 2026-04-18 21:21:29 +00:00
ProverbialPennance 80de5cc179 example flake - add missing deps, pin clang14 (#6531)
`Python3`, used for several CMake targets.
`Zenity`, a still used runtime dependency.
`xorg.libX11` -> `libx11`, packageset deprecated.
`imagemagick`, included as per @IQubic's research.
`clang_14`, clang-formatter used by decomp, thus also used by HM64
2026-04-18 13:07:10 +00:00
Philip Dubé f5e113c5aa fix Roc's translation (#6525)
feel like I've done this a few times now..

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2026-04-18 13:05:57 +00:00
rannek06 52a08daf04 Fix Hint translation (#6507)
Fix the inversion of french and german articles in the hints, also adds or correct a few articles in french.

---------

Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2026-04-17 13:31:39 +00:00
Reppan 4587ca6dbe Horseback archery settings (#6517) 2026-04-17 13:22:57 +00:00
Philip Dubé 256ab01630 Fishing: don't say default 6/7 when minimum reduced by enhancement (#6523) 2026-04-17 04:31:02 +00:00
Philip Dubé 072838613a Fix kak bazaar items having articles (#6522)
IsShop didn't include SCENE_TEST01, but that's used as placeholder for kak bazaar vs market bazaar
2026-04-17 03:53:24 +00:00
Philip Dubé aedae12e63 Hookify DropsDontDie, NoFishDespawn, NoBugsDespawn (#6513) 2026-04-17 03:50:17 +00:00
Chris 9c321862ca Fix Rate Limited Success Chime (#6512) 2026-04-17 01:30:28 +00:00
A Green Spoon 412b60a02f Fix Duplicate Reticles in Anchor (#6520) 2026-04-16 23:50:55 +00:00
Philip Dubé 1876435e98 Fix skulltula hints ending text too soon (#6516) 2026-04-16 15:59:14 +00:00
Philip Dubé 27d35e5a92 Fix logic issues noticed while rebasing doorsanity (#6510)
These shouldn't generally matter right now
2026-04-15 15:23:33 +00:00
Sophia Caspe 12dddc5e8e Dungeon Rewards Own Dungeon + Light Medallion Handling Refactor (#6500)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-04-15 13:44:52 +00:00
Philip Dubé 17a8f460e0 Merge pull request #6504 from HarbourMasters/develop-ackbar
merge develop-ackbar 9.2.3 to develop
2026-04-14 16:48:19 +00:00
Philip Dubé 4cae72463e Merge pull request #6497 from serprex/develop922
merge develop-ackbar 9.2.2 to develop
2026-04-14 02:31:35 +00:00
Demur Rumed a60d46141b Merge remote-tracking branch 'origin/develop-ackbar' into develop922 2026-04-14 01:10:10 +00:00
Jordan Longstaff 68cd04175d Update ccache-action version to 1.2.22 (#6482) 2026-04-11 14:55:20 +00:00
Jordan Longstaff b2f0cae9ec Added slider for Rupee Diving Game's time limit (#6476) 2026-04-10 23:51:38 +00:00
Philip Dubé 06b512faa9 port over unk renaming from upstream (#6470) 2026-04-10 17:25:27 +00:00
Philip Dubé c879c97066 randomizer_check_tracker: small cleanup (#6480) 2026-04-10 16:37:22 +00:00
Philip Dubé 9945041888 replace ShuffleBeggar accents with utf-8 (#6472) 2026-04-08 18:02:38 +00:00
A Green Spoon 49e740b6f2 [Rando] Shuffle Icicles and Red Ice (#6462)
Separate options for Icicles (stalagmites and stalactites) and Red Ice. Icicles drop an item when broken and red ice gives an item when melted.

CMC options for icicles were more limited - the particle effect strobes because there are too many icicles in certain rooms. This currently uses Dampe's halo centered around the tips, which are visible for both types, but model replacement could be used here if a set was made.
2026-04-08 06:02:33 +00:00
A Green Spoon 67191665df Add trick for jump to GTG eye statue (#6467) 2026-04-07 14:55:07 +00:00
PurpleHato 262958a2eb Alt Toggle for Custom animation (#6433)
Add explicit alt prefix checking to animation loading

Makes ResourceMgr_LoadAnimByName alt-toggleable this will work for Link and any other animations files
2026-04-06 19:01:12 +00:00
A Green Spoon e86e0ff693 Add Voidout Collection trick (#6453) 2026-04-05 17:51:09 +00:00
A Green Spoon 4e1e180d21 add spirit signs + unique init func (#6458) 2026-04-04 04:37:24 +00:00
A Green Spoon 50aed798a1 [Rando] Shuffle Beggar (#6455) 2026-04-03 06:01:07 +00:00
A Green Spoon 0ccff93fae add gf signs to enemy rando obj dep exlusion list (#6456) 2026-04-02 03:22:40 +00:00
A Green Spoon db0d179b37 add missing KF and Shadow signs, eat baguette (#6454) 2026-04-02 01:21:46 +00:00
Jameriquiah 0d2454ed65 title card ia8 fix 2026-04-01 00:33:22 +00:00
A Green Spoon 412e9e262f [Rando] Shuffle Wonder Items (#6342) 2026-04-01 00:32:57 +00:00
Philip Dubé 7363e1c264 Don't hide Ganon's Boss Key Chest location while Triforce Hunt enabled (#6447) 2026-03-30 20:28:50 +00:00
A Green Spoon 317c057e86 [Rando] Shuffle Signs (#6406)
Exploding Royal Family's Tombstone grants check
2026-03-30 13:35:54 +00:00
Philip Dubé 2b336a4582 Merge pull request #6446 from HarbourMasters/develop-ackbar
merge develop-ackbar into develop
2026-03-30 06:42:08 +00:00
Philip Dubé 7c5cccaf92 Dedupe settings.cpp (#6443) 2026-03-29 19:42:54 +00:00
Philip Dubé 0127cbcf62 Fix debug assert caused by bad trick code (#6439) 2026-03-29 08:58:45 +00:00
A Green Spoon a461d8f6fb [Rando] Shuffle Butterfly Fairies (#6430) 2026-03-29 07:54:01 +00:00
Pepe20129 e0a1b23525 Language System Basis (#6172)
Introduces the basis for a language system to allow the UI to be translated to any language and/or have the text changed by mods.
A lot of things would require more work but, for a proof of concept, this PR makes all randomizer trick names & descriptions translatable (currently not re-loadable at runtime as that would require deeper changes and this is already merge conflict hell every time a trick is touched).

The system works by passing it a "translation path" which is resolved in the .json including object indentation. If the resulting json object is a list of strings, instead of a string, they get concatenated (purely for organization/QoL).
2026-03-29 02:27:30 +00:00
Pepper0ni 3228843886 Merge Boulder Undershoots into Boulder Collision (#6431) 2026-03-28 16:22:25 +00:00
Chris 9f61e635d2 Fix displayed token count (#6428) 2026-03-28 14:19:38 +00:00
Garrett Cox c7180762d9 Add button to rando all rando settings (#6001) 2026-03-28 06:52:01 +00:00
Philip Dubé 178471bf20 Merge pull request #6425 from HarbourMasters/develop-ackbar
merge develop-ackbar 9.2.1 to develop
2026-03-28 06:26:13 +00:00
Philip Dubé 5576f93ef6 Hookify blue fire arrows (#6354)
Update z_bg_ice_shelter with decomp refactoring
2026-03-27 16:46:21 +00:00
Renzo Martin Poggio 88625c4350 Add most values from gz to Value Viewer (#6411) 2026-03-26 18:55:31 +00:00
Sean Latham 98ec5519cf Improve flavour of Navi's boss key hint (#6409) 2026-03-26 14:19:02 +00:00
Philip Dubé 2f32abb511 Console include cleanup (#6413)
Looking into fixing warnings about commands already being bound,
LUS initializes a console window which we ignore,
but it registers global command handlers,
SohConsoleWindow does this again, but that's also where mInputBuffer/mFilterBuffer get set

Proper fix would be removing SohConsoleWindow, but it exists to have mono font
2026-03-26 14:18:21 +00:00
Philip Dubé 8c4d4738cc cleanup customequipment.cpp (#6396) 2026-03-23 16:27:42 +00:00
Philip Dubé ccdd8e63ff Enemy rando: don't mutate ActorEntry (#6395) 2026-03-23 12:41:53 +00:00
Sean Latham 5f0c0c8e2f Added minimap icons for other players in Anchor (#6372)
Icon size for other players reduced by 25%
2026-03-23 01:34:06 +00:00
Philip Dubé ef042be5ea avoid undefined behavior when handling anchor packets (#6393) 2026-03-23 01:32:26 +00:00
Pepper0ni 0498d36428 Save Value Viewer Settings (#6392) 2026-03-23 01:31:21 +00:00
757 changed files with 22648 additions and 12934 deletions
@@ -0,0 +1,63 @@
name: 'Install newer compiler'
description: 'Installs ${compiler}-${version} from the distro repos when available, or from apt.llvm.org for clang on apt distros. Errors out for combinations without a known install path.'
inputs:
compiler:
description: 'gcc or clang'
required: true
version:
description: 'major version to install'
required: true
available_in_distro:
description: 'true if compiler-${version} is in the distro repos (verify-compiler output)'
required: true
packageManager:
description: 'apt, dnf, pacman, or zypper'
required: true
runs:
using: composite
steps:
- shell: bash
run: |
install_apt() {
local compiler="$1" version="$2"
case "$compiler" in
gcc) apt-get -y install "gcc-${version}" "g++-${version}" ;;
clang) apt-get -y install "clang-${version}" ;;
esac
}
install_zypper() {
local compiler="$1" version="$2"
case "$compiler" in
gcc) zypper --non-interactive in "gcc${version}" "gcc${version}-c++" ;;
clang) zypper --non-interactive in "clang${version}" ;;
esac
}
bootstrap_apt_llvm_and_install() {
local version="$1"
apt-get update
apt-get -y install --no-install-recommends wget lsb-release gnupg ca-certificates software-properties-common
wget -q https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh "$version"
}
fail_no_path() {
local compiler="$1" version="$2"
echo "Minimum version not readily available." >&2
echo "An alternative installation method for ${compiler} ${version} is needed." >&2
exit 1
}
compiler='${{ inputs.compiler }}'
version='${{ inputs.version }}'
available_in_distro='${{ inputs.available_in_distro }}'
package_manager='${{ inputs.packageManager }}'
case "$package_manager:$available_in_distro:$compiler" in
apt:true:*) install_apt "$compiler" "$version" ;;
apt:false:clang) bootstrap_apt_llvm_and_install "$version" ;;
zypper:true:*) install_zypper "$compiler" "$version" ;;
*) fail_no_path "$compiler" "$version" ;;
esac
@@ -0,0 +1,16 @@
name: 'Install SDL2_net from source'
description: 'Build and install SDL2_net from source. Used when the distro-shipped SDL2_net is older than 2.2.0 (no cmake config file).'
runs:
using: composite
steps:
- shell: bash
run: |
if [ "$(id -u)" -ne 0 ]; then SUDO=sudo; else SUDO=""; fi
mkdir -p deps
if [ ! -d "deps/SDL2_net-2.2.0" ]; then
curl -fsSL https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz | tar xz -C deps
fi
cd deps/SDL2_net-2.2.0
./configure
make
$SUDO make install
@@ -0,0 +1,18 @@
name: 'Install tinyxml2 from source'
description: 'Build and install tinyxml2 from source. Used when the distro-shipped tinyxml2 is older than 10.0.0 (no cmake config file).'
runs:
using: composite
steps:
- shell: bash
run: |
if [ "$(id -u)" -ne 0 ]; then SUDO=sudo; else SUDO=""; fi
mkdir -p deps
if [ ! -d "deps/tinyxml2-10.0.0" ]; then
curl -fsSL https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz | tar xz -C deps
fi
cd deps/tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
$SUDO make install
@@ -0,0 +1,72 @@
name: 'Verify compiler version meets the project minimum'
description: 'Compares the installed compiler against the version in linux-build-deps/minimum-${compiler}-version.txt and reports whether we need to install a newer version and whether that version is available in the distro repos.'
inputs:
compiler:
description: 'gcc or clang'
required: true
packageManager:
description: 'apt, dnf, pacman, or zypper'
required: true
outputs:
needs_install:
description: 'true if default version is below the minimum'
value: ${{ steps.check.outputs.needs_install }}
available_in_distro:
description: 'true if compiler-${min} can be installed from the distro repos'
value: ${{ steps.check.outputs.available_in_distro }}
cc:
description: 'resolved C compiler binary name to use downstream'
value: ${{ steps.check.outputs.cc }}
cxx:
description: 'resolved C++ compiler binary name to use downstream'
value: ${{ steps.check.outputs.cxx }}
version:
description: 'the minimum version read from linux-build-deps/minimum-${compiler}-version.txt'
value: ${{ steps.check.outputs.version }}
runs:
using: composite
steps:
- id: check
shell: bash
run: |
get_min() { cat "linux-build-deps/minimum-$1-version.txt"; }
get_default_major() { "$1" --version 2>/dev/null | head -1 | grep -oE '[0-9]+' | head -1; }
cxx_for() { case "$1" in gcc) echo g++ ;; clang) echo clang++ ;; esac; }
probe_distro() {
local compiler="$1" min="$2" package_manager="$3"
case "$package_manager" in
apt) apt-cache show "${compiler}-${min}" >/dev/null 2>&1 ;;
dnf) return 1 ;; # Fedora ships a single gcc/clang version, no -N packages
pacman) return 1 ;; # Arch ships a single gcc/clang version, no -N packages
zypper) zypper -n se -x "${compiler}${min}" 2>/dev/null | grep -q "${compiler}${min}" ;;
*) return 1 ;;
esac
}
compiler='${{ inputs.compiler }}'
package_manager='${{ inputs.packageManager }}'
min=$(get_min "$compiler")
default_major=$(get_default_major "$compiler")
cc_base="$compiler"
cxx_base=$(cxx_for "$compiler")
if [ -n "$default_major" ] && [ "$default_major" -ge "$min" ]; then
needs_install=false
cc="$cc_base"; cxx="$cxx_base"
available_in_distro=true
else
needs_install=true
cc="$cc_base-$min"; cxx="$cxx_base-$min"
probe_distro "$cc_base" "$min" "$package_manager" && available_in_distro=true || available_in_distro=false
fi
echo "compiler=$compiler min=$min default_major=${default_major:-NONE}"
echo "needs_install=$needs_install available_in_distro=$available_in_distro cc=$cc cxx=$cxx"
{
echo "needs_install=$needs_install"
echo "available_in_distro=$available_in_distro"
echo "cc=$cc"
echo "cxx=$cxx"
echo "version=$min"
} >> "$GITHUB_OUTPUT"
+23
View File
@@ -0,0 +1,23 @@
ports:
- name: libsdl2
select: [ universal ]
- name: libsdl2_net
select: [ universal ]
- name: libpng
select: [ universal ]
- name: glew
select: [ universal ]
- name: libzip
select: [ universal ]
- name: nlohmann-json
select: [ universal ]
- name: tinyxml2
select: [ universal ]
- name: libogg
select: [ universal ]
- name: libopus
select: [ universal ]
- name: opusfile
select: [ universal ]
- name: libvorbis
select: [ universal ]
+36 -96
View File
@@ -15,7 +15,7 @@ jobs:
with:
submodules: true
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
uses: hendrikmuhs/ccache-action@v1.2.22
with:
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-otr-ccache-${{ github.ref }}-${{ github.sha }}
@@ -25,7 +25,7 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) libzip-dev zipcmp zipmerge ziptool
sudo apt-get install -y $(cat linux-build-deps/apt.txt)
- name: Restore Cached deps folder
uses: actions/cache/restore@v5
with:
@@ -36,9 +36,12 @@ jobs:
path: deps
- name: Create deps folder
run: mkdir -p deps
- name: Add ccache to PATH
run: |
echo "/usr/lib/ccache" >> "$GITHUB_PATH"
echo "/usr/local/opt/ccache/libexec" >> "$GITHUB_PATH"
- name: Install latest SDL
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/SDL2-2.30.3" ]; then
wget https://github.com/libsdl-org/SDL/releases/download/release-2.30.3/SDL2-2.30.3.tar.gz
tar -xzf SDL2-2.30.3.tar.gz -C deps
@@ -48,23 +51,14 @@ jobs:
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest tinyxml2
run: |
sudo apt-get remove libtinyxml2-dev
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/tinyxml2-10.0.0" ]; then
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
tar -xzf 10.0.0.tar.gz -C deps
fi
cd deps/tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
sudo make install
- uses: ./.github/actions/install-sdl2-net
- name: Copy SDL libs to multiarch dir
run: sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Remove distro tinyxml2
run: sudo apt-get remove libtinyxml2-dev
- uses: ./.github/actions/install-tinyxml2
- name: Generate soh.o2r
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release
cmake --build build-cmake --config Release --target GenerateSohOtr -j3
- name: Upload soh.o2r
@@ -82,46 +76,17 @@ jobs:
uses: actions/checkout@v6
with:
submodules: true
- name: Setup Macports
uses: melusina-org/setup-macports@v1
with:
parameters: '.github/macports.yml'
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
uses: hendrikmuhs/ccache-action@v1.2.22
with:
create-symlink: true
key: ${{ runner.os }} # ccache-macos-{{ timestamp }}
max-size: "2G"
evict-old-files: job
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-ccache-${{ github.ref }}
${{ runner.os }}-14-ccache
# Needed to apply sudo for macports cache restore
- name: Install gtar wrapper
run: |
sudo mv /opt/homebrew/bin/gtar /opt/homebrew/bin/gtar.orig
sudo cp .github/workflows/gtar /opt/homebrew/bin/gtar
sudo chmod +x /opt/homebrew/bin/gtar
- name: Restore Cached MacPorts
id: restore-cache-macports
uses: actions/cache/restore@v5
with:
key: ${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-14-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }}-
${{ runner.os }}-14-macports-
path: /opt/local/
# Updated PATH applies to the next step and onwards
- name: Install MacPorts (if necessary)
run: |
if command -v /opt/local/bin/port 2>&1 >/dev/null; then
echo "MacPorts already installed"
else
echo "Installing MacPorts"
wget https://github.com/macports/macports-base/releases/download/v2.11.5/MacPorts-2.11.5-14-Sonoma.pkg
sudo installer -pkg ./MacPorts-2.11.5-14-Sonoma.pkg -target /
fi
echo "/opt/local/bin:/opt/local/sbin" >> "$GITHUB_PATH"
- name: Install dependencies
run: |
brew uninstall --ignore-dependencies libpng
sudo port install $(cat .github/workflows/macports-deps.txt)
brew install ninja
- name: Download soh.o2r
uses: actions/download-artifact@v7
with:
@@ -129,9 +94,8 @@ jobs:
path: build-cmake/soh
- name: Build SoH
run: |
export PATH="/usr/lib/ccache:/opt/homebrew/opt/ccache/libexec:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release --parallel 10
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake -j
(cd build-cmake && cpack)
mv _packages/*.dmg SoH.dmg
@@ -143,12 +107,6 @@ jobs:
path: |
SoH.dmg
readme.txt
- name: Save Cache MacPorts
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v5
with:
key: ${{ steps.restore-cache-macports.outputs.cache-primary-key }}
path: /opt/local/
build-linux:
needs: generate-soh-otr
@@ -161,9 +119,9 @@ jobs:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y $(cat .github/workflows/apt-deps.txt)
sudo apt-get install -y $(cat linux-build-deps/apt.txt)
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
uses: hendrikmuhs/ccache-action@v1.2.22
with:
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
@@ -181,9 +139,12 @@ jobs:
path: deps
- name: Create deps folder
run: mkdir -p deps
- name: Add ccache to PATH
run: |
echo "/usr/lib/ccache" >> "$GITHUB_PATH"
echo "/usr/local/opt/ccache/libexec" >> "$GITHUB_PATH"
- name: Install latest SDL
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/SDL2-2.30.3" ]; then
wget https://github.com/libsdl-org/SDL/releases/download/release-2.30.3/SDL2-2.30.3.tar.gz
tar -xzf SDL2-2.30.3.tar.gz -C deps
@@ -193,35 +154,15 @@ jobs:
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest SDL_net
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/SDL2_net-2.2.0" ]; then
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz
tar -xzf SDL2_net-2.2.0.tar.gz -C deps
fi
cd deps/SDL2_net-2.2.0
./configure
make -j 10
sudo make install
sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Install latest tinyxml2
run: |
sudo apt-get remove libtinyxml2-dev
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
if [ ! -d "deps/tinyxml2-10.0.0" ]; then
wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz
tar -xzf 10.0.0.tar.gz -C deps
fi
cd deps/tinyxml2-10.0.0
mkdir -p build
cd build
cmake ..
make
sudo make install
- uses: ./.github/actions/install-sdl2-net
- name: Copy SDL libs to multiarch dir
run: sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/
- name: Remove distro tinyxml2
run: sudo apt-get remove libtinyxml2-dev
- uses: ./.github/actions/install-tinyxml2
- name: Install libzip without crypto
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
sudo apt-get remove -y libzip-dev
if [ ! -d "deps/libzip-1.10.1" ]; then
wget https://github.com/nih-at/libzip/releases/download/v1.10.1/libzip-1.10.1.tar.gz
tar -xzf libzip-1.10.1.tar.gz -C deps
@@ -240,7 +181,6 @@ jobs:
path: build-cmake/soh
- name: Build SoH
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release -j3
(cd build-cmake && cpack -G External)
@@ -277,7 +217,7 @@ jobs:
with:
submodules: true
- name: Configure sccache
uses: hendrikmuhs/ccache-action@v1.2
uses: hendrikmuhs/ccache-action@v1.2.22
with:
variant: sccache
max-size: "2G"
-2
View File
@@ -1,2 +0,0 @@
#!/bin/sh
exec sudo /opt/homebrew/bin/gtar.orig "$@"
-1
View File
@@ -1 +0,0 @@
libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libogg +universal libopus +universal opusfile +universal libvorbis +universal
+177 -45
View File
@@ -5,68 +5,200 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
setup:
runs-on: ubuntu-latest
outputs:
distros: ${{ steps.set-matrix.outputs.distros }}
steps:
- name: Resolve distro images
id: set-matrix
uses: actions/github-script@v9
with:
script: |
const today = new Date().toISOString().slice(0, 10);
const fetchJson = async (url) => {
const res = await fetch(url);
if (!res.ok) throw new Error(`${url} -> ${res.status}`);
return res.json();
};
// All non-EOL Ubuntu LTS releases.
const ubuntuCycles = await fetchJson('https://endoflife.date/api/ubuntu.json');
const ubuntu = ubuntuCycles
.filter(c => c.lts === true && c.eol > today)
.map(c => ({ image: `ubuntu:${c.cycle}`, packageManager: 'apt' }));
// All non-EOL Fedora releases.
const fedoraCycles = await fetchJson('https://endoflife.date/api/fedora.json');
const fedora = fedoraCycles
.filter(c => c.eol > today)
.map(c => ({ image: `fedora:${c.cycle}`, packageManager: 'dnf' }));
// Rolling.
const arch = [{ image: 'archlinux:base', packageManager: 'pacman' }];
// Rolling Tumbleweed and all non-EOL Leap releases.
const leapCycles = await fetchJson('https://endoflife.date/api/opensuse.json');
const opensuse = [
{ image: 'opensuse/tumbleweed:latest', packageManager: 'zypper' },
...leapCycles
.filter(c => c.eol > today)
.map(c => ({ image: `opensuse/leap:${c.cycle}`, packageManager: 'zypper' })),
];
// Previous, current, and next Debian releases.
const debian = ['oldstable', 'stable', 'testing']
.map(t => ({ image: `debian:${t}`, packageManager: 'apt' }));
const distros = [...ubuntu, ...fedora, ...arch, ...opensuse, ...debian];
core.info(`Resolved distros: ${JSON.stringify(distros)}`);
core.setOutput('distros', JSON.stringify(distros));
build:
needs: setup
name: build (${{ matrix.distro.image }}, ${{ matrix.cc }})
strategy:
fail-fast: false
matrix:
image: ["archlinux:base", "opensuse/tumbleweed:latest", "ubuntu:mantic", "debian:bookworm", "fedora:39"]
distro: ${{ fromJSON(needs.setup.outputs.distros) }}
cc: ["gcc", "clang"]
include:
- cxx: g++
cc: gcc
- cxx: clang++
cc: clang
runs-on: ${{ (vars.LINUX_RUNNER && fromJSON(vars.LINUX_RUNNER)) || 'ubuntu-latest' }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
image: ${{ matrix.distro.image }}
steps:
- name: Install dependencies (pacman)
if: ${{ matrix.image == 'archlinux:base' }}
- name: Bootstrap git
run: |
echo arch
echo pacman -S ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
pacman -Syu --noconfirm
pacman -S --noconfirm ${{ matrix.cc }} git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net
- name: Install dependencies (dnf)
if: ${{ matrix.image == 'fedora:39' }}
run: |
echo fedora
echo dnf install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel
dnf -y upgrade
dnf -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} wget git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools tinyxml2-devel spdlog-devel
- name: Install dependencies (apt)
if: ${{ matrix.image == 'ubuntu:mantic' || matrix.image == 'debian:bookworm' }}
run: |
echo debian based
echo apt-get install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'g++') || '' }} git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev
apt-get update
apt-get -y full-upgrade
apt-get -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'g++') || '' }} git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev
- name: Install dependencies (zypper)
if: ${{ matrix.image == 'opensuse/tumbleweed:latest' }}
run: |
echo openSUSE
echo zypper in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
zypper --non-interactive dup
zypper --non-interactive in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
- name: Install latest nlohmann
if: ${{ matrix.image == 'fedora:39' }}
run: |
wget https://github.com/nlohmann/json/archive/refs/tags/v3.11.3.tar.gz
tar -xzvf v3.11.3.tar.gz
cd json-3.11.3
mkdir build
cd build
cmake ..
make
sudo make install
case "${{ matrix.distro.packageManager }}" in
apt) apt-get update && apt-get -y install git ;;
dnf) dnf -y install git ;;
pacman) pacman -Sy --noconfirm git ;;
zypper) zypper --non-interactive in git ;;
esac
- uses: actions/checkout@v6
with:
submodules: true
- name: Install dependencies (pacman)
if: ${{ matrix.distro.packageManager == 'pacman' }}
run: |
pacman -Syu --noconfirm
pacman -S --noconfirm ${{ matrix.cc }} $(cat linux-build-deps/pacman.txt)
- name: Install dependencies (dnf)
if: ${{ matrix.distro.packageManager == 'dnf' }}
run: |
dnf -y upgrade
dnf -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} $(cat linux-build-deps/dnf.txt)
- name: Install dependencies (apt)
if: ${{ matrix.distro.packageManager == 'apt' }}
run: |
apt-get update
apt-get -y full-upgrade
apt-get -y install ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'g++') || '' }} $(cat linux-build-deps/apt.txt)
- name: Install dependencies (zypper)
if: ${{ matrix.distro.packageManager == 'zypper' }}
run: |
zypper --non-interactive dup
zypper --non-interactive in ${{ matrix.cc }} ${{ (matrix.cxx == 'g++' && 'gcc-c++') || '' }} ${{ matrix.cc == 'clang' && 'libstdc++-devel' || '' }} $(cat linux-build-deps/zypper.txt)
- name: Verify compiler version
id: verify-compiler
uses: ./.github/actions/verify-compiler
with:
compiler: ${{ matrix.cc }}
packageManager: ${{ matrix.distro.packageManager }}
- name: Install newer compiler
if: ${{ steps.verify-compiler.outputs.needs_install == 'true' }}
uses: ./.github/actions/install-newer-compiler
with:
compiler: ${{ matrix.cc }}
version: ${{ steps.verify-compiler.outputs.version }}
available_in_distro: ${{ steps.verify-compiler.outputs.available_in_distro }}
packageManager: ${{ matrix.distro.packageManager }}
- name: Verify/update cmake
run: |
ver_le() { [ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -1)" = "$1" ]; }
required=$(grep -m1 -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' CMakeLists.txt)
installed=$(cmake --version | grep -m1 -oE '[0-9]+\.[0-9]+(\.[0-9]+)?')
echo "cmake required: $required installed: $installed"
if ver_le "$required" "$installed"; then
echo "ok"
else
case "${{ matrix.distro.packageManager }}" in
apt) DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends pipx ;;
dnf) dnf -y install pipx ;;
pacman) pacman -S --noconfirm python-pipx ;;
zypper) zypper --non-interactive in python3-pipx ;;
esac
pipx install cmake
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
fi
- name: Verify/update tinyxml2
id: tinyxml2-check
if: ${{ matrix.distro.packageManager == 'apt' }}
run: |
if find /usr -iname 'tinyxml2*config.cmake' 2>/dev/null | grep -q .; then
echo "ok"
echo "needs_install=false" >> "$GITHUB_OUTPUT"
else
apt-get remove -y libtinyxml2-dev
apt-get install -y curl
echo "needs_install=true" >> "$GITHUB_OUTPUT"
fi
- uses: ./.github/actions/install-tinyxml2
if: ${{ steps.tinyxml2-check.outputs.needs_install == 'true' }}
- name: Verify/update SDL2_net
id: sdl2-net-check
if: ${{ matrix.distro.packageManager == 'apt' }}
run: |
if find /usr -iname 'sdl2_net*config.cmake' 2>/dev/null | grep -q .; then
echo "ok"
echo "needs_install=false" >> "$GITHUB_OUTPUT"
else
apt-get install -y curl
echo "needs_install=true" >> "$GITHUB_OUTPUT"
fi
- uses: ./.github/actions/install-sdl2-net
if: ${{ steps.sdl2-net-check.outputs.needs_install == 'true' }}
# https://github.com/fmtlib/fmt/issues/4807
- name: Check fmt/clang consteval compat
id: fmt-check
shell: bash
run: |
cat > /tmp/fmt-consteval-test.cpp <<'EOF'
#include <fmt/format.h>
int main() { auto s = fmt::format(FMT_STRING("{}"), 42); return 0; }
EOF
if "$CXX" -std=c++20 -c /tmp/fmt-consteval-test.cpp -o /tmp/fmt-consteval-test.o; then
echo "ok — fmt/clang consteval compatible"
echo "needs_workaround=false" >> "$GITHUB_OUTPUT"
else
echo "incompatible — applying workaround"
echo "needs_workaround=true" >> "$GITHUB_OUTPUT"
fi
env:
CXX: ${{ steps.verify-compiler.outputs.cxx }}
- name: Build SoH
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1 ${EXTRA_CMAKE_FLAGS}
cmake --build build-cmake --config Release -j3
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
CC: ${{ steps.verify-compiler.outputs.cc }}
CXX: ${{ steps.verify-compiler.outputs.cxx }}
# https://github.com/fmtlib/fmt/issues/4807
EXTRA_CMAKE_FLAGS: ${{ steps.fmt-check.outputs.needs_workaround == 'true' && '-DCMAKE_CXX_FLAGS=-DFMT_CONSTEVAL=constexpr' || '' }}
build-nix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: true
- uses: cachix/install-nix-action@v31
- name: Build SoH in nix dev shell
run: |
nix develop ./linux-build-deps -c bash -c '
cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1
cmake --build build-cmake --config Release -j3
'
+1
View File
@@ -1,6 +1,7 @@
[submodule "libultraship"]
path = libultraship
url = https://github.com/kenix3/libultraship.git
branch = port-maintenance
[submodule "ZAPDTR"]
path = ZAPDTR
url = https://github.com/harbourmasters/ZAPDTR
+20 -1
View File
@@ -81,10 +81,24 @@ add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/utf-8>)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/Zc:preprocessor>)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
if(NOT CMAKE_VS_PLATFORM_NAME)
set(CMAKE_VS_PLATFORM_NAME "x64")
endif()
if("${CMAKE_VS_PLATFORM_NAME}" MATCHES "^[Aa][Rr][Mm]64$")
set(SOH_WINDOWS_ARM64 TRUE)
else()
set(SOH_WINDOWS_ARM64 FALSE)
endif()
include(CMake/automate-vcpkg.cmake)
set(VCPKG_TRIPLET x64-windows-static)
set(VCPKG_TARGET_TRIPLET x64-windows-static)
if(SOH_WINDOWS_ARM64)
set(VCPKG_TRIPLET arm64-windows-static)
set(VCPKG_TARGET_TRIPLET arm64-windows-static)
endif()
vcpkg_bootstrap()
vcpkg_install_packages(zlib bzip2 libzip libpng sdl2 sdl2-net glew glfw3 nlohmann-json tinyxml2 spdlog libogg libvorbis opus opusfile)
@@ -103,7 +117,8 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"
OR SOH_WINDOWS_ARM64))
message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
endif()
endif()
@@ -121,6 +136,10 @@ set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_OBJCXX_FLAGS_RELEASE "-O2 -DNDEBUG")
endif()
# IEEE 754 compliant floating-point rounding on arm64 macOS
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin")
add_compile_options(-Xarch_arm64 -ffp-contract=off)
endif()
if(NOT CMAKE_BUILD_TYPE )
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE)
+70 -74
View File
@@ -86,107 +86,77 @@ C:\Program Files\CMake\bin\cmake.exe --build build-cmake --target ExtractAssetHe
```
## Linux
### Clone the repo and enter the directory
```sh
git clone https://github.com/HarbourMasters/Shipwright.git
cd Shipwright
```
### Install dependencies
> [!IMPORTANT]
> Minimum compiler versions:
> - GCC: see [`linux-build-deps/minimum-gcc-version.txt`](../linux-build-deps/minimum-gcc-version.txt)
> - Clang: see [`linux-build-deps/minimum-clang-version.txt`](../linux-build-deps/minimum-clang-version.txt)
#### Debian/Ubuntu
```sh
# using gcc
apt-get install gcc g++ git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev libopusfile-dev libvorbis-dev
apt-get install gcc g++ $(cat linux-build-deps/apt.txt)
# or using clang
apt-get install clang git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libopengl-dev libopusfile-dev libvorbis-dev
apt-get install clang $(cat linux-build-deps/apt.txt)
```
#### Arch
```sh
# using gcc
pacman -S gcc git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net opusfile libvorbis
pacman -S gcc $(cat linux-build-deps/pacman.txt)
# or using clang
pacman -S clang git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net opusfile libvorbis
pacman -S clang $(cat linux-build-deps/pacman.txt)
```
#### Fedora
```sh
# using gcc
dnf install gcc gcc-c++ git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel opusfile-devel libvorbis-devel
dnf install gcc gcc-c++ $(cat linux-build-deps/dnf.txt)
# or using clang
dnf install clang git cmake ninja-build lsb_release SDL2-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel opusfile-devel libvorbis-devel
dnf install clang $(cat linux-build-deps/dnf.txt)
```
#### openSUSE
```sh
# using gcc
zypper in gcc gcc-c++ $(cat linux-build-deps/zypper.txt)
# or using clang
zypper in clang libstdc++-devel $(cat linux-build-deps/zypper.txt)
```
#### Nix
You can use a `flake.nix` file to instantly setup a development environment using [Nix](https://nixos.org/). Write this `flake.nix` file in the root directory:
This repository provides a [`linux-build-deps/flake.nix`](../linux-build-deps/flake.nix) for setting up a development environment using [Nix](https://nixos.org/).
```nix
{
description = "Shipwright development environment";
Run
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
# Build tools
clang
git
cmake
ninja
lsb-release
pkg-config
# SDL2 libraries
SDL2
SDL2.dev
SDL2_net
# Other libraries
libpng
libzip
nlohmann_json
tinyxml-2
spdlog
libGL
libGL.dev
bzip2
# X11 libraries
xorg.libX11
# Audio libraries
libogg
libogg.dev
libvorbis
libvorbis.dev
libopus
libopus.dev
opusfile
opusfile.dev
];
shellHook = ''
echo "Shipwright development environment loaded"
echo "Available tools: clang, git, cmake, ninja"
'';
};
});
}
```sh
nix develop ./linux-build-deps
```
Now type `nix develop` and you will be dropped into a shell with all dependencies, ensuring that all build commands work.
from the repo root and you'll be dropped into a shell with all dependencies, ensuring that all build commands work.
### Verify cmake version
Older distros may ship a cmake older than this project requires. Compare:
```sh
cmake --version # your installed version
head -1 CMakeLists.txt # the project's required minimum
```
If your cmake is too old, you can install a newer version via:
- [pypi](https://pypi.org/project/cmake/)
- [kitware apt repo](https://apt.kitware.com/) (Ubuntu only)
- [Homebrew](https://formulae.brew.sh/formula/cmake)
### Build
_Note: If you're using Visual Studio Code, the [CMake Tools plugin](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools) makes it very easy to just press run and debug._
```bash
# Clone the repo and enter the directory
git clone https://github.com/HarbourMasters/Shipwright.git
cd Shipwright
# Clone the submodules
git submodule update --init
@@ -207,6 +177,32 @@ cmake --build build-cmake
# To develop the project open the repository in VSCode (or your preferred editor)
```
> [!TIP]
> Some older distros ship packages without the cmake config files SoH's `find_package` calls need. If cmake fails with `Could not find a package configuration file provided by "<package>"`.
>
> Known failing package versions:
> - [tinyxml2](https://github.com/leethomason/tinyxml2) < 10.0.0
> - [SDL2_net](https://github.com/libsdl-org/SDL_net) < 2.2.0
>
> You can install a newer version of that package either
>
> by using [Homebrew](https://brew.sh/):
> ```sh
> brew install <package>
> ```
> When invoking cmake, add `-DCMAKE_PREFIX_PATH=$(brew --prefix)` so it knows to search brew's prefix for the installed package.
>
> ***OR***
>
> by building from source:
>
> Reference examples:
> - [`.github/actions/install-tinyxml2/action.yml`](../.github/actions/install-tinyxml2/action.yml)
> - [`.github/actions/install-sdl2-net/action.yml`](../.github/actions/install-sdl2-net/action.yml)
> [!TIP]
> There are known incompatibilities between some newer versions of `clang` and older versions of [`{fmt}`](https://github.com/fmtlib/fmt) (see https://github.com/fmtlib/fmt/issues/4807). If you see a `call to consteval function 'fmt::basic_format_string<...>' is not a constant expression` error, you can work around it by passing `-DCMAKE_CXX_FLAGS=-DFMT_CONSTEVAL=constexpr` to `cmake`.
### Generate a distributable
After compiling the project you can generate a distributable by running of the following:
```bash
@@ -231,7 +227,7 @@ cmake --build build-cmake --target ExtractAssetHeaders
```
## macOS
Requires Xcode (or xcode-tools) && `sdl2, libpng, glew, ninja, cmake, tinyxml2, nlohmann-json, libzip, opusfile, libvorbis` (can be installed via [homebrew](https://brew.sh/), macports, etc)
Requires Xcode (or xcode-tools) && `sdl2, sdl2_net, libpng, glew, ninja, cmake, tinyxml2, nlohmann-json, libzip, opusfile, libvorbis` (can be installed via [homebrew](https://brew.sh/), macports, etc)
**Important: For maximum performance make sure you have ninja build tools installed!**
@@ -246,7 +242,7 @@ cd ShipWright
git submodule update --init
# Install development dependencies (assuming homebrew)
brew install sdl2 libpng glew ninja cmake tinyxml2 nlohmann-json libzip opusfile libvorbis
brew install sdl2 sdl2_net libpng glew ninja cmake tinyxml2 nlohmann-json libzip opusfile libvorbis
# Generate Ninja project
# Add `-DCMAKE_BUILD_TYPE:STRING=Release` if you're packaging
@@ -342,4 +338,4 @@ To get this step working on your fork, you'll need to add a machine to your own
You'll have to enable the ability to run unsigned scripts through PowerShell. To do this, open Powershell as administrator and run `set-executionpolicy remotesigned`. Most dependencies get installed as part of the CI process. You will also need to separately install 7z and add it to the PATH so `7z` can be run as a command. [Chocolatey](https://chocolatey.org/) or other package managers can be used to install it easily.
### Runner on UNIX systems
If you're on macOS or Linux take a look at `macports-deps.txt` or `apt-deps.txt` to see the dependencies expected to be on your machine.
If you're on macOS or Linux take a look at `.github/macports.yml` or `.github/workflows/apt-deps.txt` to see the dependencies expected to be on your machine.
+11
View File
@@ -0,0 +1,11 @@
# Linux build dependencies
This directory contains plaintext files with package lists and minimum version information for building on Linux systems.
## `apt` vs others
The CI workflows that run on PRs and pushes use GH actions Ubuntu runners, so it is very unlikely `apt.txt` will be missing anything. The other package list files are only verified by the `test-builds-on-distros` workflow, which is triggered manually.
## How you can help
If you run into a missing package issue when building please let us know! A PR updating the appropriate package list file would be wonderful, but opening a GH issue or just saying something on Discord works too!
@@ -1 +1 @@
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev nlohmann-json3-dev libtinyxml2-dev libspdlog-dev ninja-build libogg-dev libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev nlohmann-json3-dev libtinyxml2-dev libspdlog-dev ninja-build libogg-dev libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev libzip-dev zipcmp zipmerge ziptool git cmake lsb-release
+1
View File
@@ -0,0 +1 @@
git cmake ninja-build lsb_release SDL2-devel SDL2_net-devel libpng-devel libzip-devel libzip-tools nlohmann-json-devel tinyxml2-devel spdlog-devel opusfile-devel libvorbis-devel
+70
View File
@@ -0,0 +1,70 @@
{
description = "Shipwright development environment";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
pinned.url = "github:NixOS/nixpkgs/e6f23dc08d3624daab7094b701aa3954923c6bbb";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, pinned, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
pinned-pkgs = pinned.legacyPackages.${system};
in
{
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
# Build tools
git
cmake
ninja
lsb-release
pkg-config
# SDL2 libraries
SDL2
SDL2.dev
SDL2_net
# Assets pipeline
python3
imagemagick
# Other libraries
libpng
libzip
nlohmann_json
tinyxml-2
spdlog
libGL
libGL.dev
bzip2
# X11 libraries
libx11
# Audio libraries
libogg
libogg.dev
libvorbis
libvorbis.dev
libopus
libopus.dev
opusfile
opusfile.dev
# Runtime dependencies
zenity
] ++ [
# Version of clang-format used by decomp
pinned-pkgs.clang_14
];
shellHook = ''
echo "Shipwright development environment loaded"
echo "Available tools: clang, git, cmake, ninja, python3"
'';
};
});
}
@@ -0,0 +1 @@
16
+1
View File
@@ -0,0 +1 @@
10
+1
View File
@@ -0,0 +1 @@
git cmake ninja lsb-release sdl2 libpng libzip nlohmann-json tinyxml2 spdlog sdl2_net opusfile libvorbis python
+1
View File
@@ -0,0 +1 @@
git cmake ninja SDL2-devel SDL2_net-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel libogg-devel libvorbis-devel libopus-devel opusfile-devel glew-devel libglvnd-devel Mesa-libGLESv2-devel
+23 -23
View File
@@ -22,10 +22,21 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
if(NOT CMAKE_VS_PLATFORM_NAME)
set(CMAKE_VS_PLATFORM_NAME "x64")
endif()
if("${CMAKE_VS_PLATFORM_NAME}" MATCHES "^[Aa][Rr][Mm]64$")
set(SOH_WINDOWS_ARM64 TRUE)
else()
set(SOH_WINDOWS_ARM64 FALSE)
endif()
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64" OR SOH_WINDOWS_ARM64)
set(SOH_WINDOWS_64BIT TRUE)
else()
set(SOH_WINDOWS_64BIT FALSE)
endif()
message("${CMAKE_VS_PLATFORM_NAME} architecture in use")
if(NOT ("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64"
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"))
OR "${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32"
OR SOH_WINDOWS_ARM64))
message(FATAL_ERROR "${CMAKE_VS_PLATFORM_NAME} arch is not supported!")
endif()
endif()
@@ -142,11 +153,6 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set_source_files_properties(soh/Enhancements/custom-message/CustomMessageManager.h PROPERTIES COMPILE_FLAGS "/utf-8")
endif()
# handle Network removals
if (!BUILD_REMOTE_CONTROL)
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/crowd-control/")
endif()
# handle speechsynthesizer removals
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
list(FILTER soh__ EXCLUDE REGEX "soh/Enhancements/speechsynthesizer/Darwin")
@@ -235,7 +241,7 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_target_properties(${PROJECT_NAME} PROPERTIES
VS_GLOBAL_KEYWORD "Win32Proj"
)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
if(SOH_WINDOWS_64BIT)
set_target_properties(${PROJECT_NAME} PROPERTIES
INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
)
@@ -259,7 +265,7 @@ endif()
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
if(SOH_WINDOWS_64BIT)
string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
$<$<CONFIG:Debug>:
MultiThreadedDebug
@@ -297,16 +303,13 @@ FetchContent_MakeAvailable(dr_libs)
find_package(SDL2)
set(SDL2-INCLUDE ${SDL2_INCLUDE_DIRS})
if (BUILD_REMOTE_CONTROL)
find_package(SDL2_net)
if(NOT SDL2_net_FOUND)
message(STATUS "SDL2_net not found (it's possible the version installed is too old). Disabling BUILD_REMOTE_CONTROL.")
set(BUILD_REMOTE_CONTROL 0)
message(STATUS "SDL2_net not found (it's possible the version installed is too old).")
else()
set(SDL2-NET-INCLUDE ${SDL_NET_INCLUDE_DIRS})
endif()
endif()
if (ESPEAK)
add_compile_definitions(ESPEAK=1)
@@ -329,7 +332,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE assets
)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
if(SOH_WINDOWS_64BIT)
target_compile_definitions(${PROJECT_NAME} PRIVATE
"$<$<CONFIG:Debug>:"
"_DEBUG;"
@@ -339,7 +342,6 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
"$<$<CONFIG:Release>:"
"NDEBUG;"
">"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:ENABLE_REMOTE_CONTROL>"
"INCLUDE_GAME_PRINTF;"
"F3DEX_GBI_2"
"UNICODE;"
@@ -396,7 +398,6 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU|Clang|AppleClang")
"NDEBUG;"
">"
"F3DEX_GBI_2;"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:ENABLE_REMOTE_CONTROL>;"
"_CONSOLE;"
"_CRT_SECURE_NO_WARNINGS;"
"ENABLE_OPENGL;"
@@ -410,17 +411,16 @@ endif()
# Compile and link options
################################################################################
if(MSVC)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
if(SOH_WINDOWS_64BIT)
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/w;
/Od
>
$<$<CONFIG:Release>:
/Oi;
/Gy;
/W3
>
/W3;
/bigobj;
/sdl-;
/permissive-;
@@ -442,12 +442,12 @@ if(MSVC)
/permissive-;
/MP;
/sdl-;
/w;
/W3;
${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
${DEFAULT_CXX_EXCEPTION_HANDLING}
)
endif()
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
if(SOH_WINDOWS_64BIT)
target_link_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:
/INCREMENTAL
@@ -635,14 +635,14 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
link_libraries(Opus::opus)
find_package(OpusFile CONFIG REQUIRED)
link_libraries(OpusFile::opusfile CONFIG REQUIRED)
if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
if(SOH_WINDOWS_64BIT)
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"libultraship;"
"ZAPDLib;"
"glu32;"
"SDL2::SDL2;"
"SDL2::SDL2main;"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net-static>"
"SDL2_net::SDL2_net-static"
"glfw;"
"winmm;"
"imm32;"
@@ -708,7 +708,7 @@ else()
"Vorbis::vorbisfile"
"Opus::opus"
"Opusfile::Opusfile"
"$<$<BOOL:${BUILD_REMOTE_CONTROL}>:SDL2_net::SDL2_net>"
"SDL2_net::SDL2_net"
${CMAKE_DL_LIBS}
Threads::Threads
)
File diff suppressed because it is too large Load Diff
@@ -4,7 +4,7 @@
"gRandoSettings": {
"BigPoeTargetCount": 1,
"BlueFireArrows": 1,
"BombchuBag": 1,
"BombchuBag": 2,
"BossKeysanity": 5,
"ClosedForest": 2,
"CuccosToReturn": 1,
@@ -21,11 +21,13 @@
"LacsRewardCount": 10,
"LacsRewardOptions": 1,
"LockOverworldDoors": 1,
"MedallionLockedTrials": 1,
"MixBosses": 1,
"MixDungeons": 1,
"MixGrottos": 1,
"MixInteriors": 1,
"MixOverworld": 1,
"MixThievesHideout": 1,
"MixedEntrances": 1,
"RainbowBridge": 7,
"ScrubsPrices": 2,
@@ -35,12 +37,16 @@
"Shuffle100GSReward": 1,
"ShuffleAdultTrade": 1,
"ShuffleBeanFairies": 1,
"ShuffleBeanSouls": 1,
"ShuffleBeehives": 1,
"ShuffleBossEntrances": 2,
"ShuffleBossSouls": 2,
"ShuffleBushes": 1,
"ShuffleChildWallet": 1,
"ShuffleClimb": 1,
"ShuffleCows": 1,
"ShuffleCrates": 3,
"ShuffleCrawl": 1,
"ShuffleDekuNutBag": 1,
"ShuffleDekuStickBag": 1,
"ShuffleDungeonsEntrances": 2,
@@ -50,7 +56,9 @@
"ShuffleFreestanding": 3,
"ShuffleFrogSongRupees": 1,
"ShuffleGanonBossKey": 9,
"ShuffleGanonTowerEntrance": 1,
"ShuffleGerudoToken": 1,
"ShuffleGrab": 1,
"ShuffleGrass": 3,
"ShuffleGrottosEntrances": 1,
"ShuffleInteriorsEntrances": 2,
@@ -59,18 +67,21 @@
"ShuffleMerchants": 3,
"ShuffleOcarinaButtons": 1,
"ShuffleOcarinas": 1,
"ShuffleOpenChest": 1,
"ShuffleOverworldEntrances": 1,
"ShuffleOverworldSpawns": 1,
"ShuffleOwlDrops": 1,
"ShufflePots": 3,
"ShuffleScrubs": 2,
"ShuffleSongs": 2,
"ShuffleSpeak": 1,
"ShuffleStoneFairies": 1,
"ShuffleSwim": 1,
"ShuffleThievesHideoutEntrances": 1,
"ShuffleTrees": 1,
"ShuffleTokens": 3,
"ShuffleWarpSongs": 1,
"ShuffleWeirdEgg": 1,
"SkipEponaRace": 1,
"StartingAge": 2,
"StartingHearts": 0,
"StartingMapsCompasses": 5,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 419 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 946 B

After

Width:  |  Height:  |  Size: 225 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 B

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 929 B

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 953 B

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 922 B

After

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 954 B

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 968 B

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 993 B

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 941 B

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 992 B

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 973 B

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 289 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1005 B

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 247 B

@@ -7,6 +7,9 @@
#define dgCustomBowDL "__OTR__objects/object_custom_equip/gCustomBowDL"
static const ALIGN_ASSET(2) char gCustomBowDL[] = dgCustomBowDL;
#define dgCustomFPSBowDL "__OTR__objects/object_custom_equip/gCustomFPSBowDL"
static const ALIGN_ASSET(2) char gCustomFPSBowDL[] = dgCustomFPSBowDL;
#define dgCustomHammerDL "__OTR__objects/object_custom_equip/gCustomHammerDL"
static const ALIGN_ASSET(2) char gCustomHammerDL[] = dgCustomHammerDL;
@@ -16,12 +19,27 @@ static const ALIGN_ASSET(2) char gCustomHookshotDL[] = dgCustomHookshotDL;
#define dgCustomLongshotDL "__OTR__objects/object_custom_equip/gCustomLongshotDL"
static const ALIGN_ASSET(2) char gCustomLongshotDL[] = dgCustomLongshotDL;
#define dgCustomFPSSlingshotDL "__OTR__objects/object_custom_equip/gCustomFPSSlingshotDL"
static const ALIGN_ASSET(2) char gCustomFPSSlingshotDL[] = dgCustomFPSSlingshotDL;
#define dgCustomFPSHookshotDL "__OTR__objects/object_custom_equip/gCustomFPSHookshotDL"
static const ALIGN_ASSET(2) char gCustomFPSHookshotDL[] = dgCustomFPSHookshotDL;
#define dgCustomFPSLongshotDL "__OTR__objects/object_custom_equip/gCustomFPSLongshotDL"
static const ALIGN_ASSET(2) char gCustomFPSLongshotDL[] = dgCustomFPSLongshotDL;
#define dgCustomHookshotTipDL "__OTR__objects/object_custom_equip/gCustomHookshotTipDL"
static const ALIGN_ASSET(2) char gCustomHookshotTipDL[] = dgCustomHookshotTipDL;
#define dgCustomHookshotChainDL "__OTR__objects/object_custom_equip/gCustomHookshotChainDL"
static const ALIGN_ASSET(2) char gCustomHookshotChainDL[] = dgCustomHookshotChainDL;
#define dgCustomLongshotTipDL "__OTR__objects/object_custom_equip/gCustomLongshotTipDL"
static const ALIGN_ASSET(2) char gCustomLongshotTipDL[] = dgCustomLongshotTipDL;
#define dgCustomLongshotChainDL "__OTR__objects/object_custom_equip/gCustomLongshotChainDL"
static const ALIGN_ASSET(2) char gCustomLongshotChainDL[] = dgCustomLongshotChainDL;
#define dgCustomSlingshotDL "__OTR__objects/object_custom_equip/gCustomSlingshotDL"
static const ALIGN_ASSET(2) char gCustomSlingshotDL[] = dgCustomSlingshotDL;
@@ -510,5 +510,30 @@ static const ALIGN_ASSET(2) char gLinkAdultVtx_0340A0[] = dgLinkAdultVtx_0340A0;
#define dgLinkAdultVtx_02E7E0 "__OTR__objects/object_link_boy/gLinkAdultVtx_02E7E0"
static const ALIGN_ASSET(2) char gLinkAdultVtx_02E7E0[] = dgLinkAdultVtx_02E7E0;
// Adult-fitted mask display lists (for use when adult Link wears child masks via the AdultMasks enhancement)
#define dgLinkAdultKeatonMaskDL "__OTR__objects/object_link_boy/gLinkAdultKeatonMaskDL"
static const ALIGN_ASSET(2) char gLinkAdultKeatonMaskDL[] = dgLinkAdultKeatonMaskDL;
#define dgLinkAdultSkullMaskDL "__OTR__objects/object_link_boy/gLinkAdultSkullMaskDL"
static const ALIGN_ASSET(2) char gLinkAdultSkullMaskDL[] = dgLinkAdultSkullMaskDL;
#define dgLinkAdultSpookyMaskDL "__OTR__objects/object_link_boy/gLinkAdultSpookyMaskDL"
static const ALIGN_ASSET(2) char gLinkAdultSpookyMaskDL[] = dgLinkAdultSpookyMaskDL;
#define dgLinkAdultBunnyHoodDL "__OTR__objects/object_link_boy/gLinkAdultBunnyHoodDL"
static const ALIGN_ASSET(2) char gLinkAdultBunnyHoodDL[] = dgLinkAdultBunnyHoodDL;
#define dgLinkAdultGoronMaskDL "__OTR__objects/object_link_boy/gLinkAdultGoronMaskDL"
static const ALIGN_ASSET(2) char gLinkAdultGoronMaskDL[] = dgLinkAdultGoronMaskDL;
#define dgLinkAdultZoraMaskDL "__OTR__objects/object_link_boy/gLinkAdultZoraMaskDL"
static const ALIGN_ASSET(2) char gLinkAdultZoraMaskDL[] = dgLinkAdultZoraMaskDL;
#define dgLinkAdultGerudoMaskDL "__OTR__objects/object_link_boy/gLinkAdultGerudoMaskDL"
static const ALIGN_ASSET(2) char gLinkAdultGerudoMaskDL[] = dgLinkAdultGerudoMaskDL;
#define dgLinkAdultMaskOfTruthDL "__OTR__objects/object_link_boy/gLinkAdultMaskOfTruthDL"
static const ALIGN_ASSET(2) char gLinkAdultMaskOfTruthDL[] = dgLinkAdultMaskOfTruthDL;
#endif // OBJECTS_OBJECT_LINK_BOY_H
+1 -1
View File
@@ -38,7 +38,7 @@
<Texture Name="object_bvTLUT_01DBB0" OutName="object_bvTLUT_01DBB0" Format="rgba16" Width="16" Height="16" Offset="0x1DBB0" AddedByScript="true"/>
<Texture Name="object_bvTLUT_01E6B0" OutName="object_bvTLUT_01E6B0" Format="rgba16" Width="16" Height="16" Offset="0x1E6B0" AddedByScript="true"/>
<!-- Boss title card -->
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="i8" Width="128" Height="120" Offset="0x1230"/>
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="ia8" Width="128" Height="120" Offset="0x1230"/>
<Skeleton Name="gBarinadeBodySkel" Type="Normal" LimbType="Standard" Offset="0x15B18"/>
<Skeleton Name="gBarinadeSupportSkel" Type="Flex" LimbType="Standard" Offset="0x17498"/>
+1 -1
View File
@@ -28,7 +28,7 @@
<Texture Name="object_fdTLUT_000A58" OutName="object_fdTLUT_000A58" Format="rgba16" Width="4" Height="4" Offset="0xA58" AddedByScript="true"/>
<Texture Name="object_fdTLUT_0032A8" OutName="object_fdTLUT_0032A8" Format="rgba16" Width="16" Height="16" Offset="0x32A8" AddedByScript="true"/>
<!-- Boss title card -->
<Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="i8" Width="128" Height="120" Offset="0xD700"/>
<Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="ia8" Width="128" Height="120" Offset="0xD700"/>
<!-- Skeletons -->
<Skeleton Name="gVolvagiaLeftArmSkel" Type="Normal" LimbType="Standard" Offset="0x114E0"/>
@@ -38,7 +38,7 @@
<Animation Name="gPhantomHorseFenceJumpAnim" Offset="0xC180"/>
<!-- Boss title card -->
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="i8" Width="128" Height="120" Offset="0x59A0"/>
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="ia8" Width="128" Height="120" Offset="0x59A0"/>
<!-- Energy attack DLists -->
<DList Name="gPhantomWarpDL" Offset="0xFAA0"/>
@@ -68,7 +68,7 @@
<DList Name="gGanondorfRightHandOpenDL" Offset="0xC9E8"/>
<!-- Ganondorf Title Card Texture -->
<Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="i8" Width="128" Height="120" Offset="0xCF00"/>
<Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="ia8" Width="128" Height="120" Offset="0xCF00"/>
<!-- Ganondorf Animation -->
<Animation Name="gGanondorfEndingFloatAnim" Offset="0x11348"/> <!-- Original name is "ONOLEE" (lit. "Curse you!" from his in-game dialogue) -->
@@ -159,7 +159,7 @@
<Texture Name="gGohmaIrisTex" OutName="gohma_iris" Format="rgba16" Width="32" Height="32" Offset="0x193A8"/>
<!-- Boss title card -->
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="i8" Width="128" Height="120" Offset="0x19BA8"/>
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="ia8" Width="128" Height="120" Offset="0x19BA8"/>
<!-- Door -->
<DList Name="gGohmaDoorDL" Offset="0x1EC20"/>
@@ -48,7 +48,7 @@
<Texture Name="object_kingdodongo_Tex_016D90" OutName="tex_00016D90" Format="rgba16" Width="8" Height="8" Offset="0x16D90"/>
<Texture Name="object_kingdodongo_Tex_016E10" OutName="tex_00016E10" Format="rgba16" Width="32" Height="16" Offset="0x16E10"/>
<Texture Name="object_kingdodongo_Tex_017210" OutName="tex_00017210" Format="rgba16" Width="8" Height="32" Offset="0x17210"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="i8" Width="128" Height="120" Offset="0x17410"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="ia8" Width="128" Height="120" Offset="0x17410"/>
<Limb Name="object_kingdodongo_Limb_01B010" LimbType="Standard" Offset="0x1B010"/>
<Limb Name="object_kingdodongo_Limb_01B01C" LimbType="Standard" Offset="0x1B01C"/>
<Limb Name="object_kingdodongo_Limb_01B028" LimbType="Standard" Offset="0x1B028"/>
+1 -1
View File
@@ -6,7 +6,7 @@
<Texture Name="object_moTex_005520" OutName="object_moTex_005520" Format="ia16" Width="32" Height="32" Offset="0x5520" AddedByScript="true"/>
<Texture Name="object_moTex_005D20" OutName="object_moTex_005D20" Format="ia16" Width="32" Height="32" Offset="0x5D20" AddedByScript="true"/>
<!-- Morpha's Title Card -->
<Texture Name="gMorphaTitleCardTex" Format="i8" Width="128" Height="120" Offset="0x1010"/>
<Texture Name="gMorphaTitleCardTex" Format="ia8" Width="128" Height="120" Offset="0x1010"/>
<!-- DLists for Morpha's Core -->
<DList Name="gMorphaCoreMembraneDL" Offset="0x6700"/>
@@ -18,7 +18,7 @@
<Texture Name="object_sstTex_01A730" OutName="object_sstTex_01A730" Format="rgba16" Width="4" Height="16" Offset="0x1A730" AddedByScript="true"/>
<Texture Name="object_sstTex_01A7B0" OutName="object_sstTex_01A7B0" Format="rgba16" Width="16" Height="16" Offset="0x1A7B0" AddedByScript="true"/>
<!-- Boss Title Card -->
<Texture Name="gBongoTitleCardTex" OutName="bongo_title_card" Format="i8" Width="128" Height="120" Offset="0x13D80"/>
<Texture Name="gBongoTitleCardTex" OutName="bongo_title_card" Format="ia8" Width="128" Height="120" Offset="0x13D80"/>
<!-- Skeletons -->
<Skeleton Name="gBongoLeftHandSkel" Type="Flex" LimbType="Standard" Offset="0x04DE0"/>
+1 -1
View File
@@ -273,7 +273,7 @@
<DList Name="gTwinrovaBroomIceTrailDL" Offset="0x2DEB0"/>
<DList Name="gTwinrovaBroomFireJetDL" Offset="0x2DFB0"/>
<DList Name="gTwinrovaBroomFireTrailDL" Offset="0x2E098"/>
<Texture Name="gTwinrovaTitleCardTex" OutName="title_card" Format="i8" Width="128" Height="120" Offset="0x2E170"/>
<Texture Name="gTwinrovaTitleCardTex" OutName="title_card" Format="ia8" Width="128" Height="120" Offset="0x2E170"/>
<Limb Name="gTwinrovaPelvisLimb" LimbType="Standard" Offset="0x31D70"/>
<Limb Name="gTwinrovaSash1Limb" LimbType="Standard" Offset="0x31D7C"/>
<Limb Name="gTwinrovaSash2Limb" LimbType="Standard" Offset="0x31D88"/>
@@ -1,52 +1,52 @@
<Root>
<File Name="object_bv" Segment="6">
<Texture Name="gBarinadeTitleCardENGTex" OutName="barinade_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x1230" />
<Texture Name="gBarinadeTitleCardGERTex" OutName="barinade_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x2630" />
<Texture Name="gBarinadeTitleCardFRATex" OutName="barinade_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x3a30" />
<Texture Name="gBarinadeTitleCardENGTex" OutName="barinade_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x1230" />
<Texture Name="gBarinadeTitleCardGERTex" OutName="barinade_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x2630" />
<Texture Name="gBarinadeTitleCardFRATex" OutName="barinade_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x3a30" />
</File>
<File Name="object_fd" Segment="6">
<Texture Name="gVolvagiaBossTitleCardENGTex" OutName="volvagia_boss_eng_title_card" Format="i8" Width="128" Height="40" Offset="0xd700" />
<Texture Name="gVolvagiaBossTitleCardGERTex" OutName="volvagia_boss_ger_title_card" Format="i8" Width="128" Height="40" Offset="0xeb00" />
<Texture Name="gVolvagiaBossTitleCardFRATex" OutName="volvagia_boss_fra_title_card" Format="i8" Width="128" Height="40" Offset="0xff00" />
<Texture Name="gVolvagiaBossTitleCardENGTex" OutName="volvagia_boss_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0xd700" />
<Texture Name="gVolvagiaBossTitleCardGERTex" OutName="volvagia_boss_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0xeb00" />
<Texture Name="gVolvagiaBossTitleCardFRATex" OutName="volvagia_boss_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0xff00" />
</File>
<File Name="object_fhg" Segment="6">
<Texture Name="gPhantomGanonTitleCardENGTex" OutName="phantom_ganon_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x59a0" />
<Texture Name="gPhantomGanonTitleCardGERTex" OutName="phantom_ganon_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x6da0" />
<Texture Name="gPhantomGanonTitleCardFRATex" OutName="phantom_ganon_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x81a0" />
<Texture Name="gPhantomGanonTitleCardENGTex" OutName="phantom_ganon_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x59a0" />
<Texture Name="gPhantomGanonTitleCardGERTex" OutName="phantom_ganon_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x6da0" />
<Texture Name="gPhantomGanonTitleCardFRATex" OutName="phantom_ganon_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x81a0" />
</File>
<File Name="object_ganon" Segment="6">
<Texture Name="gGanondorfTitleCardENGTex" OutName="ganondorf_eng_title_card" Format="i8" Width="128" Height="40" Offset="0xcf00" />
<Texture Name="gGanondorfTitleCardGERTex" OutName="ganondorf_ger_title_card" Format="i8" Width="128" Height="40" Offset="0xe300" />
<Texture Name="gGanondorfTitleCardFRATex" OutName="ganondorf_fra_title_card" Format="i8" Width="128" Height="40" Offset="0xf700" />
<Texture Name="gGanondorfTitleCardENGTex" OutName="ganondorf_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0xcf00" />
<Texture Name="gGanondorfTitleCardGERTex" OutName="ganondorf_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0xe300" />
<Texture Name="gGanondorfTitleCardFRATex" OutName="ganondorf_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0xf700" />
</File>
<File Name="object_ganon2" Segment="6">
<Texture Name="gGanonTitleCardENGTex" OutName="ganon_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x21a90" />
<Texture Name="gGanonTitleCardGERTex" OutName="ganon_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x22e90" />
<Texture Name="gGanonTitleCardFRATex" OutName="ganon_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x24290" />
<Texture Name="gGanonTitleCardENGTex" OutName="ganon_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x21a90" />
<Texture Name="gGanonTitleCardGERTex" OutName="ganon_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x22e90" />
<Texture Name="gGanonTitleCardFRATex" OutName="ganon_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x24290" />
</File>
<File Name="object_goma" Segment="6">
<Texture Name="gGohmaTitleCardENGTex" OutName="gohma_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x19ba8" />
<Texture Name="gGohmaTitleCardGERTex" OutName="gohma_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x1afa8" />
<Texture Name="gGohmaTitleCardFRATex" OutName="gohma_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x1c3a8" />
<Texture Name="gGohmaTitleCardENGTex" OutName="gohma_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x19ba8" />
<Texture Name="gGohmaTitleCardGERTex" OutName="gohma_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x1afa8" />
<Texture Name="gGohmaTitleCardFRATex" OutName="gohma_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x1c3a8" />
</File>
<File Name="object_kingdodongo" Segment="6">
<Texture Name="gKingDodongoTitleCardENGTex" OutName="king_dodongo_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x17410" />
<Texture Name="gKingDodongoTitleCardGERTex" OutName="king_dodongo_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x18810" />
<Texture Name="gKingDodongoTitleCardFRATex" OutName="king_dodongo_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x19c10" />
<Texture Name="gKingDodongoTitleCardENGTex" OutName="king_dodongo_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x17410" />
<Texture Name="gKingDodongoTitleCardGERTex" OutName="king_dodongo_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x18810" />
<Texture Name="gKingDodongoTitleCardFRATex" OutName="king_dodongo_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x19c10" />
</File>
<File Name="object_mo" Segment="6">
<Texture Name="gMorphaTitleCardENGTex" OutName="morpha_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x1010" />
<Texture Name="gMorphaTitleCardGERTex" OutName="morpha_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x2410" />
<Texture Name="gMorphaTitleCardFRATex" OutName="morpha_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x3810" />
<Texture Name="gMorphaTitleCardENGTex" OutName="morpha_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x1010" />
<Texture Name="gMorphaTitleCardGERTex" OutName="morpha_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x2410" />
<Texture Name="gMorphaTitleCardFRATex" OutName="morpha_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x3810" />
</File>
<File Name="object_sst" Segment="6">
<Texture Name="gBongoTitleCardENGTex" OutName="bongo_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x13d80" />
<Texture Name="gBongoTitleCardGERTex" OutName="bongo_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x15180" />
<Texture Name="gBongoTitleCardFRATex" OutName="bongo_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x16580" />
<Texture Name="gBongoTitleCardENGTex" OutName="bongo_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x13d80" />
<Texture Name="gBongoTitleCardGERTex" OutName="bongo_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x15180" />
<Texture Name="gBongoTitleCardFRATex" OutName="bongo_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x16580" />
</File>
<File Name="object_tw" Segment="6">
<Texture Name="gTwinrovaTitleCardENGTex" OutName="twinrova_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x2e170" />
<Texture Name="gTwinrovaTitleCardGERTex" OutName="twinrova_ger_title_card" Format="i8" Width="128" Height="40" Offset="0x2f570" />
<Texture Name="gTwinrovaTitleCardFRATex" OutName="twinrova_fra_title_card" Format="i8" Width="128" Height="40" Offset="0x30970" />
<Texture Name="gTwinrovaTitleCardENGTex" OutName="twinrova_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x2e170" />
<Texture Name="gTwinrovaTitleCardGERTex" OutName="twinrova_ger_title_card" Format="ia8" Width="128" Height="40" Offset="0x2f570" />
<Texture Name="gTwinrovaTitleCardFRATex" OutName="twinrova_fra_title_card" Format="ia8" Width="128" Height="40" Offset="0x30970" />
</File>
</Root>
@@ -38,7 +38,7 @@
<Texture Name="object_bvTLUT_01DBB0" OutName="object_bvTLUT_01DBB0" Format="rgba16" Width="16" Height="16" Offset="0x1C7B0" AddedByScript="true"/>
<Texture Name="object_bvTLUT_01E6B0" OutName="object_bvTLUT_01E6B0" Format="rgba16" Width="16" Height="16" Offset="0x1D2B0" AddedByScript="true"/>
<!-- Boss title card -->
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="i8" Width="128" Height="80" Offset="0x1230"/>
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="ia8" Width="128" Height="80" Offset="0x1230"/>
<Skeleton Name="gBarinadeBodySkel" Type="Normal" LimbType="Standard" Offset="0x14718"/>
<Skeleton Name="gBarinadeSupportSkel" Type="Flex" LimbType="Standard" Offset="0x16098"/>
@@ -28,7 +28,7 @@
<Texture Name="object_fdTLUT_000A58" OutName="object_fdTLUT_000A58" Format="rgba16" Width="4" Height="4" Offset="0xA58" AddedByScript="true"/>
<Texture Name="object_fdTLUT_0032A8" OutName="object_fdTLUT_0032A8" Format="rgba16" Width="16" Height="16" Offset="0x32A8" AddedByScript="true"/>
<!-- Boss title card -->
<!-- <Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="i8" Width="128" Height="80" Offset="0xD700"/> -->
<!-- <Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="ia8" Width="128" Height="80" Offset="0xD700"/> -->
<!-- Skeletons -->
<Skeleton Name="gVolvagiaLeftArmSkel" Type="Normal" LimbType="Standard" Offset="0x100E0"/>
@@ -38,7 +38,7 @@
<Animation Name="gPhantomHorseFenceJumpAnim" Offset="0xAD80"/>
<!-- Boss title card -->
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="i8" Width="128" Height="80" Offset="0x59A0"/>
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="ia8" Width="128" Height="80" Offset="0x59A0"/>
<!-- Energy attack DLists -->
<DList Name="gPhantomWarpDL" Offset="0xE6A0"/>
@@ -68,7 +68,7 @@
<DList Name="gGanondorfRightHandOpenDL" Offset="0xC9E8"/>
<!-- Ganondorf Title Card Texture -->
<!-- <Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="i8" Width="128" Height="80" Offset="0xCF00"/> -->
<!-- <Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="ia8" Width="128" Height="80" Offset="0xCF00"/> -->
<!-- Ganondorf Animation -->
<Animation Name="gGanondorfEndingFloatAnim" Offset="0xFF48"/> <!-- Original name is "ONOLEE" (lit. "Curse you!" from his in-game dialogue) -->
@@ -159,7 +159,7 @@
<Texture Name="gGohmaIrisTex" OutName="gohma_iris" Format="rgba16" Width="32" Height="32" Offset="0x193A8"/>
<!-- Boss title card -->
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="i8" Width="128" Height="80" Offset="0x19BA8"/>
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="ia8" Width="128" Height="80" Offset="0x19BA8"/>
<!-- Door -->
<DList Name="gGohmaDoorDL" Offset="0x1D820"/>
@@ -48,7 +48,7 @@
<Texture Name="object_kingdodongo_Tex_016D90" OutName="tex_00016D90" Format="rgba16" Width="8" Height="8" Offset="0x16D90"/>
<Texture Name="object_kingdodongo_Tex_016E10" OutName="tex_00016E10" Format="rgba16" Width="32" Height="16" Offset="0x16E10"/>
<Texture Name="object_kingdodongo_Tex_017210" OutName="tex_00017210" Format="rgba16" Width="8" Height="32" Offset="0x17210"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="i8" Width="128" Height="80" Offset="0x17410"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="ia8" Width="128" Height="80" Offset="0x17410"/>
<Limb Name="object_kingdodongo_Limb_01B010" LimbType="Standard" Offset="0x19C10"/>
<Limb Name="object_kingdodongo_Limb_01B01C" LimbType="Standard" Offset="0x19C1C"/>
<Limb Name="object_kingdodongo_Limb_01B028" LimbType="Standard" Offset="0x19C28"/>
@@ -6,7 +6,7 @@
<Texture Name="object_moTex_005520" OutName="object_moTex_005520" Format="ia16" Width="32" Height="32" Offset="0x4120" AddedByScript="true"/>
<Texture Name="object_moTex_005D20" OutName="object_moTex_005D20" Format="ia16" Width="32" Height="32" Offset="0x4920" AddedByScript="true"/>
<!-- Morpha's Title Card -->
<Texture Name="gMorphaTitleCardTex" Format="i8" Width="128" Height="80" Offset="0x1010"/>
<Texture Name="gMorphaTitleCardTex" Format="ia8" Width="128" Height="80" Offset="0x1010"/>
<Texture Name="gMorphaWaterTex" Format="rgba16" Width="32" Height="32" Offset="0x7470"/>
<!-- DLists for Morpha's Core -->
@@ -17,7 +17,7 @@
<Texture Name="object_sstTex_01A730" OutName="object_sstTex_01A730" Format="rgba16" Width="4" Height="16" Offset="0x19330" AddedByScript="true"/>
<Texture Name="object_sstTex_01A7B0" OutName="object_sstTex_01A7B0" Format="rgba16" Width="16" Height="16" Offset="0x193B0" AddedByScript="true"/>
<!-- Boss Title Card -->
<Texture Name="gBongoTitleCardTex" OutName="bongo_title_card" Format="i8" Width="128" Height="80" Offset="0x13D80"/>
<Texture Name="gBongoTitleCardTex" OutName="bongo_title_card" Format="ia8" Width="128" Height="80" Offset="0x13D80"/>
<!-- Skeletons -->
<Skeleton Name="gBongoLeftHandSkel" Type="Flex" LimbType="Standard" Offset="0x04DE0"/>
@@ -273,7 +273,7 @@
<DList Name="gTwinrovaBroomIceTrailDL" Offset="0x2DEB0"/>
<DList Name="gTwinrovaBroomFireJetDL" Offset="0x2DFB0"/>
<DList Name="gTwinrovaBroomFireTrailDL" Offset="0x2E098"/>
<Texture Name="gTwinrovaTitleCardTex" OutName="title_card" Format="i8" Width="128" Height="80" Offset="0x2E170"/>
<Texture Name="gTwinrovaTitleCardTex" OutName="title_card" Format="ia8" Width="128" Height="80" Offset="0x2E170"/>
<Limb Name="gTwinrovaPelvisLimb" LimbType="Standard" Offset="0x30970"/>
<Limb Name="gTwinrovaSash1Limb" LimbType="Standard" Offset="0x3097C"/>
<Limb Name="gTwinrovaSash2Limb" LimbType="Standard" Offset="0x30988"/>
@@ -1,42 +1,42 @@
<Root>
<File Name="object_bv" Segment="6">
<Texture Name="gBarinadeTitleCardJPNTex" OutName="barinade_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x1230" />
<Texture Name="gBarinadeTitleCardENGTex" OutName="barinade_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x2630" />
<Texture Name="gBarinadeTitleCardJPNTex" OutName="barinade_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x1230" />
<Texture Name="gBarinadeTitleCardENGTex" OutName="barinade_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x2630" />
</File>
<File Name="object_fd" Segment="6">
<Texture Name="gVolvagiaBossTitleCardJPNTex" OutName="volvagia_boss_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0xd700" />
<Texture Name="gVolvagiaBossTitleCardENGTex" OutName="volvagia_boss_eng_title_card" Format="i8" Width="128" Height="40" Offset="0xeb00" />
<Texture Name="gVolvagiaBossTitleCardJPNTex" OutName="volvagia_boss_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0xd700" />
<Texture Name="gVolvagiaBossTitleCardENGTex" OutName="volvagia_boss_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0xeb00" />
</File>
<File Name="object_fhg" Segment="6">
<Texture Name="gPhantomGanonTitleCardJPNTex" OutName="phantom_ganon_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x59a0" />
<Texture Name="gPhantomGanonTitleCardENGTex" OutName="phantom_ganon_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x6da0" />
<Texture Name="gPhantomGanonTitleCardJPNTex" OutName="phantom_ganon_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x59a0" />
<Texture Name="gPhantomGanonTitleCardENGTex" OutName="phantom_ganon_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x6da0" />
</File>
<File Name="object_ganon" Segment="6">
<Texture Name="gGanondorfTitleCardJPNTex" OutName="ganondorf_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0xcf00" />
<Texture Name="gGanondorfTitleCardENGTex" OutName="ganondorf_eng_title_card" Format="i8" Width="128" Height="40" Offset="0xe300" />
<Texture Name="gGanondorfTitleCardJPNTex" OutName="ganondorf_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0xcf00" />
<Texture Name="gGanondorfTitleCardENGTex" OutName="ganondorf_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0xe300" />
</File>
<File Name="object_ganon2" Segment="6">
<Texture Name="gGanonTitleCardJPNTex" OutName="ganon_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x21a90" />
<Texture Name="gGanonTitleCardENGTex" OutName="ganon_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x22e90" />
<Texture Name="gGanonTitleCardJPNTex" OutName="ganon_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x21a90" />
<Texture Name="gGanonTitleCardENGTex" OutName="ganon_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x22e90" />
</File>
<File Name="object_goma" Segment="6">
<Texture Name="gGohmaTitleCardJPNTex" OutName="gohma_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x19ba8" />
<Texture Name="gGohmaTitleCardENGTex" OutName="gohma_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x1afa8" />
<Texture Name="gGohmaTitleCardJPNTex" OutName="gohma_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x19ba8" />
<Texture Name="gGohmaTitleCardENGTex" OutName="gohma_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x1afa8" />
</File>
<File Name="object_kingdodongo" Segment="6">
<Texture Name="gKingDodongoTitleCardJPNTex" OutName="king_dodongo_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x17410" />
<Texture Name="gKingDodongoTitleCardENGTex" OutName="king_dodongo_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x18810" />
<Texture Name="gKingDodongoTitleCardJPNTex" OutName="king_dodongo_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x17410" />
<Texture Name="gKingDodongoTitleCardENGTex" OutName="king_dodongo_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x18810" />
</File>
<File Name="object_mo" Segment="6">
<Texture Name="gMorphaTitleCardJPNTex" OutName="morpha_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x1010" />
<Texture Name="gMorphaTitleCardENGTex" OutName="morpha_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x2410" />
<Texture Name="gMorphaTitleCardJPNTex" OutName="morpha_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x1010" />
<Texture Name="gMorphaTitleCardENGTex" OutName="morpha_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x2410" />
</File>
<File Name="object_sst" Segment="6">
<Texture Name="gBongoTitleCardJPNTex" OutName="bongo_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x13d80" />
<Texture Name="gBongoTitleCardENGTex" OutName="bongo_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x15180" />
<Texture Name="gBongoTitleCardJPNTex" OutName="bongo_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x13d80" />
<Texture Name="gBongoTitleCardENGTex" OutName="bongo_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x15180" />
</File>
<File Name="object_tw" Segment="6">
<Texture Name="gTwinrovaTitleCardJPNTex" OutName="twinrova_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x2e170" />
<Texture Name="gTwinrovaTitleCardENGTex" OutName="twinrova_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x2f570" />
<Texture Name="gTwinrovaTitleCardJPNTex" OutName="twinrova_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x2e170" />
<Texture Name="gTwinrovaTitleCardENGTex" OutName="twinrova_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x2f570" />
</File>
</Root>
@@ -38,7 +38,7 @@
<Texture Name="object_bvTLUT_01DBB0" OutName="object_bvTLUT_01DBB0" Format="rgba16" Width="16" Height="16" Offset="0x1C7B0" AddedByScript="true"/>
<Texture Name="object_bvTLUT_01E6B0" OutName="object_bvTLUT_01E6B0" Format="rgba16" Width="16" Height="16" Offset="0x1D2B0" AddedByScript="true"/>
<!-- Boss title card -->
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="i8" Width="128" Height="80" Offset="0x1230"/>
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="ia8" Width="128" Height="80" Offset="0x1230"/>
<Skeleton Name="gBarinadeBodySkel" Type="Normal" LimbType="Standard" Offset="0x14718"/>
<Skeleton Name="gBarinadeSupportSkel" Type="Flex" LimbType="Standard" Offset="0x16098"/>
@@ -28,7 +28,7 @@
<Texture Name="object_fdTLUT_000A58" OutName="object_fdTLUT_000A58" Format="rgba16" Width="4" Height="4" Offset="0xA58" AddedByScript="true"/>
<Texture Name="object_fdTLUT_0032A8" OutName="object_fdTLUT_0032A8" Format="rgba16" Width="16" Height="16" Offset="0x32A8" AddedByScript="true"/>
<!-- Boss title card -->
<!-- <Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="i8" Width="128" Height="80" Offset="0xD700"/> -->
<!-- <Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="ia8" Width="128" Height="80" Offset="0xD700"/> -->
<!-- Skeletons -->
<Skeleton Name="gVolvagiaLeftArmSkel" Type="Normal" LimbType="Standard" Offset="0x100E0"/>
@@ -38,7 +38,7 @@
<Animation Name="gPhantomHorseFenceJumpAnim" Offset="0xAD80"/>
<!-- Boss title card -->
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="i8" Width="128" Height="80" Offset="0x59A0"/>
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="ia8" Width="128" Height="80" Offset="0x59A0"/>
<!-- Energy attack DLists -->
<DList Name="gPhantomWarpDL" Offset="0xE6A0"/>
@@ -68,7 +68,7 @@
<DList Name="gGanondorfRightHandOpenDL" Offset="0xC9E8"/>
<!-- Ganondorf Title Card Texture -->
<!-- <Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="i8" Width="128" Height="80" Offset="0xCF00"/> -->
<!-- <Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="ia8" Width="128" Height="80" Offset="0xCF00"/> -->
<!-- Ganondorf Animation -->
<Animation Name="gGanondorfEndingFloatAnim" Offset="0xFF48"/> <!-- Original name is "ONOLEE" (lit. "Curse you!" from his in-game dialogue) -->
@@ -159,7 +159,7 @@
<Texture Name="gGohmaIrisTex" OutName="gohma_iris" Format="rgba16" Width="32" Height="32" Offset="0x193A8"/>
<!-- Boss title card -->
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="i8" Width="128" Height="80" Offset="0x19BA8"/>
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="ia8" Width="128" Height="80" Offset="0x19BA8"/>
<!-- Door -->
<DList Name="gGohmaDoorDL" Offset="0x1D820"/>
@@ -48,7 +48,7 @@
<Texture Name="object_kingdodongo_Tex_016D90" OutName="tex_00016D90" Format="rgba16" Width="8" Height="8" Offset="0x16D90"/>
<Texture Name="object_kingdodongo_Tex_016E10" OutName="tex_00016E10" Format="rgba16" Width="32" Height="16" Offset="0x16E10"/>
<Texture Name="object_kingdodongo_Tex_017210" OutName="tex_00017210" Format="rgba16" Width="8" Height="32" Offset="0x17210"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="i8" Width="128" Height="80" Offset="0x17410"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="ia8" Width="128" Height="80" Offset="0x17410"/>
<Limb Name="object_kingdodongo_Limb_01B010" LimbType="Standard" Offset="0x19C10"/>
<Limb Name="object_kingdodongo_Limb_01B01C" LimbType="Standard" Offset="0x19C1C"/>
<Limb Name="object_kingdodongo_Limb_01B028" LimbType="Standard" Offset="0x19C28"/>
@@ -6,7 +6,7 @@
<Texture Name="object_moTex_005520" OutName="object_moTex_005520" Format="ia16" Width="32" Height="32" Offset="0x4120" AddedByScript="true"/>
<Texture Name="object_moTex_005D20" OutName="object_moTex_005D20" Format="ia16" Width="32" Height="32" Offset="0x4920" AddedByScript="true"/>
<!-- Morpha's Title Card -->
<Texture Name="gMorphaTitleCardTex" Format="i8" Width="128" Height="80" Offset="0x1010"/>
<Texture Name="gMorphaTitleCardTex" Format="ia8" Width="128" Height="80" Offset="0x1010"/>
<Texture Name="gMorphaWaterTex" Format="rgba16" Width="32" Height="32" Offset="0x7470"/>
<!-- DLists for Morpha's Core -->
@@ -17,7 +17,7 @@
<Texture Name="object_sstTex_01A730" OutName="object_sstTex_01A730" Format="rgba16" Width="4" Height="16" Offset="0x19330" AddedByScript="true"/>
<Texture Name="object_sstTex_01A7B0" OutName="object_sstTex_01A7B0" Format="rgba16" Width="16" Height="16" Offset="0x193B0" AddedByScript="true"/>
<!-- Boss Title Card -->
<Texture Name="gBongoTitleCardTex" OutName="bongo_title_card" Format="i8" Width="128" Height="80" Offset="0x13D80"/>
<Texture Name="gBongoTitleCardTex" OutName="bongo_title_card" Format="ia8" Width="128" Height="80" Offset="0x13D80"/>
<!-- Skeletons -->
<Skeleton Name="gBongoLeftHandSkel" Type="Flex" LimbType="Standard" Offset="0x04DE0"/>
@@ -273,7 +273,7 @@
<DList Name="gTwinrovaBroomIceTrailDL" Offset="0x2DEB0"/>
<DList Name="gTwinrovaBroomFireJetDL" Offset="0x2DFB0"/>
<DList Name="gTwinrovaBroomFireTrailDL" Offset="0x2E098"/>
<Texture Name="gTwinrovaTitleCardTex" OutName="title_card" Format="i8" Width="128" Height="80" Offset="0x2E170"/>
<Texture Name="gTwinrovaTitleCardTex" OutName="title_card" Format="ia8" Width="128" Height="80" Offset="0x2E170"/>
<Limb Name="gTwinrovaPelvisLimb" LimbType="Standard" Offset="0x30970"/>
<Limb Name="gTwinrovaSash1Limb" LimbType="Standard" Offset="0x3097C"/>
<Limb Name="gTwinrovaSash2Limb" LimbType="Standard" Offset="0x30988"/>
@@ -1,42 +1,42 @@
<Root>
<File Name="object_bv" Segment="6">
<Texture Name="gBarinadeTitleCardJPNTex" OutName="barinade_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x1230" />
<Texture Name="gBarinadeTitleCardENGTex" OutName="barinade_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x2630" />
<Texture Name="gBarinadeTitleCardJPNTex" OutName="barinade_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x1230" />
<Texture Name="gBarinadeTitleCardENGTex" OutName="barinade_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x2630" />
</File>
<File Name="object_fd" Segment="6">
<Texture Name="gVolvagiaBossTitleCardJPNTex" OutName="volvagia_boss_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0xd700" />
<Texture Name="gVolvagiaBossTitleCardENGTex" OutName="volvagia_boss_eng_title_card" Format="i8" Width="128" Height="40" Offset="0xeb00" />
<Texture Name="gVolvagiaBossTitleCardJPNTex" OutName="volvagia_boss_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0xd700" />
<Texture Name="gVolvagiaBossTitleCardENGTex" OutName="volvagia_boss_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0xeb00" />
</File>
<File Name="object_fhg" Segment="6">
<Texture Name="gPhantomGanonTitleCardJPNTex" OutName="phantom_ganon_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x59a0" />
<Texture Name="gPhantomGanonTitleCardENGTex" OutName="phantom_ganon_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x6da0" />
<Texture Name="gPhantomGanonTitleCardJPNTex" OutName="phantom_ganon_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x59a0" />
<Texture Name="gPhantomGanonTitleCardENGTex" OutName="phantom_ganon_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x6da0" />
</File>
<File Name="object_ganon" Segment="6">
<Texture Name="gGanondorfTitleCardJPNTex" OutName="ganondorf_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0xcf00" />
<Texture Name="gGanondorfTitleCardENGTex" OutName="ganondorf_eng_title_card" Format="i8" Width="128" Height="40" Offset="0xe300" />
<Texture Name="gGanondorfTitleCardJPNTex" OutName="ganondorf_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0xcf00" />
<Texture Name="gGanondorfTitleCardENGTex" OutName="ganondorf_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0xe300" />
</File>
<File Name="object_ganon2" Segment="6">
<Texture Name="gGanonTitleCardJPNTex" OutName="ganon_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x21a90" />
<Texture Name="gGanonTitleCardENGTex" OutName="ganon_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x22e90" />
<Texture Name="gGanonTitleCardJPNTex" OutName="ganon_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x21a90" />
<Texture Name="gGanonTitleCardENGTex" OutName="ganon_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x22e90" />
</File>
<File Name="object_goma" Segment="6">
<Texture Name="gGohmaTitleCardJPNTex" OutName="gohma_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x19ba8" />
<Texture Name="gGohmaTitleCardENGTex" OutName="gohma_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x1afa8" />
<Texture Name="gGohmaTitleCardJPNTex" OutName="gohma_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x19ba8" />
<Texture Name="gGohmaTitleCardENGTex" OutName="gohma_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x1afa8" />
</File>
<File Name="object_kingdodongo" Segment="6">
<Texture Name="gKingDodongoTitleCardJPNTex" OutName="king_dodongo_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x17410" />
<Texture Name="gKingDodongoTitleCardENGTex" OutName="king_dodongo_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x18810" />
<Texture Name="gKingDodongoTitleCardJPNTex" OutName="king_dodongo_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x17410" />
<Texture Name="gKingDodongoTitleCardENGTex" OutName="king_dodongo_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x18810" />
</File>
<File Name="object_mo" Segment="6">
<Texture Name="gMorphaTitleCardJPNTex" OutName="morpha_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x1010" />
<Texture Name="gMorphaTitleCardENGTex" OutName="morpha_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x2410" />
<Texture Name="gMorphaTitleCardJPNTex" OutName="morpha_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x1010" />
<Texture Name="gMorphaTitleCardENGTex" OutName="morpha_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x2410" />
</File>
<File Name="object_sst" Segment="6">
<Texture Name="gBongoTitleCardJPNTex" OutName="bongo_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x13d80" />
<Texture Name="gBongoTitleCardENGTex" OutName="bongo_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x15180" />
<Texture Name="gBongoTitleCardJPNTex" OutName="bongo_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x13d80" />
<Texture Name="gBongoTitleCardENGTex" OutName="bongo_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x15180" />
</File>
<File Name="object_tw" Segment="6">
<Texture Name="gTwinrovaTitleCardJPNTex" OutName="twinrova_jpn_title_card" Format="i8" Width="128" Height="40" Offset="0x2e170" />
<Texture Name="gTwinrovaTitleCardENGTex" OutName="twinrova_eng_title_card" Format="i8" Width="128" Height="40" Offset="0x2f570" />
<Texture Name="gTwinrovaTitleCardJPNTex" OutName="twinrova_jpn_title_card" Format="ia8" Width="128" Height="40" Offset="0x2e170" />
<Texture Name="gTwinrovaTitleCardENGTex" OutName="twinrova_eng_title_card" Format="ia8" Width="128" Height="40" Offset="0x2f570" />
</File>
</Root>
@@ -38,7 +38,7 @@
<Texture Name="object_bvTLUT_01DBB0" OutName="object_bvTLUT_01DBB0" Format="rgba16" Width="16" Height="16" Offset="0x1DBB0" AddedByScript="true"/>
<Texture Name="object_bvTLUT_01E6B0" OutName="object_bvTLUT_01E6B0" Format="rgba16" Width="16" Height="16" Offset="0x1E6B0" AddedByScript="true"/>
<!-- Boss title card -->
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="i8" Width="128" Height="120" Offset="0x1230"/>
<Texture Name="gBarinadeTitleCardTex" OutName="barinade_title_card" Format="ia8" Width="128" Height="120" Offset="0x1230"/>
<Skeleton Name="gBarinadeBodySkel" Type="Normal" LimbType="Standard" Offset="0x15B18"/>
<Skeleton Name="gBarinadeSupportSkel" Type="Flex" LimbType="Standard" Offset="0x17498"/>
@@ -28,7 +28,7 @@
<Texture Name="object_fdTLUT_000A58" OutName="object_fdTLUT_000A58" Format="rgba16" Width="4" Height="4" Offset="0xA58" AddedByScript="true"/>
<Texture Name="object_fdTLUT_0032A8" OutName="object_fdTLUT_0032A8" Format="rgba16" Width="16" Height="16" Offset="0x32A8" AddedByScript="true"/>
<!-- Boss title card -->
<Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="i8" Width="128" Height="120" Offset="0xD700"/>
<Texture Name="gVolvagiaTitleCardTex" OutName="volvagia_boss_title_card" Format="ia8" Width="128" Height="120" Offset="0xD700"/>
<!-- Skeletons -->
<Skeleton Name="gVolvagiaLeftArmSkel" Type="Normal" LimbType="Standard" Offset="0x114E0"/>
@@ -38,7 +38,7 @@
<Animation Name="gPhantomHorseFenceJumpAnim" Offset="0xC180"/>
<!-- Boss title card -->
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="i8" Width="128" Height="120" Offset="0x59A0"/>
<Texture Name="gPhantomGanonTitleCardTex" OutName="phantom_ganon_title_card" Format="ia8" Width="128" Height="120" Offset="0x59A0"/>
<!-- Energy attack DLists -->
<DList Name="gPhantomWarpDL" Offset="0xFAA0"/>
@@ -68,7 +68,7 @@
<DList Name="gGanondorfRightHandOpenDL" Offset="0xC9E8"/>
<!-- Ganondorf Title Card Texture -->
<Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="i8" Width="128" Height="120" Offset="0xCF00"/>
<Texture Name="gGanondorfTitleCardTex" OutName="ganondorf_title_card" Format="ia8" Width="128" Height="120" Offset="0xCF00"/>
<!-- Ganondorf Animation -->
<Animation Name="gGanondorfEndingFloatAnim" Offset="0x11348"/> <!-- Original name is "ONOLEE" (lit. "Curse you!" from his in-game dialogue) -->
@@ -159,7 +159,7 @@
<Texture Name="gGohmaIrisTex" OutName="gohma_iris" Format="rgba16" Width="32" Height="32" Offset="0x193A8"/>
<!-- Boss title card -->
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="i8" Width="128" Height="120" Offset="0x19BA8"/>
<Texture Name="gGohmaTitleCardTex" OutName="gohma_title_card" Format="ia8" Width="128" Height="120" Offset="0x19BA8"/>
<!-- Door -->
<DList Name="gGohmaDoorDL" Offset="0x1EC20"/>
@@ -48,7 +48,7 @@
<Texture Name="object_kingdodongo_Tex_016D90" OutName="tex_00016D90" Format="rgba16" Width="8" Height="8" Offset="0x16D90"/>
<Texture Name="object_kingdodongo_Tex_016E10" OutName="tex_00016E10" Format="rgba16" Width="32" Height="16" Offset="0x16E10"/>
<Texture Name="object_kingdodongo_Tex_017210" OutName="tex_00017210" Format="rgba16" Width="8" Height="32" Offset="0x17210"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="i8" Width="128" Height="120" Offset="0x17410"/>
<Texture Name="gKingDodongoTitleCardTex" OutName="title_card" Format="ia8" Width="128" Height="120" Offset="0x17410"/>
<Limb Name="object_kingdodongo_Limb_01B010" LimbType="Standard" Offset="0x1B010"/>
<Limb Name="object_kingdodongo_Limb_01B01C" LimbType="Standard" Offset="0x1B01C"/>
<Limb Name="object_kingdodongo_Limb_01B028" LimbType="Standard" Offset="0x1B028"/>
@@ -6,7 +6,7 @@
<Texture Name="object_moTex_005520" OutName="object_moTex_005520" Format="ia16" Width="32" Height="32" Offset="0x5520" AddedByScript="true"/>
<Texture Name="object_moTex_005D20" OutName="object_moTex_005D20" Format="ia16" Width="32" Height="32" Offset="0x5D20" AddedByScript="true"/>
<!-- Morpha's Title Card -->
<Texture Name="gMorphaTitleCardTex" Format="i8" Width="128" Height="120" Offset="0x1010"/>
<Texture Name="gMorphaTitleCardTex" Format="ia8" Width="128" Height="120" Offset="0x1010"/>
<Texture Name="gMorphaWaterTex" Format="rgba16" Width="32" Height="32" Offset="0x8870"/>
<!-- DLists for Morpha's Core -->

Some files were not shown because too many files have changed in this diff Show More