Files
GradientTool/HDMA/CombinedChannel.cs

74 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Decompiled with JetBrains decompiler
// Type: SFXProductions.GradientTool.HDMA.CombinedChannel
// Assembly: GradientTool, Version=0.8.2.1, Culture=neutral, PublicKeyToken=null
// MVID: 818AB9B3-796A-4A49-8B90-C00D066A321B
// Assembly location: C:\Users\aless\Downloads\gradient-tool-v0.8.2.1\GradientTool.exe
using SFXProductions.GradientTool.HDMA.Configuration;
using System.Collections.Generic;
using System.Windows.Forms;
#nullable disable
namespace SFXProductions.GradientTool.HDMA;
internal sealed class CombinedChannel : Channel
{
public override bool CanUseContinuousMode => false;
public override bool HasSecondWrite => false;
public override bool IsBackgroundOrBrightnessHDMA => false;
public override string ChannelSuffix => "Table";
public override uint CalculateTableSize(IList<CompressedDataPoint> data)
{
uint count = (uint) data.Count;
return count + count * 3U;
}
public override TabPage CreatePropertiesPage(
Mode0Channel sib,
ref ColourChannelsRef channelsReference)
{
UnconfigurablePropertyTab propertiesPage = new UnconfigurablePropertyTab();
propertiesPage.Message = "GradientTool doesnt generate initialization code for scrolling gradients.";
propertiesPage.Text = "Channel";
return (TabPage) propertiesPage;
}
public override void ApplySettings(TabPage propertiesPage)
{
}
public override void GetRawData(
double[] rBuffer,
double[] gBuffer,
double[] bBuffer,
DataPoint[] dataBuffer)
{
Generator2.CreateScrollingTable(rBuffer, gBuffer, bBuffer, dataBuffer);
}
protected override void DoWriteData(IList<CompressedDataPoint> hdmaTable, CodeGen code)
{
for (int index = 0; index < hdmaTable.Count; ++index)
{
CompressedDataPoint compressedDataPoint = hdmaTable[index];
if (compressedDataPoint.Data.Count > 0)
{
code.AppendKeyword("db");
code.AppendSpace();
code.WriteHexAddress((byte) compressedDataPoint.Count);
code.AppendPlainText(',');
code.WriteHexAddress((byte) compressedDataPoint.Data[0].Data1);
code.AppendPlainText(',');
code.WriteHexAddress((byte) compressedDataPoint.Data[0].Data2);
code.AppendPlainText(',');
code.WriteHexAddress((byte) compressedDataPoint.Data[0].Data3);
code.AppendLine();
}
}
}
}