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); }
private void ApplyLevelSpritePatterns(ChrBankBuilder builder, LevelIndex levelIndex, bool justinBailey) { ApplyPatternsToBank(builder, ExpandoPatternOffsets.GlobalGameplaySprites); ApplyPatternsToBank(builder, ExpandoPatternOffsets.DigitSprites); if (justinBailey) { ApplyPatternsToBank(builder, ExpandoPatternOffsets.JustinBaileySprites); } ApplyPatternsToBank(builder, ExpandoPatternOffsets.GetSpriteEntry(levelIndex)); }
public override ChrDump GetRawPatterns() { ExpandoPatternOffsets.Entry bgChrOffsets; ExpandoPatternOffsets.Entry areaSprChrOffsets; ExpandoPatternOffsets.Entry globalSprOffsets = ExpandoPatternOffsets.GlobalGameplaySprites; ExpandoPatternOffsets.Entry justinBaileyOffsets = ExpandoPatternOffsets.JustinBaileySprites; if (LevelId == LevelIndex.None) { bgChrOffsets = ExpandoPatternOffsets.TitleBgGraphics; areaSprChrOffsets = ExpandoPatternOffsets.TitleSpriteGraphics; } else { bgChrOffsets = ExpandoPatternOffsets.GetBackgroundEntry(LevelId); areaSprChrOffsets = ExpandoPatternOffsets.GetSpriteEntry(LevelId); } LoadTileset(bgChrOffsets); LoadTileset(globalSprOffsets); LoadTileset(areaSprChrOffsets); var sprChr = ExtractChr(0x0000, 0x1000); var bgChr = ExtractChr(0x1000, 0x1000); LoadTileset(justinBaileyOffsets); var altSprChr = ExtractChr(0x0000, 0x800); if (LevelId == LevelIndex.None) { byte[][] blobs = new byte[][] { bgChr, sprChr }; var bgMeta = new FrameSectionID[] { new FrameSectionID(0) }; return(new ChrDump(blobs, bgMeta, 1, null, null)); } else { byte[][] blobs = new byte[][] { bgChr, sprChr, altSprChr }; var bgMeta = new FrameSectionID[] { new FrameSectionID(0) }; return(new ChrDump(blobs, bgMeta, 1, 2, null)); } }