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>
* 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
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
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.
Add explicit alt prefix checking to animation loading
Makes ResourceMgr_LoadAnimByName alt-toggleable this will work for Link and any other animations files
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.