/// <summary>
        /// Loads level-specific pattern groups.
        /// </summary>
        /// <param name="level">The level to load patter groups for.</param>
        public PatternGroupIndexTable(Level level)
        {
            this.level  = level;
            this.rom    = level.Rom;
            this.ranges = level.Rom.PatternGroupOffsets;

            if (level.Index == LevelIndex.Brinstar)
            {
                indexOffsets = PatternGroupIndexOffsets.Brinstar;
            }
            else if (level.Index == LevelIndex.Norfair)
            {
                indexOffsets = PatternGroupIndexOffsets.Norfair;
            }
            else if (level.Index == LevelIndex.Tourian)
            {
                indexOffsets = PatternGroupIndexOffsets.Tourian;
            }
            else if (level.Index == LevelIndex.Kraid)
            {
                indexOffsets = PatternGroupIndexOffsets.Kraid;
            }
            else if (level.Index == LevelIndex.Ridley)
            {
                indexOffsets = PatternGroupIndexOffsets.Ridley;
            }
        }
        /// <summary>
        /// Loads global pattern groups.
        /// </summary>
        /// <param name="rom">The ROM to load pattern groups for.</param>
        public PatternGroupIndexTable(MetroidRom rom)
        {
            this.level  = null;
            this.rom    = rom;
            this.ranges = rom.PatternGroupOffsets;

            indexOffsets = PatternGroupIndexOffsets.Global;
        }