start of demo, palette type
This commit is contained in:
		
							
								
								
									
										101
									
								
								pal_from_spr.p8
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								pal_from_spr.p8
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| pico-8 cartridge // http://www.pico-8.com | ||||
| version 41 | ||||
| __lua__ | ||||
| -- sprite-sampled palette | ||||
| -- kistaro@gmail.com | ||||
|  | ||||
| function _init() | ||||
|  -- lock top 16 rows to default palette | ||||
|  pal({[0]=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}, 2) | ||||
|  poke(0x5f5f, 0x10) | ||||
|  poke2(0x5f70, 0xffff) | ||||
| end | ||||
|  | ||||
| function _update() | ||||
| end | ||||
|  | ||||
| function _draw() | ||||
|  cls() | ||||
|  draw_hud() | ||||
|  draw_bars() | ||||
| end | ||||
|  | ||||
| function draw_hud() | ||||
| end | ||||
|  | ||||
| function draw_bars() | ||||
|  for i=0,15 do | ||||
|   local i7 = i * 7 | ||||
|   rectfill(0,16+i7,128,i7+22,i) | ||||
|  end | ||||
| end | ||||
| -->8 | ||||
| -- palette structure | ||||
|  | ||||
| palette = { | ||||
|  -- cols: table. identical | ||||
|  --       format to table-type | ||||
|  --       pal call | ||||
|   | ||||
|  --   tr: transparency table. | ||||
|  --       keys: [0]..[15] | ||||
|  --         (color indexes) | ||||
|  --       vals: true/false/nil | ||||
|  --         for transparency of | ||||
|  --         that color. false | ||||
|  --         sets opaque, nil | ||||
|  --         means "do not set". | ||||
|  --       tables with no absent | ||||
|  --       values can be compiled | ||||
|  --       for faster do_palt. | ||||
|  | ||||
|  -- cpl_tr: compiled tr. set by | ||||
|  --       compile_palt iff all | ||||
|  --       tr values in range | ||||
|  --       are nonnil. do_palt | ||||
|  --       is faster this way | ||||
| } | ||||
| palette_mt = {__index=palette} | ||||
|  | ||||
| function palette.new(x) | ||||
|  x = x or {} | ||||
|  if (not x.cols) x.cols = {} | ||||
|  if (not x.tr) x.tr = {} | ||||
|  setmetatable(x, palette_mt) | ||||
| end | ||||
|  | ||||
| function palette:do_pal(p) | ||||
|  pal(self.cols, p) | ||||
| end | ||||
|  | ||||
| function palette:do_palt() | ||||
|  if (self.cpl_tr) return palt(self.cpl_tr) | ||||
|  local tr = self.tr | ||||
|  for i=0,15 do | ||||
|   if (tr[i] ~= nil) palt(i, tr[i]) | ||||
|  end | ||||
| end | ||||
|  | ||||
| function palette:do_both(p) | ||||
|  self:do_palt() | ||||
|  self:do_pal(p) | ||||
| end | ||||
|  | ||||
| function palette:compile_palt() | ||||
|  self.cpl_tr = nil | ||||
|  local bits, tr = 0, self.tr | ||||
|  for i = 15,0,-1 do | ||||
|   if (tr[i] == nil) return | ||||
|   bits <<= 1 | ||||
|   if (tr[i]) bits += 1 | ||||
|  end | ||||
|  self.cpl_tr = bits | ||||
|  return bits | ||||
| end | ||||
| __gfx__ | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00077000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
| 00700700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | ||||
		Reference in New Issue
	
	Block a user