biermanncarl / cx16-concerto

Concerto is a music making software for the Commander X16.
BSD 2-Clause "Simplified" License
5 stars 0 forks source link

Patch storage in banked memory? #2

Open m00dawg opened 1 year ago

m00dawg commented 1 year ago

Heya kliepatsch!

Pinged you on the X16 forums as well (different Q's there) but I wasn't sure if you were still active on the forums. Thought I'd open this issue/feature-request to consider timbre (patch) storage in banked memory? This requires some linker foo but I was able to get that going for my tracker (I use one of the higher banks for misc data such as the order list, song/artist title, etc.). That takes a few patterns away in my case (since I use banked memory for pattern storage) but a few less patterns is pretty marginal and could free up a pretty nice chunk of base RAM?

I was gonna see if I could patch Concerto to do this but before I did all that, I wanted to get your thoughts on if that was in your plans already. I haven't eaten up all the base RAM yet but I still have lots of features to implement. I finally got cut/paste working in the tracker UI and that means I'll be wanting to add a patch/timbre UI soon along with patch storage in my tracker file directly.

Semi-related aside, I have a real X16 now and though I haven't run the Concerto UI demo on it yet, I did update the Concerto lib to latest and confirm it makes noise via my tracker. Wasn't sure if you had a real X16 to test with so thought I'd pass that along.

biermanncarl commented 1 year ago

Hi Tim!

Thanks for your suggestion! I did consider moving data into banked RAM. To be honest, I am not so fond of the idea of moving timbre data into BRAM. The reason is that it might be more beneficial to instead move Concerto's GUI code and/or data up there (which might be bigger than the timbre data). But since the GUI code needs access to both the GUI data and the timbre data, it would have to do lots of bank switching which would bloat the GUI code up significantly.

I might at some point take a look and see if it might be worth it nonetheless. After all, timbre data is around 4k currently.

Anyway, I am keen to learn about the linker tricks you have found to make your project be located partially up in high RAM.