Unlock full RGB in classic mode

This commit is contained in:
Alessandro Proto 2023-03-10 15:44:37 +01:00
parent b7a956bfd6
commit 6d4161e251
4 changed files with 10 additions and 331 deletions

View file

@ -1,321 +0,0 @@
// This file is part of Capy64 - https://github.com/Ale32bit/Capy64
// Copyright 2023 Alessandro "AlexDevs" Proto
//
// Licensed under the Apache License, Version 2.0 (the "License").
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using Microsoft.Xna.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Capy64.Core;
public class ColorPalette
{
public static int GetIndex(int r, int g, int b)
{
r /= 51;
g /= 51;
b /= 51;
return 16 + (36 * r) + (6 * g) + b;
}
public static int GetIndex(Color color)
{
return GetIndex(color.R, color.G, color.B);
}
public static int GetIndex(uint packed)
{
var b = (byte)(packed & 0xff);
var g = (byte)((packed >> 8) & 0xff);
var r = (byte)((packed >> 16) & 0xff);
return GetIndex(r, g, b);
}
public static uint GetColor(int r, int g, int b)
{
return Palette[GetIndex(r, g, b)];
}
public static uint GetColor(Color color)
{
return Palette[GetIndex(color)];
}
public static uint GetColor(uint packed)
{
return Palette[GetIndex(packed)];
}
public static readonly uint[] Palette = new uint[] {
0x000000,
0x800000,
0x008000,
0x808000,
0x000080,
0x800080,
0x008080,
0xC0C0C0,
0x808080,
0xFF0000,
0x00FF00,
0xFFFF00,
0x0000FF,
0xFF00FF,
0x00FFFF,
0xFFFFFF,
0x000000,
0x00005F,
0x000087,
0x0000AF,
0x0000D7,
0x0000FF,
0x005F00,
0x005F5F,
0x005F87,
0x005FAF,
0x005FD7,
0x005FFF,
0x008700,
0x00875F,
0x008787,
0x0087AF,
0x0087D7,
0x0087FF,
0x00AF00,
0x00AF5F,
0x00AF87,
0x00AFAF,
0x00AFD7,
0x00AFFF,
0x00D700,
0x00D75F,
0x00D787,
0x00D7AF,
0x00D7D7,
0x00D7FF,
0x00FF00,
0x00FF5F,
0x00FF87,
0x00FFAF,
0x00FFD7,
0x00FFFF,
0x5F0000,
0x5F005F,
0x5F0087,
0x5F00AF,
0x5F00D7,
0x5F00FF,
0x5F5F00,
0x5F5F5F,
0x5F5F87,
0x5F5FAF,
0x5F5FD7,
0x5F5FFF,
0x5F8700,
0x5F875F,
0x5F8787,
0x5F87AF,
0x5F87D7,
0x5F87FF,
0x5FAF00,
0x5FAF5F,
0x5FAF87,
0x5FAFAF,
0x5FAFD7,
0x5FAFFF,
0x5FD700,
0x5FD75F,
0x5FD787,
0x5FD7AF,
0x5FD7D7,
0x5FD7FF,
0x5FFF00,
0x5FFF5F,
0x5FFF87,
0x5FFFAF,
0x5FFFD7,
0x5FFFFF,
0x870000,
0x87005F,
0x870087,
0x8700AF,
0x8700D7,
0x8700FF,
0x875F00,
0x875F5F,
0x875F87,
0x875FAF,
0x875FD7,
0x875FFF,
0x878700,
0x87875F,
0x878787,
0x8787AF,
0x8787D7,
0x8787FF,
0x87AF00,
0x87AF5F,
0x87AF87,
0x87AFAF,
0x87AFD7,
0x87AFFF,
0x87D700,
0x87D75F,
0x87D787,
0x87D7AF,
0x87D7D7,
0x87D7FF,
0x87FF00,
0x87FF5F,
0x87FF87,
0x87FFAF,
0x87FFD7,
0x87FFFF,
0xAF0000,
0xAF005F,
0xAF0087,
0xAF00AF,
0xAF00D7,
0xAF00FF,
0xAF5F00,
0xAF5F5F,
0xAF5F87,
0xAF5FAF,
0xAF5FD7,
0xAF5FFF,
0xAF8700,
0xAF875F,
0xAF8787,
0xAF87AF,
0xAF87D7,
0xAF87FF,
0xAFAF00,
0xAFAF5F,
0xAFAF87,
0xAFAFAF,
0xAFAFD7,
0xAFAFFF,
0xAFD700,
0xAFD75F,
0xAFD787,
0xAFD7AF,
0xAFD7D7,
0xAFD7FF,
0xAFFF00,
0xAFFF5F,
0xAFFF87,
0xAFFFAF,
0xAFFFD7,
0xAFFFFF,
0xD70000,
0xD7005F,
0xD70087,
0xD700AF,
0xD700D7,
0xD700FF,
0xD75F00,
0xD75F5F,
0xD75F87,
0xD75FAF,
0xD75FD7,
0xD75FFF,
0xD78700,
0xD7875F,
0xD78787,
0xD787AF,
0xD787D7,
0xD787FF,
0xD7AF00,
0xD7AF5F,
0xD7AF87,
0xD7AFAF,
0xD7AFD7,
0xD7AFFF,
0xD7D700,
0xD7D75F,
0xD7D787,
0xD7D7AF,
0xD7D7D7,
0xD7D7FF,
0xD7FF00,
0xD7FF5F,
0xD7FF87,
0xD7FFAF,
0xD7FFD7,
0xD7FFFF,
0xFF0000,
0xFF005F,
0xFF0087,
0xFF00AF,
0xFF00D7,
0xFF00FF,
0xFF5F00,
0xFF5F5F,
0xFF5F87,
0xFF5FAF,
0xFF5FD7,
0xFF5FFF,
0xFF8700,
0xFF875F,
0xFF8787,
0xFF87AF,
0xFF87D7,
0xFF87FF,
0xFFAF00,
0xFFAF5F,
0xFFAF87,
0xFFAFAF,
0xFFAFD7,
0xFFAFFF,
0xFFD700,
0xFFD75F,
0xFFD787,
0xFFD7AF,
0xFFD7D7,
0xFFD7FF,
0xFFFF00,
0xFFFF5F,
0xFFFF87,
0xFFFFAF,
0xFFFFD7,
0xFFFFFF,
0x080808,
0x121212,
0x1C1C1C,
0x262626,
0x303030,
0x3A3A3A,
0x444444,
0x4E4E4E,
0x585858,
0x626262,
0x6C6C6C,
0x767676,
0x808080,
0x8A8A8A,
0x949494,
0x9E9E9E,
0xA8A8A8,
0xB2B2B2,
0xBCBCBC,
0xC6C6C6,
0xD0D0D0,
0xDADADA,
0xE4E4E4,
0xEEEEEE,
};
}

View file

@ -150,8 +150,8 @@ public class GPU : IComponent
public static void GetColor(uint c, out byte r, out byte g, out byte b) public static void GetColor(uint c, out byte r, out byte g, out byte b)
{ {
if (_game.EngineMode == EngineMode.Classic) /*if (_game.EngineMode == EngineMode.Classic)
c = ColorPalette.GetColor(c); c = ColorPalette.GetColor(c);*/
Utils.UnpackRGB(c, out r, out g, out b); Utils.UnpackRGB(c, out r, out g, out b);
} }
@ -512,7 +512,7 @@ public class GPU : IComponent
Task.Run(() => Task.Run(() =>
{ {
if (_game.EngineMode == EngineMode.Classic) /*if (_game.EngineMode == EngineMode.Classic)
{ {
for (int i = 0; i < data.Length; i++) for (int i = 0; i < data.Length; i++)
{ {
@ -535,7 +535,7 @@ public class GPU : IComponent
data[i] = value; data[i] = value;
} }
} }*/
var buffer = new GPUBufferMeta.GPUBuffer var buffer = new GPUBufferMeta.GPUBuffer
{ {

View file

@ -177,8 +177,8 @@ internal class Term : IComponent
public static void GetColor(uint c, out byte r, out byte g, out byte b) public static void GetColor(uint c, out byte r, out byte g, out byte b)
{ {
if (_game.EngineMode == EngineMode.Classic) /*if (_game.EngineMode == EngineMode.Classic)
c = ColorPalette.GetColor(c); c = ColorPalette.GetColor(c);*/
UnpackRGB(c, out r, out g, out b); UnpackRGB(c, out r, out g, out b);
} }
@ -442,7 +442,7 @@ internal class Term : IComponent
r = (byte)L.CheckNumber(1); r = (byte)L.CheckNumber(1);
g = (byte)L.CheckNumber(2); g = (byte)L.CheckNumber(2);
b = (byte)L.CheckNumber(3); b = (byte)L.CheckNumber(3);
UnpackRGB(ColorPalette.GetColor(r, g, b), out r, out g, out b); //UnpackRGB(ColorPalette.GetColor(r, g, b), out r, out g, out b);
} }
// packed RGB value // packed RGB value
@ -484,7 +484,7 @@ internal class Term : IComponent
r = (byte)L.CheckNumber(1); r = (byte)L.CheckNumber(1);
g = (byte)L.CheckNumber(2); g = (byte)L.CheckNumber(2);
b = (byte)L.CheckNumber(3); b = (byte)L.CheckNumber(3);
UnpackRGB(ColorPalette.GetColor(r, g, b), out r, out g, out b); //UnpackRGB(ColorPalette.GetColor(r, g, b), out r, out g, out b);
} }
// packed RGB value // packed RGB value
else if (argsn == 1) else if (argsn == 1)

View file

@ -80,8 +80,8 @@ public class GPUBufferMeta : IComponent
public static uint GetColor(uint color) public static uint GetColor(uint color)
{ {
if (_game.EngineMode == EngineMode.Classic) /*if (_game.EngineMode == EngineMode.Classic)
return ColorPalette.GetColor(color); return ColorPalette.GetColor(color);*/
return color; return color;
} }