[request] Rockman NSF with DPCM

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
[request] Rockman NSF with DPCM
by on (#19350)
- Someone (Rushjet?) has created two tracks of Rockman music with DPCM, a very nice work indeed, as Snakeman and Sparkman themes. I wonder if it's possible to extend the idea for the original Rockman game, as releasing its NSF songs with DPCM...?

by on (#19366)
If someone has figured out the Rockman music format and there's enough space in the ROM for altered music data, altered player code, and a couple DPCM samples, then yes, I'd expect so.

by on (#19368)
Uh, yes, there's a document floating around that describes the music storage data. If I'm not wrong, there's even a MM3 music editor...

by on (#19383)
Hmm, I remember Rock 'N Roll could change which song was used in which stage, but none of the Megaman editors on Zophar's Domain seem to be able to edit the music itself. If you have a description of the music format, though, that could be combined with a commented disassembly to see whether such a change is possible.

by on (#19385)
Usually, the tracks are written from scratch. In other words, it's not an hacking as you're suggesting to do. The two tracks I mentioned were made from scratch.

by on (#19386)
Yes, but it sounded from your initial post (unless I misunderstood) like you were suggesting modifying a Rockman ROM to include DPCM samples.

by on (#19389)
commodorejohn wrote:
Yes, but it sounded from your initial post (unless I misunderstood) like you were suggesting modifying a Rockman ROM to include DPCM samples.


I wrote "he has created", and not "he has hacked". ^_^

by on (#19394)
True, the ROM could be extended to UNROM (8 banks, 16 KiB each) to UOROM (16 banks, 16 KiB each) and an original music engine loaded into that extra memory. But the problem with squeezing DPCM samples into classic games is that most mappers used for classic games do not support bankswitching the part of address space where DPCM is loaded. So unless there's already a lot of unused space in the last bank (unlikely), it will take extensive hacking of the game engine to fit DPCM in.

by on (#19491)
Are you asking if someone will make the tracks for you? If so, is there any reason in particular that you would like them? Or is it just out of curiousity? I already did a couple of stages. What exactly are you looking for? Do you want all the channels to sound exactly the same except for the new DPCM samples? Or should I change up the other channels a little bit to try to get it to sound a bit better?

by on (#19500)
Well, in terms of 'artistic work', you must get some inspiration. Plus, I'm requesting a DPCM channel, or 'a layer', but it needs some integration with the music itself, specially the noise channel. If you listen the two tracks of Snake and Spark men, so you'll get what I mean... ;)

by on (#19506)
If a game doesn't use sram, that's a nice place to store DPCM samples. Stick in some code to copy data there when the game starts. If you need to, double the size of the rom so you can include that code. Maybe you could even store new song data there.

by on (#19507)
Dwedit wrote:
If a game doesn't use sram, that's a nice place to store DPCM samples.


The DMC can only play samples from $C000 and up (though it can have samples wrap to $8000 -- however that's incredibly impractical).

Unless the mapper you're using can do crafty RAM mappings (MMC5 is the only one that comes to mind which could do it), using RAM won't work.

by on (#19537)
If it's of any use to anybody, here is a disassembling and reverse-engineering of Megaman that I started many years ago and never finished.

http://www.student.itn.liu.se/~miciw347/dissamm1.zip

Only a small portion of the code is named and documented, but one potential place for DPCM sample data is $FC85 and about 300 bytes beyond. These are tables for how much damage each aquired weapon does to each enemy, and their address is defined by a pointer table located at address $BF44. (when the low code bank is switched in at $8000) So it would be easy to relocate these tables to another area. A lot of the data before and after these tables also seems to consist of (very repetitive) tables.

If the Megaman game is to be DPCM:ed, I'd suggest replacing/rewriting the music and SFX code altogether to improve the music. That should also take away some of the slowdowns in the game, as the music code steals a surprisingly large portion of the CPU power.

by on (#19544)
How much of the RAM does the music and sound effects code take, and how much is free? And would anybody find it unacceptable to upgrade this UNROM to UOROM to fit a couple NSF segments?

by on (#19548)
Checking it with FCEU's memory viewer tells me it's using $500-$57F and $E0-$FF for music variables. Some bytes in those areas seem unused though, and might be used by the game code.