Well, I've finished my SMB MMC1 expansion proof of concept hack. It doesn't currently do anything noticable, but things have changed "under the hood". As mentioned above, I've moved the sound engine into a bank of it's own. The call from the main loop into the sound engine has been replaced with a call to a custom function that switches banks, calls the real sound engine entry point, and then switches banks back. The only other change was the addition of a call to a mapper setup function in the startup routine.
So far, in my limited testing, everything appears to work perfectly. As I've said, it doesn't do anything noticable, put I've posted it to my website
, just in case anyone wants to check it out or do some more testing, etc.
My next step is going to be working on intergrating the changes frantik has made so far. It shouldn't be too difficult, but we may run into complications down the line. I'm not sure how flexible the level editor frantik is using is and whether or not it'll be able to edit the expanded rom directly. If not, I'll have to come up with some sort of exportation and importation tools.
In regards to the looping, in SMBS, if you walk past the end of chunk 16, you end up back at chunk 1. It's not the same effect, and it isn't actually used in any of the levels, so I think we could safely reclaim that bit of code, but given the amount of space I've gained, I don't think it'd be neccessary.
As I'm building from ASM sources, I can simply expand the area used to store the levels. The following code will simply be pushed down into the area that was previously occupied by the sound engine. As doppleganger's source is completely cleaned up, with labels and defines for everything, relocation of code is completely transparent. (After relocating the sound engine, I didn't have to edit it at all