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

Post Reply
lancuster
Posts: 235
Joined: Thu Feb 18, 2016 3:20 am
Contact:

Help me understand the sound engine from Nice Code Software

Post by lancuster »

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...
Music data in Jump-Jump.png
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

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

Post by unregistered »

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: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

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

Post by unregistered »

unregistered wrote: Fri Mar 12, 2021 11:18 pmBut, 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: 235
Joined: Thu Feb 18, 2016 3:20 am
Contact:

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

Post by lancuster »

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.
User avatar
Memblers
Site Admin
Posts: 4044
Joined: Mon Sep 20, 2004 6:04 am
Location: Indianapolis
Contact:

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

Post by Memblers »

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: 235
Joined: Thu Feb 18, 2016 3:20 am
Contact:

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

Post by lancuster »

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.
lancuster
Posts: 235
Joined: Thu Feb 18, 2016 3:20 am
Contact:

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

Post by lancuster »

I tried to transfer music from Forest Adventure to Jump-Jump, and here's what I found out (attention to the picture).
Jump-Jump and Forest Adventure (sound engine differences).png
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.
unregistered
Posts: 1318
Joined: Thu Apr 23, 2009 11:21 pm
Location: cypress, texas

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

Post by unregistered »

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! :D
Post Reply