After a page process has opened many AudioContexts, WebKit can hand out
one whose sampleRate is 0. The adapter passed that rate to binjgb, whose
emulator_run_until divides by the audio frequency on every call, so the
first frame trapped with "Division by zero". This failed the Day-Care
cartridge comparisons on WebKit after earlier tests had created hundreds
of emulators, and could crash the reference player in Safari.
A context without a usable rate is now closed and the emulator runs
silently at the fallback rate, as when no AudioContext can be created.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port forced movement (turn delays, bumps, ice, currents, pits), dynamic
return warps, elevators, Surf, Cut, Strength and cycling rules, working
map blocks with changeblock/changemapblocks, and the remaining NPC
movement types and movement commands.
Add tileset animation from the ROM's command tables, grass sprite
priority and special map palettes; room decorations with ownership, the
bedroom PC and save migration; and Key Items access to the Bicycle.
Fourteen original-engine traces compare positions, facing, actors, event
flags and scripted poses. Tile animation matches original VRAM for four
tilesets, and LoadMapPals matches 192 palette cases. skyfall_top now
keeps the $60 sprite offset its step function leaves behind.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>