โ The Big Picture
The Intellivision uses a chip called the STIC (Standard Television Interface Circuit) to draw graphics. It can display two types of visuals at the same time:
๐ผ๏ธ
Background Tiles
A fixed 20 ร 12 grid of 8ร8 pixel tiles that fills the screen. You place tiles by writing values into a region of memory called the BACKTAB.
๐พ
MOB Sprites
Up to 8 Moving Objects that float freely over the background at any pixel position. MOBs are perfect for players, enemies, and bullets.
โก GRAM โ Your Art Canvas
GRAM (Graphics RAM) is a bank of 64 custom 8ร8 pixel cards, numbered 0 โ 63. You draw your pixel art here and then reference these cards from tiles or MOBs. The 64-slot budget grid in the editor shows you exactly which slots you've used.
๐ก GROM (built-in ROM) holds 64 pre-drawn cards (the Intellivision font). GRAM lets you replace or add your own.
โข Drawing Pixels โ BITMAP
In IntyBASIC, each row of pixels is one BITMAP line with 8 characters:
X โ foreground pixel (shows the sprite's color)
. โ background pixel (transparent on MOBs; background color on tiles)
player:
BITMAP "..XXXX.." ' row 0 โ top of head
BITMAP ".XXXXXX." ' row 1
BITMAP "XX....XX" ' row 2
BITMAP "XXXXXXXX" ' row 3
BITMAP "XX....XX" ' row 4
BITMAP ".XXXXXX." ' row 5
BITMAP "..XXXX.." ' row 6
BITMAP "........" ' row 7 โ empty
The Sprite Editor generates this code for you automatically. You just draw with your mouse!
โฃ Loading Art into GRAM โ DEFINE
Before the STIC can display your sprite, you must copy it from your program's data into GRAM:
DEFINE slot, numCards, label
DEFINE 0, 1, player ' copy player into slot 0 (one 8ร8 card)
DEFINE 5, 2, tall_guy ' copy tall_guy into slots 5โ6 (two cards = 8ร16)
DEFINE 10, 4, boss ' copy boss into slots 10โ13 (four cards = 16ร16)
The editor writes the correct DEFINE line for you in the output panel, using the GRAM Slot you assign in the properties panel.
โค The 3 Use Modes
MOB Sprite
A hardware sprite that moves freely anywhere on screen. Use the SPRITE command to place it:
SPRITE n, (x + $200), y, (slot * 8 + color)
' Example: MOB 0 at (50,60), slot 2, White
SPRITE 0, (50 + $200), 60, (2 * 8 + 7)
- n โ which MOB (0โ7)
- x + $200 โ X position;
$200 makes it visible
- slot * 8 + color โ which GRAM card and which of the 8 primary colors
One color only. All X pixels show that color; . pixels are transparent.
Color Stack Tile
A background tile placed in the 20ร12 grid. Uses a shared "color stack" of up to 4 background colors that advance as tiles are rendered left-to-right, top-to-bottom.
BACKTAB(row, col) = fgColor + slot * 8 + $800
' Slot 3, foreground = Green (5)
BACKTAB(2, 4) = 5 + 3 * 8 + $800
- fgColor โ foreground color 0โ7 for this tile
- $800 โ GRAM flag (tells STIC to use GRAM, not GROM)
- + $2000 โ "Advance" bit: shifts to the next color stack entry
Best for large colorful backgrounds. Background color comes from the stack, not per-tile.
FG/BG Tile
A background tile where each card can have its own foreground and background color, set via STIC color registers. More flexible than Color Stack but requires more setup.
BACKTAB(row, col) = slot * 8 + $C00
' Set per-row color registers before drawing
' $C00 = GRAM flag ($800) + FG/BG mode flag ($400)
- Foreground: 0โ7 (primary colors)
- Background: 0โ15 (all 16 colors)
- Colors are set via STIC register writes, not BACKTAB bits
Powerful for status bars, score displays, and anything needing exact per-tile coloring.
โฅ Wide & Tall Sprites โ Using Multiple Cards
8ร8
1 GRAM slot
One DEFINE, one label, 8 rows of BITMAP
8ร16
2 GRAM slots
One label, 16 rows of BITMAP.
DEFINE slot, 2, name
16ร8
2 GRAM slots
Two side-by-side MOBs.
name_0 left, name_1 right
16ร16
4 GRAM slots
Four MOBs in a 2ร2 grid.
name_0โฆname_3
For 16-wide sprites you need multiple SPRITE commands, one per MOB, placed at x and x+8.
โฆ The 16 Intellivision Colors
MOBs and Color Stack tiles use colors 0โ7 (primary). FG/BG tiles and backgrounds can also use 8โ15 (pastel/extended).
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BlackBlueRedTan
Dk.GreenGreenYellowWhite
GreyCyanOrangeBrown
PinkLt.BlueYel-GreenPurple
โง Hello World โ Your First Sprite
Here's the minimal IntyBASIC code to put a white box on screen as a MOB:
' 1. Define the BITMAP data
box:
BITMAP "XXXXXXXX"
BITMAP "X......X"
BITMAP "X......X"
BITMAP "X......X"
BITMAP "X......X"
BITMAP "X......X"
BITMAP "X......X"
BITMAP "XXXXXXXX"
' 2. Load into GRAM slot 0
DEFINE 0, 1, box
' 3. Place MOB 0 at screen position (50, 50), White (color 7)
SPRITE 0, (50 + $200), 50, (0 * 8 + 7)
' 4. Start the game loop
DO
WAIT ' wait for video frame
LOOP
โ
Draw your design in the editor above, copy the generated code from the Output panel, and paste it directly into your IntyBASIC source file.
โจ Recommended Workflow
- Choose a size โ 8ร8 for simple sprites, 8ร16 for taller characters, 16ร16 for large bosses.
- Draw your pixel art โ Left-click to draw foreground pixels; right-click to erase.
- Assign a GRAM slot โ Enter a slot number in the Sprite Properties panel. Check the GRAM budget grid to avoid conflicts.
- Pick a Use Mode โ MOB for moving objects, Color Stack for background tiles, FG/BG for tiles needing two distinct colors.
- Set the color โ Choose the MOB color or tile foreground color in the properties panel.
- Copy the output โ Click Copy Bitmap or use the Output panel. Paste into your
.bas file.
- Add more sprites โ Use Add in the Sprites panel. Each gets its own GRAM slot automatically.
- Save your work โ Export Project saves a
.json file you can reload later.