Adding Songs to the Setlist

Once you've got songs.dta edited with your new song definition and shortname, you'll need to edit one of two scripts, either campaign.dta for the tiers or store.dta for the bonus tracks, to make the game actually recognize it as part of the setlist. These are very minor and easy tweaks, thankfully.

(As with all scripting tutorials, I'm using .dta and .dtb interchangeably. I'm assuming you're turning them into DTAs to edit them more efficiently.)

Adding songs to the tiers

The tiered songs are listed in campaign.dta. Depending on the game, you're either looking at six or eight arrays, one for each venue, with five shortnames in each one. The final one in each array is hardcoded to be the encore. Here's the campaign.dta for my Rocks the 360 disc:

(order
   (battle possum salvation infected iwannabesedated smokeonthewater killerqueen)
   (small1 stellar lifewasted teenagers billiondollar heyyou yougotanotherthingcomin)
   (small2 takeitoff exile exsandohs hush sept rockandroll)
   (theatre aceofspades sindocumentos graveyardshift drinkup kicked famouslastwords)
   (fest higherground memoriesofthe youshouldbeashamed stateofmass dead frankenstein)
   (arena trooper burythehatchet thisishowidisappear trippolette detonation playwithme))
(required_songs
   (kDifficultyEasy 3 4)
   (kDifficultyMedium 4 6)
   (kDifficultyHard 5 6)
   (kDifficultyExpert 6 6))
(cash
   (starting 50)
   (star_awards
      (kDifficultyEasy 0 0 0)
      (kDifficultyMedium 100 150 200)
      (kDifficultyHard 100 150 200)
      (kDifficultyExpert 100 150 200))
   (status_awards
      (kDifficultyEasy 0 0 0 0 0 0)
      (kDifficultyMedium 100 300 400 500 1000 1200 0)
      (kDifficultyHard 100 300 400 500 1000 1200 0)
      (kDifficultyExpert 100 300 400 500 1000 1200 0)))
(unlock_game_modes multi_fo)

Just replace the shortname of the song you want to switch out with the shortname you gave your new song definition in songs.dta. So, assuming you're replacing "Salvation" with my "Substitution" custom, you'd replace salvation with substitution:

(battle possum substitution infected iwannabesedated smokeonthewater killerqueen)

Like with all Data Array...arrays, the first item in the array defines the array name, so don't change any of those (battle, small1, small2, big, theatre, fest, arena, or stone).

Course, anyone who counted the shortnames in my example probably noticed I have expanded tiers with six shortnames in each array, not five, like the 360 version of GH2. This actually works perfectly fine (though the debug ELF will note it as an error on startup). Just make sure you have the same number of shortnames in each tier, or you'll have major issues with songs not showing up.

So in short, six shortnames in each tier, allowed. Four shortnames in each tier, allowed. Six in some, seven in others, four in others? No go.

Adding bonus songs

Bonus songs are defined in store.dta. They're listed on the setlist in the order they're defined in the store—hence why "Raw Dog" appears first in GH2. Here's a shortened song array from store.dta, just so this page doesn't last forever:

(song
   (rawdog
      (price 550))
   (arterialblack
      (price 550))
   (collide
      (price 550))
   (drinkup
      (price 550))
   (elephantbones
      (price 550)))

Structurally, the song array contains an array for each song in the store, themselves containing an array for the price of the item. To add substitution as a bonus track, simply duplicate that array mess for one of the songs, minding your parentheses:

(song
   (rawdog
      (price 550))
   (arterialblack
      (price 550))
   (collide
      (price 550))
   (drinkup
      (price 550))
   (elephantbones
      (price 550))
   (substitution
      (price 550)))

And again, it'll appear in whatever order you define in this file.