Well I got the game playable
http://dischmeister.googlepages.com/ddp.zipI noticed graphical problems in NEStopia -- like the CHR wasn't being loaded properly. I suspect this is due to MMC5+CHRRAM weirdness. I have an idea for what might fix it -- but I'm thinking of making another effort to use MMC3. This first attempt actually got me a lot more familiar with the FDS from the game's point of view. Now that I'm more familar with what the game needs to do and when -- I think I'll be able to do it.
Try out this MMC5 version if you like. Note it probably doesn't work in several emulators for the reasons previously mentioned. Pressing start when the intro story with the kids reading the book doesn't work (but pressing start during the title screen with the blimp does). It will make a .sav file, but won't actually save your game. And I didn't test it much past Chapter 1.
The game sounds hollow without the FDS sound channel kicking in. I'll definately have to put in the DMC replacements for the MMC3 version.
UPDATE:
I want to punch the DDP developers. They load the files like so:
6000-DFFF = MAIN-PRO (main program loaded here)
6000-65FF = EN-SND (FDS sound wave stuff???)
6000-65FE = TEMP-PRG (additional code needed for main game -- loaded after you switch to side B)
6600-6605 = DUMMY (copy/pirate protection? Possibly can remove)
6600-6605 = SAVE-DAT (saved game -- will have to rework)
B800-D0FF = ENDING-2 (Ending sequence stuff, on side A)
BF00-D0FF = GAME DATA (Level data and other stuff. Different files loaded here for each chapter)
C100-C6FF = ENDING-1 (Ending sequence stuff, on side B)
D679-D88C = SOUND-DT (??? More FDS sound wave stuff???)
What sucks is the Game Data block.
$BF00-$D0FF. What the hell. If they would've just shifted that over to $C000 I'd have a nice clean spot to split the pages. That would allow me to just have a single 8K page swapped in for the chapter with minimal PRG duplication.
So I figured that would be the best approach to this situation. So I looked at the $BF00-BFFF and $D100-D1FF sections in the appropriate files and started to tally up what I would need to flip them. Seemed managable at first -- until I started getting into jump tables and other crap. Long story short, it ended up being a nightmare. So I've decided to scrap this plan.
Plan B is to swap out both 8K pages (at $A000-BFFF and $C000-DFFF) for each chapter. This means that I'll have 16K PRG (2 full pages) assigned to each chapter, but only 4.5K of that is actual chapter data. That means that the other 11.5K will be the engine (from the MAIN-PRO file) duplicated for each chapter! Talk about a major waste of space.
I haven't worked out whether or not this will push the filesize up to 256K. I suspect it will. It will also make hacking this ROM (if someone were inclined to do so) a real bitch, because if they want to change something at $A000-BEFF or $D100-DFFF they'll have to make the change at eight different places in the ROM!
The good news is... aside from that chapter nonsense... the rest of the files seem to be loaded into $6000... which is very easy to do (don't have to mess with PRG swapping, can just copy the files to RAM and be done with it). The end game stuff I can probably just put on its own 16K like I do with the chapters. I'll have some duplicated code there but I don't expect that to be much of an issue. Only file that will be sketchy, I think, is that SOUND-DT file. I have no idea when it is loaded (haven't seen/noticed it loaded yet in my test runs) or what function it serves. Judging from the file title it's something I'll probably remove anyway because of the absense of the FDS channel. Also, judging from where it's loaded, it might be used for the ending sequence... and if that's the case, I'll easily be able to fit it in the same 16K I put the other ending files.
Fortuantely, though... nothing but the MAIN-PRO file ever gets put at $8000-9FFF. This means MMC3 is possible without major code adjustments! I can have $8000 fixed, and have $A000 and $C000 swappable. $E000 can be all my own code to make the hack work (after I carry over a few FDS BIOS routines the game uses) and can be free space if I need to tweak some things in the game. I can also put DMC samples there when I need them! 8K is huge and there's no way I'll run out of space!
Last big hurdle will be to isolate all the places the game writes to $8000-DFFF. That area is RAM on an FDS and the game can manipulate it at will. On MMC3, however, writes to those addresses will change mapper registers which will royally fuck up the works. Though at first glance there doesn't appear to be many areas in the game where it writes to it (at least none that aren't easily removable).
Once I resolve the issue with $8000-FFFF writes -- slapping together a functioning MMC3 ROM will be a relatively easy task! Hooray!