Features
Player
- enable ZASM optimizer 
119445961Script heavy quests are known to run 2x more efficiently with this enabled.
 
Bug Fixes
Player
- prevent crash in ffc changer prev/next swap 
91348e710 - prevent crash from div-by-0 with enemy misc 
668058fc1Many configurable enemy misc values are used as the dividend in a modulus operation. If these values are set to 0, a crash can happen. The result now is to return 0 (same result as when configured with 1).
 - ignore corrupted enemies in 1.90 or older quests 
dc69f7b14Somehow, quests saved in old versions could sometimes set invalid screen enemies. Modern ZC has more enemies, so those bad quests were now loading scary new enemies like Ice Wizzrobes where before they might do nothing interesting.
Now, when loading 1.90 or older quests, any enemy ids that were not possible at the time are now ignored.
 - stop drawing dive items in lens view after pickup 
94796c4ebThis bug only happened if the
Old Special Room Screenstate DetectionQR was on. - use correct option for optimize_zasm 
400fbba4f - update default for optimize_zasm in zc.cfg 
45b8f8a0b 
Editor
- clean up 'Button Counter' subscreen widget '?' buttons 
4f7adab43 - compiler settings dialog visually offset 
90b341141 - quest rules dialog inconsistencies 
63db14d13Editing qrs inside
?buttons in the dialog should properly apply Applying a Ruleset/Rule Template/etc and then clicking Cancel will properly cancel those changes Editing QRs and then applying a Rule Template will no longer lose the edits made before applying the template 
ZScript
- prevent rare crash when jitted script ends 
ac29eec66Recently regressed in 004f602.
 
Chores
Player
- remove some unused bounds check functions 
85c190adc 
Refactors
Player
- make some ZASM optimize passes experimental 
91f970ebeThe unreachable and spurious branche passes are now off by default, not because they don't work but because they take the longest amount of time for the smallest improvement.
 - optimize functions in parallel for 3.0 quests 
29b824f26The ZASM optimizer typically run in parallel across all zasm scripts, but newer scripts only have a single zasm script. So for new quests, parallelize on the functions instead.