Bits Per Pixel - nesbox/TIC-80 GitHub Wiki
BPP (Bits Per Pixel)
BPP is a setting in the TIC-80 Sprite Editor advanced mode. Lowering the number of Bits Per Pixel reduces the number of colors but allows to store more sprites and tiles.
BPP Values:
- 4 Bit - Palette of 16 colors (including transparency), 256 sprites and 256 tiles. Default value.
- 2 Bit - Palette of 4 colors (including transparency), 512 sprites and 512 tiles.
- 1 Bit - Palette of 2 colors (including transparency), 1024 sprites and 1024 tiles.
Note: Transparency is not required. Set the spr()
colorkey to -1 if you don't need transparency to use all available colors.
Usage Example
If you want to use 1 BPP setting for a sprite, first define functions to set BPP:
function set1bpp()
poke4(2 * 0x3ffc, 8) -- 0b1000
end
function set4bpp()
poke4(2 * 0x3ffc, 2) -- 0b0010
end
Call the 1 BPP function, draw your sprites, reset the drawing to 4 BPP when you are done with 1 BPP:
set1bpp()
spr(1217,x,y,0)
set4bpp()
This also works with font(); you can use 1bpp mode to draw your spritesheet, then simply call set1bpp() before calling font().
Example Cart
Find the example cart with the sprites on tic80.com. This is the cart used to make above GIF.
-- script: lua
x1 = 20
x2 = 95
x4 = 170
y = 50
function set1bpp() -- Function to use 1 BPP (bit per pixel) sprite mode
poke4(2 * 0x3ffc, 8)
end
function set2bpp() -- Function to use 2 BPP sprite mode
poke4(2 * 0x3ffc, 4)
end
function set4bpp() -- Function to use 4 BPP sprite mode
poke4(2 * 0x3ffc, 2)
end
function TIC()
cls(13)
-- Set to 1 BPP mode and display sprite
set1bpp()
spr(44, x1, y, 0, 3, 0, 0, 2, 2)
print("1 BPP", x1, y - 10) -- Display text label above the sprite
-- Set to 2 BPP mode and display sprite
set2bpp()
spr(13, x2, y, 0, 3, 0, 0, 2, 2)
print("2 BPP", x2, y - 10)
-- Set to 4 BPP mode and display sprite
set4bpp()
spr(1, x4, y, 14, 3, 0, 0, 2, 2)
print("4 BPP", x4, y - 10)
end
NOTE
- Changing to lower BPP values will result in stretched out sprites.
- Changing to higher BPP values will result in Corrupted sprites.
- When pasting a sprite created with a different BPP value, the same corruptions will occur for higher and lower values respectively
Address List
Use this address VRAM: 0x3FFC
- Blit Segment
- Required using
poke()
andpoke4()
List:
0000 SYS GFX
0001 FONT
0010 4bpp BG Page 0
0011 4bpp FG Page 0
0100 2bpp BG Page 0
0101 2bpp BG Page 1
0110 2bpp FG Page 0
0111 2bpp FG Page 1
1000 1bpp BG Page 0
1001 1bpp BG Page 1
1010 1bpp BG Page 2
1011 1bpp BG Page 3
1100 1bpp FG Page 0
1101 1bpp FG Page 1
1110 1bpp FG Page 2
1111 1bpp FG Page 3