Overshell

From Milo Modding Wiki
Revision as of 18:23, 24 February 2022 by LysiX (talk | contribs) (list of .lsts)
Jump to navigation Jump to search

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.

Functions

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 overwrites 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 is the extras menu in slot_states.dta (slightly modified to use the names in locale and using the raw commands that can actually be used, and added some very helpful comments)

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"
       #ifdef HX_XBOX
       "Audition Mode" ; I actually cut this bit of code in the selection part to make this even simpler, but yes you can use #ifdefs in slot_states
       #endif)}) ; 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}))

Our Own Menus

Unfortunately, we cannot just make a new .lst for a new menu, since there is no way to modify Rock Band 3 .milo files at this time. Get used to this, it will be a reoccurring theme throughout this whole thing. That leaves us with these .lst files that we can copy:

(TODO: what .lst files can be used and which are reccomended/have no annoying checkmarks?)

All .lst files in overshell.milo:

* = ones I used

- = has checkmarks

X = BAD

auto_sign_in_rock_central.lst

cancel_song.lst

chars.lst

choose_char_edit.lst

choose_diff.lst

choose_part.lst

confirm_action.lst

game_options.lst

invite_friends.lst X

modifiers.lst X

online_options.lst

options.lst

options_audio.lst *

options_av_settings.lst -

options_drum.lst

options_end_game.lst

options_extras.lst *

options_vocal.lst -

profile_options.lst

profiles.lst

sign_in_to_register.lst

users.lst


To have menu transition animations, you have to use different .lst files compared to the menu you're transitioning from (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 users.lst will transition correctly, even though by default they don't have a link to each other)