Hmm... alright. So long as its not upsetting anyone, I'll continue here. Easier than making a new thread and all that. Updates, then!
Minimap work is halted until a .bin to Tiled converter can be made. I've been bashing my head against it off and on, but the frustration of learning Python keeps getting in the way. So I'm leaving it up to any volunteers. I tried to explain the logic of what I want to accomplish here: https://pastebin.com/khzZn0qN
- Everything else, including the Tiled example file, is in the "maps.zip" file in the maps folder in the Git.
The music driver has been tweaked a ton. The score now uses Constants for non-note data, like loops, volume changes, etc. It LOOKS messier, but should be easier to understand for everyone. I've organized the features, streamlined the triangle volume control, and you can now do triangle fades inside the score--not just inside the menu!
The original game used 16 bytes of Zero Page RAM for each channel--which wasn't much, as there was only 3 channels. 5 channels + all the extra bytes I used for added loops, transposition, and volume controls was pretty messy. I re-did all that, using bit toggles instead of whole bites, and along with removing all the extra pointers from the original 16 bytes of ZP, EVERYTHING NOW FITS INTO 14 BYTES!! Or was it 13? I can't remember now. I wanted to add vibrato but I need to research how that's done first.
I don't think any of the channel info needs to be in Zero Page either, as the channel pointers are loaded into another 2 bytes of ZP to be actually used as a pointer? But I'm leaving it there now because... I don't know what else to do with that fancy RAM.
With Battle stuff, getting a preemptive attack now has a 50/50 chance for every enemy who doesn't resist the Sleep status to start the battle asleep. Like you just stumbled into their camp!
Next update is going to include a few things, if I can get it stable.
I've been working on adjusting the classes up to 16, or 8 base classes, 8 promoted classes. To make room for the 4 extra sprites, I've had to shift graphics data about some. As far as I can tell, its all working. But since I completely broke the main menu, I can't tell much.
One goal I have is to make 1000 bytes free in the fixed bank, so that someone can put some DPCM audio data in it. On that quest, I saw a table of bytes (shop types) that was just a list of 00s, 01s, 02s, 03, 04s, 05, 06s, and 1 07. So I re-jiggered the way shop types are loaded, which resulted in also expanding shop data to handle 16 shops of each type. Since each clinic and inn is the same ID and uses 1 door now, there's still plenty of space in the town map tileset to add these new shops. Once all these shops are used and have inventory, it will probably save space to delete the pointer table to their inventory and fill unused spaces with 0s, then just shift the shop ID to index that data table.
Oh, right--but back while making sure all 16 classes were supported, I realized I had to do the class equip permissions from scratch! I made an oopsie that meant the Menu bank was overflowing, and before I caught my mistake, I moved all the menu text out to Bank A, where other non-dialogue text is stored. I plan to keep it there, so that the menu can be expanded further for job changes, and to make room for the code needed to make the characters cheer when they can learn a spell in the shops. Meanwhile, until I get the menu text loading properly, the menu causes a game crash.
Once I can work on shifting the maps for the minimap display to look good, I also plan on changing some ground tiles near important exits. NPCs can't walk on tiles that close doors, so they will never block a shop door now--the idea is to use those same tiles to make sure they never block the path to exiting the map, such as the 3 cobblestone tiles by the entrance in Coneria, where that one lady always wanders...