summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-07-13fix(audio): bounds-check fontId to stop OOB crash with large SAF packs (#6916)David Racine
AudioLoad_IsFontLoadComplete had a stub `return true` that bypassed all load-status checks, masking an out-of-bounds write: for large SAF packs (many custom sequences) SetFontLoadStatus indexed fontLoadStatus[] with fontId values larger than the fontMapSize-sized array, causing heap corruption and semi-random crashes. Remove the stub. Add a (size_t)fontId >= fontMapSize guard in both the check and the setter: out-of-range IDs (custom SAF sequences that carry no associated soundfont) are treated as "loaded" in the check and silently skipped in the write, matching prior observable behavior while eliminating the OOB access. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13Don't point free cam at sky coming out of crawlspace (#6920)Philip Dubé
2026-07-13Fix presets, regressed from LACS decoupling (#6919)Philip Dubé
2026-07-13Rando: UX improvements of Locations page (#6817)Shishu the Dragon
2026-07-13take nlohmann::json by const reference instead of copying (#6918)Philip Dubé
2026-07-13Optimize CustomMessageManager.cpp (#6915)Philip Dubé
Reduce copies. Fix Capitalize & GetAllMessages only modifying unused copies
2026-07-12Add Hint Tracker window for randomizer saves (#6906)Mark Eldridge
A new dockable tracker window (Randomizer menu, alongside the other trackers) that records every hint the player has been shown and presents them in two tabs: - Locations: every hint location grouped by area, with hint text masked as "???" until the stone or NPC has actually been read. Auto-scrolls to the current area on scene transitions. - Journal: only hints the player has already read, grouped by hint type with the most valuable first. Way of the Hero and Foolish entries render as compact area lines in configurable colors defaulting to the in-game textbox palette; item hints are ordered by the same adjusted item category that drives chest appearance, so ice trap disguises rank as their cover item, and Mysterious Shuffle disables the ranking. The design is strictly spoiler-free: the tracker only ever shows what the player has been told in-game. There is no reveal option, the Journal hides unread hints entirely (its headers show read counts only, never totals), and requirements like Mask of Truth are respected because detection sits on the exact message-resolution paths that decide whether a hint is shown. Detection: a new OnRandoHintRevealed GameInteractor hook fires from ReadHintMessage helpers in the gossip stone and static hint message builders whenever a hint message is resolved for display; the tracker subscribes to it. Read state persists per save file in a new "hintTrackerData" SaveManager section as canonical hint names (robust against enum reordering; unknown or malformed entries are skipped on load), with the read set mutex-guarded against the threaded save path. The window follows the sibling trackers' conventions: BeginFloatWindows window/floating modes with combo-button and pause gating, a two-column settings popout matching the Check Tracker's layout (behavior settings left, colors right), header visibility toggles, font scaling, search filtering, and per-save scoping with a placeholder on vanilla saves. User-facing strings go through CustomMessage with EN/DE/FR text. Co-authored-by: meldridge <meldridge@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-12Add save state wiring for Barinade, Bongo Bongo, & Morpha (#6914)Philip Dubé
Rename various variables across codebase to match decomp, many had been renamed when exposed for previous save state mechanism
2026-07-12Avoid double line break when revealing MQness of spirit temple (#6912)Philip Dubé
2026-07-12Bugfix, prevent looping fanfares from softlocking HBA (#6874)djevangelia
2026-07-12fix build (#6911)Philip Dubé
GIM needed change from game interactor no longer pulling in z64.h
2026-07-12wire decomp static savestates with macros (#6904)Philip Dubé
2026-07-12GIM Restoration (#6865)Amber Burton
All edge cases for bottle combinations and replacement/filling mirrors the real game, as well we produce the compass text, and does not render the item exactly as the original game does. (I would have preferred rendering the item since its only cosmetic but I couldn't find a way to do it). This also swaps the table redirect stuff for using the direct item id's which is a lot more clear and does not substitute anything for 'good enough' and covers all the edge case ids that have been documented. This is purely a cosmetic change to present the visual of the item without affecting the cutscene making any tricks for GIM still work and just looks more polished. This supplies effects of ALL game versions (including MZX build) as well as providing text table. To note: we still can crash with GIM even when returning item None EVEN at least with returning Kokiri Tunic (I can't really figure out why) and there are a few items in the table that use extra data that I don't know how to implement here just yet but the info is in the docs under "Variable". In the case of disabling the gim restoration, the game would still crash. This change adds a text id protection to prevent crashing, as well prevents invalid items from crashing directly, and also makes it so the game will no longer crash when having GIM disabled in the menu. Co-authored-by: serprex <159546+serprex@users.noreply.github.com>
2026-07-12Decomp pull, some `z_player` and global changes (#6908)djevangelia
2026-07-12fix master sword in sheath custom equip not loading (#6909)Jameriquiah
LoadCustomGfx's check being gated by OR condition broke gCustomMasterSwordInSheathDL, i can only assume this is because the sheathed sword DL is the "default" state called by link's skeleton. that condition in customequipment.cpp is not the cause of the log spam that #6862 aimed to fix so it was unneeded
2026-07-12remove z64.h from gameinteractor.h (#6903)louist103
2026-07-12optimize frame interpolation memory (#6901)Philip Dubé
don't generate all matrices for game tick upfront, interpolate per frame
2026-07-11Hookify text speed options (#6881)Jordan Longstaff
2026-07-11Add water switch signs to shuffle signs (#6876)Chris
2026-07-11Maintenance, edits and addition to Lake Hylia water control (#6884)djevangelia
2026-07-11Add color to the log level in the console log (#6589)Pepe20129
2026-07-10Fix audio regression playing audio too slowly (#6894)Philip Dubé
Dither to 32000Khz
2026-07-10Optional 3rd-Person Mouse Camera Controls (#6891)Jake Edvenson
Included quick spins in disabled checks
2026-07-10Force skipping GF cutscene in rando (#6893)Garrett Cox
2026-07-09Decomp, update `z_en_holl.c` (#6890)djevangelia
2026-07-09[Bugfix] - First quiver starting item causes crash (#6889)Chris
2026-07-08Bugfix, child Hookshot first person in Hylia lab (#6847)djevangelia
2026-07-08Enhancement, add SoT blocks to one point cutscene skip (#6848)djevangelia
2026-07-08cleanup lake hylia swim spawn hook (#6887)Philip Dubé
2026-07-08gGiScaleMtx (#6886)Jameriquiah
2026-07-08Bugfix, rando Domain to Lake entry air swim (#6873)djevangelia
2026-07-08Fix rando items in gameplay stats (#6883)A Green Spoon
Fixes a regression in displaying rando items and an oob check in the gameplay stats timestamps. Also adds missing random items to the list.
2026-07-07fix regression where gerudo guards stopped asking if you want to be jailed ↵Philip Dubé
(#6879)
2026-07-07pull decomp changes: actor functions, z_en_horse.c (#6877)Philip Dubé
2026-07-05fix: restore BGM after Stalfos group defeat in MQ Water Temple (#6408)AutoJanitor
In EnTest_Destroy, the check for nearby Stalfos uses Actor_FindNearby which includes killed actors (update == NULL) still in the linked list. When multiple Stalfos die in the same frame or in quick succession, the last one to be destroyed still sees the others in the actor list and skips the BGM restore call (func_800F5B58). Replace Actor_FindNearby with a custom check that only counts living actors (update != NULL). This ensures the miniboss BGM is properly restored to the dungeon theme when the last Stalfos in a group is defeated. Co-authored-by: serprex <159546+serprex@users.noreply.github.com>
2026-07-05remove set env color from key dl (#6866)Jameriquiah
2026-07-051 Cache + Fix logical errors (#6862)Amber Burton
So this fixes some logical errors with loading the resources so its checking they exist before trying to test-load them... It also added a cache for the alt skeleton by tunic type so we arent constantly trying to reassign the tunic (This change in particular may prevent instant model swapping depending how the model swap with custom content is handled if loaded in a menu like NEI does)... Current system was just spamming that check over and over and trying to reload skeletons constantly so I opted for detecting if the tunic actually changes THEN allow a recheck here, otherwise exit out early. The skeleton.cpp and skeleton.h files can be reverted if suspected that will interfere with intended custom model usage.
2026-07-04Decouple GBK from LACS (#5838)Philip Dubé
Triforce Pieces can now be tokens for bridge or ganon's soul. & can be tokens for multiple rewards Wincon can now be arbitrary conditions Ganon's Soul (removed from existing boss soul options) can now be arbitrary conditions Co-authored-by: Pepper0ni <93387759+Pepper0ni@users.noreply.github.com>
2026-07-04SpeedModifiers.cpp (#6861)Philip Dubé
Prevent speed modifiers affecting dive speed when bunny jump not enabled
2026-07-04Ensure great fairy rewards are synced in vanilla (#6859)Garrett Cox
2026-07-04ActorViewer, add hex id and params (#6863)djevangelia
2026-07-04Desync the great fairy cutscene (#6860)Amber Burton
When 2 players are in the fairy fountain and 1 activates the great fairy cutscene, it can force the other player into the cutscene as well, and I've had some crashes arbitrarily too so this guarentees that doesnt happen.
2026-07-04Ivan: Move ActorDB registration into IvanCoop.cpp (#6815)Shishu the Dragon
2026-07-03DC MQ: RT_VISIBLE_COLLISION to reach above stairs with hookshot (#6840)Philip Dubé
Also RT_DC_ALCOVE_GS MQ crate is like RT_DC_VINES_GS but without precision
2026-07-03Check for the Wolfos Gate before letting child out of SFM without climb. (#6851)Pepper0ni
2026-07-03Bugfix, add Dodongo fire in enemy randomizer (#6855)djevangelia
2026-07-02move wallet fill after Link's Pocket (#6846)A Green Spoon
2026-07-01Bugfix, Bigocto softlock on early damage (#6842)djevangelia
2026-07-01Fix for actors / crawlspaces / doors not loading after loading a savestate ↵FantaTanked
(#6838) Fixes an issue where actors do not load properly after creating a savestate and then going to either a new scene or loading a different area of the map (graveyard near shadow -> main section of graveyard dampes door is missing after loading again.)
2026-07-01move randinf item handling inside set_randinf block (#6843)A Green Spoon