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
 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));
 }
Exemple #3
0
 private void ApplyLevelPatterns(ChrBankBuilder builder, LevelIndex level)
 {
     // Level sprites
     ApplyLevelSpritePatterns(builder, level, false);
     builder.NextBank();
     // Level sprites (Justin Bailey)
     ApplyLevelSpritePatterns(builder, level, true);
     builder.NextBank();
     // Level BG (copied four times)
     for (int i = 0; i < 4; i++)
     {
         ApplyPatternsToBank(builder, ExpandoPatternOffsets.GetBackgroundEntry(level));
         builder.NextBank();
     }
 }
Exemple #4
0
        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));
            }
        }