Цветовая палитра
Стандартной цветовой палитрой TIC-80 является DB16
:
Имя цвета | Индекс | Шестнадцатеричное значение |
---|---|---|
Чёрный | 0 | 140C1C |
Тёмно-красный | 1 | 442434 |
Тёмно-синий | 2 | 30346D |
Тёмно-серый | 3 | 4E4A4F |
Коричневый | 4 | 854C30 |
Тёмно-зеленый | 5 | 346524 |
Красный | 6 | D04648 |
Светло-серый | 7 | 757161 |
Светло-синий | 8 | 597DCE |
Оранжевый | 9 | D27D2C |
Сине-серый | 10 | 8595A1 |
Светло-зелёный | 11 | 6DAA2C |
Персиковый | 12 | D2AA99 |
Голубой | 13 | 6DC2CA |
Жёлтый | 14 | DAD45E |
Белый | 15 | DEEED6 |
Вы можете настроить палитру с помощью команды poke
Вы можете устанавливать палитру настраивая цвета в редакторе спрайтов перемещая ползунки, либо вставив строку, содержащую цвета в шестнадцатеричном виде.
Например такую: 00000057420040318d5050508b542955a0498839327878788b3f967869c49f9f9f94e089b8696267b6bdbfce72ffffff
Пример:
Запустить или скачать картридж примера.
-- title: palette
-- author: Nesbox
-- desc: how to switch palatte in runtime demo
-- script: lua
-- input: gamepad
local W=240
local H=136
-- palette address
local ADDR=0x3FC0*2
local PALETTES = {
{name="DB16", data="deeed6dad45e6dc2cad2aa996daa2c8595a1d27d2c597dce757161d04648346524854c304e4a4e30346d442434140c1c"},
{name="PICO-8", data="fff1e8fff02429adffffccaa00e756c2c3c7ffa300ff77a883769cff004d008751ab52365f574f1d2b537e2553000000"},
{name="ARNE16", data="fffffff7e26bb2dcefe06f8ba3ce279d9d9deb893131a2f22f484ebe263344891aa46422493c2b0057841b2632000000"},
{name="EDG16", data="ffffffffe7622ce8f4e4a67263c64dafbfd2fb922b0484d14f6781e53b44327345b86f509e2835743f393f2832193d3f"},
{name="A64", data="ede6c8bbc8408fbfd5cd93739ccc479cabb18385cf7655a2808078b1486350945092562b485454313a914c3435000000"},
{name="C64", data="ffffffbfce7267b6bdb8696294e0899f9f9f7869c48b3f9678787888393255a0498b542950505040318d574200000000"},
}
local t=0
local index=1
-- update palette
function updpal()
local pal=PALETTES[index].data
for i=1,#pal do
poke4(ADDR+#pal-i,tonumber(pal:sub(i,i),16))
end
end
updpal()
function TIC()
-- handle input
if btnp(0,30,6) and index>1 then
index=index-1
updpal()
end
if btnp(1,30,6) and index<#PALETTES then
index=index+1
updpal()
end
if btnp(4)or btnp(5)then exit()end
-- draw
cls(15)
print("SELECT PALETTE",6,6,0)
for i,v in pairs(PALETTES) do
print(v.name,12,12+i*6,0)
end
print(">",6+(t//15%2),12+index*6,0)
local S=16
-- draw palette
for i=0,15-1 do
for j=0,S-1 do
line(W-j-i*S,H,W,H-j-i*S,i)
end
end
t=t+1
end
Запустить или скачать картридж примера.
-- title: palette
-- author: Nesbox
-- desc: how to switch palatte in runtime demo
-- script: moon
-- input: gamepad
W=240
H=136
-- palette address
ADDR=0x3FC0*2
PALETTES = {
{name:"DB16", data:"deeed6dad45e6dc2cad2aa996daa2c8595a1d27d2c597dce757161d04648346524854c304e4a4e30346d442434140c1c"},
{name:"PICO-8", data:"fff1e8fff02429adffffccaa00e756c2c3c7ffa300ff77a883769cff004d008751ab52365f574f1d2b537e2553000000"},
{name:"ARNE16", data:"fffffff7e26bb2dcefe06f8ba3ce279d9d9deb893131a2f22f484ebe263344891aa46422493c2b0057841b2632000000"},
{name:"EDG16", data:"ffffffffe7622ce8f4e4a67263c64dafbfd2fb922b0484d14f6781e53b44327345b86f509e2835743f393f2832193d3f"},
{name:"A64", data:"ede6c8bbc8408fbfd5cd93739ccc479cabb18385cf7655a2808078b1486350945092562b485454313a914c3435000000"},
{name:"C64", data:"ffffffbfce7267b6bdb8696294e0899f9f9f7869c48b3f9678787888393255a0498b542950505040318d574200000000"},
}
t=0
index=1
-- update palette
updpal=->
pal=PALETTES[index].data
for i=1,#pal
poke4(ADDR+#pal-i,tonumber(pal\sub(i,i),16))
updpal()
export TIC=->
-- handle input
if btnp(0,30,6) and index>1
index-=1
updpal()
if btnp(1,30,6) and index<#PALETTES
index+=1
updpal()
if btnp(4) or btnp(5) then exit()
-- draw
cls 15
print "SELECT PALETTE",6,6,0
for i,v in pairs(PALETTES)
print v.name,12,12+i*6,0
print ">",6+(t//15%2),12+index*6,0
S=16
-- draw palette
for i=0,15-1
for j=0,S-1
line W-j-i*S,H,W,H-j-i*S,i
t=t+1