## Help me understand the sound engine from Nice Code Software

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

lancuster
Posts: 199
Joined: Thu Feb 18, 2016 3:20 am
Contact:

### Help me understand the sound engine from Nice Code Software

I found the music data in the Jump-Jump ROM, but I didn't quite understand what it means. I just realized that bytes with large values are notes, but what does everything else mean...
Check my romhacks and NES arts on Patreon

See my hacks on Romhacking.net
I added level configs for 102 NES games in CaD Editor!

unregistered
Posts: 1143
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

### Re: Help me understand the sound engine from Nice Code Software

hi Iancuster,

You’ve had an nesdev account since 2016... so maybe I’m totally misunderstanding you.

But, I’ll respond anyways...

Notes are big values? As in A3 B7 D2?

Those are hexadecimal values... since hexadecimal is a base16 number system, it requires 16 separate digits. So the people/person who invented it chose 0 through 9, and then they just needed 6 more, so A through F were chosen for the digits representing 10 through 15.

The musical notes A through G have nothing to do with those hexadecimal digits. An octave has 12, I believe, separate notes (C and C#/Db are two of these notes). It’s been a while since I’ve played with NES music; but if there were 10 octaves accessible on the NES, since 10 octaves * 12 notes per octave = 120 different notes, and 120 (in our base10 number system) == 78 (in base16); therefore, those 10 octaves could be represented in less than half of a byte. Thus, the big values shouldn’t make evident musical note values.

If this were a homebrew game using the famitone2 music engine, maybe it could be possible (extremely low possibility) for me to compare that song (is it an actual song?; it’s sitting around memory location \$3540; I think \$3540 is in the midst of RAM mirrors; a song should definitely not be stored in RAM ) with one of my famitone2 songs. But, it’s obviously a commercial game, so there’s no telling, by me at least, what music engine that song(?) was created with.

So, there’s my reply. I hope it was helpful. If I’m totally wrong about your thinking, then I’ll be sorry so please forgive me for not being intelligent enough to respond to your brilliance. And I hope someone else will correctly respond to you.

Blessings,
unregistered
Last edited by unregistered on Sat Mar 13, 2021 12:00 am, edited 1 time in total.

unregistered
Posts: 1143
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

### Re: Help me understand the sound engine from Nice Code Software

unregistered wrote:
Fri Mar 12, 2021 11:18 pm
But, it’s obviously a commercial game,
Ok, so after short research, it’s obviously NOT a commercial game. Nice Code is a Chinese company operating since 1999, a year way after the NES. Supposedly, they developed using software written by Dragon Co. Sorry, I bet no one knows about Dragon Co.’s music engine.

lancuster
Posts: 199
Joined: Thu Feb 18, 2016 3:20 am
Contact:

### Re: Help me understand the sound engine from Nice Code Software

I'm sorry I didn't elaborate. I meant that the bytes that are on 3591-35bd, 3605-3634, 3679-36a5, 36ed-371c are definitely notes.
It remains to figure out what the bytes at 355f-358d, 35c3-35f2, 3647-3673, and 36ab-36da mean.
Check my romhacks and NES arts on Patreon

See my hacks on Romhacking.net
I added level configs for 102 NES games in CaD Editor!

Memblers
Site Admin
Posts: 3902
Joined: Mon Sep 20, 2004 6:04 am
Location: Indianapolis
Contact:

### Re: Help me understand the sound engine from Nice Code Software

Are they the note lengths? Since it's 1 through 4, I would guess it may be 1/8th, 1/4, 1/2, whole notes. Or could be 1/16th through 1/2, I don't know.

If you change the first one, it should desync the timing between channels for that song, try it.

Or maybe it's the channel select for the note? There are four channels.

Just some possibilities.

lancuster
Posts: 199
Joined: Thu Feb 18, 2016 3:20 am
Contact:

### Re: Help me understand the sound engine from Nice Code Software

Memblers wrote:
Sat Mar 13, 2021 10:42 pm
Are they the note lengths? Since it's 1 through 4, I would guess it may be 1/8th, 1/4, 1/2, whole notes. Or could be 1/16th through 1/2, I don't know.

If you change the first one, it should desync the timing between channels for that song, try it.

Or maybe it's the channel select for the note? There are four channels.

Just some possibilities.
I tried to find out. So, first thing is a note length. The second one has something to do with the channels (perhaps the timing of the channels or channel select). Or maybe this is settings for first two channels.
I dont know what the other two segments are responsible for. In any case, they dont affect the playback of music in any way.
Check my romhacks and NES arts on Patreon

See my hacks on Romhacking.net
I added level configs for 102 NES games in CaD Editor!

lancuster
Posts: 199
Joined: Thu Feb 18, 2016 3:20 am
Contact:

### Re: Help me understand the sound engine from Nice Code Software

I tried to transfer music from Forest Adventure to Jump-Jump, and here's what I found out (attention to the picture).
After I transferred the bytes from Forest Adventure, the music became similar, but the instruments, alas, are different.
I understand that the instruments bytes are listed a little bit higher of the highlighted blue bytes, but I can't make them out.
Check my romhacks and NES arts on Patreon

See my hacks on Romhacking.net
I added level configs for 102 NES games in CaD Editor!

unregistered
Posts: 1143
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

### Re: Help me understand the sound engine from Nice Code Software

Note: Even though Forest Adventure was made by an alias of Nice Code, it seems to be obvious that it uses a completely different music engine. That, or maybe a new program (or different version of), a la FamiTracker, was used to create the hex code version of their song.

Though, you don’t care? And are attempting to transplant that incompatible song? That’s pretty cool; God bless your efforts!