Overshell
The Overshell is the updated menu system introduced in Rock Band 3, and was also used in Rock Band 4. It allows individual players to change settings, characters, and drop in and out whenever they want without a separate "band quickplay" mode like the previous games. The name "Overshell" comes from the fact it draws over the "shell," or the main game/menus.
The Overshell was designed to replace the older, single player focused "shell" menu system dating all the way back to the earliest days of Guitar Hero. The older "shell" system is much easier to modify and create your own menus, as each menu was their own thing and could simply be copied over, renamed and modified however you want. The Overshell merges everything into one, making the process a bit harder than just copy and modify a whole file.
The Overshell does many things, enables/disables modifiers, changes system settings (tv overscan, volumes), character selection, and dropping in and out at will, even while in a song!
Menus
The menus in the Overshell are defined as a state in ui/overshell/slot_states.dta
, and list (.lst) states are usually defined in ui/overshell/overshell_dir.dta
(but can also be defined in slot_states). For most things, the only one necessary to change is slot_states
, as it mostly overrides overshell_dir
's instructions.
Many of the menu lists were designed to be unchanging, the line (setup_static_lists)
in overshell_dir
tells this pretty well.
Example Menu Array
This a simplified version of the extras menu in slot_states.dta
, commented to show exactly what does what
NOTE: menus are named like this:
(kState_MenuName)
(kState_OptionsExtras ; the start of the menu array
(view options_extras) ; tells the game to show the list file in overshell.milo named "options_extras.lst"
(enter ; this part was taken from overshell_dir.dta to make it easier to take it all in one fell swoop
{options_extras.lst
set_data ; this sets the data for the different selections on the list
("credits"
"Account-linking Code")}) ; sidenote, if you have a list selection that doesn't point to anything, selecting it will crash your game
(SELECT_MSG ; but having extra items in SELECT_MSG wont affect anything aside from waste a bit of space
{switch
{$component selected_sym} ; depending on which thing on the list you selected, the game will do different things!
("credits"
{$this show_state kState_EnterCredits}) ; selecting credits takes you to a "do you want to enter the credits?" overshell menu named "kState_EnterCredits"
("Account-linking Code"
{if_else ; ooh, an if_else!
{&& ; I'm just gonna assume that you have a basic knowledge of what these do
{$user can_save_data}
{$user is_signed_in_online}}
{$this show_state kState_LinkingCode} ; if you're connected, it will take you to an overshell menu that shows you your linking code (which im pretty sure does nothing these days)
#ifdef HX_PS3
{do
{$this show_state kState_LinkingCodeError} ; if you're on a ps3 and aren't connected, it will take you to an overshell menu that tells you there was an error connecting
{platform_mgr run_net_start_utility}} ; and starts a network utility?
#else
{$this show_state kState_LinkingCodeError} ; doesn't do that anywhere else though!
#endif})
})
(on_cancel ; this takes you back to the main options menu, named "kState_GameOptions"
{$this show_state kState_GameOptions}))
All .lst files and view statements
Since there is no way to modify Rock Band 3 .milo files at this time, creating a .lst file is impossible.
That leaves us with these .lst files that can be used (TODO: What are the view statements?):
RECCOMENDED .lst FILES:
options_audio.lst
options_extras.lst (only has 3 selections visible at a time)
online_options.lst
options.lst
options_end_game.lst (only 2 selections visible at a time)
subpar .lst files:
confirm_action.lst (can be used as an alert for the player, i.e. reporting their selected track speed from a slider)
game_options.lst (checkmarks)
options_drum.lst (checkmarks and large header)
options_vocal.lst (checkmarks)
options_av_settings.lst (checkmarks)
users.lst (uses view definitions kick_user and mute_user) (checkmarks and small header)
BAD .lst FILES
auto_sign_in_rock_central.lst
cancel_song.lst (same as choose_diff.lst)
chars.lst
choose_char_edit.lst (same as chars.lst)
choose_diff.lst
choose_part.lst (same as choose_diff.lst with multiple view names (choose_part_guitar, bass, etc.)
invite_friends.lst
modifiers.lst
profile_options.lst (no known view definition)
profiles.lst (same deal)
sign_in_to_register.lst
To have menu transition animations, different .lst files must be used (eg. going from system settings (options_av_settings.lst) into another menu that also uses options_av_settings.lst won't have a menu transition, while going from options_av_settings.lst to options_end_game.lst will transition correctly, even though they don't have a link to each other in the vanilla game)
Sliders
In the base game, sliders are mainly used to set volumes to certain parts of the songs, sound effects, and microphone sensitivity. The max amount of sliders on one menu is 5, which in the vanilla game is only found in the ps3's audio settings menu.