Exemple #1
0
 // Use this for initialization
 void Start()
 {
     if (instance != null)
     {
         Destroy(gameObject);
     }
     else
     {
         instance = this;
         GameObject.DontDestroyOnLoad(gameObject);
     }
     audioSource = GetComponent <AudioSource>();
     if (!PlayerPrefs.HasKey("master_volume"))
     {
         PlayerPrefs.SetFloat("master_volume", .5f);
     }
     ChangeVolume(PlayerPrefs.GetFloat("master_volume"));
 }
Exemple #2
0
        public void ShuffleMusic(MusicShuffle mode, MT19337 rng)
        {
            switch (mode)
            {
            case MusicShuffle.Standard:
                List <byte> overworldTracks = new List <byte> {
                    0x41, 0x42, 0x44, 0x45, 0x46, 0x47, 0x4A, 0x4F
                };
                List <byte> townTracks = new List <byte> {
                    0x41, 0x42, 0x45, 0x46, 0x47, 0x48, 0x4A, 0x4F, 0x51
                };
                List <byte> dungeonTracks = new List <byte> {
                    0x41, 0x42, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x52, 0x53
                };

                overworldTracks.Shuffle(rng);
                townTracks.Shuffle(rng);
                dungeonTracks.Shuffle(rng);

                //Overworld
                Data[0x7C649] = overworldTracks[0];
                Data[0x7C6F9] = overworldTracks[0];
                Data[0x7C75A] = overworldTracks[0];
                Data[0x7C75B] = overworldTracks[0];

                //Ship
                Data[0x7C62D] = overworldTracks[1];
                Data[0x7C75D] = overworldTracks[1];

                //Airship
                Data[0x7C235] = overworldTracks[2];
                Data[0x7C761] = overworldTracks[2];

                //Remove used songs from other pools
                var usedTracks = overworldTracks.Take(3).ToList();
                townTracks = townTracks.Except(usedTracks).ToList();

                //Town
                Data[0x7CFC3] = townTracks[0];

                //Castle
                Data[0x7CFC4] = townTracks[1];

                //Shop
                Data[0x3A351] = townTracks[2];
                Data[0x3A56E] = townTracks[2];
                Data[0x3A597] = townTracks[2];

                //Menu
                Data[0x3ADB4] = townTracks[3];
                Data[0x3B677] = townTracks[3];
                Data[0x3997F] = townTracks[3];                         //Lineup menu

                //Remove used songs from other pools
                usedTracks.AddRange(townTracks.Take(4));
                dungeonTracks = dungeonTracks.Except(usedTracks).ToList();

                //Dungeons
                Data[0x7CFC5] = dungeonTracks[0];
                Data[0x7CFC6] = dungeonTracks[1];
                Data[0x7CFC7] = dungeonTracks[2];
                Data[0x7CFC8] = dungeonTracks[3];
                Data[0x7CFC9] = dungeonTracks[4];
                Data[0x7CFCA] = dungeonTracks[5];

                break;

            case MusicShuffle.Nonsensical:                     //They asked for it...
                List <byte> tracks = new List <byte> {
                    0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x51, 0x52, 0x53, 0x55
                };
                tracks.Shuffle(rng);

                //Overworld
                Data[0x7C649] = tracks[0];
                Data[0x7C6F9] = tracks[0];
                Data[0x7C75A] = tracks[0];
                Data[0x7C75B] = tracks[0];

                //Ship
                Data[0x7C62D] = tracks[1];
                Data[0x7C75D] = tracks[1];

                //Airship
                Data[0x7C235] = tracks[2];
                Data[0x7C761] = tracks[2];

                //Tilesets 1-8
                Data[0x7CFC3] = tracks[3];                         //Town
                Data[0x7CFC4] = tracks[4];                         //Castle
                Data[0x7CFC5] = tracks[5];
                Data[0x7CFC6] = tracks[6];
                Data[0x7CFC7] = tracks[7];
                Data[0x7CFC8] = tracks[8];
                Data[0x7CFC9] = tracks[9];
                Data[0x7CFCA] = tracks[10];

                //Title
                Data[0x3A226] = tracks[11];

                //Shop
                Data[0x3A351] = tracks[12];
                Data[0x3A56E] = tracks[12];
                Data[0x3A597] = tracks[12];

                //Menu
                Data[0x3ADB4] = tracks[13];
                Data[0x3B677] = tracks[13];
                Data[0x3997F] = tracks[13];                         //Lineup menu

                //Ending
                Data[0x37804] = tracks[14];

                //Bridge Cutscene
                Data[0x3784E] = tracks[15];

                //Battle Fanfare
                Data[0x31E44] = tracks[16];

                //Gameover
                Data[0x2DAF6] = tracks[17];

                //Battle
                //Data[0x2D9C1] = Songs[rng.Between(0, Songs.Count - 1)];

                //Mini Things
                Data[0x36E86] = tracks[rng.Between(0, tracks.Count - 1)];                         //minigame
                Data[0x27C0D] = tracks[rng.Between(0, tracks.Count - 1)];                         //minimap

                break;

            case MusicShuffle.MusicDisabled:
                //Set Sq1, Sq2, and Tri channels for crystal theme all point to the same music data
                Put(0x34000, Blob.FromHex("C080C080C080"));
                //Overwrite beginning of crystal theme with a song that initializes properly but plays no notes
                Put(0x340C0, Blob.FromHex("FDF805E0D8C7D0C480"));

                List <int> AllSongs = new List <int>
                {
                    0x7C649, 0x7C6F9, 0x7C75A, 0x7C75B, 0x7C62D, 0x7C75D,
                    0x7C235, 0x7C761, 0x7CFC3, 0x7CFC4, 0x7CFC5, 0x7CFC6,
                    0x7CFC7, 0x7CFC8, 0x7CFC9, 0x7CFCA, 0x3A226, 0x3A351,
                    0x3A56E, 0x3A597, 0x3ADB4, 0x3B677, 0x3997F, 0x37804,
                    0x3784E, 0x31E44, 0x2DAF6, 0x2D9C1, 0x36E86, 0x27C0D
                };
                //Set all music playback calls to play the new empty song
                foreach (int address in AllSongs)
                {
                    Data[address] = 0x41;
                }

                break;
            }
        }