// 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")); }
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; } }