Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Sep 06, 2016 · View creator page →

Creator of

Recent community posts

Hi, try to enable DEV MODE in the OPTIONS to quickly get into code editor


The only way I see is to run my cart with the TIC-80 player, but you have to build it from source.

After build you will find `player.exe` next to `tic80.exe`, you can name `cart.tic` to your cart and put it next to `player.exe` and it can run without anything, just your game.

Also you can customize the player as you wish and build.

The binary you download depends on OS you want to export to, but yes it's exact copy of tic executable, also we have version without editors in pro version.

Try to look at the file where we have all the build configurations and options for all supported OS.

I know, it's disappointing, even for me and I'll try to improove this part in the future, sorry for that.

Unfortunately I don't see an easy way to replace the downloaded binary, alternatively you can change the url to your own and force it to download your binary.

Please use a Release build to make it smaller, looks like you used a Debug build.


here we embed the cart to the downloaded binary

and here we load embeded cart in exported game

This is a well known bug, unfortunately, it hasn't been fixed yet, sorry.

Second, I haven't yet found a way to write a usable sleep() function.

As a possible solution, it could be like in this post

First, after I export the html file I unzip it and open the index.html, but nothing happens after I click the "click to play" except that the words disappear. Am I exporting it the wrong way?

You have to use any local http server to load index.html or just try to upload your game to

Unfortunately you can't turn off the border at all, because the border is part of the TIC-80 screen, it has a resolution of 240x136px + the border we have is 256x144px. The only thing we could add is the Integer Screen Scaling option, which can reduce the border.

The png should be 128x128

import sprites t.png
function TIC()
{ cls(13) m=mouse() x=m[0] y=m[1] left=m[2] print(m[0]+" "+m[1]+" "+left) }

Try the code above. tThe mouse() api returns an array with values [x, y, left btn, middle btn, right btn].

Please don't use `dofile`, it doesn't work for a long time, please save your cart as a project `save cart.lua`, then call `folder` to find the `cart.lua` file which you can modify in any text editor, it will be automatically reloaded into the TIC-80 while you are editing.

I think it should be 128x128 png image.

It has to be a png, GIF is not longer supported, sorry.

ok, we'll add pro .deb with the upcoming release


there is only a x86_64 ELF executable in the ZIP file, but you can download .deb file on the releases page on Github

Hi, seems you are trying to run 64bit TIC on 32bit system.

Pls, try to dowload version for winxp

Thanks for the info, i will know now.


yes, the issue should be fixed on the dev version, you can check it here

Unfortunately, we are using the SDL2 library to render the TIC screen, which requires Android API level 24, i.e. Android 7.0 minimum.


xmonkee what version do you use to the fps, 1.0-dev or 0.90?

Hi, please try `--vsync` on the latest dev build, it should be fixed.


You have to copy carts to TIC80 application folder, use "folder" command to find it. Unfortunately, the latest Android does not allow you to copy files to the application folder, so we are trying to find a solution.

Yes, the binary isn't signed with the Apple Dev certificate, but you can always go to the system preferences and allow to run it in the Privacy settings.

Unfortunately, there is no file output, you only able to save data to the persistent memory

Pls, use the build for Andriod to run on your Chromebook

You can access the current palette in the VRAM using peek()/poke() API functions.

Here is an example

TIC-80 community · Posted in TAB

Unfortunately, you can't change tab size, but it's planned

Just copypasted, fixed tabs near `cls 0` and got this

fixed code

-- title:  game title
-- author: game developer
-- desc:   short description
-- script: moon
ticks = 1
cur =
 x: 2
 y: 0
 rot: 1
 piece: 1
 color: 1
  {{0,1,0,0}, {0,1,0,0}, {0,0,0,0}, {0,1,0,0}},
  {{1,1,1,0}, {0,1,1,0}, {1,1,1,0}, {1,1,0,0}},
  {{0,0,0,0}, {0,1,0,0}, {0,1,0,0}, {0,1,0,0}},
  {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0}},
export TIC=->
 cls 0
 for i = 0,11
  for j = 0,16
   spr mget(i, j), 72+i*8, j*8
 for i = 1,4
  for j = 1,4
   if PIECES[cur.piece][j][1][i] == 1
    spr cur.color, 72+(cur.x + i)*8, (cur.y + j)*8
 if ticks % 15 == 1
  if collide(cur.x, cur.y+1)
   for i = 1,4
    for j = 1,4
     if PIECES[cur.piece][j][1][i] == 1
      mset i+cur.x, j+cur.y, cur.color
  cur.y = 1
  cur.y += 1
 ticks += 1
export collide = (x, y) -> 
 for i = 1,4
  for j = 1,4
   if PIECES[cur.piece][j][1][i] == 1
    if mget(x+i, y+j) > 1
     return true
 return false

TIC-80 community · Posted in Guide


try to use math.random() to generate random numbers

As for line collision, it's not TIC-80 specific question, pls google it.

Yes, it's not compatible with 0.90 but I saw the author reported he successfully setup it with the new version.

Have you seen TSC-80 - TypeScript for the TIC-80

Seems it does all the things you want

Hmm, hard to say, I think this question is more to the Duktape implementation

Hmm, I forgot to update exported version, will try to fix it tomorrow.

Thank you.

You can mark lines in your code (CTRL+F1) and jump between them using SHIFT+F1 hotkey

(1 edit)

Pls fill metadata in the source header

-- title:  game title
-- author: game developer -- desc:   short description -- script: lua

then you have to assign a cover image to the cart, press F7 while the game is running, and save, or another variant, use `import cover image.png` command

Don't know what to say, please show your code.


because you trigger the music() function every TIC() and music starts playing every frame from the beginning.

Please add something like 

function TIC()
    if not music_started then        


we have to investigate this, could you pls add an issue to the Github and describe your problem in detail, also pls provide the freezing cart.

Thank you.

Pls look at the Wiki

It is up to you to decide for what purpose you want to use the flags, one of the possible purposes - for example, to define solid objects on the map.

Maybe you sprites area is empty and you have to export tiles, pls try 'export tiles ...' instead.