Exemple #1
0
        public static PatternTable LoadNewTableForExpandedRom(bool linear, PatternTableType type, Level level)
        {
            PatternTable result = new PatternTable(linear);

            result.type = type;

            result.rom    = level.Rom;
            result.groups = null;

            result.BeginWrite();
            if (type == PatternTableType.sprite)
            {
                // These sprites should be loaded for every level's sprites
                result.loadExpandoGroup(ExpandoPatternOffsets.GlobalGameplaySprites);
                result.loadExpandoGroup(ExpandoPatternOffsets.DigitSprites);

                result.loadExpandoGroup(ExpandoPatternOffsets.GetSpriteEntry(level.Index));
            }
            else if (type == PatternTableType.background)
            {
                result.loadExpandoGroup(ExpandoPatternOffsets.GetBackgroundEntry(level.Index));
            }
            else
            {
                throw new ArgumentException("Invalid pattern table type specified.");
            }
            result.EndWrite();

            return(result);
        }
Exemple #2
0
        public PatternTable(bool linear, PatternTableType type, PatternGroupIndexTable globalTiles, PatternGroupIndexTable levelTiles, MetroidRom rom)
        {
            this.type    = type;
            this._Linear = linear;
            if (linear)
            {
                patterns = new Bitmap(2048, 8, PixelFormat.Format8bppIndexed);
            }
            else
            {
                patterns = new Bitmap(128, 128, PixelFormat.Format8bppIndexed);
            }

            this.rom    = rom;
            this.groups = levelTiles;

            this.BeginWrite();
            LoadPatternGroups(globalTiles);
            LoadPatternGroups(levelTiles);
            this.EndWrite();
        }