Overhauled Assemble All ASM
This release changes how this button works. If you make ASM cheats, this may be a very useful button that changes the way you work.
-
The foundation: establishing virgin code-cave space. Breeze now measures where each executable segment's free space actually starts—once per build, on an untouched game—and stores it in
cave_floor.txt, keyed by module name and segment size so it survives ASLR. It refuses to measure while any cheat is applied, because a cheat's writes could be recorded as game code and poison every placement based on that measurement. Let it measure on a clean game first; everything else in this overhaul depends on it. This is triggered when you open the Code Cave Map from the Game Info menu or useAssemble All ASMfor the first time. To redo the measurement, deletecave_floor.txt. -
Enrollment: which cheats get reassembled.
Assemble All ASMnow rebuilds every enrolled cheat in one pass and packs their caves together as a set. A cheat becomes enrolled when it gains a script—either by saving it in ASM Composer or by assembling it withAdd ASMfrom its own.txtfile. Enrollment is recorded in<build id>.ini. -
Alert: unenrolled cheats become rocks. A cave-bearing cheat with no enrollment entry is left completely alone. Its cave space stays reserved, it shows as
NO SOURCE, cannot be movedon the Code Cave Map, and everything else packs around it. It is never removed, but it can never be repositioned. If you want a cheat to remain movable, enroll it. -
This is generic, not just for GameMaker. The new GM tool below is what prompted this change, but enrollment and cave packing benefit every cheat that shares a code cave.
-
Caves are allocated, not guessed. Placement now reads what cheats claim instead of scanning game memory. Two cheats created back-to-back can no longer be assigned the same address and silently overwrite each other.
-
See it all. The Code Cave Map screen, available from the Game Info menu next to Segment Map, shows free space per segment, the recorded floor, where the next cave would go, which cheats have claimed what, and branch reachability.
Write map to filedumps the information tocave_map.txt. -
Add ASMis unchanged. It still works as before, but now warns you which cheat its cave collides with instead of refusing.
New: GameMaker Tool
-
Make GM Cheat (Gen2 More menu) builds a cheat for a specific GameMaker variable directly from a capture row, named after the variable. It can distinguish the same field on different objects, such as hero HP and boss HP.
-
Variable cheats can be renamed freely in the editor and disabled individually by putting
//in front of theirsection=line. The cheat is kept rather than lost.
Heads Up
-
A
cave_startpinned in a script is ignored byAssemble All—cave packing is now a whole-set decision. -
A cheat hooked into another cheat's cave must stay behind its owner in the cheat list. The
Assemble Allsummary tells you how many cheats had to be moved.