Click to enable keyboard input

Attn, the app is on early development and isn't stable.

If you found a bug or have any ideas don't hesitate to contact me or post comments.


Public Collection: Games made with TIC computer

TIC - tiny computer v0.14.0 dev

(c) Copyright 2017 Nesbox
Author: Vadim Grigoruk //
Bug tracker:



    TIC is a tiny computer where you can make, play and share tiny games. 
    There are built-in tools for development: code, sprites, maps, sound 
    editors and the command line, which is enough to create a mini retro game. 
    At the exit you will get a cartridge file, which can be stored 
    and played on the website. Also, the game can packed into a player 
    that works on all popular platforms and distribute as you wish. 
    To make a retro styled game the whole process of creation takes 
    place under some technical limitations: 240x136 pixels display, 
    16 color palette, 256 8x8 color sprites, 4 channel sound and etc.


    Display     240x136 pixels, 16 colors palette
    Input       2 gamepads with 6 buttons
    Sprites     256 8x8 foreground sprites and 256 8x8 background tiles
    Map         240x136 cells, 1920x1088 pixels
    Sound       4 channels (select square, triangle or noise)
    Code        64KB of Lua script


    load <cart>
    save <cart>
    del <file>
    get <file>
    export <name> [html native]


    print   text [x y [color] ]
    cls     [color]
    pix     x y [color] -> color
    line    x0 y0 x1 y1 color
    rect    x y w h color
    rectb   x y w h color
    spr     id x y [colorkey [scale [flip:0..3 [rotate:0..3] ] ] ]
    btn     [id: 0..5 8..13] -> pressed
    btnp    [id: 0..5 8..13 [hold period] ] -> pressed (but wasn't pressed in previous frame)
    sfx     [id [note [channel [volume:0..15 [speed:-4..3] ] ] ] ]
    map     [cellx celly cellw cellh [sx sy [colorkey] ] ]
    mget    cellx celly -> val
    mset    cellx celly val
    peek    addr -> val
    poke    addr val
    peek4   addr -> val
    poke4   addr val
    memcpy  dst src size
    memset  dst val size
    pmem    index:0..16 [val] -> val
    trace   msg
    time    -> ticks from a game start


    ESC                     switch console/editor
    ALT+~                   show console
    ALT+1/F1                show code editor
    ALT+2/F2                show sprite editor
    ALT+3/F3                show map editor
    ALT+4/F4                show sfx editor
    ALT+5/F5                show music editor
    F11/ALT+ENTER           fullscreen/window mode
    CTRL+R/ENTER            run current project
    CTRL+X/C/V              cut/copy/paste in code and sprite editors
    CTRL+S                  save cart
    ARROWS                  navigate in sprite editor, move map in map editor
    CTRL                    show spritesheet in map editor
    CTRL+Z/y                undo/redo changes
    CTRL+F                  find in code editor
    CTRL+G                  go to line in code editor
    CTRL+O                  show code outline


    TIC is developed with pure C language and with SDL, LUA libraries.
    That's why all have to work on all popular platforms without problems:

    HMTL5               done
    Windows             done
    Windows 10 UWP      done
    Linux 32/64bit      done
    Android             done
    MacOSX              done
    Raspberry Pi


    version 0.14.0

    - added Mac OS X support
    - [github] TIC crash when reach 65536 char limit #1
    - [github] pbtn clarification #2
      btnp [ id [ hold period ] ] -> pressed, it will return true every 'period' ticks if button is held for 'hold' ticks
    - added crossplatform experimantal tool 'TIC bundler' to build HTML and native (win/linux/macos) games
    - added 'demo' command to the console
    - fixed some crashes

    version 0.0.13

    - reduced app exe size on Windows (from 6.1MB to 1.8MB)
    - sound registers depend of frequency instead period 
      (here you can read how to calculate frequency for note
    - you can change audio channel wave form in runtime (see how to do it in demo_sound.tic)
    - new 64K RAM layout (use 'ram' command in the console to learn more)

        64K RAM layout
        3FF0-PALETTE MAP
        3FF8-(reserved for future use)
        FFD0-(reserved for future use)

    - persistent memory resized to 16 integers (64 bytes according to the new 64K RAM)
    - removed 'sndreg' api function, you have to set/get sound registers values by 0xFF80 addr in the RAM
    - added 'time' api function (returns how many tics have passed since the game started)
    - create issue tracker on GitHub (
    - removed all compilation warnings
    - fixed some crashes

    version 0.0.12

    - added 'sndreg' api function to have low level access to the sound synthesis: 
      TIC has 4 sound channels each with 3 registers (period/volume/timbre) 
      and you can dinamically generate any music or sfx in runtime
      (I'm getting ready to implement music tracker...)
    - added 'btnp' api function, returns true if button is pressed and wasn't pressed in previous frame
    - added 'exit' api function
    - added demo 'demo_palette.tic' where you can change palette (DB16, pico8, A64, C64, arne16, edg16)
    - added demo 'demo_sound.tic' to demostrate how sound registers work

    version 0.0.11

    - export native Linux build (use 'export <name> native' command)
    - added flip/rotate/del buttons to the Sprite Editor
    - open .tic files directly from OS
    - tab autocomplete in the Console
    - scroll in the Console
    - added CLS command to clear Console screen
    - 'export' works without saving on local FS (usage: export <name> [html native])
    - middle-click to select color in Sprite Editor
    - fixed Code Editor history desync
    - fixed Console text shifting in Linux
    - fixed Linux window icon

    version 0.0.10

    - added persistent memory API (use pmem func to load/save 64 int values)
    - added Select, Move and Bucket to Sprite Editor
    - added canvas resizing to Sprite Editor
    - added optional params [volume] and [speed] to sfx api
    - 'pix' API func returns color
    - middle click to select sprite in Map Editor
    - fixed search direction in Code Editor
    - fixed lua log10 bug on uwp and android
    - created public collection with TIC games on

    version 0.0.9

    - added CTRL+O to show Code Outline
    - added dynamic preview to Find and Goto Line in code editor
    - disabled gyroscope in android by default

    version 0.0.8

    - added rotate param to the SPR function values [0,1,2,3] means 0,90,180,270 degrees
    - added CTRL+F shortcut to find text in the code editor
    - added CTRL+G shortcut to jump to line in the code editor
    - with poke4/peek4 you can set/get half-byte values in RAM
    - added sprite palette remaping, use peek4/poke4 by address 0x3FF0
    - drag source code with right mouse button
    - app window scaling is divisible by integers
    - loaded cart name is in windows title
    - SFX autostops when ID or NOTE is changing
    - added simple SFX demo

    version 0.0.7

    - added Android build
    - added Linux x64 build
    - added joystick/gamepad support (only one player so far)
    - added foreground/background sprites
    - added world map preview
    - right click to select second color in sprite editor
    - added demo_p3d.tic demo created by Filippo Rivato (@HomineLudens)

    version 0.0.6

    - added undo/redo changes to all the editors (CTRL+Z/CTRL+Y)
    - fixed screen keyboard input and rendering in UWP
    - fixed SFX command, just call once sfx(id) to play, sfx() to stop
    - added mouse scrolling in the code editor
    - added TAB/SHIFT+TAB to format selected code block
    - added 'trace(msg)' API command to print message in th console
    - added mapping for the second player: RFDG, A,S
    - added two demo projects, demo_ttt.tic (TicTacToe) and demo_fire.tic created by Filippo Rivato (@HomineLudens) 

    version 0.0.5

    - added CRTL+S to save project
    - copy/paste in sprite editor, DEL to delete sprite
    - spritesheet navigation by arrows in sprite editor
    - fixed texture rendering in UWP
    - RAM command shows memory addresses in console
    - added memcpy,memset API functions
    - added mget,mset API functions to get/set map tile
    - map moving by arrows buttons
    - added pin button to spritesheet in map editor
    - added console history
    - added NEW command to create empty project

    version 0.0.4

    - changed display resolution in spec 240x136
    - added new font with 6x6 symbols with lowercase support
    - new UI layout for SPRITE and MAP editors
    - added grid and current pos to the MAP editor
    - added fullscreen mode (F11, ALT+ENTER)
    - added transparent color for sprites rendering
    - updated to SDL 2.0.5
    - CTRL+X works in code editor
    - BACK buttons works on mobile (like escape)
    - fixed some crashes

    version 0.0.3

    - fixed CPU overhead when app is minimized
    - new project name - TIC, .tic extension for cartridges 
      and domain for project
    - 'tic' game loop function
    - scanline function support, you can change the palette per render line 
      (102 time per tick) and show 102*16=1632 different colors per tick
    - ADD command works in HTML version
    - EXPORT command makes standalone html/exe game (works only in native versions)
    - UWP build for Windows Store

Small demo how to use:

TIC bundler tool helps you to build native builds of your game. Supports HTML5, Windows, Linux 32/64 bit, Mac OS X output.

Here you can download TIC from Windows Store:

Get it on Windows 10

If you want to be in touch follow @tic_computer (twitter) and @nesbox (

More information

Published132 days ago
StatusIn development
PlatformsWindows, macOS, Linux, Android, HTML5
Tags8-bit, console, Game engine, Pixel Art, Retro, tiny
Average durationAbout a half-hour
InputsKeyboard, Mouse, XBox 360 controllers, Gamepad (any), Touchscreen
Player count1 - 2
MultiplayerLocal multiplayer


Download (999 kB)
tic_32bit_0.14.0.tar.gz (2 MB)
tic_64bit_0.14.0.tar.gz (2 MB)
tic_0.14.0.dmg (1 MB)
tic_0.14.0.apk (3 MB)
TIC computer 6x6 (3 kB)

Also available on