Tracklist Modifier Code for PM3.6 and PM+BrawlEX

Joined
Jun 23, 2015
Messages
40
Location
British Columbia, Canada
#1
When I downloaded PM + BrawlEX, I wanted to give Dreamland more tracks because hearing the same two songs over and over again gets a bit repetitive. I tried PhantomWing's code, but it didn't turn out properly (half of my stages ended up with a Battlefield Tracklist). Then, I remembered this code from 3.6 and decided to work it out. Here's what I got:

Tracklist Modifer [standardtoaster]
C210F9B4 000000GG
-------- --------
2C0300S1 418200PP
2C0300S2 418200PP
2C0300S3 418200PP
-------- --------
480000PP 386000T1
480000QQ 386000T2
480000RR 386000T3
-------- --------
7C0903A6 00000000
E0000000 80008000

This code is divided into 4 parts:

Part 1 (Start):
C210F9B4 000000GG

The GG represents the number of lines after this line in the code, but not including E0000000 80000000
This number must be in hex, and it is always odd (05, 07, 09, 0B, etc.)

Part 2 (Input):
2C0300S1 418200PP
2C0300S2 418200PP
2C0300S3 418200PP

The S#s represent the stage ids of the tracklists that you want to replace.
Battlefield - 01 (5 songs)
Final Destination - 02 (5 songs)
Metal Cavern - 05 (6 songs; however, if you want to give a stage a 6-song tracklist, use Norfair/Frigate/Fourside instead)
Delfino's Secret - 03 (5 songs)
Luigi's Mansion - 04 (5 songs)
Metal Cavern - 05 (6 songs; however, if you want to give a stage a 6-song tracklist, use Norfair/Frigate/Fourside instead)
Bowser's Castle - 06 (7 songs)
Peach's Castle - 2F (2 songs)
Kongo Jungle - 07 (3 songs)
Rumble Falls - 08 (7 songs)
Jungle Japes - 2B (2 songs)
Hyrule Castle - 33 (9 songs)
Pirate Ship - 09 (8 songs)
Temple - 29 (2 songs)
Norfair - 0B (6 songs)
Frigate Orpheon - 0C (6 songs)
Brinstar - 32 (2 songs)
Yoshi's Island - 0D (5 songs)
Yoshi's Story - 2A (2 songs)
Halberd - 0E (12 songs)
Fountain of Dreams - 1F (5 songs)
Dreamland - 2D (2 songs)
Lylat Cruise - 13 (11 songs)
Corneria - 30 (2 songs)
Saffron City - 14 (5 songs)
Spear Pillar - 15 (5 songs)
Pokemon Stadiums - 2E (3 songs)
Port Town Aero Dive - 16 (12 songs)
Big Blue - 31 (2 songs)
Infinite Glacier - 17 (5 songs)
Flat Zone 2 - 18 (3 songs)
Castle Siege - 19 (12 songs)
Fourside - 20 (6 songs)
Onett - 2C (2 songs)
Distant Planet - 1D (9 songs)
Wario Land - 1C (8 songs)
Smashville - 21 (5 songs + K.K. Slider; if you want a reguar 5-song tracklist, use Battlefield, FD, or various other stages)
Skyworld - 1E (4 songs)
Shadow Moses Island - 22 (9 songs)
Green Hill Zone - 23 (12 songs)
Pictochat - 24 (9 songs)
Hanenbow - 25 (1 song; use this if you don't want the music title displayed; otherwise, use TR)
Training Room - 27 (1 song; use this if you want the music title displayed; otherwise, use Hanenbow)
STGCUSTOM01 - 40
STGCUSTOM02 - 41
STGCUSTOM03 - 42
STGCUSTOM04 - 43
etc.
These lines of code can be repeated as many times as desired for the number of tracklists you want to change/swap.
I'll get to the PPs later.

Part 3 (Output):
480000PP 386000T1
480000QQ 386000T2
480000RR 386000T3

The T#s represent the new tracklists for each stage.
S1 gets its tracklist from T1.
S2 gets its tracklist from T2.
...and the pattern continues.
The PP, QQ, RR, etc. represent the number of bytes of code left, not including the land 1 and a half lines. The bottommost value (RR) will always be 08, the next one up (QQ) will always be 10, the next one up (PP) will always be 18, folowed by 20, 28, etc. Take the uppermost value and put it in the PPs in the previous section.

Part 4 (Ending):

7C0903A6 00000000
E0000000 80008000

This is the easiest part. Just copy it as is!

FAQs:
Q: Does this work with both vPM and PM+BrawlEX?
A: Yes, yes it does.

Q: Can multiple stages share the same tracklist?
A: Yes.

Q: How is My Music affected?
A: I'll give you an example. If I give Battlefield's tracklist to Dreamland, and leave Battlefield's tracklist alone, the sliders on Battlefield will adjust the song frequency for both Battlefield and Dreamland.

Q: Do I have to delete the PS2/Saffron tracklist swap code from 3.6 for this to work?
A: You can, but you don't have to. As long as this code is below the original one, this will be read and not that.

Q: Will this reverse the PS2/Saffron tracklist swap?
A: Yes, but you can add it to your code to put it back the way it was.

Q: Does this work with more than 3 stages?
A: Yes, definitely! just add lines to part 2 and 3 at the top of their section. There will now be an OO above the PP and the PPs in part 2 become OOs. If another line is added, the OOs in part 2 become NNs, etc.

Q: What if I want a 10-song tracklist?
A: Unfortunately, you can't have a 10-song tracklist; however, with the Stage-Track Dependent Song Loader, you can direct two songs to only play one.

Q: Are there any bugs?
A: Unfortunately, yes. The only one I know so far is that it can cause the same song to play for 2 matches in a row in Training, Classic, and All-Star.

Working with other codes:
This code works very well with both Pyotr's Custom Sound Engine and Oshtoby's Stage-Track Dependent Song Loader which can be found here. With all of this combined, you could give each stage a unique 12-song tracklist! You can also use this to add titles to Custom Sound Engine songs starting at 0000C000. For PM + BrawlEX, simply replace your Miscdata[13] with the one in the download as opposed to replacing the whole common2.pac.

If you have any questions, reply below and I will try to respond. I don't mind if you ask for assistance either. I know that the part with the PPs, QQs, and RRs can get quite confusing.
 
Last edited:

a-lauz

Smash Rookie
Joined
Sep 5, 2015
Messages
3
NNID
lazier.beam
#2
Dude, this is awesome. I've been using PhantomWing's tracklist code for what feels like forever, and only recently did I become aware that using it made the game freeze every time I went back to the title screen and tried to press start (I've known about it glitching the next song played in Training mode for a while, but not the other single player modes too, and apparently it may even even be the culprit of random inexplicable in-game freezes??). I thought I'd have to necro an old thread to see if someone could fix it, but maybe this could hold the solution! It seems like I've got the gist of how to use this code, but just to clear things up:

The PP, QQ, RR, etc. represents the number of bytes of code left not counting the last 1 and a half lines (highlighted in red), correct? So to figure out what values I'm putting in, I'm adding up by 8 for each line and converting that value to hex, like so-

480000PP 386000T1
480000QQ 386000T2
480000RR 386000T3
7C0903A6 00000000
E0000000 80008000

  • RR = 08 (8 bytes)
  • QQ = 10 (16 bytes)
  • PP = 18 (24 bytes)
Then, with that all figured out my final code would look something like this:

C210F9B4 00000007
2C030001 41820018
2C03002A 41820018
2C03002D 41820018
48000018 3860000E
48000010 38600023
48000008 38600016
7C0903A6 00000000
E0000000 80008000
With the values I put into the example code you gave, I'd be giving a 12-song tracklist to Battlefield, Yoshi's Story, and Dream Land, if I did everything right.

My only lingering question is just how high those PP/QQ/RR values can go up. With 31 swapped tracklists, that value goes up to
F8, but if you wany anymore custom tracklists, then the next values will be 108, 110, etc. all the way up to 278, and I'm guessing the 0's in front of those PP values can be rewritten as needed. This might be necessary if you have a lot of custom stages, because the old PhantomWings code gave all the custom stages Hanenbow's tracklist by default. With that code removed I don't think custom stages play any music at all, unless maybe you also use Oshtoby's single-track code for custom stages.
 
Last edited:
Joined
Jun 23, 2015
Messages
40
Location
British Columbia, Canada
#3
Dude, this is awesome. I've been using PhantomWing's tracklist code for what feels like forever, and only recently did I become aware that using it made the game freeze every time I went back to the title screen and tried to press start (I've known about it glitching the next song played in Training mode for a while, but not the other single player modes too, and apparently it may even even be the culprit of random inexplicable in-game freezes??). I thought I'd have to necro an old thread to see if someone could fix it, but maybe this could hold the solution! It seems like I've got the gist of how to use this code, but just to clear things up:

The PP, QQ, RR, etc. represents the number of bytes of code left not counting the last 1 and a half lines (highlighted in red), correct? So to figure out what values I'm putting in, I'm adding up by 8 for each line and converting that value to hex, like so-

480000PP 386000T1
480000QQ 386000T2
480000RR 386000T3
7C0903A6 00000000
E0000000 80008000

  • RR = 08 (8 bytes)
  • QQ = 10 (16 bytes)
  • PP = 18 (24 bytes)
Then, with that all figured out my final code would look something like this:

C210F9B4 00000007
2C030001 41820018
2C03002A 41820018
2C03002D 41820018
48000018 3860000E
48000010 38600023
48000008 38600016
7C0903A6 00000000
E0000000 80008000
With the values I put into the example code you gave, I'd be giving a 12-song tracklist to Battlefield, Yoshi's Story, and Dream Land, if I did everything right.

My only lingering question is just how high those PP/QQ/RR values can go up. With 31 swapped tracklists, that value goes up to
F8, but if you wany anymore custom tracklists, then the next values will be 108, 110, etc. all the way up to 278, and I'm guessing the 0's in front of those PP values can be rewritten as needed. This might be necessary if you have a lot of custom stages, because the old PhantomWings code gave all the custom stages Hanenbow's tracklist by default. With that code removed I don't think custom stages play any music at all, unless maybe you also use Oshtoby's single-track code for custom stages.
Yep, that looks all good! As for the PP/QQ/RR values, I haven't tested them with any values with more than 2 digits, so I don't know if it would work or not. If you (or anyone) wants to try, go for it!
 

a-lauz

Smash Rookie
Joined
Sep 5, 2015
Messages
3
NNID
lazier.beam
#4
Yep, that looks all good! As for the PP/QQ/RR values, I haven't tested them with any values with more than 2 digits, so I don't know if it would work or not. If you (or anyone) wants to try, go for it!
It'll probably take a while before I rewrite all the tracklist codes from my old codeset and include all the new tracks I want to add with the CSE, but I'll let you know how it goes once that happens.

Another thing I was wondering about is replacing the tracklist for Smashville. Only 5 show in My Music but I know it really has 11 because of KK. I don't know if anyone has ever tried giving Smashville a 12-song tracklist or how that affects what songs will play on Saturday nights. That and Metal Cavern/Mushroomy Kingdom are probably not tracklists to mess around with.

(I think PW's code actually has two different values for the 1-1 and 1-2 tracklists, but I guess this one doesn't).
 
Last edited:

Obskore

Smash Ace
Joined
Jan 17, 2013
Messages
674
Location
Sonora / México
#5
is there a way i can borrow specific tracks from specific stages so that they are shared with or moved to some other stage i want?
let's say i have Dreamland's 2 track list, but i want to borrow another 2 tracks from Fountain of Dreams, is that possible?
 

squeakyboots13

Smash Journeyman
Joined
Oct 4, 2013
Messages
381
#6
is there a way i can borrow specific tracks from specific stages so that they are shared with or moved to some other stage i want?
let's say i have Dreamland's 2 track list, but i want to borrow another 2 tracks from Fountain of Dreams, is that possible?
Use the tracklist modifier code to give Dreamland the music list from a stage that has four tracks. (Skyworld has four songs so you can use that and it won't affect that stage's music.) Then use the stage track dependent song loader code to replace those songs with Dreamland's and the two Fountain of Dreams tracks you want.

http://forums.kc-mm.com/index.php?topic=27447.0
 

britipinojeff

Smash Journeyman
Premium
Joined
Apr 1, 2015
Messages
220
#7
So how do i make expansion stages share songs? i tried using the code and then put in the ID for the expansion stage i wanted, but nothing happened.

Edit: nvm think I figured it out. Have to take out the Stage Dependent song Loader
 
Last edited:

nickultra

Smash Cadet
Joined
Jul 30, 2016
Messages
27
#8
I just tried to use this code in conjunction with Custom Sound Engine and Oshtoby's code. I gave Dreamland Green Hill Zones tracklist. Then I replaced a Green Hill Zone Song on Dreamland with a custom song 00004000 which I put in the sound folder with all of Project M's other songs, but when went into a game on Dreamland after getting what was, presumably, my custom song to play, instead there was silence (and obviously no title, I didn't add one). Do I need to some kinda XML editing? Thanks.

EDIT:
Using 3.6 Vanilla
Song I used was 2:00 in length
 
Last edited:

a-lauz

Smash Rookie
Joined
Sep 5, 2015
Messages
3
NNID
lazier.beam
#9
I just tried to use this code in conjunction with Custom Sound Engine and Oshtoby's code. I gave Dreamland Green Hill Zones tracklist. Then I replaced a Green Hill Zone Song on Dreamland with a custom song 00004000 which I put in the sound folder with all of Project M's other songs, but when went into a game on Dreamland after getting what was, presumably, my custom song to play, instead there was silence (and obviously no title, I didn't add one). Do I need to some kinda XML editing? Thanks.

EDIT:
Using 3.6 Vanilla
Song I used was 2:00 in length
The file structure for songs added with CSE should be in a new directory - sd:/projectm/pf/sound/sfx

it sounds like you put 00004000.brstm in sound/strm instead. EDIT: NOPE NO THEY DON'T LUL. THEY DO GO IN /STRM but only this version of the code
 
Last edited:

nickultra

Smash Cadet
Joined
Jul 30, 2016
Messages
27
#10
Is that so? Ill give that a try. Thanks for the help.

Edit:

Tried changing the file directory but with the same result.. Nothing freezes, but nothing plays.
 
Last edited:
Joined
Jun 23, 2015
Messages
40
Location
British Columbia, Canada
#11
Is that so? Ill give that a try. Thanks for the help.

Edit:

Tried changing the file directory but with the same result.. Nothing freezes, but nothing plays.
Are you using the Custom Sound Engine code from here: https://smashboards.com/threads/custom-sound-engine-v3-0-currently-in-public-testing-phase.431467/
You should be using it because every other version will not work with Project M.

And with this version of the code, .brstm files go in sound/strm, not sound/sfx.
 
Last edited:

nickultra

Smash Cadet
Joined
Jul 30, 2016
Messages
27
#12
I finally found what wasn't working. I was using the custom stage select screen code along with the others (not sure what it was effecting). Now that I've stopped using that code it works... Well sort of, now I can change the songs to custom songs on one stage, but when I try to change songs to custom songs on another the game won't load. So I have two questions. One is, do all the Stage-Track Dependant Song Loader codes have to be added at the same time? If not, why is it when I change Lylat's songs (using Inifinte Glacier's Tracklist) and also change Dreamland's songs (also using Inifinte Glacier's Tracklist) PM literally won't even start.

EDIT:
I tried loading the codes all together, nothing changed... I assume this code does allow you to load CSE songs over the same tracklist for different stages, correct?

Is there a limit to how long a custom song can be? Or an amount of lines in a GCT file? I'm kinda stuck here..

EDIT x3:

I changed a line in gameconfig.txt which stopped the original problem, but as I add more code the game seems to become more unstable and now it won't load at all... Am I doing something wrong? Has anybody else had this problem?
 
Last edited:
Joined
Feb 24, 2016
Messages
31
#13
Very late reply, but in order to get this code working correctly you need to either:

A. Delete the code already present in the gct or
B. Put it below the original PM one.

As for the limit on codes, I believe it's dictated by the gameconfig.txt
 

nickultra

Smash Cadet
Joined
Jul 30, 2016
Messages
27
#14
Very late reply, but in order to get this code working correctly you need to either:

A. Delete the code already present in the gct or
B. Put it below the original PM one.

As for the limit on codes, I believe it's dictated by the gameconfig.txt
Thanks, I actually figured this out. My problem, pointed out to me by another smasher, was that I was using the wrong version of the gameconfig.txt. I got custom music and swapped tracklists successfully on all stages I attempted.
 

C.YI

Smash Rookie
Joined
Jan 1, 2016
Messages
15
#15
Hi, I've gotten this code to work for normal stages. For example, I was able to allow Pirate Ship to have Rumble Fall's tracklist (as a test). However, if I attempt to give a tracklist to a Custom Stage, it seems to always be Battlefield's tracklist no matter what stage ID # I use. Does anyone have any ideas as to why this might be?

Edit: I figured out that it seems to be conflicting with another code in my codelist, so I will figure that out through trial and error.
 
Last edited:

squeakyboots13

Smash Journeyman
Joined
Oct 4, 2013
Messages
381
#16
Hi, I've gotten this code to work for normal stages. For example, I was able to allow Pirate Ship to have Rumble Fall's tracklist (as a test). However, if I attempt to give a tracklist to a Custom Stage, it seems to always be Battlefield's tracklist no matter what stage ID # I use. Does anyone have any ideas as to why this might be?

Edit: I figured out that it seems to be conflicting with another code in my codelist, so I will figure that out through trial and error.
I don't know if this is what's causing the problem, but make sure your gct doesn't have any Stage Dependent Song Loader codes in it.

* 28708ceb 000000XX
* 4a000000 90180f06
* 14000076 ff00YYYY
* e0000000 80008000

These are codes that tell the game to play a specific music track every time that stage is loaded and if you are using Lakora's stage expansion template, then you likely have codes for each custom stage in place already. That could be what's conflicting with your tracklist code.
 

C.YI

Smash Rookie
Joined
Jan 1, 2016
Messages
15
#17
I don't know if this is what's causing the problem, but make sure your gct doesn't have any Stage Dependent Song Loader codes in it.

* 28708ceb 000000XX
* 4a000000 90180f06
* 14000076 ff00YYYY
* e0000000 80008000

These are codes that tell the game to play a specific music track every time that stage is loaded and if you are using Lakora's stage expansion template, then you likely have codes for each custom stage in place already. That could be what's conflicting with your tracklist code.
Hi, thanks for your input, but I already made sure to remove those codes and the problem was still occurring. Fortunately, I narrowed down the problem to a few other codes in my codelist that weren't really being used so everything seems to be working now.
 
Top