Skip to content

Randomizer - Shuffle Roll (V2) - #17

Open
TheLynk wants to merge 46 commits into
developfrom
ShuffleRollV2
Open

Randomizer - Shuffle Roll (V2)#17
TheLynk wants to merge 46 commits into
developfrom
ShuffleRollV2

Conversation

@TheLynk

@TheLynk TheLynk commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Add new setting randomizer "Shuffle Roll", shuffle ability do a roll for Link
Logic update for Tree and Break Crates

I am not against feedback or ideas for the custom model
And for All language Translation
And for logic

Roll item Model is compatible texture mod

List of things to finish :

  • Put a definitive icon for the tracker item
  • Added to the logic the PR of @Pepper0ni
  • check the logic again for tricks and such

Origin PR : HarbourMasters#5956

RollAnimation.mp4

Build Artifacts

TheLynk and others added 30 commits August 4, 2026 21:01
Co-authored-by: serprex <159546+serprex@users.noreply.github.com>
serprex and others added 16 commits August 9, 2026 02:07
1. fix filtering trials hints when only 1-3 required
2. clearing names per iteration won't work with dual hints
…music packs) (HarbourMasters#6932)

Root cause of three identical field crashes (audio thread, opcode fetch
through a pointer with its low 32 bits overwritten, seconds after scene
transitions): AudioHeap_AllocPermanent writes permanentCache[index] with
index = permanentPool.count and no bound against the 32-entry array. In
SoH every soundfont sync-load is forced permanent, and custom sequences
whose SEQ.xml says CachePolicy="Temporary" ALSO allocate permanently
(the factory stores the LUS enum where CACHE_TEMPORARY == 0, while
AudioLoad_SyncLoad's switch reads 0 with the ROM convention
'permanent'). A pack with ~60 streamed customs plus vanilla fonts pushes
count past 32 within a session, after which each allocation sprays a
{ptr, size, tableType/id} triplet at 24-byte stride through
gAudioContext - entry[135]'s ptr field lands exactly on
seqPlayers[0].scriptState.pc and entry[156] on seqPlayers[1]'s (both
verified against the crash-dump registers).

- permanentCache raised 32 -> 512 (12 KB) and AllocPermanent refuses
  allocations past the array instead of corrupting memory.
- Same unbounded-index disease fixed in the three sibling writers:
  AllocCached's persistent path (16-entry array; CACHE_EITHER degrades
  to temporary, hard persistent requests fail cleanly),
  AllocPersistentSampleCacheEntry, AllocTemporarySampleCacheEntry.
- seqLoadStatus malloc sized for the full id space (sequenceMapSize +
  0xF) matching sequenceMap; custom ids above sequenceMapSize previously
  overflowed the allocation by up to 15 bytes.

Upstream SoH bugs, not branch-introduced - this branch's many-track
packs merely made the overflow reachable in normal play. Standalone
upstreamable fix.
Co-authored-by: PurpleHato <linkvssangoku.jr@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants