Цветовая палитра

Стандартной цветовой палитрой 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

results matching ""

    No results matching ""