private void LoadTileset(ExpandoPatternOffsets.Entry location) { int destOffset = location.DestTileindex * 0x10; if (!location.IsSprite) { destOffset += 0x1000; } CopyChr(location.RomOffset, destOffset, location.TileCount * 0x10); }
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)); } }
private RomRange RomRangeFrom(ExpandoPatternOffsets.Entry entry) { return(new RomRange(entry.RomOffset, entry.TileCount * 0x10)); }
void loadExpandoGroup(ExpandoPatternOffsets.Entry group) { LoadTiles(rom.data, group.RomOffset, group.DestTileindex, group.TileCount); }
private void ApplyPatternsToBank(ChrBankBuilder builder, ExpandoPatternOffsets.Entry entry) { builder.CopyTiles(entry.RomOffset, entry.DestTileindex, entry.TileCount); }