Translating hex numbers to music sounds

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Translating hex numbers to music sounds
by on (#42046)
Hello all,

I'm a new member just signed up today. I'm currently working on a hack of mega man 2 for nes. and I'm interested in changing the music.


I use fce ultra to understand the hex numbers and still it's in the beginning process. I was wondering if anyone happens to know the exact number values ( not the notes) on the keyboard for each of the keys.


i.e like 00= A
01= B i just need to know what each translates to that kind of thing.


So if anyone can help. I appreciate it. thanks

by on (#42048)
You would probably have to try and see what happens. There is a doccument arround describing a Capcom sound format, so you're lucky. It's here : http://www.romhacking.net/docs/274/
Altough it does not seem to apply to Mega Man 2 which uses an older engine, chances are that it actually is similar enough.

by on (#42059)
First, look up the MIDI note number chart. In MIDI, 60 means middle C, and adding 12 goes up an octave.

Most of the note numbers used by game engines seem to have a simple relationship to MIDI note numbers. For example, the NT2 music engine uses note numbers that are the MIDI note number minus 24. Other engines may use MIDI minus 33, as 33 (an A more than two octaves below middle C) is the lowest note in standard tuning that the NES's channels 1 and 2 can reach. Try MIDI minus 24, MIDI minus 33, MIDI minus 36, or MIDI minus 45 first.

by on (#42061)
Tepples:


I'm sure how this connects with the project i'm doing.

Does this have acual hex number translation to 8-bit and not midi. I don't mean to sound coy but mega man 2 does have mostly the standard 8-bit tracks it's not midi.

So if you wouldn't mind explaining, How does this connect?

by on (#42063)
Struzzdog wrote:
Does this have acual hex number translation to 8-bit and not midi.

Yes. Usually, it involves two steps: subtracting a constant (whose value depends on the music engine) and converting from decimal to hexadecimal. There are occasionally a few problems, such as a couple swapped frequency table entries in Super Mario Bros., but I don't think they're common.

Quote:
I don't mean to sound coy but mega man 2 does have mostly the standard 8-bit tracks it's not midi.

MIDI note numbers are simply the number of semitones above some base frequency. I was merely stating that there is usually an easy conversion between note numbers used by MIDI and note numbers used by 8-bit games' music players.

by on (#42064)
I was merely stating that there is usually an easy conversion between note numbers used by MIDI and note numbers used by 8-bit games' music players.[/quote]



Now when your 8-bit games music players, it's assumed in this case to be just The music that the emulator plays ( since there is no music player and fec ultra)

by on (#42066)
I don't really know if Capcom used MIDI minus a constant. In my sound engine, I only have notes C to B, and to do other note I have to do octave change commands. I know some commercial games did it that way too. This can allow you to code the note in one nybble and the lenght in another so that it takes up less space than having note in one byte and lenght in another byte, altough you'll have to add octave changes frequently, and sometimes even very frequently.

by on (#42070)
Bregalad wrote:
In my sound engine, I only have notes C to B, and to do other note I have to do octave change commands.

You're right that some engines have a "transpose" command to change the (otherwise) constant offset from the MIDI note. But is there a game that doesn't have a generally semitone-oriented music player?

by on (#42081)
Tepples:

So what's the case then with the hex editor of Fcu Ultra,

I'm trying to figure out if a " Music engine" as you call in that program exists or not?

by on (#42084)
Roughly, a "music engine" is the part of a game program that is included in the (optimized) NSF.

by on (#42085)
In my case the hexeditor?

and by the way do you regular use aim, if you don't mind using your screename, i have struzzdog

by on (#42125)
does anyone by chance know if the nsf player we are speaking of here shows the hex addresses?