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); }
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(); }