I am working on a couple of Ninja Gaiden hacks myself, and I wonder if your team would be willing to share or publish some knowledge you seem to have figured out.
1) Fixing Ryu's hitbox for collision. This is an old frustration with the game that I would love to fix as well.
2) Changing the music. In the video, I recognize the classic NG songs with slight alterations (note changes and pitch shifting of the drums). Could your team make a tutorial (or just publish your notes) about the music engine? I have gotten as far as finding and manipulating the drum sequence data.
3) Implementing SRAM save. How does this work?
4) Custom cut-scenes. More specifically, I would like to compose my own cut-scenes that splice images from all cut-scenes in the game. I don't know if you guys have done that, or if you have overhauled the cut-scenes so much that you have not had to alter their sequence.
5) Changing player sprites in-game, like the tag-team feature in Castlevania 3. I don't see how you have the space to put the sprites for multiple players in, but this would be a cool feature to play with.
Thank you for any help you are willing to offer. Keep up the good work!
1. Yeah, the collision detection in the original was pretty bad. I kind of want to wait until after the release before I post up the code I did, but if you are interested in trying to do the fix yourself, I can tell you exactly where to find the code for it. Hit detection for Ryu hitting enemies with his sword is located at x1DEDF. Hit detection for enemies hitting Ryu is located at x1E154. I've already posted a huge list of such locations on Data Crystal, in the ROM map and RAM map: http://datacrystal.romhacking.net/wiki/Ninja_Gaiden
2. Retroslam or Dr. Floppy could help more there. I do know more or less how it works, but I've never actually tried to compose anything other than a machine gun sound effect.
3. SRAM turned out to be fairly simple, really. A couple changes to the iNES header to indicate the presence of battery backed save data, writing a few important bytes to PRG-RAM every time a level is loaded or re-loaded after death, then adding a hook in the cut-scene code to check if the player presses select instead of start during the first cut-scene in order to load saved data. Only a few values really needed to be saved, the most important of which is the current stage ($6D). I also stored score ($60/61), lives ($76), and ninja power/ammo ($64), and a bunch of things that were specific to our hack but that aren't part of NG (difficulty settings, total time, deaths, # of powerups obtained). I also added a checksum/sanity check to make sure that you could not load a game without a pre-existing save.
4. I've got a pretty solid understanding of how the cut-scenes work, but I've only had to make relatively minor changes to the scenes since the other team members had done a pretty good job with it before I figured it all out. I did make a tool that could interpret the scene scripting to a read-able form, but I never made one to re-insert, since I found it easier just to do it myself. Here is an example of the script output: https://www.dropbox.com/s/lj4ebhoi4px9yn6/scene00.txt?dl=0
Obviously, the text and palettes are going to look different from the original, but most of the rest is the same.
5. We've changed the mapper from MMC1 to MMC3, which allows us to swap out sprite CHR in x400 byte chunks instead of x1000. That's how we added some of the extra attack animations, and allowed for different costumes for Deadpool that are independent of the type of monsters in the level. Now, if you are talking about adding 2P mode where both players are on-screen at once, that would require either having the second player use the same set of sprites, or using the MMC5 mapper which gives you twice as much space for 8x16 sprites.