Commit 09cae55f authored by Committed by ROOL
Detail: Each Maestro file is held in memory as nine blocks of bytes: one for 'Gate' data, and eight for Note information for each audio channel. Maestro reserved a very big WimpSlot of 720K, and merely divided the space between the end of the program and the end of the Wimpslot by 9 to get equally spaced pointers for each byte block. This was very wasteful (Maestro files are typically only 1-2K in size), and there's no checking to prevent writes from running off the end of the Wimpslot. These changes - Add new memory management routines - Place all program data in resizable heap blocks - Remove EnsureRMA check Admin: Tested on a variety of Maestro files. There's still plenty of inefficiency in the way Maestro handles its data but typically, even with Sprites11 loaded, the Wimpslot goes down to 380K. Version 2.16. Tagged as 'Maestro-2_16'
Showing with 375 additions and 243 deletions