TIC computer

0.16.0 dev


About

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.



Get it on Windows 10

TIC - tiny computer v0.16.0 dev

status: IN DEVELOPMENT

website: http://tic.computer
twitter: http://twitter.com/tic_computer
bugs: http://github.com/nesbox/tic.computer/issues

(c) Copyright 2017 Nesbox
Author: Vadim Grigoruk // grigoruk@gmail.com

============================================

ABOUT

    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.
    I get my inspiration from PICO-8 project: http://pico-8.com

CREDITS
    
    Filippo Rivato @HomineLudens
    Fred Bednarski @level27geek

SPECIFICATION

    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 or Moonscript

CONSOLE COMMANDS

    help
    ram
    exit
    new
    load 
    save 
    run
    dir
    add
    del 
    get 
    export [html native]

CODE API

    tic
    print   text [x y [color [fixed] ] ] -> text width
    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

HOTKEYS

    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

SUPPORTED PLATFORMS

    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
    iOS
    Raspberry Pi

CHANGELOG

    --------------
    version 0.16.0
    --------------

    - [github] mouse scroll #9
    - [github] [Web export] Sound lags #13
    - [github] Hotkeys for Mac (again :-) #10
    - text renders with variety width by default (added 'fixed' param to 'print' api func)
    - default font and palette loads from config.lua
    - added wide font version (made by Fred Bednarski @level27geek) 
      and DB16/PICO8/ARNE16/EDG16/A64/C64 palettes to config.lua

    --------------
    version 0.15.0
    --------------

    - [github] Moonscript support #8
    - [github] HOTKEYS rectification #5
    - [github] Multiline comments not rendered correctly in code editor #6
    - [github] No support for OS X 10.11 (El Capitan) read about -mmacosx-version-min=version (10.7) flag
    - scanline trick works only in RUN mode
    - new export command format: export [html | native]

    --------------
    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 https://en.wikipedia.org/wiki/Piano_key_frequencies)
    - 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
        --------------
        0000-SCREEN
        3FC0-PALETTE
        3FF0-PALETTE MAP
        3FF8-(reserved for future use)
        4000-SPRITES
        8000-MAP
        FF80-SOUND REGISTERS
        FF90-PERSISTENT MEMORY
        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 (https://github.com/nesbox/tic.computer)
    - 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  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  [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 nesbox.itch.io

    -------------
    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 http://tic.computer 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