Compare commits

...

572 Commits

Author SHA1 Message Date
Philip Dubé 8d2d5c9828 Be consistent with check names for deku scrub grotto beehives (#6825) 2026-06-27 20:58:17 +00:00
Chris 2f262f492e [Bugfix] Junk stone hints not generated (#6824) 2026-06-27 20:08:21 +00:00
Chris 2ba368e7e7 [Bugfix] Skull house checks showing as 0 rupees in tracker (#6822) 2026-06-27 19:58:50 +00:00
Chris 3ac67f14cc [Bugfix] Token count off-by-1 (#6819) 2026-06-27 15:28:54 +00:00
jdperos 003a009ebc Better Octave Drop logic (#6796) 2026-06-27 15:28:40 +00:00
Tim Schneeberger 633e920969 Cleanup unused includes & remove remaining LUS umbrella includes (#6813) 2026-06-27 00:20:03 +00:00
Pepper0ni 210c5d5885 fix oversight on rising target ledge > pillar high water (#6818) 2026-06-27 00:17:02 +00:00
djevangelia 4b6678b82c Vanilla bugfix, Deku Shield burning drop crash (#6810) 2026-06-24 21:57:28 +00:00
Philip Dubé f95c23ef69 No FMA (#6811) 2026-06-24 19:28:09 +00:00
djevangelia 53b9db5b92 Vanilla bugfix, Hookshot with parent + Hookshot nospawn (#6805) 2026-06-24 18:32:03 +00:00
David Racine 8cf4ff5f14 fix: free look continues from forced view when leaving a fixed camera (#4953) (#6808)
When a scene-forced/fixed camera (e.g. the Spirit Temple boulder-room
alcoves, CAM_SET_PREREND_FIXED / Camera_Fixed3) drives the view, the Free
Look angles in play->camX/camY are left untouched while manualCamera stays
set. On exit, Camera_Free resumed from those stale pre-alcove angles, so
the camera snapped/reversed instead of following the player out.

This does NOT change the forced-camera behavior: the alcove still clamps
exactly as the game intends. It only fixes the hand-off back to Free Look:
when Camera_Free resumes after another camera function drove the previous
frame (detected via a frame-number gap), the free-look yaw/pitch are
re-seeded from the camera's current orientation so the view continues from
where it was left.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 16:24:19 +00:00
David Racine 4a875dca41 fix(menu): guard backend name lookups against unknown backends (#6806)
GetAvailableAudioBackends()/GetAvailableWindowBackends() can report a backend
that has no entry in the static name maps (e.g. a newly added or platform-
specific backend), which made audioBackendsMap.at()/windowBackendsMap.at()
throw std::out_of_range and crash. Look up with find() (single lookup) and skip
backends that aren't named instead of dereferencing a missing key.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 16:22:40 +00:00
Tim Schneeberger 0d2346d322 Reduce LUS header bloat & improve build speed (#6802)
* Avoid `randomizer_check_tracker.h` in widely used `randomizer.h` due to transitive `libultraship.h`/`UIWidgets.hpp` inclusion

* Avoid `libultraship.h` inclusion in heavily used `GameInteractor.h` header

* Remove unused libultraship includes

* Break huge unneeded transitive include chain (via UIWidgets.hpp)

This avoids that changing just UIWidgets.hpp, for example, would retrigger a rebuild of like half the project.

There were a huge transitive include chains, mostly via MenuTypes.h and UIWidgets.hpp. Because of that, I'm splitting UIWidgets into a second header file UIWidgetOptions.hpp, which can be consumed by MenuTypes.h. MenuTypes.h is split into BackendTypes.h to avoid pulling in Fast3D/Windowing/GUI stuff into unrelated code.

Example chain, one of many:
libultraship.h <- UIWidgets.hpp <- MenuTypes.hpp <- randomizer/option.h <- randomizer/item_location.h <- trial.h <- static_data.h <- SeedContext <- (basically all randomizer related sources, lots of other sources in Enhancement, more...)

* Avoid libultraship.h in Notification.h and ObjectExtension.h; these headers are also heavily used

* Add missing include

* Remove unused libultraship includes

* Include only ship/window/GuiWindow.h in GUI-related headers instead of libultraship.h

* Cleanup ConfigUpdater.h and playthrough.cpp

* Remove libultraship.h from Anchor.h and fix transitive dependencies in OTRGlobals.cpp

* Remove unused libultraship.h includes in Anchor code
2026-06-23 05:09:25 +00:00
Reppan e50d03dab0 Updates the CMC models so fade in should work now (#6766)
Also fixed some shading issue on normals
2026-06-22 20:53:05 +00:00
Philip Dubé c238f07450 fix regression, lost boss souls from HasItem (#6798) 2026-06-22 15:42:56 +00:00
Philip Dubé c5896c7efc Combine HasBossSoul & CanOpenOverworldDoor into HasItem (#6795) 2026-06-22 14:35:57 +00:00
jdperos e894b76182 Ignore clangd config (#6797) 2026-06-22 12:12:57 +00:00
Pepper0ni ec2a3d7aa2 Fix numerous Small Key Tracking bugs, excess items now more reliably turn into Blupees (#6750) 2026-06-22 05:20:33 +00:00
OtherBlue cb215ede87 Custom Bottle Contents (#6780) 2026-06-22 05:09:41 +00:00
Philip Dubé fd696b5e52 Fix ganondorf hint (#6789)
Location indexes need to be aligned, so rather than try erase them,
just avoid RC_UNKNOWN_CHECK crash by stubbing it to "an isolated place"
2026-06-22 05:08:49 +00:00
Jameriquiah 88006aee2a triforce shard scale fix (#6791) 2026-06-22 01:41:40 +00:00
Jameriquiah 6a51720194 Custom Hand DL's for each tunic take 3 (#6754) 2026-06-21 21:46:47 +00:00
Philip Dubé e4b6f1ab87 clamp settings (#6786)
avoids segfaulting if options changed between versions
2026-06-21 20:45:22 +00:00
jdperos 5926476496 Add an option to Rupee Dash to disable rupee reduction scaling (#6778) 2026-06-21 18:25:34 +00:00
Philip Dubé 1a203727fa update github actions (#6785) 2026-06-21 16:10:25 +00:00
nickel246 eb272ef689 Update Visuals for Ability Shuffles (#6783)
Adds new visuals for the open chest, climb, and crawl ability shuffles, including bespoke gi models more consistent with the rest of the game as well as unique icons for the item tracker
2026-06-21 13:15:54 +00:00
Pepper0ni 46f775ef86 fix a couple of small DMC oversights (#6784) 2026-06-21 13:08:57 +00:00
Philip Dubé 74e1d4c209 fix windows warning (#6781) 2026-06-20 19:40:22 +00:00
Philip Dubé c3c80df37d Don't prevent child from accessing Ganon's Castle or GV Tent (#6691)
With more shuffles & tricks these scenarios become common
2026-06-20 16:51:30 +00:00
Philip Dubé 728a4f1c80 Complete rando starting items, make icon based like save editor (#6723) 2026-06-20 16:24:44 +00:00
Pepe20129 c642e8c4d3 Remove all warnings on Windows and treat them as errors (#6733)
Update libultraship
2026-06-20 14:33:42 +00:00
Jameriquiah af6d465146 soh.o2r optimization part 1 (#6777)
Co-authored-by: PurpleHato <47987542+PurpleHato@users.noreply.github.com>
Co-authored-by: Dana Addams <6495350+danatheelf@users.noreply.github.com>
Co-authored-by: sitton76 <58642183+sitton76@users.noreply.github.com>
Co-authored-by: krm01 <krm01@users.noreply.github.com>
2026-06-20 12:02:44 +00:00
Reppan e9bdda9c84 Woops on FPS items (#6779) 2026-06-20 12:00:37 +00:00
Philip Dubé 446c6c4802 SkipIntro: still start at 12:00 in non-rando game (#6762) 2026-06-20 02:05:49 +00:00
Shishu the Dragon 65ffd5445b Ivan: Allow Ivan to break pots and crates while far from Link (#6768) 2026-06-19 19:43:53 +00:00
Jameriquiah 5a322418fe mod menu group select (#6649) 2026-06-19 18:13:17 +00:00
Philip Dubé 00a51c6507 fix imgui id conflicts (#6764) (#6771)
ImGui derives a control's ID from its visible label, and the menu search
page renders every widget in a single scope. Randomizer options that share
a label with an enhancement (e.g. "Blue Fire Arrows") therefore produced an
ID conflict on the search page.

Append a "##Randomizer" suffix to randomizer widget labels so their ImGui ID
is unique. The option's own name is left untouched since it is used as a
serialization key (spoiler logs, settings lookup); only the menu widget gets
the suffix.

SliderInt/SliderFloat draw their label themselves via ImGui::Text/CalcTextSize,
which (unlike ImGui's labeled widgets) don't strip a "##" suffix, so add a
visibleLabel with the suffix chopped off for display while keeping the full
label for the unique ID.

Co-authored-by: briaguya <70942617+briaguya0@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 15:03:46 +00:00
David Racine 497d34570b fix: free look releases the door peek camera (#6756)
* fix(camera): let free look release the door peek camera

After walking through a door, the door camera (CAM_SET_DOORC) held the view and
only handed control back once the player moved or pressed a button, so the right
stick did nothing until then. With free look the camera appeared frozen after
every door.

Treat right-stick movement as a release condition too, using the same stick
threshold as free-look activation.

* refactor(camera): move door-cam free-look release to a VB_SHOULD hook

Reimplements the door peek camera free-look release as a vanilla-behavior
hook instead of inline logic in z_camera.c, keeping the decomp file close
to upstream.

- Add VB_RELEASE_DOORC_CAMERA wrapping the existing Camera_Special9 release
  condition; the vanilla button/xzSpeed expression is left untouched.
- Move the right-stick / free-look threshold logic into a new enhancement,
  FreeLookDoorCamRelease.cpp, registered with COND_VB_SHOULD and gated on
  FreeLook.Enabled so the hook only exists while Free Look is on.

Behavior is unchanged from the previous fix; this only relocates the logic.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 13:58:12 +00:00
David Racine d912fd2c01 docs: document clang-format 14 setup and add an opt-in pre-commit hook (#6741)
Recent distros and Homebrew ship only newer clang-format, so contributors
can't easily get the version CI uses (14, matching the OoT/MM decomp).

- docs/FORMATTING.md: how to get a 14.x binary (apt, AUR, muttleyxd static
  binaries, uvx/pipx wheel, brew) and how to run the formatter.
- run-clang-format.sh: default to clang-format-14 but honor $CLANG_FORMAT so
  any matching binary works. Any 14.x produces byte-identical output here.
- .pre-commit-config.yaml: opt-in hook to format staged C/C++ on commit.
- README: link the new doc.

The llvm@14 formula is available on Linux too, so filing it under a
macOS-only heading was too narrow.

* Support spaced paths in CLANG_FORMAT; document run-clang-format.ps1

eval the clang-format invocation so CLANG_FORMAT can carry arguments
(uvx clang-format@14) or a quoted path with spaces without one breaking
the other. The NUL-separated file list reaches xargs over the pipe, so
filenames never pass through eval.

Document the native Windows run-clang-format.ps1 path alongside the Git
Bash/WSL route.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 03:22:28 +00:00
Jameriquiah 4ea17f6933 Dynamic Cosmetics Editor for Custom Models (#6429)
* dynamic cosmetics editor for custom models

* moved to separate cpp

* remove unused includes

* Update DynamicCosmeticsEditor.cpp

* sanitization cleanup

* better empty check?

* remove some duped logic

* new tab + better categories

* changes

* woops

* cleanup

* reset change

* refresh removal

* add CVarClearBlock

* remove ClearCustomCosmeticValueCvars

* fix merge conflict

* woops
2026-06-18 09:14:05 -07:00
David Racine 100bae3b9f feat(camera): option for free look to follow the default camera distance (#6757)
Free Look pinned the camera to the fixed "Camera Distance" setting, so it never
pulled in or out the way the vanilla camera does for the current situation.

Add an opt-in "Follow Default Camera Distance" setting (FreeLook.UseGameDistance)
that uses the game's per-mode default distance instead. The fixed distance slider
is hidden while it is enabled.

Closes #4050

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 13:34:29 +00:00
nickel246 0744396e0e Redo Fishing Pole Gi Model (#6759)
Replaces the gi model for the randomizer Fishing Pole to be more consistent with the rest of the game's gi models
2026-06-18 13:32:50 +00:00
Pepper0ni 6e6fee8871 Fix Nabooru despawning from spirit when collecting an unrelated check (#6751)
Fix nabooru cutscene skip setting the kidnapped flag too often
2026-06-18 13:32:04 +00:00
David Racine ebdd2c34c7 fix(audio): replace stray custom-sequence printf with a debug log (#6752)
The custom-sequence registration loop printed each assigned seqNum to
stdout via a bare printf, spamming the console with context-free numbers
on every launch. Convert it to LUSLOG_DEBUG and include the sequence name
so it is hidden by default yet useful for diagnosing music-pack loading.
2026-06-18 13:29:45 +00:00
Shishu the Dragon 37ac3d51d3 Ivan: Megaton Hammer rework (#6753) 2026-06-18 03:10:58 +00:00
Reppan d7393015f5 Fix Growdirection (#6761) 2026-06-18 03:07:25 +00:00
Jameriquiah bbb4c64991 fix id conflicts (#6765) 2026-06-18 03:07:09 +00:00
A Green Spoon fa44542e64 Remove duplicate prefixes for rocks and trees (#6749)
remove prefix except OGC
2026-06-17 20:26:27 +00:00
Jameriquiah 948b84d8fa asset purge (#6758) 2026-06-16 21:15:29 -07:00
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é cb71e22a79 9.2.3 Ackbar Delta (#6503) 2026-04-13 23:48:22 -07:00
Philip Dubé feb489cab0 Fix shopsanity soft lock (#6502)
GetForCurrentLanguage() defaults to MF_FORMATTED, appending MESSAGE_END (\x02) to output string

Revert using hint name for items in shops. Other merchants return GetHintMessage directly
2026-04-14 06:41:37 +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
Philip Dubé adb1e46ba9 fix bad args handling in extractor (#6501) 2026-04-14 01:00:16 +00:00
Philip Dubé 13ebc31ec7 9.2.2 Ackbar Charlie (#6494) 2026-04-13 14:12:37 +00:00
Jerom Venneker ca38dba192 Add missing Hint clarities back (#6477) 2026-04-13 03:39:30 +00:00
Philip Dubé 25eb09180d Revise Arrow Cycling (#6490)
1. simplify UI, flashing buttons are unnecessary
2. change arrow without drawing a new arrow
2026-04-12 23:03:46 +00:00
Philip Dubé d855742c2f Avoid over-allocating with texture interpolation (#6489)
Also remove interpolation with all zeroes & fix one interpolation direction
2026-04-12 18:51:04 +00:00
Philip Dubé 8513fd8800 fix cosmetic/audio randomizing options being seeded when they shouldn't be (#6481) 2026-04-12 18:25:05 +00:00
Philip Dubé 568813a2a4 Remove tooltip text referencing Let It Snow chests (#6488)
Was not preserved in chest revamp
2026-04-12 18:24:53 +00:00
Philip Dubé 7b7b799fad Make Lake Hylia water level switch in rando 10x faster (#6492)
35 seconds was an eternity
2026-04-12 18:24:14 +00:00
Philip Dubé 88099e6ebe Fix generation failure for Ganon's Castle MQ Fire Trial (#6487) 2026-04-12 13:27:06 +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
Pepper0ni 69ef35d258 Fix malon text and make the DMC jump unintuitive (#6479) 2026-04-10 21:45:23 +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
Jordan Longstaff 4122d8079e Faster bean planting (#6473) 2026-04-08 22:54:04 +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
Philip Dubé 40425c8c28 Fix seeded warp traps to be deterministic (#6469) 2026-04-07 16:31:41 +00:00
A Green Spoon 67191665df Add trick for jump to GTG eye statue (#6467) 2026-04-07 14:55:07 +00:00
Chris 695c05d339 Fix cooldown behavior for crystal and light switches, water gate (#6461) 2026-04-07 01:09:07 +00:00
A Green Spoon 77f2883510 use category adj for gi (#6466) 2026-04-07 01:08:32 +00:00
Malkierian 876d512a4b Fix Skip Planting Beans crash (#6463)
Move code to set beans as planted after getting the bean pack to rando item give handler.
2026-04-07 01:07:20 +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
OtherBlue 978a219213 add check for market balcony camera (#6464) 2026-04-06 04:04:58 +00:00
Malkierian b6f227961b Restore sub-100% values for speed modifier slider. (#6465) 2026-04-06 03:47:17 +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
Chris 14b464bab2 Bean guy text formatting and rando fixes (#6444) 2026-03-30 01:33:16 +00:00
Pepper0ni efc4086c6a Some Logic fixes (#6445)
- Visible Collision added to more Skulls in Crates for consistency with similar situations
- Visible Collision added to chests in crates in MQ fire and for more ways to hit the switch in MQ fire Lizalfos maze
- Allow any jumpslash to break the pot in red ice in ice cavern with visible collision.
- Add Visible Collision as a way to get the gold skull token in the rubble in 4F Gibdo room in MQ shadow
- Turns out, while you take fall damage if you backflip onto a building from GF above jail, the floor is perfectly fine.
- Granny's shop forgot to check the price of the item being sold for wallets.
2026-03-30 01:32:31 +00:00
Philip Dubé 7c5cccaf92 Dedupe settings.cpp (#6443) 2026-03-29 19:42:54 +00:00
Pepper0ni 972ed22167 reset possible ice trap models before populating item pool (#6442) 2026-03-29 18:05:56 +00:00
Chris 5494a81eb1 Fix market sneak hook (#6440) 2026-03-29 16:46:47 +00:00
Chris ebea14f297 Fix displayed token count (#6441) 2026-03-29 16:45:48 +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
Chris 4729eef7c8 Make item category adjustments more consistent (#6434) 2026-03-29 07:34:59 +00:00
chartergirl64 0b3ebd584d [bug fix] Changes item tracker capacity to recognize progressive chu bag limits (#6436) 2026-03-29 07:32:40 +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
Chris 1be7533675 Conslidate ganon2 hooks (#6432) 2026-03-28 17:52:55 +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é d1b7edfa7c 9.2.1 Ackbar Bravo (#6424) 2026-03-28 04:15:06 +00:00
Malkierian 6fea1821a1 Changed name of scarecrow's song enhancement and added to the description to clarify that it only skips song playback without the rando setting. (#6423) 2026-03-28 03:43:55 +00:00
Christopher Leggett 42ba25449e Make Infinite Ammo Cheat respect Progressive Bombchu Bag Capacities (#6421)
Cap infinite ammo for chus according to rando settings
Add bombchuUpgradeLevel to save editor
2026-03-28 02:58:41 +00:00
xxAtrain223 d1643aa196 LACS-Dungeons Check Availability (#6202)
* Fixes #5433, LACS-Dungeons beatable vs beat.

* Use CalculatingAvailableChecks in Logic::DungeonCount to check flags.
2026-03-27 19:40:34 -07: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
Philip Dubé 7edf44e170 add tts for Roc's Feather (#6418) 2026-03-27 02:07:11 +00:00
Pepper0ni 53dc7f43ba Fix DMC oversight (#6419) 2026-03-27 01:43:36 +00:00
Pepper0ni 5f139ef311 Hookshot ladder fixes (#6417) 2026-03-26 22:39:17 +00:00
Renzo Martin Poggio 88625c4350 Add most values from gz to Value Viewer (#6411) 2026-03-26 18:55:31 +00:00
Ali 99c1f23d5b fix: Fix macOS crashing on first install use (#6412)
With the new imgui OTR generation flow, macOS would crash when Ship
was run for the first time unless com.shipofharkinian.soh had already been created.
Move the call to CheckAndCreateModFolder() earlier in execution to prevent crashing.
2026-03-26 15:12:51 +00:00
Christopher Leggett 69e03dcc52 LUS bump to fix texture pack performance (#6416) 2026-03-26 15:11:22 +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
Christopher Leggett 4aa6e2ec28 Move retrieval of dbEntry after Actor_Destroy (#6410)
Before I had the change back to the placeholder actor id the Dummy
Player actors were spawned with, but since we grabbed the actorDB
entry before Actor_Destroy was called it didn't matter. Move it
and the requisite log statement to after Actor_Destroy.
2026-03-26 14:18:01 +00:00
Pepper0ni 94b650ec67 Fix several logic errors, create Hooskshot Bridge trick. (#6414) 2026-03-26 03:02:54 +00:00
Pepper0ni 57269c8e46 fix volv FTR logic (#6403) 2026-03-24 20:23:20 +00:00
Christopher Leggett 5e13570b83 Fix leak of shuffled fairy bottle-swipe behavior to other actors (#6405) 2026-03-24 19:37:21 +00:00
Christopher Leggett 5fe4680a20 Adds a more compact Clear button to Check Tracker search (#6401) 2026-03-23 20:07:45 +00:00
Philip Dubé 8c4d4738cc cleanup customequipment.cpp (#6396) 2026-03-23 16:27:42 +00:00
Philip Dubé c439d62137 Enemy rando: don't mutate ActorEntry (#6400) 2026-03-23 16:27:20 +00:00
A Green Spoon 2cfb0f73dc make non-cmc pot model major for shuffle clarity (#6398) 2026-03-23 15:46:03 +00:00
Pepper0ni c61c1c0fec fix oversight in well logic (#6397) 2026-03-23 15:45:48 +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
Philip Dubé 692ef416ee Fix RT_GROUND_JUMP_HARD description (#6391) 2026-03-22 19:56:22 +00:00
Philip Dubé 1949033f93 Ackbar 9.2.0 (#6389) 2026-03-22 18:10:12 +00:00
Malkierian c758f1ad84 Add option to mute notification sounds altogether. (#6390) 2026-03-22 17:52:53 +00:00
aMannus 1d9de8544a Implement toggle for allowing background inputs (#6214) 2026-03-22 16:44:24 +00:00
Jordan Longstaff 25ee1ec3ab Fix mouse camera Y-axis inversion (#6387) 2026-03-22 15:06:54 +00:00
Philip Dubé 96c4fef05c extraction: detect task crashing (#6386) 2026-03-22 06:03:41 +00:00
Philip Dubé b65c1c8317 Remove some unnecessary includes (#6385) 2026-03-21 20:22:32 +00:00
Pepe20129 4e82ea192a Enemy rando cleanup 2 (#6365)
Move stuff to main file, delete header & refactor lists
2026-03-21 18:46:15 +00:00
OtherBlue 2af5d21125 [Enhancement] Reworked targetting (#6322)
Adds an enhancement that changes targeting behavior, allowing

Switching targets with the chosen button combo
(In Switch mode) Untargeting by just pressing Z
2026-03-21 18:41:08 +00:00
Paul Schwabauer b6bf97e2f1 Fix ADPCM sample buffer overread in audio synthesis (#6364)
The sampleDataStartPad and aligned variables existed solely to satisfy
the N64 RSP DMA requirement that source addresses be 16-byte aligned.
On PC, aLoadBuffer is a plain memcpy with no such constraint.

The alignment dance caused aLoadBuffer to read up to 15 bytes before
sampleData and up to 8+ bytes past the end of the sample buffer. On
platforms with strict allocator guard pages (e.g. OpenBSD), this
triggers a SIGSEGV.

A second issue remains after removing the alignment dance: nFramesToDecode
is derived from sample counts (loopEnd), but size is not always a multiple
of frameSize. loopEnd and size are derived independently during encoding
and can disagree on the final partial frame, leaving nFramesToDecode *
frameSize exceeding the remaining bytes in the buffer.

Remove sampleDataStartPad and aligned entirely. Clamp the load to
min(nFramesToDecode * frameSize, audioFontSample->size - sampleDataOffset).
The ADPCM decoder operates on DMEM, so a partial last frame in DMEM
produces at most a negligible artifact at sound termination.
2026-03-21 18:34:18 +00:00
Philip Dubé 43f77c13fb Fix memory leaks in debugconsole & CrowdControl (#6383) 2026-03-21 18:32:55 +00:00
Christopher Leggett b8634f1d8b Fix numLoaded leak for Anchor (#6384) 2026-03-21 18:32:43 +00:00
Christopher Leggett 5c8ff76554 Custom Item Icons in Textboxes (#6343) 2026-03-20 16:37:44 +00:00
A Green Spoon 09b0fdbc93 Fix GV Waterfall Alcove Logic (#6380) 2026-03-20 16:07:14 +00:00
Christopher Leggett f2c34d8c11 Fix Entrance Rando Grotto Voidout Crash when voiding back to an area with a background image (#6379)
Hookify bgimage load cam check and add it to entrance rando
2026-03-20 03:40:35 +00:00
Sean Latham 38e684fda3 Fixed scrub text checking merchant hint setting (#6378) 2026-03-19 20:47:35 +00:00
Philip Dubé 8f51dfbaf4 Item Tracker: don't disable Personal Notes (#6376)
Personal Notes is awkward with Combo Button Hold, but should be allowed

This avoids disabling drop down when it could otherwise be changed to Main Window

Besides, some people might be able to type while holding button combos, long live artsey.io
2026-03-19 18:24:25 +00:00
Philip Dubé 04ed1825f0 Fix excluded locations regressions causing crash (#6375) 2026-03-19 15:50:52 +00:00
Philip Dubé 94a02dd53a Granny: don't sell blue potion / item without claim check when adult trade not shuffled (#6363) 2026-03-19 13:33:32 +00:00
Philip Dubé 6a9567b369 Fix rendering double digit key count (#6371) 2026-03-19 01:39:46 +00:00
Philip Dubé 9f6ffc9f2a z_en_ko.c: port over more improvements from decomp, add hook to fix vanilla forest quest state bug (#6373) 2026-03-19 01:38:56 +00:00
Philip Dubé 2f12677b25 Refactor Maps & Compasses coloring hook, remove PreFunc (#6351)
PreFunc for map/compass coloring & jabber nut coloring doesn't work in file select menu,
could make them always enabled in file select, but this seems simpler

Also fix map colors & ice cavern compass color
2026-03-19 00:14:37 +00:00
Pepper0ni a40ca58aba Misc logic fixes (#6370) 2026-03-18 17:38:43 +00:00
Philip Dubé 1f57f72acd Hookify Sunlight Arrows (#6366) 2026-03-18 16:23:33 +00:00
Philip Dubé d7b4e5a24d Fix heavy block in front of light trial having unending quake (#6367) 2026-03-18 03:14:34 +00:00
Philip Dubé 97eaa8b3e0 clean up comments (#6369) 2026-03-18 01:27:08 +00:00
Philip Dubé e7dce8e055 Keep StatsWindow fps rendered stable (#6368) 2026-03-18 01:21:09 +00:00
Philip Dubé 908ecbb795 Classify chest CMC for bombchus as lesser, not junk (#6349) 2026-03-17 17:41:43 +00:00
Philip Dubé 716f6bc042 Always call RandomizerCheckObjects::UpdateImGuiVisibility for locations view (#6352) 2026-03-17 17:41:20 +00:00
Philip Dubé 4e3b8d0b13 Fix happy mask salesman to check flags instead of inventory for SOLD OUT (#6355)
Fixes getting locked out of mask quest with mask select
2026-03-17 17:41:04 +00:00
Philip Dubé c906c71f71 Song from Malon: requires hylian jabbernut (#6357) 2026-03-17 17:40:37 +00:00
Philip Dubé e9ef09eee4 Fix RBA gauntlet colors to match console (#6359)
Also fix tracker to show golden gauntlets while wearing glitched gauntlets,
& don't crash save editor
2026-03-17 17:40:08 +00:00
Philip Dubé cefc9c02fa update gh actions, fix cmake whitespace (#6361) 2026-03-17 04:54:04 +00:00
Pepe20129 b35883e1f6 Enemy rando cleanup (#6327)
Change Actor_SpawnEntry to use VB
Move adult zelda collapse stalfos to a explicit hook
Move dark link to a explicit hook
Some more canRandomize that were not needed
Move bg_haka & bg_haka_tubo to explicit hooks
Move en_vali to an explicit hook
Move bg_mori_bigst to an explicit hook
Fix door opening before the enemies are killed
Remove `canRandomize` parameter
Move bg_haka_huta to explicit hooks
2026-03-17 04:53:33 +00:00
Philip Dubé c93b6188c8 Fix swimvoid in Zora River respawning in unloaded room (#6360)
Caused by spawning in Zora's River with entrance rando,
going downstream to different room, then swimvoid

Before the area by waterfall would not be loaded,
instead downstream still loaded
2026-03-17 04:14:18 +00:00
Philip Dubé e6d6b6d7d1 Fix loading wrong day/night scene after blue warp in rando (#6350)
When entering a dungeon like well at night, defeating a boss that changes time to day, Kakariko Village would load with daylight but act like it's night

Skipping the blue warp cutscene meant dayTime and nightFlag weren't properly in sync. Clear `gSaveContext.nightFlag` when adjusting time of day
2026-03-17 01:02:15 +00:00
Philip Dubé b15ac97dea Fix adult trade items spoiling during file load in rando (#6358) 2026-03-16 21:35:32 +00:00
Philip Dubé 45449623bb MAX_MQ_DUNGEON_COUNT (#6353)
Co-authored-by: ganesh1828
2026-03-16 19:01:33 +00:00
Philip Dubé 7899b6a048 Grass names: don't list prefix, prefix is added already (#6347) 2026-03-14 14:09:02 +00:00
A Green Spoon 614ec084fa update item list (#6340) 2026-03-09 20:08:00 +00:00
Matt Jakubowski 005044868a CC fixes (#6341) 2026-03-09 20:07:37 +00:00
Philip Dubé 7767cb6d39 Reduce trailing newlines in tooltips/logs (#6337)
Reduce trailing newlines in tooltips/logs, fix CanUse warnings
2026-03-09 00:27:47 +00:00
Pepper0ni 139381a0e0 Add Fire Trial to Fewer Tunic Requirements (#6336) 2026-03-09 00:21:31 +00:00
Philip Dubé 63859efa40 Don't refer to grass patch as bush (#6335)
Decomp refers to both kusa & wood02 as bushes, but for shuffles reserve bush for wood02
2026-03-08 19:15:16 +00:00
Philip Dubé 0f948efb51 Keep Nayru's Love & Farore's Wind in scarce item pool (#6334)
Consistent with n64 rando
2026-03-08 14:16:33 +00:00
Philip Dubé 99e60b81fd fix rando fire temple goron text formatting (#6332)
AutoFormat isn't suitable for text using escape codes, but unlike other texts this collection uses a mix of escape codes & our formatting codes. In such scenarios Format avoids mangling things
2026-03-08 04:28:55 +00:00
Philip Dubé 3174545749 Fix Ganondorf hint formatting (#6331) 2026-03-08 02:35:08 +00:00
Pepper0ni a1aa046814 ensure flag is correctly set for randomiser (#6330) 2026-03-07 18:22:42 +00:00
Pepper0ni 60ec65592a Add trick for Hookshotting ladders (#6329) 2026-03-07 18:21:04 +00:00
Pepper0ni 6deff6d749 Enforce mask select properly on completed (#6326) 2026-03-05 22:07:06 +00:00
A Green Spoon 92a1d260da Choose Link's Pocket Dungeon Reward Type (#6213) 2026-03-05 22:05:55 +00:00
A Green Spoon 6340ad3d5c Hookify Hookshot Reticle Changes (#6279) 2026-03-05 16:11:36 +00:00
Philip Dubé 63597ec633 Prevent winning Talon's game without str0. Prevent starting Diving Game without Zora Jabbernut (#6324) 2026-03-04 15:35:45 +00:00
Pepper0ni 7522f31cc8 Refactor DMC logic (#6294)
Refactors Death Mountain Crater logic to work in a more straightforward, if verbose, applies Tunicless navigation consistently, and paves over some small oversights.

As Child must be able to navigate DMC to some degree due to Child only checks, and logic should be consistent between Child and Adult, DMC no longer hard requires Tunic in any scenario. Instead checks and exits are split into regions, and each entrance has a "Fewer Tunic Requirements" heart count associated with it for each region which is then increased by 50% (rounding up) when FTR is off. This applies to both Child and Adult.
2026-03-04 00:44:56 +00:00
Philip Dubé b6df96c530 Add dependencies to docs/BUILDING.md (#6304)
Remove openSUSE because I can't figure out their package convention
2026-03-03 16:49:53 +00:00
Pepper0ni 40ad4fed82 Merge Visible Collision and Hammer Through Collision (#6317) 2026-03-03 04:04:57 +00:00
Philip Dubé 3882086677 Fix toggle speed modifier for walking (#6321) 2026-03-03 02:21:18 +00:00
Christopher Leggett 49aa33038d Restores Greg's textbox icon (#6320) 2026-03-03 00:38:01 +00:00
Philip Dubé b65acb9c9d fix typo (#6319) 2026-03-02 22:33:13 +00:00
Pepper0ni 91425a39ac Add Death Mountain Trail Child Climb Without Shield (#6318) 2026-03-02 21:13:19 +00:00
Philip Dubé f19ad1e75b timesaver_hook_handlers: use COND_HOOK (#6309) 2026-03-02 20:25:03 +00:00
Philip Dubé 2a335b1cd8 move speed modifier settings to cheats (#6277)
Combine into one speed modifier. Refactor config migrations. Add v6
2026-03-02 18:26:37 +00:00
Olivia!! 6f01d68c3c Fix missing logic for Medallion Locked Trials (#6314) 2026-03-02 07:10:58 +00:00
Philip Dubé d4c1118d1b Hookify DisableKokiriDrawDistance (#6305)
Also update some of Mido's code with latest decomp

Looking at decomp, EnKo doesn't set appearDist to 180.0
2026-03-02 02:10:04 +00:00
Shishu the Dragon 0d41af6978 Ivan: Fix intermittent crash with certain items (#6253) 2026-03-02 01:22:37 +00:00
Shishu the Dragon 460a098bec Dev: Mac/Linux compat for VS Code tasks (#6211) 2026-03-02 01:22:37 +00:00
xxAtrain223 2b650a4979 Stringify Randomizer Enums (#6223)
Moved randomizer enums from randomizerTypes.h to randomizerEnums.h and helpers
2026-03-02 00:58:24 +00:00
red 2c07edc4eb Add disable jabu wobble accessibility option (#6280) 2026-03-02 00:45:17 +00:00
Philip Dubé 0a946e5b9d Roc's Feather: avoid OOB access to gItemAgeReqs (#6297)
This fix is a bit blunt, but in the absence of a better idea it exists
2026-03-01 14:55:16 +00:00
Philip Dubé b07c64ecf9 Fix song of storms cutscene (#6310) 2026-02-28 23:51:13 +00:00
Philip Dubé a547d51abb Fix Malon text on Lon Lon Ranch in rando (#6308)
Missed in #6299
2026-02-28 16:33:16 +00:00
Pepe20129 d841357fd4 Update libultraship (#6283) 2026-02-28 16:30:30 +00:00
Pepe20129 8dd03ef097 Trap Improvements (#6302)
* Move some trap stuff to `Traps.cpp`

* Split `GetTrapTrickModel` into a function

* Split `ShouldJunkItemBeTrap` into a function

* Move `BuildIceTrapMessage` to `Traps.cpp`

* Allow ice trap messages to have the item name. Only for english for now due to article issues.
2026-02-28 15:53:05 +00:00
Jerom Venneker a393f48c7c Fix missable Malon check (#6299)
Added a case for the VB_MALON_RETURN_FROM_CASTLE vanilla behavior flag.
This lets Malon stay until you both get the egg and wake up Talon making the egg flag unmissable.
2026-02-28 14:57:27 +00:00
Philip Dubé 00ac1d566d spdlog: don't pass printf format string (#6307) 2026-02-28 04:20:09 +00:00
Jeffrey Crowell fcf7d4bd15 Add CoreAudio support (#6270) 2026-02-28 03:34:29 +00:00
Jameriquiah 9f56ef5090 unsheathe without slashing (#6216) 2026-02-27 19:34:56 -07:00
Philip Dubé d46bfd9716 Avoid auto saving in file select (#6298) 2026-02-28 00:48:34 +00:00
Philip Dubé 5a7bc9a459 Remove unnecessary includes of OTRGlobals.h in actor overlays (#6306) 2026-02-28 00:44:41 +00:00
Jameriquiah 6b51909aa5 tooltip otr to o2r (#6300) 2026-02-27 14:42:45 +00:00
Philip Dubé fe5dce24b5 Misc fixes for Shuffle Climb (#6296)
Rename deku tree grass on 2F, move logic accordingly
Include climb requirement in Dodongo's Armos Room without unintuitive jumps
Spirit typo had locked door before child climb linked to 2F instead of 1F
2026-02-27 02:36:51 +00:00
Christopher Leggett c3ffaa918d Don't autoformat altar hints twice. (#6295) 2026-02-26 23:26:52 +00:00
Philip Dubé b6cdc6c490 Fix kak backyard logic with shuffle climb (#6288)
Missed ladder to potion shop
2026-02-26 22:28:00 +00:00
Christopher Leggett d4d3e8bc0f Port Scrolling Texture Interpolation over from 2Ship (#6224) 2026-02-26 13:36:55 +00:00
coavins c2cf154e3e Update .vscode and .devcontainer files (#6246)
This commit makes some changes to the dockerfile to make it work again.
We install cmake from source in order to meet the minimum required
version specified in the CMakeLists.txt file. We build the same version
that is installed on the CI runner image.

We also build tinyxml2 from source because we need some cmake files
that are apparently not included in the apt package.
2026-02-26 01:24:22 +00:00
Pepper0ni 0e99b30e91 Add StartingAge limits to Closed Forest (#6282) 2026-02-21 17:50:36 +00:00
Pepper0ni 19df711123 remove castle moat spawn override (#6284) 2026-02-21 17:48:50 +00:00
Pepper0ni 0702b11b90 fix carpet man logic (#6285) 2026-02-21 17:48:15 +00:00
A Green Spoon d9ebce9f9f hookify additional reticles (#6278) 2026-02-17 20:08:06 +00:00
Pepper0ni 4cae79fd89 Change numbered tricks in preset and settings to use codes. (#6267) 2026-02-17 16:34:38 +00:00
Philip Dubé 8e1f1aea82 Fix location list (#6276)
Base has name in Flags column, this should not be null
Omit on unknown location to match other Location::Base rows
2026-02-16 14:53:32 -07:00
Philip Dubé e987cdae24 Fix misc issues (#6275)
fix #3990 #6055 #6145 #6271
2026-02-16 17:52:31 +00:00
Philip Dubé c63f57850f Deku Theater: better handling of timesaver being disabled for shuffle speak (#6265)
also skip first 2 seconds of scrubs deciding to pop out of ground
2026-02-16 16:21:35 +00:00
Philip Dubé b1fea3fe78 Bean Souls: don't lose flag when soul found in same location as bean patch (#6264) 2026-02-16 16:16:35 +00:00
Jordan Longstaff 0210374cc4 Enable missing music entries in audio editor (#5685)
* Enable missing music entries in audio editor

* Fix mislabeled tracks "Ocarina of Time" and "Seal of Six Sages" (mirrored in decomp)
2026-02-14 20:31:19 -07:00
anthony-barricelli d67dcb92f2 Bug Fix: Setting Start with OoT only gives Fairy Ocarina in Rando (#6227) 2026-02-15 01:19:31 +00:00
anthony-barricelli 3206425e1b fixes #6008 (#6229) 2026-02-15 01:17:53 +00:00
Malkierian e447143e48 Fix the extractor's assumption that found files are always in the working directory (x64/build/soh). (#6243) 2026-02-14 17:51:48 -07:00
Philip Dubé e6947c733c Business Scrubs: don't speak without jabber nut (#6255)
most speak checks conservatively only apply to Link initiating speech,
but didn't realize business scrubs speak unprompted & that would make deku jabber nut mostly useless

this doesn't apply to other scrubs (such as 123 scrubs), maybe in future we can block more, such as showing trade items
2026-02-15 00:48:00 +00:00
Philip Dubé 71c6f02a86 Big Poes hint: not Big Goron (#6256) 2026-02-15 00:36:16 +00:00
Malkierian b83ca39c98 Make tricks and locations lists re-evaluate after preset application. (#6263) 2026-02-14 15:58:26 -07:00
Pepper0ni 7eb5acf224 Fix wrong logic var in spirit shared (#6254) 2026-02-14 19:04:50 +00:00
A Green Spoon f31172c647 remove extra zf condition + add vb call (#6258) 2026-02-14 19:04:34 +00:00
Philip Dubé 1e1ba54cf6 Water Temple: fix waterfall GS logic (#6251) 2026-02-12 02:40:04 +00:00
Philip Dubé 92cb7f1594 fix crash when generating decoupled entrances with boss shuffle (#6189)
regression from ganon's tower shuffle
2026-02-10 19:22:40 +00:00
Philip Dubé 04eb8d1601 Forest: fix hover recoil trick using wrong operator (#6248) 2026-02-10 00:27:58 +00:00
anthony-barricelli 21a270c0b3 Bug Fix: MQ Dungeon setting not updating locations in Locations tab (#6228)
refresh locations if MQ dungeon setting changes + show MQ locations for "Selection Only"
2026-02-10 00:09:52 +00:00
Christopher Leggett 6a31700820 Fixes some Stone of Agony bugs and refactors it to a VB Hook (#6235)
Fixes #1727. Specifically, it removes a lot of old situations in which the stone of agony icon would've been hidden, such as shield and z-targeting. It will still be hidden while talking to an NPC or in cutscenes.

This does also introduce a subtle change in behavior. It now behaves a bit more like the Shard of Agony from the 3ds version. Instead of always being visible after the stone of agony is obtained, it is now hidden until you get close to a secret spot, appearing at a slightly further range than when the rumble would start.
2026-02-10 00:07:34 +00:00
A Green Spoon a2f2697d0d move EndFloatWindows outside of Begin (#6242) 2026-02-09 23:44:13 +00:00
Pepper0ni 293adcf9ee fix water level logic (#6247) 2026-02-09 23:34:33 +00:00
TheLynk 743103fbe9 Fix Logic in Deku Tree (#6244) 2026-02-08 22:20:16 +00:00
xxAtrain223 ce8dd7931c Added StartingAgeTime to RecalculateAvailableChecks. (#6237) 2026-02-08 21:58:37 +00:00
Philip Dubé 8fd41474c1 Fix logic thinking child exiting OGC GFF leads to castle grounds, not past gate (#6207)
Also fix grotto's age redirection
2026-02-07 20:21:14 +00:00
Malkierian 2bfae47b7f Change interior pot access to only check for viable methods. (#6233) 2026-02-07 08:41:08 -07:00
Christopher Leggett 65c7c3e4a9 Fix Heart Containers/Pieces Item Pool Calculation (#6226)
This calc ends up with 8 heart containers in the pool with the default 3 starting hearts, just like the 8 heart containers in the vanilla game. Changing starting hearts results in half of the remaining hearts being filled by heart containers and half of the remaining hearts being filled by heart pieces.
2026-02-06 02:18:06 +00:00
anthony-barricelli 2656c20f71 check if rando for quest kaleido menu panel (#6231) 2026-02-04 18:59:52 +00:00
A Green Spoon c021a0e8a2 Fix KD Without Bombs Trick Name (#6225) 2026-02-04 02:53:06 +00:00
Malkierian cc0941cc9f Attempt to correct Linux appimage behavior. (#6215)
Also make Windows rom search react to the set search path.
2026-02-01 11:35:54 -07:00
anthony-barricelli a4eacdd267 reset selected enemies list when clicking box for all enemies (#6219) 2026-01-31 15:00:06 +00:00
Shishu the Dragon 79d6f54be1 Fix segfault on quit (#6212) 2026-01-29 18:28:55 -07:00
Jordan Longstaff 23606325e6 Hookify Goron Pot (#6208) 2026-01-29 14:36:46 +00:00
Malkierian 8176e57144 Entrance Tracker Display Options (#6193)
Add all window display options to Entrance Tracker.
Apply hidden label filtering to combobox labels.
Remove tracker prefixes from check and entrance tracker preset load functions.
Remove all references to the menu bar, and the menubar source and header files.
2026-01-29 03:24:43 +00:00
Philip Dubé 473a77bbb2 Fix generation when Shuffle Speak disabled (#6206) 2026-01-28 18:22:21 +00:00
tortugaveloz a365446832 Basic Surround Sound support. (#6204) 2026-01-28 05:14:57 +00:00
Philip Dubé e2db315ffa Shuffle Speak (#5538)
Shuffles 6 languages (Deku, Gerudo, Goron, Hylian, Kokiri, Zora) to learn before being able to use Speak command with actors of that type. Other actors can still always initiate speech

Owl speaks anything (relevant for owl flights)
2026-01-28 05:14:14 +00:00
OtherBlue 16ee01404a small patch to match 2ship (#6197) 2026-01-26 03:26:16 +00:00
xxAtrain223 077fda8749 Stringify More Conditions (#6031) 2026-01-26 03:25:24 +00:00
xxAtrain223 f5264be192 Recalculate Available Checks from Current Region (#6165) 2026-01-26 03:23:47 +00:00
Christopher Leggett 983d04d362 Restores missing hint types that got lost in a merge (#6194)
Also fix bad text id on deku tree compass & fix dungeon map custom messages
2026-01-23 02:15:27 +00:00
Christopher Leggett 2af265dbce Add action shuffle icons to the item tracker (#6190) 2026-01-23 01:09:08 +00:00
Christopher Leggett dfba6b319b Fixes missing flag filter theme color (#6191) 2026-01-23 00:08:58 +00:00
Eric Hoey 894b8e6c86 Glitch-Aiding CS Tweaks/Fixes/Addition (#6192)
unskip door shutter cutscene

add second jabu OI door to glitch-aiding cutscenes

add dc boss door shutter

fix spirit mq switch

add comments
2026-01-22 14:27:07 +00:00
Philip Dubé 2da233c40b Improve forest temple poe cutscene hack (#6185)
ACTOR_EN_ST isn't reliable in enemy randomizer,
& in doorsanity it's desirable to trigger in first room
2026-01-21 19:50:23 +00:00
Philip Dubé 6b160fac1c Entrance/Location: remove Getuint32_t method (#6186) 2026-01-21 16:33:35 +00:00
Philip Dubé 78c68ae3d4 Fewer Tunic Requirements: remove lies (#6183)
Logic has been widening use of Fewer Tunic Requirements, making the description no longer accurate
2026-01-21 06:39:38 +00:00
Christopher Leggett fae74d4a5e Kaleido Tracker - Add new Shuffles (#6184)
Namely Swim, Crawl, Climb, Grab, Open Chests, and Bean Souls

Also added a page up and page down feature since the list is getting large. Assigned it to C-Left and C-Right. I'd like to put C-Down as "Jump to End" but the way things currently are I can't set C-Up as "Jump to Start" so I'll leave that one out for now.
2026-01-21 04:04:24 +00:00
Philip Dubé c9414b4d45 Misc fixes mostly related to custom text refactor (#6174)
fix goron messages in rando
also always include "IS_RANDO" in rando shipinit dependencies
don't use rando RNG, trying std::array
avoid sprintf, std::array not necessary
fix random rupee name crash
roll random traps: don't reuse rando rng
fix better bombchu typo
2026-01-20 20:55:24 +00:00
Pepper0ni 9991a95ab1 fix maps and compasses not being added to the pool (#6180) 2026-01-20 15:39:03 +00:00
aMannus c360b2dee4 Fix missing farores (#6176) 2026-01-20 01:11:52 +00:00
Philip Dubé 596b714fa4 Rando: Shuffle Climb (#5182)
Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-01-19 19:47:56 +00:00
Philip Dubé f52b653cfb Pot CMC (#6167)
Copied from https://github.com/HarbourMasters/2ship2harkinian/pull/1011
2026-01-19 19:40:09 +00:00
Fabien Romano 35039565df fix portArchiveVersion, DetectOTRVersion() use LocateFileAcrossAppDirs() so it needs filename as argument, not full path. (#6168) 2026-01-19 17:04:55 +00:00
aMannus 451820cac4 Fix skulltula messages (#6170)
Typo made the replace fail and then freeze the game on the autoformat step afterwards

Also fix water temple boss key text color
2026-01-19 15:19:02 +00:00
Garrett Cox d7981bf03f Some tweaks to anchor (#6166) 2026-01-19 04:38:48 +00:00
Philip Dubé a2245f7a47 Merge pull request #6164 from serprex/merge912
merge 9.1.2
2026-01-19 03:55:50 +00:00
Demur Rumed 7588734a42 Merge remote-tracking branch 'origin/develop-copper' into merge912 2026-01-19 02:35:48 +00:00
Philip Dubé be0f8fec9f Fix boot to debug warp screen not applying time savers (#6151) 2026-01-18 23:10:33 +00:00
xxAtrain223 651078f0b3 Added search boxes for Save Editor flags. (#6163) 2026-01-18 23:01:21 +00:00
Pepe20129 f541c3f4ad Shuffle Ganon Tower (#5078) 2026-01-18 22:38:01 +00:00
Philip Dubé c71cc68951 Update references to soh.otr/oot.otr/oot-mq.otr to .o2r (#6161) 2026-01-18 16:59:20 +00:00
ItsHeckinPat 04c5d50b3e Ported BtnSelector from 2ship (#6158)
Allows the rebinding for Resetting the game, Debug Map Select, and Debug No-Clip.
Also allows for Speed Modifiers to use the new button combos, instead of only the modifier buttons.
2026-01-18 16:01:39 +00:00
Shishu the Dragon eab279c0be Fix boot crash when v8 saves are present (#6157) 2026-01-18 14:29:57 +00:00
Philip Dubé 7006ef7404 Don't put unshuffled master sword into playthrough (#6146)
Includes some cleanup. Main point is:
1. hidden checks are not hintable
2. hidden checks should not be written to spoiler log
2026-01-18 14:29:06 +00:00
Philip Dubé 18b00e7bc1 Shuffle Grab (#5719)
AKA str0. Named in-game item Power Bracelet

Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-01-18 05:32:31 +00:00
Philip Dubé 60205ec0bd item list: bring back bean souls (#6156)
got lost somehow. also align columns
2026-01-18 05:13:45 +00:00
Philip Dubé 5e802f232d Fix ZR/LW entrance shuffle leak (#6154) 2026-01-17 21:00:35 +00:00
Philip Dubé f474a86928 Cleanup various things noticed while fixing rando generation / debug warp (#6152)
Adjust RAND_GET_OPTION to return option instead of option value
2026-01-17 20:34:24 +00:00
Philip Dubé 9ab58a8d07 Fix rando objects not randomizing (#6150)
Recent changes in init ordering had param hashmap built before static locations setup by hooks
2026-01-17 18:03:51 +00:00
xxAtrain223 1af0f4e395 Added Scarecrow Spawn to the Collision Viewer. (#6148) 2026-01-17 15:55:41 +00:00
Garrett Cox c36468ccbd Add bounce off walls toggle (#6110) 2026-01-17 06:11:17 +00:00
Philip Dubé 5a484331b6 Fix merge regression in Shuffle Masks (#6147) 2026-01-17 05:30:00 +00:00
Philip Dubé 44d351698b Shuffle Masks (#5536)
Future improvements can build on this,
giving masks abilities,
or adding checks for trading mask to someone
2026-01-17 05:00:03 +00:00
mckinlee 69f151e79d i control boom (#6136) 2026-01-17 00:26:31 +00:00
Philip Dubé 04df48944a Shuffle Open Chest (#5946) 2026-01-16 18:34:14 +00:00
Jordan Longstaff 6606eefbf1 Add option to disable Link spinning with the Goron Pot (#6138)
Make Link focus on Goron Pot instead
2026-01-16 13:55:36 +00:00
Reppan 6e4c010ffe [Custom equipment] fix fallback (#6113) 2026-01-16 04:08:09 +00:00
Philip Dubé 9c1a1728ee fix dev, broke due to incompatible PRs (#6144) 2026-01-16 01:59:36 +00:00
Malkierian 704ace8fd3 ImGui-Driven Extraction Flow and Progress Reporting (#5892)
This sets up the initialization process to allow for producing an ImGui window before ROM archives are made, so that ImGui can be used to prompt users along the O2R creation process instead of using the OS prompts, which aren't always usable even on some Linux devices, let alone other 2nd-party port platforms, as well as graphically report extraction progress.
2026-01-15 23:10:20 +00:00
Jordan Longstaff c7e4e8ccee Owl Travel cutscenes skipped as One Point cutscenes (#6141) 2026-01-15 21:02:27 +00:00
Christopher Leggett 7b3efb1e7b Upgrades Custom Messages to Hooks and ShipInit (#5101)
Defines the hook for OnTextLoad. Intercepts message loading with hooks. Adds file to handle the CustomMessage creation for items.

Handles Ice Traps, Triforce Pieces, and Custom Items. Handle maps, compasses, and keys

Converts gossip stone hints to hook. Handle one-off merchant messages. Convert scrubs and shop text and remove now-unused code

Convert Sheik and Ganondorf hint text. Convert skulltula people messages. Convert more static hints

Specifically Dampe, Greg, Warp Songs, Frogs, Loach, Fishing Pole, and Saria

Convert Biggoron Hint. Convert Big Poes hint. Convert Anju hint dialogue. Convert Malon hint. Convert Horseback Archery hints. Convert Mask Shop SIgn hint

Convert Lake Hylia Switch related text. Convert Shooting Gallery bow reminder message

Convert random rupee names. Convert Rando-Relevant Navi Enhancement. Convert Random Goron messages

Convert Injecting Skull token counts. Add in a way to AutoFormat with an item icon.. Fix some errors with skull tokens and apply icon

Convert heart container item counts. Convert Inject Item Count for Heart Pieces. Port Better Bombchu Shopping. Convert Market Sneak

Port Quit Fishing At Door and clean up unused stuff. Reintroduce missing Mysterious warp song hint

Make ShipInitFuncs static

Adds and uses per-item articles for get item messages

Fix Entrance Hints and port toggle from dev-copper
2026-01-15 20:57:13 +00:00
Fabien Romano c43139ebd6 fix build and run on OpenBSD (#6050) 2026-01-15 20:46:03 +00:00
Pepper0ni a92f07e1f1 Fix quest leak assert triggering in no logic (#6143) 2026-01-15 19:31:19 +00:00
Reppan 0d4986f2c3 Add Clear List button to Mod Menu (#6137) 2026-01-14 18:50:33 +00:00
Philip Dubé 6e6834af22 Rando: Shuffle Crawl (#5032) 2026-01-14 04:29:30 +00:00
Garrett Cox e149e09e08 Add GFX Stack to crash handler ext (#6130) 2026-01-12 05:11:42 +00:00
Pepper0ni 45fb38e309 Add Forest MQ Child Doorframe trick and fix some issues with courtyard Scarecrow (#6134) 2026-01-11 15:27:00 +00:00
Philip Dubé cb21208b4b Fix regression causing BGS to be missing from item pool (#6131)
Exclude from minimal item pool
2026-01-11 08:39:15 +01:00
Philip Dubé 5d2d7a7f09 Make Deku Tree's falling platform respawn in rando (#6128)
Relevant in Shuffle Climb, where getting to chest would not be able to logically use platform
2026-01-11 05:03:08 +00:00
Pepper0ni 31eefd57df Can always bribe the Hyrule Castle guard in randomiser. (#6129) 2026-01-11 05:02:37 +00:00
Paul Schwabauer cd8bd69c6e Fix undefined behavior (#6089)
Fix TimeSplit crash on empty name

Initialize OptionValue::mVal to fix undefined behavior

Fix undefined behavior in GraveHoleJumps surface type copy.
The memcpy was reading 33 SurfaceTypes regardless of the actual count,
causing a buffer overread since NTSC 1.0 only has 31 surface types and
later versions have 32. Now uses the actual surfaceTypesCount from the
collision header.

Fix undefined behavior in framebuffer OTR signature check.
Use calloc instead of malloc for framebuffer allocation to zero-initialize
the memory. This fixes Valgrind warnings about reading uninitialized values
when ResourceMgr_OTRSigCheck reads from framebuffer pointers to check for
the "__OTR__" signature.

Fix undefined behavior in fontLoadStatus initialization.
Use calloc instead of malloc when allocating fontLoadStatus array
to ensure zero-initialization. This fixes Valgrind warnings about
conditional jumps depending on uninitialized values in
AudioLoad_SetFontLoadStatus.
2026-01-10 21:31:21 +00:00
Philip Dubé 7627b0567b Bring back Big Poe Count option, lost in menu refactor (#6126) 2026-01-10 17:19:19 +01:00
Ralphie Morell 65227f65f2 Fix: Goron City Doors after Fire Temple (#5950)
fixes not being able to open doors when fire temple defeated before talking to Link the Goron

does not apply to rando
2026-01-10 14:53:07 +00:00
Pepper0ni 989bbe0dd0 fix logic issues and add an assert to detect wrong quest leaks (#6125) 2026-01-10 14:24:30 +00:00
aMannus 14a6bc1f85 Add Roc's Feather (custom item) to Rando Item Pool (#6035)
This adds Roc's as a fully implemented item into the randomizer pool. When both Roc's and Nayru's is found, you can swap between them on the pause menu

Many people have contributed to this over time, so huge shoutout to:
- kentonm, this item is directly inspired by their Roc's Feather from their romhack Indigo. Also provided me with their GI model, icon texture and animation to use.
- PurpleHato, for providing the images for the item name shown on the kaleidoscope.
- Dana The Elf, providing another custom animation for the item.
- Reppan, for helping to tweak the animation and exporting the GI model for me.
2026-01-10 12:59:32 +00:00
Paul Schwabauer 5bbc32c2d1 Fix memory leaks in MessageViewer and audio_load (#6124)
Add destructor to MessageViewer to free allocated buffers

Free individual strings from ResourceMgr_ListFiles before freeing the array in audio_load.c
2026-01-10 12:53:37 +00:00
Philip Dubé c2152a8713 RNG refactor: use in Extractor, only apply rand_init to default_state (#6123) 2026-01-10 12:41:56 +00:00
nclok1405 39b8aacdef "Targetable Gold Skulltula" Cheat (#5986) 2026-01-10 01:51:59 +00:00
Christopher Leggett ba0ecc59aa Fix RNG used by cosmetics editor to use same RNG method as rando (#5979)
Refactor ShipUtils to optionally take a state pointer.

Also changed random.h/cpp to be a wrapper around ShipUtils RNG providing a pointer to the rando state variable.

Use ShipUtils RNG for UIWidgets GetRandomValue

Fix AudioEditor to use ShipUtils RNG and its own state. It seems like shuffling Audio at the right time could have potentially messed with rando seed generation before this, but that bug, if it existed, should also be fixed with this.
2026-01-09 14:10:12 +00:00
Jordan Longstaff 9ca5ce0b53 Decomp import: rename timer-related functions and variables (#5896) 2026-01-08 18:56:01 +00:00
Philip Dubé feb1429471 RT_DISTANT_BOULDER_COLLISION (#6114)
also amp up RT_DMT_UPPER_GS
2026-01-08 17:23:15 +00:00
Garrett Cox 71a47559f7 Boot sequence adjustments (#6119) 2026-01-08 17:21:52 +00:00
Garrett Cox 4839e575b1 Add toggle for Link's sword trail (#6112) 2026-01-08 05:53:36 +00:00
mckinlee f72ee2b814 Fix Arrow Cycle Aim Drift (#6118) 2026-01-08 02:33:08 +00:00
Philip Dubé 307cd7f8cd Fix: RT_DC_JUMP merged into RT_UNINTUITIVE_JUMPS (#6117) 2026-01-08 01:19:15 +00:00
ItsHeckinPat 36ff9ec562 Change to drawItemId (#6116) 2026-01-07 20:46:47 +00:00
Philip Dubé e6fb9a6b64 mod_menu: fix overflow error (#6111)
size_t is unsigned, `>= 0` is always true
2026-01-06 22:10:04 +00:00
Philip Dubé e26269d1b3 RT_UNINTUITIVE_JUMPS (#6107)
consolidate novice jump tricks that are purely movement based

2 new jumps added: shadow boat jump, & forest trial child jump
2026-01-06 17:44:42 +00:00
Philip Dubé 443badee87 combobox: use ordered maps to avoid dropdown having non-determinisitic ordering (#6101) 2026-01-06 01:22:10 +00:00
Philip Dubé b5a7dc7c2d deku tree outside boss room logic fixes (#6088)
also fix some issues in Ganon's Castle, somehow lost shadow trial from refactor, bring it back
2026-01-06 01:20:55 +00:00
Philip Dubé 8783f4cff7 remove unused chest assets (#6090)
replaced in #6085
2026-01-06 01:10:39 +00:00
Jordyn Hardyman 708bd0739a disable fixed camera fix (#6106) 2026-01-06 01:09:58 +00:00
mckinlee 5b0d8be484 [Enhancement] Arrow Cycle (#6105) 2026-01-05 22:53:14 +00:00
Philip Dubé da5f28afd8 RT_BARINADE_POTS (#6102) 2026-01-05 17:49:44 +00:00
Philip Dubé 3f8aa32d12 beans: fix generation for starting with planted beans (#6099)
beans is 0 in inventory, confusing CanPlantBeanCheck,
check for this specific scenario in BeanPlanted to mitigate
2026-01-05 15:58:51 +00:00
nclok1405 7c4a3359f0 Enable Battle Music for Leever option + Modularize EnemyBGMDisable (#5985)
Add "Enable Enemy Proximity Music for Leever" option + Modularize EnemyBGMDisable
2026-01-05 15:07:05 +00:00
Philip Dubé 392bb6c59f RT_HOVER_BOOST_SIMPLE with recoil (#5910) 2026-01-05 04:00:57 +00:00
Philip Dubé ea40cb2c0c water logic: rename b1 jet pit, add hover boots across reverse basement jet pit (#6092)
region only represents being on side outside dragon room
2026-01-04 22:12:59 +00:00
aMannus 0e7212d939 Add modal to teach player about presets (#5903)
* Add modal to teach player about presets

* Change cvar to CVAR_GENERAL

* Update soh/soh/Enhancements/FileSelectEnhancements.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2026-01-04 13:28:06 -07:00
Reppan 34728efe6f Add back Junk-category (#6091)
accidentally removed `case ITEM_CATEGORY_JUNK:` from large crate switch case
2026-01-04 14:03:26 +00:00
nclok1405 2ed9c56ca3 Add some NTSC Player Name decoding in Save Editor (#5867)
This adds a new font, Noto Sans JP
2026-01-04 14:02:06 +00:00
Reppan a134d2c59a Update CSMC to CMC and update chests to other shuffles (#6085) 2026-01-04 13:37:41 +00:00
Garrett Cox 16249f0909 Fix check name conflict (#6087) 2026-01-04 03:05:43 +00:00
Pepper0ni db91fd37e1 Refactor GenerateItemPool and Ice Trap settings (#5773)
Refactors the item pool to fix numerous bugs, especially with Plentiful item pools, makes ship exclusive items affected by item pool, and changes ice trap settings to be more clear and consistent to the user.
2026-01-03 18:42:26 +00:00
Jordyn Hardyman 9af262c1bb Disable Fixed Camera Enhancement (#6083)
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
2026-01-03 18:07:19 +00:00
Philip Dubé 6c724a2c01 bean souls: prevent skulltula spawning from bugs (#6084)
woe is me thinking bugs reacted to soil patch instead of invisible actor
2026-01-03 16:43:52 +00:00
nclok1405 6a1fb1412b Add "File Number" to Save Editor (#5860) 2026-01-03 14:24:30 +00:00
nclok1405 5b275343db Allow Enemy Randomizer in Debug Save (#5841) 2026-01-03 14:19:06 +00:00
Reppan 7db2a97cea modding: alt equipment (#6062)
Implements object_custom_equip objects that adds more support to have items modified by modders without having to export with hands or do xml edits to load hands. This is autonomous if exported as a object_custom_equip

Also adds non existing DisplayList for items that originally did not have a DisplayList. Longshot and Big Goron Sword Sheath is 2 examples
2026-01-03 14:18:11 +00:00
Philip Dubé 07208fcf15 rando menu: fix shop price options (#6080) 2026-01-03 14:16:49 +00:00
Pepper0ni ba78039a69 add rang as a way to get the LW water rupees (#6082) 2026-01-03 14:14:31 +00:00
Philip Dubé e3865e28af Remove pseudo RGs: RG_EPONA, RG_SCARECROW, RG_DISTANT_SCARECROW (#6078) 2026-01-03 13:50:38 +00:00
nclok1405 1e55c1295f Add an option to disable Autosave Notification (#6081) 2026-01-03 13:48:58 +00:00
Philip Dubé 6953edecee rando menu: bring back shuffle grass (#6079) 2026-01-03 04:27:22 +00:00
Philip Dubé 7748939504 RT_GV_CHILD_TENT (#5823)
Also add logic for RT_GV_CRATE_HOVERS, which already had a trick entry, but no logic
2026-01-03 03:02:38 +00:00
Pepper0ni 5fea53ed56 Spirit refactor to handle reverse entry (#5456) 2026-01-03 00:52:02 +00:00
Philip Dubé 1c4b78d35e Medallion Locked Trials: logic (#6077) 2026-01-03 00:41:03 +00:00
Philip Dubé 657b78a016 refactor water (#5916)
Co-authored-by: Pepper0ni
2026-01-02 23:58:32 +00:00
Pepper0ni 7d6c6f032e Refactor fire (#5868) 2026-01-02 23:13:44 +00:00
Philip Dubé 480a1658b1 randomizer: bring back item pool options (#6076) 2026-01-02 22:36:51 +00:00
Pepper0ni ef2b4cd42c fix an assert and va_arg linux crash (#6075) 2026-01-02 20:55:30 +00:00
Philip Dubé 6f060a9222 jabu mq: fix copy paste error, rename MQ_EAST_ROOM to MQ_NEAR_BOSS_ROOM (#6074)
renaming matches vanilla naming convention
2026-01-02 20:18:54 +00:00
Philip Dubé 31824afa4a fix compiler warnings (#6072) 2026-01-02 20:17:44 +00:00
xxAtrain223 c0ba618f60 Set CurrentRegionKey when checking an entrance. (#6073) 2026-01-02 18:32:05 +00:00
Garrett Cox 10680f53e7 Fix syncing bombchuUpgradeLevel (#6071) 2026-01-02 10:35:45 -06:00
Philip Dubé 88494169e6 Add option for Navi to hint location of boss key at boss doors (#6058) 2026-01-02 16:23:15 +00:00
Philip Dubé 33758e49db Medallions Locked Trials (#6046)
Adds rando option to bar doors to trials until corresponding medallion acquired
2026-01-02 15:17:57 +00:00
Glought dd9d63eecb Add the ability to Randomize Music and Sound Effects and Cosmetrics based on Rando File Seed. (#5970)
Add the ability to Randomize All Music and sfx based on file Rando seed.
Add the ability to Randomize All cosmetics based on file rando seed.

Add combobox for selection:
- Disabled: No music or sound effects are randomized.
- On New Scene: Randomizes when you enter a new scene.
- On Rando Gen Only: Randomizes only when you generate a new randomizer
- On File Load: Randomizes on File Load.
- On File Load (Seeded): Randomizes on file load based on the current randomizer seed/file.

Removed checkboxes.
2026-01-02 15:01:01 +00:00
Sirius902 0bd08d626a Rando: Add Triforce Hunt GBK setting (#5739) 2026-01-02 14:55:34 +00:00
Glought 31db9e4ade Added "firstInput" stat and repurposed the "fileCreatedAt" stat. (#6070)
- The "firstInput" stat is set on first input in game. Used for RTA
  Timing.
- The "fileCreatedAt" stat is now set when then save file is created
  (After the player is done entering the file name). Useful for seeding
  non rando randomizers like Mirrorworld, Enemy Randomizer, extraTraps,
  etc.
2026-01-02 14:39:42 +00:00
Garrett Cox f666444876 Fix issue when syncing skipped checks (#6068) 2026-01-01 21:20:30 -06:00
Philip Dubé d3a6288c7e Combine check identity structs into CheckIdentity (#5852) 2026-01-02 01:51:03 +00:00
Philip Dubé ff0c309b5a shuffle scrubs: use object extensions (#5853) 2026-01-02 01:08:39 +00:00
Christopher Leggett 14a241ed3f Integrate Randomizer Window into Modern Menu Properly (#6017)
Also comes with a menu reorganization
2026-01-02 00:46:22 +00:00
Pepe20129 9e6c9a478e File Select More Info Update (#5998)
massively improves the "File Select More Info" enhancement:
- Moves it to a separate file
- Moves it to VB
- Adds triforce pieces & fishing pole
- General cleanup
2026-01-02 00:28:33 +00:00
Philip Dubé d227292935 Combine mq/vanilla flame wall skip tricks, include child skipping wall in MQ lobby (#5814)
Checked that logic past fire wall handles child logic

To get past without taking damage:
Z-target wall to left of fire wall. Turn left. 2 ESS turns right. Side hop
2026-01-01 23:08:42 +00:00
Philip Dubé 1463e76ef7 refactor jabu (#5671) 2026-01-01 22:58:15 +00:00
xxAtrain223 c0d9fe876c Remove Here Parameter and Rename to AnyAgeTime (#5714) 2026-01-01 22:16:50 +00:00
Reppan 1a9ea03e00 Make Custom Tunic Local (#6065)
* Make Custom Tunic Local

* Guard against Anchor

* Make Pause Menu Model treated as a Local
2026-01-01 15:36:29 -06:00
Garrett Cox 2e5a985745 Add support for warp points in the dev tools, as well as a boot to warp point option (#6037) 2025-12-31 17:31:55 -06:00
Garrett Cox bc47a9ec6f Bump LUS (#6061) 2025-12-31 17:26:41 -06:00
Garrett Cox 7ca93e93be Back-port fixes from holiday build (#6060) 2025-12-31 17:08:30 -06:00
Philip Dubé 8cc02fd235 Add missing extension trick to Shadow MQ, fix 2 logic mixups in GTG (#5983)
Also allow Giant's Knife to logically hit these switches

Ganon's Castle diamond switch can be hit with bomb by setting bomb down instead of shield dropping
2025-12-31 02:54:41 +00:00
Philip Dubé 8ee637880d RT_GTG_LAVA_JUMP (#5987)
Distinct from unintuitive jumps in that I'm unable to get it consistently even after trying a couple times,
even after trying to find some mix of ledge grabbing & ESS turning to try at least put it down to roll timing
2025-12-31 01:29:56 +00:00
Philip Dubé d41273f34b Shuffle Bean Souls (#5833) 2025-12-31 01:27:37 +00:00
OtherBlue c688923272 [Enhancement] Unequip C-items (#6043) 2025-12-31 00:36:33 +00:00
Jordan Longstaff 7d6a82be4f Convert "Big Four" hook register functions to init functions (#5984) 2025-12-30 23:34:13 +00:00
aMannus e96503c0bd Fix custom tunics not updating on scene change (#6026) 2025-12-30 23:21:53 +00:00
xxAtrain223 fbfef95617 Add GetCheckPrice (#5718)
* Removed LocationAccess::CanBuy and added GetCheckPrice.

* Made the Magic Bean Salesman a merchant.

* Replaced CanBuyAnother with GetWalletCapacity and inline comparison for easier readability.
2025-12-30 22:37:28 +00:00
Philip Dubé cd08f343a6 more perm flags (#5676)
1. deku tree MQ web
2. dodongo's cavern MQ silver rupees
3. jabu lobby switch
4. forest well, lobby eyes, MQ web
5. fire MQ lobby torches
6. spirit MQ lobby silver rupees

adjusts forest MQ logic
2025-12-30 22:31:38 +00:00
Philip Dubé 82b279f55e bushsanity (#5941) 2025-12-30 20:24:00 +00:00
Philip Dubé 5822c33268 RT_ICE_STALAGMITE_CLIP, RT_ICE_STALAGMITE_HOOKSHOT (#5909)
Coming back from block room to hub, the clip is different, instead it's by wall that both ages can get past with pretty specific sidehop. This is pretty niche since generally logic isn't doing reverse ice cavern
2025-12-30 20:11:27 +00:00
nclok1405 6e27cd7107 Add Gerudo Fighter to Enemy Randomizer (#6005)
Being captured by random fighter behaves like being captured by a wall master
2025-12-30 19:45:19 +00:00
Philip Dubé f273ea4294 RT_WATER_IRON_BOOTS_LEDGE_GRAB (#6009)
https://www.youtube.com/watch?v=x8k3XJHiMOs
2025-12-27 12:18:15 +01:00
Philip Dubé a1f9971c12 RT_BIG_SKULLTULA_PAUSE_LIFT (#6014) 2025-12-27 12:17:02 +01:00
Philip Dubé 9c24ccec1a Fairysanity: allow using bottle (#6021)
Based on fishsanity, which is refactored with hooks

Also open up logic catching fairies at oasis if player has bottle
2025-12-27 12:15:31 +01:00
Philip Dubé 1c21608a95 refactor windmill (#6027)
split upper area into region rather than using logic val to manage access from below

2 fixes: adult can groundjump up the middle, child can make the trick with hammer
2025-12-27 12:13:47 +01:00
Philip Dubé 58e851dd2b Fix mixed up chest names in shadow MQ falling spikes room (#6047) 2025-12-27 12:12:51 +01:00
Jerom Venneker b24d266974 Reverted removal of 'ClearItemLocations' to fix #6036 (#6044) 2025-12-27 12:10:31 +01:00
Garrett Cox cc21163765 Fix rupee overflow in StartingItemGive (#6039) 2025-12-27 12:09:43 +01:00
Philip Dubé 3fa4af2cea Refactor Forest (#5673)
* refactor forest

* feedback

* more feedback

* MQ NE island logic

* no kids allowed

* split west corridor

* split up block puzzle room

* comment mapping poe sister colors

* generalize well swim, make novice

* hammer works

* upstream bug fix

* Replace corridor with hallway, rename east/west hallway regions to be based on their red/blue doormats

also change south hallway to overgrown hallway, & replace south/north sides with lower/upper sides
2025-12-21 10:30:43 -07:00
Philip Dubé 9edb4e3c36 refactor dodongo's cavern (#5855) 2025-12-15 12:45:46 -07:00
Philip Dubé 971c3c5c94 refactor ganon's castle (#5664) 2025-12-15 12:42:02 -07:00
Philip Dubé e9aad17d17 refactor deku tree (#5854) 2025-12-15 12:41:53 -07:00
Philip Dubé 7176960a0e refactor: split out location_access/root, & combine bottling events (#5821) 2025-12-14 16:48:42 -07:00
Philip Dubé f83f73d671 Fix miss in previous hookify cosmetics editor PR (#6006) 2025-12-04 09:14:58 -07:00
Christopher Leggett 7e829a0780 Add in Progressive Bombchu Bags (#5836)
* Adds new Progressive Bombchu Bags option

Also changes existing code to account for Bombchu Bags becoming
a drop down with 3 values instead of a checkbox

* Handle the new lower capacities for ammo refills

* Handle what happens when receiving a bombchu bag

* Remove the trick name of Progressive Bombchu Bag

Since, you know, that's an actual thing now.

* Implements Bombchu Bag handling next to Progressive Bombchu Handling

* clang-formatting

* Add extra bag for plentiful items

* Address review comment

* Move bombchu upgrade level to gSaveContext and add save/load

* Use logic's saveContext for correct logic calculations

* Remove RG_PROGRESSIVE_BOMBCHU

* Fix Bombchu Refill obtainability

* Don't add normal chus to the pool if chu bags are on.

* cmake-format

* Properly reset bombchuUpgradeLevel on savefile init

* Fix error with va_arg on linux

* Fixes small error in the Bombchu Bag description

* Fix bug with bombchu obtainability

* clang-format

* Fix infinite bombchu text

* fix clang-format
2025-12-04 15:14:32 +00:00
nclok1405 098cb70460 Disable Screen Flash for Finishing Blow option (#5988) 2025-12-03 19:15:49 -07:00
Garrett Cox 9401d4fd71 Stop hiding key counts with skeleton key, and grant all keys (#5932) 2025-12-03 09:00:18 -07:00
Christopher Leggett 280455db42 Improvements to Custom Kaleido Menu (#5997)
* Use game over textures instead of save textures

* Improves custom kaleido menu.

Specifically:

1. Changes textures to the Game Over screen textures, which look
the same but doesn't have "SAVE" at the top.

2. Adds a cursor on the left, doesn't currently do anything
other than make it slightly clearer that you can move up and down
and scroll, but opens the door for more menu-ing/toggling capabilities
later.

* Add fishing rod to kaleido menu

* Adds skeleton key to kaleido menu with placeholder icon

* More condensing of kaleido menu + add overworld keys

* clang-format
2025-12-03 08:58:52 -07:00
Jordan Longstaff b649f5ed52 Apply ImGui scaling when using presets (#5991)
* Apply ImGui scaling when using presets

* Make ImGuiScale function do nothing if scale setting is unchanged
2025-12-03 08:58:43 -07:00
nclok1405 17f7c3e8f5 Add Expand All/Collapse All buttons to Hook Debugger (#6002) 2025-12-03 08:58:32 -07:00
nclok1405 42282c804e Better Debug Warp: Remember Link's Age and Day/Night Settings (#5981) 2025-12-03 08:58:24 -07:00
Philip Dubé c24b2d74d5 hookify cosmetics (#5900)
also make goron neck searchable
2025-12-03 08:58:16 -07:00
Jordan Longstaff 8aa7b2fc71 Modularize Hyper Enemies hook (#5968)
* Modularize Hyper Enemies hook

* Use extern "C"

* Make mod file self-contained
2025-12-03 08:58:06 -07:00
Garrett Cox a2e4e4d417 Check tracker improvements (#6000) 2025-12-03 08:57:15 -07:00
TheLynk 4366da631b Fix logic gf (#6003)
* Create AutoSyncFork.yml

* Off

* Delete .github/workflows/AutoSyncFork.yml

* Fix Logic In GF
2025-12-03 08:56:58 -07:00
Garrett Cox 9cd31099e2 Additional Anchor functionality: (#5999)
- Returned support for custom tunic colors
- Ocarina playback now audible
- Fixed movement translation issue when climbing or going through crawlspaces
- Fixed issue preventing some items from being visible in Dummy hands (namely ocarina)
- Fixed stick length not correctly syncing
2025-11-30 18:17:00 -07:00
Jordan Longstaff bc48fa84fd A bit of cleanup on multiple hooks (#5879)
* A bit of cleanup on BGS hook

* Cleanup on a few more hooks, fix itemId ref

* Use direct pointer to params

* Revert item receive ID hook setup

* Remove callbacks from menu GUI

* Add comments explaining conditions of permanent loss methods

* Move custom skeletons hook to subfolder

* Clang format

* Shorten comment

* Remove unnecessary re-register function call
2025-11-25 17:00:09 +00:00
Jordan Longstaff da6cf439d6 Modularize equipment hand patch hooks (#5876)
* Modularize equipment hand hooks

* Remove unnecessary include

* More efficient hammer hand hook

* More efficient equipment visible hook

* Add declarations of patching/resetting functions up front

* Remove forward declarations

* Make mod file self-contained
2025-11-24 18:48:56 +00:00
Jordan Longstaff 0f41ecb145 Modularize Hurt Container mode hook (#5874)
* Modularize Hurt Container mode hook

* Hook condition was wrong - fixed it

* Change type of hurtEnabled for clarity

* Change type back to bool

* Add VB hook

* Don't duplicate health capacity modifier calculation

* Add constants, replace magic numbers

* Clang format

* Publicize more health unit macros

* Make mod file self-contained
2025-11-24 17:30:34 +00:00
Pierre-Alain BESSERO 3e6b590db4 Added new trick (#5972)
* Added new trick

Skip Dodongo Cavern by using Bombchus to light the eyes

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/dodongos_cavern.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/dodongos_cavern.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-11-24 13:50:56 +00:00
Philip Dubé 4aebdab43d refactor gtg (#5662) 2025-11-19 08:56:21 -07:00
Garrett Cox eca9eac0cf Use OE for storing client ID, remove remaining game state touch point in network thread (#5969) 2025-11-16 08:10:07 -06:00
Malkierian 05233487f8 Don't try to register the Anchor widgets when not built with networking enabled. (#5964) 2025-11-14 14:28:49 -07:00
Malkierian 16909c47cd Merge pull request #5963 from HarbourMasters/develop-copper
Copper -> Dev fix (#5962)
2025-11-14 12:46:51 -07:00
Malkierian 623a7e4f7b Merge pull request #5961 from Malkierian/develop-copper
Copper -> Develop 11/14
2025-11-14 12:29:38 -07:00
Garrett Cox 060878fb2e Anchor (#4910)
This is far and away the proudest thing I have been apart of in the Zelda community. Thank you to everyone who either directly or indirectly contributed to this effort. If I forgot to co-author you and you were involved, know that I simply forgot but still appreciated your help! Also thank you to the literal tens of thousands of people who have played Anchor, providing feedback and bug reports. Super thrilled to finally have this merged into the main Ship of Harkinian experience.

Co-authored-by: mattman107 <65982675+mattman107@users.noreply.github.com>
Co-authored-by: David Chavez <david@dcvz.io>
Co-authored-by: MelonSpeedruns <melonspeedruns@outlook.com>
Co-authored-by: aMannus <mannusmenting@gmail.com>
Co-authored-by: Malkierian <malkierian@gmail.com>
Co-authored-by: Caladius <Caladius@users.noreply.github.com>
Co-authored-by: Patrick12115 <115201185+Patrick12115@users.noreply.github.com>
Co-authored-by: PurpleHato <47987542+PurpleHato@users.noreply.github.com>
Co-authored-by: balloondude2 <55861555+balloondude2@users.noreply.github.com>
Co-authored-by: lilacLunatic <8488221+lilacLunatic@users.noreply.github.com>
Co-authored-by: Felix Lee <flee135@users.noreply.github.com>
Co-authored-by: Sirius902 <10891979+Sirius902@users.noreply.github.com>
2025-11-14 11:04:09 -07:00
Jordan Longstaff cd1d619c9f Modularize permanent loss mod hooks (#5948)
* Modularize permanent loss mod hooks

* Make RegisterBonkDamage static

* Remove a couple of errant includes

* Fix more errant includes
2025-11-14 09:30:04 -07:00
Malkierian 1e1a47c263 Load metadata without LoadFile() on startup (#5817)
* Load metadata without `LoadFile` on startup.
Implement file type entry.

* Fix non-Windows?

* clang
2025-11-13 19:05:51 -07:00
Pepper0ni c005248129 Refactor zoras river logic (#5907)
* refactor zoras river

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/overworld/zoras_river.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-11-13 13:03:55 -07:00
Pepper0ni 75c9c579a4 fix invisible blades (#5957) 2025-11-12 08:11:00 -07:00
Philip Dubé a31b7d9ae7 refactor shadow logic (#5650)
* refactor shadow logic

* ground jump / hookshot extension

* with groundjump invisible spikes room can be cleared, collecting silver rupees with backwalked backflips with hover boots

* nb
2025-11-11 19:32:36 -07:00
Pepper0ni 25be804841 Refactor BotW logic (#5649)
* Update well logic for doorsanity

Co-authored-by: Demur Rumed <junkmute@hotmail.com>

* clang

* Apply suggestions from code review

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

* Add adult + irons + hook to getting to west ledge

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

* post merge fixes

* post merge fixes

* renames and ground jumps

* MQ updates

* address reviews

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

* Update soh/soh/Enhancements/randomizer/location_access/dungeons/bottom_of_the_well.cpp

Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>

---------

Co-authored-by: Demur Rumed <junkmute@hotmail.com>
Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
Co-authored-by: Pepe20129 <72659707+Pepe20129@users.noreply.github.com>
2025-11-11 19:32:25 -07:00
Garrett Cox 36cd3a27e2 Fix menu path reassignment (#5949) 2025-11-10 13:18:26 -06:00
Garrett Cox 754d79a86e Tweaks to ENABLE_REMOTE_CONTROL usage & sail hooks (#5928) 2025-11-10 10:33:28 -07:00
Jordan Longstaff 33929534f5 Modularize boss defeat timestamp hook (#5886)
* Modularize boss defeat timestamp hook

* Remove unneeded includes

* Move hook into GameplayStats folder

* Delete duplicated hook file
2025-11-10 10:29:53 -07:00
Jordan Longstaff c0848ccba8 Modularize custom skeleton hooks (#5931) 2025-11-09 18:27:52 -07:00
Jordan Longstaff a3e540ebfe Modularize Mirrored World mode hook (#5930)
* Modularize Mirrored World mode hook

* Remove IS_RANDO from registration conditions

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>

---------

Co-authored-by: Philip Dubé <serprex@users.noreply.github.com>
2025-11-09 18:27:45 -07:00
Garrett Cox 5249cd89df Stop creating timesplits file on init, and gitignore it (#5933) 2025-11-08 15:51:24 -06:00
Garrett Cox 8073f96856 Various hooks to support anchor (#5929) 2025-11-08 15:51:09 -06:00
Garrett Cox 66a9c7a218 Add merge strategy for preset sections (#5935) 2025-11-08 15:50:41 -06:00
Malkierian 43118146e4 Merge pull request #5927 from Malkierian/copper-dev-2
Copper -> Develop 11/6
2025-11-06 18:29:25 -07:00
Malkierian be70bb3296 Merge branch 'develop-copper' of github.com:Malkierian/Shipwright into develop 2025-11-06 17:01:44 -07:00
Philip Dubé 156a1a7816 refactor ice cavern (#5661)
* refactor ice cavern

fixes blue rupee logic at beginning
makes structure usable for doorsanity & silver shuffle

* feedback

* feedback2

* feedback
2025-11-01 11:43:47 +01:00
Malkierian 4e913cc094 Merge pull request #5901 from Malkierian/copper-to-dev
Copper -> Dev 10/29
2025-10-29 14:41:56 -07:00
Malkierian 9f089aa6f8 Merge branch 'develop-copper' of github.com:Malkierian/Shipwright into develop 2025-10-29 13:54:22 -07:00
aMannus 7ffd01f133 Let shuffled fairies spawn on link's location instead (#5890) 2025-10-28 20:54:00 -07:00
Jordan Longstaff 248fe8cb13 Modularize Reset Navi Timer hook (#5872)
* Modularize Reset Navi Timer hook

* Remove unnecessary sceneNum param name
2025-10-25 13:25:50 -07:00
Jordan Longstaff c4f9712eff Modularize scene-specific Dirt Path fix (#5871)
* Modularize scene-specific Dirt Path fix

* Use macro in fix function

* Condition hook on fix being enabled

* Rename update function
2025-10-25 13:25:33 -07:00
Jordan Longstaff cadae90c81 Modularize Floor Switches fix hook (#5870)
* Modularizes Floor Switches fix hook

* Remove unused include for z_obj_switch.h

* Convert to ID hook
2025-10-25 09:40:46 -07:00
1875 changed files with 108935 additions and 78331 deletions
+55 -3
View File
@@ -1,13 +1,65 @@
FROM mcr.microsoft.com/devcontainers/cpp:ubuntu-22.04
RUN apt-get update && apt-get install -y libsdl2-dev libsdl2-net-dev libpng-dev libglew-dev ninja-build
RUN apt-get update && apt-get upgrade -y \
&& rm -rf /var/lib/apt/lists/*
# download and install cmake from source
# this ensures we use the same version as in the github runner image
RUN apt-get purge -y cmake || true
ARG CMAKE_VERSION=3.31.11
# download
WORKDIR /tmp
RUN curl -fsSL \
https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}.tar.gz \
-o cmake.tar.gz \
&& tar -xzf cmake.tar.gz \
&& rm cmake.tar.gz
# build and install
WORKDIR /tmp/cmake-${CMAKE_VERSION}
RUN ./bootstrap \
--prefix=/usr/local \
--parallel=$(nproc) \
&& make -j$(nproc) \
&& make install
# clean up
WORKDIR /
RUN rm -rf /tmp/cmake-${CMAKE_VERSION}
# download and install tinyxml2 from source
# this ensures we have the cmake files needed for find_package
RUN apt-get purge -y libtinyxml2-dev || true
ARG TINYXML2_VERSION=11.0.0
# download
WORKDIR /tmp
RUN curl -fsSL \
https://github.com/leethomason/tinyxml2/archive/refs/tags/${TINYXML2_VERSION}.tar.gz \
-o tinyxml2.tar.gz \
&& tar -xzf tinyxml2.tar.gz \
&& rm tinyxml2.tar.gz
# build and install
WORKDIR /tmp/tinyxml2-${TINYXML2_VERSION}
RUN cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
&& cmake --build build --parallel $(nproc) \
&& cmake --install build
# clean up
WORKDIR /
RUN rm -rf /tmp/tinyxml2-${TINYXML2_VERSION}
# install apt dependencies
RUN apt-get update && apt-get install -y \
libusb-dev libusb-1.0-0-dev libsdl2-dev libsdl2-net-dev libpng-dev \
libglew-dev nlohmann-json3-dev libspdlog-dev ninja-build libogg-dev \
libopus-dev opus-tools libopusfile-dev libvorbis-dev libespeak-ng-dev \
lsb-release git clang clang-format-14 zipcmp zipmerge ziptool \
libopengl-dev libbz2-dev libzip-dev \
&& rm -rf /var/lib/apt/lists/*
# Install latest SDL2
RUN wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz && \
tar -xzf SDL2-2.26.1.tar.gz && \
cd SDL2-2.26.1 && \
./configure && \
make && \
make -j$(nproc) && \
make install && \
cd .. && \
rm -rf SDL2-2.26.1 && \
@@ -19,7 +71,7 @@ RUN 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 && \
cd SDL2_net-2.2.0 && \
./configure && \
make && \
make -j$(nproc) && \
make install && \
cd .. && \
rm -rf SDL2_net-2.2.0 && \
@@ -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 ]
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
clang-format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 2
- name: Install clang-format
+52 -112
View File
@@ -11,11 +11,11 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Git Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true
- name: Configure ccache
uses: hendrikmuhs/ccache-action@v1.2
uses: hendrikmuhs/ccache-action@v1.2.23
with:
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-otr-ccache-${{ github.ref }}-${{ github.sha }}
@@ -25,9 +25,9 @@ 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@v4
uses: actions/cache/restore@v5
with:
key: ${{ runner.os }}-deps-${{ github.ref }}-${{ github.sha }}
restore-keys: |
@@ -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,27 +51,18 @@ 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
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: soh.o2r
path: soh.o2r
@@ -79,91 +73,55 @@ jobs:
runs-on: macos-14
steps:
- name: Git Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
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.23
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@v4
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@v4
uses: actions/download-artifact@v8
with:
name: soh.o2r
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
mv README.md readme.txt
- name: Upload build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: soh-mac
path: |
SoH.dmg
readme.txt
- name: Save Cache MacPorts
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
with:
key: ${{ steps.restore-cache-macports.outputs.cache-primary-key }}
path: /opt/local/
build-linux:
needs: generate-soh-otr
runs-on: ubuntu-22.04
steps:
- name: Git Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true
- 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.23
with:
save: ${{ github.ref_name == github.event.repository.default_branch }}
key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }}
@@ -172,7 +130,7 @@ jobs:
${{ runner.os }}-ccache
- name: Restore Cached deps folder
id: restore-cache-deps
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
key: ${{ runner.os }}-deps-${{ github.ref }}-${{ github.sha }}
restore-keys: |
@@ -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
@@ -234,13 +175,12 @@ jobs:
sudo make install
sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/
- name: Download soh.o2r
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: soh.o2r
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)
@@ -251,7 +191,7 @@ jobs:
CC: gcc-12
CXX: g++-12
- name: Upload build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: soh-linux
path: |
@@ -259,7 +199,7 @@ jobs:
readme.txt
- name: Save Cache deps folder
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
key: ${{ steps.restore-cache-deps.outputs.cache-primary-key }}
path: deps
@@ -273,11 +213,11 @@ jobs:
choco install ninja -y
Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue
- name: Git Checkout
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
submodules: true
- name: Configure sccache
uses: hendrikmuhs/ccache-action@v1.2
uses: hendrikmuhs/ccache-action@v1.2.23
with:
variant: sccache
max-size: "2G"
@@ -289,7 +229,7 @@ jobs:
${{ runner.os }}-ccache
- name: Restore Cached VCPKG folder
id: restore-cache-vcpkg
uses: actions/cache/restore@v4
uses: actions/cache/restore@v5
with:
key: ${{ runner.os }}-vcpkg-${{ github.ref }}-${{ github.sha }}
restore-keys: |
@@ -299,7 +239,7 @@ jobs:
- name: Configure Developer Command Prompt
uses: ilammy/msvc-dev-cmd@v1
- name: Download soh.o2r
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: soh.o2r
path: build-windows/soh
@@ -317,13 +257,13 @@ jobs:
- name: Unzip package
run: Expand-Archive -Path _packages/soh-windows.zip -DestinationPath soh-windows
- name: Upload build
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: soh-windows
path: soh-windows
- name: Save Cache VCPKG folder
if: ${{ github.ref_name == github.event.repository.default_branch }}
uses: actions/cache/save@v4
uses: actions/cache/save@v5
with:
key: ${{ steps.restore-cache-vcpkg.outputs.cache-primary-key }}
path: vcpkg
-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
+2 -2
View File
@@ -12,7 +12,7 @@ jobs:
if: ${{ github.event.workflow_run.event == 'pull_request' }}
steps:
- id: 'pr-number'
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
result-encoding: string
script: |
@@ -37,7 +37,7 @@ jobs:
return prNumber;
- id: 'artifacts-text'
uses: actions/github-script@v7
uses: actions/github-script@v9
with:
result-encoding: string
script: |
+178 -46
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
- uses: actions/checkout@v4
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@v7
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@v7
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
'
+3
View File
@@ -2,6 +2,7 @@
__pycache__/
.pyc
.DS_Store
.cache/*
# Text editor remnants
.vscode/*
@@ -417,6 +418,7 @@ tags
shipofharkinian.ini
shipofharkinian.json
imgui.ini
timesplitdata.json
# Switch Stuff
@@ -455,6 +457,7 @@ soh/src/boot/build.c
soh/properties.h
# Tools
.clangd
/clang-format
/clang-format.exe
*.o2r
+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
+10
View File
@@ -0,0 +1,10 @@
# Local clang-format hook: formats staged C/C++ in soh/ on commit, using a
# pinned 14.x downloaded by pre-commit. Scope matches run-clang-format.sh / CI.
# pre-commit install --install-hooks # enable (downloads clang-format up front)
repos:
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v14.0.6
hooks:
- id: clang-format
files: '^soh/.*\.(c|cpp|h|hpp)$'
exclude: '^soh/assets/|^soh/(src|include)/.*\.(h|hpp)$'
+28 -3
View File
@@ -5,6 +5,15 @@
"label": "Setup CMake Project",
"type": "shell",
"command": "cmake",
"args": [
"-S",
".",
"-B",
"build-cmake",
"-G",
"Ninja"
],
"windows": {
"args": [
"-S",
".",
@@ -16,7 +25,8 @@
"v143",
"-A",
"x64"
],
]
},
"group": "build",
"problemMatcher": []
},
@@ -24,12 +34,21 @@
"label": "Generate SOH OTR",
"type": "shell",
"command": "cmake",
"args": [
"--build",
"build-cmake",
"--target",
"GenerateSohOtr",
"--parallel"
],
"windows": {
"args": [
"--build",
"./build/x64",
"--target",
"GenerateSohOtr"
],
]
},
"group": "build",
"problemMatcher": []
},
@@ -39,8 +58,14 @@
"command": "cmake",
"args": [
"--build",
"./build/x64"
"build-cmake"
],
"windows": {
"args": [
"--build",
"./build/x64"
]
},
"group": {
"kind": "build",
"isDefault": true
+31 -7
View File
@@ -6,7 +6,7 @@ set(CMAKE_C_STANDARD 23 CACHE STRING "The C standard to use")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
project(Ship VERSION 9.1.2 LANGUAGES C CXX)
project(Ship VERSION 9.2.3 LANGUAGES C CXX)
include(CMake/soh-cvars.cmake)
include(CMake/lus-cvars.cmake)
set(SPDLOG_LEVEL_TRACE 0)
@@ -38,7 +38,7 @@ math(EXPR PATCH_INDEX "${PROJECT_VERSION_PATCH}")
# Use the patch number to select the correct word
list(GET NATO_PHONETIC_ALPHABET ${PATCH_INDEX} PROJECT_PATCH_WORD)
set(PROJECT_BUILD_NAME "Copper ${PROJECT_PATCH_WORD}" CACHE STRING "" FORCE)
set(PROJECT_BUILD_NAME "Ackbar ${PROJECT_PATCH_WORD}" CACHE STRING "" FORCE)
set(PROJECT_TEAM "github.com/harbourmasters" CACHE STRING "" FORCE)
execute_process(
@@ -78,12 +78,27 @@ set(CMAKE_PROJECT_GIT_COMMIT_TAG "${GIT_COMMIT_TAG}" CACHE STRING "Git commit ta
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT soh)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
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)
@@ -102,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()
@@ -111,16 +127,24 @@ endif()
# Global configuration types
################################################################################
if (CMAKE_SYSTEM_NAME STREQUAL "NintendoSwitch")
set(CMAKE_C_FLAGS_DEBUG "-g -ffast-math -DDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -ffast-math -DDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ffast-math -DNDEBUG")
set(CMAKE_C_FLAGS_DEBUG "-g -DDEBUG")
set(CMAKE_CXX_FLAGS_DEBUG "-g -DDEBUG")
set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
else()
set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
set(CMAKE_OBJCXX_FLAGS_RELEASE "-O2 -DNDEBUG")
endif()
# Enforce strict, deterministic IEEE-754 floating-point to match N64 (MIPS) semantics.
# Never enable fast-math, and disable FMA contraction: the R4300 CPU and RSP have no
# fused multiply-add, so contracting mul+add into an FMA produces extra precision.
add_compile_options($<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-fno-fast-math>)
add_compile_options($<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-ffp-contract=off>)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/fp:precise>)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/fp:except->)
if(NOT CMAKE_BUILD_TYPE )
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Choose the type of build." FORCE)
endif()
+6 -5
View File
@@ -34,16 +34,16 @@ You can verify you have dumped a supported copy of the game by using the compati
* You should see a notification saying `Processing OTR`, then, once the process is complete, you should get a notification saying `OTR Successfully Generated`, then the game should start.
#### Nintendo Switch
* Run one of the PC releases to generate an `oot.otr` and/or `oot-mq.otr` file. After launching the game on PC, you will be able to find these files in the same directory as `soh.exe` or `soh.appimage`. On macOS, these files can be found in `/Users/<username>/Library/Application Support/com.shipofharkinian.soh/`
* Run one of the PC releases to generate an `oot.o2r` and/or `oot-mq.o2r` file. After launching the game on PC, you will be able to find these files in the same directory as `soh.exe` or `soh.appimage`. On macOS, these files can be found in `/Users/<username>/Library/Application Support/com.shipofharkinian.soh/`
* Copy the files to your sd card
```
sdcard
└── switch
└── soh
├── oot-mq.otr
├── oot.otr
├── oot-mq.o2r
├── oot.o2r
├── soh.nro
└── soh.otr
└── soh.o2r
```
* Launch via Atmosphere's `Game+R` launcher method.
@@ -74,7 +74,7 @@ Congratulations, you are now sailing with the Ship of Harkinian! Have fun!
# Project Overview
Ship of Harkinian (SOH) is built atop a custom library dubbed libultraship (LUS). Back in the N64 days, there was an SDK distributed to developers named libultra; LUS is designed to mimic the functionality of libultra on modern hardware. In addition, we are dependant on the source code provided by the OOT decompilation project.
In order for the game to function, you will require a **legally acquired** ROM for Ocarina of Time. Click [here](https://ship.equipment/) to check the compatibility of your specific rom. Any copyrighted assets are extracted from the ROM and reformatted as a .otr archive file which the code uses.
In order for the game to function, you will require a **legally acquired** ROM for Ocarina of Time. Click [here](https://ship.equipment/) to check the compatibility of your specific rom. Any copyrighted assets are extracted from the ROM and reformatted as a .o2r archive file which the code uses.
### Graphics Backends
Currently, there are three rendering APIs supported: DirectX11 (Windows), OpenGL (all platforms), and Metal (MacOS). You can change which API to use in the `Settings` menu of the menubar, which requires a restart. If you're having an issue with crashing, you can change the API in the `shipofharkinian.json` file by finding the line `gfxbackend:""` and changing the value to `sdl` for OpenGL. DirectX 11 is the default on Windows.
@@ -104,6 +104,7 @@ More detailed documentation can be found in the 'docs' directory, including the
* [Credits](docs/CREDITS.md)
* [Custom Music](docs/CUSTOM_MUSIC.md)
* [Formatting](docs/FORMATTING.md)
* [Controller Mapping](docs/GAME_CONTROLLER_DB.md)
* [Modding](docs/MODDING.md)
* [Versioning](docs/VERSIONING.md)
+1 -1
Submodule ZAPDTR updated: 684f21a475...ee3397a365
+68 -80
View File
@@ -22,7 +22,7 @@ It is recommended that you install Python and Git standalone, the install proces
_Note: Be sure to either clone with the ``--recursive`` flag or do ``git submodule update --init`` after cloning to pull in the libultraship submodule!_
2. After setup and initial build, use the built-in OTR extraction to make your oot.otr/oot-mq.otr files.
2. After setup and initial build, use the built-in OTR extraction to make your oot.o2r/oot-mq.o2r files.
_Note: Instructions assume using powershell_
```powershell
@@ -34,7 +34,7 @@ cd Shipwright
# Add `-DSUPPRESS_WARNINGS=0` to prevent suppression of warnings from LUS and decomp (src) files. set to 1 to re-enable suppression
& 'C:\Program Files\CMake\bin\cmake' -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64
# Generate soh.otr
# Generate soh.o2r
& 'C:\Program Files\CMake\bin\cmake.exe' --build .\build\x64 --target GenerateSohOtr
# Compile project
@@ -86,115 +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
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
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
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
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
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
dnf install clang $(cat linux-build-deps/dnf.txt)
```
#### openSUSE
```sh
# using gcc
zypper in gcc gcc-c++ git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
zypper in gcc gcc-c++ $(cat linux-build-deps/zypper.txt)
# or using clang
zypper in clang libstdc++-devel git cmake ninja SDL2-devel libpng16-devel libzip-devel libzip-tools nlohmann_json-devel tinyxml2-devel spdlog-devel
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
@@ -204,7 +166,7 @@ git submodule update --init
# Add `-DPython3_EXECUTABLE=$(which python3)` if you are using non-standard Python installations such as PyEnv
cmake -H. -Bbuild-cmake -GNinja
# Generate soh.otr
# Generate soh.o2r
cmake --build build-cmake --target GenerateSohOtr
# Compile the project
@@ -215,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
@@ -239,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!**
@@ -254,14 +242,14 @@ 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
# Add `-DSUPPRESS_WARNINGS=0` to prevent suppression of warnings from LUS and decomp (src) files. set to 1 to re-enable suppression
cmake -H. -Bbuild-cmake -GNinja
# Generate soh.otr
# Generate soh.o2r
cmake --build build-cmake --target GenerateSohOtr
# Compile the project
@@ -350,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.
+1 -1
View File
@@ -19,6 +19,6 @@ Once you have prepared your sequences folder:
(*NOTE:* SoH can handle 1024 custom sequence in total. This includes the original music. Keep that in mind!)
1. Click the "Finalize OTR" text in the green footer.
1. Click "Generate OTR" and, using the file selection screen, save the file to the `mods` folder of your SoH installation.
- This `mods` folder should be in the same folder as your `oot.otr` file.
- This `mods` folder should be in the same folder as your `oot.o2r` file.
Assuming you have done everything correctly, boot up SoH and select the SFX Editor from the enhancements dropdown menu. You should now be able to swap out any of the in game sequences/fanfares for the sequences added in your newly generated OTR file. If you have any trouble with this process, please reach out in the support section of the Discord.
+69
View File
@@ -0,0 +1,69 @@
# Formatting
Shipwright's C/C++ in `soh/` is formatted with **clang-format 14**, the version
used by the OoT/MM decompilation that the vendored `soh/src/` tree comes from.
clang-format's output is not stable across major versions, so the major version
matters: any **14.x** produces identical output for this tree (verified across
all formatted files), but clang-format 15+ will reformat differently and fail
CI. Patch version (14.0.0 vs 14.0.6) does not matter.
## Format the tree
```bash
./run-clang-format.sh
```
This formats every C/C++ file in `soh/` in place, skipping the decompiled
headers (`soh/src`, `soh/include`) and autogenerated assets (`soh/assets`),
matching what CI checks.
The script calls `clang-format-14` by default. If your clang-format 14 is named
or located differently, point `CLANG_FORMAT` at it:
```bash
CLANG_FORMAT=clang-format ./run-clang-format.sh # already 14.x
CLANG_FORMAT=/path/to/clang-format ./run-clang-format.sh # static binary
CLANG_FORMAT="uvx clang-format@14" ./run-clang-format.sh # uv wheel
CLANG_FORMAT='"/path with spaces/cf"' ./run-clang-format.sh # quote a spaced path
```
`CLANG_FORMAT` is treated as a command line, so it can carry arguments (the `uvx`
case) or a quoted path containing spaces.
On Windows you have two options. Run `run-clang-format.ps1` from PowerShell: it
downloads clang-format 14.0.6 itself (needs [7-Zip](https://www.7-zip.org/)
installed) and formats the same fileset, so you don't have to install
clang-format or pass `CLANG_FORMAT`. Or run `run-clang-format.sh` from Git Bash
(ships with Git for Windows) or WSL, since it needs a Unix shell for
`find`/`xargs`; get the binary from the `uvx` wheel or the Windows static binary
below.
## Getting clang-format 14
Recent distros and Homebrew often ship only newer clang-format. Any of these
gives you a 14.x binary:
- **Debian/Ubuntu**: `sudo apt-get install clang-format-14` (where the package
still exists).
- **Arch**: AUR [`clang-format-static-bin`](https://aur.archlinux.org/packages/clang-format-static-bin).
- **Any Linux/macOS/Windows, no install**: download a static binary from
[muttleyxd/clang-tools-static-binaries](https://github.com/muttleyxd/clang-tools-static-binaries/releases/tag/master-796e77c)
(e.g. `clang-format-14_linux-amd64`), `chmod +x`, and point `CLANG_FORMAT` at it.
- **Any OS via a Python wheel**: `uvx clang-format@14` (with
[uv](https://docs.astral.sh/uv/)), or `pipx install clang-format==14.0.6`.
- **Homebrew (macOS or Linux)**: `brew install llvm@14` and use its
`clang-format`, or use one of the cross-platform options above.
## Optional: format on commit
The repo ships a [pre-commit](https://pre-commit.com/) config
(`.pre-commit-config.yaml`) that auto-formats staged C/C++ with a pinned 14.x
before each commit, so you never get caught by the CI check. With pre-commit
[installed](https://pre-commit.com/#install), enable it once:
```bash
pre-commit install --install-hooks
```
`--install-hooks` downloads clang-format up front so your first commit isn't
slowed by it.
+1 -1
View File
@@ -1,5 +1,5 @@
## About Versions
The Ship of Harkinian's versioning system is a unique system, comprising of a three-numbered version (`x.y.z`) and a version codename. The main version number `x` signifies major feature updates that require a new `oot.otr` file. The version number `y` signifies major feature updates and bugfixes that do not require a new `oot.otr` file. The version number `z` signifies minor updates such as a collection of bugfixes.
The Ship of Harkinian's versioning system is a unique system, comprising of a three-numbered version (`x.y.z`) and a version codename. The main version number `x` signifies major feature updates that require a new `oot.o2r` file. The version number `y` signifies major feature updates and bugfixes that do not require a new `oot.o2r` file. The version number `z` signifies minor updates such as a collection of bugfixes.
The version codename consists of a sci-fi film character followed by a phonetic alphabet code word. The film character represents a major release version which increments with the major `x` or `y` version bumps. The code word represents a minor release version which increments with the minor `z` version bump.
+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
+9 -2
View File
@@ -1,3 +1,7 @@
# Default to clang-format-14; override CLANG_FORMAT to use another 14.x binary
# (distro pkg, muttleyxd static binary, uvx clang-format@14, ...). See docs/FORMATTING.md.
CLANG_FORMAT="${CLANG_FORMAT:-clang-format-14}"
# this line does quite a bit, so let's break it down
#
# find soh
@@ -21,9 +25,12 @@
# -print0
# separate paths with NUL bytes, avoiding issues with spaces in paths
#
# | xargs -0 clang-format-14 -i -verbose
# | eval "xargs -0 $CLANG_FORMAT -i --verbose"
# use xargs to take each path we've found
# and pass it as an argument to clang-format
# verbose to print files being formatted and X out of Y status
# eval so CLANG_FORMAT can carry arguments ("uvx clang-format@14")
# or a quoted path with spaces; the NUL-separated file list reaches
# xargs over the pipe, so it never passes through eval
find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( \( -name "*.h" -o -name "*.hpp" \) ! -path "soh/src/*" ! -path "soh/include/*" \) \) ! -path "soh/assets/*" -print0 | xargs -0 clang-format-14 -i --verbose
find soh -type f \( -name "*.c" -o -name "*.cpp" -o \( \( -name "*.h" -o -name "*.hpp" \) ! -path "soh/src/*" ! -path "soh/include/*" \) \) ! -path "soh/assets/*" -print0 | eval "xargs -0 $CLANG_FORMAT -i --verbose"
+25 -24
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,17 @@ 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;
/WX;
/bigobj;
/sdl-;
/permissive-;
@@ -442,12 +443,13 @@ if(MSVC)
/permissive-;
/MP;
/sdl-;
/w;
/W3;
/WX;
${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 +637,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;"
@@ -693,7 +695,6 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "CafeOS")
else()
find_package(SDL2)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
find_package(Threads REQUIRED)
find_package(Ogg REQUIRED)
find_package(Vorbis REQUIRED)
@@ -709,7 +710,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
)
@@ -172,6 +172,7 @@
"153": "STICK UPGRADE 30",
"154": "NUT UPGRADE 30",
"155": "NUT UPGRADE 40",
"157": "Roc's Feather",
"255": "",
"256": "Haunted Wasteland",
"257": "Gerudos Fortress",
@@ -172,6 +172,7 @@
"153": "AMÉLIORATION BÂTON MOJO 30",
"154": "AMÉLIORATION NOIX MOJO 30",
"155": "AMÉLIORATION NOIX MOJO 40",
"157": "Plume de Roc",
"255": "",
"256": "Désert Hanté",
"257": "Forteresse Gerudo",
@@ -172,6 +172,7 @@
"153": "DEKU-STAB-KAPAZITÄT 30",
"154": "DEKU-NUẞ-KAPAZITÄT 30",
"155": "DEKU-NUẞ-KAPAZITÄT 40",
"157": "Greifenfeder",
"255": "",
"256": "Gespensterwüste",
"257": "Gerudo-Festung",
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -1,19 +0,0 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potrim"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_0"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potface"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_1"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbase"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_2"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potbottom"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_3"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/mat_gRandoPotDL_f3dlite_potvoid"/>
<CallDisplayList Path="objects/gameplay_dangeon_keep/gRandoPotDL_tri_4"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<EndDisplayList/>
</DisplayList>
@@ -1,82 +0,0 @@
<Vertex Version="0">
<Vtx X="-35" Y="133" Z="-20" S="546" T="573" R="159" G="61" B="200" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="305" T="573" R="159" G="61" B="56" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="305" T="654" R="196" G="149" B="34" A="255"/>
<Vtx X="-35" Y="146" Z="-20" S="546" T="654" R="196" G="149" B="222" A="255"/>
<Vtx X="-43" Y="146" Z="25" S="278" T="699" R="169" G="178" B="50" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="572" T="699" R="169" G="178" B="206" A="255"/>
<Vtx X="-43" Y="160" Z="25" S="278" T="778" R="169" G="78" B="50" A="255"/>
<Vtx X="-43" Y="160" Z="-25" S="572" T="778" R="169" G="78" B="206" A="255"/>
<Vtx X="-29" Y="160" Z="17" S="325" T="858" R="60" G="107" B="222" A="255"/>
<Vtx X="-29" Y="160" Z="-17" S="526" T="858" R="60" G="107" B="34" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="325" T="1008" R="87" G="78" B="206" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="526" T="1008" R="87" G="78" B="50" A="255"/>
<Vtx X="-35" Y="133" Z="20" S="10" T="1008" R="159" G="61" B="56" A="255"/>
<Vtx X="0" Y="133" Z="41" S="252" T="1008" R="0" G="61" B="112" A="255"/>
<Vtx X="0" Y="146" Z="41" S="252" T="927" R="0" G="149" B="69" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="10" T="927" R="196" G="149" B="34" A="255"/>
<Vtx X="-35" Y="146" Z="20" S="10" T="927" R="196" G="149" B="34" A="255"/>
<Vtx X="0" Y="146" Z="41" S="252" T="927" R="0" G="149" B="69" A="255"/>
<Vtx X="0" Y="146" Z="49" S="278" T="882" R="0" G="178" B="101" A="255"/>
<Vtx X="-43" Y="146" Z="25" S="-16" T="882" R="169" G="178" B="50" A="255"/>
<Vtx X="0" Y="160" Z="49" S="278" T="803" R="0" G="78" B="101" A="255"/>
<Vtx X="-43" Y="160" Z="25" S="-16" T="803" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="160" Z="34" S="232" T="723" R="0" G="107" B="187" A="255"/>
<Vtx X="-29" Y="160" Z="17" S="30" T="723" R="60" G="107" B="222" A="255"/>
<Vtx X="0" Y="134" Z="34" S="232" T="573" R="0" G="78" B="155" A="255"/>
<Vtx X="-29" Y="134" Z="17" S="30" T="573" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="573" T="740" R="0" G="61" B="144" A="255"/>
<Vtx X="-35" Y="133" Z="-20" S="573" T="982" R="159" G="61" B="200" A="255"/>
<Vtx X="-35" Y="146" Z="-20" S="654" T="982" R="196" G="149" B="222" A="255"/>
<Vtx X="0" Y="146" Z="-41" S="654" T="740" R="0" G="149" B="187" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="699" T="1008" R="169" G="178" B="206" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="699" T="714" R="0" G="178" B="155" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="699" T="714" R="0" G="178" B="155" A="255"/>
<Vtx X="-43" Y="146" Z="-25" S="699" T="1008" R="169" G="178" B="206" A="255"/>
<Vtx X="-43" Y="160" Z="-25" S="778" T="1008" R="169" G="78" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-49" S="778" T="714" R="0" G="78" B="155" A="255"/>
<Vtx X="-29" Y="160" Z="-17" S="858" T="962" R="60" G="107" B="34" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="858" T="760" R="0" G="107" B="69" A="255"/>
<Vtx X="-29" Y="134" Z="-17" S="1008" T="962" R="87" G="78" B="50" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="1008" T="760" R="0" G="78" B="101" A="255"/>
<Vtx X="35" Y="133" Z="20" S="687" T="137" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="446" T="137" R="97" G="61" B="200" A="255"/>
<Vtx X="35" Y="146" Z="-20" S="446" T="218" R="60" G="149" B="222" A="255"/>
<Vtx X="35" Y="146" Z="20" S="687" T="218" R="60" G="149" B="34" A="255"/>
<Vtx X="43" Y="146" Z="-25" S="420" T="263" R="87" G="178" B="206" A="255"/>
<Vtx X="43" Y="146" Z="25" S="714" T="263" R="87" G="178" B="50" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="420" T="342" R="87" G="78" B="206" A="255"/>
<Vtx X="43" Y="160" Z="25" S="714" T="342" R="87" G="78" B="50" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="466" T="422" R="196" G="107" B="34" A="255"/>
<Vtx X="43" Y="160" Z="25" S="714" T="342" R="87" G="78" B="50" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="420" T="342" R="87" G="78" B="206" A="255"/>
<Vtx X="29" Y="160" Z="17" S="667" T="422" R="196" G="107" B="222" A="255"/>
<Vtx X="29" Y="134" Z="-17" S="466" T="572" R="169" G="78" B="50" A="255"/>
<Vtx X="29" Y="134" Z="17" S="667" T="572" R="169" G="78" B="206" A="255"/>
<Vtx X="35" Y="133" Z="-20" S="-16" T="305" R="97" G="61" B="200" A="255"/>
<Vtx X="0" Y="133" Z="-41" S="-16" T="546" R="0" G="61" B="144" A="255"/>
<Vtx X="0" Y="146" Z="-41" S="65" T="546" R="0" G="149" B="187" A="255"/>
<Vtx X="35" Y="146" Z="-20" S="65" T="305" R="60" G="149" B="222" A="255"/>
<Vtx X="0" Y="146" Z="-49" S="110" T="572" R="0" G="178" B="155" A="255"/>
<Vtx X="43" Y="146" Z="-25" S="110" T="278" R="87" G="178" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-49" S="189" T="572" R="0" G="78" B="155" A="255"/>
<Vtx X="43" Y="160" Z="-25" S="189" T="278" R="87" G="78" B="206" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="269" T="526" R="0" G="107" B="69" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="269" T="325" R="196" G="107" B="34" A="255"/>
<Vtx X="29" Y="160" Z="-17" S="269" T="325" R="196" G="107" B="34" A="255"/>
<Vtx X="0" Y="160" Z="-34" S="269" T="526" R="0" G="107" B="69" A="255"/>
<Vtx X="0" Y="134" Z="-34" S="419" T="526" R="0" G="78" B="101" A="255"/>
<Vtx X="29" Y="134" Z="-17" S="419" T="325" R="169" G="78" B="50" A="255"/>
<Vtx X="0" Y="133" Z="41" S="419" T="252" R="0" G="61" B="112" A="255"/>
<Vtx X="35" Y="133" Z="20" S="419" T="10" R="97" G="61" B="56" A="255"/>
<Vtx X="35" Y="146" Z="20" S="338" T="10" R="60" G="149" B="34" A="255"/>
<Vtx X="0" Y="146" Z="41" S="338" T="252" R="0" G="149" B="69" A="255"/>
<Vtx X="43" Y="146" Z="25" S="293" T="-16" R="87" G="178" B="50" A="255"/>
<Vtx X="0" Y="146" Z="49" S="293" T="278" R="0" G="178" B="101" A="255"/>
<Vtx X="43" Y="160" Z="25" S="214" T="-16" R="87" G="78" B="50" A="255"/>
<Vtx X="0" Y="160" Z="49" S="214" T="278" R="0" G="78" B="101" A="255"/>
<Vtx X="29" Y="160" Z="17" S="134" T="30" R="196" G="107" B="222" A="255"/>
<Vtx X="0" Y="160" Z="34" S="134" T="232" R="0" G="107" B="187" A="255"/>
<Vtx X="29" Y="134" Z="17" S="-16" T="30" R="169" G="78" B="206" A="255"/>
<Vtx X="0" Y="134" Z="34" S="-16" T="232" R="0" G="78" B="155" A="255"/>
</Vertex>
@@ -1,26 +0,0 @@
<Vertex Version="0">
<Vtx X="0" Y="0" Z="-51" S="240" T="240" R="0" G="150" B="185" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="240" T="-16" R="0" G="220" B="134" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="-16" T="-16" R="106" G="220" B="195" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="-16" T="240" R="61" G="150" B="221" A="255"/>
<Vtx X="44" Y="0" Z="-25" S="240" T="240" R="61" G="150" B="221" A="255"/>
<Vtx X="71" Y="43" Z="-41" S="240" T="-16" R="106" G="220" B="195" A="255"/>
<Vtx X="71" Y="43" Z="41" S="-16" T="-16" R="106" G="220" B="61" A="255"/>
<Vtx X="44" Y="0" Z="25" S="-16" T="240" R="61" G="150" B="35" A="255"/>
<Vtx X="44" Y="0" Z="25" S="240" T="240" R="61" G="150" B="35" A="255"/>
<Vtx X="71" Y="43" Z="41" S="240" T="-16" R="106" G="220" B="61" A="255"/>
<Vtx X="0" Y="43" Z="82" S="-16" T="-16" R="0" G="220" B="122" A="255"/>
<Vtx X="0" Y="0" Z="51" S="-16" T="240" R="0" G="150" B="71" A="255"/>
<Vtx X="0" Y="0" Z="51" S="240" T="240" R="0" G="150" B="71" A="255"/>
<Vtx X="0" Y="43" Z="82" S="240" T="-16" R="0" G="220" B="122" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="-16" T="-16" R="150" G="220" B="61" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="-16" T="240" R="195" G="150" B="35" A="255"/>
<Vtx X="-44" Y="0" Z="25" S="240" T="240" R="195" G="150" B="35" A="255"/>
<Vtx X="-71" Y="43" Z="41" S="240" T="-16" R="150" G="220" B="61" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="-16" T="-16" R="150" G="220" B="195" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="-16" T="240" R="195" G="150" B="221" A="255"/>
<Vtx X="-44" Y="0" Z="-25" S="240" T="240" R="195" G="150" B="221" A="255"/>
<Vtx X="-71" Y="43" Z="-41" S="240" T="-16" R="150" G="220" B="195" A="255"/>
<Vtx X="0" Y="43" Z="-82" S="-16" T="-16" R="0" G="220" B="134" A="255"/>
<Vtx X="0" Y="0" Z="-51" S="-16" T="240" R="0" G="150" B="185" A="255"/>
</Vertex>
Binary file not shown.
@@ -1,13 +1,151 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bombchubag/mat_gBombchuBagBodyDL_f3dlite_bag_body_shine"/>
<CallDisplayList Path="objects/object_bombchubag/gBombchuBagBodyDL_tri_0"/>
<CallDisplayList Path="objects/object_bombchubag/mat_gBombchuBagBodyDL_f3dlite_bag_body_matte"/>
<CallDisplayList Path="objects/object_bombchubag/gBombchuBagBodyDL_tri_1"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_FRONT="1" G_LOD="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="4" V02="1"/>
<Triangle1 V00="5" V01="4" V02="3"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="9" V02="7"/>
<Triangle1 V00="10" V01="9" V02="6"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="12" V01="14" V02="13"/>
<Triangle1 V00="15" V01="14" V02="12"/>
<Triangle1 V00="13" V01="14" V02="16"/>
<Triangle1 V00="13" V01="16" V02="17"/>
<Triangle1 V00="17" V01="16" V02="18"/>
<Triangle1 V00="17" V01="18" V02="19"/>
<Triangle1 V00="19" V01="18" V02="20"/>
<Triangle1 V00="13" V01="17" V02="21"/>
<Triangle1 V00="22" V01="13" V02="21"/>
<Triangle1 V00="22" V01="11" V02="13"/>
<Triangle1 V00="9" V01="11" V02="22"/>
<Triangle1 V00="9" V01="22" V02="7"/>
<Triangle1 V00="23" V01="24" V02="25"/>
<Triangle1 V00="24" V01="26" V02="25"/>
<Triangle1 V00="24" V01="27" V02="26"/>
<Triangle1 V00="27" V01="28" V02="26"/>
<Triangle1 V00="26" V01="28" V02="29"/>
<Triangle1 V00="29" V01="28" V02="30"/>
<Triangle1 V00="31" V01="29" V02="30"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="7" V02="0"/>
<Triangle1 V00="6" V01="8" V02="7"/>
<Triangle1 V00="9" V01="8" V02="6"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="10" V01="6" V02="11"/>
<Triangle1 V00="6" V01="12" V02="11"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="14" V01="12" V02="15"/>
<Triangle1 V00="16" V01="14" V02="15"/>
<Triangle1 V00="16" V01="15" V02="17"/>
<Triangle1 V00="17" V01="15" V02="18"/>
<Triangle1 V00="17" V01="18" V02="19"/>
<Triangle1 V00="19" V01="18" V02="20"/>
<Triangle1 V00="21" V01="14" V02="16"/>
<Triangle1 V00="21" V01="13" V02="14"/>
<Triangle1 V00="22" V01="11" V02="13"/>
<Triangle1 V00="22" V01="23" V02="11"/>
<Triangle1 V00="24" V01="23" V02="22"/>
<Triangle1 V00="10" V01="11" V02="23"/>
<Triangle1 V00="25" V01="10" V02="23"/>
<Triangle1 V00="26" V01="10" V02="25"/>
<Triangle1 V00="26" V01="9" V02="10"/>
<Triangle1 V00="27" V01="9" V02="26"/>
<Triangle1 V00="27" V01="26" V02="28"/>
<Triangle1 V00="27" V01="8" V02="9"/>
<Triangle1 V00="27" V01="29" V02="8"/>
<Triangle1 V00="29" V01="7" V02="8"/>
<Triangle1 V00="21" V01="30" V02="31"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="11"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="2" V01="4" V02="8"/>
<Triangle1 V00="9" V01="2" V02="8"/>
<Triangle1 V00="9" V01="10" V02="2"/>
<Triangle1 V00="0" V01="2" V02="10"/>
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="20"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="6" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="8" V01="11" V02="10"/>
<Triangle1 V00="4" V01="12" V02="13"/>
<Triangle1 V00="14" V01="4" V02="13"/>
<Triangle1 V00="14" V01="13" V02="6"/>
<Triangle1 V00="13" V01="15" V02="6"/>
<Triangle1 V00="10" V01="16" V02="17"/>
<Triangle1 V00="18" V01="10" V02="17"/>
<Triangle1 V00="18" V01="17" V02="0"/>
<Triangle1 V00="17" V01="19" V02="0"/>
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_FRONT="1" G_LOD="1" G_TEXTURE_GEN_LINEAR="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="960" T="960" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/gameplay_keep/gHilite1Tex" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="255" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_MIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="4" ShiftS="0" MaskT="4" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="60" Lrt="60"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_2" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="15" V02="13"/>
<Triangle1 V00="13" V01="15" V02="16"/>
<Triangle1 V00="13" V01="16" V02="17"/>
<Triangle1 V00="16" V01="18" V02="17"/>
<Triangle1 V00="16" V01="19" V02="18"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="18" V01="20" V02="21"/>
<Triangle1 V00="20" V01="22" V02="21"/>
<Triangle1 V00="20" V01="23" V02="22"/>
<Triangle1 V00="22" V01="23" V02="24"/>
<Triangle1 V00="22" V01="24" V02="25"/>
<Triangle1 V00="26" V01="27" V02="28"/>
<Triangle1 V00="29" V01="26" V02="28"/>
<Triangle1 V00="30" V01="29" V02="28"/>
<Triangle1 V00="28" V01="31" V02="30"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_2" VertexBufferIndex="0" VertexOffset="32" Count="6"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="3" V02="0"/>
<Triangle1 V00="2" V01="4" V02="3"/>
<Triangle1 V00="3" V01="5" V02="0"/>
<EndDisplayList/>
</DisplayList>
@@ -1,31 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="14" V01="15" V02="12"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="11"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="7" V01="8" V02="5"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="8" V01="10" V02="5"/>
<EndDisplayList/>
</DisplayList>
@@ -1,99 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="4" V02="1"/>
<Triangle1 V00="5" V01="4" V02="3"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="9" V02="7"/>
<Triangle1 V00="10" V01="9" V02="6"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="9" V01="11" V02="12"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="14" V01="13" V02="11"/>
<Triangle1 V00="12" V01="13" V02="15"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="4" V01="2" V02="5"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="8" V01="0" V02="3"/>
<Triangle1 V00="8" V01="9" V02="0"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="14" V01="13" V02="15"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="4" V01="2" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="5" V01="3" V02="6"/>
<Triangle1 V00="7" V01="5" V02="6"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="12" V01="5" V02="7"/>
<Triangle1 V00="12" V01="4" V02="5"/>
<Triangle1 V00="13" V01="4" V02="12"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="12" V02="15"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="48" Count="15"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="1"/>
<Triangle1 V00="3" V01="1" V02="4"/>
<Triangle1 V00="4" V01="1" V02="5"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="7" V01="5" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="11" V01="4" V02="6"/>
<Triangle1 V00="11" V01="3" V02="4"/>
<Triangle1 V00="12" V01="2" V02="3"/>
<Triangle1 V00="12" V01="13" V02="2"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="63" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="4" V02="1"/>
<Triangle1 V00="5" V01="4" V02="3"/>
<Triangle1 V00="5" V01="6" V02="4"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="4" V01="7" V02="8"/>
<Triangle1 V00="1" V01="4" V02="8"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="13" V01="10" V02="14"/>
<Triangle1 V00="15" V01="13" V02="14"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="79" Count="15"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="7" V02="0"/>
<Triangle1 V00="6" V01="8" V02="7"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="9" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="11" V01="14" V02="13"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagBodyDL_vtx_1" VertexBufferIndex="0" VertexOffset="94" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="6" V02="8"/>
<Triangle1 V00="9" V01="8" V02="0"/>
<Triangle1 V00="8" V01="10" V02="0"/>
<Triangle1 V00="4" V01="11" V02="12"/>
<Triangle1 V00="13" V01="4" V02="12"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="12" V01="15" V02="14"/>
<EndDisplayList/>
</DisplayList>
@@ -1,45 +1,77 @@
<Vertex Version="0">
<Vtx X="-9" Y="-15" Z="23" S="-938" T="-926" R="193" G="249" B="110" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="-922" T="-943" R="191" G="4" B="109" A="255"/>
<Vtx X="-15" Y="-12" Z="19" S="-932" T="-954" R="190" G="14" B="108" A="255"/>
<Vtx X="15" Y="-2" Z="17" S="-870" T="-830" R="67" G="22" B="106" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="-900" T="-815" R="65" G="4" B="109" A="255"/>
<Vtx X="15" Y="-12" Z="19" S="-900" T="-804" R="66" G="14" B="108" A="255"/>
<Vtx X="-15" Y="-2" Z="17" S="-870" T="-958" R="189" G="22" B="106" A="255"/>
<Vtx X="-15" Y="-12" Z="19" S="-900" T="-954" R="190" G="14" B="108" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="-900" T="-943" R="191" G="4" B="109" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="-922" T="-858" R="65" G="4" B="109" A="255"/>
<Vtx X="9" Y="-15" Z="23" S="-938" T="-874" R="63" G="249" B="110" A="255"/>
<Vtx X="15" Y="-12" Z="19" S="-932" T="-847" R="66" G="14" B="108" A="255"/>
<Vtx X="0" Y="20" Z="-23" S="-580" T="-836" R="0" G="200" B="142" A="255"/>
<Vtx X="0" Y="24" Z="-23" S="-580" T="-1092" R="0" G="96" B="172" A="255"/>
<Vtx X="2" Y="24" Z="-21" S="-666" T="-1092" R="87" G="86" B="222" A="255"/>
<Vtx X="2" Y="20" Z="-22" S="-666" T="-836" R="87" G="190" B="192" A="255"/>
<Vtx X="2" Y="20" Z="-22" S="-666" T="-836" R="87" G="190" B="192" A="255"/>
<Vtx X="2" Y="24" Z="-21" S="-666" T="-1092" R="87" G="86" B="222" A="255"/>
<Vtx X="2" Y="23" Z="-19" S="-751" T="-1092" R="87" G="66" B="64" A="255"/>
<Vtx X="2" Y="19" Z="-20" S="-751" T="-836" R="87" G="170" B="34" A="255"/>
<Vtx X="0" Y="23" Z="-18" S="-836" T="-1092" R="0" G="56" B="114" A="255"/>
<Vtx X="0" Y="19" Z="-19" S="-836" T="-836" R="0" G="160" B="84" A="255"/>
<Vtx X="-2" Y="23" Z="-19" S="-922" T="-1092" R="169" G="66" B="64" A="255"/>
<Vtx X="-2" Y="19" Z="-20" S="-922" T="-836" R="169" G="170" B="34" A="255"/>
<Vtx X="-2" Y="24" Z="-21" S="-1007" T="-1092" R="169" G="86" B="222" A="255"/>
<Vtx X="-2" Y="20" Z="-22" S="-1007" T="-836" R="169" G="190" B="192" A="255"/>
<Vtx X="0" Y="24" Z="-23" S="-1092" T="-1092" R="0" G="96" B="172" A="255"/>
<Vtx X="0" Y="20" Z="-23" S="-1092" T="-836" R="0" G="200" B="142" A="255"/>
<Vtx X="2" Y="23" Z="-19" S="-858" T="-647" R="87" G="66" B="64" A="255"/>
<Vtx X="2" Y="24" Z="-21" S="-858" T="-770" R="87" G="86" B="222" A="255"/>
<Vtx X="0" Y="24" Z="-23" S="-964" T="-831" R="0" G="96" B="172" A="255"/>
<Vtx X="-2" Y="23" Z="-19" S="-1071" T="-647" R="169" G="66" B="64" A="255"/>
<Vtx X="0" Y="24" Z="-23" S="-964" T="-831" R="0" G="96" B="172" A="255"/>
<Vtx X="-2" Y="24" Z="-21" S="-1071" T="-770" R="169" G="86" B="222" A="255"/>
<Vtx X="-2" Y="23" Z="-19" S="-1071" T="-647" R="169" G="66" B="64" A="255"/>
<Vtx X="0" Y="23" Z="-18" S="-964" T="-585" R="0" G="56" B="114" A="255"/>
<Vtx X="2" Y="23" Z="-19" S="-858" T="-647" R="87" G="66" B="64" A="255"/>
<Vtx X="-2" Y="20" Z="-22" S="-815" T="-770" R="169" G="190" B="192" A="255"/>
<Vtx X="0" Y="20" Z="-23" S="-708" T="-831" R="0" G="200" B="142" A="255"/>
<Vtx X="2" Y="20" Z="-22" S="-602" T="-770" R="87" G="190" B="192" A="255"/>
<Vtx X="0" Y="19" Z="-19" S="-708" T="-585" R="0" G="160" B="84" A="255"/>
<Vtx X="2" Y="19" Z="-20" S="-602" T="-647" R="87" G="170" B="34" A="255"/>
<Vtx X="-2" Y="19" Z="-20" S="-815" T="-647" R="169" G="170" B="34" A="255"/>
<Vtx X="-6" Y="-33" Z="3" S="112" T="325" R="225" G="133" B="3" A="255"/>
<Vtx X="-8" Y="-28" Z="13" S="197" T="325" R="221" G="141" B="41" A="255"/>
<Vtx X="-18" Y="-23" Z="10" S="197" T="240" R="165" G="168" B="13" A="255"/>
<Vtx X="6" Y="-33" Z="3" S="112" T="411" R="31" G="133" B="3" A="255"/>
<Vtx X="8" Y="-28" Z="13" S="197" T="411" R="35" G="141" B="41" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="197" T="496" R="91" G="168" B="13" A="255"/>
<Vtx X="-18" Y="-23" Z="10" S="368" T="69" R="165" G="168" B="13" A="255"/>
<Vtx X="-16" Y="-25" Z="-5" S="453" T="-16" R="168" G="171" B="222" A="255"/>
<Vtx X="-6" Y="-33" Z="3" S="368" T="-16" R="225" G="133" B="3" A="255"/>
<Vtx X="-22" Y="-18" Z="1" S="453" T="69" R="138" G="210" B="253" A="255"/>
<Vtx X="-24" Y="-9" Z="1" S="453" T="155" R="131" G="250" B="237" A="255"/>
<Vtx X="-22" Y="-11" Z="-8" S="453" T="69" R="142" G="252" B="200" A="255"/>
<Vtx X="-22" Y="0" Z="-1" S="453" T="155" R="150" G="55" B="213" A="255"/>
<Vtx X="-14" Y="-2" Z="-15" S="453" T="69" R="167" G="25" B="169" A="255"/>
<Vtx X="-14" Y="6" Z="-9" S="453" T="155" R="166" G="80" B="215" A="255"/>
<Vtx X="-16" Y="8" Z="7" S="453" T="240" R="192" G="109" B="243" A="255"/>
<Vtx X="-5" Y="11" Z="-19" S="453" T="69" R="159" G="59" B="200" A="255"/>
<Vtx X="0" Y="5" Z="-23" S="453" T="-16" R="0" G="8" B="129" A="255"/>
<Vtx X="-2" Y="18" Z="-21" S="453" T="69" R="143" G="51" B="227" A="255"/>
<Vtx X="0" Y="16" Z="-23" S="453" T="-16" R="0" G="13" B="130" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="-16" R="0" G="127" B="0" A="255"/>
<Vtx X="-5" Y="-9" Z="-21" S="453" T="-16" R="222" G="237" B="135" A="255"/>
<Vtx X="-16" Y="-18" Z="-13" S="453" T="-16" R="171" G="213" B="172" A="255"/>
<Vtx X="-6" Y="-33" Z="3" S="368" T="1008" R="225" G="133" B="3" A="255"/>
<Vtx X="-16" Y="-25" Z="-5" S="453" T="1008" R="168" G="171" B="222" A="255"/>
<Vtx X="-7" Y="-29" Z="-8" S="453" T="923" R="224" G="148" B="198" A="255"/>
<Vtx X="-7" Y="-22" Z="-17" S="453" T="923" R="225" G="187" B="154" A="255"/>
<Vtx X="-16" Y="-18" Z="-13" S="453" T="1008" R="171" G="213" B="172" A="255"/>
<Vtx X="-5" Y="-9" Z="-21" S="453" T="923" R="222" G="237" B="135" A="255"/>
<Vtx X="5" Y="-9" Z="-21" S="453" T="837" R="34" G="237" B="135" A="255"/>
<Vtx X="0" Y="5" Z="-23" S="453" T="837" R="0" G="8" B="129" A="255"/>
<Vtx X="14" Y="-2" Z="-15" S="453" T="752" R="89" G="25" B="169" A="255"/>
<Vtx X="14" Y="-2" Z="-15" S="453" T="752" R="89" G="25" B="169" A="255"/>
<Vtx X="0" Y="5" Z="-23" S="453" T="837" R="0" G="8" B="129" A="255"/>
<Vtx X="5" Y="11" Z="-19" S="453" T="752" R="97" G="59" B="200" A="255"/>
<Vtx X="0" Y="16" Z="-23" S="453" T="837" R="0" G="13" B="130" A="255"/>
<Vtx X="2" Y="18" Z="-21" S="453" T="752" R="113" G="51" B="227" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="752" R="0" G="127" B="0" A="255"/>
<Vtx X="16" Y="-18" Z="-13" S="453" T="752" R="85" G="213" B="172" A="255"/>
<Vtx X="5" Y="-9" Z="-21" S="453" T="837" R="34" G="237" B="135" A="255"/>
<Vtx X="7" Y="-22" Z="-17" S="453" T="837" R="31" G="187" B="154" A="255"/>
<Vtx X="7" Y="-29" Z="-8" S="453" T="837" R="32" G="148" B="198" A="255"/>
<Vtx X="16" Y="-25" Z="-5" S="453" T="752" R="88" G="171" B="222" A="255"/>
<Vtx X="22" Y="-11" Z="-8" S="453" T="667" R="114" G="252" B="200" A="255"/>
<Vtx X="14" Y="-2" Z="-15" S="453" T="667" R="89" G="25" B="169" A="255"/>
<Vtx X="22" Y="0" Z="-1" S="453" T="581" R="106" G="55" B="213" A="255"/>
<Vtx X="14" Y="6" Z="-9" S="453" T="581" R="90" G="80" B="215" A="255"/>
<Vtx X="5" Y="11" Z="-19" S="453" T="581" R="97" G="59" B="200" A="255"/>
<Vtx X="5" Y="12" Z="-4" S="453" T="496" R="34" G="122" B="3" A="255"/>
<Vtx X="0" Y="14" Z="-16" S="453" T="496" R="0" G="116" B="52" A="255"/>
<Vtx X="2" Y="18" Z="-21" S="453" T="581" R="113" G="51" B="227" A="255"/>
<Vtx X="0" Y="20" Z="-20" S="453" T="496" R="0" G="54" B="115" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="496" R="0" G="127" B="0" A="255"/>
<Vtx X="16" Y="8" Z="7" S="453" T="496" R="64" G="109" B="243" A="255"/>
<Vtx X="24" Y="-9" Z="1" S="453" T="581" R="125" G="250" B="237" A="255"/>
<Vtx X="22" Y="-18" Z="1" S="453" T="667" R="118" G="210" B="253" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="368" T="667" R="91" G="168" B="13" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="368" T="752" R="91" G="168" B="13" A="255"/>
<Vtx X="6" Y="-33" Z="3" S="368" T="837" R="31" G="133" B="3" A="255"/>
<Vtx X="-7" Y="-29" Z="-8" S="453" T="923" R="224" G="148" B="198" A="255"/>
<Vtx X="-6" Y="-33" Z="3" S="368" T="923" R="225" G="133" B="3" A="255"/>
<Vtx X="-7" Y="-22" Z="-17" S="453" T="923" R="225" G="187" B="154" A="255"/>
<Vtx X="5" Y="12" Z="-4" S="453" T="411" R="34" G="122" B="3" A="255"/>
<Vtx X="5" Y="11" Z="10" S="453" T="411" R="16" G="126" B="7" A="255"/>
<Vtx X="5" Y="11" Z="10" S="453" T="411" R="16" G="126" B="7" A="255"/>
<Vtx X="5" Y="12" Z="-4" S="453" T="411" R="34" G="122" B="3" A="255"/>
<Vtx X="-5" Y="12" Z="-4" S="453" T="325" R="222" G="122" B="3" A="255"/>
<Vtx X="0" Y="14" Z="-16" S="453" T="325" R="0" G="116" B="52" A="255"/>
<Vtx X="-5" Y="11" Z="-19" S="453" T="240" R="159" G="59" B="200" A="255"/>
<Vtx X="-2" Y="18" Z="-21" S="453" T="240" R="143" G="51" B="227" A="255"/>
<Vtx X="0" Y="20" Z="-20" S="453" T="325" R="0" G="54" B="115" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="240" R="0" G="127" B="0" A="255"/>
<Vtx X="-14" Y="6" Z="-9" S="453" T="240" R="166" G="80" B="215" A="255"/>
<Vtx X="-16" Y="8" Z="7" S="453" T="240" R="192" G="109" B="243" A="255"/>
<Vtx X="-5" Y="11" Z="10" S="453" T="325" R="240" G="126" B="7" A="255"/>
</Vertex>
@@ -1,112 +1,22 @@
<Vertex Version="0">
<Vtx X="-6" Y="-33" Z="3" S="112" T="325" R="225" G="133" B="2" A="255"/>
<Vtx X="-8" Y="-28" Z="13" S="197" T="325" R="221" G="141" B="41" A="255"/>
<Vtx X="-18" Y="-23" Z="10" S="197" T="240" R="165" G="168" B="13" A="255"/>
<Vtx X="6" Y="-33" Z="3" S="112" T="411" R="31" G="133" B="2" A="255"/>
<Vtx X="8" Y="-28" Z="13" S="197" T="411" R="35" G="141" B="41" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="197" T="496" R="91" G="168" B="13" A="255"/>
<Vtx X="-18" Y="-23" Z="10" S="368" T="69" R="165" G="168" B="13" A="255"/>
<Vtx X="-16" Y="-25" Z="-5" S="453" T="-16" R="168" G="171" B="222" A="255"/>
<Vtx X="-6" Y="-33" Z="3" S="368" T="-16" R="225" G="133" B="2" A="255"/>
<Vtx X="-22" Y="-18" Z="1" S="453" T="69" R="136" G="214" B="252" A="255"/>
<Vtx X="-24" Y="-9" Z="1" S="453" T="155" R="131" G="248" B="238" A="255"/>
<Vtx X="-22" Y="0" Z="-1" S="453" T="155" R="147" G="50" B="214" A="255"/>
<Vtx X="-22" Y="-11" Z="-8" S="453" T="69" R="142" G="253" B="200" A="255"/>
<Vtx X="-14" Y="6" Z="-9" S="453" T="155" R="165" G="79" B="215" A="255"/>
<Vtx X="-16" Y="8" Z="7" S="453" T="240" R="192" G="109" B="243" A="255"/>
<Vtx X="-14" Y="-2" Z="-15" S="453" T="69" R="167" G="25" B="169" A="255"/>
<Vtx X="-14" Y="-2" Z="-15" S="453" T="69" R="167" G="25" B="169" A="255"/>
<Vtx X="-14" Y="6" Z="-9" S="453" T="155" R="165" G="79" B="215" A="255"/>
<Vtx X="-5" Y="11" Z="-19" S="453" T="69" R="159" G="58" B="198" A="255"/>
<Vtx X="-5" Y="-9" Z="-21" S="453" T="-16" R="222" G="239" B="135" A="255"/>
<Vtx X="0" Y="5" Z="-23" S="453" T="-16" R="0" G="5" B="129" A="255"/>
<Vtx X="-2" Y="18" Z="-21" S="453" T="69" R="143" G="51" B="228" A="255"/>
<Vtx X="0" Y="16" Z="-23" S="453" T="-16" R="0" G="12" B="130" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="-16" R="0" G="127" B="0" A="255"/>
<Vtx X="-16" Y="-18" Z="-13" S="453" T="-16" R="170" G="214" B="172" A="255"/>
<Vtx X="-22" Y="-11" Z="-8" S="453" T="69" R="142" G="253" B="200" A="255"/>
<Vtx X="-16" Y="-25" Z="-5" S="453" T="-16" R="168" G="171" B="222" A="255"/>
<Vtx X="-22" Y="-18" Z="1" S="453" T="69" R="136" G="214" B="252" A="255"/>
<Vtx X="-6" Y="-33" Z="3" S="368" T="1008" R="225" G="133" B="2" A="255"/>
<Vtx X="-16" Y="-25" Z="-5" S="453" T="1008" R="168" G="171" B="222" A="255"/>
<Vtx X="-7" Y="-29" Z="-8" S="453" T="923" R="224" G="147" B="198" A="255"/>
<Vtx X="-16" Y="-18" Z="-13" S="453" T="1008" R="170" G="214" B="172" A="255"/>
<Vtx X="-7" Y="-29" Z="-8" S="453" T="923" R="224" G="147" B="198" A="255"/>
<Vtx X="-16" Y="-18" Z="-13" S="453" T="1008" R="170" G="214" B="172" A="255"/>
<Vtx X="-7" Y="-22" Z="-17" S="453" T="923" R="225" G="187" B="154" A="255"/>
<Vtx X="-5" Y="-9" Z="-21" S="453" T="923" R="222" G="239" B="135" A="255"/>
<Vtx X="7" Y="-22" Z="-17" S="453" T="837" R="31" G="187" B="154" A="255"/>
<Vtx X="5" Y="-9" Z="-21" S="453" T="837" R="34" G="239" B="135" A="255"/>
<Vtx X="0" Y="5" Z="-23" S="453" T="837" R="0" G="5" B="129" A="255"/>
<Vtx X="14" Y="-2" Z="-15" S="453" T="752" R="89" G="25" B="169" A="255"/>
<Vtx X="5" Y="11" Z="-19" S="453" T="752" R="97" G="58" B="198" A="255"/>
<Vtx X="0" Y="16" Z="-23" S="453" T="837" R="0" G="12" B="130" A="255"/>
<Vtx X="2" Y="18" Z="-21" S="453" T="752" R="113" G="51" B="228" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="752" R="0" G="127" B="0" A="255"/>
<Vtx X="16" Y="-18" Z="-13" S="453" T="752" R="86" G="214" B="172" A="255"/>
<Vtx X="16" Y="-25" Z="-5" S="453" T="752" R="88" G="171" B="222" A="255"/>
<Vtx X="22" Y="-18" Z="1" S="453" T="667" R="120" G="214" B="252" A="255"/>
<Vtx X="22" Y="-11" Z="-8" S="453" T="667" R="114" G="253" B="200" A="255"/>
<Vtx X="16" Y="-18" Z="-13" S="453" T="752" R="86" G="214" B="172" A="255"/>
<Vtx X="14" Y="-2" Z="-15" S="453" T="667" R="89" G="25" B="169" A="255"/>
<Vtx X="22" Y="-11" Z="-8" S="453" T="667" R="114" G="253" B="200" A="255"/>
<Vtx X="22" Y="0" Z="-1" S="453" T="581" R="109" G="50" B="214" A="255"/>
<Vtx X="14" Y="6" Z="-9" S="453" T="581" R="91" G="79" B="215" A="255"/>
<Vtx X="5" Y="11" Z="-19" S="453" T="581" R="97" G="58" B="198" A="255"/>
<Vtx X="5" Y="12" Z="-4" S="453" T="496" R="34" G="122" B="2" A="255"/>
<Vtx X="0" Y="14" Z="-16" S="453" T="496" R="0" G="116" B="51" A="255"/>
<Vtx X="2" Y="18" Z="-21" S="453" T="581" R="113" G="51" B="228" A="255"/>
<Vtx X="0" Y="20" Z="-20" S="453" T="496" R="0" G="54" B="115" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="496" R="0" G="127" B="0" A="255"/>
<Vtx X="16" Y="8" Z="7" S="453" T="496" R="64" G="109" B="243" A="255"/>
<Vtx X="24" Y="-9" Z="1" S="453" T="581" R="125" G="248" B="238" A="255"/>
<Vtx X="22" Y="-18" Z="1" S="453" T="667" R="120" G="214" B="252" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="368" T="667" R="91" G="168" B="13" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="368" T="752" R="91" G="168" B="13" A="255"/>
<Vtx X="16" Y="-25" Z="-5" S="453" T="752" R="88" G="171" B="222" A="255"/>
<Vtx X="22" Y="-18" Z="1" S="453" T="667" R="120" G="214" B="252" A="255"/>
<Vtx X="6" Y="-33" Z="3" S="368" T="837" R="31" G="133" B="2" A="255"/>
<Vtx X="7" Y="-29" Z="-8" S="453" T="837" R="32" G="147" B="198" A="255"/>
<Vtx X="-6" Y="-33" Z="3" S="368" T="923" R="225" G="133" B="2" A="255"/>
<Vtx X="-7" Y="-29" Z="-8" S="453" T="923" R="224" G="147" B="198" A="255"/>
<Vtx X="-7" Y="-22" Z="-17" S="453" T="923" R="225" G="187" B="154" A="255"/>
<Vtx X="7" Y="-22" Z="-17" S="453" T="837" R="31" G="187" B="154" A="255"/>
<Vtx X="16" Y="8" Z="7" S="453" T="496" R="64" G="109" B="243" A="255"/>
<Vtx X="5" Y="12" Z="-4" S="453" T="411" R="34" G="122" B="2" A="255"/>
<Vtx X="5" Y="11" Z="10" S="453" T="411" R="16" G="126" B="7" A="255"/>
<Vtx X="-5" Y="11" Z="10" S="453" T="325" R="240" G="126" B="7" A="255"/>
<Vtx X="-5" Y="12" Z="-4" S="453" T="325" R="222" G="122" B="2" A="255"/>
<Vtx X="0" Y="14" Z="-16" S="453" T="325" R="0" G="116" B="51" A="255"/>
<Vtx X="-14" Y="6" Z="-9" S="453" T="240" R="165" G="79" B="215" A="255"/>
<Vtx X="-14" Y="6" Z="-9" S="453" T="240" R="165" G="79" B="215" A="255"/>
<Vtx X="0" Y="14" Z="-16" S="453" T="325" R="0" G="116" B="51" A="255"/>
<Vtx X="-5" Y="11" Z="-19" S="453" T="240" R="159" G="58" B="198" A="255"/>
<Vtx X="0" Y="20" Z="-20" S="453" T="325" R="0" G="54" B="115" A="255"/>
<Vtx X="-2" Y="18" Z="-21" S="453" T="240" R="143" G="51" B="228" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="453" T="240" R="0" G="127" B="0" A="255"/>
<Vtx X="-16" Y="8" Z="7" S="453" T="240" R="192" G="109" B="243" A="255"/>
<Vtx X="-5" Y="12" Z="-4" S="453" T="325" R="222" G="122" B="2" A="255"/>
<Vtx X="-5" Y="11" Z="10" S="453" T="325" R="240" G="126" B="7" A="255"/>
<Vtx X="6" Y="28" Z="-11" S="368" T="240" R="185" G="101" B="227" A="255"/>
<Vtx X="10" Y="31" Z="-12" S="368" T="240" R="168" G="88" B="231" A="255"/>
<Vtx X="6" Y="28" Z="-11" S="368" T="240" R="185" G="101" B="226" A="255"/>
<Vtx X="10" Y="31" Z="-12" S="368" T="240" R="168" G="88" B="230" A="255"/>
<Vtx X="8" Y="27" Z="-19" S="368" T="240" R="177" G="90" B="43" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="368" T="496" R="0" G="115" B="55" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="368" T="496" R="0" G="114" B="55" A="255"/>
<Vtx X="6" Y="33" Z="-23" S="368" T="496" R="185" G="39" B="98" A="255"/>
<Vtx X="10" Y="35" Z="-20" S="368" T="240" R="168" G="34" B="85" A="255"/>
<Vtx X="-6" Y="33" Z="-23" S="112" T="496" R="71" G="39" B="98" A="255"/>
<Vtx X="-10" Y="35" Z="-20" S="112" T="496" R="88" G="34" B="85" A="255"/>
<Vtx X="-8" Y="27" Z="-19" S="112" T="496" R="79" G="90" B="43" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="112" T="240" R="0" G="115" B="55" A="255"/>
<Vtx X="-6" Y="28" Z="-11" S="112" T="240" R="71" G="101" B="227" A="255"/>
<Vtx X="-10" Y="31" Z="-12" S="112" T="496" R="88" G="88" B="231" A="255"/>
<Vtx X="6" Y="33" Z="-23" S="368" T="496" R="185" G="39" B="98" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="112" T="240" R="0" G="114" B="55" A="255"/>
<Vtx X="-6" Y="28" Z="-11" S="112" T="240" R="71" G="101" B="226" A="255"/>
<Vtx X="-10" Y="31" Z="-12" S="112" T="496" R="88" G="88" B="230" A="255"/>
<Vtx X="5" Y="37" Z="-25" S="368" T="496" R="195" G="23" B="109" A="255"/>
<Vtx X="0" Y="31" Z="-26" S="368" T="496" R="0" G="55" B="115" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="112" T="496" R="0" G="115" B="55" A="255"/>
<Vtx X="0" Y="31" Z="-26" S="368" T="496" R="0" G="55" B="114" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="112" T="496" R="0" G="114" B="55" A="255"/>
<Vtx X="-5" Y="37" Z="-25" S="368" T="496" R="61" G="23" B="109" A="255"/>
<Vtx X="-5" Y="29" Z="-7" S="112" T="240" R="61" G="100" B="206" A="255"/>
<Vtx X="0" Y="24" Z="-11" S="112" T="240" R="0" G="124" B="229" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="368" T="240" R="0" G="115" B="55" A="255"/>
<Vtx X="6" Y="28" Z="-11" S="368" T="240" R="185" G="101" B="227" A="255"/>
<Vtx X="0" Y="24" Z="-11" S="112" T="240" R="0" G="124" B="228" A="255"/>
<Vtx X="0" Y="23" Z="-21" S="368" T="240" R="0" G="114" B="55" A="255"/>
<Vtx X="5" Y="29" Z="-7" S="112" T="240" R="195" G="100" B="206" A="255"/>
</Vertex>
@@ -0,0 +1,40 @@
<Vertex Version="0">
<Vtx X="-9" Y="-15" Z="23" S="-938" T="-926" R="193" G="249" B="110" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="-922" T="-943" R="191" G="5" B="109" A="255"/>
<Vtx X="-15" Y="-12" Z="19" S="-932" T="-954" R="190" G="14" B="108" A="255"/>
<Vtx X="15" Y="-2" Z="17" S="-870" T="-830" R="67" G="22" B="106" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="-900" T="-815" R="65" G="5" B="109" A="255"/>
<Vtx X="15" Y="-12" Z="19" S="-900" T="-804" R="66" G="14" B="108" A="255"/>
<Vtx X="-15" Y="-2" Z="17" S="-870" T="-958" R="189" G="22" B="106" A="255"/>
<Vtx X="-15" Y="-12" Z="19" S="-900" T="-954" R="190" G="14" B="108" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="-900" T="-943" R="191" G="5" B="109" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="-922" T="-858" R="65" G="5" B="109" A="255"/>
<Vtx X="9" Y="-15" Z="23" S="-938" T="-874" R="63" G="249" B="110" A="255"/>
<Vtx X="15" Y="-12" Z="19" S="-932" T="-847" R="66" G="14" B="108" A="255"/>
<Vtx X="0" Y="24" Z="-23" S="-580" T="-1092" R="0" G="96" B="172" A="255"/>
<Vtx X="2" Y="20" Z="-22" S="-666" T="-836" R="87" G="190" B="192" A="255"/>
<Vtx X="0" Y="20" Z="-23" S="-580" T="-836" R="0" G="200" B="142" A="255"/>
<Vtx X="2" Y="24" Z="-21" S="-666" T="-1092" R="87" G="86" B="222" A="255"/>
<Vtx X="2" Y="23" Z="-19" S="-751" T="-1092" R="87" G="66" B="64" A="255"/>
<Vtx X="2" Y="19" Z="-20" S="-751" T="-836" R="87" G="170" B="34" A="255"/>
<Vtx X="0" Y="19" Z="-19" S="-836" T="-836" R="0" G="160" B="84" A="255"/>
<Vtx X="0" Y="23" Z="-18" S="-836" T="-1092" R="0" G="56" B="114" A="255"/>
<Vtx X="-2" Y="23" Z="-19" S="-922" T="-1092" R="169" G="66" B="64" A="255"/>
<Vtx X="-2" Y="19" Z="-20" S="-922" T="-836" R="169" G="170" B="34" A="255"/>
<Vtx X="-2" Y="20" Z="-22" S="-1007" T="-836" R="169" G="190" B="192" A="255"/>
<Vtx X="-2" Y="24" Z="-21" S="-1007" T="-1092" R="169" G="86" B="222" A="255"/>
<Vtx X="0" Y="24" Z="-23" S="-1092" T="-1092" R="0" G="96" B="172" A="255"/>
<Vtx X="0" Y="20" Z="-23" S="-1092" T="-836" R="0" G="200" B="142" A="255"/>
<Vtx X="-2" Y="23" Z="-19" S="-1071" T="-647" R="169" G="66" B="64" A="255"/>
<Vtx X="0" Y="23" Z="-18" S="-964" T="-585" R="0" G="56" B="114" A="255"/>
<Vtx X="2" Y="23" Z="-19" S="-858" T="-647" R="87" G="66" B="64" A="255"/>
<Vtx X="-2" Y="24" Z="-21" S="-1071" T="-770" R="169" G="86" B="222" A="255"/>
<Vtx X="0" Y="24" Z="-23" S="-964" T="-831" R="0" G="96" B="172" A="255"/>
<Vtx X="2" Y="24" Z="-21" S="-858" T="-770" R="87" G="86" B="222" A="255"/>
<Vtx X="-2" Y="20" Z="-22" S="-815" T="-770" R="169" G="190" B="192" A="255"/>
<Vtx X="0" Y="20" Z="-23" S="-708" T="-831" R="0" G="200" B="142" A="255"/>
<Vtx X="2" Y="20" Z="-22" S="-602" T="-770" R="87" G="190" B="192" A="255"/>
<Vtx X="0" Y="19" Z="-19" S="-708" T="-585" R="0" G="160" B="84" A="255"/>
<Vtx X="2" Y="19" Z="-20" S="-602" T="-647" R="87" G="170" B="34" A="255"/>
<Vtx X="-2" Y="19" Z="-20" S="-815" T="-647" R="169" G="170" B="34" A="255"/>
</Vertex>
@@ -1,11 +1,67 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bombchubag/mat_gBombchuBagMaskDL_f3dlite_bag_mask"/>
<CallDisplayList Path="objects/object_bombchubag/gBombchuBagMaskDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_FRONT="1" G_LOD="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagMaskDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="6" V02="4"/>
<Triangle1 V00="7" V01="6" V02="3"/>
<Triangle1 V00="7" V01="3" V02="8"/>
<Triangle1 V00="9" V01="6" V02="7"/>
<Triangle1 V00="9" V01="10" V02="6"/>
<Triangle1 V00="10" V01="11" V02="6"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="13" V01="12" V02="10"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<Triangle1 V00="13" V01="16" V02="15"/>
<Triangle1 V00="13" V01="17" V02="16"/>
<Triangle1 V00="13" V01="18" V02="17"/>
<Triangle1 V00="19" V01="18" V02="13"/>
<Triangle1 V00="19" V01="20" V02="18"/>
<Triangle1 V00="19" V01="21" V02="20"/>
<Triangle1 V00="20" V01="22" V02="18"/>
<Triangle1 V00="20" V01="23" V02="22"/>
<Triangle1 V00="22" V01="24" V02="18"/>
<Triangle1 V00="25" V01="24" V02="22"/>
<Triangle1 V00="26" V01="18" V02="24"/>
<Triangle1 V00="26" V01="17" V02="18"/>
<Triangle1 V00="6" V01="27" V02="4"/>
<Triangle1 V00="6" V01="11" V02="27"/>
<Triangle1 V00="11" V01="28" V02="27"/>
<Triangle1 V00="11" V01="29" V02="28"/>
<Triangle1 V00="30" V01="29" V02="11"/>
<Triangle1 V00="11" V01="31" V02="30"/>
<Triangle1 V00="11" V01="12" V02="31"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagMaskDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="5" V01="8" V02="7"/>
<Triangle1 V00="7" V01="9" V02="6"/>
<Triangle1 V00="9" V01="10" V02="6"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="6" V01="10" V02="12"/>
<Triangle1 V00="6" V01="12" V02="13"/>
<Triangle1 V00="3" V01="6" V02="13"/>
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagMaskDL_vtx_1" VertexBufferIndex="0" VertexOffset="0" Count="9"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="5" V01="8" V02="6"/>
<EndDisplayList/>
</DisplayList>
@@ -1,54 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bombchubag/gBombchuBagMaskDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="6" V02="4"/>
<Triangle1 V00="7" V01="6" V02="3"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="11" V01="8" V02="10"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="13" V01="8" V02="11"/>
<Triangle1 V00="13" V01="14" V02="8"/>
<Triangle1 V00="8" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagMaskDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="1" V01="3" V02="4"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="3"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="6" V01="9" V02="10"/>
<Triangle1 V00="6" V01="10" V02="11"/>
<Triangle1 V00="11" V01="12" V02="6"/>
<Triangle1 V00="13" V01="12" V02="11"/>
<Triangle1 V00="12" V01="5" V02="6"/>
<Triangle1 V00="12" V01="14" V02="5"/>
<Triangle1 V00="5" V01="14" V02="15"/>
<Triangle1 V00="5" V01="15" V02="4"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagMaskDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="6" V01="3" V02="4"/>
<Triangle1 V00="7" V01="3" V02="6"/>
<Triangle1 V00="3" V01="7" V02="8"/>
<Triangle1 V00="3" V01="8" V02="9"/>
<Triangle1 V00="3" V01="9" V02="10"/>
<Triangle1 V00="3" V01="10" V02="11"/>
<Triangle1 V00="11" V01="0" V02="3"/>
<Triangle1 V00="6" V01="4" V02="12"/>
<Triangle1 V00="4" V01="13" V02="12"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<LoadVertices Path="objects/object_bombchubag/gBombchuBagMaskDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="6"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="0" V01="3" V02="4"/>
<Triangle1 V00="0" V01="4" V02="5"/>
<EndDisplayList/>
</DisplayList>
@@ -1,56 +1,48 @@
<Vertex Version="0">
<Vtx X="-24" Y="-9" Z="1" S="453" T="155" R="136" G="16" B="38" A="255"/>
<Vtx X="-24" Y="-9" Z="1" S="453" T="155" R="136" G="16" B="39" A="255"/>
<Vtx X="-18" Y="-23" Z="10" S="368" T="69" R="164" G="201" B="69" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="368" T="155" R="159" G="234" B="80" A="255"/>
<Vtx X="-8" Y="-28" Z="13" S="197" T="325" R="226" G="179" B="97" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="283" T="240" R="159" G="234" B="80" A="255"/>
<Vtx X="-18" Y="-23" Z="10" S="197" T="240" R="164" G="201" B="69" A="255"/>
<Vtx X="-8" Y="-16" Z="23" S="283" T="325" R="222" G="209" B="113" A="255"/>
<Vtx X="8" Y="-28" Z="13" S="197" T="411" R="30" G="179" B="97" A="255"/>
<Vtx X="8" Y="-16" Z="23" S="283" T="411" R="34" G="209" B="113" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="368" T="155" R="160" G="234" B="80" A="255"/>
<Vtx X="18" Y="-14" Z="18" S="283" T="496" R="96" G="234" B="80" A="255"/>
<Vtx X="8" Y="-28" Z="13" S="197" T="411" R="30" G="179" B="96" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="197" T="496" R="92" G="201" B="69" A="255"/>
<Vtx X="18" Y="-14" Z="18" S="283" T="496" R="97" G="234" B="80" A="255"/>
<Vtx X="8" Y="-16" Z="23" S="283" T="411" R="34" G="209" B="113" A="255"/>
<Vtx X="9" Y="-15" Z="23" S="292" T="420" R="63" G="249" B="110" A="255"/>
<Vtx X="15" Y="-12" Z="19" S="304" T="475" R="70" G="6" B="106" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="322" T="427" R="69" G="255" B="107" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="322" T="427" R="69" G="253" B="106" A="255"/>
<Vtx X="6" Y="-5" Z="25" S="368" T="411" R="33" G="24" B="120" A="255"/>
<Vtx X="-8" Y="-16" Z="23" S="283" T="325" R="222" G="209" B="113" A="255"/>
<Vtx X="-6" Y="-5" Z="25" S="368" T="325" R="223" G="24" B="120" A="255"/>
<Vtx X="6" Y="-5" Z="25" S="368" T="411" R="33" G="24" B="120" A="255"/>
<Vtx X="-7" Y="5" Z="19" S="453" T="325" R="226" G="86" B="88" A="255"/>
<Vtx X="-6" Y="-5" Z="25" S="368" T="325" R="223" G="24" B="120" A="255"/>
<Vtx X="7" Y="5" Z="19" S="453" T="411" R="30" G="86" B="88" A="255"/>
<Vtx X="5" Y="11" Z="10" S="453" T="411" R="27" G="99" B="75" A="255"/>
<Vtx X="16" Y="8" Z="7" S="453" T="496" R="92" G="71" B="52" A="255"/>
<Vtx X="16" Y="1" Z="16" S="453" T="496" R="91" G="52" B="72" A="255"/>
<Vtx X="7" Y="5" Z="19" S="453" T="411" R="31" G="86" B="88" A="255"/>
<Vtx X="-7" Y="5" Z="19" S="453" T="325" R="225" G="86" B="88" A="255"/>
<Vtx X="-5" Y="11" Z="10" S="453" T="325" R="232" G="101" B="72" A="255"/>
<Vtx X="5" Y="11" Z="10" S="453" T="411" R="24" G="101" B="72" A="255"/>
<Vtx X="16" Y="8" Z="7" S="453" T="496" R="91" G="71" B="52" A="255"/>
<Vtx X="16" Y="1" Z="16" S="453" T="496" R="92" G="49" B="72" A="255"/>
<Vtx X="6" Y="-5" Z="25" S="368" T="496" R="33" G="24" B="120" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="350" T="536" R="69" G="255" B="107" A="255"/>
<Vtx X="15" Y="-2" Z="17" S="428" T="509" R="79" G="15" B="99" A="255"/>
<Vtx X="15" Y="-2" Z="17" S="428" T="509" R="78" G="19" B="99" A="255"/>
<Vtx X="9" Y="-10" Z="23" S="350" T="536" R="69" G="253" B="106" A="255"/>
<Vtx X="18" Y="-14" Z="18" S="368" T="581" R="96" G="234" B="80" A="255"/>
<Vtx X="15" Y="-12" Z="19" S="368" T="560" R="70" G="6" B="106" A="255"/>
<Vtx X="18" Y="-14" Z="18" S="368" T="581" R="97" G="234" B="80" A="255"/>
<Vtx X="24" Y="-9" Z="1" S="453" T="581" R="120" G="16" B="38" A="255"/>
<Vtx X="24" Y="-9" Z="1" S="453" T="581" R="120" G="16" B="39" A="255"/>
<Vtx X="18" Y="-23" Z="10" S="368" T="667" R="92" G="201" B="69" A="255"/>
<Vtx X="22" Y="0" Z="-1" S="453" T="581" R="116" G="43" B="29" A="255"/>
<Vtx X="12" Y="21" Z="-2" S="453" T="496" R="78" G="75" B="67" A="255"/>
<Vtx X="-7" Y="5" Z="19" S="453" T="325" R="226" G="86" B="88" A="255"/>
<Vtx X="5" Y="11" Z="10" S="453" T="411" R="27" G="99" B="75" A="255"/>
<Vtx X="-5" Y="11" Z="10" S="453" T="325" R="229" G="99" B="75" A="255"/>
<Vtx X="-16" Y="1" Z="16" S="453" T="240" R="165" G="52" B="72" A="255"/>
<Vtx X="-16" Y="8" Z="7" S="453" T="240" R="164" G="71" B="52" A="255"/>
<Vtx X="-12" Y="21" Z="-2" S="453" T="325" R="178" G="75" B="67" A="255"/>
<Vtx X="-24" Y="-9" Z="1" S="453" T="155" R="136" G="16" B="38" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="368" T="240" R="159" G="234" B="80" A="255"/>
<Vtx X="-15" Y="-12" Z="19" S="368" T="261" R="186" G="6" B="106" A="255"/>
<Vtx X="-15" Y="-2" Z="17" S="428" T="253" R="177" G="15" B="99" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="350" T="304" R="187" G="255" B="107" A="255"/>
<Vtx X="-6" Y="-5" Z="25" S="368" T="325" R="223" G="24" B="120" A="255"/>
<Vtx X="-22" Y="0" Z="-1" S="453" T="155" R="140" G="43" B="29" A="255"/>
<Vtx X="-12" Y="21" Z="-2" S="453" T="240" R="178" G="75" B="67" A="255"/>
<Vtx X="8" Y="-16" Z="23" S="283" T="411" R="34" G="209" B="113" A="255"/>
<Vtx X="-8" Y="-16" Z="23" S="283" T="325" R="222" G="209" B="113" A="255"/>
<Vtx X="-8" Y="-16" Z="23" S="283" T="325" R="222" G="209" B="113" A="255"/>
<Vtx X="-6" Y="-5" Z="25" S="368" T="325" R="223" G="24" B="120" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="322" T="309" R="187" G="255" B="107" A="255"/>
<Vtx X="22" Y="0" Z="-1" S="453" T="581" R="116" G="43" B="30" A="255"/>
<Vtx X="-8" Y="-28" Z="13" S="197" T="325" R="226" G="179" B="96" A="255"/>
<Vtx X="-18" Y="-23" Z="10" S="197" T="240" R="164" G="201" B="69" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="283" T="240" R="160" G="234" B="80" A="255"/>
<Vtx X="-9" Y="-15" Z="23" S="292" T="316" R="193" G="249" B="110" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="322" T="309" R="187" G="253" B="106" A="255"/>
<Vtx X="-9" Y="-15" Z="23" S="292" T="316" R="193" G="249" B="110" A="255"/>
<Vtx X="-15" Y="-12" Z="19" S="304" T="261" R="186" G="6" B="106" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="283" T="240" R="159" G="234" B="80" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="283" T="240" R="160" G="234" B="80" A="255"/>
<Vtx X="-18" Y="-14" Z="18" S="368" T="240" R="160" G="234" B="80" A="255"/>
<Vtx X="-15" Y="-12" Z="19" S="368" T="261" R="186" G="6" B="106" A="255"/>
<Vtx X="-15" Y="-2" Z="17" S="428" T="253" R="178" G="19" B="99" A="255"/>
<Vtx X="-16" Y="1" Z="16" S="453" T="240" R="164" G="49" B="72" A="255"/>
<Vtx X="-6" Y="-5" Z="25" S="368" T="325" R="223" G="24" B="120" A="255"/>
<Vtx X="-9" Y="-10" Z="23" S="350" T="304" R="187" G="253" B="106" A="255"/>
<Vtx X="-7" Y="5" Z="19" S="453" T="325" R="225" G="86" B="88" A="255"/>
<Vtx X="-16" Y="8" Z="7" S="453" T="240" R="165" G="71" B="52" A="255"/>
<Vtx X="-5" Y="11" Z="10" S="453" T="325" R="232" G="101" B="72" A="255"/>
<Vtx X="-22" Y="0" Z="-1" S="453" T="155" R="140" G="43" B="30" A="255"/>
<Vtx X="-24" Y="-9" Z="1" S="453" T="155" R="136" G="16" B="39" A="255"/>
</Vertex>
@@ -0,0 +1,11 @@
<Vertex Version="0">
<Vtx X="-5" Y="11" Z="10" S="453" T="325" R="232" G="101" B="72" A="255"/>
<Vtx X="-12" Y="21" Z="-2" S="453" T="325" R="178" G="74" B="67" A="255"/>
<Vtx X="-16" Y="8" Z="7" S="453" T="240" R="165" G="71" B="52" A="255"/>
<Vtx X="-12" Y="21" Z="-2" S="453" T="240" R="178" G="74" B="67" A="255"/>
<Vtx X="-22" Y="0" Z="-1" S="453" T="155" R="140" G="43" B="30" A="255"/>
<Vtx X="16" Y="8" Z="7" S="453" T="496" R="91" G="71" B="52" A="255"/>
<Vtx X="12" Y="21" Z="-2" S="453" T="496" R="78" G="74" B="67" A="255"/>
<Vtx X="5" Y="11" Z="10" S="453" T="411" R="24" G="101" B="72" A="255"/>
<Vtx X="22" Y="0" Z="-1" S="453" T="581" R="116" G="43" B="30" A="255"/>
</Vertex>
@@ -1,11 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<EndDisplayList/>
</DisplayList>
@@ -1,11 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_OPA_SURF2="1" />
<Texture S="65535" T="65535" Level="0" Tile="0" On="1"/>
<EndDisplayList/>
</DisplayList>
Binary file not shown.
@@ -1,11 +1,149 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bosskey/mat_gBossKeyCustomDL_f3dlite_BossKeyMetal_Custom"/>
<CallDisplayList Path="objects/object_bosskey/gBossKeyCustomDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_TEXEL0" B0="G_CCMUX_0" C0="G_CCMUX_SHADE" D0="G_CCMUX_0" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_1" A1="G_CCMUX_COMBINED" B1="G_CCMUX_0" C1="G_CCMUX_ENVIRONMENT" D1="G_CCMUX_0" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_CULL_BACK="1" G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_FRONT="1" G_LOD="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_OPA_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="960" T="960" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/gameplay_keep/gHilite1Tex" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="255" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_MIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_MIRROR" MaskS="4" ShiftS="0" MaskT="4" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="60" Lrt="60"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="1" V01="3" V02="4"/>
<Triangle1 V00="1" V01="4" V02="5"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="8" V01="9" V02="6"/>
<Triangle1 V00="5" V01="6" V02="10"/>
<Triangle1 V00="5" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="15" V02="13"/>
<Triangle1 V00="15" V01="16" V02="13"/>
<Triangle1 V00="15" V01="17" V02="16"/>
<Triangle1 V00="17" V01="18" V02="16"/>
<Triangle1 V00="17" V01="19" V02="18"/>
<Triangle1 V00="17" V01="20" V02="19"/>
<Triangle1 V00="17" V01="21" V02="20"/>
<Triangle1 V00="19" V01="22" V02="18"/>
<Triangle1 V00="19" V01="23" V02="22"/>
<Triangle1 V00="16" V01="24" V02="25"/>
<Triangle1 V00="16" V01="18" V02="24"/>
<Triangle1 V00="26" V01="27" V02="28"/>
<Triangle1 V00="26" V01="29" V02="27"/>
<Triangle1 V00="29" V01="30" V02="27"/>
<Triangle1 V00="29" V01="31" V02="30"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="1"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="0" V01="2" V02="5"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="0" V01="5" V02="8"/>
<Triangle1 V00="0" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="13" V02="11"/>
<Triangle1 V00="14" V01="13" V02="10"/>
<Triangle1 V00="14" V01="10" V02="15"/>
<Triangle1 V00="14" V01="15" V02="16"/>
<Triangle1 V00="16" V01="15" V02="17"/>
<Triangle1 V00="16" V01="17" V02="18"/>
<Triangle1 V00="18" V01="17" V02="19"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="16" V01="18" V02="20"/>
<Triangle1 V00="16" V01="20" V02="21"/>
<Triangle1 V00="14" V01="16" V02="21"/>
<Triangle1 V00="14" V01="21" V02="22"/>
<Triangle1 V00="23" V01="14" V02="22"/>
<Triangle1 V00="24" V01="23" V02="22"/>
<Triangle1 V00="24" V01="22" V02="25"/>
<Triangle1 V00="24" V01="26" V02="23"/>
<Triangle1 V00="24" V01="27" V02="26"/>
<Triangle1 V00="27" V01="28" V02="26"/>
<Triangle1 V00="27" V01="29" V02="28"/>
<Triangle1 V00="29" V01="30" V02="28"/>
<Triangle1 V00="29" V01="31" V02="30"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="5" V01="6" V02="3"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="6" V01="8" V02="11"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="6" V01="11" V02="13"/>
<Triangle1 V00="14" V01="6" V02="13"/>
<Triangle1 V00="14" V01="3" V02="6"/>
<Triangle1 V00="1" V01="3" V02="14"/>
<Triangle1 V00="1" V01="14" V02="15"/>
<Triangle1 V00="14" V01="16" V02="15"/>
<Triangle1 V00="14" V01="17" V02="16"/>
<Triangle1 V00="17" V01="14" V02="18"/>
<Triangle1 V00="19" V01="17" V02="18"/>
<Triangle1 V00="19" V01="18" V02="20"/>
<Triangle1 V00="20" V01="18" V02="21"/>
<Triangle1 V00="20" V01="21" V02="22"/>
<Triangle1 V00="22" V01="21" V02="23"/>
<Triangle1 V00="17" V01="19" V02="24"/>
<Triangle1 V00="17" V01="24" V02="25"/>
<Triangle1 V00="16" V01="17" V02="25"/>
<Triangle1 V00="16" V01="25" V02="26"/>
<Triangle1 V00="16" V01="26" V02="27"/>
<Triangle1 V00="16" V01="27" V02="28"/>
<Triangle1 V00="28" V01="27" V02="29"/>
<Triangle1 V00="28" V01="29" V02="30"/>
<Triangle1 V00="30" V01="29" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="5" V01="4" V02="2"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="6" V01="3" V02="4"/>
<Triangle1 V00="6" V01="7" V02="3"/>
<Triangle1 V00="3" V01="7" V02="8"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="7" V01="10" V02="9"/>
<Triangle1 V00="11" V01="9" V02="10"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="11" V01="13" V02="14"/>
<Triangle1 V00="11" V01="14" V02="15"/>
<Triangle1 V00="11" V01="15" V02="16"/>
<Triangle1 V00="11" V01="16" V02="9"/>
<Triangle1 V00="9" V01="16" V02="17"/>
<Triangle1 V00="9" V01="17" V02="18"/>
<Triangle1 V00="18" V01="17" V02="19"/>
<Triangle1 V00="8" V01="9" V02="18"/>
<Triangle1 V00="8" V01="18" V02="20"/>
<Triangle1 V00="20" V01="18" V02="21"/>
<Triangle1 V00="22" V01="8" V02="20"/>
<Triangle1 V00="3" V01="8" V02="22"/>
<Triangle1 V00="3" V01="22" V02="23"/>
<Triangle1 V00="22" V01="24" V02="23"/>
<Triangle1 V00="22" V01="25" V02="24"/>
<Triangle1 V00="22" V01="20" V02="25"/>
<Triangle1 V00="25" V01="20" V02="26"/>
<Triangle1 V00="25" V01="26" V02="24"/>
<Triangle1 V00="0" V01="3" V02="27"/>
<Triangle1 V00="0" V01="27" V02="28"/>
<Triangle1 V00="27" V01="29" V02="28"/>
<Triangle1 V00="27" V01="30" V02="29"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<Triangle1 V00="0" V01="28" V02="15"/>
<EndDisplayList/>
</DisplayList>
@@ -1,142 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="5" V01="6" V02="9"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="5" V02="9"/>
<Triangle1 V00="12" V01="9" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="14" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="5" V01="6" V02="9"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="5" V02="9"/>
<Triangle1 V00="12" V01="9" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="28" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="5" V01="6" V02="9"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="5" V02="9"/>
<Triangle1 V00="12" V01="9" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="42" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="9" V01="5" V02="7"/>
<Triangle1 V00="10" V01="5" V02="9"/>
<Triangle1 V00="10" V01="3" V02="5"/>
<Triangle1 V00="11" V01="3" V02="10"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="13" V01="10" V02="14"/>
<Triangle1 V00="15" V01="13" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="58" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="0" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="6" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="11" V01="9" V02="10"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="15" V01="13" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="74" Count="15"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="5" V01="0" V02="3"/>
<Triangle1 V00="5" V01="6" V02="0"/>
<Triangle1 V00="7" V01="6" V02="5"/>
<Triangle1 V00="5" V01="8" V02="7"/>
<Triangle1 V00="5" V01="9" V02="8"/>
<Triangle1 V00="5" V01="10" V02="9"/>
<Triangle1 V00="5" V01="3" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="9" V01="11" V02="12"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="8" V01="12" V02="14"/>
<Triangle1 V00="8" V01="9" V02="12"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="89" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="10" V01="6" V02="8"/>
<Triangle1 V00="11" V01="6" V02="10"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="13" V01="10" V02="14"/>
<Triangle1 V00="10" V01="8" V02="14"/>
<Triangle1 V00="14" V01="8" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="105" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="5" V01="2" V02="4"/>
<Triangle1 V00="5" V01="0" V02="2"/>
<Triangle1 V00="6" V01="0" V02="5"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="7" V01="9" V02="10"/>
<Triangle1 V00="11" V01="7" V02="10"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="14" V01="15" V02="12"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="121" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="4" V01="0" V02="5"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="10" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="11" V01="9" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="7" V01="8" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyCustomDL_vtx_0" VertexBufferIndex="0" VertexOffset="137" Count="12"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<EndDisplayList/>
</DisplayList>
@@ -1,151 +1,130 @@
<Vertex Version="0">
<Vtx X="-23" Y="-23" Z="4" S="-900" T="-580" R="204" G="204" B="104" A="255"/>
<Vtx X="0" Y="0" Z="4" S="-772" T="-580" R="52" G="52" B="104" A="255"/>
<Vtx X="-3" Y="3" Z="0" S="-772" T="-708" R="235" G="125" B="0" A="255"/>
<Vtx X="-26" Y="-19" Z="0" S="-900" T="-708" R="131" G="21" B="0" A="255"/>
<Vtx X="-23" Y="-23" Z="4" S="-900" T="-580" R="204" G="204" B="104" A="255"/>
<Vtx X="-3" Y="3" Z="0" S="-772" T="-708" R="235" G="125" B="0" A="255"/>
<Vtx X="0" Y="0" Z="-4" S="-772" T="-836" R="52" G="52" B="152" A="255"/>
<Vtx X="-23" Y="-23" Z="-4" S="-900" T="-836" R="204" G="204" B="152" A="255"/>
<Vtx X="3" Y="-3" Z="0" S="-772" T="-964" R="125" G="235" B="0" A="255"/>
<Vtx X="0" Y="0" Z="4" S="-644" T="-964" R="52" G="52" B="104" A="255"/>
<Vtx X="-3" Y="3" Z="0" S="-644" T="-836" R="235" G="125" B="0" A="255"/>
<Vtx X="-19" Y="-26" Z="0" S="-900" T="-964" R="21" G="131" B="0" A="255"/>
<Vtx X="3" Y="-3" Z="0" S="-772" T="-964" R="125" G="235" B="0" A="255"/>
<Vtx X="0" Y="0" Z="4" S="-772" T="-1092" R="52" G="52" B="104" A="255"/>
<Vtx X="-23" Y="-23" Z="4" S="-900" T="-1092" R="204" G="204" B="104" A="255"/>
<Vtx X="-26" Y="-19" Z="0" S="-1028" T="-836" R="131" G="21" B="0" A="255"/>
<Vtx X="-23" Y="-23" Z="4" S="-1028" T="-964" R="204" G="204" B="104" A="255"/>
<Vtx X="-11" Y="-26" Z="3" S="-900" T="-580" R="54" G="202" B="102" A="255"/>
<Vtx X="-18" Y="-18" Z="4" S="-772" T="-580" R="207" G="49" B="106" A="255"/>
<Vtx X="-21" Y="-21" Z="0" S="-772" T="-708" R="131" G="231" B="0" A="255"/>
<Vtx X="-13" Y="-28" Z="0" S="-900" T="-708" R="239" G="130" B="0" A="255"/>
<Vtx X="-18" Y="-18" Z="-4" S="-772" T="-836" R="207" G="49" B="150" A="255"/>
<Vtx X="-11" Y="-26" Z="-3" S="-900" T="-836" R="54" G="202" B="154" A="255"/>
<Vtx X="-16" Y="-16" Z="0" S="-772" T="-964" R="25" G="125" B="0" A="255"/>
<Vtx X="-18" Y="-18" Z="4" S="-644" T="-964" R="207" G="49" B="106" A="255"/>
<Vtx X="-21" Y="-21" Z="0" S="-644" T="-836" R="131" G="231" B="0" A="255"/>
<Vtx X="-9" Y="-24" Z="0" S="-900" T="-964" R="126" G="17" B="0" A="255"/>
<Vtx X="-18" Y="-18" Z="4" S="-772" T="-1092" R="207" G="49" B="106" A="255"/>
<Vtx X="-11" Y="-26" Z="3" S="-900" T="-1092" R="54" G="202" B="102" A="255"/>
<Vtx X="-13" Y="-28" Z="0" S="-1028" T="-836" R="239" G="130" B="0" A="255"/>
<Vtx X="-11" Y="-26" Z="3" S="-1028" T="-964" R="54" G="202" B="102" A="255"/>
<Vtx X="-7" Y="-19" Z="2" S="-900" T="-580" R="54" G="202" B="102" A="255"/>
<Vtx X="-13" Y="-13" Z="3" S="-772" T="-580" R="207" G="49" B="106" A="255"/>
<Vtx X="-15" Y="-15" Z="0" S="-772" T="-708" R="131" G="231" B="0" A="255"/>
<Vtx X="-9" Y="-21" Z="0" S="-900" T="-708" R="239" G="130" B="0" A="255"/>
<Vtx X="-13" Y="-13" Z="-3" S="-772" T="-836" R="207" G="49" B="150" A="255"/>
<Vtx X="-7" Y="-19" Z="-2" S="-900" T="-836" R="54" G="202" B="154" A="255"/>
<Vtx X="-11" Y="-11" Z="0" S="-772" T="-964" R="25" G="125" B="0" A="255"/>
<Vtx X="-13" Y="-13" Z="3" S="-644" T="-964" R="207" G="49" B="106" A="255"/>
<Vtx X="-15" Y="-15" Z="0" S="-644" T="-836" R="131" G="231" B="0" A="255"/>
<Vtx X="-5" Y="-18" Z="0" S="-900" T="-964" R="126" G="17" B="0" A="255"/>
<Vtx X="-13" Y="-13" Z="3" S="-772" T="-1092" R="207" G="49" B="106" A="255"/>
<Vtx X="-7" Y="-19" Z="2" S="-900" T="-1092" R="54" G="202" B="102" A="255"/>
<Vtx X="-9" Y="-21" Z="0" S="-1028" T="-836" R="239" G="130" B="0" A="255"/>
<Vtx X="-7" Y="-19" Z="2" S="-1028" T="-964" R="54" G="202" B="102" A="255"/>
<Vtx X="6" Y="17" Z="0" S="-666" T="-580" R="12" G="130" B="0" A="255"/>
<Vtx X="2" Y="15" Z="0" S="-580" T="-580" R="115" G="201" B="0" A="255"/>
<Vtx X="0" Y="18" Z="-5" S="-580" T="-708" R="237" G="243" B="131" A="255"/>
<Vtx X="5" Y="20" Z="-3" S="-666" T="-708" R="41" G="250" B="136" A="255"/>
<Vtx X="-4" Y="24" Z="-4" S="-580" T="-708" R="177" G="16" B="158" A="255"/>
<Vtx X="3" Y="24" Z="-2" S="-666" T="-708" R="86" G="28" B="167" A="255"/>
<Vtx X="3" Y="32" Z="-2" S="-580" T="-708" R="234" G="63" B="148" A="255"/>
<Vtx X="4" Y="28" Z="-1" S="-666" T="-708" R="78" G="222" B="162" A="255"/>
<Vtx X="11" Y="32" Z="0" S="-666" T="-708" R="126" G="18" B="0" A="255"/>
<Vtx X="3" Y="24" Z="2" S="-666" T="-836" R="86" G="28" B="89" A="255"/>
<Vtx X="4" Y="23" Z="0" S="-666" T="-836" R="94" G="86" B="0" A="255"/>
<Vtx X="17" Y="17" Z="-3" S="-751" T="-708" R="16" G="16" B="131" A="255"/>
<Vtx X="21" Y="21" Z="0" S="-751" T="-836" R="90" G="90" B="0" A="255"/>
<Vtx X="5" Y="20" Z="3" S="-666" T="-964" R="41" G="250" B="120" A="255"/>
<Vtx X="3" Y="24" Z="2" S="-666" T="-964" R="86" G="28" B="89" A="255"/>
<Vtx X="0" Y="18" Z="5" S="-580" T="-964" R="237" G="243" B="125" A="255"/>
<Vtx X="0" Y="18" Z="5" S="-580" T="-964" R="237" G="243" B="125" A="255"/>
<Vtx X="3" Y="24" Z="2" S="-666" T="-964" R="86" G="28" B="89" A="255"/>
<Vtx X="-4" Y="24" Z="4" S="-580" T="-964" R="177" G="16" B="98" A="255"/>
<Vtx X="4" Y="28" Z="1" S="-666" T="-964" R="78" G="222" B="94" A="255"/>
<Vtx X="3" Y="32" Z="2" S="-580" T="-964" R="234" G="63" B="108" A="255"/>
<Vtx X="11" Y="32" Z="0" S="-580" T="-964" R="126" G="18" B="0" A="255"/>
<Vtx X="5" Y="20" Z="3" S="-666" T="-964" R="41" G="250" B="120" A="255"/>
<Vtx X="2" Y="15" Z="0" S="-580" T="-1092" R="115" G="201" B="0" A="255"/>
<Vtx X="6" Y="17" Z="0" S="-666" T="-1092" R="12" G="130" B="0" A="255"/>
<Vtx X="17" Y="17" Z="3" S="-751" T="-964" R="16" G="16" B="125" A="255"/>
<Vtx X="15" Y="15" Z="0" S="-751" T="-1092" R="166" G="166" B="0" A="255"/>
<Vtx X="20" Y="5" Z="3" S="-836" T="-964" R="250" G="41" B="120" A="255"/>
<Vtx X="17" Y="6" Z="0" S="-836" T="-1092" R="130" G="12" B="0" A="255"/>
<Vtx X="18" Y="0" Z="5" S="-922" T="-964" R="243" G="237" B="125" A="255"/>
<Vtx X="15" Y="2" Z="0" S="-922" T="-1092" R="201" G="115" B="0" A="255"/>
<Vtx X="0" Y="0" Z="5" S="-1007" T="-964" R="228" G="228" B="121" A="255"/>
<Vtx X="0" Y="0" Z="5" S="-1007" T="-964" R="228" G="228" B="121" A="255"/>
<Vtx X="15" Y="2" Z="0" S="-922" T="-1092" R="201" G="115" B="0" A="255"/>
<Vtx X="-26" Y="-19" Z="0" S="-1028" T="-836" R="131" G="21" B="0" A="255"/>
<Vtx X="-18" Y="-18" Z="4" S="-772" T="-580" R="206" G="50" B="106" A="255"/>
<Vtx X="-13" Y="-28" Z="0" S="-900" T="-708" R="238" G="130" B="0" A="255"/>
<Vtx X="-11" Y="-26" Z="3" S="-900" T="-580" R="54" G="202" B="101" A="255"/>
<Vtx X="-21" Y="-21" Z="0" S="-772" T="-708" R="132" G="231" B="0" A="255"/>
<Vtx X="-11" Y="-26" Z="-3" S="-900" T="-836" R="54" G="202" B="155" A="255"/>
<Vtx X="-18" Y="-18" Z="-4" S="-772" T="-836" R="206" G="50" B="150" A="255"/>
<Vtx X="-9" Y="-24" Z="0" S="-900" T="-964" R="126" G="18" B="0" A="255"/>
<Vtx X="-16" Y="-16" Z="0" S="-772" T="-964" R="25" G="124" B="0" A="255"/>
<Vtx X="-18" Y="-18" Z="4" S="-644" T="-964" R="206" G="50" B="106" A="255"/>
<Vtx X="-21" Y="-21" Z="0" S="-644" T="-836" R="132" G="231" B="0" A="255"/>
<Vtx X="-11" Y="-26" Z="3" S="-900" T="-1092" R="54" G="202" B="101" A="255"/>
<Vtx X="-18" Y="-18" Z="4" S="-772" T="-1092" R="206" G="50" B="106" A="255"/>
<Vtx X="-11" Y="-26" Z="3" S="-1028" T="-964" R="54" G="202" B="101" A="255"/>
<Vtx X="-13" Y="-28" Z="0" S="-1028" T="-836" R="238" G="130" B="0" A="255"/>
<Vtx X="-13" Y="-13" Z="3" S="-772" T="-580" R="206" G="50" B="106" A="255"/>
<Vtx X="-9" Y="-21" Z="0" S="-900" T="-708" R="238" G="130" B="0" A="255"/>
<Vtx X="-7" Y="-19" Z="2" S="-900" T="-580" R="54" G="202" B="101" A="255"/>
<Vtx X="-15" Y="-15" Z="0" S="-772" T="-708" R="132" G="231" B="0" A="255"/>
<Vtx X="-7" Y="-19" Z="-2" S="-900" T="-836" R="54" G="202" B="155" A="255"/>
<Vtx X="-13" Y="-13" Z="-3" S="-772" T="-836" R="206" G="50" B="150" A="255"/>
<Vtx X="-7" Y="-19" Z="-2" S="-900" T="-836" R="54" G="202" B="155" A="255"/>
<Vtx X="-13" Y="-13" Z="-3" S="-772" T="-836" R="206" G="50" B="150" A="255"/>
<Vtx X="-11" Y="-11" Z="0" S="-772" T="-964" R="25" G="124" B="0" A="255"/>
<Vtx X="-15" Y="-15" Z="0" S="-644" T="-836" R="132" G="231" B="0" A="255"/>
<Vtx X="-13" Y="-13" Z="3" S="-644" T="-964" R="206" G="50" B="106" A="255"/>
<Vtx X="-5" Y="-18" Z="0" S="-900" T="-964" R="126" G="18" B="0" A="255"/>
<Vtx X="-7" Y="-19" Z="2" S="-900" T="-1092" R="54" G="202" B="101" A="255"/>
<Vtx X="-13" Y="-13" Z="3" S="-772" T="-1092" R="206" G="50" B="106" A="255"/>
<Vtx X="-7" Y="-19" Z="2" S="-1028" T="-964" R="54" G="202" B="101" A="255"/>
<Vtx X="-9" Y="-21" Z="0" S="-1028" T="-836" R="238" G="130" B="0" A="255"/>
<Vtx X="0" Y="18" Z="5" S="-1092" T="-964" R="236" G="242" B="125" A="255"/>
<Vtx X="4" Y="4" Z="0" S="-1007" T="-1092" R="90" G="90" B="0" A="255"/>
<Vtx X="0" Y="18" Z="5" S="-1092" T="-964" R="237" G="243" B="125" A="255"/>
<Vtx X="2" Y="15" Z="0" S="-1092" T="-1092" R="115" G="201" B="0" A="255"/>
<Vtx X="0" Y="0" Z="5" S="-1007" T="-964" R="228" G="228" B="121" A="255"/>
<Vtx X="-4" Y="21" Z="0" S="-1092" T="-836" R="133" G="223" B="0" A="255"/>
<Vtx X="-4" Y="-4" Z="0" S="-1007" T="-836" R="166" G="166" B="0" A="255"/>
<Vtx X="0" Y="18" Z="-5" S="-1092" T="-708" R="237" G="243" B="131" A="255"/>
<Vtx X="-4" Y="24" Z="-4" S="-1092" T="-708" R="177" G="16" B="158" A="255"/>
<Vtx X="-5" Y="25" Z="0" S="-1092" T="-772" R="133" G="31" B="0" A="255"/>
<Vtx X="-4" Y="24" Z="4" S="-1092" T="-836" R="177" G="16" B="98" A="255"/>
<Vtx X="-4" Y="24" Z="4" S="-1092" T="-836" R="177" G="17" B="98" A="255"/>
<Vtx X="-5" Y="25" Z="0" S="-1092" T="-772" R="133" G="32" B="0" A="255"/>
<Vtx X="3" Y="32" Z="2" S="-1092" T="-836" R="234" G="63" B="108" A="255"/>
<Vtx X="3" Y="34" Z="0" S="-1092" T="-772" R="223" G="123" B="0" A="255"/>
<Vtx X="11" Y="32" Z="0" S="-1092" T="-708" R="126" G="18" B="0" A="255"/>
<Vtx X="3" Y="32" Z="-2" S="-1092" T="-708" R="234" G="63" B="148" A="255"/>
<Vtx X="-4" Y="24" Z="-4" S="-1092" T="-708" R="177" G="17" B="158" A="255"/>
<Vtx X="0" Y="18" Z="-5" S="-1092" T="-708" R="236" G="242" B="131" A="255"/>
<Vtx X="0" Y="0" Z="-5" S="-1007" T="-708" R="228" G="228" B="135" A="255"/>
<Vtx X="4" Y="4" Z="0" S="-1007" T="-580" R="90" G="90" B="0" A="255"/>
<Vtx X="2" Y="15" Z="0" S="-1092" T="-580" R="115" G="201" B="0" A="255"/>
<Vtx X="18" Y="0" Z="-5" S="-922" T="-708" R="242" G="236" B="131" A="255"/>
<Vtx X="15" Y="2" Z="0" S="-922" T="-580" R="201" G="115" B="0" A="255"/>
<Vtx X="20" Y="5" Z="-3" S="-836" T="-708" R="250" G="41" B="136" A="255"/>
<Vtx X="17" Y="6" Z="0" S="-836" T="-580" R="130" G="13" B="0" A="255"/>
<Vtx X="17" Y="17" Z="-3" S="-751" T="-708" R="16" G="16" B="131" A="255"/>
<Vtx X="15" Y="15" Z="0" S="-751" T="-580" R="166" G="166" B="0" A="255"/>
<Vtx X="6" Y="17" Z="0" S="-666" T="-580" R="13" G="130" B="0" A="255"/>
<Vtx X="17" Y="17" Z="-3" S="-751" T="-708" R="16" G="16" B="131" A="255"/>
<Vtx X="15" Y="15" Z="0" S="-751" T="-580" R="166" G="166" B="0" A="255"/>
<Vtx X="5" Y="20" Z="-3" S="-666" T="-708" R="41" G="250" B="136" A="255"/>
<Vtx X="2" Y="15" Z="0" S="-580" T="-580" R="115" G="201" B="0" A="255"/>
<Vtx X="0" Y="18" Z="-5" S="-580" T="-708" R="236" G="242" B="131" A="255"/>
<Vtx X="3" Y="24" Z="-2" S="-666" T="-708" R="86" G="29" B="167" A="255"/>
<Vtx X="-4" Y="24" Z="-4" S="-580" T="-708" R="177" G="17" B="158" A="255"/>
<Vtx X="4" Y="28" Z="-1" S="-666" T="-708" R="78" G="222" B="162" A="255"/>
<Vtx X="3" Y="32" Z="-2" S="-580" T="-708" R="234" G="63" B="148" A="255"/>
<Vtx X="11" Y="32" Z="0" S="-666" T="-708" R="126" G="18" B="0" A="255"/>
<Vtx X="4" Y="28" Z="1" S="-666" T="-836" R="78" G="222" B="94" A="255"/>
<Vtx X="11" Y="32" Z="0" S="-666" T="-836" R="126" G="18" B="0" A="255"/>
<Vtx X="3" Y="24" Z="2" S="-666" T="-836" R="86" G="29" B="89" A="255"/>
<Vtx X="4" Y="23" Z="0" S="-666" T="-836" R="93" G="86" B="0" A="255"/>
<Vtx X="21" Y="21" Z="0" S="-751" T="-836" R="90" G="90" B="0" A="255"/>
<Vtx X="5" Y="20" Z="3" S="-666" T="-964" R="41" G="250" B="120" A="255"/>
<Vtx X="17" Y="17" Z="3" S="-751" T="-964" R="16" G="16" B="125" A="255"/>
<Vtx X="23" Y="4" Z="0" S="-836" T="-836" R="86" G="94" B="0" A="255"/>
<Vtx X="5" Y="20" Z="3" S="-666" T="-964" R="41" G="250" B="120" A="255"/>
<Vtx X="3" Y="24" Z="2" S="-666" T="-964" R="86" G="29" B="89" A="255"/>
<Vtx X="0" Y="18" Z="5" S="-580" T="-964" R="236" G="242" B="125" A="255"/>
<Vtx X="-4" Y="24" Z="4" S="-580" T="-964" R="177" G="17" B="98" A="255"/>
<Vtx X="4" Y="28" Z="1" S="-666" T="-964" R="78" G="222" B="94" A="255"/>
<Vtx X="3" Y="32" Z="2" S="-580" T="-964" R="234" G="63" B="108" A="255"/>
<Vtx X="11" Y="32" Z="0" S="-580" T="-964" R="126" G="18" B="0" A="255"/>
<Vtx X="2" Y="15" Z="0" S="-580" T="-1092" R="115" G="201" B="0" A="255"/>
<Vtx X="6" Y="17" Z="0" S="-666" T="-1092" R="13" G="130" B="0" A="255"/>
<Vtx X="15" Y="15" Z="0" S="-751" T="-1092" R="166" G="166" B="0" A="255"/>
<Vtx X="17" Y="6" Z="0" S="-836" T="-1092" R="130" G="13" B="0" A="255"/>
<Vtx X="20" Y="5" Z="3" S="-836" T="-964" R="250" G="41" B="120" A="255"/>
<Vtx X="24" Y="3" Z="2" S="-836" T="-836" R="28" G="86" B="89" A="255"/>
<Vtx X="24" Y="3" Z="-2" S="-836" T="-708" R="28" G="86" B="167" A="255"/>
<Vtx X="15" Y="2" Z="0" S="-922" T="-1092" R="201" G="115" B="0" A="255"/>
<Vtx X="18" Y="0" Z="5" S="-922" T="-964" R="242" G="236" B="125" A="255"/>
<Vtx X="4" Y="4" Z="0" S="-1007" T="-1092" R="90" G="90" B="0" A="255"/>
<Vtx X="18" Y="0" Z="5" S="-922" T="-964" R="242" G="236" B="125" A="255"/>
<Vtx X="4" Y="4" Z="0" S="-1007" T="-1092" R="90" G="90" B="0" A="255"/>
<Vtx X="0" Y="0" Z="5" S="-1007" T="-964" R="228" G="228" B="121" A="255"/>
<Vtx X="21" Y="-4" Z="0" S="-922" T="-836" R="223" G="133" B="0" A="255"/>
<Vtx X="-4" Y="-4" Z="0" S="-1007" T="-836" R="166" G="166" B="0" A="255"/>
<Vtx X="-4" Y="21" Z="0" S="-1092" T="-836" R="133" G="223" B="0" A="255"/>
<Vtx X="0" Y="0" Z="-5" S="-1007" T="-708" R="228" G="228" B="135" A="255"/>
<Vtx X="18" Y="0" Z="-5" S="-922" T="-708" R="242" G="236" B="131" A="255"/>
<Vtx X="24" Y="-4" Z="-4" S="-922" T="-708" R="17" G="177" B="158" A="255"/>
<Vtx X="24" Y="3" Z="-2" S="-836" T="-708" R="29" G="86" B="167" A="255"/>
<Vtx X="20" Y="5" Z="-3" S="-836" T="-708" R="250" G="41" B="136" A="255"/>
<Vtx X="23" Y="4" Z="0" S="-836" T="-836" R="86" G="93" B="0" A="255"/>
<Vtx X="17" Y="17" Z="-3" S="-751" T="-708" R="16" G="16" B="131" A="255"/>
<Vtx X="21" Y="21" Z="0" S="-751" T="-836" R="90" G="90" B="0" A="255"/>
<Vtx X="17" Y="17" Z="3" S="-751" T="-964" R="16" G="16" B="125" A="255"/>
<Vtx X="20" Y="5" Z="3" S="-836" T="-964" R="250" G="41" B="120" A="255"/>
<Vtx X="24" Y="3" Z="2" S="-836" T="-836" R="29" G="86" B="89" A="255"/>
<Vtx X="28" Y="4" Z="1" S="-836" T="-836" R="222" G="78" B="94" A="255"/>
<Vtx X="28" Y="4" Z="-1" S="-836" T="-708" R="222" G="78" B="162" A="255"/>
<Vtx X="32" Y="11" Z="0" S="-836" T="-708" R="18" G="126" B="0" A="255"/>
<Vtx X="24" Y="-4" Z="-4" S="-922" T="-708" R="16" G="177" B="158" A="255"/>
<Vtx X="18" Y="0" Z="-5" S="-922" T="-708" R="243" G="237" B="131" A="255"/>
<Vtx X="21" Y="-4" Z="0" S="-922" T="-836" R="223" G="133" B="0" A="255"/>
<Vtx X="25" Y="-5" Z="0" S="-922" T="-772" R="31" G="133" B="0" A="255"/>
<Vtx X="32" Y="3" Z="-2" S="-922" T="-708" R="63" G="234" B="148" A="255"/>
<Vtx X="32" Y="11" Z="0" S="-922" T="-708" R="18" G="126" B="0" A="255"/>
<Vtx X="25" Y="-5" Z="0" S="-922" T="-772" R="31" G="133" B="0" A="255"/>
<Vtx X="32" Y="3" Z="-2" S="-922" T="-708" R="63" G="234" B="148" A="255"/>
<Vtx X="25" Y="-5" Z="0" S="-922" T="-772" R="32" G="133" B="0" A="255"/>
<Vtx X="24" Y="-4" Z="4" S="-922" T="-836" R="17" G="177" B="98" A="255"/>
<Vtx X="32" Y="3" Z="2" S="-922" T="-836" R="63" G="234" B="108" A="255"/>
<Vtx X="34" Y="3" Z="0" S="-922" T="-772" R="123" G="223" B="0" A="255"/>
<Vtx X="32" Y="11" Z="0" S="-922" T="-836" R="18" G="126" B="0" A="255"/>
<Vtx X="32" Y="3" Z="2" S="-922" T="-836" R="63" G="234" B="108" A="255"/>
<Vtx X="24" Y="-4" Z="4" S="-922" T="-836" R="16" G="177" B="98" A="255"/>
<Vtx X="21" Y="-4" Z="0" S="-922" T="-836" R="223" G="133" B="0" A="255"/>
<Vtx X="15" Y="15" Z="0" S="-751" T="-580" R="166" G="166" B="0" A="255"/>
<Vtx X="6" Y="17" Z="0" S="-666" T="-580" R="12" G="130" B="0" A="255"/>
<Vtx X="5" Y="20" Z="-3" S="-666" T="-708" R="41" G="250" B="136" A="255"/>
<Vtx X="17" Y="17" Z="-3" S="-751" T="-708" R="16" G="16" B="131" A="255"/>
<Vtx X="17" Y="6" Z="0" S="-836" T="-580" R="130" G="12" B="0" A="255"/>
<Vtx X="20" Y="5" Z="-3" S="-836" T="-708" R="250" G="41" B="136" A="255"/>
<Vtx X="21" Y="21" Z="0" S="-751" T="-836" R="90" G="90" B="0" A="255"/>
<Vtx X="23" Y="4" Z="0" S="-836" T="-836" R="86" G="94" B="0" A="255"/>
<Vtx X="24" Y="3" Z="-2" S="-836" T="-708" R="28" G="86" B="167" A="255"/>
<Vtx X="18" Y="0" Z="-5" S="-922" T="-708" R="243" G="237" B="131" A="255"/>
<Vtx X="20" Y="5" Z="-3" S="-836" T="-708" R="250" G="41" B="136" A="255"/>
<Vtx X="24" Y="3" Z="-2" S="-836" T="-708" R="28" G="86" B="167" A="255"/>
<Vtx X="15" Y="2" Z="0" S="-922" T="-580" R="201" G="115" B="0" A="255"/>
<Vtx X="4" Y="4" Z="0" S="-1007" T="-580" R="90" G="90" B="0" A="255"/>
<Vtx X="0" Y="0" Z="-5" S="-1007" T="-708" R="228" G="228" B="135" A="255"/>
<Vtx X="21" Y="-4" Z="0" S="-922" T="-836" R="223" G="133" B="0" A="255"/>
<Vtx X="-4" Y="-4" Z="0" S="-1007" T="-836" R="166" G="166" B="0" A="255"/>
<Vtx X="18" Y="0" Z="5" S="-922" T="-964" R="243" G="237" B="125" A="255"/>
<Vtx X="24" Y="-4" Z="4" S="-922" T="-964" R="16" G="177" B="98" A="255"/>
<Vtx X="20" Y="5" Z="3" S="-836" T="-964" R="250" G="41" B="120" A="255"/>
<Vtx X="24" Y="3" Z="2" S="-836" T="-964" R="28" G="86" B="89" A="255"/>
<Vtx X="32" Y="3" Z="2" S="-922" T="-964" R="63" G="234" B="108" A="255"/>
<Vtx X="24" Y="-4" Z="4" S="-922" T="-964" R="17" G="177" B="98" A="255"/>
<Vtx X="24" Y="3" Z="2" S="-836" T="-964" R="29" G="86" B="89" A="255"/>
<Vtx X="28" Y="4" Z="1" S="-836" T="-964" R="222" G="78" B="94" A="255"/>
<Vtx X="32" Y="3" Z="2" S="-922" T="-964" R="63" G="234" B="108" A="255"/>
<Vtx X="32" Y="11" Z="0" S="-836" T="-964" R="18" G="126" B="0" A="255"/>
<Vtx X="0" Y="0" Z="5" S="-1007" T="-964" R="228" G="228" B="121" A="255"/>
<Vtx X="15" Y="2" Z="0" S="-922" T="-580" R="201" G="115" B="0" A="255"/>
<Vtx X="17" Y="6" Z="0" S="-836" T="-580" R="130" G="12" B="0" A="255"/>
<Vtx X="20" Y="5" Z="-3" S="-836" T="-708" R="250" G="41" B="136" A="255"/>
<Vtx X="2" Y="15" Z="0" S="-1092" T="-580" R="115" G="201" B="0" A="255"/>
<Vtx X="4" Y="4" Z="0" S="-1007" T="-580" R="90" G="90" B="0" A="255"/>
<Vtx X="0" Y="0" Z="-5" S="-1007" T="-708" R="228" G="228" B="135" A="255"/>
<Vtx X="0" Y="18" Z="-5" S="-1092" T="-708" R="237" G="243" B="131" A="255"/>
<Vtx X="-4" Y="-4" Z="0" S="-1007" T="-836" R="166" G="166" B="0" A="255"/>
<Vtx X="3" Y="24" Z="2" S="-666" T="-836" R="86" G="28" B="89" A="255"/>
<Vtx X="4" Y="28" Z="-1" S="-666" T="-708" R="78" G="222" B="162" A="255"/>
<Vtx X="4" Y="28" Z="1" S="-666" T="-836" R="78" G="222" B="94" A="255"/>
<Vtx X="11" Y="32" Z="0" S="-666" T="-836" R="126" G="18" B="0" A="255"/>
</Vertex>
@@ -1,11 +1,81 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bosskey/mat_gBossKeyIconFireTempleDL_f3dlite_BossKeyGem_FireTemple"/>
<CallDisplayList Path="objects/object_bosskey/gBossKeyIconFireTempleDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="673" T="1329" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/gSoHHiliteCausticsTex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="255" G="0" B="0" A="178"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconFireTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="6" V01="5" V02="0"/>
<Triangle1 V00="6" V01="0" V02="2"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="7" V01="2" V02="8"/>
<Triangle1 V00="9" V01="8" V02="2"/>
<Triangle1 V00="2" V01="1" V02="9"/>
<Triangle1 V00="10" V01="9" V02="1"/>
<Triangle1 V00="1" V01="11" V02="10"/>
<Triangle1 V00="11" V01="1" V02="3"/>
<Triangle1 V00="3" V01="12" V02="11"/>
<Triangle1 V00="3" V01="13" V02="12"/>
<Triangle1 V00="13" V01="3" V02="4"/>
<Triangle1 V00="4" V01="10" V02="13"/>
<Triangle1 V00="10" V01="4" V02="9"/>
<Triangle1 V00="5" V01="9" V02="4"/>
<Triangle1 V00="9" V01="5" V02="8"/>
<Triangle1 V00="14" V01="8" V02="5"/>
<Triangle1 V00="5" V01="6" V02="14"/>
<Triangle1 V00="6" V01="15" V02="14"/>
<Triangle1 V00="16" V01="15" V02="6"/>
<Triangle1 V00="16" V01="6" V02="17"/>
<Triangle1 V00="6" V01="7" V02="17"/>
<Triangle1 V00="17" V01="7" V02="18"/>
<Triangle1 V00="7" V01="19" V02="18"/>
<Triangle1 V00="7" V01="8" V02="19"/>
<Triangle1 V00="8" V01="20" V02="19"/>
<Triangle1 V00="8" V01="21" V02="20"/>
<Triangle1 V00="14" V01="21" V02="8"/>
<Triangle1 V00="14" V01="18" V02="21"/>
<Triangle1 V00="15" V01="18" V02="14"/>
<Triangle1 V00="15" V01="22" V02="18"/>
<Triangle1 V00="15" V01="23" V02="22"/>
<Triangle1 V00="16" V01="23" V02="15"/>
<Triangle1 V00="24" V01="23" V02="16"/>
<Triangle1 V00="24" V01="16" V02="25"/>
<Triangle1 V00="16" V01="17" V02="25"/>
<Triangle1 V00="17" V01="22" V02="25"/>
<Triangle1 V00="17" V01="18" V02="22"/>
<Triangle1 V00="25" V01="22" V02="26"/>
<Triangle1 V00="23" V01="26" V02="22"/>
<Triangle1 V00="23" V01="27" V02="26"/>
<Triangle1 V00="24" V01="27" V02="23"/>
<Triangle1 V00="28" V01="27" V02="24"/>
<Triangle1 V00="28" V01="24" V02="29"/>
<Triangle1 V00="24" V01="25" V02="29"/>
<Triangle1 V00="25" V01="26" V02="29"/>
<Triangle1 V00="29" V01="26" V02="30"/>
<Triangle1 V00="27" V01="30" V02="26"/>
<Triangle1 V00="30" V01="27" V02="28"/>
<Triangle1 V00="30" V01="28" V02="29"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="18" V01="20" V02="21"/>
<Triangle1 V00="31" V01="11" V02="12"/>
<Triangle1 V00="31" V01="10" V02="11"/>
<Triangle1 V00="31" V01="13" V02="10"/>
<Triangle1 V00="31" V01="12" V02="13"/>
<EndDisplayList/>
</DisplayList>
@@ -1,68 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bosskey/gBossKeyIconFireTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="6" V01="5" V02="0"/>
<Triangle1 V00="6" V01="0" V02="2"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="7" V01="2" V02="8"/>
<Triangle1 V00="9" V01="8" V02="2"/>
<Triangle1 V00="2" V01="1" V02="9"/>
<Triangle1 V00="10" V01="9" V02="1"/>
<Triangle1 V00="1" V01="11" V02="10"/>
<Triangle1 V00="11" V01="1" V02="3"/>
<Triangle1 V00="3" V01="12" V02="11"/>
<Triangle1 V00="3" V01="13" V02="12"/>
<Triangle1 V00="13" V01="3" V02="4"/>
<Triangle1 V00="4" V01="10" V02="13"/>
<Triangle1 V00="10" V01="4" V02="9"/>
<Triangle1 V00="5" V01="9" V02="4"/>
<Triangle1 V00="9" V01="5" V02="8"/>
<Triangle1 V00="14" V01="8" V02="5"/>
<Triangle1 V00="5" V01="6" V02="14"/>
<Triangle1 V00="6" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconFireTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="2" V01="4" V02="3"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="10" V01="9" V02="7"/>
<Triangle1 V00="10" V01="5" V02="9"/>
<Triangle1 V00="1" V01="5" V02="10"/>
<Triangle1 V00="1" V01="11" V02="5"/>
<Triangle1 V00="1" V01="12" V02="11"/>
<Triangle1 V00="0" V01="12" V02="1"/>
<Triangle1 V00="13" V01="12" V02="0"/>
<Triangle1 V00="13" V01="0" V02="14"/>
<Triangle1 V00="0" V01="3" V02="14"/>
<Triangle1 V00="3" V01="11" V02="14"/>
<Triangle1 V00="3" V01="5" V02="11"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<Triangle1 V00="12" V01="15" V02="11"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconFireTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="4" V01="1" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="6" V01="2" V02="5"/>
<Triangle1 V00="5" V01="2" V02="7"/>
<Triangle1 V00="1" V01="7" V02="2"/>
<Triangle1 V00="7" V01="1" V02="4"/>
<Triangle1 V00="7" V01="4" V02="5"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="15" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconFireTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="4"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<EndDisplayList/>
</DisplayList>
@@ -9,46 +9,26 @@
<Vtx X="8" Y="8" Z="2" S="-1285" T="1119" R="248" G="248" B="126" A="254"/>
<Vtx X="11" Y="8" Z="0" S="-1030" T="859" R="125" G="20" B="0" A="254"/>
<Vtx X="13" Y="8" Z="0" S="-1029" T="765" R="247" G="127" B="0" A="254"/>
<Vtx X="14" Y="9" Z="0" S="-1029" T="624" R="177" G="100" B="0" A="254"/>
<Vtx X="14" Y="9" Z="0" S="-1029" T="624" R="177" G="99" B="0" A="254"/>
<Vtx X="15" Y="8" Z="1" S="-1054" T="678" R="25" G="8" B="124" A="254"/>
<Vtx X="16" Y="7" Z="0" S="-1029" T="694" R="110" G="192" B="0" A="254"/>
<Vtx X="15" Y="8" Z="-1" S="-1054" T="678" R="25" G="8" B="132" A="254"/>
<Vtx X="8" Y="8" Z="-2" S="-1285" T="1119" R="248" G="248" B="130" A="254"/>
<Vtx X="6" Y="11" Z="-1" S="-1473" T="971" R="241" G="13" B="131" A="254"/>
<Vtx X="4" Y="9" Z="0" S="-1541" T="1086" R="132" G="228" B="0" A="254"/>
<Vtx X="6" Y="11" Z="-1" S="-1473" T="971" R="241" G="13" B="131" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="1275" R="166" G="166" B="0" A="254"/>
<Vtx X="6" Y="11" Z="1" S="-1473" T="971" R="241" G="13" B="125" A="254"/>
<Vtx X="8" Y="8" Z="2" S="-1285" T="1119" R="248" G="248" B="126" A="254"/>
<Vtx X="8" Y="11" Z="0" S="-1540" T="859" R="20" G="125" B="0" A="254"/>
<Vtx X="12" Y="12" Z="1" S="-1285" T="425" R="20" G="20" B="124" A="254"/>
<Vtx X="11" Y="8" Z="0" S="-1030" T="859" R="125" G="20" B="0" A="254"/>
<Vtx X="15" Y="15" Z="0" S="-1285" T="251" R="90" G="90" B="0" A="254"/>
<Vtx X="12" Y="12" Z="-1" S="-1285" T="425" R="20" G="20" B="132" A="254"/>
<Vtx X="8" Y="8" Z="-2" S="-1285" T="1119" R="248" G="248" B="130" A="254"/>
<Vtx X="8" Y="13" Z="0" S="-1541" T="765" R="127" G="247" B="0" A="254"/>
<Vtx X="6" Y="13" Z="-1" S="-1505" T="832" R="242" G="21" B="132" A="254"/>
<Vtx X="4" Y="13" Z="0" S="-1541" T="875" R="137" G="44" B="0" A="254"/>
<Vtx X="6" Y="13" Z="1" S="-1505" T="832" R="242" G="21" B="124" A="254"/>
<Vtx X="9" Y="14" Z="0" S="-1541" T="624" R="100" G="177" B="0" A="254"/>
<Vtx X="6" Y="13" Z="-1" S="-1505" T="832" R="242" G="21" B="132" A="254"/>
<Vtx X="9" Y="14" Z="0" S="-1541" T="624" R="99" G="177" B="0" A="254"/>
<Vtx X="8" Y="15" Z="-1" S="-1516" T="678" R="8" G="25" B="132" A="254"/>
<Vtx X="9" Y="14" Z="0" S="-1541" T="624" R="100" G="177" B="0" A="254"/>
<Vtx X="4" Y="13" Z="0" S="-1541" T="875" R="137" G="44" B="0" A="254"/>
<Vtx X="7" Y="16" Z="0" S="-1541" T="694" R="192" G="110" B="0" A="254"/>
<Vtx X="8" Y="15" Z="1" S="-1516" T="678" R="8" G="25" B="124" A="254"/>
<Vtx X="6" Y="13" Z="1" S="-1505" T="832" R="242" G="21" B="124" A="254"/>
<Vtx X="11" Y="16" Z="0" S="-1541" T="472" R="113" G="59" B="0" A="254"/>
<Vtx X="8" Y="11" Z="0" S="-1540" T="859" R="20" G="125" B="0" A="254"/>
<Vtx X="12" Y="12" Z="1" S="-1285" T="425" R="20" G="20" B="124" A="254"/>
<Vtx X="15" Y="15" Z="0" S="-1285" T="251" R="90" G="90" B="0" A="254"/>
<Vtx X="12" Y="12" Z="-1" S="-1285" T="425" R="20" G="20" B="132" A="254"/>
<Vtx X="16" Y="11" Z="0" S="-1029" T="472" R="59" G="113" B="0" A="254"/>
<Vtx X="15" Y="8" Z="1" S="-1054" T="678" R="25" G="8" B="124" A="254"/>
<Vtx X="16" Y="7" Z="0" S="-1029" T="694" R="110" G="192" B="0" A="254"/>
<Vtx X="14" Y="9" Z="0" S="-1029" T="624" R="177" G="100" B="0" A="254"/>
<Vtx X="16" Y="11" Z="0" S="-1029" T="472" R="59" G="113" B="0" A="254"/>
<Vtx X="15" Y="8" Z="-1" S="-1054" T="678" R="25" G="8" B="132" A="254"/>
<Vtx X="14" Y="9" Z="0" S="-1029" T="624" R="177" G="100" B="0" A="254"/>
<Vtx X="16" Y="7" Z="0" S="-1029" T="694" R="110" G="192" B="0" A="254"/>
</Vertex>
@@ -1,11 +1,118 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bosskey/mat_gBossKeyIconForestTempleDL_f3dlite_BossKeyGem_ForestTemple"/>
<CallDisplayList Path="objects/object_bosskey/gBossKeyIconForestTempleDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="1329" T="673" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/gSoHHiliteCausticsTex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="0" G="255" B="0" A="178"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconForestTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="4" V01="0" V02="2"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="6" V01="2" V02="7"/>
<Triangle1 V00="7" V01="2" V02="1"/>
<Triangle1 V00="3" V01="7" V02="1"/>
<Triangle1 V00="3" V01="6" V02="7"/>
<Triangle1 V00="6" V01="3" V02="8"/>
<Triangle1 V00="4" V01="8" V02="3"/>
<Triangle1 V00="8" V01="4" V02="9"/>
<Triangle1 V00="9" V01="4" V02="5"/>
<Triangle1 V00="5" V01="10" V02="9"/>
<Triangle1 V00="5" V01="11" V02="10"/>
<Triangle1 V00="11" V01="5" V02="6"/>
<Triangle1 V00="8" V01="11" V02="6"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="9" V01="12" V02="8"/>
<Triangle1 V00="9" V01="13" V02="12"/>
<Triangle1 V00="10" V01="13" V02="9"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="14" V01="15" V02="16"/>
<Triangle1 V00="17" V01="15" V02="14"/>
<Triangle1 V00="17" V01="14" V02="18"/>
<Triangle1 V00="18" V01="14" V02="16"/>
<Triangle1 V00="16" V01="19" V02="18"/>
<Triangle1 V00="16" V01="20" V02="19"/>
<Triangle1 V00="20" V01="16" V02="21"/>
<Triangle1 V00="21" V01="16" V02="15"/>
<Triangle1 V00="17" V01="21" V02="15"/>
<Triangle1 V00="17" V01="20" V02="21"/>
<Triangle1 V00="20" V01="17" V02="22"/>
<Triangle1 V00="18" V01="22" V02="17"/>
<Triangle1 V00="22" V01="18" V02="23"/>
<Triangle1 V00="23" V01="18" V02="19"/>
<Triangle1 V00="19" V01="24" V02="23"/>
<Triangle1 V00="19" V01="25" V02="24"/>
<Triangle1 V00="25" V01="19" V02="20"/>
<Triangle1 V00="22" V01="25" V02="20"/>
<Triangle1 V00="25" V01="22" V02="26"/>
<Triangle1 V00="23" V01="26" V02="22"/>
<Triangle1 V00="23" V01="27" V02="26"/>
<Triangle1 V00="24" V01="27" V02="23"/>
<Triangle1 V00="24" V01="25" V02="27"/>
<Triangle1 V00="25" V01="26" V02="27"/>
<Triangle1 V00="28" V01="29" V02="30"/>
<Triangle1 V00="31" V01="29" V02="28"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconForestTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="28"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="5" V01="3" V02="6"/>
<Triangle1 V00="6" V01="3" V02="7"/>
<Triangle1 V00="0" V01="6" V02="7"/>
<Triangle1 V00="0" V01="5" V02="6"/>
<Triangle1 V00="5" V01="0" V02="8"/>
<Triangle1 V00="2" V01="8" V02="0"/>
<Triangle1 V00="8" V01="2" V02="9"/>
<Triangle1 V00="9" V01="2" V02="4"/>
<Triangle1 V00="4" V01="10" V02="9"/>
<Triangle1 V00="4" V01="11" V02="10"/>
<Triangle1 V00="11" V01="4" V02="5"/>
<Triangle1 V00="8" V01="11" V02="5"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="9" V01="12" V02="8"/>
<Triangle1 V00="9" V01="13" V02="12"/>
<Triangle1 V00="10" V01="13" V02="9"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="14" V01="15" V02="16"/>
<Triangle1 V00="17" V01="15" V02="14"/>
<Triangle1 V00="17" V01="14" V02="18"/>
<Triangle1 V00="18" V01="14" V02="16"/>
<Triangle1 V00="16" V01="19" V02="18"/>
<Triangle1 V00="16" V01="20" V02="19"/>
<Triangle1 V00="20" V01="16" V02="21"/>
<Triangle1 V00="21" V01="16" V02="15"/>
<Triangle1 V00="17" V01="21" V02="15"/>
<Triangle1 V00="17" V01="20" V02="21"/>
<Triangle1 V00="20" V01="17" V02="22"/>
<Triangle1 V00="18" V01="22" V02="17"/>
<Triangle1 V00="22" V01="18" V02="23"/>
<Triangle1 V00="23" V01="18" V02="19"/>
<Triangle1 V00="19" V01="24" V02="23"/>
<Triangle1 V00="19" V01="25" V02="24"/>
<Triangle1 V00="25" V01="19" V02="20"/>
<Triangle1 V00="22" V01="25" V02="20"/>
<Triangle1 V00="25" V01="22" V02="26"/>
<Triangle1 V00="23" V01="26" V02="22"/>
<Triangle1 V00="23" V01="27" V02="26"/>
<Triangle1 V00="24" V01="27" V02="23"/>
<Triangle1 V00="24" V01="25" V02="27"/>
<Triangle1 V00="25" V01="26" V02="27"/>
<EndDisplayList/>
</DisplayList>
@@ -1,104 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bosskey/gBossKeyIconForestTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="4" V01="0" V02="2"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="6" V01="2" V02="7"/>
<Triangle1 V00="7" V01="2" V02="1"/>
<Triangle1 V00="3" V01="7" V02="1"/>
<Triangle1 V00="3" V01="6" V02="7"/>
<Triangle1 V00="6" V01="3" V02="8"/>
<Triangle1 V00="4" V01="8" V02="3"/>
<Triangle1 V00="8" V01="4" V02="9"/>
<Triangle1 V00="9" V01="4" V02="5"/>
<Triangle1 V00="5" V01="10" V02="9"/>
<Triangle1 V00="5" V01="11" V02="10"/>
<Triangle1 V00="11" V01="5" V02="6"/>
<Triangle1 V00="8" V01="11" V02="6"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="9" V01="12" V02="8"/>
<Triangle1 V00="9" V01="13" V02="12"/>
<Triangle1 V00="10" V01="13" V02="9"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconForestTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="14" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="4" V01="0" V02="2"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="6" V01="2" V02="7"/>
<Triangle1 V00="7" V01="2" V02="1"/>
<Triangle1 V00="3" V01="7" V02="1"/>
<Triangle1 V00="3" V01="6" V02="7"/>
<Triangle1 V00="6" V01="3" V02="8"/>
<Triangle1 V00="4" V01="8" V02="3"/>
<Triangle1 V00="8" V01="4" V02="9"/>
<Triangle1 V00="9" V01="4" V02="5"/>
<Triangle1 V00="5" V01="10" V02="9"/>
<Triangle1 V00="5" V01="11" V02="10"/>
<Triangle1 V00="11" V01="5" V02="6"/>
<Triangle1 V00="8" V01="11" V02="6"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="9" V01="12" V02="8"/>
<Triangle1 V00="9" V01="13" V02="12"/>
<Triangle1 V00="10" V01="13" V02="9"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconForestTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="28" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="4" V01="0" V02="2"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="6" V01="2" V02="7"/>
<Triangle1 V00="7" V01="2" V02="1"/>
<Triangle1 V00="3" V01="7" V02="1"/>
<Triangle1 V00="3" V01="6" V02="7"/>
<Triangle1 V00="6" V01="3" V02="8"/>
<Triangle1 V00="4" V01="8" V02="3"/>
<Triangle1 V00="8" V01="4" V02="9"/>
<Triangle1 V00="9" V01="4" V02="5"/>
<Triangle1 V00="5" V01="10" V02="9"/>
<Triangle1 V00="5" V01="11" V02="10"/>
<Triangle1 V00="11" V01="5" V02="6"/>
<Triangle1 V00="8" V01="11" V02="6"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="9" V01="12" V02="8"/>
<Triangle1 V00="9" V01="13" V02="12"/>
<Triangle1 V00="10" V01="13" V02="9"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconForestTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="42" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="4" V01="0" V02="2"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="6" V01="2" V02="7"/>
<Triangle1 V00="7" V01="2" V02="1"/>
<Triangle1 V00="3" V01="7" V02="1"/>
<Triangle1 V00="3" V01="6" V02="7"/>
<Triangle1 V00="6" V01="3" V02="8"/>
<Triangle1 V00="4" V01="8" V02="3"/>
<Triangle1 V00="8" V01="4" V02="9"/>
<Triangle1 V00="9" V01="4" V02="5"/>
<Triangle1 V00="5" V01="10" V02="9"/>
<Triangle1 V00="5" V01="11" V02="10"/>
<Triangle1 V00="11" V01="5" V02="6"/>
<Triangle1 V00="8" V01="11" V02="6"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="9" V01="12" V02="8"/>
<Triangle1 V00="9" V01="13" V02="12"/>
<Triangle1 V00="10" V01="13" V02="9"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<EndDisplayList/>
</DisplayList>
@@ -2,57 +2,61 @@
<Vtx X="9" Y="13" Z="1" S="-710" T="-122" R="242" G="224" B="122" A="254"/>
<Vtx X="9" Y="10" Z="0" S="-719" T="208" R="4" G="129" B="0" A="254"/>
<Vtx X="10" Y="12" Z="0" S="-750" T="-217" R="120" G="214" B="0" A="254"/>
<Vtx X="7" Y="14" Z="0" S="-763" T="-79" R="129" G="1" B="0" A="254"/>
<Vtx X="9" Y="15" Z="1" S="-714" T="-220" R="242" G="15" B="125" A="254"/>
<Vtx X="10" Y="14" Z="0" S="-756" T="-292" R="101" G="178" B="0" A="254"/>
<Vtx X="9" Y="15" Z="-1" S="-714" T="-220" R="242" G="15" B="131" A="254"/>
<Vtx X="7" Y="14" Z="0" S="-763" T="-79" R="129" G="2" B="0" A="254"/>
<Vtx X="9" Y="15" Z="1" S="-714" T="-220" R="242" G="16" B="125" A="254"/>
<Vtx X="10" Y="14" Z="0" S="-756" T="-292" R="100" G="178" B="0" A="254"/>
<Vtx X="9" Y="15" Z="-1" S="-714" T="-220" R="242" G="16" B="131" A="254"/>
<Vtx X="9" Y="13" Z="-1" S="-710" T="-122" R="242" G="224" B="134" A="254"/>
<Vtx X="8" Y="16" Z="0" S="-765" T="-178" R="167" G="91" B="0" A="254"/>
<Vtx X="8" Y="16" Z="0" S="-765" T="-178" R="167" G="90" B="0" A="254"/>
<Vtx X="11" Y="16" Z="1" S="-712" T="-334" R="30" G="32" B="119" A="254"/>
<Vtx X="12" Y="15" Z="0" S="-751" T="-388" R="33" G="133" B="0" A="254"/>
<Vtx X="11" Y="16" Z="-1" S="-712" T="-334" R="30" G="32" B="137" A="254"/>
<Vtx X="11" Y="17" Z="0" S="-762" T="-310" R="1" G="127" B="0" A="254"/>
<Vtx X="15" Y="15" Z="0" S="-679" T="-494" R="125" G="232" B="0" A="254"/>
<Vtx X="15" Y="15" Z="0" S="-679" T="-494" R="125" G="231" B="0" A="254"/>
<Vtx X="7" Y="9" Z="1" S="-645" T="338" R="32" G="242" B="122" A="254"/>
<Vtx X="10" Y="9" Z="0" S="-326" T="272" R="127" G="4" B="0" A="254"/>
<Vtx X="7" Y="10" Z="0" S="-743" T="291" R="42" G="120" B="0" A="254"/>
<Vtx X="6" Y="7" Z="0" S="-730" T="431" R="255" G="129" B="0" A="254"/>
<Vtx X="4" Y="9" Z="1" S="-703" T="267" R="241" G="242" B="125" A="254"/>
<Vtx X="5" Y="10" Z="0" S="-759" T="218" R="78" G="101" B="0" A="254"/>
<Vtx X="4" Y="9" Z="-1" S="-703" T="267" R="241" G="242" B="131" A="254"/>
<Vtx X="6" Y="7" Z="0" S="-730" T="431" R="254" G="129" B="0" A="254"/>
<Vtx X="4" Y="9" Z="1" S="-703" T="267" R="240" G="242" B="125" A="254"/>
<Vtx X="5" Y="10" Z="0" S="-759" T="218" R="78" G="100" B="0" A="254"/>
<Vtx X="4" Y="9" Z="-1" S="-703" T="267" R="240" G="242" B="131" A="254"/>
<Vtx X="7" Y="9" Z="-1" S="-645" T="338" R="32" G="242" B="134" A="254"/>
<Vtx X="3" Y="8" Z="0" S="-759" T="333" R="165" G="167" B="0" A="254"/>
<Vtx X="3" Y="8" Z="0" S="-759" T="333" R="166" G="167" B="0" A="254"/>
<Vtx X="3" Y="11" Z="1" S="-736" T="164" R="224" G="30" B="119" A="254"/>
<Vtx X="4" Y="12" Z="0" S="-764" T="123" R="123" G="33" B="0" A="254"/>
<Vtx X="3" Y="11" Z="-1" S="-736" T="164" R="224" G="30" B="137" A="254"/>
<Vtx X="3" Y="11" Z="0" S="-765" T="201" R="129" G="1" B="0" A="254"/>
<Vtx X="4" Y="15" Z="0" S="-767" T="15" R="24" G="125" B="0" A="254"/>
<Vtx X="4" Y="15" Z="0" S="-767" T="15" R="25" G="125" B="0" A="254"/>
<Vtx X="11" Y="7" Z="1" S="-324" T="112" R="14" G="32" B="122" A="254"/>
<Vtx X="11" Y="10" Z="0" S="-315" T="-218" R="252" G="127" B="0" A="254"/>
<Vtx X="10" Y="7" Z="0" S="-284" T="207" R="136" G="42" B="0" A="254"/>
<Vtx X="12" Y="6" Z="0" S="-271" T="69" R="127" G="255" B="0" A="254"/>
<Vtx X="10" Y="4" Z="1" S="-320" T="210" R="14" G="241" B="125" A="254"/>
<Vtx X="9" Y="5" Z="0" S="-278" T="282" R="155" G="78" B="0" A="254"/>
<Vtx X="10" Y="4" Z="-1" S="-320" T="210" R="14" G="241" B="131" A="254"/>
<Vtx X="12" Y="6" Z="0" S="-271" T="69" R="127" G="254" B="0" A="254"/>
<Vtx X="12" Y="6" Z="0" S="-271" T="69" R="127" G="254" B="0" A="254"/>
<Vtx X="11" Y="7" Z="1" S="-324" T="112" R="14" G="32" B="122" A="254"/>
<Vtx X="10" Y="4" Z="1" S="-320" T="210" R="14" G="240" B="125" A="254"/>
<Vtx X="10" Y="7" Z="0" S="-284" T="207" R="136" G="42" B="0" A="254"/>
<Vtx X="9" Y="5" Z="0" S="-278" T="282" R="156" G="78" B="0" A="254"/>
<Vtx X="10" Y="4" Z="-1" S="-320" T="210" R="14" G="240" B="131" A="254"/>
<Vtx X="11" Y="7" Z="-1" S="-324" T="112" R="14" G="32" B="134" A="254"/>
<Vtx X="11" Y="3" Z="0" S="-269" T="168" R="89" G="165" B="0" A="254"/>
<Vtx X="11" Y="10" Z="0" S="-315" T="-218" R="252" G="127" B="0" A="254"/>
<Vtx X="11" Y="3" Z="0" S="-269" T="168" R="89" G="166" B="0" A="254"/>
<Vtx X="8" Y="3" Z="1" S="-322" T="324" R="226" G="224" B="119" A="254"/>
<Vtx X="8" Y="4" Z="0" S="-283" T="378" R="223" G="123" B="0" A="254"/>
<Vtx X="8" Y="3" Z="-1" S="-322" T="324" R="226" G="224" B="137" A="254"/>
<Vtx X="9" Y="3" Z="0" S="-272" T="300" R="255" G="129" B="0" A="254"/>
<Vtx X="5" Y="4" Z="0" S="-355" T="484" R="131" G="24" B="0" A="254"/>
<Vtx X="5" Y="4" Z="0" S="-355" T="484" R="131" G="25" B="0" A="254"/>
<Vtx X="13" Y="11" Z="1" S="-389" T="-348" R="224" G="14" B="122" A="254"/>
<Vtx X="10" Y="11" Z="0" S="-708" T="-282" R="129" G="252" B="0" A="254"/>
<Vtx X="12" Y="10" Z="0" S="-291" T="-301" R="214" G="136" B="0" A="254"/>
<Vtx X="14" Y="12" Z="0" S="-304" T="-441" R="1" G="127" B="0" A="254"/>
<Vtx X="15" Y="10" Z="1" S="-331" T="-277" R="15" G="14" B="125" A="254"/>
<Vtx X="14" Y="9" Z="0" S="-275" T="-228" R="178" G="155" B="0" A="254"/>
<Vtx X="15" Y="10" Z="-1" S="-331" T="-277" R="15" G="14" B="131" A="254"/>
<Vtx X="14" Y="12" Z="0" S="-304" T="-441" R="2" G="127" B="0" A="254"/>
<Vtx X="15" Y="10" Z="1" S="-331" T="-277" R="16" G="14" B="125" A="254"/>
<Vtx X="14" Y="9" Z="0" S="-275" T="-228" R="178" G="156" B="0" A="254"/>
<Vtx X="15" Y="10" Z="-1" S="-331" T="-277" R="16" G="14" B="131" A="254"/>
<Vtx X="13" Y="11" Z="-1" S="-389" T="-348" R="224" G="14" B="134" A="254"/>
<Vtx X="16" Y="11" Z="0" S="-275" T="-343" R="91" G="89" B="0" A="254"/>
<Vtx X="16" Y="11" Z="0" S="-275" T="-343" R="90" G="89" B="0" A="254"/>
<Vtx X="16" Y="8" Z="1" S="-298" T="-174" R="32" G="226" B="119" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-270" T="-133" R="133" G="223" B="0" A="254"/>
<Vtx X="16" Y="8" Z="-1" S="-298" T="-174" R="32" G="226" B="137" A="254"/>
<Vtx X="17" Y="9" Z="0" S="-269" T="-211" R="127" G="255" B="0" A="254"/>
<Vtx X="15" Y="5" Z="0" S="-267" T="-25" R="232" G="131" B="0" A="254"/>
<Vtx X="15" Y="5" Z="0" S="-267" T="-25" R="231" G="131" B="0" A="254"/>
</Vertex>
@@ -1,11 +1,735 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bosskey/mat_gBossKeyIconGanonsCastleDL_f3dlite_BossKeyGem_GanonsCastle"/>
<CallDisplayList Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="3295" T="5261" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/gSoHHiliteCausticsTex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="1" MaskT="3" ShiftT="2"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="255" G="0" B="0" A="178"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="2" V01="5" V02="4"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="6" V01="8" V02="5"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="6" V01="10" V02="9"/>
<Triangle1 V00="8" V01="9" V02="11"/>
<Triangle1 V00="9" V01="12" V02="11"/>
<Triangle1 V00="8" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="11" V01="15" V02="14"/>
<Triangle1 V00="13" V01="14" V02="16"/>
<Triangle1 V00="17" V01="18" V02="19"/>
<Triangle1 V00="20" V01="18" V02="17"/>
<Triangle1 V00="20" V01="21" V02="18"/>
<Triangle1 V00="22" V01="18" V02="21"/>
<Triangle1 V00="22" V01="23" V02="18"/>
<Triangle1 V00="24" V01="23" V02="22"/>
<Triangle1 V00="24" V01="25" V02="23"/>
<Triangle1 V00="24" V01="26" V02="25"/>
<Triangle1 V00="24" V01="27" V02="26"/>
<Triangle1 V00="27" V01="28" V02="26"/>
<Triangle1 V00="27" V01="29" V02="28"/>
<Triangle1 V00="26" V01="28" V02="30"/>
<Triangle1 V00="18" V01="23" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="4"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="5" V01="8" V02="6"/>
<Triangle1 V00="5" V01="9" V02="8"/>
<Triangle1 V00="5" V01="10" V02="9"/>
<Triangle1 V00="8" V01="9" V02="11"/>
<Triangle1 V00="8" V01="11" V02="12"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="11" V01="14" V02="13"/>
<Triangle1 V00="14" V01="15" V02="13"/>
<Triangle1 V00="14" V01="16" V02="15"/>
<Triangle1 V00="15" V01="16" V02="17"/>
<Triangle1 V00="15" V01="17" V02="18"/>
<Triangle1 V00="18" V01="17" V02="19"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="19" V01="21" V02="20"/>
<Triangle1 V00="19" V01="22" V02="21"/>
<Triangle1 V00="22" V01="23" V02="21"/>
<Triangle1 V00="22" V01="24" V02="23"/>
<Triangle1 V00="23" V01="25" V02="21"/>
<Triangle1 V00="23" V01="26" V02="25"/>
<Triangle1 V00="21" V01="25" V02="27"/>
<Triangle1 V00="21" V01="27" V02="20"/>
<Triangle1 V00="18" V01="20" V02="27"/>
<Triangle1 V00="18" V01="27" V02="28"/>
<Triangle1 V00="15" V01="18" V02="28"/>
<Triangle1 V00="15" V01="28" V02="29"/>
<Triangle1 V00="15" V01="29" V02="30"/>
<Triangle1 V00="15" V01="30" V02="13"/>
<Triangle1 V00="13" V01="30" V02="31"/>
<Triangle1 V00="13" V01="31" V02="12"/>
<Triangle1 V00="8" V01="12" V02="31"/>
<Triangle1 V00="8" V01="31" V02="6"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="0" V01="6" V02="5"/>
<Triangle1 V00="6" V01="0" V02="7"/>
<Triangle1 V00="6" V01="8" V02="5"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="8" V01="9" V02="11"/>
<Triangle1 V00="11" V01="9" V02="12"/>
<Triangle1 V00="8" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<Triangle1 V00="13" V01="14" V02="16"/>
<Triangle1 V00="13" V01="16" V02="17"/>
<Triangle1 V00="13" V01="17" V02="18"/>
<Triangle1 V00="17" V01="19" V02="18"/>
<Triangle1 V00="8" V01="13" V02="18"/>
<Triangle1 V00="8" V01="18" V02="20"/>
<Triangle1 V00="18" V01="21" V02="20"/>
<Triangle1 V00="8" V01="20" V02="22"/>
<Triangle1 V00="20" V01="23" V02="22"/>
<Triangle1 V00="8" V01="22" V02="5"/>
<Triangle1 V00="5" V01="22" V02="24"/>
<Triangle1 V00="22" V01="25" V02="24"/>
<Triangle1 V00="5" V01="24" V02="4"/>
<Triangle1 V00="3" V01="4" V02="24"/>
<Triangle1 V00="3" V01="24" V02="26"/>
<Triangle1 V00="24" V01="27" V02="26"/>
<Triangle1 V00="28" V01="3" V02="26"/>
<Triangle1 V00="28" V01="1" V02="3"/>
<Triangle1 V00="28" V01="29" V02="1"/>
<Triangle1 V00="30" V01="29" V02="28"/>
<Triangle1 V00="30" V01="28" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="96" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="3" V01="6" V02="1"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="10" V01="7" V02="11"/>
<Triangle1 V00="8" V01="12" V02="13"/>
<Triangle1 V00="12" V01="8" V02="2"/>
<Triangle1 V00="12" V01="2" V02="14"/>
<Triangle1 V00="2" V01="15" V02="14"/>
<Triangle1 V00="2" V01="1" V02="15"/>
<Triangle1 V00="1" V01="16" V02="15"/>
<Triangle1 V00="17" V01="18" V02="19"/>
<Triangle1 V00="20" V01="18" V02="17"/>
<Triangle1 V00="20" V01="17" V02="21"/>
<Triangle1 V00="20" V01="21" V02="22"/>
<Triangle1 V00="20" V01="22" V02="23"/>
<Triangle1 V00="22" V01="24" V02="23"/>
<Triangle1 V00="20" V01="23" V02="25"/>
<Triangle1 V00="26" V01="25" V02="23"/>
<Triangle1 V00="26" V01="27" V02="25"/>
<Triangle1 V00="25" V01="27" V02="28"/>
<Triangle1 V00="28" V01="27" V02="29"/>
<Triangle1 V00="27" V01="30" V02="29"/>
<Triangle1 V00="27" V01="31" V02="30"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="128" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="4" V01="2" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="4"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="13" V01="12" V02="10"/>
<Triangle1 V00="13" V01="10" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<Triangle1 V00="13" V01="15" V02="16"/>
<Triangle1 V00="13" V01="16" V02="17"/>
<Triangle1 V00="16" V01="18" V02="17"/>
<Triangle1 V00="19" V01="17" V02="18"/>
<Triangle1 V00="19" V01="20" V02="17"/>
<Triangle1 V00="21" V01="20" V02="19"/>
<Triangle1 V00="21" V01="19" V02="22"/>
<Triangle1 V00="23" V01="21" V02="22"/>
<Triangle1 V00="23" V01="22" V02="0"/>
<Triangle1 V00="4" V01="23" V02="0"/>
<Triangle1 V00="4" V01="0" V02="2"/>
<Triangle1 V00="4" V01="9" V02="23"/>
<Triangle1 V00="4" V01="7" V02="9"/>
<Triangle1 V00="23" V01="9" V02="11"/>
<Triangle1 V00="23" V01="11" V02="21"/>
<Triangle1 V00="21" V01="11" V02="12"/>
<Triangle1 V00="21" V01="12" V02="20"/>
<Triangle1 V00="17" V01="20" V02="12"/>
<Triangle1 V00="17" V01="12" V02="13"/>
<Triangle1 V00="24" V01="25" V02="26"/>
<Triangle1 V00="27" V01="24" V02="26"/>
<Triangle1 V00="27" V01="26" V02="28"/>
<Triangle1 V00="29" V01="28" V02="26"/>
<Triangle1 V00="29" V01="30" V02="28"/>
<Triangle1 V00="28" V01="30" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="160" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="7" V01="5" V02="6"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="10" V02="7"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="15" V01="14" V02="13"/>
<Triangle1 V00="16" V01="15" V02="13"/>
<Triangle1 V00="16" V01="13" V02="17"/>
<Triangle1 V00="16" V01="17" V02="18"/>
<Triangle1 V00="16" V01="18" V02="19"/>
<Triangle1 V00="19" V01="18" V02="20"/>
<Triangle1 V00="20" V01="18" V02="21"/>
<Triangle1 V00="19" V01="20" V02="22"/>
<Triangle1 V00="19" V01="22" V02="23"/>
<Triangle1 V00="7" V01="3" V02="5"/>
<Triangle1 V00="7" V01="24" V02="3"/>
<Triangle1 V00="7" V01="12" V02="24"/>
<Triangle1 V00="7" V01="10" V02="12"/>
<Triangle1 V00="24" V01="12" V02="14"/>
<Triangle1 V00="24" V01="14" V02="25"/>
<Triangle1 V00="25" V01="14" V02="15"/>
<Triangle1 V00="25" V01="15" V02="26"/>
<Triangle1 V00="27" V01="26" V02="15"/>
<Triangle1 V00="27" V01="15" V02="16"/>
<Triangle1 V00="16" V01="19" V02="27"/>
<Triangle1 V00="19" V01="28" V02="27"/>
<Triangle1 V00="0" V01="27" V02="28"/>
<Triangle1 V00="0" V01="26" V02="27"/>
<Triangle1 V00="25" V01="26" V02="0"/>
<Triangle1 V00="25" V01="0" V02="2"/>
<Triangle1 V00="24" V01="25" V02="2"/>
<Triangle1 V00="24" V01="2" V02="3"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="192" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="1" V02="3"/>
<Triangle1 V00="4" V01="5" V02="1"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="6" V01="8" V02="7"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="8" V01="10" V02="12"/>
<Triangle1 V00="1" V01="5" V02="13"/>
<Triangle1 V00="5" V01="7" V02="14"/>
<Triangle1 V00="7" V01="8" V02="15"/>
<Triangle1 V00="16" V01="17" V02="18"/>
<Triangle1 V00="19" V01="16" V02="18"/>
<Triangle1 V00="19" V01="18" V02="20"/>
<Triangle1 V00="18" V01="21" V02="20"/>
<Triangle1 V00="18" V01="22" V02="21"/>
<Triangle1 V00="18" V01="23" V02="22"/>
<Triangle1 V00="22" V01="24" V02="21"/>
<Triangle1 V00="22" V01="25" V02="24"/>
<Triangle1 V00="22" V01="26" V02="25"/>
<Triangle1 V00="24" V01="25" V02="27"/>
<Triangle1 V00="25" V01="28" V02="27"/>
<Triangle1 V00="24" V01="27" V02="29"/>
<Triangle1 V00="29" V01="27" V02="30"/>
<Triangle1 V00="27" V01="31" V02="30"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="224" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="9" V01="12" V02="11"/>
<Triangle1 V00="12" V01="9" V02="13"/>
<Triangle1 V00="9" V01="14" V02="13"/>
<Triangle1 V00="15" V01="14" V02="9"/>
<Triangle1 V00="16" V01="14" V02="15"/>
<Triangle1 V00="5" V01="16" V02="15"/>
<Triangle1 V00="5" V01="17" V02="16"/>
<Triangle1 V00="5" V01="18" V02="17"/>
<Triangle1 V00="18" V01="5" V02="19"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="18" V01="20" V02="21"/>
<Triangle1 V00="18" V01="21" V02="22"/>
<Triangle1 V00="22" V01="17" V02="18"/>
<Triangle1 V00="22" V01="23" V02="17"/>
<Triangle1 V00="22" V01="24" V02="23"/>
<Triangle1 V00="23" V01="24" V02="25"/>
<Triangle1 V00="24" V01="26" V02="25"/>
<Triangle1 V00="26" V01="27" V02="25"/>
<Triangle1 V00="28" V01="27" V02="26"/>
<Triangle1 V00="11" V01="28" V02="26"/>
<Triangle1 V00="11" V01="26" V02="10"/>
<Triangle1 V00="10" V01="26" V02="29"/>
<Triangle1 V00="26" V01="30" V02="29"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<Triangle1 V00="31" V01="30" V02="22"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="256" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="5" V02="2"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="9" V01="8" V02="4"/>
<Triangle1 V00="9" V01="4" V02="2"/>
<Triangle1 V00="9" V01="2" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="9" V01="11" V02="12"/>
<Triangle1 V00="13" V01="9" V02="12"/>
<Triangle1 V00="13" V01="14" V02="9"/>
<Triangle1 V00="9" V01="14" V02="8"/>
<Triangle1 V00="7" V01="15" V02="6"/>
<Triangle1 V00="15" V01="5" V02="6"/>
<Triangle1 V00="16" V01="17" V02="18"/>
<Triangle1 V00="16" V01="19" V02="17"/>
<Triangle1 V00="20" V01="19" V02="16"/>
<Triangle1 V00="20" V01="16" V02="21"/>
<Triangle1 V00="22" V01="19" V02="20"/>
<Triangle1 V00="22" V01="23" V02="19"/>
<Triangle1 V00="24" V01="23" V02="22"/>
<Triangle1 V00="22" V01="25" V02="24"/>
<Triangle1 V00="20" V01="25" V02="22"/>
<Triangle1 V00="25" V01="26" V02="24"/>
<Triangle1 V00="26" V01="27" V02="24"/>
<Triangle1 V00="28" V01="27" V02="26"/>
<Triangle1 V00="29" V01="28" V02="26"/>
<Triangle1 V00="29" V01="26" V02="30"/>
<Triangle1 V00="26" V01="31" V02="30"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="288" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="4" V02="0"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="0" V01="4" V02="6"/>
<Triangle1 V00="6" V01="4" V02="7"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="9" V01="8" V02="4"/>
<Triangle1 V00="10" V01="8" V02="9"/>
<Triangle1 V00="11" V01="10" V02="9"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="10"/>
<Triangle1 V00="13" V01="8" V02="10"/>
<Triangle1 V00="13" V01="14" V02="8"/>
<Triangle1 V00="15" V01="14" V02="13"/>
<Triangle1 V00="15" V01="16" V02="14"/>
<Triangle1 V00="15" V01="17" V02="16"/>
<Triangle1 V00="18" V01="17" V02="15"/>
<Triangle1 V00="18" V01="19" V02="17"/>
<Triangle1 V00="17" V01="19" V02="20"/>
<Triangle1 V00="16" V01="17" V02="20"/>
<Triangle1 V00="16" V01="20" V02="21"/>
<Triangle1 V00="22" V01="21" V02="20"/>
<Triangle1 V00="20" V01="23" V02="22"/>
<Triangle1 V00="20" V01="24" V02="23"/>
<Triangle1 V00="25" V01="23" V02="24"/>
<Triangle1 V00="26" V01="23" V02="25"/>
<Triangle1 V00="27" V01="23" V02="26"/>
<Triangle1 V00="28" V01="27" V02="26"/>
<Triangle1 V00="28" V01="26" V02="29"/>
<Triangle1 V00="0" V01="29" V02="26"/>
<Triangle1 V00="0" V01="6" V02="29"/>
<Triangle1 V00="6" V01="28" V02="29"/>
<Triangle1 V00="6" V01="30" V02="28"/>
<Triangle1 V00="30" V01="6" V02="31"/>
<Triangle1 V00="6" V01="7" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="320" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="1"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="5" V01="4" V02="3"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="3" V01="7" V02="6"/>
<Triangle1 V00="7" V01="3" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="7" V01="9" V02="10"/>
<Triangle1 V00="10" V01="6" V02="7"/>
<Triangle1 V00="10" V01="11" V02="6"/>
<Triangle1 V00="5" V01="12" V02="4"/>
<Triangle1 V00="13" V01="12" V02="5"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<Triangle1 V00="13" V01="16" V02="15"/>
<Triangle1 V00="4" V01="12" V02="14"/>
<Triangle1 V00="4" V01="14" V02="17"/>
<Triangle1 V00="4" V01="17" V02="2"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="18" V01="20" V02="21"/>
<Triangle1 V00="21" V01="22" V02="18"/>
<Triangle1 V00="23" V01="22" V02="21"/>
<Triangle1 V00="24" V01="23" V02="21"/>
<Triangle1 V00="25" V01="24" V02="21"/>
<Triangle1 V00="25" V01="21" V02="26"/>
<Triangle1 V00="25" V01="26" V02="27"/>
<Triangle1 V00="25" V01="27" V02="28"/>
<Triangle1 V00="29" V01="25" V02="28"/>
<Triangle1 V00="29" V01="30" V02="25"/>
<Triangle1 V00="25" V01="30" V02="31"/>
<Triangle1 V00="25" V01="31" V02="24"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="352" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="5" V01="4" V02="1"/>
<Triangle1 V00="5" V01="6" V02="4"/>
<Triangle1 V00="7" V01="2" V02="3"/>
<Triangle1 V00="2" V01="7" V02="8"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="7" V01="10" V02="9"/>
<Triangle1 V00="10" V01="7" V02="11"/>
<Triangle1 V00="7" V01="12" V02="11"/>
<Triangle1 V00="13" V01="12" V02="7"/>
<Triangle1 V00="14" V01="12" V02="13"/>
<Triangle1 V00="4" V01="14" V02="13"/>
<Triangle1 V00="4" V01="15" V02="14"/>
<Triangle1 V00="4" V01="16" V02="15"/>
<Triangle1 V00="16" V01="4" V02="17"/>
<Triangle1 V00="16" V01="17" V02="18"/>
<Triangle1 V00="16" V01="18" V02="19"/>
<Triangle1 V00="16" V01="19" V02="20"/>
<Triangle1 V00="20" V01="15" V02="16"/>
<Triangle1 V00="20" V01="21" V02="15"/>
<Triangle1 V00="20" V01="22" V02="21"/>
<Triangle1 V00="21" V01="22" V02="23"/>
<Triangle1 V00="22" V01="24" V02="23"/>
<Triangle1 V00="24" V01="25" V02="23"/>
<Triangle1 V00="26" V01="25" V02="24"/>
<Triangle1 V00="9" V01="26" V02="24"/>
<Triangle1 V00="9" V01="24" V02="8"/>
<Triangle1 V00="8" V01="24" V02="27"/>
<Triangle1 V00="24" V01="28" V02="27"/>
<Triangle1 V00="8" V01="27" V02="29"/>
<Triangle1 V00="0" V01="29" V02="27"/>
<Triangle1 V00="0" V01="2" V02="29"/>
<Triangle1 V00="2" V01="8" V02="29"/>
<Triangle1 V00="23" V01="15" V02="21"/>
<Triangle1 V00="23" V01="30" V02="15"/>
<Triangle1 V00="31" V01="30" V02="23"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="384" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="7" V01="6" V02="4"/>
<Triangle1 V00="7" V01="4" V02="8"/>
<Triangle1 V00="4" V01="9" V02="8"/>
<Triangle1 V00="7" V01="8" V02="10"/>
<Triangle1 V00="11" V01="7" V02="10"/>
<Triangle1 V00="11" V01="12" V02="7"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="7" V01="12" V02="14"/>
<Triangle1 V00="14" V01="12" V02="15"/>
<Triangle1 V00="12" V01="16" V02="15"/>
<Triangle1 V00="17" V01="16" V02="12"/>
<Triangle1 V00="18" V01="16" V02="17"/>
<Triangle1 V00="19" V01="18" V02="17"/>
<Triangle1 V00="20" V01="18" V02="19"/>
<Triangle1 V00="21" V01="20" V02="19"/>
<Triangle1 V00="21" V01="19" V02="22"/>
<Triangle1 V00="20" V01="23" V02="18"/>
<Triangle1 V00="2" V01="23" V02="20"/>
<Triangle1 V00="3" V01="23" V02="2"/>
<Triangle1 V00="3" V01="24" V02="23"/>
<Triangle1 V00="3" V01="25" V02="24"/>
<Triangle1 V00="3" V01="26" V02="25"/>
<Triangle1 V00="27" V01="26" V02="3"/>
<Triangle1 V00="27" V01="28" V02="26"/>
<Triangle1 V00="26" V01="28" V02="29"/>
<Triangle1 V00="25" V01="26" V02="29"/>
<Triangle1 V00="25" V01="29" V02="30"/>
<Triangle1 V00="31" V01="30" V02="29"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="416" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="1" V02="3"/>
<Triangle1 V00="5" V01="1" V02="4"/>
<Triangle1 V00="6" V01="1" V02="5"/>
<Triangle1 V00="7" V01="6" V02="5"/>
<Triangle1 V00="7" V01="5" V02="8"/>
<Triangle1 V00="9" V01="8" V02="5"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="10" V01="7" V02="8"/>
<Triangle1 V00="10" V01="11" V02="7"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="10" V01="13" V02="12"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="15" V01="12" V02="14"/>
<Triangle1 V00="15" V01="16" V02="12"/>
<Triangle1 V00="17" V01="16" V02="15"/>
<Triangle1 V00="15" V01="18" V02="17"/>
<Triangle1 V00="15" V01="19" V02="18"/>
<Triangle1 V00="19" V01="15" V02="20"/>
<Triangle1 V00="19" V01="20" V02="21"/>
<Triangle1 V00="19" V01="21" V02="22"/>
<Triangle1 V00="22" V01="18" V02="19"/>
<Triangle1 V00="22" V01="23" V02="18"/>
<Triangle1 V00="24" V01="23" V02="22"/>
<Triangle1 V00="24" V01="22" V02="25"/>
<Triangle1 V00="17" V01="26" V02="16"/>
<Triangle1 V00="2" V01="26" V02="17"/>
<Triangle1 V00="2" V01="7" V02="26"/>
<Triangle1 V00="2" V01="6" V02="7"/>
<Triangle1 V00="2" V01="1" V02="6"/>
<Triangle1 V00="16" V01="26" V02="7"/>
<Triangle1 V00="16" V01="7" V02="11"/>
<Triangle1 V00="16" V01="11" V02="12"/>
<Triangle1 V00="27" V01="28" V02="29"/>
<Triangle1 V00="27" V01="30" V02="28"/>
<Triangle1 V00="27" V01="31" V02="30"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="448" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="3" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<Triangle1 V00="15" V01="14" V02="16"/>
<Triangle1 V00="15" V01="16" V02="17"/>
<Triangle1 V00="2" V01="15" V02="17"/>
<Triangle1 V00="2" V01="18" V02="15"/>
<Triangle1 V00="18" V01="12" V02="15"/>
<Triangle1 V00="18" V01="19" V02="12"/>
<Triangle1 V00="12" V01="19" V02="20"/>
<Triangle1 V00="12" V01="20" V02="10"/>
<Triangle1 V00="10" V01="20" V02="21"/>
<Triangle1 V00="10" V01="21" V02="9"/>
<Triangle1 V00="21" V01="7" V02="9"/>
<Triangle1 V00="21" V01="22" V02="7"/>
<Triangle1 V00="22" V01="3" V02="7"/>
<Triangle1 V00="22" V01="23" V02="3"/>
<Triangle1 V00="3" V01="23" V02="1"/>
<Triangle1 V00="24" V01="25" V02="26"/>
<Triangle1 V00="24" V01="27" V02="25"/>
<Triangle1 V00="27" V01="24" V02="28"/>
<Triangle1 V00="27" V01="28" V02="29"/>
<Triangle1 V00="29" V01="28" V02="30"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="480" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="8" V01="7" V02="5"/>
<Triangle1 V00="8" V01="5" V02="9"/>
<Triangle1 V00="10" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<Triangle1 V00="13" V01="15" V02="16"/>
<Triangle1 V00="17" V01="16" V02="15"/>
<Triangle1 V00="18" V01="17" V02="15"/>
<Triangle1 V00="19" V01="17" V02="18"/>
<Triangle1 V00="19" V01="18" V02="20"/>
<Triangle1 V00="19" V01="20" V02="21"/>
<Triangle1 V00="19" V01="21" V02="22"/>
<Triangle1 V00="21" V01="23" V02="22"/>
<Triangle1 V00="21" V01="24" V02="23"/>
<Triangle1 V00="25" V01="23" V02="24"/>
<Triangle1 V00="25" V01="26" V02="23"/>
<Triangle1 V00="25" V01="27" V02="26"/>
<Triangle1 V00="26" V01="27" V02="28"/>
<Triangle1 V00="27" V01="29" V02="28"/>
<Triangle1 V00="27" V01="30" V02="29"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="512" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="6" V01="8" V02="7"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<Triangle1 V00="16" V01="13" V02="15"/>
<Triangle1 V00="16" V01="15" V02="17"/>
<Triangle1 V00="18" V01="16" V02="17"/>
<Triangle1 V00="18" V01="17" V02="19"/>
<Triangle1 V00="20" V01="16" V02="18"/>
<Triangle1 V00="20" V01="21" V02="16"/>
<Triangle1 V00="22" V01="21" V02="20"/>
<Triangle1 V00="20" V01="23" V02="22"/>
<Triangle1 V00="20" V01="24" V02="23"/>
<Triangle1 V00="25" V01="24" V02="20"/>
<Triangle1 V00="25" V01="20" V02="18"/>
<Triangle1 V00="25" V01="26" V02="24"/>
<Triangle1 V00="25" V01="27" V02="26"/>
<Triangle1 V00="24" V01="26" V02="28"/>
<Triangle1 V00="24" V01="28" V02="23"/>
<Triangle1 V00="29" V01="30" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="544" Count="31"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="2" V01="4" V02="5"/>
<Triangle1 V00="2" V01="5" V02="6"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="5" V01="8" V02="7"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="10" V02="7"/>
<Triangle1 V00="10" V01="11" V02="7"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="6" V01="7" V02="11"/>
<Triangle1 V00="6" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<Triangle1 V00="15" V01="14" V02="16"/>
<Triangle1 V00="15" V01="16" V02="17"/>
<Triangle1 V00="18" V01="17" V02="16"/>
<Triangle1 V00="18" V01="16" V02="19"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="18" V01="20" V02="21"/>
<Triangle1 V00="21" V01="20" V02="22"/>
<Triangle1 V00="23" V01="22" V02="20"/>
<Triangle1 V00="23" V01="24" V02="22"/>
<Triangle1 V00="24" V01="25" V02="22"/>
<Triangle1 V00="24" V01="26" V02="25"/>
<Triangle1 V00="27" V01="18" V02="21"/>
<Triangle1 V00="27" V01="28" V02="18"/>
<Triangle1 V00="28" V01="17" V02="18"/>
<Triangle1 V00="28" V01="29" V02="17"/>
<Triangle1 V00="29" V01="15" V02="17"/>
<Triangle1 V00="29" V01="30" V02="15"/>
<Triangle1 V00="30" V01="13" V02="15"/>
<Triangle1 V00="30" V01="0" V02="13"/>
<Triangle1 V00="0" V01="6" V02="13"/>
<Triangle1 V00="0" V01="2" V02="6"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="575" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="0" V01="7" V02="6"/>
<Triangle1 V00="0" V01="2" V02="7"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="9"/>
<Triangle1 V00="10" V01="11" V02="8"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="12" V01="13" V02="11"/>
<Triangle1 V00="13" V01="14" V02="11"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<Triangle1 V00="15" V01="16" V02="14"/>
<Triangle1 V00="15" V01="17" V02="16"/>
<Triangle1 V00="18" V01="16" V02="17"/>
<Triangle1 V00="18" V01="17" V02="19"/>
<Triangle1 V00="17" V01="20" V02="19"/>
<Triangle1 V00="17" V01="21" V02="20"/>
<Triangle1 V00="21" V01="22" V02="20"/>
<Triangle1 V00="21" V01="23" V02="22"/>
<Triangle1 V00="23" V01="24" V02="22"/>
<Triangle1 V00="23" V01="25" V02="24"/>
<Triangle1 V00="23" V01="26" V02="25"/>
<Triangle1 V00="25" V01="26" V02="27"/>
<Triangle1 V00="25" V01="27" V02="28"/>
<Triangle1 V00="28" V01="27" V02="29"/>
<Triangle1 V00="30" V01="28" V02="29"/>
<Triangle1 V00="30" V01="29" V02="31"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="607" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="1" V01="3" V02="4"/>
<Triangle1 V00="1" V01="4" V02="5"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="11" V01="9" V02="10"/>
<Triangle1 V00="12" V01="9" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<Triangle1 V00="15" V01="14" V02="16"/>
<Triangle1 V00="15" V01="16" V02="17"/>
<Triangle1 V00="18" V01="17" V02="16"/>
<Triangle1 V00="18" V01="16" V02="19"/>
<Triangle1 V00="19" V01="16" V02="20"/>
<Triangle1 V00="19" V01="20" V02="21"/>
<Triangle1 V00="21" V01="20" V02="22"/>
<Triangle1 V00="21" V01="22" V02="23"/>
<Triangle1 V00="23" V01="22" V02="24"/>
<Triangle1 V00="23" V01="24" V02="25"/>
<Triangle1 V00="26" V01="19" V02="21"/>
<Triangle1 V00="26" V01="18" V02="19"/>
<Triangle1 V00="18" V01="26" V02="27"/>
<Triangle1 V00="26" V01="28" V02="27"/>
<Triangle1 V00="28" V01="29" V02="27"/>
<Triangle1 V00="28" V01="30" V02="29"/>
<Triangle1 V00="30" V01="31" V02="29"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="639" Count="28"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="3" V02="5"/>
<Triangle1 V00="7" V01="6" V02="5"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="11" V01="10" V02="9"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="13" V01="12" V02="11"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="15" V01="14" V02="13"/>
<Triangle1 V00="13" V01="16" V02="15"/>
<Triangle1 V00="13" V01="17" V02="16"/>
<Triangle1 V00="15" V01="18" V02="14"/>
<Triangle1 V00="14" V01="18" V02="19"/>
<Triangle1 V00="14" V01="19" V02="20"/>
<Triangle1 V00="20" V01="19" V02="21"/>
<Triangle1 V00="20" V01="21" V02="22"/>
<Triangle1 V00="12" V01="14" V02="20"/>
<Triangle1 V00="12" V01="20" V02="23"/>
<Triangle1 V00="10" V01="12" V02="23"/>
<Triangle1 V00="10" V01="23" V02="24"/>
<Triangle1 V00="25" V01="10" V02="24"/>
<Triangle1 V00="25" V01="8" V02="10"/>
<Triangle1 V00="6" V01="8" V02="25"/>
<Triangle1 V00="6" V01="25" V02="26"/>
<Triangle1 V00="26" V01="27" V02="6"/>
<Triangle1 V00="6" V01="27" V02="3"/>
<EndDisplayList/>
</DisplayList>
@@ -1,749 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="4" V01="2" V02="5"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="4" V01="5" V02="7"/>
<Triangle1 V00="7" V01="5" V02="8"/>
<Triangle1 V00="5" V01="9" V02="8"/>
<Triangle1 V00="7" V01="8" V02="10"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="8" V01="12" V02="11"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="11" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="4" V02="3"/>
<Triangle1 V00="6" V01="7" V02="4"/>
<Triangle1 V00="7" V01="8" V02="4"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="6" V01="0" V02="8"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="9" V01="12" V02="10"/>
<Triangle1 V00="9" V01="13" V02="12"/>
<Triangle1 V00="9" V01="14" V02="13"/>
<Triangle1 V00="12" V01="13" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="15"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="5" V01="3" V02="4"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="7" V01="5" V02="6"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="11" V01="9" V02="10"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="79" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="4" V01="0" V02="5"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="4" V01="5" V02="7"/>
<Triangle1 V00="7" V01="5" V02="8"/>
<Triangle1 V00="8" V01="5" V02="9"/>
<Triangle1 V00="7" V01="8" V02="10"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="95" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="0" V01="3" V02="4"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="0" V02="4"/>
<Triangle1 V00="6" V01="4" V02="7"/>
<Triangle1 V00="4" V01="8" V02="7"/>
<Triangle1 V00="9" V01="6" V02="7"/>
<Triangle1 V00="9" V01="7" V02="10"/>
<Triangle1 V00="7" V01="11" V02="10"/>
<Triangle1 V00="12" V01="9" V02="10"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="15" V01="12" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="111" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="4" V01="0" V02="2"/>
<Triangle1 V00="4" V01="5" V02="0"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="4"/>
<Triangle1 V00="7" V01="4" V02="8"/>
<Triangle1 V00="4" V01="2" V02="8"/>
<Triangle1 V00="2" V01="9" V02="8"/>
<Triangle1 V00="7" V01="8" V02="10"/>
<Triangle1 V00="8" V01="11" V02="10"/>
<Triangle1 V00="12" V01="7" V02="10"/>
<Triangle1 V00="12" V01="13" V02="7"/>
<Triangle1 V00="12" V01="14" V02="13"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<Triangle1 V00="7" V01="13" V02="6"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="127" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="5" V01="8" V02="6"/>
<Triangle1 V00="9" V01="8" V02="5"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="11" V01="10" V02="9"/>
<Triangle1 V00="11" V01="9" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="11" V01="13" V02="14"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="143" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="2" V01="3" V02="5"/>
<Triangle1 V00="2" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="7" V02="10"/>
<Triangle1 V00="10" V01="7" V02="11"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="14" V01="13" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="159" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="15" V01="13" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="175" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="5" V01="4" V02="3"/>
<Triangle1 V00="5" V01="3" V02="6"/>
<Triangle1 V00="7" V01="5" V02="6"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="11" V01="10" V02="8"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="15" V01="11" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="191" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="5" V01="8" V02="7"/>
<Triangle1 V00="6" V01="7" V02="9"/>
<Triangle1 V00="6" V01="9" V02="10"/>
<Triangle1 V00="11" V01="6" V02="10"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="10" V01="13" V02="12"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="207" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="3" V01="4" V02="1"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="5" V01="7" V02="8"/>
<Triangle1 V00="5" V01="8" V02="9"/>
<Triangle1 V00="5" V01="9" V02="4"/>
<Triangle1 V00="10" V01="4" V02="9"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<Triangle1 V00="14" V01="10" V02="13"/>
<Triangle1 V00="14" V01="4" V02="10"/>
<Triangle1 V00="14" V01="1" V02="4"/>
<Triangle1 V00="15" V01="1" V02="14"/>
<Triangle1 V00="15" V01="2" V02="1"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="223" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="6" V01="4" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="5" V01="6" V02="9"/>
<Triangle1 V00="5" V01="9" V02="10"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="14" V01="12" V02="11"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="239" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="2" V01="4" V02="3"/>
<Triangle1 V00="5" V01="0" V02="3"/>
<Triangle1 V00="5" V01="6" V02="0"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="7" V01="5" V02="8"/>
<Triangle1 V00="9" V01="8" V02="5"/>
<Triangle1 V00="5" V01="3" V02="9"/>
<Triangle1 V00="3" V01="10" V02="9"/>
<Triangle1 V00="3" V01="11" V02="10"/>
<Triangle1 V00="9" V01="10" V02="12"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="13" V01="10" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="255" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="4" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="2"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="6" V02="8"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="8" V02="11"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="13" V01="12" V02="11"/>
<Triangle1 V00="14" V01="13" V02="11"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="271" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="2" V02="1"/>
<Triangle1 V00="3" V01="1" V02="4"/>
<Triangle1 V00="5" V01="4" V02="1"/>
<Triangle1 V00="3" V01="4" V02="6"/>
<Triangle1 V00="7" V01="3" V02="6"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="11" V02="7"/>
<Triangle1 V00="9" V01="12" V02="11"/>
<Triangle1 V00="7" V01="11" V02="13"/>
<Triangle1 V00="7" V01="13" V02="3"/>
<Triangle1 V00="3" V01="13" V02="2"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="285" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="4" V01="3" V02="2"/>
<Triangle1 V00="4" V01="2" V02="5"/>
<Triangle1 V00="2" V01="6" V02="5"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="5" V01="6" V02="8"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="14" V01="12" V02="13"/>
<Triangle1 V00="14" V01="15" V02="12"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="301" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="1" V01="3" V02="4"/>
<Triangle1 V00="5" V01="1" V02="4"/>
<Triangle1 V00="6" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="7"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="10" V01="9" V02="7"/>
<Triangle1 V00="10" V01="7" V02="11"/>
<Triangle1 V00="12" V01="9" V02="10"/>
<Triangle1 V00="9" V01="12" V02="13"/>
<Triangle1 V00="14" V01="13" V02="12"/>
<Triangle1 V00="14" V01="15" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="317" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="6" V01="8" V02="4"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="4" V01="8" V02="10"/>
<Triangle1 V00="4" V01="10" V02="0"/>
<Triangle1 V00="0" V01="10" V02="11"/>
<Triangle1 V00="0" V01="11" V02="1"/>
<Triangle1 V00="12" V01="1" V02="11"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="333" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="1" V01="3" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="6" V01="8" V02="9"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="349" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="4" V02="3"/>
<Triangle1 V00="6" V01="3" V02="7"/>
<Triangle1 V00="7" V01="3" V02="8"/>
<Triangle1 V00="8" V01="3" V02="9"/>
<Triangle1 V00="3" V01="10" V02="9"/>
<Triangle1 V00="11" V01="10" V02="3"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="13" V01="12" V02="11"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="365" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="0" V01="3" V02="4"/>
<Triangle1 V00="0" V01="4" V02="5"/>
<Triangle1 V00="5" V01="6" V02="0"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="5" V01="8" V02="7"/>
<Triangle1 V00="7" V01="8" V02="9"/>
<Triangle1 V00="8" V01="10" V02="9"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="13" V01="12" V02="10"/>
<Triangle1 V00="14" V01="13" V02="10"/>
<Triangle1 V00="14" V01="10" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="381" Count="14"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="3" V01="1" V02="4"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="7" V01="2" V02="3"/>
<Triangle1 V00="7" V01="8" V02="2"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="10" V01="7" V02="3"/>
<Triangle1 V00="10" V01="3" V02="11"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="395" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="3" V01="0" V02="4"/>
<Triangle1 V00="4" V01="0" V02="5"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="0" V01="7" V02="6"/>
<Triangle1 V00="8" V01="7" V02="0"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="10" V01="9" V02="8"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="13" V01="12" V02="10"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="15" V01="12" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="411" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="1" V01="5" V02="4"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="10" V01="9" V02="7"/>
<Triangle1 V00="11" V01="10" V02="7"/>
<Triangle1 V00="11" V01="7" V02="12"/>
<Triangle1 V00="7" V01="13" V02="12"/>
<Triangle1 V00="14" V01="11" V02="12"/>
<Triangle1 V00="14" V01="15" V02="11"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="427" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="6" V01="5" V02="0"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="8" V01="5" V02="7"/>
<Triangle1 V00="8" V01="9" V02="5"/>
<Triangle1 V00="9" V01="4" V02="5"/>
<Triangle1 V00="9" V01="10" V02="4"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="9" V01="12" V02="11"/>
<Triangle1 V00="10" V01="11" V02="13"/>
<Triangle1 V00="14" V01="10" V02="13"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="443" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="5" V01="3" V02="4"/>
<Triangle1 V00="6" V01="3" V02="5"/>
<Triangle1 V00="7" V01="3" V02="6"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="9" V01="8" V02="6"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="10" V01="13" V02="12"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="15" V01="12" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="459" Count="15"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="4" V01="0" V02="5"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="4" V01="5" V02="7"/>
<Triangle1 V00="4" V01="7" V02="8"/>
<Triangle1 V00="1" V01="9" V02="2"/>
<Triangle1 V00="1" V01="10" V02="9"/>
<Triangle1 V00="1" V01="3" V02="10"/>
<Triangle1 V00="11" V01="10" V02="3"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="14" V01="10" V02="12"/>
<Triangle1 V00="14" V01="9" V02="10"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="474" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="3" V01="4" V02="6"/>
<Triangle1 V00="3" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="6" V01="10" V02="9"/>
<Triangle1 V00="6" V01="11" V02="10"/>
<Triangle1 V00="6" V01="12" V02="11"/>
<Triangle1 V00="13" V01="8" V02="9"/>
<Triangle1 V00="14" V01="8" V02="13"/>
<Triangle1 V00="14" V01="13" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="490" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="5" V01="4" V02="1"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="7" V01="6" V02="5"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="9" V01="7" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="9" V01="11" V02="12"/>
<Triangle1 V00="9" V01="12" V02="13"/>
<Triangle1 V00="13" V01="8" V02="9"/>
<Triangle1 V00="13" V01="14" V02="8"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="506" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="5" V01="4" V02="3"/>
<Triangle1 V00="6" V01="5" V02="3"/>
<Triangle1 V00="7" V01="6" V02="3"/>
<Triangle1 V00="7" V01="3" V02="8"/>
<Triangle1 V00="3" V01="9" V02="8"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="10" V01="12" V02="13"/>
<Triangle1 V00="14" V01="8" V02="10"/>
<Triangle1 V00="14" V01="7" V02="8"/>
<Triangle1 V00="14" V01="15" V02="7"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="522" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="7" V01="4" V02="6"/>
<Triangle1 V00="8" V01="7" V02="6"/>
<Triangle1 V00="8" V01="9" V02="7"/>
<Triangle1 V00="7" V01="9" V02="10"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="7" V01="10" V02="12"/>
<Triangle1 V00="12" V01="10" V02="13"/>
<Triangle1 V00="13" V01="10" V02="14"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="538" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="4" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="4"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="9" V01="6" V02="8"/>
<Triangle1 V00="9" V01="10" V02="6"/>
<Triangle1 V00="10" V01="5" V02="6"/>
<Triangle1 V00="10" V01="11" V02="5"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="12" V01="14" V02="13"/>
<Triangle1 V00="14" V01="15" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="554" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="4" V01="3" V02="2"/>
<Triangle1 V00="3" V01="5" V02="0"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="5" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="11" V01="8" V02="10"/>
<Triangle1 V00="11" V01="12" V02="8"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="11" V01="14" V02="13"/>
<Triangle1 V00="14" V01="11" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="570" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="3" V01="5" V02="0"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="3"/>
<Triangle1 V00="7" V01="8" V02="6"/>
<Triangle1 V00="9" V01="6" V02="8"/>
<Triangle1 V00="9" V01="10" V02="6"/>
<Triangle1 V00="10" V01="5" V02="6"/>
<Triangle1 V00="10" V01="11" V02="5"/>
<Triangle1 V00="10" V01="12" V02="11"/>
<Triangle1 V00="10" V01="13" V02="12"/>
<Triangle1 V00="11" V01="12" V02="14"/>
<Triangle1 V00="15" V01="11" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="586" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="7" V01="4" V02="6"/>
<Triangle1 V00="8" V01="4" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="1" V02="10"/>
<Triangle1 V00="3" V01="10" V02="1"/>
<Triangle1 V00="3" V01="8" V02="10"/>
<Triangle1 V00="3" V01="4" V02="8"/>
<Triangle1 V00="2" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="602" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="4" V02="3"/>
<Triangle1 V00="6" V01="7" V02="4"/>
<Triangle1 V00="7" V01="8" V02="4"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="9" V01="11" V02="10"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<Triangle1 V00="11" V01="13" V02="12"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="618" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="4" V01="6" V02="7"/>
<Triangle1 V00="6" V01="0" V02="8"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="9" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="11" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="634" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="1" V01="4" V02="3"/>
<Triangle1 V00="2" V01="3" V02="5"/>
<Triangle1 V00="5" V01="3" V02="6"/>
<Triangle1 V00="3" V01="7" V02="6"/>
<Triangle1 V00="5" V01="6" V02="8"/>
<Triangle1 V00="8" V01="6" V02="9"/>
<Triangle1 V00="6" V01="10" V02="9"/>
<Triangle1 V00="8" V01="9" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="650" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="6" V01="5" V02="0"/>
<Triangle1 V00="6" V01="0" V02="2"/>
<Triangle1 V00="6" V01="2" V02="7"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="10" V01="8" V02="9"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="14" V01="12" V02="13"/>
<Triangle1 V00="14" V01="13" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="666" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="4" V01="6" V02="0"/>
<Triangle1 V00="4" V01="7" V02="6"/>
<Triangle1 V00="0" V01="6" V02="8"/>
<Triangle1 V00="0" V01="8" V02="1"/>
<Triangle1 V00="1" V01="8" V02="9"/>
<Triangle1 V00="1" V01="9" V02="10"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="14" V01="13" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="682" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="11" V01="8" V02="10"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="15" V01="13" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="698" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="4" V01="0" V02="3"/>
<Triangle1 V00="4" V01="3" V02="5"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="7" V01="5" V02="8"/>
<Triangle1 V00="9" V01="7" V02="8"/>
<Triangle1 V00="9" V01="8" V02="10"/>
<Triangle1 V00="11" V01="9" V02="10"/>
<Triangle1 V00="12" V01="11" V02="10"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="14" V02="11"/>
<Triangle1 V00="15" V01="14" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="714" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="0" V01="3" V02="4"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="3" V01="6" V02="5"/>
<Triangle1 V00="6" V01="7" V02="5"/>
<Triangle1 V00="5" V01="7" V02="8"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="12" V01="10" V02="11"/>
<Triangle1 V00="12" V01="11" V02="13"/>
<Triangle1 V00="13" V01="11" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="730" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="4" V01="2" V02="5"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="6" V01="5" V02="7"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="11" V01="8" V02="10"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="13" V01="11" V02="12"/>
<Triangle1 V00="13" V01="14" V02="11"/>
<Triangle1 V00="13" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="746" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="5" V01="2" V02="4"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="7" V01="5" V02="6"/>
<Triangle1 V00="8" V01="5" V02="7"/>
<Triangle1 V00="8" V01="7" V02="9"/>
<Triangle1 V00="9" V01="7" V02="10"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="13" V01="12" V02="14"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="762" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="5" V01="2" V02="4"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="7" V01="2" V02="5"/>
<Triangle1 V00="0" V01="2" V02="7"/>
<Triangle1 V00="0" V01="7" V02="8"/>
<Triangle1 V00="7" V01="9" V02="8"/>
<Triangle1 V00="7" V01="10" V02="9"/>
<Triangle1 V00="7" V01="5" V02="10"/>
<Triangle1 V00="9" V01="11" V02="8"/>
<Triangle1 V00="9" V01="12" V02="11"/>
<Triangle1 V00="8" V01="11" V02="13"/>
<Triangle1 V00="8" V01="13" V02="14"/>
<Triangle1 V00="0" V01="8" V02="14"/>
<Triangle1 V00="15" V01="0" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="778" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="5" V01="3" V02="4"/>
<Triangle1 V00="5" V01="4" V02="6"/>
<Triangle1 V00="7" V01="5" V02="6"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="6" V01="9" V02="8"/>
<Triangle1 V00="8" V01="9" V02="10"/>
<Triangle1 V00="8" V01="10" V02="11"/>
<Triangle1 V00="11" V01="10" V02="12"/>
<Triangle1 V00="11" V01="12" V02="13"/>
<Triangle1 V00="14" V01="11" V02="13"/>
<Triangle1 V00="14" V01="15" V02="11"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconGanonsCastleDL_vtx_0" VertexBufferIndex="0" VertexOffset="794" Count="7"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="2" V01="1" V02="3"/>
<Triangle1 V00="2" V01="3" V02="4"/>
<Triangle1 V00="2" V01="4" V02="5"/>
<Triangle1 V00="2" V01="5" V02="6"/>
<EndDisplayList/>
</DisplayList>
File diff suppressed because it is too large Load Diff
@@ -1,11 +1,88 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bosskey/mat_gBossKeyIconShadowTempleDL_f3dlite_BossKeyGem_ShadowTemple"/>
<CallDisplayList Path="objects/object_bosskey/gBossKeyIconShadowTempleDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="673" T="673" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/gSoHHiliteCausticsTex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="1" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="0" R="153" G="0" B="255" A="178"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconShadowTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="30"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="15" V01="16" V02="17"/>
<Triangle1 V00="18" V01="19" V02="20"/>
<Triangle1 V00="18" V01="21" V02="19"/>
<Triangle1 V00="18" V01="22" V02="21"/>
<Triangle1 V00="18" V01="23" V02="22"/>
<Triangle1 V00="18" V01="24" V02="23"/>
<Triangle1 V00="25" V01="24" V02="18"/>
<Triangle1 V00="26" V01="25" V02="18"/>
<Triangle1 V00="27" V01="26" V02="18"/>
<Triangle1 V00="28" V01="27" V02="18"/>
<Triangle1 V00="20" V01="28" V02="18"/>
<Triangle1 V00="20" V01="29" V02="28"/>
<Triangle1 V00="29" V01="20" V02="19"/>
<Triangle1 V00="29" V01="19" V02="21"/>
<Triangle1 V00="29" V01="21" V02="22"/>
<Triangle1 V00="29" V01="22" V02="23"/>
<Triangle1 V00="29" V01="23" V02="24"/>
<Triangle1 V00="25" V01="29" V02="24"/>
<Triangle1 V00="26" V01="29" V02="25"/>
<Triangle1 V00="27" V01="29" V02="26"/>
<Triangle1 V00="28" V01="29" V02="27"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconShadowTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="30" Count="24"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="0" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="0"/>
<Triangle1 V00="8" V01="7" V02="0"/>
<Triangle1 V00="9" V01="8" V02="0"/>
<Triangle1 V00="10" V01="9" V02="0"/>
<Triangle1 V00="2" V01="10" V02="0"/>
<Triangle1 V00="2" V01="11" V02="10"/>
<Triangle1 V00="11" V01="2" V02="1"/>
<Triangle1 V00="11" V01="1" V02="3"/>
<Triangle1 V00="11" V01="3" V02="4"/>
<Triangle1 V00="11" V01="4" V02="5"/>
<Triangle1 V00="11" V01="5" V02="6"/>
<Triangle1 V00="7" V01="11" V02="6"/>
<Triangle1 V00="8" V01="11" V02="7"/>
<Triangle1 V00="9" V01="11" V02="8"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="15" V02="13"/>
<Triangle1 V00="12" V01="16" V02="15"/>
<Triangle1 V00="12" V01="17" V02="16"/>
<Triangle1 V00="12" V01="18" V02="17"/>
<Triangle1 V00="19" V01="18" V02="12"/>
<Triangle1 V00="20" V01="19" V02="12"/>
<Triangle1 V00="21" V01="20" V02="12"/>
<Triangle1 V00="22" V01="21" V02="12"/>
<Triangle1 V00="14" V01="22" V02="12"/>
<Triangle1 V00="14" V01="23" V02="22"/>
<Triangle1 V00="23" V01="14" V02="13"/>
<Triangle1 V00="23" V01="13" V02="15"/>
<Triangle1 V00="23" V01="15" V02="16"/>
<Triangle1 V00="23" V01="16" V02="17"/>
<Triangle1 V00="23" V01="17" V02="18"/>
<Triangle1 V00="19" V01="23" V02="18"/>
<Triangle1 V00="20" V01="23" V02="19"/>
<Triangle1 V00="21" V01="23" V02="20"/>
<Triangle1 V00="22" V01="23" V02="21"/>
<EndDisplayList/>
</DisplayList>
@@ -1,74 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bosskey/gBossKeyIconShadowTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="15"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="6" V01="7" V02="8"/>
<Triangle1 V00="9" V01="10" V02="11"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconShadowTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="15" Count="15"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="4" V02="5"/>
<Triangle1 V00="3" V01="6" V02="4"/>
<Triangle1 V00="3" V01="7" V02="6"/>
<Triangle1 V00="3" V01="8" V02="7"/>
<Triangle1 V00="3" V01="9" V02="8"/>
<Triangle1 V00="10" V01="9" V02="3"/>
<Triangle1 V00="11" V01="10" V02="3"/>
<Triangle1 V00="12" V01="11" V02="3"/>
<Triangle1 V00="13" V01="12" V02="3"/>
<Triangle1 V00="5" V01="13" V02="3"/>
<Triangle1 V00="5" V01="14" V02="13"/>
<Triangle1 V00="14" V01="5" V02="4"/>
<Triangle1 V00="14" V01="4" V02="6"/>
<Triangle1 V00="14" V01="6" V02="7"/>
<Triangle1 V00="14" V01="7" V02="8"/>
<Triangle1 V00="14" V01="8" V02="9"/>
<Triangle1 V00="10" V01="14" V02="9"/>
<Triangle1 V00="11" V01="14" V02="10"/>
<Triangle1 V00="12" V01="14" V02="11"/>
<Triangle1 V00="13" V01="14" V02="12"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconShadowTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="30" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="0" V01="6" V02="5"/>
<Triangle1 V00="7" V01="6" V02="0"/>
<Triangle1 V00="8" V01="7" V02="0"/>
<Triangle1 V00="9" V01="8" V02="0"/>
<Triangle1 V00="10" V01="9" V02="0"/>
<Triangle1 V00="2" V01="10" V02="0"/>
<Triangle1 V00="2" V01="11" V02="10"/>
<Triangle1 V00="11" V01="2" V02="1"/>
<Triangle1 V00="11" V01="1" V02="3"/>
<Triangle1 V00="11" V01="3" V02="4"/>
<Triangle1 V00="11" V01="4" V02="5"/>
<Triangle1 V00="11" V01="5" V02="6"/>
<Triangle1 V00="7" V01="11" V02="6"/>
<Triangle1 V00="8" V01="11" V02="7"/>
<Triangle1 V00="9" V01="11" V02="8"/>
<Triangle1 V00="10" V01="11" V02="9"/>
<Triangle1 V00="12" V01="13" V02="14"/>
<Triangle1 V00="12" V01="15" V02="13"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconShadowTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="46" Count="12"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="5" V01="4" V02="0"/>
<Triangle1 V00="6" V01="5" V02="0"/>
<Triangle1 V00="7" V01="6" V02="0"/>
<Triangle1 V00="8" V01="7" V02="0"/>
<Triangle1 V00="9" V01="8" V02="0"/>
<Triangle1 V00="9" V01="10" V02="8"/>
<Triangle1 V00="10" V01="9" V02="11"/>
<Triangle1 V00="10" V01="11" V02="2"/>
<Triangle1 V00="10" V01="2" V02="1"/>
<Triangle1 V00="10" V01="1" V02="3"/>
<Triangle1 V00="10" V01="3" V02="4"/>
<Triangle1 V00="5" V01="10" V02="4"/>
<Triangle1 V00="6" V01="10" V02="5"/>
<Triangle1 V00="7" V01="10" V02="6"/>
<Triangle1 V00="8" V01="10" V02="7"/>
<EndDisplayList/>
</DisplayList>
@@ -1,60 +1,56 @@
<Vertex Version="0">
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="189" G="17" B="107" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="189" G="17" B="107" A="254"/>
<Vtx X="10" Y="10" Z="2" S="-1285" T="-5" R="189" G="17" B="107" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="17" G="189" B="107" A="254"/>
<Vtx X="10" Y="10" Z="2" S="-1285" T="-5" R="17" G="189" B="107" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="17" G="189" B="107" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="50" G="50" B="106" A="254"/>
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="50" G="50" B="106" A="254"/>
<Vtx X="10" Y="10" Z="2" S="-1285" T="-5" R="50" G="50" B="106" A="254"/>
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="189" G="17" B="149" A="254"/>
<Vtx X="10" Y="10" Z="-2" S="-1285" T="-5" R="189" G="17" B="149" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="189" G="17" B="149" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="17" G="189" B="149" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="17" G="189" B="149" A="254"/>
<Vtx X="10" Y="10" Z="-2" S="-1285" T="-5" R="17" G="189" B="149" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="50" G="50" B="150" A="254"/>
<Vtx X="10" Y="10" Z="-2" S="-1285" T="-5" R="50" G="50" B="150" A="254"/>
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="50" G="50" B="150" A="254"/>
<Vtx X="13" Y="13" Z="1" S="-1285" T="-423" R="0" G="0" B="127" A="254"/>
<Vtx X="15" Y="14" Z="0" S="-1023" T="-490" R="112" G="60" B="0" A="254"/>
<Vtx X="14" Y="15" Z="0" S="-1547" T="-490" R="60" G="112" B="0" A="254"/>
<Vtx X="15" Y="13" Z="0" S="-1027" T="-439" R="127" G="248" B="0" A="254"/>
<Vtx X="15" Y="12" Z="0" S="-1027" T="-403" R="90" G="166" B="0" A="254"/>
<Vtx X="14" Y="12" Z="0" S="-1027" T="-399" R="8" G="129" B="0" A="254"/>
<Vtx X="13" Y="12" Z="0" S="-1023" T="-461" R="196" G="144" B="0" A="254"/>
<Vtx X="12" Y="13" Z="0" S="-1547" T="-461" R="144" G="196" B="0" A="254"/>
<Vtx X="12" Y="14" Z="0" S="-1543" T="-399" R="129" G="8" B="0" A="254"/>
<Vtx X="12" Y="15" Z="0" S="-1543" T="-403" R="166" G="90" B="0" A="254"/>
<Vtx X="13" Y="15" Z="0" S="-1543" T="-439" R="248" G="127" B="0" A="254"/>
<Vtx X="13" Y="13" Z="-1" S="-1285" T="-423" R="0" G="0" B="129" A="254"/>
<Vtx X="11" Y="5" Z="1" S="-1083" T="158" R="1" G="254" B="127" A="254"/>
<Vtx X="11" Y="3" Z="0" S="-1028" T="193" R="255" G="129" B="0" A="254"/>
<Vtx X="12" Y="3" Z="0" S="-1028" T="138" R="67" G="148" B="0" A="254"/>
<Vtx X="10" Y="3" Z="0" S="-1028" T="244" R="175" G="158" B="0" A="254"/>
<Vtx X="9" Y="4" Z="0" S="-1028" T="280" R="131" G="234" B="0" A="254"/>
<Vtx X="9" Y="5" Z="0" S="-1028" T="283" R="137" G="45" B="0" A="254"/>
<Vtx X="10" Y="6" Z="0" S="-1028" T="222" R="177" G="100" B="0" A="254"/>
<Vtx X="11" Y="7" Z="0" S="-1028" T="110" R="0" G="127" B="0" A="254"/>
<Vtx X="12" Y="6" Z="0" S="-1028" T="48" R="79" G="100" B="0" A="254"/>
<Vtx X="13" Y="5" Z="0" S="-1028" T="51" R="122" G="34" B="0" A="254"/>
<Vtx X="13" Y="4" Z="0" S="-1028" T="88" R="118" G="209" B="0" A="254"/>
<Vtx X="11" Y="5" Z="-1" S="-1083" T="158" R="1" G="254" B="129" A="254"/>
<Vtx X="5" Y="11" Z="1" S="-1487" T="158" R="254" G="1" B="127" A="254"/>
<Vtx X="3" Y="12" Z="0" S="-1542" T="138" R="148" G="67" B="0" A="254"/>
<Vtx X="3" Y="11" Z="0" S="-1542" T="193" R="129" G="255" B="0" A="254"/>
<Vtx X="4" Y="13" Z="0" S="-1542" T="88" R="209" G="118" B="0" A="254"/>
<Vtx X="5" Y="11" Z="1" S="-1487" T="158" R="254" G="1" B="127" A="254"/>
<Vtx X="5" Y="13" Z="0" S="-1542" T="51" R="34" G="122" B="0" A="254"/>
<Vtx X="4" Y="13" Z="0" S="-1542" T="88" R="209" G="118" B="0" A="254"/>
<Vtx X="6" Y="12" Z="0" S="-1542" T="48" R="100" G="79" B="0" A="254"/>
<Vtx X="7" Y="11" Z="0" S="-1542" T="110" R="127" G="0" B="0" A="254"/>
<Vtx X="6" Y="10" Z="0" S="-1542" T="222" R="100" G="177" B="0" A="254"/>
<Vtx X="5" Y="9" Z="0" S="-1542" T="283" R="45" G="137" B="0" A="254"/>
<Vtx X="4" Y="9" Z="0" S="-1542" T="280" R="234" G="131" B="0" A="254"/>
<Vtx X="3" Y="10" Z="0" S="-1542" T="244" R="158" G="175" B="0" A="254"/>
<Vtx X="3" Y="11" Z="0" S="-1542" T="193" R="129" G="255" B="0" A="254"/>
<Vtx X="5" Y="11" Z="-1" S="-1487" T="158" R="254" G="1" B="129" A="254"/>
<Vtx X="3" Y="12" Z="0" S="-1542" T="138" R="148" G="67" B="0" A="254"/>
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="187" G="18" B="105" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="187" G="18" B="105" A="254"/>
<Vtx X="10" Y="10" Z="2" S="-1285" T="-5" R="187" G="18" B="105" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="18" G="187" B="105" A="254"/>
<Vtx X="10" Y="10" Z="2" S="-1285" T="-5" R="18" G="187" B="105" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="18" G="187" B="105" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="50" G="50" B="105" A="254"/>
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="50" G="50" B="105" A="254"/>
<Vtx X="10" Y="10" Z="2" S="-1285" T="-5" R="50" G="50" B="105" A="254"/>
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="187" G="18" B="151" A="254"/>
<Vtx X="10" Y="10" Z="-2" S="-1285" T="-5" R="187" G="18" B="151" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="187" G="18" B="151" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="18" G="187" B="151" A="254"/>
<Vtx X="6" Y="6" Z="0" S="-1285" T="505" R="18" G="187" B="151" A="254"/>
<Vtx X="10" Y="10" Z="-2" S="-1285" T="-5" R="18" G="187" B="151" A="254"/>
<Vtx X="15" Y="8" Z="0" S="-1030" T="-176" R="50" G="50" B="151" A="254"/>
<Vtx X="10" Y="10" Z="-2" S="-1285" T="-5" R="50" G="50" B="151" A="254"/>
<Vtx X="8" Y="15" Z="0" S="-1540" T="-176" R="50" G="50" B="151" A="254"/>
<Vtx X="13" Y="13" Z="1" S="-1285" T="-423" R="94" G="47" B="72" A="254"/>
<Vtx X="15" Y="14" Z="0" S="-1023" T="-490" R="93" G="86" B="0" A="254"/>
<Vtx X="14" Y="15" Z="0" S="-1547" T="-490" R="58" G="108" B="32" A="254"/>
<Vtx X="15" Y="13" Z="0" S="-1027" T="-439" R="125" G="20" B="0" A="254"/>
<Vtx X="15" Y="12" Z="0" S="-1027" T="-403" R="119" G="211" B="0" A="254"/>
<Vtx X="14" Y="12" Z="0" S="-1027" T="-399" R="37" G="134" B="0" A="254"/>
<Vtx X="13" Y="12" Z="0" S="-1023" T="-461" R="227" G="132" B="0" A="254"/>
<Vtx X="12" Y="13" Z="0" S="-1547" T="-461" R="163" G="170" B="0" A="254"/>
<Vtx X="12" Y="14" Z="0" S="-1543" T="-399" R="131" G="236" B="0" A="254"/>
<Vtx X="12" Y="15" Z="0" S="-1543" T="-403" R="137" G="45" B="0" A="254"/>
<Vtx X="13" Y="15" Z="0" S="-1543" T="-439" R="219" G="122" B="0" A="254"/>
<Vtx X="13" Y="13" Z="-1" S="-1285" T="-423" R="47" G="94" B="184" A="254"/>
<Vtx X="11" Y="5" Z="1" S="-1083" T="158" R="247" G="153" B="74" A="254"/>
<Vtx X="11" Y="3" Z="0" S="-1028" T="193" R="34" G="134" B="0" A="254"/>
<Vtx X="12" Y="3" Z="0" S="-1028" T="138" R="65" G="150" B="25" A="254"/>
<Vtx X="10" Y="3" Z="0" S="-1028" T="244" R="209" G="138" B="0" A="254"/>
<Vtx X="9" Y="4" Z="0" S="-1028" T="280" R="145" G="194" B="0" A="254"/>
<Vtx X="9" Y="5" Z="0" S="-1028" T="283" R="132" G="27" B="0" A="254"/>
<Vtx X="10" Y="6" Z="0" S="-1028" T="222" R="150" G="70" B="0" A="254"/>
<Vtx X="11" Y="7" Z="0" S="-1028" T="110" R="220" G="122" B="0" A="254"/>
<Vtx X="12" Y="6" Z="0" S="-1028" T="48" R="44" G="119" B="0" A="254"/>
<Vtx X="13" Y="5" Z="0" S="-1028" T="51" R="111" G="62" B="0" A="254"/>
<Vtx X="13" Y="4" Z="0" S="-1028" T="88" R="127" G="252" B="0" A="254"/>
<Vtx X="11" Y="5" Z="-1" S="-1083" T="158" R="60" G="171" B="183" A="254"/>
<Vtx X="5" Y="11" Z="1" S="-1487" T="158" R="171" G="60" B="73" A="254"/>
<Vtx X="3" Y="12" Z="0" S="-1542" T="138" R="137" G="45" B="0" A="254"/>
<Vtx X="3" Y="11" Z="0" S="-1542" T="193" R="134" G="3" B="35" A="254"/>
<Vtx X="4" Y="13" Z="0" S="-1542" T="88" R="171" G="94" B="0" A="254"/>
<Vtx X="5" Y="13" Z="0" S="-1542" T="51" R="5" G="127" B="0" A="254"/>
<Vtx X="6" Y="12" Z="0" S="-1542" T="48" R="70" G="106" B="0" A="254"/>
<Vtx X="7" Y="11" Z="0" S="-1542" T="110" R="122" G="36" B="0" A="254"/>
<Vtx X="6" Y="10" Z="0" S="-1542" T="222" R="119" G="212" B="0" A="254"/>
<Vtx X="5" Y="9" Z="0" S="-1542" T="283" R="63" G="146" B="0" A="254"/>
<Vtx X="4" Y="9" Z="0" S="-1542" T="280" R="20" G="131" B="0" A="254"/>
<Vtx X="3" Y="10" Z="0" S="-1542" T="244" R="188" G="149" B="0" A="254"/>
<Vtx X="5" Y="11" Z="-1" S="-1487" T="158" R="153" G="247" B="182" A="254"/>
</Vertex>
@@ -1,11 +1,114 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bosskey/mat_gBossKeyIconSpiritTempleDL_f3dlite_BossKeyGem_SpiritTemple"/>
<CallDisplayList Path="objects/object_bosskey/gBossKeyIconSpiritTempleDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="673" T="1329" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/gSoHHiliteCausticsTex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="255" G="85" B="0" A="178"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconSpiritTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="32"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="5" V01="4" V02="0"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="0" V01="2" V02="6"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="7" V01="2" V02="8"/>
<Triangle1 V00="2" V01="9" V02="8"/>
<Triangle1 V00="1" V01="9" V02="2"/>
<Triangle1 V00="1" V01="10" V02="9"/>
<Triangle1 V00="1" V01="11" V02="10"/>
<Triangle1 V00="1" V01="3" V02="11"/>
<Triangle1 V00="3" V01="8" V02="11"/>
<Triangle1 V00="7" V01="8" V02="3"/>
<Triangle1 V00="3" V01="4" V02="7"/>
<Triangle1 V00="12" V01="7" V02="4"/>
<Triangle1 V00="13" V01="12" V02="4"/>
<Triangle1 V00="14" V01="13" V02="4"/>
<Triangle1 V00="15" V01="14" V02="4"/>
<Triangle1 V00="5" V01="15" V02="4"/>
<Triangle1 V00="5" V01="6" V02="15"/>
<Triangle1 V00="15" V01="6" V02="14"/>
<Triangle1 V00="14" V01="6" V02="13"/>
<Triangle1 V00="13" V01="6" V02="12"/>
<Triangle1 V00="12" V01="6" V02="7"/>
<Triangle1 V00="16" V01="11" V02="8"/>
<Triangle1 V00="11" V01="16" V02="17"/>
<Triangle1 V00="18" V01="17" V02="16"/>
<Triangle1 V00="18" V01="16" V02="19"/>
<Triangle1 V00="9" V01="19" V02="16"/>
<Triangle1 V00="16" V01="8" V02="9"/>
<Triangle1 V00="10" V01="19" V02="9"/>
<Triangle1 V00="10" V01="20" V02="19"/>
<Triangle1 V00="10" V01="17" V02="20"/>
<Triangle1 V00="10" V01="11" V02="17"/>
<Triangle1 V00="20" V01="17" V02="21"/>
<Triangle1 V00="17" V01="18" V02="21"/>
<Triangle1 V00="22" V01="21" V02="18"/>
<Triangle1 V00="22" V01="18" V02="23"/>
<Triangle1 V00="19" V01="23" V02="18"/>
<Triangle1 V00="20" V01="23" V02="19"/>
<Triangle1 V00="24" V01="23" V02="20"/>
<Triangle1 V00="24" V01="20" V02="21"/>
<Triangle1 V00="22" V01="24" V02="21"/>
<Triangle1 V00="22" V01="23" V02="24"/>
<Triangle1 V00="25" V01="26" V02="27"/>
<Triangle1 V00="28" V01="26" V02="25"/>
<Triangle1 V00="28" V01="25" V02="29"/>
<Triangle1 V00="25" V01="27" V02="29"/>
<Triangle1 V00="27" V01="30" V02="29"/>
<Triangle1 V00="27" V01="26" V02="30"/>
<Triangle1 V00="31" V01="30" V02="26"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconSpiritTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="23"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="0" V02="2"/>
<Triangle1 V00="3" V01="2" V02="4"/>
<Triangle1 V00="4" V01="2" V02="5"/>
<Triangle1 V00="4" V01="5" V02="6"/>
<Triangle1 V00="3" V01="4" V02="6"/>
<Triangle1 V00="3" V01="6" V02="0"/>
<Triangle1 V00="0" V01="6" V02="7"/>
<Triangle1 V00="7" V01="6" V02="8"/>
<Triangle1 V00="8" V01="9" V02="7"/>
<Triangle1 V00="8" V01="1" V02="9"/>
<Triangle1 V00="1" V01="10" V02="9"/>
<Triangle1 V00="11" V01="10" V02="1"/>
<Triangle1 V00="0" V01="11" V02="1"/>
<Triangle1 V00="0" V01="7" V02="11"/>
<Triangle1 V00="11" V01="7" V02="12"/>
<Triangle1 V00="7" V01="9" V02="12"/>
<Triangle1 V00="13" V01="12" V02="9"/>
<Triangle1 V00="13" V01="9" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="15" V01="14" V02="10"/>
<Triangle1 V00="11" V01="15" V02="10"/>
<Triangle1 V00="11" V01="12" V02="15"/>
<Triangle1 V00="15" V01="12" V02="16"/>
<Triangle1 V00="12" V01="13" V02="16"/>
<Triangle1 V00="17" V01="16" V02="13"/>
<Triangle1 V00="17" V01="13" V02="14"/>
<Triangle1 V00="14" V01="18" V02="17"/>
<Triangle1 V00="19" V01="18" V02="14"/>
<Triangle1 V00="15" V01="19" V02="14"/>
<Triangle1 V00="15" V01="16" V02="19"/>
<Triangle1 V00="19" V01="16" V02="20"/>
<Triangle1 V00="16" V01="17" V02="20"/>
<Triangle1 V00="21" V01="20" V02="17"/>
<Triangle1 V00="21" V01="17" V02="18"/>
<Triangle1 V00="21" V01="18" V02="22"/>
<Triangle1 V00="22" V01="18" V02="19"/>
<Triangle1 V00="22" V01="19" V02="20"/>
<Triangle1 V00="21" V01="22" V02="20"/>
<EndDisplayList/>
</DisplayList>
@@ -1,100 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bosskey/gBossKeyIconSpiritTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="3" V02="1"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="5" V01="4" V02="0"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="0" V01="2" V02="6"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="7" V01="2" V02="8"/>
<Triangle1 V00="2" V01="9" V02="8"/>
<Triangle1 V00="1" V01="9" V02="2"/>
<Triangle1 V00="1" V01="10" V02="9"/>
<Triangle1 V00="1" V01="11" V02="10"/>
<Triangle1 V00="1" V01="3" V02="11"/>
<Triangle1 V00="3" V01="8" V02="11"/>
<Triangle1 V00="7" V01="8" V02="3"/>
<Triangle1 V00="3" V01="4" V02="7"/>
<Triangle1 V00="12" V01="7" V02="4"/>
<Triangle1 V00="13" V01="12" V02="4"/>
<Triangle1 V00="14" V01="13" V02="4"/>
<Triangle1 V00="15" V01="14" V02="4"/>
<Triangle1 V00="5" V01="15" V02="4"/>
<Triangle1 V00="5" V01="6" V02="15"/>
<Triangle1 V00="15" V01="6" V02="14"/>
<Triangle1 V00="14" V01="6" V02="13"/>
<Triangle1 V00="13" V01="6" V02="12"/>
<Triangle1 V00="12" V01="6" V02="7"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconSpiritTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="0" V02="3"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="4" V01="0" V02="5"/>
<Triangle1 V00="6" V01="5" V02="0"/>
<Triangle1 V00="0" V01="2" V02="6"/>
<Triangle1 V00="7" V01="5" V02="6"/>
<Triangle1 V00="7" V01="8" V02="5"/>
<Triangle1 V00="7" V01="3" V02="8"/>
<Triangle1 V00="7" V01="1" V02="3"/>
<Triangle1 V00="8" V01="3" V02="9"/>
<Triangle1 V00="3" V01="4" V02="9"/>
<Triangle1 V00="10" V01="9" V02="4"/>
<Triangle1 V00="10" V01="4" V02="11"/>
<Triangle1 V00="5" V01="11" V02="4"/>
<Triangle1 V00="8" V01="11" V02="5"/>
<Triangle1 V00="12" V01="11" V02="8"/>
<Triangle1 V00="12" V01="8" V02="9"/>
<Triangle1 V00="10" V01="12" V02="9"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="14" V02="15"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconSpiritTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="0" V01="2" V02="3"/>
<Triangle1 V00="2" V01="4" V02="3"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="4" V01="1" V02="5"/>
<Triangle1 V00="6" V01="5" V02="1"/>
<Triangle1 V00="7" V01="6" V02="1"/>
<Triangle1 V00="8" V01="7" V02="1"/>
<Triangle1 V00="8" V01="1" V02="9"/>
<Triangle1 V00="9" V01="1" V02="0"/>
<Triangle1 V00="9" V01="0" V02="3"/>
<Triangle1 V00="8" V01="9" V02="3"/>
<Triangle1 V00="8" V01="3" V02="7"/>
<Triangle1 V00="7" V01="3" V02="10"/>
<Triangle1 V00="10" V01="3" V02="5"/>
<Triangle1 V00="5" V01="11" V02="10"/>
<Triangle1 V00="5" V01="6" V02="11"/>
<Triangle1 V00="6" V01="12" V02="11"/>
<Triangle1 V00="13" V01="12" V02="6"/>
<Triangle1 V00="7" V01="13" V02="6"/>
<Triangle1 V00="7" V01="10" V02="13"/>
<Triangle1 V00="13" V01="10" V02="14"/>
<Triangle1 V00="10" V01="11" V02="14"/>
<Triangle1 V00="15" V01="14" V02="11"/>
<Triangle1 V00="15" V01="11" V02="12"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconSpiritTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="13"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="4" V01="3" V02="0"/>
<Triangle1 V00="4" V01="5" V02="3"/>
<Triangle1 V00="3" V01="5" V02="6"/>
<Triangle1 V00="5" V01="2" V02="6"/>
<Triangle1 V00="7" V01="6" V02="2"/>
<Triangle1 V00="7" V01="2" V02="1"/>
<Triangle1 V00="1" V01="8" V02="7"/>
<Triangle1 V00="9" V01="8" V02="1"/>
<Triangle1 V00="3" V01="9" V02="1"/>
<Triangle1 V00="3" V01="6" V02="9"/>
<Triangle1 V00="9" V01="6" V02="10"/>
<Triangle1 V00="6" V01="7" V02="10"/>
<Triangle1 V00="11" V01="10" V02="7"/>
<Triangle1 V00="11" V01="7" V02="8"/>
<Triangle1 V00="11" V01="8" V02="12"/>
<Triangle1 V00="12" V01="8" V02="9"/>
<Triangle1 V00="12" V01="9" V02="10"/>
<Triangle1 V00="11" V01="12" V02="10"/>
<EndDisplayList/>
</DisplayList>
@@ -1,63 +1,57 @@
<Vertex Version="0">
<Vtx X="12" Y="8" Z="0" S="-1040" T="772" R="137" G="212" B="0" A="254"/>
<Vtx X="12" Y="6" Z="0" S="-1037" T="835" R="134" G="37" B="0" A="254"/>
<Vtx X="12" Y="6" Z="0" S="-1037" T="835" R="135" G="37" B="0" A="254"/>
<Vtx X="14" Y="8" Z="1" S="-1078" T="661" R="3" G="239" B="126" A="254"/>
<Vtx X="14" Y="8" Z="-1" S="-1078" T="661" R="3" G="239" B="130" A="254"/>
<Vtx X="13" Y="11" Z="-1" S="-1142" T="469" R="252" G="11" B="130" A="254"/>
<Vtx X="13" Y="11" Z="-1" S="-1142" T="469" R="251" G="11" B="130" A="254"/>
<Vtx X="11" Y="10" Z="0" S="-1088" T="527" R="133" G="224" B="0" A="254"/>
<Vtx X="13" Y="11" Z="1" S="-1142" T="469" R="252" G="11" B="126" A="254"/>
<Vtx X="13" Y="11" Z="1" S="-1142" T="469" R="251" G="11" B="126" A="254"/>
<Vtx X="17" Y="9" Z="0" S="-1035" T="531" R="126" G="243" B="0" A="254"/>
<Vtx X="15" Y="6" Z="0" S="-1034" T="689" R="107" G="188" B="0" A="254"/>
<Vtx X="13" Y="6" Z="1" S="-1061" T="823" R="246" G="246" B="126" A="254"/>
<Vtx X="11" Y="5" Z="0" S="-1036" T="952" R="177" G="100" B="0" A="254"/>
<Vtx X="13" Y="6" Z="-1" S="-1061" T="823" R="246" G="246" B="130" A="254"/>
<Vtx X="15" Y="6" Z="0" S="-1034" T="689" R="108" G="188" B="0" A="254"/>
<Vtx X="13" Y="6" Z="1" S="-1061" T="823" R="245" G="245" B="126" A="254"/>
<Vtx X="11" Y="5" Z="0" S="-1036" T="952" R="177" G="99" B="0" A="254"/>
<Vtx X="13" Y="6" Z="-1" S="-1061" T="823" R="245" G="245" B="130" A="254"/>
<Vtx X="16" Y="12" Z="0" S="-1038" T="406" R="113" G="58" B="0" A="254"/>
<Vtx X="14" Y="14" Z="0" S="-1073" T="289" R="42" G="120" B="0" A="254"/>
<Vtx X="12" Y="14" Z="0" S="-1506" T="312" R="209" G="118" B="0" A="254"/>
<Vtx X="11" Y="12" Z="0" S="-1508" T="384" R="139" G="49" B="0" A="254"/>
<Vtx X="13" Y="4" Z="0" S="-1034" T="831" R="75" G="153" B="0" A="254"/>
<Vtx X="13" Y="6" Z="-1" S="-1061" T="823" R="246" G="246" B="130" A="254"/>
<Vtx X="15" Y="6" Z="0" S="-1034" T="689" R="107" G="188" B="0" A="254"/>
<Vtx X="13" Y="4" Z="0" S="-1034" T="831" R="75" G="154" B="0" A="254"/>
<Vtx X="11" Y="4" Z="-1" S="-1053" T="938" R="249" G="235" B="131" A="254"/>
<Vtx X="11" Y="3" Z="0" S="-1034" T="953" R="24" G="131" B="0" A="254"/>
<Vtx X="11" Y="4" Z="1" S="-1053" T="938" R="249" G="235" B="125" A="254"/>
<Vtx X="13" Y="6" Z="1" S="-1061" T="823" R="246" G="246" B="126" A="254"/>
<Vtx X="11" Y="5" Z="0" S="-1036" T="952" R="177" G="100" B="0" A="254"/>
<Vtx X="9" Y="4" Z="0" S="-1037" T="1059" R="222" G="122" B="0" A="254"/>
<Vtx X="9" Y="4" Z="0" S="-1048" T="1044" R="238" G="235" B="132" A="254"/>
<Vtx X="9" Y="3" Z="0" S="-1036" T="1046" R="234" G="131" B="0" A="254"/>
<Vtx X="9" Y="4" Z="0" S="-1048" T="1044" R="238" G="235" B="124" A="254"/>
<Vtx X="7" Y="4" Z="0" S="-1043" T="1163" R="130" G="19" B="0" A="254"/>
<Vtx X="7" Y="4" Z="0" S="-1043" T="1163" R="131" G="20" B="0" A="254"/>
<Vtx X="5" Y="6" Z="0" S="-1497" T="1237" R="214" G="136" B="0" A="254"/>
<Vtx X="6" Y="9" Z="1" S="-1428" T="1057" R="4" G="245" B="126" A="254"/>
<Vtx X="6" Y="9" Z="1" S="-1428" T="1057" R="5" G="245" B="126" A="254"/>
<Vtx X="3" Y="8" Z="0" S="-1532" T="1120" R="143" G="198" B="0" A="254"/>
<Vtx X="7" Y="6" Z="0" S="-1064" T="1214" R="47" G="138" B="0" A="254"/>
<Vtx X="6" Y="9" Z="1" S="-1428" T="1057" R="4" G="245" B="126" A="254"/>
<Vtx X="5" Y="6" Z="0" S="-1497" T="1237" R="214" G="136" B="0" A="254"/>
<Vtx X="6" Y="9" Z="-1" S="-1428" T="1057" R="4" G="245" B="130" A="254"/>
<Vtx X="3" Y="8" Z="0" S="-1532" T="1120" R="143" G="198" B="0" A="254"/>
<Vtx X="6" Y="9" Z="-1" S="-1428" T="1057" R="5" G="245" B="130" A="254"/>
<Vtx X="3" Y="10" Z="0" S="-1535" T="995" R="130" G="13" B="0" A="254"/>
<Vtx X="6" Y="12" Z="1" S="-1492" T="865" R="253" G="17" B="126" A="254"/>
<Vtx X="8" Y="12" Z="0" S="-1530" T="754" R="119" G="44" B="0" A="254"/>
<Vtx X="6" Y="12" Z="1" S="-1492" T="865" R="253" G="17" B="126" A="254"/>
<Vtx X="6" Y="9" Z="1" S="-1428" T="1057" R="5" G="245" B="126" A="254"/>
<Vtx X="9" Y="10" Z="0" S="-1482" T="999" R="123" G="32" B="0" A="254"/>
<Vtx X="9" Y="8" Z="0" S="-1062" T="1142" R="117" G="207" B="0" A="254"/>
<Vtx X="7" Y="6" Z="0" S="-1064" T="1214" R="47" G="138" B="0" A="254"/>
<Vtx X="6" Y="9" Z="-1" S="-1428" T="1057" R="5" G="245" B="130" A="254"/>
<Vtx X="6" Y="12" Z="-1" S="-1492" T="865" R="253" G="17" B="130" A="254"/>
<Vtx X="4" Y="13" Z="0" S="-1536" T="837" R="149" G="68" B="0" A="254"/>
<Vtx X="7" Y="14" Z="1" S="-1509" T="703" R="10" G="10" B="126" A="254"/>
<Vtx X="8" Y="13" Z="0" S="-1533" T="691" R="122" G="219" B="0" A="254"/>
<Vtx X="7" Y="14" Z="-1" S="-1509" T="703" R="10" G="10" B="130" A="254"/>
<Vtx X="6" Y="15" Z="0" S="-1536" T="695" R="181" G="103" B="0" A="254"/>
<Vtx X="7" Y="14" Z="1" S="-1509" T="703" R="10" G="10" B="126" A="254"/>
<Vtx X="3" Y="10" Z="0" S="-1535" T="995" R="130" G="13" B="0" A="254"/>
<Vtx X="4" Y="13" Z="0" S="-1536" T="837" R="148" G="68" B="0" A="254"/>
<Vtx X="7" Y="14" Z="1" S="-1509" T="703" R="11" G="11" B="126" A="254"/>
<Vtx X="8" Y="13" Z="0" S="-1533" T="691" R="121" G="219" B="0" A="254"/>
<Vtx X="7" Y="14" Z="-1" S="-1509" T="703" R="11" G="11" B="130" A="254"/>
<Vtx X="6" Y="15" Z="0" S="-1536" T="695" R="181" G="102" B="0" A="254"/>
<Vtx X="8" Y="16" Z="1" S="-1517" T="588" R="7" G="21" B="125" A="254"/>
<Vtx X="6" Y="15" Z="0" S="-1536" T="695" R="181" G="103" B="0" A="254"/>
<Vtx X="9" Y="15" Z="0" S="-1534" T="574" R="79" G="156" B="0" A="254"/>
<Vtx X="8" Y="13" Z="0" S="-1533" T="691" R="122" G="219" B="0" A="254"/>
<Vtx X="7" Y="14" Z="-1" S="-1509" T="703" R="10" G="10" B="130" A="254"/>
<Vtx X="9" Y="15" Z="0" S="-1534" T="574" R="79" G="157" B="0" A="254"/>
<Vtx X="8" Y="16" Z="-1" S="-1517" T="588" R="7" G="21" B="131" A="254"/>
<Vtx X="8" Y="16" Z="0" S="-1536" T="573" R="232" G="125" B="0" A="254"/>
<Vtx X="10" Y="16" Z="0" S="-1522" T="482" R="18" G="21" B="124" A="254"/>
<Vtx X="11" Y="15" Z="0" S="-1533" T="467" R="34" G="134" B="0" A="254"/>
<Vtx X="10" Y="16" Z="0" S="-1522" T="482" R="18" G="21" B="132" A="254"/>
<Vtx X="10" Y="16" Z="0" S="-1534" T="480" R="22" G="125" B="0" A="254"/>
<Vtx X="12" Y="16" Z="0" S="-1527" T="363" R="126" G="237" B="0" A="254"/>
<Vtx X="12" Y="16" Z="0" S="-1527" T="363" R="125" G="236" B="0" A="254"/>
</Vertex>
@@ -1,11 +1,118 @@
<DisplayList Version="0">
<CallDisplayList Path="objects/object_bosskey/mat_gBossKeyIconWaterTempleDL_f3dlite_BossKeyGem_WaterTemple"/>
<CallDisplayList Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_tri_0"/>
<PipeSync/>
<SetGeometryMode G_LIGHTING="1" />
<ClearGeometryMode G_TEXTURE_GEN="1" />
<SetCombineLERP A0="G_CCMUX_0" B0="G_CCMUX_0" C0="G_CCMUX_0" D0="G_CCMUX_SHADE" Aa0="G_ACMUX_0" Ab0="G_ACMUX_0" Ac0="G_ACMUX_0" Ad0="G_ACMUX_ENVIRONMENT" A1="G_CCMUX_0" B1="G_CCMUX_0" C1="G_CCMUX_0" D1="G_CCMUX_SHADE" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_ENVIRONMENT"/>
<Texture S="65535" T="65535" Level="0" Tile="0" On="0"/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_FOG="1" G_LIGHTING="1" G_SHADE="1" G_SHADING_SMOOTH="1" G_TEXTURE_GEN="1" G_TEXTURE_GEN_LINEAR="1" G_ZBUFFER="1"/>
<ClearGeometryMode G_CULL_BACK="1" G_CULL_FRONT="1" G_LOD="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" G_TC_FILT="1" G_TD_CLAMP="1" G_TF_BILERP="1" G_TL_TILE="1" G_TP_PERSP="1" G_TT_NONE="1"/>
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_RM_AA_ZB_XLU_SURF2="1" G_RM_FOG_SHADE_A="1" G_ZS_PIXEL="1"/>
<Texture S="673" T="1329" Level="0" Tile="0" On="1"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/gSoHHiliteCausticsTex" Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="0" ShiftS="0" MaskT="0" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="511" Dxt="512" />
<PipeSync/>
<SetTile Format="G_IM_FMT_I" Size="G_IM_SIZ_8b" Line="4" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="1" MaskT="3" ShiftT="1"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="0" G="137" B="255" A="178"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="30"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="0" V01="2" V02="6"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="2" V01="1" V02="7"/>
<Triangle1 V00="8" V01="7" V02="1"/>
<Triangle1 V00="1" V01="3" V02="8"/>
<Triangle1 V00="9" V01="8" V02="3"/>
<Triangle1 V00="4" V01="9" V02="3"/>
<Triangle1 V00="4" V01="5" V02="9"/>
<Triangle1 V00="9" V01="5" V02="8"/>
<Triangle1 V00="6" V01="8" V02="5"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="11" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<Triangle1 V00="15" V01="10" V02="16"/>
<Triangle1 V00="10" V01="12" V02="16"/>
<Triangle1 V00="12" V01="17" V02="16"/>
<Triangle1 V00="12" V01="11" V02="17"/>
<Triangle1 V00="18" V01="17" V02="11"/>
<Triangle1 V00="11" V01="13" V02="18"/>
<Triangle1 V00="19" V01="18" V02="13"/>
<Triangle1 V00="14" V01="19" V02="13"/>
<Triangle1 V00="14" V01="15" V02="19"/>
<Triangle1 V00="19" V01="15" V02="18"/>
<Triangle1 V00="16" V01="18" V02="15"/>
<Triangle1 V00="18" V01="16" V02="17"/>
<Triangle1 V00="20" V01="21" V02="22"/>
<Triangle1 V00="23" V01="21" V02="20"/>
<Triangle1 V00="20" V01="24" V02="23"/>
<Triangle1 V00="20" V01="25" V02="24"/>
<Triangle1 V00="25" V01="20" V02="26"/>
<Triangle1 V00="20" V01="22" V02="26"/>
<Triangle1 V00="22" V01="27" V02="26"/>
<Triangle1 V00="22" V01="21" V02="27"/>
<Triangle1 V00="28" V01="27" V02="21"/>
<Triangle1 V00="21" V01="23" V02="28"/>
<Triangle1 V00="29" V01="28" V02="23"/>
<Triangle1 V00="24" V01="29" V02="23"/>
<Triangle1 V00="24" V01="25" V02="29"/>
<Triangle1 V00="29" V01="25" V02="28"/>
<Triangle1 V00="26" V01="28" V02="25"/>
<Triangle1 V00="28" V01="26" V02="27"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="30" Count="30"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="0" V01="2" V02="6"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="2" V01="1" V02="7"/>
<Triangle1 V00="8" V01="7" V02="1"/>
<Triangle1 V00="1" V01="3" V02="8"/>
<Triangle1 V00="9" V01="8" V02="3"/>
<Triangle1 V00="4" V01="9" V02="3"/>
<Triangle1 V00="4" V01="5" V02="9"/>
<Triangle1 V00="9" V01="5" V02="8"/>
<Triangle1 V00="6" V01="8" V02="5"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="11" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<Triangle1 V00="15" V01="10" V02="16"/>
<Triangle1 V00="10" V01="12" V02="16"/>
<Triangle1 V00="12" V01="17" V02="16"/>
<Triangle1 V00="12" V01="11" V02="17"/>
<Triangle1 V00="18" V01="17" V02="11"/>
<Triangle1 V00="11" V01="13" V02="18"/>
<Triangle1 V00="19" V01="18" V02="13"/>
<Triangle1 V00="14" V01="19" V02="13"/>
<Triangle1 V00="14" V01="15" V02="19"/>
<Triangle1 V00="19" V01="15" V02="18"/>
<Triangle1 V00="16" V01="18" V02="15"/>
<Triangle1 V00="18" V01="16" V02="17"/>
<Triangle1 V00="20" V01="21" V02="22"/>
<Triangle1 V00="23" V01="21" V02="20"/>
<Triangle1 V00="20" V01="24" V02="23"/>
<Triangle1 V00="20" V01="25" V02="24"/>
<Triangle1 V00="25" V01="20" V02="26"/>
<Triangle1 V00="20" V01="22" V02="26"/>
<Triangle1 V00="22" V01="27" V02="26"/>
<Triangle1 V00="22" V01="21" V02="27"/>
<Triangle1 V00="28" V01="27" V02="21"/>
<Triangle1 V00="21" V01="23" V02="28"/>
<Triangle1 V00="29" V01="28" V02="23"/>
<Triangle1 V00="24" V01="29" V02="23"/>
<Triangle1 V00="24" V01="25" V02="29"/>
<Triangle1 V00="29" V01="25" V02="28"/>
<Triangle1 V00="26" V01="28" V02="25"/>
<Triangle1 V00="28" V01="26" V02="27"/>
<EndDisplayList/>
</DisplayList>
@@ -1,106 +0,0 @@
<DisplayList Version="0">
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="0" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="3" V01="1" V02="0"/>
<Triangle1 V00="0" V01="4" V02="3"/>
<Triangle1 V00="0" V01="5" V02="4"/>
<Triangle1 V00="5" V01="0" V02="6"/>
<Triangle1 V00="0" V01="2" V02="6"/>
<Triangle1 V00="2" V01="7" V02="6"/>
<Triangle1 V00="2" V01="1" V02="7"/>
<Triangle1 V00="8" V01="7" V02="1"/>
<Triangle1 V00="1" V01="3" V02="8"/>
<Triangle1 V00="9" V01="8" V02="3"/>
<Triangle1 V00="4" V01="9" V02="3"/>
<Triangle1 V00="4" V01="5" V02="9"/>
<Triangle1 V00="9" V01="5" V02="8"/>
<Triangle1 V00="6" V01="8" V02="5"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="11" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="16" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="0" V02="8"/>
<Triangle1 V00="8" V01="0" V02="6"/>
<Triangle1 V00="2" V01="6" V02="0"/>
<Triangle1 V00="6" V01="2" V02="4"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="11" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="32" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="0" V02="8"/>
<Triangle1 V00="8" V01="0" V02="6"/>
<Triangle1 V00="2" V01="6" V02="0"/>
<Triangle1 V00="6" V01="2" V02="4"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="11" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="48" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="0" V02="8"/>
<Triangle1 V00="8" V01="0" V02="6"/>
<Triangle1 V00="2" V01="6" V02="0"/>
<Triangle1 V00="6" V01="2" V02="4"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="11" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="64" Count="16"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="0" V02="8"/>
<Triangle1 V00="8" V01="0" V02="6"/>
<Triangle1 V00="2" V01="6" V02="0"/>
<Triangle1 V00="6" V01="2" V02="4"/>
<Triangle1 V00="10" V01="11" V02="12"/>
<Triangle1 V00="13" V01="11" V02="10"/>
<Triangle1 V00="10" V01="14" V02="13"/>
<Triangle1 V00="10" V01="15" V02="14"/>
<LoadVertices Path="objects/object_bosskey/gBossKeyIconWaterTempleDL_vtx_0" VertexBufferIndex="0" VertexOffset="80" Count="10"/>
<Triangle1 V00="0" V01="1" V02="2"/>
<Triangle1 V00="1" V01="3" V02="2"/>
<Triangle1 V00="3" V01="4" V02="2"/>
<Triangle1 V00="3" V01="5" V02="4"/>
<Triangle1 V00="6" V01="4" V02="5"/>
<Triangle1 V00="5" V01="7" V02="6"/>
<Triangle1 V00="8" V01="6" V02="7"/>
<Triangle1 V00="9" V01="8" V02="7"/>
<Triangle1 V00="9" V01="0" V02="8"/>
<Triangle1 V00="8" V01="0" V02="6"/>
<Triangle1 V00="2" V01="6" V02="0"/>
<Triangle1 V00="6" V01="2" V02="4"/>
<EndDisplayList/>
</DisplayList>
@@ -9,84 +9,54 @@
<Vtx X="14" Y="12" Z="0" S="-1045" T="344" R="111" G="194" B="0" A="254"/>
<Vtx X="13" Y="11" Z="0" S="-1045" T="395" R="59" G="143" B="0" A="254"/>
<Vtx X="11" Y="11" Z="0" S="-1285" T="288" R="166" G="166" B="0" A="254"/>
<Vtx X="13" Y="5" Z="0" S="-1034" T="841" R="127" G="249" B="0" A="254"/>
<Vtx X="13" Y="5" Z="0" S="-1034" T="841" R="127" G="248" B="0" A="254"/>
<Vtx X="11" Y="5" Z="1" S="-1086" T="925" R="13" G="227" B="123" A="254"/>
<Vtx X="12" Y="3" Z="0" S="-1033" T="934" R="28" G="132" B="0" A="254"/>
<Vtx X="11" Y="7" Z="1" S="-1115" T="914" R="243" G="29" B="123" A="254"/>
<Vtx X="12" Y="7" Z="0" S="-1036" T="790" R="111" G="62" B="0" A="254"/>
<Vtx X="11" Y="7" Z="-1" S="-1115" T="914" R="243" G="29" B="133" A="254"/>
<Vtx X="11" Y="7" Z="-1" S="-1115" T="914" R="243" G="29" B="133" A="254"/>
<Vtx X="13" Y="5" Z="0" S="-1034" T="841" R="127" G="249" B="0" A="254"/>
<Vtx X="11" Y="5" Z="-1" S="-1086" T="925" R="13" G="227" B="133" A="254"/>
<Vtx X="12" Y="3" Z="0" S="-1033" T="934" R="28" G="132" B="0" A="254"/>
<Vtx X="10" Y="4" Z="0" S="-1035" T="1027" R="145" G="194" B="0" A="254"/>
<Vtx X="11" Y="5" Z="1" S="-1086" T="925" R="13" G="227" B="123" A="254"/>
<Vtx X="9" Y="6" Z="0" S="-1041" T="1076" R="129" G="7" B="0" A="254"/>
<Vtx X="11" Y="7" Z="1" S="-1115" T="914" R="243" G="29" B="123" A="254"/>
<Vtx X="9" Y="6" Z="0" S="-1041" T="1076" R="129" G="8" B="0" A="254"/>
<Vtx X="10" Y="9" Z="0" S="-1050" T="932" R="228" G="124" B="0" A="254"/>
<Vtx X="12" Y="7" Z="0" S="-1036" T="790" R="111" G="62" B="0" A="254"/>
<Vtx X="15" Y="10" Z="0" S="-1035" T="499" R="64" G="110" B="0" A="254"/>
<Vtx X="15" Y="10" Z="0" S="-1035" T="499" R="64" G="109" B="0" A="254"/>
<Vtx X="15" Y="8" Z="1" S="-1086" T="601" R="32" G="243" B="122" A="254"/>
<Vtx X="17" Y="8" Z="0" S="-1033" T="592" R="124" G="228" B="0" A="254"/>
<Vtx X="13" Y="9" Z="1" S="-1115" T="612" R="224" G="13" B="122" A="254"/>
<Vtx X="13" Y="10" Z="0" S="-1041" T="450" R="246" G="127" B="0" A="254"/>
<Vtx X="13" Y="10" Z="0" S="-1041" T="450" R="245" G="127" B="0" A="254"/>
<Vtx X="13" Y="9" Z="-1" S="-1115" T="612" R="224" G="13" B="134" A="254"/>
<Vtx X="13" Y="9" Z="-1" S="-1115" T="612" R="224" G="13" B="134" A="254"/>
<Vtx X="15" Y="10" Z="0" S="-1035" T="499" R="64" G="110" B="0" A="254"/>
<Vtx X="15" Y="8" Z="-1" S="-1086" T="601" R="32" G="243" B="134" A="254"/>
<Vtx X="17" Y="8" Z="0" S="-1033" T="592" R="124" G="228" B="0" A="254"/>
<Vtx X="15" Y="7" Z="0" S="-1034" T="685" R="10" G="129" B="0" A="254"/>
<Vtx X="15" Y="8" Z="1" S="-1086" T="601" R="32" G="243" B="122" A="254"/>
<Vtx X="13" Y="7" Z="0" S="-1036" T="736" R="192" G="146" B="0" A="254"/>
<Vtx X="13" Y="9" Z="1" S="-1115" T="612" R="224" G="13" B="122" A="254"/>
<Vtx X="15" Y="7" Z="0" S="-1034" T="685" R="11" G="129" B="0" A="254"/>
<Vtx X="13" Y="7" Z="0" S="-1036" T="736" R="192" G="147" B="0" A="254"/>
<Vtx X="11" Y="9" Z="0" S="-1050" T="594" R="132" G="28" B="0" A="254"/>
<Vtx X="13" Y="10" Z="0" S="-1041" T="450" R="246" G="127" B="0" A="254"/>
<Vtx X="7" Y="5" Z="0" S="-1045" T="1182" R="62" G="145" B="0" A="254"/>
<Vtx X="6" Y="6" Z="1" S="-1285" T="1175" R="232" G="232" B="122" A="254"/>
<Vtx X="5" Y="5" Z="0" S="-1285" T="1268" R="166" G="166" B="0" A="254"/>
<Vtx X="8" Y="8" Z="1" S="-1285" T="1123" R="27" G="27" B="121" A="254"/>
<Vtx X="9" Y="7" Z="0" S="-1045" T="1131" R="113" G="197" B="0" A="254"/>
<Vtx X="8" Y="8" Z="-1" S="-1285" T="1123" R="27" G="27" B="135" A="254"/>
<Vtx X="8" Y="8" Z="-1" S="-1285" T="1123" R="27" G="27" B="135" A="254"/>
<Vtx X="7" Y="5" Z="0" S="-1045" T="1182" R="62" G="145" B="0" A="254"/>
<Vtx X="6" Y="6" Z="-1" S="-1285" T="1175" R="232" G="232" B="134" A="254"/>
<Vtx X="5" Y="5" Z="0" S="-1285" T="1268" R="166" G="166" B="0" A="254"/>
<Vtx X="5" Y="7" Z="0" S="-1525" T="1182" R="145" G="62" B="0" A="254"/>
<Vtx X="6" Y="6" Z="1" S="-1285" T="1175" R="232" G="232" B="122" A="254"/>
<Vtx X="7" Y="9" Z="0" S="-1525" T="1131" R="197" G="113" B="0" A="254"/>
<Vtx X="8" Y="8" Z="1" S="-1285" T="1123" R="27" G="27" B="121" A="254"/>
<Vtx X="9" Y="9" Z="0" S="-1285" T="1238" R="90" G="90" B="0" A="254"/>
<Vtx X="9" Y="7" Z="0" S="-1045" T="1131" R="113" G="197" B="0" A="254"/>
<Vtx X="4" Y="10" Z="0" S="-1535" T="1027" R="192" G="146" B="0" A="254"/>
<Vtx X="4" Y="10" Z="0" S="-1535" T="1027" R="192" G="147" B="0" A="254"/>
<Vtx X="5" Y="11" Z="1" S="-1484" T="925" R="224" G="13" B="122" A="254"/>
<Vtx X="3" Y="12" Z="0" S="-1537" T="934" R="132" G="28" B="0" A="254"/>
<Vtx X="7" Y="11" Z="1" S="-1455" T="914" R="32" G="243" B="122" A="254"/>
<Vtx X="6" Y="9" Z="0" S="-1529" T="1076" R="10" G="129" B="0" A="254"/>
<Vtx X="6" Y="9" Z="0" S="-1529" T="1076" R="11" G="129" B="0" A="254"/>
<Vtx X="7" Y="11" Z="-1" S="-1455" T="914" R="32" G="243" B="134" A="254"/>
<Vtx X="7" Y="11" Z="-1" S="-1455" T="914" R="32" G="243" B="134" A="254"/>
<Vtx X="4" Y="10" Z="0" S="-1535" T="1027" R="192" G="146" B="0" A="254"/>
<Vtx X="5" Y="11" Z="-1" S="-1484" T="925" R="224" G="13" B="134" A="254"/>
<Vtx X="3" Y="12" Z="0" S="-1537" T="934" R="132" G="28" B="0" A="254"/>
<Vtx X="5" Y="13" Z="0" S="-1536" T="841" R="246" G="127" B="0" A="254"/>
<Vtx X="5" Y="11" Z="1" S="-1484" T="925" R="224" G="13" B="122" A="254"/>
<Vtx X="7" Y="12" Z="0" S="-1534" T="790" R="64" G="110" B="0" A="254"/>
<Vtx X="7" Y="11" Z="1" S="-1455" T="914" R="32" G="243" B="122" A="254"/>
<Vtx X="5" Y="13" Z="0" S="-1536" T="841" R="245" G="127" B="0" A="254"/>
<Vtx X="7" Y="12" Z="0" S="-1534" T="790" R="64" G="109" B="0" A="254"/>
<Vtx X="9" Y="10" Z="0" S="-1520" T="932" R="124" G="228" B="0" A="254"/>
<Vtx X="6" Y="9" Z="0" S="-1529" T="1076" R="10" G="129" B="0" A="254"/>
<Vtx X="7" Y="15" Z="0" S="-1536" T="685" R="129" G="7" B="0" A="254"/>
<Vtx X="7" Y="15" Z="0" S="-1536" T="685" R="129" G="8" B="0" A="254"/>
<Vtx X="8" Y="15" Z="1" S="-1484" T="601" R="243" G="29" B="123" A="254"/>
<Vtx X="8" Y="17" Z="0" S="-1537" T="592" R="228" G="124" B="0" A="254"/>
<Vtx X="9" Y="13" Z="1" S="-1455" T="612" R="13" G="227" B="123" A="254"/>
<Vtx X="7" Y="13" Z="0" S="-1534" T="736" R="145" G="194" B="0" A="254"/>
<Vtx X="9" Y="13" Z="-1" S="-1455" T="612" R="13" G="227" B="133" A="254"/>
<Vtx X="9" Y="13" Z="-1" S="-1455" T="612" R="13" G="227" B="133" A="254"/>
<Vtx X="7" Y="15" Z="0" S="-1536" T="685" R="129" G="7" B="0" A="254"/>
<Vtx X="8" Y="15" Z="-1" S="-1484" T="601" R="243" G="29" B="133" A="254"/>
<Vtx X="8" Y="17" Z="0" S="-1537" T="592" R="228" G="124" B="0" A="254"/>
<Vtx X="10" Y="15" Z="0" S="-1535" T="499" R="111" G="62" B="0" A="254"/>
<Vtx X="8" Y="15" Z="1" S="-1484" T="601" R="243" G="29" B="123" A="254"/>
<Vtx X="10" Y="13" Z="0" S="-1529" T="450" R="127" G="249" B="0" A="254"/>
<Vtx X="9" Y="13" Z="1" S="-1455" T="612" R="13" G="227" B="123" A="254"/>
<Vtx X="10" Y="13" Z="0" S="-1529" T="450" R="127" G="248" B="0" A="254"/>
<Vtx X="9" Y="11" Z="0" S="-1520" T="594" R="28" G="132" B="0" A="254"/>
<Vtx X="7" Y="13" Z="0" S="-1534" T="736" R="145" G="194" B="0" A="254"/>
</Vertex>
@@ -1,21 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_XLU_SURF2="1" />
<Texture S="673" T="1329" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/Hilite_Caustics2" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="255" G="0" B="0" A="178"/>
<EndDisplayList/>
</DisplayList>
@@ -1,21 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_XLU_SURF2="1" />
<Texture S="1329" T="673" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/Hilite_Caustics2" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="0" G="255" B="0" A="178"/>
<EndDisplayList/>
</DisplayList>
@@ -1,21 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_XLU_SURF2="1" />
<Texture S="3295" T="5261" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/Hilite_Caustics2" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="1" MaskT="3" ShiftT="2"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="1" MaskT="3" ShiftT="2"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="255" G="0" B="0" A="178"/>
<EndDisplayList/>
</DisplayList>
@@ -1,21 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_XLU_SURF2="1" />
<Texture S="673" T="673" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/Hilite_Caustics2" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="1" MaskT="3" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="1" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="0" R="153" G="0" B="255" A="178"/>
<EndDisplayList/>
</DisplayList>
@@ -1,21 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_XLU_SURF2="1" />
<Texture S="673" T="1329" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/Hilite_Caustics2" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="0" MaskT="3" ShiftT="0"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="4" ShiftS="0" MaskT="3" ShiftT="0"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="255" G="85" B="0" A="178"/>
<EndDisplayList/>
</DisplayList>
@@ -1,21 +0,0 @@
<DisplayList Version="0">
<PipeSync/>
<SetCombineLERP A0="G_CCMUX_1" B0="G_CCMUX_0" C0="G_CCMUX_TEXEL0" D0="G_CCMUX_0" Aa0="G_ACMUX_1" Ab0="G_ACMUX_0" Ac0="G_ACMUX_PRIMITIVE" Ad0="G_ACMUX_0" A1="G_CCMUX_TEXEL1" B1="G_CCMUX_ENVIRONMENT" C1="G_CCMUX_COMBINED" D1="G_CCMUX_ENVIRONMENT" Aa1="G_ACMUX_0" Ab1="G_ACMUX_0" Ac1="G_ACMUX_0" Ad1="G_ACMUX_COMBINED"/>
<SetGeometryMode G_ZBUFFER="1" G_SHADE="1" G_FOG="1" G_LIGHTING="1" G_TEXTURE_GEN="1" G_SHADING_SMOOTH="1" />
<ClearGeometryMode G_CULL_FRONT="1" G_CULL_BACK="1" G_TEXTURE_GEN_LINEAR="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_H" Sft="4" Length="20" G_AD_NOISE="1" G_CD_MAGICSQ="1" G_CK_NONE="1" G_TC_FILT="1" G_TF_BILERP="1" G_TL_TILE="1" G_TD_CLAMP="1" G_TP_PERSP="1" G_CYC_2CYCLE="1" G_PM_NPRIMITIVE="1" />
<SetOtherMode Cmd="G_SETOTHERMODE_L" Sft="0" Length="32" G_AC_NONE="1" G_ZS_PIXEL="1" G_RM_FOG_SHADE_A="1" G_RM_AA_ZB_XLU_SURF2="1" />
<Texture S="673" T="1329" Level="0" Tile="0" On="1"/>
<SetTextureLUT Mode="G_TT_NONE"/>
<TileSync/>
<SetTextureImage Path="objects/object_bosskey/Hilite_Caustics2" Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Width="1"/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b_LOAD_BLOCK" Line="0" TMem="0" Tile="7" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="1" MaskT="3" ShiftT="1"/>
<LoadSync/>
<LoadBlock Tile="7" Uls="0" Ult="0" Lrs="1023" Dxt="256"/>
<PipeSync/>
<SetTile Format="G_IM_FMT_RGBA" Size="G_IM_SIZ_16b" Line="8" TMem="0" Tile="0" Palette="0" Cms0="G_TX_WRAP" Cms1="G_TX_NOMIRROR" Cmt0="G_TX_WRAP" Cmt1="G_TX_NOMIRROR" MaskS="3" ShiftS="1" MaskT="3" ShiftT="1"/>
<SetTileSize T="0" Uls="0" Ult="0" Lrs="0" Lrt="0"/>
<SetPrimColor M="0" L="128" R="0" G="137" B="255" A="178"/>
<EndDisplayList/>
</DisplayList>

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