Yoshi's Island Practice Hack 1.0.0
What's Changed
In addition to various optimisations across the codebase, code used to calculate and display HUD values has been greatly optimised.
The following benchmarks were recorded with Mesen 2.0.0's profiler, comparing practice hack v0.4.4 to current, playing through 1-3 with a standard 100% route. Values are approximate averages.
level_tick is the function that runs every frame to calculate updates to HUD data and upload them to the buffer, idle is the "free" time spent not running code.
HUD off | HUD on
level_tick (incl): 1.5% -> 0.3% | 4.5% -> 2.1%
[reset] aka idle: 34% -> 36% | 27% -> 35%
Base game idle: 37%
As you can see, the new idle times are much closer to the base game both with HUD on and off. This should considerably reduce any extra lag that would not be experienced on the base game.
New Features:
- quick-loading a savestate now restores MAP16 changes (e.g. destroyed sand/foam)
- debug flag to force hasty control scheme
- frame advance
- disable music now disables all music and correctly re-enables the last queued track
- optionally rezone to level start instead of just the last room entrance
- soft-reset the game by holding R+L+Start+Select on controller 1
- more animations on the score screen and overworld are now skipped
Fixes:
- various audio crashes when warping before loading a file (now loads debug file 3)
- audio crash when warping while game is paused
- world 7 bug on overworld when pressing right while the cursor is on world 6
- various HUD graphical glitches
- level intro lag when HUD active
- HUD is now shown during the load delay period
- stork intro CS crash on J
- super baby mario would last forever if the debug menu was opened due to the big Yoshi egg despawning
- input bindings not updating on bind clear
- jerky camera and related tile-loading bugs when loading savestate
- debug menu text would be hidden if it was opened during screen transitions or when a message box was open
- creating and loading a savestate after a dynamic tileset change now correctly loads the new tileset instead of the old one (e.g. at the start of 4-4)
- wrong Yoshi colour would be set when rezoning after the goal ring was hit
Changes:
- debug menu has been slightly reorganised to accommodate the new features
- warps room names have been updated to be (hopefully) more descriptive
- SuperFX checksum algorithm now uses CRC16
- HUD timer no longer ticks during loading/screen transitions
- slowdown value no longer saved in savestates
- corrupt/unexpected SRAM values used in the debug menu are normalised on boot
- numeric debug menu controls can now be changed rapidly by holding a button, similarly to dpad navigation
- HUD timer now respects slowdown/frame advance
- debug menu cursor remembers the previously navigated tree path
- warping now resets level progress
- new file default hasty functionality was removed as a result of the addition of "force hasty"
Full Changelog: v0.4.4...v1.0.0