private void SerializeLevelChrAnimation(ref int frameIndex, LevelIndex index) { // LevelIndex.None = title screen ChrAnimationLevelData data = (index == LevelIndex.None) ? TitleChrAnimationTable : Levels[index].ChrAnimation; // Level's default animation will use next available frame entry ChrUsage.MMC3_SetBgLoopStart(index, (byte)frameIndex); // Write frame data to chr animation table ChrAnimation.SerializeChrAnimation(this, data, ref frameIndex); }
private bool HasChrAnimationIndicator() { return (ChrUsage.MMC3_GetUnusedByte(LevelIndex.None) == 0xFF && ChrUsage.MMC3_GetUnusedByte(LevelIndex.Brinstar) == 0xFF && ChrUsage.MMC3_GetUnusedByte(LevelIndex.Norfair) == 0xFF && ChrUsage.MMC3_GetUnusedByte(LevelIndex.Tourian) == 0xFF && ChrUsage.MMC3_GetUnusedByte(LevelIndex.Ridley) == 0xFF && ChrUsage.MMC3_GetUnusedByte(LevelIndex.Kraid) == 0xFF); }