AxibugEmuOnline/AxibugEmuOnline.Client/Assets/MyNes.Core/PaletteFileWrapper.cs

62 lines
1.6 KiB
C#
Raw Normal View History

2024-07-03 18:15:28 +08:00
using System.Collections.Generic;
using System.IO;
2024-07-03 18:22:22 +08:00
namespace MyNes.Core
2024-07-03 18:15:28 +08:00
{
2024-07-03 18:22:22 +08:00
public class PaletteFileWrapper
{
public static bool LoadFile(string file, out int[] palette)
{
Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read);
if (stream.Length == 192 || stream.Length == 1536)
{
int[] array = new int[512];
byte[] array2 = new byte[stream.Length];
stream.Read(array2, 0, array2.Length);
int num = 0;
for (int i = 0; i < 512; i++)
{
byte b = array2[num];
num++;
if (num == array2.Length)
{
num = 0;
}
byte b2 = array2[num];
num++;
if (num == array2.Length)
{
num = 0;
}
byte b3 = array2[num];
num++;
if (num == array2.Length)
{
num = 0;
}
array[i] = -16777216 | (b << 16) | (b2 << 8) | b3;
}
stream.Close();
palette = array;
return true;
}
palette = null;
return false;
}
2024-07-03 18:15:28 +08:00
2024-07-03 18:22:22 +08:00
public static void SaveFile(string file, int[] palette)
{
Stream stream = new FileStream(file, FileMode.Create, FileAccess.Write);
List<byte> list = new List<byte>();
foreach (int num in palette)
{
list.Add((byte)((uint)(num >> 16) & 0xFFu));
list.Add((byte)((uint)(num >> 8) & 0xFFu));
list.Add((byte)((uint)num & 0xFFu));
}
stream.Write(list.ToArray(), 0, list.Count);
stream.Close();
}
}
2024-07-03 18:15:28 +08:00
}