304 lines
9.8 KiB
C#
304 lines
9.8 KiB
C#
//
|
|
// This file is part of the Tremble package by Tiny Goose.
|
|
// Copyright (c) 2024-2026 TinyGoose Ltd., All Rights Reserved.
|
|
//
|
|
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace TinyGoose.Tremble
|
|
{
|
|
public class WadPalette
|
|
{
|
|
private Color32[] m_Colours;
|
|
public ref Color32 Get(int pos) => ref m_Colours[pos];
|
|
|
|
private static WadPalette s_QuakePalette;
|
|
public static WadPalette QuakePalette
|
|
{
|
|
get
|
|
{
|
|
if (s_QuakePalette == null)
|
|
{
|
|
s_QuakePalette = new()
|
|
{
|
|
m_Colours = new Color32[]
|
|
{
|
|
new(0x00, 0x00, 0x00, 0xFF),
|
|
new(0x0F, 0x0F, 0x0F, 0xFF),
|
|
new(0x1F, 0x1F, 0x1F, 0xFF),
|
|
new(0x2F, 0x2F, 0x2F, 0xFF),
|
|
new(0x3F, 0x3F, 0x3F, 0xFF),
|
|
new(0x4B, 0x4B, 0x4B, 0xFF),
|
|
new(0x5B, 0x5B, 0x5B, 0xFF),
|
|
new(0x6B, 0x6B, 0x6B, 0xFF),
|
|
new(0x7B, 0x7B, 0x7B, 0xFF),
|
|
new(0x8B, 0x8B, 0x8B, 0xFF),
|
|
new(0x9B, 0x9B, 0x9B, 0xFF),
|
|
new(0xAB, 0xAB, 0xAB, 0xFF),
|
|
new(0xBB, 0xBB, 0xBB, 0xFF),
|
|
new(0xCB, 0xCB, 0xCB, 0xFF),
|
|
new(0xDB, 0xDB, 0xDB, 0xFF),
|
|
new(0xEB, 0xEB, 0xEB, 0xFF),
|
|
new(0x0F, 0x0B, 0x07, 0xFF),
|
|
new(0x17, 0x0F, 0x0B, 0xFF),
|
|
new(0x1F, 0x17, 0x0B, 0xFF),
|
|
new(0x27, 0x1B, 0x0F, 0xFF),
|
|
new(0x2F, 0x23, 0x13, 0xFF),
|
|
new(0x37, 0x2B, 0x17, 0xFF),
|
|
new(0x3F, 0x2F, 0x17, 0xFF),
|
|
new(0x4B, 0x37, 0x1B, 0xFF),
|
|
new(0x53, 0x3B, 0x1B, 0xFF),
|
|
new(0x5B, 0x43, 0x1F, 0xFF),
|
|
new(0x63, 0x4B, 0x1F, 0xFF),
|
|
new(0x6B, 0x53, 0x1F, 0xFF),
|
|
new(0x73, 0x57, 0x1F, 0xFF),
|
|
new(0x7B, 0x5F, 0x23, 0xFF),
|
|
new(0x83, 0x67, 0x23, 0xFF),
|
|
new(0x8F, 0x6F, 0x23, 0xFF),
|
|
new(0x0B, 0x0B, 0x0F, 0xFF),
|
|
new(0x13, 0x13, 0x1B, 0xFF),
|
|
new(0x1B, 0x1B, 0x27, 0xFF),
|
|
new(0x27, 0x27, 0x33, 0xFF),
|
|
new(0x2F, 0x2F, 0x3F, 0xFF),
|
|
new(0x37, 0x37, 0x4B, 0xFF),
|
|
new(0x3F, 0x3F, 0x57, 0xFF),
|
|
new(0x47, 0x47, 0x67, 0xFF),
|
|
new(0x4F, 0x4F, 0x73, 0xFF),
|
|
new(0x5B, 0x5B, 0x7F, 0xFF),
|
|
new(0x63, 0x63, 0x8B, 0xFF),
|
|
new(0x6B, 0x6B, 0x97, 0xFF),
|
|
new(0x73, 0x73, 0xA3, 0xFF),
|
|
new(0x7B, 0x7B, 0xAF, 0xFF),
|
|
new(0x83, 0x83, 0xBB, 0xFF),
|
|
new(0x8B, 0x8B, 0xCB, 0xFF),
|
|
new(0x00, 0x00, 0x00, 0xFF),
|
|
new(0x07, 0x07, 0x00, 0xFF),
|
|
new(0x0B, 0x0B, 0x00, 0xFF),
|
|
new(0x13, 0x13, 0x00, 0xFF),
|
|
new(0x1B, 0x1B, 0x00, 0xFF),
|
|
new(0x23, 0x23, 0x00, 0xFF),
|
|
new(0x2B, 0x2B, 0x07, 0xFF),
|
|
new(0x2F, 0x2F, 0x07, 0xFF),
|
|
new(0x37, 0x37, 0x07, 0xFF),
|
|
new(0x3F, 0x3F, 0x07, 0xFF),
|
|
new(0x47, 0x47, 0x07, 0xFF),
|
|
new(0x4B, 0x4B, 0x0B, 0xFF),
|
|
new(0x53, 0x53, 0x0B, 0xFF),
|
|
new(0x5B, 0x5B, 0x0B, 0xFF),
|
|
new(0x63, 0x63, 0x0B, 0xFF),
|
|
new(0x6B, 0x6B, 0x0F, 0xFF),
|
|
new(0x07, 0x00, 0x00, 0xFF),
|
|
new(0x0F, 0x00, 0x00, 0xFF),
|
|
new(0x17, 0x00, 0x00, 0xFF),
|
|
new(0x1F, 0x00, 0x00, 0xFF),
|
|
new(0x27, 0x00, 0x00, 0xFF),
|
|
new(0x2F, 0x00, 0x00, 0xFF),
|
|
new(0x37, 0x00, 0x00, 0xFF),
|
|
new(0x3F, 0x00, 0x00, 0xFF),
|
|
new(0x47, 0x00, 0x00, 0xFF),
|
|
new(0x4F, 0x00, 0x00, 0xFF),
|
|
new(0x57, 0x00, 0x00, 0xFF),
|
|
new(0x5F, 0x00, 0x00, 0xFF),
|
|
new(0x67, 0x00, 0x00, 0xFF),
|
|
new(0x6F, 0x00, 0x00, 0xFF),
|
|
new(0x77, 0x00, 0x00, 0xFF),
|
|
new(0x7F, 0x00, 0x00, 0xFF),
|
|
new(0x13, 0x13, 0x00, 0xFF),
|
|
new(0x1B, 0x1B, 0x00, 0xFF),
|
|
new(0x23, 0x23, 0x00, 0xFF),
|
|
new(0x2F, 0x2B, 0x00, 0xFF),
|
|
new(0x37, 0x2F, 0x00, 0xFF),
|
|
new(0x43, 0x37, 0x00, 0xFF),
|
|
new(0x4B, 0x3B, 0x07, 0xFF),
|
|
new(0x57, 0x43, 0x07, 0xFF),
|
|
new(0x5F, 0x47, 0x07, 0xFF),
|
|
new(0x6B, 0x4B, 0x0B, 0xFF),
|
|
new(0x77, 0x53, 0x0F, 0xFF),
|
|
new(0x83, 0x57, 0x13, 0xFF),
|
|
new(0x8B, 0x5B, 0x13, 0xFF),
|
|
new(0x97, 0x5F, 0x1B, 0xFF),
|
|
new(0xA3, 0x63, 0x1F, 0xFF),
|
|
new(0xAF, 0x67, 0x23, 0xFF),
|
|
new(0x23, 0x13, 0x07, 0xFF),
|
|
new(0x2F, 0x17, 0x0B, 0xFF),
|
|
new(0x3B, 0x1F, 0x0F, 0xFF),
|
|
new(0x4B, 0x23, 0x13, 0xFF),
|
|
new(0x57, 0x2B, 0x17, 0xFF),
|
|
new(0x63, 0x2F, 0x1F, 0xFF),
|
|
new(0x73, 0x37, 0x23, 0xFF),
|
|
new(0x7F, 0x3B, 0x2B, 0xFF),
|
|
new(0x8F, 0x43, 0x33, 0xFF),
|
|
new(0x9F, 0x4F, 0x33, 0xFF),
|
|
new(0xAF, 0x63, 0x2F, 0xFF),
|
|
new(0xBF, 0x77, 0x2F, 0xFF),
|
|
new(0xCF, 0x8F, 0x2B, 0xFF),
|
|
new(0xDF, 0xAB, 0x27, 0xFF),
|
|
new(0xEF, 0xCB, 0x1F, 0xFF),
|
|
new(0xFF, 0xF3, 0x1B, 0xFF),
|
|
new(0x0B, 0x07, 0x00, 0xFF),
|
|
new(0x1B, 0x13, 0x00, 0xFF),
|
|
new(0x2B, 0x23, 0x0F, 0xFF),
|
|
new(0x37, 0x2B, 0x13, 0xFF),
|
|
new(0x47, 0x33, 0x1B, 0xFF),
|
|
new(0x53, 0x37, 0x23, 0xFF),
|
|
new(0x63, 0x3F, 0x2B, 0xFF),
|
|
new(0x6F, 0x47, 0x33, 0xFF),
|
|
new(0x7F, 0x53, 0x3F, 0xFF),
|
|
new(0x8B, 0x5F, 0x47, 0xFF),
|
|
new(0x9B, 0x6B, 0x53, 0xFF),
|
|
new(0xA7, 0x7B, 0x5F, 0xFF),
|
|
new(0xB7, 0x87, 0x6B, 0xFF),
|
|
new(0xC3, 0x93, 0x7B, 0xFF),
|
|
new(0xD3, 0xA3, 0x8B, 0xFF),
|
|
new(0xE3, 0xB3, 0x97, 0xFF),
|
|
new(0xAB, 0x8B, 0xA3, 0xFF),
|
|
new(0x9F, 0x7F, 0x97, 0xFF),
|
|
new(0x93, 0x73, 0x87, 0xFF),
|
|
new(0x8B, 0x67, 0x7B, 0xFF),
|
|
new(0x7F, 0x5B, 0x6F, 0xFF),
|
|
new(0x77, 0x53, 0x63, 0xFF),
|
|
new(0x6B, 0x4B, 0x57, 0xFF),
|
|
new(0x5F, 0x3F, 0x4B, 0xFF),
|
|
new(0x57, 0x37, 0x43, 0xFF),
|
|
new(0x4B, 0x2F, 0x37, 0xFF),
|
|
new(0x43, 0x27, 0x2F, 0xFF),
|
|
new(0x37, 0x1F, 0x23, 0xFF),
|
|
new(0x2B, 0x17, 0x1B, 0xFF),
|
|
new(0x23, 0x13, 0x13, 0xFF),
|
|
new(0x17, 0x0B, 0x0B, 0xFF),
|
|
new(0x0F, 0x07, 0x07, 0xFF),
|
|
new(0xBB, 0x73, 0x9F, 0xFF),
|
|
new(0xAF, 0x6B, 0x8F, 0xFF),
|
|
new(0xA3, 0x5F, 0x83, 0xFF),
|
|
new(0x97, 0x57, 0x77, 0xFF),
|
|
new(0x8B, 0x4F, 0x6B, 0xFF),
|
|
new(0x7F, 0x4B, 0x5F, 0xFF),
|
|
new(0x73, 0x43, 0x53, 0xFF),
|
|
new(0x6B, 0x3B, 0x4B, 0xFF),
|
|
new(0x5F, 0x33, 0x3F, 0xFF),
|
|
new(0x53, 0x2B, 0x37, 0xFF),
|
|
new(0x47, 0x23, 0x2B, 0xFF),
|
|
new(0x3B, 0x1F, 0x23, 0xFF),
|
|
new(0x2F, 0x17, 0x1B, 0xFF),
|
|
new(0x23, 0x13, 0x13, 0xFF),
|
|
new(0x17, 0x0B, 0x0B, 0xFF),
|
|
new(0x0F, 0x07, 0x07, 0xFF),
|
|
new(0xDB, 0xC3, 0xBB, 0xFF),
|
|
new(0xCB, 0xB3, 0xA7, 0xFF),
|
|
new(0xBF, 0xA3, 0x9B, 0xFF),
|
|
new(0xAF, 0x97, 0x8B, 0xFF),
|
|
new(0xA3, 0x87, 0x7B, 0xFF),
|
|
new(0x97, 0x7B, 0x6F, 0xFF),
|
|
new(0x87, 0x6F, 0x5F, 0xFF),
|
|
new(0x7B, 0x63, 0x53, 0xFF),
|
|
new(0x6B, 0x57, 0x47, 0xFF),
|
|
new(0x5F, 0x4B, 0x3B, 0xFF),
|
|
new(0x53, 0x3F, 0x33, 0xFF),
|
|
new(0x43, 0x33, 0x27, 0xFF),
|
|
new(0x37, 0x2B, 0x1F, 0xFF),
|
|
new(0x27, 0x1F, 0x17, 0xFF),
|
|
new(0x1B, 0x13, 0x0F, 0xFF),
|
|
new(0x0F, 0x0B, 0x07, 0xFF),
|
|
new(0x6F, 0x83, 0x7B, 0xFF),
|
|
new(0x67, 0x7B, 0x6F, 0xFF),
|
|
new(0x5F, 0x73, 0x67, 0xFF),
|
|
new(0x57, 0x6B, 0x5F, 0xFF),
|
|
new(0x4F, 0x63, 0x57, 0xFF),
|
|
new(0x47, 0x5B, 0x4F, 0xFF),
|
|
new(0x3F, 0x53, 0x47, 0xFF),
|
|
new(0x37, 0x4B, 0x3F, 0xFF),
|
|
new(0x2F, 0x43, 0x37, 0xFF),
|
|
new(0x2B, 0x3B, 0x2F, 0xFF),
|
|
new(0x23, 0x33, 0x27, 0xFF),
|
|
new(0x1F, 0x2B, 0x1F, 0xFF),
|
|
new(0x17, 0x23, 0x17, 0xFF),
|
|
new(0x0F, 0x1B, 0x13, 0xFF),
|
|
new(0x0B, 0x13, 0x0B, 0xFF),
|
|
new(0x07, 0x0B, 0x07, 0xFF),
|
|
new(0xFF, 0xF3, 0x1B, 0xFF),
|
|
new(0xEF, 0xDF, 0x17, 0xFF),
|
|
new(0xDB, 0xCB, 0x13, 0xFF),
|
|
new(0xCB, 0xB7, 0x0F, 0xFF),
|
|
new(0xBB, 0xA7, 0x0F, 0xFF),
|
|
new(0xAB, 0x97, 0x0B, 0xFF),
|
|
new(0x9B, 0x83, 0x07, 0xFF),
|
|
new(0x8B, 0x73, 0x07, 0xFF),
|
|
new(0x7B, 0x63, 0x07, 0xFF),
|
|
new(0x6B, 0x53, 0x00, 0xFF),
|
|
new(0x5B, 0x47, 0x00, 0xFF),
|
|
new(0x4B, 0x37, 0x00, 0xFF),
|
|
new(0x3B, 0x2B, 0x00, 0xFF),
|
|
new(0x2B, 0x1F, 0x00, 0xFF),
|
|
new(0x1B, 0x0F, 0x00, 0xFF),
|
|
new(0x0B, 0x07, 0x00, 0xFF),
|
|
new(0x00, 0x00, 0xFF, 0xFF),
|
|
new(0x0B, 0x0B, 0xEF, 0xFF),
|
|
new(0x13, 0x13, 0xDF, 0xFF),
|
|
new(0x1B, 0x1B, 0xCF, 0xFF),
|
|
new(0x23, 0x23, 0xBF, 0xFF),
|
|
new(0x2B, 0x2B, 0xAF, 0xFF),
|
|
new(0x2F, 0x2F, 0x9F, 0xFF),
|
|
new(0x2F, 0x2F, 0x8F, 0xFF),
|
|
new(0x2F, 0x2F, 0x7F, 0xFF),
|
|
new(0x2F, 0x2F, 0x6F, 0xFF),
|
|
new(0x2F, 0x2F, 0x5F, 0xFF),
|
|
new(0x2B, 0x2B, 0x4F, 0xFF),
|
|
new(0x23, 0x23, 0x3F, 0xFF),
|
|
new(0x1B, 0x1B, 0x2F, 0xFF),
|
|
new(0x13, 0x13, 0x1F, 0xFF),
|
|
new(0x0B, 0x0B, 0x0F, 0xFF),
|
|
new(0x2B, 0x00, 0x00, 0xFF),
|
|
new(0x3B, 0x00, 0x00, 0xFF),
|
|
new(0x4B, 0x07, 0x00, 0xFF),
|
|
new(0x5F, 0x07, 0x00, 0xFF),
|
|
new(0x6F, 0x0F, 0x00, 0xFF),
|
|
new(0x7F, 0x17, 0x07, 0xFF),
|
|
new(0x93, 0x1F, 0x07, 0xFF),
|
|
new(0xA3, 0x27, 0x0B, 0xFF),
|
|
new(0xB7, 0x33, 0x0F, 0xFF),
|
|
new(0xC3, 0x4B, 0x1B, 0xFF),
|
|
new(0xCF, 0x63, 0x2B, 0xFF),
|
|
new(0xDB, 0x7F, 0x3B, 0xFF),
|
|
new(0xE3, 0x97, 0x4F, 0xFF),
|
|
new(0xE7, 0xAB, 0x5F, 0xFF),
|
|
new(0xEF, 0xBF, 0x77, 0xFF),
|
|
new(0xF7, 0xD3, 0x8B, 0xFF),
|
|
new(0xA7, 0x7B, 0x3B, 0xFF),
|
|
new(0xB7, 0x9B, 0x37, 0xFF),
|
|
new(0xC7, 0xC3, 0x37, 0xFF),
|
|
new(0xE7, 0xE3, 0x57, 0xFF),
|
|
new(0x7F, 0xBF, 0xFF, 0xFF),
|
|
new(0xAB, 0xE7, 0xFF, 0xFF),
|
|
new(0xD7, 0xFF, 0xFF, 0xFF),
|
|
new(0x67, 0x00, 0x00, 0xFF),
|
|
new(0x8B, 0x00, 0x00, 0xFF),
|
|
new(0xB3, 0x00, 0x00, 0xFF),
|
|
new(0xD7, 0x00, 0x00, 0xFF),
|
|
new(0xFF, 0x00, 0x00, 0xFF),
|
|
new(0xFF, 0xF3, 0x93, 0xFF),
|
|
new(0xFF, 0xF7, 0xC7, 0xFF),
|
|
new(0xFF, 0xFF, 0xFF, 0xFF),
|
|
new(0x9F, 0x5B, 0x53, 0xFF)
|
|
}
|
|
};
|
|
}
|
|
|
|
return s_QuakePalette;
|
|
}
|
|
}
|
|
}
|
|
|
|
public readonly struct WadEntry
|
|
{
|
|
public int Address { get; init; }
|
|
public int Size { get; init; }
|
|
public char Type { get; init; }
|
|
public string Name { get; init; }
|
|
}
|
|
|
|
public record WadFile
|
|
{
|
|
public List<WadEntry> Entries { get; init; }
|
|
}
|
|
} |