Jump to content
Sign in to follow this  
jstout

TSB Music Info

Recommended Posts

Here is the music data for the NES TSB. I'm not very musical so if anyone can give me proper terms for descriptions it would be appreciated.

Music Pointer Table: x36EC0-x36F4F

Music:


SONG 1: x37998 SONG 2: x3A5A7 SONG 3: x37C7D SONG 4: x3A155
SONG 5: x392D9 SONG 6: x38AAC SONG 7: x38F53 SONG 8: x3969B
SONG 9: x37D66 SONG 10: x399F7 SONG 11: x39CF7 SONG 12: x38010
SONG 13: x38133 SONG 14: x3BF03 SONG 15: x3AAAF SONG 16: x3ABFB
SONG 17: x3AA36 SONG 18: x3AC6A SONG 19: x3A665 SONG 20: x3A72A
SONG 21: x3A7E3 SONG 22: x3A8D5 SONG 23: x3A9A8 SONG 24: x3ACE8
SONG 25: x3AE83 SONG 26: x3BC00 SONG 27: x3B2CD SONG 28: x3AF2B
SONG 29: x3B34E SONG 30: x3B8DA SONG 31: x3B4C6 SONG 32: x3B9E2
SONG 33: x3BE15 SONG 34: x3BACA SONG 35: x3A010 SONG 36: x3A0B9

Sound Effects:


EFFECT 37: x37211 EFFECT 38: x3723A EFFECT 39: x3725D EFFECT 40: x3728C
EFFECT 41: x372C1 EFFECT 42: x372E7 EFFECT 43: x37307 EFFECT 44: x37333
EFFECT 45: x3735D EFFECT 46: x37374 EFFECT 47: x371EB EFFECT 48: x3718F
EFFECT 49: x37143 EFFECT 50: x3716A EFFECT 51: x36FBB EFFECT 52: x37108
EFFECT 53: x36FD1 EFFECT 54: x36FE0 EFFECT 55: x37043 EFFECT 56: x3708D
EFFECT 57: x373CA EFFECT 58: x373D0 EFFECT 59: x373D6 EFFECT 60: x373DC

The locations go to the info for each track where it lists the sound channel and the pointer to the music data for that channel. For those that don't know: Square = Lead Instruments, Triangle = Bass, Noise = Drums and Misc. Sounds.

Effects: 00 = Square 1, 01 = Square 2, 02 = Triangle, 03 = Noise

Music: 04 = Square 1, 05 = Square 2, 06 = Triangle, 07 = Noise

Example:

SONG 4: 04 75 A2 05 5C A4 06 52 A1 07 F2 A4 FF

SONG 4: Square 1 at $A275, Square 2 at $A45C, Triangle at $A152, Noise at $A4F2, FF

Music Data Commands:

81-C0 = Length for following Notes (81 = Very Quick to C0 = Very Long)

E0 XX = Smoothness (00-43 lower values blend notes and higher values have choppier notes)

E1 = ??

E2 XX = Decay (20-2F = Note Dies and 30-3F = Note Carries)

E3 XX = Volume (00 = High to 0F = Low)

E4 XX = Shift (80-83)

E5 XX = Pitch

E7 = ??

E8 XXXX = Repeat at Pointer

E9 XXXX = Goto Pointer

EA = Return from xE9

EB XX = Loop following (XX = Number of times to loop)

EC = End of xEB Section

ED XX = Wavering of following notes (XX = Waver value) NOTE: Pitch increase with certain test values

EF = End of xED Section

F3 = Slur following notes NOTE: Tests had decay of notes with certain conditions

F4 = End of xF3 Section

FF = End Sound Channel

Music Notes:

Order of Notes:

C C# D D# E F F# G G# A A# B for each Octave

Square and Triangle Channels:

LOW PITCH

70-7B = Octave 1

00-0B = Octave 2

10-1B = Octave 3

20-2B = Octave 4

30-3B = Octave 5

40-4B = Octave 6

50-5B = Octave 7

60-6B = Octave 8

HIGH PITCH

Noise Channel:

5F-6F = Drum Notes

Other:

0C = Rest

F0 = Drum Sample

F1 = Drum Sample

F2 = Drum Sample

F7 = READY DPCM

F8 = DOWN DPCM

F9 = HUT DPCM

FA = TOUCHDOWN DPCM

FB = Drum Sample

FC = Drum Sample

FD = Drum Sample

NOTE: Drums Samples are different

Share this post


Link to post
Share on other sites

jstout, how tough would it be to code 'random' notes and stuff like that for a song?

Like random noise splashes and drum samples (the stuff that's already there)...just trigger random things?

I think it would be cool to have a random type song (bleeps and drums) while on-field.

Share this post


Link to post
Share on other sites

Actually, that is what the pointer table is for. You just change the pointers based on the length.

If you had music source code from other games, it'd be very easy to cut and paste into TSB

Nice find, jstout.

Looks like it's possible now to recompose the in-game music. But the problem is the length.

Share this post


Link to post
Share on other sites

I'm starting to mess with this stuff - I've got a nice hardcore-DEVO remix going on, just switching pointers around (like a pulse channel sequence driving the triangle wave).

But I want to get in and program some sequences/loops myself. But, I'm kinda stuck.

SONG 4: Square 1 at $A275, Square 2 at $A45C, Triangle at $A152, Noise at $A4F2, FF

how do I get to $a275 in the ROM (address) so I can change stuff, (the pointer value of Square 1, in the above quote)?

and then, what is the Music Pointer Table and how do you use it?

Share this post


Link to post
Share on other sites

I figured out you take the pointer, flip it, add x10, and put a 3 in front. so for 75a2, the location is x3a285.

I've been able to go in and modify basslines and melodies...shit is tedious.

Still don't know what the Music Pointer Table is.

Been reading up on transferring NES music, looks like different games use different "sound engines" - so there would have to be some translation done, no thanks. Maybe other "Tecmo" games use the same type of music code? For now, I'm going to spend a little time trying to write some different songs (probably just one, because - like I said, it's a slow-process.)

I'm starting to mess with this stuff - I've got a nice hardcore-DEVO remix going on, just switching pointers around (like a pulse channel sequence driving the triangle wave).

But I want to get in and program some sequences/loops myself. But, I'm kinda stuck.

SONG 4: Square 1 at $A275, Square 2 at $A45C, Triangle at $A152, Noise at $A4F2, FF

how do I get to $a275 in the ROM (address) so I can change stuff, (the pointer value of Square 1, in the above quote)?

and then, what is the Music Pointer Table and how do you use it?

Share this post


Link to post
Share on other sites
Been reading up on transferring NES music, looks like different games use different "sound engines" - so there would have to be some translation done, no thanks. Maybe other "Tecmo" games use the same type of music code? For now, I'm going to spend a little time trying to write some different songs (probably just one, because - like I said, it's a slow-process.)

I've noticed the Mega Man games sound a lot like Tecmo. Maybe they use the same engine?

Share this post


Link to post
Share on other sites
Been reading up on transferring NES music, looks like different games use different "sound engines" - so there would have to be some translation done, no thanks. Maybe other "Tecmo" games use the same type of music code? For now, I'm going to spend a little time trying to write some different songs (probably just one, because - like I said, it's a slow-process.)

I've noticed the Mega Man games sound a lot like Tecmo. Maybe they use the same engine?

Funny you mention that. Ever since Jstout posted this info I've wondered if Mega Man 2 tracks could be plugged into TSB somewhere. :)

Share this post


Link to post
Share on other sites

I also always thought it might be cool to make charatcers from other video games players in TSB. It probably wouldn't be too hard to change the player sprites into Mega Man or Mario, though I think it's beyond me. Someone has already put the graphics from different Mario games into Mega Man I. Check it out:

I think there are also other hacks under the related videos.

Share this post


Link to post
Share on other sites

dammit. I thought I had those pointers figured out, but some of them don't work the way I described above (flip, add x10, add the "3" in front)...any ideas?

for example 59bc, when I go to x3bc69 - it's not what I'm expecting (the wrong place).

Share this post


Link to post
Share on other sites

I have no idea how to use this hex information. Can anyone point me to some Tecmo hex editing tutorials, I have looked on the forum, but I haven't found anything. Does anyone have any hex editor recommendations? I would REALLY love to swap some of the music around.

Share this post


Link to post
Share on other sites
I have no idea how to use this hex information. Can anyone point me to some Tecmo hex editing tutorials, I have looked on the forum, but I haven't found anything. Does anyone have any hex editor recommendations? I would REALLY love to swap some of the music around.

There's a hex editor here. You should download all this stuff anyway, lots of good things here. I think the hex editor comes with a how-to:

viewtopic.php?f=5&t=5320

Share this post


Link to post
Share on other sites
This reminds me. Does any of this help us get the "hut hut hut" back into the 32 team rom?

Nope. Those qb soundfx are DMC samples, and not created by the sound driver (other then telling the hardware to play them). The starting address for DMC samples has to be located in the fixed bank ($C000- $FFFF).

Share this post


Link to post
Share on other sites

Can you further explain how the pointers relate to the music? I'm not really grasping this.

Here is the music data for the NES TSB. I'm not very musical so if anyone can give me proper terms for descriptions it would be appreciated.

Music Pointer Table: x36EC0-x36F4F

Music:


SONG 1: x37998 SONG 2: x3A5A7 SONG 3: x37C7D SONG 4: x3A155
SONG 5: x392D9 SONG 6: x38AAC SONG 7: x38F53 SONG 8: x3969B
SONG 9: x37D66 SONG 10: x399F7 SONG 11: x39CF7 SONG 12: x38010
SONG 13: x38133 SONG 14: x3BF03 SONG 15: x3AAAF SONG 16: x3ABFB
SONG 17: x3AA36 SONG 18: x3AC6A SONG 19: x3A665 SONG 20: x3A72A
SONG 21: x3A7E3 SONG 22: x3A8D5 SONG 23: x3A9A8 SONG 24: x3ACE8
SONG 25: x3AE83 SONG 26: x3BC00 SONG 27: x3B2CD SONG 28: x3AF2B
SONG 29: x3B34E SONG 30: x3B8DA SONG 31: x3B4C6 SONG 32: x3B9E2
SONG 33: x3BE15 SONG 34: x3BACA SONG 35: x3A010 SONG 36: x3A0B9

Sound Effects:


EFFECT 37: x37211 EFFECT 38: x3723A EFFECT 39: x3725D EFFECT 40: x3728C
EFFECT 41: x372C1 EFFECT 42: x372E7 EFFECT 43: x37307 EFFECT 44: x37333
EFFECT 45: x3735D EFFECT 46: x37374 EFFECT 47: x371EB EFFECT 48: x3718F
EFFECT 49: x37143 EFFECT 50: x3716A EFFECT 51: x36FBB EFFECT 52: x37108
EFFECT 53: x36FD1 EFFECT 54: x36FE0 EFFECT 55: x37043 EFFECT 56: x3708D
EFFECT 57: x373CA EFFECT 58: x373D0 EFFECT 59: x373D6 EFFECT 60: x373DC

The locations go to the info for each track where it lists the sound channel and the pointer to the music data for that channel. For those that don't know: Square = Lead Instruments, Triangle = Bass, Noise = Drums and Misc. Sounds.

Effects: 00 = Square 1, 01 = Square 2, 02 = Triangle, 03 = Noise

Music: 04 = Square 1, 05 = Square 2, 06 = Triangle, 07 = Noise

Example:

SONG 4: 04 75 A2 05 5C A4 06 52 A1 07 F2 A4 FF

SONG 4: Square 1 at $A275, Square 2 at $A45C, Triangle at $A152, Noise at $A4F2, FF

Music Data Commands:

81-C0 = Length for following Notes (81 = Very Quick to C0 = Very Long)

E0 XX = Smoothness (00-43 lower values blend notes and higher values have choppier notes)

E1 = ??

E2 XX = Decay (20-2F = Note Dies and 30-3F = Note Carries)

E3 XX = Volume (00 = High to 0F = Low)

E4 XX = Shift (80-83)

E5 XX = Pitch

E7 = ??

E8 XXXX = Repeat at Pointer

E9 XXXX = Goto Pointer

EA = Return from xE9

EB XX = Loop following (XX = Number of times to loop)

EC = End of xEB Section

ED XX = Wavering of following notes (XX = Waver value) NOTE: Pitch increase with certain test values

EF = End of xED Section

F3 = Slur following notes NOTE: Tests had decay of notes with certain conditions

F4 = End of xF3 Section

FF = End Sound Channel

Music Notes:

Order of Notes:

C C# D D# E F F# G G# A A# B for each Octave

Square and Triangle Channels:

LOW PITCH

70-7B = Octave 1

00-0B = Octave 2

10-1B = Octave 3

20-2B = Octave 4

30-3B = Octave 5

40-4B = Octave 6

50-5B = Octave 7

60-6B = Octave 8

HIGH PITCH

Noise Channel:

5F-6F = Drum Notes

Other:

0C = Rest

F0 = Drum Sample

F1 = Drum Sample

F2 = Drum Sample

F7 = READY DPCM

F8 = DOWN DPCM

F9 = HUT DPCM

FA = TOUCHDOWN DPCM

FB = Drum Sample

FC = Drum Sample

FD = Drum Sample

NOTE: Drums Samples are different

Share this post


Link to post
Share on other sites

Here is a simple test song for those having problems (the commas in the hex below are just to help those see some breakup of the parts and notes). I'll find my notes and answer some of the questions in this thread soon.

POP GOES THE WEASEL: (Put at x3A155 and play sound 4 on the sound test screen)

$A145: (SET SONG DATA POINTERS)

04 52A1, 05 90A1, 06 20A2, 07 20A2, FF

$A152: (SET SQUARE 1 VARIABLES)

E2 30, E3 01, E0 1E

$A158: (SQUARE 1 MUSIC)

E9 77A1, 8E 20, 88 20, 8E 22, 88 22, 92 24, 92 20, E9 77A1, 92 29, 8E 22, 88 25, 92 24, 92 20, E8 58A1

$A177: (COMMON MELODY)

8E 20, 88 20, 8E 22, 88 22, 88 24 27 24, 92 20, EA

$A186: (FILLER)

FF FF FF FF FF FF FF FF FF FF

$A190: (SET SQUARE 2 VARIABLES)

E2 30, E3 01, E0 1E

$A196: (SQUARE 2 MUSIC)

E9 F8A1, E9 FFA1, EB 03, E9 F8A1, EC, E9 FFA1, EB 03, E9 F8A1, EC, E9 FFA1, EB 02, E9 F8A1, EC, 88 F3 10 15 19, F4, E9 FFA1, EB 02, E9 F8A1, EC, E9 06A2, E9 12A2, EB 02, E9 06A2, EC, E9 12A2, EB 03, E9 06A2, EC, E9 12A2, EB 02, E9 06A2, EC, 88 10, 84 F3 15 19, F4, F3 15 19, F4, E9 12A2, EB 02, E9 06A2, EC, E8 96A1

$A1F8: (COMMON MELODY)

88 F3 10 14 17, F4, EA

$A1FF: (COMMON MELODY)

88 F3 0B 15 17, F4, EA

$A206: (COMMON MELODY)

88 10, 84 F3 14 17, F4, F3 14 17, F4, EA

$A212: (COMMON MELODY)

88 0B, 84 F3 15 17, F4, F3 15 17, F4, EA

$A21E: (FILLER)

FF FF

$A220: (SET TRIANGLE AND NOISE VARIABLES)

E2 30, E3 0F, E0 1E

$A226: (TRIANGLE AND NOISE MUSIC)

88 00, E8 26A2

Share this post


Link to post
Share on other sites

Jstout, how did you keep all the timing ("lengths" x81-C0) in order? My problem is keeping all the channels working together and staying in time (with length). I know how it works, but it's hard for me to "visualize".

Share this post


Link to post
Share on other sites

I'm glad you guys are refreshing your knowledge of this stuff. I haven't read up on any sound data yet.

There are several sound effects that would benefit being changed in TSB, which also drive me crazy. Changed, in that they need to be altered so that either the sound itself is executed later, or to give it a 'pause' of some sort at the beginning of the sound string, so that the effect that follows is better synced with the action onscreen. I'll get to more specific examples when I arrive at that point in this season's ROM creation(s). Maybe the easiest way for some of them is to be removed altogether, but I have faith that the TSB Savants will have an idea or two up their sleeves.

One of these sound effects, as a single example, is when the cut screen of the WR making the falling backwards grab (not diving) is played. That sound effect always fires up too early on the non-cinema screen, which totally gives away the result (complete or incomplete) when the cinema screen happens. There are a few of these sound errors.

Share this post


Link to post
Share on other sites
Jstout, how did you keep all the timing ("lengths" x81-C0) in order? My problem is keeping all the channels working together and staying in time (with length). I know how it works, but it's hard for me to "visualize".

The sound lengths match to:

A5 = Quadruple Whole Note

9E = Double Whole Note

96 = Whole Note

8E = Half Note

88 = Quarter Note

84 = Eighth Note

82 = Sixteenth Note

81 = Thirty-second Note

I'm not musical so if there are inbetween notes then let me know and I can see if anything that will match up exactly.

Share this post


Link to post
Share on other sites
Jstout, how did you keep all the timing ("lengths" x81-C0) in order? My problem is keeping all the channels working together and staying in time (with length). I know how it works, but it's hard for me to "visualize".

The sound lengths match to:

A5 = Quadruple Whole Note

9E = Double Whole Note

96 = Whole Note

8E = Half Note

88 = Quarter Note

84 = Eighth Note

82 = Sixteenth Note

81 = Thirty-second Note

I'm not musical so if there are inbetween notes then let me know and I can see if anything that will match up exactly.

awesome! thanks jstout!

any "inbetween" timing intervals would be to add "shuffle" or "swing".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×